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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-10-22 00:13:12 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-10-22 00:13:12 +0400
commit10af15b85b743a18215a1fc58799264b5c798403 (patch)
tree5c93a43229f31a9befdd2582d3fe382390add2cf
parent3c9d69744e0aca3ffe3ace103233679988769e91 (diff)
parentaba149189b7f0ee08765d2ef63a94080d02bdbf4 (diff)
Cycles: svn merge -r40934:41157 ^/trunk/blender
-rw-r--r--CMakeLists.txt10
-rw-r--r--GNUmakefile36
-rw-r--r--build_files/cmake/Modules/FindGLEW.cmake4
-rw-r--r--build_files/cmake/Modules/FindOpenCOLLADA.cmake5
-rw-r--r--build_files/cmake/RpmBuild.cmake27
-rw-r--r--build_files/cmake/cmake_consistency_check_config.py8
-rw-r--r--build_files/scons/tools/Blender.py18
-rwxr-xr-xdoc/blender_file_format/BlendFileDnaExporter_25.py6
-rw-r--r--doc/blender_file_format/README6
-rw-r--r--doc/build_systems/scons-dev.txt2
-rw-r--r--doc/manpage/blender.15
-rw-r--r--doc/manpage/blender.1.py12
-rw-r--r--doc/python_api/examples/mathutils.Color.py30
-rw-r--r--doc/python_api/examples/mathutils.Euler.py31
-rw-r--r--doc/python_api/examples/mathutils.Matrix.py27
-rw-r--r--doc/python_api/examples/mathutils.Quaternion.py22
-rw-r--r--doc/python_api/rst/bge.logic.rst2
-rw-r--r--doc/python_api/rst/bgl.rst2
-rw-r--r--doc/python_api/rst/gpu.rst6
-rw-r--r--doc/python_api/rst/info_best_practice.rst233
-rw-r--r--doc/python_api/rst/info_gotcha.rst20
-rw-r--r--doc/python_api/sphinx_doc_gen.py18
-rwxr-xr-xdoc/python_api/sphinx_doc_gen.sh2
-rw-r--r--intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp3
-rw-r--r--intern/audaspace/FX/AUD_IIRFilterReader.cpp15
-rw-r--r--intern/audaspace/intern/AUD_C-API.cpp63
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperReader.cpp2
-rw-r--r--intern/audaspace/intern/AUD_NULLDevice.cpp8
-rw-r--r--intern/ghost/GHOST_Types.h1
-rw-r--r--intern/ghost/intern/GHOST_EventKey.h5
-rw-r--r--intern/ghost/intern/GHOST_SystemCarbon.cpp2
-rw-r--r--intern/ghost/intern/GHOST_SystemCocoa.mm37
-rw-r--r--intern/ghost/intern/GHOST_SystemSDL.cpp2
-rw-r--r--intern/ghost/intern/GHOST_SystemSDL.h2
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.cpp3
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp55
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.h17
-rw-r--r--intern/ghost/intern/GHOST_WindowSDL.h2
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.cpp14
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.h8
-rw-r--r--po/update_msg.py8
-rw-r--r--release/datafiles/splash.pngbin204738 -> 155257 bytes
-rw-r--r--release/scripts/modules/addon_utils.py10
-rw-r--r--release/scripts/modules/animsys_refactor.py2
-rwxr-xr-xrelease/scripts/modules/blend_render_info.py2
-rw-r--r--release/scripts/modules/bpy/__init__.py2
-rw-r--r--release/scripts/modules/bpy/ops.py2
-rw-r--r--release/scripts/modules/bpy/utils.py8
-rw-r--r--release/scripts/modules/bpy_extras/anim_utils.py2
-rw-r--r--release/scripts/modules/bpy_extras/image_utils.py6
-rw-r--r--release/scripts/modules/bpy_extras/io_utils.py10
-rw-r--r--release/scripts/modules/bpy_extras/keyconfig_utils.py2
-rw-r--r--release/scripts/modules/bpy_extras/mesh_utils.py2
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py2
-rw-r--r--release/scripts/modules/bpy_extras/view3d_utils.py2
-rw-r--r--release/scripts/modules/bpy_types.py18
-rw-r--r--release/scripts/modules/console_python.py26
-rw-r--r--release/scripts/modules/console_shell.py2
-rw-r--r--release/scripts/modules/rna_info.py6
-rw-r--r--release/scripts/presets/interaction/blender.py2
-rw-r--r--release/scripts/startup/bl_operators/anim.py4
-rw-r--r--release/scripts/startup/bl_operators/console.py4
-rw-r--r--release/scripts/startup/bl_operators/object.py10
-rw-r--r--release/scripts/startup/bl_operators/presets.py2
-rw-r--r--release/scripts/startup/bl_operators/screen_play_rendered_anim.py2
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_follow_active.py12
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_lightmap.py26
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py88
-rw-r--r--release/scripts/startup/bl_operators/vertexpaint_dirt.py6
-rw-r--r--release/scripts/startup/bl_operators/view3d.py4
-rw-r--r--release/scripts/startup/bl_operators/wm.py29
-rw-r--r--release/scripts/startup/bl_ui/properties_animviz.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_data_armature.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_data_bone.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_data_curve.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py22
-rw-r--r--release/scripts/startup/bl_ui/properties_object_constraint.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py33
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_common.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py12
-rw-r--r--release/scripts/startup/bl_ui/space_logic.py2
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py3
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py4
-rw-r--r--release/scripts/startup/bl_ui/space_userpref_keymap.py6
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py14
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py47
-rw-r--r--release/scripts/templates/driver_functions.py34
-rw-r--r--release/scripts/templates/gamelogic_module.py2
-rw-r--r--source/blender/blenfont/intern/blf_font.c2
-rw-r--r--source/blender/blenkernel/BKE_animsys.h2
-rw-r--r--source/blender/blenkernel/BKE_blender.h6
-rw-r--r--source/blender/blenkernel/BKE_font.h5
-rw-r--r--source/blender/blenkernel/BKE_node.h7
-rw-r--r--source/blender/blenkernel/BKE_packedFile.h2
-rw-r--r--source/blender/blenkernel/BKE_paint.h2
-rw-r--r--source/blender/blenkernel/BKE_utildefines.h2
-rw-r--r--source/blender/blenkernel/SConscript3
-rw-r--r--source/blender/blenkernel/intern/BME_conversions.c1
-rw-r--r--source/blender/blenkernel/intern/BME_eulers.c1
-rw-r--r--source/blender/blenkernel/intern/BME_mesh.c2
-rw-r--r--source/blender/blenkernel/intern/BME_structure.c1
-rw-r--r--source/blender/blenkernel/intern/anim.c12
-rw-r--r--source/blender/blenkernel/intern/cloth.c2
-rw-r--r--source/blender/blenkernel/intern/constraint.c8
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c3
-rw-r--r--source/blender/blenkernel/intern/fcurve.c2
-rw-r--r--source/blender/blenkernel/intern/font.c142
-rw-r--r--source/blender/blenkernel/intern/gpencil.c2
-rw-r--r--source/blender/blenkernel/intern/image.c8
-rw-r--r--source/blender/blenkernel/intern/ipo.c4
-rw-r--r--source/blender/blenkernel/intern/material.c19
-rw-r--r--source/blender/blenkernel/intern/modifier.c7
-rw-r--r--source/blender/blenkernel/intern/nla.c3
-rw-r--r--source/blender/blenkernel/intern/node.c54
-rw-r--r--source/blender/blenkernel/intern/packedFile.c53
-rw-r--r--source/blender/blenkernel/intern/particle.c65
-rw-r--r--source/blender/blenkernel/intern/particle_system.c5
-rw-r--r--source/blender/blenkernel/intern/pointcache.c12
-rw-r--r--source/blender/blenkernel/intern/property.c6
-rw-r--r--source/blender/blenkernel/intern/seqeffects.c2
-rw-r--r--source/blender/blenkernel/intern/sequencer.c18
-rw-r--r--source/blender/blenkernel/intern/smoke.c3
-rw-r--r--source/blender/blenkernel/intern/softbody.c5
-rw-r--r--source/blender/blenkernel/intern/sound.c19
-rw-r--r--source/blender/blenkernel/intern/texture.c2
-rw-r--r--source/blender/blenlib/BLI_blenlib.h2
-rw-r--r--source/blender/blenlib/BLI_ghash.h7
-rw-r--r--source/blender/blenlib/BLI_path_util.h2
-rw-r--r--source/blender/blenlib/BLI_string.h10
-rw-r--r--source/blender/blenlib/BLI_string_utf8.h55
-rw-r--r--source/blender/blenlib/BLI_utildefines.h2
-rw-r--r--source/blender/blenlib/CMakeLists.txt1
-rw-r--r--source/blender/blenlib/intern/BLI_args.c3
-rw-r--r--source/blender/blenlib/intern/BLI_ghash.c9
-rw-r--r--source/blender/blenlib/intern/bpath.c4
-rw-r--r--source/blender/blenlib/intern/fileops.c8
-rw-r--r--source/blender/blenlib/intern/freetypefont.c2
-rw-r--r--source/blender/blenlib/intern/path_util.c60
-rw-r--r--source/blender/blenlib/intern/storage.c12
-rw-r--r--source/blender/blenlib/intern/string_utf8.c235
-rw-r--r--source/blender/blenlib/intern/winstuff.c3
-rw-r--r--source/blender/blenloader/BLO_readfile.h4
-rw-r--r--source/blender/blenloader/BLO_runtime.h4
-rw-r--r--source/blender/blenloader/intern/readblenentry.c4
-rw-r--r--source/blender/blenloader/intern/readfile.c69
-rw-r--r--source/blender/blenloader/intern/runtime.c4
-rw-r--r--source/blender/blenloader/intern/writefile.c4
-rw-r--r--source/blender/collada/AnimationImporter.cpp74
-rw-r--r--source/blender/collada/DocumentImporter.cpp2
-rw-r--r--source/blender/collada/ImageExporter.cpp2
-rw-r--r--source/blender/editors/animation/anim_channels_edit.c2
-rw-r--r--source/blender/editors/animation/anim_filter.c3
-rw-r--r--source/blender/editors/armature/editarmature.c6
-rw-r--r--source/blender/editors/armature/poselib.c9
-rw-r--r--source/blender/editors/armature/poseobject.c2
-rw-r--r--source/blender/editors/curve/editfont.c48
-rw-r--r--source/blender/editors/datafiles/splash.png.c11256
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c9
-rw-r--r--source/blender/editors/gpencil/editaction_gpencil.c4
-rw-r--r--source/blender/editors/include/ED_anim_api.h2
-rw-r--r--source/blender/editors/include/ED_fileselect.h2
-rw-r--r--source/blender/editors/interface/interface.c49
-rw-r--r--source/blender/editors/interface/interface_anim.c6
-rw-r--r--source/blender/editors/interface/interface_draw.c4
-rw-r--r--source/blender/editors/interface/interface_handlers.c304
-rw-r--r--source/blender/editors/interface/interface_intern.h10
-rw-r--r--source/blender/editors/interface/interface_node.c4
-rw-r--r--source/blender/editors/interface/interface_regions.c2
-rw-r--r--source/blender/editors/interface/interface_templates.c34
-rw-r--r--source/blender/editors/interface/resources.c2
-rw-r--r--source/blender/editors/mesh/editmesh_lib.c6
-rw-r--r--source/blender/editors/mesh/meshtools.c2
-rw-r--r--source/blender/editors/object/object_constraint.c2
-rw-r--r--source/blender/editors/object/object_edit.c2
-rw-r--r--source/blender/editors/object/object_hook.c2
-rw-r--r--source/blender/editors/object/object_modifier.c3
-rw-r--r--source/blender/editors/object/object_relations.c10
-rw-r--r--source/blender/editors/object/object_vgroup.c2
-rw-r--r--source/blender/editors/physics/particle_edit.c2
-rw-r--r--source/blender/editors/render/render_internal.c4
-rw-r--r--source/blender/editors/render/render_preview.c2
-rw-r--r--source/blender/editors/render/render_shading.c3
-rw-r--r--source/blender/editors/screen/screen_ops.c2
-rw-r--r--source/blender/editors/screen/screendump.c2
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c8
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c2
-rw-r--r--source/blender/editors/sculpt_paint/sculpt_undo.c4
-rw-r--r--source/blender/editors/sound/sound_ops.c6
-rw-r--r--source/blender/editors/space_action/action_edit.c38
-rw-r--r--source/blender/editors/space_buttons/buttons_ops.c2
-rw-r--r--source/blender/editors/space_file/file_draw.c4
-rw-r--r--source/blender/editors/space_file/file_ops.c4
-rw-r--r--source/blender/editors/space_file/filelist.c4
-rw-r--r--source/blender/editors/space_file/filesel.c12
-rw-r--r--source/blender/editors/space_file/fsmenu.c1
-rw-r--r--source/blender/editors/space_graph/graph_draw.c2
-rw-r--r--source/blender/editors/space_image/image_buttons.c4
-rw-r--r--source/blender/editors/space_image/image_ops.c7
-rw-r--r--source/blender/editors/space_info/info_report.c2
-rw-r--r--source/blender/editors/space_logic/logic_ops.c4
-rw-r--r--source/blender/editors/space_node/node_draw.c4
-rw-r--r--source/blender/editors/space_node/node_edit.c22
-rw-r--r--source/blender/editors/space_node/space_node.c4
-rw-r--r--source/blender/editors/space_outliner/outliner_edit.c2
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c19
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c31
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c12
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c2
-rw-r--r--source/blender/editors/space_sequencer/space_sequencer.c2
-rw-r--r--source/blender/editors/space_text/space_text.c5
-rw-r--r--source/blender/editors/space_text/text_ops.c3
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c4
-rw-r--r--source/blender/editors/space_view3d/drawobject.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_fly.c4
-rw-r--r--source/blender/editors/transform/transform.c2
-rw-r--r--source/blender/editors/transform/transform_conversions.c2
-rw-r--r--source/blender/editors/transform/transform_input.c9
-rw-r--r--source/blender/editors/util/crazyspace.c2
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c2
-rw-r--r--source/blender/imbuf/intern/IMB_indexer.h2
-rw-r--r--source/blender/imbuf/intern/anim_movie.c31
-rw-r--r--source/blender/imbuf/intern/indexer.c11
-rw-r--r--source/blender/makesdna/DNA_action_types.h8
-rw-r--r--source/blender/makesdna/DNA_constraint_types.h2
-rw-r--r--source/blender/makesdna/DNA_gpencil_types.h3
-rw-r--r--source/blender/makesdna/DNA_ipo_types.h2
-rw-r--r--source/blender/makesdna/DNA_node_types.h11
-rw-r--r--source/blender/makesdna/DNA_object_types.h14
-rw-r--r--source/blender/makesdna/DNA_particle_types.h3
-rw-r--r--source/blender/makesdna/DNA_space_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_action.c3
-rw-r--r--source/blender/makesrna/intern/rna_actuator.c2
-rw-r--r--source/blender/makesrna/intern/rna_animation.c12
-rw-r--r--source/blender/makesrna/intern/rna_boid.c2
-rw-r--r--source/blender/makesrna/intern/rna_curve.c12
-rw-r--r--source/blender/makesrna/intern/rna_define.c1
-rw-r--r--source/blender/makesrna/intern/rna_fcurve.c5
-rw-r--r--source/blender/makesrna/intern/rna_fluidsim.c3
-rw-r--r--source/blender/makesrna/intern/rna_gpencil.c14
-rw-r--r--source/blender/makesrna/intern/rna_image.c8
-rw-r--r--source/blender/makesrna/intern/rna_image_api.c2
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c7
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c21
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c10
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c12
-rw-r--r--source/blender/makesrna/intern/rna_object.c30
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c42
-rw-r--r--source/blender/makesrna/intern/rna_particle.c23
-rw-r--r--source/blender/makesrna/intern/rna_pose.c80
-rw-r--r--source/blender/makesrna/intern/rna_render.c19
-rw-r--r--source/blender/makesrna/intern/rna_rna.c6
-rw-r--r--source/blender/makesrna/intern/rna_scene.c24
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c37
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c26
-rw-r--r--source/blender/makesrna/intern/rna_smoke.c14
-rw-r--r--source/blender/makesrna/intern/rna_space.c2
-rw-r--r--source/blender/makesrna/intern/rna_texture.c22
-rw-r--r--source/blender/makesrna/intern/rna_ui.c24
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c26
-rw-r--r--source/blender/makesrna/intern/rna_wm.c30
-rw-r--r--source/blender/makesrna/intern/rna_world.c4
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_cleaner.py4
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_cleaner_merge.py2
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_update.sh2
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c1
-rw-r--r--source/blender/modifiers/intern/MOD_boolean_util.c1
-rw-r--r--source/blender/modifiers/intern/MOD_mask.c2
-rw-r--r--source/blender/modifiers/intern/MOD_screw.c2
-rw-r--r--source/blender/modifiers/intern/MOD_simpledeform.c4
-rw-r--r--source/blender/modifiers/intern/MOD_solidify.c3
-rw-r--r--source/blender/nodes/composite/node_composite_tree.c27
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_image.c2
-rw-r--r--source/blender/nodes/intern/node_common.c13
-rw-r--r--source/blender/nodes/intern/node_exec.c14
-rw-r--r--source/blender/nodes/intern/node_socket.c14
-rw-r--r--source/blender/nodes/shader/node_shader_tree.c7
-rw-r--r--source/blender/nodes/texture/node_texture_tree.c2
-rw-r--r--source/blender/python/generic/IDProp.c26
-rw-r--r--source/blender/python/generic/bgl.c16
-rw-r--r--source/blender/python/generic/bpy_internal_import.c40
-rw-r--r--source/blender/python/generic/noise_py_api.c58
-rw-r--r--source/blender/python/generic/py_capi_utils.c85
-rw-r--r--source/blender/python/generic/py_capi_utils.h1
-rw-r--r--source/blender/python/intern/bpy.c20
-rw-r--r--source/blender/python/intern/bpy_app.c8
-rw-r--r--source/blender/python/intern/bpy_app_handlers.c16
-rw-r--r--source/blender/python/intern/bpy_driver.c22
-rw-r--r--source/blender/python/intern/bpy_interface.c80
-rw-r--r--source/blender/python/intern/bpy_interface_atexit.c2
-rw-r--r--source/blender/python/intern/bpy_library.c38
-rw-r--r--source/blender/python/intern/bpy_operator.c43
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c5
-rw-r--r--source/blender/python/intern/bpy_props.c224
-rw-r--r--source/blender/python/intern/bpy_rna.c944
-rw-r--r--source/blender/python/intern/bpy_rna.h2
-rw-r--r--source/blender/python/intern/bpy_rna_anim.c42
-rw-r--r--source/blender/python/intern/bpy_rna_array.c56
-rw-r--r--source/blender/python/intern/bpy_traceback.c12
-rw-r--r--source/blender/python/intern/bpy_util.c12
-rw-r--r--source/blender/python/intern/gpu.c4
-rw-r--r--source/blender/python/mathutils/mathutils.c60
-rw-r--r--source/blender/python/mathutils/mathutils_Color.c84
-rw-r--r--source/blender/python/mathutils/mathutils_Euler.c80
-rw-r--r--source/blender/python/mathutils/mathutils_Matrix.c348
-rw-r--r--source/blender/python/mathutils/mathutils_Quaternion.c158
-rw-r--r--source/blender/python/mathutils/mathutils_Vector.c86
-rw-r--r--source/blender/python/mathutils/mathutils_geometry.c146
-rw-r--r--source/blender/render/intern/include/raycounter.h2
-rw-r--r--source/blender/render/intern/raytrace/bvh.h2
-rw-r--r--source/blender/render/intern/source/pipeline.c4
-rw-r--r--source/blender/render/intern/source/renderdatabase.c4
-rw-r--r--source/blender/windowmanager/WM_types.h4
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c18
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c92
-rw-r--r--source/creator/CMakeLists.txt14
-rw-r--r--source/creator/creator.c4
-rw-r--r--source/darwin/blender.app/Contents/Info.plist65
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/Info.plist44
-rwxr-xr-xsource/darwin/set_simulation_threads.app/Contents/MacOS/appletbin0 -> 34480 bytes
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/PkgInfo1
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scptbin0 -> 7664 bytes
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/Resources/applet.icnsbin0 -> 40291 bytes
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrcbin0 -> 362 bytes
-rw-r--r--source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf4
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp9
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.cpp2
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp6
-rw-r--r--source/gameengine/Expressions/ConstExpr.cpp2
-rw-r--r--source/gameengine/GameLogic/CMakeLists.txt4
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp44
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.h12
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp8
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h4
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickManager.cpp2
-rw-r--r--source/gameengine/GameLogic/SConscript3
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp6
-rw-r--r--source/gameengine/Ketsji/BL_Action.cpp5
-rw-r--r--source/gameengine/Ketsji/CMakeLists.txt3
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp10
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.cpp18
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp6
-rw-r--r--source/gameengine/Ketsji/SConscript3
-rw-r--r--source/gameengine/Rasterizer/RAS_FramingManager.cpp2
-rw-r--r--source/tests/CMakeLists.txt2
-rw-r--r--source/tests/rna_info_dump.py2
347 files changed, 9027 insertions, 9209 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c57f42f416c..be8109a18f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -223,6 +223,10 @@ mark_as_advanced(WITH_CXX_GUARDEDALLOC)
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
mark_as_advanced(WITH_ASSERT_ABORT)
+option(WITH_PYTHON_UI_INFO "Allow navigating to UI source from the context menu" OFF)
+mark_as_advanced(WITH_PYTHON_UI_INFO)
+
+
if(APPLE)
if(NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
@@ -862,7 +866,7 @@ elseif(WIN32)
set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
else()
- # keep GCC spesific stuff here
+ # keep GCC specific stuff here
if(CMAKE_COMPILER_IS_GNUCC)
set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32")
set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
@@ -1452,6 +1456,10 @@ if(WITH_ASSERT_ABORT)
add_definitions(-DWITH_ASSERT_ABORT)
endif()
+if(WITH_PYTHON_UI_INFO)
+ add_definitions(-DWITH_PYTHON_UI_INFO)
+endif()
+
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
diff --git a/GNUmakefile b/GNUmakefile
index aad3c58938c..c68c8684687 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -34,10 +34,13 @@ OS_NCASE:=$(shell uname -s | tr '[A-Z]' '[a-z]')
# Source and Build DIR's
BLENDER_DIR:=$(shell pwd -P)
-BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE)
BUILD_TYPE:=Release
BUILD_CMAKE_ARGS:=
+ifndef BUILD_DIR
+ BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE)
+endif
+
# -----------------------------------------------------------------------------
# additional targets for the build configuration
@@ -120,6 +123,9 @@ help:
@echo " * headless - build without an interface (renderfarm or server automation)"
@echo " * bpy - build as a python module which can be loaded from python directly"
@echo ""
+ @echo " Note, passing the argument 'BUILD_DIR=path' when calling make will override the default build dir."
+ @echo ""
+ @echo ""
@echo "Project Files for IDE's"
@echo " * project_qtcreator - QtCreator Project Files"
@echo " * project_netbeans - NetBeans Project Files"
@@ -130,9 +136,8 @@ help:
@echo " * package_pacman - build an arch linux pacmanpackage"
@echo " * package_archive - build an archive package"
@echo ""
- @echo "Other Targets"
+ @echo "Other Targets (not assosiated with building blender)"
@echo " * translations - update blenders translation files in po/"
- # TODO, doxygen and sphinx docs
@echo ""
@echo "Testing Targets (not assosiated with building blender)"
@echo " * test - run ctest, currently tests import/export, operator execution and that python modules load"
@@ -145,6 +150,11 @@ help:
@echo " * check_splint - run blenders source through splint (C only)"
@echo " * check_sparse - run blenders source through sparse (C only)"
@echo ""
+ @echo "Documentation Targets (not assosiated with building blender)"
+ @echo " * doc_py - generate sphinx python api docs"
+ @echo " * doc_dna - generate blender file format reference"
+ @echo " * doc_man - generate manpage"
+ @echo ""
# -----------------------------------------------------------------------------
# Packages
@@ -164,7 +174,7 @@ package_archive:
# Other Targets
#
translations:
- $(BUILD_DIR)/bin/blender --background --factory-startup --python po/update_msg.py
+ $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python po/update_msg.py
python3 po/update_pot.py
python3 po/update_po.py
python3 po/update_mo.py
@@ -222,6 +232,24 @@ check_sparse:
cd $(BUILD_DIR) ; python3 $(BLENDER_DIR)/build_files/cmake/cmake_static_check_sparse.py
+# -----------------------------------------------------------------------------
+# Documentation
+#
+
+# Simple version of ./doc/python_api/sphinx_doc_gen.sh with no PDF generation.
+doc_py:
+ $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py
+ cd doc/python_api ; sphinx-build -n -b html sphinx-in sphinx-out
+ @echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'"
+
+doc_dna:
+ $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py
+ @echo "docs written into: '$(BLENDER_DIR)/doc/blender_file_format/dna.html'"
+
+doc_man:
+ python3 doc/manpage/blender.1.py $(BUILD_DIR)/bin/blender
+
+
clean:
$(MAKE) -C $(BUILD_DIR) clean
diff --git a/build_files/cmake/Modules/FindGLEW.cmake b/build_files/cmake/Modules/FindGLEW.cmake
index c791327c8da..7e1b00d0923 100644
--- a/build_files/cmake/Modules/FindGLEW.cmake
+++ b/build_files/cmake/Modules/FindGLEW.cmake
@@ -51,9 +51,9 @@ ELSE (WIN32)
ENDIF (WIN32)
IF (GLEW_INCLUDE_PATH)
- SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise")
+ SET(GLEW_FOUND TRUE)
ELSE (GLEW_INCLUDE_PATH)
- SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise")
+ SET(GLEW_FOUND FALSE)
ENDIF (GLEW_INCLUDE_PATH)
MARK_AS_ADVANCED( GLEW_FOUND )
diff --git a/build_files/cmake/Modules/FindOpenCOLLADA.cmake b/build_files/cmake/Modules/FindOpenCOLLADA.cmake
index 0c8d8c8d841..77c8b09c4ac 100644
--- a/build_files/cmake/Modules/FindOpenCOLLADA.cmake
+++ b/build_files/cmake/Modules/FindOpenCOLLADA.cmake
@@ -53,10 +53,11 @@ SET(_opencollada_FIND_COMPONENTS
)
# Fedora openCOLLADA package links these statically
+# note that order is important here ot it wont link
SET(_opencollada_FIND_STATIC_COMPONENTS
- UTF
- ftoa
buffer
+ ftoa
+ UTF
)
SET(_opencollada_SEARCH_DIRS
diff --git a/build_files/cmake/RpmBuild.cmake b/build_files/cmake/RpmBuild.cmake
index 2c821a9dd7a..2fdd0a72932 100644
--- a/build_files/cmake/RpmBuild.cmake
+++ b/build_files/cmake/RpmBuild.cmake
@@ -3,17 +3,24 @@
# Authors: Rohit Yadav <rohityadav89@gmail.com>
#
-find_program(RPMBUILD
- NAMES rpmbuild
- PATHS "/usr/bin")
+if(NOT DEFINED RPMBUILD)
-mark_as_advanced(RPMBUILD)
+ find_program(RPMBUILD
+ NAMES rpmbuild
+ PATHS "/usr/bin")
+
+ mark_as_advanced(RPMBUILD)
+
+ if(RPMBUILD)
+ message(STATUS "RPM Build Found: ${RPMBUILD}")
+ else(RPMBUILD)
+ message(STATUS "RPM Build Not Found (rpmbuild). RPM generation will not be available")
+ endif()
+
+endif()
if(RPMBUILD)
- get_filename_component(RPMBUILD_PATH ${RPMBUILD} ABSOLUTE)
- message(STATUS "Found rpmbuild : ${RPMBUILD_PATH}")
- set(RPMBUILD_FOUND "YES")
+ set(RPMBUILD_FOUND TRUE)
else(RPMBUILD)
- message(STATUS "rpmbuild NOT found. RPM generation will not be available")
- set(RPMBUILD_FOUND "NO")
-endif()
+ set(RPMBUILD_FOUND FALSE)
+endif() \ No newline at end of file
diff --git a/build_files/cmake/cmake_consistency_check_config.py b/build_files/cmake/cmake_consistency_check_config.py
index 60a46d3a1dd..86f51273ff5 100644
--- a/build_files/cmake/cmake_consistency_check_config.py
+++ b/build_files/cmake/cmake_consistency_check_config.py
@@ -27,6 +27,10 @@ IGNORE = (
"extern/eltopo/common/openglutils.cpp",
"extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp",
"source/blender/imbuf/intern/imbuf_cocoa.m",
+ "extern/recastnavigation/Recast/Source/RecastLog.cpp",
+ "extern/recastnavigation/Recast/Source/RecastTimer.cpp",
+ "entern/audaspace/SRC/AUD_SRCResampleFactory.cpp",
+ "entern/audaspace/SRC/AUD_SRCResampleReader.cpp",
"extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h",
"extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h",
@@ -41,6 +45,10 @@ IGNORE = (
"extern/eltopo/common/meshes/TriangleIndex.hpp",
"extern/eltopo/common/meshes/meshloader.h",
"extern/eltopo/eltopo3d/broadphase_blenderbvh.h"
+ "extern/recastnavigation/Recast/Include/RecastLog.h",
+ "extern/recastnavigation/Recast/Include/RecastTimer.h",
+ "intern/audaspace/SRC/AUD_SRCResampleFactory.h",
+ "intern/audaspace/SRC/AUD_SRCResampleReader.h",
)
UTF8_CHECK = True
diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py
index b9632bfffa7..c802eee4fb6 100644
--- a/build_files/scons/tools/Blender.py
+++ b/build_files/scons/tools/Blender.py
@@ -316,8 +316,8 @@ def creator(env):
if env['WITH_BF_TIFF']:
defs.append('WITH_TIFF')
- if not env['WITH_BF_SDL']:
- defs.append('DISABLE_SDL')
+ if env['WITH_BF_SDL']:
+ defs.append('WITH_SDL')
if env['WITH_BF_PYTHON']:
incs.append('#/source/blender/python')
@@ -582,6 +582,20 @@ def AppIt(target=None, source=None, env=None):
commands.getoutput(cmd)
cmd = 'find %s/%s.app -name __MACOSX -exec rm -rf {} \;'%(installdir, binary)
commands.getoutput(cmd)
+ if env['CC'].endswith('4.6.1'): # for correct errorhandling with gcc 4.6.1 we need the gcc.dylib to link, thus distribute in app-bundle
+ cmd = 'mkdir %s/%s.app/Contents/MacOS/lib'%(installdir, binary)
+ commands.getoutput(cmd)
+ instname = env['BF_CXX']
+ cmd = 'cp %s/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/lib/'%(instname, installdir, binary)
+ commands.getoutput(cmd)
+ cmd = 'install_name_tool -id @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/lib/libgcc_s.1.dylib'%(installdir, binary)
+ commands.getoutput(cmd)
+ cmd = 'install_name_tool -change %s/lib/libgcc_s.1.dylib @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/%s'%(instname, installdir, binary, binary)
+ commands.getoutput(cmd)
+ cmd = 'rm -rf %s/set_simulation_threads.app'%(installdir) # first clear omp_num_threads applescript
+ commands.getoutput(cmd)
+ cmd = 'cp -R %s/source/darwin/set_simulation_threads.app %s/'%(bldroot, installdir) # copy the omp_num_threads applescript
+ commands.getoutput(cmd)
# extract copy system python, be sure to update other build systems
# when making changes to the files that are copied.
diff --git a/doc/blender_file_format/BlendFileDnaExporter_25.py b/doc/blender_file_format/BlendFileDnaExporter_25.py
index 988c992fd78..bc5b2e73c7e 100755
--- a/doc/blender_file_format/BlendFileDnaExporter_25.py
+++ b/doc/blender_file_format/BlendFileDnaExporter_25.py
@@ -379,15 +379,15 @@ class DNACatalogHTML:
def usage():
- print("\nUsage: \n\tblender2.5 -b -P BlendFileDnaExporter_25.py [-- [options]]")
+ print("\nUsage: \n\tblender2.5 --background -noaudio --python BlendFileDnaExporter_25.py [-- [options]]")
print("Options:")
print("\t--dna-keep-blend: doesn't delete the produced blend file DNA export to html")
print("\t--dna-debug: sets the logging level to DEBUG (lots of additional info)")
print("\t--dna-versioned saves version informations in the html and blend filenames")
print("\t--dna-overwrite-css overwrite dna.css, useful when modifying css in the script")
print("Examples:")
- print("\tdefault: % blender2.5 -b -P BlendFileDnaExporter_25.py")
- print("\twith options: % blender2.5 -b -P BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug\n")
+ print("\tdefault: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py")
+ print("\twith options: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug\n")
######################################################
diff --git a/doc/blender_file_format/README b/doc/blender_file_format/README
index 55dc3b83e49..f28d4b3f6b6 100644
--- a/doc/blender_file_format/README
+++ b/doc/blender_file_format/README
@@ -16,14 +16,14 @@ Below you have the help message with a list of options you can use.
Usage:
- blender2.5 -b -P BlendFileDnaExporter_25.py [-- [options]]
+ blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py [-- [options]]
Options:
--dna-keep-blend: doesn't delete the produced blend file DNA export to html
--dna-debug: sets the logging level to DEBUG (lots of additional info)
--dna-versioned saves version informations in the html and blend filenames
--dna-overwrite-css overwrite dna.css, useful when modifying css in the script
Examples:
- default: % blender2.5 -b -P BlendFileDnaExporter_25.py
- with options: % blender2.5 -b -P BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug
+ default: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py
+ with options: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug
diff --git a/doc/build_systems/scons-dev.txt b/doc/build_systems/scons-dev.txt
index ca1b3924804..4cc4e6c6ec2 100644
--- a/doc/build_systems/scons-dev.txt
+++ b/doc/build_systems/scons-dev.txt
@@ -189,6 +189,6 @@ $Id$
need changes elsewhere in the system, as it is handled automatically
with the central library repository.
- Enjoy the new system!
+ Enjoy the new system!!
/Nathan Letwory (jesterKing)
diff --git a/doc/manpage/blender.1 b/doc/manpage/blender.1
index 20cd40e32ee..620a90e61d2 100644
--- a/doc/manpage/blender.1
+++ b/doc/manpage/blender.1
@@ -1,4 +1,4 @@
-.TH "BLENDER" "1" "September 22, 2011" "Blender Blender 2\&.59 (sub 3)"
+.TH "BLENDER" "1" "October 17, 2011" "Blender Blender 2\&.60 (sub 0)"
.SH NAME
blender \- a 3D modelling and rendering package
@@ -15,7 +15,7 @@ Use Blender to create TV commercials, to make technical visualizations, business
http://www.blender.org
.SH OPTIONS
-Blender 2.59 (sub 3)
+Blender 2.59 (sub 4)
Usage: blender [args ...] [file] [args ...]
.br
.SS "Render Options:"
@@ -382,6 +382,7 @@ Arguments are executed in the order they are given. eg
\fIBLENDER_SYSTEM_DATAFILES\fR Directory for system wide data files.
\fIBLENDER_SYSTEM_PYTHON\fR Directory for system python libraries.
\fITMP\fR or \fITMPDIR\fR Store temporary files here.
+ \fISDL_AUDIODRIVER\fR LibSDL audio driver \- alsa, esd, dma.
\fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python.
.br
.br
diff --git a/doc/manpage/blender.1.py b/doc/manpage/blender.1.py
index 40234300994..21df42a4082 100644
--- a/doc/manpage/blender.1.py
+++ b/doc/manpage/blender.1.py
@@ -22,6 +22,7 @@
import subprocess
import os
+import sys
import time
import datetime
@@ -43,10 +44,15 @@ def man_format(data):
return data
+# allow passing blender as argument
+if sys.argv[-1].endswith(os.sep + "blender"):
+ blender_bin = sys.argv[-1]
+else:
+ blender_bin = os.path.join(os.path.dirname(__file__), "../../blender.bin")
-blender_bin = os.path.join(os.path.dirname(__file__), "../../blender.bin")
-
-blender_help = subprocess.Popen([blender_bin, "--help"], stdout=subprocess.PIPE).communicate()[0].decode()
+cmd = [blender_bin, "--help"]
+print(" executing:", " ".join(cmd))
+blender_help = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0].decode()
blender_version = subprocess.Popen([blender_bin, "--version"], stdout=subprocess.PIPE).communicate()[0].decode().strip()
blender_version = blender_version.split("Build")[0]
diff --git a/doc/python_api/examples/mathutils.Color.py b/doc/python_api/examples/mathutils.Color.py
new file mode 100644
index 00000000000..a55f1195bf6
--- /dev/null
+++ b/doc/python_api/examples/mathutils.Color.py
@@ -0,0 +1,30 @@
+import mathutils
+
+# color values are represented as RGB values from 0 - 1, this is blue
+col = mathutils.Color((0.0, 0.0, 1.0))
+
+# as well as r/g/b attribute access you can adjust them by h/s/v
+col.s *= 0.5
+
+# you can access its components by attribute or index
+print("Color R:", col.r)
+print("Color G:", col[1])
+print("Color B:", col[-1])
+print("Color HSV: %.2f, %.2f, %.2f", col[:])
+
+
+# components of an existing color can be set
+col[:] = 0.0, 0.5, 1.0
+
+# components of an existing color can use slice notation to get a tuple
+print("Values: %f, %f, %f" % col[:])
+
+# colors can be added and subtracted
+col += mathutils.Color((0.25, 0.0, 0.0))
+
+# Color can be multiplied, in this example color is scaled to 0-255
+# can printed as integers
+print("Color: %d, %d, %d" % (col * 255.0)[:])
+
+# This example prints the color as hexidecimal
+print("Hexidecimal: %.2x%.2x%.2x" % (col * 255.0)[:])
diff --git a/doc/python_api/examples/mathutils.Euler.py b/doc/python_api/examples/mathutils.Euler.py
index bc7702c1d53..3f87cc0ab04 100644
--- a/doc/python_api/examples/mathutils.Euler.py
+++ b/doc/python_api/examples/mathutils.Euler.py
@@ -1,3 +1,32 @@
import mathutils
+import math
-# todo
+# create a new euler with default axis rotation order
+eul = mathutils.Euler((0.0, math.radians(45.0), 0.0), 'XYZ')
+
+# rotate the euler
+eul.rotate_axis(math.radians(10.0), 'Z')
+
+# you can access its components by attribute or index
+print("Euler X", eul.x)
+print("Euler Y", eul[1])
+print("Euler Z", eul[-1])
+
+# components of an existing euler can be set
+eul[:] = 1.0, 2.0, 3.0
+
+# components of an existing euler can use slice notation to get a tuple
+print("Values: %f, %f, %f" % eul[:])
+
+# the order can be set at any time too
+eul.order = 'ZYX'
+
+# eulers can be used to rotate vectors
+vec = mathutils.Vector((0.0, 0.0, 1.0))
+vec.rotate(eul)
+
+# often its useful to convert the euler into a matrix so it can be used as
+# transformations with more flexibility
+mat_rot = eul.to_matrix()
+mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0))
+mat = mat_loc * mat_rot.to_4x4()
diff --git a/doc/python_api/examples/mathutils.Matrix.py b/doc/python_api/examples/mathutils.Matrix.py
index bc7702c1d53..079070a5ec7 100644
--- a/doc/python_api/examples/mathutils.Matrix.py
+++ b/doc/python_api/examples/mathutils.Matrix.py
@@ -1,3 +1,28 @@
import mathutils
+import math
-# todo
+# create a location matrix
+mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0))
+
+# create an identitiy matrix
+mat_sca = mathutils.Matrix.Scale(0.5, 4, (0.0, 0.0, 1.0))
+
+# create a rotation matrix
+mat_rot = mathutils.Matrix.Rotation(math.radians(45.0), 4, 'X')
+
+# combine transformations
+mat_out = mat_loc * mat_rot * mat_sca
+print(mat_out)
+
+# extract components back out of the matrix
+loc, rot, sca = mat_out.decompose()
+print(loc, rot, sca)
+
+# it can also be useful to access components of a matrix directly
+mat = mathutils.Matrix()
+mat[0][0], mat[1][0], mat[2][0] = 0.0, 1.0, 2.0
+
+mat[0][0:3] = 0.0, 1.0, 2.0
+
+# each item in a matrix is a vector so vector utility functions can be used
+mat[0].xyz = 0.0, 1.0, 2.0
diff --git a/doc/python_api/examples/mathutils.Quaternion.py b/doc/python_api/examples/mathutils.Quaternion.py
index bc7702c1d53..d8c696e6ba6 100644
--- a/doc/python_api/examples/mathutils.Quaternion.py
+++ b/doc/python_api/examples/mathutils.Quaternion.py
@@ -1,3 +1,23 @@
import mathutils
+import math
-# todo
+# a new rotation 90 degrees about the Y axis
+quat_a = mathutils.Quaternion((0.7071068, 0.0, 0.7071068, 0.0))
+
+# passing values to Quaternion's directly can be confusing so axis, angle
+# is supported for initializing too
+quat_b = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0))
+
+print("Check quaternions match", quat_a == quat_b)
+
+# like matrices, quaternions can be multiplied to accumulate rotational values
+quat_a = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0))
+quat_b = mathutils.Quaternion((0.0, 0.0, 1.0), math.radians(45.0))
+quat_out = quat_a * quat_b
+
+# print the quat, euler degrees for mear mortals and (axis, angle)
+print("Final Rotation:")
+print(quat_out)
+print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler()))
+print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] +
+ (math.degrees(quat_out.angle), )))
diff --git a/doc/python_api/rst/bge.logic.rst b/doc/python_api/rst/bge.logic.rst
index 798491b4710..82e69965840 100644
--- a/doc/python_api/rst/bge.logic.rst
+++ b/doc/python_api/rst/bge.logic.rst
@@ -106,7 +106,7 @@ There are also methods to access the current :class:`bge.types.KX_Scene`
Matricies as used by the game engine are **row major**
``matrix[row][col] = float``
-:class:`bge.types.KX_Camera` has some examples using matricies.
+:class:`bge.types.KX_Camera` has some examples using matrices.
*********
Variables
diff --git a/doc/python_api/rst/bgl.rst b/doc/python_api/rst/bgl.rst
index 61400351d16..8fe765836a1 100644
--- a/doc/python_api/rst/bgl.rst
+++ b/doc/python_api/rst/bgl.rst
@@ -20,7 +20,7 @@ OpenGL}" and the online NeHe tutorials are two of the best resources.
See :class:`Image.gl_load` and :class:`Image.gl_load`,
for example.
`OpenGL.org <http://www.opengl.org>`_
- `NeHe GameDev <nehe.gamedev.net>`_
+ `NeHe GameDev <http://nehe.gamedev.net>`_
.. function:: glAccum(op, value):
diff --git a/doc/python_api/rst/gpu.rst b/doc/python_api/rst/gpu.rst
index 72a5dc2f5d3..2ca7fdda9d5 100644
--- a/doc/python_api/rst/gpu.rst
+++ b/doc/python_api/rst/gpu.rst
@@ -1,7 +1,10 @@
-
GPU functions (gpu)
===================
+.. module:: gpu
+
+This module provides access to materials GLSL shaders.
+
*****
Intro
*****
@@ -16,7 +19,6 @@ and in the game engine.
are are closely related to Blender's internal GLSL code and may change if the GLSL code
is modified (e.g. new uniform type).
-.. module:: gpu
*********
Constants
diff --git a/doc/python_api/rst/info_best_practice.rst b/doc/python_api/rst/info_best_practice.rst
index 2fbc636613c..180a9fd1aa3 100644
--- a/doc/python_api/rst/info_best_practice.rst
+++ b/doc/python_api/rst/info_best_practice.rst
@@ -2,8 +2,9 @@
Best Practice
*************
+When writing you're own scripts python is great for new developers to pick up and become productive, but you can also pick up odd habits or at least write scripts that are not easy for others to understand.
-TODO: Intro text
+For you're own work this is of course fine, but if you want to collaborate with others or have you're work included with blender there are practices we encourage.
Style Conventions
@@ -61,5 +62,233 @@ TODO: Thomas
Script Efficiency
=================
-TODO: Campbell
+List Manipulation (General Python Tips)
+---------------------------------------
+
+Searching for list items
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+In Python there are some handy list functions that save you having to search through the list.
+
+Even though you're not looping on the list data **python is**, so you need to be aware of functions that will slow down your script by searching the whole list.
+
+.. code-block:: python
+
+ my_list.count(list_item)
+ my_list.index(list_item)
+ my_list.remove(list_item)
+ if list_item in my_list: ...
+
+
+Modifying Lists
+^^^^^^^^^^^^^^^
+In python we can add and remove from a list, This is slower when the list length is modifier, especially at the start of the list, since all the data after the index of modification needs to be moved up or down 1 place.
+
+The most simple way to add onto the end of the list is to use ``my_list.append(list_item)`` or ``my_list.extend(some_list)`` and the fastest way to remove an item is ``my_list.pop()`` or ``del my_list[-1]``.
+
+To use an index you can use ``my_list.insert(index, list_item)`` or ``list.pop(index)`` for list removal, but these are slower.
+
+Sometimes its faster (but more memory hungry) to just rebuild the list.
+
+
+Say you want to remove all triangle faces in a list.
+
+Rather than...
+
+.. code-block:: python
+
+ faces = mesh.faces[:] # make a list copy of the meshes faces
+ f_idx = len(faces) # Loop backwards
+ while f_idx: # while the value is not 0
+ f_idx -= 1
+
+ if len(faces[f_idx].vertices) == 3:
+ faces.pop(f_idx) # remove the triangle
+
+
+It's faster to build a new list with list comprehension.
+
+.. code-block:: python
+
+ faces = [f for f in mesh.faces if len(f.vertices) != 3]
+
+
+Adding List Items
+^^^^^^^^^^^^^^^^^
+
+If you have a list that you want to add onto another list, rather then...
+
+.. code-block:: python
+
+ for l in some_list:
+ my_list.append(l)
+
+Use...
+
+.. code-block:: python
+
+ my_list.extend([a, b, c...])
+
+
+Note that insert can be used when needed, but it is slower than append especially when inserting at the start of a long list.
+
+This example shows a very sub-optimal way of making a reversed list.
+
+
+.. code-block:: python
+
+ reverse_list = []
+ for list_item in some_list:
+ reverse_list.insert(0, list_item)
+
+
+Removing List Items
+^^^^^^^^^^^^^^^^^^^
+
+Use ``my_list.pop(index)`` rather than ``my_list.remove(list_item)``
+
+This requires you to have the index of the list item but is faster since ``remove()`` will search the list.
+
+Here is an example of how to remove items in 1 loop, removing the last items first, which is faster (as explained above).
+
+.. code-block:: python
+
+ list_index = len(my_list)
+
+ while list_index:
+ list_index -= 1
+ if my_list[list_index].some_test_attribute == 1:
+ my_list.pop(list_index)
+
+
+This example shows a fast way of removing items, for use in cases were where you can alter the list order without breaking the scripts functionality. This works by swapping 2 list items, so the item you remove is always last.
+
+.. code-block:: python
+
+ pop_index = 5
+
+ # swap so the pop_index is last.
+ my_list[-1], my_list[pop_index] = my_list[pop_index], my_list[-1]
+
+ # remove last item (pop_index)
+ my_list.pop()
+
+
+When removing many items in a large list this can provide a good speedup.
+
+
+Avoid Copying Lists
+^^^^^^^^^^^^^^^^^^^
+
+When passing a list/dictionary to a function, it is faster to have the function modify the list rather then returning a new list so python dosn't have tp duplicate the list in memory.
+
+Functions that modify a list in-place are more efficient then functions that create new lists.
+
+
+This is generally slower so only use for functions when it makes sense not to modify the list in place.
+
+>>> my_list = some_list_func(my_list)
+
+
+This is generally faster since there is no re-assignment and no list duplication.
+
+>>> some_list_func(vec)
+
+
+Also note that passing a sliced list makes a copy of the list in python memory
+
+>>> foobar(my_list[:])
+
+If my_list was a large array containing 10000's of items, a copy could use a lot of extra memory.
+
+
+Writing Strings to a File (Python General)
+------------------------------------------
+
+Here are 3 ways of joining multiple strings into 1 string for writing
+
+This really applies to any area of your code that involves a lot of string joining.
+
+
+Pythons string addition, *don't use if you can help it, especially when writing data in a loop.*
+
+>>> file.write(str1 + " " + str2 + " " + str3 + "\n")
+
+
+String formatting. Use this when you're writing string data from floats and int's
+
+>>> file.write("%s %s %s\n" % (str1, str2, str3))
+
+
+Pythons string joining function. To join a list of strings
+
+>>> file.write(" ".join([str1, str2, str3, "\n"]))
+
+
+join is fastest on many strings, string formatting is quite fast too (better for converting data types). String arithmetic is slowest.
+
+
+Parsing Strings (Import/Exporting)
+----------------------------------
+
+Since many file formats are ASCII, the way you parse/export strings can make a large difference in how fast your script runs.
+
+When importing strings to make into blender there are a few ways to parse the string.
+
+Parsing Numbers
+^^^^^^^^^^^^^^^
+
+Use ``float(string)`` rather than ``eval(string)``, if you know the value will be an int then ``int(string)``, float() will work for an int too but its faster to read ints with int().
+
+Checking String Start/End
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If your checking the start of a string for a keyword, rather than...
+
+>>> if line[0:5] == "vert ": ...
+
+Use...
+
+>>> if line.startswith("vert "):
+
+Using ``startswith()`` is slightly faster (approx 5%) and also avoids a possible error with the slice length not matching the string length.
+
+my_string.endswith("foo_bar") can be used for line endings too.
+
+if your unsure whether the text is upper or lower case use lower or upper string function.
+
+>>> if line.lower().startswith("vert ")
+
+
+Use try/except Sparingly
+------------------------
+
+The **try** statement useful to save time writing error checking code.
+
+However **try** is significantly slower then an **if** since an exception has to be set each time, so avoid using **try** in areas of your code that execute in a loop and runs many times.
+
+There are cases where using **try** is faster than checking weather the condition will raise an error, so it is worth experimenting.
+
+
+Value Comparison
+----------------
+
+Python has two ways to compare values ``a == b`` and ``a is b``, The difference is that ``==`` may run the objects comparison function ``__cmp__()`` where as ``is`` compares identity, that both variables reference the same item in memory.
+
+In cases where you know you are checking for the same value which is referenced from multiple places, ``is`` is faster.
+
+
+Time You're Code
+----------------
+
+While developing a script its good to time it to be aware of any changes in performance, this can be done simply.
+
+.. code-block:: python
+
+ import time
+ time_start = time.time()
+
+ # do something...
+
+ print("My Script Finished: %.4f sec" % time.time() - time_start)
diff --git a/doc/python_api/rst/info_gotcha.rst b/doc/python_api/rst/info_gotcha.rst
index e7903dcf96a..b17debbb15c 100644
--- a/doc/python_api/rst/info_gotcha.rst
+++ b/doc/python_api/rst/info_gotcha.rst
@@ -223,6 +223,26 @@ While writing scripts that deal with armatures you may find you have to switch b
This is mainly an issue with editmode since pose data can be manipulated without having to be in pose mode, however for operator access you may still need to enter pose mode.
+Relative File Paths
+===================
+
+Blenders relative file paths are not compatible with standard python modules such as ``sys`` and ``os``.
+
+Built in python functions don't understand blenders ``//`` prefix which denotes the blend file path.
+
+A common case where you would run into this problem is when exporting a material with assosiated image paths.
+
+>>> bpy.path.abspath(image.filepath)
+
+
+When using blender data from linked libraries there is an unfortunate complication since the path will be relative to the library rather then the open blend file. When the data block may be from an external blend file pass the library argument from the `bpy.types.ID`.
+
+>>> bpy.path.abspath(image.filepath, library=image.library)
+
+
+These returns the absolute path which can be used with native python modules.
+
+
Unicode Problems
================
diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py
index c1bed089b5a..017c2acc363 100644
--- a/doc/python_api/sphinx_doc_gen.py
+++ b/doc/python_api/sphinx_doc_gen.py
@@ -27,7 +27,7 @@ For HTML generation
-------------------
- Run this script from blenders root path once you have compiled blender
- ./blender.bin --background --python doc/python_api/sphinx_doc_gen.py
+ ./blender.bin --background -noaudio --python doc/python_api/sphinx_doc_gen.py
This will generate python files in doc/python_api/sphinx-in/
providing ./blender.bin is or links to the blender executable
@@ -83,6 +83,7 @@ else:
"aud",
"bgl",
"blf",
+ "gpu",
"mathutils",
"mathutils.geometry",
)
@@ -93,7 +94,7 @@ else:
# for quick rebuilds
"""
rm -rf /b/doc/python_api/sphinx-* && \
-./blender.bin --background --factory-startup --python doc/python_api/sphinx_doc_gen.py && \
+./blender.bin --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py && \
sphinx-build doc/python_api/sphinx-in doc/python_api/sphinx-out
"""
@@ -1042,7 +1043,9 @@ def rna2sphinx(BASEPATH):
fw("html_theme = 'blender-org'\n")
fw("html_theme_path = ['../']\n")
- fw("html_favicon = 'favicon.ico'\n")
+ # copied with the theme, exclude else we get an error [#28873]
+ fw("html_favicon = 'favicon.ico'\n")
+
# not helpful since the source us generated, adds to upload size.
fw("html_copy_source = False\n")
fw("\n")
@@ -1120,6 +1123,8 @@ def rna2sphinx(BASEPATH):
fw(" bgl.rst\n\n")
if "blf" not in EXCLUDE_MODULES:
fw(" blf.rst\n\n")
+ if "gpu" not in EXCLUDE_MODULES:
+ fw(" gpu.rst\n\n")
if "aud" not in EXCLUDE_MODULES:
fw(" aud.rst\n\n")
if "bpy_extras" not in EXCLUDE_MODULES:
@@ -1260,6 +1265,13 @@ def rna2sphinx(BASEPATH):
import shutil
shutil.copy2(os.path.join(BASEPATH, "..", "rst", "bgl.rst"), BASEPATH)
+ if "gpu" not in EXCLUDE_MODULES:
+ #import gpu as module
+ #pymodule2sphinx(BASEPATH, "gpu", module, "GPU Shader Module")
+ #del module
+ import shutil
+ shutil.copy2(os.path.join(BASEPATH, "..", "rst", "gpu.rst"), BASEPATH)
+
if "aud" not in EXCLUDE_MODULES:
import aud as module
pymodule2sphinx(BASEPATH, "aud", module, "Audio System")
diff --git a/doc/python_api/sphinx_doc_gen.sh b/doc/python_api/sphinx_doc_gen.sh
index 307476d9a92..fad9bfbbf90 100755
--- a/doc/python_api/sphinx_doc_gen.sh
+++ b/doc/python_api/sphinx_doc_gen.sh
@@ -48,7 +48,7 @@ SPHINXBASE=doc/python_api
if $DO_EXE_BLENDER ; then
# dont delete existing docs, now partial updates are used for quick builds.
- $BLENDER --background --factory-startup --python $SPHINXBASE/sphinx_doc_gen.py
+ $BLENDER --background -noaudio --factory-startup --python $SPHINXBASE/sphinx_doc_gen.py
fi
diff --git a/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp b/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp
index ed9b2d3871d..f1edccb22fb 100644
--- a/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp
+++ b/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp
@@ -32,7 +32,8 @@
AUD_DynamicIIRFilterReader::AUD_DynamicIIRFilterReader(AUD_Reference<AUD_IReader> reader,
AUD_Reference<AUD_DynamicIIRFilterFactory> factory) :
- AUD_IIRFilterReader(reader, std::vector<float>(), std::vector<float>())
+ AUD_IIRFilterReader(reader, std::vector<float>(), std::vector<float>()),
+ m_factory(factory)
{
sampleRateChanged(reader->getSpecs().rate);
}
diff --git a/intern/audaspace/FX/AUD_IIRFilterReader.cpp b/intern/audaspace/FX/AUD_IIRFilterReader.cpp
index 1bfb9b97b62..90f7e1e3cb0 100644
--- a/intern/audaspace/FX/AUD_IIRFilterReader.cpp
+++ b/intern/audaspace/FX/AUD_IIRFilterReader.cpp
@@ -36,11 +36,14 @@ AUD_IIRFilterReader::AUD_IIRFilterReader(AUD_Reference<AUD_IReader> reader,
const std::vector<float>& a) :
AUD_BaseIIRFilterReader(reader, b.size(), a.size()), m_a(a), m_b(b)
{
- for(int i = 1; i < m_a.size(); i++)
- m_a[i] /= m_a[0];
- for(int i = 0; i < m_b.size(); i++)
- m_b[i] /= m_a[0];
- m_a[0] = 1;
+ if(m_a.size())
+ {
+ for(int i = 1; i < m_a.size(); i++)
+ m_a[i] /= m_a[0];
+ for(int i = 0; i < m_b.size(); i++)
+ m_b[i] /= m_a[0];
+ m_a[0] = 1;
+ }
}
sample_t AUD_IIRFilterReader::filter()
@@ -58,7 +61,7 @@ sample_t AUD_IIRFilterReader::filter()
void AUD_IIRFilterReader::setCoefficients(const std::vector<float>& b,
const std::vector<float>& a)
{
- setLengths(m_b.size(), m_a.size());
+ setLengths(b.size(), a.size());
m_a = a;
m_b = b;
}
diff --git a/intern/audaspace/intern/AUD_C-API.cpp b/intern/audaspace/intern/AUD_C-API.cpp
index af053df9c50..66e3a0ed7e9 100644
--- a/intern/audaspace/intern/AUD_C-API.cpp
+++ b/intern/audaspace/intern/AUD_C-API.cpp
@@ -826,42 +826,51 @@ float* AUD_readSoundBuffer(const char* filename, float low, float high,
AUD_Reference<AUD_IFactory> file = new AUD_FileFactory(filename);
- AUD_Reference<AUD_IReader> reader = file->createReader();
- AUD_SampleRate rate = reader->getSpecs().rate;
+ int position = 0;
- sound = new AUD_ChannelMapperFactory(file, specs);
+ try
+ {
+ AUD_Reference<AUD_IReader> reader = file->createReader();
- if(high < rate)
- sound = new AUD_LowpassFactory(sound, high);
- if(low > 0)
- sound = new AUD_HighpassFactory(sound, low);
+ AUD_SampleRate rate = reader->getSpecs().rate;
- sound = new AUD_EnvelopeFactory(sound, attack, release, threshold, 0.1f);
- sound = new AUD_LinearResampleFactory(sound, specs);
+ sound = new AUD_ChannelMapperFactory(file, specs);
- if(square)
- sound = new AUD_SquareFactory(sound, sthreshold);
+ if(high < rate)
+ sound = new AUD_LowpassFactory(sound, high);
+ if(low > 0)
+ sound = new AUD_HighpassFactory(sound, low);
- if(accumulate)
- sound = new AUD_AccumulatorFactory(sound, additive);
- else if(additive)
- sound = new AUD_SumFactory(sound);
+ sound = new AUD_EnvelopeFactory(sound, attack, release, threshold, 0.1f);
+ sound = new AUD_LinearResampleFactory(sound, specs);
- reader = sound->createReader();
+ if(square)
+ sound = new AUD_SquareFactory(sound, sthreshold);
- if(reader.isNull())
- return NULL;
+ if(accumulate)
+ sound = new AUD_AccumulatorFactory(sound, additive);
+ else if(additive)
+ sound = new AUD_SumFactory(sound);
- int len;
- int position = 0;
- bool eos;
- do
+ reader = sound->createReader();
+
+ if(reader.isNull())
+ return NULL;
+
+ int len;
+ bool eos;
+ do
+ {
+ len = samplerate;
+ buffer.resize((position + len) * sizeof(float), true);
+ reader->read(len, eos, buffer.getBuffer() + position);
+ position += len;
+ } while(!eos);
+ }
+ catch(AUD_Exception&)
{
- len = samplerate;
- buffer.resize((position + len) * sizeof(float), true);
- reader->read(len, eos, buffer.getBuffer() + position);
- position += len;
- } while(!eos);
+ return NULL;
+ }
float* result = (float*)malloc(position * sizeof(float));
memcpy(result, buffer.getBuffer(), position * sizeof(float));
diff --git a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
index 27d10ce6dc8..7764164a9b0 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
+++ b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
@@ -352,7 +352,7 @@ const float AUD_ChannelMapperReader::SURROUND71_ANGLES[] =
0.0f * M_PI / 180.0f,
0.0f * M_PI / 180.0f,
-110.0f * M_PI / 180.0f,
- 110.0f * M_PI / 180.0f
+ 110.0f * M_PI / 180.0f,
-150.0f * M_PI / 180.0f,
150.0f * M_PI / 180.0f
};
diff --git a/intern/audaspace/intern/AUD_NULLDevice.cpp b/intern/audaspace/intern/AUD_NULLDevice.cpp
index b7d658aafe6..cb76f9eab88 100644
--- a/intern/audaspace/intern/AUD_NULLDevice.cpp
+++ b/intern/audaspace/intern/AUD_NULLDevice.cpp
@@ -69,7 +69,7 @@ bool AUD_NULLDevice::AUD_NULLHandle::seek(float position)
float AUD_NULLDevice::AUD_NULLHandle::getPosition()
{
- return 0.0f;
+ return std::numeric_limits<float>::quiet_NaN();
}
AUD_Status AUD_NULLDevice::AUD_NULLHandle::getStatus()
@@ -79,7 +79,7 @@ AUD_Status AUD_NULLDevice::AUD_NULLHandle::getStatus()
float AUD_NULLDevice::AUD_NULLHandle::getVolume()
{
- return 0.0f;
+ return std::numeric_limits<float>::quiet_NaN();
}
bool AUD_NULLDevice::AUD_NULLHandle::setVolume(float volume)
@@ -89,7 +89,7 @@ bool AUD_NULLDevice::AUD_NULLHandle::setVolume(float volume)
float AUD_NULLDevice::AUD_NULLHandle::getPitch()
{
- return 0.0f;
+ return std::numeric_limits<float>::quiet_NaN();
}
bool AUD_NULLDevice::AUD_NULLHandle::setPitch(float pitch)
@@ -153,7 +153,7 @@ void AUD_NULLDevice::unlock()
float AUD_NULLDevice::getVolume() const
{
- return 0;
+ return std::numeric_limits<float>::quiet_NaN();
}
void AUD_NULLDevice::setVolume(float volume)
diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h
index dd399a7aa95..78fc3f69c7a 100644
--- a/intern/ghost/GHOST_Types.h
+++ b/intern/ghost/GHOST_Types.h
@@ -468,6 +468,7 @@ typedef struct {
GHOST_TKey key;
/** The ascii code for the key event ('\0' if none). */
char ascii;
+ char utf8_buf[6];
} GHOST_TEventKeyData;
typedef struct {
diff --git a/intern/ghost/intern/GHOST_EventKey.h b/intern/ghost/intern/GHOST_EventKey.h
index 3581cd86b20..a8fca1e8f2d 100644
--- a/intern/ghost/intern/GHOST_EventKey.h
+++ b/intern/ghost/intern/GHOST_EventKey.h
@@ -55,6 +55,7 @@ public:
{
m_keyEventData.key = key;
m_keyEventData.ascii = '\0';
+ m_keyEventData.utf8_buf[0]= '\0';
m_data = &m_keyEventData;
}
@@ -65,11 +66,13 @@ public:
* @param key The key code of the key.
* @param ascii The ascii code for the key event.
*/
- GHOST_EventKey(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, GHOST_TKey key, char ascii)
+ GHOST_EventKey(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, GHOST_TKey key, char ascii, const char utf8_buf[6])
: GHOST_Event(msec, type, window)
{
m_keyEventData.key = key;
m_keyEventData.ascii = ascii;
+ if (utf8_buf) memcpy(m_keyEventData.utf8_buf, utf8_buf, sizeof(m_keyEventData.utf8_buf));
+ else m_keyEventData.utf8_buf[0]= '\0';
m_data = &m_keyEventData;
}
diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp
index 02ff5c0f559..762966c9b9e 100644
--- a/intern/ghost/intern/GHOST_SystemCarbon.cpp
+++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp
@@ -931,7 +931,7 @@ OSStatus GHOST_SystemCarbon::handleKeyEvent(EventRef event)
} else {
type = GHOST_kEventKeyUp;
}
- pushEvent( new GHOST_EventKey( getMilliSeconds(), type, window, key, ascii) );
+ pushEvent( new GHOST_EventKey( getMilliSeconds(), type, window, key, ascii, NULL) );
// }
break;
diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm
index 303c2b24497..1dfb8e36422 100644
--- a/intern/ghost/intern/GHOST_SystemCocoa.mm
+++ b/intern/ghost/intern/GHOST_SystemCocoa.mm
@@ -1654,8 +1654,19 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr)
//printf("\nW failure for event 0x%x",[event type]);
return GHOST_kFailure;
}
+
+ /* unicode input - not entirely supported yet
+ * but we are getting the right byte, Blender is not drawing it though
+ * also some languages may need special treatment:
+ - Japanese: romanji is used as input, and every 2 letters OSX converts the text
+ to Hiragana/Katakana.
+ - Korean: one add one letter at a time, and then the OSX join them in the equivalent
+ combined letter.
+ */
+ char utf8_buf[6]= {'\0'};
switch ([event type]) {
+
case NSKeyDown:
case NSKeyUp:
charsIgnoringModifiers = [event charactersIgnoringModifiers];
@@ -1667,7 +1678,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr)
keyCode = convertKey([event keyCode],0,
[event type] == NSKeyDown?kUCKeyActionDown:kUCKeyActionUp);
-
+ /* ascii */
characters = [event characters];
if ([characters length]>0) { //Check for dead keys
//Convert characters to iso latin 1 encoding
@@ -1679,16 +1690,32 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr)
}
else
ascii= 0;
+
+ /* unicode */
+ if ([characters length]>0) {
+ convertedCharacters = [characters dataUsingEncoding:NSUTF8StringEncoding];
+ if ([convertedCharacters length]>0) {
+ utf8_buf[0] = ((char*)[convertedCharacters bytes])[0];
+ utf8_buf[1] = ((char*)[convertedCharacters bytes])[1];
+ utf8_buf[2] = ((char*)[convertedCharacters bytes])[2];
+ utf8_buf[3] = ((char*)[convertedCharacters bytes])[3];
+ utf8_buf[4] = ((char*)[convertedCharacters bytes])[4];
+ utf8_buf[5] = ((char*)[convertedCharacters bytes])[5];
+ }
+ else {
+ utf8_buf[0] = '\0';
+ }
+ }
if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask))
break; //Cmd-Q is directly handled by Cocoa
if ([event type] == NSKeyDown) {
- pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii) );
- //printf("\nKey down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii);
+ pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii, utf8_buf) );
+ //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf);
} else {
- pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii) );
- //printf("\nKey up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii);
+ pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii, utf8_buf) );
+ //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf);
}
break;
diff --git a/intern/ghost/intern/GHOST_SystemSDL.cpp b/intern/ghost/intern/GHOST_SystemSDL.cpp
index f2cc45731fa..11bd562f767 100644
--- a/intern/ghost/intern/GHOST_SystemSDL.cpp
+++ b/intern/ghost/intern/GHOST_SystemSDL.cpp
@@ -441,7 +441,7 @@ GHOST_SystemSDL::processEvent(SDL_Event *sdl_event)
}
}
- g_event= new GHOST_EventKey(getMilliSeconds(), type, window, gkey, sym);
+ g_event= new GHOST_EventKey(getMilliSeconds(), type, window, gkey, sym, NULL);
}
break;
}
diff --git a/intern/ghost/intern/GHOST_SystemSDL.h b/intern/ghost/intern/GHOST_SystemSDL.h
index 87d288117c5..d70bec610d6 100644
--- a/intern/ghost/intern/GHOST_SystemSDL.h
+++ b/intern/ghost/intern/GHOST_SystemSDL.h
@@ -110,7 +110,7 @@ private:
const GHOST_TEmbedderWindowID parentWindow
);
- /* SDL spesific */
+ /* SDL specific */
GHOST_WindowSDL * findGhostWindow(SDL_Window *sdl_win);
bool
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 38f3985b139..24b6474732e 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -725,7 +725,8 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP
(LPSTR) &ascii, 1,
NULL,NULL);
- event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii);
+ /* TODO, last arg is utf8, need to pass utf8 arg */
+ event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii, NULL);
#ifdef GHOST_DEBUG
std::cout << ascii << std::endl;
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index 27a61cf57fc..209ffe501f4 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -89,6 +89,11 @@ GHOST_SystemX11(
abort(); //was return before, but this would just mean it will crash later
}
+ /* Open a connection to the X input manager */
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ m_xim = XOpenIM(m_display, NULL, (char *)GHOST_X11_RES_NAME, (char *)GHOST_X11_RES_CLASS);
+#endif
+
m_delete_window_atom
= XInternAtom(m_display, "WM_DELETE_WINDOW", True);
@@ -141,6 +146,10 @@ GHOST_SystemX11(
GHOST_SystemX11::
~GHOST_SystemX11()
{
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ XCloseIM(m_xim);
+#endif
+
XCloseDisplay(m_display);
}
@@ -500,9 +509,9 @@ GHOST_SystemX11::processEvent(XEvent *xe)
case KeyRelease:
{
XKeyEvent *xke = &(xe->xkey);
-
KeySym key_sym = XLookupKeysym(xke,0);
char ascii;
+ char utf8_buf[6]; /* 6 is enough for a utf8 char */
GHOST_TKey gkey = convertXKey(key_sym);
GHOST_TEventType type = (xke->type == KeyPress) ?
@@ -512,13 +521,55 @@ GHOST_SystemX11::processEvent(XEvent *xe)
ascii = '\0';
}
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ /* getting unicode on key-up events gives XLookupNone status */
+ if (xke->type == KeyPress) {
+ Status status;
+ int len;
+
+ /* use utf8 because its not locale depentant, from xorg docs */
+ if (!(len= Xutf8LookupString(window->getX11_XIC(), xke, utf8_buf, sizeof(utf8_buf), &key_sym, &status))) {
+ utf8_buf[0]= '\0';
+ }
+
+ if ((status == XLookupChars || status == XLookupBoth)) {
+ if ((unsigned char)utf8_buf[0] >= 32) { /* not an ascii control character */
+ /* do nothing for now, this is valid utf8 */
+ }
+ else {
+ utf8_buf[0]= '\0';
+ }
+ }
+ else if (status == XLookupKeySym) {
+ /* this key doesn't have a text representation, it is a command
+ key of some sort */;
+ }
+ else {
+ printf("Bad keycode lookup. Keysym 0x%x Status: %s\n",
+ (unsigned int) key_sym,
+ (status == XBufferOverflow ? "BufferOverflow" :
+ status == XLookupNone ? "XLookupNone" :
+ status == XLookupKeySym ? "XLookupKeySym" :
+ "Unknown status"));
+
+ printf("'%.*s' %p %p\n", len, utf8_buf, window->getX11_XIC(), m_xim);
+ }
+ }
+ else {
+ utf8_buf[0]= '\0';
+ }
+#else
+ utf8_buf[0]= '\0';
+#endif
+
g_event = new
GHOST_EventKey(
getMilliSeconds(),
type,
window,
gkey,
- ascii
+ ascii,
+ utf8_buf
);
break;
diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h
index b43d955d156..af45d68450f 100644
--- a/intern/ghost/intern/GHOST_SystemX11.h
+++ b/intern/ghost/intern/GHOST_SystemX11.h
@@ -40,6 +40,12 @@
#include "GHOST_System.h"
#include "../GHOST_Types.h"
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+# define GHOST_X11_RES_NAME "Blender" /* res_name */
+# define GHOST_X11_RES_CLASS "Blender" /* res_class */
+#endif
+
+
class GHOST_WindowX11;
/**
@@ -203,6 +209,14 @@ public:
return m_display;
}
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ XIM
+ getX11_XIM(
+ ) {
+ return m_xim;
+ }
+#endif
+
/* Helped function for get data from the clipboard. */
void getClipboard_xcout(XEvent evt, Atom sel, Atom target,
unsigned char **txt, unsigned long *len,
@@ -258,6 +272,9 @@ public:
private :
Display * m_display;
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ XIM m_xim;
+#endif
/// The vector of windows that need to be updated.
std::vector<GHOST_WindowX11 *> m_dirty_windows;
diff --git a/intern/ghost/intern/GHOST_WindowSDL.h b/intern/ghost/intern/GHOST_WindowSDL.h
index 6b016b85126..62e1a71227f 100644
--- a/intern/ghost/intern/GHOST_WindowSDL.h
+++ b/intern/ghost/intern/GHOST_WindowSDL.h
@@ -70,7 +70,7 @@ public:
~GHOST_WindowSDL();
- /* SDL spesific */
+ /* SDL specific */
SDL_Window *
getSDLWindow()
{
diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp
index 160980b6331..d26224d956a 100644
--- a/intern/ghost/intern/GHOST_WindowX11.cpp
+++ b/intern/ghost/intern/GHOST_WindowX11.cpp
@@ -392,6 +392,13 @@ GHOST_WindowX11(
}
}
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ m_xic = XCreateIC(m_system->getX11_XIM(), XNClientWindow, m_window, XNFocusWindow, m_window,
+ XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
+ XNResourceName, GHOST_X11_RES_NAME, XNResourceClass,
+ GHOST_X11_RES_CLASS, NULL);
+#endif
+
// Set the window icon
XWMHints *xwmhints = XAllocWMHints();
XImage *x_image, *mask_image;
@@ -1304,6 +1311,13 @@ GHOST_WindowX11::
XSetSelectionOwner(m_display, Clipboard_atom, None, CurrentTime);
}
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ if (m_xic) {
+ XDestroyIC(m_xic);
+ }
+#endif
+
+
XDestroyWindow(m_display, m_window);
XFree(m_visual);
}
diff --git a/intern/ghost/intern/GHOST_WindowX11.h b/intern/ghost/intern/GHOST_WindowX11.h
index 2cb269ea919..ee662945eaa 100644
--- a/intern/ghost/intern/GHOST_WindowX11.h
+++ b/intern/ghost/intern/GHOST_WindowX11.h
@@ -221,6 +221,10 @@ public:
{ return NULL; }
#endif // WITH_X11_XINPUT
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ XIC getX11_XIC() { return m_xic; }
+#endif
+
/*
* Need this in case that we want start the window
* in FullScree or Maximized state.
@@ -363,6 +367,10 @@ private :
XTablet m_xtablet;
#endif
+#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
+ XIC m_xic;
+#endif
+
void icccmSetState(int state);
int icccmGetState() const;
diff --git a/po/update_msg.py b/po/update_msg.py
index 5986d96f14b..7cc7ee50b63 100644
--- a/po/update_msg.py
+++ b/po/update_msg.py
@@ -135,10 +135,12 @@ def dump_messages_rna(messages):
item.identifier,
)
# Here identifier and name can be the same!
- if item.name: # and item.name != item.identifier:
- messages.setdefault(item.name, []).append(msgsrc)
+ if item.name: # and item.name != item.identifier:
+ messages.setdefault(item.name,
+ []).append(msgsrc)
if item.description:
- messages.setdefault(item.description, []).append(msgsrc)
+ messages.setdefault(item.description,
+ []).append(msgsrc)
def walkRNA(bl_rna):
diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png
index 79339095b07..20f8d0cf16d 100644
--- a/release/datafiles/splash.png
+++ b/release/datafiles/splash.png
Binary files differ
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index ef9a4615ff2..26611fb93ad 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -165,7 +165,7 @@ def modules(module_cache):
if mod:
module_cache[mod_name] = mod
- # just incase we get stale modules, not likely
+ # just in case we get stale modules, not likely
for mod_stale in modules_stale:
del module_cache[mod_stale]
del modules_stale
@@ -209,7 +209,7 @@ def enable(module_name, default_set=True):
:arg module_name: The name of the addon and module.
:type module_name: string
- :return: the loaded module or None on failier.
+ :return: the loaded module or None on failure.
:rtype: module
"""
@@ -262,7 +262,7 @@ def enable(module_name, default_set=True):
# * OK loaded successfully! *
if default_set:
- # just incase its enabled alredy
+ # just in case its enabled already
ext = _bpy.context.user_preferences.addons.get(module_name)
if not ext:
ext = _bpy.context.user_preferences.addons.new()
@@ -286,7 +286,7 @@ def disable(module_name, default_set=True):
import sys
mod = sys.modules.get(module_name)
- # possible this addon is from a previous session and didnt load a
+ # possible this addon is from a previous session and didn't load a
# module this time. So even if the module is not found, still disable
# the addon in the user prefs.
if mod:
@@ -300,7 +300,7 @@ def disable(module_name, default_set=True):
else:
print("addon_utils.disable", module_name, "not loaded")
- # could be in more then once, unlikely but better do this just incase.
+ # could be in more then once, unlikely but better do this just in case.
addons = _bpy.context.user_preferences.addons
if default_set:
diff --git a/release/scripts/modules/animsys_refactor.py b/release/scripts/modules/animsys_refactor.py
index 88097ed3d28..64110b0f620 100644
--- a/release/scripts/modules/animsys_refactor.py
+++ b/release/scripts/modules/animsys_refactor.py
@@ -73,7 +73,7 @@ class DataPathBuilder(object):
try:
print("base." + item_new)
base_new = eval("base." + item_new)
- break # found, dont keep looking
+ break # found, don't keep looking
except:
pass
diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py
index 43820e82340..7c30b480d6b 100755
--- a/release/scripts/modules/blend_render_info.py
+++ b/release/scripts/modules/blend_render_info.py
@@ -69,7 +69,7 @@ def read_blend_rend_chunk(path):
struct.unpack('>i' if is_big_endian else '<i', blendfile.read(4))[0]
sizeof_bhead_left -= 4
- # We dont care about the rest of the bhead struct
+ # We don't care about the rest of the bhead struct
blendfile.read(sizeof_bhead_left)
# Now we want the scene name, start and end frame. this is 32bites long
diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py
index 5c371fd750a..5fe5cfd7cf4 100644
--- a/release/scripts/modules/bpy/__init__.py
+++ b/release/scripts/modules/bpy/__init__.py
@@ -56,7 +56,7 @@ def main():
# from bpy.types import Panel
sys.modules["bpy.types"] = types
- # if "-d" in sys.argv: # Enable this to measure startup speed
+ #~ if "-d" in sys.argv: # Enable this to measure start up speed
if 0:
import cProfile
cProfile.run('import bpy; bpy.utils.load_scripts()', 'blender.prof')
diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py
index ba9f6dafd19..382a47cb4e6 100644
--- a/release/scripts/modules/bpy/ops.py
+++ b/release/scripts/modules/bpy/ops.py
@@ -138,7 +138,7 @@ class BPyOpsSubModOp(object):
@staticmethod
def _scene_update(context):
scene = context.scene
- if scene: # None in backgroud mode
+ if scene: # None in background mode
scene.update()
else:
import bpy
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py
index fdd22f403a4..6eb16bd7e7a 100644
--- a/release/scripts/modules/bpy/utils.py
+++ b/release/scripts/modules/bpy/utils.py
@@ -142,9 +142,9 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
if reload_scripts:
_bpy_types.TypeMap.clear()
- # just unload, dont change user defaults, this means we can sync
+ # just unload, don't change user defaults, this means we can sync
# to reload. note that they will only actually reload of the
- # modification time changes. This `wont` work for packages so...
+ # modification time changes. This `won't` work for packages so...
# its not perfect.
for module_name in [ext.module for ext in prefs.addons]:
_addon_utils.disable(module_name, default_set=False)
@@ -220,7 +220,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
if _os.path.isdir(path):
_sys_path_ensure(path)
- # only add this to sys.modules, dont run
+ # only add this to sys.modules, don't run
if path_subdir == "modules":
continue
@@ -374,7 +374,7 @@ def smpte_from_seconds(time, fps=None):
if time >= 3600.0: # hours
hours = int(time / 3600.0)
time = time % 3600.0
- if time >= 60.0: # mins
+ if time >= 60.0: # minutes
minutes = int(time / 60.0)
time = time % 60.0
diff --git a/release/scripts/modules/bpy_extras/anim_utils.py b/release/scripts/modules/bpy_extras/anim_utils.py
index 9848586a144..6b0ab1c3adc 100644
--- a/release/scripts/modules/bpy_extras/anim_utils.py
+++ b/release/scripts/modules/bpy_extras/anim_utils.py
@@ -158,7 +158,7 @@ def bake_action(frame_start,
# -------------------------------------------------------------------------
# Create action
- # incase animation data hassnt been created
+ # in case animation data hassnt been created
atd = obj.animation_data_create()
if action is None:
action = bpy.data.actions.new("Action")
diff --git a/release/scripts/modules/bpy_extras/image_utils.py b/release/scripts/modules/bpy_extras/image_utils.py
index 02959fae534..52050b08bc7 100644
--- a/release/scripts/modules/bpy_extras/image_utils.py
+++ b/release/scripts/modules/bpy_extras/image_utils.py
@@ -43,10 +43,10 @@ def load_image(imagepath,
the end will be ignored.
:type dirname: string
:arg place_holder: if True a new place holder image will be created.
- this is usefull so later you can relink the image to its original data.
+ this is useful so later you can relink the image to its original data.
:type place_holder: bool
- :arg recursive: If True, directories will be recursivly searched.
- Be carefull with this if you have files in your root directory because
+ :arg recursive: If True, directories will be recursively searched.
+ Be careful with this if you have files in your root directory because
it may take a long time.
:type recursive: bool
:arg ncase_cmp: on non windows systems, find the correct case for the file.
diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py
index 5d28ceaa34c..3d71feaf79e 100644
--- a/release/scripts/modules/bpy_extras/io_utils.py
+++ b/release/scripts/modules/bpy_extras/io_utils.py
@@ -114,7 +114,7 @@ class ImportHelper:
# Axis conversion function, not pretty LUT
-# use lookup tabes to convert between any axis
+# use lookup table to convert between any axis
_axis_convert_matrix = (
((-1.0, 0.0, 0.0), (0.0, -1.0, 0.0), (0.0, 0.0, 1.0)),
((-1.0, 0.0, 0.0), (0.0, 0.0, -1.0), (0.0, -1.0, 0.0)),
@@ -302,7 +302,7 @@ def free_derived_objects(ob):
def unpack_list(list_of_tuples):
flat_list = []
- flat_list_extend = flat_list.extend # a tich faster
+ flat_list_extend = flat_list.extend # a tiny bit faster
for t in list_of_tuples:
flat_list_extend(t)
return flat_list
@@ -318,7 +318,7 @@ def unpack_face_list(list_of_tuples):
if len(t) == 3:
if t[2] == 0:
t = t[1], t[2], t[0]
- else: # assuem quad
+ else: # assume quad
if t[3] == 0 or t[2] == 0:
t = t[2], t[3], t[0], t[1]
@@ -371,7 +371,7 @@ def path_reference(filepath,
:arg copy_subdir: the subdirectory of *base_dst* to use when mode='COPY'.
:type copy_subdir: string
:arg copy_set: collect from/to pairs when mode='COPY',
- pass to *path_reference_copy* when exportign is done.
+ pass to *path_reference_copy* when exporting is done.
:type copy_set: set
:arg library: The library this path is relative to.
:type library: :class:`bpy.types.Library` or None
@@ -450,7 +450,7 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None, sep="."):
:arg key: unique item this name belongs to, name_dict[key] will be reused
when available.
This can be the object, mesh, material, etc instance its self.
- :type key: any hashable object assosiated with the *name*.
+ :type key: any hashable object associated with the *name*.
:arg name: The name used to create a unique value in *name_dict*.
:type name: string
:arg name_dict: This is used to cache namespace to ensure no collisions
diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py
index 78f010245a0..6eb19c0ff05 100644
--- a/release/scripts/modules/bpy_extras/keyconfig_utils.py
+++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py
@@ -21,7 +21,7 @@
KM_HIERARCHY = [
('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit
('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot
- ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners
+ ('Screen Editing', 'EMPTY', 'WINDOW', []), # re-sizing, action corners
]),
('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region)
diff --git a/release/scripts/modules/bpy_extras/mesh_utils.py b/release/scripts/modules/bpy_extras/mesh_utils.py
index 7bc6dae3cc6..8149675000f 100644
--- a/release/scripts/modules/bpy_extras/mesh_utils.py
+++ b/release/scripts/modules/bpy_extras/mesh_utils.py
@@ -50,7 +50,7 @@ def mesh_linked_faces(mesh):
face_groups = [[f] for f in mesh.faces]
face_mapping = list(range(len(mesh.faces))) # map old, new face location
- # Now clump faces iterativly
+ # Now clump faces iteratively
ok = True
while ok:
ok = False
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 3081e6f172e..c9c1dc05476 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -119,7 +119,7 @@ def object_data_add(context, obdata, operator=None):
obj_act = scene.objects.active
# XXX
- # caused because entering editmodedoes not add a empty undo slot!
+ # caused because entering edit-mode does not add a empty undo slot!
if context.user_preferences.edit.use_enter_edit_mode:
if not (obj_act and
obj_act.mode == 'EDIT' and
diff --git a/release/scripts/modules/bpy_extras/view3d_utils.py b/release/scripts/modules/bpy_extras/view3d_utils.py
index c18a74bbb09..32f7b654690 100644
--- a/release/scripts/modules/bpy_extras/view3d_utils.py
+++ b/release/scripts/modules/bpy_extras/view3d_utils.py
@@ -27,7 +27,7 @@ __all__ = (
def region_2d_to_vector_3d(region, rv3d, coord):
"""
- Return a direction vector from the viewport at the spesific 2d region
+ Return a direction vector from the viewport at the specific 2d region
coordinate.
:arg region: region of the 3D viewport, typically bpy.context.region.
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index 6b65f720a5c..cee0712e814 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -49,7 +49,7 @@ class Library(bpy_types.ID):
@property
def users_id(self):
- """ID datablocks which use this library"""
+ """ID data blocks which use this library"""
import bpy
# See: readblenentry.c, IDTYPE_FLAGS_ISLINKABLE, we could make this an attribute in rna.
@@ -220,9 +220,9 @@ class _GenericBone:
@property
def children_recursive_basename(self):
"""
- Returns a chain of children with the same base name as this bone
- Only direct chains are supported, forks caused by multiple children with matching basenames will
- terminate the function and not be returned.
+ Returns a chain of children with the same base name as this bone.
+ Only direct chains are supported, forks caused by multiple children
+ with matching base names will terminate the function and not be returned.
"""
basename = self.basename
chain = []
@@ -256,7 +256,7 @@ class _GenericBone:
bones = id_data.pose.bones
elif id_data_type == bpy_types.Armature:
bones = id_data.edit_bones
- if not bones: # not in editmode
+ if not bones: # not in edit mode
bones = id_data.bones
return bones
@@ -284,11 +284,11 @@ class EditBone(StructRNA, _GenericBone, metaclass=StructMetaPropGroup):
def transform(self, matrix, scale=True, roll=True):
"""
- Transform the the bones head, tail, roll and envalope (when the matrix has a scale component).
+ Transform the the bones head, tail, roll and envelope (when the matrix has a scale component).
:arg matrix: 3x3 or 4x4 transformation matrix.
:type matrix: :class:`mathutils.Matrix`
- :arg scale: Scale the bone envalope by the matrix.
+ :arg scale: Scale the bone envelope by the matrix.
:type scale: bool
:arg roll: Correct the roll to point in the same relative direction to the head and tail.
:type roll: bool
@@ -318,7 +318,7 @@ class Mesh(bpy_types.ID):
def from_pydata(self, vertices, edges, faces):
"""
- Make a mesh from a list of verts/edges/faces
+ Make a mesh from a list of vertices/edges/faces
Until we have a nicer way to make geometry, use this.
:arg vertices: float triplets each representing (X, Y, Z) eg: [(0.0, 1.0, 0.5), ...].
@@ -553,7 +553,7 @@ class _GenericUI:
operator_context_default = self.layout.operator_context
for func in draw_ls._draw_funcs:
- # so bad menu functions dont stop the entire menu from drawing.
+ # so bad menu functions don't stop the entire menu from drawing
try:
func(self, context)
except:
diff --git a/release/scripts/modules/console_python.py b/release/scripts/modules/console_python.py
index 94d0c8c8614..f11ccf84f0b 100644
--- a/release/scripts/modules/console_python.py
+++ b/release/scripts/modules/console_python.py
@@ -50,7 +50,7 @@ def replace_help(namespace):
def get_console(console_id):
'''
helper function for console operators
- currently each text datablock gets its own
+ currently each text data block gets its own
console - code.InteractiveConsole()
...which is stored in this function.
@@ -65,7 +65,7 @@ def get_console(console_id):
consoles = get_console.consoles = {}
get_console.consoles_namespace_hash = hash_next
else:
- # check if clearning the namespace is needed to avoid a memory leak.
+ # check if clearing the namespace is needed to avoid a memory leak.
# the window manager is normally loaded with new blend files
# so this is a reasonable way to deal with namespace clearing.
# bpy.data hashing is reset by undo so cant be used.
@@ -135,7 +135,7 @@ def execute(context):
sys.stdout = stdout
sys.stderr = stderr
- # dont allow the stdin to be used, can lock blender.
+ # don't allow the stdin to be used, can lock blender.
stdin_backup = sys.stdin
sys.stdin = None
@@ -143,14 +143,14 @@ def execute(context):
main_mod_back = sys.modules["__main__"]
sys.modules["__main__"] = console._bpy_main_mod
- # incase exception happens
- line = "" # incase of encodingf error
+ # in case exception happens
+ line = "" # in case of encoding error
is_multiline = False
try:
line = line_object.body
- # run the console, "\n" executes a multiline statement
+ # run the console, "\n" executes a multi line statement
line_exec = line if line.strip() else "\n"
is_multiline = console.push(line_exec)
@@ -222,8 +222,8 @@ def autocomplete(context):
if not console:
return {'CANCELLED'}
- # dont allow the stdin to be used, can lock blender.
- # note: unlikely stdin would be used for autocomp. but its possible.
+ # don't allow the stdin to be used, can lock blender.
+ # note: unlikely stdin would be used for autocomplete. but its possible.
stdin_backup = sys.stdin
sys.stdin = None
@@ -238,8 +238,8 @@ def autocomplete(context):
current_line = sc.history[-1]
line = current_line.body
- # This function isnt aware of the text editor or being an operator
- # just does the autocomp then copy its results back
+ # This function isn't aware of the text editor or being an operator
+ # just does the autocomplete then copy its results back
result = intellisense.expand(
line=line,
cursor=current_line.current_character,
@@ -250,7 +250,7 @@ def autocomplete(context):
current_line.body, current_line.current_character, scrollback = result
del result
- # update sel. setting body should really do this!
+ # update selection. setting body should really do this!
ofs = len(line_new) - len(line)
sc.select_start += ofs
sc.select_end += ofs
@@ -263,12 +263,12 @@ def autocomplete(context):
if _BPY_MAIN_OWN:
sys.modules["__main__"] = main_mod_back
- # Separate automplete output by command prompts
+ # Separate autocomplete output by command prompts
if scrollback != '':
bpy.ops.console.scrollback_append(text=sc.prompt + current_line.body, type='INPUT')
# Now we need to copy back the line from blender back into the
- # text editor. This will change when we dont use the text editor
+ # text editor. This will change when we don't use the text editor
# anymore
if scrollback:
add_scrollback(scrollback, 'INFO')
diff --git a/release/scripts/modules/console_shell.py b/release/scripts/modules/console_shell.py
index 7a6f45c426f..772d46c8bf3 100644
--- a/release/scripts/modules/console_shell.py
+++ b/release/scripts/modules/console_shell.py
@@ -64,7 +64,7 @@ def execute(context):
def autocomplete(context):
- # sc = context.space_data
+ #~ sc = context.space_data
# TODO
return {'CANCELLED'}
diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py
index d95c3920cf9..4116bfda0c7 100644
--- a/release/scripts/modules/rna_info.py
+++ b/release/scripts/modules/rna_info.py
@@ -292,7 +292,7 @@ class InfoPropertyRNA:
elif as_arg:
if not self.is_required:
type_info.append("optional")
- else: # readonly is only useful for selfs, not args
+ else: # readonly is only useful for self's, not args
if self.is_readonly:
type_info.append("readonly")
@@ -519,7 +519,7 @@ def BuildRNAInfo():
# Done ordering structs
- # precalc vars to avoid a lot of looping
+ # precalculate vars to avoid a lot of looping
for (rna_base, identifier, rna_struct) in structs:
# rna_struct_path = full_rna_struct_path(rna_struct)
@@ -634,7 +634,7 @@ if __name__ == "__main__":
struct = rna_info.BuildRNAInfo()[0]
data = []
for struct_id, v in sorted(struct.items()):
- struct_id_str = v.identifier # "".join(sid for sid in struct_id if struct_id)
+ struct_id_str = v.identifier #~ "".join(sid for sid in struct_id if struct_id)
for base in v.get_bases():
struct_id_str = base.identifier + "|" + struct_id_str
diff --git a/release/scripts/presets/interaction/blender.py b/release/scripts/presets/interaction/blender.py
index 3b6ce13d7e0..c5454e479a3 100644
--- a/release/scripts/presets/interaction/blender.py
+++ b/release/scripts/presets/interaction/blender.py
@@ -9,5 +9,5 @@ bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb = False
bpy.context.user_preferences.inputs.select_mouse = 'RIGHT'
bpy.context.user_preferences.inputs.view_zoom_method = 'DOLLY'
bpy.context.user_preferences.inputs.view_zoom_axis = 'VERTICAL'
-bpy.context.user_preferences.inputs.view_rotate_method = 'TRACKBALL'
+bpy.context.user_preferences.inputs.view_rotate_method = 'TURNTABLE'
bpy.context.user_preferences.inputs.invert_mouse_zoom = False
diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py
index 7d1f3b8f5f0..e1d33198142 100644
--- a/release/scripts/startup/bl_operators/anim.py
+++ b/release/scripts/startup/bl_operators/anim.py
@@ -87,7 +87,7 @@ class ANIM_OT_keying_set_export(Operator):
# --------------------------------------------------------
# generate and write set of lookups for id's used in paths
- # cache for syncing ID-blocks to bpy paths + shorthands
+ # cache for syncing ID-blocks to bpy paths + shorthand's
id_to_paths_cache = {}
for ksp in ks.paths:
@@ -228,7 +228,7 @@ class BakeAction(Operator):
class ClearUselessActions(Operator):
"""Mark actions with no F-Curves for deletion after save+reload of """ \
- """file preserving "action libraries"""
+ """file preserving \"action libraries\""""
bl_idname = "anim.clear_useless_actions"
bl_label = "Clear Useless Actions"
bl_options = {'REGISTER', 'UNDO'}
diff --git a/release/scripts/startup/bl_operators/console.py b/release/scripts/startup/bl_operators/console.py
index 109ca758ea8..8afcdf5f67e 100644
--- a/release/scripts/startup/bl_operators/console.py
+++ b/release/scripts/startup/bl_operators/console.py
@@ -62,7 +62,7 @@ class ConsoleAutocomplete(Operator):
class ConsoleBanner(Operator):
- '''Print a message whem the terminal initializes'''
+ '''Print a message when the terminal initializes'''
bl_idname = "console.banner"
bl_label = "Console Banner"
@@ -97,7 +97,7 @@ class ConsoleLanguage(Operator):
def execute(self, context):
sc = context.space_data
- # defailt to python
+ # default to python
sc.language = self.language
bpy.ops.console.banner()
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index d7c6cfc0565..738cc7b24e0 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -122,7 +122,7 @@ class SelectCamera(Operator):
class SelectHierarchy(Operator):
- '''Select object relative to the active objects position''' \
+ '''Select object relative to the active object's position''' \
'''in the hierarchy'''
bl_idname = "object.select_hierarchy"
bl_label = "Select Hierarchy"
@@ -174,7 +174,7 @@ class SelectHierarchy(Operator):
select_new.sort(key=lambda obj_iter: obj_iter.name)
act_new = select_new[0]
- # dont edit any object settings above this
+ # don't edit any object settings above this
if select_new:
if not self.extend:
bpy.ops.object.select_all(action='DESELECT')
@@ -331,7 +331,7 @@ class ShapeTransfer(Operator):
orig_shape_coords = me_cos(ob_act.active_shape_key.data)
orig_normals = me_nos(me.vertices)
- # the actual mverts location isnt as relyable as the base shape :S
+ # the actual mverts location isn't as reliable as the base shape :S
# orig_coords = me_cos(me.vertices)
orig_coords = me_cos(me.shape_keys.key_blocks[0].data)
@@ -721,8 +721,8 @@ class TransformsToDeltasAnim(Operator):
fcu.data_path = "delta_rotation_quaternion"
obj.rotation_quaternion.identity()
# XXX: currently not implemented
- # elif fcu.data_path == "rotation_axis_angle":
- # fcu.data_path = "delta_rotation_axis_angle"
+ #~ elif fcu.data_path == "rotation_axis_angle":
+ #~ fcu.data_path = "delta_rotation_axis_angle"
elif fcu.data_path == "scale":
fcu.data_path = "delta_scale"
obj.scale = 1.0, 1.0, 1.0
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index 2fd0c4a9e12..2e42105fbf0 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -142,7 +142,7 @@ class AddPresetBase():
class ExecutePreset(Operator):
- ''' Executes a preset '''
+ '''Execute a preset'''
bl_idname = "script.execute_preset"
bl_label = "Execute a Python Preset"
diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
index 3479a3f9e53..5ee7cf86142 100644
--- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
+++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
@@ -66,7 +66,7 @@ def guess_player_path(preset):
class PlayRenderedAnim(Operator):
- '''Plays back rendered frames/movies using an external player'''
+ '''Play back rendered frames/movies using an external player'''
bl_idname = "render.play_rendered_anim"
bl_label = "Play Rendered Animation"
bl_options = {'REGISTER'}
diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
index 05656f5397d..324414b8bcb 100644
--- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py
+++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
@@ -104,13 +104,13 @@ def extend(obj, operator, EXTEND_MODE):
uvs_vhash_target[edgepair_inner_target[1]][:] = uvs_vhash_source[edgepair_inner_source[iB]]
# Set the 2 UV's on the target face that are not touching
- # for this we need to do basic expaning on the source faces UV's
+ # for this we need to do basic expanding on the source faces UV's
if EXTEND_MODE == 'LENGTH':
try: # divide by zero is possible
'''
measure the length of each face from the middle of each edge to the opposite
- allong the axis we are copying, use this
+ along the axis we are copying, use this
'''
i1a = edgepair_outer_target[iB]
i2a = edgepair_inner_target[iA]
@@ -158,11 +158,11 @@ def extend(obj, operator, EXTEND_MODE):
# Modes
# 0 unsearched
# 1:mapped, use search from this face. - removed!!
- # 2:all siblings have been searched. dont search again.
+ # 2:all siblings have been searched. don't search again.
face_modes = [0] * len(face_sel)
face_modes[face_act_local_index] = 1 # extend UV's from this face.
- # Edge connectivty
+ # Edge connectivity
edge_faces = {}
for i, f in enumerate(face_sel):
for edkey in f.edge_keys:
@@ -181,7 +181,7 @@ def extend(obj, operator, EXTEND_MODE):
looplen[0] += (me_verts[ed[0]].co - me_verts[ed[1]].co).length
looplen[0] = looplen[0] / len(loop)
- # remove seams, so we dont map accross seams.
+ # remove seams, so we don't map across seams.
for ed in me.edges:
if ed.use_seam:
# remove the edge pair if we can
@@ -213,7 +213,7 @@ def extend(obj, operator, EXTEND_MODE):
face_modes[i] = 1 # we can map from this one now.
ok = True # keep searching
- face_modes[i] = 2 # dont search again
+ face_modes[i] = 2 # don't search again
if is_editmode:
bpy.ops.object.mode_set(mode='EDIT')
diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
index d9cdb1794c2..52548817620 100644
--- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py
+++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
@@ -36,7 +36,7 @@ class prettyface(object):
def __init__(self, data):
self.has_parent = False
- self.rot = False # only used for triables
+ self.rot = False # only used for triangles
self.xoff = 0
self.yoff = 0
@@ -157,7 +157,7 @@ class prettyface(object):
angles_co.sort()
I = [i for a, i in angles_co]
- # fuv = f.uv
+ #~ fuv = f.uv
fuv = f.id_data.uv_textures.active.data[f.index].uv # XXX25
if self.rot:
@@ -200,8 +200,8 @@ def lightmap_uvpack(meshes,
'''
BOX_DIV if the maximum division of the UV map that
a box may be consolidated into.
- Basicly, a lower value will be slower but waist less space
- and a higher value will have more clumpy boxes but more waisted space
+ Basically, a lower value will be slower but waist less space
+ and a higher value will have more clumpy boxes but more wasted space
'''
import time
from math import sqrt
@@ -321,7 +321,7 @@ def lightmap_uvpack(meshes,
lengths.append(curr_len)
curr_len = curr_len / 2.0
- # Dont allow boxes smaller then the margin
+ # Don't allow boxes smaller then the margin
# since we contract on the margin, boxes that are smaller will create errors
# print(curr_len, side_len/MARGIN_DIV)
if curr_len / 4.0 < side_len / PREF_MARGIN_DIV:
@@ -371,9 +371,9 @@ def lightmap_uvpack(meshes,
print("...done")
# Since the boxes are sized in powers of 2, we can neatly group them into bigger squares
- # this is done hierarchily, so that we may avoid running the pack function
+ # this is done hierarchically, so that we may avoid running the pack function
# on many thousands of boxes, (under 1k is best) because it would get slow.
- # Using an off and even dict us usefull because they are packed differently
+ # Using an off and even dict us useful because they are packed differently
# where w/h are the same, their packed in groups of 4
# where they are different they are packed in pairs
#
@@ -393,14 +393,14 @@ def lightmap_uvpack(meshes,
# Count the number of boxes consolidated, only used for stats.
c = 0
- # This is tricky. the total area of all packed boxes, then squt that to get an estimated size
+ # This is tricky. the total area of all packed boxes, then sqrt() that to get an estimated size
# this is used then converted into out INT space so we can compare it with
# the ints assigned to the boxes size
- # and divided by BOX_DIV, basicly if BOX_DIV is 8
- # ...then the maximum box consolidataion (recursive grouping) will have a max width & height
+ # and divided by BOX_DIV, basically if BOX_DIV is 8
+ # ...then the maximum box consolidation (recursive grouping) will have a max width & height
# ...1/8th of the UV size.
# ...limiting this is needed or you end up with bug unused texture spaces
- # ...however if its too high, boxpacking is way too slow for high poly meshes.
+ # ...however if its too high, box-packing is way too slow for high poly meshes.
float_to_int_factor = lengths_to_ints[0][0]
if float_to_int_factor > 0:
max_int_dimension = int(((side_len / float_to_int_factor)) / PREF_BOX_DIV)
@@ -409,7 +409,7 @@ def lightmap_uvpack(meshes,
max_int_dimension = 0.0 # wont be used
ok = False
- # RECURSIVE prettyface grouping
+ # RECURSIVE pretty face grouping
while ok:
ok = False
@@ -456,7 +456,7 @@ def lightmap_uvpack(meshes,
pretty_faces = [pf for pf in pretty_faces if not pf.has_parent]
- # spin every second prettyface
+ # spin every second pretty-face
# if there all vertical you get less efficiently used texture space
i = len(pretty_faces)
d = 0
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 5985a37a0c9..1248fc24ed7 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -34,7 +34,7 @@ USER_FILL_HOLES_QUALITY = None
def pointInTri2D(v, v1, v2, v3):
key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y
- # Commented because its slower to do the bounds check, we should realy cache the bounds info for each face.
+ # Commented because its slower to do the bounds check, we should really cache the bounds info for each face.
'''
# BOUNDS CHECK
xmin= 1000000
@@ -119,7 +119,7 @@ def boundsEdgeLoop(edges):
"""
# Turns the islands into a list of unpordered edges (Non internal)
-# Onlt for UV's
+# Only for UV's
# only returns outline edges for intersection tests. and unique points.
def island2Edge(island):
@@ -141,7 +141,7 @@ def island2Edge(island):
else:
i1= vIdx; i2= vIdx-1
- try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned.
+ try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets any edge with more then 1 user to 0 are not returned.
except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length,
# If 2 are the same then they will be together, but full [a,b] order is not correct.
@@ -162,10 +162,10 @@ def island2Edge(island):
return length_sorted_edges, [v.to_3d() for v in unique_points.values()]
# ========================= NOT WORKING????
-# Find if a points inside an edge loop, un-orderd.
+# Find if a points inside an edge loop, un-ordered.
# pt is and x/y
# edges are a non ordered loop of edges.
-# #offsets are the edge x and y offset.
+# offsets are the edge x and y offset.
"""
def pointInEdges(pt, edges):
#
@@ -223,7 +223,7 @@ def islandIntersectUvIsland(source, target, SourceOffset):
if pointInIsland(pv+SourceOffset, target[0]):
return 2 # SOURCE INSIDE TARGET
- # 2 test for a part of the target being totaly inside the source.
+ # 2 test for a part of the target being totally inside the source.
for pv in target[7]:
if pointInIsland(pv-SourceOffset, source[0]):
return 3 # PART OF TARGET INSIDE SOURCE.
@@ -242,7 +242,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
for i, v in enumerate(vecs):
- # Do this allong the way
+ # Do this along the way
if mat != -1:
v = vecs[i] = mat * v
x= v.x
@@ -252,7 +252,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
if x>maxx: maxx= x
if y>maxy: maxy= y
- # Spesific to this algo, bail out if we get bigger then the current area
+ # Specific to this algo, bail out if we get bigger then the current area
if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar:
return (BIG_NUM, None), None
w = maxx-minx
@@ -262,7 +262,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
def optiRotateUvIsland(faces):
global currentArea
- # Bestfit Rotation
+ # Best-fit Rotation
def best2dRotation(uvVecs, MAT1, MAT2):
global currentArea
@@ -318,7 +318,7 @@ def optiRotateUvIsland(faces):
currentArea = newAreaPos
# 45d done
- # Testcase different rotations and find the onfe that best fits in a square
+ # Testcase different rotations and find the one that best fits in a square
for ROTMAT in RotMatStepRotation:
uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1])
@@ -409,7 +409,7 @@ def mergeUvIslands(islandList):
BREAK= False
while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK:
sourceIsland = decoratedIslandListAreaSort[areaIslandIdx]
- # Alredy packed?
+ # Already packed?
if not sourceIsland[0]:
areaIslandIdx+=1
else:
@@ -420,7 +420,7 @@ def mergeUvIslands(islandList):
BREAK= True
break
- # Now we have 2 islands, is the efficience of the islands lowers theres an
+ # Now we have 2 islands, if the efficiency of the islands lowers theres an
# increasing likely hood that we can fit merge into the bigger UV island.
# this ensures a tight fit.
@@ -435,12 +435,12 @@ def mergeUvIslands(islandList):
pass
else:
- # ([island, totFaceArea, efficiency, islandArea, w,h])
- # Waisted space on target is greater then UV bounding island area.
+ #~ ([island, totFaceArea, efficiency, islandArea, w,h])
+ # Wasted space on target is greater then UV bounding island area.
- # if targetIsland[3] > (sourceIsland[2]) and\ #
- # print USER_FREE_SPACE_TO_TEST_QUALITY
+ #~ if targetIsland[3] > (sourceIsland[2]) and\ #
+ #~ print USER_FREE_SPACE_TO_TEST_QUALITY
if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\
targetIsland[4] > sourceIsland[4] and\
targetIsland[5] > sourceIsland[5]:
@@ -456,7 +456,7 @@ def mergeUvIslands(islandList):
boxLeft = 0
- # Distllllance we can move between whilst staying inside the targets bounds.
+ # Distance we can move between whilst staying inside the targets bounds.
testWidth = targetIsland[4] - sourceIsland[4]
testHeight = targetIsland[5] - sourceIsland[5]
@@ -474,25 +474,25 @@ def mergeUvIslands(islandList):
boxLeft = 0 # Start 1 back so we can jump into the loop.
boxBottom= 0 #-yIncrement
- ##testcount= 0
+ #~ testcount= 0
while boxBottom <= testHeight:
# Should we use this? - not needed for now.
- #if Window.GetKeyQualifiers() & ctrl:
- # BREAK= True
- # break
+ #~ if Window.GetKeyQualifiers() & ctrl:
+ #~ BREAK= True
+ #~ break
##testcount+=1
#print 'Testing intersect'
Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector((boxLeft, boxBottom)))
#print 'Done', Intersect
- if Intersect == 1: # Line intersect, dont bother with this any more
+ if Intersect == 1: # Line intersect, don't bother with this any more
pass
if Intersect == 2: # Source inside target
'''
We have an intersection, if we are inside the target
- then move us 1 whole width accross,
+ then move us 1 whole width across,
Its possible this is a bad idea since 2 skinny Angular faces
could join without 1 whole move, but its a lot more optimal to speed this up
since we have already tested for it.
@@ -500,7 +500,7 @@ def mergeUvIslands(islandList):
It gives about 10% speedup with minimal errors.
'''
#print 'ass'
- # Move the test allong its width + SMALL_NUM
+ # Move the test along its width + SMALL_NUM
#boxLeft += sourceIsland[4] + SMALL_NUM
boxLeft += sourceIsland[4]
elif Intersect == 0: # No intersection?? Place it.
@@ -551,7 +551,7 @@ def mergeUvIslands(islandList):
break
- # INCREMENR NEXT LOCATION
+ # INCREMENT NEXT LOCATION
if boxLeft > testWidth:
boxBottom += yIncrement
boxLeft = 0.0
@@ -572,8 +572,8 @@ def mergeUvIslands(islandList):
# Takes groups of faces. assumes face groups are UV groups.
def getUvIslands(faceGroups, me):
- # Get seams so we dont cross over seams
- edge_seams = {} # shoudl be a set
+ # Get seams so we don't cross over seams
+ edge_seams = {} # should be a set
for ed in me.edges:
if ed.use_seam:
edge_seams[ed.key] = None # dummy var- use sets!
@@ -609,7 +609,7 @@ def getUvIslands(faceGroups, me):
# Modes
# 0 - face not yet touched.
# 1 - added to island list, and need to search
- # 2 - touched and searched - dont touch again.
+ # 2 - touched and searched - don't touch again.
face_modes = [0] * len(faces) # initialize zero - untested.
face_modes[0] = 1 # start the search with face 1
@@ -633,7 +633,7 @@ def getUvIslands(faceGroups, me):
face_modes[ii] = ok = 1 # mark as searched
newIsland.append(faces[ii])
- # mark as searched, dont look again.
+ # mark as searched, don't look again.
face_modes[i] = 2
islandList.append(newIsland)
@@ -664,8 +664,8 @@ def packIslands(islandList):
# Now we have UV islands, we need to pack them.
- # Make a synchronised list with the islands
- # so we can box pak the islands.
+ # Make a synchronized list with the islands
+ # so we can box pack the islands.
packBoxes = []
# Keep a list of X/Y offset so we can save time by writing the
@@ -716,14 +716,14 @@ def packIslands(islandList):
# print 'Box Packing Time:', time.time() - time1
#if len(pa ckedLs) != len(islandList):
- # raise "Error packed boxes differes from original length"
+ # raise "Error packed boxes differs from original length"
#print '\tWriting Packed Data to faces'
#XXX Window.DrawProgressBar(0.8, 'Writing Packed Data to faces')
# Sort by ID, so there in sync again
islandIdx = len(islandList)
- # Having these here avoids devide by 0
+ # Having these here avoids divide by 0
if islandIdx:
if USER_STRETCH_ASPECT:
@@ -845,9 +845,9 @@ def main(context,
time.sleep(10)
'''
-#XXX if not Draw.PupBlock(ob % len(obList), pup_block):
-#XXX return
-#XXX del ob
+#~ XXX if not Draw.PupBlock(ob % len(obList), pup_block):
+#~ XXX return
+#~ XXX del ob
# Convert from being button types
@@ -859,10 +859,10 @@ def main(context,
is_editmode = (context.active_object.mode == 'EDIT')
if is_editmode:
bpy.ops.object.mode_set(mode='OBJECT')
- # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode.
+ # Assume face select mode! an annoying hack to toggle face select mode because Mesh doesn't like faceSelectMode.
if USER_SHARE_SPACE:
- # Sort by data name so we get consistant results
+ # Sort by data name so we get consistent results
obList.sort(key = lambda ob: ob.data.name)
collected_islandList= []
@@ -870,7 +870,7 @@ def main(context,
time1 = time.time()
- # Tag as False se we dont operate on the same mesh twice.
+ # Tag as False so we don't operate on the same mesh twice.
#XXX bpy.data.meshes.tag = False
for me in bpy.data.meshes:
me.tag = False
@@ -885,7 +885,7 @@ def main(context,
# Tag as used
me.tag = True
- if not me.uv_textures: # Mesh has no UV Coords, dont bother.
+ if not me.uv_textures: # Mesh has no UV Coords, don't bother.
me.uv_textures.new()
uv_layer = me.uv_textures.active.data
@@ -902,7 +902,7 @@ def main(context,
#XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces)))
# =======
- # Generate a projection list from face normals, this is ment to be smart :)
+ # Generate a projection list from face normals, this is meant to be smart :)
# make a list of face props that are in sync with meshFaces
# Make a Face List that is sorted by area.
@@ -928,7 +928,7 @@ def main(context,
# Initialize projectVecs
if USER_VIEW_INIT:
# Generate Projection
- projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this allong the way
+ projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this along the way
else:
projectVecs = []
@@ -936,7 +936,7 @@ def main(context,
newProjectMeshFaces = [] # Popping stuffs it up.
- # Predent that the most unique angke is ages away to start the loop off
+ # Pretend that the most unique angle is ages away to start the loop off
mostUniqueAngle = -1.0
# This is popped
@@ -950,7 +950,7 @@ def main(context,
# add all the faces that are close.
for fIdx in range(len(tempMeshFaces)-1, -1, -1):
- # Use half the angle limit so we dont overweight faces towards this
+ # Use half the angle limit so we don't overweight faces towards this
# normal and hog all the faces.
if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED:
newProjectMeshFaces.append(tempMeshFaces.pop(fIdx))
diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
index 4c78adb7161..5fb5c7f39cf 100644
--- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py
+++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
-# ***** END GPL LICENCE BLOCK *****
+# ***** END GPL LICENSE BLOCK *****
# --------------------------------------------------------------------------
# <pep8 compliant>
@@ -69,7 +69,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
vec /= tot_con
- # angle is the acos of the dot product between vert and connected verts normals
+ # angle is the acos() of the dot product between vert and connected verts normals
ang = acos(no.dot(vec))
# enforce min/max
@@ -159,7 +159,7 @@ class VertexPaintDirt(Operator):
)
blur_iterations = IntProperty(
name="Blur Iterations",
- description="Number times to blur the colors. (higher blurs more)",
+ description="Number times to blur the colors (higher blurs more)",
min=0, max=40,
default=1,
)
diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py
index 05b53219119..315b7e5c4fc 100644
--- a/release/scripts/startup/bl_operators/view3d.py
+++ b/release/scripts/startup/bl_operators/view3d.py
@@ -33,7 +33,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
- # totvert = mesh.total_vert_sel
+ #~ totvert = mesh.total_vert_sel
if select_mode[2] and totface == 1:
bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
@@ -65,7 +65,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
- # totvert = mesh.total_vert_sel
+ #~ totvert = mesh.total_vert_sel
if totface >= 1:
bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 85e79914ce3..a539e2693c1 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -70,7 +70,7 @@ def context_path_validate(context, data_path):
# One of the items in the rna path is None, just ignore this
value = Ellipsis
else:
- # We have a real error in the rna path, dont ignore that
+ # We have a real error in the rna path, don't ignore that
raise
return value
@@ -103,7 +103,7 @@ def operator_value_is_undo(value):
def operator_path_is_undo(context, data_path):
# note that if we have data paths that use strings this could fail
- # luckily we dont do this!
+ # luckily we don't do this!
#
# When we cant find the data owner assume no undo is needed.
data_path_head, data_path_sep, data_path_tail = data_path.rpartition(".")
@@ -425,7 +425,7 @@ class WM_OT_context_cycle_enum(Operator):
rna_struct_str, rna_prop_str = data_path.rsplit('.', 1)
i = rna_prop_str.find('[')
- # just incse we get "context.foo.bar[0]"
+ # just in case we get "context.foo.bar[0]"
if i != -1:
rna_prop_str = rna_prop_str[0:i]
@@ -820,8 +820,7 @@ class WM_OT_doc_view(Operator):
class_name = rna_parent.identifier
rna_parent = rna_parent.base
- # It so happens that epydoc nests these, not sphinx
- # class_name_full = self._nested_class_string(class_name)
+ #~ class_name_full = self._nested_class_string(class_name)
url = ("%s/bpy.types.%s.html#bpy.types.%s.%s" %
(self._prefix, class_name, class_name, class_prop))
@@ -1014,7 +1013,7 @@ class WM_OT_properties_edit(Operator):
item = eval("context.%s" % data_path)
# setup defaults
- prop_ui = rna_idprop_ui_prop_get(item, self.property, False) # dont create
+ prop_ui = rna_idprop_ui_prop_get(item, self.property, False) # don't create
if prop_ui:
self.min = prop_ui.get("min", -1000000000)
self.max = prop_ui.get("max", 1000000000)
@@ -1162,7 +1161,7 @@ class WM_OT_copy_prev_settings(Operator):
elif not os.path.isdir(path_src):
self.report({'ERROR'}, "Source path %r exists" % path_src)
else:
- shutil.copytree(path_src, path_dst)
+ shutil.copytree(path_src, path_dst, symlinks=True)
# in 2.57 and earlier windows installers, system scripts were copied
# into the configuration directory, don't want to copy those
@@ -1171,7 +1170,7 @@ class WM_OT_copy_prev_settings(Operator):
shutil.rmtree(os.path.join(path_dst, 'scripts'))
shutil.rmtree(os.path.join(path_dst, 'plugins'))
- # dont loose users work if they open the splash later.
+ # don't loose users work if they open the splash later.
if bpy.data.is_saved is bpy.data.is_dirty is False:
bpy.ops.wm.read_homefile()
else:
@@ -1372,9 +1371,9 @@ class WM_OT_keyitem_add(Operator):
km = context.keymap
if km.is_modal:
- km.keymap_items.new_modal("", 'A', 'PRESS') # kmi
+ km.keymap_items.new_modal("", 'A', 'PRESS') #~ kmi
else:
- km.keymap_items.new("none", 'A', 'PRESS') # kmi
+ km.keymap_items.new("none", 'A', 'PRESS') #~ kmi
# clear filter and expand keymap so we can see the newly added item
if context.space_data.filter_text != "":
@@ -1556,7 +1555,7 @@ class WM_OT_addon_install(Operator):
pyfile = self.filepath
if self.target == 'DEFAULT':
- # dont use bpy.utils.script_paths("addons") because we may not be able to write to it.
+ # don't use bpy.utils.script_paths("addons") because we may not be able to write to it.
path_addons = bpy.utils.user_resource('SCRIPTS', "addons", create=True)
else:
path_addons = bpy.context.user_preferences.filepaths.script_directory
@@ -1637,7 +1636,7 @@ class WM_OT_addon_install(Operator):
addons_new.discard("modules")
# disable any addons we may have enabled previously and removed.
- # this is unlikely but do just incase. bug [#23978]
+ # this is unlikely but do just in case. bug [#23978]
for new_addon in addons_new:
addon_utils.disable(new_addon)
@@ -1652,11 +1651,11 @@ class WM_OT_addon_install(Operator):
context.window_manager.addon_search = info["name"]
break
- # incase a new module path was created to install this addon.
+ # in case a new module path was created to install this addon.
bpy.utils.refresh_script_paths()
# TODO, should not be a warning.
- # self.report({'WARNING'}, "File installed to '%s'\n" % path_dest)
+ #~ self.report({'WARNING'}, "File installed to '%s'\n" % path_dest)
return {'FINISHED'}
def invoke(self, context, event):
@@ -1699,7 +1698,7 @@ class WM_OT_addon_remove(Operator):
self.report('WARNING', "Addon path %r could not be found" % path)
return {'CANCELLED'}
- # incase its enabled
+ # in case its enabled
addon_utils.disable(self.module)
import shutil
diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py
index 3b33a7ccc61..93feb8adc7a 100644
--- a/release/scripts/startup/bl_ui/properties_animviz.py
+++ b/release/scripts/startup/bl_ui/properties_animviz.py
@@ -21,8 +21,8 @@
# Generic Panels (Independent of DataType)
# NOTE:
-# The specialised panel types are derived in their respective UI modules
-# dont register these classes since they are only helpers.
+# The specialized panel types are derived in their respective UI modules
+# don't register these classes since they are only helpers.
class MotionPathButtonsPanel():
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index e4744fdb04f..5dadcba2621 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -214,7 +214,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
layout.prop(pose_marker_active, "name")
-# TODO: this panel will soon be depreceated too
+# TODO: this panel will soon be deprecated deprecated too
class DATA_PT_ghost(ArmatureButtonsPanel, Panel):
bl_label = "Ghost"
@@ -301,7 +301,7 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel):
@classmethod
def poll(cls, context):
- # XXX: include posemode check?
+ # XXX: include pose-mode check?
return (context.object) and (context.armature)
def draw(self, context):
@@ -324,7 +324,7 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from
@classmethod
def poll(cls, context):
- # XXX: include posemode check?
+ # XXX: include pose-mode check?
return (context.object) and (context.armature)
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py
index b3eaf88d5bf..807e5e63bc5 100644
--- a/release/scripts/startup/bl_ui/properties_data_bone.py
+++ b/release/scripts/startup/bl_ui/properties_data_bone.py
@@ -189,7 +189,7 @@ class BONE_PT_display(BoneButtonsPanel, Panel):
return context.bone
def draw(self, context):
- # note. this works ok in editmode but isnt
+ # note. this works ok in edit-mode but isn't
# all that useful so disabling for now.
layout = self.layout
diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py
index 2e0b36a7a75..02e13966c48 100644
--- a/release/scripts/startup/bl_ui/properties_data_curve.py
+++ b/release/scripts/startup/bl_ui/properties_data_curve.py
@@ -259,10 +259,11 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
if not is_surf:
split = layout.split()
col = split.column()
- col.active = (curve.dimensions == '3D')
col.label(text="Interpolation:")
- col.prop(act_spline, "tilt_interpolation", text="Tilt")
+ colsub = col.column()
+ colsub.active = (curve.dimensions == '3D')
+ colsub.prop(act_spline, "tilt_interpolation", text="Tilt")
col.prop(act_spline, "radius_interpolation", text="Radius")
layout.prop(act_spline, "use_smooth")
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 5b00402520e..62cb735fda9 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -87,7 +87,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
@classmethod
def poll(cls, context):
- # An exception, dont call the parent poll func because
+ # An exception, don't call the parent poll func because
# this manages materials for all engine types
engine = context.scene.render.engine
@@ -537,7 +537,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- mat = context.material # dont use node material
+ mat = context.material # don't use node material
halo = mat.halo
def number_but(layout, toggle, number, name, color):
@@ -595,7 +595,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- mat = context.material # dont use node material
+ mat = context.material # don't use node material
halo = mat.halo
layout.active = halo.use_flare_mode
@@ -622,7 +622,7 @@ class MATERIAL_PT_game_settings(MaterialButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- game = context.material.game_settings # dont use node material
+ game = context.material.game_settings # don't use node material
row = layout.row()
row.prop(game, "use_backface_culling")
@@ -653,7 +653,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
layout = self.layout
layout.active = context.material.game_settings.physics
- phys = context.material.physics # dont use node material
+ phys = context.material.physics # don't use node material
split = layout.split()
row = split.row()
@@ -686,7 +686,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- mat = context.material # dont use node material
+ mat = context.material # don't use node material
tan = mat.strand
split = layout.split()
@@ -862,7 +862,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- vol = context.material.volume # dont use node material
+ vol = context.material.volume # don't use node material
row = layout.row()
row.prop(vol, "density")
@@ -876,7 +876,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- vol = context.material.volume # dont use node material
+ vol = context.material.volume # don't use node material
split = layout.split()
@@ -901,7 +901,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- vol = context.material.volume # dont use node material
+ vol = context.material.volume # don't use node material
split = layout.split()
@@ -942,7 +942,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- mat = context.material # dont use node material
+ mat = context.material # don't use node material
layout.prop(mat, "transparency_method", expand=True)
@@ -954,7 +954,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- vol = context.material.volume # dont use node material
+ vol = context.material.volume # don't use node material
split = layout.split()
diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py
index 05fac2026a0..dc19f58ca35 100644
--- a/release/scripts/startup/bl_ui/properties_object_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_object_constraint.py
@@ -658,7 +658,7 @@ class ConstraintButtonsPanel():
row.label(text="Source to Destination Mapping:")
# note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't
- # open it. Thus we are using the hardcoded value instead.
+ # open it. Thus we are using the hard-coded value instead.
row = col.row()
row.prop(con, "map_to_x_from", expand=False, text="")
row.label(text=" %s X" % chr(187))
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 658c45e97a2..180a5a7d85b 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -402,9 +402,12 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
layout.enabled = particle_panel_enabled(context, psys)
- row = layout.row()
- row.label(text="Initial Rotation:")
- row.prop(part, "use_dynamic_rotation")
+ layout.prop(part, "use_dynamic_rotation")
+
+ if part.use_dynamic_rotation:
+ layout.label(text="Initial Rotation Axis:")
+ else:
+ layout.label(text="Rotation Axis:")
split = layout.split()
@@ -416,12 +419,17 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
col.prop(part, "phase_factor", slider=True)
col.prop(part, "phase_factor_random", text="Random", slider=True)
- col = layout.column()
- col.label(text="Angular Velocity:")
- col.row().prop(part, "angular_velocity_mode", expand=True)
-
- if part.angular_velocity_mode != 'NONE':
- col.prop(part, "angular_velocity_factor", text="")
+ if part.type != 'HAIR':
+ col = layout.column()
+ if part.use_dynamic_rotation:
+ col.label(text="Initial Angular Velocity:")
+ else:
+ col.label(text="Angular Velocity:")
+ sub = col.row(align=True)
+ sub.prop(part, "angular_velocity_mode", text="")
+ subsub = sub.column()
+ subsub.active = part.angular_velocity_mode != 'NONE'
+ subsub.prop(part, "angular_velocity_factor", text="")
class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
@@ -824,7 +832,9 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
elif part.render_type == 'OBJECT':
col.prop(part, "dupli_object")
- col.prop(part, "use_global_dupli")
+ sub = col.row()
+ sub.prop(part, "use_global_dupli")
+ sub.prop(part, "use_rotation_dupli")
elif part.render_type == 'GROUP':
col.prop(part, "dupli_group")
split = layout.split()
@@ -833,13 +843,14 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
col.prop(part, "use_whole_group")
sub = col.column()
sub.active = (part.use_whole_group is False)
+ sub.prop(part, "use_group_pick_random")
sub.prop(part, "use_group_count")
col = split.column()
sub = col.column()
sub.active = (part.use_whole_group is False)
sub.prop(part, "use_global_dupli")
- sub.prop(part, "use_group_pick_random")
+ sub.prop(part, "use_rotation_dupli")
if part.use_group_count and not part.use_whole_group:
row = layout.row()
diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py
index 204e25d9f01..64dad98d99a 100644
--- a/release/scripts/startup/bl_ui/properties_physics_common.py
+++ b/release/scripts/startup/bl_ui/properties_physics_common.py
@@ -76,7 +76,7 @@ class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
physics_add(self, col, context.smoke, "Smoke", 'SMOKE', 'MOD_SMOKE', True)
-#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc
+# cache-type can be 'PSYS' 'HAIR' 'SMOKE' etc
def point_cache_ui(self, context, cache, enabled, cachetype):
layout = self.layout
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index 34f5a948ee7..73947c21a80 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -927,9 +927,9 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
factor_but(col, "use_map_warp", "warp_factor", "Warp")
factor_but(col, "use_map_displacement", "displacement_factor", "Displace")
- #sub = col.column()
- #sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
- #sub.prop(tex, "default_value", text="Amount", slider=True)
+ #~ sub = col.column()
+ #~ sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
+ #~ sub.prop(tex, "default_value", text="Amount", slider=True)
elif idblock.type == 'HALO':
layout.label(text="Halo:")
@@ -1014,7 +1014,7 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
col = split.column()
col.prop(tex, "blend_type", text="Blend")
col.prop(tex, "use_rgb_to_intensity")
- # color is used on grayscale textures even when use_rgb_to_intensity is disabled.
+ # color is used on gray-scale textures even when use_rgb_to_intensity is disabled.
col.prop(tex, "color", text="")
col = split.column()
@@ -1027,14 +1027,14 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
if isinstance(idblock, bpy.types.Material):
layout.label(text="Bump Mapping:")
- # only show bump settings if activated but not for normalmap images
+ # only show bump settings if activated but not for normal-map images
row = layout.row()
sub = row.row()
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and (tex.texture.use_normal_map or tex.texture.use_derivative_map))
sub.prop(tex, "bump_method", text="Method")
- # the space setting is supported for: derivmaps + bumpmaps (DEFAULT,BEST_QUALITY), not for normalmaps
+ # the space setting is supported for: derivative-maps + bump-maps (DEFAULT,BEST_QUALITY), not for normal-maps
sub = row.row()
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and ((tex.bump_method in {'BUMP_DEFAULT', 'BUMP_BEST_QUALITY'}) or (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
sub.prop(tex, "bump_objectspace", text="Space")
diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py
index 869a91124d3..1ae8095fab3 100644
--- a/release/scripts/startup/bl_ui/space_logic.py
+++ b/release/scripts/startup/bl_ui/space_logic.py
@@ -45,7 +45,7 @@ class LOGIC_PT_properties(Panel):
row = box.row()
row.prop(prop, "name", text="")
row.prop(prop, "type", text="")
- row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly
+ row.prop(prop, "value", text="", toggle=True) # we don't care about the type. rna will display correctly
row.prop(prop, "show_debug", text="", toggle=True, icon='INFO')
row.operator("object.game_property_remove", text="", icon='X', emboss=False).index = i
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index b03e7b8c59c..2e957effccd 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -60,7 +60,6 @@ class SEQUENCER_HT_header(Header):
layout.separator()
layout.operator("sequencer.refresh_all")
- layout.template_running_jobs()
elif st.view_type == 'SEQUENCER_PREVIEW':
layout.separator()
layout.operator("sequencer.refresh_all")
@@ -76,6 +75,8 @@ class SEQUENCER_HT_header(Header):
row.prop(ed, "overlay_frame", text="")
row.prop(ed, "overlay_lock", text="", icon='LOCKED')
+ layout.template_running_jobs()
+
class SEQUENCER_MT_view_toggle(Menu):
bl_label = "View Type"
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 1ec6cc39164..96a08e57157 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -426,8 +426,8 @@ class USERPREF_PT_system(Panel):
col.label(text="Anisotropic Filtering")
col.prop(system, "anisotropic_filter", text="")
col.prop(system, "use_vertex_buffer_objects")
- #Anti-aliasing is disabled as it breaks broder/lasso select
- #col.prop(system, "use_antialiasing")
+ # Anti-aliasing is disabled as it breaks border/lasso select
+ #~ col.prop(system, "use_antialiasing")
col.label(text="Window Draw Method:")
col.prop(system, "window_draw_method", text="")
col.label(text="Text Draw Options:")
diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py
index c2e3a145f36..2c537efa61b 100644
--- a/release/scripts/startup/bl_ui/space_userpref_keymap.py
+++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py
@@ -262,7 +262,7 @@ class InputKeyMapPanel:
row = subcol.row(align=True)
- #row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:")
+ #~ row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:")
text = bpy.path.display_name(context.window_manager.keyconfigs.active.name)
if not text:
text = "Blender (default)"
@@ -270,8 +270,8 @@ class InputKeyMapPanel:
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMIN")
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMOUT").remove_active = True
-# layout.context_pointer_set("keyconfig", wm.keyconfigs.active)
-# row.operator("wm.keyconfig_remove", text="", icon='X')
+ #~ layout.context_pointer_set("keyconfig", wm.keyconfigs.active)
+ #~ row.operator("wm.keyconfig_remove", text="", icon='X')
row.prop(context.space_data, "filter_text", icon="VIEWZOOM")
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index e2fe8c9fb82..e927f321b4b 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -54,10 +54,11 @@ class VIEW3D_HT_header(Header):
else:
sub.menu("VIEW3D_MT_object")
- row = layout.row()
+
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
+ row = layout.row() #XXX Narrowed down vert/edge/face selector in edit mode/solid drawmode. -DingTo
row.template_header_3D()
-
+
if obj:
# Particle edit
if obj.mode == 'PARTICLE_EDIT':
@@ -986,6 +987,7 @@ class VIEW3D_MT_make_links(Menu):
layout.operator("object.join_uvs") # stupid place to add this!
+
class VIEW3D_MT_object_game(Menu):
bl_label = "Game"
@@ -1141,7 +1143,7 @@ class VIEW3D_MT_sculpt(Menu):
layout.prop(sculpt, "use_threaded", text="Threaded Sculpt")
layout.prop(sculpt, "show_brush")
- # TODO, make availabel from paint menu!
+ # TODO, make available from paint menu!
layout.prop(tool_settings, "sculpt_paint_use_unified_size", text="Unify Size")
layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Unify Strength")
@@ -1412,7 +1414,7 @@ class BoneOptions:
data_path_iter = "selected_bones"
opt_suffix = ""
options.append("lock")
- else: # posemode
+ else: # pose-mode
bone_props = bpy.types.Bone.bl_rna.properties
data_path_iter = "selected_pose_bones"
opt_suffix = "bone."
@@ -2172,7 +2174,7 @@ class VIEW3D_PT_view3d_meshdisplay(Panel):
@classmethod
def poll(cls, context):
- # The active object check is needed because of localmode
+ # The active object check is needed because of local-mode
return (context.active_object and (context.mode == 'EDIT_MESH'))
def draw(self, context):
@@ -2233,7 +2235,7 @@ class VIEW3D_PT_background_image(Panel):
@classmethod
def poll(cls, context):
view = context.space_data
- # bg = context.space_data.background_image
+ #~ bg = context.space_data.background_image
return (view)
def draw_header(self, context):
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index e322a6dcd13..a78992d4a07 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -63,7 +63,7 @@ def draw_gpencil_tools(context, layout):
row.prop(context.tool_settings, "use_grease_pencil_sessions")
-# ********** default tools for objectmode ****************
+# ********** default tools for object-mode ****************
class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
bl_context = "objectmode"
@@ -385,7 +385,7 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel, Panel):
draw_gpencil_tools(context, layout)
-# ********** default tools for posemode ****************
+# ********** default tools for pose-mode ****************
class VIEW3D_PT_tools_posemode(View3DPanel, Panel):
@@ -484,16 +484,18 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
# XXX This needs a check if psys is editable.
if context.particle_edit_object:
+ tool = settings.tool
+
# XXX Select Particle System
layout.column().prop(settings, "tool", expand=True)
- if settings.tool != 'NONE':
+ if tool != 'NONE':
col = layout.column()
col.prop(brush, "size", slider=True)
- if settings.tool != 'ADD':
+ if tool != 'ADD':
col.prop(brush, "strength", slider=True)
- if settings.tool == 'ADD':
+ if tool == 'ADD':
col.prop(brush, "count")
col = layout.column()
col.prop(settings, "use_default_interpolate")
@@ -501,15 +503,16 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
sub.active = settings.use_default_interpolate
sub.prop(brush, "steps", slider=True)
sub.prop(settings, "default_key_count", slider=True)
- elif settings.tool == 'LENGTH':
+ elif tool == 'LENGTH':
layout.prop(brush, "length_mode", expand=True)
- elif settings.tool == 'PUFF':
+ elif tool == 'PUFF':
layout.prop(brush, "puff_mode", expand=True)
layout.prop(brush, "use_puff_volume")
# Sculpt Mode #
elif context.sculpt_object and brush:
+ tool = brush.sculpt_tool
col = layout.column()
@@ -526,12 +529,12 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
row.prop(brush, "use_pressure_size", toggle=True, text="")
- if brush.sculpt_tool not in {'SNAKE_HOOK', 'GRAB', 'ROTATE'}:
+ if tool not in {'SNAKE_HOOK', 'GRAB', 'ROTATE'}:
col.separator()
row = col.row(align=True)
- if brush.use_space and brush.sculpt_tool not in {'SMOOTH'}:
+ if brush.use_space and tool != 'SMOOTH':
if brush.use_space_atten:
row.prop(brush, "use_space_atten", toggle=True, text="", icon='LOCKED')
else:
@@ -540,26 +543,26 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
row.prop(brush, "strength", text="Strength", slider=True)
row.prop(brush, "use_pressure_strength", text="")
- if brush.sculpt_tool not in {'SMOOTH'}:
+ if tool != 'SMOOTH':
col.separator()
row = col.row(align=True)
row.prop(brush, "auto_smooth_factor", slider=True)
row.prop(brush, "use_inverse_smooth_pressure", toggle=True, text="")
- if brush.sculpt_tool in {'GRAB', 'SNAKE_HOOK'}:
+ if tool in {'GRAB', 'SNAKE_HOOK'}:
col.separator()
row = col.row(align=True)
row.prop(brush, "normal_weight", slider=True)
- if brush.sculpt_tool in {'CREASE', 'BLOB'}:
+ if tool in {'CREASE', 'BLOB'}:
col.separator()
row = col.row(align=True)
row.prop(brush, "crease_pinch_factor", slider=True, text="Pinch")
- if brush.sculpt_tool not in {'PINCH', 'INFLATE', 'SMOOTH'}:
+ if tool not in {'PINCH', 'INFLATE', 'SMOOTH'}:
row = col.row(align=True)
col.separator()
@@ -571,8 +574,8 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
row.prop(brush, "sculpt_plane", text="")
- #if brush.sculpt_tool in {'CLAY', 'CLAY_TUBES', 'FLATTEN', 'FILL', 'SCRAPE'}:
- if brush.sculpt_tool in {'CLAY', 'FLATTEN', 'FILL', 'SCRAPE'}:
+ #if tool in {'CLAY', 'CLAY_TUBES', 'FLATTEN', 'FILL', 'SCRAPE'}:
+ if tool in {'CLAY', 'FLATTEN', 'FILL', 'SCRAPE'}:
row = col.row(align=True)
row.prop(brush, "plane_offset", slider=True)
row.prop(brush, "use_offset_pressure", text="")
@@ -585,7 +588,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
row.active = brush.use_plane_trim
row.prop(brush, "plane_trim", slider=True, text="Distance")
- if brush.sculpt_tool == 'LAYER':
+ if tool == 'LAYER':
row = col.row()
row.prop(brush, "height", slider=True, text="Height")
@@ -597,12 +600,12 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
col.separator()
col.row().prop(brush, "direction", expand=True)
- if brush.sculpt_tool in {'DRAW', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY'}:
+ if tool in {'DRAW', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY'}:
col.separator()
col.prop(brush, "use_accumulate")
- if brush.sculpt_tool == 'LAYER':
+ if tool == 'LAYER':
col.separator()
ob = context.sculpt_object
@@ -1040,7 +1043,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel):
row = col.row(align=True)
row.prop(brush, "icon_filepath", text="")
-# ********** default tools for weightpaint ****************
+# ********** default tools for weight-paint ****************
class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel):
@@ -1094,9 +1097,9 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel):
# col.prop(wpaint, "mul", text="")
# Also missing now:
-# Soft, Vgroup, X-Mirror and "Clear" Operator.
+# Soft, Vertex-Group, X-Mirror and "Clear" Operator.
-# ********** default tools for vertexpaint ****************
+# ********** default tools for vertex-paint ****************
class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel):
@@ -1125,7 +1128,7 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel):
# col.label(text="Multiply:")
# col.prop(vpaint, "mul", text="")
-# ********** default tools for texturepaint ****************
+# ********** default tools for texture-paint ****************
class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel):
diff --git a/release/scripts/templates/driver_functions.py b/release/scripts/templates/driver_functions.py
new file mode 100644
index 00000000000..db9d4fb4678
--- /dev/null
+++ b/release/scripts/templates/driver_functions.py
@@ -0,0 +1,34 @@
+# This script defines functions to be used directly in drivers expressions to
+# extend the builtin set of python functions.
+#
+# This can be executed on manually or set to 'Register' to
+# initialize thefunctions on file load.
+
+
+# two sample functions
+def invert(f):
+ """ Simple function call:
+
+ invert(val)
+ """
+ return 1.0 - f
+
+
+uuid_store = {}
+
+def slow_value(value, fac, uuid):
+ """ Delay the value by a factor, use a unique string to allow
+ use in multiple drivers without conflict:
+
+ slow_value(val, 0.5, "my_value")
+ """
+ value_prev = uuid_store.get(uuid, value)
+ uuid_store[uuid] = value_new = (value_prev * fac) + (value * (1.0 - fac))
+ return value_new
+
+
+import bpy
+
+# Add variable defined in this script into the drivers namespace.
+bpy.app.driver_namespace["invert"] = invert
+bpy.app.driver_namespace["slow_value"] = slow_value
diff --git a/release/scripts/templates/gamelogic_module.py b/release/scripts/templates/gamelogic_module.py
index fcc8a8839c9..88c8cf0d75b 100644
--- a/release/scripts/templates/gamelogic_module.py
+++ b/release/scripts/templates/gamelogic_module.py
@@ -8,7 +8,7 @@
import bge
# variables defined here will only be set once when the
-# module is first imported. Set object spesific vars
+# module is first imported. Set object specific vars
# inside the function if you intend to use the module
# with multiple objects.
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index 851c6542de0..5161761cf09 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -217,7 +217,7 @@ void blf_font_buffer(FontBLF *font, const char *str)
unsigned int i= 0;
GlyphBLF **glyph_ascii_table= font->glyph_cache->glyph_ascii_table;
- /* buffer spesific vars*/
+ /* buffer specific vars*/
const unsigned char b_col_char[4]= {font->b_col[0] * 255,
font->b_col[1] * 255,
font->b_col[2] * 255,
diff --git a/source/blender/blenkernel/BKE_animsys.h b/source/blender/blenkernel/BKE_animsys.h
index bf619d76e68..cf49c479fe3 100644
--- a/source/blender/blenkernel/BKE_animsys.h
+++ b/source/blender/blenkernel/BKE_animsys.h
@@ -146,7 +146,7 @@ void BKE_animsys_evaluate_animdata(struct Scene *scene, struct ID *id, struct An
void BKE_animsys_evaluate_all_animation(struct Main *main, struct Scene *scene, float ctime);
-/* ------------ Specialised API --------------- */
+/* ------------ Specialized API --------------- */
/* There are a few special tools which require these following functions. They are NOT to be used
* for standard animation evaluation UNDER ANY CIRCUMSTANCES!
*
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 34a9321284d..0cad398995a 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -43,8 +43,8 @@ extern "C" {
/* these lines are grep'd, watch out for our not-so-awesome regex
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
-#define BLENDER_VERSION 259
-#define BLENDER_SUBVERSION 5
+#define BLENDER_VERSION 260
+#define BLENDER_SUBVERSION 0
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
@@ -53,7 +53,7 @@ extern "C" {
/* can be left blank, otherwise a,b,c... etc with no quotes */
#define BLENDER_VERSION_CHAR
/* alpha/beta/rc/release, docs use this */
-#define BLENDER_VERSION_CYCLE rc
+#define BLENDER_VERSION_CYCLE alpha
struct ListBase;
struct MemFile;
diff --git a/source/blender/blenkernel/BKE_font.h b/source/blender/blenkernel/BKE_font.h
index e4e8805164a..214ae03b453 100644
--- a/source/blender/blenkernel/BKE_font.h
+++ b/source/blender/blenkernel/BKE_font.h
@@ -85,11 +85,6 @@ struct chartrans *BKE_text_to_curve(struct Main *bmain, struct Scene *scene, str
int BKE_font_getselection(struct Object *ob, int *start, int *end);
-size_t chtoutf8(const unsigned long c, char o[4]);
-void wcs2utf8s(char *dst, const wchar_t *src);
-size_t wcsleninu8(wchar_t *src);
-size_t utf8towchar(wchar_t *w, const char *c);
-
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index b25bfd4975d..7f9ef8b0e71 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -353,9 +353,8 @@ int nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id);
void nodeClearActiveID(struct bNodeTree *ntree, short idtype);
struct bNode *nodeGetActiveTexture(struct bNodeTree *ntree);
-void NodeTagChanged(struct bNodeTree *ntree, struct bNode *node);
-int NodeTagIDChanged(struct bNodeTree *ntree, struct ID *id);
-void ntreeClearTags(struct bNodeTree *ntree);
+void nodeUpdate(struct bNodeTree *ntree, struct bNode *node);
+int nodeUpdateID(struct bNodeTree *ntree, struct ID *id);
void nodeFreePreview(struct bNode *node);
@@ -647,7 +646,7 @@ void ntreeCompositTagRender(struct Scene *sce);
int ntreeCompositTagAnimated(struct bNodeTree *ntree);
void ntreeCompositTagGenerators(struct bNodeTree *ntree);
void ntreeCompositForceHidden(struct bNodeTree *ntree, struct Scene *scene);
-
+void ntreeCompositClearTags(struct bNodeTree *ntree);
/* ************** TEXTURE NODES *************** */
diff --git a/source/blender/blenkernel/BKE_packedFile.h b/source/blender/blenkernel/BKE_packedFile.h
index 556ff26e621..f1c7356e6b0 100644
--- a/source/blender/blenkernel/BKE_packedFile.h
+++ b/source/blender/blenkernel/BKE_packedFile.h
@@ -51,7 +51,7 @@ struct PackedFile *newPackedFileMemory(void *mem, int memlen);
void packAll(struct Main *bmain, struct ReportList *reports);
/* unpack */
-char *unpackFile(struct ReportList *reports, char *abs_name, char *local_name, struct PackedFile *pf, int how);
+char *unpackFile(struct ReportList *reports, const char *abs_name, const char *local_name, struct PackedFile *pf, int how);
int unpackVFont(struct ReportList *reports, struct VFont *vfont, int how);
int unpackSound(struct Main *bmain, struct ReportList *reports, struct bSound *sound, int how);
int unpackImage(struct ReportList *reports, struct Image *ima, int how);
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index f8463bab55f..89733f1623c 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -84,7 +84,7 @@ typedef struct SculptSession {
int modifiers_active; /* object is deformed with some modifiers */
float (*orig_cos)[3]; /* coords of undeformed mesh */
float (*deform_cos)[3]; /* coords of deformed mesh but without stroke displacement */
- float (*deform_imats)[3][3]; /* crazyspace deformation matricies */
+ float (*deform_imats)[3][3]; /* crazyspace deformation matrices */
/* Partial redraw */
int partial_redraw;
diff --git a/source/blender/blenkernel/BKE_utildefines.h b/source/blender/blenkernel/BKE_utildefines.h
index 87684e4895d..f65b937a54b 100644
--- a/source/blender/blenkernel/BKE_utildefines.h
+++ b/source/blender/blenkernel/BKE_utildefines.h
@@ -29,7 +29,7 @@
/** \file BKE_utildefines.h
* \ingroup bke
- * \brief blender format spesific macros
+ * \brief blender format specific macros
* \note generic defines should go in BLI_utildefines.h
*/
diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript
index 7d7ab56ec3f..512eec4021f 100644
--- a/source/blender/blenkernel/SConscript
+++ b/source/blender/blenkernel/SConscript
@@ -41,8 +41,7 @@ if env['WITH_BF_QUICKTIME']:
if env['WITH_BF_SDL']:
incs += ' ' + env['BF_SDL_INC']
-else:
- defs.append('DISABLE_SDL')
+ defs.append('WITH_SDL')
if env['WITH_BF_OPENEXR']:
defs.append('WITH_OPENEXR')
diff --git a/source/blender/blenkernel/intern/BME_conversions.c b/source/blender/blenkernel/intern/BME_conversions.c
index 9a3c9462934..8b5cfe1b882 100644
--- a/source/blender/blenkernel/intern/BME_conversions.c
+++ b/source/blender/blenkernel/intern/BME_conversions.c
@@ -44,6 +44,7 @@
#include "DNA_scene_types.h"
#include "BLI_edgehash.h"
+#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "BKE_mesh.h"
diff --git a/source/blender/blenkernel/intern/BME_eulers.c b/source/blender/blenkernel/intern/BME_eulers.c
index 593f50a65e7..bbd439dcb93 100644
--- a/source/blender/blenkernel/intern/BME_eulers.c
+++ b/source/blender/blenkernel/intern/BME_eulers.c
@@ -38,6 +38,7 @@
#include "MEM_guardedalloc.h"
+#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "bmesh_private.h"
diff --git a/source/blender/blenkernel/intern/BME_mesh.c b/source/blender/blenkernel/intern/BME_mesh.c
index 62a9601da13..e34f2ee1e50 100644
--- a/source/blender/blenkernel/intern/BME_mesh.c
+++ b/source/blender/blenkernel/intern/BME_mesh.c
@@ -37,7 +37,7 @@
*/
-
+#include "BLI_listbase.h"
#include "MEM_guardedalloc.h"
#include "BKE_bmesh.h"
#include "bmesh_private.h"
diff --git a/source/blender/blenkernel/intern/BME_structure.c b/source/blender/blenkernel/intern/BME_structure.c
index bd5241adb6b..c385ad4fcda 100644
--- a/source/blender/blenkernel/intern/BME_structure.c
+++ b/source/blender/blenkernel/intern/BME_structure.c
@@ -40,6 +40,7 @@
#include <limits.h>
#include "MEM_guardedalloc.h"
+#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "BKE_bmesh.h"
/**
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index cd2c272a1c2..da6dd5bd39d 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -1430,6 +1430,16 @@ 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;
+
+ /* particle rotation uses x-axis as the aligned axis, so pre-rotate the object accordingly */
+ if((part->draw & PART_DRAW_ROTATE_OB) == 0) {
+ float xvec[3], q[4];
+ xvec[0] = -1.f;
+ xvec[1] = xvec[2] = 0;
+ vec_to_quat(q, xvec, ob->trackflag, ob->upflag);
+ quat_to_mat4(obmat, q);
+ obmat[3][3]= 1.0f;
+ }
/* Normal particles and cached hair live in global space so we need to
* remove the real emitter's transformation before 2nd order duplication.
@@ -1448,7 +1458,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
copy_m4_m4(mat, tmat);
if(part->draw & PART_DRAW_GLOBAL_OB)
- VECADD(mat[3], mat[3], vec);
+ add_v3_v3v3(mat[3], mat[3], vec);
dob= new_dupli_object(lb, ob, mat, ob->lay, counter, GS(id->name) == ID_GR ? OB_DUPLIGROUP : OB_DUPLIPARTS, animated);
copy_m4_m4(dob->omat, oldobmat);
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 1ec573c853a..260b51bc321 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -974,7 +974,7 @@ static void cloth_from_mesh ( ClothModifierData *clmd, DerivedMesh *dm )
* SPRING NETWORK BUILDING IMPLEMENTATION BEGIN
***************************************************************************************/
-// be carefull: implicit solver has to be resettet when using this one!
+// be careful: implicit solver has to be resettet when using this one!
// --> only for implicit handling of this spring!
int cloth_add_spring ( ClothModifierData *clmd, unsigned int indexA, unsigned int indexB, float restlength, int spring_type)
{
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 591e0b6a8d2..6dbea2c9ab6 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -1067,7 +1067,7 @@ static void trackto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
cob->matrix[2][2]=size[2];
/* targetmat[2] instead of ownermat[2] is passed to vectomat
- * for backwards compatability it seems... (Aligorith)
+ * for backwards compatibility it seems... (Aligorith)
*/
sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);
vectomat(vec, ct->matrix[2],
@@ -2104,7 +2104,7 @@ static void actcon_new_data (void *cdata)
{
bActionConstraint *data= (bActionConstraint *)cdata;
- /* set type to 20 (Loc X), as 0 is Rot X for backwards compatability */
+ /* set type to 20 (Loc X), as 0 is Rot X for backwards compatibility */
data->type = 20;
}
@@ -2161,7 +2161,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
constraint_target_to_mat4(ct->tar, ct->subtarget, tempmat, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
/* determine where in transform range target is */
- /* data->type is mapped as follows for backwards compatability:
+ /* data->type is mapped as follows for backwards compatibility:
* 00,01,02 - rotation (it used to be like this)
* 10,11,12 - scaling
* 20,21,22 - location
@@ -4351,7 +4351,7 @@ short proxylocked_constraints_owner (Object *ob, bPoseChannel *pchan)
* constraints either had one or no targets. It used to be called during the main constraint solving
* loop, but is now only used for the remaining cases for a few constraints.
*
- * None of the actual calculations of the matricies should be done here! Also, this function is
+ * None of the actual calculations of the matrices should be done here! Also, this function is
* not to be used by any new constraints, particularly any that have multiple targets.
*/
void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n, short ownertype, void *ownerdata, float mat[][4], float ctime)
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 79269e300f7..ccc12bf2b1f 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -38,6 +38,7 @@
#include "BLI_winstuff.h"
#include "BLI_utildefines.h"
+#include "BLI_listbase.h"
#include "BLI_ghash.h"
#include "DNA_anim_types.h"
@@ -1983,7 +1984,7 @@ static void dag_tag_renderlayers(Scene *sce, unsigned int lay)
if(node->id==(ID *)sce) {
SceneRenderLayer *srl= BLI_findlink(&sce->r.layers, node->custom1);
if(srl && (srl->lay & lay_changed))
- NodeTagChanged(sce->nodetree, node);
+ nodeUpdate(sce->nodetree, node);
}
}
}
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index e2326b005c1..0303f580e67 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -705,7 +705,7 @@ void bezt_add_to_cfra_elem (ListBase *lb, BezTriple *bezt)
/* ***************************** Samples Utilities ******************************* */
/* Some utilities for working with FPoints (i.e. 'sampled' animation curve data, such as
- * data imported from BVH/Mocap files), which are specialised for use with high density datasets,
+ * data imported from BVH/Mocap files), which are specialized for use with high density datasets,
* which BezTriples/Keyframe data are ill equipped to do.
*/
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index 4c8d0cf998d..068e70bbb50 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -64,142 +64,6 @@
static ListBase ttfdata= {NULL, NULL};
-/* UTF-8 <-> wchar transformations */
-size_t chtoutf8(const unsigned long c, char o[4])
-{
- // Variables and initialization
-/* memset(o, 0, 4); */
-
- // Create the utf-8 string
- if (c < 0x80) {
- o[0] = (char) c;
- return 1;
- }
- else if (c < 0x800) {
- o[0] = (0xC0 | (c>>6));
- o[1] = (0x80 | (c & 0x3f));
- return 2;
- }
- else if (c < 0x10000) {
- o[0] = (0xe0 | (c >> 12));
- o[1] = (0x80 | (c >>6 & 0x3f));
- o[2] = (0x80 | (c & 0x3f));
- return 3;
- }
- else if (c < 0x200000) {
- o[0] = (0xf0 | (c>>18));
- o[1] = (0x80 | (c >>12 & 0x3f));
- o[2] = (0x80 | (c >> 6 & 0x3f));
- o[3] = (0x80 | (c & 0x3f));
- return 4;
- }
-
- /* should we assert here? */
- return 0;
-}
-
-void wcs2utf8s(char *dst, const wchar_t *src)
-{
- while(*src) {
- dst += chtoutf8(*src++, dst);
- }
-
- *dst= '\0';
-}
-
-size_t wcsleninu8(wchar_t *src)
-{
- char ch_dummy[4];
- size_t len = 0;
-
- while(*src) {
- len += chtoutf8(*src++, ch_dummy);
- }
-
- return len;
-}
-
-static size_t utf8slen(const char *strc)
-{
- int len=0;
-
- while(*strc) {
- if ((*strc & 0xe0) == 0xc0) {
- if((strc[1] & 0x80) && (strc[1] & 0x40) == 0x00)
- strc++;
- } else if ((*strc & 0xf0) == 0xe0) {
- if((strc[1] & strc[2] & 0x80) && ((strc[1] | strc[2]) & 0x40) == 0x00)
- strc += 2;
- } else if ((*strc & 0xf8) == 0xf0) {
- if((strc[1] & strc[2] & strc[3] & 0x80) && ((strc[1] | strc[2] | strc[3]) & 0x40) == 0x00)
- strc += 3;
- }
-
- strc++;
- len++;
- }
-
- return len;
-}
-
-
-/* Converts Unicode to wchar
-
-According to RFC 3629 "UTF-8, a transformation format of ISO 10646"
-(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are:
-
- Char. number range | UTF-8 octet sequence
- (hexadecimal) | (binary)
- --------------------+---------------------------------------------
- 0000 0000-0000 007F | 0xxxxxxx
- 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
- 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
- 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-If the encoding incidated by the first character is incorrect (because the
-1 to 3 following characters do not match 10xxxxxx), the output is a '?' and
-only a single input character is consumed.
-
-*/
-
-size_t utf8towchar(wchar_t *w, const char *c)
-{
- int len=0;
-
- if(w==NULL || c==NULL) return(0);
-
- while(*c) {
- if ((*c & 0xe0) == 0xc0) {
- if((c[1] & 0x80) && (c[1] & 0x40) == 0x00) {
- *w=((c[0] &0x1f)<<6) | (c[1]&0x3f);
- c++;
- } else {
- *w = '?';
- }
- } else if ((*c & 0xf0) == 0xe0) {
- if((c[1] & c[2] & 0x80) && ((c[1] | c[2]) & 0x40) == 0x00) {
- *w=((c[0] & 0x0f)<<12) | ((c[1]&0x3f)<<6) | (c[2]&0x3f);
- c += 2;
- } else {
- *w = '?';
- }
- } else if ((*c & 0xf8) == 0xf0) {
- if((c[1] & c[2] & c[3] & 0x80) && ((c[1] | c[2] | c[3]) & 0x40) == 0x00) {
- *w=((c[0] & 0x07)<<18) | ((c[1]&0x1f)<<12) | ((c[2]&0x3f)<<6) | (c[3]&0x3f);
- c += 3;
- } else {
- *w = '?';
- }
- } else
- *w=(c[0] & 0x7f);
-
- c++;
- w++;
- len++;
- }
- return len;
-}
-
/* The vfont code */
void free_vfont(struct VFont *vf)
{
@@ -546,7 +410,7 @@ static void buildchar(Main *bmain, Curve *cu, unsigned long character, CharInfo
nu2->knotsu = nu2->knotsv = NULL;
nu2->flag= CU_SMOOTH;
nu2->charidx = charidx;
- if (info->mat_nr) {
+ if (info->mat_nr > 0) {
nu2->mat_nr= info->mat_nr-1;
}
else {
@@ -691,10 +555,10 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m
if(vfont == NULL) return NULL;
// Create unicode string
- utf8len = utf8slen(cu->str);
+ utf8len = BLI_strlen_utf8(cu->str);
mem = MEM_callocN(((utf8len + 1) * sizeof(wchar_t)), "convertedmem");
- utf8towchar(mem, cu->str);
+ BLI_strncpy_wchar_from_utf8(mem, cu->str, utf8len + 1);
// Count the wchar_t string length
slen = wcslen(mem);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 06ca7b7b509..fa493315d4b 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -185,7 +185,7 @@ bGPDlayer *gpencil_layer_addnew (bGPdata *gpd)
/* auto-name */
strcpy(gpl->info, "GP_Layer");
- BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info[0]), sizeof(gpl->info));
+ BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info), sizeof(gpl->info));
/* make this one the active one */
gpencil_layer_setactive(gpd, gpl);
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index cf8f96c143a..37982e7fec9 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -906,8 +906,8 @@ static void stampdata(Scene *scene, Object *camera, StampData *stamp_data, int d
if (scene->r.stamp & R_STAMP_MARKER) {
char *name = scene_find_last_marker_name(scene, CFRA);
-
- if (name) strcpy(text, name);
+
+ if (name) BLI_strncpy(text, name, sizeof(text));
else strcpy(text, "<none>");
BLI_snprintf(stamp_data->marker, sizeof(stamp_data->marker), do_prefix ? "Marker %s":"%s", text);
@@ -980,7 +980,7 @@ static void stampdata(Scene *scene, Object *camera, StampData *stamp_data, int d
if (scene->r.stamp & R_STAMP_SEQSTRIP) {
Sequence *seq= seq_foreground_frame_get(scene, scene->r.cfra);
- if (seq) strcpy(text, seq->name+2);
+ if (seq) BLI_strncpy(text, seq->name+2, sizeof(text));
else strcpy(text, "<none>");
BLI_snprintf(stamp_data->strip, sizeof(stamp_data->strip), do_prefix ? "Strip %s":"%s", text);
@@ -1514,7 +1514,7 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal)
Scene *scene;
for(scene= G.main->scene.first; scene; scene= scene->id.next) {
if(scene->nodetree) {
- NodeTagIDChanged(scene->nodetree, &ima->id);
+ nodeUpdateID(scene->nodetree, &ima->id);
}
}
}
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 91f3c7a22ba..609f6cd38f1 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -1034,12 +1034,14 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver)
/* first bone target */
dtar= &dvar->targets[0];
dtar->id= (ID *)idriver->ob;
+ dtar->idtype= ID_OB;
if (idriver->name[0])
BLI_strncpy(dtar->pchan_name, idriver->name, sizeof(dtar->pchan_name));
/* second bone target (name was stored in same var as the first one) */
dtar= &dvar->targets[1];
dtar->id= (ID *)idriver->ob;
+ dtar->idtype= ID_OB;
if (idriver->name[0]) // xxx... for safety
BLI_strncpy(dtar->pchan_name, idriver->name+DRIVER_NAME_OFFS, sizeof(dtar->pchan_name));
}
@@ -1051,6 +1053,7 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver)
/* only requires a single target */
dtar= &dvar->targets[0];
dtar->id= (ID *)idriver->ob;
+ dtar->idtype= ID_OB;
if (idriver->name[0])
BLI_strncpy(dtar->pchan_name, idriver->name, sizeof(dtar->pchan_name));
dtar->transChan= adrcode_to_dtar_transchan(idriver->adrcode);
@@ -1065,6 +1068,7 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver)
/* only requires single target */
dtar= &dvar->targets[0];
dtar->id= (ID *)idriver->ob;
+ dtar->idtype= ID_OB;
dtar->transChan= adrcode_to_dtar_transchan(idriver->adrcode);
}
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index ed9be989dbd..ebd05ab9bf8 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1105,8 +1105,17 @@ int object_remove_material_slot(Object *ob)
short *totcolp;
short a, actcol;
- if(ob==NULL || ob->totcol==0) return FALSE;
-
+ if (ob==NULL || ob->totcol==0) {
+ return FALSE;
+ }
+
+ /* this should never happen and used to crash */
+ if (ob->actcol <= 0) {
+ printf("%s: invalid material index %d, report a bug!\n", __func__, ob->actcol);
+ BLI_assert(0);
+ return FALSE;
+ }
+
/* take a mesh/curve/mball as starting point, remove 1 index,
* AND with all objects that share the ob->data
*
@@ -1119,10 +1128,8 @@ int object_remove_material_slot(Object *ob)
if(*matarar==NULL) return FALSE;
/* we delete the actcol */
- if(ob->totcol) {
- mao= (*matarar)[ob->actcol-1];
- if(mao) mao->id.us--;
- }
+ mao= (*matarar)[ob->actcol-1];
+ if(mao) mao->id.us--;
for(a=ob->actcol; a<ob->totcol; a++)
(*matarar)[a-1]= (*matarar)[a];
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 9de75a49998..edddcb4a6b2 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -52,6 +52,9 @@
#include "DNA_meshdata_types.h"
#include "BLI_utildefines.h"
+#include "BLI_path_util.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BKE_bmesh.h"
#include "BKE_cloth.h"
@@ -86,8 +89,8 @@ ModifierData *modifier_new(int type)
ModifierTypeInfo *mti = modifierType_getInfo(type);
ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
- // FIXME: we need to make the name always be unique somehow...
- strcpy(md->name, mti->name);
+ /* note, this name must be made unique later */
+ BLI_strncpy(md->name, mti->name, sizeof(md->name));
md->type = type;
md->mode = eModifierMode_Realtime
diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c
index 97347d85deb..15513675c7a 100644
--- a/source/blender/blenkernel/intern/nla.c
+++ b/source/blender/blenkernel/intern/nla.c
@@ -42,6 +42,9 @@
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
+#include "BLI_path_util.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BLI_ghash.h"
#include "DNA_anim_types.h"
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 7392d6fc8fc..a7977442d03 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -185,7 +185,7 @@ bNodeSocket *nodeAddSocket(bNodeTree *ntree, bNode *node, int in_out, const char
else if (in_out==SOCK_OUT)
BLI_addtail(&node->outputs, sock);
- ntree->update |= NTREE_UPDATE_NODES;
+ node->update |= NODE_UPDATE;
return sock;
}
@@ -198,7 +198,7 @@ bNodeSocket *nodeInsertSocket(bNodeTree *ntree, bNode *node, int in_out, bNodeSo
else if (in_out==SOCK_OUT)
BLI_insertlinkbefore(&node->outputs, next_sock, sock);
- ntree->update |= NTREE_UPDATE_NODES;
+ node->update |= NODE_UPDATE;
return sock;
}
@@ -222,7 +222,7 @@ void nodeRemoveSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
MEM_freeN(sock->default_value);
MEM_freeN(sock);
- ntree->update |= NTREE_UPDATE_NODES;
+ node->update |= NODE_UPDATE;
}
void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
@@ -247,7 +247,7 @@ void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
BLI_freelistN(&node->outputs);
- ntree->update |= NTREE_UPDATE_NODES;
+ node->update |= NODE_UPDATE;
}
/* finds a node based on its name */
@@ -375,7 +375,7 @@ void nodeMakeDynamicType(bNode *node)
/*node->typeinfo= MEM_dupallocN(ntype);*/
bNodeType *newtype= MEM_callocN(sizeof(bNodeType), "dynamic bNodeType");
*newtype= *ntype;
- strcpy(newtype->name, ntype->name);
+ BLI_strncpy(newtype->name, ntype->name, sizeof(newtype->name));
node->typeinfo= newtype;
}
}
@@ -824,7 +824,7 @@ void nodeUnlinkNode(bNodeTree *ntree, bNode *node)
if(link->fromnode==node) {
lb= &node->outputs;
if (link->tonode)
- NodeTagChanged(ntree, link->tonode);
+ link->tonode->update |= NODE_UPDATE;
}
else if(link->tonode==node)
lb= &node->inputs;
@@ -1499,18 +1499,19 @@ void ntreeUpdateTree(bNodeTree *ntree)
/* update individual nodes */
for (n=0; n < totnodes; ++n) {
node = deplist[n];
- if (ntreetype->update_node)
- ntreetype->update_node(ntree, node);
- else if (node->typeinfo->updatefunc)
- node->typeinfo->updatefunc(ntree, node);
+
+ /* node tree update tags override individual node update flags */
+ if ((node->update & NODE_UPDATE) || (ntree->update & NTREE_UPDATE)) {
+ if (ntreetype->update_node)
+ ntreetype->update_node(ntree, node);
+ else if (node->typeinfo->updatefunc)
+ node->typeinfo->updatefunc(ntree, node);
+ }
+ /* clear update flag */
+ node->update = 0;
}
MEM_freeN(deplist);
-
- /* ensures only a single output node is enabled, texnode allows multiple though */
- if(ntree->type!=NTREE_TEXTURE)
- ntreeSetOutput(ntree);
-
}
/* general tree updates */
@@ -1522,6 +1523,9 @@ void ntreeUpdateTree(bNodeTree *ntree)
if (ntreetype->update)
ntreetype->update(ntree);
else {
+ /* Trees can be associated with a specific node type (i.e. group nodes),
+ * in that case a tree update function may be defined by that node type.
+ */
bNodeType *ntype= node_get_type(ntree, ntree->nodetype);
if (ntype && ntype->updatetreefunc)
ntype->updatetreefunc(ntree);
@@ -1534,24 +1538,24 @@ void ntreeUpdateTree(bNodeTree *ntree)
ntree->update = 0;
}
-void NodeTagChanged(bNodeTree *ntree, bNode *node)
+void nodeUpdate(bNodeTree *ntree, bNode *node)
{
- bNodeTreeType *ntreetype = ntreeGetType(ntree->type);
+ bNodeTreeType *ntreetype= ntreeGetType(ntree->type);
- /* extra null pointer checks here because this is called when unlinking
- unknown nodes on file load, so typeinfo pointers may not be set */
- if (ntreetype && ntreetype->update_node)
+ if (ntreetype->update_node)
ntreetype->update_node(ntree, node);
- else if (node->typeinfo && node->typeinfo->updatefunc)
+ else if (node->typeinfo->updatefunc)
node->typeinfo->updatefunc(ntree, node);
+ /* clear update flag */
+ node->update = 0;
}
-int NodeTagIDChanged(bNodeTree *ntree, ID *id)
+int nodeUpdateID(bNodeTree *ntree, ID *id)
{
bNodeTreeType *ntreetype;
bNode *node;
int change = FALSE;
-
+
if(ELEM(NULL, id, ntree))
return change;
@@ -1562,6 +1566,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id)
if(node->id==id) {
change = TRUE;
ntreetype->update_node(ntree, node);
+ /* clear update flag */
+ node->update = 0;
}
}
}
@@ -1571,6 +1577,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id)
change = TRUE;
if (node->typeinfo->updatefunc)
node->typeinfo->updatefunc(ntree, node);
+ /* clear update flag */
+ node->update = 0;
}
}
}
diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c
index 2c8975e9cb4..0041cd33c14 100644
--- a/source/blender/blenkernel/intern/packedFile.c
+++ b/source/blender/blenkernel/intern/packedFile.c
@@ -182,7 +182,7 @@ PackedFile *newPackedFile(ReportList *reports, const char *filename, const char
// convert relative filenames to absolute filenames
- strcpy(name, filename);
+ BLI_strncpy(name, filename, sizeof(name));
BLI_path_abs(name, basepath);
// open the file
@@ -240,7 +240,7 @@ void packAll(Main *bmain, ReportList *reports)
}
-/*
+#if 0
// attempt to create a function that generates an unique filename
// this will work when all funtions in fileops.c understand relative filenames...
@@ -249,6 +249,7 @@ static char *find_new_name(char *name)
{
char tempname[FILE_MAXDIR + FILE_MAXFILE];
char *newname;
+ size_t len;
if (fop_exists(name)) {
for (number = 1; number <= 999; number++) {
@@ -258,14 +259,12 @@ static char *find_new_name(char *name)
}
}
}
-
- newname = mallocN(strlen(tempname) + 1, "find_new_name");
- strcpy(newname, tempname);
-
- return(newname);
+ len= strlen(tempname) + 1;
+ newname = MEM_mallocN(len, "find_new_name");
+ memcpy(newname, tempname, len * sizeof(char));
+ return newname;
}
-
-*/
+#endif
int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, int guimode)
{
@@ -277,12 +276,12 @@ int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, i
if (guimode) {} //XXX waitcursor(1);
- strcpy(name, filename);
+ BLI_strncpy(name, filename, sizeof(name));
BLI_path_abs(name, G.main->name);
if (BLI_exists(name)) {
for (number = 1; number <= 999; number++) {
- sprintf(tempname, "%s.%03d_", name, number);
+ BLI_snprintf(tempname, sizeof(tempname), "%s.%03d_", name, number);
if (! BLI_exists(tempname)) {
if (BLI_copy_fileops(name, tempname) == RET_OK) {
remove_tmp = TRUE;
@@ -342,7 +341,7 @@ int checkPackedFile(const char *filename, PackedFile *pf)
char buf[4096];
char name[FILE_MAXDIR + FILE_MAXFILE];
- strcpy(name, filename);
+ BLI_strncpy(name, filename, sizeof(name));
BLI_path_abs(name, G.main->name);
if (stat(name, &st)) {
@@ -392,9 +391,10 @@ there was an error or when the user desides to cancel the operation.
*/
-char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFile *pf, int how)
+char *unpackFile(ReportList *reports, const char *abs_name, const char *local_name, PackedFile *pf, int how)
{
- char *newname = NULL, *temp = NULL;
+ char *newname = NULL;
+ const char *temp = NULL;
// char newabs[FILE_MAXDIR + FILE_MAXFILE];
// char newlocal[FILE_MAXDIR + FILE_MAXFILE];
@@ -437,12 +437,11 @@ char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFi
}
if (temp) {
- newname = MEM_mallocN(strlen(temp) + 1, "unpack_file newname");
- strcpy(newname, temp);
+ newname= BLI_strdup(temp);
}
}
- return (newname);
+ return newname;
}
@@ -453,17 +452,17 @@ int unpackVFont(ReportList *reports, VFont *vfont, int how)
int ret_value = RET_ERROR;
if (vfont != NULL) {
- strcpy(localname, vfont->name);
+ BLI_strncpy(localname, vfont->name, sizeof(localname));
BLI_splitdirstring(localname, fi);
- sprintf(localname, "//fonts/%s", fi);
+ BLI_snprintf(localname, sizeof(localname), "//fonts/%s", fi);
newname = unpackFile(reports, vfont->name, localname, vfont->packedfile, how);
if (newname != NULL) {
ret_value = RET_OK;
freePackedFile(vfont->packedfile);
vfont->packedfile = NULL;
- strcpy(vfont->name, newname);
+ BLI_strncpy(vfont->name, newname, sizeof(vfont->name));
MEM_freeN(newname);
}
}
@@ -478,13 +477,13 @@ int unpackSound(Main *bmain, ReportList *reports, bSound *sound, int how)
int ret_value = RET_ERROR;
if (sound != NULL) {
- strcpy(localname, sound->name);
+ BLI_strncpy(localname, sound->name, sizeof(localname));
BLI_splitdirstring(localname, fi);
- sprintf(localname, "//sounds/%s", fi);
+ BLI_snprintf(localname, sizeof(localname), "//sounds/%s", fi);
newname = unpackFile(reports, sound->name, localname, sound->packedfile, how);
if (newname != NULL) {
- strcpy(sound->name, newname);
+ BLI_strncpy(sound->name, newname, sizeof(sound->name));
MEM_freeN(newname);
freePackedFile(sound->packedfile);
@@ -506,16 +505,16 @@ int unpackImage(ReportList *reports, Image *ima, int how)
int ret_value = RET_ERROR;
if (ima != NULL) {
- strcpy(localname, ima->name);
+ BLI_strncpy(localname, ima->name, sizeof(localname));
BLI_splitdirstring(localname, fi);
- sprintf(localname, "//textures/%s", fi);
-
+ BLI_snprintf(localname, sizeof(localname), "//textures/%s", fi);
+
newname = unpackFile(reports, ima->name, localname, ima->packedfile, how);
if (newname != NULL) {
ret_value = RET_OK;
freePackedFile(ima->packedfile);
ima->packedfile = NULL;
- strcpy(ima->name, newname);
+ BLI_strncpy(ima->name, newname, sizeof(ima->name));
MEM_freeN(newname);
BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD);
}
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 806a7871948..8669c4e0efd 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -4384,33 +4384,50 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *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);
else
psys_particle_on_emitter(psmd,PART_FROM_FACE,cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0);
-
- copy_m3_m4(nmat, ob->imat);
- transpose_m3(nmat);
- mul_m3_v3(nmat, nor);
- normalize_v3(nor);
-
- /* make sure that we get a proper side vector */
- 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;
+
+ if(psys->part->rotmode == PART_ROT_VEL) {
+ copy_m3_m4(nmat, ob->imat);
+ transpose_m3(nmat);
+ mul_m3_v3(nmat, nor);
+ normalize_v3(nor);
+
+ /* make sure that we get a proper side vector */
+ 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;
+ }
+ else {
+ nor[0] = 1.0f;
+ nor[1] = 0.0f;
+ nor[2] = 0.0f;
+ }
}
- else {
- nor[0] = 1.0f;
- nor[1] = 0.0f;
- nor[2] = 0.0f;
+ cross_v3_v3v3(side, nor, vec);
+ normalize_v3(side);
+
+ /* rotate side vector around vec */
+ if(psys->part->phasefac != 0) {
+ float q_phase[4];
+ float phasefac = psys->part->phasefac;
+ if(psys->part->randphasefac != 0.0f)
+ phasefac += psys->part->randphasefac * PSYS_FRAND((pa-psys->particles) + 20);
+ axis_angle_to_quat( q_phase, vec, phasefac*(float)M_PI);
+
+ mul_qt_v3(q_phase, side);
}
- }
- cross_v3_v3v3(side, nor, vec);
- normalize_v3(side);
- cross_v3_v3v3(nor, vec, side);
- unit_m4(mat);
- VECCOPY(mat[0], vec);
- VECCOPY(mat[1], side);
- VECCOPY(mat[2], nor);
+ cross_v3_v3v3(nor, vec, side);
+
+ unit_m4(mat);
+ VECCOPY(mat[0], vec);
+ VECCOPY(mat[1], side);
+ VECCOPY(mat[2], nor);
+ }
+ else {
+ quat_to_mat4(mat, pa->state.rot);
+ }
*scale= len;
}
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 6b601ed4b1a..64a90e15b60 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -70,7 +70,6 @@
#include "BLI_listbase.h"
#include "BLI_threads.h"
#include "BLI_storage.h" /* For _LARGEFILE64_SOURCE; zlib needs this on some systems */
-#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_main.h"
@@ -1607,8 +1606,8 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P
}
- /* -velocity */
- if(part->randfac != 0.0f){
+ /* -velocity (boids need this even if there's no random velocity) */
+ if(part->randfac != 0.0f || (part->phystype==PART_PHYS_BOIDS && pa->boid)){
r_vel[0] = 2.0f * (PSYS_FRAND(p + 10) - 0.5f);
r_vel[1] = 2.0f * (PSYS_FRAND(p + 11) - 0.5f);
r_vel[2] = 2.0f * (PSYS_FRAND(p + 12) - 0.5f);
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index fb69db17b97..8e5452e2704 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -910,7 +910,7 @@ static int ptcache_path(PTCacheID *pid, char *filename)
else if (G.relbase_valid || lib) {
char file[MAX_PTCACHE_PATH]; /* we dont want the dir, only the file */
- BLI_split_dirfile(blendfilename, NULL, file);
+ BLI_split_dirfile(blendfilename, NULL, file, 0, sizeof(file));
i = strlen(file);
/* remove .blend */
@@ -2891,24 +2891,24 @@ void BKE_ptcache_disk_cache_rename(PTCacheID *pid, char *from, char *to)
char ext[MAX_PTCACHE_PATH];
/* save old name */
- strcpy(old_name, pid->cache->name);
+ BLI_strncpy(old_name, pid->cache->name, sizeof(old_name));
/* get "from" filename */
- strcpy(pid->cache->name, from);
+ BLI_strncpy(pid->cache->name, from, sizeof(pid->cache->name));
len = ptcache_filename(pid, old_filename, 0, 0, 0); /* no path */
ptcache_path(pid, path);
dir = opendir(path);
if(dir==NULL) {
- strcpy(pid->cache->name, old_name);
+ BLI_strncpy(pid->cache->name, old_name, sizeof(pid->cache->name));
return;
}
BLI_snprintf(ext, sizeof(ext), "_%02u"PTCACHE_EXT, pid->stack_index);
/* put new name into cache */
- strcpy(pid->cache->name, to);
+ BLI_strncpy(pid->cache->name, to, sizeof(pid->cache->name));
while ((de = readdir(dir)) != NULL) {
if (strstr(de->d_name, ext)) { /* do we have the right extension?*/
@@ -2963,7 +2963,7 @@ void BKE_ptcache_load_external(PTCacheID *pid)
if(cache->index >= 0)
BLI_snprintf(ext, sizeof(ext), "_%02d"PTCACHE_EXT, cache->index);
else
- strcpy(ext, PTCACHE_EXT);
+ BLI_strncpy(ext, PTCACHE_EXT, sizeof(ext));
while ((de = readdir(dir)) != NULL) {
if (strstr(de->d_name, ext)) { /* do we have the right extension?*/
diff --git a/source/blender/blenkernel/intern/property.c b/source/blender/blenkernel/intern/property.c
index cdf2e39a4dd..e0e2876f79e 100644
--- a/source/blender/blenkernel/intern/property.c
+++ b/source/blender/blenkernel/intern/property.c
@@ -166,7 +166,7 @@ void unique_property(bProperty *first, bProperty *prop, int force)
int i= 0;
/* strip numbers */
- strcpy(base_name, prop->name);
+ BLI_strncpy(base_name, prop->name, sizeof(base_name));
for(i= strlen(base_name)-1; (i>=0 && isdigit(base_name[i])); i--) {
base_name[i]= '\0';
}
@@ -178,7 +178,7 @@ void unique_property(bProperty *first, bProperty *prop, int force)
strcat(new_name, num);
} while(get_property__internal(first, prop, new_name));
- strcpy(prop->name, new_name);
+ BLI_strncpy(prop->name, new_name, sizeof(prop->name));
}
}
}
@@ -257,7 +257,7 @@ void set_property(bProperty *prop, char *str)
*((float *)&prop->data)= (float)atof(str);
break;
case GPROP_STRING:
- strcpy(prop->poin, str);
+ strcpy(prop->poin, str); /* TODO - check size? */
break;
}
diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c
index d8d6ed6ea6d..943066537d5 100644
--- a/source/blender/blenkernel/intern/seqeffects.c
+++ b/source/blender/blenkernel/intern/seqeffects.c
@@ -827,7 +827,7 @@ static void do_cross_effect_float(float facf0, float facf1, int x, int y,
}
}
-/* carefull: also used by speed effect! */
+/* careful: also used by speed effect! */
static struct ImBuf* do_cross_effect(
SeqRenderData context, Sequence *UNUSED(seq), float UNUSED(cfra),
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 5a2c53f5b9b..a7c19130929 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -866,8 +866,8 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq)
SeqUniqueInfo sui;
char *dot;
sui.seq= seq;
- strcpy(sui.name_src, seq->name+2);
- strcpy(sui.name_dest, seq->name+2);
+ BLI_strncpy(sui.name_src, seq->name+2, sizeof(sui.name_src));
+ BLI_strncpy(sui.name_dest, seq->name+2, sizeof(sui.name_dest));
sui.count= 1;
sui.match= 1; /* assume the worst to start the loop */
@@ -887,7 +887,7 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq)
seqbase_recursive_apply(seqbasep, seqbase_unique_name_recursive_cb, &sui);
}
- strcpy(seq->name+2, sui.name_dest);
+ BLI_strncpy(seq->name+2, sui.name_dest, sizeof(seq->name)-2);
}
static const char *give_seqname_by_type(int type)
@@ -1204,7 +1204,7 @@ static int seq_proxy_get_fname(SeqRenderData context, Sequence * seq, int cfra,
sorry folks, please rebuild your proxies... */
if (seq->flag & (SEQ_USE_PROXY_CUSTOM_DIR|SEQ_USE_PROXY_CUSTOM_FILE)) {
- strcpy(dir, seq->strip->proxy->dir);
+ BLI_strncpy(dir, seq->strip->proxy->dir, sizeof(dir));
} else if (seq->type == SEQ_IMAGE) {
BLI_snprintf(dir, PROXY_MAXFILE, "%s/BL_proxy", seq->strip->dir);
} else {
@@ -3360,9 +3360,9 @@ int seq_swap(Sequence *seq_a, Sequence *seq_b, const char **error_str)
SWAP(Sequence, *seq_a, *seq_b);
/* swap back names so animation fcurves dont get swapped */
- strcpy(name, seq_a->name+2);
- strcpy(seq_a->name+2, seq_b->name+2);
- strcpy(seq_b->name+2, name);
+ BLI_strncpy(name, seq_a->name+2, sizeof(name));
+ BLI_strncpy(seq_a->name+2, seq_b->name+2, sizeof(seq_b->name)-2);
+ BLI_strncpy(seq_b->name+2, name, sizeof(seq_b->name)-2);
/* swap back opacity, and overlay mode */
SWAP(int, seq_a->blend_mode, seq_b->blend_mode);
@@ -3647,7 +3647,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo
/* we only need 1 element to store the filename */
strip->stripdata= se= MEM_callocN(sizeof(StripElem), "stripelem");
- BLI_split_dirfile(seq_load->path, strip->dir, se->name);
+ BLI_split_dirfile(seq_load->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name));
seq->scene_sound = sound_add_scene_sound(scene, seq, seq_load->start_frame, seq_load->start_frame + strip->len, 0);
@@ -3706,7 +3706,7 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo
/* we only need 1 element for MOVIE strips */
strip->stripdata= se= MEM_callocN(sizeof(StripElem), "stripelem");
- BLI_split_dirfile(seq_load->path, strip->dir, se->name);
+ BLI_split_dirfile(seq_load->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name));
calc_sequence_disp(scene, seq);
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 85140841f15..49c8831f06c 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -812,13 +812,12 @@ void smokeModifier_copy(struct SmokeModifierData *smd, struct SmokeModifierData
}
}
+#ifdef WITH_SMOKE
// forward decleration
static void smoke_calc_transparency(float *result, float *input, float *p0, float *p1, int res[3], float dx, float *light, bresenham_callback cb, float correct);
static float calc_voxel_transp(float *result, float *input, int res[3], int *pixel, float *tRay, float correct);
-#ifdef WITH_SMOKE
-
static int get_lamp(Scene *scene, float *light)
{
Base *base_tmp = NULL;
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index 88f72c33802..8787ec07d9c 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -68,6 +68,7 @@ variables on the UI for now
#include "BLI_math.h"
#include "BLI_utildefines.h"
+#include "BLI_listbase.h"
#include "BLI_ghash.h"
#include "BLI_threads.h"
@@ -2818,7 +2819,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa
if (ob->softflag & OB_SB_FACECOLL) scan_for_ext_face_forces(ob,timenow);
/* finish matrix and solve */
-#if (0) // remove onl linking for now .. still i am not sure .. the jacobian can be usefull .. so keep that BM
+#if (0) // remove onl linking for now .. still i am not sure .. the jacobian can be useful .. so keep that BM
if(nl_flags & NLF_SOLVE){
//double sct,sst=PIL_check_seconds_timer();
for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) {
@@ -3540,7 +3541,7 @@ static void lattice_to_softbody(Scene *scene, Object *ob)
}
}
- /* create some helper edges to enable SB lattice to be usefull at all */
+ /* create some helper edges to enable SB lattice to be useful at all */
if (ob->softflag & OB_SB_EDGES){
makelatticesprings(lt,ob->soft->bspring,ob->softflag & OB_SB_QUADS,ob);
build_bps_springlist(ob); /* link bps to springs */
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index f2d92154c66..02e381fe9b4 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -63,6 +63,10 @@
#include "BKE_sequencer.h"
#include "BKE_scene.h"
+// evil quiet NaN definition
+static const int NAN_INT = 0x7FC00000;
+#define NAN_FLT *((float*)(&NAN_INT))
+
#ifdef WITH_AUDASPACE
// evil global ;-)
static int sound_cfra;
@@ -75,9 +79,9 @@ struct bSound* sound_new_file(struct Main *bmain, const char *filename)
char str[FILE_MAX];
char *path;
- int len;
+ size_t len;
- strcpy(str, filename);
+ BLI_strncpy(str, filename, sizeof(str));
path = /*bmain ? bmain->name :*/ G.main->name;
@@ -295,7 +299,10 @@ void sound_cache(struct bSound* sound)
AUD_unload(sound->cache);
sound->cache = AUD_bufferSound(sound->handle);
- sound->playback_handle = sound->cache;
+ if(sound->cache)
+ sound->playback_handle = sound->cache;
+ else
+ sound->playback_handle = sound->handle;
}
void sound_cache_notifying(struct Main* main, struct bSound* sound)
@@ -332,6 +339,8 @@ void sound_load(struct Main *bmain, struct bSound* sound)
sound->playback_handle = NULL;
}
+ sound_free_waveform(sound);
+
// XXX unused currently
#if 0
switch(sound->type)
@@ -625,7 +634,7 @@ float sound_sync_scene(struct Scene *scene)
else
return AUD_getPosition(scene->sound_scene_handle);
}
- return 0.0f;
+ return NAN_FLT;
}
int sound_scene_playing(struct Scene *scene)
@@ -782,7 +791,7 @@ static void sound_start_play_scene(struct Scene *UNUSED(scene)) {}
void sound_play_scene(struct Scene *UNUSED(scene)) {}
void sound_stop_scene(struct Scene *UNUSED(scene)) {}
void sound_seek_scene(struct Main *UNUSED(bmain), struct Scene *UNUSED(scene)) {}
-float sound_sync_scene(struct Scene *UNUSED(scene)) { return 0.0f; }
+float sound_sync_scene(struct Scene *UNUSED(scene)) { return NAN_FLT; }
int sound_scene_playing(struct Scene *UNUSED(scene)) { return -1; }
int sound_read_sound_buffer(struct bSound* UNUSED(sound), float* UNUSED(buffer), int UNUSED(length), float UNUSED(start), float UNUSED(end)) { return 0; }
void sound_read_waveform(struct bSound* sound) { (void)sound; }
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index d344f79bb6c..7d720aed62c 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -992,7 +992,7 @@ void autotexname(Tex *tex)
if(tex->type==TEX_IMAGE) {
ima= tex->ima;
if(ima) {
- strcpy(di, ima->name);
+ BLI_strncpy(di, ima->name, sizeof(di));
BLI_splitdirstring(di, fi);
strcpy(di, "I.");
strcat(di, fi);
diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h
index ba5d04f3021..cda7a51c47f 100644
--- a/source/blender/blenlib/BLI_blenlib.h
+++ b/source/blender/blenlib/BLI_blenlib.h
@@ -74,6 +74,8 @@ extern "C" {
#include "BLI_string.h"
+#include "BLI_string_utf8.h"
+
#include "BLI_path_util.h"
#include "BLI_storage.h"
diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h
index e4afc6ad79b..e4ef834822f 100644
--- a/source/blender/blenlib/BLI_ghash.h
+++ b/source/blender/blenlib/BLI_ghash.h
@@ -39,13 +39,6 @@
extern "C" {
#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "BLI_mempool.h"
-#include "BLI_blenlib.h"
-
typedef unsigned int (*GHashHashFP) (const void *key);
typedef int (*GHashCmpFP) (const void *a, const void *b);
typedef void (*GHashKeyFreeFP) (void *key);
diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h
index 81fc8a50db6..4f7f7b482b5 100644
--- a/source/blender/blenlib/BLI_path_util.h
+++ b/source/blender/blenlib/BLI_path_util.h
@@ -103,7 +103,7 @@ void BLI_setenv_if_new(const char *env, const char* val);
void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file);
void BLI_make_exist(char *dir);
void BLI_make_existing_file(const char *name);
-void BLI_split_dirfile(const char *string, char *dir, char *file);
+void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen);
void BLI_join_dirfile(char *string, const size_t maxlen, const char *dir, const char *file);
char *BLI_path_basename(char *path);
int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const char *base_dir, const char *src_dir, const char *dest_dir);
diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h
index c53ce9dced5..958f240e3a8 100644
--- a/source/blender/blenlib/BLI_string.h
+++ b/source/blender/blenlib/BLI_string.h
@@ -25,9 +25,7 @@
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
- *
- * $Id$
-*/
+ */
#ifndef BLI_STRING_H
#define BLI_STRING_H
@@ -142,12 +140,6 @@ void BLI_timestr(double _time, char *str); /* time var is global */
void BLI_ascii_strtolower(char *str, int len);
void BLI_ascii_strtoupper(char *str, int len);
-
-/* string_utf8.c - may move these into their own header some day - campbell */
-char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy);
-int BLI_utf8_invalid_byte(const char *str, int length);
-int BLI_utf8_invalid_strip(char *str, int length);
-
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h
new file mode 100644
index 00000000000..c3bb81dd03f
--- /dev/null
+++ b/source/blender/blenlib/BLI_string_utf8.h
@@ -0,0 +1,55 @@
+/*
+ * $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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef BLI_STRING_UTF8_H
+#define BLI_STRING_UTF8_H
+
+/** \file BLI_string_utf8.h
+ * \ingroup bli
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy);
+int BLI_utf8_invalid_byte(const char *str, int length);
+int BLI_utf8_invalid_strip(char *str, int length);
+
+ /* copied from glib */
+char *BLI_str_find_prev_char_utf8(const char *str, const char *p);
+char *BLI_str_find_next_char_utf8(const char *p, const char *end);
+char *BLI_str_prev_char_utf8(const char *p);
+
+ /* wchar_t functions, copied from blenders own font.c originally */
+size_t BLI_wstrlen_utf8(const wchar_t *src);
+size_t BLI_strlen_utf8(const char *strc);
+size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy);
+size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst, const char *src, const size_t maxcpy);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index 456ee72c4e0..b2b3e7381c6 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -221,7 +221,7 @@
# else
# define _dummy_abort() (void)0
# endif
-# ifdef __GNUC__ /* just want to check if __func__ is available */
+# if defined(__GNUC__) || defined(_MSC_VER) /* just want to check if __func__ is available */
# define BLI_assert(a) \
do { \
if (!(a)) { \
diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt
index aa822731474..ea9f72c19c3 100644
--- a/source/blender/blenlib/CMakeLists.txt
+++ b/source/blender/blenlib/CMakeLists.txt
@@ -128,6 +128,7 @@ set(SRC
BLI_storage.h
BLI_storage_types.h
BLI_string.h
+ BLI_string_utf8.h
BLI_threads.h
BLI_utildefines.h
BLI_uvproject.h
diff --git a/source/blender/blenlib/intern/BLI_args.c b/source/blender/blenlib/intern/BLI_args.c
index cf3605a80ff..00903aa42cd 100644
--- a/source/blender/blenlib/intern/BLI_args.c
+++ b/source/blender/blenlib/intern/BLI_args.c
@@ -35,12 +35,13 @@
#include <ctype.h> /* for tolower */
+#include <string.h>
#include "MEM_guardedalloc.h"
+#include "BLI_utildefines.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
-#include "BLI_utildefines.h"
#include "BLI_args.h"
#include "BLI_ghash.h"
diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c
index 03e3b7ab560..e34abaf15f9 100644
--- a/source/blender/blenlib/intern/BLI_ghash.c
+++ b/source/blender/blenlib/intern/BLI_ghash.c
@@ -32,11 +32,20 @@
* \ingroup bli
*/
+#include <string.h>
+#include <stdlib.h>
+
#include "MEM_guardedalloc.h"
+
+
+// #include "BLI_blenlib.h"
+
+#include "BLI_mempool.h"
#include "BLI_utildefines.h"
#include "BLI_ghash.h"
+
#include "BLO_sys_types.h" // for intptr_t support
/***/
diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c
index 485b8137a02..4e4f8b3cade 100644
--- a/source/blender/blenlib/intern/bpath.c
+++ b/source/blender/blenlib/intern/bpath.c
@@ -400,7 +400,7 @@ static void seq_setpath(struct BPathIterator *bpi, const char *path)
if (SEQ_HAS_PATH(seq)) {
if (ELEM3(seq->type, SEQ_IMAGE, SEQ_MOVIE, SEQ_SOUND)) {
- BLI_split_dirfile(path, seq->strip->dir, seq->strip->stripdata->name);
+ BLI_split_dirfile(path, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name));
}
else {
/* simple case */
@@ -903,7 +903,7 @@ void findMissingFiles(Main *bmain, const char *str)
//XXX waitcursor( 1 );
- BLI_split_dirfile(str, dirname, NULL);
+ BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0);
BLI_bpathIterator_init(&bpi, bmain, bmain->name, 0);
diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c
index 9ccd7fbe121..e848ad8d0d3 100644
--- a/source/blender/blenlib/intern/fileops.c
+++ b/source/blender/blenlib/intern/fileops.c
@@ -227,7 +227,7 @@ int BLI_move(const char *file, const char *to) {
// it has to be 'mv filename filename' and not
// 'mv filename destdir'
- strcpy(str, to);
+ BLI_strncpy(str, to, sizeof(str));
// points 'to' to a directory ?
if (BLI_last_slash(str) == (str + strlen(str) - 1)) {
if (BLI_last_slash(file) != NULL) {
@@ -252,7 +252,7 @@ int BLI_copy_fileops(const char *file, const char *to) {
// it has to be 'cp filename filename' and not
// 'cp filename destdir'
- strcpy(str, to);
+ BLI_strncpy(str, to, sizeof(str));
// points 'to' to a directory ?
if (BLI_last_slash(str) == (str + strlen(str) - 1)) {
if (BLI_last_slash(file) != NULL) {
@@ -286,7 +286,7 @@ void BLI_recurdir_fileops(const char *dirname) {
// blah1/blah2/ (with slash) after creating
// blah1/blah2 (without slash)
- strcpy(tmp, dirname);
+ BLI_strncpy(tmp, dirname, sizeof(tmp));
lslash= BLI_last_slash(tmp);
if (lslash == tmp + strlen(tmp) - 1) {
@@ -371,7 +371,7 @@ void BLI_recurdir_fileops(const char *dirname) {
if (BLI_exists(dirname)) return;
- strcpy(tmp, dirname);
+ BLI_strncpy(tmp, dirname, sizeof(tmp));
lslash= BLI_last_slash(tmp);
if (lslash) {
diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c
index 0fe028eb3c0..7e5d03423e5 100644
--- a/source/blender/blenlib/intern/freetypefont.c
+++ b/source/blender/blenlib/intern/freetypefont.c
@@ -364,7 +364,7 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf)
// get the name
fontname = FT_Get_Postscript_Name(face);
- strcpy(vfd->name, (fontname == NULL) ? "" : fontname);
+ BLI_strncpy(vfd->name, (fontname == NULL) ? "" : fontname, sizeof(vfd->name));
// Extract the first 256 character from TTF
lcode= charcode= FT_Get_First_Char(face, &glyph_index);
diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c
index b206e275d9a..21f91ce8f14 100644
--- a/source/blender/blenlib/intern/path_util.c
+++ b/source/blender/blenlib/intern/path_util.c
@@ -894,7 +894,7 @@ static int get_path_local(char *targetpath, const char *folder_name, const char
}
/* use argv[0] (bprogname) to get the path to the executable */
- BLI_split_dirfile(bprogname, bprogdir, NULL);
+ BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0);
/* try EXECUTABLE_DIR/2.5x/folder_name - new default directory for local blender installed files */
if(test_path(targetpath, bprogdir, blender_version_decimal(ver), relfolder))
@@ -966,7 +966,7 @@ static int get_path_system(char *targetpath, const char *folder_name, const char
char bprogdir[FILE_MAX];
/* use argv[0] (bprogname) to get the path to the executable */
- BLI_split_dirfile(bprogname, bprogdir, NULL);
+ BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0);
if(folder_name) {
if (subfolder_name) {
@@ -1411,40 +1411,60 @@ int BLI_replace_extension(char *path, size_t maxlen, const char *ext)
* - dosnt use CWD, or deal with relative paths.
* - Only fill's in *dir and *file when they are non NULL
* */
-void BLI_split_dirfile(const char *string, char *dir, char *file)
+void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen)
{
char *lslash_str = BLI_last_slash(string);
- int lslash= lslash_str ? (int)(lslash_str - string) + 1 : 0;
+ size_t lslash= lslash_str ? (size_t)(lslash_str - string) + 1 : 0;
if (dir) {
if (lslash) {
- BLI_strncpy( dir, string, lslash + 1); /* +1 to include the slash and the last char */
- } else {
+ BLI_strncpy( dir, string, MIN2(dirlen, lslash + 1)); /* +1 to include the slash and the last char */
+ }
+ else {
dir[0] = '\0';
}
}
if (file) {
- strcpy( file, string+lslash);
+ BLI_strncpy(file, string+lslash, filelen);
}
}
/* simple appending of filename to dir, does not check for valid path! */
-void BLI_join_dirfile(char *string, const size_t maxlen, const char *dir, const char *file)
+void BLI_join_dirfile(char *dst, const size_t maxlen, const char *dir, const char *file)
{
- int sl_dir;
+ size_t dirlen= BLI_strnlen(dir, maxlen);
- if(string != dir) /* compare pointers */
- BLI_strncpy(string, dir, maxlen -(file ? 1 : 0));
+ if (dst != dir) {
+ if(dirlen == maxlen) {
+ memcpy(dst, dir, dirlen);
+ dst[dirlen - 1]= '\0';
+ return; /* dir fills the path */
+ }
+ else {
+ memcpy(dst, dir, dirlen + 1);
+ }
+ }
- if (!file)
- return;
+ if (dirlen + 1 >= maxlen) {
+ return; /* fills the path */
+ }
- sl_dir= BLI_add_slash(string);
-
- if (sl_dir < maxlen) {
- BLI_strncpy(string + sl_dir, file, maxlen - sl_dir);
+ /* inline BLI_add_slash */
+ if (dst[dirlen - 1] != SEP) {
+ dst[dirlen++]= SEP;
+ dst[dirlen ]= '\0';
+ }
+
+ if (dirlen >= maxlen) {
+ return; /* fills the path */
}
+
+ if (file == NULL) {
+ return;
+ }
+
+ BLI_strncpy(dst + dirlen, file, maxlen - dirlen);
}
/* like pythons os.path.basename( ) */
@@ -1496,7 +1516,7 @@ int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const
if (rel)
rel[0]= 0;
- BLI_split_dirfile(base_dir, blend_dir, NULL);
+ BLI_split_dirfile(base_dir, blend_dir, NULL, sizeof(blend_dir), 0);
if (src_dir[0]=='\0')
return 0;
@@ -1507,7 +1527,7 @@ int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const
BLI_path_abs(path, base_dir);
/* get the directory part */
- BLI_split_dirfile(path, dir, base);
+ BLI_split_dirfile(path, dir, base, sizeof(dir), sizeof(base));
len= strlen(blend_dir);
@@ -1661,7 +1681,7 @@ void BLI_where_am_i(char *fullname, const size_t maxlen, const char *name)
#ifdef WITH_BINRELOC
- /* linux uses binreloc since argv[0] is not relyable, call br_init( NULL ) first */
+ /* linux uses binreloc since argv[0] is not reliable, call br_init( NULL ) first */
path = br_find_exe( NULL );
if (path) {
BLI_strncpy(fullname, path, maxlen);
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index e336b914ffa..7638e95b4ec 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -304,15 +304,15 @@ void BLI_adddirstrings(void)
for(num=0, file= files; num<actnum; num++, file++){
#ifdef WIN32
mode = 0;
- strcpy(file->mode1, types[0]);
- strcpy(file->mode2, types[0]);
- strcpy(file->mode3, types[0]);
+ BLI_strncpy(file->mode1, types[0], sizeof(file->mode1));
+ BLI_strncpy(file->mode2, types[0], sizeof(file->mode2));
+ BLI_strncpy(file->mode3, types[0], sizeof(file->mode3));
#else
mode = file->s.st_mode;
- strcpy(file->mode1, types[(mode & 0700) >> 6]);
- strcpy(file->mode2, types[(mode & 0070) >> 3]);
- strcpy(file->mode3, types[(mode & 0007)]);
+ BLI_strncpy(file->mode1, types[(mode & 0700) >> 6], sizeof(file->mode1));
+ BLI_strncpy(file->mode2, types[(mode & 0070) >> 3], sizeof(file->mode2));
+ BLI_strncpy(file->mode3, types[(mode & 0007)], sizeof(file->mode3));
if (((mode & S_ISGID) == S_ISGID) && (file->mode2[2]=='-'))file->mode2[2]='l';
diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c
index 961a41690f7..f331d13e580 100644
--- a/source/blender/blenlib/intern/string_utf8.c
+++ b/source/blender/blenlib/intern/string_utf8.c
@@ -31,6 +31,8 @@
*/
#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
#include "BLI_string.h"
@@ -183,3 +185,236 @@ char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy)
return dst_r;
}
+
+/* --------------------------------------------------------------------------*/
+/* wchar_t / utf8 functions */
+
+/* UTF-8 <-> wchar transformations */
+static size_t chtoutf8(const unsigned long c, char o[4])
+{
+ // Variables and initialization
+/* memset(o, 0, 4); */
+
+ // Create the utf-8 string
+ if (c < 0x80) {
+ o[0] = (char) c;
+ return 1;
+ }
+ else if (c < 0x800) {
+ o[0] = (0xC0 | (c>>6));
+ o[1] = (0x80 | (c & 0x3f));
+ return 2;
+ }
+ else if (c < 0x10000) {
+ o[0] = (0xe0 | (c >> 12));
+ o[1] = (0x80 | (c >>6 & 0x3f));
+ o[2] = (0x80 | (c & 0x3f));
+ return 3;
+ }
+ else if (c < 0x200000) {
+ o[0] = (0xf0 | (c>>18));
+ o[1] = (0x80 | (c >>12 & 0x3f));
+ o[2] = (0x80 | (c >> 6 & 0x3f));
+ o[3] = (0x80 | (c & 0x3f));
+ return 4;
+ }
+
+ /* should we assert here? */
+ return 0;
+}
+
+size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy)
+{
+ size_t len = 0;
+ while(*src && len < maxcpy) { /* XXX can still run over the buffer because utf8 size isnt known :| */
+ len += chtoutf8(*src++, dst+len);
+ }
+
+ dst[len]= '\0';
+
+ return len;
+}
+
+/* wchar len in utf8 */
+size_t BLI_wstrlen_utf8(const wchar_t *src)
+{
+ char ch_dummy[4];
+ size_t len = 0;
+
+ while(*src) {
+ len += chtoutf8(*src++, ch_dummy);
+ }
+
+ return len;
+}
+
+// utf8slen
+size_t BLI_strlen_utf8(const char *strc)
+{
+ int len=0;
+
+ while(*strc) {
+ if ((*strc & 0xe0) == 0xc0) {
+ if((strc[1] & 0x80) && (strc[1] & 0x40) == 0x00)
+ strc++;
+ } else if ((*strc & 0xf0) == 0xe0) {
+ if((strc[1] & strc[2] & 0x80) && ((strc[1] | strc[2]) & 0x40) == 0x00)
+ strc += 2;
+ } else if ((*strc & 0xf8) == 0xf0) {
+ if((strc[1] & strc[2] & strc[3] & 0x80) && ((strc[1] | strc[2] | strc[3]) & 0x40) == 0x00)
+ strc += 3;
+ }
+
+ strc++;
+ len++;
+ }
+
+ return len;
+}
+
+
+/* Converts Unicode to wchar
+
+According to RFC 3629 "UTF-8, a transformation format of ISO 10646"
+(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are:
+
+ Char. number range | UTF-8 octet sequence
+ (hexadecimal) | (binary)
+ --------------------+---------------------------------------------
+ 0000 0000-0000 007F | 0xxxxxxx
+ 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
+ 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
+ 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+
+If the encoding incidated by the first character is incorrect (because the
+1 to 3 following characters do not match 10xxxxxx), the output is a '?' and
+only a single input character is consumed.
+
+*/
+
+size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size_t maxcpy)
+{
+ int len=0;
+
+ if(dst_w==NULL || src_c==NULL) return(0);
+
+ while(*src_c && len < maxcpy) {
+ if ((*src_c & 0xe0) == 0xc0) {
+ if((src_c[1] & 0x80) && (src_c[1] & 0x40) == 0x00) {
+ *dst_w=((src_c[0] &0x1f)<<6) | (src_c[1]&0x3f);
+ src_c++;
+ } else {
+ *dst_w = '?';
+ }
+ } else if ((*src_c & 0xf0) == 0xe0) {
+ if((src_c[1] & src_c[2] & 0x80) && ((src_c[1] | src_c[2]) & 0x40) == 0x00) {
+ *dst_w=((src_c[0] & 0x0f)<<12) | ((src_c[1]&0x3f)<<6) | (src_c[2]&0x3f);
+ src_c += 2;
+ } else {
+ *dst_w = '?';
+ }
+ } else if ((*src_c & 0xf8) == 0xf0) {
+ if((src_c[1] & src_c[2] & src_c[3] & 0x80) && ((src_c[1] | src_c[2] | src_c[3]) & 0x40) == 0x00) {
+ *dst_w=((src_c[0] & 0x07)<<18) | ((src_c[1]&0x1f)<<12) | ((src_c[2]&0x3f)<<6) | (src_c[3]&0x3f);
+ src_c += 3;
+ } else {
+ *dst_w = '?';
+ }
+ } else {
+ *dst_w=(src_c[0] & 0x7f);
+ }
+
+ src_c++;
+ dst_w++;
+ len++;
+ }
+ return len;
+}
+
+/* end wchar_t / utf8 functions */
+/* --------------------------------------------------------------------------*/
+
+
+
+
+
+/* copied from glib */
+/**
+ * g_utf8_find_prev_char:
+ * @str: pointer to the beginning of a UTF-8 encoded string
+ * @p: pointer to some position within @str
+ *
+ * Given a position @p with a UTF-8 encoded string @str, find the start
+ * of the previous UTF-8 character starting before @p. Returns %NULL if no
+ * UTF-8 characters are present in @str before @p.
+ *
+ * @p does not have to be at the beginning of a UTF-8 character. No check
+ * is made to see if the character found is actually valid other than
+ * it starts with an appropriate byte.
+ *
+ * Return value: a pointer to the found character or %NULL.
+ **/
+char * BLI_str_find_prev_char_utf8(const char *str, const char *p)
+{
+ for (--p; p >= str; --p) {
+ if ((*p & 0xc0) != 0x80) {
+ return (char *)p;
+ }
+ }
+ return NULL;
+}
+
+/**
+ * g_utf8_find_next_char:
+ * @p: a pointer to a position within a UTF-8 encoded string
+ * @end: a pointer to the byte following the end of the string,
+ * or %NULL to indicate that the string is nul-terminated.
+ *
+ * Finds the start of the next UTF-8 character in the string after @p.
+ *
+ * @p does not have to be at the beginning of a UTF-8 character. No check
+ * is made to see if the character found is actually valid other than
+ * it starts with an appropriate byte.
+ *
+ * Return value: a pointer to the found character or %NULL
+ **/
+char *BLI_str_find_next_char_utf8(const char *p, const char *end)
+{
+ if (*p) {
+ if (end) {
+ for (++p; p < end && (*p & 0xc0) == 0x80; ++p) {
+ /* do nothing */
+ }
+ }
+ else {
+ for (++p; (*p & 0xc0) == 0x80; ++p) {
+ /* do nothing */
+ }
+ }
+ }
+ return (p == end) ? NULL : (char *)p;
+}
+
+/**
+ * g_utf8_prev_char:
+ * @p: a pointer to a position within a UTF-8 encoded string
+ *
+ * Finds the previous UTF-8 character in the string before @p.
+ *
+ * @p does not have to be at the beginning of a UTF-8 character. No check
+ * is made to see if the character found is actually valid other than
+ * it starts with an appropriate byte. If @p might be the first
+ * character of the string, you must use g_utf8_find_prev_char() instead.
+ *
+ * Return value: a pointer to the found character.
+ **/
+char *BLI_str_prev_char_utf8(const char *p)
+{
+ while (1) {
+ p--;
+ if ((*p & 0xc0) != 0x80) {
+ return (char *)p;
+ }
+ }
+}
+/* end glib copy */
diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c
index 3b14abb0bee..9594197ef90 100644
--- a/source/blender/blenlib/intern/winstuff.c
+++ b/source/blender/blenlib/intern/winstuff.c
@@ -53,11 +53,10 @@
int BLI_getInstallationDir( char * str ) {
char dir[FILE_MAXDIR];
- char file[FILE_MAXFILE];
int a;
GetModuleFileName(NULL,str,FILE_MAXDIR+FILE_MAXFILE);
- BLI_split_dirfile(str,dir,file); /* shouldn't be relative */
+ BLI_split_dirfile(str, dir, NULL, sizeof(dir), 0); /* shouldn't be relative */
a = strlen(dir);
if(dir[a-1] == '\\') dir[a-1]=0;
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index 47931477728..2799b2165f0 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -204,7 +204,7 @@ BLO_blendhandle_close(
#define GROUP_MAX 32
-int BLO_has_bfile_extension(char *str);
+int BLO_has_bfile_extension(const char *str);
/* return ok when a blenderfile, in dir is the filename,
* in group the type of libdata
@@ -252,7 +252,7 @@ void BLO_library_append_end(const struct bContext *C, struct Main *mainl, BlendH
void *BLO_library_read_struct(struct FileData *fd, struct BHead *bh, const char *blockname);
-BlendFileData* blo_read_blendafterruntime(int file, char *name, int actualsize, struct ReportList *reports);
+BlendFileData* blo_read_blendafterruntime(int file, const char *name, int actualsize, struct ReportList *reports);
#ifdef __cplusplus
}
diff --git a/source/blender/blenloader/BLO_runtime.h b/source/blender/blenloader/BLO_runtime.h
index 920b14e92fa..0a3ceeefa78 100644
--- a/source/blender/blenloader/BLO_runtime.h
+++ b/source/blender/blenloader/BLO_runtime.h
@@ -42,8 +42,8 @@ extern "C" {
struct BlendFileData;
struct ReportList;
-int BLO_is_a_runtime(char *file);
-struct BlendFileData *BLO_read_runtime(char *file, struct ReportList *reports);
+int BLO_is_a_runtime(const char *file);
+struct BlendFileData *BLO_read_runtime(const char *file, struct ReportList *reports);
#ifdef __cplusplus
}
diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c
index 0e93e5fa8c0..ded5a95df5a 100644
--- a/source/blender/blenloader/intern/readblenentry.c
+++ b/source/blender/blenloader/intern/readblenentry.c
@@ -44,6 +44,8 @@
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BLI_ghash.h"
#include "BLI_linklist.h"
@@ -288,7 +290,7 @@ BlendFileData *BLO_read_from_memfile(Main *oldmain, const char *filename, MemFil
fd = blo_openblendermemfile(memfile, reports);
if (fd) {
fd->reports= reports;
- strcpy(fd->relabase, filename);
+ BLI_strncpy(fd->relabase, filename, sizeof(fd->relabase));
/* clear ob->proxy_from pointers in old main */
blo_clear_proxy_pointers_from_lib(oldmain);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index fb1beec1cbf..7a8bacf1ec6 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1050,7 +1050,7 @@ void blo_freefiledata(FileData *fd)
/* ************ DIV ****************** */
-int BLO_has_bfile_extension(char *str)
+int BLO_has_bfile_extension(const char *str)
{
return (BLI_testextensie(str, ".ble") || BLI_testextensie(str, ".blend") || BLI_testextensie(str, ".blend.gz"));
}
@@ -7227,6 +7227,19 @@ void convert_tface_mt(FileData *fd, Main *main)
}
}
+static void do_versions_nodetree_image_default_alpha_output(bNodeTree *ntree)
+{
+ bNode *node;
+ bNodeSocket *sock;
+ for (node=ntree->nodes.first; node; node=node->next) {
+ if (ELEM(node->type, CMP_NODE_IMAGE, CMP_NODE_R_LAYERS)) {
+ /* default Image output value should have 0 alpha */
+ sock = node->outputs.first;
+ ((bNodeSocketValueRGBA*)sock->default_value)->value[3] = 0.0f;
+ }
+ }
+}
+
static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -9421,7 +9434,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
simasel->prv_h = 96;
simasel->prv_w = 96;
simasel->flag = 7; /* ??? elubie */
- strcpy (simasel->dir, U.textudir); /* TON */
+ BLI_strncpy (simasel->dir, U.textudir, sizeof(simasel->dir)); /* TON */
simasel->file[0]= '\0';
simasel->returnfunc = NULL;
@@ -9644,7 +9657,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ct= MEM_callocN(sizeof(bConstraintTarget), "PyConTarget");
ct->tar = data->tar;
- strcpy(ct->subtarget, data->subtarget);
+ BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget));
ct->space = con->tarspace;
BLI_addtail(&data->targets, ct);
@@ -9674,7 +9687,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ct= MEM_callocN(sizeof(bConstraintTarget), "PyConTarget");
ct->tar = data->tar;
- strcpy(ct->subtarget, data->subtarget);
+ BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget));
ct->space = con->tarspace;
BLI_addtail(&data->targets, ct);
@@ -10361,8 +10374,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
{
if(scene->ed && scene->ed->seqbasep)
{
- for(seq = scene->ed->seqbasep->first; seq; seq = seq->next)
- {
+ SEQ_BEGIN(scene->ed, seq) {
if(seq->type == SEQ_HD_SOUND)
{
char str[FILE_MAX];
@@ -10382,6 +10394,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
seq->strip->dir);
}
}
+ SEQ_END
}
}
@@ -12154,8 +12167,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
aa->flag = ia->flag;
aa->sta = ia->sta;
aa->end = ia->end;
- strcpy(aa->name, ia->name);
- strcpy(aa->frameProp, ia->frameProp);
+ BLI_strncpy(aa->name, ia->name, sizeof(aa->name));
+ BLI_strncpy(aa->frameProp, ia->frameProp, sizeof(aa->frameProp));
if (ob->adt)
aa->act = ob->adt->action;
@@ -12347,6 +12360,38 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
/* put compatibility code here until next subversion bump */
{
+ {
+ /* set default alpha value of Image outputs in image and render layer nodes to 0 */
+ Scene *sce;
+ bNodeTree *ntree;
+
+ for (sce=main->scene.first; sce; sce=sce->id.next) {
+ /* there are files with invalid audio_channels value, the real cause
+ is unknown, but we fix it here anyway to avoid crashes */
+ if(sce->r.ffcodecdata.audio_channels == 0)
+ sce->r.ffcodecdata.audio_channels = 2;
+
+ if (sce->nodetree)
+ do_versions_nodetree_image_default_alpha_output(sce->nodetree);
+ }
+
+ for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next)
+ do_versions_nodetree_image_default_alpha_output(ntree);
+ }
+
+ {
+ /* support old particle dupliobject rotation settings */
+ ParticleSettings *part;
+
+ for (part=main->particle.first; part; part=part->id.next) {
+ if(ELEM(part->ren_as, PART_DRAW_OB, PART_DRAW_GR)) {
+ part->draw |= PART_DRAW_ROTATE_OB;
+
+ if(part->rotmode == 0)
+ part->rotmode = PART_ROT_VEL;
+ }
+ }
+ }
}
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
@@ -13466,7 +13511,7 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, const
if( ob->id.flag & LIB_INDIRECT ) {
/* IF below is quite confusing!
- if we are appending, but this object wasnt just added allong with a group,
+ if we are appending, but this object wasnt just added along with a group,
then this is already used indirectly in the scene somewhere else and we didnt just append it.
(ob->id.flag & LIB_PRE_EXISTING)==0 means that this is a newly appended object - Campbell */
@@ -13814,8 +13859,8 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
printf(" enter a new path:\n");
if(scanf("%s", newlib_path) > 0) {
- strcpy(mainptr->curlib->name, newlib_path);
- strcpy(mainptr->curlib->filepath, newlib_path);
+ BLI_strncpy(mainptr->curlib->name, newlib_path, sizeof(mainptr->curlib->name));
+ BLI_strncpy(mainptr->curlib->filepath, newlib_path, sizeof(mainptr->curlib->filepath));
cleanup_path(G.main->name, mainptr->curlib->filepath);
fd= blo_openblenderfile(mainptr->curlib->filepath, basefd->reports);
@@ -13931,7 +13976,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
/* reading runtime */
-BlendFileData *blo_read_blendafterruntime(int file, char *name, int actualsize, ReportList *reports)
+BlendFileData *blo_read_blendafterruntime(int file, const char *name, int actualsize, ReportList *reports)
{
BlendFileData *bfd = NULL;
FileData *fd = filedata_new();
diff --git a/source/blender/blenloader/intern/runtime.c b/source/blender/blenloader/intern/runtime.c
index f5308b5ea5c..7a241e007f2 100644
--- a/source/blender/blenloader/intern/runtime.c
+++ b/source/blender/blenloader/intern/runtime.c
@@ -68,7 +68,7 @@ static int handle_read_msb_int(int handle)
return (buf[0]<<24) + (buf[1]<<16) + (buf[2]<<8) + (buf[3]<<0);
}
-int BLO_is_a_runtime(char *path)
+int BLO_is_a_runtime(const char *path)
{
int res= 0, fd= open(path, O_BINARY|O_RDONLY, 0);
int datastart;
@@ -97,7 +97,7 @@ cleanup:
return res;
}
-BlendFileData *BLO_read_runtime(char *path, ReportList *reports)
+BlendFileData *BLO_read_runtime(const char *path, ReportList *reports)
{
BlendFileData *bfd= NULL;
size_t actualsize;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 2ac6d1aed94..7387b2d5d53 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2690,8 +2690,8 @@ int BLO_write_file(Main *mainvar, const char *filepath, int write_flags, ReportL
if(write_flags & G_FILE_RELATIVE_REMAP) {
char dir1[FILE_MAXDIR+FILE_MAXFILE];
char dir2[FILE_MAXDIR+FILE_MAXFILE];
- BLI_split_dirfile(filepath, dir1, NULL);
- BLI_split_dirfile(mainvar->name, dir2, NULL);
+ BLI_split_dirfile(filepath, dir1, NULL, sizeof(dir1), 0);
+ BLI_split_dirfile(mainvar->name, dir2, NULL, sizeof(dir2), 0);
/* just incase there is some subtle difference */
BLI_cleanup_dir(mainvar->name, dir1);
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp
index 61f1b1dfa08..dec93c0ff63 100644
--- a/source/blender/collada/AnimationImporter.cpp
+++ b/source/blender/collada/AnimationImporter.cpp
@@ -691,7 +691,7 @@ void AnimationImporter::apply_matrix_curves( Object * ob, std::vector<FCurve*>&
if (is_joint)
BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
else
- strcpy(rna_path, tm_str);
+ BLI_strncpy(rna_path, tm_str, sizeof(rna_path));
newcu[i] = create_fcurve(axis, rna_path);
newcu[i]->totvert = frames.size();
}
@@ -962,30 +962,32 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node ,
for (unsigned int j = 0; j < matBinds.getCount(); j++) {
const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial();
const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]);
- const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
- COLLADAFW::EffectCommon *efc = commonEffects[0];
- if((animType->material & MATERIAL_SHININESS) != 0){
- const COLLADAFW::FloatOrParam *shin = &(efc->getShininess());
- const COLLADAFW::UniqueId& listid = shin->getAnimationList();
- Assign_float_animations( listid, AnimCurves , "specular_hardness" );
- }
+ if (ef != NULL) { /* can be NULL [#28909] */
+ const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
+ COLLADAFW::EffectCommon *efc = commonEffects[0];
+ if((animType->material & MATERIAL_SHININESS) != 0){
+ const COLLADAFW::FloatOrParam *shin = &(efc->getShininess());
+ const COLLADAFW::UniqueId& listid = shin->getAnimationList();
+ Assign_float_animations( listid, AnimCurves , "specular_hardness" );
+ }
- if((animType->material & MATERIAL_IOR) != 0){
- const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction());
- const COLLADAFW::UniqueId& listid = ior->getAnimationList();
- Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" );
- }
+ if((animType->material & MATERIAL_IOR) != 0){
+ const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction());
+ const COLLADAFW::UniqueId& listid = ior->getAnimationList();
+ Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" );
+ }
- if((animType->material & MATERIAL_SPEC_COLOR) != 0){
- const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular());
- const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
- Assign_color_animations( listid, AnimCurves , "specular_color" );
- }
+ if((animType->material & MATERIAL_SPEC_COLOR) != 0){
+ const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular());
+ const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
+ Assign_color_animations( listid, AnimCurves , "specular_color" );
+ }
- if((animType->material & MATERIAL_DIFF_COLOR) != 0){
- const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse());
- const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
- Assign_color_animations( listid, AnimCurves , "diffuse_color" );
+ if((animType->material & MATERIAL_DIFF_COLOR) != 0){
+ const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse());
+ const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
+ Assign_color_animations( listid, AnimCurves , "diffuse_color" );
+ }
}
}
}
@@ -1051,14 +1053,16 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD
for (unsigned int j = 0; j < matBinds.getCount(); j++) {
const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial();
const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]);
- const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
- if(!commonEffects.empty()) {
- COLLADAFW::EffectCommon *efc = commonEffects[0];
- types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS);
- types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR);
- types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR);
- // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY);
- types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR);
+ if (ef != NULL) { /* can be NULL [#28909] */
+ const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
+ if(!commonEffects.empty()) {
+ COLLADAFW::EffectCommon *efc = commonEffects[0];
+ types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS);
+ types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR);
+ types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR);
+ // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY);
+ types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR);
+ }
}
}
}
@@ -1067,10 +1071,10 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD
int AnimationImporter::setAnimType ( const COLLADAFW::Animatable * prop , int types, int addition)
{
- const COLLADAFW::UniqueId& listid = prop->getAnimationList();
- if (animlist_map.find(listid) != animlist_map.end())
- return types|addition;
- else return types;
+ const COLLADAFW::UniqueId& listid = prop->getAnimationList();
+ if (animlist_map.find(listid) != animlist_map.end())
+ return types|addition;
+ else return types;
}
// Is not used anymore.
@@ -1242,7 +1246,7 @@ Object *AnimationImporter::translate_animation_OLD(COLLADAFW::Node *node,
if (is_joint)
BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str);
else
- strcpy(rna_path, tm_str);
+ BLI_strncpy(rna_path, tm_str, sizeof(rna_path));
newcu[i] = create_fcurve(axis, rna_path);
#ifdef ARMATURE_TEST
diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp
index e98f551a097..056d74aabfb 100644
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@ -884,7 +884,7 @@ bool DocumentImporter::writeImage( const COLLADAFW::Image* image )
char dir[FILE_MAX];
char full_path[FILE_MAX];
- BLI_split_dirfile(filename, dir, NULL);
+ BLI_split_dirfile(filename, dir, NULL, sizeof(dir), 0);
BLI_join_dirfile(full_path, sizeof(full_path), dir, filepath.c_str());
Image *ima = BKE_add_image_file(full_path);
if (!ima) {
diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp
index 747f3c783d7..53c43677c18 100644
--- a/source/blender/collada/ImageExporter.cpp
+++ b/source/blender/collada/ImageExporter.cpp
@@ -97,7 +97,7 @@ void ImagesExporter::operator()(Material *ma, Object *ob)
char src[FILE_MAX];
char dir[FILE_MAX];
- BLI_split_dirfile(this->export_settings->filepath, dir, NULL);
+ BLI_split_dirfile(this->export_settings->filepath, dir, NULL, sizeof(dir), 0);
BKE_rebase_path(abs, sizeof(abs), rel, sizeof(rel), G.main->name, image->name, dir);
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c
index 7f05a7c2b1a..b4a86e5d74c 100644
--- a/source/blender/editors/animation/anim_channels_edit.c
+++ b/source/blender/editors/animation/anim_channels_edit.c
@@ -2447,7 +2447,7 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_disable", WKEY, KM_PRESS, KM_ALT, 0);
- /* settings - specialised hotkeys */
+ /* settings - specialized hotkeys */
WM_keymap_add_item(keymap, "ANIM_OT_channels_editable_toggle", TABKEY, KM_PRESS, 0, 0);
/* expand/collapse */
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index c982a1d7f86..fe6aed77462 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -361,7 +361,8 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
_doSubChannels=2; \
else {\
filter_mode |= ANIMFILTER_TMP_PEEK; \
- }
+ } \
+ (void) _doSubChannels;
/* ... standard sub-channel filtering can go on here now ... */
#define END_ANIMFILTER_SUBCHANNELS \
filter_mode = _filter; \
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 20368bbf57b..11fd932eed6 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -824,7 +824,7 @@ static void joined_armature_fix_links(Object *tarArm, Object *srcArm, bPoseChann
}
else if (strcmp(ct->subtarget, pchan->name)==0) {
ct->tar = tarArm;
- strcpy(ct->subtarget, curbone->name);
+ BLI_strncpy(ct->subtarget, curbone->name, sizeof(ct->subtarget));
}
}
}
@@ -871,7 +871,7 @@ static void joined_armature_fix_links(Object *tarArm, Object *srcArm, bPoseChann
}
else if (strcmp(ct->subtarget, pchan->name)==0) {
ct->tar = tarArm;
- strcpy(ct->subtarget, curbone->name);
+ BLI_strncpy(ct->subtarget, curbone->name, sizeof(ct->subtarget));
}
}
}
@@ -2503,7 +2503,7 @@ void updateDuplicateSubtargetObjects(EditBone *dupBone, ListBase *editbones, Obj
*/
if (oldtarget->temp) {
newtarget = (EditBone *) oldtarget->temp;
- strcpy(ct->subtarget, newtarget->name);
+ BLI_strncpy(ct->subtarget, newtarget->name, sizeof(ct->subtarget));
}
}
}
diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c
index bf2e17c4e87..e7c7ebf3ece 100644
--- a/source/blender/editors/armature/poselib.c
+++ b/source/blender/editors/armature/poselib.c
@@ -997,11 +997,8 @@ static void poselib_preview_apply (bContext *C, wmOperator *op)
}
/* get marker name */
- if (pld->marker)
- strcpy(markern, pld->marker->name);
- else
- strcpy(markern, "No Matches");
-
+ BLI_strncpy(markern, pld->marker ? pld->marker->name : "No Matches", sizeof(markern));
+
sprintf(pld->headerstr, "PoseLib Previewing Pose: Filter - [%s] | Current Pose - \"%s\" | Use ScrollWheel or PageUp/Down to change", tempstr, markern);
ED_area_headerprint(pld->sa, pld->headerstr);
}
@@ -1186,7 +1183,7 @@ static int poselib_preview_handle_event (bContext *UNUSED(C), wmOperator *op, wm
/* backup stuff that needs to occur before every operation
* - make a copy of searchstr, so that we know if cache needs to be rebuilt
*/
- strcpy(pld->searchold, pld->searchstr);
+ BLI_strncpy(pld->searchold, pld->searchstr, sizeof(pld->searchold));
/* if we're currently showing the original pose, only certain events are handled */
if (pld->flag & PL_PREVIEW_SHOWORIGINAL) {
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index 61935aa72ca..a978f327993 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -1197,7 +1197,7 @@ void POSE_OT_paste (wmOperatorType *ot)
/* identifiers */
ot->name= "Paste Pose";
ot->idname= "POSE_OT_paste";
- ot->description= "Pastes the stored pose on to the current pose";
+ ot->description= "Paste the stored pose on to the current pose";
/* api callbacks */
ot->exec= pose_paste_exec;
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index d8257c524c1..c80f5c85c25 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -221,13 +221,13 @@ static void update_string(Curve *cu)
MEM_freeN(cu->str);
// Calculate the actual string length in UTF-8 variable characters
- len = wcsleninu8(ef->textbuf);
+ len = BLI_wstrlen_utf8(ef->textbuf);
// Alloc memory for UTF-8 variable char length string
cu->str = MEM_callocN(len + sizeof(wchar_t), "str");
// Copy the wchar to UTF-8
- wcs2utf8s(cu->str, ef->textbuf);
+ BLI_strncpy_wchar_as_utf8(cu->str, ef->textbuf, len + 1);
}
static int insert_into_textbuf(Object *obedit, uintptr_t c)
@@ -264,9 +264,16 @@ static void text_update_edited(bContext *C, Scene *scene, Object *obedit, int re
EditFont *ef= cu->editfont;
cu->curinfo = ef->textbufinfo[cu->pos?cu->pos-1:0];
- if(obedit->totcol>0)
+ if(obedit->totcol > 0) {
obedit->actcol= ef->textbufinfo[cu->pos?cu->pos-1:0].mat_nr;
+ /* since this array is calloc'd, it can be 0 even though we try ensure
+ * (mat_nr > 0) almost everywhere */
+ if (obedit->actcol < 1) {
+ obedit->actcol= 1;
+ }
+ }
+
if(mode == FO_EDIT)
update_string(cu);
@@ -366,7 +373,7 @@ static int paste_file(bContext *C, ReportList *reports, const char *filename)
if(cu->len+filelen<MAXTEXT) {
int tmplen;
wchar_t *mem = MEM_callocN((sizeof(wchar_t)*filelen)+(4*sizeof(wchar_t)), "temporary");
- tmplen = utf8towchar(mem, strp);
+ tmplen = BLI_strncpy_wchar_from_utf8(mem, strp, filelen + 1);
wcscat(ef->textbuf, mem);
MEM_freeN(mem);
cu->len += tmplen;
@@ -1039,7 +1046,7 @@ void FONT_OT_change_spacing(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_int(ot->srna, "delta", 1, -20, 20, "Delta", "Amount to decrease or increasing character spacing with", -20, 20);
+ RNA_def_int(ot->srna, "delta", 1, -20, 20, "Delta", "Amount to decrease or increase character spacing with", -20, 20);
}
/************************* change character **********************/
@@ -1234,10 +1241,10 @@ static int insert_text_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
inserted_utf8= RNA_string_get_alloc(op->ptr, "text", NULL, 0);
- len= strlen(inserted_utf8);
+ len= BLI_strlen_utf8(inserted_utf8);
inserted_text= MEM_callocN(sizeof(wchar_t)*(len+1), "FONT_insert_text");
- utf8towchar(inserted_text, inserted_utf8);
+ BLI_strncpy_wchar_from_utf8(inserted_text, inserted_utf8, len+1);
for(a=0; a<len; a++)
insert_into_textbuf(obedit, inserted_text[a]);
@@ -1282,10 +1289,22 @@ static int insert_text_invoke(bContext *C, wmOperator *op, wmEvent *evt)
else if(event==BACKSPACEKEY)
ascii= 0;
- if(val && ascii) {
+ if(val && (ascii || evt->utf8_buf[0])) {
/* handle case like TAB (== 9) */
- if((ascii > 31 && ascii < 254 && ascii != 127) || (ascii==13) || (ascii==10) || (ascii==8)) {
- if(accentcode) {
+ if( (ascii > 31 && ascii < 254 && ascii != 127) ||
+ (ascii==13) ||
+ (ascii==10) ||
+ (ascii==8) ||
+ (evt->utf8_buf[0]))
+ {
+
+ if (evt->utf8_buf[0]) {
+ BLI_strncpy_wchar_from_utf8(inserted_text, evt->utf8_buf, 1);
+ ascii= inserted_text[0];
+ insert_into_textbuf(obedit, ascii);
+ accentcode= 0;
+ }
+ else if(accentcode) {
if(cu->pos>0) {
inserted_text[0]= findaccent(ef->textbuf[cu->pos-1], ascii);
ef->textbuf[cu->pos-1]= inserted_text[0];
@@ -1341,7 +1360,7 @@ static int insert_text_invoke(bContext *C, wmOperator *op, wmEvent *evt)
/* store as utf8 in RNA string */
char inserted_utf8[8] = {0};
- wcs2utf8s(inserted_utf8, inserted_text);
+ BLI_strncpy_wchar_as_utf8(inserted_utf8, inserted_text, sizeof(inserted_utf8));
RNA_string_set(op->ptr, "text", inserted_utf8);
}
@@ -1471,7 +1490,7 @@ void make_editText(Object *obedit)
}
// Convert the original text to wchar_t
- utf8towchar(ef->textbuf, cu->str);
+ BLI_strncpy_wchar_from_utf8(ef->textbuf, cu->str, MAXTEXT+4); /* length is bogus */
wcscpy(ef->oldstr, ef->textbuf);
cu->len= wcslen(ef->textbuf);
@@ -1700,10 +1719,7 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
}
path = (font && strcmp(font->name, FO_BUILTIN_NAME) != 0)? font->name: U.fontdir;
-
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
+
if(RNA_property_is_set(op->ptr, "filepath"))
return open_exec(C, op);
diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c
index a3343496be7..d6540630276 100644
--- a/source/blender/editors/datafiles/splash.png.c
+++ b/source/blender/editors/datafiles/splash.png.c
@@ -1,6405 +1,4857 @@
/* DataToC output of file <splash_png> */
-int datatoc_splash_png_size= 204738;
+int datatoc_splash_png_size= 155257;
char datatoc_splash_png[]= {
-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, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,
-157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9,
- 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,
-162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150,
- 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35,
- 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,
-128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203,
- 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136,
- 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,
-192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,
-241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20,
- 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,
-206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179,
- 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126,
- 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,
-247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,
-255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,
-100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,
-242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36,
- 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132,
- 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,
-134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,
-138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85,
- 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,
-168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62,
- 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172,
- 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28,
- 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214,
- 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233,
- 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242,
- 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,
-161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104,
- 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,
-136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111,
- 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,
-169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111,
- 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,
-171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,
-148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101,
- 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39,
- 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,
-110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179,
- 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,
-185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154,
- 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183,
- 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,
-157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,
-174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90,
- 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203,
- 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228,
- 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89,
- 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,
-173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,
-203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,
-122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,
-173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,
-112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170,
- 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,
-237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136,
- 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42,
- 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158,
- 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,
-254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,
-102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75,
- 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,
-237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79,
- 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,
-220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223,
- 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,
-244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85,
- 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253,
- 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,
-156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,
-154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243,
- 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,
-239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,
-116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,
-121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,
-173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,
-133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,
-100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,
-234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124,
- 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75,
- 71, 68, 0,255, 0,255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156,
- 24, 0, 0, 0, 7,116, 73, 77, 69, 7,219, 8, 10, 15, 54, 11,254,114,226, 41, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,
-121,212,101,103, 89, 39,250,123,167, 61,156,225, 27,106, 72, 85, 66, 37, 49,149,129,132,132, 41, 21, 6, 1, 21, 72, 33,160,226,
-132,137, 99, 59,155,216,186,188,182,182,146, 92,180, 23,246,242, 98, 19,187,111,115,219,123,181, 37, 42, 44,245,218, 10, 81,161,
-165,175,136, 41, 71,104, 90, 66, 42, 4,130, 16, 8,169, 36, 36, 33, 73,205,223,116,134,189,223,225,254,241, 60,239,217,251,156,
-250,230,250,190,202,224,254,173,117,214, 55,156,115,246,222,239,244,204, 3,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, 26,156, 19,168,115,124, 63,193,175, 12,192,126, 33,176, 27, 64, 15,
- 64,201,255,111,208,160, 65,131, 6, 13, 26, 60, 11, 32, 0, 72, 33,112,217,187,127,234,250, 63,121,248,247,127,226,232,163,127,
-116,211,137,223,249, 55,111,250,239,137, 18, 7,106,159,105,208,160, 65,131, 6, 13, 26, 60,195, 53,117, 1, 32,121,199, 15,191,
-242,157,183,126,215, 53, 63, 56, 83, 12,218, 83,211,173,252,218, 87, 92,250,252,111, 63,112,201,193,187, 62,255,208,147, 79,156,
- 26,126, 9, 64,104,152,123,131, 6, 13, 26, 52,104,240,204,102,234, 18, 64,235,205,215,180,223,250,154,221,226,154,226,232, 81,
-216,147, 39,224,251, 22, 23, 92,113,225,236, 13,215, 95,243,150,163,167,230,212,189, 15, 28,255, 12,128,126,195,216, 27, 52,104,
-208,160, 65,131,103,182,166,158,254,237,125, 39,158,188,234,130,244, 69, 47,186,108,247, 94,148, 30,126,225, 20,252, 98, 15,157,
-243,118,234,111,189,254,197,223, 48,147, 39,151,127,244,174, 35,159, 6,112,162, 97,236, 13, 26, 52,104,208,160,193, 51,147,169,
- 3,128, 8,192,194,159,126,234,216,189, 78, 23, 59,191,254,170,189, 87, 24,101,224,122,139,240,167, 79, 3, 89, 27,175,122,245,
- 85, 87, 29,188,106,223,107,255,254,222, 47, 63,124,122,169, 60,210, 44, 81,131, 6, 13, 26, 52,104,176,126,237,249, 92,223, 47,
- 3, 48, 13, 96,223, 91,175,155,254,161,223,254, 87,215,253,248,174, 86,146, 21, 75, 67, 64, 25,136,125, 23,195,236,219,135,167,
-158, 56, 49,255,243,191,241,145,255,240,223, 14,125,233,183, 0, 44,240,247,195, 51,121, 50, 67, 8, 7, 0,204,242,159, 71,132,
- 16,207,105,161,228, 95,218,120, 27, 52,104,208,160, 97,234,203, 67, 2,152, 2,176,231,146, 89,245,173,255,227,103, 95,246,243,
- 87, 93, 48,179,183,236,149, 0, 60,176,247, 34, 36, 23, 93, 12, 27, 60,222,249,190,255,249, 7,191,242,187,127,247,203, 0, 30,
-229,231, 61,107,198, 30, 66,216, 15, 96,255, 58, 63,126, 74, 8,113,120,157,215,189, 19,192, 65,254,243, 86, 33,196,109,207,113,
-166,254,156, 24, 47, 11, 39, 7, 89, 64, 57, 80,123,235, 48,128, 35, 0,238, 16, 66,156,218,130,251, 76, 94, 31, 91,189, 7, 27,
- 52,104,240, 47, 27,250, 44,152,178, 7,208, 61,127,202,188,240,162, 89,179,211, 5, 41,198, 36, 5, 1, 72, 41,132,143,255, 17,
-244, 37,168,209,187, 26, 64,171, 95,248,254,191,253,240, 67,127,245,127,190,245,234,111,191,114,239,212,140, 45, 3,112,234, 56,
-202,118, 27,106,199,121,120,199,205,223,240,131, 47,223,127,193,243,127,240, 93,119,252,226,241,249,226,227, 91,196,216,111, 0,
-240,174, 13, 16, 99, 0,184, 3,192, 33, 33,196,237,205,182,121,206, 88, 25,110,224,215, 74, 2, 94, 20, 88,222, 19, 66,184,157,
- 5,151,179, 97,238, 7, 0,220,185,137,239, 29, 2,240,134,102,213, 26, 52,104,176, 29, 76, 93, 0, 16,221, 84, 30,248,175, 63,
-248,146, 95,251,150, 23, 93,248,218, 86, 75, 39, 65, 40, 64, 8, 64, 10, 64,242,239, 90,209,223, 74,142,222, 19, 74,211,255,132,
- 0,132, 4,164, 68, 0,130, 11,194,123,173, 33, 71,255, 23,240,174, 68,232, 11,188,249,141, 87,190,226,240,243,127,242,207,126,
-242,215,255,252, 29, 31,249,228, 99,239, 3, 48,196,185, 55,197,223, 0,224,134, 16,194, 13, 0,110,220, 10,205,173,193,211,138,
-187, 55,248,249,155, 0, 28, 12, 33,220,216,104,205, 13, 26, 52,120,174,105,234,187,127,239, 71,175,125,247, 13,175,218,255,117,
-182,231, 0, 47, 32, 36, 23,139, 11, 18, 8,130,148,121,207,172, 55,176,134,238, 1,120, 15, 40, 5, 33, 88,117, 15, 0,132, 16,
- 82, 10,133, 16, 70, 90, 61,177,236,128, 0, 1,219, 43,113,209, 69,187,118,255,233,127,252,161,255,231,127,255,173, 67,151,255,
-198,159,124,242, 63, 0, 56,182, 69, 90,123,212,132,176,134,182, 86,255,251,206, 16,194, 27, 26,198,254,156,193, 97,144, 37,230,
-176, 16,226, 16,107,242,179,188,214, 55,213,246,192,126, 0, 31, 8, 33, 92,183, 69,107,127, 59,200,188,191, 22,154,125,214,160,
- 65,131,237,211,212, 83, 35,246,191,254,202,243, 94,134,165, 18,174, 63, 0,188, 39, 38, 29, 45,235,177, 24,108,252, 27, 1, 80,
- 18, 98,215, 30,210,210,125, 0,164, 7, 60, 91,241,133,228, 75, 7, 64, 6,192, 59,210,246,157, 27,197,231,219,161, 69,203, 24,
-249, 95,126,241, 91,126,238,101,151, 95,248,194, 31,127,215,159,191,109, 88,250,123,183,130,177, 11, 33, 86, 53,109,178,118,254,
- 46, 84,102,218, 3, 76,236,111,107,182,208,179, 26,183, 3,184,125, 57,205,155,153,246, 29, 0,238, 8, 33,188,135,215, 59, 50,
-246,173, 90,251, 59,162, 16,209,160, 65,131, 6, 91, 1,185,137,239,168, 97, 25, 78,252,197,125,143,126, 18,114,128, 52, 41,145,
-182,128, 36, 15,252,242,213,239, 89,128,145, 67,192, 21, 64,214, 33,147,187, 39,166, 29,198,216,112, 9,248, 2,240, 3, 32, 12,
-249,239, 1, 16, 74, 98,240, 33, 0,193,195,186, 0, 63,116,248,129,183, 94,123,240,158,247,253,235, 15,189,240,226,217,239, 4,
-177,125,185,157,147, 36,132,184, 3,228,211,172,107, 76, 55, 52,219,231, 89,141, 55, 8, 33,110, 94,143, 41, 93, 8,113,243,132,
- 70,125, 75, 51,125, 13, 26, 52,120,174,104,234, 0,112,226, 71,127,247,190,119,252,213,167, 31,249,206, 43, 46,158,186, 88, 0,
-210,135,224,153, 4,194, 5, 10, 45,235, 15,173,188,246,194, 93, 47,184,241,235, 95,188,223,232, 84,122,239,217,223, 14, 98,236,
-195, 37, 8, 45, 32,246, 93, 3,185,227, 10,160,181, 7,194,116, 1, 87, 32, 12,143, 35,244,190,138,112,226,139,128,235, 3, 50,
- 7,224,224,131,130, 95, 42,240,130,171, 47,188,232,163,191,253, 99,191,247,166,159,126,175,250,236,145,147,127,134, 42,120,111,
-187, 24,251,145, 16,194, 29, 53,141,237,192, 86, 92,119,153,136,232,195, 91, 20,105, 93,143,240,223, 84,186,217, 86, 92,227, 92,
-140,119,226, 57,215,117,189, 77,104,200,183,163, 10,174,156, 13, 33, 28,104,124,235, 13, 26, 52,120, 46, 48,117, 7, 96, 9,192,
- 23, 62,112,120,254,221, 56, 60,159, 99,249, 34, 54, 59,127,232,245, 23,253,216,155,175,187,230,252, 68, 26,233,124, 32,211,123,
-127, 8, 12,151, 0, 55, 15,249,252,215, 64, 94,245,189,144,231, 93,113, 38,209,141,191, 44, 29,131,123,242,159,224, 31,255, 71,
- 8,145,146,214, 46, 4,108,191,192,249,123,119, 77,127,248, 63,255,240,111,190,234, 71,127,235,228,227, 39, 7,127,139,173,243,
-177,175,132, 45,201,195,102,198,118, 19,107,251, 7,150,121,255, 8, 42,211,240,169, 21,174,241,174,218,119,239, 16, 66,220, 94,
-187,238, 77,152,136,232,230,107,222,182,158,232,253, 16,194, 77,172,141,238,223,232,115,109,199,120, 87, 25,235, 45,124,221,217,
-218,199,183, 43, 82,124,146,129,207, 54,228,163, 65,131, 6,207, 5,166,238, 1, 12, 0, 88, 80, 81, 24,133,154, 7,157,153,234,
- 11,222,247, 83,175,248,149, 31,126,237, 21,175,245, 5, 96,157, 7,202, 33, 66,127, 17,176, 3, 64, 7,152, 55,253, 18,228,254,
-235,215,190, 91,123, 55,212,165,111,129,152,121, 1,252,231,223, 11, 72, 71, 74,185, 0,108,191,192, 69,151,158,191,235,189,111,
-255,238, 95,127,227, 47,252,254,119, 2,248,202, 54, 51,245, 58, 33,223,148,118, 25, 66, 56, 8,224, 3,107, 48,133,253,172, 21,
-222,180, 74,180,117,204,173, 6,128, 67,156,162,245,158, 85, 44, 8,251, 65,169, 89, 7,216,156,188, 18,243,125, 15, 86,118, 45,
-196,231,186, 33,132,240,134,115, 56,222,229,198,122,103,195, 88, 27, 52,104,208,224,236,153,122,100,220, 37,191,234,138,181,186,
-250,121,217, 91,254,224, 39, 94,115,219,181, 87,238,185,220,246, 61,188, 43, 73, 51, 47, 45, 32, 28, 68, 2,232,111,121, 23,228,
-190,151,143, 46,214, 47, 44,238,122,248, 40,254,242,115, 79,226,244, 66, 31, 70, 9, 92,249,188, 25,124,243, 11, 46,192, 37,123,
-102, 0, 0,114,231,165, 16, 47,250,105,184,207,254, 6, 96, 52,201, 22, 82,194, 47, 13,240,141,215, 95,245,210, 31,252,166, 23,
-254,216, 31,252,229,125,239,196, 54,165,187, 49,195,187, 97, 66, 35,220,232, 53,110, 96, 6, 55,169, 1, 30,170, 9, 9,117,109,
-118, 63,170, 72,251,195,107, 8, 27, 31,168,105,214,119,212, 52,203, 3, 19,207,125, 83, 8,225,200, 10,133, 98,222,181, 12, 67,
-175, 95, 43, 62,219,129,101,198,113,174,198, 59, 59,193,208, 79,213,158,111,255, 54,158,149,131,107,104,238,103,179,175,182,220,
-253,210,160, 65,131,127,153, 16, 91,116,141, 0, 96,250,135, 94,187,231,231,254,243,119,127,237,219,118,116,178,188, 40, 2, 5,
-200, 21, 3,102,247, 0,202, 57,168,111,248, 73,168, 23,253,171,209,151,191,244,228,105,188,253, 79,239,197,103,143, 47,160,155,
- 24, 36, 70, 82, 0,124, 89, 34,241, 22,223,250,138, 75,240, 51,175,191, 26,137, 38, 11,191,255,234,189,240,247,191, 15,232,236,
- 70,236,210,170,147, 4, 15,124,241,241, 39,175,248,158,223,120, 19,128,207,129, 92, 4,171, 17,210, 91, 80, 43, 62, 35,132, 16,
-235, 32,188,147, 26,236, 27, 38,253,178,171, 85, 88, 99,191,239,221, 53,102,116, 4,192,205,203,249,118,151,209,110, 15, 11, 33,
-174, 91,229, 94,117, 6,124,243, 36, 83,224,123,127,160,198, 60, 78, 1,184,180,254, 57, 54,185,191,103,130,105,221, 56,233, 71,
- 95, 69,243,222,182,241,174, 48,214, 35,124,207, 59, 38,215,106, 59,152, 98, 8,225, 65,140,251,237,175,219,164,149,230,206, 9,
-107,207,114,214,134, 35,188,150,183, 55,165,119, 27, 52,104,112, 46, 52,245, 73,134,126,201,175,126,207, 21,191,122,235,155,174,
-249,126,233, 53,138, 97, 73, 12,221,218,202, 56, 31, 60,176,251, 82,168,231,127,251,232,203, 79,206, 45,225, 7,126,231, 19,120,
-112, 96, 49,211,202,209,215, 10,137, 81,200,149,128,201, 18, 8,103,241,254,255,117, 4, 74, 74,252,155,131,215,144,198,190,247,
- 69,240,143,236, 1,220, 18,160, 51, 64, 0,190, 40,112,201,165,187,247,190,229, 53,151,188,241,195, 31,127,232, 11,168, 50,228,
-215, 75,108,111, 89, 67, 67,155,100, 40, 55,111, 34,208,234, 61, 19,218,229,138,185,206, 66,136, 67,108,222,142, 26,233,129, 16,
-194, 77,107,248,195, 15, 9, 33,110, 92,225,122, 71, 66, 8,183,214, 24, 74,204,193,174, 51,196, 91, 38,152,202,178,121,248,181,
-103,187,251,105, 28,239,145,149,174,183, 77, 12,125, 50,190, 96,171,170, 10,174,228, 62,216,207,235,113, 75, 8,225, 57, 95,110,
-184, 65,131, 6,207, 12,166, 46, 0,136, 61, 93,117,253, 31,223,244,178,255,244,186,151, 92,240, 98, 59, 0,172, 40, 1, 63,164,
-126,108,137, 24,125, 50,148,125,168, 43, 94, 3,164,221,209, 5,254,253,127,255, 28, 62,245,196,105,160,219,197,201, 69, 11, 72,
- 7, 41,128,174, 18,184,184,173,113, 65,174,177,107,186,131, 15,254,175, 7,241,218,203,207,195, 75, 46, 62, 15,144, 18,242,194,
-215,194,127,254,247,129, 93, 23, 1,193,195, 11, 1,157,165,184,241,245, 47, 59,248,225,143, 63,244, 94, 0, 39,177, 49, 19,252,
-122, 75,198,222,142, 77,228, 22,215,106,139,215,181,218, 85,153,143, 16,226, 48,151, 38,189,165, 38, 92,172,198, 76,110, 94,227,
-122,135, 66, 8,135, 49,110,234,142,207, 55, 89, 42,245,182,213,158,175,246,108, 55, 61, 77,227,189,237, 92,153,168,121, 44,245,
-253,113,120,139, 74, 5,199,186,242,117, 51,126,189, 6,253,104,111,134, 16,246,175, 20, 7,209,160, 65,131, 6,117,108, 38,191,
- 59, 6,197,117,222,122, 96,250,231,239,249,119,175,253,211,215, 93,189,247,197, 69,207,193,195, 17, 67,151,160, 10,114, 74, 0,
- 90, 80, 5, 57, 45, 33,119, 95, 51,186,200,209,185, 30,254,224,211, 95, 1,178, 22,165,185, 41, 9, 40, 5, 15,137,185,129,195,
-103,143,246,112,247,209, 30,138, 32, 96,149,194,223,124,241,104,245, 0,221,139, 40,232, 14,150,159, 38, 0,214,227,202, 11,103,
- 46, 5,112, 62,182,175, 81,205, 13,172, 69,110, 52, 64,171,206,224, 78,109,128, 41, 28,154,184,247,138, 12, 98,157,102,218,195,
- 43, 60,211,193, 9, 6,187,158,231,187,227,105, 26,239,145,115, 85,127,159, 93, 8,147,230,242,179, 97,174,167, 0,220, 10,114,
-125, 92, 39,132,184, 81, 8,113, 91,237,117,163, 16, 98, 7,127,166, 46,180,220,196,130, 87,131, 6, 13, 26,108,169,166, 30,205,
-237, 23,188,237,219,246,253,202, 59,191,249,133, 63,161,188, 70, 81, 56, 64,121, 50,177, 7, 64,120,129,160, 4, 32, 37, 87,139,
-243,128,206, 32,218, 23,140, 46,244,212, 66, 31,189, 65, 9,180,179, 74, 78,136,186,181,164,250,177,199, 23, 75,220, 85, 88, 92,
- 61,165,177, 48,176,213, 67,100,211, 0, 20, 48,236, 65,228, 93, 4, 4,192,149,184, 96,111,231,188, 52,145,123,135,133,255,194,
- 6,199,117,235, 42,239,237,103, 38,181,159, 53,168, 81,244,247, 6,180,197,131, 43, 48, 86,172, 67,187, 30,211, 26, 87, 8, 32,
- 91,175,229,224,200, 42, 99,220,208,181, 38,159,237, 28,142,247,156,228,134,179,224, 54, 25, 59,112,235,217,228,166,243,119,215,
- 83,236,230,182, 16,194, 33,140,187, 56,222,181,134, 32,213,160, 65,131, 6, 27, 98,234, 2, 0,166, 51,249,170,247,253,200, 85,
-191,254, 29,215, 94,244,106, 59, 4,202,196,145,102,238, 2, 80, 4,232, 84,160,239,188, 55, 16, 18, 90,142, 50,216, 5, 0,132,
- 42,126,109, 54, 79, 32,141,129, 15,160, 90,241, 33,140,234,189, 35, 0,240,212, 8,102,161, 95,226,222, 65, 31,111, 49,245, 84,
-120, 15,132, 2,176, 67, 64, 76, 65, 8,170, 82,215,105,235,214,158,169,108,246, 43,199,123, 27,178, 64,172,199,103,201,126,213,
- 91, 80,181,231,188, 19,192,122,131,165,234,209,205,251, 57,240,107, 51,152, 93, 69, 3, 60, 27,108,138, 9,243,103, 15,156,227,
-241,110, 59, 83,103,134,126,231,196, 56,110, 62,151, 29,250,216, 29,113, 43, 42,211,255,254, 16,194, 13,147,129,129, 13, 26, 52,
-104,176, 81,166, 30, 77,217,230,107, 47,206,190,239,143,126,236,218,219, 46,217, 51,125, 94, 49, 12, 64,166,136,161,151, 30,178,
- 8,208, 45,137,119,255,221, 3,159,185,100, 42,155,249,246, 3, 23, 94, 92, 4, 80,163, 23,161,128,114, 17, 97,225, 97,136,157,
-151, 2, 0,158,183,163,139,111,187,108, 15, 62,120,255, 49, 64,107,192, 10,170,251, 30, 27,192,128, 25,187, 16, 24,204, 45,225,
-202, 61, 83, 21,209,237,157, 2, 6,243, 64, 49,205, 31,246, 8, 85,104,156,196, 54,152,223, 89,123, 66,141,200,174, 39,120,109,
- 57,230,180,145, 94,238, 79, 7, 78,109,193,103,159, 77,227, 93, 15, 67,191,245,105,106,185, 91,175, 98,135,103,211, 60, 54,104,
-208,224,153,201,212,163,185,253,188,159, 62,184,231, 23,223,249, 77, 87,255,111,211,121,154, 20, 30, 64,155, 53,231,194,195,120,
-160, 76,129, 95,250,255, 62,247,225, 95,251,243,175,124,240,195, 63,253,194,183,129, 10,191,145, 95, 93, 0,208, 18,225,196,103,
-129,175,185,158,153, 36,240,246,111,189, 10, 31,188,255, 9, 96, 80, 2, 73, 82,241, 98,199,119, 13, 30, 88, 90,194, 27,175,216,
-135,111,126,225,190,138,240,206,127, 25, 33, 12, 33, 92, 57,210,236,133, 8, 88, 92, 28,246,143,206, 15, 22,182, 81,123,186,141,
-171,155, 69,220,128,141, 71, 66, 31,193,230, 43,211, 61, 27,243,151,159,109,227,157,100,232,183, 63, 93,209,231, 66,136, 83, 19,
-193,141, 7,209, 52, 17,106,208,160,193, 38,153,186, 0, 32,148,196, 21,191,243, 67, 87,252,151, 31,121,229,165,111,116, 37, 80,
-104, 1,164, 10,240, 30,161,239,145,106,224,216,160, 24,252,204,127,187,231,119,223,255,201, 83,127, 4,192, 63,188, 48,124, 10,
- 34, 92, 25, 2, 32, 34, 83,207,187,240,143,124, 2,234,202, 31, 0,218,187, 1, 0,215,125,205,110,124,232,230, 87,227, 7,222,
-123, 23, 22,231, 7, 64,150,145, 63, 61, 4,160, 44,129,126, 15,111,186,124, 47,126,255,167, 94,141, 52,154,223, 93, 1,255,192,
-159, 65,164, 25, 32,200,143, 31,188, 3,164,196, 99, 79,204, 31, 27, 20,254, 24,182, 47, 80, 14, 32,159,243,193, 26,145,221,176,
-246,245, 47, 44, 69,233, 89, 51, 94,238,198, 54,201,208,159,238,168,243,166, 16, 77,131, 6, 13,214, 13,185, 6, 83, 63,239,189,
- 63,242,252,223,252,145, 87, 93,250,198,162, 4, 92, 91, 3,185,161, 44,240, 37,143, 52,147,184,239,241,185,167, 94,247,174,143,
-191,227,253,159, 60,245, 95, 1, 60, 12,224,241, 47, 29, 91,248, 34,164, 0, 28,247, 87, 81, 2,208,100,130,183,247,253,246,216,
- 77,190,237,197,251,240,207,255,238, 13,248,213,183, 92,131, 23,205,166,200, 66,137, 41,233,240, 29,151,237,194,251,255,245,215,
-225, 67,191,248, 58,156, 55,157,143, 62,239,191,252,231, 8,167, 30, 6, 76, 78,109,219, 17, 0,235, 0, 41,240,197, 71, 79, 63,
- 2,234,179,238,159, 97,243,188, 82,212,249,179,253,249, 14, 62, 75,199,187, 18, 67,191,233, 25,198,208, 27, 52,104,208, 96,203,
- 52,117, 92,181, 39,121,237, 91,175,126,222,245,182,239,129,174, 6, 18, 9, 20, 30,114, 96,161, 59, 18, 31,189,247,201,251,191,
-247, 61,159,254,143,167,122,254, 99, 0, 78,128, 26,189,100,127,245,169, 19,119,157,126, 83,241,163,221,118,162,189,103, 59,188,
- 0,208,106, 35,124,229, 31,225,103,254, 8,242,202,239, 31,221,231,162, 93, 93,252,242,183,188, 0,183,188,249, 74,156, 94, 28,
- 66,107,137,217,118,122,198,243,248,199, 63, 1,247,207,127, 8,228,109,146, 58,164, 66,240, 30,194, 57,184,193, 0, 31,252,135,
-123,254, 39,168, 30,253,118, 50,245,205,248, 53,199, 76,168,219, 85,245,236, 44,112,164,246,124,235,234, 62,199,249,219,207,214,
-241, 62,155, 24,250,102,131, 24, 27, 52,104,208,104,234,227, 12,255, 5,251,242,203,219,169,129,247,160,232,246, 94, 9, 93, 88,
- 32, 5,110,187,243, 11,135,222,244,238,195,255,246, 84,207,255, 13,128,167, 0,204, 1, 40, 0,148, 15, 28, 47,238,250,232,253,
- 79,220,171, 52, 16, 56, 21, 77, 72, 50,197,139,246, 52,252, 63,255, 33,220,189,255, 23, 80,140,187,191,141,146,216, 61,157,159,
-201,208, 93, 1,255,192, 29,240,119,189, 19, 34,205, 32,148, 34,127,189, 73,129,178,132,146,192, 23,191,120,244,201, 15,126,252,
-145, 67,160,218,239,219,194,212, 39, 90,124,110,132,200, 78,166,137,221,244, 12,219, 7,245,231,155,229,114,166,155,213,210,159,
- 13,227,125, 86, 48,116, 46,221, 59, 41,124, 53,104,208,160,193,166,152,186,250,196, 3,139, 95, 58, 81,148, 54,105, 75, 36,165,
- 71,162,128,129, 10,225,103,239,184,231,143,111,253,127,143,252, 10,128,207, 0, 56,206, 26,122, 12,111, 43, 1, 60,245,159, 62,
-252,224, 29,253,210, 67,149, 22, 40, 61,105,235,177, 40, 77,187,139,240,208, 71, 97,255,238,103,224, 31,251, 24,208, 95, 65,137,
- 27, 46, 32, 60,117, 47,236,199,126, 1,254,190,219,129, 44, 7,148, 38, 95,186, 0, 32, 52,196,176, 4, 84,192,187,222,255,241,
- 15, 2,248, 50,223,127,203,153,122, 45,111,185,142,117,165, 23,113, 26, 82,157, 32,223,178,134,166,123,174,113, 7,198,125,183,
-183,172, 99, 46,110,121, 22,143,119, 37,134,126, 24,171,215, 44, 88, 83,232, 11, 33,220, 82,123, 29,156,152,179,141,238,183,122,
- 80,230, 41, 52,121,234, 13, 26, 52, 88, 3,171,154,223,159,152,119,159,250,241, 63, 60,124,219,207,190,238,242, 27,102,219,102,
-250,254, 19,139,143,253,214, 95, 63,244,225,127,124, 96,241, 47, 0, 60, 1,224, 52,107,231,117, 38,234, 0,244,239,126,108,240,
-145,255,251,239, 31, 60,248,182, 55, 95,249, 6,183, 80, 80,241,153, 84, 85, 33,108,173,105,192,206,195,125,234,215,224,147, 14,
-176,227, 10,200,153,203, 0,149, 1,161,132,159,127, 4, 56,126, 63, 48, 56, 5,152, 4,104,239,168, 81, 60, 0, 94, 1,133,128,
-106, 43,124,228,175, 31,252,252, 31,254,213,151,254, 24,100,122, 47,183, 65, 59, 63,136, 51,251,139,159,194,198, 34,223,111,198,
-120,237,245, 59,185,205,232,161,117,220,255, 6,102,150,219, 18,112,198, 81,214,183,213,152,200,193, 16,194,123,150,211, 88,107,
- 41, 95,179,207,214,241,174,194,208,223,112,150,110,130,253, 19,140,248,214,154,213,226, 0,215, 58,184,125,173, 92,243, 90, 27,
-221,250, 28,223,214,116,111,107,208,160,193,217, 48,245, 18,192,201, 15,221, 51,247,222, 15,221,115,247,157, 0,186, 32,191,249,
-147, 32, 83,251, 34,127,102,178,172, 88,236,183,254,228,173,127,244,192,187, 15,156, 63,125,201,245, 47, 61,255,178, 98,110, 0,
- 49,157, 1,169, 24, 85,140,131, 49, 16,198, 80, 81,154,147,247,193, 29,251,244,232,114, 66, 42,106,216,210,238, 78, 80, 60, 0,
-133, 71,240, 41, 76, 98,112,228,129, 99,167,126,224,215,255,226,215, 89, 75,239, 99,141, 14,109, 43, 16,209,205,180,106,189,121,
- 35, 68,150,171,165,221,140,170, 19, 90,100,116,135,152,240, 31,158, 96, 14, 81,152, 56, 80, 99, 16,219,137,219, 49,222, 6,245,
- 38,214, 52,111,175, 61,219, 65,102,132,179,172,137,159,194, 10, 62,248,103,242,120,121, 92,203,185, 4, 62,176,129,173,112,199,
- 38,114,215, 15,178,192,116,132,231, 96,185,218,239,147,173,114, 1, 42, 3,220,164,178, 53,104,208,224,172,152,186, 99,198,109,
-153,137, 75,254,223,144, 95, 14, 43, 55, 77,177, 0, 22, 3,112,223, 13,191,117,207,255,241, 55,111,123,197, 59, 95,122,249,174,
-231,149,167, 7,192, 84, 10,145,129,106,189, 71,173, 93, 40, 32,201, 87,207, 67, 11, 0,188, 7,134, 30,126,110,128,228,130,243,
-240,248, 19,115,139, 55,252,242,159,221,118,114,161,252, 88, 77,200,216,110, 28,102,134,190,225,160, 37, 33,196,237,181, 2, 54,
-179,117, 66,255,116,111, 4,214,214,111,100,237,122,255, 10,154,103,221, 74,113, 35,214,104,132,243, 76, 30,239, 50,216,168,123,
-224,208, 89,220,107, 63,214, 31,103,112,251, 57, 16,232, 26, 52,104,240, 28,129, 92,131,141, 90,144,191,252, 20,168,243,217,105,
- 0, 61,254,127, 88,227,187, 67, 0,115,167,122,254,239,191,254,215,254,233,237, 31,189,231,137,251, 77,162,161,230,134,240,167,
- 45, 48,112,181,171, 8,142,144,159,120,197,154,240, 14, 64,225, 16,230, 28,112,178,143,100,199, 14,124,238,193,249, 39,223,240,
-115,127,242,142,123, 30,153,255,115,126,182, 30,182, 47,234,253, 16, 19,215, 27,185, 17,199,217,212,255,190, 29, 84, 94,246,118,
-172, 47, 7,249, 14,144, 41,123,219, 43,154,113, 83,152,235,214,184,215, 33, 80,219,211,195,207,246,241,158, 99, 68,127,253,122,
-247,206, 29, 32,119,192,205,141,217,189, 65,131, 6,235,166,227,219,124,125, 5,160,197, 90,218,213,191,240, 29, 23,253,248,219,
-223,120,213,183,206, 78, 39,218, 15, 61,156,150, 64,174, 33, 98,141,120, 89,123,156, 16, 0, 7, 4, 27,128,190,131, 44, 45,148,
-145,232, 59,224, 55, 63,246,228,223,189,253,247,238,126, 79,233,195,167, 80,165,210,217,103,227, 2,176, 41,120, 82, 75, 60, 2,
-234,110,118,232,105,124,174,104, 14,175,247, 68, 63,180,206,110,112,207,186,241, 62, 77,235,190, 31,103,198, 38, 28, 6,153,219,
- 27, 70,222,160, 65,131,103, 28, 83,143,140, 61, 3, 48, 13, 96,239, 11,246,164,175,255,217,183,236,255,246,239, 58,112,209,203,
-119,116,181, 65,144,220, 19, 93,114, 49, 25,126,176, 0,200,224, 71,202,250,226,192,251,143,124,230,241,251,126,251,208, 67, 31,
-254,219, 47, 44,252, 37,128,199,216,114,208,127,182, 50,244, 6, 13, 26, 52,104,208,224,217,198,212,227,125, 18, 0,109, 0, 83,
- 0,246,238,153, 82, 47,121,211,181,179, 47,127,235,139, 47,122,217,213,207,155, 58,191,157,170,118,166, 69, 34,149,146,222, 33,
- 12,157, 45,122,133,239, 61,124,116,225,216, 7, 62,251,232, 61,135,238, 62,117,215, 3,199,139,195, 0, 30, 7, 48, 15,242,161,
-111, 91, 78,122,131, 6, 13, 26, 52,104,208, 48,245,213,239, 37, 1,164, 32,147,124, 11, 20, 81,191, 3,192,158, 78, 42,118,182,
- 19, 57,149,105,153, 20,206,219,197, 34, 44, 44, 12,252, 9, 0, 71, 65, 38,246,121,144,223,124, 9,107, 7,234, 53,104,208,160,
- 65,131, 6, 13, 83, 63,135,204,221,176,246, 30, 95, 26,163,238,235, 0,107,224, 37,191, 10,102,228,182, 97,230, 13, 26, 52,104,
-208,160,193, 51,135,169, 79,222, 63, 50,249,248,179,206,212, 67,237,103,195,200, 27, 52,104,208,160, 65,131,103, 48, 83, 95,237,
-121, 26, 38,222,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,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,219, 4,129, 61,175,217,250, 34, 47, 90, 3, 66, 2,240, 64,105,
- 55,247,253, 68, 87,127, 59, 13, 40, 11, 56, 15, 40, 9,244, 6,244,153, 86, 14, 72, 9,168, 4,176, 5,127,216, 3,189, 18, 40,
- 7,213,181, 52, 95,107,185,238,241,189,193,248,125, 1,186, 71,150,210, 24,116, 2, 20, 3,160, 40,169, 64,173, 50, 84,212,214,
- 6, 64, 11, 42, 96, 11,126,207, 76, 92,111, 43,231, 51,201,232,153, 92, 65,227, 21, 18,232, 47, 0,222, 80,155, 90, 33,168,170,
-254,206, 29, 84,131,207,228,128, 49, 72, 18, 9, 59,244,240,197,144,230,212, 91,160, 44,129, 84, 1, 75, 3,154,171, 76, 3,131,
-130,202,253,216, 1, 77,148, 0,215,241,243, 52, 7,174,160,255,235, 4,232,247,233,111,239,105,254, 61,207,173,231, 53,175,255,
-190,217, 61,240, 92,129,201,128, 96,129,153,157, 64,111,137,246,108,175, 15,180,218,192,226, 28,208,153, 6,138, 30,205,107,111,
- 9,176,150, 94, 43,237,131, 73,212, 63,107, 52,144,231, 64,210,162, 53,141,173,140,125, 0, 22,230,105,221,215,187, 63,205, 50,
-247,146,146,206, 96, 44, 17,117,182,235,218,158,198,107,191,241,117,176,222,227,227,247,223,143,235,175,123, 57,254,230, 31, 62,
- 6, 60,246,200,250,232, 2, 31, 61,132,101,230, 44,158, 25, 7, 58, 27, 40, 1,169,249, 12,243,103,138,193,242,115,189,218, 60,
-107, 13, 8, 77,103,221,215,104, 74, 81,123, 6,163,199,207, 5,106,159,117,126,229,245,173,237,153,214,129,203,209, 59,252, 0,
-221, 71, 27, 96,215, 14, 32,215, 64,223, 2,143, 62, 85,209,183,205,210, 85,111, 0,215,167,253, 56,183, 64,255,155,234,210,222,
- 20,154,126,159, 59, 69,159, 47, 65,115, 39, 4,125,103,106, 22,152, 63, 69, 99,204,114, 96,137,247,181, 45,137, 86,187, 65,228,
- 46,213, 62,153,234, 2,195, 33,128,100,252,125, 41,129, 97, 1,100, 93, 32, 12,137,174,197,249,137, 52,200,110, 19,253,168,207,
- 71,233,137,214,217,115, 68,171, 76, 2, 76, 79, 3, 89, 66,180,183,215, 7,122,139,244,127, 9,162,245, 58, 3,242, 4, 8,142,
-190, 51,112, 21, 95,141,223,243, 30, 24, 12, 1,163,128,114, 8,244, 6, 80,232, 92,244, 43, 91,250,176,173, 12, 72, 83, 32,111,
-209,164, 41,193,197, 94, 55,208, 76, 77, 74, 98,172,163,191,249,187, 82,208,228,123, 87, 93, 79, 41,250,124,176,180, 11, 74, 15,
- 12,123,213,119,149, 4,181,119,229,131,165, 38,238, 85,127, 54,239,233,149, 26, 98,222, 74, 3,174, 4,116, 74, 19, 8, 0, 90,
- 86,125,225, 44, 19,139, 86, 27, 48, 18,232, 15, 55, 54,206,245,194, 51, 69,208,160, 69, 85,154,132,152,164, 69, 4, 36, 53,192,
-236, 20,176,107, 6,112, 2, 83,179, 83, 48,105,138, 78,150,224,130,238, 14,120,239, 48, 53,213, 69,174, 13,160, 36, 74, 1,122,
- 86, 33,105,141,250, 5,207, 93,159,152, 75,176,192, 48,208,198, 42, 74,154, 56,157,144, 64, 16, 60, 80, 6, 90,131,200, 52, 4,
- 63,151,102, 6, 34, 64,189,115, 3,175,153, 16,213,154, 42,201, 4,207,111,236,240,249,103, 97, 51,190, 52, 1,138, 33, 48,187,
- 19,152,159, 7,218,109, 34,198,105, 14, 44,205, 19, 67,159,155,163,255,207, 47, 2,153, 33,162,178,220, 88,151, 99, 52,241,172,
-196,249, 84, 9, 49,245, 60,161,207, 7,150,215,149,166,125,235, 2, 19,214,117,158, 65, 81, 59, 35, 0, 93, 79, 73,250,185,209,
- 51, 61,137,172,139, 29, 47,121, 62,190,233,107, 95,133,139,247, 93,128,151, 92,122, 25,222,255,145, 59,129,175, 60,180,194, 30,
-224,113, 56,193,231, 52, 16,109,241,158,247,151, 27,239,215,232, 89,184, 84,138,207,189, 4, 96,121,174, 34, 3, 14,203,143, 65,
-202,229,207, 96,100, 2, 44,171,142,209, 20,207,215, 29,209, 28, 81,123, 14, 81,171,149, 25,136,158,173, 50,117, 87,188,225,149,
-216, 55,179, 19, 95,125,224, 33,192, 11,192, 50,179, 49, 9,112,252, 36, 80, 22, 27,159,251, 52,161,123, 59, 79,175, 78,155,246,
- 66,105,233,119, 47,233,186, 73,198,140, 98, 30, 80, 45, 26,160,183, 68, 19, 58,109, 98,220,253, 62, 48, 51, 75,243, 59, 24, 0,
- 42,163, 57, 24, 20, 52,199,176,128,110,211,251,129, 5,127,107,137,150, 8, 79,239, 39, 45,154, 19,239, 42,250, 93,148,145,176,
-210,251,170, 70,147,207,246, 28, 74,162,125,240,174,198, 27, 52,205,111,164,175,194,159, 27, 58,211,202,136,191, 24, 3,148,142,
-133, 23, 71,124,211,243, 79,193,130,148,117,244, 25,235,129, 86, 90,209,135, 68,211,124, 13,150,104,141, 22,151, 0,153, 1, 58,
-217, 98,166,110, 52, 73,110, 83, 93, 98, 52, 89,139, 78,163, 47, 55, 38,213,155,154,150,113,198,225, 18,172, 9,242, 97,142, 31,
- 19,146, 25, 78, 1, 56, 55,126, 64, 19,102,196,166, 38,221, 43,150,206,108,121,230, 61, 66,124, 6, 69,247, 25, 70,173,212, 19,
- 97, 84,124,128,165, 4, 82,131,233,171, 46,198,174,189,187,177,112,114,142, 62,123, 54,139,109, 50,218, 96,126, 98,190,152, 38,
-193, 75, 34,208,146,159, 79, 25, 32,213, 64, 59,199,174,169, 41,116, 59, 57,164, 48, 72,117,130,221,121, 7,222, 58, 76,229, 57,
- 4, 72,152,203,146, 20, 62, 4, 20,142, 55,135, 0,109,144,193,128, 54, 84, 96,105, 80, 5,210, 10, 18, 69, 19, 82, 88, 34,144,
-195, 33, 63, 27,207, 63,226, 51,241,188, 26, 65,115, 36,248, 64, 11, 65,147,157,112,207, 30, 9, 18,178,228, 58,153, 66,212,140,
- 20,191,140, 28, 95,223, 85,133, 0,205, 19, 23,173, 6,231,136,145,107, 69,251, 55, 8,160,219, 2,134,125, 98,220, 11,139, 36,
- 0,246, 23,128, 86,151, 24,123,183, 11,204, 47,208,153, 89, 92, 32,162, 90, 22, 43, 11,186, 82, 84, 47, 8, 98,108, 82,240, 61,
- 19, 58,119, 73, 77, 8, 82,154, 9,153,160,121,119,229,218,243,183, 18, 99,139,140,125, 76,216, 92, 31,212, 75,175,193,171, 95,
-246, 82,156,127,233, 37,208,207,219,137,185, 2,248,142, 87,190, 12, 51, 59,102, 49,232, 15, 48, 59,211,197, 37,187,207,195,103,
- 62,243,185, 51,247,126,212,108, 60, 0, 25, 42, 33, 67,177, 42, 39, 88,178,156,124, 30, 33,232,156, 71, 11,159,103,109, 76, 50,
- 51, 89, 85, 75,183,227,170,120,156, 15, 85, 19,234, 77,100,232,188,215,189,171,180,244,184,255,227,125,227, 89, 17,188, 47, 86,
-153,187, 19, 65,224,171, 95,250, 74, 37, 80, 35, 16,253,156,155, 7,250,131,205, 9,196, 66,208,120,179, 22, 32, 12,208, 63, 13,
-136,132,158,211, 6, 32, 55, 76,163, 53,224, 11, 58,115, 66,145,130,212,105, 3,193, 0,253, 69, 64,166, 52,238, 97, 65, 22,132,
-194, 3,153, 34, 70,159,104,182,208, 1,240, 3,162, 25, 70, 19,225,113,172, 93, 2, 52,126,103,129,162, 24,127, 95, 37,204,244,
- 37,189, 63, 44, 42,165,101,179, 86, 33,147, 1,157, 14, 41,153,138,133, 26, 95, 83, 18, 35,255, 48,252,203,122,206,198,217,162,
-228,189,165, 21,208, 50, 52,247,115,139,180, 62,145,127,132, 0, 36,105,197,144,132, 36, 75,155, 43,217,154,225, 1, 59, 4,172,
- 2,130,170, 4,131, 16,160,183,216,158, 65,147, 24, 15,134, 7, 61,116,232,210,100,174,151,225, 13, 61,153,146,213, 4, 97, 49,
- 41, 49,190,222, 18, 96, 23, 43, 83,165, 94,197,100, 25,255, 63, 50,179,240, 97,140,230,150,149,190,211, 31, 2,166,164, 49, 56,
- 95,227, 11, 44,185, 74, 77, 7, 63, 8,132, 16,112,108,105, 0,244,203,179,159, 63, 45,232,103,185,220, 56,226,125,217, 12,158,
-101,180, 49,243, 12, 59,186, 57,118,228, 45, 12,221, 16,137,202, 32,132,130, 11, 64,102, 52,156, 4,114,149, 96,105,232, 97,132,
-198,206,118, 27, 30, 14,189,185, 5, 58, 88, 96,169, 48, 97,105,189,112,244, 28, 33, 84,204, 48, 75,129,165, 97, 69,192, 38,101,
-174,232, 34, 1,152,241,250, 74,147, 49, 44, 17,103,220,183, 39,240, 26,219,117, 16, 36,157,215, 23, 13, 8, 9,216,231,177,242,
-119,172, 29,215,108,109,237,255,219,141,200, 7,140, 38,162,215, 27, 18,227, 94, 90,168,126,182,235,140,188, 79,103,100,105, 1,
-104,231,116,112, 53,239, 45,187,140,182, 88,103,182, 33, 18, 64, 79, 68,184, 45,201,173, 18,173, 37,245,253, 47, 5,237,219, 44,
- 95,223, 57,156,156,195,213,204,254,107,201, 7, 47,185, 18, 95,187,111, 47,174,250,154,125,208,198, 64, 10,133,223, 93,248, 71,
-180, 90,109,244,123,125,120, 15, 44, 44, 14,177,184,184, 0,180,103,128,211, 79,158,121,145,200,152, 81,147,209,156,175,230,123,
- 37, 39,162,243, 36, 16,148,182,178,210,149,126,229,207,215,199, 85,223, 75, 35,147,176,174,148,131, 58, 61,113,252,249, 96, 1,
-175,171,117, 26,185,168,252,184,213, 99, 53, 28,121,164,114, 97,214,233,206, 70,247,175,214,192,142, 61,192,220,177,138, 65, 58,
-144,146,165, 88,200,142, 90,184,101,197, 8, 69,181,238,129,191, 19, 21, 31, 33,129, 84, 0,133, 1,100, 73,230, 96,128,172,122,
-138,207,169,244, 36, 72,150, 53, 58, 16,215,173,176,149, 18, 81,176,229,161,254,126,152,120, 63, 77,170,239,109,202, 5,204,252,
-103,166,195, 22,137, 41,114, 55,198,131,101,249, 30,113, 47,157,141, 66,182, 25,198, 94, 12,137,142, 11,144,176,191,180, 64,252,
- 45,142,185,100, 26, 17, 93,174,174, 32, 1,107,169, 79,251,201,150, 68, 3,134, 5,241, 93,222,151, 91,167,169,107, 77,230,129,
-118,206, 27, 56, 84, 62,184,192,155, 82,201,117, 74, 92,158,181, 80, 81, 17, 74,161,201, 7,209,105,209,239,118, 88, 73, 85,107,
- 73,174,241, 96, 73, 65, 23, 11,108,118, 91,237,144,120, 71,207,106, 45,253, 46, 88, 43,138, 38, 35,207,215, 45, 74, 12,143,158,
-130, 59,118,146,124,116,103,101,233,144, 44,233,218,149,205,155,237, 46,155, 1, 19,250,188, 80,232,116, 50,236,105,229, 8, 65,
- 32,211, 6, 65, 8, 40, 8,116,187,109, 20, 69,137, 92, 75, 88,235, 96,164, 70,225, 75, 88, 31,224,124,192,208, 89,146,136,123,
- 5,141,175, 28, 18,179,141, 82,171,103,198,238, 1, 12, 29, 32,108,181,150,214,146,164,169, 36, 19, 75, 95,249, 15,203,104,170,
- 21,100, 85,128,228,107, 50, 69, 43,216, 60,191,218,218,141, 76,157,178,230,152,148, 36, 56, 24,189,242, 62,138,102,210, 51,172,
- 28,231,128,161,167,124, 64, 61,107,145,214, 3,121, 70, 26, 87,194,254,208, 84, 1, 69, 77,115,239,228,180,111,146,148,215,193,
-144,182, 82,186, 51,173, 87, 62, 48,115,246,164,237, 40, 65,231, 43, 18, 92, 35, 73,106,183,174,102, 45, 96,247, 72,159,199, 63,
-236,173, 95,235,153, 20, 34, 54,193,208,209,202,112,222,197,123,112,253,181, 47,133, 84, 18, 40, 61,172,183,184,176,211,193,253,
-143, 63,134,233,172, 13,231, 28,250, 75, 61,220,253,224,151,113,242,209,199,136, 67, 78,238,139,145,182, 43,170,222,142,163, 88,
- 14, 63,238,243,142, 46, 9,107,137, 70,200,168,197,176,150,166, 4, 9, 79,235,177, 86, 76,154,127,101, 77,217, 40,121, 93, 74,
- 95,249, 61, 71,123,149,233,159,175, 53,152,148,172,109,173, 71,211,246,172,249, 59, 55,238,110, 92,139, 6,207,204, 18,109,112,
- 14,216,247, 60, 96,182, 5, 28, 63, 77,174, 29, 37,137, 49,200, 26,141,147,129,253,177,108, 5, 17,146,155, 91, 74, 87,209,197,
- 0, 0, 32, 0, 73, 68, 65, 84, 91, 64,164, 76,135, 44,157, 99, 33, 88,160,103, 97, 74,176, 98,148,105, 32,176, 63,221, 59,154,
-223, 44, 39, 70, 21, 93, 36,142, 77,198,113,191,134, 64, 52,192,242,121,174,191,239,253, 72, 97, 66, 89,174,233,174, 88,214, 85,
- 3, 73, 99, 73,216, 21, 21, 45, 36,139,189,113, 75,144, 96,186, 20,194,185,119,241,149, 76, 67, 3,211,222,162, 36, 6, 45, 37,
-173,137, 2,209,144, 52,231,253,164,200,162, 42, 68,245,188, 49,158, 42,225, 88, 51,200, 45,212,212,173, 37, 77, 53, 41,136,185,
-199,255, 73,150, 6, 53, 7,119,181,176,190, 96,157,178, 32,115,162,103,102, 23,253,231, 0,153,155,149,220,216,243, 45, 43,133,
-105,140,205,192,106,196,202, 90, 18, 38, 34,145,140,140,119,181,192,166,141,162, 55, 24,215, 16,150,115, 75, 56, 75,139,108, 12,
-187, 9, 36,178,212,160,231, 45, 90, 82, 35,176, 58,210,110,231, 80, 2,104,165, 6, 67,235,160,181,198,192,150,104,235, 12,115,
- 69, 31, 74,177, 25, 63,106,124,182,168, 44, 23,253,146,214, 48,176,198, 62, 12,204,208,253,153,166,225,146, 41,171,172,153, 42,
- 13, 31,170,210,159, 25,195, 80,128, 2, 13, 97,104, 44,171,238,129, 72, 68,121,190,181, 1,116,151,168,121,137,229,131,133, 38,
- 25, 58, 91, 20,105, 78,129,181,205, 3,103, 33,212,250,154,181, 31, 0, 18, 67,218, 76,198, 65, 44,194,144,116,173, 13,249,194,
- 90, 6,152,103,159,122, 57,164, 57,239,245,105,223,235, 9, 70, 53, 50, 33, 79,104,161,163,128, 70, 11, 68,119,121,167, 13, 12,
-248,187,169,168,108,196,253,254,198,181,158,209, 51,212,230,114,131,152,210, 64, 49, 24,192, 7,192,200, 4,195, 65, 31, 90, 73,
- 28,190,235,203, 16, 65,160,103, 45,180, 82,120,224,190, 71, 72,123,145,171,156,109,137, 51, 25,108, 60,219, 90,147,127,119, 4,
- 14,132,115,254, 76,237,125, 61,150,155,229,222,183,182, 90, 7, 35,171,253, 20,233, 81,253, 94,206, 87,110, 65, 37,207,124,142,
-173,222,127,251,158,135, 23, 92,121, 41,250,118,128,135, 62,241, 89,224,241,199, 89,144, 40,128,192,227,205,178,106, 14,163, 11,
- 82,241, 89,106,101,180, 63, 18,205,214,194, 1,187, 18, 88,115, 22,236, 62,163,224, 30,214,204, 19,118,201,241,225, 46, 11, 64,
-118, 56,182, 74, 0,105, 27, 56,122,188,178, 52, 90, 0,130,125,240,138, 15,203,136, 31, 88,114, 9,196, 56, 40, 36,213, 26, 70,
-235,213,228, 17, 54,186,218, 20,161,224,247,116,165, 28, 14, 88, 27, 78, 21,157, 69,233, 55, 47,160,110,194,240, 10, 68,107, 15,
-206,124,118,128,207,100, 89,173,143,201,128,225,128, 20,132, 97, 65,214, 12, 45,136, 38,179,177, 18,185, 33, 75,114, 12,236, 75,
- 59, 52,239,173,108, 27, 2,229, 70,129, 41,178,242, 61, 7, 79, 27,194,241,131, 75, 54,189,174, 71,244,138, 82,148,247, 85, 48,
-138,102,230, 55,100,191,143, 97, 13, 92, 49, 99, 89,175,251, 84,235, 51,163,225,253, 26, 95,150,158, 36,167,250,207,237, 56,167,
- 43, 73,140, 89,194, 17,145, 45, 54,141, 11,200,156,152,119,106, 20, 0,129,194, 23,232,152, 12, 50, 0,105,150, 34, 75,114,136,
- 0, 72, 41, 49,180, 14, 18, 2, 65, 6, 72,225,177, 48,191, 68,146,112,105,129,254, 82,229,187, 73, 21,109, 44, 40, 58,216, 90,
-179, 84, 30, 38,226, 21,216,159, 43, 88,155,143, 18,111,124, 9,144,214,168,120, 95, 68,134, 94,128,136,247,106,218,146,143, 26,
- 0, 7, 57, 6, 73, 17,182,237, 22, 73,223, 74, 2,189, 30, 61, 91,183, 11,236,222,197,153, 10,110,124, 13,235,107,236,183,241,
- 0, 75, 89, 89,150, 0, 10,232, 18, 28,116, 89, 14,137,145, 7,102,232,195, 33,141, 97, 56, 4, 90, 45,142, 56,102,243, 90,150,
- 80, 20,108,180, 56, 24, 38,160,137,170, 2,212,140,162,117, 80, 81, 19,172,197,130,104,205, 62,182,232, 35, 68, 21, 92, 51,236,
-175, 79, 67, 93,201,173,128, 13,134, 38,180, 50, 96,215, 30, 20, 74, 96, 71, 42, 49,219,157, 70,175,223,199,112, 56,196, 35, 39,
-158,192, 87,189, 2,144,225,248, 98,129,199, 22, 22, 17,220, 2,176, 56,207, 22, 9,185,178,182, 94,223, 99,117, 31,169,209, 36,
-240,107, 65, 86, 38,189,134,185,123,179,154,153, 16,149,229,174,100,171,100, 12, 68, 4,107,159, 49, 6,194,251,241,159,194,173,
- 62,135,209, 7,190,209,224, 80,182, 40,236,190,232,124, 60,126,122, 14,229,227,199,198,227,139,226, 53, 11,214, 4, 93,180, 90,
- 70,171,130,169, 4,112, 41,232, 25,139,130,246,111, 12,246,147,130,104,133,103, 6, 26,216,109,167, 2,251,231, 29,199, 33,149,
- 64,154,209, 61, 74, 14,128, 83,134,232,129,209,116,246,133, 96,166,165,232, 59,153,193, 40,235, 70, 9,122, 30, 25, 5, 83, 67,
-180, 57, 97, 6, 30,199,164, 65, 1,117, 41,251,255,163, 79,124,204, 69, 5, 14,238, 27,112,180,184, 59,119, 26,185,172,187, 2,
-153,183,248,101, 92,133,214,210,217,215,154, 63,227,121,252,188,215,250,253,138,255, 69,225,220, 59,162, 21,146,227,159,134, 44,
- 12,155,214, 22,251,212,173, 37,127,183, 97, 34, 54, 23, 72, 75, 25, 29, 6, 11, 12, 2, 75,253,122,121,173, 73,235, 74, 18,206,
- 19,250,136, 97,166,141, 2,152, 31,208,134,105,165,181,168,245, 80,105, 17,253,130, 36,154,224,151,247, 75,174, 37, 89,173,246,
-121,187,194,207,115, 5, 15, 34, 30,253, 62,208,109,211,191, 74, 15,159, 1,131,210, 67, 25,137,212,104, 12,220, 0,185,153,169,
-132,217, 76,163,191,216, 67, 22, 3, 47,250, 22,214, 7,154,183, 1,175, 89,180, 20,104, 13,244, 44, 75,125,156, 98,177, 82,234,
- 79,157, 48, 46,231, 67,140, 38, 80, 37,233,160, 75, 77,218,100,212,250,215, 66, 97, 89,171,103,159,125, 61, 69, 40,254, 34, 52,
-208,237,208,181, 91, 25,153,176,173, 29,215,210, 55,169, 97,110, 92,163,173, 91,144, 60, 73, 48,145,161, 23,236,124,237, 15,129,
- 60, 37,201, 59, 79, 41, 29,168,157,147,175,207,104,122, 63, 30,246,186,102, 94,122,118,207,248,113,173,189,230,213,128, 4,125,
-127,116,222, 98, 90,105, 56, 55,155,181,126,118,101,130,233,107, 46,195,193, 43,246, 99,110,176,132,196,164,120,228,241, 71, 49,
- 40, 29, 74,239, 48,191, 20,240,245,151, 92,134,157, 83,211, 72,211, 20,206, 14,241,240,241,199,240,201,197, 62,249, 22, 87,242,
-111,174,166, 89, 41, 89, 9,142, 81,120, 92, 78,131,158, 36,170, 27,213,190, 70,230,247,154,149,106,228, 6,169, 89,139,226,255,
-198,126,174,131,200,104,156,233,203, 95, 15,230, 23,240,249, 79, 28, 30, 79,233, 93,110,204,206, 87,154,178,226,179, 37, 11,182,
-126,121,178, 18, 9, 73, 90, 99,244,141,215,253,225,206, 3, 34, 39,191,186, 47, 57,162,190, 95, 99,218,158,211,109, 65,138, 92,
- 89,140, 91,179,226, 62,137,231,101, 56,160,207, 37, 28,135, 98,107,251, 85, 72,122, 62, 88,142, 51,146, 53,134,206, 86, 25, 27,
-170,207,198,185, 23, 53,247,137,139,238, 87, 22,114,207, 5,162,101, 65,215,246,173,214,213,218,142, 89,193,106,207, 28, 5,115,
-233, 1, 47,145,188,232, 82, 92,123,241,101,248,167, 79,126, 10, 56,122,146,206,115,156,191,222,128,180,244, 98, 80,155,211,114,
- 27, 82,218, 60, 75,127,253, 1,105, 42, 34, 0,150,165, 88, 23,216, 68, 51, 65,100, 12,107, 36,210, 0, 45,246,129,228, 44,133,
-228,156,171,151,179, 79, 40, 99,115,132,214,100,222, 20,138,222, 51, 28,138,106, 20,249, 41,140, 33,237, 78,196,136,225,154,228,
-191, 90, 0,208,102,165,184,115,145,118,165, 36, 77, 91,150,179, 79,209, 67,182, 51,132, 32,209, 74, 21,180,148, 80, 80,200, 84,
- 10,201,129, 34, 89,146, 99, 80,150, 48,198, 64, 72, 1, 91,150, 72,147, 20, 71,142, 31, 39,237,188,215, 35, 51,187,117,227,254,
-195,232,119, 93, 77,178,141,140,187, 30,225, 43,196,184,176,229,125,165,157,196,148,184, 98,184,126,191,226, 72,152, 9, 64,193,
-154,144,240, 64,191,199,254, 39,254, 92, 98,104,147,187, 1, 89,130, 38, 92,241,180,221,182,112,125, 76, 50,158, 30, 19, 5,155,
-122,154, 95, 80, 85, 10,149, 49, 52,110,149, 82, 60,136, 76,232,103, 43, 35, 77, 93,165, 36,236, 56, 87, 17,128, 24,157, 27,153,
-118,212,202, 3, 11,119, 8,227, 65,113,129,231,167,180,100, 73,114,172, 37, 57, 54, 65,151,229,246,237,205, 52, 33,107,140, 96,
-141,238,210,139,241,154,253,251,208,233,182, 48,219,157, 69,112, 30, 15, 28, 63,137, 79,125,238, 49,156, 14, 22,179,173, 14,118,
-118,102,113,222,238,243,176,115,231, 44, 90,211, 83,104, 67,195,230, 10,199,164,165, 0,194,141, 70, 34, 7, 94,107,167,136,120,
- 75,201,209,242, 28,139, 16,194,230, 77,175, 87, 93,138, 87,188,250,149,120,252,203, 95, 97,203, 17,223, 43,212,180,116,137, 42,
-214, 33,132,181,125,245, 43, 9,238, 82, 87,214,192,141, 98, 88,172,108,145,138,231, 91,202,202, 37, 19, 2,113, 58,231,201, 26,
- 20,221,114,222,113,160, 91, 12,126, 85,100,253,136,103,200,179,175, 95, 71, 75,105, 66,239, 69, 11,192, 40,138,155,173, 68, 25,
-167,202, 37,170,218,139, 49,230,202,123, 32,105,115, 44, 9, 31, 86,193,177, 10, 66, 87,227,137,181, 1, 50, 14,248, 27, 22,108,
-253,144,149, 37, 46, 94, 87,240,218, 72, 89,179, 90,249,181,231,127, 43,249,160,175,107,235, 76,136,150,219,115,245,117, 25,101,
- 35, 13, 1,239,144, 95,188, 23, 74,120,156,252,194,131, 85,182, 82, 60,235, 49, 35, 75, 73, 10, 34,239,245, 0, 41,183, 73,127,
-169, 75, 34,214, 2,105, 12,146, 67,165,161,197,232, 68,112,128, 79, 98,104, 80, 90,147,175, 49, 58,125,234,135,177,157,210, 6,
- 44,107, 3, 75,217,228, 34, 2,144, 43,192,114,238,159, 99,194,103,153, 72,150, 49, 10,118,139, 35, 28,235, 38,148,237,198,176,
-224, 40,244, 69, 0, 29,192, 8,120, 59,132, 85, 2, 11, 67, 1,151, 2,169, 73, 49,176, 5,218,121, 27,153, 49,176,174,207,177,
- 85, 30, 90, 8,132, 52,193,241,185,121,168, 68,193,249, 64,115, 50, 55, 87,153,122, 67, 77,197,181, 27, 12,168,170, 23, 38,169,
- 23,141,152,244,101,215, 53,144,181,180,145, 40, 92,148,236, 35, 29, 44,156,185,215,230, 23,232, 85, 87,167,108, 93, 61,183,103,
-191,198,209, 55, 42,216, 71, 89, 22,227,207, 30,247,150,224, 98, 51, 66, 2, 97,192, 41,101,236, 75,207, 83, 50,147,165,172,169,
-171,148, 35, 94,185,232, 71, 50, 17,185, 63,233,163,143,130,157,243,227,154,123, 56, 71, 62,194,245,104,232,140, 61,179, 93,236,
-236,182, 1, 72, 12,122,125, 8,157,226,138, 93, 59,240,249, 47, 62,137,249,185, 30,220,244, 78,204, 78,119,209,233,228, 40, 16,
-208, 73, 18,228, 23, 93,136, 52,203,161, 80,226,190,167, 78,110, 60, 26,217, 70,127,112, 89, 17,241,122,116,181,192,250,162,207,
-151, 67,223,226,177,147,199,198, 93, 58, 30,103,186,240,228, 50, 86,129,245,222, 55, 42,241,147, 62,228,205,248,114,237,106, 26,
- 36, 42,223,178,146,149,191, 28,168, 50, 42,100,140,137,225,224,221,200,220,125, 44,188,227, 41, 47,186,228,232,249,122, 16,109,
-116,189,196,115, 27,153,176,170, 69,195, 39,181, 40,239, 52, 97, 87,138,102,193,150,231, 75,129, 76,240,162, 46,160,179,230, 31,
-179,153,172, 37, 97, 64,162,218, 47, 49,248,110, 50,142,226, 92,159, 9, 76, 88, 92,244,132,159,125, 57, 30, 98,146, 42,198,192,
-104, 44,222,125, 63, 30,168,143,181,174, 4, 71, 1,101, 88, 80,102,209,182,248,212, 87,130,115,149, 47, 38, 6,183, 36,138,136,
- 91,154,176, 54,158,210,207, 78, 70, 82, 93,146, 80, 68,112,167, 77,154,122,150,144, 86,158,166, 28,136, 39, 41,114,216,129, 52,
-243, 68,115,254,163, 35,255, 76, 2,146,250, 18,195, 26, 61,136,241, 27, 93, 85, 71, 91,205,180,183, 94,205,219,251, 42, 29,218,
-215, 14,213,182,237, 33,174,118, 17,163, 84, 11,139,144,103,108,153, 87, 72,165, 66, 98, 12,116,106, 80, 12, 75, 20,195, 1, 68,
-224,200, 79, 9, 44, 46, 45, 65, 74, 9,143,128,254,226, 2, 11, 64,156,131, 30, 56, 90, 84,200,113,115,250,122, 24,250,114,154,
-201, 74, 69, 84,162,105,172,158,123,189,165,146,115,221, 1,124, 22,215,141,218,120,244,151,135, 64,204, 57,203,106,126, 83,206,
-179,245,158,133, 34, 22, 34,149, 34,138,166,162,166,193,133,104,178,148,211, 37, 13,229, 3,231, 45,250, 59, 73,201,135, 89,183,
-126,104, 78, 1, 84,130, 52,160, 80,211,204,117,204, 44,169,105,134,246,105,170,220, 23,235, 74, 4, 54,183, 66, 98,169, 44, 48,
- 61,211,197, 84,154,194,100, 41,138,126, 15,255,124,236, 73,156, 56, 49, 15,184, 18, 75, 18,184,124,199, 94,152, 36, 67,107,170,
-133,150,209, 16, 70,192, 11,131, 86,218,133,106, 39,120,234,248,137,141, 51,246, 80, 99,230,113, 79,202,122,142,120, 88,249,172,
-215, 35,231, 39,247,227,233, 57, 44,124,229,171,172,157,170,106, 91, 69,159,180,168, 49,143,229, 74,108,136,117,156, 13, 95,123,
-150,141,158,135,250, 24, 48, 49,134,169,221, 85, 65,174,120,109,231,200, 87, 29,159, 57, 97,230, 46,153,134,198, 26, 32,138, 9,
-155, 81,100, 1,203,100, 37, 80,186, 88, 72,166, 22,189, 30,239,233, 10,218,251,157, 46,237,113, 25,200,130,162,216,106,226, 60,
-199,219,200, 90, 96, 28, 75, 69, 90, 18, 51, 15,181,245, 84,236,231, 87,158,252,243, 96, 33,210, 22, 85,150,192,164, 53, 36,106,
-235,126,157,180,105,171, 53,117, 41, 43,139, 75,100,220, 30,203,199,138,140,206, 18, 91,187, 12, 71,236,151, 37,205, 65, 89,146,
- 59, 68, 49,115,137,149, 9,227,184,173, 37, 30,155,118,206, 17, 83,143,155, 78,178,223, 67, 73, 98,206,221,156, 24,238, 84,135,
- 24,181, 49, 80, 51, 83, 8, 82, 35,105,231,208,105,138, 60, 53,208,218,160,155,182,144,167, 41,188,210,104, 39, 57, 84,150,192,
-123, 9,145, 39, 8, 38,173, 22, 50,230, 54, 6, 80,192,151,102, 63, 81,158,112, 0,142, 34, 98,109,125,149, 86,101,237,120,144,
-156,201,200,156,148,242,225, 88,206, 12,168,107,135, 16,190,242,219, 70, 62,178, 93,140, 61, 10, 17, 14, 52, 22,235,128,225, 0,
-161,221, 6,124,128,215, 64,110, 52, 92,225,144,153, 4, 74, 25, 88, 81,194, 59,135, 65,105,225,157, 71,225, 28,158, 56,117,154,
-221, 36,108, 10, 86,160,181,136,135,204,121,170, 78,182,158,192,146, 72, 40, 70,102,164, 85, 76,135,145, 97,197,234,100,145,216,
- 10,241,204,170, 26,167, 57, 63, 55,237, 96, 20,188, 34, 36, 9,140,165, 37, 33,211,113,174,104, 12,228,209, 76,120, 50,195, 65,
-115,108, 41, 50,138,136,143,228, 50,191, 50,173,254, 14, 37,125,182,232, 85,135, 63, 30,110,128,138,126, 4, 22,226, 66, 32,226,
- 56,202,215,230,128, 48,241, 52,165,228,140, 24,150,160,241, 75, 84,197, 67,164,196, 87, 37,112,225,142, 14,230, 22,231,113,124,
-241, 20, 62,251,232, 81,224,216, 34, 48, 40, 81,218, 18,143,244,150,176,167,221,198,212, 84, 23,202, 72,244, 22, 29,164, 1,118,
- 77,207, 32, 19, 45, 12, 18,133,147, 39, 87, 96,236,145, 1,215,199, 60,242, 77,178,107, 34,254,172, 7,214, 45, 87,177, 47, 22,
-154,138,230,231,181, 82,111, 99,208, 88,168,107,237,126,252,250,171, 69,240,175,154, 74,235, 55,185, 87,107, 26, 97,140,101,137,
-140,254,188, 61,180,215, 6, 75,227, 2, 64, 20,198,227, 94, 83,181,160,227,193,144,246,117, 97, 57,232,149, 43,174, 41,158, 83,
-235, 72, 16,136,174,174, 24,180, 8, 84, 1,109, 49,157, 44, 97,166,109,251,204,240, 57, 61, 51,225,243,161,146, 90,234, 28, 11,
- 16, 37,187,173,130,160,152,170,146,105,170, 54,236, 94, 77, 86,175, 56,183,234, 26,216,237,175, 69, 85,103,226,245,245, 89,203,
-244, 31, 3,253,226,126,205,146, 42,200, 50,102, 41,197,191, 77,139,232, 73, 43,163,201,145,150,178,126,207,154,169,155,140,152,
-179, 72, 43,226,183,156, 36, 47, 88, 59,207, 18, 96,166, 77,149,182, 50,174,246,147, 25,116,186, 29,228,173, 14,114, 99,176, 51,
-107, 97, 42, 75,208,209, 6,157, 36,195, 76,146, 34,209, 6,221, 36,135, 16,192,174,164,141, 60, 49,112,240,152, 78,114,104,101,
- 16,180,132,206, 18, 56,161, 72,147,213,236,207,148,236,103,151,236,227, 28,153,255, 85,149, 11,238,107, 26,157,166,234,108, 84,
- 25,140, 75,163, 46,119,192, 71, 49, 47,190,182,112,181,107,216,237, 76, 95, 81, 76,200, 11, 10, 18,113, 14,232,247,225,124, 64,
-222,201, 81, 6,139,174, 78, 33, 37,112,122,176,132, 84,165,152, 31,246,161, 4,105,232,167,250, 75,176,206,195, 45, 46,144,134,
- 88,122, 46,183, 91,115,119,104,205,230,102, 93,229,247,110, 84, 81, 94, 73,171,243,126, 60, 37, 49,154,228,156,123,230, 48,116,
-128,181,236,146,230, 58,106,206, 46, 70,168, 70, 77,198,208, 70,208, 44, 61,199,207, 12,122,148,122, 40,234, 46,132, 1,205,113,
-209,103,237, 62,212,222,175,229, 68,143, 42, 42,178, 85, 35,136, 42, 71, 56, 75,168,138, 84, 98,232, 25,158,183, 7,152, 91,170,
-245, 62,136,230,240,132,204,158,144,103,250,254,183, 67,208,204,116,205,204, 44, 1, 55, 64,120,226, 36,190,252,197, 35,120,232,
- 75,143,224,241,135,143, 1, 39,231,200, 26, 81,246,129,211,115, 40,150, 22,240,144,243,152,209, 41,132, 76, 32,181, 66,158, 25,
- 12,134, 5,138,210, 98, 74,165,184,127,176, 72,197, 54,234,193, 86, 53, 98, 45,164,164,151,247, 16, 35, 66, 30,234,106,116, 37,
- 68, 46,199, 52, 71, 74,128,172,162,191, 29, 87,251, 90,105, 63,142,238, 17, 42, 97, 52,230,164, 79, 6,142, 46,251,253, 45,204,
-154,169, 51, 12, 37, 43,237, 91,212,202,212,206,159,174, 24,122,125, 14,116, 45, 98,220,203,170,250, 94, 96,229,199, 57, 14,238,
-146, 20, 35,101,244,184,245, 35,230,154,199,223,163,198, 62,138,223,224, 10,135, 78,208, 30, 44,152, 94,106, 95, 41, 63,138,149,
-147, 80,144,165,214, 59, 18, 20,180,167,136,122,237,171, 2, 63,224,115,161, 76,229,215,183, 88, 61,134, 96,108, 29,248,156,217,
-115, 32,252,142,197,111, 69, 43,181, 92,159, 53,205,232, 42, 54, 32, 86, 51,141,213,248,164, 98, 43, 96,168, 2,228, 98, 28, 69,
-214, 1,236, 86, 4,202,237,216, 9, 76,119, 41,221, 40, 36, 36,225,141, 24, 36,251, 64, 4, 7,190,181,217,148,222,105,115, 4,
-123, 11, 59,166,167,208, 54, 45,116, 76,130, 78,146, 99, 38, 75,161, 32,161,165,161, 84, 45,157,162,163, 83,104,109, 0, 8,236,
-109,205,162, 95, 14,161,164,196,116,210,130,112, 64, 46, 53,118,152, 22, 44, 60,114,147,194, 9, 1,167, 98,105, 82, 84,126,161,
- 36,154,149, 5, 73,122,193,115,128, 29,170, 3, 28, 43,129, 73,206,135,177, 97,101, 63,124, 93, 35,151, 53,230,190,221,146, 96,
- 12,166,138,229, 6, 93, 73, 11,172, 12,250, 58, 65,158, 26,204, 23, 3,180,148,129, 86, 26,189,114, 0, 5,137, 94, 89,160,231,
- 10, 44, 21, 67,244, 23, 22,105,124, 67, 75, 25, 10, 69, 96,169, 56,169, 2,208, 16,106,105, 44,203,104, 55, 70, 19, 97,208,106,
-109, 77,123,100,218, 20,227,129, 43, 81,235,113,254,220, 4,176,172, 7, 89,194, 37, 43, 89,160, 41, 89, 27, 47,125,165, 45,107,
- 54,123,167, 6,163,200,220,140, 45, 64,142,211,134,162,115, 83,166,156, 26, 8,210, 76,226, 26,198, 26,225, 10,227, 65,108,130,
- 53,126, 17, 53,164,218, 30, 11, 92,200,135,215,235, 5,215, 93,133, 99, 71, 30, 27, 39,108, 74,146,245, 37,112,160,216,185, 48,
-203,199,234,129, 34, 84, 65, 84, 49,101, 42,112,122, 31, 64,251, 52,174,243,176,128, 91, 42,241, 72,217,199, 46,157,161,213,202,
-160,180,198, 82,111, 8, 95, 6,244,122, 61, 40, 25,112,162, 4,196, 96, 8,161, 0, 17, 2,164,146, 16, 33,140,106,208, 8,128,
-152,122,252, 41, 37, 4,107,233,228,117, 11, 92, 90,194, 46, 47, 32,123, 89, 85,153, 68,168, 52,214,114, 29, 1,103,129,131,126,
-203, 9,139,214,106,154,226, 86, 50, 21, 89,115,149,229, 25,144,228, 36,168, 7,199,251,112, 21, 55,162, 99, 87, 66, 81,210,254,
- 81,156, 50, 26,216,106, 81, 63,247,169,161, 57,137,150,167, 1, 23,255,138,166,124,239,171,207,215, 83,173, 6,158,175, 63,172,
-138,214, 40, 78,145, 21,204, 27,130, 37,174,237, 74,178, 76,105, 95,179,160,138, 42, 64, 46,240,254, 23, 92,156,204, 59,122,238,
-213,148,129, 49,235, 33,206, 61,125,241,126, 92, 91, 95, 47,125,143,138, 69,228, 97, 81,216,178,101,149,206, 22,106,244, 42, 6,
-133, 58,191, 5, 76,189,213, 33,205, 91,176,201,182,224,218,224, 58,214,234,230, 42,115,218,144,223,124,231, 12,144,166, 72, 59,
- 45,156,223,238,192, 8,137,110,146, 34, 55, 41,140,148,104,233, 12,146, 37,200,110,210,230, 30, 38, 26,137,212, 80, 8, 24,122,
-135,220,228, 16,193,195, 7,143,204,164,240,206,194,134,128,142, 74, 49,116, 5,164, 18,104,155, 20, 94,122, 40,149, 0,218, 32,
-128, 55, 99, 96,139,193,192, 81, 64, 94, 97,163,184, 72,230,139,210,113, 78,101, 96, 45,189, 88, 99,211, 76,254,244,235,207,147,
-223,138, 13, 86, 39, 30, 37,231, 63, 39, 25, 16, 2,250,174, 68,233,135, 8,222, 99,161, 28, 32,192, 97, 97, 80, 96, 97, 56, 36,
- 63,186,141, 1,140, 49,135, 54,208,239, 41, 91, 86, 60, 7,124,197,138,122,117,233,243,140,226, 63,107,152,127, 71,121,186, 98,
-156,153,215,115,143,183, 58, 66,125,179,126,116, 37, 40,146, 52,145, 92,222, 54,106,238,204,128, 99, 99,161,161,163,130, 50,129,
-173, 28, 14,180,151, 2,184,172,227,160,202,227,183,150, 53,255, 58,225,231,235, 21, 19,190,255,232,195,143,213,184,130, 39, 95,
-162,136,101,132,121,203, 42,224,216,163, 79,156,217,224, 67,178,214, 21, 3,136,206, 69,151,188,229, 42,160,197,255,201, 9, 70,
- 24,159,209,147, 0,228,150, 22,241, 21,111,209,129, 66,162, 83,244,150,122, 8,176, 56, 49,127, 18, 11,189, 1, 78, 91,143,144,
-119, 32,134, 22,162, 28, 64, 72, 49,122, 73, 41,136,105,243,245, 4,107,239,145,161,143,121, 9,150,211,210,163, 63, 57,174,111,
-244,191, 23,182, 86, 55,127, 45,183,211, 42, 12,215,218,202, 29,229,183,161, 97, 72,156,211, 68, 83,161,151, 86, 74,123, 68,112,
-115,160,181, 50, 30,132, 32, 51,174,240, 84,239,161,197, 85,228,138,126,213, 56,100,224, 88,177, 97, 11,100,108,210, 18,215,208,
-232,138,201,196, 98, 64,162, 86,237, 80,123,162,255, 49,122,219,250,170, 96, 82,180, 10, 38,130,178,164, 60,151,243, 45, 81, 53,
- 3, 27,197,165,112,238,186,103,179,189,183, 85,214,206,102,172,135,171,197, 80,172,228,234, 25,197, 46, 76, 92, 51, 77,206,204,
-178,218,140, 91, 37,242, 77, 37,198,104,170,186,230, 50,132,175, 30,165,251, 68,183, 72, 93, 80, 21,213,222, 61,123,166,238,184,
- 48,134, 11,192,226, 0, 40,123, 76,192,121,161,179,188, 98,230,211, 93, 36, 89,134,243,167,103,177, 43,109, 33, 55, 9,180, 86,
-200, 84,130, 76, 39,200,149,193, 16, 14, 45,147,195, 57, 7, 37, 37, 82,147,142, 36,146,118,154, 51,251, 8,208, 82,195, 8,129,
-194,123,164, 73, 11, 1, 30, 66, 0,221,172, 5, 3, 9, 31, 60,140,144, 16, 74, 82,133, 72,163, 16, 98, 1, 4, 1,210,118,162,
-143, 29,156,214,225, 37,117,123, 26, 22, 85,112,223,118,164, 1,181, 58,188,112,114,107,180,168, 72, 44, 4, 53, 74, 40, 3,241,
-155, 97,240, 40,217,135,238,124,192,124, 49, 68,111,200, 18,118,212,246, 69,189, 46, 53,167,229, 32, 22,248,240, 92, 40,168, 86,
-132,166,206,156, 39,137,195, 90,218,186,247, 85,249,210,200,216,227,117, 66,216,222,226, 48,235,133, 98,181, 32, 30, 28,149,208,
-254, 94,236, 85,154, 89,146, 0, 94, 81,230,133,141, 37,141,107, 62,111, 88, 98,228,154,171, 98, 5,174, 2, 56, 28,156, 73,105,
- 98, 77,246,186,144, 87,111, 0,130, 48,206, 36,141, 38, 51,102, 76,211, 42,202, 51,153, 69, 36,158,177,248,207,118,105, 39,102,
- 29, 68,113,181,244,209,200,140,188,128,155, 63,141,135, 79, 44, 32,203,128,133,197, 37,244,251, 67, 44,245,135,152, 31, 20,104,
-167, 9,140, 78,208, 23, 30,194,164, 16,101, 9, 17, 28,100,212,210,163,214, 30, 25, 59,207,199,228,207,101, 53, 34,163,137,118,
-197,174,111,229, 68, 7,184,201, 0,186,141, 88,147,234, 41,153,103, 35,100,118, 90, 20,131,180,146,175, 95,114, 90, 87,154,178,
- 73,157,211,135,203,114,109,250,194,130, 21,188, 7,242, 54, 51,116, 71,110,167, 97,193,193, 87, 28,180, 21, 75,125,219, 48, 94,
-122, 57,106,233,178,150, 66, 44,216, 5, 36,185,225, 72, 52,179, 59, 69, 76, 94,161, 54,207,150,127,175,237,219, 24,241, 46, 80,
- 5,154,122, 27,205, 50,164,148, 72,177,185,122,237, 41, 23,202, 81, 92,222, 54,210,192,216,140,201, 57,242, 83,151,182,150,165,
-101, 43,154, 45, 5,119, 62,228,207,154,140,221,161,220, 88,101, 61,129,191,186,102,233,140,116, 83,131, 43,234, 49, 93,212, 28,
- 55, 48, 44, 16,142,159,102, 75,160, 27, 55,201,199, 40,248, 88, 94,118, 88,108, 5, 83, 47,128,165, 30,181,126, 43, 57, 16, 66,
- 37, 64, 59,161,158,222,173, 20,216, 57,133,206,244, 52,178, 44, 69, 87,167,232, 38, 41, 50,147, 67, 74,137, 41,221,130,148, 52,
- 48, 41, 53, 49,226,224,145, 39, 45,100, 90,163,180, 14,173, 52,135,117,142,138, 68, 41, 67,210, 57, 4,148, 74, 32, 1, 20,174,
- 64,162, 12, 32, 4,202,162, 68,146, 24,216, 96, 73, 40, 80, 10, 66, 8,100, 38, 65, 97, 29,164, 54,100, 49, 83,181,154,191, 73,
-108, 52,226, 41,101,195,219,237,145,170, 35, 33, 84,172,113,197,110,101,103,227, 75,142, 27, 81, 43,178,138, 72,238,146, 6,135,
-208, 31,160,148,192,176,223,135,133, 64,185,216,227,195,200,121,233,129,115,190, 77,204,139,101,109, 57,250,200, 60,119,118, 82,
-182,170, 91, 61, 74, 95,242,227,126,187, 16,198, 53,176,213, 52, 3,132, 51,125,234,246,105,102,232, 38,163,136, 94, 45,184, 63,
- 49,143, 51, 88,170,171, 16, 15,174, 16,156, 2,228,136,208,116,218, 68, 76, 3,155, 40, 53,215, 71, 8,174,106, 17, 42, 66,213,
- 93,108, 50,176,107, 20,224, 52, 65,253,163, 0, 84, 23,152, 2,215,118, 79, 81,105,148, 43,105, 99,117,179,104,100, 14, 59,118,
- 0,123,119, 3,211, 51, 85,247,193,179,217,199,134,107,243,199,186,243, 35,226,164,199,219, 39, 43,185,114,222,118,140,174,246,
- 14,232,207,225,241, 99,115,120,180, 40,112,122,176,132,133,225, 0, 18, 2,109,163,209, 74, 52, 90,173, 54, 10,163,225, 77, 10,
- 57,112, 16,190,224,216, 91,214,214,173, 29,211,206,151,251,253,140,192,116, 41, 42, 55, 83,204, 57, 7, 87, 72,180,181,253, 14,
- 69,116, 66,201,229,251, 50, 76,106,125,235, 9,138, 90, 15,186, 45, 96,122,138,253,213, 43,180,206,141, 66,156, 20,180, 63, 28,
-168, 6,194, 96,131,173,160,133, 39,173, 60, 12,170,184,130,148,179,135, 44,170,156,116,205,241, 37,134,115,180, 36, 11,191, 8,
- 85, 30,186, 98,115,146, 16, 28,220,201, 46,190,148, 45,127, 49, 63,125,180, 48, 9,251,245, 61,247,122,183, 36, 96,143,178, 76,
- 38,155,247,132,205, 9,172,154,221,170,130, 99, 5,134,182, 50,113, 7,206,163, 51,178,138, 43,136, 12, 86,230, 84, 71,133,106,
- 29,211,239,150,235,210, 11,206,188, 50,168,170, 74,174, 69,211,235, 53, 45, 98,159, 0,165,201,194, 18,115,239, 53, 7,160,198,
-114,176,147,110,208,146,255,231,220,216, 61,183, 38,250,221,215,122,156,171, 90,161,152,110, 14,116,186,152,218,177, 3, 70,105,
- 76,155, 12, 59, 59,211,200, 37,249,122, 91, 38, 67,240, 30, 82, 10, 24,109, 70,231, 43, 51, 9, 9, 67,138, 11,170, 8,133,118,
-222, 98, 95,187,130,150,128,226,180, 44, 13,133,196, 80,158, 99, 34, 52,188, 36, 13, 83, 11, 5,107, 29,180, 20,200,149,129, 4,
- 73,133,198, 72, 4, 37,224,164,170, 77,172,224,224,140,104,246,148,219,103,178,148,177, 30, 52,155,154,214,219,223,122,197, 13,
-202,196, 94, 11,210, 30, 29,232,144, 57, 54,221,244, 11, 64,120, 4, 71,145,145,228, 30,113, 24,165,189,136, 88, 20, 72,212, 90,
-165,214,162, 93, 61, 63,223, 96, 56,190, 25,133, 24, 47, 56,179, 92,170,208, 74,155,185, 94,229, 43, 6,132,156, 99, 95,215, 25,
-196, 93,233, 81,221,113,161, 21,132, 52, 16,165,135, 16, 6, 66, 88, 8, 17, 42,205, 65, 9, 98,232, 50, 80,217, 94,173, 72,178,
-215,146, 8, 87, 89,176,182,207, 62,118, 45, 40,247, 52, 70,171,166, 73,197,112, 71,190,182,101, 74, 20,199,212,162,184,198, 38,
-250, 99,125,213, 99,123,189,140, 57, 49,192,142, 89,114, 37,120, 22,224,138,226, 76, 33, 99,221,237,112,101,229,142,240,168, 10,
-229, 8, 62, 63, 74,241,121,170, 69,242,174,184, 39,106,171, 81,244,129,185, 62,134,172, 57,181,181,129, 48, 10,237,180,141, 86,
-150, 33, 75, 53,160, 20,138, 36,133, 76, 50,200, 2,180, 62,206, 87,126,117, 44,159, 85,182,236,218, 71,235,199,104,206, 67,173,
-136, 13,199, 61,196, 20, 54, 53,177, 54,117,193, 26,162, 10,206,141,218,221, 86,100, 36,180,187, 85,160,177, 7, 91, 66, 87,177,
- 10,148, 69,197,208,215, 43, 40,143, 4, 16,126,230,204,208,152, 90,121,197,240,118,119,137,201,117, 50,170, 23,162, 12,151,107,
- 6,249,240, 71, 93, 48, 61, 23, 4,227,250,238, 54,140, 12,161,180, 15,202,106,205,135,190, 10,180, 19,172,169, 59, 77,110, 43,
-173,216,239,206,116, 41,250,218, 71,230,123, 57, 30, 28,186,110,211, 54, 87,183,140,238,129, 81,116,185,170,210,234, 52,199, 14,
- 8, 85, 21,176,241, 69, 85,242,222,130, 54,136,137,174, 1, 22,200,125,205, 93,182,214,186,203, 90, 42,239,168,149,176,226, 46,
-139,241, 25, 56,118, 39,146, 7,201,252, 85,214, 82,222,150,161,157, 91,220, 79, 61,161,138,112,121, 70, 18,222,206, 25,236,216,
-185, 11, 90, 40,236, 48, 57,102, 91, 93,120, 27,144, 37, 25,180, 84, 40,202, 18, 74, 10, 24,165,169, 71,188, 81,232, 36, 41, 32,
- 21, 18,165,160,133,132, 54, 25, 20,183,235, 84, 82, 66, 9, 1, 37,104,118, 5, 2,130,144,144, 66, 82, 32, 88,209, 71, 38, 21,
-213, 61,113, 37, 18,109,160,160,224,225,225, 3,208, 73, 18,142, 90,150, 48, 90,192, 10,201, 5,149, 56,215,210,163, 74, 41,112,
-219,164,169,199, 75,186,179,180, 6, 68,194,106,106,229, 66, 19, 85,229, 54,123,238,192,230, 75,146, 34, 11, 46,208, 19,106,218,
-114,172,108, 18,205,202, 81, 50, 44,216,124,220,227,224,150,122, 3,158, 88, 33, 78,170,113, 19,252,122,243,164,147,132,210,196,
-178,156,152,194,176,120, 90,131,227, 4, 0,145,101,220, 62, 90, 67,176, 95, 85, 56, 91, 49,244,216,157, 79,164, 53,225, 53, 0,
-221, 89,218,239,117,179,163, 97, 77,160,224, 28, 94,112, 68,112,198,205,120, 50,110,242, 2, 63,174,169, 71,194, 48,201, 88, 71,
- 57,242, 76, 0,140, 24, 39,226,235,205,241, 23,172, 93,104, 78, 39, 90, 90,170, 58,134,153,132, 52, 66, 99,214, 39,208, 74,234,
- 14, 56, 98,232,145,216,185, 80, 9,197, 1, 68,136,189,172,250, 88, 47,135, 50, 84, 25, 41,129,180, 47,161, 28, 80,120,148, 62,
- 96, 40, 20,118,117, 58, 48, 38, 67,170, 20, 90, 38,197, 84,158,163,147,166, 8,137, 65,217,105, 65,232, 12,162, 95, 64,216, 98,
- 77,134,190,252,220, 56,154,223,192,154,102,204,251,143,217, 32, 82,140, 51,244,122, 15, 4,205,117, 10,192,213, 45, 17,131,204,
-216, 10,182, 81,147,253, 36, 2,107,149,206, 81,161,162,213, 26,242,212, 3,104,215,123, 63,195,245, 63,218,204,152,103,219,244,
-179,149,144, 5, 74, 2,152,206,137,225,181, 51,170,179, 96,120, 78,178,132,198,110, 12, 87,242,228,159, 35, 33,137,173,125, 35,
-225, 71, 80,170, 90, 44,171,235,202,154, 98, 21, 42, 77, 57, 6,247,169,104,134, 55, 20, 29, 31, 99, 89,234,110,169,141,210,203,
-152,177,162,229,120,147, 29,231,120,227,136, 42, 11, 64,129, 4,223, 68,211, 92,248, 90,187,232,224, 73,171,246,178, 42,123,173,
- 88,185, 90,143,160, 29,233,104, 61,214, 34,209,148,217, 98,106, 12, 61,222, 43,128,133,140,168, 20,214,232,248,196,254,218,186,
-138,114,134, 35,220,211,100, 20,233,158,182, 58, 48,208,216,145,183, 96,180, 65, 97, 75,180,116,134,224, 28,188, 22,232,102,173,
- 17,141,128,118, 72,148,129, 84, 10,109, 45,225, 3, 16,156,131, 82, 18,158,219,119, 90, 87, 2, 65,193,123, 7, 3, 1, 45,104,
-113,134,101,129,160, 21,218,105, 11,165,181, 16, 10, 48, 72, 96,157,131,144, 2,218, 75,100,121,130, 65, 97,145,105,137, 12, 9,
-150, 44,160, 82,133,190, 18, 40,130,175,124,232,177, 59, 78,146, 97,212, 33,104,171,177, 21,215,140,103,101,212,207,185,214,153,
-104,136,170,102,122,220, 64,185,226, 40, 83,214,232, 5, 72, 32,136,145,184,138,183,131, 31,208,255, 23,123, 84,219,185, 92,134,
- 56, 88, 84, 4,107,100,126, 95,175,101,193,144, 5, 71, 41, 0, 45,234, 0, 55, 92,220, 82, 38, 29, 0,224,242, 43,113,224,178,
- 93,184,252,130,125,216,189,235, 60,180,119,207, 32, 72,133,188,149, 64, 35, 64,166, 9,140,214,200,164, 68, 57, 28, 98,105, 88,
- 98,105,105,128,165,197, 62, 6, 11,139, 56,245,212, 81, 60,240,212, 19,248,220,157,159, 64,216,181, 27,232, 45, 64,216, 62,241,
-159, 36, 39,193, 53,212,246,126, 12,172, 10,220, 21,170,237,169,174,190,178, 44, 96,113,191, 99, 87,144, 9,114,136,113,211,251,
-114,149,166,226,128, 98,228,123,180,110,248,154, 98, 47,215,217,173,176, 44,128,197, 57,206,135, 15,244, 28,245,106,120,102,162,
-187,217,154,231, 29, 85,101,199, 72, 91, 99, 55, 69,167,153,225,115,241, 29,167, 89, 11, 91,142,209,112,127, 6, 59,113, 62,180,
-133, 40, 10, 20, 58,193, 92,111, 10,121,218, 70, 42, 91, 80, 90, 32,216, 2,153, 84,216, 51,179, 3, 30, 30, 51,137,196,233,222,
- 9,244,237, 28,190,112,231,221, 85, 85,221,138,252,175,188, 79,226,126,134,173, 2,231, 70,194, 11,198, 43,210,141,206, 26, 11,
- 66, 18, 92,223,130,199, 27,175, 56, 4,119,210, 66,173,210,218, 38, 49, 24,208,107, 43,161, 57,234, 92,129,220,163, 57, 19,139,
- 52,229, 88, 16,238,236,167, 64,153, 27,113,189,235,139,223, 54,220,191,128,203,115,219, 90,159,134, 0, 96,177,168,252,196, 75,
-220,192, 37,214,116,176, 19,238, 39,139,170,154,165,176, 53, 13,152,203, 27, 27, 91,149,130, 5,187,196,236, 38,186, 13,234,218,
-222,140, 5, 6, 98,230, 67, 61, 3,162,240, 85, 79,119,205,189,225,203, 33,231,134,199,231, 2,209,199,184,255, 67,109,191,104,
-189, 62, 58, 63,249,118,201, 65,130,182, 22, 16, 43,226,245,121, 31, 42, 93,197, 47,196,150,228, 19,117,254, 5,246,188, 38,108,
-217, 38,105, 27, 74,137,104,117,144,236,154,198,121,217, 52,242, 52,129,145, 6, 10, 64,170, 18,104, 67, 62, 23,173, 12, 82,149,
- 32,225, 46,107,153, 78, 32,133,131,230, 20, 51, 37, 2,172,245,112,142, 76,233,193, 59,104, 0,169,176,112, 90, 99, 56,164, 86,
-161, 54, 0,131,194,162,103, 75,148, 46,192,122,135,158, 29, 2, 66, 34, 56, 7, 27, 44,140, 50, 40, 93,229,119, 28,148, 14,198,
- 8,204,245,151, 0, 33,112,188, 63,128, 91, 90, 36,255,202,176,199, 11, 91, 80, 16, 82,105,207, 77,244,240,134,205,238,168, 76,
- 94,145,144, 10, 49,206,204, 5,170,195,160,147,170,185,142,228,180,189,232,211, 44,107, 41,120,131, 33, 29,190,222, 18,109,210,
-222, 96,107,159,123,106,150, 2,127, 98,106,202,137,211,192,112,105,211,130, 78, 93, 43, 75, 95,242, 34,124,215, 43, 95,138, 11,
- 47,223,143,217,217, 22, 10, 33, 96, 2,176, 35, 85, 88,130,132, 81, 18,137, 54,232, 21, 5, 10,206,156, 8,182, 24,149,128,245,
-222, 67,115, 52,110,139, 9,252,176,180,176, 46,224,171, 71, 79,227,200,103, 63,143, 15,220,125, 31,240,224, 17, 4,149, 2, 51,
- 93,210, 34,132,172,122, 31,107,110,180, 48, 55, 79,135,222,121, 46, 11, 59,172, 24,133,224, 88,138,158,173,180,121,189, 12, 17,
-168, 87,223, 27, 99,228, 24, 47, 81,186,158,152,132, 52, 33, 45, 75,103,212,238,181,158,166,153,178, 86, 6, 80,179,160,114,157,
-185,180,117,157,192,212, 5,142,132,153, 89,204, 26,224, 50,205, 97,125,109, 47, 71,110, 86,173, 33,166,119, 66,236,189, 4,151,
-159,191, 11, 59,179,105, 76,183, 58,164, 40, 74,141,139,206,111, 99,207,238, 41, 76, 79,105,124,245,196, 0, 15,125,233,126,124,
-242,225, 47,224,201,143,127,102,148, 6, 29,106, 63,235,175,149,152, 61,213,176,151, 85,190,117, 61, 7, 28, 53, 38,175,184, 7,
- 69,212,146,108,237,106,209,116, 26,153, 82,120, 6,196,140,212,215, 77, 74,218, 11,221,140, 54, 81, 82,211,176,235, 13,144, 44,
-184,194,153,156, 8,131,208,112,174,168,180,200,250,216, 35, 45,113,142, 44, 66,139,220,205,173,223, 39,173, 93,150,228, 51, 15,
-195, 51, 53,218,122,249,211,186,144, 6,216,113, 0, 0, 32, 0, 73, 68, 65, 84, 0,139,122,202,161,223, 56, 61,142,252, 41,182,
-151, 45, 49, 94, 43, 32, 90, 59, 39, 91,228,198,204,160,224,171,226,105,158,153,172,225,235,153, 90,163,169,222,160,170,123,176,
-217,120, 21,147,212,138, 75,213, 27,217,248,106,190, 99,138,118, 61,245,170, 54, 39, 91,163,169, 43,174,180,165,217,236, 62,213,
-193,108,154,195,104,133, 76,167, 72, 36, 7,171,169, 28,131,178,143,110,214,130,132, 68,146, 72,164, 58, 65,154, 26, 40, 37,224,
-172, 68,150,164, 8,193, 98, 88, 90,104, 37,161,133, 7,134, 67, 8, 37,144, 7, 18,137,212,192,162, 3,137, 69, 0, 93, 91,194,
-106,129,167,132,128,242, 1, 46,145, 8, 33, 33,215,152, 4,132, 80, 8,214, 66,139,170,213,170,225, 26,197,211,121, 27,189,178,
-143,118,106,176,132, 14,156, 92, 36,237,209,198,116, 38,253,204, 99,232,192,120,125,240, 51, 76,117,156, 6, 82,128, 2,170,130,
- 39, 45, 44,101,223,160,228,239,229, 92, 72,162, 12,120,213, 85,251,241,137, 47, 28,225,198, 98,138, 3, 64, 98, 57,221, 45,126,
-238,193, 2,153, 53, 91, 41, 9, 16, 97,194,247, 23, 53,198,104,238, 28, 88,172, 84,200, 58, 18,255, 55,127,207, 91,240,194, 87,
- 30,192,174,221, 51,152,205,115,216,178, 68,175, 40,209, 27, 20, 16, 74,194, 14, 45, 78, 23, 20,229,154, 40, 9,167, 4,148, 20,
- 80, 16,112, 69, 9, 64,160, 95, 18, 3, 30,246, 11,244, 11,139,233,233, 22, 90,173, 4, 45,157,160,173, 37, 94,122,197, 62,188,
-241,234,139,240,198,111,250, 58, 60,122,114, 30,159,250,135,187,240, 63, 62,254,105, 98,226,129,245, 62,205, 53,178,157, 3,220,
-176, 98,110,145, 81,106, 77, 81,240,182,172, 74,108,214, 25,250,100, 46,171,101,237,177,206,192, 39,127,174, 23,121, 14,236,217,
- 81, 77,220,241, 99,213,189,157, 7,230,251,216, 80,173,241,210,210,158, 26,249,194,107,227, 81, 53, 33, 81,216,241,158, 15, 27,
-221, 47, 39,158, 2,116, 23,253,221,187,176,100, 75,100,101,129, 52,105, 99,255,197,187,113,209,222, 54, 46,185,160,131, 68, 43,
- 92,176,219,162,149,103, 80, 42,197,135, 30, 89, 4, 30,125,112,164,173,111,168,228,187,171, 89, 20,198,122, 88,212,153, 68, 70,
-204, 78,233,138,254, 97,192,140, 92,144,245, 73,213,253,109,207, 0, 26, 18, 45, 65, 74, 19,173,158,153,162,137,153,206,128,190,
-165,244, 94, 33, 33,181,132,105, 27, 4,142,179,233,232, 4, 82, 8,248, 16,144, 43,141,190,243,112,240, 48, 34, 67,233, 61, 20,
-103, 32,149,214,193,194,195,141, 10, 45,113, 0,167,209,196,236, 68, 78,130,228,128, 11, 58, 45,183, 31,202,149,172, 26,158,232,
-217,102,173,156,245,126,230,163, 66, 87,204, 20, 85,189,236,237,132,155, 52, 90, 51, 29,187, 75, 29,215,189,119,224,186, 32, 53,
-225, 79,112,151, 72, 55,209, 52,108,163,207, 27,226,254,139, 41,214,190,178, 8, 25, 0, 46, 33,255,254,232,128,177,130, 80,163,
- 29,103,239, 83,215, 20,184,130,118, 14,180, 53, 48,179, 3,157, 60, 71, 91,165,232, 36, 25,100, 80, 80, 2, 48, 58,133,115, 67,
-180,211, 28, 74, 8, 36, 70, 33, 75, 82,164,121,134,196,208,198,161,121,160, 96, 8, 45, 61,130, 43,161,157,131, 48, 2, 29, 87,
- 32,241, 14,137,247,112,174, 4, 66,137,204,121, 4,239,224,189, 69, 22,128,129,176, 84,117, 19, 64,225, 73, 62, 79,117, 2,129,
- 0, 47,128, 84, 25,248, 16,160, 37,157, 56,163, 12,156, 35,159, 94,128, 64, 33, 20,249, 57,202,146,203,126,114,202,194,114,209,
-174,107, 5,157,108,119,240,215,168,186, 19,251,123, 37,119, 64, 26, 6,242,201,104, 54, 3, 26,174,170,231, 56, 31, 52,213, 64,
-170, 32,131,128,145, 26, 78, 6, 60,122,124, 14,111,126,245,245, 40,243, 33,230, 78,204,211, 70,178,150, 11, 88,184,179,219, 27,
-245, 84,160, 24,171, 80, 14,168,226, 90,191, 87, 5,224, 69,134,222,158,166, 42,131,105,139, 59,151,197,210,147, 45,110,208, 67,
- 27, 55,189,250,133,248,190,239,126, 11,190,235,166,239,193,203, 15,188, 16,211,221, 54,180, 36,166,122,186, 95, 96,169,176,208,
-165,133,245, 30,169,243,120,252,196, 60,156, 23, 80, 70, 33, 88,135, 76, 27, 88,239, 49,149, 24,204,245, 10,164, 30, 72,148, 68,
-123,166, 3, 47, 4,164, 13,200,179, 4,157,118,142, 32, 4, 84, 16,176,165,133,128, 64,146, 37,184,238,192, 53,248,186,175, 63,
-128,125,187,166,241,240,201,163,232,159,236,209, 33, 95,232,147,191, 90,114, 81,141,216,235, 32,176,169,172,223,227, 52, 42, 81,
- 69,219,151, 92, 3,115,185,148,190,216,183,187, 78,104,162, 86,161, 57,144,103, 61,105,151,173, 14,249, 77,181, 4,230, 22,104,
-222,181, 28, 55, 53,111,116,191,198,212,200, 24,244, 23,235, 90,199,234,106, 58, 84, 65,180,214,158, 89, 78,120, 13,235,203, 40,
-232,109,233, 36, 22,145,163, 61,211, 69, 75,165,216,217,157,193,215, 92,216,198,229, 23,239,128,145, 10,157, 86,138, 78,150, 64,
- 36, 6,189,178,131,153,233, 93,120,176, 95, 34, 56,143,160, 13,194,249,251, 16, 46,216, 3,236,217, 75,193,144,171, 5,167,174,
-227,249,144,232, 42, 0,176,157, 98,223, 11, 46,193,252,177, 57, 14,174,170, 9, 92,214, 82, 96,152,125, 6, 48,244,200,116,102,
-218,180, 15, 90, 9, 55,200, 18, 72,186,109,164,105,130, 60, 33, 5,108,214,100,152, 54, 57,118,230,109, 36, 74, 97, 58,237,160,
-107,114,104, 41, 49,155,117,208,209, 25,218,105,134, 92, 25, 76,165, 45,180,141,198,180, 54, 72,181, 70, 43, 77, 97,125, 64, 80,
- 26,193,212, 44, 77,136,133, 99,120, 47,216,114,237,249, 95,238,181,153,177,123,112, 69,182,216,203,157,179,125,130,175,250, 40,
-148,190, 58, 15,178, 86, 35, 34, 6, 28, 39,186,242,181,143,130,251,184, 10,166,224,130, 80, 37,151,181, 45,106, 41,103, 27, 85,
- 10, 71,221,218, 98,156, 65,140, 97,137,149, 20, 45,231,252,151,213, 9, 9, 28,203,178,101,209,239,138,125,233, 83, 25, 96,218,
- 72,167,167,176, 35,201,161,133,129, 81, 64,110, 50,164, 73,138,224, 45,140, 78,144,232, 12, 64,137, 86,218, 66,154,103,208, 34,
- 64,170, 0, 33, 2,197,107,129, 34,181, 69, 8, 16, 92, 79,184, 35, 45,108, 0,210,224, 96,157, 67, 34, 5,242,210,162,112, 5,
-116,172,168, 6,139,196,121,244, 80, 98, 80, 82, 62,163,210, 9,156, 45, 96,116,194, 38,252, 0,165, 53,164, 15, 48, 74,161,240,
- 1, 90, 8, 24, 24, 20,176, 16, 82,160, 28,198, 98, 25,174,146,186,214, 27,120,162,107,121,140,114,139,234,153, 27,206,247, 84,
- 19, 68, 55, 54,100,168,219,159,173,162, 96,148,152,199,108,248, 25,114, 14, 12,145, 18, 48, 10,137,210, 20,179, 0, 64, 10,129,
- 32,129, 47,127,245, 97,204,205, 47, 49,243,103,109,127,104, 89, 82, 93,157,177,167, 47,191, 22,238,212,169,202,124, 86,214, 44,
- 9,245,249,136,105, 67,101, 57,158,138, 17,209,153,229,142,125,117, 19,148,164, 74,132,211, 93, 96,122, 10, 47,122,249, 53,184,
-241,187,223,138,239,249,174,215,227, 37, 87,237,199,190,110, 27,139, 46,160, 37, 4,130, 15, 24,148, 22, 67,235, 96,135, 22,139,
- 3,139, 97,127,136,194, 5,180, 90, 57,102,167, 91,112,150, 52, 14, 93,150, 72, 76, 2, 39,128,254,176,128,148, 10,221,196, 64,
- 6,129,118,158,227,210, 29,211,104, 75,133, 2, 2, 83,153, 65, 30, 4,230,188,195,233,162,192,210, 82, 15, 39, 7,125,188,237,
-199,126, 9,223,247,147,223,139, 87, 92,123, 13,186,193,227,254,207,124,153, 36,250,165,211,212,108,168, 44,137,121, 42, 93, 69,
-175, 71,255,123, 76,157, 26,153,233, 86,107,111, 43,170, 6, 27, 35,135,112, 45, 53, 80,202,181,247,154,229,146,154,243, 92,118,
-213,139,101, 58,140,201,241,168,218,205,150, 51,117,174,202, 33,118, 27, 79, 59, 58,131,169,107, 13, 49,127, 12,243, 34, 71,123,
-170,133,169, 36,199,243,206,159,198, 84, 59,193,244, 84,134, 32, 20,180, 81,200,140,134,208, 10, 58,107, 97,110,161,192,241,249,
- 5,132, 52,197,215, 29,184, 12,215,126,205,126, 92,188,179, 11,209,206,112,226,244,252,217,165,243, 1, 68, 88,133, 64,114,241,
- 5,216, 59, 53,139,227,115,115, 19,174, 42,206,189,198, 51,160,167,129,226,134, 89,221,156,220, 44,237,156,203,118, 27,164,105,
-138,221, 89, 11,185,210,152, 77,186,152,201, 58,104, 39, 45,236,200,167, 97,164, 70, 55,233, 80, 77, 16,165,145, 40,131, 84, 39,
- 80, 82, 32,145, 18, 25,167,121,182, 76,130, 34, 0,185, 73,209, 50, 25,114, 45,209, 54, 26, 66,105, 40,163, 81,218,192,101,132,
-201, 50, 72, 76,239, 28,149,132,150, 53,215,137, 8,128,206, 41,138,222, 58, 78, 19,100, 41, 57,186,205,192,129,169,165,173,206,
-156,228,134, 74,138,207, 17,184, 76,119, 44, 30, 21,107,119,184,130, 92, 25,145, 17, 59,191,241, 51, 20,121,200,168,153, 78,160,
-116, 63, 97,185,200, 21,107,241,177, 65, 89, 96,103,126, 8, 20, 0,232,237, 89, 50,117,173, 73, 59,108,229,164, 89, 77,181, 49,
-157,102,152, 78,219,208, 74, 66, 10, 32, 81, 26,214, 89,116,210, 46,188,119, 80, 10,152,106, 77, 35, 73, 21, 50, 99, 32,132,135,
- 18, 20,196, 21, 64,233,109, 74, 10, 88, 91, 82,219,116, 9,104,231,144,115,161,142,196,123, 40,231, 49, 12,142,252,159,222, 66,
-120, 65,193,119,222,195,133,152,173, 16,224,189, 67, 16, 26,130,163,180,165, 16, 80, 66, 64, 10, 9, 15,138, 34,148, 66,192, 33,
-160,165, 19,244,157, 69, 16, 18, 46,148, 44, 40,176,100, 22, 56,204,119,173,195, 89,247, 7,249, 45,170,103,222,105, 19, 83, 83,
-226,204,136,252,232, 48,140,154,156,229,102, 8, 14, 85,148,116, 44,138,144,155,209, 6,117, 66,192, 40,201, 21, 60, 5, 66, 16,
- 72,210,148, 2,128, 53, 71,238,198, 90,195, 67,187, 70, 81, 24, 13,119,234, 4, 17, 57,203,117,246,235, 13, 71,226, 28,198,130,
- 51, 43,205, 73, 43, 35,109, 60, 75, 43, 38,100,200, 84,184,235,162, 61,232, 25,131,239,127,195,155,241,154,131, 47,199,133, 23,
-238,134,181, 1,137, 45,113,186, 95,224,177, 19,115,120,234,212, 34, 78,205,247,113,106,110, 17,110, 88,114,141,131,128,211,167,
-230, 81, 14, 75,244, 22,250, 88, 90,234,195, 46,245,176, 48,116, 40, 29, 96, 18,131,197,133, 1,188,243,112, 11, 75,152, 31, 20,
-152, 31, 20, 40,157, 69,191, 44,112,122, 48,196,209,165, 30, 22, 6, 67, 28,239,245,240,212,194, 18, 22,251, 67, 12, 6, 5,190,
-242,200, 28,238,253,220,231,240,215, 31,254, 27,124,195, 55,126, 3, 46,191,106, 63, 46,127,254, 37,184,255,232, 49, 12,231,230,
-184,108, 40,103, 33, 36,154,155,190,248, 42,168,170,180,220,184, 98, 29,146,252,168, 28,233, 4, 99,175,207,243, 90, 81,235,158,
-250, 3,252,255,212,189, 89,175,165,217,121,223,247, 91,227, 59,236,225, 76, 85,213, 85,213, 35,217, 77,138,162, 72,145, 14,101,
-201, 84, 36, 69, 52, 36, 68,146, 45, 89,138,146, 72,182,128, 36,178,157,139, 36,128,131, 0,185,200,167,200,125,130, 92,229, 19,
-228,194,128, 1, 33,130,156,196,144, 5, 77, 16, 35,155,180, 40,138, 17,201,158,187,171,206,176,167,247, 93, 99, 46,214,122,207,
-222, 85,221, 93,221, 93, 85,164,232, 13,116,215,116,234,212, 57,239, 94,107, 61,235,249, 63,255, 97,202,105,190,134,237, 30, 30,
-163, 77,159, 79, 30, 48,238, 31,231,245,216,133, 76, 35,234, 41,120, 93,212,165, 44, 63,250, 53,231, 88,142,231, 75, 12, 45, 55,
- 78, 58,132, 80,244,157,198, 85, 2,251,224, 64, 41,193,229,229,142,111, 94, 93,112,231,153, 57, 47,156,158,210,216,150, 59,207,
-220,226,246,233, 13,210, 92,241,214, 59,231,143, 95,216,175,187,198, 76,124,231,138,243,222,146,191,243,106,189,252, 79,142,122,
- 85,159, 45,197,223, 92,166,129,166, 16,126, 59, 3,167,179,170, 78,106,192, 42,230,139, 25,115,221,114,214,244,180,182,101,217,
- 46,232,181,165, 55, 29,125,211,131,144,244,166,197, 40, 77,202,137,222,116, 52,198, 98,148, 70, 73,137, 20, 26, 37, 21,173,105,
- 32,103,150,237,156, 86, 53, 12,209,177,108, 58,230,182,165,211, 22,131,132, 70, 50,230,234,217, 64,220,135,191,124,175, 47, 59,
- 83,164, 43,236,173,158,135,109,229, 17,168,253, 62, 74,113, 79,130, 27,199,242,224,114,133,197,242, 52, 94, 43, 99,224,194, 59,
- 16,123,153,166,115,251, 44,121,204, 1,115,126,178, 26,142, 31,127,109, 73,117,144,199, 46, 15,172,113, 15,228,149, 19, 74, 48,
-133,233,152,138,134,196,248,132, 69, 93, 85,194, 69,223,194,124,129,109,123, 90, 85,230,227,173,214,244,182,131,148,232,154,150,
-144, 35,139,182, 69, 43,141,181,170,214,161, 88,116,227,120,148,200, 8,161, 16, 49, 66,244, 88,107,209, 49, 96,115, 68, 74,133,
- 26, 29, 34,102, 68, 76,200,148,138, 65, 13, 18,153, 33, 9, 65,139,192,147,174, 27,152, 84,187, 25,173, 12,141,212, 8, 33,105,
-149,193, 87,196, 64, 0, 62, 39,172, 50,196, 28,112, 62,178,176, 13,187,232,113, 76, 27,113,178, 58,172,249,213, 31,118,187, 20,
- 7,214,167, 79, 75, 22,215,117, 5, 9,201,234,189, 5,118,234,226,174,173, 42,171, 87,253,181,100,164,218, 51,118, 53, 4, 64,
-234,122,115, 21,104,163,138, 60, 29, 48, 82,161,181,194,133, 88,173, 79,171, 6, 52,139,162, 25,125,212,248, 65,203, 34,245,154,
- 24,165, 74,236, 3, 47, 14,195, 31,166,185,147,200,239,223, 85,154,106,188, 32, 4, 88,203,231,191,240, 89,126,250, 71, 94,230,
-159,252,151,191,202,223,255,202,151,249,212, 39, 95,225,159,255,235,127,201, 43,207,127,146,182, 51, 92,109,183,188,123,185,229,
-237,203, 45,126,181,101,179, 25,136, 49,193,206,115,113,239,138,203,149,195,111, 3,195,106,195,226,248, 6,166,233, 89,159,175,
- 24, 99, 34,141, 25,219,247, 40,165,121,245,219,111,240,206, 91,247,216, 93, 94,241,238,189,251,140,227,136,219, 6,222,124,231,
-156, 55,222,190,199,110, 53,178,189, 88,115,117,181,101,187,218,178,186, 92,225,199,196,255,246,191,252,239,165,198,238, 60,159,
-249,194,223,162,233, 37,203,227, 57,127,235,179,159,194, 37,207,107, 95,251,102,121,175,142, 22,181,216,214,131, 76, 30,132,140,
-184,240,160,245,228,135, 65,114,248,114, 72,136, 3,228,227,129,121,220,199, 41,166, 15,217,182, 10,234,184,169, 22,243, 28, 15,
- 72,122,223,207, 78, 51, 61,216,169,107,189,151,169,165,136,216, 57,118, 77,203,172, 49,164,220,112,181,139, 88, 45, 81, 82,113,
-111,200, 24, 37,240, 62,112,185, 9,124,245,219,175,242,236,145,226,206,242,152,110,185,224,232,120, 65,211, 24,206,102,115,222,
- 22, 35, 87,111,220,127,252,142,113,114, 81,243,142,124,255, 98,127, 89, 74, 21,165,176, 7,177,185,153,167,255, 12,167,209,150,
-209,251, 16,151,201, 3,220,244,245,223,111, 11,121,121, 94,213, 26,139, 14,180,164,209, 45,167, 77,203, 51,253, 49,203,238,136,
-153,233, 56,153, 29, 99,164,162,181, 51,148,208,244,186, 69,203, 50, 91,159, 53,165,179, 23, 73,160,148, 70,203, 98, 0,102,165,
-162,211, 13, 90,107,122,221,163,180,230,180, 61, 42,205,147,212, 8, 4,189,177,232, 36, 9, 42, 49,162,246, 55,181,244,125, 40,
-236,147, 99,160, 81, 7, 17,174,213, 95, 34,196,125, 76,174, 86,133,247, 33,216,123,209, 91,189,151,185,169,170,163,215,106,159,
-214,168,170, 35,169,169, 35,176, 92, 27, 41, 23,246,223,223,227,162,181, 82, 84,137,117,172, 30, 36,213,128,102,242,190,135,194,
- 79, 48,146,235, 67,252, 0,245,123,178,162,110,171, 15,173,109, 97,121, 68, 99, 13,167, 93,135, 17, 10, 37, 37, 70,106,180,210,
-228,156,105,180,194, 84,200,202, 72,137,212, 10, 69,164,209, 18, 5,152, 4, 70, 73,148,200,104, 4, 50, 70, 98,206, 68, 63, 34,
- 83,198,198, 84,237, 33, 51, 58, 37,154, 92,228,175, 1,129, 65,224, 99, 64, 11,137, 65,178,145, 2, 41, 37, 93, 83, 24,170,141,
-178, 52, 90, 97,109, 71,171, 45, 41, 7,180, 54, 24, 33,217, 69, 95,141,110,202,215,185, 9,158, 44, 4, 49, 30, 6,166, 76, 15,
-244, 67,130, 90,230, 51,232,151, 37,172,198,213,226,250,164, 16,188,172,139, 39,248,247,122,124, 79, 93,220,212,145, 95,187, 98,
- 29, 26, 22,136,122,131, 84,133, 1,111, 5,141,181,132,152, 17, 72, 4, 2, 41, 96, 8,161,106,217,107, 23, 57, 49,180,169,112,
-241, 7,117,235,114,210, 63,203,125,242, 82, 22,251, 27,249,225,247, 33, 14,139,124,124, 47, 73, 70, 73,154, 79, 62,207,111,253,
-252,127,200,207,124,229, 75,124,246, 71, 63, 69, 99, 53, 43, 23,136,110,228, 19,207,188,192,239,255,225,159,240,226,179,183,217,
-109, 3,235,171, 45,171,171, 43,214, 23, 87,172,214,107,194,198,147,145,108, 86,107,118,155, 45, 18,133,146, 13,198,118, 28,205,
- 23, 72,105,202,179, 8, 96,173, 37, 68,137,214, 13, 82, 25, 98, 16,196, 24,105,250, 5,218,182,220,127,251,109,182,155, 53,227,
-118,195,119,222,120,157,113,179, 97,187, 90,115,113,255, 62,227,176,227,107, 95,255, 43,126,245, 63,249, 13,254,221, 87,255,140,
- 63,254,163, 63,226, 19, 47, 61,207,118,181,197,246, 45,159,249,236,167,232,143,150,124,243,254, 5,108, 15, 66, 39,166, 27,248,
- 4,249,153,154, 57, 16,252, 71, 43, 34,135,249, 2,211,129,117, 72,240,122, 28, 75,227, 67,251,217, 9, 98,156,230,144, 31,228,
- 61,240,180,114, 11, 30, 9,191,107,132,150, 15,232,206,203,254,119,184, 97, 71,238,103, 56, 23,185, 90,101,118, 14,130, 20,215,
-145, 5,231, 91,207,235,175, 95,112,255,254, 59, 12,126,199,243,103,183,184,243,236, 45, 82, 74,184,224,112,110, 96,166, 52,127,
-121,255, 10,174, 86, 79,167,120, 60,188, 39,174,121, 20, 60,221,226,213,183,229,243, 47,142,203,251,117,116, 90,201,111, 51,184,
-253, 12,156,157, 21,147,161,163,101, 41,226,203,234, 7,223, 22, 34,220,141,217,130, 59,139, 37,203,118,201,162, 91,208,105,203,
-178, 93,160,132,196, 40, 67,111,122,180,212,100, 18, 74,234, 18,164,149, 5, 70,153,122,102, 75,140,178, 40,161, 48,186,197,167,
-192,162,153,209,180, 29,173,105,139, 97,101,202,104,109,104,109, 91, 1, 37, 65,175, 44, 86,103,182, 89,145,235, 94,191, 30,195,
-125,175, 94,125, 91, 57, 59, 21, 29,155, 28, 3, 83, 44,197,219,202,189,183,194,228, 27, 34,168,126, 3,149,221,174,204, 62,114,
- 54, 23,120, 27, 87, 25,253,147, 68, 47,198,125,231, 31,211, 62,145,116,202,139,143,177,134,155,241,209,160,248, 73, 34, 60,241,
- 54, 68,174,193,104,114,111, 46,150,170,181,177, 60,216, 32, 79, 60, 83, 55,186, 22,137,182, 46, 26,203,173,126,137,200, 18,173,
- 21, 51,211,225, 98,196,106,141, 68,162,133, 64,107,115,173,249, 47,158, 5,138,150,128, 17, 5,114,215,201,163,132, 66, 40,208,
-209, 49,134, 84,102,241,131, 67,121, 7,174, 16,154, 92,240,216, 84, 66, 28, 76, 40,100,185,136, 64, 86,110, 88, 6,180,182, 72,
-173, 17, 82,163,165,164,237,218,194,184,111, 13, 50,107, 20, 2, 33, 50, 90,154,242,177, 64,204,137,153,177, 92,142, 59, 98,168,
-115,151, 88,175,112,206,191,127,192,253,225,107,113, 82, 28,151, 76,117, 45, 10,225,201,225, 55, 31,202,194,252, 32,147,150,247,
- 36, 70,213, 27,176,152,136, 41,213, 53,174, 47, 68, 51, 89, 9, 98, 5,177, 17,244,214,178,157,146,127, 66,222, 91,155, 78, 69,
- 60,171,154,158,244,136,220, 98, 43, 15,228, 75,105, 47,231, 57, 36,119, 29, 90,133,190,207, 33,247,236, 79,253, 56,191,244,243,
- 63,205,127,252,149, 47,115,124,251, 20,173, 52, 62, 70,222,190,191,226,106,189, 67,187,192,110, 28,121,241,238, 29, 82,148,228,
- 0, 42,105,136, 18,163,151, 24,213,113,122,251, 46,253,108,142, 53, 11,158,123,225, 37,186,249, 17, 93,219,161,181,197,197,145,
-101,219,210,216,150,147, 27,199,220,185,121,140,182,134,229,124,206,217,141, 19, 78,206, 78,232,102, 75,186,121,203, 75, 47,220,
- 70, 53,115,220,214,177,217,238,208,210,178,243, 37, 14,116,189,219, 17,131,231,199,190,248, 89,180,142, 60,255,169, 23,249,194,
- 23, 62, 13, 73,112,121,113,206,230, 98,133,178, 45,207,125,242, 5,238,206,123,254,237,159,254,121,217, 39, 20,130, 98,185, 81,
- 15,229,178, 55, 62,225,108, 49, 31,204,203,159,212,189, 76, 86,167,143,107,187, 3,177,119,236,154,210, 22,167,206, 48,231,239,
- 77, 7, 95,187, 79, 33,229,251,178,251,133,146,101, 31,134,145,171,203,115, 94,195, 51,134,129,232, 10,169,209,197,200,232, 18,
-175,189,181, 98,189, 26, 73,110,197,189,237, 37,103,179, 25, 70, 25,150,199, 51, 46,206, 47,217, 12,107, 98, 12,252,197, 95,124,
-183, 72, 55,159, 58,216,144, 14,230,156,226,201,231,247,211,179, 49, 61, 44, 79,232,111,158,225,219, 22,110, 28,151, 98,189,152,
-195,141, 83, 88, 44,225,228,102, 65,247, 78, 78,145,203, 37,207,158,157,241,204, 98, 65,167, 37, 55,250, 57, 71,109, 79,163, 44,
- 55,103,199, 72, 4,139,110, 9, 66, 32,208,116, 77, 15, 57,163,181, 68, 25,131,210, 10,211, 40, 76,211,144, 66, 68,106, 73,219,
- 53, 4, 31,177, 74,145, 50,116,218,148,130,222,119, 36, 95, 81, 10,153, 17, 41,227,130, 43, 57, 30,169,228,114, 52,186,101, 23,
- 29,163,172,233,144,168,247,111, 84,158, 22,244, 62, 21,236,107,219, 87, 81,214,181,119,101,198,191, 29,202,243,155,144,179,209,
-149, 34, 46, 83, 57,191, 91,187,175,194,177,186,225,217,202, 25, 50,125, 81,127,184, 80,205,129,194,254, 74, 58, 65,226, 19,146,
- 38, 68,205,136,248, 24,151,225,233, 60, 23, 7, 17,183, 83,108,173, 47, 40,247, 3, 72,221,193, 26,123,252,162,174,116,121, 48,
- 71, 61,204,143, 88,206,103,197,214, 85, 40,230,141, 37,198, 72,111,139, 65,135, 86, 10, 37, 4, 90,107,140, 84, 24, 35,145, 57,
-210,202,132,170, 51,111, 43, 51, 17,129, 16, 9,225, 67,209,219,239,182,164,209, 49,250, 1,181,115,164, 24, 81, 62,176,168,218,
- 69, 19, 83, 33,211,145,145, 66,225,144, 8, 20,201, 88,178,148,196,156, 48,141, 69,169,210,169,182,125,139,214, 10, 35, 13, 34,
-231, 50, 75,182,150,144,139,148, 66,107,195, 24, 28, 33, 69,118,185,186,126,185,106,197, 41,100,121,152,143,154, 47,247,243,125,
-134,245,118, 91,160, 82, 45,159,112,198,200, 71, 95, 4,147, 79,242,244,163,168,173,243,236,164,228, 33,207,123,178,216,123,180,
-199,148, 24,199,128,146,150, 60,214, 46,111,234,214,199,218, 13, 90, 9, 27, 87, 36, 28,143, 42, 46, 42,215,220,100, 81, 46, 1,
-211,191,115,109,111,124, 16,105,121,120,200,125,238, 11,252, 23,191,241,203,252,204, 87,126,130,126,185,192,121,143,243, 17,231,
- 60, 23,247,175,184,186,119,137,219, 5,118,187,128,209,134, 97,231,217, 92,174,105,237, 12,107, 91, 78,206, 78,185,253,204, 41,
-207, 62,123,131,227,101, 79,223,181,156,157, 30,209,180,150, 89,215,114,227,198, 49,243,229, 12,221, 54, 44,143, 22,204,250,150,
-166, 85,244,125,195,115,103,115, 60, 18,163, 52,125,219,112,251,198,146,101, 59,195,199,204,243,183,142,121,225,133,187,220,123,
-103, 68, 36,193,201,226,148,179, 27,119,184,188,186,207, 59,235, 13,110,116, 44,151, 75, 86,171, 11,134,209, 49,155,205, 32, 11,
- 86,235, 13,113, 28,145, 82,241,210,167, 63, 65,219, 89,190,249,245,111,212,141,239,247, 35,147,137, 72,248, 36,235,226,208,223,
-253, 73,215,215,100,243, 58,133,154,240,144,111,252,196,149,184,134, 36,229,211, 33,130,190, 31,234,244,126,100,185,131,143, 17,
- 57, 67,242,228,119,207,185, 60,191,226,117, 55,242,206,249, 37,140,150,139, 11,199,229,249, 21,227,120,133, 22,153,222, 24,214,
-195,192,189,203,203, 18,111,224, 71, 82, 30,249, 63,254,252,235,228, 55,239,125,112,172,242, 19, 23,246, 10,197, 63,141, 78,180,
-111,203,136,235,229,231, 65,105,210,201, 49,185, 81,208,245,229,178, 62,155, 21,255, 7, 91, 83, 49,151,199, 60,183, 56,225,133,
-197, 49,187, 80, 72,201,119,251, 37,119, 23,167,144, 21, 39,179, 19, 0,206,102,167,136, 44,233,219, 25,182,111,216, 14, 27, 22,
-199, 75, 80, 10,171, 45,109,107,201, 66, 33, 99,198,244,197,111, 68, 8,129,170,190, 33,182,209,116,179, 57, 57,229,154,178, 43,
- 73, 41,149,166, 33, 69,180,212, 4, 18, 70, 27, 98,136,236,188,167,215,150, 44, 5,187, 84, 27,166, 41,161,240,105,159,143,241,
-161,162,151, 38, 43,237, 84, 10,121,172,161, 77,219, 97, 79, 94,157,230,229,136,253,185, 29, 15, 18, 42,167,188,120, 33,246,190,
- 12,178,169,112,125, 85, 24,201,131, 70, 38,214, 17,166,146,123,247,184,143,179,183,205,228,172, 55,133,143,229, 3,203,101,181,
- 15,221,114, 15, 34,116,143, 87,212,117, 77,151,233, 42,137,171, 43,190,215,183,154, 25,141, 86,164, 84, 34, 79,203,108, 69, 34,
-165,196, 42,131, 18,178,160,186,201, 51, 83, 2,171, 36, 86, 22, 35,215, 32, 5, 45, 16, 93, 33, 42,177, 25,112,110,100,187,219,
- 18, 71,143,242,129,185,139,100, 33, 8, 46,211,139,253,244, 77, 10, 67, 20, 18, 33, 53,209, 90,132,182, 72,221,208,216,134, 36,
- 20,166,181, 24, 85, 50,150,149,210, 8, 5, 50,171,218, 13, 58,164,208,248, 88,194, 32,124, 12,228, 12, 67,240,196,213,102, 47,
- 33, 10, 97,127,107,123,212,124, 57,228,210, 89,239, 66,145,244, 76, 11, 74,126,143, 10,251, 52, 91, 59,156,189, 78,133, 61,213,
-188,120, 97, 75,172,226,102, 87, 96,248, 41, 87,184, 46,178,236,253,126, 33, 6, 95, 55, 89,173,214, 62, 21,199,183, 71, 29,224,
-211,124, 49,186,210,221, 77,112,243, 52,251, 61,244,255,158, 66, 24, 62,245, 57,126,253, 87,190,194, 47,255,226,207,240,220, 43,
-119, 73, 33, 97, 26, 69, 74, 2,183, 26,217, 94,109,217, 94,108, 8, 33,145,178, 68,209,208,181,115,102,253,146,103,158,185, 69,
-107, 27,148, 52,244,139,142, 69,219,209,181,134, 70, 25,206,142,103,220, 60,233,121,241,108,198,173,147,158,190, 85,204, 91,201,
-173,163,150,121,219, 48,159,181,196, 44,232,117, 25, 17,205,172, 34,132,132, 16, 18,171, 20,243, 89, 67,107, 13,202,104,110, 46,
- 58, 62,249,210, 29,206,135, 68, 51, 91,240, 35, 63,244, 50,219,171,128, 74,158,191,190,119,159,133, 49,204,218,142,221,176, 67,
- 37,201,108, 62, 71,105, 93,247, 90, 66, 54,150, 23, 63,245, 18, 9,193,119,190,241, 87,213, 86, 50, 87,253,122, 53, 56,250, 65,
-121, 29,242, 51,200,251, 98,212,204, 75, 39,104,186,253, 40, 74, 60, 20, 68,241, 52,214,245, 67,190, 11, 31,106,245, 58,113, 52,
-142,230,132,113,203, 16, 70, 98, 26, 9,126,133,206,146,171,225, 62, 34,134, 2,185,103,135, 79, 9,231, 6,190,254,250,119,249,
- 55,111,191,201,230, 91,247,224,242,252,233,146,210,228, 83, 30, 75, 52,182,140,182,142,142,225,249,103,160,237,120,246,238, 93,
-152,117, 4,221, 34,102, 11,178, 52,165,144, 43, 1,205, 81, 57, 15,155, 5,167,182, 65,234,150,147,217, 17,183,250, 30,135,161,
- 21,154,174,105,176,202, 50,107, 58,180,212,232,166, 67, 55, 10, 25, 5,203,147, 35,226,224,104,154,166, 20,110, 18, 70, 20, 8,
- 62, 19, 80, 20,254,147,212,178, 4,107, 41, 10,177,217,104, 16,145,228, 35,155,113, 75, 14,129, 32, 18, 42, 75, 92,116,197,206,
- 59,102,124,114,168,154,131, 30,181,192,249,186,158,198,167,200,134,159,210,207, 38, 98,170,213,251,117,173,196, 94,213,100,212,
- 30,113,158,136,188,215,166, 57,105,207,121, 17,178,156,159,147,183,123,206, 5,158,143, 53, 54, 86, 86,200,126, 24,203, 30,137,
-190,120,225, 7, 95, 57, 70,149, 91,165,244,199,191, 4, 79, 35,182,148,246, 36,217,107, 53, 76,222,171, 96, 30,122,118,143, 87,
-212,167,194, 97,139, 55,240,252,236,132, 83, 59, 35,103,129, 84,146, 70,119, 24, 89,188,217, 5,146, 70,149, 25,186, 36,161,100,
-198, 2, 70,100, 90,163,201, 34,161, 82, 66,229,140, 27, 7,164,143,228,209,179, 27, 7,196, 48, 96,119, 1,231, 10,244,174,146,
- 64,103,232,180, 66, 43,131, 82,154,166,159,163,219, 30,154, 30,219,206, 80, 77,139,210, 6,217, 54, 8,107, 16,170, 28,222,212,
- 57,187,136,197, 59, 62,196, 2, 9,133,156,137, 41, 33, 37, 92, 13,107,148,210,132, 16, 56, 31, 6,178,168, 93,167,243, 92,167,
- 2, 61,106, 62, 22, 83,185,249,143,110, 95,208, 15, 33,104, 25,247, 48,230,211,218,252,211,141, 78,214, 64,137,201,207,123, 90,
-176,153, 98,107,170, 39,248,169,118, 91,177,194, 66, 62,148, 13,144,235,101, 68,169, 26,180, 80, 25,150,155,243, 42,135, 10,143,
-247,181, 77, 48,243, 4, 35, 29,189,200, 47,252,202, 79,243, 15,126,249,103,121,233, 51,159,192, 54,138,237,214,177, 27, 60,227,
-214, 51,108, 71,220, 48, 18,156,199, 59,143, 18,150,229,226,132,179,179, 19,102,125, 75,223,155, 26,234,163,176,157,162,177,138,
- 89,103, 88, 54,134,219, 39, 45, 39,139,158,190,105,144,170, 32, 38,157,149, 44, 91,141,150, 2, 37, 10,145, 42, 35,171,202,162,
- 32, 8, 82,194,141,133,165,111, 20,189,213,228,148,139,188, 13, 73,215,104,158,187,125, 66,210,154,148, 51,139,229, 49,199,167,
-183,136,235,129,111,191,243, 22, 86, 75,164, 84,188,179, 94,209, 40,193, 48, 14,228, 24,177,218,144,147, 68,104,205, 75,159,124,
-129,115, 63,240,206,119, 94, 43, 93,194,118, 34,211, 72, 30,116,188,248, 1, 40,236,135, 23, 67, 83,209,184,190,169, 7,159, 46,
-107, 68,240,224,200,231, 73,215,242, 7,196,179,126, 96,178,218,100,137,125,243, 6,159,249,212, 43,124,254,149, 31, 98,217, 88,
-132,202, 92,172, 46, 25,253,150,139,221,134,215, 46,239,145,200, 24,101, 24, 82,224,171,175,191,205,155, 95,255, 14,187,111,125,
- 7,214,171,167, 88,208,167,129, 41, 79,199,163, 98,130,218,103,115,184,123, 11,158,191, 13, 55,110,243,195, 55,158,229,164,233,
- 72, 8, 62, 57, 63, 98,200,176, 52, 13, 27,219, 86, 6,182, 0, 59,227,110, 55, 99,214, 20,227, 36,163, 53, 74,104, 22, 77,139,
-233,122, 22,182,135, 20,176,218, 34,164,161,237,117, 33,189,117,109, 49, 8,155,119, 53,147, 71,163,107,231, 77, 74, 72, 36, 89,
- 56,132,148,165, 54,250, 34,215,146,178, 36, 18,134, 24,137, 68,164,128,221,232, 17, 66, 34, 73,228, 36, 24,115,153, 1,207,187,
- 25, 91, 55,208, 54, 13, 90, 40,118, 58, 19, 69, 77,134, 20, 21, 9, 18,117,205, 61, 14,194,209,216,154, 36, 57,117,205,181,169,
-240,149,196, 54, 89, 11, 78,222, 15,177,234,208,243, 4,207,219,189, 29,110,136,181,121,173, 99, 40, 37,106,167, 47,170,172,172,
- 6,206,104, 85,246, 68,223, 22,102,189,209,133,100, 42,171,213,110, 62,200, 13,120,156,189,114,120,129,158,198,151,249,176, 99,
-127,239,231,124, 60, 71,185,201, 54,112,110, 97, 54,199,231,140,173,118,121, 11, 91,102,233,160, 80,178,204,174, 11,153, 60,160,
-149, 32,197, 68,223,154,226,176, 56, 56,176,170,100,159,123,200, 33,226,134, 1,225, 60,202,143,196,171, 13, 73,104,244, 54, 16,
- 20, 12, 10, 90,161,217, 24,133, 54, 22,213,119, 68,221,210, 88,131, 64, 18,117,233,250, 11,244, 92,159,171, 12, 56, 38,213,151,
- 32,235,162, 3,179,157, 98,220, 66,171, 52, 49, 6,182,206,211,155,134,149,171,198, 20,147,233, 73,160,204,100, 92,101, 41,199,
-244,225,102, 18, 70, 86,143,225,201, 91,187,158,221,170,125,240, 25, 62,169,125,228,161, 22,252,240,247, 66,216,235,197, 1,220,
- 37,232,227, 98, 60,147,124,149,172,181,123, 7,167,139, 77,249,179,144,247, 30,206, 91,247, 24,201, 24,239,243, 58,112,229,250,
-185,255,252, 87,248,210, 79,253, 24,167,167,115, 98, 74, 92, 93,142,172,175,174, 72, 41,145, 35, 24,221, 18,182, 1,163, 91, 8,
- 13,253,201, 13, 78, 79,230, 88,107,232, 27,203,124,102, 9, 33,147, 17,228, 36, 80,141,100,102, 44, 11,107, 80,100,156,139, 8,
- 60, 66, 42, 92,128,139, 77, 34,101,207,172, 73,116, 86,178, 13,133, 21, 93,136,183,138,227,121, 33, 77, 22,133, 77, 66, 43,113,
-157,227, 81, 87, 11,222, 39,122,107,248,210, 75, 55,216,141,129,123,219,200, 38, 30,211,205,231, 12,191,251, 59,136,148,137, 34,
- 50,134,192,197,234,138, 69,191,100,244,145,198, 59,210,213, 21,110,216, 50, 63, 57,226, 23,126,254, 43, 92, 13,142, 87,255,228,
-223, 61,232,155,126,237,199,249, 3,242,234,219,253,177, 48,173,143,113,138,118,116,149, 91,193,131,133, 75,235, 39, 91,199, 47,
-127,178,116, 84, 95,255,198,251, 79,119,106,164,106,174, 26,222,137,127,214, 62,115,131,163,217, 18, 45, 21, 39,203, 99,186,174,
- 33,249,196, 27,151,111,113,181,115,220,219,236,120,103,187, 99, 27, 61,241,254, 21,249,114, 11,227,138,252, 52, 45, 91, 63, 40,
- 47,254,113, 29,197,160, 6,170,204,225,185,103,224,248, 4, 22, 55,144, 41, 51,235,231,184,221,154,231, 23, 55,184, 55,172,249,
-100,211, 48, 2, 23,227,200,168,138,177, 80,223, 52,244, 70,163,133,198, 54,246, 90,154, 37,181,166,207,145,224, 29,182,233, 49,
- 66, 33,165, 68, 38,137,238, 44, 70, 78,254, 4,245,172, 84, 16,115,192,200, 76, 96, 36,185,128, 18,153,156, 51, 46, 4,148, 46,
-197,114, 28,124,149, 84, 41, 98, 40,157,173,173,166, 72, 67, 8,100,114,137,191,214,154, 24, 35,103,179, 35, 6, 63, 98,103, 22,
- 45, 19,219,214,242,154, 53,165,136,174,135,114,238, 68, 87,214,216, 48,124,188,181, 53,186,125,231, 45,168, 49,218,181,171,138,
- 53,143, 93,213,220,249,105, 29,155,154,111,161, 36, 12,235,178,254,213,129, 45,179, 79,251,153,121,116,160,230, 69, 17,116,237,
- 70, 23, 10,154, 69,216, 59,202, 77,254,239,147, 10, 73,233, 58,210, 10, 31,127,191, 60,198,250,209,143,189,136,219,166, 20,170,
-182,199,100,129,243,129,163,118,142,139, 17, 33,202, 77, 38,166,128, 50,134,144, 19,173,210,132,156,232, 40, 48, 88,223,116,104,
- 50,209,121,164,146,248,237, 64,151, 33,248,192, 48, 12,100, 23,138,174, 63,120,140,173,174,117,141, 33, 54,179, 66, 24, 94, 30,
- 99,154, 22,225, 61,169, 53, 40, 36,194,103, 98,215,209,166, 64,142,137, 36, 5, 86, 52,100, 34, 49, 70, 50, 9, 33, 53,201,101,
-132, 40,209,167, 46,122, 2, 17,169, 5, 4, 69, 78, 1,143,195, 40,205,104,106, 96,193,218,239, 31,112, 76, 31,242, 6, 76,179,
-210,112, 45, 93,188,246, 48,158,126, 93,174,244,213,204,224, 9, 11,166,169,129, 3,138, 7,201, 69,215,240,169, 45,115, 35, 29,
-247,213,170,213,133, 32,212,232, 10, 37,197,226,209, 28, 14, 32, 97,107, 97, 92,237, 55,200, 19, 28,222,127,231,151,127,142, 47,
-255,228,151,185,243,252, 41, 66, 10,134,157,103,125,181, 99,115,181, 65, 90, 89, 70,143,187, 17, 47, 18, 18,205, 51, 55,158, 69,
-105, 75, 99, 53, 90, 9,140,209,204,122, 91, 46,216, 25,130,243,180, 70,176,104,203, 72, 39,230,196, 16, 51,110, 40, 12,126, 37,
- 5,163,203,220,219, 4, 66,138, 88, 85, 51,134,180,198,167,196,213,170,100, 3, 68, 41, 8, 49,211,233, 4, 99, 66, 38,104,218,
-226,182, 55, 84,114,103,204, 25, 25, 50,198, 20, 68,160,239, 90, 98, 18, 60,183,236, 80,252, 60,175,126,251,187, 12,155, 21, 62,
-254, 53, 62, 58,180,182,164, 48,226,130, 39,196, 64, 8, 22, 55, 6,110,189,112,155,223,252,213, 95,226,127,221, 69,174,190,250,
-141, 18, 82,225, 63, 42, 29,246,251,244,106,108, 53, 85,169, 95,151,169,135,223,122,245, 96,184,201,212,209,103,158,138,167,249,
-115,119, 79, 57,233,230,252,249, 67, 69,189,228,123,132,253,207,107, 65,159, 32,205,219,139, 25,183,207,110,113,111,125,206, 11,
-183,110, 35,141, 33, 69,143,209,207,208,154,134,119,183,107, 86,247,207,201,110,132,243,119,159,110,142,193,163, 10,250, 7,125,
-172,109, 11, 55,229,131,158, 89, 99,203,236,252,198, 41, 60,247, 44,116,115,152, 29,131, 53,204,133,102,235, 29, 11,211, 50,132,
-128,160,152,141,188,189, 94,177,176,109,137,170,165, 40, 57, 0,146,146, 92,121,207, 51, 77, 71,163,138,103,135,167, 40,128,112,
- 35,130,140,214,138,182,107,139,202, 32,101,180,149,132,209, 87,115, 67,135, 38,144,180, 71,187,128, 19,174,120,128,120,143, 68,
- 16,125,198, 79,173,111,146,196, 93,177, 97,142, 42,161,133,100, 23, 71, 90, 93, 28, 33,165, 44, 73,153, 90, 40,148, 46,210, 10,
- 33, 51,164,142, 16, 2, 47,158,157,114, 62,236,216,180,150,232, 28, 92, 14,123,203,241,237,199,136,166,158, 26,153,107,187,214,
-169,177, 58,144,109, 74,189,183,168,181,128, 59,184, 97,247,237, 62, 5,239,176,176,167, 74,134,155, 92, 31,175,155, 40, 11,210,
- 85,219, 86,246,204,119,113,112, 78, 78,249, 28, 57,237, 77,196,198,239,237,216, 77, 63, 86, 33,105,219,186,233, 45, 56,199,209,
- 98, 73,175, 53,224, 17,162,197, 84,200, 64, 73,141,243,158,214,180,196,232, 81,253,131,246, 16, 0, 0, 32, 0, 73, 68, 65, 84,
-100,108, 83,158,174,115, 35, 70, 74, 84,202,152, 4, 94, 25,216,172, 8, 33, 96, 98, 68,133,132, 19, 13, 93, 83, 35, 82,173,102,
-222, 22,189,228,242,228, 4, 21, 50, 62, 38,236,124, 86,130,128, 98, 66,180, 22, 81,137,108, 66,107, 76,166, 44, 38,138,214, 47,
-186, 18, 50, 32,200,120,231, 16, 82,144,210, 30, 82,119, 57, 20,163,154, 12,173, 86,140, 94,237, 45, 14,145, 31,173, 83,159, 10,
-187, 72,251, 91,227,245,162,227,193,159,123,249,228, 93,206,132,239, 75,185,191,113, 30,190,173, 74,150,247, 43,172, 96, 88,192,
-162,169,193, 3,166,116,230,187,117,245,231, 30,203,223,247,169,166,136,141, 15, 6,133, 60,198,215,217,255,248,151,248,205,175,
-252, 36,175,124,246, 69,180, 16, 12,206,227,198,192,250,114,139,119, 14,100, 41,232,243,126,129, 93,156,210,116, 45,120,137, 66,
-211, 46, 12, 90, 72, 78,102, 22, 99, 20, 18, 65, 99, 52, 33, 43,206,179,192, 71,207,189,181,195, 84,147,157, 88, 67, 37,118,222,
- 19, 66, 68, 68, 65,200,137, 97, 72, 12,163,103,116,145,229, 92, 23,232,190,149,184,109, 96,187, 13,132,172,104,231,134, 35,147,
-203,218, 89, 11,180,146,244,141, 37,228, 98, 78,180,146, 30,163, 36,125,163, 88,180, 2,107, 53,214,104, 62,247,210, 13,142,102,
- 13,247,239, 95,113,118,235, 22,171,139, 43, 94,191,255, 29, 70, 31, 72, 49, 34,149,192,168,128,237,122, 46,238,157,243,236, 75,
-119,249,167,255,217, 47,241, 63,255,241,215, 14,230, 50, 63, 64,175, 36, 31, 66,146,216, 75, 27,167,174, 93, 60,253,127,246,213,
-223,251, 3, 94, 61, 44,126, 7,200, 83, 70,151,194,174,245,117, 65, 23, 49,145,149,228, 91,111,190,195,173,217,155,220, 62,189,
-137, 80,146, 24, 61, 57,192, 24, 2, 55,150, 71, 44,187,150,203, 55,222, 46, 33, 34,181,160,231,167,253,197,219, 26,142,180, 27,
-247,197,226, 48, 20,228,250,251,234, 42,130,215, 66,120, 40,149,208,216, 2,253,206, 58, 56, 89,194,209,188,116,119,214, 22, 18,
-150,131,165, 21, 32, 21, 66, 55,100,183,229,184,155,227,134, 45,207,119, 45,247,124,224,221,114,147, 39,137,140, 53,134,133,181,
-116, 82,179, 11,142, 99,219, 97,155, 6, 17, 18,222,121,164, 84, 28,213,156,116,165, 37, 90,203, 98,171,225, 3, 86, 11,162,247,
-228, 16,144, 58, 34, 6, 79, 34,163,165,160,217, 57, 6,145, 49, 25, 84,140, 5, 89, 22,130, 81,149,102,167,164,149, 54, 64, 98,
-209,204, 8, 57,162, 77,195,224, 6, 90,101, 65, 39,134, 16, 88,116,115,188,223,146, 77, 67, 59,151, 92,185, 45,189,130, 43,173,
- 88, 55,154, 75, 20,116,177,248,196,115, 5,222,194,246, 67,146, 28,141, 45,163,207, 41, 43, 33, 38, 16,110, 47, 3,155, 80,211,
- 36, 30,156,233,216,218, 88,185,170, 77, 23,178,188, 23,227,186, 28,163,186,173,118,178,117,180,106,218,189, 95,188, 60,104,208,
-166,189,108, 38,127, 18,185,255,185,146,123,118,253,211, 64,182, 62,228,245,241,103,234,186, 90, 94,246, 51,232, 91,154,147, 37,
-189,210, 88,109,144, 66, 32, 69, 38,229, 76, 66, 84,189,122, 33, 7,168, 12,157, 76,184, 16,233,148,196, 20, 80, 8, 13, 40,165,
- 80,126, 68,198,132,218,185, 50,178, 72, 96,148, 38, 26,141,233,122,218,182, 67,219,134,182,159, 97,140, 65, 90,131,182,134, 76,
-174,188, 7, 77, 32,147, 83, 38, 73, 93, 33, 39, 73,200,165, 99, 79, 66,236, 51,147,153,204,190, 34, 57, 70,198,228,240, 62, 16,
-115,172,235, 33,177,141, 99,241, 94,113,174,144,155,166,212,182,195, 44,229, 15,155, 77, 78, 86,131,217, 23,164, 97,210, 1,123,
-246,176, 80,240,143,121, 29,211, 7, 26, 99, 5, 97, 44, 24,191, 63, 96, 67, 47,102, 69,191,106,155,114,156,185, 80, 14, 55, 31,
-202,247, 18,135,242,119,198,106,103, 56, 86, 61,101, 13,122, 33,133,247, 18,241, 62,162, 70,249,215,127,251,183,248, 79,127,237,
-239,114,231,185,155,184, 49,224,124, 32,250, 92,127,140,215,211, 7,133,225,120,126,196,114, 54,227,246,209,146,153,109,144,173,
-194, 72,197,162, 49,204, 90, 85,227,196, 19,228,204,106,235, 24,221, 8, 34,147,125, 34, 10,193,213,182,132,183,196,152, 89,175,
- 2,171,171, 29,231,235, 45,187,221,136, 15, 30, 31, 18, 82, 72,238,189,189,226,222,102, 7, 17,108,149,151,197,224, 8, 89,113,
-113,233, 25,131, 99,244, 17, 55, 70, 92,242, 16, 51, 65, 8, 4,146,205,224,184,220, 56, 70,159,153, 55,146,209,121,180,146, 44,
-250,134,219, 55, 23, 28,157,206,249,196, 11,183, 16,237, 2,171, 90,124,101,192,175,118, 91, 72,145, 70, 23,111,128,103,159,191,
-193, 23,126,234,111,243,175,127,231,255,225, 7, 38,236,227,129,179, 73, 87,230,239,100,184, 84, 11,162, 76,188, 71,103,246, 81,
- 15, 38,253, 1,247,151,135,127,127, 42,232,170,234,135,167,249,103,101, 49,139,201,135,161, 22, 77,177,139, 92,244,130,190,230,
-141,183,166, 97,181,185, 66, 10, 88,239,182,252,233, 95,125, 23,222,126,245, 26,181,122,234, 5, 93,214,180,182,182,219, 95,124,
-212,193, 65,158,115,189, 40, 85,207,110,161, 32, 12,251,125,212, 90, 80, 29, 28, 31,149,196,191,163,121,209,149,119,109, 41, 38,
- 85, 1,137,110,176,148, 68,202,165, 44,137,131, 34,122,174,124,160,201,145,123,110,199,102,220,128,223, 33,117,135,147,154, 59,
- 93,135,149,130,101, 99, 48,213, 67, 66,213,128, 43,163,138,217,212,188,183,215,130, 20, 50, 37, 60, 43, 71,114, 12, 5,132,168,
-118,221,132,136, 30, 35, 65, 75,172,143,200,154,149, 33, 43,129, 75,138,124,205,229, 82, 70, 99,164, 68, 91, 67,219, 24, 18,169,
-152,125, 9, 16, 66, 48,239, 91,156, 27,232,172, 45,102, 66,100,230,182, 37,166, 80, 56,181, 89,149, 99,218, 10, 98, 18,251,140,
-243,198, 22,136,254,144,179,112,152, 45, 17,124,173, 77,121,111,216,162,197, 94, 58,145, 39,130,167,170,103,220,193,251, 56,212,
-226, 63,233,190, 85,174,246,220,186,202,200, 84, 33,185, 54,181, 97,138,197,116,168,196, 40,155,242,107,217, 84, 50,221, 52,163,
-143,229,189,119, 99,181,205, 86,149, 53,175, 31,207, 79,226,123, 90,212,219,190,232,109,251, 6,164, 70,181, 13,141,177,204,141,
- 65,203,150,156, 34,141,105,176, 82, 19,146, 71,150,119,147,148, 2,141,132,133,166,116, 49, 66, 98,115, 70, 33,203, 51,244, 9,
-147, 37, 42,122,162, 75, 88,109,112,198, 34,155, 14,211,207,104,141, 69, 89, 75, 59,235,137, 62,162,171,183,176, 8,177, 20,108,
-169,145,100, 66, 77,132,147, 2, 54,209,163,108, 49, 70,201, 57, 18, 67, 66, 8, 65,140,169, 64, 72, 57,227, 98, 32, 36, 79, 68,
-144,147,199,167,226, 74, 23, 83, 34,196,136,159,152,141, 83,210,148,143,133,240,246,145,141,187,210,158, 85,169, 38, 39,162,218,
-169,167,248,152, 33, 5, 15,221,244, 98,253,122,140,173, 70, 7,213, 47,190, 95,212,244,188, 74,216,112,187,253, 92, 52,135,122,
- 1,136, 48, 78, 58,244,176, 95,116,250, 33, 22,253, 20,245,247, 33, 68,160,230, 63,248, 18,255,245, 63,254,135,124,241,203,159,
-195, 24,205,110, 44, 33, 7, 41,102,178,200,164,148,137, 33,145,131,164,177, 29, 55, 79,110,240,220,233, 41,203,197,140,227, 69,
-139, 80,146,155,139,142,219,199, 29,157, 45,220, 8, 33, 96, 51, 68, 86,131, 99,227, 28,187,157,199,187,192,198,123,214,235, 29,
-219,245,200,229,197,150,132, 33,197,196,118, 51,224,119,142,113, 23,217,173, 71,132, 78,197,215,223, 39,148, 22, 8, 13,227,110,
- 96,116,158,205,122,139, 31, 28, 62, 10,182,155,145, 97, 28, 9, 33, 51, 14,129,245,214,177, 25, 60, 46, 41,114, 78, 4,239, 25,
- 35,228,156,104,173, 40,121, 29, 25,122,173, 88,180,154,101,111, 89,246, 51,238, 62,123, 11, 59, 59,226,232,228,140,123,111,191,
- 77, 12,145,166,177, 37, 60,207, 71, 94,120,225, 25, 62,255,147, 63,198,239,255,206,239,253,128,117,234, 53,255,122,146, 25,197,
-176, 15,220, 73, 60,126,184,134,212,123,183, 51, 93,198,104,197,146, 51,188, 23, 62,133,189, 52, 72,215,131, 86,213,208, 27, 33,
- 30, 44,236,126,196,125,231, 77, 94,253,206, 95,241,141,237, 21, 89, 57,122,107,113,206,241,199,175,127,135,237, 55,191, 5,126,
-252,224, 98,254,137,151,249,244, 79,124,145,123,127,245,215,143,184,121,124,200,243,154, 46, 67,227,184,151, 80, 93,187,140,229,
- 3,195,160, 90, 8,164, 44,207,162,105,192,206, 74,103,222,218, 18,176,210, 54, 85, 45,162,202,254, 77, 19, 81, 42, 17,108,203,
- 11, 77,135,200,145,224, 7,124,138,164, 48,144,220,142,239,110, 86,228,113,139, 80,154,185, 2, 77, 65,152,132,182,180, 53, 23,
-192, 72, 69,140,137,166, 51, 52, 2,102,115, 83,199,203,213,252,171,250, 83,229,148,209, 58, 33, 82,113,238, 36,102, 68, 12,228,
- 24, 80, 49, 34,114,177,162,176, 2,180, 80, 64, 68, 8,137,110, 44, 70, 91, 76,107,208,141, 65, 27, 77, 22,208, 54, 77, 33, 76,
- 75,129, 49,138, 24, 35, 93, 91, 96,247,242, 22, 75,188, 31, 49, 82,145,115,105,150, 78,187,142,251,195,128,106, 44, 81,203, 26,
- 21, 61,141, 53,171, 23,186,182,149,116, 60, 49,217, 15, 50,237,179,219,155,183,196, 74, 98,156,194, 46,114,189,156, 38,202,179,
- 14,126,239,177, 46,155, 82,208,175,199, 52,182,172,215,144, 10,154,137, 40,223,188, 16,123,189, 58,147,180,211,151,117,234,170,
-211,155,169,121,244,166, 58,212, 81,211, 47,197,247, 62, 11,224,227, 21,245,190,173, 48,146, 41, 55,167, 89,143,178,134,179,174,
- 47,129, 43, 74,208,155,142,148, 19,137, 92,154, 84, 33,144,100,218, 28,208, 57,128,200,180, 82, 33, 82, 36, 42, 69,147, 74, 97,
-143,128, 30, 74, 81,237, 81,120,173, 80,243, 57,182,105,208,198, 18,148, 98,214,119,228, 24,209,173, 37,197, 90,144,116,177,129,
-117,209,147,140, 33,121,143, 19,137, 49, 6,100,134, 40, 37,161,250,121,103, 37,137, 62, 84, 87,191,120, 93,184, 5,144,235,131,
-207, 41,226, 98, 66,145,145, 66,176,217,212, 52,171,237, 88,180,222, 34,215, 91,216,227,220,236, 15,108,103,227, 19,144,228, 14,
-217,237,135, 63,159,244,138,105,138, 91,181,101,145, 42, 85, 10,248,110, 40,139, 55, 84,134,168,171,172,244, 84, 11,119, 99,247,
- 16,209,116,112, 79,183,225, 84,103, 85,227, 7,155, 69,156,254,228, 79,240, 63,252,246,175,242,210, 75,119, 42,241,180,204,187,
-189,247,140, 33,226,118,129, 97,240,108, 46,183, 24,221,115,243,198, 45,158, 61, 61,225,232,168,165, 51,166,146, 67, 51,179, 70,
- 33,165,192,197,200, 16, 51, 99,130,245,198,115,126, 57,176,221,121,134,209,179, 90, 13, 92, 93,110,217,172, 6,182,187, 1, 63,
-122, 98, 78,108,199, 80,188,222, 47, 7,156, 27, 8,209, 17,125,201, 5,200, 62,161,148, 34, 69,201,102,181, 69, 74, 65, 74, 25,
-183, 29, 24, 54, 35,155,203, 17,183,113,184,113, 96,231, 29, 41, 4,182,155,145,113, 44, 23, 9,171, 4,189,145,236,198,136,208,
-146,152,114,229, 33, 85,243, 36, 37,105,172, 98,222, 27, 94,188,121, 68, 63,155, 33,237,156, 20, 5, 73, 4, 4,138,144, 18,219,
-209,113,231,217, 51, 62,247, 19, 63,206, 31,252,159,255,247, 15, 86, 97,143,213, 1,239,253, 2,119, 30,231,101,236, 62,170, 52,
- 85,130,230, 24,203, 33, 60,107,246,100, 35,173,247,178, 34,216, 39,103, 77, 45,182,172,126,245,213,212, 67, 92, 27,238,212,175,
-115,181,227, 45,231,249,230,219,111,241,205,183,222,100,251,221, 55,201,227,250,209,223,195,122,197,223,254, 59,255, 17,183, 62,
-253, 9,190,251,141,111, 60, 30,107, 93, 86, 5,201,244,181,235,135,252,248,167,203,178,214,165,136,207, 23,176, 60, 65, 30, 31,
-145,151,179,131, 44,123, 85,138,130, 82,251,142, 51,133,210, 68, 9, 65,204,137, 24, 60, 97, 92,211,165, 76,218, 94,208, 4,199,
-184,189,226,221,237, 10,198, 1,225, 7,192,243, 66, 51, 99,214, 47, 57,178, 13, 90, 74, 66,202,215, 33, 44,157, 22,116,115,195,
-220, 42,218, 70,162,165,160,111, 37,186,122,150, 79,118, 4,201, 23,110, 74,218, 13,197,139,127, 8,197,162, 59, 23,200, 93, 9,
-137,105, 12,198,180,216,182,197, 54, 22,213, 53, 40, 99,139, 47,137,181, 40,169,200,185,204,238,181, 42,132,232,198, 54,196,224,
-209, 82,212, 16,180,132,175,239, 81, 18,197,253,115, 32,176,108, 91,132, 20, 8,163,112, 86, 22,228,176,235, 10,218, 41,227,158,
-137, 46,170, 13,172, 72,117, 92,193, 94, 97, 20, 40, 5, 53,199,189, 93,175,212,165,232, 83, 73,193,147,235,219, 48, 22, 79, 14,
- 95, 47, 9,186,202,214, 68,222, 7,124, 9, 91, 85, 32, 84, 51, 25, 81,244,233,169,218, 2, 79,151, 58,173,170, 11,103,189,236,
-153, 74, 88,252, 62,116,233, 31,175,168,107, 93, 61,190, 21,204,106,234,143,214,204,103, 51, 52,146,185,181, 37,214, 84,148,141,
- 55,201, 34,148,128,144, 3, 46, 7, 22,178, 60,160, 46,139,210, 77,231,140,164,108, 36,149,138,180,204, 38, 81,162,110,109,135,
-237, 59,178,178,100, 37,209,198, 48,166, 64, 86,229, 96,148, 36,164, 54,136, 24,217,230,136, 82, 18,231,194,117,198,201,232, 61,
- 89, 22,214,189,203, 9,157, 82,129,226, 67, 34,197, 2, 31,249, 80,224, 31,159, 28, 32, 8, 49, 17,115,192, 42, 69, 22,153,115,
- 63, 98, 90,131, 27,171, 94,209,213,212, 41,255, 4,126,209, 79, 18, 35,120,248, 94, 72,249,224,165,224,176,184, 79, 9, 91, 50,
- 23,107, 67, 31, 96,187,131,113,183, 47,212,147, 43,216,195, 29,255, 3,159, 99,234,212, 39, 56,182,182,108,215, 16,252,190,187,
-249,217, 95,255, 69,126,235, 31,253,125,142,230, 61, 87,155, 29,219,245,192,110,112,108,119,158, 24, 51,195,102,100,183, 25,136,
- 46,161,153,243,204,157,103,248,220, 39,110,114,231,164,165,181, 6,231, 19,177,118, 96, 62,129, 71,178,118,137, 55,223, 90,113,
-117,185,101, 61, 4,134,144,216, 14,158,205,122,199,230,202,177, 91, 15,248,224, 24,183, 3,193, 7,198,113, 32,120, 71,116,129,
- 24, 3, 57,149,241, 71,172, 58,252,148, 34,195,110,199,118,189, 99,216,141,172,207, 47, 16, 66,225,156, 35,249,177, 34, 53,144,
-115,196,143, 14,165, 53,195,232, 10, 23, 67, 70,164, 80,180,179, 98,173,235,198, 72,211,106, 6, 95, 80, 39,170, 92,174,240,199,
- 4,141, 49, 40,173,137,178,229,153,219, 55,217,110, 3,110,216,161,219,134, 97,189, 97, 12,137,231, 94,184,201,115,159,248, 36,
-127,246,251,127,244, 24,216,245,191, 7,175,105, 86,220,170, 50,119,182,109,145,136,118,179,122, 24, 86,242,230, 4, 89,155,169,
-176,137,125, 65,159, 58,225, 44,246,168,209,251, 25,238, 72,138,229,235,197,101,249,111, 28, 74, 33,248,160,103,167, 75, 44,232,
- 55,183,107, 94,190,243, 44,127,253,245,175,239, 33,245, 71,237,205,198,150,175,185, 53,123,100, 97,114, 15,211, 15,141, 39, 38,
-253,179, 86,165, 11,188,121,198,252,120,206,252,120,206,216, 88,178,177,213,209, 44,214, 17,218, 65, 54,192,100, 87,154, 98, 41,
- 60,227,134,237,184, 97,117,117,159,221,246,156,215,238, 95,225, 55, 87,188,182,170, 5,189, 85, 28,205, 58,110,182, 61,199,205,
-156,214,182, 40, 37, 64, 89,186,156,176, 82,211,181,146,229,204,208,181,197, 0,108,222, 42,186, 86, 33, 98,194, 54,170, 18,147,
- 51,209, 7, 68, 78,196,245, 72,206,137,184,222,146, 71, 71,118, 30, 65, 46,231,182,110,139,153,152,209,116,205,140, 44, 21,221,
-172, 67,100,133,181, 6, 41,101, 97,190, 91, 83,198,108, 85, 94,155, 98,192, 24, 75,162,132,112, 73, 81,124, 78, 93, 8,180,198,
- 18,115, 44, 6, 98, 82, 18, 98, 36, 9, 73, 18,130,104,234, 57,118,212,150, 11,144,243,165,176,235, 41,173,208, 20,107,110,171,
- 32,200,178,230,144, 85, 55,174,246, 50, 76,125,224,149,129,170,217, 21, 19,201,174, 22,236,209,213, 5, 85, 47,101, 82,148,130,
-158,134, 18, 7,157, 43,220,126, 77,134, 22,251, 28, 7,228, 1,121,234,192,202,217,249, 3, 31,136, 39,100,193, 77,126, 8, 19,
-195, 62, 61,110, 81,159,236, 64,219,190, 44,236,190, 41, 48,154, 82,220,232,122, 50, 25,171,219, 58,151,206, 40, 33,201, 57, 33,
- 40,208,187,200, 25,159,224,140,200, 32, 51, 45, 18, 35, 4, 89, 42, 68,150,200,148, 17, 8, 68,206, 36,211,208,204,122,178,181,
- 37,232, 72, 27,178,132, 70, 75, 92,138,164,156, 80,218, 20,233, 92,142, 32, 20,131,247,132, 84, 50,197,163, 47,182,177, 33, 38,
-140, 16,101,159, 8,144, 46, 34,140, 4,153,241, 46,144,114, 34, 11, 73,240,158, 24, 2, 62, 7,132,144,164, 84, 82,186,102,178,
- 33,228,196, 54, 87,150,231, 24,107, 30,111,252,155, 61,103, 31,238,162,141,222, 23,228,233,207, 38,184,127,136,101,118, 30,195,
- 30,154, 63,204,182,126,212,231,152, 22, 96, 83,229, 46,170,250, 38, 95, 31,124,165,216,255,226,111,254, 26,191,240,107, 63, 71,
-223, 88,222, 61, 95,177, 94,237, 24,135,192,118, 23,240, 99, 49, 0, 73, 49, 99,245, 12, 35, 91,142,143, 79,121,246,230, 9, 77,
- 53,126,241, 46, 17, 66, 98, 12,153,213, 48, 18, 92, 34,184,200,253,203,129,119,207,215,220, 59, 95,179,190,220, 49, 12, 35,171,
-243, 29,187,237,192,110,189,102,231, 6, 98,240,184,193,177,219,108, 9,163, 71, 32, 24,135, 13,227,110, 64, 25,197,176,217,162,
-141, 41, 69,158, 76, 8,158, 97, 59,224,221, 64, 76, 9,231,119, 56, 55, 34, 20,228,236, 9, 99, 64,217,150, 97,187, 37,231, 76,
- 38,147, 92,194,246,134,172, 45, 41, 22,109,104,132,162,121,175,227, 37,137, 68,107, 81,221,118, 51,179, 89,195,113,223,176,114,
-208, 88,195,141,211, 37,235,130,221,227,189,195, 15, 35,194, 24, 94,124,249, 46,119,238, 62,199, 87,255,240, 79, 63,160,144,255,
-123, 84,208, 31,190,127, 88, 83, 70,117,218, 20,173,175,148,229,240,173, 9,137,165,123,105, 74, 1,166, 66,213,147,167,245,225,
- 75,240,225, 29,142,148, 31,192, 17, 72, 31,204, 90, 23,192,253,243, 82,208, 39, 8,246, 81,133, 93,235,253,197, 3, 30,204,224,
-158,138,251, 84,224, 39,178,148, 22, 37, 11,226,248, 8,121, 60,227,120,214,211,118, 45, 94, 75, 22,198, 20,103, 53, 33,247,172,
-107,113,192, 68,140,161, 60,155,213, 21, 92, 94,192, 59,239,146,175,118,140,111,190, 11,171, 53,187,243,251,229, 18,208,104,132,
- 41, 49,167, 47, 46,207,138, 23,187,208, 72,105,145, 57,209, 91, 75,171, 4,139,185,165, 49,154,227,153,102,209,149, 46,189, 53,
-146, 89,171, 17, 33,151,112,172, 92,208, 39,191, 29, 32, 38,194,197, 21, 41,248,242,252, 67,177,127, 45, 53,180, 65,182, 6,221,
-244,101,162,208, 55,228,148,153, 29,117,228, 92,164,161, 77, 99,137, 41, 34,170,155,232,148,182, 23, 67,198, 71,143,182, 22,239,
- 35, 81, 36,180, 82,248,148,208, 82,145, 36,140, 62,208, 24,197,152, 34, 43,239, 49, 82, 18,173,134, 93, 93, 7, 93, 91,189, 54,
-100,121,206, 34,237,253, 54, 52,101,124, 17,198,130,130,140,245,207,146, 42, 90,114,101,107,224, 77, 61, 39,167,247, 74,230,234,
-219, 94,211,218, 38,227, 26, 89,223,139, 41,187, 60,213,116, 52,217, 20,216,125, 50,234,210, 83, 8, 75, 40,159,127,116,123,111,
-248,244,148, 92,243,100,253,223,245,122,127,239, 90,253,120,240,187,172, 29,122,215, 94,207,134,111, 44,230,164, 36,153,155,134,
-144, 60,173, 52, 52,218,144, 43, 33, 45, 19,203, 27,149, 2, 22, 24,114,230,148, 18,119,106,116,131, 77, 32,132, 36, 10, 48, 33,
- 35,173,161,233, 58,178,212,133,140, 97, 52, 57,197,210, 36, 42, 81, 50,235, 41, 40, 76, 36,145,133, 64,145, 25, 70,135,212,130,
-113, 61, 16,157,135,152,104,164, 38,133,128,212, 18,124, 68, 24, 69,172, 51,110, 41, 51, 62,100,198,232,200, 41,225, 83, 68, 85,
-253,253, 54,184, 98, 73, 26, 61,107,231, 56,110, 91, 54, 87,219,178,241,220,184,223,128,127,163, 7,168,126,176,115, 57,132,227,
-167, 66, 29, 83, 9, 37,152,110,138,135, 7,214, 33,209,238, 81,159, 35,213,219,238, 68, 70, 65,215,195,178,144,127,126,241, 31,
-254, 26, 63,251,247,126, 26,107, 13,171,237,192,213,197,142,171,119, 46,137, 41,163, 26, 77, 12, 17,239, 60,182,233,152, 47,122,
-180,208,104, 97,144,141,194,214,113,105, 78, 5, 54,223,121,207,224, 3,195, 16,185, 28, 6,238, 95,172,216,238, 70,220,206,177,
-217, 57, 86, 23, 23,236, 86, 27,114,242, 4,225,233,218, 6,211, 25,148, 82, 52,125,135,247,174, 54, 71,153,209, 5, 66,130, 76,
- 70, 41,141,247, 99,185,249,167,200,224,118, 72, 36, 99,204,196, 16,112, 33, 32, 19,120, 95, 46,122,214, 26,164, 82, 12,219, 29,
-237,220,226, 93, 68,106,139, 54, 18,211, 88,178, 47,198, 69,227,152,104,172, 38,102,232, 26, 67,170, 70, 70, 25,129, 86,154,163,
-206, 50,107, 20,111, 94, 12,197,173,110,222,178, 25, 2,227,118,131, 27, 6,114,200, 36, 41,120,233,229,187,156,156,221,226,223,
-254,233,255,123,176,115, 63,134,220,205,216, 58,135, 85,223,191,156,234, 7, 10, 93,189,244, 77, 14, 90,211,248, 71, 83,138,248,
-196,241,152, 8, 75, 91, 87,153,198,149, 56,102,108,233,170,115,117, 33, 52,242,193,194,254, 97, 7,226,163,164,101,239, 87,160,
-223,239, 2,192,161,173,241,251, 4, 55, 77, 36,190,195, 56,225,105, 68,160,229, 62, 76, 73, 29,252,158, 48,197,143,125, 62,135,
-229,156,103,231, 61, 95, 60,157,113,199, 26,238, 52,150, 99,149,105, 51,220,167,186,130,229, 10,243,250, 88,216,244,155, 29, 92,
- 92,193,197, 10,222, 57,135,221, 21,220,187, 40,138, 21, 95,231,198,203, 57,116,182, 56, 32,246, 51, 26,213,176,108,150, 88,163,
-209, 90,161,132,102,222, 54,156,206, 52,243, 86,115,107, 97, 56,157, 25, 58,163, 88,106, 65,171,196,117,152,156,212, 16, 92,100,
-112, 35,164,204,112, 85, 52,253,121,231,136,187, 1,157, 32,197,132,210, 22,221,119, 24,221, 96,186,242,115,178,160, 93,180, 4,
-151,200, 6,172, 46,238,137, 82, 10,132,144,228, 92, 8,212,185, 74,100, 75,100,121,172, 1,118, 5,193,141, 41,225, 40,242, 59,
- 41,139,171,103,202,153, 31, 62, 94,242,134, 27,137, 33,150,139,162, 82,123,155, 87, 33,106, 86,123,141, 36,213,166, 32, 41,209,
- 23,162, 27, 53, 73, 45,248, 82,108,141, 41,235,210,135,242,113,162, 42, 12,130, 43,191,214,162,204,225,117,165,197,171,106, 94,
-211,217,162, 22,162, 94, 24,162,171, 94, 38,234,192,190,117,202,218,144,149, 60, 39, 31,140,155,126, 82,208, 77,195,123, 4,107,
- 85, 25,114,184,198, 63,122, 81,175,217,214,232,174,124,179,141,133,182, 45,100, 8, 93,216,202, 66, 10,172,178, 69, 38, 6,248,
- 28, 81, 8,114,206,136, 92, 10,231, 82,137, 98, 9, 91,195,221,149,177,184,148,104,178, 36, 40, 73, 86, 6,169, 53, 65, 22,141,
-114,204, 5,186,153, 76, 15,144,146, 44,192,199, 88,158,169,139,236,182, 91,116,134, 97,181,194,185, 1,157, 18,109,130, 93,112,
- 36, 81,100,115,187,156, 80,185,104, 40, 99, 42, 8, 66,164, 72, 44, 38, 19,126, 23, 2, 62,122,172,182,184, 24,112, 49, 96,132,
-228,254,110, 44,208,112,240, 48,248,239,157, 95,244,199, 38, 53, 29,192,228,135, 80,250,161, 51,216,225,143,215,142, 75,122,191,
- 24, 14,255,254,251,125, 14, 45, 31,180,185,109,116,133, 53, 3,255,232,191,251,199,124,249,239,254, 56, 66, 10, 54,187, 66, 86,
- 27,182, 3,126, 24,201, 72,114, 44,207,217,152,150,174,233, 88,118, 45,243,206, 98,149,162, 81,138,163,185, 65, 74,216,140,137,
-139,157, 99,181, 25, 89,173, 70, 46, 87, 27, 46,175,182,172, 47, 55,108,174, 54,184,193,179,189,218,144,114, 68, 91, 73,215,105,
-206, 78, 79,233,230, 45,177,118,118, 66, 64, 59,111, 57, 57, 91,114,116,180,164,157,245,204,231,109,153, 26, 12, 1,173, 53, 82,
-105, 98, 8, 12,110,192,104, 67, 72,133,149, 47,201,104, 83,102,143, 46, 56,146,143, 8,138, 89, 70, 99, 53, 57,129,181, 13,218,
- 74, 36, 26,219,107,132, 79, 56, 37,233,181, 70, 72, 65,240, 48,239, 20, 86,203,234,107, 81,160,206,222, 42,146,144,172,118,129,
-227, 70,113,231,236,152,171,144,185,255,238, 91,144, 50,209, 39,146, 16,188,240,242, 93,222,220, 57,222,249,214,183,247,108,233,
-143, 4,193,235,125,231, 8,223,223,162,174,171, 4, 72,176,119,239,210, 53,230,178,111,202, 33, 89, 52,172, 7,116, 99, 81,214,
- 80, 78,229,224, 53, 77, 37,140, 86,222,134,154,172, 56,217, 67,159,143,114,226, 58, 52, 96,202,249,209, 28,148,235, 51, 81, 62,
-136, 2,168,131, 75,132,170,249,217, 15,195,154,178,146,159,174, 61, 33,234, 97,207,164,104,169,123, 37, 86, 71, 52, 59, 43,185,
- 24,198,150, 70,168,111,249,212,188, 71,137,204,204, 88, 82,246, 52, 82, 35, 85,226,237,161,100, 93, 20, 31, 12, 15,155, 17,214,
- 99,201,143,184,218, 20,121,213,184,171, 69, 63,236,207,227,163, 57, 52, 6,161, 53, 89,107,110,206,102,156,205,110, 16,210,200,
-113,115,132,209, 22,169, 5, 51, 93,236,143,159, 59,110, 57,158, 91,140,148, 28,155, 34,101,235,141, 66, 2,214, 8,198,173, 39,
-164, 76, 10, 17,191,243,132,237,142, 52, 56,198, 97, 68,134, 88,209, 77,176,179, 35,162,177, 36,219, 32,109,131,182,229,204,110,
-109,233,198, 91,107,241,201,151, 44,246,144, 48, 74, 21, 46, 19,144, 66, 32,167, 72, 8,190,102, 71, 21, 62, 66, 8, 1, 41, 36,
- 46, 38,100,149, 52,134,156, 80,202,240,218,110, 75,206,133,100, 25, 99,220, 39, 82,198,253, 24, 5, 68, 33, 26,250, 58, 7, 23,
-170, 92, 18,109, 83, 81,230,118,127,182,249,176, 39,186,201,138, 22, 73, 91,160,121, 79, 33,197, 37, 15,186, 50,218, 85,157,161,
- 79,219, 48,109,235,252,190, 94, 68,115,101,243, 78,113,197, 70,236, 35, 90, 39, 39,184, 84, 77,104,158, 40,116,105,154,229,203,
-247, 94, 80, 31,171,168,203, 26, 61,215,232,253, 28,204, 40,140, 49, 44,218, 2,187, 47, 77,143, 39,160,165,194, 5, 71,163, 44,
- 46,249, 50, 43,215, 18,153, 18, 67, 10, 52, 74, 32, 16,180,218, 84, 41, 69,177, 50,148,202, 64,215,147,148,169, 4, 69, 65,174,
- 10,176,156, 19, 89, 9,156,243, 36, 4,113, 44,249,217, 97,220,161,115, 34,143,174, 4,105, 92,173,200,162,232,209,149, 44, 76,
-247, 40,192,202,140,143,153, 4,168, 92,179,215,115, 66, 10, 69, 8, 14, 41, 36, 57, 11, 16,146, 49, 12, 40, 33, 42, 11, 62,178,
-114,190,220, 18,165,132,203, 45, 79, 53,128,224, 73,110,111,239, 55,163, 63,156,135, 79, 29,199,244,107,127,208,173, 79,139,225,
- 48, 4,230, 3, 47, 10,245,192,189, 38,210, 37,126,227,191,249,175,248,209,159,248, 17, 66,202,108, 54, 35,187,173, 99,125,185,
-197, 13, 1, 33, 53,255,226,143,255,128,119,223, 57,231,135, 63,253,105, 22,221,156,190,109, 49, 70, 49,111,123,158,191,187,228,
-185,211, 25,173,149,196, 12, 87, 99,145,164, 93, 94, 14,236,134,145,113, 40,196,183, 68, 34,134,140,180,144,146,231,228,228,152,
- 91,183, 79, 56,154,247,244,199, 29,179,101, 83, 58,145,197,140,174,181,156, 30,207,120,249,165, 27,116,179,134,101,107, 56, 58,
-233, 11, 60,158, 18,253,172,229,232,104,198,209,217, 12, 55,122,198,113,192, 42, 77, 74,169, 92,242, 83,113,170, 75, 33, 21, 84,
- 47,103,140,153,149,176, 10,153, 11,226, 36, 20,136,140,115,158,119,222,190,224,237, 55,222,229,106, 53,224, 83, 38,136,204,209,
-172,225,116, 97,136, 49,179,113,153,182,209, 24, 45, 9,185,232,106, 82, 12,156, 44, 13, 74,181,172,119,153,205,230, 28,211, 52,
-108,215, 91,186,174,229,243,159,255, 33,254,229, 63,255,221,131, 46,189, 50,119, 77,133,173,229, 65,183,152, 14,224,121,165,190,
-255, 69,125,234, 92,197,193,148, 32, 79,197, 91,149,116,191,147,101, 41,242, 70,213,228,190,218,137,231,202,172,159, 58, 41, 57,
- 29,176,149,215,225,253, 30,178,140,241,195,179,230,167,162,124, 8,161,127, 80, 81, 79, 15,117,234, 83,246,245,117,114, 76,189,
- 68, 60, 28,190, 49,217, 49, 43,246,182,207,141, 41,228, 45,219,195,141, 19, 56, 62, 46, 68, 64, 91,207, 73,219, 66, 95,212, 39,
-243,198,114,167,147, 44,148,193,103, 95,145,118,141,206,153, 83, 5,175, 93,108, 97,189, 43,251,107, 51,192,246,162, 64,239,163,
-175, 73,145, 60,232,224,135, 42,235, 98,209, 35, 90, 67,163, 45,103,221, 17,173, 50,156,204, 78, 24,220, 64,163, 20,198, 52, 44,
-187,150,103,142, 59,218,185,161,183,146,165, 41, 16,247, 92, 74,148, 20, 52,178,176,222,165, 20,236, 86, 14, 23, 60,195,213,134,
-205,214, 49,120,199,214,121, 6,169, 25,141,197,156,156,225,108,139,154,117,228,166, 37,117, 22,165, 53,170, 83, 4,169, 42, 87,
- 2, 68, 46, 36, 89,109, 4,110, 12,229,222,153, 50, 41, 70,114,202, 40,169, 74,209,206, 16,146, 32, 2,161,252, 69, 66,206,132,
- 24,105, 85,203, 16, 35, 89,150,224, 18, 7,133,111, 21, 42,249, 55, 86,168, 61, 76, 5,180,114, 52, 76,253, 51,165,247, 73,103,
-162,194,235,218, 20,251,221,209,237, 17,150,237,118,191,246, 38,235, 87,106, 55, 62, 93,152, 51,133,148, 39, 42,193,120, 74, 43,
-204,106,210,204,213,200,214,184, 39,203, 77,232,231, 97,163,244,164,208,187,156, 28, 40,167, 53, 28,222, 3,193,127,188,153,186,
-168, 80,159, 85,213,160, 62, 35, 91,203,210, 22,155,193,148, 18,141,148,236,188,163,179, 45, 57, 7, 20,162, 24, 20,196,136, 20,
- 25,133,192,133,132,210, 26, 89, 18, 1,208, 82,145,149, 70,154, 14, 45, 21,194, 20,232, 93, 40, 81,185, 35, 69,170, 22, 98, 34,
-231, 2,153,198,156,241,187, 21,126,181, 34, 12,142,148, 2,140, 59,178, 20, 52, 66,213,247, 81,128, 44,198, 10, 8,139, 34,151,
- 46,159,140, 76, 25,169, 21, 49, 59,188, 80,197, 9, 79, 21,205, 37, 66, 16, 83, 36,231,204,214, 7,146,148,120, 41,201,209, 23,
-104, 44,135,167,151, 3,156,158,194,225,122, 8, 49, 30,118,233,106, 10, 54,168,238,117, 66, 92, 91,232, 62, 80,196, 15, 97,202,
-135,255, 51, 21,110, 55,250,154, 25,255,219,255,227,127,203,103,191,244, 67, 92,173, 71, 54,235,129,213,197,154,148, 5, 74, 42,
- 84,107,144, 82,240,202,157, 23,249,230,171,175,146,183,129,231,238,222, 45,145,186, 73,208, 26,195,209,204,160, 43,187,125,187,
-243,108,182, 35,187,109, 96,179,219,177, 93, 13,108,215, 35,227,206, 21,196, 71,102,194,224,153, 45,123,218,206,210,116, 37, 41,
- 74, 27, 69,215,106,150, 71, 29, 71,203,134,227,147,142,211,101, 87,235, 76, 70, 40, 65,219,232,107,216,207,206, 12,183,110,204,
-217,236, 28,141, 53,164, 24, 73, 89, 16,146, 39, 71,129, 79, 1,171,245,181,242, 65, 43, 69, 22, 1,173, 5,198, 42,114, 76,172,
- 55, 87,188,251,246, 61,190,249,173,111,241,246,189,123,228,112,194, 91,239,188,197,159,126,237,235,188,253,250, 57,175,223,119,
-108,178, 36,250,132,209, 2, 45, 4,179, 70,145,144,164, 44, 88,111,182, 40, 45,240, 94,208,205,122,238,223,187,143, 54, 6,101,
- 20,155,213,142,211,103,142,249,161, 31,253, 2,127,244,127,253, 43,246,246,177,178, 22,109,189,191,249,139,135,138,247,148, 8,
-246,253,236,210,101, 13,114,158, 12,105,186,166, 88,155,202, 50,234, 98, 57, 43,135,175,150, 48, 4,104,106,252,100,161, 32,215,
-206,190,126,142, 48,148,143,203, 31,115,246, 56, 17,133,166, 3, 46,231,247,118,237,239,167, 48,121, 95,248,253, 96, 46,254, 65,
-170,148,154, 33,129,109,144,207,222,166,187,115, 27,223, 26,154,231,239,194,209, 17,185,179,176, 92,148, 75, 75,219, 86, 8,190,
-224,218,109,163,184, 99, 13, 89,148,144,148,153,180,196,228,232,114,102,244, 35,223,121,103, 5,235, 45,172,214, 69,165, 50,214,
-174,157, 15,136, 59,158,183,112, 60, 3,173, 17, 89, 48, 95, 44, 48, 18,230,166,167, 51, 22,171, 91,250,166,101,222,180,156, 29,
-181, 52,109,153,165,207, 91, 93,117,233, 25, 35, 36,173, 46,170,141, 20, 34, 97,240,116, 22,214,219,200,102, 53,176, 14,130,181,
-208,140,237,130,173, 49,168,126, 78,104, 90,152,207, 8,214,208,245,229,188,110,122,139,208, 6,137, 2,161, 11, 74, 39, 36,126,
-140, 68, 23,145, 58, 17,171,127,134,172,218,251, 12,136, 84, 26,174,152,203, 94,156,124, 66,114,245, 24,145, 90,178,245, 14,159,
- 35, 57, 73, 86,222,145,195,193, 37,110, 74, 41,203, 83, 84,111,229,253,200,154,138, 54,249,146,200,122,145, 84, 21,154,207, 19,
-131, 93,149, 61,213, 53,251,172,245,201,106, 54,184, 66,138,147,169,102,213,223, 42,163, 14, 83, 59,125, 65,105,114, 69, 40,144,
-189,154, 52,241,182, 94, 48,235, 91, 55,233,231,159, 70, 19, 56,201, 74,165,126,176,210, 63,180, 94, 63,222, 76, 61,197,242, 64,
-250,190,108,192,166, 72,219,140,144,180, 66, 35,117, 33, 59,204,108, 91,152,199,128, 86,250,186,227,141,117,163,105, 33,200, 34,
- 35,181,166, 81,229,176,210, 82,161,108,131,208,117, 6, 83, 97,246,156, 33,107, 73, 16,133,185, 78,206, 36,191, 35, 58,135,173,
- 49,151, 54,130,202, 69, 83,169,100,137,122, 53,186, 41, 35, 19, 99,105,148,197, 42, 89,200, 24, 33, 34,201, 36, 37, 25,221,128,
-150,138,157, 47,238, 95, 69,108, 86, 72, 30, 84,205,186, 32,179,137,177,248,133, 79,190,240, 62,214,195, 85, 60, 26, 22,252, 94,
-100, 78,127, 80,183, 62,253,155, 83,161,158, 76, 60,168,112, 97,245,103,102,116, 15,126, 93,239,215,165,191,223,204,189,126,175,
-255,244,127,250,103,124,250,243,159, 96,189, 30, 73, 49,226,199,186, 17,115,198, 13,142,236, 51, 82,106,218,166,229,243,159,126,
-133, 23,158,123, 14, 66,145,192, 44, 22, 45,199, 39, 61,189, 53, 37,216,200, 71, 46, 86,158,213,214,115,181, 29,217,108, 11,219,
-118,216,248, 98,235, 43, 50, 74, 26,186,182, 65, 73,141,109, 53,243, 69,135,212, 69, 54, 54,235, 44,243, 70,179,104, 45,173,214,
- 88,163,144,162, 16,216,250,198, 96,132,160,107, 45, 93,163,177, 82, 18, 98, 98,183,246, 88, 93,180,180, 41, 70, 82,200, 37,164,
- 66, 89,150,139, 14, 55, 56,208,138, 93,220,210, 74,193, 56,236,248,235, 55,223,224, 27,175,189,137,115,130, 69,119, 74,202,146,
-174,189,205,167,190,248, 57,140,232,145, 33, 51,140, 27,190,246,221,111,242,187,127,242, 85,126,255,207,254,156,215,190,253, 6,
-139,155, 55,121,246,230,172,192,138, 62, 17,114, 96,240,137,243, 33,112,121,190, 41,132, 66,183, 37,230,178,158,118, 59,199,237,
- 23,111, 50, 34,248,238, 95,252,101, 41,228, 90, 87,139, 74, 14, 32,121,177, 55, 47,250,155,122, 77,136, 65,174,157,205,209,178,
-204, 43,115,101, 15, 55, 13,180,245, 18, 98,106, 71, 62,133, 8, 81,101, 94,162, 30,176, 57,215, 61,149,246,100,177,143,178,111,
- 30, 62,224,166, 78, 61, 61,162,160, 95,255, 61,249,232,207,251,190,204,119, 3,243, 99,110,188,242, 9,126,248,246, 29,190,253,
-181,191, 68,157, 29, 97,206,110,115, 98, 12, 27,219,151,238,124, 54, 47, 5,162,105,234,104, 66, 50,102,193, 12, 74,151,156, 18,
-131, 27,145, 49,114,127,183,225,254,118,203,187,111, 92,130, 91,151, 46, 48,184, 71,191,183,198, 22,248,184,235,160,179, 8,171,
-104,141,229, 70,183,224,164, 91,128, 16, 44,154,158,152, 50,243,217,156, 89,103, 48,189,229,120,102,174, 57,138,157, 81,104, 45,
-208, 82, 48,207,165, 46,249, 16, 89,173, 3,110, 72, 92, 37, 73,150,134,119,101,135, 71, 34,186, 35,180,106, 80,182,193,152, 6,
-219,245, 88,163,176,189, 98,244,133, 79, 33,148, 98, 76, 25,159, 5, 57, 39, 92,134,232,227, 53, 7, 69,146, 10, 89,174, 18, 34,
-179, 20, 72, 41,138, 71, 72, 44,235, 33,231, 72,111, 90, 20, 10,153, 18, 46,197,194,127, 9,129,148, 51,126,234,188, 75,128, 67,
- 69,125,234,154, 17,236,139,182,210,101, 77,181,213, 57,179,179,229,158, 28,235,154,149,170, 20,126,165, 10,107, 94,202, 2, 3,
- 52, 85,195,158, 37,184,109,121,198,119,110,208,156, 29,163,250,134, 72, 53,230, 26,134,253, 40,114, 28, 10,223, 44, 85, 19,175,
- 92,247,166,148,251, 11,166, 60,224,155, 60, 41,178,251,136, 46,253,227, 23,245,105,227,236,226,245, 77, 56, 91,195, 38, 68, 78,
-251, 89, 97,192, 43,137,150, 26,159, 3,173,178,236,130, 43,146, 77, 33,137,169, 20, 0, 45, 96,222, 90,178,200,104,101, 48,218,
-146, 84, 49,143,209,182, 33, 27,133, 20, 5, 34, 79, 90,144,124, 42,186,116, 9,195,232, 72, 34,209,110, 86,140,163,195, 8,129,
-161, 28,204,198, 40,230, 82,146,234,173, 75, 26, 75,175, 13, 66,168, 66, 48,205, 25,165, 37,129,196, 38, 4, 58,165,217,166, 29,
- 99, 40,183,185,109, 8,200, 20,113,201,177, 75,197,168, 38,196, 64,204,137,171,177,134, 11,140,190,220, 0,121,136, 96,118, 88,
-200, 31,158,121,124,148,228,166,199,133,225, 15,217,235,135,240,250,196, 70, 57,212,211, 78, 48,210,225, 60,253,240,224,123,224,
-123, 50,176,163, 0, 0, 32, 0, 73, 68, 65, 84,115,164,189,222, 83, 38,248,220, 23,249,103,255,253, 63,225,211,159,121,158,221,
- 24, 73, 49,177,219, 56,164,148,104,173, 8, 46,224, 6,143,214,154,228, 19, 90, 27,218,166,132,237,100, 47, 88, 44, 91,238,156,
-206, 57,154,183,180, 86,147, 82,102,179,173, 5,125, 28,217,237, 60,209, 21,166,188,146, 18,221, 72,154,214,150,204,230,222,114,
-122, 54,199, 52,134,174,211,116,173, 98,217, 55,180, 70, 23,251, 86,171, 80,170,216, 65, 42, 41, 74,144,146, 16, 52, 74,161,180,
-160,109,202,218, 72,128,214,138,221,232,203,104, 50,102, 98,246,164,144,241, 62,150, 28,247, 52,178,176, 13,243,126,198,253,213,
-134,251,235,129,147,238, 22,183, 78,239,114, 60, 63, 99, 27, 50,175,159,191,198,215,223,254,255,184,120,253, 93,222,125,247, 91,
- 52,218,224,162,103,227,182,133,212,233, 19,111, 93,173,184,247,250,134,175,191, 49,114, 30,203,220,178,213,162,192,156, 72, 98,
- 18,196, 44,216, 92, 92,177,186, 56, 39,231,116,205,156,127,229, 51, 47,243,175,254,197,239,213, 53, 38,139,215,192,195,228,185,
-148,254,102,139,186,148, 92, 7, 14, 40,138, 76,200,214, 20, 55,226, 30,134, 55,166,116,234,145,194, 70, 86,213,152,101,242,224,
- 14,110,111,179, 58,249, 55,124, 20,168,242,208,233,112, 26, 33, 61, 60, 83,127,148, 3,226, 7, 21,246,135, 47, 2,147,243, 91,
-215,193,236, 4, 94,121,158,159,121,238,121,250,254, 6,183, 94,254, 52,179,179, 51,190,112,242, 28,255, 38, 9,100, 63, 47, 35,
- 60,211, 66,183, 4,219,178,180, 13,163,105,120, 70, 41,206,133,228,118,142,136,228,233, 1,233, 70, 24, 29,127,248,237,243, 82,
-208,183, 97, 63, 51,127,228, 25, 44, 96, 62, 43,207, 91, 73,116,215,209, 41, 77,171, 13,141,180,204,236, 2,165, 36, 77,219, 50,
-239,123,148, 81,180,141,166,239, 53, 86, 23,189,122, 57, 11, 4,115, 9,207, 14,130,185,147,156,135,192,189,181,227,124,204,140,
- 89,178,217, 70, 92,130, 17,129,145, 2,221, 25,154,121,135, 54,154,153, 81, 72, 83,116,226,178,178,177, 99, 76, 24,163,113, 57,
- 19, 82, 38,250,226,200, 72,206,252,255,196,189,105,143,100, 89,122,223,247, 59,219,221, 34, 34, 35,183, 90,123,157,238,153,238,
-153,158,149,228,144,179,144,166,104,120,100,137,180, 32,201,162, 12,193,134, 97, 24,134, 13, 88,111,253, 9,244, 73,252,206, 48,
-224, 55,130, 0, 3,150, 44,195, 16, 8,129, 34, 9,209,195,197,163, 25,206,210, 51,189, 86, 87, 85, 86, 85,102, 70,196, 93,206,
-234, 23,231,220,140,172,154,154,149, 51,102, 2,133,206,174,206,234,138,136,123,239,121,158,231,255,252,151,228, 35, 9, 89, 12,
-110, 60, 41, 41,164,150, 8,161, 80, 36, 98,146,196, 20,209, 82,150, 59, 39,226,136,136, 40,217, 20, 82,154, 75,146, 84,242, 24,
- 50, 99,189, 92,239,144,178, 27,206,140, 28,201,217,174,178,236,186, 67, 89,205, 76,229, 62,104,171,178, 35,175,138, 29,111,217,
-191, 27, 85,238, 99, 83, 28,232,138,163, 92,101, 8, 77, 69, 24,166, 76, 92,156,166,108,208,100, 10,212, 95,215,121,143,222,180,
- 89,233,160, 18, 52,203,146, 98, 90,216,244,198,228, 95, 84,217,159,225,106,199,254, 51,162,107, 79,153, 64,205, 60,167, 37,167,
-191,245, 25,250,119,238,253,156, 69, 61,148,142,218,134, 43,198,173,234, 26, 98,140,172,234, 38,239, 37, 83, 96, 97, 58,156,183,
-153, 9, 95,170,137, 86, 57,142, 47, 23,118,141,198,160,181, 34,206,246,130,166, 34,136, 12,125,250,148,167,233,148, 98,182,116,
- 77, 96,221,148,189,159, 99, 68, 90, 71,155, 66,209, 3, 43,144,217, 0, 36, 20,153, 81, 43, 21,149,169,152,164,192,200, 60,249,
- 67, 98, 12, 62,243, 96,100,162,119, 3, 83, 76,196, 24,153, 98, 32,132,132,141,150, 62, 70, 76,138, 76,209, 51,134,192, 16, 2,
-202, 72,236, 80,144,138, 84,178,117, 67,202,123,173,217, 60,227,122,227,243, 60,210,206,143, 43,236,241,175, 49, 49,137,178,195,
-153, 95,135,247, 69,255,250,188,235, 23,159, 62,208,174, 31,124,115,131,162,203,205, 92,138,124,247, 27,191,206, 63,253,253,223,
-229,213, 87,110,176,157, 44,206,102, 66,141,181, 33,155,196,184,128, 27, 61,206,122,188,139,153,232, 41, 43,110,223, 62, 98,217,
-214,220, 57, 57,224, 83, 47, 31,113,247,176, 99,213, 86, 24, 35,241, 46,107,206,123,231,217,246, 19,211,224, 8, 4,170, 90,114,
-124,208,113,120,188,100,213, 54,180,139,154,170,169, 88, 46, 27,218, 54,103,149, 47,154,108, 65, 89, 75, 73, 91,101, 98,150, 20,
-100,199, 58,178, 44,199,199,116,245,207,148, 18, 74, 73, 92,202,122,220, 36, 4, 55,110, 46,104,186,134, 36, 53,253, 48,224,220,
-136,212,146,187,119, 94,198,232, 21, 62,118,172,218, 99, 22,102,137,199,210, 79,151,188,247,248, 61,254,223,143,126,192,187,247,
- 31,209, 15, 35,247,238,221,227,131,113,203, 73, 91,113,105,123, 98,176, 24, 41,176, 62,112,208,180, 28, 47,150,132,221,200,238,
-177,231,157,119, 31,240,120, 28,240, 94,224, 37, 56, 23, 48, 90,242,240,163,135, 36,161,184,127,118,159,182,174,112,253, 68,187,
-236, 88,159, 28,243,221,111,253,160,200,111, 74,150,121,186,122,170, 51,145,231,111,226,235, 11,159,132,143,206,246, 89,213, 93,
- 57,184,116,225, 91,164,184, 55,174,145,101,234,105,230,103,164,202,174,134, 37,116,228,106, 29,180,219,100,114,211,245,103, 67,
- 21, 11, 86,165,139,135,118,120, 26,141,146,215,166, 21,249, 12,249,109, 46,242,215, 73,162,215, 81,172,231,173,170, 4,249,253,
-164,107, 13,133,169,242,158,188,238,224,228, 24, 78,143, 57, 61,121,129,170, 94,160,214, 71, 44,186, 53,178, 90, 50, 24,195, 74,
- 26, 30, 8, 9,205,138,165,174,248,120,189,224,139,221,146, 94,213,124,177,169, 9,186,230,213, 74,209,187,145,102,154, 16,253,
-200, 69, 63, 18,156,229,221,179,199,185,160,255,180,150,193, 85, 38, 41,179,168, 65,231,251,249,184,109, 57, 48, 45,135,221, 10,
-173, 53,181,106,105,154, 6,105, 26,132,145, 28, 29, 54,212, 38,123, 64, 84,149,196,250, 64, 83, 41, 54, 54,176, 35,112,223, 89,
- 30, 91, 71,232, 35,155, 33, 48,133,196,214,131,143,129,160, 52,149,150,212,117, 69, 85, 86, 83,149,206, 69, 84, 75,208, 85,222,
- 97, 71, 37, 81, 41, 18, 18,244, 54,159,179,169,164, 60, 75, 41,179,147,238, 24,144, 74, 35, 34, 8,153,175,107, 76, 16, 9,120,
- 60, 85,146,196, 96, 73, 34, 19,172, 31,185, 33,155, 28,134,148, 67,107, 36, 56,239,247, 92,142,124,216,228,243, 42,196, 61, 12,
- 62, 35, 90, 41,229, 34, 77,218,123, 31,204, 16,126, 73,176,203,135, 74, 93,172, 96,155,252,123,166,202,223,155, 18, 29,237, 3,
- 60,217,230,130,158,128,182,219, 19, 73,108,145,216,205, 8,147,174,243,253, 28,108, 81,166, 20,117,138, 44,197, 61,149,220,148,
-168,178,244, 45,253, 53,247,237,193,210, 47,187,172,144,224,231,141, 94,245, 62,239, 22,188,133,113, 36,132, 37, 65, 64,239, 28,
-139,170, 34,132,132, 19, 19, 66,234,171,152, 86, 23, 60,157,174,217, 57, 87,194, 95,242,244, 24, 72, 40, 41,137,192, 32, 2,141,
- 82, 76, 50, 91,181,202, 36,136, 66, 34, 69,200, 77,127, 83,227,167,128, 84,134,169,105, 88, 41,137, 68, 96,129, 6,129, 39, 17,
-241,212, 42,199, 52, 70, 60,141,212,108,253, 72, 74, 25,206,247, 5, 98,151, 82, 93,173,248, 34,137,232, 92,113,226,206,222,238,
- 54,134,210, 0, 10, 90, 45,217,217, 80,172, 93, 21, 76,133,120,209,212,121, 10,121, 38,132,226, 41,232,123, 46,164,115,218,217,
- 47,210,204,255,250, 62,252,122, 99,161,245, 62,160, 0,160, 57,129,221,195,189,139,157, 46,176,174, 44, 7,153,245, 79,191,174,
- 57, 20,102,178,168, 47,126,145,255,241, 31,255, 46,183,110, 29,211, 91,135, 31, 61,206, 39,198,126,194,109, 39,188,145, 89, 87,
-238, 28,166,174,233,218,142,174,109,185,113,178,230,112,209,112,220, 54, 28, 30,212, 84,198,224, 17,232, 4, 33,228, 6,175,173,
- 53,245,168, 88, 24, 67,106, 34, 82, 24,186, 78,113,184,108, 56,232, 42,170, 42,223, 23,143,183, 83, 38,186, 10,129, 79, 9, 37,
-196, 21,225, 73, 37, 24, 93,196,151, 38, 42,164,132, 15, 57,128, 66,144,208, 10, 34, 57, 37,106, 33, 12, 34,102, 78, 7, 73,178,
- 88,100,120,116,220, 14,128,160, 94,156,114,121, 25,248,193,135,223,195, 37, 79,171, 12, 67,152, 24,253,196,197, 48, 50, 78,150,
-139,209, 33,107,145,107,234,144, 96, 51,240,199, 37,142,164,171, 37,175, 30, 30,210,153,200,163,161,231,160,223,112, 99,169,177,
-253,134, 16, 3, 15, 63,122,159,147,211,155, 44,215, 45, 71, 39, 43,142,150, 53,175,189,241, 49,254,236, 79,191,206,217,118,160,
- 86,231,172,143, 15,120,116,239, 33, 47,188,246, 42, 44, 86,215,238,169, 6,252,144, 15, 16,255, 55,167,190,248,242,107,111,242,
- 71,147,135,239,191, 95,228, 69,213,158,112, 38,202,247,190,248,197,171,178, 95, 79,117, 46,186,253, 46, 79,188,233,218, 1,182,
-155,138,186, 34, 62, 69,144, 71,181, 80,207,200, 82,202,223,135,248,195, 58,243,164,159,150,246,120,255,252,103,172, 42,191,231,
-125,222,253,247,219, 60, 81,167,107,140,104,231,243,239, 25,153,247,169, 55,215,121, 71,174,117,126,214, 23,199,124,242,228, 22,
-232, 5, 13,138,164, 36, 71,109, 67,116,142,229,201, 9, 63,216,238,192, 77,156, 52, 29,199, 4, 30,122,248,213,229,154, 71,231,
-231,188,209, 5,166,237, 19,190,149, 22,156,125,244, 4, 30,220,135,116, 93, 30,251, 51,156, 9,215, 87, 14,149,161,110,115,147,
- 84,107,197,110, 26,169, 85,139,234,114, 51, 99, 67,160,211, 13,227, 20,193, 68, 78, 90,201,118, 8, 44, 59,205,217,214, 34, 36,
-156, 91,143,177,158,225,194, 33, 82, 34,197,136,221,141,224, 5, 3,130, 86, 37,164, 49,180, 2,164, 20,200, 20,144, 8,132,203,
-164, 82, 69, 64, 36,129, 10,185,216,134,148,168, 67,246,114, 8, 33,103,174, 11,153, 16, 73, 99,234,116, 69,171,240,110,142,185,
- 78,153,199, 18, 21, 99, 24, 73, 72, 70, 63,224, 98, 66,167,196, 24, 2, 74, 64,171, 5, 27, 79,153,112,109,201, 97,151,215,140,
-104, 10, 33, 83,139,189, 98,231,202,122, 88,194, 82, 61, 93,195, 18, 48, 21,109,250, 52, 27, 21,201,226,156, 90,238, 23, 89, 84,
- 28,222,103,196,102,188, 78,208, 44, 50,205,249,114,212, 42,163, 83, 83,202,223, 55,203,226,102,167,247,168,130, 20, 16,171, 60,
- 20,155,194, 9,208, 99,110, 22,254, 58,233,109,223,248,222, 95, 3,126,191,186,177, 34, 56,145, 59,117,109,168,171, 42, 59,168,
-198, 72, 91, 25, 34,146, 74,202,236,170, 21, 34,181,174,112,193,210,152, 6, 37, 36,149,210, 24,153, 77,238, 43, 93,161,234,138,
-170,174, 89, 29,174,243,218,195, 39, 98, 97, 54,134,152,163, 6,133,200,123, 32, 59,246, 28,232, 12,185, 10, 37,105,141, 38,200,
-108, 21,216,153,154,136, 32,170,132, 84, 21, 3,145,182,105,114, 20, 38, 17, 97, 20, 46,192, 24, 29,117,221,112, 49, 58,108, 74,
-136, 18,152,224,163, 39, 10,193, 24, 61, 62, 5, 42, 45, 56,159, 60,131,143, 25, 90,179,182, 72, 24, 10, 67, 86,215,249,230, 8,
-101, 92, 84,197,107, 93,170, 61, 17, 67,166,253, 77, 38,197, 47,198,126,243, 58, 35,247,106,234, 41, 30,217,215, 39, 16, 31,224,
-181,151,242,129,187,219,236,225,160, 84, 8,116,149,218, 19,152,230, 73,198, 21, 93,250, 39, 63,203,255,244,223,252,125,222,120,
-229, 22,219,201,114,254,100,199,102, 51,144, 98, 66, 8,129,115,142,177,183,217,117,202, 71,218,166,227,244,198, 33, 55,142, 15,
-184,181, 94,210, 40,157,225,240, 36, 24, 93, 98,103, 35,151,147,103,231, 60,155,237,196,102,176,236,172, 99,176,158,182, 82, 44,
- 91, 67,215, 24, 26,147,239,157, 32, 4,181,145,116,181, 46,171, 89, 73,165, 36, 54,228,132,190,209, 7, 6, 31,136, 41, 49,249,
-128, 43,228,153, 16, 83,118, 7,140,241, 74, 7, 79,177,165,204,134, 67,130, 85,173,185,232, 39, 36,112,180,108,232, 7,199,135,
-247,222,225,223,189,243, 29,222,254,206, 7,220,127,231, 17, 31,220, 59,227,254, 59,143,120,244,131, 75,118,214,194,162,202, 16,
-163,214,220, 94,118,156,222, 58, 64,174, 27,218,198,208,214, 13,151, 59,203,165,155,232, 83,226,114,178, 36, 2,147, 79, 52,166,
-102,189, 62,101,177, 56, 98,185, 62,166, 58, 48,216,205,150,203,161,231,248,112,193,119,223,126,143,203,113,224,201, 56,176, 50,
- 21, 70,107,218,174, 69, 25,248,224,131,179, 61,180, 28, 67,201,154,254,155,131,221,223,255,230, 95,101, 8, 82, 74,168,219, 92,
- 89,175,152,227, 51,251,188,192,163,243,228,110,195,222,174,184,183, 25,134,119,236, 11, 90,138, 79,195,144, 66, 67, 91,158,157,
-217,172,230, 89,119,184,121, 26,191,126, 30, 81,154, 3,127,173,248, 95, 73,151,100, 49, 39,161, 48,239,175,165,104,205,251,233,
-122,149, 15,244,155,167,121,242, 58, 88,102, 79,246,118,149, 27,172,170,229,172, 90,240,198,106, 9, 70,163,144, 44, 5,168,174,
-163, 50,146,203, 32,120,189,169,121,185,170,145,149,161,209,146, 49,192,205,197, 18, 45, 35, 74,213,220,172, 4,223,189,236,225,
-252, 73,246,188,248, 73,123,252,231,125,117,217,205,147, 85, 11, 50,187, 23,118,218,100,166,123,179, 96,217,174, 80, 73, 97,234,
- 26, 83,213,200, 90, 99,165, 36, 10,208,181, 34,144, 56, 27, 61,187,152,120,188,177, 52, 41,209,111, 39,130, 13, 92,156, 79,108,
-138,137,147, 19, 49,135,170, 72, 56,212, 25,186, 87,228,218,134,183,172, 42,197,146,132,140,129,198, 36, 42,153, 57, 77,102, 12,
- 44,140,192, 91,207,218, 72,140,204,126,244, 46, 38, 82,113,105, 75, 82, 96, 93, 86,184,120,103,145,210, 96,157,103, 8, 14, 65,
-192, 71, 65,239, 7,124,153,166, 67, 74,140, 49,146, 82, 96,154,121, 65, 41,238, 67, 88,162,216,187, 18,218,130,166, 94, 31,172,
-164,200,133, 54,201, 61, 50, 35,196, 30, 66,215,229, 92, 60, 92,228, 34,188, 94,228,169,186, 42, 1, 71, 77,125,205, 57, 80, 21,
-179,174,148,163,185, 21,249,254, 81,229, 44,174,212,254, 60,158, 37,117,179,151, 68, 44, 36,202,170,202,175,111,190,150,166,161,
-200,180,184, 10,181,255,105,214,182,207,221,228,206,190,180, 63,235,244,232,201,147,235,110,128,101,203,229, 56,209, 30, 24, 42,
-173,242,123,149,121, 63,168, 0,173,178, 25,141, 86, 57,212, 66,154, 12,135, 68, 45, 89, 84, 13,222, 7, 24, 28, 71,235, 99, 98,
- 76,180,117,205,214, 57, 68, 76,184,204,130, 64,106,133, 74, 16,123,203,186,233, 16,222, 33,149,166,149,217,112,163,142,142, 24,
-115, 39, 86,215,154,201, 58, 60,176,208, 21,131,155, 64,231,189,102,239, 61, 19,160,117, 69, 31, 28,117,101,114,224,142,130,138,
-132, 77, 33,195, 59, 17,140, 20,220,223, 77, 88,145, 88, 24,197,165,115,249,144,153,161,207,182,202,147,122,219,230,110,203,150,
-174,173,160, 19,121,210,136, 57,179,215,164,189, 46,242, 23, 57,173,135, 31,227,152, 53,119,126,223,252, 22,212, 39,251,191, 55,
- 20,226, 82,163,242,158, 73,213, 48,110,246,211, 79, 57, 52,255,251,255,252,107,124,226,213,219,124,244,232,156,243, 39, 3,227,
-182,207,131,208,177,161, 63,223, 33,165,202, 82, 63, 64,169, 26,169, 53, 70, 27,214,109,131,136, 2, 76,158, 94,165,132,193,123,
- 70,159, 3, 93,166, 41,224,188,203, 73,107, 62,178,106, 20,181,150, 24,149, 53,232,181,150, 4,159,211,247,124, 72, 87,207,164,
-245, 1,169,100,182,246, 77, 17,231,178,193,140, 81,130, 90,102,235,225,193,103, 21,195,186, 49, 28,215,154, 39,222,161,162, 34,
-164, 64,165, 20, 19, 2, 37, 35, 86, 36,162, 11,124,244,254, 19,222,122,233, 6,127,231, 87, 63,206, 7,175,221,225,243, 79,182,
-108,207, 30,115,113,255, 62,255,230,222, 67,238, 95,236, 56, 62, 88,178,179, 83, 38,118, 93,244, 88,229,168, 94, 61,226,245,211,
- 23, 0,201,232,122,142,154, 53,143,250,115,222,125,242, 17, 99,244,220, 89, 31,113,227,224,148, 23,143, 95,193, 52, 10,161, 36,
- 93,183,128,148,208,169,195,138,158, 39, 31,124,200, 52, 90, 72,146,117,211,241,157, 71, 15,217,244, 59,186,229,130,113, 24,120,
-235,205,143,243,199,127,244,151,133,195, 49, 75,169,228, 47, 75,163,246,156, 7, 92, 63,127,130,156,119,132,215,115,170,159, 82,
-200,148,189,162,223,150,201,153, 12, 47, 87,250, 26, 23, 32,238, 51,218,159,125, 22, 26,253,244, 68, 42,126, 12, 74,117,253,229,
- 94,127,173,243,189,174,100,137,227,140,251, 2,110,231,169,188, 20,253,102,193,167, 94, 57,229,155,125,226,173,227, 37,255, 97,
-112,249, 16,215, 69,117, 80,215,249,185,111, 50,114,178,113,150,163,102,149,225,220,174,206,219,200, 36,249,204, 97, 71,140,137,
-206,123,238,133,196, 75, 82,178,213,146,190,223,225,245, 1, 55, 87, 59, 52, 1,150, 7,112,120, 10, 15,166, 61, 82,240,211,126,
-205, 70, 61,199,213,158,176, 15,180, 85, 77,165,178,106, 8, 33, 17,117, 13, 70,147, 42, 73, 31, 5,210, 38, 38, 13,187,173, 67,
- 40,168, 98, 34,248, 64, 27, 2,143,135, 68,178, 30,119, 49, 50, 77, 14,225, 34,209, 7,164, 15,164, 41,178, 90,106, 84, 72, 24,
-160, 85, 18,182, 30,161, 36, 85, 8,212, 74,113,128,160,237, 3,203,166,195, 74,129,104,243, 94, 60, 44, 20,151, 2, 6,159,152,
- 72,104,163,216,141, 57,231, 67, 38,143,170, 27,252,118, 3, 66, 50,216,204,169, 48,218,144,130,163,213, 57,207,131,104,233, 84,
- 94, 3,100, 87, 76,168,140,193,150,128,159, 43, 25, 89, 44,126,240,243,122,212,152,162, 8, 33,239,219,103, 7,195,186,228, 96,
- 84,134, 43, 59, 87, 91,206,194,121,181, 97,212,158, 24,185,217,237, 99,136,107,179, 71,117,148,134,118,158,208,219,114,127,149,
-123,202,135,125,202,219,108,136, 51, 27,210, 44,154,253,128,215,150,149,213,193, 34,251,159,136,226, 55,111,251, 34, 1,245,215,
-182, 74,254,167, 6,115, 20,159,248,141,127,134,110,138,199,240,207,120,131, 93,193, 27, 2,140, 97, 20,130,163, 98, 25, 27, 82,
-162,171,187, 76, 52,148, 25,182, 1,137, 81, 6,231, 45,139,170,197,152, 10,239, 29, 74,107,170,170, 66, 42,153,173, 61, 71,143,
-119,129,152, 66,134,232,189,205,126, 3,198, 92, 73,213, 4,130, 78,105, 84,165,104,171,154, 88,188,182,149,202,190,193, 90, 41,
-122, 60,190, 50, 56, 41,136, 82,224,203,244, 23,165,194,133, 84, 10,132,194,147, 24, 98, 68, 42, 65, 64, 49, 5, 71, 20, 96, 99,
-196,123, 79, 4, 46,103, 59, 65, 55,199,244, 5, 24,124, 62,128, 76, 73, 65,211,114,207,190,212,213, 85,224, 12, 34,128,207,121,
-200, 25,134,249, 5,234,220,159,149,160, 93,119,154,131,124,160,165,196,242,139,159,226,205, 79,127,146, 7,223,127,167, 4,107,
- 20,214, 39,100,233, 76,244,229,192,200, 13,203, 87,255,209,239,241,197,175,124,150, 39, 23, 59,206, 30, 92, 48,141, 14, 33, 36,
-139,163, 37, 82,192, 56, 58,148, 84,153,132, 40, 52,141,233, 88, 45, 23,220, 56, 92,177, 48, 6, 93, 73, 42, 45,179,172,176, 20,
-228,201,122, 38,231,121,120, 57, 48, 12,150,144, 34, 93,173, 56, 57,104, 56, 89,214,116,149,166,174,179,129,139, 72, 96, 83, 68,
-149,196,189, 90, 41, 92,202, 69, 62,165,132,143,145,169,172, 2,188, 15,153,171, 17, 2, 75,149, 77, 53,106, 9, 71,181, 64, 37,
- 65, 91,107,140, 82, 28, 47,170,204, 50,247,217,184,232,171,119,143,185,191,245,124,251,189, 75,234,165,230,159,252,202, 43,188,
-113, 99,141, 93,116,220,121,241, 5,110,117,135,252,173, 79,189,206, 73, 85,115,115,209,241,202,225, 1,111,223,127, 12,135, 13,
- 55, 15, 14, 89, 54, 71,212,213,146,179,254, 12,235, 39,142, 22,167, 28,117, 71, 88, 59, 32,180,196,166,192,163,221, 37,253,180,
-165, 51,154, 16, 18,170,170,105, 79,142, 88,159,172,121,244,209,123,220,127,248,144,179,237, 37,141, 82,216,232, 57,219,141, 28,
-183, 53,218,212,172, 78,143, 56,239, 39, 30,199, 2,225, 45,234, 60, 57,110,182,240,242,139,121,215,187,219,254,116,132,178, 89,
-226,248, 60,255,105, 93, 12, 83, 84, 93, 10,118,169, 20, 17,126,200,217,238,106,197, 83,149,123, 59, 93, 13,231, 87,171, 32, 81,
-216,193,241,218, 58, 71,183, 69,195, 92, 98,140, 99, 40,207,197,143, 32,179, 25, 83,140, 61,194, 62, 6,152,244,252, 41,253, 89,
- 7,184,249, 25, 48,229, 92,155, 9,125,130, 12,115,170, 98,164, 21,129,213, 33,191,243,137,187,208, 45,248,212,233, 1,163, 50,
-124,108,125,204, 3, 93, 19, 40, 36, 40, 53, 59,226,105,106,165,184, 45, 13,171,186,197,106, 77, 40,159,109, 15, 8, 31,185,211,
- 42, 30, 76,129, 35,165,121,140,228, 52, 70, 70,173, 57,145,130, 71,187,137,202, 40,190,179,221, 16,182, 27,112,187, 44, 95,155,
-157, 27,137, 63,217, 29, 80,138,252,218,219,114,173,180,166,174, 52, 71, 85,203,141,118, 77, 83,119,232,182, 35,233,138,164,103,
- 99, 26,137,175, 52, 91, 31, 25,109, 98, 40,124,150,201, 5,122, 23,176,189,195, 59,207,110,211, 51,238,118,216, 97,196, 13, 3,
- 79, 54, 23,248, 48,176, 10,129, 54,122, 26,111,105,132,162,149,130, 54, 37,148, 11,168, 16, 80,253,150,195, 32,104,156,227, 80,
- 36, 78,132,164, 78,176,144,146,227,153,188, 22, 18,163,205, 38,100, 81,130, 39, 27,205, 88,114, 38, 67,116, 83, 1, 99, 2,181,
-132,173,179,212, 90,161, 99, 65, 85,147, 96, 91, 84, 34, 50, 37,166, 48,171, 38,202,125,161,138,124,208,198,124, 47,135, 82,228,
-141,218,123,186,171, 98, 35,107,202,218,104,110, 78,187, 54,159,233,203, 54, 23, 86, 93, 96,117,235, 11,217,173,144,186, 42,185,
-135,252, 83,122, 70,217, 81, 10,249,220, 44,198,107,164,198,114, 6,102,120,158,125,112,207, 12,205,147,114, 3,217, 85, 5, 61,
- 48, 37,168,166,202,182,236,198,228, 65,108,158,226,141,250,177,104,175,166, 42,111,206,245,249, 65,252, 89,119,235,253,148,223,
-100,183, 32,180,145, 39, 67,207,170,110, 88,181, 11,118,211, 68,103, 42, 98, 20,104,165, 8,201,227,130,167, 53, 13,162,216, 8,
-106,221, 20, 94, 86, 96,219,111,113, 5, 58, 75, 50, 75, 96, 4, 30, 97, 76,238, 64, 67, 68,104, 67,136, 17, 45, 50, 44, 34,200,
- 72,158,150, 58, 55, 19, 37, 3,120, 34, 81, 91,195, 16, 29,178,173,137,147, 39,146, 47,104, 26, 29,168, 72,136, 57, 64, 64,138,
- 28, 3, 58,216, 17, 85, 12, 27,130, 29,242,231,111, 42,198,105,204, 55,198,124, 65,231, 32,138,142,253,174,164, 41, 83, 59,177,
-200, 27,124,177, 19, 28,179,204, 69,216,125,135,104, 13,248,205, 47,103,224,242,215,118,235,222, 23,147, 5,205,246,235,127,193,
- 95,118,119,246, 41,113,179,127, 65,152,181,190,236,157,242, 62,253, 43,124,249,171, 95,100,234, 29,231, 23, 59,236,224,233, 86,
- 29,235,227, 5,187,157,205, 58,236,170,152, 5,249, 72,219,180, 28,173, 87, 88,155,216, 92, 58, 90, 93,161,141,206,241,182, 33,
- 91, 75,246, 54, 50,249,136,240, 41,155,212,233,226, 52, 72, 34,250,136,151, 34, 39, 74,185, 12,143,139,226,167,158, 27, 68,152,
- 98,134,211,189, 15, 76, 33,160,129,187, 11,195,214,121,108, 36,235,210,133,160,174, 36,166, 16, 39,183, 73, 82,213,249,129, 90,
- 86,186,168, 51, 20, 42,229,176, 8, 93, 43,190,252,214, 93, 14,239, 58,132,155,248,151,223,251,144, 79,158, 30,178,104, 43,222,
-126,239, 33, 7,171,142, 91,199, 45,159,251,204,139,124,233,238, 17, 95,127,255, 17, 31,127,245, 14,127,240,141,111,211, 85,138,
-255,240,240,109,110,117,135,108,118,231,180,139, 53,141,214, 28,180, 43,130,219,240,253,199,247,248,246,238, 17,156,245, 48,129,
-124,105,205,155,199, 7,188,122,114,151,203,199,231,220,188,123,139,110,125,155, 15,238,127,157,247, 31,111,121, 18, 2, 71,141,
-225,184,209,188,254,202, 43,208, 86,188,124,231,136,255,234,239,253,109,198,205, 84,164,179, 9,239, 44,214, 58,126,243,197, 19,
-222,221,142,220,187,127,198, 63,255,147, 63,229,251,127,242, 39,207,191, 31,230,201,126,158, 96,174,166, 61,251,244,228, 29,138,
- 51, 87, 20,121, 79, 45, 96,191, 64,252, 81, 13,165,223, 67,153,243,200,152,138, 53,177, 42, 15,230,172,170,104,155, 61, 68, 63,
-142,123, 39, 48, 51, 51,233,175,161, 87,222,231,226, 43,202, 68,227,226, 30, 77,212,250,153, 41,253, 57, 19,140, 47,137,130,161,
-200,157,204,140,104, 85, 64,137,198,140, 64,183,162, 90, 47,104,215,199, 60, 30, 29,147, 94,209,170,136, 87, 45, 7,106,226,108,
-102, 67,199, 0,228,102,224,165,234,152,191, 36,241,149,177,199, 87, 29, 15,189,231, 70,157, 21, 54, 46, 6,118,219, 68,155, 18,
- 46, 4,150, 62,112, 33, 19, 77,128,247,135,129, 59,109,199,159, 61, 60,195,234,186,228, 41, 52,192,112,109,152,210,123, 53, 65,
-224, 71, 35, 37, 77,243, 84, 35,181,214, 53,175, 44,142, 48, 90,211, 45, 14, 80,166,193, 10,137, 23,217, 37, 81,135,128,244,158,
-158, 60, 45,214,129,108,186,148, 34,135, 33, 50, 4,136,214,147,236, 68,231, 61,151,155, 39,108,135,145,139, 96, 57, 89, 44, 48,
- 65, 98,162, 64, 43,131,242, 19, 76,145, 74,107,100, 74,172, 72, 28,168,154, 62, 76,220,162,166, 9,128,205, 17,184, 49, 36,182,
- 41,177, 6,188,148, 96, 2,187, 36,216,246, 57,138,117, 8, 16,165,198,121,176, 73,224,163,133,152,216, 38, 79, 35, 4, 67,136,
- 57,249, 48, 72,182,113,226, 88, 73, 30, 90,143, 79,137,202, 40,172,191, 86,216, 92,200, 77,163, 36,103,116,212,234,202, 19, 38,
-251,245, 87,153,244,166,203,120,189,185,132,195,155, 87,217, 33,121,184,241,217, 44,104, 94,139, 84,165, 33, 30, 11,241,120,156,
-242,223,129,202, 30,244, 70,239,137,199,218,236, 25,237,115, 35, 60, 7, 21,213,106,111, 49, 27, 11,169,180,196,204, 94, 33, 71,
-162, 88, 5,207, 16,126,167, 11, 2, 81, 66,106,132, 4,209,149, 84, 66,191,143,149,157,182,207, 41,234,214,230, 23,253,243, 70,
-194, 57, 11, 99,121, 80,235,138,209, 84, 32, 39, 26,165,209,166, 33, 4, 79, 83, 53, 56,239,179,109, 32, 1, 37, 4,163,179, 44,
-171,150,132,199,135,188, 43, 7,152,220,136, 49, 6, 65, 78,231, 97, 4,161, 36,202,228,110, 44,196, 68,165, 13, 82, 72,100, 74,
- 40, 45,208, 90, 34,165, 36, 90, 15, 77,131,176,142,224, 70,236,178, 35, 13, 3,187,209, 83, 53, 21, 97,202, 19,172,212,154,224,
- 66,118, 52,210, 26, 3,244,222, 17,230,157,135,169,193,123, 42,149,120, 56,236, 8, 66,130, 42,222,189,182,192, 47, 90,238, 77,
-191, 98,249,240, 27,157,247,135, 49,236,147,116,150,139,124, 3,232, 42,103,241,206, 36,167,174,185,150,219,251, 75, 40,236,215,
- 39,150,249,151,125,239,233,131, 83,235, 98,252,241, 52,148,249, 15,127,227,147, 28, 28, 46, 24,122, 71, 93, 85,196, 54,210,173,
- 26,134, 41,224,125, 32,248,144,161,247, 49, 66,212,144, 36, 77, 91,209,181,154,227,101,199,201,186,161, 49, 10,173, 4,147,143,
- 87, 62, 17, 25,164, 72,156,116, 21, 73,102,139,212,186,146, 44,235,236,212, 85, 43,144, 73,226, 93,222,125, 87, 38,179, 94,173,
-207,170,133, 90,136,140,150, 26,133, 72,137, 86, 9,142, 27, 73, 31, 2, 62, 9,142, 69,162,145, 32,100,226, 50, 69, 84, 20, 60,
-216, 57, 22,149,166, 89, 42,166, 8, 55,187,134, 70, 43,238,157,247, 84,141,226, 83, 55,150,124,226,101, 69,171, 37,223, 61,219,
-240,199,223,127, 76,178,137,118,181,200,172,210,193,161,158,244,252,145, 11,156,172, 59,254,233,215,126,141,223,248,220, 39,248,
-171, 15, 30,241, 23,127,254,109, 8, 19,127,241,216, 49,212,142,239, 61,252, 30,173, 54, 60,222, 92,112, 62, 76,121,157,211, 25,
-208,129,248,120,195, 55, 31, 92,240,225, 75,151,124,246,228, 9, 97,218,112,252,194, 29, 62,241,218,167,249,236, 23, 86, 28, 30,
- 53,156, 30, 85,124,236,100,193,113,171,217,218, 64,140, 9,119, 43,175, 9, 14,154,236, 3,177, 48,146,202, 72,158, 12,158, 99,
- 27,249,170,150,252,195,127,240,219, 92,140,142, 15,207,123,254,234, 59, 31,242, 7,127,242,111,248,247,255,242, 15,114,241,126,
- 22,189,126, 14,124,159,102, 78,198, 83,147, 50,224,126, 68, 81, 9, 49,167,254,173, 86, 87,220,162,252,255,141,249,126,130,167,
- 7, 4,235,193,216,130, 94,197, 31,173, 6,185,190,150,250,113,164,161,167, 26,215, 31, 1, 81,207, 68,209,201,150,116,184, 17,
-148,205, 16,122, 4,150, 29, 7,183,143,249,220,237, 35, 30, 76,142,182, 91,208, 72,131,174, 26,188,183,188, 46, 91,162,115, 60,
- 22, 83,209, 53,231,117,195,247,118,143,249,220,193, 17, 31, 76, 19,157,245, 44,155,134,139,113, 96,170, 42, 86, 36,190,229, 19,
-159, 58, 88,224, 67,100,212,138,208,247,244, 68,110, 24,205,187,110,226, 65,242,185,104,175,186, 60, 8,236,158,121, 15,234,153,
-141,200,243,222,223,236, 3,128,130,186,227,184, 57, 0,109,232, 86, 39,128,200, 50, 49,165, 24,172,199, 8, 5,109,102,189,143,
-206,102,146,127, 37,137, 33,114, 75, 36,250, 0,149,245, 56,159,101,118,143,206,207,168,172,227,124,216,178, 86, 18,101, 61, 85,
- 91, 50,215,181, 66,248,136,209,138, 70,105, 90,165,104, 66, 64, 37,201, 43,170, 65,183, 6,233, 50, 87,105, 12,142, 74, 26,150,
- 17, 92,217,109, 75,165,176, 9, 14,170,192,189,201, 33,148,100,176, 16,181, 33, 22,215, 60, 27, 71, 26,169,241,193,211,136,188,
-130,105,141, 38, 18,217, 13,158,227, 74, 18,167,196,214, 63, 19,128,163, 75,246,192, 44,250,153,175,217,172,106,208, 6,213,182,
- 4, 1, 75,221,210,175,142,178,185,213,220,224,166,178, 90,165,104,202,103,253,183, 47, 67,161,243, 57,223,125,178,249,140,191,
- 90,125, 62,207,182, 53, 62,237,251, 62,133,189, 74,169, 42, 78,117,117,149,121, 78,211,144, 45,106,131,205,141, 71, 27, 96, 96,
-111, 83, 60,199,246,174,171,140,112,205,107,178,177,217,115, 82,226,248,148, 25,154, 34, 30,253, 51,250,221, 47,198, 33, 77, 43,
- 44,146,227,197, 65,102, 43,147,117,232, 62, 6,140, 52,132, 20,179,113,143,146,212, 82, 35,148, 68, 11,205,228, 28,198,232,108,
- 56, 83,236, 10, 19, 18,235,178, 23,180, 49,249,165, 6, 33,209, 74,162,234,138, 78, 41, 92,136,212,198, 16,139,255,182, 48, 21,
- 82, 10,122,159,205, 82,108, 49,213, 87,166,194, 21,178, 84, 10, 41,155, 36,248,108,136, 16, 98, 98, 76,146, 68,196, 9, 65, 31,
- 34,194, 71,156,144, 92,122,139, 22, 2, 23,115,246, 58,163, 43, 45,180,156,147, 72,242, 1, 35, 74,182,239, 12,181,248,180,135,
-229, 41, 36, 57, 81,172,183,116, 85, 76, 15,202, 69,255, 57,201, 16, 63, 53, 52,255,211,252,251, 51,191,255,247,254,219,127,130,
-146, 96, 71, 79, 8,185,184,132, 72,201,176,167,216,233, 10,130,135,186,174, 89,173,150,220, 61, 93,115,178,234, 88, 45, 43,150,
- 38,147,106,102,215, 80,151, 34, 33,164,156,167,160, 5,146, 68,163, 20,167,107,195,210,232, 28,211, 56,191,148,144, 81,155, 84,
-248, 47,214, 7,100,138,184,152,167,250,144, 2, 33,230, 73, 40,133,200, 50, 6,100, 8, 28,196, 68, 37,160, 18,146,147,148,232,
- 98,226, 72, 10,172,200, 83,129, 69, 48,110, 7, 78, 43,195,113, 83, 97, 18,124,235,108,199, 7,151, 35, 8,112, 8, 78, 15, 58,
- 94, 59, 93,242, 36, 8, 92, 72,220,190,181, 4, 35,233, 55, 35,110,116, 60,222, 78,216,201, 51, 38,137, 49,134, 95,255,252,107,
-188,122,186,166,221, 89,254,175,119, 63,228,163,221,150,147,174,166, 51,154, 86, 27, 86, 90,179, 37,145,106, 69,210, 18,121, 80,
-241,249,211, 99, 94,190,121,194,209,141, 5,191,255,183, 94,231, 31,125,233, 99,124,233,205,219,124,254,229, 99, 62,125,123,141,
- 20,130,203,193, 35, 82,126,126,124,136,236,172,103, 42,132, 64, 18,152, 74,177,168, 12,125, 16,124,112, 57,161, 82,228,229,211,
- 37, 95,184,125,196, 75,119, 14,249,237, 47,126,129,127,252,251,191,199, 43, 47,189,196, 31,254,209,159, 34,144,121,109, 37, 4,
- 34,101, 67,165,108, 2,146, 15, 32, 97, 52, 34,169,125,241, 87, 62, 79,217,209, 62,127,143, 61, 75, 38,173,203,208,160,119,123,
-226, 82, 74, 48,244,207, 88,179, 22, 34,102,112,123,185,219,117,107,215,249,240,251,113, 30,239,215,139,254,179, 43,166, 31,154,
-100,203,142, 83, 25, 56, 88,103,104,179,237,114,228,235,170,205, 59,204, 69, 67,234,106,110, 54, 13, 73,213,188,118,184, 38, 42,
- 56,210, 25, 53, 56,172, 5, 15,109,228, 50,133,189,115,153,200,222, 2, 70, 72, 14, 98,162, 14,142, 46, 5,206,172,101,185,125,
-140, 53, 21,223,159, 70,118, 33,114, 71, 73, 30,218,137, 35,165,232,157,167,247, 17, 29, 2,223, 24,167,124, 80,251, 30,118,187,
-167, 19, 21, 37,251, 40, 80,226, 15, 15, 90,179,202,230,228, 6,172, 22,176, 94,243,194,209, 13,126,227,246,203, 28, 44, 22, 24,
- 45,168,181,193,232, 26, 27, 50, 41, 46, 42, 69,240,137, 33, 6,162,148, 52, 82,208, 72,193, 97, 2, 23, 34,235,152,176,131,163,
- 38,176, 59,127,130,187,124,130,157, 70,150, 9,218,182,166,105, 90, 58, 93,161,149,196,196, 72, 83, 27,140,128,133,169,232,128,
-195,202,176,142, 9, 35, 5,173,148, 57, 72, 70, 10,234,226,190, 39,124,162, 49,138,160, 37, 23, 49,175, 52, 71,153,120,178, 29,
-121,224, 3, 59,239,144, 36,164, 80,104, 33,104,116, 3,228,193,109,240, 1, 93,144, 58, 45, 36, 33,228,231,160, 83,154,243, 16,
- 8,162, 64,234,161,228, 90, 36,153, 27, 37, 93,200,202,198,228,207,169, 93,242,202,250,152,151,186, 21, 47,214, 75, 94, 90, 30,
-176,144,134,186,233,184,156,173,101,227,108,141, 88,216,240,148, 51, 91, 42, 82,140,168, 36,114, 13,152,189,231, 93,185, 47,180,
-222,147,159, 37, 92,165, 13,134, 18, 24, 19,194,158, 61,175, 85, 70, 11, 40,171, 31, 63,149, 34, 31, 74,211, 88,254,124, 87, 21,
-223, 6,246, 49,217,161,188,174, 57, 77,179,170,246,178, 82,165,158,178, 83,254,249,217,239,207, 22,135,144,242, 94,185,210,236,
- 20,116,170,202,122,113, 93,229,240,148, 20,169, 10,116,110,148, 42,102, 5,142, 90,213, 72,149, 39,247,170, 64, 15, 33, 7, 40,
-227,124,204, 97, 72, 73,225,139,105, 71,221,154, 43,179,131, 99,173, 24, 10, 6, 85,155, 42,147,169, 82,190,105,119, 62, 32,203,
- 14, 61,197,204,160,244, 73, 16, 69, 42,103,135,196,249,128,149,121, 42,180, 41,225, 98, 96,112, 30, 75, 98,112, 19,125,132, 41,
- 58, 70,239, 50, 51, 49,206,123, 22,181,183,192,140,215,189,126,227,158,253,152,174, 77, 70, 90,150,255,158,246,123,179,217,210,
-112, 14,148,144,242,167,119,210,250, 37,126,125,236,111,255, 14, 95,254,245, 79, 51, 12,150,126,219, 19,124,196, 59, 79,211, 53,
- 76,253,196, 52, 58,166,222, 18, 92, 64,146,189, 5,106, 99, 16, 66,178, 90,213,172,155,153, 37, 43, 24,124, 36,146,153,234,110,
-138,217, 35, 71,230, 98,127,227,192,208, 26,141, 42,134, 44,145,108, 24,163, 77,182, 87,157, 51, 26,116, 10,248, 24,209, 50, 63,
- 15,243, 80, 24, 99, 36,185,192,165,143,120,149, 27,142,205,232, 80, 17, 22, 49, 81,249,192,165, 4, 87, 25,140, 81,168,199, 59,
-212,119, 30,243,238,195, 11, 76,163,185,209,182,180, 49,114,239,114,199,251,103, 61, 23, 86,178,168, 20,199,173,225,184, 51,220,
- 92,104,188,183, 28,117, 29,186,210,108,206, 7,198, 41,112,255,114,228,209,229,192, 43, 39, 75,188,245,124,250,227,183,248,237,
-207,189, 14, 23, 3,255,254,175, 62,100,125,208,177, 52, 11, 84,165,105,170,138, 86, 9, 94, 57, 92,242,214,221, 27,252,167, 95,
-120,139,255,242,119,191,196, 87,191,240, 26,159,249,248, 29,234, 90, 35,132,160, 15,217,239,122,235, 2, 79,118, 30,239, 35,141,
- 81, 28, 52,153, 65, 13,249, 51,234,173, 99,176,142, 16,242,120,172,132,100, 55, 57, 30,238,118,156,237, 34, 85,130,173,141, 56,
-239,185,123,208,242, 91,159,127,157,255,225,191,254, 7, 44,239,190,193,191,251,183,255,182, 16,126,179,212, 79, 22, 85,134,136,
- 69, 87, 94,210,165,196,204, 36,159,252, 15,155, 39, 92,215,125,167, 82,128, 6,151,155,214,113,147,121, 35,118,122,126,113, 14,
- 97, 95,208,231,137,230,138,157,156,246,190, 14, 63,201,231,253,199,253,204,156,123,208,212,124,246,213, 91,180,135, 29, 47,156,
- 46,233,186, 10, 86,203,172, 90,146,133,113,108, 12,193, 84, 44, 76,197,171,235, 5, 38, 2,133,215, 96, 68, 86,218,220,159, 70,
- 46,230,134,196,185, 2,197,143,172,220, 72, 28,123,130,221,226,135,115,154,221, 57,198, 91,222,187,120,200, 71,214,113, 87, 26,
-190, 49,140, 28, 33,121,111,178, 4,239,121, 24, 61,223, 26,122,108,178,121, 42,155,250,204,156, 62,223,101,244,110,126,255,243,
- 25, 18,158,137, 70,174,202,100,183, 62,134,163, 31,132,194,155, 0, 0, 32, 0, 73, 68, 65, 84, 53, 28,159, 34,143,110,240,169,
-197, 9, 55,186,138,155,221,146, 70, 85, 57,176, 76,230, 97,242,194,122,188,245, 68,153, 93, 50,149,128,133,128, 99,157, 67,173,
- 84,200, 94, 19,135, 93,102,162, 55, 49, 51,217, 23,193, 99,140,102,165, 27,142, 23, 11,144,146,101, 33,193, 42, 41,104, 85,141,
- 72, 80, 87,146, 42, 65,101, 20, 11,165,145, 90,228, 60, 5, 41, 48,117, 62,247,189, 82,140,165, 65,119, 74,176, 77,137,203,222,
- 51,197, 68,111, 45, 65,228,186,161, 5, 68, 12, 40,137,170,107, 66, 18, 40,213, 48,197, 64, 37, 5,131,115, 72,165,168,149,193,
- 11, 65, 91,213,212, 85,203, 40, 37,169,169,178,203,105, 93,103, 53,146, 49,176, 62,202,223,183, 75,100,187,226,173,122,193,186,
- 94,209,180, 29,219,144, 56,238, 58, 90, 33, 16, 73,112, 25, 10,242, 58,175, 52, 68, 78,118, 76, 49, 92, 5, 11, 45,116,150,194,
-202, 20, 73, 59,187, 63,136,230,251, 57,165,125,140, 43,169,144,250,124,174, 15, 59, 91, 92, 61,103,155,103, 81, 86, 87,133,141,
-111,228,222, 91,106,230,109, 85, 38, 31,128, 46,236,229,199, 74,229,123,165,106,242,179,217, 84, 25,161,240, 49, 63,123, 34,223,
- 51,191,152,162, 62,143, 88, 38, 91,243, 37, 32,181, 21, 62,164, 76,134,210, 85, 94,139, 5, 80, 74,224, 99, 68,146,168,171, 6,
- 31,236, 85,252,222,228,125,254, 12,133,192,249,156,195, 27, 72,216, 16,104,170, 66, 34,136, 10,211,106, 22, 8,208, 26,149, 18,
- 90,230,110, 41, 1, 21,130, 65,100, 73,205, 38,229, 41, 51, 10,153,181,232, 49,224, 93,204,156, 50, 37, 8, 62, 23,251, 33,120,
- 92,202,204,236, 24, 35, 99,132, 62,120,250, 24, 72,200,204,240, 14,190, 4, 8,148, 64, 27, 93,244,145,136,124, 97,230,216,200,
-196, 62,141, 71,138,167,243, 37,174, 23,247, 90,229,238,114,198,219,102, 59, 80, 37, 11, 73,162,252,172, 86,191, 56, 9,220, 79,
-241,245,123,127,231,107,220,122,241, 6,155,203,158,224, 34,218, 24,172,245, 52,139, 54, 91,194,198,136,148, 26,163,107, 86,171,
- 21, 74, 74,218,186, 97,189,236,184,115,210,178, 48, 38,135,163,196,196, 16, 34, 46,101,103,169,152, 50,193,173, 81,130,195,133,
-230,164, 53, 40,169,136, 66, 32,149, 40, 9,158,217,182,210, 40, 65,109, 4, 38, 69,142,141, 32,200,132, 8,137, 74, 68, 84, 12,
- 57,207, 33, 70,106,239,241,201,179,180,129, 42, 37, 86, 62,178,178,129,122, 10, 36, 45,216, 26,201,129, 79,172,133,196,104,193,
-163,221, 64,255,193, 5,239,221, 59,103,221, 26, 94, 92,118,124,108,189,160,157, 50, 81,208, 40,137,140, 5, 1,104, 20,214, 58,
- 46,118, 19, 39,109,205, 43, 71, 29,111,127,120,201,232, 2,219,205, 72,229, 28,255,201,167,238,242,189,139,158,155, 55,151,252,
-222,151,223,228,226,252,146,127,253,103,239,240,192, 79, 60,217,246,120,225,120,235,206, 11,124,254,179,111,242,213, 47,125,146,
- 47,127,238, 85, 78,215, 29, 66,230, 93,231,110,242, 92,236, 60,247, 46, 44,151, 59,203,131,139,137,243,222, 18, 98,160,149,176,
- 16, 2,227, 97, 59,121, 54,193,211, 79, 62,251,229, 91,207,163,221,196,102,240,172, 42, 73,140,145,135,155,129,179,222, 49, 89,
-135,179, 14,225, 60, 10,201,209,170,227, 51,175,223,229,229, 47,124,133,255,251,255,248,215, 57,175,161, 28, 44,210, 95,147,137,
- 69,143, 8,165,224, 56,255,163,221,144,174,242, 2,124, 46,252, 70,102, 8, 81,201, 61,153,237, 39, 17,110,175,249, 84, 92, 65,
-168,241,167, 40,234, 63,145,246,155,189,215,213,114,193,209, 65, 75,187,234,184,112, 9,173,107,182, 33, 97,141,202,197,113, 54,
-172,215,138,187, 77,197, 82, 27, 42,165, 56, 82,134,148, 34, 75, 89,241,176, 31, 80, 82,241,161,183,249,144,181, 3,244,151,240,
-248,156,203,243, 39, 12,110,100,229,123,118,195, 37, 38, 78,124,227,236, 35, 30,110,206, 73,211,192,125, 63,177, 19,130,247,188,
-231,108,220,113, 47, 10, 30, 57,139,157,118,197, 83, 98,200,126,226,219,146,190,214,247,123, 9,148, 81,121,106, 83, 69, 69, 80,
-155, 44,169,171, 91,184,125, 2,135, 43, 56, 92, 67,183, 34, 9,201,177, 50,124,108,181,200, 86,195, 82, 81, 25,147,215,137,214,
-211,187, 28,103,172,188,167, 22,146, 78, 42,150,149, 34,166, 68, 39, 18, 49,101,237,183, 77,145,198,123, 52,130,131, 4,147,115,
-172,148,230,176, 91, 16,165,164,107, 27, 84,101,168, 84, 38, 58,107,153,155,111, 33, 4,203,202,228,140,117,173,104,164, 70,182,
- 21,210, 40, 82, 37,241, 90, 19, 73,104, 33,184, 0, 54, 36,198, 20,185,191,205, 6, 95, 83,185,222, 14,149, 45, 99, 5, 4,109,
-202,252,148, 77,196,162,128,139, 24, 72, 66, 99,147, 66, 74, 69,212, 53,171,170,195, 55, 29, 72,141, 93, 28,146,154, 85, 38,149,
-181, 11, 88,173,203,212,190, 0,221,241,114,187,228,160,238,216,121,139, 87,154,133,214, 12, 49,224,131,167, 82,146,179,164,114,
- 79, 37,184, 82,103,164, 82,156, 59, 37,145,222, 49,140,142, 3, 2,227,197,112,141, 63,146,246, 5,125,230, 89,205, 77,239, 60,
-237, 79, 37, 5,212,239, 19, 8,111,221, 57, 96,183, 29,185, 50,194, 87, 50, 15,139,241, 90,252,175,187,214,252, 94, 95, 51, 24,
-189,207, 91,160,112, 96, 22, 93,177,204,205,218,251, 95, 92, 81,191,218,131,101, 61,168, 77,138,182,109,104,141, 97, 8,174,176,
-210,179, 49,136, 80, 57,116, 37, 38,143,245, 46,203, 39, 84,254,164,146,144,196,148, 99,247,108, 76,164, 36, 72, 82, 17, 98,202,
- 19,161, 84,116, 70,210, 8,129, 12, 1, 76,246,240,110,133, 32, 37,129, 18,137,209, 69,108,138, 36, 31,176,193,102,233, 84,200,
- 12, 76, 31, 2,155,209, 34,101, 78,104, 27,125,222, 51,217, 16, 17,161,192, 61,209, 35, 82,214,173,167,232,114,184,203,149,193,
-198,124, 65,253,222, 9,104,198,153, 99,186,182,159,190,214,149,137,107,197,125,142,168, 20,229,130,151,192,135,156,223, 91, 96,
-200,182, 45, 17,128, 41, 67, 53,146, 31,195,120, 44,196, 12,253,243, 64,248, 58,235,111, 77,115,229,189,253,181,255,226, 63, 67,
-104,201,246, 98,160,238, 26,148, 86, 8, 33,177,195,132,115, 33,239,193,155,134,227,163, 53, 70, 85,156, 28,175, 57, 62,104,185,
-113,220,114,212, 84,104,157,229, 44, 83,204,122,241,236,230, 38, 48,228,130,189,106, 53,141,201,112,116, 16, 18, 49,127,160, 69,
- 2, 74, 74,212, 2, 14, 4, 24, 18, 50, 9, 68, 8,136,224,145, 49,178,142,145,161, 36, 61,109,198,128, 72,145, 49, 6,156,207,
- 28,137,218,122, 6, 34,113, 81,243,242, 54,240,250, 31, 93,112,120,182, 99,167, 34, 27,231, 9, 49,114,107,107, 57,254,104,200,
- 65, 24,117, 69, 28, 29,195,251, 79,232, 14, 52, 71,171,134,203,126,100,107, 3, 90, 8, 30,109, 50, 83,255,243,183, 14,185, 85,
- 73,254,224,155,223, 39, 4,203,189,203, 29, 34, 73,150, 46,241,237,203,158,117, 91,241,198,199, 95,230,226,209, 5,183,151, 43,
-222,122,233, 22,191,249, 43,159,230, 63,254,205, 55,249,181, 55, 95,224,230,170,131, 36,152,166, 64, 63, 69,156, 13,140,147, 99,
-180,129, 20,178, 83,225, 16, 60,126,242, 56,235, 24,156, 37,216,128,247,158, 71,195,196,229,104, 11, 63, 33,225, 98,164,119,142,
- 77,111, 73, 2,148,150, 37,250,118, 71,163,225, 80, 42,154,224,233,148,194, 40,133,208,154,151,111,173,248,242,239,124,149,237,
-110,199, 15,190,247, 1,194,231, 92,172,235,155,244, 31,245,253,243, 21, 23,215, 38,240,103, 85, 24, 63, 81, 57,119, 45,128,229,
- 42,112, 35,253,252, 50,207,217,202,117,177,128,131, 37, 31,191,177, 36,162, 89, 87,154,182,170,232, 42, 73,139, 68,213,134,157,
-115,133,160,151,145, 49,175, 21,183,140,226, 86, 85, 51,248,145, 86,106, 82, 10, 36, 60,223,239, 71,150,227,150,203,190,135,205,
- 6, 30,239,224,209, 6, 46, 31,227, 54, 61,103,147,229,113,140,124,184, 27,153, 66, 36, 93,108,243, 52,223,181,123,244,161, 50,
-153,103,144,138,202, 68,170,252,188,121, 91,224,221, 25,237,112,208, 28, 66,187,132,163,195,188, 46,168,107, 88,175,243,254,125,
-181,200,103, 64,215,128, 94,102, 7, 77,211,240,235, 77,131, 17,137,174,170, 8, 49, 15, 66,186,100,109, 92,140, 19, 38,129, 73,
- 17, 35, 4, 77,165, 88,215, 21,150, 68,240,145, 74,148,224,197,157,167,213, 2,124,192, 72,168,124,160,173, 27,124,140, 44, 22,
- 11, 26,163, 80,218, 96,140,201, 4, 89, 45,105,140, 42,214,177, 53, 85,211, 32,181,193, 52, 21,178,169, 16,198,100, 8, 92,101,
-165,209, 89, 12,184,144,232,173,231,113, 8,236, 92,150, 59, 63,112, 14,139, 32, 9,149,179, 61,100,102,187,123, 33,139,195,181,
-160, 23,134, 90, 72, 62,112,158,195,170, 35,153,154, 74, 43,164, 89, 80,235,134,180, 56, 96, 68, 33,164, 38, 84, 93,254,108,139,
-179, 31, 72,100,221,240,153,170, 34, 36, 56,104,187, 43, 41,172, 18,130,133,105, 48, 82,224,189, 99, 19, 11,193,115,174,238,222,
-194,228,112,211, 68,232, 51,129,111, 58,223,228, 85,211, 60,160,165,107, 3,109,145, 86,103,114,231,108, 21,158,246,202, 13, 55,
-101,116,119,242,248, 85,151,249, 72,115,162, 91, 44,240,123,242,123,191, 16,165,158, 94, 73,205, 69,221, 22,146,156, 42,197,104,
-134,252,117,169, 3,222,255,130,139,250, 92,204, 38, 11, 50, 49,104,141,151, 2, 31, 66, 86, 10, 72, 67, 72,158,209,251, 60,173,
-120, 95, 82,180,114, 34, 90, 18,185,152,251,152,161,216, 84,138,101,144, 32, 16,196, 20,105,180,161, 13, 25, 82,234,148,194, 59,
-143, 16,130,152,242, 4,226,125, 44,196, 55,207, 48,141,140, 49,225, 93, 62, 52, 61, 48,186, 9, 37, 2,214,193, 16, 3, 82, 8,
-108, 0, 79,160, 18,121,114,151,222,210, 17,209, 8,130,119,212, 9,172,205,136, 66,110, 39, 75,103,230, 66,129,212,195,190,235,
-154, 97, 51,113, 45, 88,226,122, 65,159,255, 93,138,124,193,107,185, 15, 25, 80,133,229,232,109,134,142,116,185,168,243,206,164,
- 49,207, 88, 10,234,171,154,158, 9, 53,146,159,201,111,182, 91,192,114,149, 15,143,148,192, 77,124,237,247,255, 46,253,206,102,
- 21, 64,109,176, 83, 64, 72, 73,240,158,232,114,188,224,173, 27,167, 28, 45, 23, 32, 36,181,210, 28,175, 26,142, 22,217,163, 64,
- 75,145, 45,100, 67, 42, 62, 15,146, 74,100, 55,191,202,100,243, 24, 83, 75,100, 97,156,202,236,239,154,247,197, 36, 38,151, 57,
- 21,146,132, 73,137,206, 7,142,125, 98, 25, 18,139,201,115, 18, 4, 75, 23,168, 99, 96, 51, 57, 84,130,203,193,131, 11, 12, 17,
-132, 79, 28,104,197, 99, 5,175,254,233, 71,164,119, 62, 32, 61,186,100,249,161,101, 57, 70,170, 23, 14,168,180,194,125,240, 17,
-219,179,115,158, 92,230, 29,109,244,145,135, 15,119,232,206,224,132,224,114,152, 72, 82,113, 99,221,177,181,158, 15,183, 61,175,
- 31, 29,240,205,123, 27, 30, 93, 92,162,128,239,124,248,128, 11,167,121,247,254, 5,231, 54,145,132,224,213, 87,238,240,210, 43,
-183,249,213,207,190,202,167, 63,118,147,174,170,152, 92, 96, 24, 3,206,229,149,210,224, 60, 23,125,158,206,157,205, 28,129, 80,
-154, 67, 81,228,142,227,232,184,247,100,203,131,221,200,163,126, 98,179,243, 76, 33,100,251,219,152,145, 54,153, 34,206, 5,162,
-144,140,219,137,237,110, 96,165, 53,119, 14, 22,172,201,104,198, 52,121, 62, 60,159,184,152, 38, 94,191,181,230,247,127,251,215,
-249,222,253, 7,188,253,237,119,178,154,228, 57,178,119,241,203,132,130,174,187,161,205,171,167,249,217,248,121,215, 79, 77,149,
-167,178,131,108, 10,115,171,174,185,177,170,168,181,206,121,246, 69, 95, 29, 16, 60,158, 66, 41,232,249,254, 27,164,224, 99,149,
-100,231, 29, 85, 76, 12, 33, 16,237,136, 14, 1,227, 7,190,123,185,195, 61,185,132,179,115,216, 60,129, 48,229, 52, 53,173,114,
-243, 61, 31,172,162,192,160,155,190,132, 93, 85,249,161, 44,169, 84, 82,107,126,115,177, 98,155, 18, 95,170, 42,156,243, 8,165,
-153,250, 77,110,102, 78, 78,120,241,246, 33, 39,183,142,145, 93,205, 96,170, 60,129,181, 85,254,187,148, 44,251,213, 61, 84,155,
-164, 66, 41, 56,169, 52, 85,242, 57, 51,193, 77,140, 62,177,115, 3,219,209,103,211, 72,145, 72, 81,176,104,154,220,115,104,129,
-141, 89, 11, 48, 12,129,147,165,102,112,145,165,214, 8, 59,161,154, 6, 63, 77, 44,154, 54,123,177, 87, 53, 93,173, 73, 82, 81,
- 27,133, 80, 58,171, 91,218, 6,105, 12, 81, 74,218,166, 98,170, 12,162,210,168, 90, 19,106,149,157, 69,203, 78,124, 32, 48, 2,
-143,167,137, 9,199,217,148,159, 23, 43, 53,136, 64, 37, 43,134,152,245,239,173, 4, 41, 13,145, 72,171, 20, 59,159, 56, 53,154,
- 3,221,208, 72, 69, 83,119, 12, 50,175, 2,164, 54, 28, 40,197, 67, 83,151,122,124,109,178,141,129,207,180, 29, 86, 73, 86, 34,
-195,236,139,148,104,234, 58,187,144,138,132, 50, 6, 67,228,195,105, 44,133,215,102, 37,152,117, 89,129,209,143, 48,218, 76, 12,
- 29,124, 57,223,217, 75,129,139, 12,143, 68,254,239,178, 52,153,221,236, 47, 47,178,122, 99, 28, 96, 24,192, 91,194, 69,159, 51,
- 68, 76,189,223,151,207,158, 10,243,148,159, 10,140, 47,197,222, 6,151, 18,202, 53, 79,234, 85, 65,114,103, 71, 80, 5, 8,245,
- 75, 40,234,209, 23,230, 97,222, 27,219,161, 39,182, 13, 90,104,158,216,129, 86,231, 28, 93,102,242, 67,202, 89,233, 46,230,253,
-121,150,209,150, 32, 0, 41, 9,178, 28,248, 34,187, 18, 69, 34, 11, 99,184, 41, 5,143, 98,164, 65, 34, 82,202,150,130,228,152,
-214,157,181, 88,239,177,206,177,179, 19,194,123,122,239,136, 33, 19,191, 54,118, 32, 18, 11,105, 61, 91, 20,202, 20, 17, 30, 66,
-176, 28,214,130,228, 5,135,194,209,137, 72,229, 61,235,152,144,118,202,121, 46,209,102, 70,163, 47,228,136, 57, 96, 32, 81,164,
- 10, 51,177, 70,238, 33,120,173,247, 63, 35, 69,134,243,107,147,117,149,226, 26, 4, 32,114, 72, 66,254,115,133, 16, 65,164,132,
-126,231, 31,187,154,216,229,190,160, 95, 5,194,252, 12,135,162,187,182,191,219,110, 88,254,230, 87,248,173, 95,253, 20,211, 84,
- 26,165, 72, 78,175,139, 9,103, 3,222, 71,186,110,201,205,227, 53,151,151, 3, 50, 9, 42,165, 88,116, 21,149,222, 79, 95,214,
-103,216,125, 62,183,179,199,135,162,109,178,212, 76, 23,159, 1,163,115,122, 91, 61,183, 40, 9,132, 72, 84, 36, 84,140, 28, 68,
-208, 46,230,136, 99, 23,168,166, 68,114,158,122, 12,172,166,200, 98,242, 76,187, 9, 61, 56, 6,231, 25, 1, 55, 57,110, 28,117,
-124,253,157, 71,188,251,253,239,243,231,246,130,182,223,241, 82, 92,113, 28, 87, 28, 76,129,111,159, 63,225,255,217,158,243,225,
-176,225,242,114,195, 7, 83,228,206,122,201,147,222, 17,158,244,200, 16,185,148,176,176,158, 79, 28,173, 56,168, 53,105,242,124,
-253,124, 71,136,154,203,139, 77,118, 40, 12, 30,107, 61, 47,156,158,114,118,185,161, 94, 53,124,252,238,154, 59,167, 43,214,109,
-110,192,108,136, 88, 27,113, 33,146, 68,194, 58,207,118, 59,114,177,181,196, 34,217,105,107,197,232, 34,219, 97, 98, 24, 61, 46,
- 70, 38, 27,184,236, 71,250,193, 50,140, 14, 27, 60, 42,102, 88, 82,136, 50, 5,250,148, 85, 28, 49,209,239, 38,166,237,200,170,
-173,185,209, 85,244,143,243,251,120,114,185,227, 79,223,190,207,163,135, 27, 38, 41,120,243,238, 17, 95,248,194,103,121,231,236,
- 9, 63,248,222,219,136, 57,123, 69,254,255, 80,216,159, 53,140, 17,207,176,238,127,214,194, 62, 79,232,166,206, 26,126,165,161,
- 53,220,237,106,148,146, 68, 4, 83,140,217,207, 2, 65,239, 3,103,214,239,137, 76,101,189,117,146, 18,107,145,112,193,179,136,
- 14, 25, 61,182,223, 16,237,196, 55, 63,186,128,199,143,114,198,249, 52,238,181,200,170,104,203,231,221,231, 48,230,130,222,111,
-178,147, 85, 91,231,102,220, 84,252,206,193, 33,159,172, 58, 34,130,183,180, 66, 39,193,139,109,205,203, 6,206,124,100,168, 5,
-111, 28, 29,240,202,241, 33, 90,183, 84,218,240,164,202,137,101, 68,177,255,156,230,231, 95, 23,167, 61, 45, 24, 99,228,118, 76,
-172, 68,222,211, 39, 34,163, 29, 56,219, 78, 57, 2,181,236,133,181,202,136,155, 49, 21, 19,226, 42, 64,175,109, 4,155, 62,176,
- 48, 18, 93,138,100,180,142,186,174, 8, 74, 32,170, 10, 37, 4, 65,107,164,201, 49,194,149, 81,200, 69,131,172, 12, 65, 27, 82,
- 91,227,180,194, 40,137,109, 12, 67,202,205,250,133, 20,108,124,100, 72,145, 71, 62, 49, 88,143, 87,176, 29, 97, 23, 3,151, 66,
- 18, 98, 78, 95,211, 66, 80,149,200,237, 24, 19,181, 42,225, 45, 49, 51,172,106, 99,168, 83,162,170, 13,222,122, 78,234,138, 42,
-194, 11,181,225, 8,193,155, 50,113, 39, 56, 78,149,100, 45, 5,189,119, 56, 93, 17,195,196, 18, 65, 37, 52,173, 16,140, 34, 81,
- 33,139,181,109, 34, 12, 3,223,158,118,244,187,203, 76, 94,180, 54,255, 26,134, 34,207,140,123,185, 89,165,242,112, 61, 7,192,
-204, 82,184,201,231, 41,124,217,148, 28, 4,149, 73, 13, 90,149,123, 62,229, 51, 61,204,107,166,144,173,100, 43,246,238,135, 49,
-230,154, 50,115, 77,124,220, 35,186, 54, 94, 65,247,121,184, 83,249,204, 15,215,184, 40, 74, 92,237,222,127, 9,147,122,121,129,
-174, 64,241,210, 16,140, 98, 23, 45, 70,228,160, 22, 67,246,130, 31,131, 67,201, 66,164, 74, 30, 33,114,196, 94,109, 12,158, 28,
-143, 55, 69,135, 20, 2,147,189,152, 56,109, 43,106, 41,217,133,136,241, 33,195,243, 49,129,119,164, 16,233,125,118, 43,147, 68,
- 30,122,203,100, 7,156,207,233, 95,147,183, 4, 63,162,133, 96,176, 22,165, 42, 52, 46, 71,112,134,188,244,111,107,133,242,129,
- 3,149,243,126,187,224, 57,210,138, 83, 2, 47, 74,201, 82, 6,238,187,140, 44,228, 2, 91,118, 33,178, 92,120,161, 74, 22,178,
-216, 67, 52,130, 43,136,249,106, 82,159,245,238,243,142,189, 18,101, 98, 79,217, 34, 51,228,169,248,138, 84, 49,195, 49,110,182,
- 69,140,251,162,222,204,122,201, 31, 1, 95, 54,101, 39,167,170,103,124,195, 99,238, 78,167, 1,136,188,240,201, 55,249,213,207,
-189,145,185, 5,228,233,220,187,148,239,237,201, 19, 92,228, 96,217, 33,181, 70, 75, 69,215, 85,156, 28,118, 28, 53,154, 69, 49,
- 86,240, 62, 50,134,136,247,137, 24, 18,181, 18, 28,180,134, 69,163,203,208,146, 89,234,137, 68, 42, 5, 74, 20, 34,180, 22,130,
-138,196, 65, 72, 84, 33, 82,249, 68,116, 30, 19,161,241,137,106,138,132,148, 48, 54, 80, 5,193,194, 69,236,229,128,159, 44,155,
-113, 66,251, 64, 60, 90, 48,164,200,159,252,225,215,249,232,222, 35,126, 48,246,124,119,154, 88,250,115, 78, 82, 98,225, 26, 22,
-182,231, 27,118,203,219,195,150,209, 59, 90, 37,114,248,207,232, 57,117,137, 35, 99,184,115,216,162,106,201,106,200, 17,195,109,
-109,208,222, 99,181,192,138, 6, 59, 12, 60,217,230,164,192,143,127,226, 46,175,188,122,194,205,227, 5,139,218,228, 9, 37, 68,
- 38, 23,176, 62,146, 66, 64, 41, 65,112, 41, 31,178, 49,225, 93,206, 60, 88,180,154,182, 49, 89, 46, 84,154, 64,161, 4, 82, 8,
-164,204,100, 78,161, 37, 74, 8,142, 14, 91,140,204, 76,246,101, 83,177,236, 12, 74, 72, 46,118,142,237,110, 32, 88,199,199,142,
- 86, 52, 66, 50,158,239,104,140,224,219,247, 47,121,251,254, 3,108,121, 61, 30,137,233, 42,190,242,197,207,240,254,163, 39,188,
-243,246, 59, 63, 84,208,127,121, 83,250, 51,127,145, 42,178, 80,193,207, 94,216,103,189,122,183,202,240,116, 85, 28,224,148,230,
-102, 91,209, 41, 73, 37, 4,145,148, 3,157, 82,226,193,232,185,152, 27,234,170,200,222, 82, 66,198, 68,149, 28,167, 74, 96,199,
-137, 46, 38, 6,231,249,223,191,123, 31,206, 31,237,245,199,179,182,127, 38, 23,150,184,103,198, 18,248, 49,108,243,255, 51,148,
- 52,186,245, 33,111,173, 79,136,194,240,226,162, 70,167, 72,146,134,166,110, 89,152,196,102,130,117, 85,113, 88, 41,222, 88, 45,
- 57,110, 23, 28,106,205, 73,211,112,223, 6,122,202,144, 48, 67,176, 51, 3, 58,132,220, 68, 12, 61,182,239,217,248,158,247, 54,
-143, 89,226,120, 50, 90, 54, 46,177, 75, 2, 23,178,140,152, 36,145, 73, 16,164,162, 50, 26, 33, 53, 70, 81,162,172, 5,210, 64,
- 35,178, 83,227, 36, 36,161,172,109,186,186, 70,154, 26,154, 26,165, 20, 65, 74,124, 93, 97,171, 12,195, 39,165,241,203, 38,219,
- 17, 24,197,164, 21, 35,145, 73, 8, 54, 33, 50, 6,207, 37,137, 15,139,187,231, 35, 18,219, 9, 6, 59,241, 40, 9,100,176,140,
- 54,114, 88,235, 98, 50, 37,209, 66,208,201,172, 78, 74, 49,225,129, 70, 40, 86, 82,228,248, 12, 1,134, 44,109,238,164,160, 53,
-130, 90, 4,166, 0, 7, 58, 80,197,200,218, 79,220, 82,134,147,232, 89, 0, 55,147,224, 72,100, 23,184,149, 84, 52, 9, 68,242,
- 28, 86, 42,167,114,110,206,121, 24, 38,164,247,164,217,131,221, 23,178,104, 40, 59,241,121,205,170,138,110,221, 21, 20,198, 22,
-146,105,125, 45, 33,110,142, 37,158, 83,212,196,108, 97,107,138,148, 45,101, 36, 32,165,140,188,136,194,199,210,133,217, 78,225,
- 86, 12,197,219,100, 30,228,102, 78,151,143, 25,225, 85, 5, 5, 16,242,169,200,237, 95, 78, 81,191,218,177,205,145,136,249, 67,
-177, 90, 48, 17,152,130, 71, 81, 58,187, 16, 73,228,195, 58,196,108, 19,104, 67, 64, 25,195,224, 44, 70, 27, 36,138, 49,120, 42,
- 45, 88,104,133,145,154, 24, 2, 90, 40, 38, 63,230, 32,151, 16,232,157,167, 34, 34, 99,226,131,221, 57, 83,244,164, 40,232,221,
-142,157,243, 36, 17,168, 35,140,193, 19, 66, 36,122,139, 18,130, 42, 6, 42, 34, 73, 68, 26, 31,104,133,164,177, 19,173,144,172,
-132,100,233, 39, 14,148,196, 36,184,237, 35, 15, 35,108, 66,122, 58, 87,189, 47,145,172, 46,114, 69,163,116, 37,206, 79,138,167,
- 13,253,231, 29,251, 12, 21, 93,143, 5,156, 97, 60,165,242,133, 27,167,156,210, 21,203,254,125,150,188,204,100,166,166, 2,189,
-200, 55,198,243,100,137,186,184,103, 41,145,161,160,107,210,135,103,191,190,242,213,175,240,137, 79,190,140,115, 30,103,195, 21,
-146, 49,237, 38,236,232,105,154,138,151,111,157,102, 50,142,209,172,219,134, 27,135, 45,203,198,228,200, 85, 33, 25,125,192,167,
- 68,163, 5,198, 72,106, 45,105,180,202, 69,173,120,236,199,226,207, 30, 82, 38,212,205,156, 4,145, 18,186,152,101,132, 24,145,
-206,103, 93,108,140,212, 67, 36,141,158, 48, 89,170,222, 35, 54, 22, 51, 68,218,221,132, 25, 6, 46,157,229,116,217,146,110, 29,
-240,231,127,241, 54, 15,254,234, 67, 54,187,145, 7, 33,178,182,129,255,115, 24,249, 87,219,135,124,142,137,151,150, 47,241,107,
-171, 83,110,121, 71,140,158,101, 63, 34, 71,207,105, 76, 44,235,154, 87, 63,113,135,218,200,236, 53, 52, 6,134, 40, 16,173,161,
- 94,183,156, 46, 27,110, 31, 53,188,250,210, 77,236,164, 88, 28, 29,240,242,171,167,188,112, 99,197,113,151, 49,135,221,232,152,
-108, 96, 51, 76,108,139,115, 30, 62,102, 4,195, 23, 87, 44, 41, 88, 46, 42,150, 93,195,106, 81,179,236, 42,150,181,193,212, 58,
-255,188, 72, 24,163,168,107, 67,221, 24, 14, 15, 90, 94, 56, 94,160,181,198,249,196, 65,171, 81, 82, 18, 4,156,157,109,153,134,
-137,197,178,229,215, 94,185,137, 74,129,113,176,140,214,241,205, 7,231,108,199,158,139,237, 37,253,206, 34,162, 33,136,192,139,
-183, 14,249,244, 91,111,241,191,253, 47,255, 34, 67,185, 60,237, 33,195, 53,250,200, 47,244, 76,144,215,238,249,171,221,100,250,
-233, 25,238,186, 16,226, 22, 93, 38, 70, 45,234,188, 62,146, 34,203, 35, 4,156, 84,146, 70,107,180,202, 25, 2,147,119, 60,153,
- 60,239, 88,155,243,176, 67,200,242, 84, 37,192, 59, 46,173,229,174,145,220,219,245, 40,231,248,112,179,229, 59,143, 47,185, 56,
-219,228, 61,167, 20,185,160, 63,203, 25,240, 62, 79,116, 67,159,201,110,206,239,223, 99,183,132,163, 19, 42,165,121,171,109,144,
- 85, 69, 72,134,182, 85, 76, 46,241,104,242,116, 74,208, 39,184, 89, 25,142,234, 26, 41,178,198,220,199,192,221,166,226,219,219,
-205,222,247, 34,148,215,221, 15, 25,254,223,141,249,239,222,245,236,166, 29,231,214,241, 97,138, 60,118, 22,155, 4, 74, 42,148,
-144, 24,165, 72, 49,161,148, 65, 10,205,132,160, 85, 50, 7,181,104,197, 20, 35,203, 90,226, 35,180,181,102,244,129,182, 50, 36,
-153,243, 43,188,148, 8,173, 24,148,194,214, 6,140,194,105,201, 84, 12,166,166, 36,178,126,187,220,179, 81, 42, 70,145,232, 37,
-156, 91,201, 35,151,232, 93, 96,227, 19,187,157,101, 20,137, 29, 2,239, 45, 42,122,106,153,153,226, 41, 38,100,242, 36,165, 72,
- 33, 34,136, 36,231,137, 49, 81, 37, 79, 10,137,174,201,180,254,101,107, 48,209,161, 91,141, 8, 1,165, 36, 43, 63, 50,197,136,
- 9, 14, 41, 43, 12, 35, 11, 17,208, 41, 33, 9, 24,169, 57, 81,137, 24, 45,210, 91,214,149,198,184,137,237,238, 17,219, 97,226,
-141,174,226, 52,194,199, 14, 22, 52, 82,179, 90,180,152,186,161,151,197, 9,116,206, 68,143,177, 16,158, 51, 7, 33, 59,195,145,
-207,254,144,138,107, 99,249,185,121,186,118,110, 47,225,148,101,152,107,187, 2,223,135, 18,215,170,247,205,102,136,185, 89,104,
-179,185, 87,110,234,102, 20,188,172,122,221,236,198, 88, 76,118,230,181,112,226,151, 88,212,103,239, 92,101, 50,100,165, 51, 29,
- 63, 33,136, 90,177, 11, 57, 33,104,231, 45,187,224,168, 11,148, 97, 99,200, 19, 11, 96,180, 33,164, 64, 18,217,110, 84, 8, 67,
- 27, 1, 17,104,165,100,240, 83,142,147, 37, 96, 39, 75, 45, 37,113,154,120,108, 71,124,140, 60, 25,119,132, 24, 8, 62, 18,131,
-163, 70, 50,133, 60, 41,117, 66,144,130, 43, 68, 45, 80,193, 97, 66,164,142,158, 54,122,140,144,116,222, 35,162,163, 81,138, 38,
- 70, 66,138, 52, 74,241, 58, 9, 47, 2,247, 41,172, 69,235,179, 67,148,203,157,255,213,105, 40, 10,185,221, 22, 24,231, 58,185,
- 2,114,199, 55,107,117,103, 24,134, 82,208, 99,129,244,187,106,239, 53, 28, 75, 19,225,228,149,124, 1, 89, 18,133, 92,137,250,
-123,222, 65, 42,234,124, 19,142, 33,147, 65,126,196,215, 87,190,246,219,220,190,115, 74, 72,137,105,242, 72,173,114,156,234,228,
- 73, 17, 94,188,123, 11,211,214,184, 40, 80, 82,114,235,112,193, 65,103,168,180, 70, 25, 93, 44, 99,243,155,175, 5,104,153,173,
- 98,141,201, 42, 6, 31, 50,194, 33,201, 33, 43,179, 58, 34,250, 76,120,147, 33,171, 34,164, 15, 40,159,144, 62, 34, 99, 36,217,
- 64,216, 58, 98, 63,145, 98, 36, 61,238, 81,151, 35,141, 75,212, 83,192,244, 61, 43,165, 56,190,125,204,187,222,243,207,255,213,
- 31, 82, 77,129,197, 24, 24,183,150,205, 54,176, 14,137,175, 4,205,215,197,200,203,227, 64,167, 43,110, 45, 78,120,109,117,204,
-189,221, 57,239,143, 27,150, 49, 49, 34, 88, 13, 96,146,100,177,108, 57,124,229, 20, 35,178,150,250, 34,134, 76,222,116, 17,173,
- 18, 47,220, 61,228,213, 87,110,241,226,141, 37,181, 82,217, 29,213,121,206, 46, 39, 98,140, 89,122, 86, 24,150, 62,100, 59,219,
- 24,178,245,237,162, 49, 28, 29, 52, 44, 23, 13,139,174, 66,203,108,247, 89,107, 81,162, 40,115, 81,151, 5,213,104, 42,195, 65,
-219,228,117,145,115,220,174, 43, 86, 81,162,109,228,133, 69,195,127,244,218,109, 62,251,194, 17,211,100,209, 34,113, 57,120,254,
-226,131, 71,124,251,163,119,217,108,123,222,184,241, 2,127,247,243,111,178, 17,112,118,177, 99,181,106, 57, 58,232,248,239,254,
-254,239,241, 63,255,175,255,226, 74,158,155,126,217,211,250, 92,244,230,102,119,110,116,159,149,193, 61,175,168,107,160,106, 88,
- 31,174,160,109, 81,181, 65,181, 53, 65, 23,143,136,178, 82, 58,139,154, 70, 75, 54, 46, 63, 95, 46,122, 38,155,232, 73, 76, 59,
-187,223, 80,217,144, 97, 83, 27,248,224,114,224,254,227,129,239,159,143,188,255,228,130,139,203, 93,150,246,201, 50,141,205, 46,
-117,206,255,176,253,238, 15,153,232, 40,136,134, 91,183,143,249,237,155,119, 72,186, 35,134,244,255,209,246, 38,191,150,101,215,
-153,223,111, 55,167,185,237,235,227, 69,151, 17,217, 49,147, 20, 51, 37,153,106, 76,169, 40, 74,150, 68, 89,178, 74, 50, 92, 5,
-215,192,240,200,255,131, 97,120,230,145,231, 5, 15, 12,123, 96, 24,112, 21,108,192, 48,224,129, 97,187, 44,168, 76, 74,114, 73,
- 44, 50, 73,145,148, 72, 38,153,109,244,205,235,110,123,206,238, 61,216,251,190,251, 50,197,164, 26,144, 1, 4,162,121,209,188,
-119,239, 57,103,237,181,214,247,253, 62, 82, 8, 72,213, 34,165,196, 83,226,160,221,154,221, 90,101,123,175, 20,164,224,169,132,
-160, 15,150,153,117,172,186, 46,231,107,172,186,220,157,207,250,172,154, 95,173,243,239, 13,170, 92, 92, 26,133, 9,158,105,219,
- 34,145,196,148, 24,212, 77, 22,170, 74,157,199,216, 34, 51, 33,188,208,120, 41, 89,198, 60, 13, 90,117,129,118,160,152,245, 30,
-169, 20, 42, 70, 68, 91, 17,139, 69, 25, 9,125,147, 85,233,243, 40, 9, 40,146,172, 48, 73,226,132, 32,216,200, 10, 73, 74, 18,
- 39, 83, 78,236, 52,121,245,228,188,103, 21, 96,217, 59,140,144,184, 4,206,121,180, 51,116,206, 82,135, 44, 34,139, 41,230,157,
-125,112, 84, 34, 98,173, 5, 34,202, 90,100, 18, 52,210, 81, 37,145, 47, 27,160,138,137, 73, 12, 4,161,168,141,193,120, 75, 74,
- 48, 20, 2,153, 28,163, 16,152,232,154, 58, 24,110, 84, 13, 35,183,162, 37, 49,244, 22, 29, 44,202,117,216,110,129, 13,142,137,
-132,147,229,138,241,160,166,213, 21,173, 18, 12,181,100, 90, 73,246,154, 58,175,111,154,188, 86,184,188, 78, 55, 40,223,205,179,
- 59,149,134,108, 35,100,219,120,215,131,223,194,103, 92,204,117,162,109,242,117, 39, 85,174,143,170, 52,134,178,172, 88, 55, 26,
- 10,227,183,129, 93, 27,140,183, 15,219,213,238,230,112, 92, 93, 33,214,241,211, 46,234,148,253,130,208, 37,231, 86,129,177,229,
- 96, 35,232,140, 5,157, 71,242,107,219,163,149,198,197,128,172, 52, 34, 9,250,224,137,228, 46,183,213,117, 22,210, 5,207, 88,
- 39,150, 41,114, 32, 21,214,152,236, 97, 12,145,181, 51,152,232,209,222,176,182,150, 14,232, 76,199, 88, 8, 6, 74,177,180, 61,
-149,212, 52, 66, 32,124,200, 63,166,132,243, 61, 3,149,119, 54, 10,168,131, 99, 15,137, 75, 9, 29, 28, 93,140,244, 62, 49, 70,
- 82, 87, 13, 85, 8,236, 9,197,169, 12,204,131,202,111, 84, 42,124, 97,159,182, 34,135, 84,146,220,144,121, 68,158,194,214, 68,
-186,185, 24,196,166,187,143, 91,121,189, 16, 91,164,103,218,228, 66,171,242,198, 54,133,153, 93,222,104,177,201,118,239, 63,185,
-187,241, 54,139, 62,194,143,143,246,251,226, 31,254, 46, 85,163,233, 58, 71,138,217, 49,176,188, 88, 17, 34,236, 29,238,241,185,
-215,111,163,165,198,133,132, 78,146,195,253, 1, 90, 72,132,144, 37,218, 54,223,116,141, 18, 12, 90,141, 86,130,186, 42, 59,249,
-144,217,236,214,167,188,103,246,185, 91,143, 5, 42, 35, 67, 64,165,128,176, 30,225,178, 93, 74,184,128, 48,158,212, 57,150,243,
- 21,189, 11,120,145, 48,179, 37,118,181, 66,122,136,222, 33,131,103, 52,153, 50,120,233,128,239,124,245,187,124,248,205,135,172,
- 83,160, 78, 2, 29, 35, 79, 86,158,207, 10,197, 43, 85,197,211,149,227,105, 88,163,100, 71,131, 96,111,116,192,117, 52,149,183,
-124, 79, 4,214,109,195, 9, 9,191, 50,236, 92,159, 34,142,198,132,186, 34,145, 80, 38,176, 91, 41,186,121,199,105,128,107, 7,
- 99,148,206, 94,221,139,206,242,236,124,205,247, 63, 60,163,235, 28,107, 27,112, 54, 79, 37, 82,204,135,154, 16, 50, 1,177,173,
- 43,166,147,134, 65,157, 15, 68, 66,200,252,241,152, 10,219, 62,146, 95, 21,145, 71,249, 46, 96, 35,216,152,184,247,112, 65,191,
- 10, 60,120, 48,227,254,189,103,252,249, 95,189,205, 7,207,206,152, 45, 44, 55,119, 26,246,235,154,163,131, 9, 73, 43,126,238,
-238, 17,186,217, 97,247,240, 58,255,209, 47,188,134,214,130,183,159, 93, 32,149,230,217,210,240,221,119, 31,243,243, 47, 93,231,
-248,211, 63,195,159,124,249, 43, 31, 37,204,253, 52, 58,245,143,143,225, 55,202,119,119, 69,107, 18,127,140, 10, 94,106,104, 7,
- 28,238,143, 24, 13, 90, 68, 91,163,180,194,164,180, 77,136,139,128,204,135,197, 59, 26,166,178,172,209,128,123,157, 35,108,160,
- 33,155,233,128,119, 89,125,190, 92,100, 63,113,232,242, 56, 93, 52,185, 59, 55, 54,119, 79,222, 95,153,132,233, 43, 10,228, 43,
-157,210,230,254,211, 10, 14,246,184, 51, 29,115,115,239, 0,106,201,163,222,146,170,154,161, 86, 60,178,158, 38, 88,230, 41, 50,
- 86, 21, 82, 6,234,148,115, 38, 92, 12,136, 96,185, 88,175,248,206,147,115,152,149,207,107, 54,135,110,145, 5, 87, 33, 22,180,
-115, 17,231, 14,244,101,241,181, 34,139, 2,155,170,201,152,101,145,175, 36,165, 42, 66,180, 36, 33, 73, 41,219, 72,173, 7, 71,
-202, 49,213, 94,160, 10, 69,173, 71, 35, 43,129, 81,146, 80, 73, 86,165,128,172,125, 78,157, 11, 85, 69, 36, 97,149,190, 4, 9,
- 7, 33,233,125,190,175, 29, 69, 35, 66,162, 79,130,245,218, 20,109, 84,192, 90,131,242,142,149, 51,168,232, 16,214,100, 26,104,
-138,164,224,209, 41,209,245, 29, 58, 6,170,224,105,132,163, 9, 61, 83, 36, 45, 48,137,121,157, 53, 44,147,189,161,203,147,176,
- 16, 28,117, 48, 84,206,101,231, 71, 74,244,174,231, 90,138, 56,187,228, 64,106, 6,206,144, 92, 79,116, 6,172, 69, 4,159, 19,
-196,131, 97,119, 48,160, 15, 1, 65, 98,191, 30,208, 5,135,148, 50,195,110,180, 98,160, 21, 39,182,192, 98,184,194, 87, 80,229,
-181, 23,101, 18,170, 84,185,126, 82,158,190,202, 82,120, 59,155, 15, 96,155,105,236,166, 16, 55,162, 68,181,214,219, 76, 3, 91,
- 82,232, 90,189, 21,202,109,186,243, 77, 96,204,102,220,158,210, 37, 15,109,147, 64,248,211, 45,234,155,229,253,120,148,111,214,
- 84,226,239, 66,184, 44,108,193,249, 60,122, 39,209,199,252, 66,166,148,195, 86, 98,138, 40, 52, 81, 36,130, 40,191,142, 17,157,
- 18, 85, 8, 44, 82,162,242, 22, 99,122, 68, 74,248,224,136,165,155,122,102,215,244,222, 50,148, 42,239, 52, 67,100,162, 53,222,
-247,200, 24, 25, 10, 65, 75, 62, 36, 72, 4, 49,120,170, 24,153, 58, 75,171, 27,156,181,232, 24,169,144,232,178,230, 78, 82, 17,
-189,163,115,129, 97, 74,236, 42,197, 66, 9,230,126,227, 83, 44,249,209,193, 21, 53,123,121,179, 93,151, 11,111,111, 74,151,144,
-242, 27,211, 86, 57,150,213,199, 45,102,179,173,202,232,165, 46, 73, 61,165,160, 19, 63,234,133,244, 41,243,228,125,252,123,198,
-113,234, 79, 20,211,253,218,239,253, 22, 90, 75,124,136, 40, 41,177, 54, 98,123, 75,211,182,220,186,117,192,181,241,136,103,179,
- 14, 25, 97,111, 90,177, 55,200, 33, 60, 82,100, 76,175,146,185,131,175,148, 64, 41,145,193, 41, 34,175, 85, 98,140, 5, 50,147,
-139,151, 40, 86,142,252,251,249, 59, 33, 16,173, 39,244, 22,187,182,152,165,193,251, 64, 90, 91, 22,243, 62,167,231, 89,143,233,
- 12, 23, 93, 15, 50, 50,235, 23,116,193, 51,216, 25, 83,239, 14,185,241,175,254,146,207,215, 53, 39,115,195,227, 51,195, 13, 39,
-120,147,138,159, 19,138, 87, 15, 70,204,206,123,206, 26,112,195,134,239,164, 53,207, 87,103, 28, 70,201,167,135,183,249, 25, 53,
-228,184, 64,112,118,218, 1,182,179,220,179,150,249,189, 25, 79,223,123,206,243,103,115, 46, 90,201,153, 84,188,122, 56,102,168,
- 20,203,165,225,100,217,241,100,222,241,248,249, 34,251,133, 3,152,206,227, 66, 44, 70,137,172, 27, 24, 13, 42,118,199, 3,118,
- 39, 45,131,186, 66, 43, 81,120, 70,145,206, 6, 58,235,233, 92, 22,240, 72,160, 77,208,219,128,183,129,197, 69,207,163,179, 37,
- 23,179, 5, 15,159, 60,226,237,251,239,115,210,173,161,170,169,135, 19,244,206,136,119,151,150, 71, 1, 78,156,229,157,147, 37,
- 43,227, 56,239, 60,198,122, 30, 44, 87, 60, 92, 27,144,130,231,103, 43,238,253,224,125,254,234,237,239,112,178,148,168,225,144,
- 55,126,254, 13,190,246,231, 95,253,177,182, 54,241,147, 44,234,155,130, 30,210,214, 1, 10, 63,158, 42, 87,143,184,125,125, 2,
-170,197, 87, 21,163,182,165, 45,221,146, 9, 27,145,104, 4, 19,105, 98,228, 88,230,195, 98, 68, 18,149, 96,105, 29,235,116,165,
-131, 10, 33,119, 81,253, 42,227,159, 69, 25,159, 59,151,255,157, 13,251, 59,132,143,118,227, 90,110, 39, 3,162,236, 69, 21, 91,
- 29, 77,165, 96, 56,230,100,103,135, 32, 43,188, 28, 82, 75,149,137,153, 85,205, 52, 37,116, 59,166,151, 31,150, 0, 0, 32, 0,
- 73, 68, 65, 84, 68, 57,203,154,196,131,213,140,212, 45, 25, 36,203,136,132, 89,175,120,251,249, 41,103, 79,207,225,244, 28,204,
- 34,143,248,157,223, 38,143,137, 43,150,192,166, 42,124, 11, 73, 40, 73,103, 85, 81,229, 87,178,202, 56,255, 16,208,170,130, 36,
-112, 49,101, 16,151, 20, 68, 45, 25,106,133,208, 2, 47, 65, 10, 73,146,130, 46, 9,180, 86,244, 46, 3, 90,214, 17, 86,101, 28,
-111, 99, 34,181, 13,222,231,189,242,178, 60, 51,214, 34, 15, 31,215, 49,178, 10, 89, 95,227,124, 94, 69,197,126,133, 11,249,192,
-110, 92, 79,109, 13,206, 91,132,144,196,100, 81, 66,162,162,197,251,136,116, 61, 42, 6, 68,232,104,131,167, 1, 92, 48, 76, 19,
- 88,179,100, 39,102, 58, 95,244, 22,101,215, 40,179, 38,121,135, 54, 29,149,115, 8,111, 17, 49, 48,241,158,224, 61,123, 82,242,
-217,221,107,156, 46,207,105,189,167, 74,130,140,197,202,225,153, 83,221, 32, 82,100, 44, 53,109,193,187,106, 41,177, 49, 80, 41,
-137, 11, 1, 37, 36, 59,117,195,233, 98, 85,130,137, 68, 46,210, 87, 69,151, 27,107,241,230,186, 81,133, 74,103,202,179,190,183,
- 37,169,176,172, 28,219,122, 27, 10, 22, 92,238,196, 99,216, 10,165, 55,226, 99, 81,158,247,170, 68,105, 27,183, 61, 40,108,198,
-239,136,172,143, 82,250,167, 88,212,181,222, 98,237, 98,202,106,208,210,117, 95, 22,187, 75,225,129, 33,149,194,110, 17,180,149,
-102,237, 93, 73,118,203,129, 3, 74,128, 8, 14, 79, 22,182, 12,100, 66, 57,139, 41,222,192,133, 91,103, 36,108, 76, 92,248, 14,
-235, 3,193, 27,214, 49,112,144,114,172,106, 8,129, 29,161, 72, 49,160,145,168, 80,216,190, 18,140,143,232, 8, 59, 90, 82,187,
-144, 69,166, 41,191,245, 41, 4,156,204,187,238, 20, 34,227,186, 98, 46, 19, 58,229, 16,146, 71,193,103, 62,188,247,219, 44,242,
- 20, 75,113,247,219,241, 9,105, 11,228, 15, 62,139, 37,172,221, 90, 24, 68, 33, 8,109, 34, 93, 55,227,149, 84, 70,237,227, 97,
-126, 29,155, 58,255, 25,235,254,142,120,223,171,133, 60,254,200,194,254,230,239,255, 30,191,240,139,159,166,183,158, 80,110, 72,
-211, 89,108,239,184,118,243,144,227,221, 49,141, 84, 44, 59,203,238,168,229, 96,212, 50,104,117, 86,189,139, 92, 8,107, 41,242,
-186, 73, 10,116,233, 16,124,200, 5, 93,144, 49,167,174,160, 78, 19, 89, 9, 46, 55, 95, 91,200, 59,162,208, 91,170,181,195,134,
- 64,176,185,192, 69,231, 73,189, 39, 25, 71,215, 25,122,219,115, 26, 29,115, 25,121,183, 91, 97,154,138,195, 79,223, 34, 62,152,
-209,252,229, 35, 94, 29, 31,240,235,205,136,253,139, 53,225,169,231,200, 75,150, 83,201,122, 92,241,158,247, 40, 37,185, 23, 61,
-231,227,134,119,149,224, 66,193,177, 82,140, 85,195,129, 28,178, 47, 43,118, 6, 3,166, 66,193,243, 21,247, 79,231, 92,191,189,
-195,139,183,246, 56,184,177,203,145,208, 92,107,107,148, 75,216, 62,219, 35,133, 43, 89,238, 87,248, 17, 66, 10,234, 58,187, 3,
-118,198, 3,246, 38, 67,246, 39, 13,131, 90,151,107, 59,255, 29, 23, 2, 49, 6, 66, 74,212, 82,146,124, 98,170, 18, 47,213, 53,
- 79,103, 29, 31, 60, 56, 99, 54,155,227,188,229,112,111,196,231, 62,117,147,155,215,142,153, 14,119,217, 29, 78, 72, 69, 93,127,
-231, 96,194,106,109,120,126,182,162,209,154, 51, 27, 88,199,196,193,225,152,221,189, 17,200, 12,117,154,159,204, 57,174, 27,246,
- 38, 83,122,159,241,161,175,191,242, 2,191,248,239,252, 60, 95,249,202,159,125,100,191,254, 19, 47,232, 87, 21,240,155,164,171,
-205, 84,235,111,163,202,141, 6,152,193,132,209,116,196,167,247, 6, 28, 14,106,118,107,205,245, 90, 49, 80,138,147,165,201, 15,
- 78,103, 49, 46,146,148,230,104,216, 48, 80,130, 86,100,208,202,194,231, 96,161,188,251,235,243, 67,212,102,209, 25,190, 56, 82,
-148,222, 78,202, 54,209,176, 31,103,214,111, 86, 7,170, 20,116, 41,178, 85,174,153,192,141, 99,216, 25,195,100,159,231, 85,205,
-141,102, 68, 39, 4,123, 77,205,185,113, 56, 96, 71,193,137,181,248, 24,121,107,121,206,217,226,148, 39,103,231, 60,158,157,242,
-214,163, 51,158, 62,124, 2,179,243,188, 46,251, 27,124,138,205, 1,191,220,198, 77,181, 77, 2, 67,208,167,128,144,130, 73, 53,
-192,166, 68,163, 20,178, 76, 71, 68,138,136, 24,243, 72, 94, 66,244,130,145,202, 16, 40, 33, 37,169,146,132, 36,137, 74, 98,124,
-202, 63,146,105,102, 46, 38, 58, 31, 17, 42, 23,241, 40,243, 10, 37,175,128, 99, 30,173,147, 19,212,164,247,172,124,160,235, 60,
-209, 25,146,136,132,110, 13,206,144,130,205, 25,234, 66, 18,162, 45,169,184, 14, 21, 19,214, 27,218, 70, 66,176, 12,136, 4,223,
- 83,153, 30,229, 3,209, 59,154, 20,113, 33,128, 55,200,224,136,166, 3,103, 17, 46, 79,236,156,235, 24, 34, 32, 56,132, 16, 57,
- 47, 66,192,172, 95,229,116,199,226, 67, 15, 36,148, 80, 40, 18,158, 88, 66, 54, 5, 42,101,105, 70,231, 12, 29,177,120,230, 19,
- 54, 6,150,214, 51,105,106, 22,222, 95, 97,244,139,220, 41,111, 28, 36,155,113,249,102,148,190, 17,198,165,194,160,135,237,245,
-181,217,207,111,148,242, 87,121,241,226, 74, 81,247, 37, 20,198, 20,198,130,210,249,218,221, 96, 2, 67, 73, 51, 68,129,119, 63,
-101,161, 92, 91,129, 87, 48, 29,230,125,238,168,217,226, 80,155,234,114, 92,128, 80,121,212,229,242,233,105,181,238,145, 85,131,
-113, 6,161, 42, 70,186,194,186, 30, 17, 35, 50, 37,134, 41, 18, 17,212, 41,208, 71,199,202, 59,148, 80, 24,111, 89, 59,139,137,
-145,148, 18,141,212, 76,131,197, 91,199, 80,107,134,192, 50, 6, 14, 85,141, 53,153, 24, 85,107,149,167, 5, 62,160,101, 22,105,
-212,193, 51, 78, 20, 14, 61,151, 66, 5, 67,202, 76, 99, 18, 6,232, 82,204,227,254, 74,210,155,136,237,203,205, 31, 93, 17, 76,
-168,252,117,171,143,189, 54,118, 51,122, 44, 63, 23,229, 77, 9, 69, 81,155,228,246,230,221, 60,232, 54,252, 71, 41,183,209,126,
- 54, 67,117,127, 44,113,174, 41, 40,193,205,195, 74, 21,145, 71, 16, 31, 41,236,191,250,235, 95,224,248,250, 1, 62, 38,250,117,
- 30,191, 59,147,245, 12,187, 59, 35,110,237, 78, 74,195,162,105,180,162,106, 84,222, 53, 35,112, 49,146, 82,188,124,206,233,130,
-131,141, 41, 96, 93,192,197,108,187,202, 76,130, 13,140, 41, 79, 43, 68,140, 40,145,168, 82, 94, 45, 57,231,145,198,209,185,236,
-231,118,214, 97,230, 61,177,239,113,171, 53,157,181,204,214,134,185,237, 89, 24,195,105,176,236,191,120,155,157,207,222,226, 43,
-127,254, 13,222,250,139,251, 12,142, 21, 47,220,124,145, 23,118, 26,252,196,240,245, 39, 6, 33, 34,143, 71,112,126, 56,196, 95,
-159, 50, 18, 2,150, 6, 81,107,226,193, 49, 15, 14,199,156,141, 43, 6, 71, 35, 26,169,209,109,141, 58, 24, 50,108, 27, 14,238,
-236,178,127,123,143,118,210,210,122, 24,161,168,155, 10, 85, 41, 70,114,139,207,140, 49, 96, 67,164, 25, 86, 76,198, 13,215,246,
-134,220,220, 27,113,109,119,196,193,116,192,100, 88, 51,110,106,180, 86,249,181, 8,145,152,242,136, 94, 10,201,180,209,236,141,
-242,104,252,134,150,200,121,199,255,246,111,190, 75,112,145,122, 48, 96, 50, 30,241,194,241,148, 59,187, 35, 82, 76,188,253,195,
- 71, 44,206, 47, 16, 62,112,234, 37,119, 38, 53,235,103, 75, 98, 31,217,213, 21, 55,246,134, 44, 58,207, 98,101,105, 27, 77,191,
-178,200, 8,211,225,128,225,112,192,218, 71,108,200,195,162, 81, 91,241,218,171, 55,240,178,229,251,127,253,221,143, 20,242,191,
- 79, 65,255,219,254,236,175,254,193,239,242,202,103, 62,203, 7,111,191,253, 9,171,162, 79, 56,164, 14, 91,216,221, 37, 76,134,
-252,236,222,152, 73, 83, 19,132,100,164, 4, 74, 73,146, 8, 60,176, 41,143,203,215, 38,251,213,119,106,142,170, 28, 8,178,142,
-145, 93,173, 8, 4,158, 47,138,255,184,187, 2, 19, 65,111,221, 35,162, 46,162,164, 79, 56,100, 92,213, 4,184, 50, 5, 31, 76,
-144,119,239,114,243,238, 45,210,225, 17,118,178, 83,114,229,107,180,210,153, 1,159, 34,199,117,131, 35,160, 17,168, 20,121,104,
-123, 78,251, 25,166,239, 88, 60, 62,229,236,222, 3,220,114, 1,203,213,143,159,190,109,178,224, 55,154,157,186,216,251, 66,118,
- 4, 5, 41, 88,121,203, 78,221,162,132, 68,136, 92, 72, 66, 12,104, 85, 19, 69, 98,131,126, 10, 82, 49, 44,135,114,155, 68,110,
- 10,149, 32, 59,234, 36, 65,102,124,240,218,102, 17,108, 42,207, 64, 81,236,136,202, 7,188,144,136, 50,117, 77,198,230,224,167,
-222,129,239, 73,222, 18, 76,143,138,158, 24,115, 98,156, 19,130,228,123,156,207,137,107,222, 88, 76, 74,232,148, 8,201, 51, 66,
-226,125,207, 40, 74,186, 16,169, 69, 34,152, 14,153, 32,218,142, 58,120,162,115,140,200,235,170, 97, 10,196, 4, 67, 85,177,246,
-134, 86,230,152, 85, 73, 22,232,170,242,236, 81,100,194,168, 32,139,182,129,156,248,137,192,166,188,231,246,228, 6, 83, 8, 8,
- 41, 98, 98,194,246,150, 73,211,240,104,181,162,169, 42,236,198,238, 38, 85, 41,172,113,155, 60, 88, 95, 81,158,214,114, 11,166,
-145,106,155,247,177, 57, 52, 74,145,109,145,155,149,173, 40,249, 32, 27,101, 59,229,227,189,223,254, 61, 81,166,224,179, 85,110,
- 28,155,186,248,229, 29,136,159,150,250,125, 88,252,122,169,202, 59,131,166,201,113,129, 27,127,173, 42,167, 27,228,149, 19,122,
-218, 34, 38,171, 10,107, 28, 70, 10, 86,214, 16,188, 97, 90, 88,215, 3, 9, 42, 9, 38,194,179,136,129, 90, 72,214,193, 99,202,
-232,109,217,175,243, 69,137, 64,250,142,118, 35,138, 43, 23,243, 68,192,204,244,140,235, 22, 17, 29,201,123,150,222,103, 7,124,
-204, 35,185, 29,157,185,191, 31,190,242, 58,215, 46, 78, 73, 73,226,137,140,145, 88,160, 67, 32, 69,194,186,196, 66,101, 72, 78,
- 40,202, 79,187, 25,167, 7,159,187,244,166,222,146,134, 40, 86, 6, 10,216,223, 23, 81,157, 43,132, 58,183, 81, 2,151, 55,126,
-227,245, 18, 69,100, 81,169,237, 30,101,179,123,140, 41,119, 8, 27, 59,197,213, 7, 65, 83,127,212, 94, 1,219, 36,162,205,184,
-176,124,224,183,254,201, 63,206, 56,221,144,112, 54, 95, 64,147,209, 0,129, 98,111,119,140,150, 10, 37, 21,141, 86, 72, 33, 75,
- 87,158,227, 83,157,203,162,176, 90, 73,154, 90,150,162, 14, 62, 70, 58,159,149,236,133,220,139,137,145, 40,178, 47, 85,196,144,
- 35,143,197,150,123,109, 66,192, 46, 76, 22, 9,245,142,213,202,176,156, 45, 56,159,175,152,245, 29, 51,103,145, 41, 18,157,101,
-109,122, 92, 76,236,190,112,140, 62,222,225,255,253,163,175,113,241,112,201,247,186,142,212,172, 9, 56, 62,115,227, 22,111, 54,
-137, 39,120,254,236,241, 26, 63, 55,156,159,175,169, 5, 48,110, 25,197,196, 99,179,160, 11,129,190,213,204,118, 71,156, 54,146,
-147,169, 34,222, 30,179,216,169,176,149,162, 54,121,100, 41, 7, 53,205,184,166,110, 52, 35, 89, 49,172, 53,173,146,180, 62, 50,
- 33, 49,110,107,166,147,150,107,135, 99,246, 39, 3,246,166, 3, 70,131, 26, 93,108,128, 90,201,178,126,141, 36,159,213,255, 82,
- 8, 26,173,153, 12, 42,246,234,138,147,101,199, 35,165,248,242,215, 63, 32,133, 28,172,209,212, 53,195,129,226,217,188,103,185,
-116, 12,147,228,116,102,153,205,206,120,180,154, 49, 11,137,111,254,240,251,124,240,236, 62, 39, 23, 39,188,251,240, 62,143, 31,
-157, 48,191, 88, 48, 95,204, 57,123,122,206,163,135, 79, 57,125,126,206,197,197,140,231, 39, 39, 44,214, 29, 85,173, 8,174,167,
-235, 12, 54, 9, 6,187,215,137,202,242,224,189,123,151, 0, 69,254,158, 69,253, 71,125,223,124,187,191,180,124,240,222, 7,208,
-175,255,238, 5, 93,235,220, 1, 31,102,129,220,205,166,166,173, 50,238,116, 32, 37, 90, 87,120,231,240,222, 49, 95,153,188,230,
- 27,100,178,216, 65,147,115, 35,234,148,232,125, 96,225,115,126,184, 57, 95,110, 35,135,109,233,188,170, 97,238,218, 69, 41,146,
-155, 46,253,147,196,126, 82,228,191, 55,220,129, 23,142,121,243,198, 49,135,211, 67,218,193,136, 51,213,146, 68,158,208,205,234,
-150,167, 40,166, 34,113, 18, 35, 67,239, 56,247, 14, 17, 19,111, 89,151, 31,204,125, 15, 23, 11,152,205,126,124, 66,221,230,245,
-240, 30,212, 32,127,174, 65,102, 71, 64, 44,234,105, 37, 8,206,211, 14, 90, 66,112,104,169,177,193, 51,168,106, 20,153,236, 25,
-188, 65, 11,149,215,103,185, 68, 19,108,160, 86, 50,219,172,109, 66, 40,137,136, 9, 93, 30,105, 61, 80, 33, 72,133, 0, 42, 76,
-204,114,158,144, 15, 83, 90,103, 13, 11,189, 39, 57,159, 5,202,102,141,240, 14, 65,200,196, 59, 34,214, 5, 98,200, 17,170, 85,
- 57,124,120, 41,192,245, 68,233,169, 19,120,231, 24,162, 89, 70,207,184, 30, 16,189, 67,235, 1,157,235, 25, 75,133,113,150,125,
- 41,209,128, 70,160,133, 68,138,204, 37,168,164, 32, 68, 79, 85, 38, 9,163, 36,240, 66,228,175,131, 72, 31, 44, 72,141, 38, 17,
- 81,185,112,147,138, 51, 89, 32, 98, 66,165,136,147,153,247,174, 8,244, 33,177,234, 13, 35, 93,115, 70,164, 74,121,122,145, 68,
-177,153, 41,181, 85,160, 20, 23, 28,141,206, 98, 55, 41,182, 19, 42, 33, 62,122, 77,109,158,219,151, 93,186,222,142,211, 55,142,
- 37, 23,114,189, 8,108,187,247, 80,108,112,107, 91,106, 72,209, 86,249,248, 83, 42,234, 74,231, 34, 30,200,114,125, 84, 62,177,
-232,156,129,158,199, 21, 41,183, 8, 66,111, 21,130,177,132,164,152, 34,221, 79, 20,123, 67,222, 95, 91,107,105, 73,104,153, 71,
- 64,144, 72, 41,228, 44,246,222,226,163,203, 14, 2, 2,131, 2,132,217, 67, 48,174,114,150,179, 46, 23, 56, 68,124, 25,239,235,
- 20,105, 35,204,108,192,133,200, 72,128, 45,121,221,183, 79,159,179, 44,144,148, 81,132, 69,121, 23, 12,130, 25,137,133, 16, 44,
-125,190, 32,214, 65,112,238,242, 41,249, 50,150, 53, 94, 21,192,197,210, 89,171,141, 68, 49, 67,248, 83, 17,187, 37,114, 52,235,
-102, 36, 35,139,176, 78, 94, 17,207,249, 66,170, 43, 88, 81,124, 25,185,200, 43,116,174,116,133,207,189,177, 91,136, 43, 66, 62,
-228,246,128,193,214,162,243,251,255,233, 31, 98,186, 28, 44,225, 92, 32,186,192,238,206, 36,159,193,146,164,109,107, 14,134, 45,
-195, 90, 83,215,217,141, 16,203, 80,161,210, 32,146,160,105,178,133, 45,199, 80, 71, 92, 12, 24, 31, 8, 41, 71,168, 38,145,178,
-133, 80,230,216,220,232,179, 18, 28, 4,222,121, 92, 8, 8, 31, 57, 95,245, 44,214, 22,103, 29,171,222,240,164,235,120,188, 94,
-115, 97,123,214, 9, 92, 37, 56,235, 58,150,214, 16, 43,197,203, 47,189,192,201, 98,205,215,254,215,111, 32, 6,146,186, 18, 52,
-119,246,249,186,142, 28, 72,184, 62,217,227,243,215,111,242, 89,147,247,204,223,127,106, 8, 35, 80,141, 98, 60, 25,179,127,112,
-204, 75,135,199,188,116,227,144,113,165, 9, 90,114,237,230, 14,211,189, 17,207, 47, 86, 72,227, 72,215,166, 84, 71, 99, 70,147,
-134,145, 84, 84, 97, 43,142, 22, 62,162, 67,162,173, 85,254,248,184,165, 29,214, 12,219,154,166, 86,217,238, 87, 28,142, 46,101,
-191,120, 12,161,192,167, 4, 77,165,169,106,133, 20,138,243,147,158, 7,167, 11,118,247, 7,156,156,175, 49,103, 11,170,170,230,
-151,111,236,241,198,241,148,135, 23, 29, 51, 99,120,116,190,224, 7,247, 63,224,157,179,167, 44,187, 30,223,205,232,215, 38, 15,
- 98, 18,132,228,115,183, 20, 12,203,213,138,179,229,140,179,197, 57, 23,171, 57,103,139,115, 78,215, 51,158,207,207,184, 88, 94,
-240,222,179, 71, 60, 57,125,198,129, 24,146, 82,228,197,151, 94,230,223,252,201,159,254, 72,251,122,250, 49,133, 94,252, 29,138,
- 61,139, 89, 46,156,159, 52,221,251, 81,140,133,241, 4,142,247, 47, 73, 93,183,171, 42, 91,122,145,116, 36,250,190,207,217, 0,
-120, 30,117,219, 16,142, 78, 40, 38,141,100,110, 3, 41, 69,154,148,144,214,243,238,179,115, 46, 51, 77, 47,177,155, 50,143,224,
-155,122,171, 92, 86,242, 71, 79,193, 54,201, 92, 41,193,104, 10,135,187,220,190,118,147,233,104, 23,163, 52,162, 26, 48,208, 21,
- 23,190,116,114,222, 17,180, 98,153,224,209,122,141,171, 26,190,231, 45, 31,244,235,124,162,247,174,196,124,174,243, 14,253,111,
-211,199, 84, 58,123,158,147, 7, 74, 38,134, 93,231,102,106,227,190,145, 18, 19,242, 65, 77,132,192,176, 25,210,185, 30,169, 21,
- 34, 69, 26, 85,147, 66, 94, 51, 58, 23,114,132,181, 84,185,185,241,145, 86,103,129, 43, 34,195,193,214, 33, 18,123, 75, 16,153,
-246,104,215, 46, 11, 92,125, 32,134,132, 36, 18, 58,131, 95,175,243,218,109,221, 33, 66, 79,112,150, 16, 60,193, 58, 2,129,228,
- 18,142,172,175, 81, 50, 93, 90, 12,125,112, 89,180,236, 28, 49, 69, 26, 50,113,174, 10, 17,157, 32, 9,141,136, 14,180,162,139,
-130,166, 16, 2, 13,130, 70,105,230,209, 83, 41,133, 41, 13, 76, 16,138, 4, 52,222,177,146,154, 58, 88, 92,180, 40,153, 93, 58,
- 97,147,213, 65,194,136, 76, 43, 13,100,124,109, 37,242, 33, 65,165,242,185,166, 72, 77,100,105, 29, 61, 25,128,165,180,102, 34,
- 37,149,210,140,128,186,174,104,148,206,221,127, 42, 66, 56, 87,158,223,186, 52, 85,233, 10, 54,124,147, 13,162,244, 86, 32,183,
-177, 76,166,184,213,157,108,224, 67,186, 8,235, 54, 72,114, 85, 72,114,118, 85,252,244,153,191,207,170,251, 9, 23,245,170,134,
-122,152, 11, 77,211,108, 59,197,182,222, 6,202,167, 43,116,164, 13, 98, 79,177, 21,127,197, 77, 23, 26, 47,141,248, 89,168, 16,
- 57,146, 9, 85, 41,116,244, 4, 23, 80, 49,226, 98,230,100, 43, 41, 89,118, 75,100, 74,180, 41,177,178,134,155,186,206,187,250,
-224,217,211, 53, 34,194,210, 57,166,170,166,143,150,228, 2, 77, 65, 67, 6,231,240,198, 16,146,160, 46,225, 35, 73,194,158,212,
-204,125,126, 19,155, 4, 39,197,114, 23,145, 88, 41,104,149,224,153, 79, 44,125,196,169,172, 88, 78,137,220,145, 75,181, 85,178,
-167,210, 29, 43,182,156,235,203,184, 74, 93, 10, 58,249,231, 37, 41,232,114, 85,177,185, 24,160, 88,221, 82, 81, 12, 23,177, 81,
-239, 33,169,226,111, 47,175,175, 42,212,169, 75,235, 91, 9,153, 73, 42, 95,116,155,220,223, 16,248,204,239,255, 7,124,254,115,
-159,230,226,124,133,174, 43,136, 25, 12,147,130, 96,119, 60,100, 52,108,217, 27,182, 28,140, 26,154, 70,149,125,176,192,167,132,
-136,100,116, 36, 89, 36,183,233,212,125,204, 16, 26, 98,188, 92,253, 9, 41,168, 68, 14,222,169, 68,217,239, 9,208, 62, 18, 67,
-164,235,115, 32,137, 89, 90,170, 69, 71, 88, 25,132,181, 44, 58, 75,111, 45, 74,228,220,251,211,174,103,213,119, 57,132,103,210,
-242,194,155, 47,242, 23, 95,121, 11,255,175, 79,216,105,160,185,214,210, 87,160,158,206,249,225,122,205,119,194,146,163, 73,195,
-241,235,159,226, 55, 62,253, 38, 95,184, 46, 56, 28, 40,102,149,228,177, 8,132,228, 56,237,215,116, 54, 32,146,162, 70,176,190,
-232, 89,156, 46,152, 55, 53,211, 59,135,140,174, 77,208,149, 66, 70, 8,179, 30,177,242,132, 62, 91,212,130, 11, 36, 34,177,146,
-184, 70,163, 27,141,174,213, 37, 77, 48, 21,149,127,138, 9,235, 2,179,222,177,234,242,148, 66, 73,137, 82,146,189,241,128,247,
-159,102,202,156,112, 6, 85,107,174,239,141,104, 22,145,167,203,158,135,103, 51,254,242,222, 51,158,159, 93, 96,157,167,110, 91,
- 22,231,115, 30,159, 95,100,228,104, 74,204,215, 61, 54,122,198, 74,179,182,129, 85,112, 24,239, 49, 49, 11,150, 58,239, 89,245,
-249, 64,112, 54, 95,241,131,231, 11,124,223, 19, 19,204, 23, 61,251, 42, 59, 19,170,113,203,151,126,251, 55,248,211, 47,255,233,
-223, 40,232,252, 67, 88,241, 31, 47,238, 87, 57,241, 63,142, 25,223, 78,224,230, 33,236,142,178,216,118, 80, 65,128,164, 5, 85,
-204, 29,166,113,129,150,200,147,181,229, 91,103,102, 11,136, 41,207,150,147, 36,120,169,202, 99,230,117,103,121,235,225,156,228,
- 74,254,244, 38, 17,173, 42, 99,209, 16,202, 90,176, 60,131, 62, 30,125,250,241,157,250,100, 47, 7,172, 92,191,201,231,118,247,
-121, 97, 58,229,246,100, 66, 91,124,226,247,205,106,203,151,112, 22,103,123, 80,138,133, 47,241,157, 17, 88,157,230, 46,219,153,
-252,255,157, 45, 63, 6,136,250, 4,171,176, 32, 79, 66,243,252, 59, 23,121,155, 69,154, 84,242, 18, 84, 21,148,192,200, 72,240,
-185,161, 9,209,163,117,133,148,185,203,148, 34,147,228, 66,240, 52,149, 98,237, 92, 97, 33, 68,214, 38,175,107, 86,189, 37, 57,
-143,174, 43, 98,116, 68,227,179,107,207,122,100,136, 8,219, 35, 41, 2, 97,107,137, 46,107,137,172,237, 72, 27, 93,141, 16, 89,
- 52,231,109,137,255,149,184,148,133,118,189,207, 59,118,235, 60, 54,250,146,171, 18, 49,174,167, 18,146, 62, 4, 26,145,136, 50,
- 35, 93, 91,169,168,165,162,139,158, 29,169, 88,199, 44,108, 91, 69,135,143, 1,169,179,224,109,229, 45,161,106, 72,209, 97,144,
- 68, 33,104, 82, 98, 22, 61, 41, 69, 66,140,116,209,229, 41, 79, 10,120, 66, 57,124,230,103,148, 66, 98,163, 69, 36,129,141, 1,
-169, 4, 38, 36, 90, 37, 25, 11, 65, 43, 21, 83, 37, 25, 40,137, 21,137,105,147, 51, 60, 76, 42,224,154,250, 74, 33,142, 92,201,
- 1,185,146,183, 46, 75,179,235,220,150, 62,154,200,236,252, 65,137, 87,173, 84, 17, 94,151,110, 93,108, 60,242, 64, 23,242,129,
- 78,144,163, 92,131, 67,255, 68,133,113,170,201,167,197,205, 56,160, 85,249, 11,219, 20,163,171, 39,242, 90,111,189,217,165,225,
- 68,139,162,236, 43, 76,115, 27,144, 56,134, 90,178, 19, 5,115, 11,199, 98,197,168,110, 51, 76,205, 25,164,108,216, 19,154,167,
-221,146,157,170,162,179,134,144,224, 72,215,216, 16,153, 8, 24,171,154,174,236, 89, 14,116,205,210, 91,118,208,204,177,172, 67,
- 68,133,136, 38, 43, 42,165,246, 44, 13,184, 74,163, 98,226,185,235,144,149,102, 29, 50,225,105, 71, 42,102,228, 83,145, 36,135,
- 20, 88, 34,123,173,102,209, 59,162, 86, 89,229, 62,110, 96,105,182,147,139, 80, 96, 49,169,124,157,254,202, 14, 79,149, 31,211,
- 21, 79,162, 17, 48,186,178,155,217, 16,235, 98,177, 58,216,176,213,189, 13, 11, 41,206,232,252,111,153,152, 39, 35,148, 92,236,
-170,164,106, 73,189,125, 52, 71,113,249,190,189,121,231, 38, 49, 65, 59,108, 16, 90, 98, 93, 32,153,128,115,185, 91, 81,149,204,
-160,147,178,247,174,149, 40, 78,164, 44, 56, 49, 62,162,138,201, 89,108,222,234, 50,136,137, 69,176,185,137,154, 23,136,156, 52,
-152, 4, 82,230, 49,161,244, 33,171, 86, 59,131,155, 25, 84,111, 11,203,191,104, 79, 66,192, 6, 71,159, 18,125,111,176,206, 32,
-108, 32,166,192, 94,219,242,176,115,252,233,187, 15,185,253, 70,197,200, 66, 67, 66,156,172, 56, 57, 26,113,231,229,215, 89,156,
- 61,225,191,139, 29, 47,135, 57,191,110, 87, 28, 31,222,230, 75,117,203, 23,206,159,243,131,229,115,238,173, 35, 95, 94, 95,112,
- 18, 3, 79, 42,201,207,238, 28, 51,158, 52,168,107, 19,246, 14,247,152, 30,140,144, 74, 98, 66,194, 45, 58,170,149,195,150,117,
- 4, 54,167,186, 5, 45,112,149, 36, 21, 26,156, 14, 9,225, 35,158, 72, 40,112,165,232,193,185,196,122, 29, 80, 36, 68,157,201,
- 93, 49, 74,222,190,191, 32,185, 72,171, 96, 58,108,121,218,121,236, 78,205, 63,123,105,194,119,204,138,127,241,116,129,143, 62,
- 31,168, 26,197,155,159,191,203,247,191,255, 61,238, 61, 95,114,115, 84,241,107,135, 55, 96, 26,249,198,124,206,176,110,217,175,
- 7,220,222,191,198,141,233,148,115,111,121,124,126,142,241,134, 85,183,228, 83, 71, 13, 7,163, 29, 46, 86, 75,158,246, 11,246,
-116, 67, 45, 34,157, 2, 21, 2,194, 68,190,248, 43,175,241, 95,255, 45, 29,122,250, 17,123,247,159,152, 5,174,109,217,185,123,
-141, 52, 26, 35,134, 3,122,173,241, 41, 17,130,227,161, 75,220,174, 61,206, 67,231, 28, 30, 79,146,101,229,197, 71, 57, 16, 17,
-248,234,188, 76, 2, 93,159,159, 47,178,192,155,218, 9,248, 46,239,215,171,186, 60, 92, 55,172, 8,121,217,204,255, 77, 21,190,
-206, 35,247,107, 59, 48,157, 66, 91,115,176, 59,101, 58, 24, 34,133,228,184,170,232,206,230,249,243, 89,207, 11,167,163,221, 10,
-135,165,132,174,227,118, 93,113,214,238,178,182, 43,234,182,194, 74, 9,135, 83,120,210,125,242, 42,162,169,175,156,144,178, 32,
- 12,116, 1,159,100,245, 51,115, 67, 14, 68,175, 97,217, 97,125,228, 98,144,223,161,131,225,148, 69,183,196,200,142,189,241, 1,
-189, 89,210, 52, 67,132, 23,172, 18,168,186, 97, 57,207,182, 71,173, 43,250,232, 81, 73,210, 69,143,181, 61,131, 74, 99,157,165,
- 81, 67,186,213, 18,165, 21,237,176,194,175, 59,162,179, 72,145,240,214, 33,149, 36,164,128, 3,188,181,101, 5,144,175,152,222,
- 25,180,200, 90,136,149,235,240,222,145, 80,116,209,160, 82,142, 16,237,172, 97,208,140, 9,101, 84,190, 38,209, 6, 11, 85,139,
-148,208, 91,195,245,193,148,179,110,206,158,144,172, 98, 96, 32, 20, 94,128,179, 61, 75,165,217,169, 26, 30,117,107,118,155, 66,
-243, 75, 48,147, 2,233, 61, 81,105,188,136,248, 62,215, 0, 71,194,199, 72, 93,215,152,148,178,255, 30,193,146,148,209,204, 74,
- 81,167,200, 16,113,169, 37,104,154,124,184, 59,239, 35, 71,117, 13, 82,226,101, 96,169,134, 4,105,179,253,176, 41, 5,217, 95,
-205, 89,151, 91,139,166,247, 31, 93,169, 92,118,249, 62, 83, 70, 55,251,246,141,152,122,115,237,106,153, 39,189,227, 97,190,134,
-157,253,136, 44,250, 39,243,173, 46,133, 56,216,140, 36,213,117, 25,161,139,143, 65, 25,202,233,164,119,249, 11,118,229,215, 38,
- 92, 25, 71,196,178,128,245, 68,217,162,116, 69,178,145, 29,237,104,172,162,247, 29,187,186, 34,106, 65,111, 87, 64, 98, 42, 20,
-143, 86,107, 14,116, 22,125,116,166,131, 42, 39, 13,137,166, 98, 32,171,242,224,137, 52, 90,208,123, 71, 29, 35, 78, 64,231,125,
- 14,134,145, 18,150,134,117,163,209,192, 89,128,161,208,168, 16,168, 10,157,163,147, 10,161, 21, 9,193, 72, 87,132, 4,159,169,
-106, 46, 66,224,212,184,172, 20, 29, 54,249,164, 54,172,179, 26,119,163,162,189,138,105,213, 34, 23,225, 88, 66, 0,130,206,150,
-154, 77, 97,151, 41,167, 59,169,226,139,244, 97,235, 93, 44,118,176, 75, 76,108, 36,191,222,182,252,219, 67,189, 45,248,151, 1,
- 26,155,255, 75,111, 11,122, 57, 83, 93,187,125,227,242,115,202, 18, 18, 81, 38, 83,249, 66,148, 81, 18,124, 22, 31,110,180, 67,
- 66,228, 63,171,149,184, 76,221,173,149,200, 16, 37,178,117,205,167, 88, 2,177,242, 9, 53,164,148,247,237, 72,162,207, 73,122,
-193, 6,154,148,149,238,110,237,208,197,121, 96, 0,227, 29,198, 88,214,125,199,172,235,145, 36,132,179, 4,235,145, 36,130,150,
- 12,199, 3,190,255,193, 3,150, 95,153,243,149, 99,201,254,169,229,215,247, 26, 94,126, 97,200,226,241,130,123, 23,223,224, 66,
-193,162,210,236, 69,248,111,215,107,126,121,239,144,234,180,227,101, 85,243,185,163,215,249,247,142,111,242, 79,102,167,124,227,
-102, 67,251,230, 13,142,238,238,229,123,208, 37,116,165, 17, 62,208,135, 60,102, 84, 2,210, 40,147,181, 36, 2,233, 50, 75, 32,
-200,124,125, 87,100,155, 86, 21, 34,149,143,216,232,115, 98, 96,217,217,133, 62,226,109,158, 56, 33, 37, 33,230,108,131,211,251,
-107,162,244, 60,239, 61,222, 59, 30,159,207,184,251,133, 23,137, 55,119,184,247,214,135, 92,172,151, 8, 1,163,166,229,104,111,
-143,221, 81,195,209,222, 17,191,249,233,138,100,214,236, 79, 15, 56,237, 46, 88,167,196,163,231,103, 44,141,231,165,211,231,188,
-118,237,144,233,222, 33,203,126,193,186, 55,220,222, 61,224,213,163,235,188,124, 48,226,193,197,138, 47,255,240,175, 88, 44,102,
-188,176,183,199,139,251,135,220, 58, 56,228,240,250,148,187,135, 19,254,229,255,244,207,249, 79,254,179,255, 28,212, 0, 49, 26,
-195,225,136,116,112,200, 63,190,113,196, 31,175, 86,172,159, 61, 39,157,156, 34,158, 94,128, 89,126,180, 99,223, 57, 34, 29,236,
-192,221, 87,152,142, 15,153, 47,158,230,103,195,226, 28,206,230,136,211, 11,146, 89,253,232,226,165, 53,140, 39,164,209,152,235,
-147, 17,170, 25,162,129,185,115,124, 24, 18, 67, 25, 89, 88,203,164,146, 84,193,241,212,194,131,133,217, 10,143, 98, 42,211,171,
-152,243,202, 77,202,247,150, 47, 72,207,203,123,178, 20,207,166,222,118,237, 27, 56,147,214, 63,218, 68,162, 91, 24,239,194,241,
- 97,193,211, 14, 25, 55, 99, 8,142,224, 61, 86, 64,139,100, 32,122, 88, 92,228,117,195,168,133, 33, 48, 57, 6,215,241, 11, 56,
-154,233,132,199,243, 57, 71, 85,102, 21, 84,214,242,221, 90, 93,106, 1, 62,241, 91, 40, 48,169,148,242, 93,162, 54, 63, 47, 33,
- 80,107,155,153,226,203,242,111, 52, 26,172,193, 84,146,147,144, 88, 37,207,141,122,138,175,107,116,183,160,210, 53,201,174, 24,
- 84, 99,122,215,209, 70,143, 80, 21,189, 51,180,117, 3, 66, 50, 95,175, 51, 11, 62,130, 49, 29,109,221, 98,102, 39,212,170, 66,
-167,200,234,124, 65, 91, 85, 16, 61, 94,120,208,224,173,199,135,136, 23, 57, 26,123,105, 13,149,140,244, 33,101,107,170,144,120,
- 99,208, 2,214, 49,139,102,149,172,177,193, 18,173,103,183, 25,211,187, 53,168,134, 54,145,117, 57,101,135, 46,128, 97, 51,228,
-172, 95, 49, 84, 21, 42, 37, 66,232,216,169, 6,244,174, 39,169,154, 67, 41,121,226,179,102,228, 3,179,102, 87, 41,198,213,144,
-222,245, 72,221, 16,146,197, 27, 79,163, 21, 3, 33, 24,164, 68,175, 53,203,228,233, 99, 6, 64, 61,245, 57,155,161,119, 33,247,
-156, 74, 80,213,154,129, 74,232,242, 30,117, 40,174,143, 91,158,216, 28, 46,165,133,160,209,146,245,160,212,191, 88,220, 80,161,
-216,208, 54,220, 17, 95, 66, 88, 16, 91,167,211,149,237,108, 22, 81, 39,104,138, 48,206, 22, 58,233,230, 97,107, 74, 30,251, 16,
- 88,235,143,220, 71,250, 39,214,165,235, 42, 95,240,114,131,195, 43,224,251, 13,150, 81, 95, 17,108, 41,149,139,212,166,160,199,
-114, 2,217,132,204,199, 50,158, 42,187,136, 42, 70,218, 20, 24, 7, 65,165, 36,131, 24,136, 62, 65,144, 25, 50, 32, 4, 34,244,
- 84, 41, 34,131,160, 22, 42,243,199,147, 97, 52,152, 32,172,101,210, 14,153,247,107,122, 60, 45,249,180,219,165,200,210, 5,180,
-150,224, 36, 38, 56,168, 36,195, 16, 89, 58,193, 72, 75, 98,202,221,110,160,198, 43, 50,208,161,124,205,193, 39,218,170,198,132,
-132,142,240,218,209, 30,223,158,173, 89,251, 8, 85, 81,165,143, 70,208, 25, 96, 8, 39,167,249,141, 33,150,132,182, 43, 29,187,
-240,101, 98,225,183,158, 93, 87, 70,246,233,138, 48,103,211,161, 75,181,101,206,203, 2,248, 31,214,249, 71,239,182,135,136,232,
- 63, 86,220, 47,211, 92,138,186,210,211, 12, 27, 86,171, 14,129, 32,132,136,148, 18, 93, 85,236,239,141, 57,156,180, 8, 20,139,
-165,101,111,218,208,200, 68, 72,130,222,101,194, 94, 45, 36, 82,201,156,208, 86,171, 2,224, 74,248,152, 5,144, 98,227,212, 75,
- 9,173, 4,141,148,185,179, 21,121,196,143,150, 44, 66,192, 11,129, 41,125, 94, 21,242,158, 90,250,192,220,121, 22,222,229,235,
- 64,128, 23,162,164,210, 38, 26, 33, 57, 24, 79,248, 63,191,254, 13,190,141,135,168,120, 42, 96,231, 73,207,219, 11,135,172, 4,
-183,251,196,235,119,134,132, 23,135, 60,141,134, 83, 60,127,254,244, 41,175,190,112, 23,185,127,141,231,131, 49,191,220, 56,210,
-221, 99, 62,247, 75,183, 25, 76, 26,164,202,236,233,229,220, 18, 66,192, 46, 45, 62, 69, 42, 93,132, 69, 77,118, 17, 68,178,207,
- 55,166,148, 1, 81,229, 44, 38, 67,162,242,137,202,231,151,184,243, 1, 73,202,160, 64, 9, 52, 32, 43,129,247,145,206, 68,158,
-252,245, 41, 73,192,169,243,172,141, 35,120,199, 98,214,115,255,225, 25,221,221, 3,228,189, 39, 8,225,144,149, 98,160,106,142,
- 71, 53,196,196,181,227, 3, 30, 61,126,192,151,127,240,152,127,181,250, 0,166, 21,105,238,192, 68, 82, 31, 56,101,201,215,213,
- 51,196, 72, 80,239, 84, 12,106,193,236, 91,239,103,152, 73,163,152,214, 10,173, 5,183,246,106,174, 13, 70, 8,235,216, 25,213,
- 52,195, 10,223,123,126,254,149, 91,136,207,126, 6, 66, 5,147,154, 52,154,240,251,215, 95,228,165,155,251,252,202,179,115,254,
-120,176,139, 60, 56,130,151, 61,156, 60, 37, 61,155,195,222, 8, 14,143,224,213,207,209,220,125,145,255,242,103,142,233,164,226,
-191, 57, 89,177, 62, 93,192,179, 25,156, 63,207, 66,185,147,247, 51, 94,117,118, 10, 31,220,223, 10,196, 84, 11,215, 15, 17,109,
-205,180, 25,114, 52,174,121,190,182,188, 60,104,152, 42, 65,237,123, 4,154,181,113,156, 57,120,104,220,182, 40,199, 84,208,170,
- 62,251,207, 29,127,147,162,216,212,249,255,218,216, 65,175, 10,211, 54, 31,251,248, 97,163,169,115, 76,241,222, 46,236,142,203,
-122,113, 8, 82,114, 84,122, 20,210,154,189,170,162,119, 61,181, 93,100,117,253,201, 9,248,105,102,212,175, 78,184, 59,222, 71,
- 72,201,249,252,156,170,105,153,154,142,211, 4, 66, 68,126,161,213,188, 53, 30,100,219,106,138,159,220,173, 39,147,119,233,212,
- 32, 29,196, 10, 82, 93,148,252, 85,214,238,200, 30,150, 5,104, 82, 87,176,232, 8,181,163, 75, 3,238,185, 51,110,178,203,194,
- 44, 57, 30,237,230, 46,218, 5, 6,109,131, 15,158,196,146,182, 26,229,144, 19, 20,109,221,210,151,204,119, 85, 85,244,235, 37,
- 33,121,146,242,248, 24, 24, 15, 6, 56,211,101,177,172, 86, 88,111, 73, 49,147,229, 36,176,234, 87,232,130, 76,207, 26, 40,240,
-193,210,199,136, 45,224,175,144, 34, 43,211,179, 87, 55, 80, 43, 46,130,161,173,134,156, 23, 68,110,171, 5, 93,136, 92, 75, 61,
- 67,165, 57,214, 48,168, 26,162, 51,172, 83,228,238, 96,135,123,221,140, 93,221,208, 0,139,224,178, 94, 39, 4,214, 66,225,132,
-100,238,214, 52, 74, 65,114,204,141, 5, 33,104,125, 98, 34, 68,225,115, 4, 36,138,152, 2, 39, 33, 49,172, 20,115,227,209,165,
- 41,233, 93,224,168, 85, 12,148,102, 21, 34, 73, 43,134, 72, 28,112, 60,168,232,188,192, 9,197, 17,145,199,194, 97,199, 5,243,
-109, 77,110, 96,253, 21, 6,131,190, 98,125,107,175, 76,178,117,181,117,100,196,144,175,177, 88, 30,126,151,126,119, 7,163, 42,
- 23,253, 72, 78, 40,116, 91, 56,210, 79,102,167, 94,215,249,147,145, 5,111, 23, 74,145,222,200,253, 55, 5,168,100,173, 99,220,
- 71, 99, 68, 55,157,251,229,136,126,115,106,206, 6,192,253, 86,115, 80, 73, 6, 82,179,171, 96,164, 52, 62,198, 60,194, 41,151,
-119,159,114,186,215,133, 15, 12,180,102,183, 82,132, 16, 9,206,208, 42, 77, 42, 59,197,113, 85,115, 98,214, 52, 73,177, 32, 17,
- 83,226,220, 71,162,138, 12, 19,184,152,112,192, 48, 38, 42, 20, 49, 70, 98, 76, 24, 18,170, 4, 14, 36, 37, 49, 82,177,142, 9,
- 47,193, 75,208, 40,214,222, 49,173, 43,102, 73,176,211,182, 24, 41,168,218,150,144, 34,114, 48,202, 67, 11,145,133, 51,200, 66,
- 18, 74,155, 99,153, 36,135, 9,151,179,150,204, 69, 42,219,221, 74,184,203,134,229,185,121,120, 73,145,145,131, 66,228, 3,148,
-139, 91, 27, 68, 42,188,104,121,165,160, 95,198, 18,114,169,156,127,233, 75,191,205,111,254,234, 27, 88,159, 48,198, 17, 93,194,
-152,140,214, 77, 81, 48, 29, 15, 81, 82, 34, 81,140, 91,141,143, 57, 64,199,135,236,237, 20, 5,214,162,181,100, 84,201,178, 42,
- 74,244, 62,251,211, 33,149, 21,126, 22,183, 84, 50,211, 4, 19,153,190,167,138,237,205, 27,207,197,210,176,234, 45,157,179,156,
-116, 29,235, 62, 35,132,141,181,216, 34, 44, 75, 49, 11, 26,155, 16,184,241,210, 29,186,221, 17,255,226,255,250, 43,208,240, 51,
- 63,191, 79,115,179,225,161,177,124,127,230, 89,107,248,208, 37,218,169, 98, 48, 81,180,131, 38,187, 37, 4,200, 97,197, 7,222,
-242, 78,116,252, 69, 35,153,221, 28,179, 35, 4,235,185,207,228, 80, 23, 48,198,225, 59,139,232, 29, 77,163,169, 43,133,174, 43,
-164, 86,164,178, 31,139, 2,108, 74,185, 3,137,153,161,160,108, 96, 16,160, 9, 57, 93, 14, 27,144, 49, 80, 9, 73, 43, 4, 35,
-169,104,170,124, 48,248,224,201,140,175,127,235, 67, 22, 11,143,136,137,241,168,193,244,134,139,211, 83,158,127,248,152,250,238,
- 33,107, 47,169,147, 38, 73,141,241,134,139,222, 49,190,190, 71, 88,246, 16, 61,223,254,230, 3, 88,120, 68, 35,248,204,157, 29,
-222,120,241,128,134,187, 93,191, 0, 0, 32, 0, 73, 68, 65, 84,209,181, 1, 95,248,185, 59,252,230, 47,191,201,235, 71, 67,134,
-201, 51,214,130,179,148,168, 43, 73,248, 97,143, 59,247,152, 29,201,201,204,241,108,181,224,162,159, 49,115,142,123,114,194, 55,
- 58,199,183, 87,142,112,227, 85, 30,174,122, 24, 76, 65,183,188, 60, 30,209, 74,193,247, 47,230,156,186,132,208, 45,236, 28,194,
-120,138, 56,190,142,248,165,223,134, 47,124, 1,174, 95,227,159,222,217,231,119,247,107, 34,130,175,158,172, 89, 93,172,115,129,
- 57, 62,128,155, 55, 33,141,225,229,207,242,123,199,183, 16,119,238,114, 54,191, 40,137,107, 35, 24,104,118, 39, 19,142,106,205,
-194, 69,142, 42,197, 60,194,142,244, 12, 8,236,198,196,158,150, 28,214,130, 51, 23,232, 72,217,218,149, 34,204,215, 96, 75, 84,
-102,252, 17,251,233, 31,103, 1,253,248,199,154, 26,244, 0,142,246,225,230, 81,238,164, 7, 99,168,219,203, 17,248, 69,112, 28,
-235,138,107, 42,130,235,168,157,225,251, 39,143,120,244,195, 71, 48, 63,207,247,243,176,134,166,229, 77,145,152, 11, 73, 31, 35,
-199,209,115, 46, 20,187,193, 48, 77,145, 69,136,156, 44,139,255,248,147, 44,109,151, 24,209, 2,189,145, 37,135, 23, 85,244, 51,
-114, 75, 41, 35, 71, 18,231, 17, 48,224, 3, 73, 38, 2,145,117,200,217,235, 43,219,163,164,166,247,166,208, 53, 45, 90, 10,172,
-235, 50, 56, 9, 79,103,123, 20, 2, 19, 12, 34,230, 88, 87, 31, 13,117,221,178, 54, 75, 82,140, 24,223,229,251, 58, 37,124,176,
- 56,239,113,201,209, 23,226,219,202, 57, 86,166,195, 16,233, 92,207,154,136, 66,210, 71,207,202, 90, 22, 41, 33,163, 96,229,243,
- 24,125, 80, 55,116, 54, 79,122,171, 70,115, 97, 35,149,212,172,146,192,104,205, 68,130, 18, 57,175,189, 18,130,101,140, 28,170,
-138, 62,197,156,110,167, 52, 30, 65, 39, 53, 22,232,149, 68,232, 26, 39, 20,125, 10, 56,173, 56, 11,145,186,174,120, 28,139,210,
- 93,105,206, 80, 56,169, 17,186,162,139,137, 74,107,100,211, 48, 80, 26, 41, 21, 38,229,120,112,173, 21, 90, 85,212, 85, 69, 82,
- 16,189,166,170,242,223, 75, 33,242, 60, 93, 9,241,146, 34, 95, 3,133,160,122, 41,204,220,172, 99, 55,190,245,206, 22,213,113,
- 17, 51,167,114, 77, 75, 89, 18,255,202,239,233,162,181, 18, 50,231,131,164,242,140,239,186,159, 80, 81,223, 40,218,235,225,182,
-216,140,155, 60, 66,175,171, 92,172,140, 47,157,119, 17,107, 85,165,176, 95, 21, 11,144, 50,174,177,239,243, 39,105,182, 97, 48,
-243, 32,120,161,150,140,100, 6, 56, 16, 35,141, 84,244, 49, 20,225, 85,182,152, 61,237, 61, 85,157,199,239, 3, 89, 35,131,207,
-158,202,152,199, 55, 67, 37, 88, 57,207,173,175, 62,224,244,246, 20, 68,226,129, 11,104, 33,136, 73, 82, 75, 24,132, 92,164,100,
-217,177, 8, 41,177, 41, 49,212,249,112,146,164,196, 39, 65, 7, 24,157,139,157,148, 26, 27, 35, 97, 48,160, 82,217,242,229,128,
- 65,173, 17, 49, 50, 26, 12, 88,123,143,108,106, 82, 83,109, 71,131,170,236,182, 85,241, 65, 92, 82, 40,227, 54, 70, 53,168, 60,
-177,144,234,146, 35,158,105, 68,122, 27, 52,176, 41,212,155,172, 93, 91,156, 4, 50, 94, 9,136,217,180,255, 27, 47,125,238,102,
- 94,121,227, 13,222,124,243, 21,186,222, 98,251,128,119,129,126,109, 25,142, 91,130, 73,212, 77,205,164,174,185,190, 55,160,174,
-244,101, 67,180,185, 88, 99, 74,200, 4,149, 18, 52, 58, 99,119, 67, 76, 24,159, 21,199,130, 12,116, 80, 50, 83,230,148,206,244,
- 57, 17, 83, 22,168,148,233,140,142,145,100, 60, 43,235,112, 46,176,114,158,182,136, 67,102,166, 99,101, 13, 85,240,212, 33,145,
- 20,168, 65,205,141,215, 94,226,249,147,231,124,253,171, 15, 80, 93,226,217, 69,199,252, 81,135,185, 8,224, 18,171,161,132, 93,
-201, 91,239,244,252,127,125,199,100,209,241, 90,130,131, 70,243, 43, 14, 62, 53,222,225, 83,215, 14,217,215,146, 7,167,115,190,
-118,178, 96,120, 52, 36,106, 56,233, 13,231, 93, 30,169, 78, 7,117, 70,186,214, 21, 82,203,140,218, 20,224, 73, 57, 38,213,101,
-145,159,179,249, 33, 90,155,136,238, 29,218,120,164,241, 25,125, 27,161, 65,210,232,138,193,160,162,109, 20,111,157, 44,121,248,
-151, 15,243,219,227,160,173, 43, 6,195,138,174,179, 68,227,152, 45, 46,120,244,188, 35, 13,224,173,119,223, 99,237, 12,149,206,
-235,152,195,187, 71,188,112, 48,228, 83,135, 59,220,251,171, 31,240,248, 91,115,196,163,200,231,126,238,128,189,241,132,167,231,
- 75, 94,216,221,229,230,193,117, 6,205,136,215,175,221,224,223,127,225, 21, 94,220,155,242, 95,253,206, 23,185,117,171,165,211,
- 75, 94,191, 62,101,181,178,156, 34,153,254,236,231,208, 59,215,185,254,153, 91,248,113, 11,173,198,116,134, 31,222,123, 8,103,
-207,192,116,172,237,130,238,244, 25,223,126,250, 4,218,125,120,241, 53,196,203, 47,193,249,138,223,189,251, 10,191,189, 51, 64,
- 41,201,195,247, 30,241,215,127,252,255,176,227,134,252,239,127,242, 53,222,255, 55,127, 4, 15,239,193, 7,223,133, 39, 15,225,
-241, 83, 24, 78,248,252,157, 99,110, 29, 31,240, 84,142, 56, 25,142,242, 56, 81, 10, 24,143, 56, 84,154, 86,105,116,130, 69,140,
-204,186, 53,187, 10,110, 10,193, 68, 72, 38, 90, 49,214, 26,131,231,241, 34, 67,103,152,247,121,199,216,123, 62,121, 41,254,119,
-209, 7,105,216,221,133,221,157, 92,204, 15,246,114,119, 62,154, 22, 43,220,230,123,190,175, 30, 44,206,137,235, 5,179,229,140,
-239, 63,123,194,119,190,249,126,222,167, 27,123,249,245,220, 29, 12, 49,192,216,173,184,214,182,188,103, 58, 38, 49,235, 71, 30,
- 59,199,190,148,188, 62,150,116, 82,179, 58, 93,125,178, 96, 78,136,210,202,216,252, 99,148,121,194,167,171,252, 60, 73,174,164,
-124,153, 92, 68, 76,200, 98,229, 77,100, 44,130, 96, 45, 29,129, 36, 96,105, 59,148,136,184, 20,177,222,210, 59,203,194,245,164,
- 20, 48,206, 97,189,197, 38, 71, 76,240,193,249, 35,140,239,233, 76,199,217,242,130, 16, 3,115, 51,167,213, 89, 68, 55, 91,207,
-145, 66, 49,239, 23,216, 82,208,151,102,141, 11,129,117,244,172,157,199,166,140,141, 62,247,142,189,186,225,190,143, 84, 90,243,
-190,144, 28,212, 53, 78, 10,164,172,216, 27, 15, 89, 38,201,220,123,218,170,166, 71,208, 75, 77, 35, 36,170,174,217,209, 53, 21,
- 16,148, 68,145, 88,136, 68,171, 43,140, 82,172, 98,164, 43,137,115, 65, 8,134,237,128,170, 4, 81, 5, 85,179,138,138,132,226,
- 89, 72, 28,140, 70, 60,240, 18,161,234,236,203,175, 42,246, 70, 3,246,135, 35,166,163,150, 86, 87, 8,169,233,147, 98, 41, 5,
-136,138, 97,219, 18, 85, 77, 18,146, 65,213, 96,138, 5, 41, 74,193, 34, 74,106, 37, 89,167,132,212, 13, 73,203, 44,156,214,242,
-138, 56, 83,228,203, 51,165,178,103, 87,185, 94,250, 43,161, 64, 27, 16,205,230,251,165,112,165, 60,215, 71,131,124, 16, 24, 15,
-243, 97,116, 58,253, 9,193,103,218, 77,151, 46,183,157,186, 13,249,228, 32,203,130,191, 45,187, 3,185, 41, 74,229, 4, 19,202,
-206,221,150, 46, 61, 27, 9,183, 88,198,162,146,191,181,215,112,189, 82,236,169,138, 70, 10,132, 84, 68, 18,163, 74, 97, 98,202,
-136,209, 4, 81, 9, 92, 72,200,148,176,214,100, 75, 81,132,206, 90, 70, 74,211,165,196,218, 58,254,249,241,148, 95,208,154, 83,
-107,217,169,242,233,110, 82,105, 22, 73,208,200,204, 20, 94, 23,161, 22, 54,135,199, 40,221,208,199, 98, 37,168,170,156,199,142,
-196,107, 77,165, 52, 15,173,167,213, 53, 74,231,155,108,169, 51,112, 66, 21, 47,207, 88, 43,218,182, 65, 43,133,241,101,191,151,
-194, 21,107, 91,121,253, 54,184,216,164, 41,225,184,133,243,190, 73,228, 17, 91,202, 80, 74,249, 66,216,172, 60, 76, 1,102,184,
- 50,206, 55, 87, 64, 5,206,110,109,118, 73, 92, 62, 48,126,237, 55,126,141, 91, 47, 94,231,244,100,133, 53,174, 12, 0, 36,135,
-187, 59, 84, 72,170,170, 66, 42,193,241, 94,139, 86, 42,199,224, 74,177, 9,222, 3, 1,109,165,168,107,133,146, 89, 33,103, 67,
- 86,150,250, 13,127, 64,230,112, 23,165,179,157, 77, 36, 72, 62, 18,173,203, 29,108,130, 36,242, 65,224, 98,237,104, 98,194,164,
-192,220, 24, 22,235,158, 89,103, 50,198, 23, 88,120,143,175, 5,131,189, 29,118,111, 30,241,189, 63,253, 38, 60, 49, 92,219,211,
- 60, 63,241,176,220,172, 54,128,219, 45,175,189,113,141,120,183,230,248,238,132,111,181,146,217, 78,195,123,181,230, 94,114, 44,
-136,236,118, 61,215,214,142, 55,215,158, 21,137, 46, 6,206,231, 29,170,213, 84,149, 66, 41,197,100, 80,163,155, 10, 93,105,146,
-146, 89,140,227, 3,193, 7,156,245,244,107,139, 95,187, 60,233,176, 17,209,123,228,202, 94, 22,117,233, 98,222,183,105, 69,213,
-214, 84,163, 6, 89, 73,190,119,190,226,247,133,226, 78,210,188,123,209, 33, 85, 62, 52,121, 27,152, 45, 45,122,103,151,207,238,
- 13, 8,195,150,119,238, 61, 99,103,178,195,171, 47,189,198,139,215,110, 48,104, 36, 39,193,243,205,127,253, 45,222,126,126,193,
-108, 79,193, 99,207,123, 99,203,237,151,174,115,182,187,207,129, 89,242,103,127,241,109,158,199, 14,221,140,152, 12, 71,188,127,
-246,156,217,233,156,221,221, 3,238,254,193,239, 48,112, 2, 87, 89,174,255,234, 63,226,181, 95,124,157, 95,249,244,173,156,108,
- 54,106, 8,179, 57, 95, 60,108,248, 63,254,232,203,112,255, 1, 60, 63,103, 33, 60,143,134, 7,252,199, 95,252, 18,255,225, 23,
-127,142,191,220,157, 98, 3,136,199,207,248,244,160,101, 80,105,212,108,198,219, 31,190, 3,207,239,243,245,175,124,133,103,223,
-254,183,240,193,135,112,239,125,184,127, 31,222,125, 7, 30,124, 8,181,231,129,209,160, 42,254,218, 3,178,134,106, 0, 50,128,
- 51,204,164, 96, 12,116,193, 97,189,199,132,192,126,138, 52,193, 51,208,154,186, 76,138,130, 49,188,179, 48,136,101,135,176,203,
-156, 29, 16,255,129, 5,189,157,192,116, 7,142,142,224,112, 15,118,167, 57, 17,174,170,243,189,169,212,118,146,232,201, 35,254,
-245,138,116,118,206,179, 39,167, 60,252,225, 3, 78,159, 62,207,113,198,155, 78,123, 52,229,238,141,125,166,193,177, 55, 28,240,
-204, 89,172,115,104, 33, 24, 9,120,102,122,106, 33, 24, 70,199,189,222,179,114, 14, 35,225,165, 95,124,147,139,247,239,127, 66,
- 72, 83, 4,217,148,117, 93, 68,196, 10,145, 28,162, 82,136,122,128,232, 3,162,213, 8, 41,179,218, 60, 8,132, 22,136, 68, 62,
-100,134,128, 8, 1,239, 3, 54, 58, 58, 18, 43,223, 97,188, 35, 68,143, 18,146, 69,183,196,147, 29, 42,243,245,146,181,239, 49,
-222,240,116,181, 98,110, 12, 51,219,241,112,117,206, 78,221,242,108,118, 74, 76, 1, 37, 4, 15,206, 79, 25, 85, 13, 11,211,179,
- 48, 29, 11,235,152,185,158,153, 49,184, 36,120,152, 34, 70, 86,236, 53, 19,118,171, 1,175,238, 29,209,161, 57, 26, 14,249,161,
-210,200,186,197, 70,152, 69, 65,211,180,120,161, 89, 8,205,209,112,196,181,166,230,238,206, 4, 89, 85,172, 82, 98,183,105, 72,
-229,223, 51, 49,160,149, 98, 17, 3, 81,215,204,137, 56,169, 56, 24,142, 25,214, 53,149,168,104,155, 33,171, 24, 89,196,196,185,
-174, 24, 75,201, 7,214, 51,210,154,147, 20,177,186,230,184,170, 57,108,235,204, 50,145, 85, 78,252,211,154,251, 33,224, 84,197,
-169,170,168, 18, 8,149, 1, 72,125,146, 76,235, 1,231, 36, 90, 33,137, 90, 51,208, 21,161,110,242,189,228, 2, 76, 38,249, 61,
-171, 84,169,119, 5, 76,227,227, 86, 72,157,210,150,105,210,151,131,217,198,158,188, 73,120,187,244,176,151,213, 74,219, 20, 65,
- 83,147,107,234,112,248, 19, 40,234,149,206,212, 56, 89,216,180,155,136,186, 90,230,177,252, 64,103,146,220,160, 64, 79,122, 83,
-186, 75,185,245, 91,127,100,180, 84,124,236,155,110,176,213, 4,155,184,211, 84, 52, 82,102,177,130,148, 52, 72,156,204, 78,176,
- 70, 72, 66, 74,172, 66, 98,230, 3, 35, 1, 71,131, 33, 51,231, 88, 24,203, 81, 51,224,162,239,105,165,100,208,182,124, 38,101,
- 11,146,214, 21, 54, 5,166,186, 97,149, 18, 90, 43,214, 33, 17, 93, 96,168, 4,201,120,124, 85, 80,130,189,161,105,106,170,166,
- 37,166,128, 67, 32,154, 6, 23, 28, 23, 49,113,125,178,203,179,181,161,214, 21, 85, 57, 13,207, 75, 64,140, 75,129, 90,215, 56,
-235, 72, 8,140, 42,106, 8, 31,182,150, 62, 45,182,157,123,173,182,142, 0,138,143,189, 45,147,144,226,223,207,227,151,114,112,
- 74,177, 0,108,202, 9, 14, 87,224, 4, 27, 95,100, 25,213,139, 34, 79, 23,197,211, 24, 2,191,243,207,254,128,241,116,200,217,
-243, 25,198,250, 34, 66,203,118,172,182,105, 24,181, 21,215, 38, 67,246,134, 21, 82, 40, 72,121,114,145, 16,217,171, 94,176,139,
-147,129,190,196, 97,251,148,215, 26, 41,165,252, 22, 42, 65,173, 36, 18,121,137,171, 36, 68,116, 17, 68,198, 16, 49, 9, 86,214,
-179,232, 44,117, 8,244, 93, 46,232,115,103,241,206,161, 73, 44,100,226, 73,231,105,106,201,241,222, 62,231,167,103,252,203,255,
-241, 93,150, 83,120, 98, 34,141,137, 12, 10, 96,139, 62,194, 58, 48,184,213,240,250,193, 46,135, 77, 11, 66,112, 56,157, 48, 29,
-143,184,243,234,235,196,227,107, 60,105, 27,222,183,134,209,254, 14,225,238, 62,119,111,239,113,112, 52,101, 48,108, 80, 82,178,
- 51,106,208, 77,141,174, 20, 66,231,208, 26,159, 34,174,115,196,149, 37,174, 12,126,222,145,150, 6,107, 60, 51,239, 48,107,143,
-180, 17, 21, 2,202,165, 12,179, 16,217,242, 71,163,145,173,102, 69,228,222,202,113,227,133, 9,213,237, 9,103,227,134,106, 82,
-227, 67,226,230,235, 59,124,246,223,125,129, 63,252,252, 29, 94,121,237, 24,127,180,135,221,191,193,209, 11,183,248,210,231,110,
-241, 75, 47,237,243, 76,104, 46,230, 11,222,249,193, 61,186,241,132,223,250,167,191,129,255,212, 46,253,222, 46,255,253, 43, 47,
-240,250,193,148,231,159,122,137,119, 30,126,192, 95,255,223,143,184,111,159,177,236, 79, 89,137,200,159,127,233, 55,105, 63,117,
- 11, 53,172,241,175,221,193,188,241, 6,135, 55,247,249,229, 91, 83, 94,155, 84,164,139, 37,255,203,255,240, 63, 51,121,248,136,
-201,206, 17,235,135,239,240,224, 7, 79,224,198, 62,124,246,243,252,225,175,254, 10,255,197, 63,186,195,167, 38, 21,223,123,239,
-140, 15,254,237, 55,225,222,183,248,225,122, 78, 67,205,215, 58,135, 9, 1, 49,154, 66, 43,243, 14,127,181,248,168,122,222, 89,
-196,253,251,136,217, 41, 23,201, 49,244,129,107, 90, 82,251, 14, 84,141, 75, 57,186,249, 52, 70,186, 16,208, 49,210,117, 6,133,
-103, 95,101, 65,146,117, 54,243,199,173,227,195,139, 53,110,113,145,149,236, 49,254,195,176,182, 59, 59,176, 59,229,238, 43,183,
-217,191,126,157, 52, 26, 97, 54,177,152,226,138,208, 53,138, 18, 4,211,193,249, 2,158,156,192,249, 9,204,231,217,131,255,241,
- 17,190,247,204,116,195,206,160,166,149, 10, 3, 88,103,216,197,243, 36, 36,174, 87,154, 41,145,115,107, 57,104, 53,149,245,156,
-173, 58,226,176,198,232, 17, 92,156,255,205,102, 93, 74, 68,242, 8,106,132,220, 88, 85,213,150,113, 81,235,252,241,148,138,147,
- 74, 34, 76,143,208, 10, 17, 74, 81, 71, 32,156, 71, 24, 79,212,255, 63,105,111,246,107,105,118,158,247,253,214,248, 13,123, 56,
-243,169, 83, 85, 93, 93, 93,172,174,158, 56,153, 45,137, 10, 41, 51,178, 33,193,130, 36, 35,145, 97,192,210,133, 12, 36,200,159,
-146,155,228, 46,119, 9,144, 32, 72,174,236, 4, 50, 34, 40,242,144, 72,182,168, 33, 20,105, 81,162, 68,145,236,185,217,213, 93,
-243,169, 51,236,233,155,214,148,139,245,157, 58, 69,138,162,100,251, 0,141, 70, 55,186,107,239,179,135,245,190,235,125,159,231,
-249, 9,252,186,167, 75,145,158,192,178,239, 88,199,129,197,208,240,120,185,100, 29, 7, 78,251, 53,139,211, 5, 67, 18,244,109,
- 79,127,182, 33,124,252,132,199,143, 31,211,214, 5,235, 97,224,254, 98,201,188, 40,120,176, 94, 48,196,200,241,224,120,216, 14,
-156,119,129,141,146,172,148, 38,152, 10,165, 43,190, 48,219,195,214, 51,122,169,216,155,206,241,170,192,235,130,199, 33, 81, 84,
- 53, 66,107, 30,247, 29,167,194,176, 37,224,106, 89,241,210,116, 66,101,242, 69,170, 46, 74, 58,151,215,114, 46, 69, 74, 41, 51,
-162, 59,193,134,200,160, 13,115, 99,159, 89,248,148, 49,164,148, 24,132,160, 11, 18,133,224, 81, 74, 76,164, 98,153, 18,103,202,
-160, 99,224,192,150,204,170, 10, 63,154,219,210,200,182, 40,147,226,254,152, 26,249, 24,201, 92,192,169,208, 76, 77, 73,212,138,
- 90, 91,162, 52,204,109,201, 32, 52, 93, 20, 76,116,137, 85, 2, 35, 21,190, 40, 17, 66,147,252,144,207,237, 62, 60,103, 87, 22,
-151,235, 81, 57, 94,116,195,184,254,185, 72,103, 29, 87,121, 25, 42,147,158,241,211,233,250, 49, 42, 88,193,164,248, 17, 66,185,
- 11,203, 68,248, 49, 66,141,231, 23,253, 33, 94,230,209,198,209,195,105,213,248,224, 64, 61, 25,159,116, 28,119,228,234,178, 51,
- 49,227, 46,193,143, 41,107, 23,202,213, 66,231,241,124,140,208, 12,212,219, 5, 49, 4,202,162,192,142, 35,185,141,136,153,181,
-173, 52, 33, 4,124,138,148, 35, 23,253,220,123,226, 38,113,213, 26,122,163,184,223, 52, 92, 43, 13, 78, 66,215, 52,217,163,143,
- 68,141,120,155, 53, 1,161, 20, 93,204,106, 72, 10, 69,179,118, 56,171,168,186,142, 6,216,169,106,150, 67,207, 68,102,155,158,
-181, 10, 57,120,142,173,196, 72, 75,231, 58,174,204,107,150,173,103, 9,180, 74, 82,203,188,195,201,147, 9,143, 49,138, 74,192,
- 12,203, 61, 95,228,219,132, 43, 51,129,169, 24, 45, 11,197,197,222,123, 28,193, 91,147,247, 99,155, 54, 91, 4,149,189,108,128,
-226, 56,126,187,236, 0,198, 46,126,180, 21,170,254,185,200,247,113,255,166,100,110, 0,100,238, 0,165, 54,212,165,193,150, 5,
-206, 53, 12, 33,210,119, 13,222, 11,246,111, 79,241, 33, 17,197, 40, 16,148,163,109, 45,137,156,229, 78, 78,111,138, 49, 71,196,
- 94,172,137,196, 24,177,120, 17, 56, 18,158, 77, 13,199,226, 54,138,221, 32,162,165,192, 27,149,227, 98, 35,249,182,236,125,238,
-234,157,207,116, 52, 45,104,122,207,208,123,102,209, 83,171, 18,167,224,183,126,239,109,184, 62, 82,186,250, 72,159, 18,189,146,
-212, 34,177,159,224,245,168, 88,252,155,167, 60,184,125, 78,115, 84,115, 62,209,220,222,154,115,104,167,108, 25,139,173, 42,142,
-174,237,211, 41,193,244,234, 22,187, 19,203,238,188,162,117,158,224, 19, 58,197,188,222, 82, 57,137, 42,250,172,234,239, 58,143,
-223,244,132,243, 6,183,106, 9,231, 93, 14,242, 16,153,210,244, 84,104, 90,155,113,141,170,200,116, 41,161,198, 23,164,243,180,
- 70, 50, 36,201, 79,207, 74,254,197,147, 13,167,107,207,237,195, 57,183,141,224,177,145, 92,157, 27, 10,169, 57,237, 60, 79,124,
-226,113, 18,232, 74, 17, 62, 94,242,218, 43, 87,216,149,154, 7,149,226, 65,167,249,142, 87, 60, 57, 59,165,251,246,135,184,193,
-243,107,175,189,194,230, 51, 91, 20,127,244, 93,222,191,255,152, 95,249,213, 95,230,119,204,255, 67,247,203,255,152,111, 61, 56,
- 97,251, 11,159,226, 5, 35, 48,117,102,220,171, 62,112, 48, 51,124,244,212,241,251,159,172, 49,181,160,148,112,171,168,232,154,
-158,170,180,188,250,226,171,124,237,168,131,207,253, 4, 92,187,193,111,173,122,190,240,237, 7,124,252,209, 61,190,250,141, 63,
- 64,188,245, 33,105,113, 6,243, 45,190,254,218, 9,236, 94,131,249, 30,136, 9,226,232, 54, 76,102,164,191, 0,158,220,191, 44,
-182,133, 37,109, 29,192,222,156,157,232, 56,220,156,113, 93, 12, 28, 39,193,188,208,252,222, 96,115,115, 58, 56,218,206,115,191,
-235,192, 37, 78, 54, 17, 49,145,188, 94, 22, 20, 50,127,250,223, 93,173,105, 78, 79,114, 24,199, 15,121,226,255, 86, 22,187,194,
-230,209,250,209, 21,174, 95, 59, 98, 94, 84,188, 52,219, 70, 73,195, 7,205,146,191,236,154, 49, 23,194,141, 65, 89,125, 46,232,
- 79, 22,176,218, 60, 83,254,255,181, 63, 41, 66,223,241,193,202, 48, 0,243,233, 20, 33, 18,203, 0,187, 42,210, 12, 29, 70, 23,
-148, 69,129,118, 29,239,133, 0,147,146,229,119, 63,204,254,245,209,238, 36, 46,206, 93,123,121,108,139, 64, 22,202,217, 81, 51,
-163,244, 88, 27,100, 22, 46, 63,107, 44, 58, 64, 34,214, 93,118,202,248, 46,143,110,209, 48, 47,225,120, 1,147,154,212,247,184,
-145, 50,150,146,200,254,105,171, 25, 78, 61, 41,102, 49,150, 96,153, 85,247,139,243,188,167,247,158,230,207,207,104,182,247, 96,
- 94,179,120,188,130,249, 4,140,203, 83,179,114,108, 54,172, 1, 85,242, 70, 57,227,139,135, 7,232, 50, 43,253,159, 58,201,147,
- 20, 81,198, 64,211, 82, 87, 51, 30,187, 22,133, 34, 20, 19, 8, 3, 94,104,142, 38,134,165,207, 72, 85, 77, 36,197,108,185,117,
- 73, 97,147, 35,197, 64, 45, 37, 70, 74, 66,244, 20, 72,132,200,185,246, 3, 9, 31, 3, 86, 42,246,100,129, 65,240, 81,227,216,
- 37, 67,112,172,148,196,224,169,139, 2,157,160,247, 30,173, 84, 94,112, 40, 77,240, 30,161, 5, 97, 32, 51,214,129,119, 82,100,
- 27, 48, 90,179,173, 20, 66, 42,100,130, 38,122,118,202, 2,161, 13, 11, 55, 80,150, 59, 48,244, 76,221, 64,168, 21, 46, 57,220,
-217, 41,241, 98,172,126,177,197,121,150,221,226,243,100, 85, 91, 88,119, 80,155,108,143, 30, 5,186,153,246, 57,134,142,197,144,
-111,235,253,144,255,157, 16, 63,116, 83, 47,198,253,204,133, 2, 42,134, 31,159,237, 30,227, 24,214,160,242,200, 76,219,203,226,
- 93,154,252, 38, 22,118,140, 36, 29,201,100, 70, 94,198,221,121,127, 73, 29,187, 16,210,149,227, 23,172, 52,249, 3, 17, 3,141,
- 84, 28,213,134,235,117,222,111, 12,249,227,137, 85, 26, 41, 4, 67,140,204,140,101, 17, 2,143,250,129,137, 50,184,193, 83, 90,
-133, 1,134,224,113, 62,142, 35, 19, 16,163, 13,162, 77,144,164,200, 65, 41, 49, 82, 22, 5,231,206,161, 98, 96, 45,198,238, 47,
- 74,210, 40,244, 48, 73, 32,173, 33,218, 12, 80, 88, 43,141, 87,154,101, 31, 16,202,176,244,145, 82,105, 22,163,173,192, 9, 80,
- 34, 97,133, 38,198,200,148,200,126, 97,232, 99,228, 70, 33, 89,123,184, 54, 55, 44,252,184, 87, 49, 69,126,205,211, 5, 8, 96,
-228, 61,219, 2, 98,159, 85,193, 50, 93,134,244,168,209,187,142, 24, 51,244,229,101,166,188,240, 16,117, 94,105,164, 52,222,210,
- 71,167,129, 22,207,156, 8,255,248,159,254, 23, 12,222,179, 90,118,128, 96,107,107,130,182, 5, 90,105, 68,202,227,187,137, 45,
-217,223,158, 80, 24, 3, 40,204, 40,120, 19, 36,196,184, 47, 55, 58,135, 88, 36,192,143, 52, 54, 57, 42,222,165,202,169,124, 82,
-228, 36, 57,141, 64,250,128, 28,124, 30, 63,197,113,229, 50, 56, 54,103, 13,195,186,161, 89,119,104, 63, 32, 99, 34,117, 14,239,
- 50,208,165,176,134,195,195,109, 78,151, 11,190,246,135, 79, 71,229,232,152,214,151, 98,230,103, 55,129, 69, 72,124, 52, 36, 62,
-155, 36,111,244,146, 79,249,196,108,227,136,235, 13,199, 97,197,251,199, 79, 40,148,197,163,168,102, 5, 7, 91, 37,193, 74, 86,
-157,227,100,209,177,233, 28, 69, 8,204, 71, 11, 97, 24, 60,125, 63,176, 90, 15, 52,171,142,245,241,154,254,100,195,234,201,138,
-205,249,154,184, 25, 80,157, 71,251, 72,223,123,150, 74, 83, 86,134,114, 98, 81,181, 33, 21,138, 88, 72,156, 20, 44,181,226, 79,
- 31,119, 60, 58, 93,227,155,129,147,143, 22, 28,157,183, 44,134,196,199,117,193, 50, 65,209, 58,110,198,192, 31, 55,158,150,200,
-102, 24,248,179,251,107, 14,118,106,206,159,182,124,175, 13,116,198,112,243,133, 43,188,118,235, 26,119, 23, 3,183,203, 9,127,
-119,119,194, 55, 79, 26,126,251,172,229,219, 31, 63, 96,239,214, 45,236,207,254, 44,211,237,146,159,120,229,144,151, 42,205,237,
-185,161, 52, 18,221, 5,132, 15,252,230,127,255, 63,243,254,255,254,239, 40,223,124,131, 23,125,196, 8,201,222,203,183, 25, 40,
- 57, 57, 94,114, 79,150,184,107, 55, 88, 40,141,120,112, 23,222,251, 14,127,242,173,111,242,239,191,241, 53,120,235, 61,232,187,
- 92,112,250, 13,220,191, 15, 67,139,152,150,136,233, 54,162, 40, 97,235, 8,113,116,132, 40, 4, 98,136,136, 43,215, 16, 47,221,
-130,163, 35,196,214, 54,251,229,156,219,211, 25, 34, 70, 14, 38, 5,195,232,120, 57,189,136, 80,245, 62, 31, 90,237, 0, 9, 30,
-111, 6, 94,180,128,115,188,127,186,224, 27,143, 22, 99,196,178,255, 43,226,178,191,241,198,110, 44, 76,199,189,249,124,202, 11,
- 59, 7,124,250,240,136,169, 45, 16, 70, 50, 23,134,123,174,103,240, 29,172,155,204, 49,127,122,158, 85,237,205, 58,143,217,255,
- 54, 28,140, 32, 73, 74,115,115,103,134,240,158, 46,146,209,171, 2, 74,109, 9,222,115,104, 60,223,216, 12,132, 16, 97,213,102,
- 43, 92,159,109,174,194, 94, 68, 55, 22, 16, 37,162, 48, 8,165,161, 40, 17,133, 69, 76, 42,132, 80,200,210,230,219,120,204,107,
- 68,145, 98,182,130, 42,131, 8, 14,169, 12,194,245,185,225, 30,134,252, 29,238, 6,196,102,200, 24,212, 38, 34, 86, 77,190,201,
-175, 55,136,193,195,166, 69,156,158,229,191, 55, 61, 98, 61,254,222,189, 3, 53,142,251,117,157,181, 82,166,132,157,233, 24, 40,
-118, 33, 16,172,242,164,177,172,184, 53,219,230, 43,123,115, 76, 97,217, 41, 70,124,110, 18, 60,118,129,101, 28, 56, 13,137,117,
-200,122,171,228,134,103,231,219,171, 90, 81, 68,129, 45, 50, 53, 51,166,200,150, 86, 68,159, 11,160,140,158, 73,138, 20, 74,178,
-114, 61,101, 18, 88,149,107,203, 38, 6, 80, 22, 73,194, 74,131, 78, 33,143,223,125, 36, 42, 69, 76, 89, 56, 56,144,216, 33,178,
- 91, 25,132, 72,104,161, 81, 66,228,210,229, 19, 90, 37, 62,232, 29, 33,196, 44, 10,148, 10, 33, 36, 47,149, 37, 9,112, 49, 18,
-165,196,142,154, 42,167, 12,171, 20,113, 72,138, 20,145, 9,250,232,169,149,193,248, 1, 69, 98, 75, 68,194,168,119,146, 74,230,
-193,181, 20,185, 14,111,150,227,216,113, 76,165, 51,230, 50,247,196,152, 92, 7,244,232,131, 23,227,133,109, 24,158, 43,234, 90,
-143, 51,252,231,162, 37,148,248,155, 35, 11,165,204, 99,224,194, 94,142,127, 43,123,201, 12,103,140,109, 92,143,193, 15, 73,102,
- 53,230,197,152,232, 34,194, 34,230,113, 27,117, 49, 62, 65,149, 71,105,227,174,254,213,210, 48,173, 42,144, 18, 35, 50, 47,216,
-201,156, 57,174,148,166, 13,142, 90,105,254,112,209,210,118,142,235,181,230, 60,120,116,128, 74, 74,218,222,129,200,145,156,143,
-219,129, 82,231, 78,103,209, 57,148,209,217,182, 16, 19,149, 82, 56, 4,201, 5,246, 73,156,105, 73,236,122,124,140,172, 72, 20,
- 36,144, 26, 95, 85, 56,239, 40,116, 65,135,162, 75,153,108,118, 38,192,167,144,149,222, 33, 3, 51,134, 20, 40,165, 98,187, 16,
-180,189,163, 82,145,160, 4,123, 82,240,184,201, 98,191,225,162, 75, 75, 33,107, 20,194, 40,124,209, 58, 31, 86, 23,175,101, 84,
-185, 99,144,207, 29, 89, 23,169,115,105, 76,123, 9,227,205, 93,143,111,188, 26, 95,227,174,203, 77,216, 56, 97, 81, 63,249,101,
-126,233, 75,159, 97,213,246, 44,158, 46, 73,200,188,186, 81,153,133,190,183, 51,165,180, 5,243, 89,193,188, 42,145,163,210, 84,
- 34, 32,141,164, 35,149, 85,168, 86,103,113,136, 72, 41, 7,173,140,141, 68, 26,189,155, 82,200, 49,152, 38,131, 10, 98,200,196,
-187, 97,240,153,130,231, 2,237,224, 56, 61,223,176,105, 58,220,224,113, 62,143, 87,205,248,103,201, 4,251,123, 83,138,157, 45,
-254,240,123, 31, 51, 91,123,206, 69,204, 13, 99, 28, 87, 16,110, 20,107,142,222,240,247, 8,124,107,136,148, 7,138, 67,171,248,
-194, 65,197,203,147, 25,135, 9, 68,116, 68, 31,112, 62,225, 18,172,218,129,229,170,101,209,244,136,224,217, 45, 12,211, 50,231,
- 27,120,151,247,231, 67,215,211, 54, 61, 67,219,179, 92, 54, 60, 89, 55, 44,186, 30, 98,196, 36,129, 34,145, 72,180, 49,145,148,
-194,100, 3, 63,201, 72, 82,169,112,243,130,149, 86,188, 88,192, 23,107,195,225,142,229,212, 42,238, 46, 7, 78, 14, 39,204, 39,
-150,193, 7,134,179,142,173, 39, 75,222, 30, 9, 78,201,193,103,125,224,231,118, 43, 30,118, 29, 77, 10,236,213, 5,213,149, 57,
-219,251,115,234,170,230,211, 51,195,235,237,192,187,239,221,229,119, 99,201,245,175,124,133,151,175,237,179,175, 4, 7, 90,112,
- 85,195, 47, 76, 5,247,158,174,184,251,135,111,243,245,255,237,255,228,247,255,135,127,203,209, 52, 81, 87,146, 15,255,199,175,
- 82,117, 31, 49,125,245, 53,206,128,191, 76, 80, 29,204,120,241,149, 67,142,136,124,251,155,127, 8,127,241, 29,120,114, 31,119,
-255, 62,226,116,253, 3, 80,160,252,201,144,136,197, 89,222,111,207, 10,196,214, 17,170, 40,249, 71, 55, 95,224,239,221,121,157,
-171,135,215,120,239,251,119, 17, 33,241,147, 71, 59, 28, 23, 91, 28,104,205,142, 18, 24, 99,209, 41,175,116,154,224, 56, 30, 28,
-196, 1, 81, 76, 16, 59,219,121,106,178, 92, 34,218,200,251,167, 75,222,122,248,148,251,103, 27, 68,212,136, 43,123,136,214,255,
- 64,244,241,143, 23,194,217, 44,130,187,114, 0, 71,251,176,181, 13, 69,137,179, 83,238,204,166, 40,173, 48, 82,161, 8,232,190,
-225,254,201, 73, 46,226,143,206, 96,125, 14, 87,175,194,147,167, 63,158,140, 88,215,207,133,130, 36,152, 84, 60,238, 61,135,211,
-154, 46, 69, 62, 51,181, 60,241, 16,195,192, 65, 33,121,212,229,203,195,208,182,163,104, 42, 55,240, 66,171,204,105, 40,107, 68,
- 85, 32,172,201,227,244,249, 12,153, 4,162,178,200, 20, 17, 69, 46, 92, 66, 8,132,136, 72, 45,145,214, 34, 92, 14, 45, 82, 49,
- 34,147,207,134,164, 4, 50, 70,228,186, 65,246,153,167, 32,124, 64,182, 77, 46,238,155, 14,209,118,185,240, 55,185,105, 19, 62,
- 32,100, 1, 87,174,114,227,104,135,163,107,123, 28,237,205, 41,107,195, 82, 87,136,178, 64,236, 76, 17, 91,219,168,249,156,106,
-107,155, 80, 22,164,162,120,246,154,191, 86, 88, 14, 38, 53, 82, 42,134,144,198,115, 56,129, 75,156,134,200,189,161,203,151, 62,
- 55, 18,244,136,144, 2,109,130, 59,181, 65,199,156, 24, 90, 8, 40, 83,196,117, 13,237,208, 97, 99, 64,165,196,208,247,204,132,
-160, 0,108,244, 84, 66, 50,144, 24,162,103,199, 88,124, 12, 56, 33,184,219, 39,206,156,199,227, 51,161, 14,232, 7,199, 3,239,
-216, 79,145, 93,107, 41,165, 70,166,152, 97, 48, 4,158,180, 3,167,206,225, 66, 32, 41,137, 82,154, 47, 84, 21, 37, 89,255, 85,
-168,156,216, 87, 22, 19, 42,169, 24,156, 67,217, 60,105,216,160,152, 25,141,140, 48,179, 53, 41,180, 28,136, 64,109, 21,251,165,
-101,207, 74,162, 80,244, 62,145,252,152, 65,146,252,152,210, 55,214, 70,173, 70,173, 90,186,140, 10, 30, 70,132,112, 14,236,135,
-162,120,174,168, 95, 40,238,210,115,217, 80, 63,142,109,252,188, 5, 68,141,183,113,165, 47, 11,186, 85,227, 19, 10,121,167, 22,
-195,229,168,190, 40,176, 55,174, 19, 86,203, 17, 88,114,193, 88, 38, 63,190, 26, 21,219, 77,151,159, 71, 81,112,125,103, 70,141,
- 96, 90,228, 49, 85, 31, 7, 10, 12, 46, 69,172, 22, 88, 20,143,188,195,137,192,227, 33, 98,100,226, 69, 85,176,118,158, 46, 4,
-172, 16, 8,149,133, 86, 59,133, 97, 25, 2,141, 11,204,166, 85,142,241, 84,138, 66, 10, 54, 41,209,135, 64, 73,162,213, 2,235,
- 3,105,200,183, 92,149, 2, 58, 10,158, 36, 79, 82, 2,165, 13, 31,244, 30, 33, 21, 15,135,158, 94, 41,206,164,204,190, 71,160,
- 25,195, 86,124, 76, 28,105,141, 78, 17, 37, 34, 69, 76,148,192, 58, 69,174, 25,197, 11,219, 53,247,125, 34,117, 67, 46,196, 23,
- 54,136,139,244, 33,153, 35, 31,145, 41, 23,118,105,242,107, 27,199, 27,119, 26,111,235, 23, 35,246, 36,126, 16,109, 43,121, 6,
-202,201, 34,186,252, 33,124,253,211,175,241,147, 95,184,195,211, 39, 27,154, 77,135, 82,138,174,113,184,198,209,181,158,201,180,
-230,214,254, 22,187,149,165, 48, 38, 55, 42, 58,119,174, 81, 36,122, 23,241, 49, 97, 20,148, 54,243,212, 99, 74, 12, 99,164,156,
- 18,185, 24,199,139, 29,224, 40,242,115, 62,211,152, 92, 12, 52,206,103,158,186,143,244, 93,207,226,188,165, 25, 28, 68,207,224,
- 60, 93, 55,228,141,142,200, 1, 14,251,187,219,172,207, 23,220,251,131, 39,168, 82,112,220,197, 60,141,136, 2,218,231,242,236,
-159,159,187,238, 42,238, 29, 89,222, 42, 4,195, 78,201, 83, 1,167, 34, 51,220, 85,240, 20,194,160,133,162, 64, 96, 84,166, 85,
- 29,108, 85,236,110,215, 20,165,205, 72,202, 68,166,170,141,152,198,204,216,137,156,183, 89,205,155, 4,168,148, 70, 68,120,110,
- 98,156,148, 56,161, 8, 42,191, 15,186,208, 24, 37, 41,140, 96, 57,102,227,123,145,216, 19,137, 15,143, 55,188,110, 3,219, 49,
-208, 5,136, 66,176, 16, 18,171, 4,125, 76, 92, 73,240,138, 17,184,110,224,107, 70, 49, 49,134, 55, 15, 74, 14, 38, 26, 81, 20,
- 76,247,167,124,254,250, 14,179,171, 51,222,155,238,243,237,233, 54,147,189, 9,159,214,137,185, 27, 48,109, 71,179,110,120,122,
-182, 70, 60, 94,112,179, 86,184,205,154,117,179,102,209, 4, 78,222, 31, 16,175, 78,248,169,191,115, 19,117,125,143, 43, 47, 31,
- 32,164,224,222,247,143,249,232,253, 7,156, 63,124, 72,124,248, 33,203, 7,199,136,126,200, 99,217, 8,130,248, 67,240, 22, 63,
-202, 54, 92, 46, 10,201,129,173,249,197, 59, 55,216,169, 11,254,217,160,240,135, 87, 16,187,219, 60,146, 5,164, 64, 37, 13, 83,
-109,184, 58, 41, 41, 68,164, 16, 1,209, 59, 62,218,172, 16,218, 34,182,246, 96,114,128,216,158,163,106, 11, 50, 33,154, 11,128,
-209,152,203,208,244,192,128,248, 17,103,150,184,208,254, 76, 39, 57,218,245,224, 16, 14,247,178, 77,109,103, 43,219,211,138, 18,
-180,166, 87,150, 79, 9,137,148,121,122, 38, 82,226,244,252,152,251, 79, 78,224,238,147, 28,158,227, 60,156,158,253,248,130,190,
-189,199,252,179, 47,209, 47, 54,121,202,160, 68,214,121,204, 38, 68,149, 49,167, 31,246, 3, 3,217,122, 26, 19,156,247, 61,125,
- 31, 16,198, 16,156, 3, 23, 16, 86,231,255,183,158, 34,234, 18, 68, 68,212,249,134,107, 10,139,157, 90,180, 15,204, 39, 37, 59,
- 66, 80, 72,197, 16, 3, 90, 10,132,144,200,110,200, 43,175, 24, 81,147, 2, 57,228,226,167, 0,213, 69, 84,148, 40, 76,182,173,
-186,132,114, 9,233, 61, 50,133, 92,244,131, 64, 42,141, 40, 45, 98,178,141,216,218, 98,111, 86,240, 51,219, 21,183,108,193,157,
-121, 77, 97, 44,161, 44, 56,223,223,167,158,239,176, 85, 87,236, 84, 53, 62,121,164, 52,227,170, 77,160,132,230,166,209,236, 21,
- 38,163,175,147, 64,132, 72,146,146,227,182,227, 27,235, 53, 41, 14,224,218,172, 77,232, 86, 99,124,238, 64, 43, 18, 47, 6,207,
-158, 86, 36,223, 81,199,132,107,214, 44,134,142,171, 41,103, 59,216,152, 87,176,132, 76,127, 44, 0,235, 7,180,202,142,149, 97,
- 20, 94,159,196,200,159,175,215, 52, 82,147,146,224, 65,223, 81,168,130,227, 24,242, 20,163,239,216,150, 17,225, 29, 49, 56,226,
-208,211,224,249,214,217,146,110,252,188, 79,149, 66, 1,187, 66, 81, 26,149,203,154,212, 8, 33, 33,120,130,174,208, 35,108,204,
-105,139,141,142,101, 20, 76,132, 64,132,129,153, 45,136,110,160, 84,144,198,122, 87, 40, 40,149,196,106, 73,144,138, 96,116, 22,
-204, 73,159,235,231,152,240,137, 24,217, 42, 93, 51, 6,190,141,122, 54,149,243, 74,126,112,252, 30, 46,114,216,185, 76,189,249,
- 91, 89, 64,200, 35, 22, 57,222,192, 47, 30, 68,140,129, 41,221,152,166,211,249, 60, 82, 10,145,176, 89,229,142,204,135, 75,114,
-155, 27, 50, 39,118,221,193,122,117,169, 6,175, 75,182,167, 5, 59, 69,145, 5,108, 72, 10, 85,176,137, 61, 70, 10,140, 52, 36,
- 18,231,222,177, 14,142, 70, 8, 92, 23,209,210, 51, 55,146,117,140, 44,187,241,131,170, 37, 49,101,244,101,101, 77, 30,205, 11,
-193, 68,105,150, 49, 32,200, 59,228, 42,101,171, 28, 33, 80,196, 64,138,153,237,221, 39,193, 32,243,248,229, 97,132, 61, 45,249,
-190, 11,120, 83,114, 50,244,184,232,113, 73,162,136,180, 49,162,147,224, 64,129,213, 17,145, 2,115, 1, 83,107, 96, 24,152, 75,
- 5, 8,206, 18,124,170,182,116, 74,209, 92, 88,253,144, 63, 56, 59,212,242,146,102,119, 33, 46,212, 35,201,229,194,218, 38,198,
-155,186,146,185,240, 95, 8,242,146, 24,173, 46,126,132,188,100,242, 67,177,176, 0, 0, 32, 0, 73, 68, 65, 84,171,216,237, 87,
- 95,229,149, 87, 94,100,189,238,243,205,184,207,169,105,222, 7,124,151,168, 39, 37,175,223,216,101, 90, 91,172,214, 4,145, 15,
-138,156,155, 76, 30,177, 75, 40, 68,246, 62,167,209,206,230, 99, 32,196,244,236,105, 10,153, 15, 49, 59,178,141, 7, 23, 17, 33,
- 16,198,176,149,228, 2, 67,231, 56,105, 6, 78,154,158, 85,223,115,188,110,216,120,135, 31, 60, 25,101,223,227,165,100,182,187,
-205,253,183,238,145,214,142, 91, 42,115, 1,174, 32, 88,196, 68,120,158, 29,112,193, 55,190, 83,192,142,201,130, 45,163,184,215,
- 37, 62,238, 2,107, 19, 88, 9, 40,167, 19,236,124, 11, 61,159,176,189, 93, 51,159,150,204,107,195,254,180,100, 54, 41,209, 70,
-227,147,192,187, 72,219, 13,217,187, 30, 99, 14,149, 9,145,206, 69,186,206, 17,124,198, 90,202,152, 50, 40,104,116, 8, 12,128,
- 83, 25, 91,151,164, 96,183,233,169, 63, 58, 33,189,245, 9,233,235,239, 48,251,179,143,216,187,191,224,197,162, 96,103,171,226,
-228,147, 53,205,163, 5,161,113,116, 10, 82,145,227,104, 95,148,138, 69, 76,252,249,137,167,209,130,182,115,148, 90, 96,218,200,
-253,214,243,193,202,241,241,144,248,176,135, 79,148, 33, 86,150, 97, 8,220,238, 59,118,154,158, 97,177,225,227,227,117,182,218,
-101,172, 32, 46, 86,172,194,130,122,191,224, 75,191,252, 38,191,254,243,111,242,223,124,254, 53,182,174,110,225,172,102,249,222,
- 35, 62,249,224, 33,215, 53,124,110, 82,241,133,249, 54, 47,204, 20,223, 93, 5,104, 55,136,232, 17, 38,219, 19, 47,139,122, 68,
-212,183,145,111,126, 30,113,243, 14,226,250,203,136,217, 14, 87,183, 38,204, 69,226, 74, 23,120,176, 92,243,139, 7, 87,184,187,
- 94, 66, 72,108,136,188,161, 53, 59, 50, 97, 83,160,242, 30, 25, 91,222, 58, 59, 71,110,214,136,178, 66,216, 2,129, 34, 13, 27,
- 68,223, 32,106, 11,123, 51,132,169,248,213,215,142,184,179, 59,225,237,167, 13, 12,221, 95, 29,185, 23, 83,120,225, 42,236, 29,
-192,213,189,188,239,221,154,230,208,142,162, 26,225, 40,105,252, 30,121, 30, 56,199, 81,136,152, 52,112,126,246,152,175,126,114,
- 31, 30, 62,201,222,247,191,233,146,243, 12,153,236,232,165,133,179,179,124,174,198,139,232,102, 69, 83, 88, 86,206,211, 39,104,
-218, 64,167, 18, 27, 31,233,135,192, 6,143, 31, 28,116, 1,107,243,249,144,180, 65, 16, 80, 42,239,165,139, 82, 19, 29, 28, 78,
-205,232, 26, 82,185,200,133,200,220, 42,218,148,115, 33,235, 81,232,162,146, 66,181, 29, 42, 73,180, 11,104,105,208, 4,246,109,
-193, 63, 60,156,241,230, 94,205, 11,181,229,227, 38,162, 2,168,120, 97,213, 53, 72, 99, 17,214, 32,117,133,212,185,153,248,233,
-173,130, 29, 83, 80,105,205, 34, 38,116,105,169,103,115, 30, 71,129,214, 37,133,204,194,229, 76, 18, 21,244,126, 0,105, 72,113,
- 96, 11,184, 94, 20, 8, 55, 80, 11, 73,232, 91, 78,219,134,223, 61, 57,165, 27,214, 57,133,175, 89,193,226, 41,180,163,173,111,
-232, 32,244,152,232,217, 52, 27,186,161,165,239,214, 12, 67,199, 86,191, 70,186,128, 13,137,105,200, 23,132, 42, 9,118,132,196,
- 39, 48, 33,210,251,142,132,228, 81,240,172,147,224,173,229, 26,107,167, 36,223,147,144,212,202,176,246, 29,219, 74,179,118,142,
-208,110,104, 86, 13,222, 53, 4,153,120,178, 94,114,127,221,177, 28, 28,173,115, 36, 18,221,208, 51, 16,216, 54, 6, 43, 50,251,
-194,146,176, 66,146,180, 33, 6,207, 41,146,227, 48, 48, 17, 32,117,137, 26, 28,115, 35,144,193, 67,215, 83, 88, 75,240, 45,117,
- 2,111, 20,201, 71, 42,149, 47,212,165, 21,153,211, 82,216,231, 44,201, 2,250,238,178,102,106,149,195,134, 24, 51, 11, 98, 78,
-116,253,171,234,247, 24, 47, 63,132,127, 93, 1,151,250, 7, 49,159, 66, 92, 42,241, 34,151, 66,185, 11,216,251,133, 71,218,218,
-203, 28, 91,247, 67,143,225, 70, 41,127, 24,159,112,235,114,178, 82, 85, 66, 93, 82,138,200, 81, 97,152,154, 18,129,100, 21, 28,
- 83, 93, 18,162,160, 79, 16, 68,192, 10, 88,184,200, 39,141,231, 90, 37, 25, 66,224, 44, 68,204, 16, 88,201,172,202,143, 46,199,
-196,182, 73,228, 24,117,165,242,196, 54,146, 83,191,144, 20, 66,210,199, 72, 17, 3, 67, 18,116, 74, 33,164,196,143,201,125,149,
-135,115, 45,153,134,200, 67, 15, 75,165, 88, 71, 55, 22, 85,129, 75,129, 77,136, 52,209, 35,146,103,146, 18, 83, 9, 53,185, 24,
- 22,193,161,165,194,199,200,164,180,108, 27,205,169,200,138,218,149, 45,242, 37, 83,141, 10,179,231,221, 1, 41,230,155,188,139,
-121, 23,200, 5,185, 45, 94,194, 99,226, 69,214,251,120,180,153, 81,189,102,244,200,219,189, 8, 67,128,159,249,202,207,176,123,
-101,155, 16, 35, 67, 31,104, 22, 13,235,245, 6,107, 11, 78, 78, 87,104, 59,225,229, 27,187,148, 54, 51,212,165, 84,132,152,242,
- 91, 68, 64,164,236,213, 45, 74,133, 30,195, 88,252,152,177, 28, 71,155,218, 5,232, 69, 32,198, 36,169,152, 5,112,206,209, 53,
- 61,193,121,196, 16, 88,121,207,113,235, 88, 53, 29,184,192, 89,219,225,130, 99, 19, 3, 27, 96, 45,160,222,154,178, 17,137, 63,
-125,235, 17,111,117,249, 80,148, 74,242,229,160,248,251,104,254,126, 97,120, 67, 73,222, 43, 4,189, 25,111, 70,175,207, 96, 90,
-141, 47,166, 6,145, 8, 14,180, 85,212,133, 97,111, 58, 99, 50,155,161,203,146, 80,228,195, 72, 11,193,150,177, 84,133, 65, 42,
- 69,240,137,166,117,156, 44,214,156,158,183,108,250, 17, 11,219, 57,214,155,129,245,166, 99,221,117,185, 1,145, 18, 45, 37,133,
-145, 24, 96, 82,106,182,119, 10,230, 51, 75,112,142, 39,247, 31,176,127,218, 33,124,226,129,244, 57,203,190,239,153,111, 58,246,
-118,118, 8, 50,241, 72,129,216,169,209, 86,209, 38,193,118,130,166, 79,220, 95, 5,214, 49, 81, 78, 44,122,183,230,212, 11, 30,
-184,196,162,143, 60,237, 60,199, 3,120, 33,179,251, 66, 64,104, 3,251,131,203, 97, 56, 72,206,238, 29, 83, 27, 69,187,104, 49,
- 51,139,220,169,217,189,118,157, 95,248, 71, 95,230,205,159,124,153,159,191,177,203,180,214,252,243, 63,249,128,111,125,245,235,
- 60,125,255, 67,110,148,130, 89,105,153,134,132,145, 5,201, 88,222,242, 61,190,139, 99, 97, 79,185,176, 43,133,188,253, 58, 63,
-247,139,191,194,111,255,183,255, 21,159,253,244, 27,252,235,165, 69, 62,249, 4,249,206,159, 35,131,197, 37,195,106,211, 96,165,
-228,108, 24,104, 99,142, 66,150,209,113,147,200, 92, 38, 84, 28, 48, 41,178,105,214, 60,238,123,220,147,115,196,189,251, 89,251,
-169, 20, 82, 36,132,212,224, 59,196,131, 83,254,201,157, 67,126,253,181, 79,243,217,253, 3, 22, 69,226,131,133,131,144, 16,113,
-140,225,156, 78,224,230, 17, 95,186,253, 41,234,157, 93,202,233, 22, 43, 61,238,126,149,186, 12,250, 96,188,241,251,142,161, 93,
-211, 54, 27, 30,156,159,240,205,239,223,135,227,211,156,124,199,143,192, 27,255,184, 9,102,211,252, 96, 90,157, 27, 71,168,205,
-112, 57, 65, 27,157, 56,105,240, 52,222, 99, 70,139,174,208,130, 42, 64,111, 36,133,128,163,210, 96,129,118,228,153,239, 20,154,
-198, 69,182, 74,203,174, 49,180, 68,166,214,112,210,122,230,133,204,118,232,144, 87, 99,186,203,152, 85,147, 6,140,210,152,102,
-192, 24,205, 87, 74,203, 94, 97, 50, 61, 86, 74,182,181,228,113,155, 80,165, 70,111,213,168,178, 70,238,214,200, 73,141,156,150,
-200, 74,241,159,239, 20,220, 41, 45, 59, 90, 19, 17, 72,171, 25,132,100, 72,112,234,179, 21, 24,153,168,164,193,225,240,193,101,
- 86,215,144,119,240,141, 31, 8,125,203, 21, 41, 56, 91, 28,211, 14, 61,191,127,239, 46,199, 79,143,225,244, 4,214,107, 56, 63,
-207, 1, 66, 93, 63, 38,255, 13,208,108,120,218,246,124, 60,180,124, 48, 12, 52,155, 6, 57,116,236,196,136, 9,129, 9,137, 77,
- 12, 28,232,146, 74, 8,186,148,152, 11, 73,163, 36, 38,230,128,160,211, 24,248, 78,151, 88,107,131, 14, 3, 66, 23, 8, 1,165,
-144, 8, 98,230,235, 36,193, 16, 60,171,117,203, 39,203,150,187,103, 13, 79, 66,196,247, 3,221,224,216,145,146,174,237,153, 24,
-197,224, 3,167,125,207,129, 18, 28, 22, 26,163,178,128, 88,105,201,105,128, 37, 34, 35,192,165,196,198,136, 22, 48, 12, 29, 69,
- 24, 72, 82, 48,193, 81,134,192,106,240, 76,146,200,131, 28,173,242, 25, 21, 18,149, 18, 4,161,112, 74, 93, 78, 95,149,185,140,
-145, 45,108, 62,211, 47,146,233,194, 0, 46,252, 71,196,196,234, 25, 76,203,252, 66,119,237,229,135, 54, 93, 40,247,210,229,248,
-253, 98,132, 44,212,179, 66,146, 71,201,207, 41,223, 47,190, 76,207,212,219,163, 80,172, 30, 57,228, 85,206, 54,182,194, 34,133,
-100, 57, 12,148,214,162,144,172,253,128,212, 22,237, 7, 90, 20, 18,135,150,146, 24, 34, 15, 59,152, 72, 65,233, 29,143, 82,182,
-190, 45, 7, 7,117, 73,227, 28,214, 40,146,135, 70, 36, 42,165,233, 72,104,149,139,211,202,123,106,107,136, 74,162, 9,248,212,
-114, 98, 20,120,143, 73, 30, 33, 52,190,233, 9, 19, 65, 45, 28,101, 7,141, 46,178, 86, 0, 96,104,137, 49, 91,250, 22,195,192,
-182, 22, 92,179, 53,141,247, 28, 26, 67,231, 4, 62, 4, 14, 39, 83, 22, 67,135, 19,130, 93, 4,167, 69,205, 52,118, 44,170, 34,
-199,199,202,220,209,225, 47,112,146,163,107, 64,143,183, 1,127, 33, 56,140, 57,176, 70,170, 60,138, 30,252, 8,204, 9,227,127,
- 99,243, 62, 93,155,172,220, 21,121,106,226,135,252,129,152, 78, 11,214,139, 14,165, 21,214,232,124,214,140,161, 54, 77,231,217,
-155,149, 8, 41,242,197,223, 11,162, 72,200,152,211,247,130,143,120, 35,178, 48, 19,137,210, 18, 39,178, 15, 61,164,188, 2, 8,
- 49, 61,235,220, 37, 9, 27, 35,161,243,136, 16,177, 72, 54,193, 51, 12,129,101,211,211,199, 49, 39, 93,102, 6,242,128,160,141,
- 61, 19, 41,217,191,126,200,123, 31,220, 67, 7,216, 70,240,189,141, 3, 31,249, 30,145,162, 77,252, 92,165,184, 89,106,126,197,
- 41,126,242,214,140,119,222,218,112, 60, 43, 81, 47,189,192,227,110,195,102,112,156,116, 29, 31, 30,247,108,149,138,106,156,100,
- 4, 34,221,208, 35, 86,146, 97, 8,132,222,179, 95,151, 76, 71,123, 99,219, 6, 78, 78, 27, 62,186,119,198,122,211, 94,222, 76,
-165, 96,232, 7, 26,215, 49,116, 29, 94, 41,114, 34,124, 22,216,108,205, 75, 14, 94,220, 98,182, 55,101,182, 59,225,189,239, 63,
-230,131,166,167, 85,112,211,193, 67, 25, 25, 74,193,206,102,224, 86,227, 41,191,115,151, 87,215, 13,175,237,212,204, 94, 63,226,
-254,213,146, 73,227,216, 44, 7, 30, 13,240,141,100,120, 49, 42,190, 60, 53,252,191, 14,222, 63,239,169, 35, 20, 70, 50, 31, 60,
-122, 82,128, 80, 24,173,184, 35, 21, 55,182, 21,133, 51,136, 85,195,241, 91,239,114,235,198, 62, 47,224,120,242,201, 99,218, 43,
- 19,234,218,160, 10, 69, 81, 22, 28,159, 44,249,151,119,159,242,207,127,251,247,120,244,241,146, 23,182, 13, 7,135, 91, 24, 93,
- 82, 20, 37,178, 27, 56,239,214,156,198, 68,220,218,193,220, 82, 4, 25, 72, 79, 31, 33, 94,126, 19,110,190, 4,251, 47,114,116,
-117,151,205,147, 51,126,227,255,250, 29,244,239,126, 23,241,197,151, 16, 71,215,217, 81, 2,183, 92, 96,164,226,165,162,100, 49,
-116, 28, 3, 41,120,196,208, 34,101,139,223, 24,106, 91, 32,130, 99, 66,100,123,189,164, 89,158, 19,143, 79,136,253,154,116,251,
- 83,196,157, 3, 82, 89,145,108, 73,178,134,223,120,239, 1, 87,240, 28,204,118,248, 94,235,179,183,252,188,132,176, 70, 40, 75,
- 58,218,129,189,125, 38,102,194,223,217,219,101,145,114, 72,213,191,109,150,121,189,103, 71,226,149,243,153,118,181, 88, 66,227,
-184,191,217,100,199, 73,234,199,181,225,104, 31, 13,241,111,127, 86,254, 40, 46,250, 98, 1,187,123,151,156,134,209, 6,156,198,
-113,238, 48, 4, 10,157,149,236,107, 55,112, 93, 27, 6,173, 56,137,137,155, 19,141, 31, 4, 49,207, 16,185, 82, 21,108, 6,199,
-138,236, 78,153, 0,117,101,232, 99, 98, 72, 41, 63,101, 31,145, 87,246,144, 82, 83, 76, 44,184,129,212,244,220, 26, 6,110,232,
-204, 55, 80, 2, 54, 46,112,173,176,212,187,150,184, 55,131,189, 25, 87,170,154,164, 5,167, 67, 75,227, 29,175, 18,249,172, 81,
-212, 90,114, 84,148, 60,117, 29, 79,162,199, 3, 31,116, 3,167,162,196,168, 60,133, 91,135, 13, 73, 38,214,109, 3,222, 33, 54,
- 27,146, 80,172, 55, 45,223,148,145,111,202,209, 86,146, 2, 44,250, 49,179, 99,156,244, 14, 25,226, 50,238,184,242,244, 81, 11,
- 88,174,159,157,177,119,165,102,119,219,210, 6,193,190,206, 4, 54,141,160,137,142, 82, 26,166, 82,112, 46, 20,197, 24,202,213,
-111, 22, 24,171,217, 69,179,113, 3, 24,131, 14,142, 32, 4, 94,106, 22, 17, 90,198,137,243,176, 33, 40,152, 71, 73, 39, 5,219,
- 17, 58, 33,217,158,151, 28,247,145,131,121,205,227,214, 97, 11,197, 64,164,239, 55, 44, 84, 32,161,169,116, 73,215, 12,156, 10,
-197,137,157,161,147,103, 75, 90,124,236, 65, 41,170, 36,232, 98,100, 87, 6,156, 27, 48, 74,178, 85, 26, 78, 6,199,150,132,165,
-119, 20,104, 38, 6, 22, 36,154, 16,144,182, 32,166, 0,194,254,224,103,105,185, 25,131,141,234, 60, 17,170, 74,112,254,185,162,
-174,245, 37, 41,230,199,141,221,167,117,142, 33, 44,170, 92, 32, 46,126, 6, 46,139, 77,188,192,201,245, 99,228,233, 88,236,237,
-115, 93,174,243,151,227,126,212, 37,108, 4,153,173, 90,106, 84,193, 63,103,159,219,132,200,196,234,204, 47,209, 50,231,175,248,
- 33, 91,179,188,167, 65,176,171, 21, 69, 33, 89, 15, 25, 8,163,141,160,245,254, 89,202,253,178,115,168,202, 82,185,136, 55, 30,
- 6,205,153,114,108,219,140, 51,108, 83,196, 40,197, 34, 95, 71,153,105, 65,131,198,182, 3,219,192, 70,107,214,193, 51, 67,243,
-168,237, 8, 93, 71, 61,155,114, 26, 37,108,250,203, 72, 86, 9, 52, 27,176,138,224, 35,239,159,173,248,220, 86,126,209, 39,232,
- 49, 38, 87, 50, 49, 22,173, 10, 78,104,217, 45, 19, 77, 47, 51,115, 5, 46, 51,224,155,110,220,157, 95, 28, 42,242,146,250, 22,
-228,232, 58, 24, 27, 34, 41,243,239,234,135,252, 62, 68,159, 91,118,171,243,123,164,220,104,253,241,104,107, 41,173,225,228,108,
-131, 27, 11,188,214, 6,151, 2,162, 44, 40, 37, 20,101,206, 6,200,251,242, 11,105, 68, 78, 82,235, 98,192, 17,145, 61, 88,173,
-144, 57, 69, 6,169, 50,139,152,144,111,238,217, 46, 47, 81, 49,195, 94,116, 2,163, 36, 90,107,188, 8,184, 16,232, 55, 30,223,
- 56,232, 29,125,240, 24, 33, 88,165,196, 10, 40,172,225,104, 58,101,111,127,139, 63,250,147,239,241,221, 38,239,208, 16, 49,255,
-174, 83, 77,223, 58,254,213,185,203,193,241,107,207, 59,231, 3, 47,110,107,138, 39, 13,146,123,220,216,153,242,194,214, 46,250,
-250, 14,223,219,121,204,100,182,197,164,174, 41,102, 83, 14,143,118, 88,117, 67,222, 16,109,122,154, 36,232,132,192, 9, 24,122,
-207,217,162,225,238,253, 19, 30, 62, 56,103,240, 29, 41,100,108,167,136, 17, 31, 99,166,167,249,132, 64,179,232, 5, 82, 25,148,
-130,253,189,138,122,119, 74, 49, 45,113, 41,113,214, 42,110, 79,247,248,254,233, 83, 30,184,150, 77,219, 32,140,164, 25,122,174,
- 4, 69,179, 56,102,111, 19, 88,196,134,217, 39, 11, 78, 95,152, 96,103,154, 35, 83,112, 16,225,198, 85,197,181,101, 79,215, 5,
-126,213, 74,254,167, 85,207, 73,227, 25, 6,216, 41, 36,147, 66,113, 22,224, 80, 11, 62, 59, 51, 28,213,138, 19, 1,111, 63, 78,
-124,229,240, 21, 22,201,113, 32, 18,159,217, 46,249,227, 69,203,195,239,220, 99,231,232, 42,211,123,103, 92,145,130,111,126,247,
- 33,119, 80,108,109, 91,116, 93,176, 85, 79, 49, 66,211,173,150,220,125,252,144, 83, 93,177,116, 41,239, 67,203,154,161, 56,128,
- 47,127, 38, 39, 89,181, 27,196,215,254,128,223,248,238,130,127,241,134, 66, 93,217,197,124,233, 14,162,156,176, 91,207, 57, 16,
-154,137, 86,163,169, 38,208, 13,158,207, 19,217,154,239, 66,154, 51,167, 37,173,206,169,162,195,132, 0,203,115, 94, 63, 95,241,
-180,237,137, 6,194, 98, 65,252,222,251,196,219,142,120,253, 6, 73,193, 23, 95,186,195, 27,183,111,241,199, 31,188, 75,255,240,
- 29,238, 29,247,136,170,134, 74,147,216,206,201,150,211, 41,111, 76,106,110,109,111, 97,133,228, 74, 97, 40, 69,143, 90,231,176,
- 70,218,113,127,123,190,202,141,239,249, 58, 23,115,158, 43,200, 74,130, 48, 57,103,253, 63,164,168,255,117, 63,171,213,104,253,
-213, 35,255, 66, 17, 92,204,199,156, 17,244, 46,177, 45, 3,229, 78,205,227,245,192,190,149,220,172, 18, 15,186, 64, 39, 20, 83,
- 18,133, 53, 28,167,196, 43,133,193, 42,184,110, 53,171, 33,240,168, 25,152,151,130,166,143, 72, 31, 81,218,160,171,146, 91,243,
- 41, 66,107,164, 31,136,147,158, 47, 9,207,203, 74,161, 6,199,241,178,227,233,186,231, 35,239,153, 86, 21,177, 40,198, 44,144,
-128, 68,163,180, 34, 16,121, 81, 68, 38, 90, 82,250,196,169, 95,178,173, 13,157,115, 28, 7,184,231, 65,153,136,111,219,108, 68,
-233, 90,210,122,141,104,123, 82,215, 67,231, 16,195, 64,146,238, 50,228,231, 7, 64, 95, 41,171, 92,203,145,148,103, 60,108, 70,
- 32,141,119,224, 70, 43,244, 72, 59,139,210,241,180, 53,220,175, 19, 6,184,154,224, 64, 41,206,165, 34,166, 68, 47,179,125,248,
- 52, 37, 26,160,172,166,232,216, 17, 92,139, 80, 37,131, 15,120,157, 39,199,103, 67,135, 21,154,117, 28,178, 86,201,214,176, 13,
-203, 85, 67,225,123, 54, 2,156,213, 48, 68, 68,101, 57, 67,240, 74, 93,240, 46,153,123,209,171,130,223, 91,116,212, 90,243,134,
- 13,188, 39, 36,235, 16, 9, 33,176, 85,206,240,205,130,189, 98,134,175, 39, 16, 3, 59, 4,154,205, 19,166, 90, 67, 12,172, 99,
-100, 79, 43,156,207,154, 45,159, 28, 43, 31,241, 14, 10, 41,243,250, 66,233,209,185, 60, 54, 62,113, 12,173,113,125, 46,238, 90,
- 67,219, 65,122,254,166,110,245,165,100,254,199, 21,245,161, 1,202, 92, 52,158,221,180, 61, 88, 55,250,163,199, 4, 57, 63, 90,
-180,188,191, 28, 5, 95,220,200, 47, 10,248,133,218,254,226,159,155,238,242,198,127,193, 13, 30,233, 99,239,169,130, 23,165,160,
-151,146, 2,216,196,152,119, 55, 82, 18, 99,196,249,129, 18,197, 82,122,212,136, 46, 91, 43,197, 68, 6, 76,161,105,157,231,110,
- 19,120, 97, 2,170,247,172,140,162, 38,146, 76, 66,171,114,132,132, 64, 37, 36, 29,176,140,145,235, 90, 35,131,167,198, 32,133,
-231,201,232, 10,159, 40,205, 58, 4, 10,161,120, 52, 64,116, 29,181,116,153,204, 19,251, 49,190,207, 65, 10, 40, 97,121,226,122,
-190, 48,175, 88,123,199, 84, 40, 38, 90,161,180,201,163, 94, 44, 50, 5, 10, 37,168,124,226,250, 86,201,112, 62,176,190,120,103,
-124,155,247,127,171, 46,127,232,149, 29,189,178, 49, 63, 25, 63,118, 84,202, 94,142, 6,227,184,147,143,163, 40,206,199, 75,149,
-114, 24,217,237,162,196, 22, 10,171,243, 72,189,158, 78,114, 40,221, 38,147,209,246,171,154,157,189, 41,125, 15,165,209, 8,145,
-105,108, 81,100, 43, 91,206, 97,143,196, 33,208,235, 72, 29, 21, 33,138,203,129,140,144, 99, 10, 98, 22,229,136,148,208, 82,100,
-123,188,204, 35, 41, 25, 19,209,103,222,186, 86,130, 3,165, 57, 47, 10, 68, 8, 44, 82,162,142,145,101,190, 18, 83,212, 5,235,
-243, 13,220, 95,147, 60, 76,181,102,221, 15,208,132,252, 90, 92, 55,240, 73, 15, 27, 15, 6,190,190, 47,248, 58, 1,156,227,102,
- 1, 7,139, 21,221,217,154, 73,253,152,178, 46,217,155,111,243,229,207,221,225,240,133, 93,202,218,242,232,124,195,233,186,101,
-181,233, 41,180,165,174, 74,162,148,116,131,227,120,213,240,240,116,201,134, 72, 16,146, 36, 21,169,119,248,161, 35, 70,151,127,
- 55, 52,146,148,119,237, 86,211,167, 72,155, 18,109,140, 20, 18,190,249,246, 99,206,122,248,164,154,210,238, 22, 84,174,103,221,
-221,167, 90, 31,227,156,227, 95,135,129,217,162,225,197,162,228, 17, 37,187, 15,158, 50,105,246, 17,100,112,140, 83,138,161,208,
- 28, 79, 44,198, 5, 78,149,224,205,157,130,223,250,218,125, 30,108,224, 63,187,190,155,149,181, 17,124, 8,124,126, 90,179, 61,
-181,156,165,200,245, 98,135,201,178,230,201,122,224,157,227,115, 68, 20,156,189,243, 17, 15,222,251,152, 15,138,119,121,225,215,
-126, 25,172,161, 45, 75, 44,150, 29,237,248,240,163, 5,205,249,134,237,253, 41, 91,123, 91,252,254, 87,255,130,116,117,159,120,
-243, 8,130,161, 22,240,202,151,222,228,245,254,152,223,252, 95,190,133,253,114,201,144, 2,123, 63,127, 3, 89, 87,236,206,175,
-176, 78, 9,163, 52, 71,202,176,103,115, 26,100, 66,226,186, 53, 47,138,158,117, 12, 28, 30, 93,163,156, 84,184,190,231,236,195,
-111,179,186,127,151,243,216,211,222, 95,114,173, 46, 41,129, 79,111,237,240,173,197, 25,161, 91, 17, 82,128,243, 39,188,121,245,
- 5,190,116,176,203, 92, 72,124,140,252,230,251,223,231,230, 36,112,183, 79,121,154,110, 20,105,108, 34,136, 48, 87, 10,171, 5,
- 58, 6,122,215,241,165,208,240, 71,235,101,158,132, 61, 61,207, 86,181,229, 34, 79, 32, 11,251, 35,188,230,233,111, 62, 27,255,
-182, 63,110,200,244,182, 49,145,115, 90,104, 58, 9,125, 31,185, 82, 41,156,149,156,181,158, 93, 23,153,106,201,218, 7, 54, 30,
-180,213, 57, 71,170, 46,185,182,189,207, 78, 49,229,102,109,185,163, 4,106,241, 24, 21, 28,127,201, 10,173, 36,115,223,161,181,
-198,214, 53, 73, 90,166, 69,238,127,103,117,205,212, 27,110,196,158,228, 28, 19, 99,168,103, 64, 31,120,219,195,220, 40,130, 86,
-108,155,130,137,177, 12, 36, 58, 41,217, 55,134, 67, 45,209, 93, 62,215,116, 72,116,222, 51, 12,145,223,121,218,227, 68, 68, 15,
-103,132,229, 26,180, 37,185,129,120,129, 4,149,144,250,241,117, 13, 54,251,250, 47, 34, 80, 69, 49,174, 25,199,139, 78,231, 71,
- 29, 86,186, 4,128, 93,136, 36, 92,255, 44,170, 91, 4,184,219,182,212,133, 96, 54,230,158, 8,163,145, 49, 48,232,130, 20, 61,
- 43, 33,233,181,161,141,145,132,164, 81, 5,123,186, 99,225,122, 30,217,154, 57,145, 77,202, 77,213,169,239,199,245,229,152,226,
- 41, 13, 76, 74,250, 30,146,177,104, 4, 11,163, 81, 9,130, 82,108,138,154,159, 80,146,149,144, 44,132,160, 78,176,107, 20,143,
- 66,228,101,173,121,170, 12,119,125,203,186, 83,204,170,154, 71,171, 99,136, 29, 71, 55, 95,103,245,238,159, 81, 81, 16,125, 71,
- 10,137, 90,102, 65, 93,242,207, 16,152,204,180,228,110,227, 71,200,149,186, 36,184, 21,163,142,162,200,164,200,103, 7,110, 63,
- 66,139,132,122,174,168, 59,127,201,123,253,113, 63, 77,155, 51,133,229, 15,141,151, 28, 16,187, 60,154,127,158, 15, 59,118, 35,
- 57, 5,135,203,177, 19, 33,171,149, 13,121,199, 36,199, 55,243, 25,169, 73,141,108,227, 13, 84, 19, 84, 72,156, 7,199,118,204,
-233, 78, 90, 89, 54, 41, 82,138, 12, 5,152,218,146,251,155, 37,203, 24,185, 82, 27,190,127, 49, 82,211,112,220,122, 98, 18, 92,
- 41, 21, 79, 26,232,230,137, 93, 18,139,148,173, 74, 87,101,230,232,106, 33,241, 8, 28,145,131, 42,119,115, 33, 64, 69, 46,244,
- 86,107,122,151,241,138, 61,137,211, 16,152, 23,138, 7, 35,183,153, 97, 4,181,172, 54,207,252,248,161,105, 57, 50,138,183,151,
- 45, 95,152,215,212, 85,129, 79,129,153,153,208,184,236, 19,245, 82, 83, 70,207,141,201,156, 7,205,134, 45, 35, 40, 5, 60, 93,
-181, 80, 87, 89,160, 83,106, 8,213, 72,124, 35,135,212,244, 99,177,246, 9, 38,228, 27,184, 30, 21,240, 23,171,142,139,177,129,
- 31,121,211,186,200,157,177, 41,153,212,147,156,250,230, 19,182,146,112,158, 24,134,129,162, 40, 57,188,178,203,223,253,204,117,
-164,210, 36,145, 69, 26, 46,145,233,106, 82,144,124, 78,140, 43, 10, 73, 8, 41,111, 0, 18, 72, 41,179,121, 33, 64, 34,142,230,
-134,244, 44, 80, 71, 2,106,220, 27,102,198,120,100, 54,218,139,125,132, 38,100, 40, 79, 14,227, 20,204, 68, 66, 8,137, 45, 43,
-142,143,207,121,251,126,199,204, 10,166,133, 98,157, 70, 49,225, 69, 97,247, 23, 1, 1, 33,123,244,111,215,224, 36, 15,151,129,
- 79, 98,226,221, 90,113,133,192, 21, 25,217, 44,207,168,239, 62,230,211,211,130, 23, 74,205,164, 42,176, 74, 50, 49,134,162,180,
-204,234, 2,107, 52,206,141, 80, 26, 21,243,168,174,168, 32, 37,130, 50,248, 21,200, 62,161, 99,200, 62,124, 4, 49, 6, 98,231,
-240,235,158,197,201,154,132,224,241,249,138,234,253,123,156, 76, 42,238, 79,246, 57,156,148,220,153, 77,249,120, 50,229,252,227,
-125,228,174,163, 57,237, 88, 29, 9,222,245, 3,159, 58,152,243, 7, 83,205, 71,255,235,255,199,250,147, 99,170,249, 22,113, 62,
- 33, 20, 37, 87,175,239,112,227,206, 14,157,128,247, 31, 44,120,177, 42,217,185, 49,231,188,247, 76, 66, 66,185,200, 63, 56,172,
-153, 36,208, 62,113, 69,229,176,141,118,106,249,211,147,150, 38, 70, 86,171,134,214,105,218,135, 13,215,127,234, 38, 79, 11,195,
- 45,109,120,233,229, 27,220, 83,146,189,190,225,218,235, 45,103,143, 30, 48, 63, 60, 66, 77, 12,182,123, 68,122,119,159, 52,109,
-184,117,235, 58,169, 56,224,181,197, 61, 42,161,248,149,127,122,155,213,100,155,101, 40,152,238, 28,208, 3,171,224,121, 41, 4,
- 42, 5, 91, 74, 51,179, 80,203,132, 78,142, 85,232,104,135,134, 36, 11,166,214, 82,149, 5,231, 85,201,176,253, 18, 31,156, 46,
-249,252,201, 35, 90, 35,248,189,199,199,252,194,213, 61,190, 33,160, 76, 18,191, 60,193,223,127, 64,216,221,167,174, 37,197,225,
- 54,161,152,210,233,146, 55, 14, 15,153,107,216,234, 29,223,110,251, 81,185,238, 73, 66,243,238,224,249,169,118,193,141, 80,211,
-250, 14,227, 29,177, 95,231, 93,249,201, 34,171,172,155,238, 7,241,166, 74,254,208, 63,251,191, 18,110,243, 31,157, 43,127,241,
-103, 14,249, 49,151,163, 76,233, 74, 93,242,120,227, 40, 10,197, 84,128, 76,137, 32, 4, 87, 38, 5,171,113, 63, 43,172,162,212,
-150,235,179,125,246,118,182,185,105, 44,183, 66,131,177, 37,221,234,132,253, 98,139,143, 54, 11, 14,148,193,147, 24, 16, 76,234,
-130, 66, 25,170, 66,161,164,229, 72, 43,174,166,130, 32, 27,172,138,244, 1,110,109, 77, 16,177,227, 65, 93,208, 88,240,218,144,
-140,161,141,129,181, 79, 60,236, 58,110,148, 2, 75,228, 64, 43, 54,110,192, 13,158,213,162, 69, 63, 62,135, 20,114, 60, 47, 25,
- 42, 21,184, 12,203, 73,189, 71,104, 77,234, 7,114, 12, 12,249,251, 90, 75, 8,125,222, 19, 95,212, 5, 61,234,178,180,186, 76,
-208,188,200,216,186, 40, 96,195, 0, 91, 19, 24, 2, 31,172, 29, 98,170,249,194,164,226, 97,204,251,241, 34,102,230,135, 19, 10,
- 27, 2,131,202,158,140, 45, 47, 88, 75,197, 92, 72,222,117,145, 37,137,164,244,136,184,214,121,109,172,199, 6, 67,251, 92,224,
-171,154, 32,192, 35,176, 82, 33,148,100,219,148,120,224, 84, 91, 78,253,192, 34, 68,246,203, 9,149,144,120, 35, 57,117, 45,199,
- 99,156,107, 72,142,123,235, 83,110,137,196, 98,121,130,191,251, 22,110,179, 4, 60,173, 79, 92,213,153, 8, 89, 5,129,151,130,
- 33, 66,239, 2,167, 62,159, 59,249, 66,246,156, 88, 58,166,220,252, 92, 76,132,205,115,214,242,190,135,117,243, 67,150, 54,239,
-255,102, 17,200, 5, 12,228, 34, 10,209,140,240, 3, 51,142,135,109,145,255,122,214, 28,164,188,203, 29,134,203,255,103, 24,227,
-238, 10, 9,171, 53,204,103, 25,217, 88,141, 0,152, 16,115, 8,141, 28,129,241, 50,145, 82, 96,170, 44, 51, 45, 41,148, 70, 11,
- 8, 98,132,133,164, 64,235, 2, 66, 73,206, 66,224,254,102,160, 31, 65, 49,155, 33, 50, 83,146, 62, 69, 54, 81, 16,164,160,113,
-145,121,105, 80, 18,106, 99,105,147, 96,183,208,248, 81,249, 46,149,102,229, 61, 67, 8, 57, 13, 45,194, 32,115,177,121, 48, 12,
- 4,153,253,216, 69, 82, 60,246,185,211,234, 47, 20,215, 23,182, 61, 55, 22,121, 33, 24,156,103,219,100, 91,220,142,177, 84,198,
-114,238, 58,172, 50, 36, 33,136, 33, 96,146,100, 16, 96,165,192, 73,129,219,180, 92,153, 84,156, 54, 45, 68,216,154, 22,244,221,
-144,181, 10,105, 92, 81,232,231, 4,117, 62,140, 30,244,139,214, 54, 94,134,212, 92,208,239, 82,204,227, 44,109,161,237,248,236,
-155,159, 97,190, 55,231,244,248, 28, 31, 96, 50,157,178, 60, 89, 81, 79, 38, 92,217,219,226,221, 79,214,188,112,101, 62,142,202,
-101,166,177,141,193, 85,125,200, 25, 1, 89,148, 47, 40,108, 78, 40,147, 34,143,233,253,168,198,245, 33,226, 67,194,187,108,105,
- 84,241, 66,249, 30,192, 7, 66,235,232,154,129,174, 15,196,193,227, 82,100, 21, 28,201,199,108,135,139,145,171,251,187, 28, 28,
-238,242,206,219,239,243,222, 73,195,178,117,172,134, 17, 81,219,135,188, 12, 59, 30,133,138, 25,223, 4,103, 14, 38, 18,185, 93,
-225,251, 56,106, 57, 37,243, 90, 83, 25,203,164,158, 34,181, 37, 84, 22,105, 53,189, 15, 28,159,183,244,157,163, 42, 53,211, 73,
-137,210, 18,239, 60,109,215,211,245,217, 98, 39,180, 34, 70, 75,194, 18,140, 70, 10,205,118, 81,115,125,190,205,225,100,206,196,
-148, 76,149, 97,191, 40, 41,146, 68,205, 45,178, 46,105,107,139,208, 2,206,150, 76, 39, 19,110, 29,212, 52,202,208,238, 77, 16,
-170, 96, 82, 22, 84,243, 18, 61,155,178,127, 56,229,202,225,148, 99, 49,229,251,201,210,204,106,228,225, 46,147,171,115,156, 86,
- 60, 10,112,114,222, 99,181,165,124,113,155,117, 59,112,122,210, 48,108, 28,243, 29,131,248,232,148,151,246,167,136, 0, 86,231,
- 56, 76,149, 18, 47, 84,130,155, 83,195, 7,143, 60, 11, 57,103,101,225, 74, 33,216,185,122,200, 78,105,104, 3,248,178, 32, 77,
-166, 32, 38,108, 85, 37,219,135, 59, 60,126,186,226,159,124,230,243,252,131,255,242,167, 57,122,227, 14,213,233, 19,134,167, 31,
-243,130, 45,137,102,194,244,240, 6,147,131, 79,177,127,227, 58,182,174,152, 78, 39,204, 37, 28,106,195, 22,138,173, 34,113,160,
- 52,179, 24,208,190,103,238, 6, 78, 22, 43,246, 82, 71, 85,212,180,211, 41,117,239,249,104,240,220, 48, 5,119, 69,226,134,138,
-188,148, 4,223, 76,138, 95,170, 45,239,161,144, 66, 35,241, 8, 23,120,176, 25,216,173, 5,247,134,129,148, 36,183,235,138, 93,
- 91,177,109, 44,239, 56, 79, 24, 57,214,194,121, 98,236,249,254,114,205, 46, 61,186,239, 89,117, 11,254,229,135,143,224,254,113,
- 30,133,187, 31,218,125,203, 81,159, 18, 70,190,130, 28,187, 84,255,159, 0,136,121, 54, 69,139,151,205,118, 28,207,138, 36,168,
-172, 34,133,132, 23,130,237,164,120,109,111,194, 79,237,109,241,234,124,202,212, 72, 2,130, 86, 9,182,180,225,198,116,198,220,
-150,236,213, 19, 94, 41, 11, 74,109,216,149,146,169,202,126,117, 45, 45,219,214, 98,149, 98, 87, 89,166,166,224,160,168,216,211,
- 21,187, 41,114,104, 44, 7,186,100, 91, 21, 76, 80, 76, 76,205,188,156, 48,177,154,235, 86,179, 63,157,113,168, 37,187, 2,182,
- 84, 68,118, 29,133,115, 44,215,107,142,130, 71,227,217,180, 61,199,231, 13,127,113,186,100,117,214,142, 22,219, 1, 17,179,240,
-239, 50, 66,220, 95,254,174,207,191, 30,241,121, 29, 86,200, 89, 26,207, 24, 23, 98,244,105,143,103, 91,161, 47, 99,195, 73, 96,
- 44,194,103, 55, 65, 72,112, 10,196,145,124,104,165,198, 11,129, 23, 57, 41,206,169,172, 53,216,140, 60, 17,139, 96, 41, 19, 8,
-205,146,144,111,231,114,116, 4,153,139, 32,151,145,241, 33,115,214, 71,146,144,148, 36,152,146,137, 50,217,222,172, 52,115,169,
-121, 34, 52,218, 90, 10, 91,162,144, 60, 9,158,162,172,184, 35, 5,247,146,128, 48, 48,183, 37, 65, 89,170,208, 99,250, 6,101,
- 13,209,123,172, 72, 56,145,181, 71, 49, 4,150, 33, 19,244,136,137, 39,109,164, 75, 99,232,140, 80,227, 45,125, 20,204, 41,123,
-185,106, 45,205, 88, 43, 85,182,185,141,103,244,127,218, 79, 61,201, 5,164, 75,204,127,226, 14,203,119,238,229, 20, 36,115,161,
-146, 31, 59, 43,173, 71, 47,233,216, 93,116, 49,171, 29,235, 45,216,173,145,186, 32, 94,164,165,117, 62, 23,253,114,228,141,203,
- 44,246, 58,243, 1, 71, 34,137,200,169, 15,108, 9, 65, 82,154,193, 59, 64,176,240,158, 62, 68,102, 82,178,136, 9, 41,229,248,
- 98,141,117, 78, 93,140,254, 5,223,111, 19, 91, 86,176,155, 2, 83, 11, 79, 7,199,212, 90, 54, 41, 49, 9,238,242,134, 43, 5,
- 40, 79, 10,154,211,152,152, 26,147,131,108,148,160,197,211, 15,130,190, 16,185,177,121,102, 51, 35,219,199,116, 22, 5,246, 33,
-239,168,139,152,232, 4, 48,116,212, 69,205,248,209,205, 89, 11, 70, 83,199, 72, 7,236, 1, 15,132,160, 78, 61,159,155,105, 60,
-154, 10, 79,179, 59,201,187,100, 3,119,151, 21,125,232, 47, 87, 32,210, 65,127,177, 79,231, 50,138,183,176,227,141,126,180, 46,
-132,113, 74, 82, 88, 54,171, 14, 63,238,232,125,219,211,156,181,172,155,134, 33,120,166,243, 9,235,179,200,241,249, 6, 43, 4,
- 82, 10,172,214,232,145,196,102, 20,156,167, 8, 93,196, 26, 49, 58, 81, 69,158, 96,165,252,181, 14, 41, 63,156,140,217, 38,231,
- 70, 12,171,243,158,228, 60,214, 5,116, 4, 55, 4,206, 7, 71, 59, 12, 52,222,161, 60,164,152,144, 66, 48, 51,134, 43,202,178,
-131,228,221, 71, 11, 58, 61,126,177, 87, 62, 63, 0,140,184, 89,178,109,109, 29, 97, 42, 97,237,225,173, 13,113, 94,160, 42,147,
-117, 1, 41, 49, 51, 5, 91, 85, 69, 93, 20,244,193,113,114,182,121,150,213,227, 55, 3,194, 69,156, 82, 76,230,142, 9, 16,189,
-199, 24, 73, 89, 25,166,157,165, 25, 34,102, 42,232, 6,139, 76,150, 98, 54,231,149,121,193,107,179,138, 74, 8, 66,231,104, 87,
- 93, 78,206,219,177,120, 13,117,173,153, 76,118,152, 78, 45,190,141, 52,205,128,144,112,125,215,240, 66, 50, 28, 92, 41,120,184,
-242,156,135,192,233,178,163,233, 60,199, 77,192, 27,197,193,139, 7,108, 29, 84, 76,182, 11,234,144, 16,189,167, 43, 4,147,173,
- 57,202, 57,190,119,188,230,233,131, 37,171,147,150,183,255,213,191,227,149,255,238,191,230,255,248,247,111, 33,222, 62,231,103,
-127,233, 85, 84, 44, 16, 86, 19, 67,194, 68,216,171, 53,191,254,197,107,124,245, 91, 15, 56,108,175, 80, 46,159, 98, 30, 46,240,
-181,229,112,174, 49, 30,150,201, 80, 94, 55, 12,141,101,253,228, 41,191,246,153, 79,241,185,219,135,252,179,255,251, 27,188,247,
-206,219,156,223,250, 60,101, 45, 57,223,222,102, 90,109, 35,119,182,153,204, 10,202,105,129, 34,209,172, 91,180,154, 50, 44, 55,
- 40, 25,217, 18,134,210, 13, 24, 63, 32,137, 12,174,227, 85,237,249,131,183, 63,228,211,119, 63,160,252,212,171, 44,119, 95,226,
-203, 74, 48,173, 44, 95,188,249, 50,230,250,117, 86,237, 57,243, 79,238,242,213,179,142,191,183, 83,241,241,149, 25, 31, 60,109,
-145, 74,225,106,203,191, 57,107,152,118,138,175,236, 40,174, 85, 91, 68,173, 80,205,154, 45, 37, 57,142,153, 51,145, 98, 78, 72,
- 91,106,197,111,156,159, 49, 77,176, 56, 89,193,217, 57,162,235, 72,234, 71,156,105,126,212,164, 92, 68,178,186, 17,190, 97,117,
-190,160,180,253, 95,109, 4,254, 67,111,234, 23, 66,186, 8,187,159,189,195,233, 71, 79,152,138,192, 68,107,174,238, 90, 94,153,
-205, 56,170,103, 36,169, 56,242, 1,193, 57, 83, 34,131, 79,108, 27,201,204, 42, 84,138, 36, 37,217, 83, 10, 29, 2,186, 40, 8,
- 17,246,148, 39,186,129,151,132,200, 35,114,215, 51,137,130,210,123,102,182,196, 4, 79,169, 20, 69, 89, 99, 38,134, 48, 68,154,
-245,130,217,100,135,232, 61,125,223,208,108,214,180, 93,203, 98,211,242,198,224,121,176,110,120,228, 60,167, 90,243,205,174, 99,
-224,255,103,237, 77, 98, 36, 77,243,243,190,223,187,126, 91, 44,153,145, 75, 85, 86, 85,215,210, 93,221, 51, 61,156,157, 67, 14,
- 57, 36, 37, 82,150,185,192, 48, 33, 27,180, 1, 95,228,131, 47, 6,124, 48, 4, 24,240, 73,128,225,139, 1,195,128,125,240,193,
- 7,249, 98, 2,186,200, 2, 40,203, 20, 32,153,139, 8, 82,148, 72,145, 34,197,153, 86,207,116,207,244, 82,221, 85,213,149,149,
-107,100,196,183,189,155, 15,239,151, 85, 77,114,108,211, 26,246,169,208,221,200,202,140,140,248,254,219,243,252,158,200,199, 62,
- 48,196,145,170,148, 19,188,230, 83,181, 23, 72, 83,190,247,167,145, 17, 9, 16,222, 79,209,203, 58, 11,124, 39,253,128,144,110,
- 0, 0, 32, 0, 73, 68, 65, 84,198, 12,169,203, 53, 35, 76, 27, 99, 83, 78, 19, 85,200, 53, 67, 76,153, 24,184,108,243, 27, 2,
-148,146, 48,122,190, 73,207,144, 4, 95, 89,104,230, 82, 51, 18,104,148,161, 11,129, 30, 48, 74,115, 21, 34,131, 86, 28, 6, 8,
- 41,178, 22,138,129,172,157, 17, 74, 17, 98,204,104,221,232,166,237,114,145, 79,198,170,129,137,204,183,150,138,215,141, 97, 68,
-177, 86,154,195, 8, 87, 90,114,144, 4, 79,148,224,142,153,115, 25, 70,222, 46,231,220,102,195, 99, 96, 29, 34, 42,118,220,212,
- 37,224,121,214,109,184,103, 11,210,152,104, 19,132, 16, 72, 65, 48, 34,145, 24,158,143, 25, 16,148,195,185, 66,174, 35, 74,102,
-235, 85, 93,101,149,187, 45, 50,187,228,250,197, 45,203, 23, 37,235, 7, 11,116,169,203, 23,201, 49,111,254,212, 15, 99,181,226,
-226,248, 98,162,209, 77, 44,243,248,169,172,206, 76,230,200, 19,108, 59,100,161,211,124, 6, 77,141, 44,116, 86, 92,247, 35, 92,
-173,243,215,190, 78,114, 19, 47,211,192,230, 70, 49,196, 12,239,111,167, 80,148,150, 72,231, 35, 1, 88, 15,158, 83,239,115,122,
-155,204,211,101, 10, 57, 95, 55,143,149, 83, 41,157,160, 30, 82,234,140, 1,148,153, 73,110,148, 96, 27, 34,123, 74, 50,151,154,
-109,244,236, 72,137,146,240,201,198,211,163,208, 18,206,131, 32, 34,169,180, 98,136,226,101,247, 45, 39, 50, 73,152,168,120, 46,
-163, 20,215,253,200,253,166,102,183, 40,232, 17, 84, 66,162,148,164,139,137,218, 24, 98,140, 12,193, 83,105,203,214,141,212,133,
-162,241,142,135,210, 32,146,224, 10,201,171, 74,177,171, 37, 94, 8, 62, 95, 20,124, 36, 5, 97, 24,115, 55,231,166,224, 23, 89,
-230,155, 57, 62,223,133,220,148,171,172,124,166, 84,185,248,194,250,246,214,219,223,230,151,126,233,231,216,180, 46,131, 85,124,
- 98,216, 14, 92,182, 3,149, 45,121,248,218, 13,118,155,130,222, 7, 8, 57,101,205, 76, 64, 35, 73,162, 31, 60, 91, 23,104, 93,
-194, 74,137, 53,249, 53, 12, 36, 98, 72,140, 33, 48,186, 56, 61, 88, 50, 39,158, 20,233,221, 52,149,247,158,147,118,228,162,115,
-180, 62,131,102, 46,199,108, 99, 25,198,158,232, 3,115,101, 89, 52,101, 22,211,125,243, 99, 94,187, 10,236,123,193,221, 91, 5,
-143,174,223, 27,149,124,153,206, 86,146,207, 58, 33,193,131, 18,154,252,250,213,141,226, 70, 83, 48, 43, 11, 14,235, 57,165, 54,
- 40,107,176,214, 18,133,192,143,142, 97,219,211,110, 91,132, 53,212,149, 69, 10,232, 6,199,229,118, 96, 24, 29,163,243, 68,159,
-208, 66, 82,207, 53,133,209, 84,139,146,215, 15,231, 28, 29, 52, 44, 22, 21, 85,109,176, 69,206, 92, 55,141,102,119,111,134, 20,
-145, 79,158,108, 88, 46, 74,234,218, 80, 87, 6, 99, 21,139, 66,113,179, 80,236, 91,195,172,210,232,198,176,179, 44,217,158,245,
-180,219,158,110,219,161, 43,205,108,183,192, 26,137,114,129,184,245, 96, 37,221,186,227,234,209, 25,103,127,248, 61,254,232,111,
-255, 35,174,126,243,219,168,143, 71,222,252,143,191,204,235, 95,125,192, 31,254,218,111,240,214, 63,120,155,215,191,112,151, 54,
- 70, 46, 98,160,182,130,170,176, 88,173,208, 11,195,229, 7, 29, 95,118,138, 97,188,162,171, 74,116,109,249,162, 27, 24,147, 32,
-218, 2,105, 45, 97,127,151, 79,198,145, 95,253, 59,255, 59,199,127,237,231, 40, 94,249, 12,183,239, 29,177, 58,184,193,108,181,
-135,106, 26,154,101,197,172,177,212, 86,103,122,160,247,232,209, 81, 14,158, 57, 30,237, 28,115,109, 56, 48, 5, 59,163,103,214,
-181,236,246, 35,111,218,130,207, 55,115,142, 46, 79,249,209,122,198, 23,234, 25,111, 44, 86,188,214, 44, 89, 21, 13, 69,217,112,
- 65,100,102, 5,172,118,216,111,102,220, 61,216,229,196, 40,130,206,205,126,144,154, 31,155,207,168, 4,120,239,113, 49,208, 59,
-199,199,235,109, 14, 91, 57,187,130,203, 22,113,118, 65, 26, 60,195,101,159,183, 59, 50,175,156,196, 4,208,249,127, 12,171,178,
- 19, 58,187, 48, 25, 82,163, 77,126,182,125, 90, 36,252,255,245,143,148, 47, 79,145,159, 38,226,148, 22, 10, 75,119,182,201,124,
-245, 36, 56,216,169,120, 56,111,184,211,204,153, 43,141, 85,134, 72, 98,207,150, 92, 5,207,188,208, 52, 82, 82, 40,195,162,108,
-168, 35,236, 38, 65,153, 28,209, 71,124, 20, 84,202,176, 40,106,106, 99,153,233,130,133, 20,212, 50, 79,150,141,176,148,202, 80,
-151,115, 36, 54,171,250, 83,162,158,175,168,202, 57,133, 45, 41,164,160,180,150, 89, 89,178,154,213,220, 60,216,227,230,193, 46,
-183,247,151, 28,220, 62,228,232,112,193,155,183,110,114,127, 94,242,198,254, 42,111,193,148,102, 43, 18,201, 65,210, 50, 39,103,
-126,159,130,254,231,252,252,113, 90,183,199,148, 7,174,235,201, 61,168,140,201, 86,102,154,162,205,203,215,109,130,200,160, 12,
-226,186, 41, 51,121, 53, 30,147,160, 52,138, 66, 41,198, 24,137, 19,235,100,155, 34, 66,107,198, 16, 49, 69,197,133,243, 28,218,
- 2,132,164, 81,138,185,178,108,100,230,151,100,198,135,153,232,158,229, 11,160, 87,146,138,207, 21, 13, 91,169,179,218, 62, 9,
-180, 86,236, 34,121, 79,192,171,218,210, 11, 65, 43, 20, 23,227,128,156,182,202, 3,144,148,101, 37, 37,167,126,228, 94, 81,225,
-124,160, 52, 5, 78,106,182, 33,226,141, 70, 26, 67,151, 96,144, 18, 79, 34, 12,110,154,250, 38, 79,122, 97,242,107,164,174,183,
-216,230,229, 16,169, 36, 86, 10,130,209, 63, 96, 81,151, 19,143, 56,193,201,199,207,184,248,222,211, 9,101, 39,255,244, 77, 74,
-234,151,197, 93,201,172, 50,245,125, 22,169, 44, 22,160, 4,105,116,176,238, 50, 37, 39,201, 9,123, 23,114,135, 44, 21,140,158,
-202, 74,132,130,185,214,180,206,103,228,235,208, 35, 83,190,131,131,228,233,118,224,108, 66,143, 18, 32,133,144,115,192,211,244,
-166, 49,246,133,170, 92, 10, 73,175,114, 13,168,117, 66, 41, 77,129,100, 87,103, 2,207,214, 7,110,106,195,165,119, 92,186,200,
- 43,165,224, 59,237,200, 16, 37,141,200, 69,189, 83,137,116,253,206, 82,217, 7,253,162,129,241,147,234,220,121, 80,130, 82,102,
- 20,226, 43,205, 12,161, 20, 34, 6, 42,109,112, 49, 32, 17,184, 24,241,126,164, 52,154, 98, 28, 89, 37,193, 54, 38,110, 21,154,
- 93, 45,105, 99, 98, 68,114, 71, 75, 78, 82, 96, 12,129,171,160,178, 40,143,240, 50, 16,199, 95,175,228,253,203, 53,141, 79,121,
- 69, 86,218, 23,144,130, 95,248,247,127,129,187,175, 30,177, 94,119,180,219, 22, 55,142,140, 19,225,109,103,177, 64, 72,197,106,
- 86, 49,159, 23, 64,166,227, 73, 33, 24, 66,162, 31, 61, 67,240, 88, 18,221,144, 3, 92,140,150, 36, 9, 33, 10, 66,140,196,152,
-178, 47, 61, 68, 34,249,207, 17,129,144, 80,164,108,183,233,187,145,181, 11,108, 83,196, 13,142, 34,230,200,213, 49,100,238,128,
- 78,153,141,220, 1,191,246,214, 35, 68, 23, 41, 37,136, 33,113, 62, 70,190,114,183,225, 39,238,204,248,185,210,240, 83,175,214,
-188,118, 88,210, 61,172,216,155, 75, 78,199, 8,165, 64, 42,197,172, 52,212, 70, 50,183,150,253,197, 46, 50, 66, 81, 87,216,178,
- 64, 11, 73,236,115,116,106,136,129,166,170, 88,148, 6, 23, 2, 39,235,142,227,179, 13,237,101, 71,215, 13,120,159, 83,241, 12,
- 18,165, 65, 25,133,109, 10,230,149,193,216,220, 56, 6, 35, 73,149, 70,107, 56,220,105,176,133,102,177, 83, 83,149,134, 40, 21,
- 74,201, 28,202,151, 18,133,139,148, 61, 36, 33, 24,172, 64, 43,201,106,127,198,114, 89,226,189, 39, 8,193,191,250,149,223,229,
-189,111, 62,226,198, 98,135,245, 39,151,124,247, 15,255,132,239,254,238,159,240,123,255,203, 31,243,248,183, 62,200,233,119, 40,
- 36, 1, 22,145, 31,254,233, 31,226,222,143,127,158, 94, 25,126,235,215,255, 25, 7,183,143,184,212,138,221, 90, 83,219,108, 13,
-221,169, 44, 39,251, 13,247, 14,231,204,223, 63, 99, 45, 34,135,165,102, 39, 68, 46,158, 93,177, 45, 11,234, 89, 65,219,123,214,
-169,192,124,229,171,148, 70,177,218,171,152,151, 6,163, 20,218,228,207,122,109,196,139, 39,182,117,158,114, 24,144,219,145,153,
-246, 28, 10,201, 13, 93,240,197,162,226,168, 42,121, 80, 46,184,191,115,131, 7,119, 30,242,224,246,125,142,118,110,113,115,182,
-207,222,114,159,157,131, 61,234,162,166,218,205, 81,153, 85, 80,244, 30,134,228,152, 23, 5, 55,155, 37,141, 49,236, 23,146,247,
- 7, 15, 72, 66,138, 52,140, 28, 25,195,156,196,243, 97,195, 63, 60, 59, 39, 73,248,194,162,164, 22,158,139,147,233,110,238, 70,
- 16, 2, 33,114, 40, 19, 58,175, 43,179,216, 52,252,121, 32,135, 41,243,218,211, 76,159,111, 61,177, 33,162,255,139, 23,245, 79,
-107,139, 94,168,233,203,188, 54, 45,154, 12,194, 41,243,234,118,183, 48,220,168, 13, 71,166,100, 89, 20,204, 76,137, 4,106,165,
- 8,164,156, 82,153, 50,169,177,138, 17,225, 6,172,243, 84,222, 81, 41,203, 24, 35, 85, 81, 33,133,164, 48, 10, 37, 36, 18, 65,
- 74,130, 74,107,164, 0,107, 42,170,229, 14, 66, 90,116,105,145,218, 98,154, 6,101, 76,230,195,199,136, 20, 57,153, 82, 41, 77,
- 89, 55,104,101, 41,139,146,217,124,151,133,169,185,189, 60, 96,175,106,216,173, 27,238,204,230,216,194,240,112,103, 65,242,129,
- 79, 4,164,249, 33,209,119,153,143, 30, 35,233,251, 20,116,241,233,194,206,167,132,188,215,156, 20,117,189,158,143, 47, 99, 70,
-175, 29, 60, 90,252,169,190, 64, 76, 95,188,117, 17,167, 37, 46, 38, 26,153,208, 90, 35,164,230,156,140,204,141, 49, 23, 79, 23,
- 35,117, 89,210, 37,197, 40, 36, 27, 20,133,212,204,164, 96, 43,212,196, 9, 17,211, 10,126, 66,112,203,130, 59,182,224,105,130,
- 91, 90, 83,107,197, 59, 18,238,170,130,103, 4,142,164,224,189, 16, 88, 41, 77,157, 18,167,198,114, 11,120,230, 51,151, 69, 24,
-201,101,146,252, 84, 85,225,130,231,245, 89,195,190,150, 84, 86,243,165,217,140,189,186,225, 94, 97,121, 88,215,156,166,200, 37,
-146,116,157,228, 70,200, 53, 48, 94,231,128,144,201,173,215,129, 95,218, 66,146, 36,242,249,246, 7, 43,234, 33,228, 78, 75, 76,
-119,246, 52, 37,241,148, 38,119,184, 97,202, 85, 15, 33, 23,255,235,187,210, 56, 78,111,244,204,114,167, 29,178,186,187, 31,243,
-135, 69, 77, 10, 63,171, 94, 78,235,165, 69, 68, 88,104, 77, 39, 97, 97, 45,235,209, 49, 51,154,110, 74, 20,218, 6,143,210,138,
-139,126,186,133,167,188, 14, 15, 62, 76,112, 28,253, 18,126, 35, 68, 22,124, 69, 8, 99,164,148,217,163,222,135, 64, 35, 5,109,
-140, 40,160, 19, 76,111,116,193, 71,193,115,168, 36, 39, 67, 96,144, 2, 23,179, 55, 49, 75,193, 95, 6,138, 76,161,228, 83,145,
-141, 47,188,168,103,189,231, 51,203, 25,125,138, 84, 74,224,147,160, 16, 80, 75,141,115,142, 82,105,180,204,162,182,165, 82, 24,
- 50,145, 46, 41,145,255, 10, 37,153,135,196, 25,130, 61,173,168,148,230, 56, 74,156,152,254,174,126,200,239,114,165,114,160,139,
-148, 89,128,120,189,194,113,126,210, 61,100,229,100, 88,204,248,202, 23, 31, 50,244,158,174,115, 4,231,240, 19,250, 85,164,196,
-195,215,142,152,213, 5, 59,179, 34,115,117, 2, 72, 45, 9, 33,178, 25, 29,151, 87,158,110, 12,164,152,111, 65,102,250, 62, 37,
-146, 20, 18,129,196,232, 34, 99,200,104, 74,145, 34, 86, 64,149, 50, 38, 22, 31,216,142,158,245, 24, 24, 59,135,115,142, 2,120,
-238, 60,235, 20, 72,222,209,199,192,108, 49,231, 81,187,229,215,255,201, 7, 60,146,129,247,206, 28, 31, 92, 57,134, 51,207,199,
-207, 29, 31, 94,246, 28, 24,184,245,165, 59,252,200,195,215, 41,142, 14,184,163, 3, 63, 84, 43,126, 98, 94,177, 42, 18,181, 16,
-164, 4,203,210,114,179,217,161,158,205, 40, 22, 53, 86,233,204,100,146,249,119, 22, 2, 44,230, 53,135,179, 18, 66,224,252,116,
-195,241,211, 51,182,235, 43,252, 48,226,188, 35, 57,143, 74,137,224, 61,206,193, 48, 38, 98,161,137, 74,210, 43, 65, 42, 13,205,
-178, 64,156,111, 40,254,245, 19,222,189, 88,227, 17, 72,151, 72,218, 80,104,157, 5,133, 36,132,139,200, 36,136,133,202, 41,130,
-217, 9,136,213,138,157,155,115,102,251, 53, 95,254,201,207,241,141, 47,191,198,215,239, 46,217,185,183,199, 87,190,244, 6,255,
-252, 95,109,217, 14, 11,228,113, 64,208, 79, 69, 29, 22,111,214,232,162,228,225,205, 5, 95,255,252, 17, 15,126,244,179, 60,223,
-175,216, 43, 53,149, 75, 84, 74,162,173, 70, 22,146, 7,187, 37,197, 97, 69, 58,168, 89,188,187,229,234,124,160,235, 70,254,232,
-120,160,154, 43,124,136,140,235, 17, 51, 4,118, 18,148,203, 18,229, 19,138, 68, 97, 36,113, 59,146,188, 71, 38,137,116, 1,209,
-142,212,253, 72,108,183,104, 34,183,133,230,205,178,225, 70, 89,112,179,110, 88,205,102,212,203, 5,229,206, 28, 93, 26,172,178,
- 24, 4,182, 44, 49,179, 10,213,212,232,202,162,171, 2, 85, 20, 88,107, 88,120,205,111, 15,129,207, 53, 13,101,213, 80,107,139,
- 72,145, 66,120,158, 62,187, 36,125,112,204, 7,255,215,247,216,185,111, 24,199,150,199, 23, 23,188,211,122,126,246, 96,151, 47,
-238, 30,242,234,206,146, 15, 82,160,221,110, 50,222,118,162, 41, 10, 49,185, 69,234, 10,154,102,138, 48,253,148, 86,136, 41, 2,
-238,122, 82, 20,249, 62,154,113,157, 67,254, 44,253, 69, 7,159,235, 33, 71, 22, 57,113,171,106, 96, 94,231, 7,180,214, 44,172,
- 98,169, 36,123, 11,131, 1, 30, 86, 53,145,108,169, 45,165, 32,166, 56,125,174, 96,244,217,109,161,200,216,106, 43, 4,115,105,
-176, 73, 98,173, 38,133,152, 83, 19,125,100,219,181,108,251, 43, 68,116, 8, 4, 82, 40,164,136, 24, 85, 32, 85, 66, 8,131, 42,
- 12, 56,151, 49,206, 82,230,144, 24,231, 16, 90,163,109,129, 68, 99,108,133,178, 21,214, 52,216,170, 65,106,141, 45, 42,138,162,
- 38, 42,195, 65, 61,103, 67, 98, 89, 21,124,243,108, 64,223,219,197,159,158,229,154,108, 20,233, 26, 64, 38,167, 9, 94,235,191,
- 24,126,220,232, 28,212, 99,228,196, 43,153,238,235, 98,138,245,142,113, 18,253,102, 56, 24, 70,210, 38,184, 97, 45,181, 53, 12,
- 82,146, 84, 14,185, 84,202, 18,100,110, 70,163, 84,196, 32,152, 87,150,109, 18, 84, 74, 19,164,160, 81, 6, 33, 5,133,146,116,
-241, 90,155, 52, 21,118,165,153, 11,197,171, 69,197, 73,204,191,155,165,178,108, 17,116, 40, 66,146,220,144,138, 36,178, 88,120,
- 30, 35, 31, 2,165, 41, 9,228, 96, 46,165, 21, 59, 82,114,171, 50,220,211, 37, 91, 4, 51,105,216, 74,197, 74,149, 12, 74, 83,
- 40,205,205,178,102, 16,130,211, 48,109, 42, 70,247, 82,139,161,204, 20,179, 42, 94,164,222,161, 45, 74, 25,146, 82, 4, 85,254,
- 37,228,169, 95,175, 76,174,253,155, 77, 61, 21,177,235, 28,239, 79,197,203,169,201,203,221,141, 89, 24, 81,152,233,126, 49, 21,
-160, 41, 44, 5,145,253,206, 47, 86, 11, 50,175,151,157, 53,204,180,230,187,155, 45,243, 66,179, 52,134, 53,153, 94,212,198, 64,
- 7,116, 78,112, 17, 2, 98, 12,153,169,155, 34, 47,118, 52, 98,250, 30,194,212,125, 43, 5, 62, 32, 75,205,166, 31,153,149,138,
-218, 26,146,247, 44, 11,203,214,123,218,224, 9,192, 54, 38,138,152, 56, 13,137,237, 48, 78, 65, 41,215, 30,252, 63,251, 65,158,
- 86, 38, 76, 63,127,120,201,163,126, 60, 70,110, 53, 22, 71, 98, 71, 74,118, 76,193,102,220, 98,180,129, 48, 16,164,193, 6, 79,
- 99,114, 51, 82, 41, 73, 36,161,149, 68, 75,197, 73, 74,236, 33,121, 26, 3, 43,109,176,181,228,233,224,167,201,156, 60,141, 79,
- 62,234, 23, 98, 69,145,166,135,213, 84,153,125,142,171,187,120,118,204, 87,127,236,135,113, 99, 94,135,199, 4, 33, 36, 54, 93,
-143,235, 3,139,221, 37,187,243, 38, 39, 1, 78,248,211,124, 51,207, 2,184,182,243,116,131,207, 73,142, 49,162, 84,142, 61, 84,
-211, 41, 98,188,158,210, 67,164,154, 4, 40,253,132,142, 44, 82, 78,243, 75,131,231,162, 27,113,221, 64,233, 61,142,200,198, 59,
-182,126,200, 27, 38, 91,112,120,231, 38,207,187,150, 63,126,247,241,116,190, 73, 83,124,108,130, 70, 48,158,120,254,205, 89,207,
- 31,111,174, 8,203, 72, 89, 85,188,243,241, 83,202,229,140,163, 89,195,254,238, 62, 7,209,115, 11,248, 92,221,176, 55, 91, 98,
-171, 26, 91, 26,202,194, 98, 11,149,213,185, 8,162, 15,220,152, 87, 28, 46, 75, 84, 72,156,157,181,156, 95,158,211,119, 67, 78,
-132,242, 25, 23,156, 98, 32,198,252,190, 12, 41,226,198,196, 0,244, 72, 22,115,203,124,102,184, 58,121,206, 91, 31,124,196,163,
- 16, 56,187,234,185,120,118,198,187,223, 62, 97,126, 50,240,222,224,217, 45, 53, 58,129, 83,137,160, 97,227, 3, 94,100, 11, 91,
- 2,124, 18,140, 82, 49,147,146,135,115,195,106, 89,179,191,204,119,208,159,255,107,175,243, 31,253,228, 3,126,242,139,183, 88,
-251,199, 60,126,255, 2,137,227,175,252,215, 63,199,143,191,114,192, 50,228,237, 87,153,224,187, 23, 29,231,143, 79, 57, 18,154,
-198, 72, 76,109, 16, 38, 71, 69, 26,165,184,122,187, 69,188,239, 49, 79, 7,206, 79, 47,232,195, 5,118, 54, 67, 95,110,177,155,
-150,230,170,231, 48, 36,106,163,120,181,150,124,205, 74, 62,155, 34,175,199,192, 43, 41,242,211,179,146,215,140,224,118, 33,185,
-242, 3,201,195,129,210,220, 87,134, 90,231,237,200,162,154, 97,234, 18, 89, 24, 68, 93, 34,173, 65, 40,137, 72, 18, 33,115,244,
-174,104, 42,196,162, 0,171,145, 90, 33,149, 68, 43,197,225,178,225,212, 5,222,108,106,246,139,138, 91,166,228, 63,251,247,126,
-140,159, 53, 21,127,239,234,156,120, 88,243,157,147,142, 63,252,232,146,119,158,174, 73,223, 59,231, 27,111,222,229, 70, 85,211,
-166,200, 31, 5,199,152, 52,244, 30, 49,246,249, 4,165, 64, 20, 5,114, 81,243,250,174,197, 91,155,197,174, 62,188, 12, 18,145,
- 50,175,129,175,201,142,110,204,214, 55,247,255, 67, 48,167,116,142, 41,109,106,216,153,229,130, 94,217,188, 58, 45, 21, 43,171,
- 40,132,228,103, 87, 21,135, 2, 94, 45, 11,130,148,200, 24, 41,164,198,165,152,131, 26, 73,196,224,185,232,182,180, 33,144, 82,
- 30, 52,124, 10,104, 18, 82,105, 84,136,156, 15, 3, 2,193,218,245,140, 33,112, 25, 70, 92,138, 68,239,208, 74, 99,141, 37,165,
-136,110, 26, 68,200, 14, 22, 97, 44, 20, 10,161, 20,201, 59,132,202, 9,139, 66, 8,164, 84,153, 68,109, 43, 32, 33,172, 70, 74,
- 69, 82,154,164, 20, 90, 25,182, 8, 74, 83,208,138,200,157, 18,196,122,203,113, 31,241,101, 69,242,144, 76, 65,180, 53, 41,138,
-108,115,150, 6,172, 68, 76, 91,222, 63, 79,233,211, 47,239,200,105, 42,224, 70,189,200,137,167,152, 10,237, 20, 20, 99,203,146,
-160, 21, 86,106,154,210, 18,165, 66, 75, 67,105, 52, 87, 99,162, 49,134, 36,179,184, 13, 4,115,109,137,133, 69, 36,155,183, 33,
- 74, 81, 73, 75, 75,160, 81,146,203,148,240,198,144,194,116,198,156,148, 79,181, 50, 84, 41,112, 46, 4,149, 54, 52, 34,242, 84,
- 40,246,101, 22,167, 5, 96, 76, 2, 39, 37, 59, 82,242, 28, 8, 41, 32,148, 69, 16,105, 80,220, 22,154, 55,230, 11, 62,244, 35,
- 75, 85,176,197,177,178, 11, 62,113, 61,171,114,198, 58, 65, 79, 98, 71, 75,122,105, 88, 71,159, 27,153,110,152, 26,163,105,237,
- 46, 5, 66, 23, 40,109, 40,180,196,203, 44,162,147, 50,253, 37, 8,229,174,189,155,117, 57, 69,135,166, 79,201,237,139, 23,222,
-194,151,164, 32,145,249,239,238,218,214, 96,115, 81, 15,254,165,216, 44, 77,121,226,253,244,239,146,135, 82,179,144,130,211,126,
-224,235,111,126,142,243, 71,143,248, 36, 37,106, 43, 57,117,217, 50,225,250,200,243,216,177, 91, 20,156,140, 46, 79,174, 74,229,
- 78, 79,126,106,101, 99,213,203,239,187, 80, 68, 23, 40, 76, 14,162,217,211,129,193, 90,206,219,204, 11, 54, 90,178, 29, 61,117,
-130, 51, 36, 55,172,224,217,116,147,207, 96, 23,253, 41,110,190,250, 62,183,180,235,117,146,134,232, 9,253,192, 31,159,110,248,
-252,193, 18,105, 52, 79,182,107,246,170, 26,215,247,152,162, 98, 24,174, 16,186,196,122, 15,182,164,247, 89,201, 95,105,141,247,
- 57,208,224,116,116,220, 16,154, 45, 9,147,200, 97, 20, 35, 80, 68, 24, 38,223,250,181, 53,240,251, 61,127, 12,153,206, 4, 88,
- 43, 1,205,213, 69, 32, 78, 83,202,188, 44,233, 59, 79,112,129, 16, 67, 6,172,132, 72,165, 37,227,224, 81, 50,177, 29, 60,155,
-193,177,222, 58,116, 27,217, 93, 20,212, 70,226, 67,194,170,156, 84, 38,175, 51,129, 72,116, 41, 7,168, 68,160, 21,130,128,160,
-209, 57, 77,105,150, 96, 45, 4, 43,165, 24,130,100, 85, 20,108,250, 54,247,129, 68,202,202,226,214, 87,217,214,135, 7, 27,225,
-142,205, 10,119, 18, 44, 53, 92,193,229,123, 29,191,117,252, 1,247,127,102,203, 7, 62,112,218,119, 28, 23,138, 55, 23, 59, 12,
- 85,195,221,221, 5,183,186, 17, 37, 20,167, 68, 68,128, 69,109, 49, 70,177,141,145,203,148,137,178,115, 33,144, 33,209,141, 30,
- 70,135,244, 9, 27, 34, 82, 41,164, 16, 83,202, 85, 66,248, 97,202,156,246,244,222,177,137, 3,108,103, 92,218,132,208, 13,255,
-242, 60, 17, 67,164, 54, 6, 33,225,160, 40,217, 21, 35, 95, 60,118,252,195, 63,254, 61,126, 39, 58,110,127,253,135,152,223,152,
- 99,154,130,164, 53,203,202,210, 21, 5, 99, 74, 68,173, 9, 62,243,248, 69, 20,164,144, 25, 28,131,212,148, 18,202,251, 13,175,
-222,126,149,255,230,103,255,115,206,223, 57,230,119,199,192,177, 10,108,149, 68,196,136, 1,194, 24, 56,253,149,223,231, 79,254,
-231,223,231,183, 80,252,213,255,224, 62,191,248, 95,252, 13,230,159, 57,152,214,152,130,219, 63,126, 3,126,244, 16, 98,228,205,
-206,227,207,122,190,245,127,188,197,193,189, 67,218,222, 79, 28, 1,137,117, 26, 61, 72, 74, 41, 40,102, 51, 68, 61, 67, 76,228,
-200,250,170, 67, 94,108,185, 85,150, 60, 25, 19,115, 37,169,181,162, 68, 48,223,153,163,119,102,136,114,194, 23,199, 4,163,200,
- 19, 72, 57,137, 52,108, 49,173, 58, 65, 76, 42,100, 17, 37,210, 40, 30,116,154,187,171,125, 60, 9, 71,194,141,240,247,255,241,
- 31,240,175,135, 62, 7,144, 72,133, 44, 21,194, 42, 36, 37,241, 48,241,203,223,250, 46,255,195,143,126,134,181, 54,108, 66,132,
-189, 5,194, 42,210, 39, 37,162,189, 36,181, 27,192, 19,235,130,103,193,114, 41, 4,204, 42, 4,146,212, 78, 32,154, 97,132,226,
-122, 16,136,223,159, 16,247,255,182,118,215, 21,203,195, 57, 93,146,220,222,169,137, 72, 78, 17,108, 66, 70, 98, 43,153, 27,183,
-175, 47, 53, 7,149, 97,134,193, 5,120,220,118,148,117, 69, 55,108,153,219, 18, 43, 2,155,161,231,180,109,249,216, 15,156,219,
-134,187,141,100,140, 30,145, 52, 79, 66,207,118, 27, 16, 66,178, 50, 37,207,198, 30, 69, 68, 4,143, 8, 3, 39,192,205,114,134,
-211,185,161,211,245, 44,247,245,171, 26,233, 2, 30,137,138,145,224, 71,164, 85, 48, 90, 82,202, 91, 9,193, 20,196,148, 34,178,
-172, 72, 49, 98,154,138, 24,242, 48, 23,181, 99, 87, 72, 68, 81,177, 34,178,213,138,163,242,140, 47,204, 12,143, 29,156, 13, 35,
- 66,106, 46,124, 96,140,224,194, 4,240,217, 76, 1, 60,166, 32, 13, 49,115, 78, 94, 12,138, 38, 59,163, 82,132,178,196, 54, 5,
-152,130,170,202,110, 33,172,166, 2,182,218, 80,106,141,139,158, 3,157, 73, 17, 86, 91, 74,107,115, 70,133, 82,172,180, 70,107,
- 3, 8, 10, 41,144, 82, 19,133,162, 34,114, 28, 18, 21,137, 82,229,230, 98, 95, 23, 92, 12, 14, 77, 68,135, 64, 48, 10,229, 50,
-113,242,129,214, 60,119, 35,162, 44,152, 69,176, 9,190, 23, 35,175,105,120, 39, 38,142,164,164, 6,158,197,200,109,224, 17,208,
- 76,224, 27,162, 71, 34,248, 90, 93,114,219,104,206,188,227, 78, 81,115,236, 28, 11,179,195, 24, 71,110,207, 86, 92, 12, 27,118,
-140, 69,104, 67, 43,224, 78,225,185,223,236,115,188,217, 82,204, 12,111, 61,223, 18,165, 70, 12, 46, 71,217, 18, 40,129, 82, 40,
- 14,136,160, 18,131,212,127, 9,147,250,167,163, 12,109,153, 63, 0,122,234,180,124,152,248,180, 83, 60,166,184, 78, 12,155, 80,
-176,106,154, 28,211,100,123, 99,154, 52,167,238, 48,139,240,166,197,147, 15,168,210, 50, 83,138,211,205, 26,173, 52, 94, 73,188,
- 80, 92, 37, 40,147,162,149,176,246,145,171, 97,164, 16, 34,231, 18, 95,159,203,164,192, 22,138, 48, 38, 48, 10, 37,196, 11,135,
- 4, 70, 17,134,145,206, 37,118,172,164, 78, 57,181,205,167, 72,244,121,157,213, 35,152,201,200, 73,159, 88,143, 97,106, 24,228,
-203,117,126,186, 78, 81,147, 47, 15, 72, 82, 76,234, 73, 61, 53, 0,185, 38,141,201, 51, 55,146, 89,105,114, 67, 33,166,147,247,
-208, 83, 26, 75,240,142, 78, 8,230, 72,198, 24,209, 54,195,254, 21,146, 32, 52, 90, 66, 23, 35,143, 99, 64, 10,205, 19, 38, 11,
- 70, 63,117,117,147,157,231,229, 42,241,207,110, 87, 66,214, 22,148,134, 31,255, 43, 63, 65,140,208, 94,181,116,109, 75,187,237,
- 40,138,130,161, 31, 80,210,178,183,191,195,173,221,134,224, 35,150,140, 56,236, 92,164, 29, 3, 97,140, 92,181,142,209, 7, 54,
-206, 83,151, 58,135,183,136, 44,164,243, 41,209,133,124, 23, 43,132, 96, 12,137, 33,229, 48, 28,231, 35, 54, 69,108,231, 24,122,
- 71, 57, 56, 86, 81, 32, 37, 84, 64,116,129, 24, 50,242,240,193,141, 67,222,251,224, 17,239,157, 92,241,122, 23,121,254, 73,128,
-117,128,165,130,199, 14,250,200, 44,129, 38,113,184, 48,216, 16,168, 14, 42,214,231,125,158,104, 54,103,180,209,241,165, 47,125,
-137, 27,111,188,194,182, 48, 92,110, 91,170, 4,203,101,195,124, 86, 80, 89,195,210, 40,118,203,130,189,121,137,150,146,161,115,
-116,151, 45,169,235, 41, 68,182,134, 25,157,225, 14,122, 90, 20,232,148,208, 50, 82,132,132, 30, 28,202, 57, 70,239,105,235,154,
-205,108, 70, 82, 21,171, 24,216,155, 27, 78,188, 64, 12, 61,103,238,138,127,122,118,142, 25,215,188,251,157, 15,233,223,126, 76,
-251, 27,223,228,157,247, 79,248,253,223,121,143,187, 23,145,117,109,184, 24, 29, 73, 75,180,149,248, 49,135,197, 92, 33,216, 2,
- 49,102,151,136,239, 28, 91,153,120, 63, 37,250, 82, 19, 77,129,145, 26,143, 96,140,129,113, 12,188,242,230, 29,254,229,123,239,
- 99, 30,141, 60,250,246, 57,255,244,127,251, 67,126,225,111,254, 8, 98,178,194,166, 33,226,175, 6, 82, 76, 25, 7, 92, 26,110,
-125,227, 30,205,221, 29,246, 63,187, 98,247,181, 93,230, 71, 11,138, 69,133, 80, 18, 93,106,180, 80, 40,163, 81,133, 38, 78, 13,
-243,198,121,198,152,185, 2,135, 83, 20,239,222,124, 78,185, 63, 71, 86, 57,194, 22,159, 72, 99, 36,174, 59,146,115,164,174, 39,
- 57,135,176, 42,127,212, 11, 77,242,137, 56, 6, 92, 63, 18,188,199, 71,159,243,173, 75,131,170, 11,236,254,146,195,197, 46, 55,
- 69,197,126,165,113, 54,242,180, 31,137,195, 72,252,206, 25,137,192,189,253,146,191,253,181, 47,243, 57,101,249,213,147, 99,174,
-124,204, 83, 94, 85,228, 38,216, 84,224,122, 68,187,165,247,242,101, 64,134, 49, 8, 49,129, 61, 72, 19,123,252, 58,222,242, 83,
- 39, 68,173,255,252,132,121,157,139, 81, 90,104,230,168,229,140,207,237,204,120,184,187, 96,111,209, 80, 88,205, 65, 83,240, 60,
- 66,144,137, 74, 27,172, 12,252,120, 83, 49,183, 42, 67, 84,124,158,194,207,183, 3, 49, 68, 6, 55, 82,144,159, 63,111, 11,120,
-171,218,227,222,124,201,221,253,219, 24,109,179, 64,109, 24, 56,139, 35, 67,244,180,192,198, 15, 92,185,142, 77,116,108, 82, 2,
-107, 89, 43, 65,221, 52,216,162, 64,218,124, 42, 10, 49, 76,196,115, 8,163, 35, 77, 27,197,224,186,252,222, 16,146, 20, 28, 66,
- 24,146,202,226, 87, 89,214, 89,189,164, 44,113,130,225, 68,107, 9, 68,162, 46,217, 4, 71,176, 22, 93, 85, 72, 43,121, 80, 87,
-152,218,240, 96, 94,113,119, 86,112,123, 81, 49, 8,201,225, 94,205,185,158,234,133,212,249,249,101,235,151, 89,225,218,192,124,
-206,237,221,138,195,186,164,153, 21,172, 26,195,194, 90,118, 11,197,110,101,217,151, 26, 37, 51, 91, 98,161, 11,230, 69, 73, 97,
- 20, 51, 91, 17, 68,100, 49, 21, 72,133,100,174,114,240,151,151,154, 65, 8, 46, 93,100,174,115, 2,227,220,102,232, 76,235, 70,
-106,149,127,239, 27,239,169,100,118,242, 52, 36, 28,146,221, 20, 25, 66,126,110,245, 66,240,154,214,188, 59,140,220,183, 5,199,
- 33,178,163, 36,149, 82,156, 35,185, 15,124,148, 2,114, 10, 2,251,233,106, 70, 29, 97, 97, 21,115, 99,240, 66, 80,153, 76,180,
-171, 76, 65, 31, 60, 11, 83,209,138, 68,166,241,123,140,214,184, 40,153,171, 68,151, 12, 43, 3,167, 67,200,246,241, 24,121,189,
-106,216, 81,146, 90, 10,110, 74,201,162, 40,177, 66,253,128, 69, 93, 79,235,165,235, 44,118, 57, 81,129,196,148,223,157,166, 34,
-173, 39,240,252, 11, 68,172,123,121,167, 26,211, 68, 26,242, 83,138, 88,238,170,178,170,217,230, 73, 83,128, 42,203, 44,136, 52,
- 5, 59, 90, 65, 89,224,164,101,140,137, 70, 91,158,120, 71, 23, 34,193, 22,132,190,207,228,159, 77,159,191, 23, 99,144,133,196,
-162, 40,172,197, 39, 71,140,137,125, 83,208,199,136, 85,138,224, 60,193, 7,118,180, 96, 16,208,133,128,137,130,109,242,148,211,
- 26,204, 36, 56, 29, 60,173,144,249,254,239,252, 20, 65,153,160,170,242,207, 48, 78,105, 76, 97,122, 16, 88, 59,145,244,166,230,
- 71,100,111,230,170,177, 36,159,216, 45, 10, 90, 55, 96,101, 86,226,187,233,181, 49, 86, 51,142,142,178, 52,136, 0, 73, 78,164,
-163,152, 94,172, 78,157,146,252,193, 38,135, 3,188, 72,107,187, 22, 38, 94, 43, 39,191,223,237,170, 46,167,219,191,224, 75, 95,
-255, 42,101, 83,208,111,123,218,245, 38, 99, 5,180, 65, 70,193,197,249,134,162,156, 51, 95,212,204, 27,141, 84,130,118, 72,244,
- 62,208,247, 1, 23,161,247,142,182,119, 88,171,184,123,208, 32,200,247,248,156,214, 22,179,149, 45, 68, 90, 31,232, 67, 64, 8,
-145,197,250, 46,160,131,167,234, 51,107,125, 24, 28,125, 8, 60,139,142, 62, 70, 26, 41, 25, 82, 98, 37, 21,175,220, 62,228,195,
-199, 79,184,250,246, 57,247,172,228,246,107, 37,162, 86,188,118, 88,112,187, 11,252, 59,243,130,207,110,115, 51,240,229,160,216,
- 93, 74, 52,176,187, 44, 16, 8,246, 2, 92, 68,199, 16,224,141, 55,239,243,218,103,110,113,220, 58,174,250, 1, 91, 21, 20,133,
-166, 41, 52,133, 82,236, 46, 43,234,202, 98,164,160,219, 14,108,215, 45,105, 24, 49, 66, 80, 26,141,145, 18,155, 18, 50,100,171,
-158,140, 9, 69,206,153, 55, 17, 52, 17,213, 57,180,119,136, 33, 97, 48,244,197,140,131,253, 93, 98, 57, 39,154,138, 43, 13,101,
-123,201,237, 30,158,186,142,195,214,113,233, 6, 94,237, 19,207, 66,135,252,246,187, 92,125,247, 9,255,228, 55,254, 57, 79, 30,
-117, 60,122,188,229,195, 62,208, 91,141,208,146, 46,130, 12,158,174,117,124,180, 30,248,206,105,199, 58, 37,164,150,124,102,101,
-241, 66,147,140,230,208, 9,182, 50, 49, 68,197,236, 51,175,242,229,159,126,157,195, 7, 37,238,189, 51,254,207,255,233, 55,249,
-233,191,241, 21,164, 80,184,179,129,177,115, 4, 41, 80, 66,162, 76, 78,181,147, 11,139, 40, 52,178,204,235,240, 24,179,203,196,
-141,121,122, 39,228, 7,125, 18,137, 97, 12, 92, 56,135, 46, 13, 61,176, 50, 57, 4,104, 86, 91,244,117,218,152, 75,132,103, 91,
-134,247,143,241, 31,126,194,248,201, 49,227,232, 16, 49, 32,166,160,161,216,142,248,193,227,186,158,182,235,184,188,220,224,198,
- 1, 93, 40,164,209, 8,173,161,208,116,222,211, 38,193, 85, 10,196,148, 40, 45,168,186,228,188,214, 68, 45, 56,247,240,209,211,
- 71,252,183,111,125,151,231,103, 93, 46, 30,243, 69, 86, 52, 47, 26,196,238, 46,236,237,193,124,137,120,126, 9,174,205,197, 68,
- 76,226,223,186,156,232,141,226,229, 42,254,211, 27,184, 79,255,249,186,200,235, 38,175,150, 15, 14, 88,204,107,126,226,104,151,
-251,243, 57, 55,155,134, 90, 27,118,148,228,196, 7, 90, 1,253, 20,203,176, 39, 36,187, 5,220, 84,185, 9, 47,133,224,184, 31,
-248, 23,207,214, 84, 74,240, 30,145,161,168,248, 94,189,226,247,203, 21,174, 90,240, 87,239,222,227,160,168, 88, 53,187,196,144,
-232, 72, 28,183, 3,155,152,136, 41,224, 98, 96, 27, 3,231,126,196, 9,193, 58, 38,188, 18,216,186,196, 24,203, 40, 35, 42, 9,
-134, 20,137, 50, 15, 55,227, 56, 18,194, 72, 26,122, 82,136,200, 20, 73,110, 64, 40,155, 61,255, 73, 65, 85,101,207,182,148, 36,
-163,242, 57, 74, 11,164, 81,180, 33,209, 7,199, 32, 37, 99, 76,180,201,179, 99, 42,148, 49,220,169, 42,180,206,246,180, 85, 61,
- 99, 85, 88, 6, 45,169,235,130, 81,104,196,188, 33,212, 85,174, 37,139, 6, 22, 85, 22, 15,214, 5,119, 87, 51,144,154,210, 42,
- 42, 99,137, 72,246, 75, 75,161, 13, 23, 94,176, 83, 91,108,212, 84, 69,241,162,168,121, 18,141,170,112, 49,167, 74, 90,153,165,
- 95, 73,106,208, 2,147,160, 46, 10,182,227,136,143, 9,143, 32, 6,135, 16,138, 75, 63,144, 98, 96,144,137,198,185,156,149, 78,
-100, 39, 5,108,206,240,100, 38, 18, 46, 36, 54, 66,112,168, 13,143,253,192,131,178,225,210, 59, 82,138, 44,129,143, 8,184,224,
- 16, 62,113, 71, 27, 14,165,226,176,214,168,144,144,198,190, 8,146,140,147, 91,170, 52,150,203, 16, 88, 25,195,218,141, 84,182,
-100,240, 30, 41, 18,103,163, 67, 39,176, 82,115, 44, 2,171,178,226,117,163, 9,202, 98,148,226, 64, 9,148,212, 52,133,100, 33,
-220, 15,170,126,159,146,217,132,205,147,185,158,176,175,218,188, 12, 88, 86, 58,123, 62,153,140,253,253,116,131,239, 93,158,212,
-245, 52,237, 42, 61, 77,187,215,201,110,217,248,159, 1, 16,144,148, 66,148,138,186,176,180,218,160,149,194, 40,205,229,116,243,
-174,180,229,185,243,132,190,195,206, 23,140,235,171, 73,192,150,183, 0, 73, 43, 42, 33, 72, 41,210, 40,137, 16, 18, 99, 36,189,
- 15,153,123,110, 52, 12, 35,235, 40,184, 91,105, 46, 93,160, 86,138,153, 84,156,199,196, 92, 75,206, 98,224,196,101,228, 96, 34,
-195, 83,242, 14,138, 44,240,211,122, 42,188,241, 83,170,127,159,109, 35, 34,253, 41,110,244,105, 23,121, 56,171, 24, 68, 94,255,
-244,221,128, 22, 9,161, 50,227,184,237,123, 10, 99, 81,225,165,176, 47,251,230, 51,135,121,144,138,167,222,113, 25, 36, 65,155,
-220, 16,197,137, 12,120,205, 7, 78,225,251,223,255,164,156,110, 86,112,247,238,125,118,247,119, 25,122, 71,244, 14, 31, 34,221,
- 48, 98,180, 33,196, 72,221,204,152, 47, 22, 28,173, 26,148,140,249, 53,117,105,186,149, 7,146,136, 8, 37, 9, 99,192, 88,197,
-178, 54,140, 33,101,180,233,148, 19, 45,128,113,186, 1, 54,147,222,192,133,144, 93, 61, 41, 18,134,192,170, 15,120, 23,152,161,
-216, 79,145, 48, 6,130,132, 74, 43, 86,203, 57,223,124,250,148,183, 30, 95,240,137,243,188,211,122, 78, 54,158,167,223,107,121,
-114,191,224,116,166,249, 23, 91, 79,120,189,224, 96, 71, 50,215,154,102,167,228,167,230, 11, 22, 46, 81,140,129, 98, 49,167,243,
- 45, 85,185,195, 27, 15,111, 48, 70,193,232, 19,125,202,177,177,213,100,127,156,205,107,234,202,162,148,196,199, 68,215,122, 92,
-223,147, 98,156,208,182,145, 20, 34, 41,166,172,128, 23,153,160,167,132,202,182, 62,173, 40,181, 98,111,165,121, 77, 69, 22, 51,
-203,237,189,134,207,220,222, 97, 86, 89, 62,142,134,214,214,236,220,184,133,187,119, 31,127,239, 53, 14,191,242, 25,110,126,254,
- 13,206, 84,197, 59,103,199, 60, 59, 89,243,215,247,102,252,163,139, 13,225,233, 39, 12, 79, 62, 66,187,200, 86, 20,156, 78, 97,
- 29,214, 69, 62,217,122,222,189, 26,120, 54, 58, 58, 37,249,252, 94,193,225, 60, 55, 37,167, 81,113, 94, 72,238,161, 56, 51,138,
-155,135, 51,110,223, 95,113,227,243,247, 89,252,252, 23,216,251,236,138, 95,254,239,255, 1,221,255,248, 29, 94,251,165, 55, 17,
-133, 66,207, 44, 74,171, 44, 65,185,214,184,196, 12, 49, 74,189,167, 61,105,249,224,116,195,105, 55, 16, 58,199,213,186, 99,187,
-238,216, 58, 79, 31, 35,163,204,186, 2,124,224, 42, 37,230, 70, 97,138,108,191,137,125, 96,120,116,193,240,225,115,210, 59,223,
-130,211,143, 8,237, 37,177,191, 66, 10,133, 8, 16,186, 14,223, 13,244,219,142,171, 77,203,135,151,151,124,216,109,144,193, 33,
-133,204,205, 65, 97,137, 34, 49,106,197, 38, 6,206, 60,244,147,194,186, 20,145, 7,171, 25, 71,243,130, 7, 51, 67,159, 50,151,
-240,164, 11,121,157,254,252, 12,179,103,219,153, 0, 0, 32, 0, 73, 68, 65, 84, 49, 43, 97,103,143,159, 63, 92,241,239,222,188,
-193,157,198,242,237, 56, 64, 81,231,207, 75, 31,167,103,153,206,195,198,162,225,206,209, 62,159, 59,152,243,113,159,207, 49, 88,
-253, 50, 90, 90,216, 60,180, 44,151,176, 83,103,235,221,238,140,175,222,220, 97,223, 88,142,170,134,156,105, 24,168,116,129, 13,
-129,142,196,137,207, 91,139, 43,159, 83,233,110,218,140,191, 62, 27, 6,254,238,227, 45, 79,202, 25, 79,246, 15, 57,221,185,201,
-191,169,119,121, 82,204, 17,186,228,111,222,187,205,151,202,154, 31,154,205, 57,136, 9,233, 19, 9,129,151, 35,155, 33,208, 19,
- 8, 34, 39, 87,110, 93,224, 60, 70,174,132,160, 37,159,152,102,133,161, 52,134,181,243,200, 24,241,131,231,249,230,138, 20, 2,
-109,219, 18,131,199,140, 35,113, 26, 46,210,181,232, 87,233,108,113, 20, 57,200,200,123,159,173,107,218, 48, 58,207,152, 18, 27,
- 53, 97, 70, 68, 94,217,123, 41,217,181,118, 18,170,105,118,170, 25, 93,138, 20,166, 96,223, 22,244, 18,150,179, 37, 74,165,220,
- 88, 47,102,217,150,166, 52,187,243,134, 59, 85,201,210, 40,202,166,162,214, 6,109, 21,179,162,100, 20, 9, 37, 53,135, 77,157,
-239,225,182,194, 40, 48,214, 96,117, 73,161, 12, 99,154, 68,189, 34,163,176,209, 37, 86, 73,186, 16,209,218,112, 53,120, 74, 35,
- 16, 73,146, 66,142,220,214, 36,174, 82,164, 77,145,185,243, 24,161,153,145, 61,255,187, 41, 32,146, 71, 7, 79, 18, 96,137,244,
- 67,203, 24, 34, 71,218,242,214,176,229, 72, 25,106, 41,120,199,121, 98,138,144, 2, 70, 75,110,203,204, 71,185, 95, 22,116, 74,
- 82, 2, 35,137,153,210,180, 74,178,212, 37,155,228, 89,105, 77, 39, 4, 43,107, 57, 31, 29, 51, 93,240,164,237, 49, 66,210,225,
- 9, 74,241,229, 89,197,158, 12, 68, 81, 80,106,201, 61, 35,153, 27,131,146,145, 50, 9, 46,199,248, 3, 22,117, 37, 95,168, 15,
- 51,133,199,194,188,252, 83,118,131, 23, 89,175,144,167, 71, 33,242,250, 87,132,188,110,105,202,252,223,221,148, 34, 22,166,105,
-189, 42, 51,196,134, 41, 98, 78, 68, 82,105,136, 90, 35,140,101, 84,154,115,231,152, 23, 21,206, 88,158, 13, 91,234,178,202,201,
- 97,125,151, 39,231,179,171, 92,120,165,162, 40, 53, 67,136, 20, 34,145,132,192, 74,232, 92, 96, 33, 37,165,146,116,237, 0, 82,
- 18, 58,199,211, 49,242,234,220,208, 69,207,241,152,184, 89, 91,158,185, 17,159, 12,107, 4,209,249,252,179,251,144, 27,150, 48,
-137,253,226,132,245, 75,188, 92,205, 15, 33,223, 46, 99,122,169,250, 28,243, 42,207,169,196,145, 53, 92,141, 35,149, 54,108, 6,
-151, 85,241,215,255,111, 8,140,211,170,135, 16,113, 82,230,104, 83,145, 85,153, 35,137, 62, 36,182, 99,151,155, 38, 61, 61,104,
-220,164, 69,232,253, 68,156, 11,127, 6,126, 33,166,252,250,200,219,223,252, 22, 63,245, 11, 63,195,246,226,138, 52, 53, 40,222,
-123, 78, 54, 27, 98,128,189,249,146,229,114,198,206,220, 82,200,124, 90, 24, 93,162, 29, 3,227, 24, 25, 7,207,186, 27, 8, 46,
-210,133,192,162,182, 72, 18,133,146,217,191, 42,193,165, 68,140, 89, 13,111, 98,100, 41, 35,229,148,191, 62,159,236,110,201, 69,
-116, 10, 44, 98,162, 65, 48, 79,129,149, 84, 25,146, 49,171,120,247,248,140,254,108,205,158, 18,172,162, 96,150, 2,103, 49,191,
-201,174, 62,232, 72, 67,100,125,225,121,123, 27, 57,173, 18,106,105, 56,186,125,132,159,215,168, 24,185,217,148,220, 48, 21,242,
-236,130, 81, 23, 52, 82,177,152, 87,116, 33, 16, 66, 36,141, 14, 21,161,170, 11,202, 74,163,181,202, 33, 54, 33, 50,116, 14,239,
- 60, 49, 4,162,115,140, 46,160, 98, 14, 91, 40,144,152, 36,104,180,166, 50,154, 89, 89, 80,151,134, 29, 35,184,111, 10,246, 18,
-180, 38,195, 33,206, 29, 92,249,132, 85,145,164,225,162,247, 20,109, 96,121, 99,206,193, 43, 11,110,190,121,196, 63,246, 43,254,
-214,195,187, 20,119,143,120,253,141,251, 44,191,250, 5, 62, 60, 89, 83,110,207,217,188,255, 33,227,157,187,204,166,165,205,249,
-232,121,127, 51, 34,198,136,142,145, 89, 89,176,168, 12, 27, 4,239, 14,145, 11, 31, 89,203,196,122,240, 28, 84,138,203, 33,114,
-188, 25, 25,125,228, 11, 63,241, 26,223,248,197, 31,230,141,255,228,115, 96, 18,197, 65,133,174, 52,114, 74,193, 74, 27, 71, 58,
-235, 9,103, 61,227, 89,203,230,233,150,167,167, 27,190,117,185,230,100,112, 60, 31, 71,130,130, 86, 11,156, 72,244, 10,130, 18,
-184,148, 19,249,132, 82, 52,149,101, 32,178, 25, 61, 93,244,172,183, 45,177,219, 32,151, 13, 65,130,223,221, 37,218, 2, 49,145,
-214,198,237,150,243,110,203,201,176,229, 73,244,188,221,173, 57, 9, 35, 49, 70, 26,107,241,147,186,216, 25, 69, 23,225, 34, 37,
-206, 93,224, 50,228,109,153,214,185,209,223, 49,154,185, 54,220,108, 26,238, 26,197,235,171,154,219,251, 75,158, 8,197, 92, 65,
-247,228,148, 95,124,245, 85,238,214, 21,231,179,125,254,228,234, 60, 47, 23, 11, 3,149,134,170, 70,204,106,168, 10,238,172, 22,
-252,200,209, 1,183,119,246,112,181,228,249, 58,193,238, 14,234,230, 33,105,190,128, 41,209,140,163, 61, 40, 43, 22,139, 57,251,
-214,176, 44, 13, 7,186, 32, 76,155,132, 66, 26, 68,138, 8,165,240,209,241,193,232,179,240,110, 8, 28,247,145,141, 72,180, 90,
-241, 39,209,114,182,127,139, 7, 55,110,178,191,123,131,122,182, 75, 40, 26, 70,169, 16, 69,195,207,148,150,219,101, 65,147, 4,
-157,243, 44,181,102,219,181,156, 12, 61,207,186,237,148,254,156, 8, 49, 48,184,145,205,232,120, 22, 28,163,213,244, 66, 82, 89,
-131, 11,142,194,106, 78,182, 27, 58, 63,114,225, 19,103,253, 21,231,109,230,209,111, 93,135, 26,187,140,144,158, 54,111, 72,147,
-167, 93,161,136,211,102, 54,105, 67, 76,137, 81, 66,235, 61, 66, 26,206,156, 35, 73,193,152, 34,181, 41,178,204,204,150, 84, 82,
-211, 73,129, 45, 42,146, 27, 9, 85,205,202, 88,182, 62, 81, 23, 37,187, 69, 69, 8,145,253,170,102, 86, 84,188, 54,179,148,218,
-178,103, 45,179, 20,152,149, 13,115, 83, 51,151,130,170,168,168, 76,137,181,150,202, 20, 24,171,209,194,100,122,162,146, 89, 56,
-175, 20, 74,192, 76, 11,172,212,140,201, 51,164,196, 66, 74,250,148,155,213,130,200,136,199, 8, 73,105, 52,253, 56, 32, 99,164,
-115, 35, 11, 33,168, 98,196, 71,199, 46,145,245, 56, 80, 2,115, 1, 46, 4,116, 74,244,192,211,209,113, 66,228, 32, 69,158, 6,
-143,136, 9, 29, 28, 62, 9, 84, 12,200, 16, 89,145,248,242,172,230,147,118,100,215, 26,164,146,204, 76,201, 57,129, 27,186, 98,
- 67,100, 71, 91,122, 36,134,136,155,116, 59, 33,229,199,244,198, 7,182, 34,159, 23, 31,106, 73,101, 44,251, 70,112,168,178, 5,
- 86,147,120,197, 20, 92, 6, 79,173,126, 16, 75,155,214,211, 52, 46,167,123, 72, 9,123, 77, 46,192, 70,102,133,187,152, 10,250,
-181,229, 75, 78,124,242,232,178,207, 96, 53,135, 38, 43, 24, 25,167,152, 81,107,243,218,125,188, 70,154, 78,225,240,246, 26,219,
-167, 25, 34, 12, 50,162,138,134,173,119, 12, 8,132,208,140,227,196,240, 53, 22,174,218,169,128, 14, 80,104,102, 86, 35, 82,162,
- 81,138,243,214,101,229,168, 75, 44,106,201,133,203,118,188,212,141, 16, 61,169, 48,156,141, 9,165, 37,143, 93,226,204, 37,156,
-212,156,250, 64, 76, 42,111, 24,194, 52,205,244,253, 75, 23,166,156,238,112, 87,221,196, 18, 30,243,125, 45, 77,247,245, 16, 95,
-198,210,138,196,149, 75, 57, 71,103,202,118,175,124,164, 13,121,123, 81, 39,193,243,232,209, 66,231, 84, 43,145,104,125,190,177,
-182, 41,113, 21, 35,165, 86, 12, 62,228,149, 23,233,101, 68,235,181, 29, 68, 76, 14,132, 79, 11,124,226, 53, 14,113,218,146, 4,
-193, 55,254,250, 79,226, 67, 36,248,108, 79, 83, 19, 36,168, 41, 74,148, 18,136, 24, 81,218,162,181, 34, 9, 69, 41, 21, 70,100,
- 64, 66, 27, 61, 93,239,217,217, 45,168, 43, 69,231, 2, 82,230, 12,245,152, 82,238,231,162, 32,133,132,139, 1,231, 67,254,123,
-166,181,150,138, 80,138,108,237,155, 43, 69,233,227,139,181,148,179, 6,107, 36,118,217,224, 70,135, 62, 61,103, 30, 35, 23,196,
-220, 40,204, 20,213, 66,211, 25,160,150, 72, 45,176, 43,141,147, 2,243,180,227, 96, 79,225,110, 28, 49, 47, 13, 95,190,121,151,
- 84,214,168, 24, 24, 90,135, 24, 2,139, 85, 67, 16, 10, 81, 26, 6, 31,208, 62, 78, 10,127,137, 86, 18, 17,114,247, 62,250, 72,
-235,242,125, 51,184,140,185,181, 8,102, 66,113, 88,228,169, 99, 71, 27,246,170,146,121, 99,153, 55, 6,157, 34,214,106,170,166,
- 98,167,201,202, 97, 73,100,159,158,131,246,146,221,227, 19,194,197, 57,188,255, 62, 23,107,199,108, 53, 39,117,158,149,146, 60,
-158,149,140, 71, 13,199, 7,187,220,216,155,241,240, 11, 15,249,238,222, 17,171, 31,249, 28,162,212,184, 4,110,240, 92,180,142,
- 95,249, 95,255, 62,223,254,239,126,157,253,111,188,193,113,204,211, 81,135,100, 59,169,104, 43, 33,184, 81,105,164, 20, 92,133,
-204, 14, 88, 85,130,177, 29, 56,233, 35,175,172, 74,132, 22,164,148,232,149,228,163,199,107, 62,250,131,199,204,149,160,125,186,
-225,248,233, 37, 39,235,150,239,156, 95,241,157,171, 45,199, 93,196, 37, 69,235, 35,114,166,152, 85, 10,109,228, 68,137,142, 88,
- 41, 24,149,160, 49, 58, 91,141,165,164, 23,137, 77,136,156, 8,232, 45,108,202,130,171,131, 61, 78, 87, 11,134,217,156,203,186,
-228, 98, 28,121,228,122,190, 53,246,124,100, 13, 31,147,184, 20, 21,149,130,243,162, 36, 26, 67,165, 20,131, 72,140, 66,240, 36,
- 4,206, 66,228,147, 24,241, 62,177, 14, 14,164,193,136,124,103,221,177, 37,183,181,197,150, 37, 66, 42, 90, 34,179, 89,193,110,
- 83,112,146, 4, 15, 54,199,252,135,175, 63,228,187, 23,167,252,222, 56, 66,114,136,113, 34, 48, 54, 37, 95,219,217,225,181,121,
-195, 81,179, 32,200,146,203, 36,248,163,164, 9,171,134,175,223,186,195,231,143, 14, 89,206,231, 60, 45, 74, 88,236,228, 38,190,
-176,204,165,162,182,154,185,148, 44, 16, 20, 41,161, 68,222, 24,100,146, 64,226,216,143,124,188,245,136,194,194,106, 23,102, 21,
-207,237,146, 39,178,225,104,117,196,103,119, 15, 89, 53, 11,172,169,176, 69, 69, 93,228, 59,244, 95, 41,243,109,122,150, 96,112,
- 35, 75,169,112, 67, 79,232,122,158,182,231, 28,187, 22,136,180, 67,207,118,236,249,240,124,203, 39,253, 64,231, 60,107, 63,208,
- 69, 71, 63,142,212, 34,241,193,243, 99, 46,219, 43,158, 94,156,240,237,231,199, 60,186, 90, 51, 36,199, 89,191,229,241,213, 37,
-142, 68,215, 93, 97, 98,192,232,146, 36, 18, 41, 10,146,206,185,222, 81, 43,162, 18,244,193,211,143,158,160, 53,155, 24,104,133,
-167,243, 30, 33, 21, 26,137, 81, 38,235,105,116,193, 76, 23,104, 37,193,150, 8, 18, 73,106, 86,117,195, 16,179, 21,214, 90,131,
-149,138,157,194,224,131,228,179,117, 69,210, 10, 93, 52, 44,108,153,217,235,198,114, 80,204, 24,165, 36, 10,153,111,224, 82, 33,
-141,196,232, 2, 68,194, 24,133,115, 30, 37, 21, 82, 10, 80,145, 74,104,100,130, 49,230,137,187, 36,210,197,144,197,164, 34, 17,
-189,195, 72, 56, 29, 71, 68,138,196, 20, 8,126,164, 74, 1,231, 71,118,132,192, 50, 18, 93, 96,166, 61,114, 76,140,222,179, 91,
- 90, 54, 93,135, 35,177, 39, 18, 42,230, 51,163,242, 45,218, 7,180, 16,236, 8,137, 75,158,251,214,228,239, 89, 40,214, 4,110,
-233,146, 45, 1,153, 36,157, 0, 43, 50, 28, 42,248,136, 54,134,222, 7,222, 27, 61,129,136, 16,146, 87, 74,147,183,129, 49,127,
- 93,157, 18,165,144, 28, 20, 37, 41, 38,124, 12,184, 24,255, 45,213,239, 47, 60,231,211,138,249, 26,184, 31,167,137, 92, 76,106,
-115,169, 94,218,189,226,132,126,189, 46, 44,133,252, 84,148, 94,156,176,140, 83,254,186,155,252,136,106, 42, 76, 46, 76, 80,155,
-172, 6, 38,116,236,175,238, 80,232,154,199, 93, 59,121,179, 37,168, 42,103,188, 67,190,237, 63,217,228,244,154,202,226,122,199,
-253,165,229,116,112,204, 4, 8, 31,120,101, 97, 88,247, 14,237, 18, 51, 11,103,151,227,139,168,211,161, 44,120, 60, 42, 80,146,
-214,251,169, 72, 93,223,210, 84, 86,237,183,221, 20, 65,219,101, 37,255, 48, 64,169,114, 52,173,239,115,168, 72,159,149,251,249,
-136, 18, 94, 42,239,123, 15, 54,241,193,165,228, 11, 59,138,231,219,158,193,104,252,182,229,158,157,115, 76,164, 64, 48, 70,135,
- 79,224,199, 72,178, 26, 23, 18, 70,101,143,106,240,158,253, 82, 81, 68,201, 91,151, 25,115,187,238,251, 28,143,187,105,243, 93,
- 16, 50,233,101,216,252,249, 45,139,203, 86,194,245,243, 53,213,178, 65,105,201,217,211,211,140, 75, 4, 62, 58,123,142,210,134,
-102,194,183,174, 7,199,174,206, 54, 17,143, 98, 8, 16,146,160, 82,138,113, 8, 44,102,150,109, 55, 82, 89,197,162, 22, 47, 50,
-217, 67, 8,116, 41,223, 97, 23, 82, 80, 41,201,149, 11,217,169,104, 21, 38, 9,140, 24,169, 10, 3, 11, 65,232, 6,234,168,209,
- 34, 81, 11,133,217,157,115,239,106,197, 27,186, 38,205, 45,191,109,182,152,194,176,135,226,131,224, 89,223, 46,233, 93,224, 94,
-128,181,130, 78, 9, 86, 11,203, 65, 8, 84, 9,202,197,138,249,182, 99,121,176,143,106, 22, 60, 13, 61,197,241, 25, 39, 66, 32,
- 23, 53,213,222,156, 27,119,246, 24,182, 61,227,224,184, 90,183,164,193,160,129, 66,107, 94, 89, 45, 72, 81,242, 52, 10,124,234,
-176, 12,212, 81,176, 82, 37, 15, 22, 11,230,117,153, 47, 81,133, 70,206, 11,212,126,141,112,145,174, 29, 57,181,160,241,148, 46,
- 71, 34,142,155, 45,233,108,195,205, 51,199,113,215,209, 17,185,241,232, 17, 23, 31, 63, 97,185,127,192, 23,159, 28,243,171,139,
- 57,143,126,248,179,236,237, 6,102, 8,206, 90,199,205, 82,179,237, 60, 90, 11,158,117,158, 15, 79,182,252,246,223,250,187,164,
-113, 11, 88,126,237,191,252, 59,240,230, 14,219,255,234, 63,229, 55, 69,228,222,221,125,190,182, 99,185, 41, 4,171, 2, 46,199,
-196, 70, 9, 22, 90, 82,218,188,133,120,190,241,252,206, 71,151,124,182,201,123,211,143, 46,182,124,240,124,192,104,201,179,231,
-103, 52, 9,168, 4,207, 93,228,121,136,180, 1,122,145, 16,120,218,157, 25,183, 10,112, 2, 10, 23, 80, 90,230, 16, 13, 23,112,
- 70,241,209, 85,207, 92, 9,172,150,212, 70,179,117,129,103,131, 99,225, 19,214, 7, 80,146,153, 53, 60,171, 13,189, 89,208, 46,
- 42,186, 39,167, 60, 31, 19, 85, 33,104, 77, 67, 21, 3, 79,229,140,253, 90,242,110,155,120,146, 34, 53, 18,127,177, 97, 99, 13,
-109,136,120,224, 60,105,162,174, 89, 39, 71,140, 5, 59, 74,176,180, 69,118,144,196,128,183, 5,190,149, 68,231, 48, 49,112,171,
-105,248,229,167,103,244,127,244, 7,252,189,243, 1,209, 84, 48, 95,146, 70, 16, 58,191,247,247,173,198,104,141, 23,146,111,246,
- 61,231, 33,230, 48,214,249, 46, 95,187,123, 23, 33, 5, 71,253,192,219,103, 23,180, 67, 55, 9,131, 35, 46,140,180, 99,228, 44,
- 70,118,108,102, 93,204,133, 98, 19, 34, 81, 36,174,124,207, 99, 12,172, 10,246,139,154, 93, 99, 48,170, 98, 71, 9,140, 84, 52,
-186,194,106, 67, 81, 53,212, 19, 28, 81, 38,207,129, 20,124,219, 69,238,110,175,184, 37, 11, 36,146,110, 28, 72,131,227,188,221,
-240,241,122, 77, 27, 7, 78,183, 1, 82,224,124,240,140,231,107,100,140,200,182, 39,236, 47, 56, 5, 46, 27,203, 91, 49, 98,156,
-199,120, 48,253,136,105, 59,204,106,201,219, 82, 83, 55, 5,133, 72, 60, 42, 37,159,193,162, 22,145, 33, 4,172,182, 44,118,110,
- 32, 6, 72,186, 96, 28, 28,222, 57,194,164,111,186,220,174,113, 42,159,222,144,154,146, 72, 80, 2, 41, 18, 30,195, 18,137,176,
- 6, 53, 58,208,138,133, 15, 60,243, 3, 6,193, 66, 36,156, 51,204, 82, 98, 8,121,176,104, 22, 26,169, 20, 77,240, 36, 99, 48,
- 34,159, 29, 27, 83, 77, 48,155,200,210,148,108,125,255, 66, 7,132, 75,104,105,240,113,164, 44, 52,206, 37,164, 76, 8, 15, 27,
- 6, 42, 1, 58, 9, 28,137, 62, 58,144,150, 16, 28, 18,168,148,225,188, 27, 88,166,196,113,112,164,113, 64, 43,129, 9,129, 82,
- 71, 66, 76, 52, 62,208,165,196, 14, 5,107, 61,178,227, 4,155,171, 11, 10,109,177, 41,111,121,181, 72, 84,228, 36, 55, 77, 22,
- 74,175,240,236,136, 18, 81, 86, 28, 36,184,240,158,215,237,156,247, 92,207, 74,151,108, 36,236, 11,193, 59, 67, 98, 17, 61, 66,
- 73,234, 4,143,198,192,158,182, 60, 1,132,239, 57,176,138, 62, 56,140,148, 92,245, 91,230, 82, 18, 99, 96,219,245, 8, 41,120,
- 67,106, 30,199,241,223, 98, 82,215,250,165,239,156, 9,239, 87, 78,247,114, 59, 17,151,122,151, 39, 65,239, 94, 78,168, 76,114,
- 97, 55,249, 64, 69,122,233,255,108, 39, 11, 86,156,214,198,101,145, 85,170, 90,229,253,195, 68,174,194,170, 60,133,207,114,128,
-198,195,155, 15,120,124,117, 78,136, 1,188, 67, 74, 75, 66, 65,187,201, 19,115, 55,192, 48, 32,165, 98, 81, 21,216,148, 81,168,
-181, 21,236,105, 56,235, 71,102, 74,130, 27,233,187,172,220, 37,133,236, 37,213, 58,223,207, 84,190, 99,167, 52,169,247,205, 36,
- 22,136,211,244,173, 85, 62, 19, 88, 13,114,130,204,139, 73, 92, 99,204,116,110,152,176,185,195,116,175,187,158,214,123,143, 19,
-137,199,157, 71,151,138,183, 62, 89, 83, 87,138, 15, 47, 90,180,209,104, 41, 8, 42, 11, 82, 70, 37,208, 66,224, 66, 38,185, 21,
- 82,225,137,204, 80, 12,209,211, 88, 69, 67, 98, 75,206, 59,199,231,108,230,204,225, 23,147,160, 47,190,180,223,201,233,116, 18,
- 4, 71,175, 28,113,112,235,144,118,155, 69, 50,193, 71,182,125,139, 17,154,131,213, 33,123, 7, 75,102, 77, 65,112,137,194,106,
- 84,132,166,212,200, 49,112, 57, 6,124, 74,180, 67,192,185, 72, 83,107,148, 20,104, 57,173,223, 17,120,242,135, 53,166,148,131,
-247,144, 68, 1,137,188,174,213, 58, 79,235,248,152,161, 62,133,194,214, 6, 45, 53,101,169,249,191, 89,123,179, 88,203,210,243,
- 60,239,249,167, 53,238,233, 76,117,106,174,174,174,234,110,246, 64,145, 77,138,148, 40, 91,178,132,152, 6, 18,197, 73, 46, 20,
- 7, 65, 4,196,185, 73,128, 32,185, 8, 2,248, 46,176,238,156, 27, 35,200,125,144, 92, 4,112,132, 12,130,108, 40,138,172, 33,
-214, 16, 73,164, 73, 90, 36,155,221,173,110,178,187,171,107, 62,243,217,227, 26,254, 41, 23,255, 58, 85, 69,137, 18, 20,197,167,
-177,113, 80, 5,116,157,179,246, 94,123,127,255,247,125,239,251,188,178, 54,204,109, 36, 28, 28,227,181, 96,145, 75,124,109,216,
-100, 18, 95, 72, 30, 73,207,246, 40,103,119,167,100, 57,206, 24, 95,158,178,181, 61,229,114, 85,115,185,183,188, 81,111, 51, 13,
-145, 93, 93, 48,186,177, 13,166, 96,220,246,100,173, 99, 45, 5,179,237,154,171,151,183, 40, 75,147, 0, 99, 77, 75, 92,246,200,
-206, 83, 74, 69,169, 36, 69,132,222,167,209,158, 16,138, 76, 24,246, 71, 35, 46,239, 77,153,108,215,148,163,156, 98, 82,144,207,
- 10,178,210, 80, 76, 43,138,113, 73, 17, 34,198, 58,100,239, 56, 95,172,217, 57,106, 48, 46,242,193,193, 33,242,124, 69,238, 5,
-166, 52, 92, 11,240,242,227, 5,223,113,199,184,137, 96,218, 45,184,255,219,127,128,207,182, 89, 29,172,216, 44, 26,214,235,150,
-223,254, 95,126,149,143,254,209,239,113,239,215,191,145, 52, 13, 72, 2, 38,233, 60,142, 27, 62,250,103,127, 72,248,167, 95,167,
-236, 63,229,214,157,171,124,121,183,100, 87,107,254,120,229, 56,232, 2,158,200,165, 82,209,161, 56,149,138,199, 66,114,127, 99,
-121,180,238, 89, 53, 30,109, 36, 94, 66, 44, 32,138, 72, 75,160, 35,224,100,128,152,196,139,215,239,236,145, 95,153,114,164,115,
- 62, 61,119,252,225,183, 62,230,206,254,132,222, 71,158, 90, 79,171, 69, 74,226,206, 4,247,159,204,105, 93, 74, 88,180,189,101,
-221, 89, 66,111, 25, 75, 65,166, 4,185,144,244,121,154,250,185,178, 32,232, 12,171, 51, 84,157, 97,235,146,179,141,101,113,190,
-100,213,119,228, 85,198,131,243,158, 77, 20,172, 93,135, 15,145,163, 69,135,146,146,181,210, 56,149,225,163,100,119, 54,166,145,
-130,105, 94,208, 33, 57,246, 17, 43, 5, 79,150, 45, 71,189,101,172, 20, 71, 82,241,222, 89,139,232,186,228,145,207, 52,140,170,
- 4, 95, 57, 93,115,165,144,236, 85, 5, 7,155,134,119, 87,107,172,237, 17, 82,241, 70, 53,226,181,233, 4, 41, 37, 66, 73, 86,
-173,229, 64, 12,217, 7, 62, 21, 84, 21,159,239,202,107, 37,105,133,224, 8,136, 66, 50, 42, 74,246,234,154,207, 86, 19,238, 78,
-119,208, 67,224,138, 70, 82, 12,194,178, 92,105,156, 15, 8, 33,200,134,157,117,227, 61, 15, 87, 11, 94,145, 1,215,245,220, 8,
-145,213, 98,206,124,115,198,251, 71, 79,248, 96,126,206,199, 39, 27,206,155,142,229,233, 28,123,118, 68,180, 29, 97,179, 33,246,
- 45, 97,177, 76,143,249,138,112,190,196, 47,214,248,243, 57,174,239,241,222,225, 86,107,220,217, 25,253,241, 9,253, 98,197,241,
-162,225, 97, 72, 57, 26, 45,129,237,188,164, 35,164,172,141,224, 17, 70,211,122, 79, 23, 28,115,239,105,133,224,164,107, 88,217,
- 30, 97, 20,189, 28, 38,124,153, 65,101, 25,121,102,104,165,160, 42, 43,180,148,172,165,167, 50, 25, 27,239,208, 89,137, 84, 34,
- 33, 94,181,166,202, 4,179,172,196,135,128,202,138,164, 90,143,142,186, 26, 35, 98,192, 6,207,118, 85, 99,173, 69, 68, 65,150,
-231,244, 46, 29, 44, 83,109, 25, 36, 70, 18, 92,231, 80,120,140,136,180,193,211, 58, 75, 22, 61,189, 16,104,103, 19, 63,159,136,
- 12,142,198, 53, 52,182, 39,118,107,108, 84,212,222,146, 73, 71, 17, 2, 51,151, 92, 90,151,132, 96,227, 44,179, 0, 10, 79,244,
-129,245,186, 37, 23,129,232,146, 56,249, 10,130, 55,180,227, 21,165,248,146,209, 92,215,134, 27, 69, 70, 21, 34, 91, 38,231,178,
-150,156,217,150,151,202, 17,139,104,217, 86,134,143,219,158,155,133,226, 60, 70, 74, 4,143, 86, 61,133, 84,124, 18, 28, 69,140,
- 92, 54, 6, 31, 4,187, 90, 38,212,109, 12,105, 13, 32, 82,131,183, 29, 3, 62, 6,148,253,235, 20,117, 53,136,182,226, 11, 68,
-223,160,158, 71, 94,118,131, 23,189, 27,186,235,206,191,128,140, 29,138, 77, 28,188, 52,222,167,248,193,139,241,240, 5,125, 77,
-229, 41,147, 92, 13,130,187,186, 30, 22, 12, 42, 1, 7, 68,242, 63,126,218,181,216,126,232,204,163, 32,186,254, 57,201,237,240,
- 60, 33,103,125,131, 44, 10,148,137,216,206,177,167, 21, 49,120,250, 33,138,180, 68, 17,131,163,233,124, 26,223, 55,131, 29, 76,
-233,225, 80, 49, 88,195,244, 16, 29,171,196,112, 24, 25,104,121, 82, 36, 80,142,237,210, 65, 38,134,164, 13, 8,126,128,234, 12,
-120, 63, 63, 8, 78, 46,216,235, 74,190, 16,254, 18, 88, 46, 82, 80,203,201,241,138,185,143, 60, 92,118,204,170, 12,231,122,148,
- 84, 8, 33, 89,117,150, 74,167,209,247,210, 59, 42, 33, 89, 13,182, 47, 25,160, 11,145,157, 44, 41, 81,173,190, 56, 68,168,244,
-179,109, 24,216,240,242, 57,138, 49,166,157,244,124, 60,225,237,215,239,178,217,180, 4,231,240, 49,146, 9,195, 89,179,100, 90,
- 86,124,241,205, 91, 52,157,199,185,152,246,223, 50, 37,177, 17, 2,110,128,205,152, 76,226, 58, 71,219,121, 84, 62,184, 23,124,
-196, 1,173, 13, 52,222, 33, 7, 38,188, 38, 82, 75, 65,227, 3, 75, 31,169,135,221,144, 18,176, 81, 96, 50,133,206, 52, 54,147,
- 8,173,200, 50, 77, 63, 46,121,122,255,152,147,186, 32,142,199,156,103,138,121, 38,209,185,161, 45, 12,182, 46,240,101, 78, 99,
- 20,125,136,156,183, 45,139,224,120,208, 52, 44,124,203,229,122, 11,218,134, 88, 87,228,187, 35,124,227,185,228, 35, 93,174,232,
- 37,228,117, 78, 89,230,104,163,144, 33, 64,107, 81,214,161,122,143,110, 92, 58,128,173, 45,110, 72,120,141,218,144, 85, 57, 59,
-147,146,108,156,161, 42,157,118,178, 90, 18, 43,133, 50, 18,165,210,107,165, 4, 72,165,168, 66, 36, 39, 18, 58,203,172,177,172,
-207,206,185,172, 11, 20,145, 85,111,137,202,113, 52,171,120,237, 23,254, 22,111,254,212, 91,188,252,133, 55, 57,222,116, 60,249,
-230,215, 56,248,232, 67,222,251, 23,223,166,253,253, 57, 33, 13,228,210,154, 34, 33, 65,136, 67, 60,208,197,247,213,247,142,121,
-247,159,124,139, 3,113, 66,244,138,239,127,248,132,211, 63,253,148,187,183, 47, 35, 28,172,165,160,137,176,238,147, 45, 78, 75,
-104, 91,203,253,195, 5, 34, 70,158,156,110,168, 8,116, 77,199,166,117, 68, 37,240, 34,114,181,214,252,189, 47,222,224,149,137,
-225,105, 27,248, 80,107, 30,223,185,204,111,170,130,223, 89, 5,190,254,233,146, 91, 59, 53, 50,120,172,130,211,165,103,165, 37,
- 78, 68,214,173,195,123,143, 36, 98,100,122,109,173, 20,116, 33,160,165,224,112,227, 88,123, 88, 72,201, 34, 51, 44,182,198, 28,
- 8,201, 83, 12, 70, 26,158,108, 90,106, 33,217,116, 45, 58,203,217, 52, 3,225, 47, 4, 50, 34,219,165,228,218,172, 38,100, 25,
-178, 40,113, 90, 97,165,102,174,224, 97, 19, 8, 66,177, 17,145,163,182,229,149,170,224,104,112,146,252,196, 36,231,118,145,115,
- 67,102, 60, 52, 57,162,206,185,191,106,152,202, 2,111, 45, 55, 98,203,184,239,184,148,103,160, 52, 55,243, 28, 73,164,105, 59,
-222,221,108, 88,134,128,176, 61,149, 20,104, 15, 27, 41,184,162, 20,103, 66, 17, 85,198,125, 23,168,114,195, 38, 40,138,220, 48,
- 42, 38,232,188, 66, 75, 69,192,208,250, 64,102, 12, 2,129,247, 22,109, 36, 74, 39, 87,197,166,105,112,214,113,238, 26,150,221,
-154,247,238,191,199, 72, 10, 30,158, 61,229,227,147,199,124,114,124,204,119, 78,206,248,224, 96, 65,152,207,137,237,130,184,216,
-164, 60,243, 1,249, 28, 95, 0,177,198, 16,240, 65, 18, 36,120, 41, 9, 3,174,195, 7,247,156, 46,237, 61,174,235,105,219,200,
- 19,219, 17, 8,104,145, 88, 25,203,190,193,232,156,181,235, 9, 82,208, 11,193,113,179,162, 23,145,179,222,177,192,211,116,233,
-231,134,204, 36,239,184, 41,232,181,162,136, 18,165, 37, 94, 72,140,144,180, 50,129, 90,156,181,136,152,116, 79,224,201,117,142,
- 17, 9,239,108,132, 78,201,153, 89, 65,173, 19, 61, 51, 55, 26,163,100, 90,193, 41,205,102,211,162,181, 26, 0,158,105, 84, 77,
-244,180,109, 79,244,145,133,237, 81, 62,209, 54,181,119, 56, 33,145,125,135, 14, 1, 17, 3,181, 8,244, 93,159,250, 79,191,193,
-218, 64,230, 27,172,181,108, 11,216,142, 9,249, 61,139,130, 16, 2,187, 82,224,189,103, 18,160, 20,129, 76,120, 88, 54,188, 94,
- 74,222, 86,146,187, 69,198,142, 52, 92, 49,154,155, 89,197,101,147,244, 60, 19,101,200, 66, 18,240,109,103, 57,103,222, 50,145,
-154, 3,219,242,242,168,230,163,174,227, 90,158,241,104,217, 16,148,228, 3,107, 25,133,192, 90, 10, 94, 45, 52, 70, 5, 86, 33,
-176,133,160,150,146, 86,192, 76, 72,174,102, 5, 77, 76,248,142, 59,229,232,175, 81,212,165,252, 33,114,239,179,204, 91,173,135,
-157,114, 42,248,183, 62,255, 50,243,163,249, 15, 51,224,187, 48, 20,195,129,231, 46,101,242,118,196,161, 8,184, 97,223, 91, 22,
- 73, 49, 94, 94,140,224,229, 32,198, 19,168, 60, 79,172,117,161,136,182, 75, 16,123,103, 81, 66, 18, 69, 76,123,236,174, 75,249,
-200,171, 21,224,137, 22, 46,103,146,177,150,180, 81, 16,188,227,192,121,118,178,140, 96, 83,190,239,225,106,243, 60,205, 76,136,
- 84, 0,171,122,208, 5,196,231, 96,156, 48,116,192, 65, 12, 34, 57,255, 92, 52,199,160,182, 15, 46,173, 36, 20, 41, 11, 93, 12,
-215,135,228,153, 41,253,162, 99,183, 3, 90,246, 34, 59, 55,244,176, 89, 66,231,120,108, 35, 91,101,134, 18,130, 34, 10, 70, 42,
-237,169, 69,239,201,133,192,185,200, 88, 43,150,195, 13,166,149, 36,120, 40,117,196, 68,193,218, 15,188,247, 56,188, 94, 34,197,
-159,166, 53, 73,120, 22, 5,185,190,255,128, 87, 63,247, 38,121,150,209,173, 26,178, 44,231,115,159,125,147, 7, 15, 30, 18, 93,
-224,230,173, 27, 44, 22, 29,101,149, 2, 97,178, 76,147,105,201, 38,122,162, 75, 66, 26, 41, 35,174, 75, 59, 91, 31, 82,216, 75,
- 80,113, 24,141,201, 20,150, 35, 21,106, 80, 72,119, 33, 97,111, 51, 41,216, 49, 9,113, 42,226, 16,101,172, 36, 85,166, 89,155,
- 36, 12, 68, 75,186, 81,206,159,220, 63,230,211,205,130, 42, 6,214,125, 67, 71,160,141,129, 40, 37,107, 17, 89, 74,146,120, 69,
- 10,142,133,103,225, 98,194, 84,146, 34, 46,139,178,194, 4, 65,233, 33, 76, 75, 70, 42,199, 40, 73, 27, 3,217,186,199,108, 85,
-137,100, 38, 37, 2,208,157,199,204, 91,212,188, 37,156,174,209,157,101, 76,100, 44, 52,133,214,120,173,113, 70, 34, 50,133, 53,
- 10,151,168, 52,196,182, 71,103, 10, 97, 20, 81, 74,132, 82, 72, 69, 42,244,101, 70, 81,231, 20, 69,193,254,107, 55,152, 92,219,
- 98,182,232,217,139,146,251, 49, 18,191,252, 58,175,189,121, 21, 45, 20,162, 42,153, 92,153,146,141,183, 17, 93,228,225,241, 33,
-155,143,151, 4, 28, 1,193,115,170,182,127,246, 16, 67,137, 7,137, 64,242,232, 27, 15,249,250, 63,253, 54,159,252,230,119,121,
-252,123,223,227, 91,239,191,207,207,126,245,109, 92,227,152,175, 59,214, 79,151,228, 71, 11,126,229,127,250,101, 14,191,245, 14,
-155,119,223, 39,223,157,177, 62, 95, 50, 63,111, 6,203,141,192, 9,193,153,202,169,162,229,245,189, 49, 95, 59, 89,243, 63, 31,
- 54,124, 48,132, 13,233, 76,163,198, 57,241,214, 54,247, 39, 37,183,125, 96,177,232,104,242,140,243, 85,199, 92,102,136,214, 99,
-178, 68,137,195, 59, 74,163,105,136, 8, 4,199, 93,143, 53,112,224, 20,231,117,205,122, 84,242, 56, 51,220, 31,229, 28,103, 5,
-227, 73,206,104, 58,225, 32,192,178,237,176,243,115, 86, 46, 80, 25, 69,239, 58, 10,229,168,132,166, 54,134, 66, 27,162,150,220,
-219, 4, 30, 58,135,146, 57,167, 38,103,187,172,216,213,169, 27, 26,153, 12,175, 4,119,243,146,253,178, 64,106,205, 86,145, 51,
- 18,201, 42,187, 95,143,201,180,230,149,113,205, 36, 47,217, 31,215,148,218, 80,200, 12, 27,225,254,106,193, 19,107, 89,132,200,
-202,123,118,242, 18, 75, 96,173, 32, 70,137,149, 10,175, 52,103, 82,115, 42, 53,175,151, 5,159,203, 51,238,148, 53, 51, 97,112,
- 82, 34,148,193,105, 69, 8,145,198,167,166,192,123, 75, 8, 61,193,167, 81,190,239, 58, 86,221,146,229,234,156,147,239,191,203,
-103,174, 94,226,143, 62,125,204, 59,143,142,120,239,116,201,123, 7,199, 28,159,157, 67,183, 33, 10, 71,108, 59, 34, 63,204, 91,
-127, 33, 82,235,217,232, 58,132,231,143, 11,183,250,197, 93,116, 81,220,189,239, 89,197,192,131,181, 35, 55,130,214, 91,206,109,
- 75,144,130,149,183, 68, 36,143, 54,115,172, 16, 60,106,214,172,162, 39, 6,112, 66, 16, 68, 98, 58, 40,147, 17, 68, 64, 75,133,
-200, 52,113, 72,124, 68,107, 86, 33, 32,135, 96, 43,149,105,108,235, 24,103, 57,153, 76,204,248,220,100, 56,111, 41,139,156,145,
- 49,195, 86, 54, 75,107,172, 16,200,180, 65,105,141, 50,154, 24, 61,182, 79,133, 89,196, 64,183,238, 16, 17,214,253, 6, 25, 61,
- 39,157, 69,135,148,230,185, 27,147,144,176, 22, 2, 17, 29,222, 90, 84,112,132, 24, 41,125, 96, 26, 60,165, 20, 76,130,167, 6,
- 74,169,152,136, 84,231,106, 18,226,122, 23, 40, 17,204,136,220,201, 50,238,102,154,109,101,216, 42, 71,236,154,154,151, 70, 83,
-246,138, 41, 38,194,180, 26,145, 73,137,150,130,113,145, 81, 41, 67,239, 3, 69, 76,147,213,153,202, 56,114, 61, 91,218,176,116,
-142,243, 62,242,129,237, 56,141,240, 52, 6,198, 49, 48, 27,228,104,183,170,130, 16, 5, 19,149,177,165, 12, 59,166,162, 9,158,
-207, 84, 51,118,140, 70,248,191,142,250,253,153,208,234,197,162, 62,180, 47,106,176,176, 33,152, 63, 57, 75,133,171,117, 47,140,
-156,197, 11,123,119, 1,190, 75,194, 20, 25,147,120,142, 0,186, 74, 49,114, 91,227, 84,248, 7,131, 62, 49,133,195,199,182,135,
-178,130, 96,169,162, 99, 52,100,165, 79, 99,160,233, 91, 38, 70,209,217, 62, 9,216, 66, 72, 59,245,144,212,141, 74, 42, 66,232,
- 17, 81, 50, 35,208,216,164, 82, 60,237, 44,222,250,148,225,173, 92, 74,251, 42,203,103, 96,154,164, 68, 31,186,110, 35,146,138,
-127,224,185, 99,195,115, 2, 94, 28, 10,189, 24,162,240,218,102, 32,202, 57,112,195,168,222, 69, 40,205, 51,150,123, 18,171,197,
-231,246, 56, 63, 48,166,189,133,188,100, 82, 42,148, 79, 52,182, 82, 41,162,183, 88, 33, 49, 33,177,212, 55,206,179,157,105,172,
- 76, 41, 94, 94, 10,102, 81, 80, 69,207,147,139, 72, 82, 23,210, 59,187,247,131,203, 64,254, 57,112, 70,190, 61,227,230,237,155,
-116, 93, 67,211,108, 56, 62, 60,167,183, 45,222, 11, 66,200,113,125, 96, 52, 41,201, 11, 77, 46, 37, 82,165, 53,132, 37, 34, 66,
- 26, 5,249, 16,159,197,185, 71, 98, 18,217, 9,153, 68,249, 17, 42,117,161,221,139, 76, 85,154,168,184,232,137, 81,146,105,153,
-242,198,133, 72, 97, 20, 46, 89,115,188, 73, 40,211, 62, 83, 28, 29,173,152, 68,205,164,168,104,148,164, 42, 38,136,170,100, 60,
-154,146,107, 77,102, 12, 70,128, 42, 50, 10,169,240, 90, 64,150, 83,153,156, 75, 89,129,247,158,124, 92, 33, 71, 5,178, 80, 84,
-251, 35, 74,169, 48, 33, 82,180,142, 48,201, 16, 90,161, 98,130,238, 25,231,201, 26,139, 89, 89,100,215, 36,245,171,212,140,132,
- 98, 90, 24,178, 92,177,214,146, 53, 73, 28, 22, 50,133, 68,144,109, 28,213,253,115,196, 36,195,103, 26,151, 15,200,211,224, 49,
-157,199, 28,204, 81, 43, 11,215,167,232, 89, 77,121,125,135,124,107,204,150,211, 92,113,145,122,209,144, 61, 90,146,159,244,248,
- 15, 14, 56,179, 61,227, 75, 19,222,250,220, 43,236,255,141,215,248, 65,213,225,254,244,152, 56,252, 39, 0,161,114, 68,108,249,
- 7,255,233, 23,248,227,119, 22, 8,223, 13, 61,187, 76,145,184, 72, 4, 26, 30,117,252,237,255,224, 75,108,154,150,205,241,138,
- 98, 57, 71,111,230,124,229,141,187,220,249,177, 59,212,183,111,210, 89,135, 11,130,102,216,223,197, 62,105, 47,100,111,249,181,
- 63,250, 38,149,174,248, 71,135,158,249,178,195, 91,139,111, 45,221,186,167, 93,117, 8,155, 50,193,139, 42,231,111,142, 4, 71,
- 94,112,214,123,150,235, 22,163, 36,163, 82,226,101,196, 74,197, 82,128,244,145,141,117,156,119,142, 69, 11,199, 85,198, 81,102,
-120,164, 36, 79,144, 92, 53,138,191, 49,202,184,189, 83, 51,173,115,150, 94,240, 3, 97, 56, 90,174, 97, 53,231,160,153,115, 41,
-215, 20, 17,148,201,208, 70, 17, 98, 96, 29, 35,153,144,156,249,200,227,229,156,187,121,150,150, 20,166,224,238,168, 96, 17, 18,
-244,100,171, 44,217,173, 10, 74, 83,208, 42, 77,235, 83,225,216, 42, 74,118,137,212, 89,134,150, 26,149,143, 82, 98,154,209, 28,
-117, 14,173, 51, 22, 49, 34, 72, 22, 84, 27, 3, 27,161,137, 3, 14,121,172, 52, 39, 66,210,168,130, 45, 37,121, 43,147,108,153,
-130, 66, 24,118, 76, 70, 46,147,122,255,160,237, 88,218, 14,223,247,156,247, 13, 27,219,114,214, 52,116,109,203,106,181,228,225,
-201, 99,142, 78,142,120,116,240, 20, 58,199,225, 39,143,225,201, 99,226,242,156,216,109, 82, 19, 19, 2, 81,133,225,192, 30, 94,
- 40,222,127,182,152,243,194,116,231,135,163, 84, 46, 30, 23, 41,168,238,226, 97, 19,186,249,163,243,142,127,117, 62, 71, 2,173,
-183, 28,186, 13, 79,109,203,169,183, 44,188,229,180,111,232,189,163,245,150, 60, 43,113, 3,231,189,146,233, 64, 56, 49,134, 77,
-215,165,224, 24, 2, 77,140, 72, 4, 46, 6,164, 46,112,174, 35,203,179,100, 15,149,146, 66, 43,172,143,148, 69,158, 4,134, 17,
-170, 44, 27,166,141,138, 92, 25,162,212, 4, 36,173, 13, 8, 23,105,250,134,205,166,165,239, 45, 49,244,201,135,142, 39,122,143,
-119,150,169,209,136, 16, 88,251,142, 82, 72, 68,240,248,190, 69,138, 64,231, 58,180, 15, 72,231,200,134, 98, 45, 66,100, 91,164,
- 73,107, 37,161,148,146,145,148,204, 98,138,161,222,146,134,155,245,132,153,206,153, 20, 21, 91,227, 41, 35,149,177, 55,217, 99,
- 55, 31, 49, 85, 25, 87,183, 46,145,133,136, 70, 50, 45, 42,108, 76,113,211, 82, 72, 78,241,136, 8, 31,119, 27,154, 24, 89, 17,
- 88, 71,193,119, 54, 27,130,208, 60,244, 61, 45,130,147, 16, 24, 33,120,171,206,217, 56,203, 75,101, 73, 64,177,109, 10,142,250,
-134, 55, 71,187,116,161,227,122,189,195,189,118,245,215, 84,191,251, 33, 17,236, 17, 13,114,221, 0, 0, 32, 0, 73, 68, 65, 84,
-226, 54,113, 46, 41,219,141,121, 62,166,190, 40, 38,249, 16, 69,122,225,235,116,225, 5,181,248, 32,132,243,118,160, 3,248, 68,
-122, 26, 15,100, 33, 53,208,231, 46,166, 3, 97, 56, 12, 72, 65, 78, 10, 57,176, 93,203,158,214, 28,246,237, 16, 81, 60,116,166,
-171, 53,204, 87,208, 89, 38,117,218,255,120,160,145,130,104, 61, 74, 73,186, 62, 36,142,114,136,116,157, 69,170,152,210,221,130,
- 29,124,170,102,136,105,189, 32,198,169,139, 25, 86, 42,136, 66, 12,227,250,161, 19,238,251,116,141,189, 75,187,236, 48, 76, 38,
- 98, 76,235, 9,157, 63,139, 9,140,109,178,192,141,148,162,247, 33, 9,251,172,135,104,193,201,180, 20, 90, 45, 56, 93, 90, 84,
- 93, 32, 69,226,141, 71, 9, 19, 20, 14,143,139,158, 32, 34, 42,200, 36,110, 19,130, 60,192,177,237,113, 90,113, 89,195, 97,231,
-159,171,244,197,160,107,136,195, 26,228, 5,104,253,163, 15, 63,226,179, 63,249,227, 9, 9,233, 3,173,239,137, 65,144,235,140,
-157,221, 61,242, 34,167, 42, 50,198,101, 78,110, 20, 34,130, 80, 2, 61,252,123, 33, 68,178, 66,167,216, 85, 23,136,131,100,162,
-115, 46, 69,125,170,212, 63,154,139,179,161,136,233,252, 18, 35, 35, 45, 40, 5,100, 74, 83,168,228,245,246,131,240, 74, 12,216,
- 80,149, 25, 22, 89, 70,191,182,212, 58, 97, 92,215,221, 6, 27, 60,189,107, 19,220,196,123,148,201,185,122,229, 38,211,122,198,
-100, 54,227,242,246, 30,179,170,198, 8, 67,173, 13, 35, 33,153,236, 78, 40,140, 70,219,136, 44, 13,126, 0,207,100, 82,224, 51,
-153,130,185, 66, 68,217,128,233, 60,210, 38, 84,107, 52, 10,101, 82, 54,187,201, 85,202, 73, 55, 10, 35,192, 32, 41,140, 66,231,
- 26,187,233,153, 29,116,240,104, 5,109,143, 47, 21, 20, 26,169,147,175, 93, 54, 1,185,238, 16,147,114, 72,235, 3,129,194, 92,
- 25,147,141, 12,246,116, 69, 55,239,105, 30,156,112, 37, 56, 94,201, 13,227, 66, 51,207, 53, 87,246, 39,188,245,153, 59,132,105,
- 75,245,214,132,203,111,223, 68,124,110,159, 47,254,199, 63,199, 23,126,226, 10,127,255,239,254, 44, 89,222,240,237,111,126,130,
- 28, 60, 6,233,221,147,182,239,146,192,233,201,199,236,190,246, 42, 58,244,200,222,167, 4, 47, 37,209, 90,178, 38, 38,176,144,
-119,116, 65,112,190, 88, 34,176,248,213,138,222, 90,156,204,249,181,143, 62,193,127,242,125,194, 39, 31, 19, 30, 63, 34, 60,252,
-148,112,178, 32, 60, 58,160,107, 2, 99,239,249, 79,174, 22,124,241,202,148,173,105,206,135, 75, 71,179,108,112, 66,160,165, 71,
- 32, 56,247,145, 50,194,201,166, 73, 34,178, 16, 88, 91,193,169, 80,180, 90,178,118,129,214,121,254,118,173,249,185,253,146,215,
-102, 25, 61,138,211, 32,120,191,113, 56,173, 57,148, 38, 9,180,150,167, 24,215,147, 69, 64,102, 88, 37, 89,245,176,238,122,116,
-111,169,136, 56,219, 49, 82,129,109, 19, 41,178, 12,239, 36,186,200,145,217, 8, 35, 13,101, 85,209,184,200, 89, 20,120,147, 49,
- 14,142,203,163,154, 82, 41,164, 54,152, 40, 81, 90, 35,133, 64, 72,195, 19,239,145,210,240, 88, 4,148,144,116, 41, 35, 47, 29,
-200,149,166,208,249,128, 39,141,188, 82,100,188, 42, 35,123, 72,138, 44,167,150,130, 17,146, 67,219,241,131,166,229,164,223,112,
-220,119,124,212, 44,121,186, 89,114,116, 62,231,241,147, 39, 60,190,255,132,179,123, 15, 89, 31, 29,192,106, 9, 7, 39,131,246,
- 40, 29,158,163, 74,107, 71, 84, 24,232,152,241, 47, 12, 74,249,255, 82,224,253, 11,223,159,141,227, 93,143,235, 58,238,109, 60,
-223, 94,174,105, 68,228,219,203, 13, 39, 6, 30,186,200,121,148,144,231,228, 91,151,232, 84,202, 81,232,133,194, 5,143, 82,138,
-121,223,225,148,196, 59,199,121,219, 64,132, 54, 56,132,179,200,152, 68,164,209, 90, 54, 62, 48, 46,203,244, 60,155, 68,111,204,
-148, 76,177,164,190,199,199, 72,136, 2, 33, 37, 82, 36,253,135,183,145,179,118,205,178,235, 89, 7,203,218,182, 52, 33,176,218,
-172,232,250,158,211,102,131, 11,158,243,182,195,117, 29, 83, 13,190,239,145,206,146,135,128,237, 58, 42,161, 32,132, 20,144,131,
- 64, 17,153, 74, 65,231, 29,219, 66,160,165, 96, 36, 36, 59, 58, 99, 58,154,178, 95,212, 76,243, 17, 85, 81,145,231, 35,234, 98,
- 76,105, 74,242,188,102,183,170,153,228, 57,179,186, 70, 56,199,100, 60,166, 48, 57, 10, 65, 41, 82,116,120, 16,137,115,242,196,
-245,212,198,176,112,145, 54, 6,126,176,110, 25, 73,201,119,108, 71,140,105,149, 32,130,227,117, 99,232,156,227,237,209,132, 15,
-218,150, 61,169,177,193,242,198,100,155, 15, 55, 43, 62, 51,222,229,187,103, 7,252,248,222,149,255, 31,150,182,240,124,124,251,
-108, 44,159, 13,194,176, 11,116, 42, 67, 76,222,133, 26, 62, 14,133, 94,136, 84,236,132,120, 62, 32,106,237, 96, 63, 75,169, 73,
-148, 58,221,176, 82,253, 48, 74,118, 24,141,251,206, 83,233,228,121, 63,233, 82, 33,151,128,240, 73,248, 64,103, 97,221,128,111,
-233, 84,218,223, 33, 20,219, 3, 12, 69,249,200, 88, 72, 22, 33,125,208,117,109, 32, 10,255,124,140,222,117,105, 5,112, 1,212,
-201,139,212,133, 63,139, 50, 29,138, 54,131, 98,191,115,207,119,234,132,193,242, 22,158,157,164,211,255, 51,168,250, 93, 76,138,
-120, 37,233,219, 33,231,188,237,159,219,226,164,127,190,247,206, 37,139, 54,114,212, 56,164, 12,212, 8, 54,222,145,107,133, 33,
-162, 93,160, 23,129, 12,137,141,224,162,195, 40, 69,219, 57,162, 16, 52, 65,208, 55,125,250,157,220,102,152, 46,252,217,193,220,
- 96, 24,216,155,113,249,242, 21,144,130,233,100, 11,219,116,140,235, 17,123,151,118,168, 70, 57, 91,147, 2,136, 24,165,159, 49,
-131,252,160,103, 80, 67,208, 11, 2,156, 15, 68, 23,177,189, 35,120,200,242,148,128, 55,214, 34, 9,229, 34,100, 82,166,167,139,
-148,140,214,133,200,169,117, 4, 17, 49, 33,210,251, 64, 39, 65,169,100,157, 49, 74, 97,234,156,229,167,135, 28, 46,150,172, 68,
-164, 87,154, 94, 27,114,157,113,119,251, 18,183,182,246,169, 39,219, 76,102, 51,174, 94,221,229,141,187,215,249,201,183,110,145,
- 77,167,212, 91, 83,246, 71, 53,178,117,100,147,146, 50,203,160,115,104,163, 17,179,196,149, 86, 90, 17, 10,153, 44,121, 17,164,
-243,136, 65, 71,208, 35,240, 90,130, 78,153,241,218, 40,140,145, 20, 82, 81, 74, 40,163, 72, 0, 27, 31,121,231,196,113,184, 95,
-210,198, 21,253,147, 19,186, 71,167,248,117,139, 40, 51, 68,110,144, 34, 32,164, 70,230, 26, 25, 34,162, 75,239, 5, 17, 98,250,
-187, 42, 71,204,114,244,245, 49,249,172, 68, 25, 69,172, 37, 49,151, 72, 9, 7,167, 43, 58, 89, 82,141,102,136,106,196,143,239,
-141,249,207,189,227, 11, 46,242,155, 31,220,231, 35, 17,120,237, 43,183,217,125,185, 96,116,189,100, 45, 3,156,244, 40,224,171,
-255,240,231,249,151,255,195, 59,124,231, 87,190,206,171,127,231,243, 20,206,162, 67, 64,134, 64,101, 45, 7, 77,143,127,250, 41,
- 31,254,234,183,216,236,103,216,245,146,157,245, 9,187,243, 83,182,207, 14, 16,177,227,126, 16, 92,157,108,115,125, 52,166, 48,
- 25,186,219,240,213,246,140, 59,221,130,141, 50, 60, 93, 52,188, 62,202,185, 57, 46,248, 90, 11,191, 83,228,168, 33, 71,104, 99,
- 10,140, 49,196, 40,240,235, 53,210, 57, 92,107, 57,183, 61, 93,159,172,138,197, 98,141, 88,110,232,187,192,219,181,230,213,105,
- 65,110, 52, 39,125,228, 55, 14, 27,150, 4, 76,157,145, 85, 37, 93,208,220, 59, 58,228,252,228, 0,225, 26,136, 17, 43, 20, 62,
- 6,214,109, 79,227,122, 70, 64,180, 61,133,134,138,180,139,205,140, 36,203,106,234,178,164, 55,134,141,147,136,178,164,172, 70,
- 4, 23,152,106,205, 56,215, 84, 58,199, 40,147, 24, 11,121, 18,226,158,186, 64, 39, 53,231,209,115,210,247, 20,164, 3,209,102,
-200,189,184,156,101,156, 73,201, 76, 41,150, 81, 48,149,145,215,178, 20,222,179, 21, 61, 75,215,179, 10,142, 7,182,227,215, 79,
-207, 56,177, 27,150,139, 57,113,177, 72,141,200,201, 25,177,109, 97,125,142,144, 33,133, 96,245, 3,179, 67,166,136,105,140, 68,
-244,225,133, 83,114,130,217, 64,248, 43,125,124,255,168, 34, 31,254,146,226,238,242, 12,167, 75,156, 16, 56,105,120, 98,114,206,
- 46, 93,226, 81, 94,115, 54,222,101,119,186,203,108,119, 31, 47, 36, 50,175, 88,106, 73,231, 45,182,239,105,186, 22, 99, 12,193,
- 57,154,152,178, 36,186,118,131,183, 22,221,119, 8,151,162,108, 51,239,144, 17, 86, 93, 71,149, 25,182,124,164, 9, 30, 33, 37,
- 89,219, 13, 33, 43,142, 82,128,243, 14, 47, 37,116, 9, 39, 61,119, 61,139,232,120,218,119,184, 64, 58, 68,132, 72, 46, 2,219,
- 72, 70, 2,218,174,199,250, 84,107,174,229,134,130,136,114,158,145, 78,246, 75,233,147, 48, 80, 18,153, 42,141,140,130,189,114,
- 4, 17,246,171, 41,187,229,132,253,233, 30,120,207,184,218, 66,153,156,158,200,118, 61,195, 71,136,202,144,143,106,118, 77,193,
-168, 30, 97, 16, 20,121, 73, 32,173, 76,147, 36, 77,162, 17,116,125, 79, 67,164, 18,146,135,182, 67, 16,121,220,116, 76,144,252,
-174,179, 67, 51,155,106,233, 76, 74,238,249,192,127,180,179,205,135,253,134,175, 20, 21,167, 10,246,178,130,247,230,167,252,244,
-246, 62,239,109,150,252,196,222, 85,126,235,224,225,191, 38,246,251, 51, 16,141, 25,184,237, 67,215, 13, 67,142,164,122,110,233,
-202,205,115, 97,220,139, 7,128,126,192,154, 74,157,210,140, 80,169,216, 5, 63, 76, 1,178, 36,170, 67,160,180, 98, 44,147, 7,
-247,172,237,168, 68, 26, 3, 27,159,130, 71,112,126, 16,135, 13, 30,242, 24,241, 81,242, 90,145,161, 73, 5,232, 40, 68,116,112,
-236,104,201, 88, 72,142, 93,155,198, 87, 23, 42,241, 48,164, 50,169, 60,173, 8,172, 27,210,214, 6, 73,129, 15,233,141,166, 72,
- 42,255,174, 31,236,119,109,242,224,251, 54, 21,244, 23,167, 27, 58, 79,227, 35,165,211,225, 70,203,231,192, 26, 49, 8, 1, 47,
-212,243,118,216,215, 91, 7, 93, 67,140,146,243, 85,199,198,192, 52,164,147,164, 28,222,137, 54,198, 52, 60,144, 49,217,110,172,
- 67,239,237,241,157,165,227, 53,229, 56,246, 49,121,240,237,176, 99,151, 60,103,209,191,240,245,224,253, 31,240, 99, 95,126, 27,
-162,160, 91, 55, 52, 93, 75, 12,112,114,188, 32, 56,205,229,253, 41, 50,138,164,110,207, 82,184, 9, 49,237,246,189,136, 88,231,
- 81, 33,210,181, 46,105, 1, 69,234,180,145,145,202,104,106,157,186, 25, 31, 35, 27,235,159,229,255,246, 62,157,180, 54,222, 51,
-239, 35,185, 74,123,248, 16, 97,233, 28, 77,136,120,163,104,148, 98,215,148,232,233,140,107,245, 4, 47, 12, 74,101,140, 77,201,
- 91,147, 45,234, 24, 57, 62, 61,161, 95, 47,144, 62,224, 54,150,178,183, 76, 16, 92,158, 86, 76, 47, 79,241,163,156,172,177,140,
-148, 34,100,169,135, 21,153, 70,150, 25,162, 48,132, 33,198, 81, 93,160,252,125, 28,130, 43, 36, 82, 43,116, 72, 7, 12,161, 69,
- 50, 63,132,136, 70,144, 41,137,138, 17,233, 61, 15,207, 44,246,220,226, 99, 78,254,210, 22, 71, 33,195, 44, 55,184,239, 31,208,
-172, 91,226,162, 69, 54, 29,172, 59,226,162, 33, 62,221,224, 30, 29, 33, 90, 75, 92, 54, 72,169,209,181, 70, 79, 42, 86,179,130,
-197, 86,193,114, 82,225, 70, 37, 22,193,193,201,138,213,233, 41, 70, 6, 68, 94,242, 31,206, 74,174,232,140, 42, 42, 38,120,238,
-105, 69, 94, 20,140,119, 46, 49,189,122,137, 27,175,220,226,246, 87,238,144,125,249, 37,254,179, 66,243,210,207,222,225,105,181,
-224,157,255,254,143,248,147,223,120,151,207,127,229, 22,255,227, 63,249, 29,142,190,249, 1,211,109,197,150, 44,120,245,213,125,
-174,120,203, 79, 42,193, 87,203, 49,111, 86, 51,102,249,136,135, 70,179, 46, 39,124,245,165, 43,188,117,117,143,219, 87,118,184,
-148,143,248,169,157,171,188, 49,221,230,229,224,248,189,222,242,255, 60, 60, 69,202,130,127,220, 75, 78, 51,197,189,113,201,189,
-237, 17, 31,205,106,244,164, 98, 60, 42,208, 42,163, 95,108, 56, 63, 95,128,136, 40, 29,185,225, 54,124, 81, 9,222,232, 87, 92,
- 19,158,243, 78,176, 18,146,167, 22,254,217,131, 13, 31,158,174,233,137,200,113,201,206,172,228,242,168,166, 18, 37, 11, 20, 31,
-157,159,115,182,217,160, 67, 67,215,183, 40,231, 19,238,183,235,217,207, 37,165, 72,110, 11, 39,101,138, 90, 21,145,133, 11,228,
- 82,160,133,164,115, 22,215, 7,140,132,105, 93, 83, 73, 67,149, 41,114,149, 72,123, 81,192,153, 13,116, 49,221,215, 22, 40,149,
- 98, 41, 36, 75, 36, 47,231, 25,175, 21, 53, 39, 81, 98, 5, 92,215,138, 93, 37, 57,113,129,195, 16,249,183, 71, 99, 58,151,238,
-199, 39, 1,190,190, 90,178, 21, 45,135,135, 39,233,253,127,190, 30,216, 26, 46, 9,111, 59,143,232,134,184,228,139, 28,114,169,
-147, 94, 98,208,246,136, 48,172, 38, 73, 90,158, 11,144,231, 95,244,248, 75, 11,187,214,196, 34, 35,150, 37, 33, 31, 19,242,138,
- 80,143, 8,245,132,176, 53,195, 95,217,199,223,186,140,187,178,143,187,126, 11, 55,221,198,141,118,233,138, 17, 55,242,146,237,
- 73,133,208, 6,235, 3,167,203, 6,103, 91, 68,244, 24,231,232,135, 88,236,190,217,224,125,106,128,100,183, 38,244, 45, 83, 34,
-218,182, 20, 49,160, 9, 72,215,147,133, 68,165, 28, 41, 77,215,247,168,220, 16,218,110, 88, 69,166,130,231, 87, 29, 70, 40,230,
-237,134,181,237, 57,179, 13,202, 7,100,244, 20, 65,240,165, 50,227,181,170,224, 70, 89, 48, 53,130, 50, 66,215, 56,148,128,137,
- 18, 76,149, 98, 44, 53,106,200,166, 24,101, 25,219,121, 77,129,160,154,108, 39, 52,116, 86,176, 83,207, 64, 42,182,234,105,154,
-234,148, 19,108,244,228,229,132, 50,171, 88, 71,203,104, 60,101, 84, 86, 76,165,162, 30,143, 17,222,145,149,229, 51,108,118,136,
-129, 60,203,211,164,161,239,176,222,179,118,150, 35,223,209, 6,199,161,235,153,119,158,223,107, 27,162,179,105, 10, 3,140,165,
-100, 25,225, 31,236, 76,248,229,179, 37,191,184,181,197,159,180, 13, 87,165,226,126,219,240, 51,219,251,252,225,114,206,151,234,
- 41,255,114,121,202,191,121,227,206,191,166,148,182, 11, 16,188,139, 41,199, 91,188,128,145, 45,179,231, 9,108, 65, 13,187,105,
-249,188,219,247,110,240,153,155,231,184,216,222,131,242, 84, 49,176,233, 3, 85, 85,160,131, 39,148, 37,141,119,196,102,195, 56,
-207, 57,219,180,228, 82,176,177,142, 92, 11,172,181,100, 34, 69,126,166,159,153, 65, 88,131,148,236, 23,146, 54, 66,239, 29,185,
-130,235, 74,243,212, 5,178, 40,208, 56,240, 58, 21,226, 63,155, 62,183, 57, 79,227,248,233,236,249,117,108, 6,150,123,166,211,
-206,126,211, 63,247,226, 67,218,203,255,168, 44, 21,111, 65,141,135,160, 23,255, 67,214, 54,138,148, 18,151,186,127, 9, 34, 7,
- 29,210,239, 0, 16, 59, 32,227,248,112,133,218,139, 92,178,130,221,188,160, 42, 13, 83,224,208,123, 64, 82, 2,141, 81,168,195,
- 67,126, 66, 73, 22, 62,114,213,120, 30,106,153, 18,220, 46,172,117,127,193,215, 39,247,238,115,247,206, 93,188,116, 24,163, 80,
- 66,113, 54,159, 51,221,154,114,112,176,230,234,229, 9, 40,137,136,130,177, 17, 44, 8,184, 76, 17,219, 52,134,180, 49, 32,181,
- 72, 1, 36, 34, 29,220,188, 77,138,239,165, 76,250, 66, 41, 32, 87, 41,172, 38,196, 52, 94, 35,132,164,234,143,158,115, 11, 15,
-186,158,206, 57,114,160, 48,146,210, 24,150, 34,242,250, 94,205,149, 60, 35,168,136, 50,154,229,201,146,147,179, 99, 26, 21,217,
- 22, 5, 63, 51,221,166, 46, 75,182, 46,141,209,163, 28,217, 69,108,105,136, 70,210, 58,199,165,221, 9,106,119, 76, 53,239, 89,
- 57,203,121, 8,228, 49, 32,137,104,163, 80,133, 30,244, 21, 32,181, 67, 12,150, 74, 37, 4,194,250,180, 22, 25,226, 99,133, 15,
-105,250,137, 74,163,238,232, 9,153,230,223,248,220,140,227, 71,107,138,203, 91,204,246, 74,158, 78, 86, 60, 62,172,177,149, 37,
-211,145, 8, 92,162,227,180,105,185,254,210, 62,157,236,249,214, 31,124,135,187, 69, 75, 49,170,200,166, 19,140, 74,153,235, 31,
-182, 13, 7, 25,124,235,227,251,100, 85,141, 81,146,163,245,138, 27, 59,151,144, 1,166,221, 49, 71,118,143,203, 82,161, 0, 17,
- 2,215,102, 99,108,132,166,245, 44, 59, 75,159, 37,182,194,127,153,149, 76, 17,252,164,146,228, 63,253, 83,252,224,115, 43,234,
-227, 67, 54, 31,126,143, 95,124, 99,151,229,106, 13,167,115, 94,223,209,236,230, 37, 86, 73,176,145,220, 36, 91,209,182,140,188,
- 33, 34, 97, 58,230,234,222,140, 81,153, 19, 4,236, 8, 69, 17,210, 65,108,164, 4, 63,119,220,240,251,173,227,151, 63,124,140,
- 95,156,227,110,222,132,151,247, 97, 84, 32,164,224, 88, 75,222,172, 43,222,190, 50,130, 43, 99, 62,125,103,206,131, 39,247,153,
-246,107, 94, 25,101,236,196, 64, 94, 84,220,113, 29, 31,206,159,242,127,124,175,225, 35,149,232,100, 58,147,196,160,216,180, 26,
-145,101,108,215, 57, 87, 94,185,206,102,123,130, 59,188,196,236,248, 35,246,215, 11,114,215,242, 56, 43,248,104, 25,153, 24,197,
- 90, 20, 68,165,200,138, 60,241,190,157, 37, 68,201, 44, 51,116,222,178,233, 28, 83,173,200,202,140, 3,219,225,188, 64, 27,201,
- 90,192, 72, 41, 64, 49, 95,109,208,178, 96, 37, 90, 78,176,236,100, 5, 51, 41, 89, 57,207, 29,109,240,209,113,179,204, 57,160,
-229, 82,208,140,149,230,172,111,121,173,204,112, 68,126,165,177, 60,104, 58,246, 11,197,217,186,101,108, 20,244, 61,213,100,196,
-230,124,158,166,120,157, 27,178, 28,210,174, 42, 14,152,103, 49,196,184, 70, 13,194, 5,162,145, 63, 84,164, 5, 36, 46,190,115,
-127,174,120,191, 88,192,127, 84, 65, 39,207,146,190,167,168, 17, 87,174,240,229,235,151, 41,178, 49, 31,135,192,227,205, 26, 17,
- 93,226,238, 3,152, 10, 17, 83,116,109,180,142,168, 3,149,146,136, 34,167,111, 28, 90, 70,150,237,146,245,106, 78,219,183, 76,
- 67, 67, 57,217,162,105,150, 88,219,130,144, 8, 2,210,123,116,240,212, 82, 80,111,230, 20, 58,103, 25, 28,151, 90,199, 90,103,
-180,202,160, 17, 44,108, 79, 37, 20,174,235, 25, 27,205,122,189,192, 75, 1, 93, 64, 11,201,252,252,156, 85,136,172,250,134,162,
-119, 72,239, 16,120,246,137,220, 44, 74, 10, 37, 81, 49,176, 4,156,118, 52,163,140,104, 35, 99, 97, 24,229,154, 45, 93,226,189,
-103, 42, 20, 54,146,220, 42,179, 75, 4,239,240,163, 29,172,235,144,229,104, 64,177, 26,148, 78, 77,204,246,100,139,229,102, 73,
- 94, 84,132,168,201,164,129, 76, 49,174,199,216,182,101, 50,174, 17, 46,164,120, 89, 36, 89, 38,177, 93,159, 8,155,218, 48, 95,
-156,178,244, 61,171,174,225, 9,145,123,155,150,247,205,208, 60,102, 25,248,228,192, 90,153,146,255,250,210, 22,255,237,193, 41,
-255,221,141,171,252,227,167,135,252,253,237, 41,247,108,207,141,114,196,255,122,112,192,191,119,233, 18,255,124,121,206,191,123,
-233, 26,191,127,248, 20,197,206,221, 95, 34, 31,216,225, 38, 27,196, 96,234, 57,149, 44,252, 21,198, 57, 90,167, 16,147, 11, 75,
- 26, 47,140,213, 61,207,169,112, 23,208,149, 11,113,221,179, 64, 4,159, 58, 94,235, 83, 39, 92, 21,100,163,154, 24, 35,151, 71,
- 37, 85, 8,200, 92,147,245, 14, 19,192, 32,152,219, 62,177,197, 67, 36, 58,139,119,201,228,227, 90,151, 14, 23, 82, 38, 21, 57,
-201, 74,214, 10,197, 37,173, 89, 74,168,133,102,233, 29, 19,173,105,188,163,139,146, 77, 8,233,116,244,103, 89,233,145,244, 4,
-247,107,200,202, 84,152,241,233,119,189,232,212,173, 79,187,180, 24, 6,205,192,160, 48, 15, 46, 61,135,179,173,244,221, 13, 7,
- 13, 72, 99,125,212, 48, 13, 48,195,140,203, 13,227,254,152,126,143,224, 94, 88,111, 12,138,124, 21, 89, 55, 29,135, 86,241, 82,
-161,120,106, 29, 82,169,148, 74, 23, 19,205,205, 13, 7,129,167,173,227,212,246, 44, 93,196,218,144,198,250,222, 15,215,240,163,
-191,238,189,247, 33,175,252,216,103, 40,234,146,172,168,184,125,247, 37, 66, 23,147,208, 79, 73,102,211,154, 66, 43, 2,130, 60,
- 87, 73,188, 31,160, 15,150,174, 77, 98, 63,231,211,148, 48,248,128,141,129, 73,101,104,123,143,144, 2, 45, 34, 82,165,209,123,
-231, 35,185, 86,212, 90,210,184,144,124,236, 33,210,249,192, 73,219, 19, 34, 84,185, 73,147, 1,163,120,184,105,185, 34, 97,247,
-251,167,156, 29,156,210,172, 55,188, 90, 21,252,120, 61,229,198,254, 22,179,237, 9,123,121,201, 40, 42,140,117,112,214, 34,231,
- 27,138,121, 71,239, 35,125,231,169,124,164,152, 84,132, 92,113, 26, 29,143, 36,204, 53, 24, 45, 17, 90,162,202,156, 40, 85, 90,
-209,132,180,139,198, 70, 2, 73, 39,128,124, 30, 81,160,132, 64, 41,133, 48, 73,193, 27,149, 74,196,191,253, 49,163,203, 99,230,
- 81, 97, 90,199,189,243, 6,191,182, 72, 37, 41,242,140,160, 12,148, 21,217,229, 93,102,151,198,232,155, 59,236,237,238,241,222,
-135,223,231,192, 40,158, 68,248,211,249,156,127,241,209, 39,252,223,191,252, 33,223,253,173,143,121,242,221,115,238,127,235, 41,
- 63,248,230, 1,143,191, 51,231,189,175, 61,225,221,211, 35,238, 77, 36,127, 18, 35, 47,111,111, 17,235,146,249,143,221,162, 51,
-134,217,155,183, 17,215,118,161,168, 57, 63,239,153, 20,138,151,115,195,142, 0, 35, 4, 65, 74, 44,176,223, 54,188, 28,160, 78,
- 87,136, 48,146,219,163, 41, 69,158, 92, 23,214,167, 52,177, 72,160, 19,145, 21, 2,103, 50,182,171,130, 40, 18, 71,193,104,197,
- 40,207, 48,133,230, 20,201,147, 40,249,194,213, 25,183, 38, 99,122, 10, 38,235, 6,113,186,100,125,180, 68,228,134,185,139,108,
-103,138, 91,165,225,202,164, 96,186, 91,161,119,118, 24,159, 58,110,133,134, 92,105,100,140, 16, 5, 83, 1, 69,220,240,253,195,
-167,248,205, 28, 86,235, 20, 61,217,123,106, 36,219, 66, 82,107,193,164,202,248,210,229, 9, 63, 87, 78,121,115,179, 65,207, 15,
-120,180, 90,240,125, 31, 49,194, 18,237, 6, 17, 3,189,117,196, 24,113, 94, 80,122,203,117, 26,110,216,158,171,194, 83,216, 13,
-125, 51,103, 79,151, 84, 50,114,110, 29,211,188, 2, 34,167,235,142,162,200,152,247,150,117, 8,188, 57,158,240,199, 77,207, 79,
-140,106, 76,150,113, 24, 2,159, 41, 11, 58, 27,184,149,101, 84, 69, 77,229,122,174, 22, 21,235,232,169,179,156, 83,103,217,209,
-154,153,146,132,216,177,105, 61, 75,235,120,228, 67,154, 84,246, 22, 86, 77,106, 30,130,123,158, 14, 23,211, 71,133,208,105,133,
- 39,244,112, 95, 94,136, 36, 7,221,132, 4,100, 8, 63,252,231,103,154,138, 23, 10,191, 76, 66, 89, 97, 52,236, 94, 38, 78,167,
-112,247, 54,188,242, 38,255,254,235, 95,228,165, 91, 55, 25,143,119, 57,245,112, 96,138,164,198, 71, 19,116, 70,140,142, 32,100,
- 42,122, 74, 16,186,150,118,179,132,213, 57,151,148,199, 45, 78, 56, 61, 63,224,119, 30, 61,162,136, 61,149,150,204,155, 21, 82,
- 43, 54,109, 75, 41,192,119, 27,100,215,176, 75,100,199,187,148,150, 40, 21,187,182, 39, 71,176, 45, 5,165,179,232,190, 65,199,
-200,194,183,172,251,134, 85,187,193,246,142,195,243, 51, 54, 77,199,217,249, 9,125,211,176,238,214,136,174,167,196, 81,186,158,
- 50, 4,222, 30, 21, 84, 74, 81, 75,137, 33, 50, 70,144, 9,207, 30,138, 59,153,228,229, 66,179, 47, 4,183,117,198,231,138, 17,
-149,183,188, 85, 76,168,198, 59, 92, 67, 83,142,182, 80, 49, 80, 84, 51,164,209,104,147, 51, 46, 70, 72,149,161,243,156,206, 91,
-242,170, 6,165,168,181, 65,228,134, 74, 25, 60, 80,215, 37,222, 38,237, 72,146,140, 37,139, 31, 64,223,245, 4,215,163,162,224,
-160,155, 51, 15, 61,143,154, 5, 31,250, 72,211, 54, 4, 33,137, 46, 37, 38, 34,224, 23, 70, 25, 95,223, 88,254,171,253, 75,252,
-195,199,143,249,111,174, 92,229, 55,207,230,188, 90,230,252,243,179, 57,255,206,238, 46,191,219,172,248, 74, 61,225,187,109,195,
-207,236,239,163, 24,223,249, 37,134,228,234,103, 40, 87, 31, 82,241,177,253, 95,173,176,135, 11, 5,248,144,141,174,228,179,177,
-119, 42,218,242,121,161, 18,164,221,180,148,207,147,217,132, 76,105,109, 98,144, 71,215, 37, 91,101,129,145,146,206,167,206, 38,
-119, 1,105, 36, 65, 8,106,239,232,108, 79, 31, 34,113, 16,233, 41,231, 9, 46, 32,227,160, 7,158, 47,210, 1,165, 11,168, 42,
-137,164,158,120,203,174,212, 52, 70,176,140,130, 22,207, 18, 48, 58,121,149,125, 55,168,216, 95,188,222, 11,218,221,197,186, 32,
- 12,192,157, 16,134, 34, 62, 4,212, 68,159, 58, 96, 51,232, 0,156, 75,133,120, 50,133, 73,145,242,162,155, 52,129, 64,103, 3,
-144, 39, 41,250, 25,186,236, 52, 22,143,195,212,162, 75, 7,132,100,190, 76,207, 87,140,207,179,157, 61,220, 91,119,188, 58,206,
-121,208, 58,218,144,246,236,243, 62, 32,124,100,222, 59,244,176,159, 62,105,147, 24, 48,177,224, 47,226,129,254,226,215,244,149,
-183, 94, 99,182,183, 77, 57, 74,251, 69,173, 76,242, 23, 11,157,212,168, 6,252,144,128,100,148,120, 54,146,111,173,195,217, 56,
-128, 51, 34, 46, 68,188, 79,162,188,186,214,140,139, 11,223,182, 24, 50, 34, 4, 82, 8,250, 24,217, 88,139,141,145,214,185,103,
- 33, 18,142,136, 25,124,169, 79,206, 27, 78, 91, 75, 89, 23,108, 13,177,186,181, 82,148,101, 78,221,123,132, 23,200,117, 79,214,
-121,124,215,226,251, 64,167, 33, 40, 73, 62, 42,168,148,196, 52, 14, 19, 4,186,179, 20,227,138, 32, 21, 15, 6, 64,210, 44, 55,
-216, 16, 17,117,145,196,107, 34, 9,245,144, 98,200,102, 18, 16, 99, 18,238,137,132,193,149,198, 36,196,170,148,200,152, 70,184,
-253,172,128,227,142,145, 48,132, 43, 35,212, 89, 75,253,141, 71,212, 55, 50,194,106, 73,189,238, 9, 27,216,222, 42,216,158, 21,
-148, 85,142,237, 29,110,171,224,165,215,111, 48, 63, 92,179,152,207, 57, 56, 60,226,254, 59,103,184, 24,113,235,126,176, 26, 41,
- 2,142, 56, 60, 56,237,176, 77,203,222,103,239,210,188,121,155,241,237,109,102, 90,240, 55,103, 35, 94,149,138,167,125, 75, 62,
-169,216,185, 49, 99,186, 63, 33,107, 60,223,118,142,243,174,167,115,158,105, 81,240,165,124,130,107, 23, 24, 37, 8, 58,226, 46,
- 95, 35,247, 45, 74,192,218,182, 60, 42, 10,158,110,206,233, 92,199,166, 89, 51,239, 90,142,188,227,220, 11, 58, 36,167,173,165,
-223,244, 84, 85,198,121,107, 57,207, 52,215,246, 42,182,170,140,105,109, 88, 96, 56, 12,146, 71,239,127, 3,115,126, 68,190, 17,
-184,147,134,251, 66,113,117,148,115,187,204,120,121, 39, 71,100,138, 75, 59, 53, 91, 78,145,183, 93,250, 40,146, 2, 47,224, 84,
-106,102, 89,205,229,190,165,223, 28, 51,251,228, 29, 86,135,247, 40,124,129,237, 28, 58,128, 80,146,215, 13,236,201,136, 89, 55,
- 28, 62,125,200,159,156, 46,248,160,235, 41,130, 77,136, 99,107,105, 90,203,198, 10,246, 84,207,181,216,243,102,132,219, 72,118,
-109, 2, 47, 85, 82, 37,102,119, 8, 72, 21, 57, 93,174,153, 55, 61,107,111, 17, 94,178, 83, 87,188, 61, 29, 35,165,226,199,202,
-146, 81,149, 49, 69, 32,155, 13,143,150, 75,214,222, 49,210,154, 49,142,135,206,210, 44, 78, 41,148, 97,175, 40,184, 92,213, 68,
- 33,120,119,189,230,188,233, 56,179, 61, 31,110,154,180,186,115, 46,233,138,194, 48,241,107,125,170,222,147,113,250,174, 50,132,
- 73, 66, 64, 97,116, 18, 87, 14, 17,199, 23,133, 91, 13, 69, 93, 93, 24,145, 46,254, 14, 80, 90, 35,140, 70, 78,119, 16,251,123,
-136, 59,183,224,245, 55,225,218, 13,184,250, 18,236,221,228,238,238,117, 62,191,191,197,116, 84, 80, 22,134,211,206,242,201,226,
- 20,188, 37, 70, 71,236,122,194,102, 77, 88,159, 17,150, 11,226,227,199,132,213, 25,241,195,143, 56,222, 44,248,238, 71, 31,113,
-255,244,128,239,190,127, 15,119, 58,231,112,221,112,180, 88,147, 27,120,112,124, 76, 17,122, 14,142, 78,152,224,216, 18,145,157,
-102, 67, 38, 21,133,128,202,246, 76,165, 70, 18, 40, 92, 64,185,158, 16, 28, 85,179,102,215, 89,122,103, 25,183, 13,133,235,152,
-250,150,151,155, 21,175, 7,207,155, 50,240,122,215,242,213, 76, 51,113, 45, 55,137,236,234, 68,104,219, 86,154, 26,216,213, 5,
-149,115,236,133,200,109,173,184,161, 4,175,168,130,151, 76,206,181,124, 76, 25, 5, 87,202, 45, 84, 86,176, 43, 11,172,150,236,
- 25, 3, 85,157,146, 25,235, 26, 83, 22, 88, 4, 58, 87, 24,173,145,131,102,204, 72,129,212, 89,170, 33, 33, 82, 21, 9,243, 26,
- 69,250,188,216,180, 61, 82, 43,122,107,217, 52, 45, 17, 79,192,209,249,150,165,237, 88,118,107, 14,188,231, 7,203, 22,111, 45,
- 65,184, 36,202, 13, 22,132, 66, 70,248,185,209,152,223, 89,110,248, 47,118,183,249,223, 79,231,252,244,180,228,107,231, 27,254,
-222,222, 46,191,124, 50,231,239,110,111,241,141,126,195, 79,143,198,252, 95,243, 51, 20,147,151,127, 9, 61, 40,217, 7, 16, 26,
-153, 74,163,104,147,253,165,138,202, 63, 87,216,229,160,198, 20, 50,117,118, 46,166,150, 77,136,231,106,241,190, 29,238,198,193,
- 43,205,176, 87, 87, 67,216,184, 76, 79,230,222, 40, 25,234,199, 82,160,140,164, 9,145, 82, 73,198, 42,112,210, 36,144,128,247,
- 17, 33, 35,177, 11,207,206, 35,193, 37,186,220,179, 29,126,232,152,152,140, 69, 27,217, 26,167,200,187,131,181, 99,100, 20,157,
-144,228,153, 34, 72,129, 68,146, 27, 69,215,118, 63,250,122, 47,196,125, 74,167,195,142,144,207,135, 88,201, 83, 4,114, 56,180,
-244,118, 64,222, 14,172,119,100, 2,225,244,205,160,210,203, 6, 40,204,144, 51,159,107, 38, 10, 58,149, 14, 63, 25, 17, 47, 84,
-218,129,203,240,156, 0,199,112,224,146, 98,144,175, 40,158, 6,199, 37, 35,217, 81,146, 67,235,217,143,176, 12, 48, 65, 96,173,
-103, 17,161,233, 2, 34, 4, 98,102,210,193,227,226,223,252, 11,190,158, 84, 21,159,189,243, 18, 16, 89,175, 54,116,155, 6,231,
- 60,101, 93,179,119,105,130, 12,130, 44, 55,212, 70,167, 4,164, 16,201,134, 32, 16, 31, 99,234,134, 92, 68, 32,153,212, 6,103,
- 61,253,224,248,203,179,164, 24,143, 34, 21, 65, 49,176,124,146, 35, 39,117,233,193, 71, 58,235,233,250,192,249,198,114,180,234,
-152,175,187, 52,234, 30,229,124,239,225, 49, 79,219,142, 85,140,108,156,227,241,102,195,185, 0, 21, 60,217,118, 69,147, 27,178,
-189,154,234,198, 14,242,165,109,182, 62,115,153,226,198, 14, 98,167,166,120,105,139, 77,149,161,131,164, 28, 21, 60, 94,183,148,
- 70,112,100, 29,171, 16, 17,101, 78, 81,164,113,100, 16, 67,204,164, 2,171,161,147, 18,127, 1,202, 41,116,202, 8,207,146,134,
- 68, 9,129, 46, 53,147, 50,103, 60,183,244,203, 13, 92,174,104,103, 21,197,237,109,202, 73,137,253,100,201,225,161, 32, 8, 69,
-115,214, 48,177, 29,217, 52,167,239, 28, 75, 23, 40,182, 42,110,189,113,157,197,227, 57,255,234,183,222,199,125,216,224,214, 61,
-110, 40,229, 23,126,226,100,100, 75,247,159, 56,111,152,127,237, 62,229,205,138,171,119,175,242,153,222, 51,126,247, 4,117,222,
-178,127,222, 49, 89,109,184,150,193,205,121,203,229, 16,248,172, 48,188, 90,140,184, 51,154,242,242,213, 61,202,233,132,221, 98,
-151,157, 87, 95,226,234,181,107, 92, 63, 92,146,119,150, 32, 10, 94,255,249, 47, 51, 89, 69,190,181,110,249,188,202,200,219,150,
-223, 62, 59,229,228,248,152,135, 15, 62,225,254, 71,223,231,193,135,127,202,175,127,227,187, 92,159,237,144, 21, 25, 81, 39,192,
- 74, 84,138,168, 52, 42, 74,158,116,129,167,197,152,240,107,255, 27,246,221,111, 34,154, 99,100, 95, 33,246,118,248,183,174, 20,
- 92,159, 22,236, 26,144, 54,208,244,144, 91,139,142, 17,235, 28,157, 86, 72, 36, 91, 50,114,107, 50,226,243,245,132,219, 85,205,
-151,138,140, 75,199,159,194,226, 9,247,142, 78, 57,235, 34, 51,235,224,120,206,251,143,239,241,235,159, 60,228,119,143,214,248,
- 62,176,136,130,220, 91, 38, 50,162, 20, 92,201, 97, 11,197, 77, 34,159, 81, 25,123, 66, 82,233,156, 66,104, 38,166, 2, 33, 9,
-121,198,178,143,172, 17, 92,157,141,184, 52, 25,179,157,101,236,150, 5, 74, 40,174,103, 25,123,185,193, 7,207,121,179,228,201,
-124, 78, 29, 61, 27,223,211,245, 61,206,121,206,219, 53,125, 12,196, 24,152, 72, 65, 93,105, 74, 60,149,239, 8,182,227,157,174,
- 29,236,178,253,224,178, 25,194,171,242, 28,246,182,224,202, 46, 76, 70, 48,173, 17, 85, 9, 89,134, 48, 5, 66,167,213,131, 80,
- 73,247,241,172,144, 59,135, 26, 18,177,245, 80,208,117, 85,160,198, 91,200,235, 87,145,175,220, 69,220,190,131,184,126, 23, 49,
-189,130, 24,109, 67, 61, 67,100, 5, 72,137, 81,138, 27, 82, 83,106, 65,179, 90,243,240,232,132, 7,167, 79,137, 39,135,196,131,
- 35,226,209, 9, 60, 57, 32, 30,158, 19,159, 30, 19,207, 78,137,199, 39,196,213, 2, 78, 78,136,231,115,154,163,179,212,104,185,
- 14,214, 61,221,124,197,227,249,134,211,206,114,127,177, 97,164, 2,211, 16, 40,154,142, 81,174, 49, 49, 48,138, 1, 33,135, 84,
-200, 0, 27,215, 99,164,161,114, 29,193, 59, 74,101, 24,117, 13,133, 84,212, 62,240,182, 50,188,102,114,110,168,156, 61, 41,184,
- 82,148,236, 11,195, 29,165,185, 45, 52,175,161,216, 87,154,207,232,130,155, 89,205,110,136,220,150, 57,147, 16,184,161,115,182,
-132, 34, 71, 50,173,102, 24, 4,117, 62, 3, 34,121, 94, 33, 76,198,184,168, 64,107, 76, 89, 16,164,162, 71, 32,181, 68,152,180,
- 34,246, 8,138,204, 96,148, 65, 9,153,112,194, 68,230,182,167,245,158, 24,211, 52,108,221,117,104,173, 89,174, 86,244,193,179,
-106,215,232,224, 88,180,107, 62,217,204, 33, 90, 54,209,243,209,217, 25,143,172, 39,244,158, 16,210,106, 37, 70, 73, 84,154, 27,
-198,144,101,154,183,138,140,239,181, 45, 63, 89,231,252,105,215,241,246,164,230,183,206,151,252,194,206, 22,255,231,209, 25, 63,
-191,189,197,175,157, 44,248,197, 27,151,135,162, 78,120,238,109,144,131,141, 44, 27, 10,186, 16, 9, 90,242, 87, 17, 85, 6,159,
-246,204,113, 40, 28, 23,124,120, 6, 49, 71,176, 63, 44,144,123, 81,129,221,167,195,132,168,198,212,211,138,141,115,236,141, 42,
-188, 79,128,130,105,150,130, 68,142,150,107,114, 96,221, 56, 92,151,196, 86,105,172, 45,137, 93,155,130, 96,252, 0, 89, 89,183,
- 32, 3, 93, 7,251,147,156, 32, 5,199, 93,228,165, 73, 70, 47, 83,146, 88,144,130,177, 16,108,124,100,221,165, 40,209, 31, 25,
- 87,122, 49,141,232,125,154, 60,200,144,174, 71, 12, 45,126,116,233,201,179,131,143,223,133,231, 93,126,240, 73,137,127,209,113,
-203,129, 31,175, 21,228,154,237, 12, 22, 46,178,149, 9,234, 76,178,236, 6,225, 92, 74, 32, 72, 1, 57,241,197, 3,196,176,202,
- 80, 17,239, 60,109, 4, 17, 36, 70, 68, 14, 99, 68,133,192,177,183,228, 90,114,218,245,180, 33, 32,163, 32, 51, 17,223,251,212,
-173,255,168,107,188, 96, 4, 61,120,204, 91, 95,248, 28,163,233, 24,188, 71,162,121,114,248,104,208, 58,100,108,207,106,182, 70,
-121, 26, 30, 12,231, 18,165, 5,189,141,207, 94,234,222, 5,214,182, 99,213, 88,164, 6,219, 6,156,135, 34,229,148, 38,170,152,
- 72,236,240,214,122, 70, 42, 57,169,227,112,141,109,111, 17,192,122,227,112, 3,113,204,122,207,238, 86,197,162,241,204,231, 75,
- 30,247, 61,243, 81, 73,190, 55,193,111, 23, 92,185,182,141, 40, 13,187, 47, 95,162,188,190, 13, 59, 37,155,182,231,147,147, 57,
-199, 71,115, 30,156, 47,121,178, 89,115, 30, 2,203, 0,123,179, 10,165,224, 97,223,113,214,122, 62, 58,183,156,116,112,115,167,
- 76,113,178, 98, 48, 52, 8,153,222,220, 82,208,137, 20, 3, 28, 11,147,166, 44,133, 70,101, 6,145, 25,188,148,100, 59, 5, 38,
- 87,104,231, 40, 15, 86,152,101,159, 14, 0,153, 34,191, 54,161, 13,208,156,247,216,190,225,254,123, 31,114,115,225,169,175,111,
- 35, 8,220, 91,121, 86, 86,113,235,141, 91,180,249,152, 7,239,253,224, 89,151,158, 30,138, 4,122, 77, 15, 8, 8, 52,130, 53,
-199, 95,251,148,211,218,241,234, 43, 55, 48,227,196, 65, 8,181, 98,147, 43,186,220,160, 34,140, 60, 84, 66,160,103, 53, 98,127,
- 66, 48, 25,178,208,112,109, 10, 70,164,108,237,195, 5, 90,101, 68,149,163,119,119,248,212, 20, 60,169, 39,252,157,207,191,204,
-246, 75, 47,243, 73, 52,220, 47,115,186,173, 45,150,213, 22,171,106,196,141, 75, 99,222, 63,123,202,175,127,247, 29,126,245,227,
-202,128, 32,160, 0, 0, 32, 0, 73, 68, 65, 84, 7,124,245,165, 59, 84, 69,198,163,222,243,237,133,227,221,206,211,245, 14,166,
- 21,188,243, 77,196,227, 71, 8,191,225,120,114,139,217,108,196,213, 12,214,125,224,253,121,207,102,213, 50, 81,130,176,106, 88,
-180,107,122,157,225, 98,164,170, 43,114,173,153, 25,195,165,178,102, 87, 41, 94, 26,111, 33,122, 75,190, 62,166, 57,123,196,239,
- 61,120,196, 31, 60,121,200,111,124,250,136,251, 77, 64,138, 36,128,148, 67, 66,217, 76, 5,110, 41,201, 37, 4, 87,116,198,171,
- 89,197, 94, 62,162, 30,111,145,229, 5, 85, 94, 33,141,102, 82,214,156, 5,207, 90, 75, 38, 69,141,204, 52, 99, 83,160, 77, 10,
- 28,217,205,147,207,124,229, 60, 62, 4, 86, 49,249,237,181,210, 16,225, 90,150, 83,232,140, 76, 8, 58,151,160, 39, 99, 41,216,
- 82,234,255,229,236,205, 98, 52, 77,207,243,188,235, 93,190,237, 95,107,239,174,238,233,233,238, 89,201,225,112, 68,138,164, 40,
- 75, 98,168,213,202,130,196, 65,156, 88,200,102, 69,112, 16, 64, 8, 16,228, 44, 1,124, 66,192,201,137,207, 28, 32, 1,146,200,
-128, 3, 40,113, 2, 91, 32, 98, 71,118, 44, 75,150, 21,209,220, 68,114, 72,206, 62,189, 76,239,181, 87,253,219,183,190, 91, 14,
-222,175,186,123,134,155,236, 2,126, 84,117,119,161,250,223,234,123,222,231,121,238,251,186,217, 81, 10,213,180, 12,132,229,237,
-186,141,109,141, 76, 98, 78,195,112, 13,198, 83,216, 88,139, 81,174,147,205,232, 4, 26, 78,249, 11,107, 57, 47,108,140, 25, 76,
- 51,142,165, 64,166, 89,188,169, 4, 53, 29,163, 54,182, 25,188,252, 60,159,120,249,101, 94,125,245,167,152, 95,189, 76,184,254,
- 34,234,202, 85,244,245,231, 81, 59, 87, 80,147, 29,228,120, 3,161, 52, 34, 73, 16, 82, 61,177,231, 54, 53,101, 83,243,156,175,
-169,231,199, 28, 31,239,241, 79,223,122, 19,110,125, 0,123,199, 80,206, 96, 81, 18,108, 67,112, 29,161,173,163, 96,237,169, 6,
- 40, 60, 93, 7, 92,191,146,116, 29,194,116, 96, 90,124, 80, 44, 2,188, 58,204,184,156,167,100,125,150, 70,166, 83, 50,169,112,
-222,146,244,209,210,214,199,119,122,174, 51,164,109,201,210,140,145, 74,184,144,102, 76,133,100, 59,201, 24, 34,152,232,148,137,
-212,228, 74, 49,206,198,228, 18,182,134, 27,108,138,148, 66, 37, 12, 68,194, 16, 65,138,100,154,230, 72, 23, 24,164, 5, 69, 82,
-144,168,148, 44,159,162,116,130,146,241, 57,209,249, 16,153, 42, 66,154,129,140,155,215,144, 36, 24,169, 8, 64,235,124, 44,226,
-198, 68,144, 40, 2,235, 61,199,229, 10,227, 5,149, 49,164, 50,238,207,165, 15,212,101, 69,227, 45,117,221, 34,130,231,184, 62,
-101, 97, 13,173,173,217,107, 74, 58,215, 49,146,146,155,203,146,198, 58,188,148,132,198, 16,180,130,208,114,162, 19,158,215, 9,
- 7,174,229, 83,217,136,111, 85, 13,175,165, 25,239, 52, 13,159,155, 12,249,191,143,206,248, 43, 23,182,248,221,131, 99,254,234,
-238, 54,191,123,103, 15,197,228,218,151, 30,239,181,207,241,175,169,234, 45, 20, 42,182, 87,169,254,137, 35,219, 15, 41, 54,206,
-119,235,198,199, 23, 86,208,123,175,195, 19,127,251, 99, 59, 91,255,103, 5, 66,231, 80, 20,108,108,174,177, 83,196, 12,221, 52,
- 31,176, 62, 24, 49, 25,229, 56,161, 9, 4, 58,227,233,172,137,204,119,223,171,200,203,182,247, 95,244,227,240,178,142,130,181,
-206,130,212,148, 4,106,175,185, 58,148,212, 8,106, 4,195,158, 77,126,210, 5, 20,208, 56, 27,173,112,222,253, 24,240, 78,191,
- 74,120,140,120,237,119, 94,162,159, 60, 72, 17,213,239,189,248,235,241, 27,252,233,142,191, 63,241, 33, 99, 10, 93, 93, 59,158,
- 29, 74, 22,109, 96,213,122, 66,214, 7,192,208,131,105, 68, 63, 50, 87,231, 85, 38, 60, 41,242, 33,208,121,143,149,208,244,193,
- 25,181,131,137,214,204,218, 14,153, 42,180, 11, 92, 72, 36, 75,239,113, 56, 48,242, 7,215, 12, 31,149, 73,108,174,241,210,199,
- 95, 68, 41, 77, 49, 40, 80, 34, 33,205,115,108,227,144, 73,202,250, 90,193, 36, 79,250,194, 30, 98, 10, 27,158,166,117, 88,225,
-105, 26, 67,211, 57,108, 99, 35, 87, 31,143,237, 28,203, 30,100,146, 75,193, 86, 30,139,143,146,145, 41, 46,132, 96, 51,141, 8,
-200, 32, 4, 77,107,209, 90,145, 17, 69, 88,153, 80,172, 15, 50,172, 11,236,205, 74, 18,165, 9,233,144, 98,107,202,231,174, 95,
-228,217, 11,235,220,153, 87,188, 89,214,140, 70,209,235, 51,239, 12, 75, 99, 48, 62, 80, 19, 56,177,129, 54, 85,124, 80,182,220,
- 42, 43, 92, 34,216, 26, 23, 84,222, 83,249,192,229,245, 1,163, 60,146,175,188,232, 81,172, 33, 62, 93,149,241,156,185,192, 92,
- 72,150, 82,210,106, 77,208, 10,159,164,184, 68, 81, 37,146, 71,139, 26,115,255,132, 97,145, 66,221, 33,239, 45, 73, 79, 13, 90,
- 56, 76,170, 73,183, 11,144,158,211,155, 7,172,150, 71,220,124,116,151,231,221,136,201,230, 4,175, 60,195,105, 78,174, 20,207,
-188,112,145,171,159,125, 14,207, 17, 15,222,217,195,145,227, 46,104,124,161,120,249,175,253, 69,126,227, 55,126,142,223,250,207,
-126,137, 63,186,188,206,103,127,237,243, 60,248,211,155,156,125,235,251,252,225,226,148, 7,211,109,190,126,188, 0,223,241,135,
-183, 30,241,198,195, 99,190,242,214, 13,222,153,207, 56,116, 49, 64, 35,117, 34, 34, 59,235,142,174,170,152, 61, 56,230,225,141,
- 91,220, 63,188,203,172, 90, 48,115, 29,135,141,164, 29, 13,241,121,194,160,241, 36,235, 5,183, 27,207, 89,219, 69,142,148, 10,
-180,217,132, 79,125,236, 5, 54,167, 59,188,111, 2,255,117, 6,227,195, 35,190, 38, 70,220, 91, 5, 94,239, 28,167,214, 16,234,
- 25,225,224, 30,226,213,207,194,231,126,137,191,246,197,207,243,189,189, 25,223, 45,225, 52,207,113,149,229,230, 73,203,124,213,
-178,142, 97, 77, 39,176, 40,185,107, 91, 6,217,128, 86,194, 40, 77,153,166, 26, 41, 96,152, 15,113, 82,145,228, 3,200,199, 12,
-164, 96, 61,180, 28,183, 21,207,109, 79,120,105,119,157,207, 62,187,195,206,214, 58,175, 76, 7,204,140,101, 77, 9,174,167, 25,
- 47, 36, 57,207, 38, 5, 23,139, 33,195,225, 4,157,230,120, 47, 16, 66,160,243, 28,129,128,222,150, 54, 24,164, 92, 28, 79, 25,
-228,154,113,150, 50, 74, 53, 3, 45,153, 68, 21, 40, 37,240,168,118, 40,165, 49, 42, 33, 79,115, 6, 89,138, 78, 52,235,195,132,
- 4,197,133, 60,229,229, 52,101, 67, 10, 84,103,168,131,197,250, 64,237, 3, 39, 58,139,157,121, 49,238, 25, 29, 27,144, 15, 96,
-184, 14,131, 53, 80, 5,159, 31,141,121, 46, 79,153,166, 5,163, 44,225,134, 84,145,121,144, 36,168, 65,138,202, 51,210,205,117,
-254,141, 11, 23,248,249,231, 94,230,194,133, 93,174, 76, 47,115, 43,159,146, 76,182,208, 58, 67, 43,133, 84, 10,233, 37, 82, 4,
- 68, 83, 34,140,129,217, 30,156, 60, 64, 28,220,133,131, 7,188,243,254,123,188,113,235, 22,239,222,190, 11,135,143, 96,177,136,
-141,137,233, 89, 36, 61, 49,244,252, 26, 25,254, 28,189,158,240, 62,174,173,178,140,124,115,194,120,156, 83, 46, 99,147,179, 61,
- 28, 18,100, 92,153,106,161, 48,222, 19,165,110,113,216, 11, 1,167, 18, 50, 33, 41, 84,194, 24,197, 84,105, 82,149,144, 11, 73,
- 34, 69,204,136, 72, 11,180,135, 60, 31,160,101,130, 78, 50,178,116,138, 82,146,172,216, 70, 39, 89, 4, 67,233,140, 68,231,232,
- 36, 69, 39, 3,116, 62, 0,227, 80,121, 14, 89,134,212,154,144, 36, 40, 33,240, 34,174,126, 91, 4,171,224, 34,237,219, 71,158,
- 99, 23, 34,153,239,164, 92,209, 4,208, 40, 78,218, 37, 45,209,198,108,186,142, 16,160,108, 42,172,181,212,166,229,164,158,145,
- 72,205,202, 86, 28,155, 18, 37, 28,169,212,156,153,134,111,159,214,184,198,197,130,158,165, 96, 12, 97, 48,192,181, 49, 18,252,
- 51,131, 17,127,127, 85,241,159,110,173,243, 59,167,167,252, 59,147, 53,190,124,114,198,191,191,190,198,223, 59,216,231,183,175,
- 94,225,111,223,127,200,111, 63,127, 13,193,245, 95, 13,116, 13,232,252,113,199, 27,187,192, 52, 22,119,149,246, 34, 48, 34, 33,
-237,233, 24,207, 31, 39,156,179,150, 39,218,250, 62, 4, 70,165,113, 44,253,244, 1, 32,190, 83,162,162,114,178, 1, 91,107,252,
-236,218, 56,146,178,242,130,245,241, 6,153, 20, 81, 10,154, 72,230,203, 51,142, 23, 53,111,220,189, 19, 1,250,174, 15,135,233,
-120,146,140, 38,125,196,196,218,250,137, 74, 61,201,216,152,228, 52,109,111, 21,200, 5,117, 31, 46,103,122,129, 86,181,172,227,
-232,190,106,126,252,227, 27,228,209,190,199,135,207, 37,143,191, 62,247,129,123, 27,159, 7,251,145,174, 56, 27,197, 16, 28,157,
-146, 41,137, 77, 19, 92, 99,144,153,194, 11, 17,119,223,222,163, 18, 21,179,225, 77, 27,253, 51,210, 63, 9,199, 57,159, 80, 60,
- 29,178, 35, 50,178, 73, 70, 46, 20, 99,160, 72, 4, 11, 19,208,192, 18,207, 98,213, 33,117,136,194, 55,249,147, 31,231,127,245,
- 55,254, 58, 91,187,235,172,230, 21,213,210, 96,203, 22, 65,194,213,107,187, 92,187,184,206,206, 70, 30,173,248, 46,208, 57, 71,
-217, 57,102,179,134,206, 89, 14, 14,151, 52, 62, 16,188,167,173, 76, 68, 67,138,128,206, 36,215,118,198,108,140,115, 46,141, 19,
-106,235, 9, 61, 89,202, 7, 72,130,167,181, 14, 27, 60,243,170,195, 4,200,165, 96,185,108,162, 74,117, 99,128,107, 13,124,103,
-143,159,255,133,143,115, 79,122, 30,182,142,129, 55,152,163, 5, 15,171,150,195,174, 35, 47, 82, 62,249,252, 22,137,140, 32,140,
-101,101,185,119,188,194, 54, 6, 43,161,154, 55,164,153, 34, 75, 83,190,240, 83,207, 32,147, 24, 42, 50,202, 82,210, 52, 33, 32,
- 72,100,244,133,203,214,226,107,195, 73,217,177,183, 50,172,156,199, 17,131, 94, 38, 90,177,145,197, 0, 27, 41, 4,239,175,106,
-230,239,157,145,221,127,196,171,121,202, 39, 46,172, 83, 92, 25,146,140, 51,194,131, 37, 85,145, 97,159, 29, 51,219,159,179,247,
-250, 45,234,197,156, 66, 74, 62,243,234, 39,209,215, 54, 73, 47, 76, 57,182,142, 71,166,227,254, 89, 75, 82,151,236, 90,195,239,
-126,253, 3, 94,122,113,135,195, 58,230,149,255,235, 87, 39, 12,115, 77, 3,252, 63, 55,207,120,176,106, 9, 85, 69,168, 43,218,
-179, 35,194,235,239,240,220,231, 94, 98,224, 44, 95,251, 95,190, 79, 69,135, 66, 60,161,196, 95, 29,242,243,159,221, 33,155,142,
- 96,186,206,188,172,217,120,230, 25,190,246,213,175,114,252,250,119,162,237,121, 48,226,139,175,188,198,197,151, 63,206,120,109,
-139,170,156,113,227,224, 17,167,203, 51,106,229,185,127, 88, 51,188,184,205,231, 95,249, 36,172,111, 51, 48, 53,191,109,106,178,
-214,241,245,197,156,255,166,216, 37, 76,135,228,120, 6, 18,190,119,120,138, 56, 61,224,123,127,245, 87,216,185,182,193,223,250,
-211, 59,252, 79,239, 30,146,140,134,108,100, 9, 63, 55, 25, 32, 23, 21,175, 77, 37, 63,163, 19,210, 89,201,236,224,144,253, 44,
-165, 73, 19,158, 25,228, 4,231, 16, 66, 98,165,160,171, 26,230,120,222,173, 91, 14,202, 21,123,173,225,164,109, 89, 27, 12,249,
-194,230, 26, 71,213,130,177, 82, 72,107, 57, 62, 59,162,109, 74,174, 16,248,124, 62, 38, 79,114, 10,157, 50,154,110,129, 76,177,
-193, 83,219,134, 90, 72,218, 52,225, 56, 4,190,221, 85,140,135, 3,108,154,179, 51, 46,240, 62, 48, 12,113,197, 52,206, 18,142,
-202,150,183,155,134,195,210,176, 32,112,214,182,164,210,179, 22, 36,185, 2,235, 61,163, 4,158,243,158,103, 85,202, 56, 85,204,
-234,138,239,174, 74,246,186,138, 47,175, 42, 58,231, 8, 73, 66, 72,114,130, 46,122, 32,151, 36,168,148,207,227,121,105, 90,240,
-188,150,156, 86, 37,243,106,201,172, 58,101,191,238,248,238,170, 66,121,251,120,212,254,249,201, 58,159, 26,141,120,254,210,117,
-198,131, 2,147,104,222, 61, 61,227,110,217,114,218, 25, 22, 77,205,161,115,184,230, 12,187, 60,195,204, 43,236,209, 25,246,240,
- 33,118,178,137,179,101,236,137, 58, 27,107,182,181, 31, 86,200,255, 57,125,239, 63,170,207, 3, 16,151, 47,178,117,237, 18,215,
-243,156, 11,243, 5,207,121, 79,158,167,172,165, 25,235, 58, 97,172, 19, 84,112,196,129,159,196, 57,131, 82, 17, 39,158, 73,205,
- 80,104,118,101,194, 68, 39,100, 34, 68,236,180,233, 72,148, 6,227,208,249, 0,165,242, 8,109,209, 26,130, 66,166, 89,252,218,
-152,199, 90, 29,172, 69,140,167,224,226, 66, 75,168, 72, 33, 68, 39, 88, 66,236,192,149,192, 33, 56, 1, 78,148,231,216, 65,173,
- 35, 29,175,108, 12, 3, 33,104,172, 35,193, 19,172,163,234, 90, 12, 14,108, 84,229,111, 10,193,220, 52, 76,116, 70,103, 91, 62,
- 88,158,176,165,115, 90,223, 48,146,158,214, 91, 2,129,131,106,201,239, 31,158,113,235,160,198,121,135,207, 51, 66,112,132,233,
-152,224, 28,122, 99,141,207, 78,214,112, 66,241, 31, 93,121,142,255,126,111,143,191,190,187,203,223, 61, 57,226, 63,220,220,230,
- 43,139, 5,127,121,235, 34,255,231,193, 62,255,197,149,203,252,239, 15, 30,245,101, 87,141, 98, 65, 20, 61, 14, 53,205, 97, 52,
-130, 76,245,216,215, 65, 31, 88,210, 23, 21,107,127,252, 43,124,254,239,143,191,173,151,108, 42, 27,139,179,232,231,182,231, 5,
-253,156,239, 62,204,120, 81,199,116,168,221,193, 24,161,115,214, 7, 99, 74,211,161,146,140, 86,104,182, 39, 41,139,230, 17,151,
-119,119,120,120,231, 94,124, 51,153, 94,124,103, 1,209,244,224, 23,243,228,190, 8, 29,207, 4, 1,230,214, 19,180, 36,145,146,
- 85,229, 24,165, 26,219, 89, 42, 47,158, 0,115,126,210,129, 5, 98, 55, 46, 68, 60, 21,132,167,222,185, 45, 17,135,123,190, 82,
- 80,242,169,231,225,220,218,214, 64, 40, 64,200, 72, 92,243,113,204, 51, 32,198,204,154, 92, 65, 3,173,177, 40,149,226,154,158,
-200,236,207, 45,105, 93,188, 31, 90,127,100,138, 96, 80, 78,147,104,193,161,243,172, 7,201, 64,192,178,127, 9,178, 92,210,214,
-238,201,110,254,252,240,245, 35, 62,222,248,254,247,249,165,139, 95, 96,178, 54,192,217,146,249,209, 49,222,194,157,219, 2,235,
- 2,163, 98,135, 52, 81, 72, 9, 34, 8,242, 62,196, 36, 24, 71, 62,201,209, 61, 53, 47,209,178,247,211,199,149,201,225, 89,141,
-181, 17,212,179, 51,201, 88,116, 14,173,100,188, 96, 43,193, 64,107,132, 15, 36, 18, 58,235,232, 44,140, 70, 25, 4,207,122,150,
-224,179,156,147,181,146,255,235,107,239,242,173, 7, 55, 49, 4,142,218,154,129,214,108, 14, 71,228, 50, 67,231, 41,139,163, 37,
-195,201, 24, 33, 37,131, 81,130, 22,146, 70, 72, 78, 15, 78,104, 22,139,232, 58, 84, 18,153, 42,190,240,201, 43,209, 77,145, 9,
-164,148, 88, 31,122, 65, 28, 88, 37,105, 83, 73, 85, 75,200, 21,174,141,235, 5,235, 5,173,115, 44,141,162, 72, 97,146, 43,252,
-250, 6,249,238, 26, 73,119,133, 27,123, 43,110,188,113,200,231, 15, 13,215,118,167, 20,187,129,201,237, 57, 62,129,209, 48, 99,
-247,167, 95,196, 55, 29, 77, 8,148,193, 50,108, 91,244,131, 19,100,158, 98, 69, 28, 63, 94,200, 53,137,151,252,230, 23, 95,228,
-209,202, 32, 71,146, 89,166, 88,174,103, 12,148, 98,101, 45,131, 75, 19, 46, 47, 90,174,135,130, 45,189,141,224, 10, 27,191,246,
- 51,188, 51, 43,105,170,138,255,224,111,190,200,124, 85,178, 44, 27,156,235, 96, 80,112,244, 15,255, 5,237,149, 43, 28,252,179,
-215, 17, 87, 78, 16,163,130,157,151,174,115,248,250,119,158,160, 66,171, 21,255,228, 91, 95,197,125,235,171,216,203, 87,113,179,
- 85,164,130,209,224,187, 94,211,245,240, 1, 55,206,142,248,212,171, 63,207,229,221, 11,180,235,107, 12,165,224, 89,224,139,123,
-111,115,147,231,201, 70, 35,180, 13,184,151,174, 33,222,168,249,239,254,217,187,252,229, 87,118,249, 59,239, 30, 96,219, 14,225,
- 44, 51,165,249,167, 39, 51, 46,102, 57,133, 83,124,236, 74,206, 51,151,214,185,168, 53,223,126,247, 77,182, 54,118,152,121,207,
-133,209,128, 82,198, 14, 89, 21, 25,157,181,116,198,210,228, 19,156,168, 89, 75, 11,174,140, 52,167, 50,112, 97, 48, 65, 3,243,
-176, 98,115,125,155,180, 42,184,140,194,119, 53,169,119,100,162,183,216,246, 57,243,193, 25, 72, 83, 66,103, 56, 9, 29,161,103,
-115,111, 56,143,233, 44,178, 79, 62, 20, 46,176,240, 29, 77,127,206,214,120, 78, 59, 71,112,150,210, 56,146, 52,163,114, 14, 17,
- 20, 99, 60,155,195, 33,211, 44,163,109, 13,149,202, 64,181,188, 97, 60,198,247, 90,156,115, 55, 80,240,100, 56,214, 70, 3,118,
- 16,124, 58,207,216, 21,146,113,162, 72,139, 33,165,183, 20, 98,131,183,155, 99,132,214, 72,162, 96, 75,107,205,165,241,144,204,
-121, 46,122, 24,121, 16, 85,205,101,235,185,215, 46, 16, 93,195,237,211,135, 84,135, 39,188,183,172,120,111,255, 4,149,128,169,
-154,168,140, 95,156,112,174,210,249, 97,172,120,241, 19,138,118,248,136, 7, 62,252,168,127,111, 3,179,178,230,142,243,200,182,
- 67, 89,195,101, 41,209,137,166, 9,130,179,166, 35, 65,160,149, 34,113,158, 84, 71,226,104,176, 30,165, 3, 66,122,132,140, 36,
- 75,231, 3, 9,146, 36, 29, 18,108,131, 74, 7, 8,153, 18, 66,136,235, 5,145, 34,164, 67, 40, 5,198, 68,127,191,236, 31, 89,
-154, 64, 83,130,206,145, 82,225, 93, 11, 40,130,181,136,158,143, 17, 2, 49, 92, 71, 43, 86,157,167, 9,129, 89,103,232, 84,204,
-101, 95,153, 24, 36,212,118, 45,198, 70,226, 94,133,165,232,101,139,247,156, 97,164, 82,238, 87, 51,102,245,146, 84, 42, 62,168,
-207,208, 66,112, 22, 28,101, 91,210, 25,203,235,103, 11,110, 63, 92,224,187,152, 65, 18, 86, 51,194,100,147,176,170,160,200,176,
-167, 51,190, 97, 60, 63,187, 53,229,111, 62,186,203,127,187,115,137,191,189,255,136,223,218,186,192,223, 61, 57,226, 55, 55, 47,
-240,229,195, 71,252,187, 91,155,252,157,253, 99,126,227,210, 46,138,209,115, 95,194,119,177,155,117, 54, 94,232, 7,195,152, 23,
- 46, 68, 44,234,231,187,117,215,211,211,126, 82, 81,255,145, 65, 48,105, 52, 42,247,140,111, 66,140, 23,140, 49,160,154,193,176,
- 96, 99,178,206, 88, 4, 58, 33,120,118,247, 42,137, 82, 20,197, 0,145, 38,140, 6, 25,203,198, 80,117, 13,206,195, 73,240,125,
- 18, 27, 79,132,126,193,245, 33, 49,231,161, 37, 46,142,204, 73, 40, 3,164,131, 20,239, 2, 77, 27,177,166, 85, 99, 49,153,142,
- 99,122,111,250,209,116,127,197,210, 58,250,199,165,140,143,253, 60, 4, 69,246, 48,115, 84,175, 72,127, 42,181,174,231,199,208,
- 17,239,131, 15, 63, 8,122, 73,116, 20,102,232, 12,167, 85,159, 95, 46,216, 45, 4, 71,173,103, 43,133, 60, 17, 17,119,159,193,
- 56, 81, 84,166,143,179,125,122,167,254,209,131, 84,162, 49, 45, 84,193,177,155,104,150, 62,208,122, 71,234, 37,171,208,197, 34,
- 37, 60,104, 98,148,172,251,241, 35,248, 59,111,191,207,167,126,238,103, 25,142, 10,118, 54,214, 73,178, 12,103, 96,243,194, 26,
- 73,162,201, 18,141, 18,146, 60,141, 99, 48, 2, 88, 23,250, 61,116,212,104,139, 62,197,206,135,120,225,132,128, 23,176,168, 13,
-165, 13, 84, 33,208,250,152,230, 38,129,129,150, 88, 23,176,190,119, 10,218,248,124,183, 54,224,157, 64,229, 41,149,130, 47,127,
-229,117,190,118,231, 38,167,109,203,237,179, 37,169,144,108,143, 70,116,206,144, 74, 5, 2,150,101, 73, 87,213, 52,166, 99, 57,
- 43,169,140,101, 53, 95, 32, 16,188,246,234,115,124,246,181,231,216,125,102, 7,165, 36,182,115, 76,134, 25, 82,168, 40,133,176,
-177,163,213, 90,245,246, 59, 79, 75,136,108,111, 2, 66,120, 52,129, 68,123,164,128, 65, 42, 25,166,130,253,147,150,121, 11, 42,
- 83, 36, 91, 3,212,229, 9,179, 44, 99, 88, 40,242, 97,138,203, 4,170,181,100, 37,100, 13,164, 85, 75,162, 3,162, 72,104,206,
- 42, 86,119, 78, 57,123,247, 30,195,195, 37,195,221, 33, 94, 9, 38,169, 98,154,105,214,165,228, 84, 9, 78,133,100,238,161,242,
-129,131,206, 81,181, 14, 21, 4, 63,181, 57,100, 60,204,184, 58, 29, 48, 65, 49,237, 28,239, 46, 44,143, 42,207,137, 87,212, 94,
- 81, 76,167,232,193,152,201,231, 95, 99,109, 52,225,149,159,126,137,245,221, 93,142,110,220,230,180, 58,163,104, 20, 7,181,197,
-250,238, 9,255, 27,112,203, 57,214,212,184,182,194,183, 29,206, 70,107,142,111, 43,252,254, 62, 15,125,205, 67,161,121, 36, 20,
-186,110,248,189,217, 25,223,156, 47,216,117, 21, 74, 15,200, 58,195, 39, 22, 11,218, 79,127,140,175,220,221,231,247,254,223, 63,
-160,222,187, 11,123,119, 16,123,247,225,225, 7,136,211,135,212,203, 83,110, 39, 99,126,126,107,196,118,154,144, 2,215, 77, 66,
- 53, 59,225,127,120,247,117, 94, 28,111,210,165,113,109,227, 66, 96,225, 28,251, 58, 97,101, 3,206, 71,254,193,206,184, 32, 15,
- 32,180, 96,101, 44,153, 82,132,224, 81,214, 50,234,106,138,224, 80, 2,132,105, 81, 34, 65, 40,137,237, 58,140,119, 24,235, 88,
-152,150,219,109,205, 94, 91, 99, 85, 66,161, 37,222,244,217, 11,198,145,166,138,202, 6,150,117,139, 50, 6,233, 91, 70,190, 33,
-119, 29,151,165, 99,214,118, 40,161,120,175, 92, 33, 72,120,102, 52, 96, 71, 39,180,120,142,218,134, 63,154,205,120,189,105,159,
-100, 60, 52,117,212,228,232,132,103,242, 2,225, 45,175,201,192,179, 90,144, 73, 9,198,177, 46, 37, 39,198,240,103,139,146, 67,
-235, 80, 42,160,210, 20,157, 15,217,205, 11,174,101,154, 23,210, 9, 69,185, 96,179, 53, 76,150, 43,166, 77,197,165,174, 99,125,
-126,196,206,170, 34,239, 58, 46, 34, 40,138,140, 71,171, 50, 94,123,123, 11,220, 15,116,213, 79,251,223,127,194, 77,126, 4,110,
-243,248,179,214,136, 62,162, 22, 41, 17,222, 16, 74, 67,125, 86,179,119, 54, 99, 71, 64,235, 28, 71,193,209, 52,142, 36,141,185,
-243,206,217,152,220, 71,143,208,150, 18, 47, 37, 99, 1, 67,149, 34,108, 67,174, 83, 68,240,136, 16, 80, 74,161,180,198,155, 14,
-165,211,248,255, 42, 13, 66, 69, 56,143, 78, 30,175, 73, 67, 79, 50, 21, 8,130, 51, 8,165, 9, 62, 32,164,196, 57,135,119, 29,
- 72,133,107, 27, 42,215,178,232, 90,142, 92, 71,165, 21, 43,211, 97,156,101, 86, 87,212,214, 48,175, 75, 90, 99, 56, 94,157,114,
- 86, 47,113, 93, 76, 13,205,164,162,243,158,198, 25, 58, 91, 71, 62,153,141,211,202,224, 28,243,186, 98, 86,118, 60,168, 27,190,
-117,127,134,171, 75,124,215,197,233,136,245, 4,215,198,201,185, 51, 80,164, 8, 27,120, 40, 2,191,144, 42,254,215,179, 57,255,
-229,133,203,252,131,249, 41,127,105,178,206, 31,207,102,124,122, 48,224,125,239,249,226,120,200,239, 60,122,216,239,212,207,119,
-232, 66,199, 87, 40, 43,162, 10, 83,233, 39,123,225, 44,235, 81,174,254, 39,238, 99,127,116, 81,239, 49,168, 42, 34, 95,133, 76,
-158, 40,202,243,130, 43, 91, 35,156,235,152, 12, 70, 60, 63,216, 96,168, 82, 54, 46,108,176,190, 49, 97, 56,202,169, 92, 32,209,
- 2,141,102, 81, 87,180,206,210,150,203, 88,212,211,254,196,123, 14,157,193, 61,177,111,133,168, 48, 71, 38,209,246, 41, 4,100,
- 58,138, 78,179, 62,116, 70,136, 72,116,115, 54,118,194,217, 8, 46,108,194,120,210,155, 68,237, 19,113,153, 16,113,167, 46,228,
- 19, 12, 46,125,222,186,232,223,222, 46, 64,222, 71,173,202,143,232, 17,156, 3,153,227, 68,212, 45,100, 82,162,164,199, 42,193,
-118,166, 24,249,192, 44, 4,174,104, 1, 38,112,220, 24,130,147, 79,118,233,231,187,245,115, 84,237,121, 56, 75, 15, 87,223, 72,
- 51, 14, 86,134, 81, 34, 24, 1,123,101,199, 52, 81,120,239,104, 90, 8,231, 62,254,243,215,246,199,124,172,239,110,113,245,185,
-171, 28, 30,159,209,118, 22,235,162, 53,195, 7, 98,161,245,129, 60,213, 81,200,229, 3,109,239,130, 8, 38,250,194,131, 7,153,
-136, 40,228,203, 20, 78, 8,188,141,135, 68, 21, 4,173,245,116,198,163, 19, 25,227,101,125,164,205,121, 41,113, 82,112,218,121,
- 26, 36, 22,129, 81, 26,169, 5, 70, 4,246, 30,156, 98,219,142,141,124,192, 70,158,145,234, 24,178, 32,133, 68, 8,197,201,106,
-201,170,109,232, 92, 71,211, 52, 52,109,131,176,130,203, 59, 59, 92,187,180,197,178, 54,220,188,125,192,173, 27,247,121,120,255,
-128,147,147,134,139,187, 19,166,131,140,166,179, 4, 60,169,142,118,186, 32,192, 17,217,251,238, 28, 84, 67, 32,147,144, 73, 65,
-145, 18,243,236, 19,201,234,246, 25,234,168, 36,109, 3,173, 13, 24,231,168, 51,197, 65, 90,176,187, 54,192, 6,129,210,144,109,
-174,193, 89, 64,172, 26,228, 78, 70,216, 26,226,157,195, 46, 27,138,105,193, 96,154,197, 29,108,174, 24, 37, 41,131, 32, 72, 31,
-174,152, 47,150,124,235,205, 7,248, 89,205,222,237, 19,150,143, 78, 80,171,146,176,114,236, 92, 24, 81,100,154,149, 11,116, 85,
-199,119,206,106,238,204, 42,188,146, 12, 6, 57, 27,163,148, 53, 9, 83, 13,133, 51,252,133,181,130, 23, 54,166, 20,105, 66,121,
-237, 89, 84, 39, 88,203, 4,207,174, 13,217,185,176,195,238, 51,151,152, 92,216,198, 14,167,204,100, 17,119,138,182,251, 16, 74,
-244, 49, 63,252,240,144,166, 44,121,235,108,201, 31,180, 53,223, 52,146, 67, 33, 25, 89,199,206, 56, 97, 83, 6,198,153,226,149,
-179, 51,174,143,135,108,109, 92,100,111, 56,197,222,125, 31, 30, 62,130,114, 9,143, 30, 33,142, 14,145,237, 9,121,217,241,146,
- 30,145, 90,143, 50,142,113, 93,241, 41, 5, 55,170, 37, 95,105, 21, 23, 7, 9,251,198,114,199, 7,206, 42, 71,139,100, 17, 34,
-187,123,144, 72, 70, 90, 35,137,191,255,169, 16,148,182,163, 51,134,196,180, 12,130, 39, 13, 17,141,235,157,197, 56,135,117,142,
-218,118,236, 45, 79, 40,125,199, 94, 87,115,234, 13,123,171,154,205, 52, 69, 56, 71, 98, 12, 74,107,172,113,236,173,150,204,155,
-146,196, 25,214, 77,139,176,158,173, 96, 88,115,134, 13, 33,120, 80, 46,168,108, 75, 73, 74,174,225, 97, 83, 49, 43, 87,188, 63,
- 59,225,171,243, 83,154,122, 21,187,197,166,238, 29, 65, 30,145,103, 12,165, 68, 4,199,101, 60,133,130,129,183, 36, 33,240,230,
-106,193, 55, 22, 53,111,119, 45,210,117, 72,157,162, 84,194,122,154,176,155,142, 25,203,132,237, 84,115, 17,201,150, 82,172, 15,
- 10, 10,149,162, 59, 19, 41,154,190,141, 54,208, 76, 50, 29,143,112,227, 1, 71, 70, 34,122, 97,240,143, 42,236, 63,224,131,255,
- 17, 30,120,249,209, 98,175, 53,164,186, 39,223, 41,240, 50, 14, 37,234, 54, 34,184,157,225, 65,211,114,203, 72, 86, 4,190,223,
- 6, 58, 97, 88,217, 88,124,141,115,184,224, 64,169, 88, 12,165, 64, 6, 72,137,144,171, 92, 72,164, 80,104, 2, 34,196,107,153,
-210, 89,244,134, 88, 19, 15, 18, 62,230,117, 8,235,162, 41, 85, 74,130,105,192,199,159, 39,164, 36,116,109, 63,232,140,164, 58,
-111, 44,222, 26,218,224, 40, 77,199,158,181,236, 57, 75,109, 45,149,139,120, 91, 33, 98,166,124,213,149,156,214, 51, 78, 76,195,
-254,114, 70,235, 13,141,119,145,246,169, 37,137,243,204,109, 36,148, 58, 60, 74, 40,108,215,178,242, 14, 17, 60,137,240,220,173,
- 58, 90,215, 18, 76, 31,196,163, 1,157, 18,154, 14,145,100, 80, 25,196,184, 64,212, 13,183,117,202,127,188,177,206,255,120,176,
-207,191, 54,200,248,227,101,201,181, 60,101,134, 39,183, 29,255,240,228,132, 79, 76,167, 40, 38,207,127,233,113,135,238,109,244,
-154, 43, 31,187,201,243,142, 80,244, 5,160,237,250, 83,229,191, 98, 81,215,242, 73,241, 13, 1, 17, 92,124, 20,215, 47,241,241,
- 75, 27,124,226,153, 23,184, 52,221,226,165,173, 93,158, 25,111, 34,114,205,181,237,117, 86,222,210,153,192,104, 50, 32, 40,205,
-131,131, 67,214,199, 99,110,159, 29, 96, 86,125,234, 88,103,226,207, 14, 42, 30, 58,240,209,190,117,238,137, 23,196, 19,155, 82,
-253,247,137,184,140, 10, 34,118,242, 90, 70, 53,250,170,141,127, 63, 30,193,120, 8, 69,191, 46, 88,244, 39,235,243, 81, 55, 50,
-254,172,115,225, 95,146, 63,225,212, 43,221,191,145, 93,188, 63, 79, 67,100, 30, 63, 31, 30, 66,252,217, 90, 4, 70, 69, 84, 87,
-174,245, 9, 97,151,181, 70,121,207,134,138, 2,158,121,235, 34, 97,142,240,100, 5,114, 14,146,120,124,104,178,208, 70,162,220,
- 84, 11,150, 33,230,239,166,137, 96,213, 6,188, 10, 76,148,160, 13,125, 34,158, 23, 63, 20, 23,251,244,199,205,239,191,195, 23,
-255,173, 95, 97, 99, 50,100, 89, 54, 49,181,169,179,116,141,137,193, 10, 66,145, 38, 9,131, 76, 71,202,174, 13,125, 94, 76, 64,
-247, 2, 63,173, 98, 82,152, 84, 18,215,249,216,125, 3,193,249, 56,198, 31,166, 12,138,148,198,249,199,254,112, 47, 4,101,231,
-104,250,116,218,243, 19,123,227, 29, 89,170, 8, 33,161, 59,171, 65,138, 24, 24,163, 53, 73, 63,142, 12,193, 33,148,100,160, 52,
- 74,105, 6,217,128,141,181, 45, 70,147, 49,235,147,156,189,253, 51, 30, 62, 58, 0, 41, 41,242,156,166,233,176,193, 82,163,216,
-221, 26,225,131, 71, 17, 80, 74,162,117, 68,224, 57,231,232,140,165, 53, 54,134,163,244,145,188, 82, 4,180, 20,104, 17, 51,230,
-147, 66,177, 56,108, 24,165,146,237, 92,113, 57, 75,240, 14, 94,155, 36,108, 21,154, 3, 27,240, 62,142,234,241, 30, 70,154,230,
-210, 4, 51,200, 9, 89,130, 30, 21,136,237, 9, 97,154, 35,134, 9,153,243, 80,183, 4,235, 88,168,192,187, 66,112,253,229, 29,
-214,114,201,149,205,130,143,125,108,139,112, 92,177, 38, 2, 97, 99,196,126, 23,120,111,105,120,115,222, 50, 51,129,221,164, 99,
-224, 29,207,155, 57,203,147, 67,158, 75,115,182,117,202,115, 4, 46, 21,145,184,101,141,225,189,178, 68, 59,199,154, 15, 12,132,
- 98, 82,228, 20,137,100, 45,207,216, 42, 82, 46, 76, 6, 12, 54, 38, 28, 39, 99, 12, 22,223,118, 63,144, 4,198,226, 12,230, 51,
-186,170, 36,156,158, 16,164,163,194,243,234,112,196, 90,146, 80, 32, 73, 19,141,106, 59,210, 97,194, 48, 36,220,169,142,225,228,
- 36,254,238,104, 13,139, 5,161,172,185,115,188, 79,222,204,217,182,138, 20, 40,178,140,137,119,108,183, 43, 30, 46, 79,185,217,
-118, 28, 90,203,101,239,216, 54, 13,223,245,130,147,182,230,154,106,153, 91,197, 51,169, 36, 85, 26,109, 3,214, 25,172,243, 28,
-149, 11, 26,111,217, 49, 29,162,109, 81,222, 48, 91,205, 16, 33,112,216,173,120,103,254,136, 42, 4,238, 45, 78,121, 48, 63,226,
-102,181,162,170,150, 72, 17,176,171, 37,251,213,130,179,206,241, 96,118,130, 13,158, 77,211,209,181, 45,181, 51, 76,188,193,135,
-192, 26,129,196,118,100,182,161,241,112,228,106,206, 26,195,119,246,239,242,181, 71,247,249,254,236,152,114,177,128, 85, 5, 39,
- 11, 88,172, 98,151,222, 58,200, 51,108,128, 81,154,241, 65,215,113,217, 55,184,186,102,102, 12, 15,218,154,127, 81,150, 72,211,
- 34,130, 67, 57,131,212, 25, 87,211,140,105,158,147,250,192, 40, 75,217, 29, 20,108, 37, 3,134,131, 28,229, 37, 88,131,176, 6,
-111, 59,172,181,100,105, 74,161, 21,147,193,136,106,154,115, 38,250, 61,126, 80,209, 77,209, 95,167, 62, 90,204,197,211, 94,248,
-159,112, 67,107,132,146,113, 74,231, 69,236,137,212,147, 97,188, 8, 14,124, 64,184,216,136,148,139, 6, 23, 60,123,157,231, 65,
-219, 17,122,108,107,227,162, 69,239,156,176, 23, 3,158, 2,107, 74, 19, 76,135, 14, 14, 37, 53, 88, 23, 83,191, 67, 76,100, 59,
- 47,238, 16, 16, 82, 19,188, 69, 4,240,214, 32, 84,130,183, 13, 8,133,235,237,213, 65, 42, 92,215,225,123, 79, 73,227, 90,170,
-174,228,160,173,184,225, 91,218, 52,227,172, 89,225,172,165, 54,134, 89,189,192,226,153,155,150,133,235,184,187, 92,177,244,130,
-121,185,140,217,101, 34,170,107,103,222, 48,214, 26, 23, 60, 2,201,170,169,168,112, 24,239, 80, 66,114, 84, 55,200, 34,225,168,
- 1,239,187,184,254,241, 50, 70, 69, 75,141,176, 6, 38, 3,196,217, 2,177, 62,229, 25,219,242,181,206,240,249, 34,231,173,206,
-178, 50, 53, 55,140,163,236, 58, 30, 24,207, 84, 4,190,182, 56, 65,177,118,237, 75, 36,170, 7,195,232,152,231,157,232,120, 83,
-250,195,227, 93, 99,162,255,208,152,127,181, 0,152,180,207, 92,215, 17, 82, 35,242, 49, 92,186,204,175,190,252, 9, 94,189,250,
- 50,105, 54, 96,123,123,155, 75,235,155,120, 18,158,189,180, 78, 35, 36,237,170,102, 48,202,105,173, 71, 42, 73, 38,115,234,174,
-197, 55, 45,167,222,198, 39,227,220,158,161,101, 31,129,218, 39,191,185,238,201,232, 95,245, 34,183,200,246,140,111,184,243,119,
-176,212, 49,113, 45, 81,113, 12,223,118,209,214,103, 2, 44, 87, 96,234, 15,171,216,149, 0,145,244,157,115,255,174, 21, 60,225,
-183,107,221,115,220, 93, 47,158,179, 63,228,249,136,246,182,221, 97,202,172,243, 60,167, 21, 19,165, 24, 4,137, 14, 81,220,230,
-140, 99, 34, 36,163, 4, 78,218,126,243,117, 14,245,177,246,169,207, 79, 17,250, 68,191, 43, 62, 15,101, 8,176,169,160,108, 2,
-109, 48,100, 58,193,153, 62,128,230, 39,116,234, 0,107,155,235,188,242,202,139, 4, 41, 72,115,205,198,120, 72,231, 2,182,243,
- 12, 38, 3, 46,175,143, 81, 90,160, 84,204, 74,246,189, 67,210,248,128,150, 17,214,160, 50,137, 12, 49, 94, 85,246,246, 16, 84,
-188,127,137, 76,200,242,120, 40,136, 83, 50, 65, 32,224, 2, 72, 33,226, 83, 74,160, 72, 53,227, 60, 69,202, 64, 58, 76, 57,126,
-112,138, 18, 10, 37,101, 20,188, 16,185, 5, 74,106, 70,249,144,193, 96,192,179,187,151,248,245,159,249, 56,155, 27, 99,246,143,
- 22, 28,157,206, 24, 78, 70,140, 39, 35,202,178,162,115, 29, 27, 59,219,236, 92,218,196, 56, 79,145, 39,140,138,148, 36,145, 24,
- 27, 21,175,214,122, 66,159, 36,230, 93, 92, 25, 9, 31,176, 54,178, 18,206,175, 87, 74, 9,150,165,165,107, 2,249, 32,137, 57,
-209, 90,146, 56,203,254,157, 83,228,170,229,221, 59,103,156,236,159,177,153, 41, 90, 25,184, 51,144,188,227, 36,199, 78,114, 88,
- 59,110,189,115,143, 71,247,246, 56,156,149,148,214, 82,183,150,170, 53, 36,211, 1, 11, 1,223,190,241,136,236,246, 13, 62,247,
-252, 37,254,198, 87,222,230,209, 59,183,105,131,103, 88,149, 36,121,198,123,179,134, 3,165, 56, 10,129,195, 32,248,181,171, 5,
-191,126,109,155,183, 31, 60,228,155, 15,110,242, 79,238,222, 35,168, 0, 94,112, 57,139,194,179,251, 7,199,220, 95, 44, 24, 59,
-199,192, 88,148,233,200, 2,140,181,230, 74, 62,224,103,183,175,176,150,167,180,137,198,111, 13, 56, 45,214,177,178, 32,212,154,
- 96, 10,144,105, 47,191,139,204,242, 48, 59, 37,156, 30, 18,116,198,107,215, 95,100,153, 77,216, 17,142, 76, 69,173,132, 74, 20,
-171,214, 82,174,206,184, 89,183,132,229, 28,202,138,160,227,117, 39,216,128, 43, 27,190,183,127, 68, 48, 51, 46,167, 5, 35, 60,
-197,104,140, 91,157, 50, 59,222,227,247, 15,143,120,239,116,193,221,206,242,229,131, 7, 60, 76, 50, 78, 44,220, 53,134, 55,218,
-142, 63, 41, 27,254,164,178,188, 42, 12,202, 59,230,229,138,247,203,134,133, 89,226,219,154,172,107,152,205, 23, 20, 74,242,246,
-242,140,119,206, 78, 56,237, 12,247,151,103,188,123, 52,227,189,211, 19,110,221,220,227,224,116,197,189,147, 67, 6,218, 18, 92,
-199, 89,181,192,154, 21, 89, 91,225, 77, 67,144,144, 4,135,145, 10,237, 29,185,247,132,174, 70, 59, 3,166,194,116, 13,111,150,
-103,204,170, 25, 77, 85,225,202, 10,206,106, 68, 91,193,193,105,116,233,204, 74, 68,103,160,169, 48,153,100,133, 96, 89,151,188,
- 93, 54,188, 55, 91,240, 94,181,226,187,203, 21,194,180, 8,103, 17,109,131,116, 6, 41, 3, 23,138, 2,229, 2, 90, 72, 10, 31,
-120, 46, 75, 89, 83, 58,226,175,149, 66,167, 41,190,109,168, 93,139, 21, 14,225, 29,211, 98, 68,162, 37,195, 44,229, 76, 8,150,
- 66, 64,145, 65, 58, 64, 36, 3, 68, 26,217,242,194,187, 15,129,109,158,190,233, 31, 2,184,121,220,173, 39,125, 81,239,127,199,
- 63,180, 44, 12, 1, 17,250, 70, 40,213,143,243, 49,132,239,192,122,188,131,163,101,199, 28, 71,129,196, 27, 75,135,196, 58,199,
- 80, 41,202,174,166,243,150,156,136, 69,238,156, 65, 17,245, 8, 65, 4,148, 84,216,166,126,172,213,242,166,137,235, 63,215, 70,
- 1,154,179, 56,215, 98, 93, 3, 82,198, 3,159,169,113,128, 17,158,186,171, 57,107, 87, 84,206,114, 11,199,126, 87,113, 96,106,
-206, 90, 75,101,106,142,154,101,100,181,183, 37,165,183,156,214, 53,149,117,172,130,195,121,137, 12,129,153, 53, 52,182,139, 61,
-241,249, 52,136, 64, 16,158,178,139,142,158,101,137,101, 66,182, 0, 0, 32, 0, 73, 68, 65, 84,221, 50,144,138, 34, 4, 76,170,
-153, 45,226,227, 15,244, 73,154, 26, 68, 62, 64,204,150,136,173, 41,226,224,132,114,109,194,199, 21,188,141, 70,116, 21,211, 44,
-163,180, 29, 59, 50,229,253,114,198, 80, 69,131,171, 98,227,249, 47,209,217, 39, 59,117,161, 99, 1,234,122,111,186,137, 72, 70,
-234, 85, 28, 19,201,126, 7,126, 14,148,249,151,234,214,243, 88, 72,133,131, 98,130,152,174,243,201,171,151,120,118,243, 25,132,
- 78, 80, 42,225,226,214, 26,193,121,116, 8,204,235,142, 34, 19,104,173,168,106, 75, 72, 5,243, 85, 75, 85,119,120, 99, 25,164,
-146, 91,179,167,226, 8,207, 5,120,178,127,171,157,135,151,156,219,191,242, 65,111, 13,147,125, 26, 90,159, 43,158,244,143, 57,
- 75,122, 92, 99,136,187,250,197, 18,202, 50,222, 62, 10,107,145, 50,190,179,147, 36, 30,126,206,139, 56,125,145, 63,143,167, 85,
-105,156, 24,164,242, 7, 11,187,148,224, 53, 11,103, 89, 79, 18, 54,165, 32, 11, 17, 62,227, 9,236, 8,193,153, 11,140, 3, 56,
- 33,217,212,146, 35,215,119,253,231,157,250,227,207,189, 69,174, 47,244,174, 47,252, 57, 34,238,151, 91, 67,154, 43,180, 82, 49,
-158,150,222, 3,255,231, 0, 16,188,251,221,183,248,236,175,254, 2,219,235, 19,164,146,204, 87, 45,211,233,144,147,147, 25,243,
-211, 37,181, 9, 72, 21, 59,210,104, 3, 11, 49,158, 84, 42,138, 92,147,100, 18,225,162, 11,221,138,152,188,150,104,141, 22, 10,
-111, 61, 74,198, 16,149,170, 54,120,231,113,206,211,117, 30,173, 37, 74, 62,185, 13,243,140, 76,235,152, 1, 36, 20,109, 29, 40,
- 23,101,223, 97, 4,178, 36,165, 72, 7,140, 39, 19, 38,211,117,158,123,254, 25, 62,247,242, 46,139,147,146,111,188,127,135,116,
-144, 81,140, 6,180,109,199, 98, 85, 49,152, 12,185,120,113,155,225,184,192,247,187,251,213, 50, 94,168, 7, 89, 18,197,123, 62,
- 18,242,140,141, 5,221,121,143,235, 85,253,198, 58,156, 11, 72, 41, 73,180, 34, 77, 52,227, 65, 74,146, 42,208,113, 60, 88, 87,
- 29,109,211,113,116,255,144, 91, 55,239,176, 56, 61,225,224,225,125,110,223,219,231,237,219, 15,248,214, 91, 31,112,156,175,177,
- 51, 46,152, 37,154,183, 66,194,151,191,250, 45,190,254, 63,255, 9, 95,189,241, 46,255,232, 15, 94,231, 31,253,227,111, 35, 86,
-199,188,124,249, 58, 39,251,167,252,155,175,190, 76, 33, 52,191,255,213,111,112,229,234,101, 62,251,185, 23,248,245,237, 33,127,
- 38,128, 11, 67,202,165,229,229, 73,134, 82,154, 95, 30,166, 56, 31,248,238,253, 3,188, 53,124,236,234, 85,220,100,131, 67, 2,
-218, 25,238, 86, 45,167,171,146,235,197,152, 32, 4, 3, 33, 49, 38,134,136,164, 82,242,233,141, 93, 46,236,236,176, 57, 28,115,
-211, 90,110,184, 12, 49,154, 64,161, 48, 58,193,111, 20, 20, 91,235,236, 92,219,129,209, 58, 45, 26, 86, 22,164, 37, 4,201,228,
-217,103,185, 62, 78, 25, 11, 73,103, 59, 18,173,217, 47, 87, 44,155,150,133,149,124,176,154, 69,104,211,108, 21,131, 44,130, 36,
-120,219, 31,236, 4,111,207, 86, 92, 80, 13, 27, 74,211, 85, 37,143, 22,135,252,189,123, 71,188,249, 96, 70,117, 60,231,232,224,
- 16,237,107, 46, 54,103, 44,110,220,160,109,103,160, 4, 66, 39, 8,219,242,237,229,140,163,166,230,165, 34,227, 15,110,189,135,
-246,129,213,252,152,211,249,130,155, 85,203, 91,243, 5,239,150, 21, 95,155,151,188,126,182,228,221,121,205,131,217,146,217,106,
-137,107,107,156,109,169,170,146,155,243,154,253,182, 37,152,138, 60,213,236, 74,201, 84,128,113,150,160, 20,170,107, 81,214,112,
-236, 45, 27,166,161, 67, 64,215, 50,111,151,212,139,138, 85, 85, 33,124, 0,231, 16, 94,192,188,129,118, 5, 93,141,176, 29, 84,
- 37,156,158, 33, 14,143,240,103, 11,192,227,203,138,122,181,164, 92, 44, 16,139, 5, 98,181,132,186, 66, 46, 22,136,174, 69, 9,
-195,202,117,172,107,141,144, 9, 74,192, 69, 45,217, 17,158,161, 76,145, 90, 18,234,146, 96, 29, 70,128,212,138, 81,154, 33,128,
- 66,105, 10,165,113,161,195,100,138,153,241,136, 44,129, 97, 6,163, 17, 66,166, 72,149, 34,113, 72,231, 62, 4,181,209, 79, 21,
-118,253,195, 10,187,142, 35,115,126, 72,136,140,112, 46,214, 20, 41, 99,167, 46,162, 72, 48,142,203, 29,162,234,192, 5,170, 85,
-203,253,202,176,232, 12, 34, 4,130, 12,204,155, 38,114,230, 3,116,109, 75,227, 12,185, 15,184,224,232,188, 65,122,168,187, 42,
-166, 45, 58,135,235,106,156,233, 98, 65,247,142,174, 94, 17,132,199, 88,139, 13,142,206, 89, 90,111,113,222,177,104, 86,148,109,
-195,153, 45,217, 55, 45,111,119, 75,110, 54, 43,110,149, 53,119,203,154,210,118,220,238, 58,150,173,161,242,142, 86, 73,102,171,
- 18, 43,161,179, 22,101, 35,236,108,209,212,148,222,227,181,228, 65, 85,115, 49, 75, 56,181,134,182,173,177, 33,224,149, 64,219,
-232,199, 55,214, 49, 85, 10, 33, 96,179, 72,217,171, 76, 20, 81,123,143, 48, 22,108, 28,193,203,249, 10,177, 54, 69, 30,204, 56,
- 77, 20, 98, 49,199, 14,134,172,230,115,188,210,156, 52,115,100,154, 49, 11,158,114,121,134, 98,116,237, 75,232,243, 78,189, 79,
- 87,235,179,101,177, 29,212, 77,236,222,109, 63,218, 78, 84,180,141,105,126, 44,192,228, 7, 62,178, 52,238,184, 19, 21, 79,132,
-227, 33,131,233, 26,175, 93,190,198,100,109, 28, 35, 59, 61, 12, 6, 57,178, 23, 64,248,186, 69, 43,201, 96,152, 97,156,229,204,
-121,170,101, 75, 23, 12, 78,192,114,181,228,160, 93, 96,170,174,183,204,201, 39,209,169,231,176, 27,211, 19,230,210, 34, 22,239,
-252,188, 8,247, 59, 23,165,123,206,125,218, 43, 80,251,125,181, 51, 31,142,150,253, 97,235, 4, 21,161,251, 72,221, 23,243, 36,
- 58, 6, 92,128, 81,209,231,201,247,197,190,238,126,112,212,237, 92, 31, 75,171,217, 78, 20,195, 30,206,210,187,238, 48, 6,118,
- 18,193,125,239, 24,186, 64, 30, 60, 71, 82,224,186,167,118,233,231,157,250,211, 74,246,126,109, 18,124,192,132, 56,238, 86,104,
-108,176,113,244, 29,252, 19,220,237,159, 51,170,113,184, 54,225,226,181, 93,138, 36,199, 56,195,254,253, 35,188, 51, 12, 6, 35,
- 28, 48,155, 55,120, 4,147,113,134, 16,130,245, 34, 65, 8, 65,158,107,148, 82,100,153, 36,207, 20,193,157, 3,102, 4, 89, 46,
- 73, 19, 69,150, 69, 14,130, 53,158,209, 80, 19,130, 64, 72, 17, 71,102, 65, 60, 30,225,159,199,218, 7,235,217,159,149,125, 34,
-159, 96, 48, 25, 50,154, 76, 24, 77,198,140, 38, 99,146, 60, 69,167, 5,173,177,236,205, 86,204, 77, 96, 48, 28,130, 20, 72, 47,
- 73,146,132,233,250,152, 52, 77,104, 27,195,236,116,193,219,239,191,203,255,246, 71, 95,231, 79,254,244, 13, 82, 20,235, 59,107,
-140,139,244,241,232,207, 67,175,118,117, 44,202,142,186, 49,148,165,161,169, 45,214,248, 72,197,235,237, 55, 39,173,231, 99,157,
-225,170,246,188, 25, 60,243,170,102,181,170, 89,149, 21,117,187, 36, 81, 9,243,213, 25, 15, 14,247,216,223,127,196,173,218,241,
- 96, 1,126,123,196, 34, 75,176,207, 60, 75,158,150, 28,190,254,128,240, 65, 75, 56,171,184,251,157, 61, 62,243,133, 87,184,242,
-252, 46, 97,125,192,157,121, 69,125,122, 76, 97,106,222,185,117,159, 7,143, 30,242,245, 59, 15, 57,122,255, 30,215,240,252,123,
- 47, 61, 67, 45,224, 31,191,243,128, 71,139, 57,111,207,106,158,219,216,228, 23, 63,243,113, 54, 94,125,158,181,235,187,220,244,
-130,123,247,238,240,193,131, 91,124,112,114, 76,131,103, 39, 31,240, 64,167, 44,218, 21, 50,209,188, 52, 93, 39, 77,115,106,107,
-248, 78,215,241,102, 82,176,157,101, 92,209,130,157,196,144,143, 51,198,211, 9,195,124,192,246,198,144,193, 48,101,161, 83,124,
-231,193, 25,102, 23,183, 25,232, 49, 74,122, 74,165,104,234,154,253,174, 99,229, 53,221,149,171, 28, 79, 47,210,118,115,120,120,
- 16,131, 69, 92, 31, 22,226, 61,190,159,144,188,109, 91,218,106,201,205,182,228,255, 40, 87,124,103,105,113,243, 6,247,193, 28,
-127, 56,199,220, 93, 49, 95,149, 96,170,216,217,248, 14, 49, 63, 70, 78,214,216, 30,111,241, 59, 95,248, 4,191,252,169,151, 48,
-173,231, 96,126,204,219,251, 51, 62,184,247,128,123,103, 43,238,122,193,163,166,165,105, 44,214, 54,177,115,107, 27,108, 23,133,
-130,206,251, 88, 32,188,165, 92,173,216,107, 2,147, 84, 50,192,209,248,142, 11, 66, 82,123,143, 22, 2,235, 12, 83,211,178, 82,
- 9,109, 53,231, 65, 85,179, 10,129,174, 92,113, 58,171, 98, 55,142,138, 81,163,161,111, 8, 62,186,211, 54, 22,177, 92,192,124,
- 14,179,121,108, 44, 22, 53, 98, 54, 67,156,157, 32,142, 79, 16,199,199,200,197, 2,121,186,128,197,130,185,109,153,153, 10,133,
- 98,135,192,181, 52, 35,181, 22,209,182,248,206, 97, 8, 56,111, 73,149, 34, 17,138, 34, 73, 73,133, 66,121, 79,234, 3,206, 59,
- 38,227,156,113,145,240,252,120,192, 11,107, 3,214,166, 5,227, 34, 97,222, 4,148,245,113, 59,233,253,227, 66,158,126,164,200,
-235,167, 58,122, 33, 68, 44,210,166,239,212,205, 83,227,119, 23, 67, 78, 68,136,157,186,112,253, 4,247, 60,184, 38, 8, 68, 87,
- 65, 42, 17,109, 77,217, 6,246,219,134,147,186,101,148,234,200,205,234, 26,154, 0,141, 49,204,113,164, 33,208, 56, 67, 27, 2,
-166,107,113, 34,208,118, 53, 22, 79,101, 27,156,107,113,214, 96,189,197,184, 14,227, 13,101, 87, 81,217, 22,231, 58,246,218,138,
-131,122,198, 7,109,201,237,106,197,183,109,205,222,114,201, 55, 79, 87, 44, 92,199, 65, 89,115, 38,224,208,121, 78,172, 67,107,
- 69, 89,150,168, 52,199, 6,139,113,158, 78, 9,150,141,195, 56,207,178, 50, 28, 25,199,153,241,140,173,101, 32, 28, 86, 40, 90,
-103, 81, 46,166,146, 90,239, 25,234,120, 65,203,164, 96, 36, 21, 75,239, 89, 90, 19, 15, 62, 68,160,152,148, 14,129, 66,182, 75,
-212,100,140,154, 45, 81, 89,138,182, 14, 53,202,145,117,137, 74, 52,170,142, 60,125,169, 51, 20,235,207,127, 9,219,119,234,231,
-230,131,208, 7,172,208,231,131, 43, 25,139,177,234,247,235, 42, 60,137, 88, 85,242, 9,159,252, 71, 89,192,164, 4,153,197, 93,
-118, 58,132, 98,128, 72, 83, 6,195, 28,145,164, 76, 82, 77,146,102, 40, 25,240, 1,114,173,145, 74,144, 9,176,166,163, 89, 53,
-204,106, 71,219, 25,206, 22, 37, 42,213,180,171, 6,176, 28,148,115,234,170,137,221,177, 13,177,112,203,190,115, 69, 64, 48,125,
-242,141,140,209,167, 73,127,191,125,136, 35,167,208, 31, 52,252,249,232,186, 39,196,157,123,224,127,220, 58,129,126, 77,145, 21,
-189, 50, 61,196,195,129,214, 79,146,215, 68,191, 14, 16,231,251,240,143,118,252,113, 70, 53,214, 30, 47, 21,218,129,246,113,188,
-123,190,122, 95, 35, 78, 70, 74,239, 25, 10,207,105,119,142,138,181,125,132,107, 95,118, 30, 47,181,206, 95,147, 94, 84,231,125,
-244,104,170, 62,207, 62,244,135, 55,255,231, 63,148,221,248,254, 13, 94,249,204,107,168, 76, 51, 46, 10,234,182,195, 89,199,114,
- 49,103, 99,115, 74,158,198, 85,205, 48, 75, 98,200,139, 32, 10,224,132, 32, 81, 2, 27, 4,206, 6,130,140,170,101,173, 98, 24,
- 74,146, 38,164, 89,138, 76, 52, 74, 9,130, 9,113, 56,212,196,200, 93, 99, 60,198,216,120,190, 10,158,217,178,163,174, 61,213,
-178, 67, 41,201,104, 24,139,119,146, 37,188,120,125,155,151, 46,111, 16, 84,138, 15,129, 68, 73,164,144,172,170, 21,243,147, 5,
- 82, 10,100, 34, 56,124,116,192,247,110,188,195, 31,127,247,109,254,236,246, 45,190,242,246, 45,110,126,103, 15, 62,168,225,118,
-205,141,113,205,199, 47, 93, 98, 99,125, 68,170,162,187, 91,247,178,146,198, 56, 58,227,112, 30,154,198,210, 54,142,198,246,201,
-193, 90,146, 41, 77, 55, 84,124,122,163, 96,120,161,224,238, 32, 97,184, 53, 98,124,101,131,236,165, 75, 36,207, 93, 33,108,173,
-145,138, 1,251,167,167,188,251,206, 1,109, 17,120, 20, 18,214,150,150,236,194,148, 3, 37, 25, 60,127,157,171,215,183,121,246,
- 51, 59,124,230, 87, 94,226,211,191,246,113, 78,148,229,238,193, 1,239,223,126,200,183, 30, 60, 68, 33,248,173,201, 38, 27, 94,
-240,207, 27,203,157,170, 65,234,140,201,197, 75,216,205, 41,199, 90,211, 77, 11,154,139, 91, 36,151, 47,113, 89,167, 20, 71, 21,
-223, 60,171,121,243,254, 41,239,221,186, 71,215, 89,178,245, 77,222, 42, 87,236, 47, 79,169,234,138,249,114,142,150,130, 85,158,
- 83,213, 75,164,181,220, 48, 29,223,181, 6,165, 7,228,222,179, 46, 61, 3,215,210,106,201, 95, 26, 13,249, 43,211,117, 94, 82,
- 18,167, 21, 42,151, 44,172,224,250,100,200, 56, 87, 84,197,132, 3, 18,142, 90,207,253,106, 73,105, 45,109, 91, 51, 89,219, 34,
- 75, 4,114,178,201,194,204, 8, 71,199,208, 57,130,238,233,118, 66,224,165,161, 89, 54,188, 57, 95,242,237, 69,201,161, 83, 56,
- 65, 20, 82,174, 41,252,105,212,231,167, 43,207, 79,229,154,191,184, 94,240,252, 98,197,205,186, 4, 28, 87,159,189,198,199, 71,
- 3,214, 18,205,223,122,235, 30,183,131,136,187,202,163, 57,193,119,120, 20, 94,107,156, 15,209,137,210, 69, 30,130,243,254, 49,
-201,207, 3,193, 69, 17, 21, 78,112,156,164, 92, 25, 42,118,131,199, 58,203, 24, 65,107, 58,134, 4,156,115,100,166, 97, 30, 60,
-167,222, 51, 63,155,115,186,168,232,218, 22,119,178,138,214,170, 44,229,213, 11, 5,255,246,165,117, 62, 62, 29,243,198,241,234,
-113,108,234,227,142,214,244,130,221,182,133,182,142, 28,143,208, 7,184,244,187,101, 89,199, 8, 95,121, 82, 34, 59, 67,233, 26,
- 82, 37, 24,219,142,245,166, 66, 57,143,243,150,186, 45, 9, 50, 32,157, 39,149, 2, 45, 64, 11,141, 12, 30, 41, 37,133,146,108,
- 38, 41,159, 24, 12, 25, 39, 9,211,108,192,122, 62, 96,146, 40,126,122,115,194,199,198, 3,214,181,224,200, 58,146, 0,169,247,
-164,125, 97, 79,250,219,211, 29,187,240, 81,148, 38,180, 64, 24,158,100,190, 59, 31,129, 55,206, 61, 1,210, 40,137,176,145, 61,
- 32, 68, 28,249,147,104,132,141, 13,143, 16, 81, 84,214,117,158, 71,171, 14,105, 59,202,206, 50, 8,130,149, 8, 88,235, 56,117,
-142, 3, 1, 71,182,163,146,146,135, 85,201,137,112,172,154, 21, 51,239,104,218,150,189,174,193,155,134, 67,215, 98,141,161, 82,
-138,101,219,114,191, 46,185, 85, 46,248, 32, 56,190,113,186,226,131,206,112, 99, 94,243,192, 58, 26,231, 89,213,150, 86, 6,170,
-101,133, 79, 83, 26,239, 73, 8, 56, 41,169, 77, 71, 25, 4, 74, 40,142, 86, 13,235, 89,194,126,109, 40,155,134,182, 53,108,103,
-146, 19,103,216,148, 26, 97, 45,155, 74,209, 66,212,191, 16, 83, 30,231,206, 16, 2,212,214,113,185, 72,120,127,209, 64,211, 69,
-205, 53, 30,233, 4, 82,216,184,202, 59, 93,160,130, 64,167, 26,109, 12, 74, 43,116, 8,104, 23, 35,175,149,148,200, 85,133, 98,
-218,239,212,221, 57,253, 77,197, 66,224,252,147, 0, 17,210, 94,237,221,227, 93,117, 74,246,252, 69,214,175, 94, 64, 95,216,164,
- 29, 15, 97,107, 19, 6, 99,184,120, 33,126,189,181, 9,147, 53, 24,140, 98,145, 77,147,136, 60,204, 18,228, 56, 35, 77, 18,100,
-112,140,117, 26,177,125,185,102, 58, 28, 49, 29, 23, 76,166, 41,174,181, 56,111, 32,120,188,132,106,181,192,244,172,220,163,211,
- 25, 85, 83,114, 80,205,152,213, 21,198, 7, 66,119,190, 15,239, 85,225, 69, 10, 77,251,132,134,148,232, 88,212,181,142, 43,134,
-244,169,241,187,238, 59,247, 68,199,125,134,210,177,168, 43,249,227,167, 17,185,142, 43, 5,124, 20,212,233, 60, 22,246, 44,233,
- 45,117, 34,138,239,206, 73, 76,173,123, 34,182,251, 8, 51,255,149,188,160, 8,176,239, 59, 46, 41,141, 2,150,253, 47,241, 88,
- 8, 18, 33, 72,165,164,240,240, 64, 75,130, 0, 90,251,228, 96, 96, 31,171, 84,122,111,190,232, 21, 27, 34, 78, 16,148, 2, 93,
-244,147, 8, 27, 31,223,191, 76,172,110, 34,217,183, 29, 47,189, 16,225, 22, 87,118, 54, 57, 91, 84,156, 29, 31,225,131,138,135,
-177, 60, 99, 88,100,212,181, 33,200, 88,212,109, 32, 90,209,164,192,123, 17,247,228,113,225, 69,162, 20,214,250, 30, 69, 31,199,
-219,182,207,137, 15,222,211, 57,135,107, 28,131, 97, 26,247,218, 65, 16, 28,228, 89,194,104,152, 51, 26, 23, 92,216, 25,179,181,
- 49,224, 51, 47,237,240, 51,215, 54, 89, 53,134,251, 71, 75, 30, 62, 60,160,106, 58,190,249,230,247,185,127,116,196,239,127,239,
- 29,254,236,143,223,226,235,223,187,193, 27,119, 30,112,255,222,156,178,181,180,231,118,205, 81, 30,133,136,135, 6,127,167, 38,
-127, 38,229,202,181, 93, 38,195, 2, 25,226,240,197, 19,207,141, 65,200,232,149,117,145,124,165,164, 68,101,154, 97,161, 25, 23,
- 41, 27,121,194,239,189,183,207,215,111, 28, 49,187,121,196,217,173, 67, 56, 94,177, 60, 89,224,131, 35,153, 20,236, 92,219, 98,
-114,253, 42,255,249, 47,190,134,218,220,101, 49,157,160,101,224,167, 82,197,219, 69, 65, 54, 72,185,250,242, 46,249, 51, 23,144,
- 23,183,185, 57,235,248,211, 15, 30,240,255,157,214,124, 93,140,120,127,178,203,175,188,250, 34, 47, 92,222,228, 52, 31,242, 72,
-228,108, 77,167, 60,251,201, 23,153,236,110,112, 40, 20,157,245, 12, 11,205, 32,207,120,118,152,241,153, 66,176, 88,214,124,251,
-100,193,221,166, 98,103,103,141,245,103, 47, 51,188,180,205, 88,143,120,189,236,184,175,167,188,176,181,205, 21, 41, 89, 10,193,
-119, 66,224,123,214,177, 39, 21, 73, 26,149,220,169, 20,180,213, 18, 99,106, 26, 23,248,205,233, 58,207, 12, 71, 92, 72, 50,238,
-217,142, 3,231, 24, 42,152, 52,150,141,249,138,105, 98,145,131,117,110,216,138,169, 74,233,108,135,242,142,253,147, 3,134,211,
- 77,130,113, 44,101,130, 93,206, 8, 85, 5, 62, 16,186, 38,142,225,173,193,227,241, 66,226,250, 11,179,147, 26,145, 74,134,163,
-132, 38, 11,140, 22,129, 79,108,228,252,226,245,117, 62,183, 57,102,146, 37,172,117, 14,177, 90,241,126,115,198, 63, 95, 88, 78,
-207, 22,124, 99,190,136, 86,167,181,141, 8,183,240, 16,186, 50, 90,243, 44,120,215, 60, 41,228, 66,196, 46,253, 41,149, 63,196,
- 97,165,235, 90,198,227,156,165,113,236,138,128,116,134,169,177, 52,174, 37,224,153,183, 45,117,107,168,173,101,182,108,168,170,
- 22,233, 44,141,233, 16,198, 32,138,156,255,228,202, 22,191,188,115,129, 65,170,248, 86,219,208,204,234, 15, 77,205,196, 71, 35,
- 85, 85, 44,228,231, 2, 52, 33,163,128, 86, 90,139,176, 29,162, 44, 17,199, 75, 14,143, 79, 57,105,102,236,132,142,177,237,232,
-154, 18,159, 38, 24,107, 8,109, 69, 22, 60,174, 51, 72,161, 48,222, 32,132,100,173, 24,179,158, 23, 12,178,130,141,124, 76,167,
- 20,195,100,192,246,112,157, 11,105,193,115,195, 33,151, 7, 57,207, 72,205, 21,165, 41,148,228,106,158,179,150,165,124,122, 52,
-101,223, 91, 18, 33, 80, 61,131, 94,156,119,235,177,245,142,161, 72, 46, 10,173, 63,164,144,151, 18,153,196, 68, 68,233,125,252,
-218,121, 68,255,119,162,235, 34,202,214,185, 24,113,237, 61, 39, 93,199, 94,231,249, 32, 56,110,159, 54, 60,244,134,165, 20,124,
-208,118,220,110, 27,110,215, 45,247,188,225, 86,215,241,102,101,120,171,108,184,163, 2,183,156,225, 77,211,114,100, 44,111,152,
-142, 7,117,201, 91,182,227, 86, 91,243,118,109,120,163, 49,156, 25,203,204,122,218, 16,237,171,198, 56, 80,130,214, 70,203,173,
- 49, 6,135,103,222,121,230, 62,142,241, 59,235,121,104, 12,153, 20,204,154,150,206, 90, 66, 99, 17,198,177,108, 60,151, 7,138,
-220, 88,174,103, 41, 82, 4,182,149,194,123,207, 26,208,244,152, 97,107, 61,169,128,101,221,225,125, 96,225, 44,194,199, 60, 18,
- 9, 40, 99, 81,157, 69, 21,154, 68, 41,116,213,162, 85,194, 21, 87,211,233,148,169,177,248,186,137,223,163, 20,250, 7, 9,113,
-221, 15, 94,208,117, 15, 71,144, 50,178,141, 95,185,196,245,205,109,154,206, 51,206, 83,234, 45,199,162,118, 28,214, 11,214,147,
-130, 36, 45, 40,155,134,253,178,138,251,219,164, 23,220,233, 39,251,248, 60, 21, 76,178, 20,130,195,132,142, 73,146,162,148,100,
-152, 11, 76,103, 8,170,163,177,142, 84,129,112,134,164, 72, 73, 4,180, 18,238, 29, 44, 34, 67,128, 64,189,234,240,222,199, 67,
-195,121,116,105, 63,198, 66,167, 79, 30,131, 1,114, 31,139, 91, 34,227,247, 75, 29,139,126,154,210,211, 81,158, 20,251, 85, 10,
-117,253,100,223,254,195, 62,170, 6, 54,198,125,225,238,159, 39,213,167,174,229,253,253,176,253, 33, 33,113, 31,166,237, 61,245,
-244, 18, 60, 95,175, 75, 62,145, 23, 92,215, 25,203, 16, 24, 11,193,179, 66, 62,246, 9, 19, 60,117, 15,140,185,228, 44, 15,206,
- 87, 26,231,135,132,199, 63,183, 31,197,235, 2, 54, 55,226,255,189, 42,123,112, 77,143,158,173,254, 37,133,142,137,132, 32,185,
-251,149,239,114,243,133,231, 41, 62,247, 26,243,213,138,143,189,244, 12,207, 93,191,196, 91,111,222,226,240,209, 35,218,178, 35,
-207, 52,137,210,168, 10, 6,195, 4,103, 3,149, 51,100, 65, 70,217,130,146,228,121, 18,109,107, 62,110, 78, 91, 23,213,169,198,
- 65,145, 73,140,240, 36,137, 70,117,158,144, 71,181,184,214,138,113,145, 80,202, 8,170,137, 23, 60, 65,219, 57,210, 68,243, 15,
-254,240,255,103,236,189,122, 44, 75,179,244,188,231,115,219, 30, 27, 54,125,102,121,215,213,102,218, 84,147,163,129,208, 50, 35,
- 18,148, 4,112, 40, 8,188,162, 0,253, 2,233, 94, 16,248, 19,116, 33, 72, 0, 37, 8,208,141, 64, 2, 26,104, 64,129, 24, 81,
-131,230,104, 60,167, 77, 85, 23,171,170,203,102,101, 86,250, 12,115, 34,142,219,246, 51,186,248,118,102, 86,119, 87,207,116, 0,
-129,116,129,140,115, 78,236,179,215,183,214,122,223,231,253,128, 71, 39, 71, 76, 71, 83, 30,159,156,115,111,185,224,189,187, 71,
-168, 76,114,177,204,217,153,149, 44,214, 61,156, 14,207,125, 54,252,124,142, 91, 72, 21,201,190,198,238,229,248,191,163,224,110,
-199, 31,255,249,207,121,225,249,231,152,190, 85,176, 63,202, 49, 34,178, 21,148,210,104,229, 98,104, 71, 22, 16, 74,160, 4,104,
-163, 72,149, 68, 75,129,244,158,221,182,163,237,122, 78, 23, 39, 32, 21, 75,219, 99,235, 53,235,143, 54, 24,149,178,116,130, 43,
-223,125,145,231, 94,185,200,215, 38, 91,110,221, 60,229,202,209,154,107,103,154,174, 18,156, 94,154,242,200, 42,230,235,142,223,
- 53,158,159,228, 9,122,182,195,235,105,201,205,180,224,197, 36,229, 63,157,106,236,170,226,167,199,143,113,101,193,229,209, 14,
-197, 60, 99,238, 45, 63,217, 70, 26,222,200,193,244,108, 77, 85,102,212, 57,180, 23, 74, 46, 79, 83,246,130,103,190, 51,230,162,
-150,124,250,193, 29,146,229,130,195,124,204,120,118,129,236,194, 8, 89, 55,184,237, 26,181,233,232,131, 39,164,130, 84, 41,232,
- 29,143,117, 73,147,195,105,211, 48, 49,129, 44, 73, 16, 46, 16, 68,100, 46,116, 4,230, 8,246,139,132,139, 89,134,116, 61,119,
- 78, 62,101,103,239, 50,231,222,227,148, 33,145,158,170,171,121,247,147,247,105,199, 59, 96, 12,242,229, 87,241,117, 13,139,199,
-120, 93,198,108,108, 41, 16, 85,141, 48,131,227,164,238,193,158, 99,117, 74,155,101, 8, 7,114,170,153,207, 19, 46,229, 41,115,
-147,160, 9,220,214,154,151,172,227,181, 7,199,188,189, 94,242, 39,155,171, 96, 70, 8,147, 32,144,112,227,121,152, 78, 9,119,
-238, 17, 54, 21,161, 89, 71,189,116, 15,193,200,167, 14,209, 95, 1,170,180, 29, 98,186,195, 6,152, 72,197, 18,129,219, 52,156,
- 26, 25, 59, 87, 21,145,212, 77,213,227,250,142, 41,113,250,120,199,250,168,212,238, 44,178,106,121, 49, 73, 73,133, 66,234,132,
-209,104,194,249,100, 77, 88,213, 67, 2,223,175,129,189, 12,112,172,224, 60, 65,201,167,118, 66, 7, 56,107,177, 52,116,231, 13,
- 31,173,207,248, 95,238, 60,230,251, 38,227,198,108,204,120, 62, 34,155,142,120, 46, 27, 83,181, 53,185, 74,232,251,150, 30, 79,
-146,231,160, 12,217,240, 61, 77, 90, 48,245, 30,235, 29,227,180, 32, 45, 39,216,205,217, 48,114, 15,136,113,193, 15, 66, 32, 67,
- 80, 8,197,186,107,120,171,157,114,212, 52,188,183, 92,242,110,221,162,250, 14,101, 45,194,254, 82,222,251,151, 14, 72, 79, 1,
-156,157,125,154, 1, 47,158,208, 63, 59,139,120,146, 11, 31, 60, 33,209,241,121,246,131, 32,174,247,172,155, 26, 13, 84,149,228,
-241,195, 21,186,200,208, 50, 6, 45, 41, 41,144,168,152, 1,159, 70, 71,147, 16, 17, 61, 13,110,216,178,134, 1, 1,237,241, 77,
-143,183, 30, 55,220,175, 92, 18, 35, 91,179,210,208, 5, 71,130,100, 21, 98, 79, 22,128,160, 4,222,246,172,147, 4,223, 58, 8,
- 29, 75, 25, 87,216, 50,145,144,106,194,166, 67,164,138,157,214,242, 66,106,208,125,203,142,202, 16,222, 71,200,216,112,235, 47,
-132, 36,211,112,180,106, 16,193,115, 57, 87,220,173, 19, 68, 84,101, 32,123,144, 74,163,140, 68,123,152,102,130,203, 74,243,237,
- 82,209, 88,199,117,111,105, 83,201, 81,102,184,185,174,185,189,110, 81,140,174,253,211,191, 85,181,174, 6, 96, 74, 8,112,237,
-128,231,246,102,180, 54,176, 91,150,228,166, 36, 51, 25,123,229,132, 76,104,114, 19, 57,189,163,212,144,200, 64, 97, 4,171,110,
-216,121, 11, 65, 98,146,184, 71, 21,130, 34, 49,104, 9, 55,118,118, 48,105, 74,162, 2, 93,215, 83,164,146, 92, 43,166,165,198,
-216, 64,179,109, 25, 25, 65,187,172, 88,111,207, 73,180,102, 81,109,185,119,118,134,237, 61,146,200,227,133, 39,161, 32, 67,241,
-106,219, 33, 18,181,137,197, 45, 77, 24, 84, 80,207, 70,237,121, 22,191,134,161, 83,183,253,112,120, 81, 80, 87,241, 74,251,155,
-198,240,194, 67, 57,138,190,171, 50,139, 69, 60, 77, 6,117,123, 22,197,135,102, 80,199,123, 23,213,158, 95, 86,156, 63, 25,251,
- 59,207,117,173,240, 66,178, 12,129,145, 15, 84, 2, 82, 33,162, 94, 81, 64, 41, 4,159,217,150, 92, 73, 54, 82, 70, 92, 42, 3,
-100,199,250, 95,180,184,205,119,153, 92, 60,164, 28,141,169,165,142, 83, 11, 61,232,225,131,143, 73,115, 90, 71,135,192, 47, 24,
- 82,252,175, 30,234,228, 83, 63, 10, 31,254,236, 67, 94,255,230,155, 36, 89,202, 98, 91, 49, 46, 50,186, 16, 80,105, 66,181, 90,
- 35,179,148,253,157, 49,227, 60, 65, 34,152, 36, 2,173, 37,163, 68, 81, 91,143,148,112, 48, 54,113,191, 45, 5, 10, 65,110, 52,
- 58,213,200,129, 62, 55, 78,163, 32, 46,114,155, 21,125,231,168,182,150,117,211,177,222,118,212, 85,199,182,234,168,250,158,122,
-211,211, 11,207,189, 59,199,252,139,191,126,155,101,181,166, 76, 13, 82, 64, 19, 98,218,215, 40, 51, 84, 46,208,235, 64, 48,192,
-202, 69, 49,100, 42,163, 8,244,118, 27, 51,143, 39, 17, 88, 65, 42,224,221,138, 59,101,197,139, 87,174,112, 97,103,196, 36, 79,
-227,132, 32, 49,164, 70,162, 7, 26, 34, 34,196,188,119,249,196,109,232,217, 54, 29,171,166, 37, 49, 16,188,164,107,123,200, 83,
-244,197, 93, 46,124,239, 53,190,113,117,151,127,244,141, 27,220,187, 48,231,115, 41,233,203,148,139, 23,167,124,195,247,124,235,
-213, 67,174, 78,225, 38, 41,123, 99,205,181, 89,193,238,106,197, 79,110, 63, 70, 20, 35, 94,191,177,195, 27, 99, 77, 18,122, 14,
-131,229,110,232,184,103, 52,243,249,152,221,197,134,211,211, 37,201, 39,119,169,174, 92, 68,118,142, 63,255,171,183,249,248,143,
-127,136, 93,181,220,125,120,196,173, 7,247,249,224,103,239,115,243,237,119,184,113,225, 58,203,109,207,103,143,239,243,211,155,
- 55, 41,109,199,165,249, 30, 19,163,113,137,198,104, 67, 90,102,116, 94,160,205, 96,121, 37,144,116, 53,127,184,173, 57,205, 39,
- 60,144, 57,191,111, 5, 63, 72, 20,183,109,203,187,109,203, 81, 93, 49,174, 59,246,132, 98, 90, 24,102,227, 9,135,105, 70, 38,
- 37, 69, 89,210, 7,197, 44, 79, 57, 24, 21,232,190,227,130, 16,248, 36,103,163, 50,152,149,132,211, 37,228,134, 16, 20, 1,133,
- 23,150, 32, 19,188, 84,241,179,111,162, 0,108, 91, 19,132, 96,156, 37,236,149,154,203,133,225,165, 81,206,149,157, 25,175,205,
-114, 38, 46,176,168, 90, 94, 15,144,159,159,243,197,250, 28, 49,153,198,131,130, 50, 8,149,192,222, 30,228, 41,225,172,138,185,
-225, 10,188,139,200,226, 32, 69,108, 24,190,252,118,207,198, 48, 74, 56, 13,138, 60,151,180,109,143, 87,154,186,106,113, 74,209,
-247, 14,217,117,132,174,167,116,129,189,214, 33,109, 64, 90,199,194,134,104, 25,235, 45,251, 99,133, 73, 19,254,109,183,229,199,
-173,139,158,228, 22, 4, 81,161, 46,126,185, 75,127, 34,149, 25,108,159, 66,240,180, 91,127, 10,144,241, 50,110,251,250,158,202,
-121,110,182, 13,239,156,158,242,163,227, 51,206,214, 21,174,217,210,119, 61,133, 18,145,251, 32, 5, 86,104,172,209, 88,165,145,
- 69, 70,151,165,104,147,146,100, 25, 34,196, 52,179, 92, 70, 63, 56,222, 51, 53,138, 84, 4,174,148, 35,198,202,112, 99,103,159,
-203,163, 9,151,203,140,189, 36,101,207,104,238, 12, 9,213,191,124,223,252, 21,223,187,247, 40,239,145, 90,199,209,177,181,113,
-179,107,237, 32,184,211,207,244, 7,246, 73,138,167, 4, 27,179, 38,188,235,241,189,197,225,113,193, 98,117, 66, 31,160,239, 28,
-189,209,116, 70,210, 41, 73, 43, 36, 45,208, 10, 65, 27, 2,173, 20,180, 66,208, 13,177,207,164,134, 38,209, 72,161,216,155,141,
-120,177, 76,121,109, 90,114,163, 24,113,161, 72,121, 62, 49, 92,202, 52,107, 2, 85,158,209, 11, 65, 72,211,232,212, 73,212, 83,
-203,119, 16,146, 96,163,125, 13, 9,175, 39,130,111,102,134,239, 22, 5, 19, 2,135, 70, 49,150,177,246,109,189,139, 1,166, 33,
-208,244, 49, 18, 90,133,192,219,155,154,182, 11, 8,173, 80, 34, 68, 87,145,144,131,240, 56,225,239,150, 25,111, 77, 71,188, 84,
- 22, 92, 25,143,120,121, 50,198, 40,197,203,105,198,141,209,136, 61,205,111, 80,212, 97,216,207, 70, 66,154, 60,152,112, 48, 42,
-216, 47, 39,140,211, 49, 62, 8,198,249, 8,163, 83,138, 36, 35, 53, 38, 78,122,197,147,221,143,167,204, 83,150, 85, 3, 74,162,
-130, 68, 42, 65,161, 12, 33,120,118,202, 41,147, 84, 50,155,151, 72, 41, 40,210,140,124,148, 50, 77, 21, 35,163,112,189, 67,186,
-150,126, 93,209, 53, 91,164, 20,124,177,120,200, 7,247,143,105,123, 79,158, 40, 90, 47,152, 10,141, 16,129,174,139, 30,200,129,
-134, 2,205,102,200,132, 7,178, 44,238,209,211,129,150, 39,134,142, 29, 49, 16,226, 6,168,140, 28,188,238,189,143, 7,131,191,
-201,246,165,242,216,253,143,179,120,241,165,102, 40,174,122,200, 86,215,131, 95,125, 80,122,118,245,175,134,227,248,200, 5,120,
- 48,116,232,151,141, 97, 19, 2,115, 21, 59,245, 38,196, 92,241,147, 65,184, 83, 9, 72,125, 96, 43,158,224, 94, 19,184,254, 18,
- 47,191,249, 38,167, 42,135,147, 71,112,184,199,165,217,156,217,168,164, 15,208, 46,206,226,129,198,185,103,143,231, 43, 7, 16,
-191, 92,216, 7, 85,253,151, 62,126,252,103, 63,226,187, 63,248, 62,147,162, 96, 83,215, 40, 4,245,166, 97,178,183,131, 86,130,
-182,245, 4, 9,227, 60, 29,242,135, 21,137, 86, 76, 75,195,180, 72, 16, 42,210,232, 38,153, 33, 47, 12,121,166, 40,141,102,148,
- 27,132, 20,180,189,101, 83,117,108, 58,203,102,221,178,218,182, 8, 5,171,243, 58, 90,221,240, 52,181, 37, 77, 12, 89,153,160,
-130,228,202,181, 61,250,147,115,238,172,215, 40, 4,153, 74, 81,210,179,238, 28,151, 71, 19,118,210, 52,102,237,120,112, 89,128,
-179, 97,194,177,147,194,238, 48,201,209,146,189,195, 49,227, 89,193,246,106, 66,213,195,190, 73,120,225,218, 5,102, 99, 67, 38,
- 20,153, 20, 3, 82, 51, 12,111,228,104,163, 43,148, 33, 81, 10, 23, 60, 54,120,210,204,176, 62,107,216,214,142,157,111,223,224,
-218,215,175,177,127,105, 14, 58,190, 39,166, 77,197,159,254,228, 22,159,255,213,207,249,248, 47,223,225,248,222,154,247, 22, 21,
- 63,215,130,203,227,140, 68, 38,164,101, 74, 97, 36, 63, 50, 41,226,234, 62, 85,106, 56,111,123,194, 78,193, 52, 75,152, 20, 25,
- 63,157,143,153, 94,222, 99,190, 59, 69, 63,127,129,249,124,204, 97,154,226, 38, 99, 38,133,225,218,115, 87,249, 87,255,253,191,
-224,163,243, 5,159, 62,122,200, 71, 15,143, 17,244,124,243,213,215,249,237,239,191,206, 15,255,232, 79,248,131, 63,250,107,142,
-178,148,111, 93,188,200, 56, 53,145, 98, 38, 66, 28, 15, 6, 65, 39, 5, 93,239, 48,196,244, 67,213,215, 60,239, 27, 86,199,143,
- 88, 59,139, 67,241,105, 91,243,133,150,116,206, 82,216,158, 73,223,179, 63, 74,217, 25, 79,152, 76,118, 33,201, 41,243, 9,169,
-201,152,236,237,144,142,199,120,149,112,189,200,185,161,224, 34,158, 68,104, 30,202, 4, 70, 41, 88, 75,240,142, 96, 99,148,101,
- 72, 4,193,197,227, 58, 58,118,212, 96, 17, 30,236, 36,103,150, 39, 28, 22,134,215,198, 5,123,123, 23,201, 76, 70, 17,122,222,
-127,112, 70,102, 52,123, 2, 62, 87,146,190, 48, 72,169, 17, 89,142, 50, 41,255,236,183,222, 64, 36, 25, 31,105, 8,199, 43,130,
-239, 9, 82, 16,188,136, 30, 20,239,127, 33,214, 65,168, 4, 89,230,200,222, 51, 54,146,171, 69, 22,199,241,105, 74,225, 29, 59,
- 62,112, 24, 2, 7, 65,114, 73, 66,230,224,170,150,132,222, 49, 21,158,199, 54,102,181,191,183,220,242,163,170,229,125, 7, 34,
-213,177,128, 21, 58,138,202,172,125, 86,216, 77, 20,147,137, 16,190, 52,118, 39,142,179,135, 80, 25,225,191, 4,120, 29,238, 43,
-193,199,199,238, 1,239, 29,143,183, 91,126,118,190, 38,177,142, 69,240, 44,130,227, 24,143, 51,134, 86,198,174,182,241, 30,153,
- 36, 60, 82,154,218,195, 56, 77, 24,235, 40,236, 19,125, 75, 46, 21,173,107,185,144,100,228, 38,101,119,114,136, 81, 25,249,120,
-151, 66,231, 28,148, 25,187, 90,115, 37,207,240, 90,241,104, 48,109,135, 39, 22,105, 41, 17,169,137, 99,119,173, 80, 90, 33,141,
- 65,105, 25,247,241, 66, 60, 45,246, 79, 70,242,226,233, 4,114,104, 58,188, 37,104, 25,101, 65, 82, 18,178, 2,143,198,151, 37,
- 46, 79,112, 69,129,157,230,244,169,166,147,146, 62, 77,232,148,164, 11,146, 54, 81,116, 73, 74,151, 37,244, 66,208, 43,197,104,
-148,225,132, 97,103, 92, 48,202, 50, 94,152,140,248,157,189,107, 92,204,166,236,155,130,171,197, 52,122,219,149, 98,148, 72, 54,
- 94, 96,211,140,198,187,120,157, 56, 23, 11,185,134, 50, 68, 66,120,231, 61,169,119,124,179, 72,121, 77, 43,130, 12, 40, 36,107,
-235, 40,140, 70, 15, 89, 23,181, 15,116,222, 13, 98, 76,207,113,219, 35,145,156,216, 88,240, 37, 10, 41, 37, 90, 40,166,163,156,
-255, 48, 79,249,222,222,152, 27,163, 17,211, 34,225,181,157,125,188,209,236, 23, 99,146,180, 32, 75, 50,114,165,127,195,162,254,
-164, 0,121, 79,152, 22, 60,183,183, 23, 71, 73,104, 82,173,209, 74, 99,135, 19,164,150, 42, 50,243, 7, 4,236,186,174,216,218,
-142,109, 31,103, 23,233,144,187, 29,132, 32,145, 2, 47, 3,123,163, 17,121,150,147,164, 9,229, 40, 65,248,192, 72, 75,186,243,
- 6,183,173,161,105, 57, 95, 46,200, 36, 52, 77,195,166, 90,113,127,211, 48, 75, 19, 42,239, 81, 1,186, 68,211,122, 71,110,210,
- 56, 49,239,186,161,168, 15, 88, 91,105,134,116,180, 33,192,123, 92, 60, 91, 11, 60, 41,240,114,128,210, 40, 13, 93, 59, 92, 68,
-253, 51,165,250, 87,137, 0,133,135,180,128,100, 16,225,101,201, 64,205, 35, 38,190, 37,195,247,237,186, 56,154,183,225,233,126,
-232, 87,242,218,137, 72, 88, 27, 28,115,109, 56,119,158,141, 16, 20, 64, 13,172, 0, 25, 2, 33, 4,214, 18,148,144,244, 2,216,
- 63,228,191,254,251, 63,224,239,255,206, 55,248,222,107,111,240,231,103, 27, 66,219,242,226,229,171, 92,158, 95,160,245, 13,139,
-135, 71, 67, 92,236,128,173,125,178,143,215, 67, 13,215, 95,174,229,254, 23, 59,117, 63, 28,236,190,244,241,246,241, 25,223,120,
-233, 5,202,113,198,122, 93,211,213, 45,213,102,205,106,177, 6, 33,169,155,158,170,119, 88, 11,163,210,196,236,100,163, 49,198,
- 32,181,198, 72,133, 8,106,176,133,121, 26,231, 88,183,150, 77,107,169,234,158,186,141, 2,146,174,181,209, 74,102, 61, 42,149,
-184, 62, 16,108, 76, 24, 83, 82, 81,164, 9,227, 34, 97,148, 27, 94,122,245, 6,219,163, 13,125,223,113,107,121,142,237, 29,199,
-203, 45, 15,183, 21, 82, 10, 30, 85, 13,253,186, 97,200,187, 4, 35, 72, 15,114,174, 29, 78,152, 21,138, 67,142, 0, 0, 32, 0,
- 73, 68, 65, 84, 31,150,236, 79, 11,140,132,157, 60,231,165,157, 67,190,123,237, 37, 70,249,132, 44,215, 92,156, 23, 4,225, 81,
- 33, 80,119,150,213,182,167,243, 30, 45, 96,150, 27, 46, 79, 51,118,139,132, 84,203, 33, 69, 44,161, 40, 19,150, 77,199,213,231,
- 15, 57, 62,223,242,240,223,221,225,214,159,191,207, 31,254,240,207,249,231,255,247, 95,241, 71,255,211, 79,121,255,147, 47,248,
-232,100, 65,187, 61,162, 93, 45,248,235, 31,255,140, 31,253,228, 61,118, 95,121,147, 99,165, 88,164,154,147, 91, 71,124,240,255,
-252, 25,205,186,230,209,221, 71,144,100,236, 94,156,177,127, 80,240,199,143,106, 92, 22, 35, 84,123,239, 49,206,161,246,103,232,
-193, 50,179, 62,171,249, 81,117,151,160, 20,173,209,124,251,210,132,215,111,188,194,119,222,250, 58,231,219, 13,255,195, 95,188,
-141,223,223, 33,228, 57, 50, 40, 46, 22, 41,120, 71,237, 2, 5,130, 7,231,167,156,110, 27, 84,232,105,186, 22, 25, 28,216,150,
- 18,205,101, 9,163,234,140,251,206,242,184,119,220, 10,146, 92,198,110,233, 85, 35,249,123, 7,151, 25,151, 51, 72,115,102,211,
- 25,203,196,224,141,198,148, 35,188,210,140,178, 20,227, 35,192, 72, 43,208, 72,166, 74,115,150, 20,136,114,132,175, 55,241,144,
-140, 32,108,155, 56,114, 14, 1,130,138, 17,201, 62,110,192, 93,112,228,211, 17,137, 18, 92, 20,129,185, 4,223,119,124,246,197,
- 99,254,223,247, 79,152, 20, 10, 45, 5,255,237,215,223,224, 13, 2, 47,159, 31,113,124,112,133,255,238,197, 75,124,239,219, 47,
-241, 82, 81,242,197,217,154, 59, 71,199,248,229, 54,202, 78,132,199,247,207,220, 33, 79,174,254, 39, 52, 55,105, 61,109,237, 57,
-176,142, 73,170, 56, 72, 19, 46, 5,197,190,148,209,175, 46, 5,161,243, 92, 78, 13,157,130, 44, 77, 17,157,229,139, 44, 39,232,
- 12, 89, 85,216,222, 34,108,204, 24, 16,105,130, 20, 32, 50,131,108,101,180,146, 89,144, 34,196,174,245, 73,183, 62, 20,115, 49,
- 88, 85,159,250,188,127,137,215, 30,158, 82,255, 52, 46,254,111, 56, 9,159, 52,150,159,214, 53,183,132,228, 76, 72,154, 68, 18,
-164,160,149,154, 38, 73,249,184,169, 57,114,158, 50, 77,201, 16,104,231, 49,193,227,250,150,190,175,208, 4,198, 58,229, 96,122,
-137,164,152,147, 77, 14,209,217,132, 68, 23,104, 85, 48, 74, 83,114, 25,176,137, 36, 45, 18,250,178,164, 10, 10,100,202,116,154,
-209,146, 96,138, 34, 90,152,103, 83, 52,154,201,206, 4, 47, 18,246,230, 99, 58,157,163, 70,211,136,253, 72,199, 8, 51, 4,129,
- 25,160,200, 65,103,132, 44, 33,148, 35,194,116, 70,152,141, 9, 23, 15,152,204, 39,136, 34, 71,229, 41,110, 84,210,102, 57, 86,
-107,250,124, 68, 95,148,116, 73, 66,159, 23,244, 73, 14, 38,101, 60,158, 49,205,243,120,200, 28,141, 24,229, 83,110,236,204,121,
-181,220, 99, 87,103, 28,100, 5, 19,101,200, 84,130, 0,234, 16,187,231,181, 12,220,105,162,246, 34, 12,247, 98, 37, 5,116,150,
- 61,169,227, 33,223,122,174, 26,216,241,158,107,153, 38, 21,160,137,133, 93, 6,168,137, 49,212, 50, 8, 30,247,150,142,168, 41,
- 90,224,185,211,247,180, 94, 34,117, 64, 50,116,233,198,240, 15,166, 25,223,223, 25,147, 37,154, 75,101,198, 52,207, 9, 2, 70,
-163, 29,116, 86, 98,178, 49, 82, 39,236, 77,102,191, 97, 81, 31,144,127,136, 4,150, 21,199,169,225,185,221, 61,188, 15,164, 73,
-142, 36,112,190,222,146,153, 4, 31, 60, 18,168,187,134,109,215,224, 67, 96,209,212, 32, 60,174,247,244, 77, 71, 63,228,210, 86,
- 3,102,212, 9,197,245,221, 41, 69,153,162,131,163,175, 26, 66,223, 96,143, 55,172,207,207, 89, 86, 43, 74, 36,167,182, 5,219,
- 80, 87, 53,181, 13,212, 66,224,172, 69, 26,131, 71,160, 6, 81, 90,245, 36,146,117,181, 29, 80,170, 79,246,250, 14, 76, 10,179,
-114,200,251, 13,177,224, 38,146,194, 24,250, 16, 67, 85,250,224,227,223, 75,224,100,245, 12, 55,251,203,133,216,251, 33,212, 37,
-141,144,246,100,240,185,167,195,225,225,201, 76,150, 65, 60,183,173,227,191, 7,251,213, 48, 26, 33, 56, 7, 14,181, 98,229, 29,
- 86, 4, 10,169, 88, 56, 79, 39, 5, 91,215,145, 41, 67, 67,192,136,136,120,172, 58, 5, 23,198,252,147,127,240, 59,140,178,130,
-113,105, 56, 59,237, 41,199, 37,191,251,189,239,243,234, 75,135,140,165,226,157, 15, 62,136, 35,120,223, 15, 62,209, 65, 45,111,
-109,124,156,246, 75,190, 20, 63, 16,246,212, 19,225,160,248, 21,199,169,187,255,152,227, 80,243,252,181,171,140,198, 25,213,182,
-102,189, 58,199, 89,203,226,232,152,114, 50, 99,113,180,164,235, 3,143,207, 43,156, 84,209,154, 38,163,154,188,183,241,162,109,
-122, 71,213, 89,186,222, 71,208,140,136,129, 42,125, 23,255, 44, 85, 28,223, 11, 41, 81, 66, 70, 76,112, 18,133,132,206,121,172,
- 8,120, 27, 56, 59,175, 25, 21,154,114, 52,230,230,157,187,124,124,255, 12, 43, 61, 87,230, 19,206,207,106, 42,233,217, 43, 12,
- 86, 43,156, 13,144,107,152,100, 76,203,148,121,106,216, 73,115, 70,105, 78,153,102,104, 17, 29, 24,227,209,140, 36, 41, 88,157,
- 55,236, 29,230, 20,169,166,178,142,214, 5,214,141,197, 57, 75, 38, 4,243,194, 48,203, 52,153, 86,116,214,209,244, 30,169, 37,
-222, 7,150,171,138,147,187,231, 60,120,255, 38, 15, 63,253,148,197,250, 12,156,229,235,175,191,194,254,171, 25,159,157, 44,162,
-135, 54, 83, 60,191, 59, 6,224,222,201,150, 63,253,232, 35,178,215,191,142, 74, 21,221,182,225,237,255,237, 15,120,240,224, 14,
- 15,190,184,199,163,163,199,236, 95,185,140, 29,101,248, 47,238,242,127,252,203, 31,178, 56,110,233,122,168,148, 98,161, 5,251,
- 72,234,222, 33, 47, 77,248,247,127,240, 61,254,189,255,248,183,121,235,173,111,240,131,139, 87,185,171, 39, 28,125,248,115,254,
-244,131,207, 57,214,138,214, 7,130, 82,212, 68,160,206,197, 44, 33, 39,176, 94,173, 88,172, 23,116,237, 26,108,135, 20, 80,109,
-150,140,178, 17,179,201, 46, 23,139, 25, 55, 38,123, 60,167, 28,157, 80,156,214, 53,243,209,132, 81, 94,240, 79,118,247,121,225,
-240, 2,153, 73,176,105,129, 79, 18, 86, 89, 70, 87,148, 88, 99, 40,115, 51, 76,112, 12, 99, 35, 41,133, 36, 81,158, 44, 81, 36,
-102, 12,197,136,229,100, 10,213, 34, 30,146,141,132,109, 3, 73, 70,112,245,112,232,126, 6,198, 58,239, 90,238, 8,131, 21,146,
-227,147, 37, 71, 39, 43,254,232,139, 5,127,178,108,216,109, 45, 59, 66,208, 28,157, 48,109,107, 46, 4,201,155,205,130,242,120,
-193,230,243, 71,252,228,189,119,121,240,248, 46,155,198,178,233, 33,116,158,176,117,132, 85,207, 19,127,169,208,209,154, 37,123,
-141, 68, 32,203,146,209,225, 14,106, 54, 98,111, 58, 34,241,129,203, 4,114, 23,200,165, 34, 13,158, 84, 27,122,239, 9, 82,146,
- 88, 79,146, 38,140,172,231,174,245,200,209, 8, 89, 53,113, 52,223,244,168, 68, 33,147, 4, 25, 52, 50, 85,200, 36, 71,160,227,
- 40, 90, 12,120, 16,231,159, 65, 93,134,110, 93,252,210, 61,233, 87,139,186,140,137,103, 90,225,180,196, 5,112,194,115,190,108,
-248,162, 15, 28, 97,217,104,184,217, 87, 28,185,142, 19,109,232,156,165,212,134,194, 58,186,182,163,111, 43,182, 93,141,243,113,
- 20,126,169,152, 80,230,115,178,201, 46, 58,203, 80, 38, 31,250, 18,133, 80, 26,215,111,163,115, 33, 85,204,138,148,157,210, 48,
-205, 52,179, 34,101,119,158,179,208,134, 23,230, 37,123,153,226,187,251, 51, 94,204, 50,190,115, 56,231, 98, 89,240,214,165, 61,
- 94,223, 41,121, 99,127,135, 11,147,168,103, 57,151, 9, 54,207, 98,198,249,116, 68, 24,151, 48, 41, 32, 47, 9,179, 17,255,249,
-225, 62, 95, 27, 79,248,209,239,255, 27, 92,170,249,135, 47,191,202,231,206, 82, 37, 25, 78, 42,172, 49,184,124,140, 72,114,118,
- 76,202, 44, 43,153,167, 25,227,180,160,212, 9,121,154,147,231,134,125,157,113, 61, 45,153, 61,109, 84, 29,141,119,148, 58, 69,
- 73,201, 73, 87, 83, 7, 71, 23,224,220,197, 41, 93,112, 81, 37,176, 47, 5, 91,231,226,161,211,122,174,164,146,151,181,100,162,
- 53, 77,231, 80, 18,180, 16,180,222, 51, 23,113, 81,124,106,123,142,156,167, 7,206,122,135,211,134, 5,129,166,143,150, 64, 53,
- 76, 51,190, 63, 75,121, 37, 79,184,150,231,100, 90, 49, 75, 51,210,164, 32,207, 71,244, 82, 67, 26, 83, 67, 71,249,136,206,100,
-191, 97, 81, 79, 74,200, 39, 48, 25, 67, 94,224,140,102,213,117,148, 73,194,209,118, 27,177,126, 74,209,217, 14, 27, 58, 92,112,
- 4, 33, 88,247, 91,206,170,138, 85,223,209,109,122, 88, 14,163,231,222, 15, 10, 87, 79,221,118, 60,222, 86,164,210, 97,108,199,
-227, 71,143, 25,245, 91,206,110,222,226,248,225, 61,170,237,134,164,107,233, 19, 77,127,126, 66,221,247,116, 85,135, 48,138,179,
-222,211, 43,205,198, 7,186, 1,212,223, 9, 73,174,117, 4,104, 56,192,110, 33,203, 99,202, 28, 33,142,170,181,138,167,190, 52,
-254,176,140, 16, 52, 46, 48, 49,154, 78, 4,114, 33, 99,252,251,166,141, 29, 93, 87, 71, 77,192,175, 43,236,195, 69, 77,145, 70,
- 98, 93,211, 61,227,220, 19, 24,178, 4, 97, 84,192,114, 29, 59,245,175,234,252, 7,117,206,227, 16,168,165,100, 44, 20,139, 39,
-240,194, 16,152,232,132, 51,107, 73,129,199,192,152,192,170, 11,160, 53,175,223,184,194,206,180,228,147, 91, 11,126,252,225,135,
-124,253,133, 55,249,238,215, 46, 51,202, 51, 28, 29,127,246,215, 31,196,239,221, 91,144,238, 89,138,222,151, 11,186,181,177,160,
-155, 47, 57, 29,158, 78, 50, 6,203,158, 29, 14, 76,244, 44, 62,189,203, 66, 90, 94,126,233,121,102,187, 99, 64, 99,109, 79,221,
-108,184,119,255, 30, 88,135,109, 61,203,229,150,243, 85,195,233,121,195,218,122,172,141,190, 89,231,163,195,194,135,128,145,177,
- 8, 10,169,201,180,196,203,216,157, 40, 35, 16, 66, 34,165, 36,205, 53,133,137,130,196,182,237,233,157,195, 59,135,240,129, 64,
- 32, 47, 82,138, 60,165,171, 60,125,191, 98, 99, 61, 7, 69,201,238, 36, 99, 55,207,152,100, 5,175,236, 31,242,218,213, 43,188,
-121,237, 26,175, 93,188,204, 97, 57, 66, 4, 79,166, 19, 38,217,148,131,209, 62,179,241, 30, 69, 54,102,182, 51, 39, 73, 36,105,
-154,113,176, 59, 97,111,162, 88,111, 45, 39,171,150,186,235,169, 91, 75,221, 91,172,139, 0,139,101,221,115, 92,117, 3, 9,174,
-103,185,109,208, 82,112,113, 86,240,209,199,183,233,250,142, 16, 4, 35,109,184,183, 60, 33, 79, 51, 14, 14, 71, 60,114, 29,155,
- 91, 43, 62,187,189,224,161,119,120, 35,232,110,159,209,126,251,155, 92, 26,101,236, 28,140, 56,249,236, 19,148,239, 57,216, 27,
- 65, 87,113,231,193, 49,207,141,103,188, 46, 60,147, 44,229, 95,253,243, 31,242,243,191,124,155,183, 63,250, 16,125, 86, 99,179,
- 25,166,245,140,171,134, 31,254,233, 59,236, 23,134,145,150, 20,179, 17,238,227, 79,241, 67,222, 64,109, 3,199,206,226, 69, 64,
-170, 56,169, 58,175, 26, 90, 91,113,220,108, 57,107, 43,130,119,232, 32,144,193, 33,138, 49,105,146,241,234,124,143,121, 81, 34,
- 19, 67, 62,158,115, 56, 46,185, 50,157,242, 87, 31,188,199,215, 14, 46, 51, 25,229, 92, 48, 57,107,161,168, 68, 32, 76,198, 52,
-243, 49,173, 16, 84, 38, 35,205, 13, 65, 41, 14,159, 16, 32, 59, 75,131, 64,107,195, 74, 40,242,217,156,231,167,187,124, 97, 74,
-168,150,132, 60,137,211,182,103,180,249,248, 62,214,106, 0,154, 88,108, 23,184,237, 61, 39,157,227,167, 85,199, 23,210,115, 41,
- 79,184,150,104,174,171,136,236,157, 27,141, 14,150,169,131,169,183,204, 17,220,208, 57, 47,107,133, 10,150,119,122, 31,133, 84,
-101, 70,152,150,188,240,252, 14,103, 58,143,108,141, 81,142, 24,101,177, 32,239,207,201,247,118,184,182,127,153,217,236,128,249,
-116,159, 92,107, 70,193,146,185,192, 54, 56,140,146, 36, 73, 74, 34, 6,199,128,128,233,222,140,217,188,228, 40,205, 81, 23,247,
-163,202,185,239, 81,235, 10, 57, 88, 48,149, 78, 80,169, 70,149, 41, 50,201, 72, 38, 99,176, 49, 66, 86,120,135,124, 50,138, 15,
- 1,225, 37,226, 75,147,181,240, 43,133, 93,226,181,138, 68,104,173,113, 42, 90,245,172,244,184,174,230,188,246,124,190,173,169,
-145,156, 40, 88,245, 14,163, 18,232, 43,166, 72, 82,235, 88, 85, 11,100,176, 84,206,145, 4,199,133,108, 74, 49,222,197, 36, 57,
-114,176, 31,203,201, 24,130, 36,244, 29, 65, 6, 26,122, 58,165,176, 18,210, 36,193, 72, 73,145, 37, 36, 70,147,103,134,151,139,
-140,239,141, 74, 94,204, 83,158,159, 76, 25, 39, 57,175, 76,103, 76, 76,193,149,162,228, 32,205,153, 37, 9, 23, 70, 57, 23,114,
- 77,154,105,202, 82, 51,202,114,108,150,209, 25, 67, 57, 46,248,135,243, 25,223,158, 28,242,252,104,135, 71,191,243, 22,255,205,
-243, 47,243, 63,102, 19,190, 31,122,110, 11, 73,167, 13, 33,201, 73,116,202, 78,146, 48,214,154, 50, 81,200, 32, 73,132, 32, 49,
- 5, 82, 72,118, 76,202,142, 50,236, 73,197, 60, 43,105,251, 14,109, 18, 76,136,218,171, 46, 56,106,239,121,228, 90,142,154,158,
- 42, 68, 59, 93,240,158,113, 8,180, 34,218, 16, 19, 1, 29,130, 66, 6, 14, 6,235,116, 98, 20, 59, 34,174, 24, 82, 25, 27,151,
-202, 7, 62,235, 45, 39,222,179,176,150, 45,130,181,119,116, 38,234,127,100, 26,119,252,215,199,138,151,115,205,243,121,138, 20,
-130, 81,154,160,164, 38, 49, 41, 38, 77,192, 36,104, 19,139,122, 35, 98,224,213,223, 94,212,181,142,214,180,217,124, 16, 97, 9,
- 16,138,106,213,112,127,185,166,182,209, 7,152, 36,154,117, 91,177,109,107,182,237,154,117,191,102,177,173, 56,174, 42,186,227,
- 13,156,157,199, 98, 94, 85, 81,141, 93,213,136,237, 54,170, 89,235,134,187, 15, 79,120,239,227,219,124,120,255, 17,243,163, 99,
-214,143,207,201, 60,200,161,227, 95, 29, 47,208,206, 81,183, 61, 8,168, 2, 60,106, 44, 91, 17,208, 8, 66,162,249, 79,190,241,
- 61,238,159, 60,196,250,128,147,192,182,130,218, 66, 91, 71, 65,156, 28, 40,115, 58, 5, 99, 40,202,148,174,235,201,211, 20, 45,
-161,114,118,160,155,129,237,226,206,132,109, 29, 11,221,223, 52,134, 71,193,116, 52,236,238,135, 81,126,154, 12,150, 64, 61, 20,
- 66, 11, 65, 32,148, 66, 84, 27, 68,111, 17, 95, 65, 92,122, 34,116,235,172, 98,173, 2, 90, 68, 14,242,121, 8,232, 16, 34,164,
- 14, 34, 54, 83, 39,116,218,209,183, 29,231,139, 19,126,244,233, 61,254,221,237,207,185,125,255, 24,161, 36,207,221,184,206,106,
-185,225,230,199, 15,120,239,131, 79,160,170, 65,182,241,249,200, 47, 89,225,244, 19, 33,202, 64,201, 99,176,121,241, 37, 74,223,
-147, 36, 58, 63,168, 86, 92,124,218, 39,159,220, 65,151, 25,207,189,248, 28, 89,145, 34,101, 66, 94,142, 25,143,198, 24,173, 57,
- 95,157,147,153,148,221,249, 4, 43, 3,182,237, 89,174, 42, 64,144,164, 26, 57,236,168,227,168, 73,160,181,192, 40, 73,145,106,
- 18, 19,137,116,153, 49, 24, 19,109,113, 10,129, 35,142, 44,181,150, 24, 36,163,113, 74,150, 27,250,214,211,244,129,157,249,156,
- 36, 24,246, 77,201, 40,201,216, 29,237,112,101,231, 50,251,179, 3, 82, 41,201,211,130,188, 40,200,211, 17,163, 98, 66,130, 97,
- 50,218,225,240,224, 34, 87,175, 95,226,107,111,220,224,107, 47, 95,225,205, 23, 15,249,250, 75, 23,153,239, 77, 16,202, 48,201,
- 60, 77,107, 99,247, 69,244,172, 55, 85, 79,135,199, 9, 65,229, 28,221, 32,124,169,186,136,225, 61,152, 22,188,114,121,206,195,
-227, 45,119, 31, 61,102,103,186, 67, 49, 26,209,185,142,207,142,143,104,123,203, 56, 55,164,179,148,116, 47, 35,201, 36,223,184,
-178,207,115,215,230,220,122,251,109,158,251,238,183, 40,115, 77, 62,158,115,247,157,247,200,140, 36,207, 82,150,103, 43,116, 83,
-225,102,187, 92,254,254,107,140,115,205,135,239,223,102,188,109, 41, 55,231,188,240,234,235, 28, 26,193, 97,154,240,205,221, 61,
-206, 22, 13,237,195,115,206,190,120, 72, 21, 28,202, 5,250,222, 18, 46, 93,229, 19, 39, 8,213,150,107, 73,202, 89,189, 65,119,
- 53,139,106,195,162,238, 57,204, 52,243,124,196, 56, 47,240,166,160,204, 10,174,150, 35,174,152,148, 34,207, 88,151, 41, 91,239,
- 41,138, 18, 35, 53, 95,191,246, 28, 82,193,121, 8,164,147, 9, 15,157,195,141, 74,150,169,230,204,104,164,150, 56,161,232,144,
-236, 22, 6,225, 97, 44, 5, 53, 49,102,119,225, 61,169, 76,121,253, 96,204,127,121,117,204,126, 49,229,199,157, 64,108, 22,113,
-181,149,165,241,194,211, 89,196, 52, 59, 16,122, 0, 48,185, 14,183,109, 57, 9,158,115,225,153, 11,201,141, 76,113, 45, 53, 28,
- 26, 69,153,106,180, 81,140,147, 4, 58,203,193,100,196,100,186, 79,158, 23,228, 74,147, 25,205, 50,133, 59,121,130, 43, 82, 94,
-187, 52, 38,207, 12,201,200,176,108, 3,210,129,148, 9, 98, 90,240,143, 47,206,248,230,206, 46, 59,211,125, 70,229,136,185, 78,
- 64,101,236,248,232,165,158,100, 25,173,139, 97, 71, 94, 66,162, 20,179, 23, 94, 35,187,244, 18,187, 47,190,201,213,107, 55,184,
-180,179,207,165,253, 67,100,230,216, 10,129, 92,108, 80,117,143,202, 13, 42, 77, 81,227,130, 23, 15,246,249,123, 55, 46,243,234,
-193,152,135, 94, 96,183,219,193,227, 29, 6,133,248, 87, 11, 93,159, 29,125,124,100, 60, 40,249,180,160, 63,241,222, 59, 15,206,
-117,184,117,199,106,189,230,180,182, 28, 47,215,156,250,154,188,173,144,109, 5, 93,133,113, 29,171,170,198,225, 24, 11,201,229,
-209, 46, 70, 36, 36, 73,142, 42, 75, 40,226, 90,209, 91, 75,111, 59, 58,223, 83, 7,203, 90,120,250, 97,122, 58,206, 18,114,163,
-104,133,228,235,101,201, 85,165,249,198,120,202, 72, 38, 76,147,132,189,108, 66, 80,154,195,108, 76,105, 10, 70,218,112, 49, 31,
- 35,131,103, 47, 43, 41, 18,205,200, 24,178, 84, 51, 79,227, 8,250,141,188,224,149,209, 14, 55,202, 57, 66, 74,190, 99,226,234,
-243, 37,223,225, 85,164,105, 30,251,152,126, 55, 1, 74,157, 70,235,157,212, 24,161,208, 42, 1, 17,200,211, 20, 27,122, 46,153,
- 52,254, 28,131,167, 24,210, 73, 91,231, 72,141,102,221,183, 44,250,150, 19, 34, 6,246, 92,128,117, 14,233, 3,162,181,140,156,
-163, 31, 68,205,137, 8,172, 16,236, 9,207,133, 68,115,160, 20,189,119, 44,109, 28,213,111, 61, 28,133,192,167,189,163, 3, 90,
- 1, 94, 10, 86, 74,178,237, 37,157,209, 8,165,216, 77, 52,215,114,195,235,121, 74,130,192, 11,193, 78,154,129,214,148, 89, 74,
-167, 12,163,108, 66, 67,192, 10, 65,171, 20, 45,242,111, 43,234, 26,242, 18,230,243, 65,232, 37, 98, 39,234,135, 96, 22,231,105,
-125,207,178,179,100, 26,186,224,144, 74,177,172, 42,142,235,154,199,143,150,184,199, 3,198,117,187,133,122, 27, 59,102,219,197,
- 95,251, 54, 50,144,235, 77, 76,105,170, 54,132,186,102,234, 36, 47, 29,236,176,236, 59,164,209,116, 3, 19,183,147, 18,229, 60,
-107, 33,216, 75, 18,238,160, 56,173,106,132,144, 96, 61,159, 31, 61,196, 5, 31,187,246,174,141, 20, 55,250, 72,192, 99,232, 66,
-251,161,163, 30,231,244,141,101, 84,150,108,218, 22, 51,248, 64,219,206, 34,108,244, 75,211,181,195,213,223,199,199,236,134,240,
-151, 95, 46,236,154,232,209, 87,102,240,245, 63, 17,176, 13,100, 62, 37,163, 16,166,107,227,191,119, 62, 42,235,127, 73, 21,250,
-180,168,135, 0,210, 83,106, 77, 39, 33, 23, 34, 54, 51, 65, 48,214,154, 62,120, 52,130, 99,239,216, 19,134, 76, 56, 30, 45, 55,
- 60,120,184,102,217, 68, 15,250,241,221,251,124,186, 88,114,235,254, 57, 63,124,231,231,112,239,193,240,216,186, 65,252, 38,191,
- 4,191,249, 50,227,241, 75, 93,250,147,130,254, 36,208,135,129, 91,224, 35, 24,230, 73, 0,243,237,143, 62, 37, 45,115, 94,126,
-237, 69,164, 22, 84, 85,220,177, 23,163, 17,222,247, 52, 93, 77, 62,158, 34,125,236,198, 43,219,209,214, 61, 89, 97,168, 90,135,
-181,129,118,128, 5,101, 70, 12,137,107,146,204, 68,174,123,162,163,167, 61, 75, 35, 36,168, 72, 12,137,145, 20,153, 97, 50, 74,
-217,153,229,236,143,114,116,102, 72, 83,205,238,180,100, 50,157,144,148, 99,164, 77, 41,179, 73, 60,104,204, 38,104,149, 82,148,
- 37,229,100,130,239, 28,163, 73,201,165, 43,151,120,225,185,171,188,244,194, 33,175, 94,155,113,125,191,228,112,148,178,172, 60,
- 39,149, 37, 83,129,159,124,252, 41, 31,125,122,139, 11,135,115,186, 16,109, 74, 1,232,156,197, 89,199,170,238, 56, 91,214, 44,
- 87, 53,155,117,195,114, 81,177,218, 52,224, 3, 51,173, 57, 93,183,172,214, 13,203,245, 25,206, 58,164,210,104, 17,184,119,182,
-161,183,158,113,110,112,206,243,112,213,209,245, 45,207, 31, 92,224,130,134,254,249,151, 40,210,132,189, 11,115,254,206,223,125,
-139,127,253, 71,127,129,198,146,164,138, 59,103, 43,108, 82, 50,187, 48,231,229,215,111,144, 9,207,189,229,130, 43,187, 5,147,
-170,230,181, 23,110,160,100,244,212,103, 70,113, 84,181,244,125,141,245,129,102,179,193,246, 45,119, 31, 63,224,139,119, 63, 34,
-236,205,249,189,107, 47,242,163,197, 9,250,236, 20,223, 91,174,204,199,204,243, 49,187,229, 4,159, 21,140,138,146, 81,146,112,
-209, 7, 14,147,132, 10,207, 23, 65, 18,140,166,114, 1,202,156, 44, 79,163,151,118, 50, 97, 45, 5, 39,227,156, 83,239, 57,107,
- 29,105,158,208, 33,216,108, 58, 92, 31,181, 19,107,101,184,231, 2, 43,157,176,242,154, 66, 27,124,219,241,143, 47,141,184,190,
- 63,166,212,112,115,107,216, 14,221,210, 75,218,177, 40, 75, 84, 97, 8,153,161, 40,115,108, 63,192,150,140,140,141, 67,223, 16,
-218,134,149,183, 8, 23,152, 75, 73, 39, 60, 34, 79, 40,166, 41,218, 24, 18,173, 24, 21, 69,212,120, 36, 57,141,117, 44,148,100,
-101, 18,198, 38,176, 78, 52, 70, 74,178, 84,115, 94, 91, 54,181, 5, 37,249, 71, 23, 10,254,233,197, 57,191, 59,223,225,107,229,
-156,153,210,156,166, 57,157, 16, 92, 8,129, 52,120,114,111, 89,119, 29,101,145,177,117,142,253,162,160, 30,205,209, 7,215,217,
-185,124,133,253,113,206, 94, 86, 32,146,168, 50,223,223,217,231,242,100,204,168,148, 44, 87, 21,186,181,232, 50,198,170,254,222,
-245, 23,248,173,253, 75, 76,138, 57,171,212,113,212, 6,100,211, 33, 91, 79,220,172, 63, 41,236, 79, 70,111,191,104,193,123, 86,
-216, 45,222,232,167,183, 51,175, 98,172,177, 87, 34,170,253,113,132,243, 53,225,248,132,118,181,229,222,189, 5,247,206,150,152,
-174, 70, 88,139,235, 58,148,247,140,145, 28,152,132, 60, 31,163,179, 18, 97, 36, 66, 39,248,182, 39,216, 46,194,110,250, 45, 15,
-251, 13, 27,192, 72, 65, 47, 20,185,140,174,158, 23,178, 28, 21, 60, 95,203, 70, 84,222,179,151,143,208, 58,197,152,132, 84,103,
- 72, 19, 15,241,133,206,232,125,199, 44, 25, 97, 67, 20,252,153, 36,165, 39,144,106, 69, 34, 4, 87,139, 9,215,210, 18, 7, 8,
-101,112,193,161,148, 96,150,166, 44,173,101, 65,207,137,139,148,186,204, 40,100,240,104,169,209, 33,234, 94, 52, 2,149,168, 56,
-169, 19, 10,239, 45,123, 58, 37,115, 49,181, 45,174, 81, 4,125,223,113,220,213, 60,234, 59,142,125,207,178,110,169,188,163,222,
- 84,120,231, 72,136,233,141,115, 37, 41, 8, 44, 3, 36, 14,238,123,193,124,144,250, 87, 66, 48, 29,178, 46,238, 5,207,207, 26,
-203,137,136,119,227,141,128, 70, 8, 86, 8,182, 14,102, 25, 36, 8,156,150,124,215, 40,114, 21, 72,165, 34,151, 10, 37, 97,100,
- 12, 94,106, 50,157, 18,148,198, 73,195, 86, 42, 92, 16,212,206,253,109, 69,221, 67, 49,137,197, 41, 75,145,105, 74,158,153,184,
-115,126,194,126,223,214,224, 61,139,147, 21,167,189,231,164,173, 88,220, 63,166, 62, 90,195,253,251, 49,106,175,105,127, 45,113,
- 78,124,197, 8,122,108, 20, 78, 25,198,121,202,102,216, 73, 97, 20,161,237,177, 70, 83, 40,205,143,219, 22, 41, 29,141, 84, 52,
-125, 28,127, 58, 31,227, 63,159,250,192, 87,213,160, 54, 31, 32, 51,142, 24,161,234, 93, 76, 72,155, 79,232,186, 14,169, 4, 14,
-137, 36,224,196,192, 77,223,110, 99,145, 14,196, 68,165, 39,187,102,220,175, 22,117, 33,162, 32, 47, 49, 81, 5,255, 36,110,240,
- 75, 4,168,104,155, 27,168,119, 74, 12,135, 26,251,171,150,143,167,248,215,104,191, 16, 66,209,136, 64, 75,160, 28,138,236,142,
-138,202, 78,124,160, 35, 48, 21, 9,210, 58, 54,161, 39,172,182,209,166,101, 27, 86,189,229,168, 90,194,249, 42, 30,168,156, 69,
- 72,251,139,223,199,126,169,176,243,165, 46,253, 73, 97, 87, 67, 65,127, 26, 43,203, 51, 55,192, 19,201,128,132,207,222,255,152,
-253, 75, 23,185,252,220, 37,130,144,241,166, 93,109, 98,206,177,119,156, 30, 69,246,248,225,165,125,210,196, 32,165, 98,127,146,
-179,173, 45,219,206, 98, 18, 29,173, 98,131,242, 88,105, 25,119,234,131, 30, 40, 51, 10, 41,100, 28, 83,132, 24, 96, 49, 42, 82,
-178, 52, 33,211,138,162,212,164, 3,163,160, 72, 37, 89, 98, 40,138, 4,167, 3,206, 90,140, 82,228,217,152,209,180, 36,201, 12,
- 74,105,188,179,204,103, 35, 46, 94,153,114,105,167,224,202, 44, 35, 79, 52,141,245,124,113,222,242,120,189,225,232,248, 17,111,
-191,251, 14,159,223,249,152,119,111,221,230,133, 27,215,153,143, 51,188,139, 81,172, 77,211, 83, 55, 29, 77,213,179, 89, 54, 52,
-155,134,237,186,162,173,163,117,241,112, 82,208,184,192, 23,199,231,204,247,247, 64, 26,206, 54, 75,214,237,134, 68, 27,146, 52,
-208, 59,143, 11, 1,105, 36,153,150,172, 58,203,221,229, 25,214, 89,142, 63,187,197,139,223,120,157, 43, 70, 49,145,138,249,213,
- 43,172, 62,191,137,147, 49, 69,110,181, 56,229,185,195,203,204,118, 70, 92,127,245, 6,133, 72,120,251,147,155, 76, 83,193,119,
- 94,123, 61,142, 97,133,224,104,211,114,210,247,156,110, 54,252,235,144,113,195, 85, 60, 88,157,241,227,179, 83,154, 71,167,240,
-224, 1,223,159,103,124,162, 10, 30, 39,154,229,135, 15,120,245,234, 30, 89, 94,146,103, 5,118,160, 96,181, 82,145, 9, 65,112,
-158, 62,201,184,217,244,164,211,130,109, 27,185, 1, 73,162,152,206, 74,156, 13, 44,156,228,124,219,114,182,110,232,170,138,243,
-243, 45,235, 85, 67,150, 72,232, 58, 10, 9,171,198, 67,154,210, 39, 26, 53,206, 89, 39,134,165,147,172,130,229, 18,240,251,103,
-150, 59,125, 20,118,190,216,175,113,218,112, 65, 9,190, 57,155, 96,140,231,226,184,164, 44, 37,139,173, 7, 23, 16,125,253,165,
-123,137,227,204,118,124,216, 86,188, 93,247,172,164, 67,105, 67,105, 34,223, 94, 5, 71,240, 61,155,174,230,147,174,226,166,132,
-165,237, 81, 54,130,100,214,189,163,233,123,238,156,117, 32, 5,151, 71,134,223, 27,165,252,214,108,198, 56,203, 81,206,210,120,
-203,231,213,134,190,222,162,155,138,108, 16,147,101, 66,198, 12, 4,163,217, 72, 77,153,164,152,233, 1, 7,187, 51,198, 69,206,
-220, 40, 10, 41,240,214, 49, 73, 82,102,243,125,158,219,191,198,155,151, 46,243,202,254, 28,187, 62,231, 82,154,243,189,157,125,
- 46,236,204,240,198,112,167, 17, 60, 76, 4, 74, 39,200, 52, 65, 56, 27,239,109,222, 35,126, 81, 20,243, 11, 35,248,167,157,123,
-128,160, 36, 94, 69,175,187,215, 50, 22,125, 69,140,254,236,135,228,189,182, 3, 2, 77,215,113,123,221,177,170,107,142,234,138,
- 16, 4,133, 22, 28, 74,193, 40, 27, 35,149,142, 94,116,231, 8, 93, 71,223, 84, 84,245,146,181,171, 88,248,158,115, 28, 54, 8,
- 74,165,216,120,199,133, 36,103,233, 29,175,166, 37, 78,192, 78,154,227, 66,160, 76, 75,156,148, 36, 67,167, 29,144, 32, 60, 18,
- 69,235, 45,141,239, 81, 82,196,164, 70,165,240, 56,180, 48, 28,100, 25, 59,186,196, 17,133,144,133,214, 52, 46,242, 12,206,187,
-134, 47,250,154, 51, 27, 83, 21,147,224, 49, 62,166, 45,106, 17, 48, 2,204,144,224,102,131,167, 11,158,214,121, 18,219, 49,147,
-138, 4, 73,211, 54, 88,107,121,216,108,185,217,172, 57, 13,150,133,235, 88,247,142,123,103, 43,124,219,195,166,162,109, 59,138,
- 32,201,148,103, 97,195, 83,109,208, 38, 4, 30,181,158,187,210, 83,247,158,255,175,237,249,172,182, 44, 67,224,175,154,104,239,
-189,221,131, 87,129,147, 14, 86, 34, 82, 64,141, 86,100, 18,180, 8,212, 34,112, 73, 73, 10, 33, 41,132, 64, 43,129, 64,146,104,
-131, 73, 50,122,101, 56, 69, 80, 17,232,130,199,255, 70,234,119,229, 33,207,193, 36,140,203,156, 30, 71,110, 98,238,186,171,251,
- 88,176, 23,143,225,232, 4, 78,142, 8, 15,143, 34,175,184,218,254,198,108,147, 95, 46,236,167,206,243,242,100,140,205, 20, 90,
- 64, 19, 4, 88,135, 50,154,166,107, 56, 87,138, 76, 9, 30,183,158, 83, 47,162, 2, 52,132, 33, 28, 96, 80,118,111, 99,188, 94,
-204, 74,183,207,226, 98,245,144, 25, 63, 60, 7,180, 38,248, 64,112, 46, 30, 8,194,128,114, 53, 67,215,237,109,204,154,175,171,
-248, 90, 72,241,235, 19,215,166,243,152, 57,175, 99, 44,171,176,195,215,139, 33,226,181,233,227, 24,223,251,248,152, 93,247,213,
-232,245, 39, 2, 60,192, 89, 69,103, 5, 19, 3, 99, 33, 81, 74, 81, 57,135,247,158, 14, 24, 11,112,196, 19,232,105,227,152,164,
-208, 58, 23,247,248,121, 49,188,163, 29,244, 53,162,111,159,165,185, 61,117, 53,248, 97,189, 96,159,141,229,191,124, 59, 8,225,
- 41,244, 98,240,202, 12,135, 27,255,139,157, 62,240,222,143,127,198,181, 23, 95,226,226,181,125,148,138,227,240,190,173, 9,193,
- 19,164,167,235, 90,206, 78, 79, 89,158,173, 57, 61, 57,229,248,180,102,211, 52, 44,207, 42,130,145,212,173, 99, 85,117,228,169,
-137, 36, 37, 25,187,118, 33, 32, 49,146,220, 72, 50, 99, 40, 51,131, 82,138, 44,215,228,137, 65,232,103,137,123,189, 13,120,160,
-106,226,227,156,142, 50, 46, 95,156, 82, 76, 50,246,246, 51,202,169, 97,190, 83,176,183, 87, 50,219, 31,243,198,245,125, 14,167,
- 25, 69,170, 56, 95, 53,188,247,197, 17,127,241,238,199,124,246,217,103, 60,184,247, 57,239,126,248, 1,239,220,185,203, 7, 71,
-103,220, 91,214,204,172,231,245, 87,111,144,104,133,146,130,214, 58,234,186,139, 74,233,100, 80,231, 35, 48,153,224,187, 59, 99,
-174,239, 78, 88, 54, 29,247,207,150, 28,238,205,152,204, 10,148,202, 73,188,225,209,250,148, 68, 42,186,224,176, 33, 48,207, 51,
-202, 84,115, 56, 29,147,106,137, 87,130,169,239,121,225,198, 75,104, 41,105,140,164,219,159,179,253,226,140,176, 61,167,200, 34,
-147,253,179,207,110,114,249,197, 23, 80,121,202,141,235,135, 76, 68,198,163,197,130, 63,249,252, 30,223,184,122, 13, 39,224, 94,
-219,241,227,247,255,138,127,249,254, 71,156,187, 45,159,156, 63,230,246,241,130,243, 91,199,132,205,146,208,215,252,248,206, 61,
-170,197,121,212,126, 92, 61,224,179,207,239,241,181, 43, 87,232, 16,104,147, 32,165, 70, 73, 67, 45, 37,231,193,115,146, 40,130,
- 49,180, 77, 71,235, 4,181,243,148,133,142, 14,141,174,103,187, 56,161, 91,109,120,184, 94,163,172,165,173, 43, 18, 44, 73, 83,
- 83, 12,139,148,121,145,144, 24, 9,121, 78, 39, 36,231,121,202,120,148,241, 96, 27,248,201, 73,205,209, 98,203, 73,103,121,113,
-123,206,166,111,185,150, 25,178, 44, 99,229,122,174,103, 5,149,235,249,121, 19,248,214,229, 41, 15,151, 77,212,183, 40,255, 21,
-250, 23,199,163,186,225,167,235,154, 73,237,168,154,158,181, 11,220,238, 90,254,109, 93,243,158,235,120,108, 27,250,182,165, 58,
- 89,178, 17, 48, 71, 82,213, 45,137,132,177,145,228, 26,126,123,146,179, 39, 32,241,176,174,215,252,116,121,198, 95,110,215,248,
-110,131,169, 43,164,237, 72, 17,204,180,194,202,152,123,208,218,158,198,164,204, 38,187,204,178,130, 50, 79, 81,157,195,244,142,
-177, 73, 24, 39, 49,222,118,119, 50, 66, 39, 57,187,187,251,188,178,127,141,203, 50, 33, 23,208, 55, 29,119,234,138, 7,189,227,
- 76, 72,212, 56, 71,230, 10,145,151,136, 52, 71, 8, 29, 27,135,158, 47, 37,221,127,133,120,206,251,104, 15,244,224,181,124, 6,
-219, 81,224,219,246, 89,135,159, 38,241,158, 85, 78,162,226,123,119,206,114,235,216,236,206, 41, 85,180, 90,153,106, 73, 46, 20,
-216, 30,231, 2,206,246,212,245,146,141,173,120,208,174,121,224,123,194,112, 24,239,173,101,100, 82, 30,246, 45, 87,179,156,218,
-121,118,147, 12, 33, 4,101, 54,198,227, 24, 23, 99, 54,189,197, 38, 6,223,119, 36, 73,130,247,129, 62, 6,145,178,234, 59,156,
- 20,108,156,165, 37,250,243,149, 80,132, 0, 83,157, 80, 26,141,247,144,105,195,178,169,185, 93,175,184,213,212,172,172,165,119,
- 22, 33,160,243, 29,184, 30,231,122,164, 23,212,125, 77,215,182,113,109,208,117,212,237, 10,217, 55, 44,251,142,166,171, 57,233,
- 27,150, 93,197,173,102,197, 99,103,121,212,110, 57,247,150,202, 5, 78,215, 91,194,106, 75,240,241, 48,153, 36,134, 32, 4,153,
- 20, 20, 74,176,112, 30,235, 97, 27, 96,225, 5,183,122,207,194, 11, 30,118, 61,183, 58, 71,135,228,220, 7,122, 33,216,122, 73,
- 31, 2, 4, 65, 72, 37,170,243,148, 6,218, 32, 81, 42,176, 35,227,253,246,192,104,206, 58,143,146,195, 24, 31,193, 93, 4,149,
-214,108,173,195, 42,205,169,237,126,131,162, 46,135,113,241,124,142, 49, 18, 53,156, 66,170,174, 31, 84,225, 50,166,183, 53,221,
- 47,118,124, 38, 25,198,209, 67,241,252, 13, 18,221,158, 22,119,163,185, 27, 20,151,138, 4,239,162,154, 93, 40,205,178,169,241,
- 58, 3,231,248,211,109, 75,162, 52,219,174,123, 54,178,126, 18, 74, 51, 96, 72, 89,159, 15,227,227,225, 77, 46,205,112,189, 91,
-240, 38, 78, 32, 82, 3,189, 67, 9,143, 25,242,208,131,148, 76,132,164,109, 26,216, 14, 65, 44, 97, 16,136,245, 3, 0,225, 87,
-242,209,135, 56,131, 44,133, 34, 69,108,187, 24, 30,131,143,175,159, 34,230, 78, 53, 45, 34,196,132, 34,209,118,113, 63,246, 85,
-175,131,247,113,220,175, 61, 16,149,171,137,144,180,222,145, 72,193, 8,141, 23,209,226,118,223, 91, 82, 33,120,209, 72,250,224,
- 89, 63, 61,180, 71,127,232,244, 96,143, 23,222,120, 13,117,225, 2,219,109, 15,161,128, 55,223,226,183,127,231, 63,227,158,115,
-136,211,123, 3,246, 54,137,107,132,108, 54,144,244,220,211, 20,165, 39, 12,249,120, 24,248,245,232,220,119,254,242,199,188,241,
-157,111,177,115, 56,197, 24,141, 48, 17, 4,227,173,199,139, 16,223, 68,244,180,182, 37,132,192, 98,177,160, 40, 74, 50,147,210,
-182, 22,147, 74,242, 68, 83,166, 6, 59, 88,251,139, 68, 33,130, 36, 77, 34, 38,209, 7,143,210, 2, 51,172, 16,210, 65, 89, 47,
-164, 32,213,160,165, 36, 85,138,249, 40,225,218,126,201,238,184, 32,203, 19,202,145, 65, 75,197,254, 52, 99, 50, 74,160,235, 89,
-215, 27, 30,174, 54,252,252,243, 35,126,244,206,187,124,252,241,251,252,240,131,119,249,232,209,125,126,254,248, 49, 31,221, 62,
-230,252,108, 75, 95, 59, 72, 21,143,215, 75, 94,191,126,131, 75,187, 99, 18, 45,233, 7, 63,233,141,189, 17,111, 28, 76, 48,101,
-138,212,146,231, 74,195,235,243, 49, 58, 4, 62,126,184,224,180,110,184,118, 48,101, 90,102, 60, 56, 62,231,202,254, 30,105, 82,
- 98,148,224,218,197, 43,236,230, 35,178, 52, 33, 77, 36,243, 52, 99,150,151, 92,221,221,103, 50, 26,241,232,206,125,194,206, 5,
-238,120,135,208,146, 27,223,122,137,229,199,247, 16,182,166, 76, 19,188,119,124,254,241, 45,246, 47, 94, 98,220,116,220,184,178,
-199,121, 29,200,131,229,224,149,235,180,121,224,255,250,131,255,147,211,236,144,147,106,133,255,236, 1, 77,223, 81,183, 45,225,
-100, 67,168,150,208,219,168,228,237, 35, 62,149,182,131, 43, 23,185,174, 52, 90, 27,180, 82,244, 2,130,183, 56, 9, 78,104,214,
- 29,100,153,161,239,123, 84,179, 5, 27,120,116,182, 65,216,142,237,249, 18, 87,173,113,237, 22,221,181,156,184,158, 77, 8, 20,
-125,203, 78,128,185,235, 25, 19,152,107,195,104,148,162,149, 98, 17,162, 80,236,226,200,112, 48, 47,208, 38, 69,105,201,158,131,
-102,189,228,249,105,206,231,235, 45, 85, 83, 51, 78, 19, 54, 78, 18,148,224,181, 81,202,191, 93,118, 4, 45,226,248,157, 4,136,
-150, 72,190,228, 51,143,133,205,242,254,166,229,253,206,178,178, 45, 15,131,231, 78,221,179,168, 58,110,159,158,243,201,249,154,
- 99, 47, 73, 15,167, 28,142,115,122,231, 56,119,150, 92, 10, 50,161, 48,157,101,209, 54,252,236,228,140, 63,124,112,202, 63,123,
-188,226, 81,235,223,218,122,142, 0, 0, 32, 0, 73, 68, 65, 84, 40,250,154,210, 58,250,224, 56, 52,112,142, 98, 36, 35,244,164,
- 82,154,115,192,168, 17,187,147, 9,174,233,145,137,162,237, 44,157,237,153,142, 50,242, 84,147, 35,152,101, 9,210, 72,228, 40,
-103, 60,223,197, 8,131,237,122,100,215,161,113,164, 66,178, 22, 10,161, 21, 34, 53,200, 81, 10,227, 2,161, 82,152,140, 96, 60,
- 66,204,102, 48, 29, 62, 85, 2, 98,136, 58, 30, 92, 65,193, 71,239, 63,206,199,146,233, 6, 63,126,154, 12, 22,194, 36,162,116,
- 83,141,184,122, 41, 94, 15, 55,174,210,212, 91,252,120,143,170, 93, 34,203, 9,105,187,161, 35, 32, 92,207,233,246,148,135,253,
-154,155,205, 57,183,250,134, 58, 4,114,165, 56,235,123, 10,163,169, 67, 96, 71,106,110, 91,203, 11,105, 70,231, 45,123, 3, 86,
- 91, 11,201,253,182, 65,100, 25,155,182, 67,165, 41,174,235,105, 67, 36,190, 45, 92, 75,175, 36, 39, 93,131, 11,130, 30, 75,227,
- 44,214,119, 20, 90, 51, 18,138, 92,106,130,117,212,182,227,110,189,230,131,237,130,135,117,197,195,166, 34,177, 29,139,205, 6,
-219,119,136,182, 66,186,150,163,213,130,174, 94,115, 94,109,184,249,248,152,227,205, 25,155,243, 21,141,175,121, 92,109,184,181,
- 93,241,160,221,242, 97,181,226,182,183, 28,185,150,165,117,108,123, 79,223,121,172,137, 19,226, 32,227,244,163, 19,224, 19,133,
-245,112,226, 35,222,213,138,161,190,200,232, 12, 32, 12, 26,181,109, 19, 67,139, 92,120,182, 10, 85, 17, 40,132,133, 30, 1, 22,
-198, 38,208,183, 16, 8,236,132,168, 35, 19,193,211, 58,203, 61,239,168, 93,207,210,104, 78,125,160, 22,112,218,247, 52,184,223,
-160,168, 59, 23,109, 77,121, 17,115,109,125,244, 20, 71, 16,118, 23,137,105,155,234, 23,153,230,105, 18, 85,230, 98,160,237, 60,
- 21,173,254,134, 81,173,206, 17, 18,201, 35,239,201, 18, 77,145,106,238,172, 27,110, 20, 57,143,154,154,207,164, 71,120,197,137,
-227, 89, 7,110,135,168, 83,231,159,112, 19,227,239,187, 38,118,221,246, 73, 94,252, 80,241,236, 96, 61,211, 42,142,124,134,238,
- 2, 37, 25, 11,201,170,237, 73,122, 27,215,198, 77, 19,199,248, 16,159,167,245, 95,253, 58, 57, 96, 92,198, 40, 65, 99,158, 61,
-134, 68, 33,150,213,179, 9, 65,219,198,215,198, 61, 27,193,127,101, 97,103,232,216, 77, 44, 84, 78,122,118,134, 28,225, 6,203,
- 4, 73, 47, 34,125,110, 46, 37, 39,206, 81, 15, 63,124,242, 98,112, 43,104,190,121,245, 57, 94,190,112,157,111,191,246, 53, 66,
- 6, 15,215,129,255,234,119,255, 35,254,139,255,224, 5,222,250,230,215,121, 72,224,248,163,219,209, 37,144, 20, 17,154, 19, 52,
- 40, 59,164,222,133,103,241,181,246,215, 20,244, 98, 20, 41,117,192, 95,255,155,191,224,205,183,190,199,222,254,152, 36, 75,201,
-199, 17, 29, 60,158,206, 41,166, 35,242,162,164, 44,198,164, 69,134, 78, 52,245,118,201, 98,177,224,236,108,129, 16,154,245,214,
- 97,117, 20,157, 44,219, 62, 2, 54,132,136,161, 6, 66, 80,217,104,119, 19, 16,177,172, 79, 70,139, 2, 50, 25,119,241,137,138,
-113,168,121, 98, 8, 90, 83, 26, 67,145,166,236, 76,114,114,105,216, 52,150, 85, 93,211,214,150,109,219,113,126,178,230,241,163,
- 71,124,248,240, 17,119,238,158, 83,173, 27, 90, 27, 96,107, 33, 85, 20,251, 25, 47,237, 77,152, 22, 6,187,172,217, 59,220, 35,
- 85,154,210, 36, 92,158,229,188,185, 63,229,202,238,136,157, 44,193,139,192,170,141,252,231, 63,187,121,159,159,222,250, 28,215,
- 89, 46, 30,238,177,169, 90, 30,159, 46, 33, 75,217,187,176,135, 16, 9,194,121, 52, 10,135,136,202,230,196, 48,206, 11,102,211,
- 29,116, 94, 98,130,103,251,197,103,220,201,118, 41, 52, 72,173,217,236,236,113,252,232, 4,217, 86,100, 74,147, 39,154,234,241,
-130, 23,111, 92,198,143, 75, 70,215, 15,185, 56,155,243,220,133, 9,255,243,255,250,191,243,216,106,110, 62,188,135,127,239,179,
-216, 97,244, 3, 40, 41,209, 48,140, 94,201,146,120,205,118, 33,178,240, 23, 43, 62, 29,101,252,252,236,148,185,140,176,155,182,
- 9, 72, 36,219,222,227,189,163, 58, 95, 83,120,135,105, 26, 54,213,130,166,233,121,176, 92,243,117,111,249,142,250,255,185,123,
-179, 88, 79,211,252,190,235,243,108,239,246,223,207, 82,167,214,174,234,165,122,186,123,118,207, 52,198,177,227, 69, 38,118, 98,
- 71,193,114, 34, 43, 66, 17, 4, 9, 41, 8, 36,110,184,135, 11, 64,202, 69, 16, 8, 16, 8, 4,145,130,130,132, 4,138, 9,177,
- 49,182,135,140,199,158,173,103,198, 61, 61,189,119, 85, 87, 87, 87,215,114,234,236,255,253,221,158,133,139,231, 61,117,170,151,
-217,130,114, 97,254,210, 95, 71,213,234,243,255,191,231,125,158,247,249,109,223,197,176,221,172,249, 95, 95,125,135,105,162,152,
-183, 53,173, 15,156,107, 23,236, 8,120, 6,216,202,114,130,137,243,113,169, 20,189,194,240, 92, 63,163,144, 48,201, 20,152,132,
- 69,229, 24, 38, 57,199,171,154, 13, 45, 24, 38, 18,231, 26,188, 8,224, 21, 90, 75, 46,171,192, 93, 27, 58,133,200, 64,168, 98,
-135, 41, 88,255,177,118,116,144,158,202,183,220,169, 43,110,156, 44,120,255, 96,197,157,195, 25, 15,103, 51, 78, 86, 11, 14,147,
-148,187,189, 28,231, 5,223,159,215, 44,124,212, 42,210, 26, 94, 94, 52,124,103, 85,243,207,239, 30,243,206, 73, 13, 58, 26,207,
- 12, 7, 25, 57,130, 84, 43,246,130,194, 39, 9, 7,193, 51,147,154, 67,169,144, 82, 83,122,199, 80, 37, 4, 99,152,151, 53,199,
-182,197,118, 92,231, 84, 70,153,217, 44,209,228,157,219,159,151,130,180,200,217,233, 13,120, 34, 31,115, 25, 67, 17, 2, 9,146,
-125,239, 58, 49,154, 72, 17, 37,213, 29, 86,168,207,197,115, 19,126,229,210, 57,126,245,137,203, 60,113,174,207, 29,169,105,181,
- 1, 17, 25, 7, 4, 79,176, 54, 86,153,222, 71,113,152,212,196,162,103,178, 1, 27, 35,206,237,108,178,218,222,138,103,231, 96,
-192, 24,139,239,111,208,184, 10,219,223,224,126, 61,227,158, 73,121,111,190,207, 93,225,184, 85,206,120,208,214,188,189, 94, 16,
-108,205, 72, 41,246,109,205,213, 52,227,196, 58, 82, 33,216,199,243,108, 90,240, 70, 83,115, 53,201, 57,112, 22, 33, 4,239,218,
-150,190, 73,249, 65, 85, 34,180,228,164,169,104,164,162,242, 45, 75,160, 68,112,220,148, 44,189,167,148,138,149,107,105, 90,203,
-220,182,164, 66,162,130,227,214,226,132, 58,180,220, 94,207,184,177,156,242,160,109, 56,110, 43,234,170,225,100,182,162, 89,174,
- 88,175, 74,102,211, 5,135,211, 25,139,195, 37, 71,251,199,204,142,166, 52,135, 7,212,251, 83, 22, 71, 83,118,247,167,220,245,
-154, 70,171, 24, 36,149,102,213,182,148, 77, 32, 72, 73, 89, 91, 86,222,178,180,254,145, 57,149,232,101,120, 33,105, 90, 79,109,
- 36,161,245, 56, 29,133,130, 30,157,155, 42,137,138,108, 74, 64, 17,129,154,103, 50,129,157, 69,169,232, 92,234,188,165, 9,158,
- 66,195,134,130, 99,231,232, 35,152,150, 13, 43,111,249,147, 69,133,177,142, 3, 36,139,208,130,144,204,125, 4,138,214,136,159,
-144,210,230, 92,156,201,230, 5, 33,216, 24, 60,155, 58,182, 60,151,107, 88, 47, 62, 28,176, 83,211, 9,183,116,182, 61,167, 22,
-166, 63,133,255,122, 0,146, 34,103, 90, 55,184, 32, 73,240,124,253,112, 69, 98, 4,109,235,216,175,125, 87, 61,119,124,115,173,
- 98,183, 32, 87,176,174, 35, 31,220,159,122,134,119,215,108, 84,231, 59,222,137,195,184, 22, 76,246,200, 65, 45,116, 66,179,141,
-173, 9,222,227, 84,128,217,178,163,165,117, 98, 54,237,143, 80,151, 75,101,228,242,107, 29,221,136,124,180,116, 21, 77,211,113,
-216, 29,212, 54,154,222,167, 18, 33, 76, 76, 58, 78,173,246,126,152,240, 79,231,143,254,172, 78, 89,227,200,145, 44,136,129, 77,
- 7, 40,164,228,158,181, 92,209,154, 61,101,104,179, 33,161, 95,116, 9,129,224,194,198,132,107,151,159,140,200,209,124,192, 43,
-187, 31,240,111,252,234,231,249,212,149, 9,227, 66,179,191, 47,120,253,165,239,117,237,247, 78,156,199,119,162, 61,117,123,214,
-129,249,104, 64, 47,178,120,255,174, 63, 15,131, 49,108, 92,128,227, 35,192,243,237,175,252, 41,159,251, 75, 63,203,120, 84,224,
-136,244,143,114,189, 98,117, 60,195,121, 71,219, 52, 81,224,195, 89,234,186,162, 63, 26,146,164, 9,179,147, 25, 7, 7,187,104,
-211, 35, 0, 59,147, 30,163, 92,227, 36,156,148, 13,166,211, 87, 87, 2,124,136, 92,119, 33, 5,153,142, 85,158,150, 26, 41, 85,
-244,146, 14, 2,143, 68, 40, 25, 15,203, 68, 70,189,248,202,177,110,106,172,107, 81, 26,166,139,134,245,170,230,251,183,222,224,
-157,189,121,228,154, 42, 21,147,209, 76, 49,218,200,184,216, 47,216,232,103,108,247,251,212,190,197,137, 12, 47,213, 35,145,190,
- 69, 21,165,108,119, 79, 86,188,124,251, 33,239,221,127,200,205, 7,123,220,216,123,128,117,142, 98, 48,100,114,126,147,219,247,
-246, 89,206, 23,148,229, 42,186,212,245, 50,174, 93,187,196,249,139, 27,244,123, 3,180,202,176,173, 37,237, 15, 41,155, 53,182,
-110, 16, 90,145, 21, 5,217,221, 91,204, 70, 91,140,100,224,122, 63,227,249,103,159,102,125, 82, 17,234, 57,121, 86,144, 38, 25,
-199,211, 22,181,179,201, 94,213,240,236,229, 77,254,163,255,244,191,224,181,111,191,193,244,189,251,132,249, 52, 74, 89,166,130,
-176,170, 9, 78, 17,146,132,225,102,143,122,101, 65,248,200,248,176,113, 92,116,249,242, 54,139, 96, 97,235, 9,126, 69, 84, 4,
-149, 50,111, 26,172, 11,220, 43, 75,214,117, 77,174, 53,214,181, 80,206,168,235,154,253,197,140,145,146,252,198,120,194, 53,101,
-216, 80,134,230,226,121,158,154,108,112,239,248,136, 70, 6,174,226,185, 28, 2, 67,109, 24,248, 22,147,100,184, 16,152,154,132,
- 11,189,132,169,139,136,248, 74, 8,122, 50,176,118, 62,170, 34,162,104, 76,142,105, 3, 43, 27,169,167,155,169,225,104,221,146,
-230, 41, 3, 41,217,119, 46,210,223,180, 36, 52, 14,178,156, 80,175, 63,196,221,126, 92, 51,221, 75,112,218,199,119, 7,100,242,
-117,133,175, 3, 7,203,150, 48, 91,196,115, 57, 81, 44,140,161,173, 28,117, 89, 35,234,238,124,201, 2, 33,207, 88,104,195,168,
-208,232,188, 0, 99,168,165,198,106,197, 2,193, 80, 18, 21,191, 58,252,236,222,122,201,126,219,112,100, 75,214, 30, 22,109, 75,
- 79, 42,114, 21,249,236,198,131,177,142,108,144,115,113,107,200,214,120,192,168, 87, 48, 50, 25, 67,175,201,165,198, 90,203,145,
- 16,177,163, 18, 58,157,116, 35,121,170, 63,224,111, 95,186,194, 95,185,116,149,141,172, 71, 45, 13, 7,161,229, 80,201,248,188,
-230, 69, 84,214, 44, 6, 49,208,164, 5,194,228,209, 69,115, 99, 19,206,141, 33,203,248,204,230, 6,207,231,154,139,249,144,237,
- 36,231,124,127,204,115, 9,156,235, 15,112, 85,197, 42, 29,178, 91,214,232, 65,159, 89, 83, 82, 74,201,253,122,197, 40, 53,145,
- 2, 38,224,185,164,224,157,182,225, 66,154, 49,199,115,197,100,188,222,212, 60,159,245,121,205, 86,140, 84,194, 59, 33,112,222,
- 24, 94,105, 74, 46, 36, 57,175,181, 13,107, 9, 55,154,146,131,110,170,182, 86,154,123,214,226,140, 33, 56,139, 82, 6,149, 36,
-236,151,107,148,183,188, 52,159,241,126,189,226,219,199, 71,124,251,232,152, 91, 85,195,237,163, 41,179,217,138,102,177, 34, 44,
- 86,132,178, 34, 44,231,177, 72,105, 60,193,183,113, 39,172,235, 24, 87, 37, 4,105,163, 86,100, 11,195, 73, 63, 22, 94, 33, 48,
-115, 1,235, 60, 7,109, 75, 42, 37,211,224,112,182,165,105, 44, 20, 73, 28, 47,122, 98,140, 8, 34,198, 1,219,129,141,148,124,
-100, 28, 38,186, 14,103, 32,196,160,190, 88,158, 41,159, 74, 16,170, 51,175, 9,145,194,188,106, 29,139,210, 97,240,220,154,213,
-220, 44, 27,222, 94,214, 76,107,203,205,117,203,173,170,137,250,154, 34,142, 95, 87,193, 82,150,229, 79, 24,212, 79, 3,187,239,
-244,209,203,170,227,155,183, 17,185, 94, 86, 31, 49, 0,209,143, 80,223,248, 83,190,120,243,211,153,136, 56, 71,211,180, 88, 89,
-112, 56, 95,115,216, 74, 84, 2,211,101,195,244, 84,183,187,141,178,149,168,238,100,149, 34, 2,243,210, 46, 19,242, 46,210,217,
- 48,157,154,154,143,227, 0, 97,227, 99,157,100,241,161, 72, 35,208, 44, 40,213,101,176, 93,101,186,174,187,207,233,192, 99,117,
-243,163, 19,147,214, 66,154, 68,105,195, 83,254,109,219, 62,194,151,161, 4,233, 86,159,191,247, 11,159,229, 11, 87,118,248,204,
-213, 29, 94, 93,183,112,112,244,113,214, 1,143,181,229, 93,180, 35, 60, 20,130, 73,128,105,240, 92, 82, 9, 46, 4, 86,206, 50,
- 84, 26, 21, 60,203,126, 31,113,105, 27,159, 22, 52,242,148,150,230, 89, 53, 53,231,243,130,224, 28,251, 71,247,121,111,239, 24,
-213, 66, 49,232,243,238,238,154,255,253,155,223,164,124,247, 78, 76,118,172,237,208,254,246, 49, 79,121,251,225, 57,122,218,135,
-254, 8,174, 94,227,201,167,159,230,231,158,249, 12, 69,158,146, 37,154,217,178,130,114, 1,192,183,254,248, 79,121,254,103,191,
-204,100,220, 39, 16, 40,215,117,228,165, 59,135, 76, 20, 70, 39,164,131,156, 36,205,241,221,131, 34, 59, 94,120, 86,228,156,204,
-150,236,159, 44, 57, 92,181, 44, 86, 45,182,182,148,141, 35, 75, 21,206,197,249, 32, 34,138, 58, 32, 4,214, 5,210,196,144, 24,
- 29,133, 48,132,140, 10,111, 50,138,110, 4, 31, 56, 94, 53, 28,206,151, 20, 41,236,238,175,184,253,193, 33,135,135, 83,254,219,
-191,255, 31,227, 46, 92,227, 92, 95, 50,109,227,104,233,234, 86,193,115,231,199, 20, 90,113,105, 50, 98,107, 48,164,245,142, 69,
- 89,177, 94,206,217, 24,111, 16,132,228,120,177,230,131,227, 21,183,246,230,188,125,255,144,233,225, 49, 77,213, 48,155,207, 59,
-228,173, 33, 47,250,180,173,224,222,221,219, 4,239, 41,203,117, 20, 94, 42, 75,164,201,184,184, 51, 97, 60,204,121,225, 83,151,
-216,220,220, 96,190, 88,211, 44, 43,150,235, 21,149, 83,172,231,199, 40, 37, 88,220,120,141,139, 91,151,201,140,166, 21,160,159,
-216,193,222,185,207,108,185,100,144,247,153,156, 59,207,231,175,159,231,229,247,118,249, 63,191,251, 22,239, 52, 21,161,108,160,
- 46, 9, 36, 81, 45,205,219,168,206,102, 27,152,244,249,119,159,218,226,217,243, 3, 94,185,127, 4, 78, 71,237,123,173,153,159,
- 44,249,210,246,152, 23, 38, 59,252, 7, 63,247, 34,127,248,242, 55, 24, 20, 57,223,152, 30,243,160, 46,185, 55, 59,160,169,150,
-188, 59, 59, 1, 15,235,122,201, 27, 15,247,248, 66,166,121,177, 63, 98,152, 20,204,109,203, 74, 90,254,195,127,243,175,178,145,
-143,249,254,189,125, 46, 40,203, 57,161,216, 9,209,145,175,157, 47, 56,177,160, 18, 73,139,166,159, 39,212,225,140, 62,234, 91,
-199,210,118,192,174, 34,163,241,129, 75,105, 1, 38, 37,209,134,161, 49, 84, 74,113, 80, 86, 76,101,231, 56,153,103,132,113, 63,
- 58,251,109,108, 16,122, 61,130, 73, 9, 38,199,215,229,163,201,243,227,239, 83,170,151,247,158,176, 90, 18,230, 75,130,111, 32,
-207, 17, 91, 99,138,126,143,214, 68,165,200, 32, 69,215, 1,108, 97,111,142,149,146,157,157, 9, 99,109, 40,117, 26,177,176, 66,
-208, 55, 41,147,108,128, 70,144, 40, 73,161, 36,211,118, 69,226, 29, 85, 93,113, 82, 87,180, 90, 49,183,150, 60, 64,129, 66, 87,
- 13,253, 34,101,251,194,128,254,184, 71,111, 82, 32, 19, 67,162, 13,133, 52,168,186,198, 21, 9, 53, 41,115,147, 34,104, 17,203,
- 5, 56,207,207,108, 20,252,252,214, 54,227,162,143,150,134,239, 47,102,188, 84, 89, 90, 37,161, 40, 96, 56,130,241, 48,186, 88,
- 22,177,117,207,176,135, 56, 55, 70,108, 12, 32,201,248,237,115, 19,180, 8,244, 85, 66, 47, 81,124,106,178,205, 88, 64,149,228,
-248,182,100,115, 48,162,106, 27, 54,122, 41,179,218, 49, 40, 18,230, 66, 48, 74, 50, 22, 66, 49, 82,154,167,139,130, 91,222,241,
-116,214,231, 1,158,109,147,114,211,181,124,161, 24,242,186,109,120,190, 24,114,219, 53,236,104,195, 77, 41,121,218,100,220,241,
- 45, 27, 42,225, 43,171,134, 59,109, 64, 43,205,161, 72, 57,242, 45,100,195, 40, 17,157,230,216,166,230,192, 5, 46, 24, 67,233,
- 90,116,213,240,157,131, 53,251,123, 83,202,227, 5,213,222, 67,194,172, 36, 44,203,184,215,215, 77,236,216, 56, 8,173, 3, 17,
-249,254, 17, 48,221,126, 8,135, 16, 26, 75, 16,146,121,101, 41, 6, 25,139,224,153,173, 43,130,209,140,148, 98, 29, 2, 25,112,
-210, 90,130,245,143, 5,244,199,156, 47,101,167,147, 46, 59, 90,176, 52,241, 12, 61, 29, 19, 11,209,197, 6, 23,207,202,166,138,
-197,166, 13, 81,115,193,118, 64,229,198, 97,181,100,181,172,104,239, 28,224,119,134,132,170,138, 14,134,117,133, 93, 91,246,102,
- 37, 33, 85,236,207, 23,204,235,146,121, 85,253, 20, 65,189, 3,155,196, 25,115, 29, 51,145,229, 52, 86,199, 31, 13,116,237,169,
- 63,123,167, 47, 30,236, 79, 85,165,127,168, 13, 47, 34,194, 51, 40,112,243, 21, 78, 71,167, 40,116, 71,191,242, 93, 27,163,233,
- 28,218,132,136, 45, 68, 41, 98,219,220, 73,240, 21,164,105,188, 86, 69,156,167,159,250,144,247, 11, 88, 85,177, 45,213,118,237,
-230, 32,186, 68,197,199,224, 92,182,177,218,255,104,242,242,137,192,128, 40, 8,129, 84,143,104, 99,143,108, 20,123,138,223,249,
-220,115,124,249,179,215,185,118,229, 18,189, 65,159,137, 49,188,121,119, 63,222,207,254, 4,182,182, 97,251,114,119, 96,116, 98,
- 57,105, 52,124, 9, 65,177,173, 4,233,233,193, 35, 37, 70, 37, 84, 69,193,232,218,147, 20,151,174, 32,242, 1, 66,122, 18, 37,
-177, 68, 81,150,160,160, 45,167, 52,229,138,187, 7,251, 28, 77,103,220,218, 61,226,251,119,142,185,189,123,132, 78, 3, 83,217,
-121,200,231,166,115,228,235, 16, 53,217,169, 61,173,120, 36,246,241, 59,127,251,111,240,155,191,249,235,252,214, 95,126,145,207,
- 92,127,138, 34, 45,104,203,150,131,114,198,108,185,140, 93,157, 14, 33,255,210, 87,254,140, 39,174, 63,205,165,203,231,208,137,
-193, 5,129,107, 91,108,211,210, 84,209,187, 90, 73,133,210, 18, 39, 2,109, 93, 33,141,196,186,104, 35,136,128,217,241, 34, 58,
-142,245, 83,238, 60, 56, 97, 94,182,172, 43,199,176,103, 88, 55,142,117, 29,157,151,124,128, 52, 49, 56, 33, 98,192,116, 33,250,
-186,187,208,209,118, 2,193, 70, 69,191,187, 15, 23,124,251,123,111,178, 94,174, 81, 65,112,225,153,231,217, 24,110,176, 44, 79,
- 48, 6,206, 13, 50,182,122, 57,105,146,160, 4,244,211, 12,165, 52,173,109, 73,181,138, 66, 55,227, 62,155,163,130,224, 3,109,
-221,224,156,163, 90,173,177,190,198,214, 45, 38, 55, 12,134,131,232,159, 83,215, 28, 30,239,177,174, 74,172,143,146,201, 50, 64,
- 99, 91,214,203, 5,249,160,207,221,123,135,236,223, 59,100,213, 88,202,178,138,244, 32,231,168,133,102,160, 2,101,179, 66, 6,
-193, 63,127,243, 13,174, 94,185,198, 50, 81,120, 41, 96, 99, 27,125,120, 72, 80,146,171,159,190,198,238,225, 9,255,253,127,253,
-143,216, 31, 13, 8, 65,112,117,123,196,201,209,156, 96,163,189,103,112,154, 32, 45, 1,201, 95,237, 23,252,141,171,151,152, 76,
-206,113,151,150,189,131, 69, 92,107,219,194,186,102,119, 81,177,215,204,233,111, 95,226,205,226, 2,127,114,251, 6,203, 15,222,
-167,109,214,184,195, 35, 78,238, 60, 96,189,156,243, 96,247, 33,187,199,115, 88,172,121,113,152,112,217,244,104,129, 91,205,146,
- 69,211,240,153,139, 23,248,218, 94,197,157, 96,120, 38, 84, 12,133,230,138,201,240, 77,205,180, 92, 49,173, 86, 52,141,101,152,
-165, 72, 35, 17, 70,162,188,160, 42, 91,142,234,200,201, 14,137,162,240,129,103,198, 3,182,123, 57, 79,142, 70,108, 21, 3, 84,
-218,167,245, 18, 31, 2,203,186,100, 59, 49,156,207,115,174, 12, 70, 12, 55, 71,108,109, 78, 56,119,110,135,213, 32,167,214, 2,
- 95, 12, 9,182,194,183,246, 19,131,251,153,147, 88,108, 83,227, 26, 66, 0,159,104,124,104, 34,142, 72, 40,254,206,149, 17,127,
-237,137, 77,254,108, 81, 19,170, 53, 15,156, 68, 20, 61, 6, 89, 2, 58,165, 16,138,173, 52,163,113,158,139,105,193, 42, 56,150,
-109, 77,102, 18,178,224,105,218,146,204, 40, 78,234, 53, 85, 8,184, 0,125, 2, 61,169, 40, 50, 67,186,221, 39,233,231, 72,173,
-162,131,105, 16, 80,182,164,206,147, 56,135,207, 53, 83,217,167,202,250, 48, 62, 15, 82, 48,240, 13,147, 96, 81, 54,240,205,147,
- 35,190, 58, 91,112,212,214,144,102,244,139, 1, 73,154,146, 38, 9, 77,154,128, 17,136, 44, 69,228, 25, 36, 25,191, 56, 28,242,
- 75,219,155,140,211, 30,107, 33, 80, 4, 54,250, 27,188,190, 92,115, 97,115,147,188, 90, 49,200, 71, 28,172,231, 12,123, 99,180,
-107,240, 73, 74, 45, 65,163, 88,184,134,158,148,172, 67, 96, 22, 60, 79,154,140, 93, 1,219, 66,242,126,176, 92, 55, 5, 63,104,
-215,124,177,152,240, 70, 91,243,132, 73, 57, 20,146, 39,133,230,221,224,184,164, 12, 95,171, 45, 90,167, 44,146, 52, 42,215, 25,
-137,206,114,110, 47, 42,134,195, 49,109, 93, 82,166, 57, 89,154,145,138, 20, 35, 2,137, 12,172, 68,224,120, 81, 19,234, 10,188,
- 32, 40, 27,215, 47,184,104,186,162, 32,184, 78, 73,179,237, 4, 58,234,211,130,165,195, 93, 88, 23,139, 25, 35, 8, 73,193,220,
-123, 86, 62,158, 79,198,195,202,121,188,245, 76,109,131,111, 61, 94,118,138,114,174,251,189, 54,196,100,207,187, 88,220,213,174,
- 43,238,162, 48, 26, 82,119, 44,168, 83, 68, 98, 32, 74, 24,218, 88, 48,182, 1,154, 53, 66,201,200,220, 10,237, 35,239,145,254,
-207, 61,207,175,255,194,175, 49,185,180,197,221, 31,188,129,119, 14,239, 26,124, 91,115,184, 42,217, 95, 58, 30,204, 75,118,231,
-229, 79, 25,212, 93,231, 7, 94, 55, 17, 13,222,254,136, 96, 29,186,249, 51,246,147,103,208, 63, 77, 31, 94,133, 88,233,135, 78,
- 60,166,237, 2,185, 15,103,148,171, 83, 32,151,144,241, 64,106, 59,212,182,179,157, 14,123,135, 80,119, 26,124, 19, 51, 85,219,
-145,141,243, 36,182,153,173,139,111,245, 88, 85, 90, 69,126, 42,101,219,181,236,221,143,189, 94,225,186, 44,190,181,145, 67,239,
- 99, 71,225,252,185, 17,191,246,165, 79, 51, 30,111, 32,181,102, 60, 28,160,148,231,107, 15, 14,163,144,198,198, 38,191,252,133,
- 95,226,153, 43,207,176,177,189,195, 60, 87, 48,153,224, 70,227, 56,235, 46,250, 28,139,140,162,200, 88,110,142,217,186,122, 29,
-189,185, 65,178,189,205,197, 11,207,176,179,245, 36,147, 98,136,210,158, 84, 9,164, 10, 24,169, 56,159,165,104, 4,139,186,229,
-225,186,164, 57, 46, 17,212, 76, 46,110,243, 59,191,254, 34,127,235,231, 63,197,214,104,204,203,111,220,141,155, 92,117, 18,177,
- 38,116,179,158,110, 22, 36, 5,140,174,240,203,191,240, 34,189,188,160,223, 75,105,218,192,114, 94, 81, 54, 53,175,127,112,159,
-102,247,118,151, 4,157, 9,202,127,255, 27,223, 35,233,245,185,122,253, 10,195, 65, 15,235, 2, 38,141,148, 12,173, 20,202,168,
-168, 42,151, 38, 36, 89, 66,154, 36, 72,109, 88,173,102,148,229,138,197,244,144,245,170,100,186, 40, 73,179, 4,148,160,117,142,
- 59,247,142,185,125,231,144, 50,120,234,198,243, 96,186,164, 14,158,163, 69,116, 73,187,249, 96,193,113,217,128, 8,172,234,154,
- 89, 85,241,222,238,140,155,119, 30,242,242,159,191,129,111, 45,121, 97,184,117,231, 22,139,234,132,175,255,254,239,243,220, 11,
- 79, 51, 74, 13,189,196,144, 38,138,126,154,161,181,194, 57,139, 15,158,225,176,207,100, 99,194,120,115,131,119,111,220, 96,126,
-176,224,137, 39, 47,178, 49,206, 17, 82,178,152,174,168,203, 10,169,162,184,133,119,129,249, 98,198,162, 90,226,188, 39, 81,154,
-166, 45, 49, 90, 99,148, 65, 25,133,208,154, 64,194,241,241, 58, 2,247,238,221,225,206,238, 7, 28, 29, 31,147, 25,197,131,221,
-219, 72, 13,133,201, 17, 82,144,184,138,111,191,250, 58,227,107, 79, 51,159,215, 28, 79,215, 12, 81,188,240,229,231,120,240,193,
- 3,254,203,127,240, 15, 9,195,148, 48, 24,240,244,248, 28,191,120,225, 28,149,104, 56,120,176, 23,207, 18,121, 10, 30,243,188,
-187,172,216,222, 26,240,170,215, 84,131, 77,238, 29, 79, 35,144, 7, 27,159,183,186,198, 46,106,190,253,224, 30,187,227,109, 66,
- 2,236,237,194,195, 67,196,193, 20,148, 68, 78,143,162,234,240,122,137, 90,172,121,114,144,226,104,120,216,214, 60, 16,130,243,
-166, 64, 60, 56,160, 76,115,110,212,150,220,193,139, 89,206,121,147, 48, 65, 82, 84, 75, 74, 23, 56,241, 22,231, 37, 18,133, 22,
- 18, 71, 96,191,116, 76, 27,139,112,142, 92, 4,174,244, 82,174,231, 42, 42,197, 77,250,244,179, 20,157,103, 52, 33, 97,238,115,
- 18,225,144, 50,112,165, 95, 80,164, 25, 74,103,236, 12, 7,132,160,184,212, 27,161,243,148,117, 97,104,130, 38,120, 73, 80, 1,
-223,218, 15,181,230, 63,106,125, 26, 90, 11,179, 57,254,112, 30,193,191, 43,203,223,188, 52,226,239, 60,117,133, 79, 77, 54,184,
-220, 19,124,237,193, 49, 65, 40,218,113, 76,242, 76, 98,216,214,138, 84, 37,108, 36, 25, 51,215,208,215, 41,235, 16, 53,192, 69,
-176, 40, 33, 72,157,195, 72,197, 10, 88, 52, 53,206,181, 76, 80,244, 70, 41,201,184,128,160, 16, 50, 82, 8,221,178, 69, 84, 45,
- 38,120,250, 66,145, 74, 56,108, 61, 85, 62, 68,141, 54,217, 26,110, 51, 73, 39,124, 80, 46,120,105,127,159,239,150, 21,123,101,
-133, 73,114, 70, 4,206, 43,195, 68, 74, 90,223,178, 45, 37, 94, 26,172, 78, 65, 8,118,122, 3,254,253,171, 87,248,197,237, 29,
-206,101, 57, 15,154,134,117, 62, 68, 9,193, 23,183,182,120,176,174,216, 25,142, 56,168,106,174, 15, 71,172,155, 53, 62,201, 88,
- 59,139, 5, 26, 44,153,146, 44, 90,203,200, 24,148,139,238,107,153,179,204,149,230,162, 54,188,211, 86,124, 62, 27,240,157,122,
-197,245, 36,229,182,141,149,249, 45, 44, 79,201,148,119,189,101,152,102,188,237, 96,101, 50, 46, 25,143,201,115,156, 15, 92,204,
- 19,172,131,116, 48, 64, 91, 71, 26, 2,187,182,166,144,134,165, 15,188,125, 60,231, 92,207, 48, 21, 50, 26,255,216,216,109, 12,
-105, 10,182,237,176, 21,177, 94,139,129,221, 34,130,239, 84, 52,187,192,124, 26,220, 91, 75, 8,109,231,194,150, 98,157, 71,106,
- 88,181, 45,214,123,188,148, 88,231, 8,136, 51,183,207, 68, 19, 84,199,241,149, 42,250,180,166,230,209,104, 87,136, 83,254,175,
- 56,227, 1, 55, 54, 22,147, 77, 21,199,181,162, 99, 69,181,109,108,213,251, 14,184,218, 90,154, 59,187,188, 83,205,185,251,250,
- 77,194,122,253,161,189,234, 91, 27, 29,235,234, 10, 87,173,127,218, 74,253,167,120,121,255, 73,236,138,127,177,207,105, 79,181,
-210,125,148, 88,149, 62, 86,224,170, 67, 20,186, 16, 3,206, 41, 24,175,125,140,142, 69,135, 90,119,246, 76,196, 89, 6,176, 50,
- 90,234, 40,115, 6, 6, 75, 77, 92,144, 14, 48, 39,137, 45,219, 71,215,240, 73, 28,117, 62,130,248, 79, 82, 68,136,170,123,104,
-137,208, 34, 82,236,180, 36, 29, 13,184, 48,218,226,250,213, 29,154,214,209, 88,199,235,239,238,243,131, 91,183, 65,107,190,244,
-244,179, 92,217,188,202,160, 72, 24,229, 35,206, 15,183, 57, 63,222, 98,107,180,201,212,173,105,165,128, 84,225,243, 62, 95,120,
-234,103,184,124,233, 83, 12, 70,219, 76,134, 19,118,118, 46, 99,250, 57, 70,235, 40, 52,225,106,188,111, 59,224,152,102,208,203,
-169, 90,207,193,170,194,175, 23,144, 14,248,173, 95,252, 57,126,249,179,151,216,238,103, 44,170,154,175,254,249,219,221, 24,163,
- 75,152,156, 7,225, 62, 60,236, 15,129,231,158,190, 70,154,231,184, 32, 56, 62, 94, 48,157,157,240,242,187,239,242,240,213,215,
- 59,179,154, 56,210,160, 55,140,182,180, 73,143,155,175,190,198,205,163, 41, 79, 94,185,194,246,206,152, 52,141, 21,181, 78, 77,
- 4,136, 72,133,210,209, 96,231,248,225, 62,243,163, 99,210,126,129, 64,160,140, 34,235,229,113,148,176, 90,178,119,255, 30, 94,
-106,170,178,194,121,199,201,193,148,123,119,247,152, 30, 45,168, 90,207,189,221, 67,110,221,188,207,108, 58, 99,212, 79, 25,102,
-134,183,223,185,195,155,175,191, 79,185, 42,217,189,247, 16, 66,137, 39,208, 54, 21,155, 91, 27,100,169,230,179, 95,124, 1, 33,
- 4,214,183,164, 90,147,152,132,212, 36, 88,231,200,146,132,201,104,192,100,123,139,197,108,198,239,189,244,231,188,250,123, 95,
-225, 7, 39, 71,108,167,125, 62,253,169,171, 76, 6, 57,135, 39, 37,101, 85, 19,112, 88, 91, 81,173, 75,130,112, 88,219, 18, 66,
-160,106,107,218,198, 33,181, 36, 77, 83,146, 52, 37,207, 11,180,201,249, 31,254,243,191,207, 42, 83, 60,117,241, 9,132,128, 59,
-251,123, 20, 90,115,251,120, 22, 27, 37, 70,144, 37, 5,105,146,146,135,192,242,214, 77,222,247, 9,243,147, 19,152,157,176,213,
-235,241,250, 31,253, 1,183,111,223,137,235,176,189,197, 47, 93,188,202,100, 52,162,110, 4,239, 29, 29, 65,181,254, 16, 26, 28,
-103,249,238,221, 19, 30, 76, 6,140, 19,197,238,180, 11,234, 70, 69, 77,233,102, 21,159,175,117,137,112, 51, 56,119, 25, 33, 3,
-226,120, 14,179, 35, 68, 98,162,116,169,144,200,202,161,122, 57,247,102,107, 66,112,172,141, 98, 96, 82,174,165, 61,206,103,125,
-174,175,150, 60,151, 40,254, 68,229,252,229, 80,179,163, 37,217,186,164,239, 32,149,129, 99, 33, 57,106, 61,203,101,197,209,178,
-101,247,168, 97,225, 37, 77, 93, 99, 36, 76,180,228,185, 73,194,118,145, 48,233,165,104,169,200,178, 4,175, 12,199, 46,224, 85,
-198,170,105,217, 73, 2, 7,141,165, 17, 9,219,253, 2, 23, 20,105,170, 73,242, 30, 82,229, 36,198, 96, 83,205,218, 72, 66,211,
- 65,115,196,153, 35, 91,248, 33,193, 29, 31,131,123,200, 11,206,111,244,120,114, 48,160,111, 18, 94,218, 63,226,229,105, 11,174,
-161,116,129,173,201,132, 45, 90,198,105,143, 43, 89,129, 11,176,242,142, 6,207, 68, 25,102,109,133, 21, 34,138,137, 0,199,245,
- 18, 97, 29, 7,203, 21, 53,129,208, 54, 12, 91, 73, 49,200, 65, 10, 92,101,169, 22, 22, 97, 29,218,122, 84,136,179,247,148,128,
-203, 53,165, 73,201,123, 9, 23, 6, 5, 27, 89,198,181,241,152, 75, 58,229, 25, 9, 6,199, 6,146,157, 44,193,132,134,129,146,
-164, 85, 67, 38, 37,137,138, 74,124,107,161,121, 82, 75,254,202,214, 38,147,201,132,188,223, 99,225, 37, 43,161,216,234, 13,184,
-217, 74,158,204, 13,135,222, 51, 50,146,135,192,192, 7, 14, 2, 72,111,169,131,194,224, 56,113,129,158,130,135,214,114, 73, 42,
-156,244, 56,165, 24, 11,193, 45, 91,113, 61,201,121,185,173,249, 76,154,241,102, 83,115, 53,201,184,237, 45, 87,149,226, 29,107,
-177, 42, 97,215, 9,118,209,236,136,192,118,191,135,118, 81,193,209, 41,205, 74,196,209, 93,240,240,190, 83, 60,155, 36,212,194,
-179,169, 52,123,205,154,210,186, 40,190,213, 70,231, 52, 76,151,144, 17,147, 34,244, 41,144,218,253, 72,208,111,232, 66, 71,176,
-167,192, 74, 69,211, 52, 56, 43,176,194,163, 36, 88, 58, 16,156, 20, 12,211,132, 70, 10, 6,137,129,196,224,106,219,137,121,117,
-133,208,227, 1,221,118,223,127,170, 54,106, 58,155,111,219, 60,242,149,127,132, 63,235, 18,141, 71,201,198,193, 17,172, 63,252,
-252,250,199,233,138,222,227,189,255,151, 24,212,255,101, 37, 10,208,129, 15,136, 70, 42,190,243, 66,183, 93,171,188,113, 17,224,
-100,187, 96,244, 72,100,229, 84,212,197,199,223,179, 33, 46,114,211,130, 54,177, 90,135,216,162,207, 12, 10,129, 95,119,116, 57,
-239, 98,144,230, 19,140, 88, 30,151,211, 85, 41,164, 10,145,165, 93,101, 27,187, 6, 66, 68, 43,203,114, 94,147,100, 61,122,253,
- 62,203,202,113,111,127,197,183,222,188,193, 73,217,242,212,120, 27, 39, 44, 23, 55, 47, 61, 98,200, 25, 97, 24, 15, 55, 25,101,
- 99, 92,104, 89, 87,115, 18, 45,249,244,149, 43, 60,247,220,103,185,250,244, 5, 46, 92,220, 1, 82,164,146,228,121,156,179,183,
-245, 26,215, 68, 87, 45, 37, 2,163, 94,129,247,176, 40, 43,142,167, 43, 56, 62,128, 36,197,228, 9,231, 46, 92, 32,184,134, 63,
-250,179, 55,185,121,231, 78,119,223,186,150,145,107, 63,158,149,249,134, 87,239, 31,242,173, 27,183,249,214, 27, 55,248,230, 59,
-183,120,253,253,251, 28, 61, 60,224,111,254,230,207,242,175,255,173,223,224,185,207, 63,207,203,223,191, 1, 62,233,124,234, 13,
- 56,199,124,255,128,111,253,193, 87,113, 50,176,181,115,129,243, 59, 99, 76,146,224,173,167,109, 90,218,117, 77, 83,215,209,110,
- 80, 43, 66,112,172,150, 11,130,117,184,182, 97, 62,157,226,108,131, 76, 20, 77, 85,178, 90,158, 48,159,159,176, 88,156,208, 31,
- 12,192, 4,214,235,146,123,119,222, 35, 79, 11,206, 95,218, 34,205, 13,111,188,123,151,178,110,184,246,204, 37,108,240,172,171,
-138,197,106, 78,101, 43,130,176, 44,203, 37,141,179, 52,117, 69,235,124,244,118,150, 18, 33, 4,121,146,209,239,231,108,109, 71,
- 3,163, 55,110,220,224, 15,255,155,239,176, 62,120, 43,222,143,147, 25, 63,216,219,227,206,222, 30,215,174, 61, 65,154, 25, 80,
- 10, 87,133,152, 16, 18, 8, 33,154, 25, 37,137,193,249, 22, 79, 32, 87,134,254,104, 68,150,230,236,236,236,208, 75, 21, 63,243,
-175,188,200,231,158,122,134,157,157, 45,116,146,163,154,166, 91, 67,143, 82, 10,111, 3, 66, 9,180, 74, 56, 55, 57,199,214,198,
-132,203, 82,115,174,153,243,185,237, 45, 66,219, 66, 47,227, 7,245,154,240,240, 8, 76,194,221,188, 32,144,242,181,218,130,110,
-225,193, 49,225,180,203,214,218,174,117,216, 80,175, 42,246,122,134, 80, 90, 88, 77,227,115, 83,251,216, 37,203,123, 80, 86,136,
-178,134,190, 66, 12,207, 65,181, 64,212,209, 79, 65, 74,133,208, 6,217, 58,148,116,136,166,197,214,142,107, 90,114,181,223, 99,
- 39,205, 25,233,148,145,206,185,188, 94,241,215,151,199,252, 39,235,138, 47, 52, 11, 70,206, 33,165, 34, 73,251, 28,201, 56,190,
-154, 53, 13,213,226, 4,218,134,178,182,228, 89, 74, 42,225,252, 36,229,217, 97, 78,145, 36,160,100,172,140, 58,190,117,107, 20,
-171,218,163, 80,204,219, 64, 46, 4,195, 52,195, 98, 64, 40,140,202, 16, 68, 1,163, 86, 42, 42, 28,115, 33, 9, 90,197,106, 73,
-234,232,223,254, 35,186,113,225, 49,110,202,237, 34,163,202, 4,119,154,134,127, 60, 93, 99,219,238,240, 93, 55, 28, 41,193,179,
-147, 17, 27, 74,163,129,149,181,108,165, 5,214, 7,214,193,161,165, 66, 11,205,210,183,100,202,144,134,192, 73,185, 68,249, 22,
-223, 86,148,193,211, 11, 18, 83, 69,189,137,122,218, 80,213, 45,198,122,180,146, 36,202, 32, 90,135,106, 29, 74, 5, 22, 90,211,
- 47, 82,122, 74, 48,208,146,139,253,132,177, 74, 9,214,177,157,100,104,225,193,214, 76,122, 19,114, 37, 17, 89, 74,223,104,132,
-151,108,102, 3,130, 82,140,148,226,114, 63, 39,213,145,138,252, 45, 27,184,172, 19,238, 5,120, 58, 81,220,108, 3,151, 18,195,
-210,123,122, 77,131,211, 10,211,214, 28, 6,131,161, 97,209, 74,250,162,101,209, 90, 54,149,228, 36, 56, 76,128, 77, 41,121, 24,
- 2,215, 84,194,187, 33,240, 41,173,121,197,181, 60,111, 50,110, 56,203, 19, 58,229,166,247,140,211,130,251,174,225,102, 48,188,
-208,211, 36, 58, 71, 10,203,162, 12, 20,169,161,213,134,147,101, 75,146, 72,150, 65,115, 61,145,236,121,199,180, 93,147, 4,216,
- 78, 18,246,171, 53,101,128,182,170, 8,210, 61,162, 5, 7,225,227,200,164,163,239,253, 72, 22,207,135, 0,202, 93, 85,223,205,
-183, 49, 50, 2,168,219,216, 78,151, 74,211, 79, 18,192,179,105, 52, 13,146,129, 84, 8,163,162, 56,152,235,132,198, 78, 65, 85,
- 46,116,214,222, 34,198, 31, 73,236, 42,107, 5,165,251, 16,131, 76,252,136,198,117,248, 33, 58,255,167,239,191, 88, 65,253,113,
- 78,184,150,145,122,147,152, 51, 21, 52, 31,226,251,212, 63, 61,116,173,144, 83,218,155,140,170,177, 52,117,156, 29,219, 54,242,
- 90,179, 52,182, 57,172,143,193,189,113, 4, 37,232,208, 85,103,105,155,236, 16,253,159,228,175,110,116,164,149, 36,105, 68, 49,
-158, 42,238, 5, 16, 34,116,238,108,142, 7,193, 50, 16,125, 30, 30, 44,216,221,223,231,246,225, 30, 95,188,242, 2,227,193, 6,
-155,197, 38,139,106,129,109, 26,202,186, 68,139,132, 44, 43,176, 77, 77,107,107,198,185,102,104, 18, 46, 76,182,184,254,236, 85,
- 54,198, 3,164, 12,180, 45, 84,117, 77,189,110, 88, 87, 75,108,168, 70, 44,229, 0, 0, 32, 0, 73, 68, 65, 84,211,224,124, 29,
-141,226, 84,244, 97, 89,217,154,233,170,101,117, 52,139,135,246,106,201,131,217, 9, 95,123,247, 3,222,190,117,204, 55, 95,127,
- 7,246,119,187,204,209, 70,240,134,111,207,118,202,227,187,108, 57,135,197, 18,151, 12,248,242,245, 39,249,194,181,107, 60,115,
-241, 60,207,191,112,157, 81,209, 71,169,148,175,127,247,205,174,131,210,117, 83,100,167,244,167,224,253,183,239,243,205,255,231,
-107,156,148, 21,195, 98,192,230,206,136,209,100, 64,146, 39,164,121, 78,214,239,145,247, 50, 6,163, 33,195,141, 17, 74,106,156,
-183,136, 16, 98,117, 93, 53,180,174,197,152,132, 36, 51, 12, 55, 38,164, 69, 65, 83, 47, 41,215, 75,180,145, 12, 55, 71,120,233,
-152, 46,102,180,117, 69,214,207, 56, 56,154,114,251,238, 17, 34, 52, 8, 44, 74,197,245, 52,105, 66,158, 39,244,123, 61,146, 68,
- 97,140, 33,207, 18, 54,198, 99, 6,227, 1,105,150,241,230, 59,239,240,251,255,244,101,238,189,241, 10,164,211, 15,175,253,124,
-193,131, 27,239,241,135,239,222, 34, 43,107, 46, 93,185, 72,175, 95,160,141,129, 16, 80, 42, 33, 49, 41,173,111,144,104,134,195,
- 49, 59,151,174,112,241,226, 69,206,109,109,112,113,103,192,114, 85,147, 26,205,249,205, 30,147, 81,159, 81,207, 80, 53, 48, 95,
-205, 40, 76,202,185,201, 22, 91,147, 29,156,141, 7,202,100,115,147,235,215,159,194, 58,203,104, 49, 37,221, 28,211, 38, 41, 15,
-130,228,253,208,226,238, 61,132,121, 69, 35, 90,238, 38, 41, 33, 73,226, 66,150, 43,152,205, 62, 30,168,108, 32, 16,221,208,132,
- 3,234, 16, 1,115, 73, 47, 82,112,124,196,169,136, 85, 5, 59,231, 35, 23,122,122,130,104, 90, 68, 93, 33,147, 20,233,107,100,
- 43,209, 73, 74,235,107, 22,222,242,249, 34,101, 59, 45,216,208, 25,133, 50,100,214,163, 29,252,122,179, 96,190, 94, 96,189,199,
-244, 71,180, 38,101, 97, 18,202, 0,181, 20,228,109, 69,175,173, 8,120, 26,153, 96,242,148, 79,111,246, 40,164,196,104,141, 86,
- 18,167, 4,109, 0,169, 4,135,141,231,225,172, 98,229, 3,206, 59,180,107,112,193,163, 4,104,165,168,136,174, 87,190, 3,231,
-173,189,165,150,130, 6, 31,253,219,125,244,143,136, 29,192,240, 67,169,166,167, 2, 76,161, 12,220,202, 50,222,113,129, 42,209,
-145,239, 93,198, 10, 44,132, 64, 37, 96,167,151,115, 78,105,140, 78,153,186, 6, 45,162, 22,115,233, 45, 54, 56, 10,169,152,219,
- 6,139,164,118, 22,237, 26,158, 85,154, 52, 4, 86,222, 49,146, 10,150, 77, 44,238, 26,139,145,138, 20,137,116, 93,178, 88, 53,
-120,223, 18,250,154,202,193, 48,209, 60,181,153, 98,172, 39, 33,112,161, 63, 96,189, 42,217, 30, 12,152,203,132, 32, 36, 42,201,
- 25,103, 5,235,160, 25,231,125, 86,222,177,221,159,112,185,159,113,212,120, 68,154,243,245, 69,201, 19, 70,115, 79,105,174,104,
-201,237, 10,158, 72, 5, 15,188,167,215,212,180, 74,144, 32,152,121, 24, 11,207, 34, 56,156,171, 88,121, 79, 79,192,212, 89, 70,
- 34,208, 4,112, 66,241,164, 50,188,227,107, 46, 33,121, 75,192,139, 73,206, 93,147,112, 81, 27,222, 15,158, 45,224,166,183,220,
-106, 2, 99,165, 17, 34,197,168, 22,169, 12, 46, 40,242, 68,115, 48, 91,115,105,212,227,214,178,225,124, 10,123,117, 60,114,135,
- 66,179,198,211, 84, 75,250, 58, 2,217,166,173,135,218,117,113,188, 27, 39,186,174, 98,167,253,208, 56, 88,252,200,192,222, 81,
-183, 37,177,170, 86, 93, 7, 51,209, 32, 4,218, 40,180, 8, 8,161,169, 3,228, 38, 42,190, 89,239,185,152, 37,216, 16, 72,164,
-166, 57,125,202,132,239,204,204, 58, 1,142,214,198,207, 13, 81, 34, 59,130,202,221, 79,116,109, 31,235, 34,125,200,137,228, 47,
- 98, 80, 63,173,216, 53,177,202, 62, 69, 25, 6, 1,153, 62,203,138, 66,151, 37, 9,206,130, 54, 33,234,214,159, 86, 41, 74,198,
-118,189,236,104, 76,167,115,118,219, 5,241,211,155,172, 58,142,187, 13,159, 44,190, 34, 85,220,101, 74, 67, 34, 17,182,107,142,
-216, 40,136, 33,124,183, 20,147,130,205, 68, 17,218,138,182, 89, 51,204,198, 12,178, 13,198,189, 13, 82,147,179, 63, 59,226, 79,
-223,121,133, 7,211,123,164,166, 3,240,219, 21,219,147, 30, 87,182,119,184,176,125, 30, 33, 2, 89,175,143,144,146,229,186, 97,
-255,254, 17,171,249, 17, 77,211, 80,214, 75, 42, 91, 67, 80,100, 73, 15, 17, 2,141,107, 89,149,150,195,101, 69,187,255,160, 75,
- 74, 4,172,150,132,189,125, 14,110,223,128,249, 97,108, 1, 53,117,100, 12,156,142,196, 69,231, 25,239, 31, 31, 9, 5, 24,158,
-227, 75,159,251, 28,159,123,234, 51,108, 76, 70, 12, 71, 3,114,147, 80,149,150,147,147, 57,127,254,199,223,141,247,227, 20, 40,
-226, 60,143,124, 44, 67, 60, 56, 31,188,123,135,239,125,227, 21,190,250,251, 95,161,244, 45,118, 81,146,100, 25,218,104, 76,146,
-208,235,167,100,121, 70, 49, 72,201,250, 61,138,241, 16, 41,226,140,209,152,200,107, 46,215,107,132,247,180,109,137, 50,134,209,
-214, 38,147,173, 9, 38,139,114,146,171,229,154,182, 46, 89,204,230,252, 79, 95,251, 42,111, 63,188,195,107,239,191,207,139, 47,
- 60,207,104, 60, 32, 43,114,242, 34,167, 63, 28, 48,220,218,160, 55, 26, 50, 26, 14,201, 7, 3, 30, 62,120,200, 31,252,224, 13,
-190,245,199,175,113,247,198, 13, 16, 77,236,100,124,146,254, 63,192,193, 49, 55, 30, 30,241,167,175,252,128,151,222,191,197, 83,
-227, 17, 27, 23,207,113,241,218, 14,147,157, 13,174, 61,125,149,171, 79, 62,193,151,191,240, 44,151, 47,109,199,138,190,245, 28,
- 28, 46, 81, 70,112,245,226,152, 11,219, 35,138,110, 22,183,118, 2, 91,195,120,188,193,245,207, 62,199,198,249, 77,124, 11,227,
-141, 45,130, 80,124,243,187,127,198,255,245,181, 63,229,202,192, 80, 37, 61,110, 91,199,251,117,195,131,147, 99, 56, 41, 35,178,
-118,177,142, 98,210, 42, 33,168, 4, 50, 96,247,232,227,123,216,119,192,161, 68,209,223,238,211, 76,151, 49, 57,221,158, 64, 47,
-141,221,155,147, 21,162,138, 54,172,226,210, 21, 68,166, 16,203, 88,177, 11,219,198,194, 38, 81, 40, 91,161,147, 60, 66,112,234,
-146,103, 82,195,185,172, 79,142, 32, 73, 82,180, 80,104,161, 72,109,203, 94,112,212, 89,206, 74, 42,132, 80,220, 77, 52, 67, 23,
-216,193,177,227, 42,138,245,138,123,190,161,213, 3, 14,215,150, 39, 38, 57,163,212, 32,133, 32, 81, 10, 39, 4,247, 74,203,254,
-210, 50,135,200,176,168, 75, 42, 91,209, 75, 4, 58,207, 8, 40,180, 50, 88,235,168,157,163, 9,158,181,247,248, 16,240,161,229,
-178, 4,167, 12, 91,169, 97,126,122,216, 58,247, 49, 91,211,179,152,238, 99, 23,235,104, 69, 91, 36,209, 69,177, 13, 4,215, 85,
- 96,222, 49, 79, 36,207, 22, 41,149,212, 36,161, 69,201, 8,228, 83, 34, 96, 2,148,221, 17,229,130,224,196,214, 76,189,229, 98,
-154,115, 94, 37, 12,148, 38, 13,142,224,160, 39, 37,210,123, 86,214, 82,152, 4, 35, 64,218, 0,101,139,181, 21,181,183, 52, 82,
- 97, 10, 77,150,105, 18, 96,160, 84,244, 95,106, 28,231, 70, 3,150,141, 71, 42, 67,158,101, 88,239,104,164,166,151,167, 88, 7,
- 73, 62,164,144,154, 36, 27,112, 97,208,227, 36, 8,206, 21, 9,135, 30, 46, 42,120,109,110,121,118,100,248,160,134,205,208,224,
-211, 20,215, 97,154, 6, 1, 30, 54, 37, 85, 8, 88,160, 23, 2, 11, 60, 61,107, 89, 3, 19, 20, 66, 4,142,133,231,146, 52,220,
-146,130,103,149, 38,223,220,224,103,175, 92, 36,152, 20,225, 60, 47, 55, 53, 54,104, 22, 68,109, 9, 25, 4,189, 84,177,108, 53,
- 89, 18, 88,148,158,113, 79,115,111,222,240,244, 64,115,119,225,216, 52,150,131, 42, 32, 69,139,243, 1,109, 12,218, 59, 14,215,
- 37,165,117,113, 2,107,195, 35,230, 85, 76,216, 92, 60,159,127,196, 8,245, 99,129,212,116, 69,161, 74, 8, 65,117,198, 86,177,
-104, 75,141,138,251, 16,129, 59, 5,187, 91,216,233, 71,225,172,177,209, 72, 31, 53,250,131, 20, 81,243,228, 84, 81,203,117,212,
-234,166,142,231,106, 85,198,239,249,132, 78,176,248, 73,175,245, 49,238,212, 95,204, 87,219,137,200,152,238,103,167,151, 30, 45,
-206,220,199, 43,251,212, 68,138, 26,254,140, 27,104,187, 22,100,234, 33,164,103,201, 66, 47,129,117,211, 45,126,135,254,246, 54,
- 34,209,101,120,172,221, 46, 59, 49,154,142,163,104,146,168, 0, 87,241, 88,235,223, 67, 11, 65, 91,196,218,195,170, 33,139, 34,
-244,244,211, 30,203,218, 71,197,174, 36, 97, 54,155,115,178,154,226,214, 37,203,101,205, 75,205, 91, 20,201,123,188,112,110,139,
- 39, 46,126,145,241, 96,128, 80,154,221,221,154,219, 55,223, 66,233, 12,223, 10, 2,142,218,181, 84,109, 69,109, 27, 18,157, 50,
-200,198,228, 38, 99,152,111,128,183,124,160,119,185,113,123, 55,106,206, 7,255,216,142,240,103, 6, 52,167, 6, 46,167,255,221,
-119, 40, 81,249, 17,125,120, 37,217,122,230, 50,207, 61,113,157,162,151,162,141,232, 4, 9, 28, 89,174, 89, 61, 88,193, 56,242,
-245,169,237, 25,135,191, 37, 2, 21, 79,191, 47, 77,163,164,112,145,241,205,127,242,149, 15, 45,217,214,207,127,153, 47, 95,186,
-200,206,165, 11,108, 94,218,161,215, 75,163,145,195,206, 24, 24, 83,151, 13,109, 99,217, 60,191,137, 78, 53,193, 6,180, 86, 24,
-163,113, 56,218, 54, 32, 26, 24,140, 11,240, 5,179,121, 11, 14,146,196,208,224,216,186,184, 77,145, 75,108,235,104, 92,180, 80,
-172,214, 53, 15,239,220,229,229, 59,247, 25,228,155,188,250,202, 59,176, 60,129, 81, 15, 84, 63, 38, 61,131, 1, 84,139, 31,190,
- 47,143, 14,224, 8,170, 15,238,241,143,254,252, 53,184,124, 9,113,239, 62,124,246, 57,254,237, 95,252,121,242,254,152,147,217,
-144,117,217, 32,189,192,100,154,141, 73,193,197,113,143,205,126, 30,111,181, 10,100, 89,194,120, 99,128,200,158,138, 57,102,112,
-188,247,250,219,220,188,123,139,239,220, 63,198,189,113,227, 81,166,254, 63, 31,205,225,115, 21,253,237, 77,150,149,139,251,124,
- 18, 45, 90, 89,151,240,246,109,120, 14, 24,111,198, 53,185,176, 5, 15, 30,126,188, 5, 41, 91,168, 44, 75, 27, 80,231,183,113,
-211,101, 68, 72,123, 31,147,103, 5,193, 27,196,209, 9,197,106,202,246, 96,192,223,253, 75,159,227, 63,251,230,171,132,195, 99,
- 66,154,198, 25,117,154,226,109,131,175,107,222, 12, 3,158,184,251,128, 43, 89,143,190, 15,120, 17, 53, 4,164, 25, 82,104,195,
-197,197, 62,223,174,215,164,185,102, 46, 20,231,164,166, 48, 30,237, 13,198,123, 60, 45, 27,135,119,121,133, 30,215,253, 14,193,
- 7,166,139,146, 36, 75, 9, 9, 28, 90,199,173, 38,112, 79, 8,166, 70,179, 30, 22,132,249, 17,185, 84,152, 40,102, 64,227, 37,
- 38, 13,132, 32, 49, 65,179,196,113, 65, 11, 46, 6,197, 40,233,113,210,180, 60,145,215, 44, 74,197,177,179,172, 67,244, 68, 8,
-118,246,232,240,252, 88, 85,100, 45,193, 46, 16,183, 90, 56,191,217,177,124,116, 44, 42,172,195,150,150,223,187,191,207,111,157,
-111,217, 28,109, 49, 17,130,147, 54,130,214,234,206,123,161, 1,234, 16, 56,180, 45,151,101,108,221,150, 50, 97, 32, 37, 35,149,
-160,133, 96,214,182,232, 16, 24,231, 5, 39, 39,199,168,209, 8,103, 59, 54,135,130, 22, 73,161,163,131,161,243,158,214, 41,234,
- 16,216,206, 82,150, 30, 92,221, 48, 25, 20, 20, 54,227,110,213, 48, 23, 1,211, 56, 74,171, 49,198, 80,118, 93,233,220, 68,225,
-156, 76, 75,222, 95, 58,174,247, 13,239, 86,158, 79, 15, 52,239, 54,130,103,211,192, 7, 54,101, 80, 47, 8, 70,227,202, 37, 78,
- 39, 20, 74, 49, 7, 66,221,114,220,180,108, 72,207,158,135, 75, 34,112,151,154,167,125, 70, 89,150,188,102, 44, 82,106,222, 49,
- 9,127,189, 55, 96,175,178,232, 36, 97, 79, 73, 74, 11,135,180,188,238, 20, 47, 72, 79,161, 60, 8,195, 80,181,204, 42, 77,145,
- 6,110,207, 27,158, 26, 24, 94,155,183,252,204,200,240,234,220,243,124, 22,120,173, 42,184,172, 22,212, 94,162, 4, 60, 53,200,
-185,177,104, 33, 84,157, 86,129,136,133, 73,211,169,141,214,205,143,197,101,127,232, 85, 55,145,223,111,125,180,172,182, 10, 82,
- 79, 63, 79, 41,157,199, 8, 73, 21, 44,163,212, 80,119,137,151,109, 3,131, 84, 81, 57,135, 38,160,235,192, 80, 72,142, 17,157,
-125,136, 63,147,232,126, 4,198, 78,160,250,209, 99, 31,241,227,174,245, 47,124, 80,167,163,202, 85, 26,122,157,145,129,239, 76,
- 83, 76,215,102,207,116,231,212,214, 41,250,168, 54,222,208,143, 46,108,221,196, 0, 45, 0,147,241,185, 47,127,150, 87, 31,238,
-194,205,135, 93,251,221, 71, 58,130,247,144, 41,240, 89,180, 27,236,247,224,104, 5,182, 59,228,155, 42, 6,255,196,196,162,182,
-249, 48, 27, 48, 72, 16,101,205,178, 90, 51,206,199, 72,157,147,138,136,164,124,112,248,128,101,185,226,198,253, 93, 88,175,226,
-130, 85,115,214,153,102, 53, 54,120, 91, 1,125,172,107,113,206, 81, 55, 45,213,122, 65,221,214, 56, 31, 40,215,109,172,208, 85,
-198,165,173, 1,193, 11, 60,138, 65, 49,192, 57,207,249,144,194,242, 43, 49,249,208, 81, 69, 12,253,120,251,149, 78,146,246, 49,
-141,247, 46,167,161,149, 17, 80,120,122,240, 95,186,198,139, 87,158,227,220,165, 49, 74, 72,166, 39, 43,154,229, 17, 23,175,108,
-210, 88,199,249, 11,219,252, 91,127,247,183,185,191,191,199, 87,126,247, 27,113,151,213, 31,161, 3, 42, 25,233, 26, 69, 63,126,
-143,214, 31, 10, 50,135,223,248, 30,255,247, 71,150,251,249, 95,255, 5,206, 15,134, 92,190,112, 1,157,166,209, 44,102,144, 19,
-214,241,175, 80, 38,193,152,216,154, 13, 68, 31,227,100,144,196,153,109,223,242,239,252,198,111,242, 63,254,238,255, 1,137,100,
- 53,157,242, 15,254,241, 31,241,215, 62,245, 52, 47, 63,120,200,222, 91,135,224,231, 29, 87, 31, 24, 63,140,215,109, 4,156,204,
- 64,218,104,247, 57,159, 71,225,142, 79,218, 71,159,240,208,137,123,247, 9, 90,195,107,111,243, 15, 95,123, 27,145, 38,241,225,
-172, 27, 68, 54, 64, 84, 11, 68, 22, 19, 5, 9, 92,251,249,207,147, 11, 73,166, 5,115,235,184,249,221,183, 8, 42, 33, 96, 9,
-235,234,147,219,110,243, 5,124,247,109,150, 23, 54,249,149,107,231,216, 40, 18,244, 83, 59,124, 35, 9,220,123,247, 30,172,102,
- 48,155,119,163, 42, 96,115, 12, 71, 11,176,179, 15,127,206,218, 66, 1,159, 27,245,248,181,141, 33,127,248,193, 46,175, 77,203,
-199, 18,229,206,180,104, 81,178,126,235, 29,254,189, 95,250, 87,249,213, 43, 87,248,222,157, 15,248,202,201,148,160, 51, 66, 57,
-195,215, 41,193,181,248, 34,199,219,134,175,238, 62, 96, 35,215,252,246, 19,134, 68,106,196,112,130, 84, 26,153,123, 6,118,200,
-206,234,128,239,155, 6,163, 13,185,148, 72, 31, 72,147,148, 53,240,245,241,121,158, 20,130,155,111,127,139,244,250,151,249,218,
-219,142, 43,155, 99,206,111, 11,110, 79, 29,119,173,228,102,235,152, 9, 73, 83, 36, 32, 5,230,220, 5,204,238, 29,150,171, 5,
- 65, 74, 6,169, 97,186,136,159,185, 12,150, 11,202,145, 72,131,146, 22,227, 51,114,235, 88,147,177, 47, 2,131, 60,103,221, 2,
-227,110,141,171,197,135,166, 79,143,227,151, 5, 16,170, 10,238, 31, 64,158, 66, 54,140,103,142, 74,161,113, 44,108,224,165,116,
- 65, 38, 52, 39,105,198,197, 98,192,180,142,200,229,212,228,148,182,225,184,169, 24,104, 67, 38, 4,243, 0,219, 38, 97,209, 21,
-152,133, 78, 24,229, 25, 78,104,230, 74,209, 26,201,251,174, 97,220, 88, 18, 99,168,188,163, 41, 82, 90,162,100,114,161, 21,171,
-214,147,107,137, 13, 34,226, 48,128,158,138, 9, 89, 91,150,108, 37, 5,119,155,146, 60, 49,148, 1,242, 16, 71,135,109, 16, 28,
- 5,200, 43,203,103, 6, 41,223,157,213, 92,235,105,238,183,146, 23, 18,199,205, 82,178, 65,203,145, 74, 56,215,214,172, 76, 66,
-181, 94,113, 36, 36,206,149, 52,222,146, 8,203,145,109,217, 86,130,131,170,102,146, 24, 94, 46,167,108, 38,154, 89,235,201,141,
-160, 89, 46,120,115, 62,101,167, 24,208, 42,197,126,213,114, 76,224,165,202,145,104,199,107, 94,177,145,192,162,180,228, 89,142,
-162, 97,182,242, 92, 30, 38,124,176,104,248,153,190,228,141,185,229,201, 68,240,176, 85, 60,171, 27, 94,159,195,115,121,194, 92,
-165,220,106, 43, 66, 47,237, 76,196,154, 56, 58,170,218, 24,234,214,213, 99, 54,211, 63,197,107, 93,129,182,192, 8,180,131, 84,
-179, 44,163, 5,184, 74, 52, 70, 73, 78,170,134,171,147, 28,103, 29,202, 67,229,186,159,165,143,221,251,224,200, 92, 96,237, 79,
-129,112,174, 19, 71,235,108,185, 87,117, 84,240,252, 88,116, 62, 59, 23,195, 79,120,185,127,177,131,186,237,204, 90,172,232,120,
-241,167, 64,183,110, 6,184,110,206,156,196,188, 61, 19,161,249, 97,175, 58,222,145, 87,191,246,221, 24,196, 79,171,124,255, 24,
-131, 85,105,200, 61, 12,134,144, 36,176, 9,220, 95,156, 93, 79, 49,138,115, 75,162, 17,156, 56, 21,199,137,189,108, 66,101, 89,
- 85, 48, 26,166, 36,186, 79,101, 75,102,229,130,195,213, 49, 55,238,220,135,227, 67,130,179,103,127, 15,176, 55,171,216,189,127,
-135,114, 62, 71, 38,154,227,195, 99,102,213,138,101,185,102,209, 54,204,203,134, 89,105, 9, 8,158,191, 50, 68, 7, 69,150,229,
- 60,249,204, 14,219,163, 62, 71,179,134,219, 47,223, 60, 83,195,179,182,227,101,126,244,126, 62, 6,250,163,235, 62,160,161,144,
-103,120, 57,145,130,244, 92,184,124, 1,219, 88,218, 16,216, 59,184, 79, 18, 26, 54,199,151,209, 74, 98, 93,206,106, 85,113,113,
-107, 11, 46,244,225,224, 48,118, 56,156,238,172, 95, 57, 83, 91,114,116,155, 89,254,216,135,237,173, 63,252, 58,111,253,184, 61,
-145, 13, 98,226, 49,216,140, 24,135,209, 32,234, 18, 68, 21,147,136,230,247, 9,255,221,255,246,207, 64,106,254,224,149, 55, 35,
-182,162, 7, 52, 58, 6,240,193,168, 67,166, 42,200, 4, 60, 60,140,166, 70,117, 27,215, 28,162, 62,182,254, 49,160, 27,173, 9,
-137,142,163, 23,173, 99, 98, 87, 87, 80,100,136, 52, 33,132, 78, 40, 41,212,241,223, 74,114,251,123,111,197,251,178,174, 8,105,
-210, 5,241,179,128,254, 67,179,116, 95,145,174, 87, 60,169, 36, 89,175,143,149,112,237,252, 6,247,238, 29, 16, 86, 37,236, 29,
-193,176,224,133,193, 6, 23, 47,247,184,163, 20,239,190,249,206, 25,112,168,110,226, 22, 77, 13,255,218,198,144,207, 14, 55,153,
-143, 23,188,246,238,126, 12, 96, 33,196,102, 12,113,189,194,114,205,195,245,140,111, 60, 52,188,221, 27, 17,178, 30,161,138,230,
- 61, 62,149,184,218,224,106,143, 5, 92,240,252,222,238,140, 47,101,247,120,214, 24, 84,145,161,210,113,167,253,225,216, 94, 44,
-113, 70, 99,116,194,148, 64, 38, 21,149,119,100, 73,198,103,183, 71,220, 45, 87,136,237,243,188,250,218,119,120,227,254,132, 47,
- 61,241,105, 38,147, 45,230,105,202,221, 0,239,229, 25, 33, 55,204, 67,202, 36, 79, 25,140, 28, 75,127,145,254,209, 62,231,219,
-146, 89, 89,145,100, 57,203,166,226, 82,174,187,238, 86, 4, 58, 89,111, 59,134,131,229, 66, 47,101,160, 28, 39,141,165,246, 41,
- 34, 73,192,234,179,231,229,163, 1,189,139, 16,162,245, 4,106, 4, 93,155,183,167, 64, 37, 60,159,107,246,214, 45,239,172,151,
- 60,157, 24,254,232,240, 62,207,245, 71, 28,122,199, 86, 8,212,214,178, 36,208,247,150, 82,106,158,205, 10,142,156,101,164, 52,
- 74,105,166,206, 17,156, 71, 38,130, 96, 18, 10,163, 88, 24,201,155,194, 80, 87, 53,163,126,206,229, 65, 78,138,164, 10, 1,221,
- 56, 92, 8,132, 54,138,103, 89,231,232,167, 9, 77,235, 49,222,115,177,215,227,157,213,138, 65,166,153, 89,143,129,200, 51,111,
- 27,210,212, 80, 54,146,144, 41,246,125,224,185,161,230,161, 15, 92, 48,112,215,195,166,180,148, 66,176,221,192,162, 13, 72,219,
-112,136, 32,109, 74, 30, 46,215,100, 58,174,181,108, 26,246,218,134,212,104, 30, 54, 21, 3, 20, 95, 63, 92,241,194, 48,227,235,
-243, 53,151,250, 67,254,217,221, 7, 60, 61, 26,242, 96, 89, 17, 18,197,141,202, 50, 16,130,169, 85, 24, 42,110,161, 24,209,112,
-137, 64,158, 27, 84, 82,208,184,134, 29,227,185, 97,115, 54,243,146,147, 50, 10, 88, 89, 18, 46, 23, 37,149,119, 44,116,202, 42,
- 73,226, 94, 30,100, 81, 99, 99,255, 48, 62,255,161,254,240, 25,247, 47, 18,107,234, 5, 52,105, 92,252, 60,129, 36, 97,229, 61,
-153,247, 76,180,161,170, 45,185,136, 0,105,237, 61,179,178,165,200, 21, 7,179,166, 59, 14,196,217,216,183,237, 68,205,232,152,
- 89,202,158, 61,139,143,206, 96, 27,223, 31, 9,238, 63,238,245, 23,115,166,254,161,150, 97,135,130, 23,221, 35, 39,100,188, 97,
-153,236,110, 26,143, 85,219, 33, 6,182, 79, 2,186,157, 26,190,200, 83,213,185, 83,222,123, 56, 67,131, 75, 25,219,215, 60, 70,
-163, 91, 46,207, 42, 54,173,163, 12,163,245,103, 7,190,235, 84,130, 20,160, 21,201,213, 43,124,241,201,231,185,184,125,149,162,
- 55,194,136,140, 15, 78,238,115,239,232,152,102,239,222, 25,245, 66,200, 88, 37,154,132,205, 34, 65, 72, 71, 93,149, 44,214, 11,
- 86,117, 77, 93,151,236, 46, 87,220, 63, 92, 80,238, 45,163, 40,144,146,108,111, 79, 24,154, 30,253,162,207,103, 94,184, 64,145,
- 37,152, 68,241,237, 55,239,114,240,230, 75, 63, 5, 29,209,159,221, 96,147,116, 42, 72,221, 61, 50,138, 81,209,163,151,245,152,
- 77, 79, 56,153, 31,113,126,107,131,205,241, 4,147,104,150,101,131, 13,129,166,105,120,229, 27, 95,239,184,154,221, 40, 66,158,
- 81, 65,162,140,176, 63, 83, 5,108,237,255,247,253,160, 58, 42, 9, 73, 76, 74,178, 36,182, 73, 90, 11,182,142,127,203,186,142,
-120, 11,213,141, 23,144, 48, 93,194, 98, 17,245, 0,132,138, 26,226,167, 56,139, 85, 25,255,127,103,227, 79,223,173,175,215,103,
- 0,202, 79, 50,249, 49, 49,145,139,162, 19, 62, 50, 91, 30,243, 28, 66,117, 10, 83,117, 67,208,170, 19, 76,234, 16, 64, 82,158,
- 85,229,178, 99, 82,104, 69,112, 46,238,179, 83,199, 65,211,237, 85, 37,177, 2,158,221, 28,162,250, 61,230,222,243, 86,217,112,
-178, 92,198, 68,183,106, 97,210,231,122,127, 72,145,231,204,157,229,160,108, 16,101, 21, 19,139, 52,237,186, 53,134, 89,154, 16,
-180,224,119, 79, 42,214,181,131,118, 9,210,159,209,109, 68,138,168, 26,190,125, 60,227,196,192,161, 54,172,235, 18,177, 88, 32,
-122, 3,100, 83,162,130, 66,202, 22,105,114,164, 3,233, 74, 70, 46,240,252,230, 24,147,230, 49,217,173,203,104,250,226,214,188,
-237, 45,109,154,210, 51,105,180,120, 37,112,208, 68, 97,141,255,101,252, 4,193,199,110,133,189,191,203,157,195,247,121,107,239,
- 54,183,246,239,178,191, 94, 81,175, 42,234, 32,232,121, 79,147, 37,212, 89,130, 79, 12,106, 48,132,164,207,192, 11,180,111,241,
- 66,176, 21, 44,153,209,244, 67,192, 8, 65, 8, 1,139,196,116,254, 6, 83,219, 50,212,134,195,170,134,117, 27, 61, 31,252, 39,
- 3,171, 68,151,233, 10,186,202, 11, 27, 37, 87,211,140,223,121,114,135,191,119,237, 58,231, 50,197, 43,213,138, 87, 79,214,120,
-169,152,226,145, 74,243, 65, 83,210, 42,197, 68, 40,174, 38, 25, 67,161,162,229,179, 0,100,188,255,167, 14,146,214,100, 88, 5,
-137,214,172, 2, 44, 19,197, 58, 49, 12, 51,195,112, 16, 21,246,122,169,230,216, 90, 18, 4, 1, 56, 92,173,217, 74, 52, 7,101,
-205, 36, 79, 41, 91,135,181, 22, 27,160, 85,154,224, 26,218, 32,177,109,139, 48, 9,179, 54, 48,236, 41,170, 74, 32,132,197, 5,
- 65, 30, 2,107, 4, 67,235, 88,120, 71,210,182,172, 93,203,134,173, 57,176,150,121, 91,242, 94,109,209,173,229,184, 92,211,148,
-107, 22,174,197, 16, 56, 90,213,140, 19,195, 91,243, 21,147, 94,198,219,139, 53,151,132,228,173,249,156, 3, 91,243,157,195, 3,
- 50, 35,248,206,241, 17, 79,106,193,157, 0, 33, 56,146, 32, 25, 59,139,209, 73, 52,195, 14,142, 32, 28, 19,173,121,183, 12, 92,
-144, 21,199,107,207,197,141, 30,247, 79,214, 36,210,211, 87,154,227,186,164, 72,163,127,125,169, 19, 26,225,226,115,155,117, 12,
- 41,107,127,226,160,248,195, 7,238,157,152,140, 54,241,140, 70,225,188,143,213,186,144,132,214,210, 75, 13,107,219,208, 4,135,
-212,112, 82, 58,140, 11, 44,154, 54,186,129, 6, 65,104, 58,108, 78, 91, 66,217, 57,136,226,227,179,255, 40,174,157,130,154, 78,
-103,159,246,172, 91,252,255,251,160,238, 59, 41, 49,173, 58,222,122, 23,200,219,112,134, 42,116,237, 89,228,246,174,171,214, 62,
- 9, 81,223, 1,226,132,234,130,184,138,191,211,214, 93,203,186, 58,227, 28, 54, 54,122,174, 55,143, 41,234, 25, 29,171, 65,249,
- 24,176, 76,158,185,155,137,172,207,139,207,127,134,103,158,188, 78,175,215, 67, 27,197,186,170,184,115,112,159,189,123,119,227,
-225,123,154, 28, 36, 26,146,132,173, 81,206,118,191,160,159,245,144, 82, 82,217,134, 85, 83,115, 82,150,236,174, 74, 88, 86, 81,
-251, 57, 72,212,164,224,252,104, 64, 47, 53, 12,139, 49,219, 59, 27,228,137,102,182,106,248,214,107,119, 89,188,255,131,159,184,
-133,243,216, 13,238, 70, 19,157,236,109,136,148,183,247,235, 21, 7,199,187, 60, 56,216,101, 93, 55, 92,217, 58, 71,222,207, 81,
-194,243,224,225, 17,255,213,239,254, 19, 94,249,202, 55,187,160,103,226,125, 82,242,236,104,124,132, 57,232, 16, 38,173,143,149,
-241,143, 19,247,249, 81,175, 34, 59, 11,138,139, 89,180,225,108,218,174,187,146, 69, 31,128,208,237, 1,239, 98,144,174, 42, 88,
-150,221,247,106,232,231,241,193,245, 62,226, 0,230,221, 92,218,119,202, 21,233,169,211,223,169,196, 36,143, 37, 42,143, 5,118,
-173,227,126, 60, 77, 42,165, 6,235, 59,139,204,186, 75,244,116,164,133,101, 25, 66, 9,196,186,138, 18,188,213, 58, 6,112, 37,
-161,170, 9,173, 37, 56, 23, 3, 58, 68, 3, 14,217,129,118, 78,177, 16,222,131,245,188,225, 53,111,103, 9,175, 84, 53, 83,231,
- 97,181,132,121, 25,247,112, 19,120, 48,204,153, 33,120,191,177,113,252, 81, 85, 81,191,191, 41, 17,131, 17,120,203,129,144,188,
- 44, 4,107,147,196,189,188, 92, 67, 43, 17,202,116,186, 15, 18,241,255,114,247,102, 63,150, 93,217,153,223,111, 79,103,184,231,
- 14, 49,228, 72, 50, 73, 22,139,172, 42, 85, 21, 85, 82, 73,130,160, 22, 36, 75,141, 22, 44,248,193, 3,208, 86, 3,110,219, 13,
- 63,250, 47, 51,252,110,192,112,195,176,209, 70,171, 37, 75,213,146,154,170, 42,138, 51, 43,147, 57, 69,198,116,167, 51,238,193,
- 15,123,159,184, 55,147, 76, 50,201,178, 90,178, 3, 72, 68, 70,144, 25,113,239,153,214, 90,223,250, 6,101, 17, 91,203,131,237,
- 6,117,253,128, 91,215,142, 88, 61,190, 68,216, 30, 57, 88,164,208,136,160,144,214, 34, 11,133,104, 59, 62,233, 45,127,120, 56,
-167, 16, 18, 3,208,111,177,219, 11, 86,245,138, 15,186,154, 48, 61, 64, 8,205,144,101,108,134,129, 19,239,185, 16,130,143,100,
- 6,147,138,160, 13, 97,146, 19,154, 13,190,174, 9,247, 31,224,127,241, 49,254,242, 49, 65, 14,180,213, 49, 93,153,211, 41, 29,
- 11,102,105,248,238,209,156, 27, 55,142,177, 46,199,132,150, 73,240,116,214,161,133,194,251, 1,129, 32, 87,138, 44, 4,154, 16,
- 48, 90,243,160, 27, 88, 90, 7,117, 29,143,219,115,178, 25,196,179,150,206,206, 33,144,176,168,248, 31,223,120,131,239,221,186,
-205, 76,104, 62, 89, 95,242,206,147, 53, 89,174, 25, 2, 44,219,158, 89,158,227,128, 91, 42, 99, 46, 37,133, 54, 76,132, 68, 74,
-131, 37,112,233, 3, 7,202,208, 20, 57, 34, 56,188,212,244, 90,115,233, 61, 5, 10,147,233,216, 95,186, 64,149, 27,150,214, 83,
-132,120, 29,158,110, 27,110,205, 38, 60,222,116,204,139,140,139,186,231, 64, 11,140,212,252,221,122,205,224, 28,173,215,224, 3,
- 65, 25,148, 86, 88, 31,184,223,195,161, 10,100, 33, 80,134, 64, 7,204,173,227, 52,128,104,182,212, 33, 48,107, 26, 62, 28,122,
-238,110,182,124,214, 13,172, 55, 43, 30,247, 61,194,245, 92,214, 45,198, 57,206,182, 61,173, 11, 60,104,122,230, 38,227,147, 77,
- 67,107, 61, 79,250, 30, 19,160,189,216, 50,207, 52,247, 30, 60, 97,154, 27,126,113,118, 73, 46, 3, 86,101,244, 93,143, 45, 10,
-142,157,231,220,118,220,153, 77, 57, 80,154,191, 89,117,188,148, 5,150,131,228,102,230,121,111,235,248, 97, 41,113, 34, 62,223,
-107,175,152,232,192,113, 53,227,141, 50,231,129,135, 46, 35, 89,125,187,100, 6,243, 75, 14, 14, 42, 37,143, 10, 15, 62,145,220,
-164, 96,232, 61, 91,235,153,103,154,203,186,167,202, 36,221,224, 9,214,147,201,192, 89, 29, 83, 62,109,231,147,227, 93,226,189,
-140,164,107,229,147, 29,249,222,179,227,115, 30,135,105,192, 26,107,203,255,175,139, 58, 36, 55, 57,157, 38,193, 36,228, 31, 69,
-255, 67, 27, 59, 43,111,227, 3, 94,136,184,220, 54, 42, 49,214,213, 78,228,159, 38,164,200,118,212, 49, 69, 13, 17,255,110,251,
-221,109,109, 19, 75,209, 39,120,100, 60,200,185,217,113,207,228, 51, 12,135,174,135,170,226,230,173,107, 28,207,142, 41,202,146,
- 97,240,212,219,154,119,238,126, 64,119,113, 17,139,158, 78, 19,122,145,113, 84, 25,110,204, 42, 14,167,115,166,217, 4,135,167,
- 29, 90,182, 93,199,233,166,163, 91,117,208,244, 8,149,145, 95,159,114,115,154,113,109, 54, 99,106, 42, 94,122,229, 21,138, 73,
-206,106, 99,121,255,239, 30,242,167,239,254, 5, 60,185,255,212,195, 73,188, 48,244,148, 26, 22, 49,190,151,152, 12, 84,167,164,
-180, 89,150, 83,233,130,224, 53,171,117,199,207, 62,120,143, 79,127,242,211, 4,171, 39,169,134, 81, 79, 63, 13,251,244,189,126,
-116,176, 19,187, 44,251, 95,138, 60,153, 94,107,121, 24, 39,115,145,108,111, 93, 42,230,117, 3,243, 73, 50, 28, 18,177,160,139,
-244,121, 68, 11,132,136,141,223,166,139,231, 98,148, 73,218,100, 35,108,187, 24,220, 99,147,132, 82,132,167, 11,187,148, 73,190,
- 39, 99, 34,133, 76,215,140, 34, 5, 12, 69, 27,201,200, 41, 40,162,253,240, 96, 83, 83, 82,199,194, 61,106, 91,115, 19,139,122,
-158, 69,219,100, 72,175, 47,201, 56,199,235, 87,200,200,202,239, 97, 56,152,197,107,219, 7,184,220,198,162, 44,163,214, 54, 52,
- 61,219,202,196,127,155, 73, 88, 54,241,218, 94,204,162, 68,173,168,224, 98, 5,229, 20,170,114, 23,236,115,177,130,114,130,240,
- 3,120, 27, 19,168, 68, 76,108,234,231, 37, 75,107, 17,141, 69,172, 26,132, 10, 96, 20, 34, 12, 49, 98,120,112,144, 73,130,115,
- 28, 59,193,145,239,200,109,141,104,123,134,102,205,178,235,249,105,211,211,151, 57, 42,159,224,165, 38,120,135, 84, 18,215,183,
- 60,193,208,154, 2,170, 5,193, 76, 8, 66, 68,144,164,200,162, 25,201,242, 18,127,177, 36,232, 64,152,222, 32, 8,193, 80, 42,
-254,235,131,146,255,252,118,201,119, 15,115, 84, 85,240,241,137, 37,147, 29,202, 58, 38, 90, 19,136,249,215,222,123,186, 16,112,
- 82,240,164,111, 89, 15,158,229,120, 29,174,187,200,246,127,166,152,239,238, 33,153, 38,246, 84,220,101, 0, 83, 82, 77, 37,133,
-208,252,117, 83,243,191,156,159,211,213, 61,235,186, 69,107, 73,161, 53, 10,137, 81,129, 45, 80, 72,197, 53,101,112,233,180, 22,
-218,160,164,162, 23,146,198, 57,230,101, 21,139,117,240,244, 82,114, 14,180, 1, 38,133,161,146,146,243,206,226,189,139, 91, 72,
- 4, 85,174,121,180,108,184, 49,201,185, 88, 55, 40, 41, 17, 82,112,222,245,200, 32,184,112, 61,125,231,241, 90,131,214, 52, 67,
- 67,231, 28,219,190,199,135, 64,150, 41,206,235,142,128,231,253,203, 45,249,176,101,233, 99,254,251,169,183,216,102,205,224,225,
-100,117,193,103,174,167,217,108, 88,110,214, 88,224,100, 89,179, 50,146,117,107,169, 7,203,121,221,225, 16,201,179,193,227, 86,
- 91,130, 54,180,203, 21,193, 7,218, 39, 43,130, 81,216,186, 35, 12, 29, 97,186,160,169,183,172,116,198,111,205, 42,150,155,134,
-206, 75, 94,158,228, 52, 93, 75,129,133,188,224,142,239, 57,241,138,174, 95, 97,109,207, 16, 96,145, 23,228, 66,210,218,232,210,
-247, 32,136,200,125,154,100,241,126, 24,161,239,111, 98, 89, 62, 42,173,178,184, 90,193, 13, 9,185,181, 87, 40,192,122, 24,168,
-123,139,181, 2,111, 3,195,224,217, 52, 14, 33, 2,182, 79,161, 96, 93, 31,159,159, 46, 14, 99,144,146, 78,247, 93, 87,125, 26,
- 2,174,166,244,196,102,180,254,133,204,220,254,241, 20,117, 83,196,244, 32,228,151,230,117, 63,119, 90,207,246, 32, 80,165,227,
-129,242, 67,100,172,219, 62,234,110, 69, 58, 34, 33, 77,135, 90,236, 96,244,164, 41, 39, 36,104,101,132,232,165,220,155,244,211,
-212,101,197, 14, 94,127, 54,181,205,167,137,223, 37, 41,152,243,145,176,225, 1, 97, 56,203, 37, 47, 47,230,244,221, 64,176,150,
-187, 79, 62,229,131,123,159,236,180,144, 58, 78,131,147,210,112, 56,201, 89, 76, 43,102,249, 28, 41, 37,214, 14, 44,251,142, 77,
-215,243,164,238, 99, 30,187,206,224, 96,194,157, 69,201, 97, 89, 82,230, 37,243,114,206, 91,223,123,157,235,179,146,204, 8, 62,
-120,239, 99,222,251,228, 35,184, 60,249,166,112,200,158,110, 51, 69,241, 86,115,178,178,228,160,200,200,181,161, 13,129,143, 30,
- 62,224, 79, 63,124,143,247,254,230,239,192,109,246,150,144, 38, 22, 43, 41,227,212,238, 82, 65,175,219, 20,247,153,154, 38,163,
-190,121, 39, 93, 20,177,136, 78,167,176,217,166, 41, 57,192,164,138,231,181, 79,222,246, 82, 70,103,166,182,191,178,239,197,199,
-104,225,120,142, 18, 44,159, 21,241,245, 5, 82, 1,110,227, 62, 61,249,223,211, 52,113,119,175,216,161, 67,251, 81,139, 87,225,
- 13,114,215,224,133, 61,214,171,115,177, 48,236,191,223,253,191,123, 31, 39,243,100, 97,138,115,145,112, 39,211,100,158,114, 5,
-174, 86, 25,125, 63,218, 95,193, 43,183, 80,229,140, 27,101,197, 54, 23,240,228, 50,233,204,211,185, 92,204, 35, 18, 20,194,206,
-132,102,181,142, 73,123,155, 26,174,207, 33, 4,196,172,136,175,121,219,166,102,110, 27,139,121, 82,153, 8,231,163,157,229,249,
- 26,113, 48, 71,228, 38, 30,183, 77,141, 24,250, 24, 13,170,210, 74,164,183, 64,224,167, 93,207, 27,198, 80, 17, 80,125, 75,211,
- 90, 62,169, 91,126, 58, 56, 62,177,142,235,243, 25,223, 41, 42,222, 94, 28,161,134,158,181,247, 28,116,151,124,234, 76,108,172,
-102, 7,145, 56,184,184,193,143,143,143,185,223,172,240,189, 35,212, 91,194,253,207, 8,153,137,124, 10, 39,248,147,155, 37,223,
- 59, 46, 89,228, 26,147, 73,126,182,246,232,213, 41,165,209,116,125, 71, 78,160,151, 38,150, 99,109,120,210,109, 25,132,196, 14,
-150,190,239,232,214, 49,255, 65, 52,245, 83,197, 92, 60, 85,216, 61, 2,141,192, 94, 77,235,216,142,159, 7,195,159,122,199,159,
- 55, 61, 53,169, 73, 20,130,237,186,129,204, 96,113,136, 32,201,149,226,186,210, 12, 4, 94,214, 5,185,206, 89,135,128, 70, 97,
-181,230,176,172,216,122,199,160, 13,235, 32,112, 82,176,246,129, 13, 49,161,113,150, 25, 42,163,232, 7,199, 48,120,172,128,102,
-176, 17, 58,111, 7, 14, 50, 21,141,180,172, 67,245, 22,213,119, 8, 33, 57,181,158, 94, 72, 6, 17, 73,215,117,223,114,233, 3,
- 23, 46,176,217, 54, 76, 76,198,197,166, 97,161, 28, 15, 90, 75,233, 58, 30,110,107, 28, 61,219,110,203,159, 45, 47,184,168,155,
-216,144, 54, 17, 70,118,231,171,248, 60,220,180,208,247, 49,201,174, 31, 98,200, 86,211, 17, 86,171,120, 15,157, 44, 99,145, 93,
- 94,198, 21,195,233, 50, 26,187, 12, 1,108, 67,168,230,116,237, 26,134,158,133, 12,156, 15, 3,133, 17, 4, 27,157, 11, 55,205,
-138, 90,192,147,166,230,208, 24,206, 91, 75,158, 5,166,166,192, 5, 16, 90,179,181,150,123, 99,152,202,164,136,190, 36,215, 15,
-163, 75,162, 76, 68,225,175, 83,103, 76,182,139, 20, 31,221, 73,247,239, 65,239,163,117,122,223,209, 53,142, 70, 6,154,186, 71,
- 40, 69,223,244, 73,174,214,196,223,235, 54,169, 64, 63,199,117, 85,243,140,220, 40,125,253,130,205,200, 63,142,162,174, 83, 22,
-176,142,214,170, 95,197, 42,126, 62,213,120,239, 97,218,165,192,150,171,253,185,221,177, 92, 66, 58,112,195, 62, 20,236,158,110,
- 14,180,121,122, 90,191,154,184, 83, 66, 92,231,118, 80,238, 62,132, 47,216,193,162, 33,193,180, 99, 23,166, 4, 46, 24,234,208,
- 48,241, 61,203,205, 35, 46, 54, 39,108,124,199,224,119,150,130, 89,169,185, 86, 77, 56,172, 74,166,217,132, 66, 90, 78,169,235,
- 0, 0, 32, 0, 73, 68, 65, 84, 27,108, 8,108,135,150,139,237,134,179, 77,135,219,246, 48,128,152,228, 92,159, 23, 92,171, 10,
-102, 69, 69,174, 50, 6, 2,175,189,122,135,249, 52,227, 98,213,177,222,212,188,243,209,123,176,190,124,174,246,246,171,235,186,
-219,243, 3,144, 48, 95, 80,205, 74, 14,178,156,160, 20,171,186,229,201,102,203,242,228, 18, 46, 79, 83,243,147, 46, 88, 61,162,
- 32,169,248,140,133,193, 36, 66,158,237,119,251,229, 47,156,212, 83,215, 58,194,226,232,167,239, 4,157,104,252,102, 22,245,158,
- 70,198, 27, 80, 22,224,154,157, 54,116, 83, 67,189,141,231, 56, 58, 73,128,206, 83, 99,230,226,121, 51, 58, 54, 8, 46,194,226,
-148, 42,122,217,207,170,116, 46,109,146, 47, 57,162, 56,117,111,133, 16,194,211,133,221,166, 66,218,251,221,154,232,107, 48,117,
- 62, 71,140, 51, 58, 54,164, 99, 65,246,196,227,233, 92,226, 61, 4,152, 47,120,235, 91,175,243,107, 71,183,184,153,151, 76,253,
-192,227,211,232,206,118,149,147,144,151,187,166,202,218,200, 11,209, 38, 73, 63,199,172,231,128,152,228,177, 72,103, 10, 46, 46,
-163,217, 19, 62,146,230,172, 67, 12, 3, 98,176, 8, 23, 82,118,193,140,127,254,250,109, 66, 54,112,250,217,229,238,149, 91,119,
-245, 30,124,215,241,231,141,197, 13,142,198, 8, 30,122,203,251, 18, 62, 81,240,104, 99,185,121, 48,225,119,111,188,196,245,188,
-224, 85,105,152,175, 47,168,221,128,217, 62,230,209,166,129,182, 39, 28, 28,240, 47, 95,191,206, 31,189,121, 27,161, 22,188,223,
- 46, 99, 70,188, 84,132,135,247,225,248, 26, 28, 29,241,122, 85,240,237, 69, 78, 43, 4,103, 29,220,247,240,248,211,135,152,224,
- 49, 4,214, 82,130, 16, 56,161,120,104,123, 10, 33,144, 42,103,232, 7,142, 50,104,236, 64,183,105, 16, 67,159,244,198,241,116,
-238,127, 22,105,167,254, 84,177, 31, 44, 98,219,211, 78, 13, 78,166, 66, 47,227,196, 37,130,163,217, 52, 52,198, 80, 72, 34, 63,
- 70, 75,230, 62, 80,101, 6,235, 44, 83,105,152, 72,197,214,123,122,233, 17,186,164,182, 61, 94, 74, 30, 9,197,178, 23,172, 26,
- 75, 94, 26,182,110, 64, 75,193, 76,105,188,243,180,221,128,246, 30, 63,120,242, 16,240, 8,164, 8,176,237,152,181, 29,165,179,
-168,224,104,115,197, 73,239,216,184, 64,235, 28, 27, 33,232,156,231,126,183,102,144, 25,149, 86,200,190,225,222,106,195,249,208,
-178,238,123, 54,182,163,235,123, 62, 91,175, 57,107, 45, 92, 46,227,245,119,177,142,241,219,193, 71,181, 81, 63,196,123,202, 54,
-241, 26,243, 67, 84,141,228, 57,156,158,199,251,111,181,138,215,196,118, 27,135,159,109, 3, 34,198, 37, 35,162,251,231, 89,223,
- 51, 15,240, 51,231, 89,116, 29,235, 32, 88,214, 91, 30, 4,133,182,142, 39,214,161,188,231,174,179,252,197,118,203,107, 50, 96,
-101, 96, 51, 12,252,101,111,227,229,138,143,107,184, 60, 71,234,156,151,143, 15,152, 29, 77,168, 15,231, 4, 39,211,250,244, 5,
-208, 65,231, 34, 73, 88,184,221,189, 2, 41, 95,100, 72,171,222, 16, 27, 24,198,148, 75,129,235,250,248, 59,172,141, 5, 93,217,
-157,204,247,203,102,168,209, 9,117,159,168,247,194,180,162,127, 12, 69,221,251,180,175,216, 17,135,190,209,207, 64,198, 93,135,
- 27,226,131,168, 75,218, 16,199,110, 23,225, 34, 9,126,127, 0,189,130,136, 71,237,185, 76,208,188, 16,241,117,165,155, 63, 66,
-156,163, 55,124, 58,137, 98,183, 51,143, 77,129,137,147,169,244,201,160,127,120,250,196, 76,102,148,243, 9, 85,169,200, 53, 20,
- 38,222,232,151,214, 19, 92,180, 14,172,202,130,235,179, 41,243,162,162,204, 39, 41,173,171,231,124,187,230,164,110,217,110, 59,
-132,245, 80,104,110, 45, 10,110, 86, 21, 85, 81, 98,164, 70, 74,205,209,225,171,160, 74,250, 32,120,248,112,201,195,199, 15,249,
-232,254, 61, 88,158,127, 51,232,105, 31,133,240,196,155,114,126, 72, 85,149,232,148, 91,126,210, 52,108,158, 92,194,217,131, 20,
-180,147, 90, 80, 97,210,234, 34,117,184, 89, 34,132,141,176,187, 75,123,238, 97,120, 62,244,174,229,174,113, 29, 93,253, 70, 72,
-106, 50,141, 95,151,243,184,227,118, 46, 74,139,236,144, 32,172, 33,157,244,104,231, 24,247,224, 1, 84,145, 76,135,210,117, 83,
-153, 56, 69, 84,217,142, 91, 81,165,102,161, 72,174, 79,222,197,255,103, 36, 77,202,196,187, 24,228, 30, 9,208,196,189,155, 52,
-169,121,200, 32, 31,149, 4,207, 63,246,226,170, 81,121,186, 97, 9,251,141,141, 72, 1, 70, 46, 17,170,204, 12,249,171,111, 17,
-206, 47, 82, 53, 17, 80,206,184,249,202,109,102, 69, 69,166, 10,140,132, 79, 79,206, 97,187,142,175,105, 76, 78, 20,130, 76, 9,
-110,107, 88, 53,251,107, 43,153,204,151, 28, 28,205,160,152,197, 9,220,135, 68, 24, 84,136, 20,205, 43,246, 27, 62, 60,255,213,
-219,111,241, 47,222,252, 46,191,119,253, 38,239,172, 78, 56,191,216, 92, 53, 56, 87, 54,150,222,227,109,207, 7, 97,224,207, 6,
-193,217, 52,231, 1,158,115, 47, 24,108, 64,230,134,223,153, 46,184, 38, 13,197,224, 41,183, 23, 56, 4,210, 7, 84,127,201,163,
-229, 25,223, 95, 28,243,251,223,190,193,155,215,231,156,108,122,126,210, 65,200, 6,194,201, 25,225,244, 81,116,194,155,223, 98,
- 57, 59,224,179, 65,240,216,193, 71,173,231,211, 85,207,185,133,220,121, 90,219, 70,110,177, 52,180, 2,132, 16, 32, 13, 50, 56,
- 22,153, 33,247, 3,202,246,132, 48,208, 46, 55, 8,239,159, 2, 67,197, 51,224,168,124, 22,150,183, 61,172, 54, 8,159,208, 64,
-149, 26, 49, 36, 88,135,235, 58,214, 66,144,107, 67, 55, 12, 44,140,230,178,239,120, 75,231, 4, 99,120, 40, 36, 85, 97, 48, 86,
- 80, 7,207,133, 54, 60,118,158,199, 27,203,214,123, 90,226, 37,238,149, 36,243, 30, 23, 60,218, 58, 46,235,142,185,148,184,222,
-178,181, 3,155,245,134,126,219, 48,107, 7,140, 31,208,222, 81,132,232, 65, 95, 86, 57,119,166, 25,111,148,134,219, 69, 70,222,
-247,172, 61,156,247, 13,239, 53, 91, 62,108,107, 30, 13, 29, 39,182,231,241, 96,121,220,108,121,112,121,198,210, 9,196,201,147,
-216, 36, 95, 92,198,235,146,189,208,173,164,144,136, 60, 20, 23,229,155,163,194, 98, 31,145,218,123,110, 6,239,146,135,134,132,
- 34, 35, 92,108, 8,133,230,161,247,220, 14,158, 71,213,156,118,123,201,251, 58,167,116, 29, 91,107,217, 10,197,165,119, 56,215,
-115, 17, 2, 15,187, 30, 53,120, 78,219,154,251,193, 63,197,139, 58,194,243,118, 49,225,119,230, 19,126,237,224,136,223, 60,152,
-163,103, 57,247,114,149, 86, 98, 47,176,250, 19,196,250, 50, 42,147, 70, 95,143,113,101,107,251,184, 82, 27, 18,147,221, 15, 73,
-230,236, 18,212,158, 2,195, 94,244, 25, 60, 62,155,198,191, 75,253,197,132,220,127,180,240,251,213, 68,243,180, 85, 30, 90, 39,
- 6,115, 98, 11,127, 25, 81, 64,138, 52,125,141, 33, 42,201,222, 85,133, 29,204,106, 68,124,206,143, 63,195,164,234, 46, 19,236,
-234,146, 99, 80,158,195, 75, 7,112, 52,133,101,189,243, 65, 23, 50, 77, 30,209, 87, 56,154,180,236, 17, 28, 38,101, 44,236, 38,
- 75,221,149,125,250,245,154,146, 27,119,110,240,202,252, 16,109,178,184,214,237, 91, 78,183, 93, 42,234,146,235,147,130,107,213,
-140,210, 24, 36,138,206, 15,172,251,154,243, 77,205,197,101, 13,189, 69, 40,197, 43,243,130,151,143, 38, 28, 84, 37, 70,104, 50,
-157, 83, 84, 83,254,211,223,255, 1, 63,126,243, 8,169, 21,127,241,211, 19,254,242,227,191,163, 89, 95, 68,189,242, 47,179,179,
- 30,177,162,234, 16,142, 14, 40,141, 70, 9,120,188,174,105, 87, 27,184,184,136,197,121,212, 91, 74,145,136,114,121,220, 29,233,
-189, 34,110,212,142,245, 62,118,194,207, 67,113,236,142, 0,138,220, 63,119, 58,222, 48, 38,139, 55,154,117,145, 16, 87,111, 64,
-151, 17,249, 9, 42, 90,127, 14,109, 44,106, 33, 62,188, 17,169,185,168,242,216,104, 76,146, 4, 70,171,248, 59, 42, 19, 31,198,
- 70, 38,182,121,216,153, 16,217, 68,192, 20,106, 15,194,243, 81, 58, 35, 68, 68,114,148, 1,153,237, 94,255,115, 61,197,147,235,
-222,216, 84,122,187,199,122,245, 79, 55, 54,227, 49, 29, 43,199,181,235,252,240,205,215, 57,249,224,227,248,125,231, 33,203, 56,
- 61, 92, 80, 86, 11, 46, 3,188,223,118,116,143, 31, 68, 38,183, 17,144,149,208,110,184,118, 60,231,247,143, 42,110,101,154, 66,
- 5, 78, 46,215,241,191, 13, 77,132, 24, 69, 72,146,205, 99,254,217,241,171, 28, 79, 12, 15,158,156, 70, 67, 27, 19,163, 64, 73,
-211,171, 48, 26,208, 44, 22,134, 63,254,193,143,248,219, 39,103,220,117, 61, 15, 30,159,198,200,224,177, 65, 73,210,176, 49, 89,
- 42,120,201,153,201,240, 72,110, 2, 63,170, 50,110, 20,130,169,148,188,220, 7,228,208, 32, 49, 52,190,229, 0, 9, 89,206,203,
-194,177, 25, 28,157,207,216,132,192,191, 62,233,120,210,119, 4, 83,194,172,140,199,110,189, 37, 72,135,206,143,248, 48, 72, 46,
- 7,248,100,176,172,183, 17,181,105,234, 26,134,192, 36, 19,116, 78, 32,114, 77, 70, 12,136,154,168, 12,165, 20, 42,192,205, 16,
- 19,178, 30, 53, 61,170,115, 72,118,133, 93,125, 65, 65,127,182,176, 51, 88,196,182,129, 46,217,127, 75, 5,185,185, 74,236, 10,
-181, 99,179,220,178, 21,176, 10,158,185, 17, 8, 93,176,178, 61,103,182,229,124,112, 88,109,120,191,239, 80, 66,240, 68, 9,206,
-154,150,117,240,216, 44, 99, 93,183,100, 97,192,123,168,155, 14,183,109,168,140,138, 54,202,131,229,100,179,230,108, 91,211, 52,
- 13, 19,107,163,211,156,181, 4, 15,153, 49,220,152, 78,184, 49,155,112,108, 12,151,131,199,202,128,168, 27,222,111, 55,132,161,
- 33,244, 45,222, 89,232, 26, 66,189,134,243, 83,196, 96,225,228, 28,218, 22,177,169, 17,146, 8,179,135,164, 6,217, 47,232, 95,
-151,113, 46, 71,211, 31, 15,133,137,207, 82,239, 88, 26,131,234,182, 60, 54, 25,175, 14, 53,181,201,185, 59,180,204,148, 96,105,
-123, 78,156, 67,234,156,239,248,150, 75,239,249,168,109, 8, 30,222,146,146,133,144, 92,122,199,155, 38,227, 87, 38,134, 91, 38,
-199,168,128, 17,154, 75,223,115, 87,104,156,208, 17,189, 82, 89, 42,206,246,249,104,165, 73,211,186, 50, 96,219,196, 93, 73, 12,
-246,253, 24,242,167, 2, 89, 82, 16,216,215,217,231,107,253, 12, 4, 47,159, 46,246,254,255, 11, 69,221,185, 47, 46,232, 87, 15,
-197, 4,139, 7,249,197,112,201,213, 30, 34, 60,221, 5,238,235,112, 71, 25,149, 25, 63,167,255,238,252,110,210,145,137, 72, 39,
- 45,211, 87,111, 49, 45, 50,154, 39,235,100,237,103,119, 48,116,231,119, 18,170,241, 53, 23,147, 4,131,202, 29, 84,237,159,121,
-152,231, 19,236,108,198,237,131, 35,148, 16, 56, 31,184,216,108, 56,171, 59,148, 86,148, 74,113, 52,201, 40, 77,134, 86, 10,239,
- 28,219, 97,203,197,182,230,193,170, 78,177,166,176, 88, 20,188,116, 88, 50, 47, 74,140,201, 98,230, 60,130, 27, 7, 51,126,251,
- 87,191,197, 98, 58, 99,106, 20,239,222,219,240,206, 47, 62,196,214,107, 56, 59,121, 46,188,251, 66, 59,165,249, 20,200,120,237,
-199, 63,224,215, 95,126,157, 91,179, 5, 65, 58, 90,215,209,124,250, 16,252, 38,237,206,139, 84,204,211,241,108,235, 72, 34, 28,
-139,184, 20, 17,150,203,205,206, 11,249,139, 46,246,241,220,143,146, 77,253, 12,194,226, 71,123, 95, 19,111, 68,157, 39,107,224,
-144, 98, 99,137,134, 67, 38,143, 77,217,200, 7, 48, 69,108, 20,117, 98,144, 79, 77,146,170, 40,200, 21,114,146, 35,180, 66, 26,
- 69, 24,207, 33, 41, 48,104,176,241,223,140,112,154, 78, 48,254, 32,163, 49, 81,110,146,244,164,139, 23,135, 78,202,129,231,133,
- 1,233, 81,159,191, 87,216, 71,207,234,103, 31,120, 34, 77,235,227,199,118,205,201,199,159,238, 96,127, 66,108, 88,143,103, 60,
-201, 43, 78,135, 45,157,181,208,109, 34, 84, 58,254,204,131, 67, 94, 91,104, 50,163, 9, 1, 62, 89,246,108,181,129,213, 5, 76,
-230,208,213,241, 61, 8,193, 31,190,254, 38, 63,124,227, 85, 74,239,184,215,173,232, 78, 19, 92,218,237,145,199,140, 70,100,154,
-251, 23, 45, 31, 46, 31,241,192, 76,184, 11, 44, 55, 13, 97,179,141, 58,111, 41, 63,159,130,102,123, 66,208, 28, 21,240,134,210,
-188, 81,149,188, 49,159,210,121,203, 13, 37, 81, 46, 66,157,153,146, 76,117,134,240,150, 30,144,125,205, 79,159,156,240,111,206,
- 59, 30,116, 77,132,221,117, 70, 16, 6, 42, 77, 48, 18, 46, 47,217,108, 46,121,141,130,207,182, 3,125,221,208,116, 3, 85,219,
-192,118,197,145,148, 8,153, 81, 77, 12, 90, 72,188,130, 3, 64,104, 69,142, 96,130,128,161, 37,195, 33,133,224,162,173, 81,131,
-101,164, 8,236,255,217, 47,242,159,219,185,251,184, 99, 23, 46,128,214,136,210,196,128, 35, 37, 16,237, 16, 55, 78,118,224,210,
- 57, 30,116, 3,109, 24, 56, 13,142, 51,111, 49, 66,240, 81,223, 48, 17,130,143,189,227,209,170,166, 53, 37, 79, 54, 75,250, 16,
-168,125,207,196, 69, 87, 75, 97, 29,167, 67,199,114,187,165,173, 59, 62, 93,157, 51,244, 29, 67,112,172,251, 45,166,219,112, 83,
- 40,108,146,241,137, 44,103,114, 48,141, 54, 17, 82,112,152, 25, 30,174, 87, 56,215,243,176, 27,168,235,109,188,103,150,231,132,
-203, 11, 56, 95, 34,150,107, 56,189, 68,132, 14,209, 70,164, 70,132, 30,132, 65, 40, 31,101,138, 62,161,114,163, 84,245,235, 32,
-131,222,167,240,149, 68, 0,237,134,132,140,246,116,194,131, 13, 92,106,197,118,179,129, 32, 89, 91, 71, 23, 28,232,156, 31,251,
-134, 11,149,241, 27,153, 96,134,226,183, 84,148,159, 86, 67,205, 45,161,208,120,126,101, 58, 97,145,130,210,182, 67,199, 84, 74,
-126,178,105, 8,133,142,210,183, 34,135,249, 60,145, 92,247, 82, 63,159,154,214, 83,243,210,182,113, 88, 24,119,227,157, 77,255,
-205,255,191, 52,228,202, 47,159,128,191,228,247,252,195,155,207, 24,189,199, 90,126,166, 83, 82, 50, 86, 94,147,168,255, 50, 61,
-221,195, 23, 9,241,247,222,138,251,130,130, 62,194,223,201, 4, 4,201,206, 46,118,172,112, 87, 38, 49, 22, 6,205,230,231,119,
-227, 3,121,219, 38,210, 83,218,151, 42,187, 11,132, 65,238,153,181,216,120, 97,132, 4,155,116,225,105, 67, 1,128, 97,205,198,
- 89, 92, 80,180, 22,214,173,227,164, 30,144, 8,202, 76,113, 80,228, 20, 38, 50, 97, 91,107, 9, 56,214,109,199, 69,215, 19,172,
- 67, 40, 13,165,138,164,184,162,136,161, 33, 16, 67, 36, 92,203,195,179, 53, 39,203,142, 42,239,120,184, 28,176,206, 38,162,158,
-251, 6,114,182,221,199,244, 55,190,195,183,230, 11, 38,170, 98, 54, 59,226,120,113, 72, 46, 13,215,219, 25, 85, 46,248,243,247,
- 62,130,173,141, 59, 89,246,229,107, 73,106,214, 63,109,168,195, 36, 17,209,244,151,152, 42,140,231,107, 60,189,227,215, 58,157,
-171,174, 7, 61,219, 17, 42,100,202, 35, 38,201, 25,221, 22,156,137,133, 93,164,140,248, 60,201,178, 72,205, 93,110,226,142, 44,
-207,200,178,216,100, 41,160,144, 26,171, 28,181, 21,228,165,166, 27, 18,146, 52,155, 68, 63,245, 73, 30, 97,245, 38,105, 75,171,
- 50, 90, 6, 75, 29,201, 67,121,145,222, 67, 27,157,232,122, 3, 19,226,123,126,170, 27, 79,124, 15, 29,167,221, 88,224,247, 59,
-152,189,181,144, 75, 1, 16,227,234, 98,108,112,198, 99,145,103,209,140,105,179,129,195,109,116, 54,211, 9, 45, 40,202,168,195,
-159, 86,240,248,140,119, 57,230,222, 12,100,110, 88, 41, 13,155, 75,152, 30, 64,187,141,123,116,239, 97, 93,243, 89,215,113,116,
-190,229, 51,159,179, 12, 42,110, 49,106,251,244,121,243, 50,230, 84,219,158, 63,255,236,130,197,225,171,172, 79,207, 98,255,145,
-206,249, 83, 83,250,222,159, 80, 47, 89,103,146,249, 97,193,119, 23, 37,153,144, 56,165,249,100,123,193, 91,197, 33, 70,121, 38,
-147, 25,222,246,220, 12, 14,143,196,245, 43,190,181,189,228,238,234, 18, 83,205, 8,179,107, 4,100, 52,192,201, 94, 38, 20,115,
-130,235,248, 23,179,156,191,189,247, 87,188, 89, 45, 88,150,135, 20,229,140, 39,237,150,107, 66, 64, 89,198,185, 91, 43,180, 20,
- 76, 27, 79,143, 99,129,192, 23, 19,194, 48,144, 87, 71, 84, 66,113,190,174,209, 38, 39,198,194,124,126, 34,223,111, 84,174,222,
- 87,250, 44,198,247,190, 93, 19,130, 36,100, 10,170,138,160, 12,225, 72, 35,122, 75,216, 52,132, 77,207,210, 57,254,109,231,249,
-241,177,229,194, 43, 62,212, 27,174, 77, 42, 62,114, 27,200,166,108,125,160, 8,209,204,103,211,110,232,124,192,234, 14,113,182,
-230,237,197, 1,178, 31,168, 76,198, 59,219, 19,174,137,156,114,176,156, 13, 27, 46, 29,220, 15, 45,101,223,112, 92,206,177, 69,
-197, 76, 11,182,155, 22, 93, 21, 56, 37,176, 93,135,148,154,135,221,192,106,216,144, 97,105,235, 21,172,215,136,101, 3,171, 21,
- 65, 14,136,145, 83, 50,158,215,222, 35, 84, 15, 72, 2, 30,161, 36,193,181,105,205,240,245, 72,175, 97,188,231, 85, 3,107, 29,
-137,168,125, 7, 7, 7,177,192,151, 9, 82,207,243,120, 47,200, 36,237,180, 45,179,162,228,147,182, 97, 41, 4, 71,153,226,227,
- 65,114, 68,203,185, 87,188,149, 5,250,208,209,175, 47, 97, 50,101,166, 21,107,215,115,210,245,120,145, 86, 35, 34, 68, 57,107,
-211,195, 75,215,225,108,147, 34, 82, 19,172,222, 15,177,144, 15, 22,244, 38,222,159, 87, 38, 97,123, 70,101, 90,255,242,122,120,
-173,191, 24,250, 15,207,148, 59,251,143,117, 82, 31, 39,112,165,227,222, 81,238,125,125, 53,229,176,251,108, 71, 93,174,253, 18,
-182,160,125,250,107,255,140, 92,192,237,193, 33, 87,242,163, 44,254, 78,108,100, 99,187, 36, 53,112, 9,234, 80,196, 7, 38,169,
- 83,243,118, 23,252,146,233, 84,188,211,207, 22, 68, 63, 95, 98,224,253,231,100, 87,179, 3,202, 42,167,115, 61,237, 48,176,238,
- 26,122,219, 51,211, 25,135,121, 78,145,101, 8, 33,105,135,142, 77,219,114,110,123,150,109, 79, 24, 2,170, 52, 28, 87, 21, 7,
-147,130,194,228,104, 37,233,251,129,203,182,225, 73,189,225,238,197, 25,205, 70,242,201, 67,199,187,159, 62,225,253,187, 31, 80,
-169,128, 83, 57,109,239, 9,205,234,235, 23,247, 55, 94,225,159,254,202,247,185, 61,191,198,205,195,235,204,103, 7, 44, 14, 14,
- 40, 76,134,243, 61, 77,187,228,211,229, 18,206,151, 59,153,213,216, 84,133, 16,215, 20, 89, 58, 31,253, 30, 52, 47,229,231,143,
-207,243,246,248,114,239,239, 30,200, 85,156,184,155, 77, 34,160, 16,247, 89, 56, 80,147, 8,187,155, 44,157,184,116, 30, 77, 74,
-200,209, 58, 58, 66,205,242,120,141,149, 5,224, 9, 62,112, 84,229, 87, 15,236, 76, 38,171, 77, 31, 8, 66,197,189, 95,112,105,
- 98, 78,136, 81,174, 83,140,162, 74,193, 65, 99,196,111,136,223, 23, 33,238,214,242, 34,222,149,251,124, 17,159,184, 2, 9,118,
-140,215,244,190,209,254, 30,203,118, 68, 61,174,162,113,247,110,114,159, 16, 16,159,194,136, 38, 51, 56, 92, 64, 62, 69, 9, 65,
- 38, 21,110, 52, 81,217,180,145,244,119,185,161, 47, 10, 58,147,208,132, 50,143,238, 91,101, 21,247,128, 58,114, 33,206, 53,188,
- 43, 53,247,187, 26,164, 67, 60,124,188, 11,164, 72,240, 59, 18,196,104, 0,213, 91,218,161,142, 43, 47,173, 9, 82, 71,118,116,
-146,227,125, 62,163, 92,114,205, 24,126,235,230,148, 91, 89,193,196,100, 8, 37,249,197,208,113, 32,161,202,231, 8, 33,112, 56,
-132, 16,244,222,177, 28, 58,154,190, 67, 52, 27,182,167,151,216,205,217, 21,124, 19, 76, 73, 40,103,252, 15,175,220,230,247, 94,
-122,137,227,233,130,127,253,228,132, 91, 65,112,186, 61,231,150,130,163,108,194, 52,211,148, 69,142, 29, 98,242, 95, 41, 4, 57,
- 62,242, 96,241, 20, 89,134, 14,138,105, 81,177, 40, 51,110,230,146,187,203, 14, 29, 28,198, 75, 12,158,241,113,174,158, 3,199,
- 63,245,199, 59, 16, 30, 49, 36,110, 78, 89,112,109,118,192, 31, 93, 95,240, 79, 94, 57,230,164,222,178, 94, 54, 4, 60, 15, 55,
- 53, 23,214,115, 62, 88,238,213, 29, 91,165,248,108,121, 70,231, 6, 30,172,207,104,112,172,173,101,109, 91, 30,116, 53,107,231,
-248,219,139,115, 38,194,242,168, 94,242,139,186,229,172,222,114,183,169,209,190,227,175, 79,206,249,216,195,208,173,208,120, 78,
-240, 88, 4, 74, 72,154, 20,108,243,222,118,203,123, 23, 75, 62,232,182,224, 2,153,237,113,193, 98,211,115, 82,180, 93,124, 15,
- 1,132, 13,136,144, 38,115,107, 35, 31,193,249,104,123, 19, 66, 44,252, 95,115,205, 23,158, 69,109,187, 38, 93, 88,169,154, 41,
- 17, 7, 41, 49, 18,107,137,114, 81,231,248,149,178,160,238, 26,222,158,228,209,138, 2,207,143,139,156,247, 26,203,143,171,156,
-141,237, 41,165,164,177, 14,221, 53, 8,107,121,210,183,252,207, 23,203,216,168, 15, 9,125, 29, 3,190,180,230, 55,111, 86,252,
-209, 43,215,248,209, 75, 71,188,121,243, 58,191, 88, 28, 50, 76,170,221,250,117, 24,146, 12,186,216,153,133, 5,183, 99,194,127,
-227,130,254, 69,204,119,190,160,182, 61,127, 90,255,135, 45,234,251,147,202, 24, 87,122,213, 2,139,120, 34,145,241,160,141,208,
-249, 24,146,178,127,209,248, 17,174,120,246,161,200,231,119,218,159,131,119,109,124,248,155,113, 63,158, 14,170, 86, 73,146, 38,
-227, 5, 52, 6,200,140,110, 98, 97,188,123,243,157, 14,123, 31, 17,240,246,249, 5,171,172,200,167, 37,210, 7,182,125, 67,215,
-247, 4,235, 57,154, 22,148, 89,129,146,130,193, 90, 90,235, 56,111, 59,214, 77,135,245, 1,101,114, 38,153, 97, 90, 26, 38, 69,
-142,137,157, 6, 77,215,178,234, 91,206,215, 61,171,186,230,195,123,247,120,247,222, 7,172,150,143,184, 61,187,201,245,234, 6,
-139,131, 99,238, 93, 60,138, 19,217,139, 94,116,142,136,138, 28, 46,120,229,218, 33,185,202,168, 38,115,132, 18, 20, 89, 78,179,
-169,145, 74,240,100,249,132,187,255,254,189,248,158, 71,214,102, 8,187,162, 62,186,188, 57,191,251,220,245, 79,147, 12,191,148,
-108,177,199, 33, 83, 73,199, 63, 50,229,139,196, 95,240,233,156,185, 4,201,211,165,203, 33,196,134,173,154, 68, 41,215,124,186,
- 75, 94,146, 50, 18,227,132,231,104, 82, 82, 24,141, 70,178,200, 13,141,117, 84, 82, 99, 69,140,210,116, 4,130, 8,228, 69,137,
- 27,229,143, 46,105,218,125,114,155, 35, 21,115, 41, 83, 66,148,221, 93, 67, 90, 69,251, 96,189,111,176,227,119,133,221,219, 47,
- 0,206,252, 30, 73,102,143,131, 48,202,227,132, 72, 65, 66,201, 85, 14, 17,191, 95,205,225,232, 26,210,100, 8,169,240, 12,132,
-182,129,139,243,216, 92,108,155,136, 44,228,102,151,239, 60,164, 9,108,232,162,171,222,232,156,104,109, 90, 79, 36,243,165,166,
- 67,156, 62, 77,184, 20,222,131, 23, 8,147, 26,157, 54, 53,186, 87,134, 69,146,224,159,247,160,247,172, 85,198,143, 22, 37,183,
-178,140,193, 59, 86,222,113,215, 90, 30, 73,207,235, 89, 69, 97, 74, 10, 97, 48,125,131,232, 26,238,213, 43, 6,239,169, 6,207,
- 4,203,242,124,139, 61,191, 32, 20,146,144, 25,190,149, 79,249,195, 87,111,241,202,193,148, 7,155,150, 63,221, 52,124,178,189,
-196, 11,205,194, 24, 54,193,113,123, 94, 48, 56,136,246, 51,129, 74,128,146, 10,165, 37, 2,129, 18,138, 73, 89,226,132,228,184,
-156,242,250,226, 26,223,191,177, 32, 47, 52,219,204, 68,138,136,206,209,153, 68, 7, 80, 94,162,240, 95, 80,220, 53,210, 68, 18,
-176,212, 38, 18,232,108, 64, 20, 25,191,127,115,193,111,223,126,149,219,249,132,197, 68,243,215,143, 46,162, 61,240,166, 37,116,
-125, 92, 87,172,150,244,231,231,132,174,167,175, 27,194,164,164,111,107,250,203, 51, 6,219, 17, 54, 43,134,182,198, 5,203,189,
-237,154,251, 23, 23, 44,187,142,243,174,229,162,111,185,223, 54,184,109,139,191, 92,242,241,186,227,253,118,205,153,180,124,108,
-123, 42,169,249,120,187,225,253,229,146, 63, 59,189,224,189,190, 70,121,129, 12, 22,129, 99, 18, 60, 70, 9, 26,235, 35,225, 47,
- 72, 68,202, 11, 23,222,199,226,206,110,125, 38,246,214,104, 79,113, 11, 94,224, 67, 60,143,195, 51, 38,223, 73,253,116, 83,172,
-178, 84, 84, 13,167,214,242,135,243, 2, 23, 2,183,243, 28,225, 29, 39,125,195,175, 84, 19,126,178,217,240, 86, 49, 97,139,196,
- 13, 45,189, 27,248,183, 79,158,240,201,106,195,249,186,137, 78,139, 38,145, 24, 67, 34,246, 5,199,239, 44,166, 84,198, 80,228,
- 19,130,210, 12, 62,240, 88,201, 56, 24,164,192,159,100,234, 30,239,225, 33, 26,204,124,110,136,252, 38,220,178,103,235,215,184,
-190,179,126,103, 95,254, 37, 14,115,255,176, 69, 93,250, 52,245, 36,131, 15,149, 58, 51,173,226,131,114,140, 59, 53, 41, 51,221,
-166,233, 56,164,206,109,255, 13, 93,217,234, 61, 51,165, 91,255,229,140,121,147,165, 40, 77, 31, 9, 84,214,239,152,235, 87,230,
-251, 54, 22, 18,233,175,148, 80, 41,104, 45,165,180,132,103,136, 17, 95,177, 91, 49, 37, 93, 86,144,233,192, 96, 7,218,174, 35,
-207, 36,243, 60,195,168,152, 54,212, 59,199,186,111,185,236, 59,186,244, 30,170,162,224,160,202,152, 8,137, 17, 18, 99, 4,222,
- 90, 86, 67,199,227,101,205,166,237,226, 36, 60, 56,172,134, 69, 57,225,229,227, 87,233, 66,143, 14,154,207,214,231,216, 71,247,
- 94,108,159,238, 72,187, 49, 1,237,128,184, 62,165, 84,134, 82, 79,208, 89,137,210,130,174,110, 56,191, 56,229,127,255,249,207,
-225,241, 19,110,254,225,239,178,253,244,222, 14, 5, 81, 9, 5, 25,189,142,159, 37,139,140,136,140, 20, 41, 17,206, 63,135,156,
- 39,247,214, 49,236, 38,197, 44, 33, 2,117, 29,247,230, 67,212, 21, 71, 75,222, 42, 73,189,242,248,123, 22, 21,243,151,110, 83,
- 84, 37,106, 90, 49, 56,155, 36,148,130, 92,107,148, 16, 84, 58,202,127,150,189,103,150,105, 58,239, 81,233,241,212, 91, 79,105,
- 20,109, 61,196,253,153,243, 41,170,215,197,233,252, 74,155,238,211,132,110,227,181, 45,243, 88,120,135, 68,216,220,183,130,220,
- 47,236, 90, 62,243,246,237,211,135, 96, 60,158, 87,246,197,236,153,221,164,239, 41, 21, 77,113,164,128,195, 25, 97,178, 32,216,
-150,128, 76, 49,172, 77, 92, 7,248,116, 45,219, 49,125, 45,161, 38,219,246, 10,206,164,245,177, 1,176, 46,229,170,155, 72,146,
- 11, 1, 86,235,232,136,183,255, 80, 30,123,106,163, 16,117,138, 57, 86,154, 48, 47,248, 87,111,220,160,156, 21,220,123,178,138,
-123,211,103, 31,232,193,161,181,166,202, 12,107, 2,247,189,231, 3,235,248,179,206,242,123, 74,176,208, 37, 6,137, 30, 6,124,
-187,226,129,179, 8,235, 17,214, 81,122,193, 66, 64,237, 29,221,163, 11, 2, 45, 47,107, 56, 44, 42,150,125,207, 95,157, 46,249,
-249,122, 9, 82,210,218,150, 7,117, 67,237, 45,219,214, 82, 59, 71,145,151, 84, 10,114, 4,131, 15, 84, 1,156,119,136,114,130,
-159, 78,169,202, 9, 89, 57, 69, 34,184,105, 42,126,253,198,203,252,218,205, 91,188,253,250, 29,110,221, 56,228,177, 46, 17, 86,
-161,133, 67, 5,143,242, 30, 53, 41,162,171, 30,196,198,202,232,232,176,151,204,154,132,237, 17, 14,138,185,225,213,201,156, 78,
- 74,238, 14, 61,239, 73, 79,216,118,176, 90,198,107,121,187,133,186, 35,244, 3, 97, 91, 19,250,158,112,255, 17, 56, 75,184,220,
- 64,169, 97, 91,227,237, 0,221, 64,232, 90,252,166, 33, 88,143, 95,175, 8,117,135,111, 45, 97,179,193,183, 22,191,185,100,115,
-126,206,253,117,207,167,131,227,223,212,151,252,249,106,205, 79,234, 53,143,188, 77,251,253,154, 82, 4,114, 31,200,188, 37,243,
- 48, 87,130,181, 20, 41,201, 90, 34, 19,138, 42,242, 9, 34,215,187, 70,115, 68,110,158, 41,214, 95,172,239,255,170,194,174, 99,
-209,154,148, 41, 82, 59,139,240,119, 57,137,141,124, 55, 64,105,120, 75,106,126, 59, 23,104, 83,160,156,101,229, 44, 62,120, 14,
-148, 97, 35, 5,175,105,205, 25, 48,117,150,121, 94,112,210,118,220,145, 18, 63,116,116,109,207,182,238, 96, 91,167, 97, 36, 42,
- 64,254,224,120,194,203, 89,134, 86, 25, 94, 40,140,214, 40,229,121,191,115, 73, 13, 35, 99,211,170,178, 36, 97, 78,247,239, 40,
-171,126,161, 97,229, 75,184,200,242,139, 8,114,114,111,112, 77,181,238, 57, 48,255, 63, 92, 81,207,179,120,178,236,176,179, 33,
- 29,109, 67,179, 44, 62,176, 61, 41,251, 60, 21,216,204, 36,194,211,222, 67,244,138,109, 56, 78,241,233, 11,251, 2,164, 5,173,
-119,133, 65,154,221, 46,211,167,194, 48,234,217,247,131, 96,252,254, 78, 35, 77,162,146, 29,170,240, 34,154,199, 76,225,242, 41,
- 94,198,160, 12, 47, 29, 19,101,226,164, 40, 21, 62, 8,186,193,114,209, 91,182,221, 0, 8,230, 7, 83,110, 47, 14, 40,181, 65,
- 9, 16, 4,164,247,116,206,178,106,122,206, 86, 13, 97,240, 8, 31,146,116, 2,124,166, 17, 42,144,235,156,179,230,146,251, 79,
- 30, 65,187, 34,188,136,193,139, 76,197,214, 73,232, 44,151,171, 37,159, 14, 61,199,101, 78,158,231, 12,221,192,166,105,184,127,
-241,152,135, 31,222, 5,103, 99,152,194,197,242,105, 6,232, 87,161, 52, 34,101,222,203, 47,131,173,198, 48, 29,181,135,213,165,
- 9,220,217,200, 92,109, 54,241,198, 31,145, 19, 63, 58,178,233,216, 20,222, 56, 38,207, 20, 90,104,132, 0, 43, 37,193,182,160,
- 21,185, 84, 84, 70,145, 41, 69, 99, 3,149, 81,180,214,225,131, 39,136,128,199,145,107, 73, 63, 4,156, 27,253, 14,210,227,201,
-118,169, 1, 10,145, 57,158, 21,169, 80,219, 36, 61,235,227,235,180, 54,146, 7,191,112, 90, 29,215, 73,123,219,230, 60,139,147,
-244, 62,231,100,148,124, 62,187,190,130,216,160, 24,179,147,111, 22,121,108, 34, 84,130, 5,109, 23, 97,240, 85, 27,119,135,117,
- 15,198,240,218,141, 9, 63,200, 53,175,101,138,187,103,171, 68,144, 75,122,117,124,124,144, 42,147,124, 5,178,200, 23,184,184,
-252, 92, 81,199, 39,111,251,193, 38, 36,109,128, 44,231,191,127,227, 22,191,119,227, 14, 70,195,255,125,214, 68,159, 0,118, 22,
-171,130,104,157,251,112,208,104, 41, 89, 3, 15,156,229,190,147, 88, 39,184, 27, 90,254,137, 41, 41, 48, 40,153, 81, 44,174,241,
-242,209,109,174,103,134,101,223,226, 8,100, 88, 94, 54, 26, 41, 5,121,215,241,160,109, 8,126,195,191,127,248,144,127,119,118,
- 70, 24,122,130, 34,154,214,100, 6, 79,108, 2,122,239,112, 54,112,123, 82,176,181, 45, 55,140,161,243, 1,147,229, 44, 14, 22,
- 20,179, 9,250, 96,134, 51, 26, 33, 13,147,114,130,247,129,239, 29,220,224, 7,183, 94,229,187,179, 27,252,250,209, 13, 38,115,
-205, 61, 15, 90,101,168,190, 71,117, 22, 57,153,160, 76,134,202, 75,228,224,144,194, 34,131,138,133,125,176,208,212, 60,217, 88,
-154,210,177,148,129,159,212, 3,219,224,160, 72, 43,139,117, 29,175,105,219, 39,169,151,139,150,191, 67, 71,232, 60,129, 1,214,
- 13,161,110, 97,121, 25,125,197,183, 29,161,183,132,224, 99, 19, 48,244,248,139, 19,130,235,240,109,131,239, 26,188,115, 49, 22,
-183,174,241, 78,224,134, 26,239, 6, 6, 63,196,201,223, 65, 62, 88,140,112, 84, 82, 82, 10, 75,174,224,192, 40, 90, 33,152, 40,
-197,171, 83,205,235, 7, 83, 14, 22, 5,213,193,140,165,154,166, 20,199, 72, 6,125, 17,199,202,231, 21,120, 1, 8,167,227,176,
- 52,201,160, 92,196,235,149, 16,249, 33, 77, 90, 35, 45,166, 16, 36,255,201, 52, 3,161, 88, 54, 43,166,249,148,206,123,110,231,
- 37,101,128,119,235,129,137, 49, 84,174,231,157,198,115, 93, 6,180, 18, 4, 9, 55,164,228,219, 18,254,195,233, 38,230, 62,116,
-117,202,132, 8,220,154,230, 28,165,235,201, 75, 73, 23, 2,119,155,129,251,222,238,236,165,125, 34,216,230,121,188,239,138, 34,
-162,129,243,121,228,173, 16,146,174,157,167,172,194, 95, 88,158,253,133, 68,185,125,101, 12,255,128,240,123,158,197,130,169,244,
-142,249,172, 18, 44, 55,178,205,199,169, 67,232, 61,246,249,222,127, 27,255,222,165,128,149,126, 47, 42,245, 89,221,158,231,133,
-172,244,174,138,138, 79, 5,217,201,157,143,182,142, 25,232, 87,233, 56,210,238,177, 94,246,150, 64, 82, 60,141,246,191,168,100,
- 33,159, 35,143, 14,210, 84, 30,223,227, 52, 87,104, 41, 81, 41,138,117, 99, 7,182, 67,207,208,122, 80,130,235,243, 57, 71,147,
- 42,234,124,189, 71,138,128, 7,154, 97,224,116,219,211,215, 45, 34, 88,194,224,147, 22, 50,208,181, 29,151, 67,207,164,148,100,
- 42,195,148,154,229,221, 79, 63,175, 48,144, 50, 22,143,253,239,187,212,185,202, 84, 24,234, 14,206, 46,184,151,231, 76,144,156,
-111, 86,156, 44,207,249,155,191,251, 32, 26, 74,120, 7,143,159,124, 13, 13,230, 30, 95, 98, 44,238, 94,124,201,201,211,169,113,
-218,219,194,121,226,106,102,244,223, 55, 69, 58,159, 33,201, 18,211,215, 62, 64, 38, 49,147, 10, 35, 21, 2, 65,125,118,114,229,
-224, 87,102, 17,130,239,211,164, 17, 66, 96, 98, 4,141, 15,248,224,232,186, 1,161, 37,110,136, 69,128, 33,217, 4, 15,125,212,
-186,143, 54,179, 46,233,187, 73, 49,173, 17, 82,136,222,211,202,126,193,148,254, 12,204, 14, 48,159,237,246,237,106,239, 88, 93,
- 25,152, 36, 72,220, 36, 56, 82,236, 61, 66,157,138, 83,117, 31,226, 52, 83,229,200,172,136, 92, 0,153,126, 94,221,196, 66, 61,
-137,196,190,183,230,113,191, 60, 23,130,109,102, 88, 95,174,118,153, 7,235,109,202,143,111, 99,166,188, 78,146,189,109,106, 16,
-158,125, 40,143, 48,236,136,204,204, 42,126,116,235, 58, 47, 85, 11,222,223,174,248, 15,171,250,106,191, 62,178,252, 69, 90, 63,
- 8,111, 89,107,131, 45, 52,141,214,156, 9,141, 66,176, 14,240, 61, 45,184, 61,185,134,204, 10,212,157, 59,152,197,156, 60,155,
-242,224,226, 4, 31, 44, 7, 74, 51,147,130, 55,203,140,215,202,156,235,210,243,127,220, 59,229,241,227, 75,252,102, 21,237, 71,
-135,142, 16,162,197,232, 92,105, 58, 33, 41,164,230,187,121,137, 15,129,133, 20,172,250,150,105, 86, 48, 5, 68, 81, 48, 63,158,
-146, 77,178, 56,109,103, 57,189, 8, 92, 95,204,249,246,241,130,163,107, 11,110,220, 62,230, 80,230,220,206,230, 76, 75,197, 71,
- 97, 64,161, 80, 38, 71, 57, 17, 31,117,193, 35,165, 68, 74,141, 20, 17,198,150,193, 71,131,154,190,225,209, 89,203,199,189,101,
-147,167, 18, 39, 53, 84, 69,242,187, 72,247,136, 73,205,235,120,111,217,100, 56,212, 69,171,209,224, 29,180, 53,161,111, 8,205,
-150,208,213,132,174, 37,108,214,209, 82,183,235, 9, 62, 58, 18,122, 51,137,141,234,182,195, 93,158,225,215, 91,124,231,240, 50,
- 96,189,160,198, 98,221,192, 53, 1,194, 15, 72, 2, 19,169,240,222,242,189,210,240, 95, 30,207,249,227,107,115,126,255,240, 26,
- 63,154, 77, 48,153,225,246,225, 4, 57,203, 57,247,163, 37,179,191, 50,185, 18, 95,241,231,115, 80,189, 75, 13,162, 54, 80,205,
-162, 71,196,232, 19, 18,136,182,175,101,206, 91, 70,179, 48, 5, 19, 37,184,165, 37, 51,157,113, 50,116, 92, 87,145, 39,240,211,
-174,231, 71, 85, 5,174,231, 49,146,183,164, 35, 87,138, 92,103,244, 67,203, 37,112,182,105,120, 83,122, 62,238,251,120, 95,116,
- 45,116,150,207,250,192,237, 66,115,156,103,120, 60,181, 11,252,111,117,178,119, 29,146,124,109,180,181, 22, 10,180,230,237,227,
- 25,255,217,203, 71,252,241, 75,215,121,179,202, 56, 62,158,241,137, 75,131,135, 74, 80,150,208, 9,233,245, 47,246,124, 28,239,
-117, 41, 63, 47,107,123,118, 74, 55, 89,180,191,158,204,254,158,139,186,214,159, 63,125, 89,130, 25,131,143, 7, 68,236,193,174,
- 89,218, 89,200,189,221,122,199,206, 61, 43, 27, 3, 44,146, 65, 71, 72,108,224,111,162,189, 30,187,161, 76,197, 2, 46,147, 3,
-157, 75, 83,250, 78,147, 18, 11, 74,240,159,191, 34,189,142,210, 13,207, 87,104,145,159,165,146, 31, 17,166, 21,101,150,161, 3,
- 8, 28,165, 20, 40, 37, 17, 66, 80,187,129, 85,239,217,108,146,145,129,212,148, 69,134, 81,130, 64,192, 38, 18,203, 48, 56,206,
-234,142,198,245,248, 54,238,234,128,200,176,237, 99, 71,121,124,231, 14,191,250,210,247,185,182,184, 65,169,167,124,252,209,207,
-147, 17, 10, 59, 86,117, 72,244,165,253, 6, 73,142,133, 98, 12,198,137, 19, 88, 88, 45,185,127,178,228,254,217, 41, 39, 15, 79,
-226, 78,234,120, 17,163,104,151,203,175, 39,217, 16,123, 37, 33,124,149,109, 99,154,212, 71,231, 38, 33,119,180,171, 16,118,202,
- 5,183,137,208,187, 72, 70, 64, 87,251,111, 79,111, 29,117,219, 70,205,190, 84, 32, 2, 82, 27, 36,129,206,121, 22,153,166,245,
- 46, 22,125,103, 49, 66, 82,183,129, 28,208,184, 0, 0, 32, 0, 73, 68, 65, 84, 29, 74, 73,218,110,192, 14, 46,158,228,113,183,
-109, 19,151, 66,166,137,125,244,130,247, 34,153, 14,117, 41,139,222, 62,205,122,127,222,199,124,198,175,254,193, 31,240,248,209,
- 41,132,209,168, 35, 53, 46, 35, 41,211,167, 41,126, 84, 85, 36,203,214, 8,223,200,104, 97,156, 16,138,197,225, 34, 58, 33,203,
-232,187,142,119,209,202,210,185,200,242, 45, 11,242,105, 78,166, 36, 79, 20,124,120,186,142,205,208,208,197,227, 90, 76,162, 43,
- 88,235, 96, 49, 37, 91, 28,242,223,188,114, 27, 76,224,241,147,243,157,213,237,243,166, 49,103,249, 64, 74, 50, 3,255,211,249,
-138, 49, 71, 65,216, 1,186, 52,217,203,241,118, 10, 12,237,128,152, 76, 64, 75,164,206,113, 82,161, 51,141, 99,224,123,213,140,
-108,122,136,190,113, 13, 89,228, 32, 13,225,244,132,204, 8,230,194, 50,211,138,185, 82,232,204,176,200, 12, 11, 45,168,115,201,
-106, 8,248,179, 21, 97, 85, 19,148,228,123,139, 41, 7, 69, 69,169, 20,223, 46, 42,110, 86, 26,229, 6, 30,146,241,170,214,216,
- 48,176,177, 29,211,114,130,208,154,220,104,148,212,228, 70, 49, 59,156,112, 45,207,121,245,246,156,233,181, 25,249,180, 32,159,
-148, 20, 65, 83, 5,205,141, 34, 99,118, 60,229,177, 5,165, 99, 46,188, 42,203,152, 84, 55,184, 56, 3,100, 2,209,119,209, 94,
- 55, 51,136,205,146,176, 94, 33,172, 39,100, 9,194,117, 46,162, 78,211,105, 92,167, 76,138, 88,212,159, 34, 89,122,130,247, 87,
- 54,191, 97,252, 60, 90, 11,143,196,196,125, 25, 97, 86,225, 95,190, 78,200,115,124,211,225,189, 37, 88,139,239, 54,177,184,111,
- 58,176,158,182,239, 49,161,167, 18,129, 74, 42, 58,231,152, 72,201, 15, 77,206, 43,153,225,118, 94,209, 75, 65,102, 10,114, 93,
-208,154,140, 60, 47, 40, 38, 25,143,145, 8,105,226, 42, 88,131, 72,215,200, 87, 21,245,171,207, 33, 93,243,215, 23, 28,127,251,
- 22,119,174, 31, 80, 86, 25,235, 85, 23, 81,157,220, 32, 50, 67,233, 3,111,205, 75, 50, 37,105,132,228,193,208,242, 45,157,209,
- 59,199, 52, 43,240,174, 39,179, 61, 70, 27, 50, 2, 23, 74,209, 15, 13, 77, 16, 28,232,156,123,219, 45,223,193, 82,235,140, 7,
- 77,203,224,147, 4,175,107,193, 14,124,120,190,230, 47,215, 29,127,179,110,248,233,233, 58, 90, 79,143, 6, 89,146, 56, 96,250,
-116,255, 25,193,239, 30, 78, 56,204,115,150,110,160,200, 50, 10, 35,121,199, 19,159, 89, 90,199,232,102,157, 37,243, 42, 29,107,
-221,151, 33,166, 99,125,250,220,196,110,247,184, 95,251,232,175,129, 27,215,225,160,250,123, 46,234, 38,193, 40,201,200, 42,154,
-133,164,105,123, 92, 78,203,189,135,242,104,252, 50, 78, 40, 73,242,136, 74,134, 32, 54,196, 23, 63,116,105,127,145, 10,146,210,
- 47, 6,123,127,209,129, 27,108,236, 6,197,222,208,164,216, 53, 14, 36, 86,190, 22,137, 21,191,199,134,119, 99, 76,107,130, 7,
- 94,212, 9,111,114,200,252,248, 24,129,101,146, 75,140,242, 56,124,100,247, 58,199,186,115,212, 93,135,107,135,196,244,150,104,
- 41, 48,193,209, 15, 29,189,115,212,214,178,234, 44,235,174,195,182,195,213,235, 18,128,200,116,252,119,147,138,215, 94,122,133,
-235,213, 13, 76, 86,112, 86, 95,114,247, 23, 31, 69,168,105, 60, 63,251, 27,118,241,108, 23, 57,198,165,250,167, 9,217,161,139,
-234, 0, 83,240, 43, 63,250, 46,223,121,229, 14, 55,174, 29,240,240,195,143,190,102, 83,181,231,219,251, 34, 50,144, 49, 28,101,
-156,236,199,159,163,203,136, 6,117,155,148, 31,224,162,243,147, 74,190,255, 58,105,228,101,154,114,198,244, 62, 29,139,157,147,
- 16,188, 96,176,241,218,148, 2,250,161,103, 8, 34,230,195, 91,199,208, 38, 55, 40,153,174, 1, 45,210, 83, 75,199,130, 45,146,
-125,171, 76,174,117,210,199,137, 94,236,241, 8,244, 87, 68, 39, 10,201,226,206,109,206, 46,183,145,165,126, 37,135,244, 79,147,
- 46, 71,119,195,177,161,185, 98,197,143,231, 44,178,171, 77,158, 33,179, 18,233,122, 6, 68, 84, 7,116, 67, 52, 83,202, 5, 52,
-150,203, 44,231, 51,161, 56,233, 92,132,240, 79,150, 41,174,210,239,216,188,125, 7,139, 5,255,237,183, 95, 99,158, 21,220, 44,
- 51,254,234,222,195,167,144,135, 47, 44,238,131,101,216,214,252,188,177,145,183, 98,116,156, 40,148, 70, 12,109, 98, 76,239,184,
- 64, 2, 79, 91, 91, 66, 53,165,204, 51,110,149,134,235, 70,211,216,192,129,214, 92, 47,166,228,243, 35, 4, 18,119,182,166,169,
- 47, 89, 40,141,180, 45, 3, 1,171, 20, 83,165,232,165, 98,155,231,148,147, 18,189,200,241, 71,135,212, 50, 70,146,102, 58,102,
- 40, 84, 69,206, 91,243, 9,139,188, 68, 21, 5, 10, 75, 45, 2, 97,176,116,195, 64,240,130,182, 29,232,188, 34, 47, 37, 7, 70,
-114,144, 25,142,139,140,163, 89,137, 73,134, 88, 33, 64,191, 29,152,152,140,151,138, 25, 55,204,140,107,243,130,108, 81,176,206,
-114,110, 29, 76,104,136,249,232,178, 40, 17, 14,230, 85, 73, 63, 54,255, 58,106,158, 51, 47,177,247, 79,119, 33, 83,121, 14,121,
-137, 88, 76, 17,179, 18,145, 25,196,186,223, 17,211,190, 4,222,126, 86, 97,112, 85,212,111, 93, 39, 28,205,241, 66, 17,156,199,
- 55,245, 21,231, 50, 12,150,208,212,132,102, 11,203,134,165,135,163, 66, 17, 6,143, 15,158,204,121,126,115, 86,114, 36, 53,181,
- 15, 28, 20, 83,164, 50,212, 74,161, 85, 70, 11,148,153, 65,105,201,105,153, 33,242, 28, 81, 86, 8,165, 17, 33, 32,148, 68,154,
-104,188, 35,210,179, 90,228, 25, 28, 94, 67, 28, 30,198, 93,121,176,136, 30, 56,152,160, 94,123,137, 95,125,233, 22, 71, 85,197,
-181,233,148, 70, 59, 14,231, 11,230,147,130, 44,203, 89, 43,197,171,153,228,251,210, 80,227,185, 99, 42, 30, 13, 3,179,204,240,
-184,221,178,200, 12, 66, 74,222, 93,111,249,118,150, 97,188, 71, 8, 77,214,111,249,133,115,188,157, 73, 54, 66,241,112,217,240,
-201, 42, 33,110,193,238,106, 66,215,195,182, 38,172,183, 81, 10,218, 15,145, 41,223,182,123,208,119, 68,157, 95,171, 12,223,153,
-149, 9, 84,150, 72, 41,233,172,227, 97,235,168,131,139,207,173, 34,169, 99, 50,179,147, 70,243, 21, 67,224, 72, 10, 31,229,129,
-227,122,249,139,212,220,186,128,195, 41, 8,241,247, 92,212, 71, 54,251,184,223, 20, 62,194, 43, 90,164,154, 62,230, 7,167, 68,
-169, 50, 89,116,138, 84,192, 77,250,247,109,138,229,244,105, 18, 26, 89,194,163,166,221,168,111, 78, 78,208,169, 0,122,145, 18,
-189,236,142,132, 39,210, 62, 83,134,221, 90, 64,239, 5,198,104,113, 21,121,249,149,228,184,253,143,163,107, 48,201, 40,101, 52,
- 7,109,236,144, 40, 4, 1, 31, 60,203,166,165,223,244,187, 59, 50,215, 84, 74,199, 7,146,115, 52,189,163,117,158, 85,211, 18,
-154,126, 23, 28, 50, 58,182,105, 73,118,120,196, 31,253,198,111,115,231,224,101,178,194,112,114,121,198,121,179,226,241,123,239,
-236, 38,226, 81, 46, 50,178,213, 3, 47,198, 70,215,121,100,240,191,114,131, 31,220,122,153, 42,203, 89,148,115,222,175,215,209,
- 54,242,235, 20,246,175,115,220,198,130, 53,122,152,143,143,174,190,141,197,122,146,180,225, 58,237,180,188,125, 26, 21, 24, 9,
-118, 42,217,253,250, 72, 20, 11,214, 33,100,160, 15,150, 66, 43, 86,109, 79,102, 76, 12,246,176, 22,215,251, 24, 38,161, 50, 66,
-155,100,151,232,221, 42,105, 36,122,250, 17,253, 48,209,163,160,208,241, 97,161,242, 29, 34,245,101,197,221, 90,206,238, 61,129,
-119,207, 97, 49, 58,239,137,207, 91, 75,238,239,214,173,221, 37, 18, 38,201, 17, 93, 3,205,128,152, 79,176, 2,110,102,138,181,
-141, 54,161, 46, 36,249, 93,189,137,247, 99,158, 36, 57, 82, 70,116,103,211,166,169, 48,177,130,187, 20,106,227, 5, 47,189,114,
-204,180,156,242,225,106,205,167,203, 21, 44, 87, 95,205, 98, 30,108,132,220, 77,129, 40,242,184, 22, 40,242,132,102,116, 49, 20,
- 70,238, 75,191, 44, 62, 47,184, 54,157,240,250,172,224,229, 44,231,102,102,232,252,192, 29, 85, 80,133, 12,177,109,241,151,231,
-208,111,232,130, 37,147,224,188,199, 7,193, 96, 50,106, 33,104, 76,198,153,214,132,108,194, 26,137,168,102, 76,102, 83,206,236,
- 64, 40, 74,178,190,229, 90, 85, 33,165, 96, 27, 2,151,117,244, 75,183, 33, 71, 40,133,119, 29, 79,150, 23,116,155,158,118,109,
- 41,243,140, 10,193,225,180,100, 90,154,120, 41, 57, 79,115, 57,208, 39,120, 59,211,154,227,233,148,111,205,143,249,222,244, 26,
-111, 47,110,113,123,122,196,203,211, 9, 55,143, 22,212,194, 33, 39, 5,181,208,152, 98,130,247,154,144, 25,130, 80, 88,223, 69,
- 47,129,179, 39,136,218, 71,134,121, 89,198, 63,197, 4, 81, 76,224,232, 0,145,149, 8, 55,230, 99, 60, 77, 76, 11, 95, 81,224,
-131, 29,160, 19,132,186, 33,180, 29,193, 8,194, 96,241,251,255,214,185,180,199,135,199,219, 1, 81, 72,214,157,197,122,199,117,
- 41,185,157,229, 40, 41,144, 74,210, 74,205, 35, 4,191,112, 30,167, 51,156, 27,168,138, 9,159,166,103,163, 40, 51,196,193, 12,
- 49,155, 35,103, 51,132, 48, 8, 93, 32,130, 64, 28, 28,114,227,135,111,242,195,111,191,206,173,227, 35,166,243, 9,231, 33, 54,
-201,226,240,136,183, 95,191,205,141,197, 97, 92, 55, 6,207,171,199,175, 48,175, 38,124,251,198,171, 28, 22, 57, 88,248,171, 65,
-114,205,120,142,100, 70, 23, 44,183,164,226,103, 77,199,247,170, 41, 63, 91,109,121,105, 82,112, 83,192,133,247, 12,118, 64, 41,
-197,165,115,188, 42,163, 64,227,227,245,134, 62, 56, 30,214, 93,146,181, 61,171,170,242, 59, 87,188,174,139,205,109,215,239, 86,
- 72, 67, 68,139,151, 65,241,195, 42, 39,215,138, 42,203,113,222, 49, 72,201,159,159,175,119, 3,196, 56,200,142,133, 57,168,136,
-114,250, 23,244,129,255,130, 77,221,231,184,196,166, 0,165,255,158,139,186, 79,187, 7, 35,159,182,181, 30, 31,200, 97, 44, 38,
-137,108, 70, 72,172,217,148,132, 21,146,214, 55, 31, 37, 72,201,163, 93,238, 89, 60, 40, 25,117,192,214,127,243,215, 40, 69,146,
-246,164,215,123,165,139, 78,144,188, 20,207,236,214,147,212,194, 39, 41,210,184, 95,121,145,226,100, 52, 76,231, 96, 52,131, 29,
-144, 50, 32, 69,136,196,101, 96,221, 15,212,235, 4,187, 19,181,190,121,110,168,180,185, 90, 65,215,118,136,208,124,151,136, 27,
- 33,196,156,238,224, 18,151, 34,227, 59,175,191,196,175,189,241, 54,147, 89, 69, 8,158,119, 31,188,199,207,238,222,133,243, 39,
-187, 11,105, 95,126, 38,120,177,105,217,196, 48, 23,166, 5, 78, 6,190,123,253, 22,214, 7, 54,125,203,221,119,247, 80,128, 23,
- 66, 44,138,221,190,248,235,156,175, 47, 82, 25, 76,138,104,211,234,101,132,189,117,146,149,153, 84, 68, 68,216,237,240,243,100,
-114, 52,158, 51, 23, 98,212,169,131,174, 27, 48, 90,208, 44,123,156,243,132,173, 35,116, 22,134, 16,235,168,117, 32, 20, 82,137,
-189,135,168,220,145,211,228, 56,177, 39,179,152,178,140,138,132, 66,197,115, 83,232, 47, 71,116, 92, 31, 77, 54,198, 68,188,193,
-126,254,186,218,127,239, 35, 55,100, 76,160,179,195, 85, 30,179,235, 6,244,172, 64,227, 57,144,146,137,136,219, 44,231,146, 52,
-104,179,141,231, 61,159,236,156,237,182,203,157, 60,103, 24,118, 33, 60,131,227,195,162,224, 93,239,249,192, 19,207,243,147,179,
-231,247,243, 35, 87,163, 72,108,252, 46,238, 67, 69, 89,196,251,187,200,185, 94, 78,168,187, 14, 26, 27, 11,187,181,209, 99,221,
-228,220, 58,170,120,115, 50,225,102,150, 51, 85, 6, 21, 2, 83,103, 57, 26, 60,102, 93, 35,215,167, 8, 27, 87, 35, 82, 27,178,
- 32, 24,194, 64,131,224, 66, 73, 30, 35,233,148,166,113,130,144, 77,184, 83, 78,120,189,202,249,193,180,226,117,147, 97,114,195,
- 89, 15,245, 16,168, 7, 65,161, 20, 86, 43, 50,173,169, 10,197,208,193,208,119,244,237,154,147,199, 15,232, 58,205,205,249,148,
-210, 9,180, 21,168, 32,217,110, 7,150,117,207,227,229, 22,213,247, 76, 38, 57, 89,166, 41, 76,198,225,108,198,245, 98,194,171,
-211, 67,238, 84,215, 56,150,134,239, 47, 14,121,105,162, 17, 69, 96, 58,201,153,148, 57, 90, 10, 90, 23,240, 77, 71,240, 3,162,
-239,162, 1, 80,215, 33, 76,116,159, 19,229, 12, 81, 46,248,141,107, 55,249,151, 63,250, 33,223,126,249, 58,239, 24, 25, 73,139,
- 93,247, 66,210,177,144, 26,172, 16, 2, 65,105, 66,166, 8, 8, 66,215,125,241,132,111,123,196, 80,179, 94, 15,108, 58,207,105,
-235,121,181,148, 28,101,146,153,202, 49, 82,113,191,239,248,133,247, 92, 4,143, 80, 10,148,161, 38, 48, 17,130, 19, 25,101, 98,
- 2,144,147, 18, 81,100,200,249, 28, 49,169, 16, 55, 14,248,225, 27,119,248,222,173, 55,184,113,237, 58,147, 44, 35, 11,129, 91,
-135, 11,178,163, 57,183,110, 94, 99,154, 23,148, 58, 71, 74,193,180,156,178,220,118, 84,197,148, 50, 43,200,179,130,195,106,194,
-237,208,242,208,122,190,165, 36,150, 64,111,114, 50,103, 57,245,142, 55, 51, 67,239, 44,103, 66,112, 32, 4,154,192, 67,215,115,
- 40, 4,114,136,100,193, 83, 23,184,108, 90,122,225,233,221,158, 58,231,185,250,241, 84,160,125, 31, 27, 96,219, 71,243,169,174,
-101, 86, 25,110,107,195,129, 81,172,186,158,255,245,209,146,173, 15, 49,248, 75,135,157, 18, 43,164,117,102,219,197, 26,242,203,
-186,208,233, 68,106, 14, 33,222,207,167,103,255, 17,136,114,126, 63,123, 60, 65,134,102,124,144, 39, 28,123,100, 62,251, 68, 38,
- 24,119,137,163,190,153,176,155,222, 93,122, 88, 62, 37,233, 73,147,186,148,223,236, 0, 61,245,111,178,103, 96,117, 34,236, 46,
-237, 83, 43,141,171, 85,194, 8,195,191, 72, 65,212, 26, 38, 11, 40, 13, 65, 8,130,242,104, 5,153, 22, 40, 41,168,123,199,170,
-235, 9,125,127,245, 59,100, 97, 80, 82, 16,132,167,183,158, 85, 55,208,212,195, 46,199,119,132,164, 67, 10,250, 80, 2, 53,159,
-243,198,241, 77,174, 29,220, 34, 4,193,166,105,120,231,238, 71, 52,167,167,176,185,248,188, 25,207,215,153,150, 85, 6, 7,211,
- 36,225, 16, 92,218,134,123, 23, 43, 62, 56, 61,133,135, 15, 95, 60,206, 48,207,224,141,215,162, 45,233,122,245,203,219, 43, 14,
-233,196,140, 97, 61, 33, 57, 17,102, 69,146,156,249, 61,237,149,227,191,251, 47,254,132,119, 62,124,111,215,216,180,177,112, 49,
-120, 92,159, 44, 7, 91, 27,121, 31, 46, 21,227,100,156,147,229,121,204, 71, 54,130, 76, 41,156, 78, 89,230, 54, 21, 89, 53,218,
- 13,167, 61,146, 73,196, 51,157,254,159, 76,127,249, 62, 77,126,205,107,247, 89,181,193,248, 61,231,184,182,168,104, 5, 76, 76,
-140,163, 60,206, 13, 75,107,227, 78,176,107,227,245,124,235, 40, 26,240, 76,139,120, 12, 46,151, 79,253,140,248, 51,163,139,220,
-144,171,157, 2,101,185,218,189,143,162,136,205, 94, 8, 87,228, 30, 49, 41,193,170, 8, 57,146,248, 47, 89,148,120,253,201,173,
-107,252,243, 59,175,160, 75,193, 71,103, 27, 68,103,175,210,206,100, 83,115,237,248,144,239, 46, 14,120,189,152,115, 88, 76, 16,
- 1, 78,218, 53,223,234, 59,140,247,104, 85,161,164,192,100,101,162,127, 72,134,161,227,177,119, 60,112,150, 54, 43, 88, 9, 65,
- 71, 70,149,229,188, 49,159,114,172, 50, 94, 46, 42, 50, 4, 51,101,216,120, 73, 39, 36, 65,105, 50,105,144,218,224,133, 36, 4,
- 77,111,123,108,144,108,182, 91,234,118,205,102,125,194,186, 85,124,171,172, 88, 40,133,107, 45,125,235, 56,185,220,242,233,229,
-138, 96, 7,242, 54, 34, 61, 70, 25,178, 50, 39, 43, 10,202,105,197, 60,203,120,249,232,136, 59,135,135,188, 94, 30, 50, 65, 71,
- 23, 99,233, 34,179,190,208,228, 89,129, 20, 26, 39,100, 84,177,116, 45, 98,187, 65, 14, 30,153, 11,228,228,128,127,245,157,215,
-248,193,237,235,220,185,126, 19, 47,167,124, 24,122,132, 19,132,126,136, 59,250, 23,213, 65,103, 89, 66,151, 92, 50,108,250,146,
- 41,113,232,193, 91, 68,231,120,119, 59,240, 23,235,154,135,190,229,255,220,212,252,101,215,115,174, 2,165, 52,132,224, 24,146,
-162,211, 73, 21, 27,170, 16, 16, 90, 33,148, 65,228, 19,254,233,173, 91,252,218,209, 33,191,115,243, 21,230,243,235, 40,147, 99,
-116,142, 50, 69,140,100,208,154,219,243,155,220, 94,220,102,158, 31,227, 80,180,174,229,211, 7, 15, 80, 74, 82,149, 21, 85, 57,
-193,249,129,213,114,137, 36, 80,119, 61,127,218, 90,126,171,170,240,125,203,177,214, 84, 18, 26,231, 88, 3,199,222,225,181,193,
-121,207,204,246,148, 82,208, 58,199,165,181,252,187,117,203,161, 18, 60,236, 98, 99, 31, 7,198,231, 12, 25, 87,249,230,123,126,
- 18,227, 80, 48, 88,238,157,108,248,201,233, 37,255,215,163, 53,127,181,220,178, 29,149, 38, 34,165, 20,250,116,188,125, 72,146,
-216, 33, 30, 91, 59,252,146,156, 53,249, 52, 68,230,253,127, 68, 73,155,209, 41,236, 35,153,111, 8,157, 38,120,187,131, 18, 67,
-122,248,150, 89, 44,224,154, 8, 99,106,177,131,227,123,187,219,245,137, 4,225,167,137, 22,145,164, 61,223, 4,138,151, 9,146,
-181,169, 80,219, 61, 98,220,216, 44, 8,246, 72,116,126,247,189,225, 5, 79,140,153,192,225, 44,217, 9, 10,178, 66, 82, 40, 21,
-221, 61,149, 98, 61,244, 49,123,119,220,215,148, 81,183, 62,146,209,155,193, 97,183, 93,156,156,218, 1,100, 96,126,227, 58, 85,
- 85, 81, 78, 42,154,166, 7,161,248,157,239,255, 42, 55,103, 55, 16, 66,112,182, 60,225,238,233,103,124,116,242, 24,206,207, 99,
- 68,226, 47,213,164,165, 5,104, 22,253,214,235,147, 11,186,135, 39,112,126, 18,139,196,139,126, 76,167,188,253,107,111,115,243,
-250, 81, 36,220,125,217,195,229, 69, 63,198,224, 31,159,252,181, 81,177,171, 86, 50,133,148, 36,156,215, 57,222,249,249,207,226,
-223,155, 4,129,181,195, 78,142,230,210, 57, 21,255, 15,117,111,250, 35, 89,118,158,249,253,206,118,151,184,177,229, 86,107,119,
- 87, 55,155,139, 72,137,212, 72, 20,103,145, 53,163, 17,168, 17, 96, 12,198, 30,251,139, 96,192,128,255, 62,195,254,102,192, 48,
- 96,120,145,101, 91, 50, 70,163,161, 68,114,212,100, 55,123,173, 45,179,114,137,140,237,110,103,241,135,115,110, 70, 84,117,117,
-119,117,147, 90, 38,129, 98,118, 49,179,170, 34,111,220,123,222,247,125,222,103, 73, 57,239,131, 97,142,143, 7,162,243,129,188,
- 84, 81,169, 64, 64, 34, 8,131, 12,205, 36, 41,142, 86, 59,181,135,227,198, 75, 61,222, 75,238,203, 35, 20,159,215,169,251,189,
-142,253, 57,239, 6,137,205, 12,227, 60,167,150, 2,147, 25,106,239,169,189,135, 85, 19, 73,115, 58,135,215,111,241,159,223,123,
-141,111,207,167,188,126, 80,241,193,147,179,151, 55, 29, 54, 68,231,185,144,200,135,117, 31, 61, 2, 32, 22,116, 17, 67, 87, 34,
- 7, 69, 71, 54,126,150, 18,208,244,224,243, 31,184, 51, 27,241,135, 7, 71,220, 45, 39, 4, 2,127,190, 88, 35,156, 69,244,254,
-166,176, 47,125,206,239,220, 57,228,173,234,144,214, 91, 50,101,248,184,219, 50,221, 44, 56,148, 6, 83, 29, 32,178, 28,101, 74,
- 68,240,209, 78,217,119, 92,246, 13,103, 66,178, 82,138,214, 11,178,172, 98, 58, 82,188,150, 23,168,228, 10,168,165, 36,151, 26,
-167, 97,235,193, 9,133, 87, 10, 45, 53, 90,105,106, 1, 94, 42,154, 54,186,168, 29,231,158,220,183,252,245,123,239, 32,123,201,
-108,213, 83, 53,158,118,189,101,211,119, 60,219,110,120,180,188, 98,185, 92, 68, 67, 28,101, 80, 66, 33,130, 64, 26, 69, 86,104,
-178,105, 78, 81, 21, 84, 85,197,109, 89,225, 59,203,162,107,176, 58, 68,208,111,100,120,179,200,120, 59, 51,188, 33, 21, 89, 80,
- 92,213, 22,113,189, 68,108, 27,196, 72,240,181,233,156, 7, 7, 51, 46,130,224, 73,175,120, 71,149, 80, 8, 68,166, 96,211,165,
- 52,196, 47, 48,125,113,142,144,212, 49,248,254, 51,155, 75,241,194,159, 1, 31,221, 2,107,203, 71,181,229, 73,211,112, 46, 4,
-143, 58,203, 60, 83, 49,167, 34, 68,148,112,221, 89, 90, 60, 43,169, 17, 34, 48,201, 70,252,119, 39,199,252,225,241, 45, 30, 84,
- 51,190, 61, 63, 98,146,151,244,121,201, 38, 56,182,157,197, 57,139, 20,154, 50, 43,169,202, 41,121,150,145,203, 2,219, 11,206,
-182, 23,156, 93,175, 8,120,156,235,232,108,203,163,171, 83,158, 58,207, 47,218,142, 63, 30,197,179,123,105,123, 22, 82, 82, 32,
- 24, 73, 65,219,174,209,102,196, 7,125,199, 93, 41, 49, 82,145,185,142, 71,157,101,217, 91, 78, 52, 92, 89,203,114,157,114, 71,
-218,176, 67,200, 62, 85, 31,110,224, 91,158, 39, 24,201,157,217, 88,219, 69,201,230,114,117,131,162,208, 37,107,217, 54, 73, 95,
-187, 62,170, 71,134, 44,138, 95,202,168, 70,126, 90, 66, 32,229,223, 97, 81,247,123,108, 93, 37,227,126,130,116,232,117,123,174,
- 62, 34, 77, 2, 34,121,180, 43, 34,163, 87, 16,139,134, 25,166,113,187,139, 51, 20,122, 87,100,135, 98,255,121, 83,187,214,145,
-217,219,239,193,160, 74, 39,195,155,129,204, 32,119, 6, 52,214,239, 14,207,225,226,245, 9,176, 10,175, 56,229,230, 25,156, 28,
- 66,158, 49, 62,152, 80,100,209,226,181, 42, 36, 2,201,178,177,108, 59, 75,104,218,248, 58, 74,131, 84, 34,134,215,117, 30,215,
-116,241,107,219,148,205,155, 73,238,223, 61,230, 7, 95,255, 22,223,121,253,215, 56, 25, 31,240,201,234, 18,114,195,247,223,248,
-117, 38,147, 25, 62, 4,254,242,253,159,240,179,139,211, 24,207,185,185,248,252, 9,241, 85, 63,156,139,135,249,106, 27,243,203,
-219,250,203,255,189,109,203,217,249,130,179, 15, 63,220,237,102, 7,200,118,248,245,101,110,120,157,228, 48, 74,198, 9, 89,155,
-221,125,228, 19, 39,162, 31, 82,225,162,196, 45,178,197,251,136, 16,101, 41, 12, 64, 37,219,215, 60, 41, 30,100, 22,223,240,116,
- 64, 75, 5,165, 81,104, 17, 15, 9,233, 61, 58,151,209, 38, 26,199, 55,239, 30,113, 84,141,152,150, 5,139,171,117, 82, 88,232,
- 72,152, 51,121, 68, 84,148,142,247,244,171,170, 37, 62,239,135, 30,174,213, 96,154,180, 95,216,189,199, 33,233,139, 2,242,140,
-145,148,156,117,201, 53, 41, 56, 88,110,160,204,248,157, 7,175,113, 50, 63,192, 5,131, 50, 57,239,182, 93,124, 79,110,226, 30,
-253,110,106, 11, 50, 94,155,225, 89, 27,140,117,124, 34,120,109,154,100,222,148,197,180, 58,147,131,119,136, 33,186,182,183,172,
-149,228, 86,161,200, 8,252, 79,231,151,156, 91,159,248, 42,137, 45,237, 61, 66,103,124,235,176,226,160,172, 88, 7,104, 9, 92,
- 57,203,127,191,216,240, 70,179,226,100,122,128, 30, 31, 35,139, 34,174,158,172,199,167,230,202,183, 53, 31,116,158, 54,203, 49,
- 90,241,141,106,138,240,129,220,104,132,210, 88, 23, 48, 66,210, 17,184, 10, 6, 39, 21,178, 28,225,149,194,235,156,177, 16,100,
- 38, 39,235, 58,126, 99, 90,240, 71,119,238,114, 32, 51, 58,123,205,255,245, 31,126,196, 7,155, 71,228,219,154,159,126,244, 14,
- 31, 62,253,128,179,235,103,116,155, 11, 22,155, 5, 15, 55, 11,100,221, 97,156, 38, 56,143,176, 30, 89,104,204, 40, 67, 25,137,
-206,115,148, 84,204,124,193,233,118,197,185,107, 57, 35, 48,207, 51,178, 76,241, 96, 58,226,126, 53,226,190,209,124, 43,207, 17,
-185,100,237,122,220,249,134,211,126, 69,219,195,147,181,227,223,183,158,165, 8,145, 22, 51,157, 68, 45,183,202,193, 54, 81, 7,
-207,231,152,189,120,183,123,223, 94,216,197,139,207, 42,236,131, 9, 23, 62,173,161,122, 66, 99,161,235,121,132,100,166, 32, 51,
- 57,155,174,197, 57, 71,211,119,180,193,225,133,230,247, 38, 5,223, 59, 56, 97,150, 77, 56,172, 42, 84,158,161, 76,198,227,198,
-114,177,181, 44, 90,203,233,118,133,235, 91,116,102,208, 50,163,154,140,241,190, 71,208,211,217,154, 95, 60, 60,229,236,236, 25,
- 31, 61, 61,229,131,197, 5,151,171, 53,171,229, 18,164,224,245,170,160,238,123,198, 74, 49, 15,129,109,223,114,142,224,237,108,
-196,101,191,229, 45,101, 88,249, 14,233, 28,109, 8,156, 59,199,129,243, 60,241,150, 15,150,253,142,235, 37,211,202,243,101,220,
- 34,207,206,171,100,127, 98,255,204, 68,183,221,253, 78,219, 69,184,125,155, 36,157,182,219, 17,223,126,169, 41,253,133, 55, 42,
-229,151,252,221,154,207,228,217,142,173, 43,197,110,103,103,210,158,177,200,192, 53,113,202,178, 54, 30,132, 50,193,121,106,216,
- 75, 36,150,175, 74,127, 70,101,187, 67, 71,238,177, 10, 5,159,157,252,117,251, 24,249,205,251,132,203,237,110,170,200,210, 82,
- 91,234, 61, 50,130,223,251,123,194,243, 58,105,239,119, 94,245, 95,244,230,140,138,184, 71, 31,149,140,166, 57,183,198, 99, 10,
-163, 56, 26, 85,180,214, 82, 91,199,214,118,216,117, 29,247, 44, 41, 61, 44,248,128,107,211,110,211,246,137,161, 9,148,134,124,
- 62,226, 31,189,118,143,215,239,189,133,145,146, 50,203,145,162, 67, 88,203,237,249, 45, 76,150,113,189, 93,242,108,241,140,203,
-139, 11,184,184,188, 49,254,248,149, 52,104,131, 68,234,151,185, 49,235,122,183, 95, 54,217, 78,226,168, 72, 83,246,151,137,109,
- 76,255, 35,242,157, 68,207,249, 8, 43,223,164,240,165,215, 91,148, 17,110,119,110, 71,208,188, 33,178,164,245, 80,144,100,153,
- 33,215, 2,231, 2,153,145, 76, 75,131,150,144, 41, 25,169, 28, 46,114, 48,148, 84,104,163, 56,153,142, 24,229, 89,218,218, 4,
-174,101,148, 32,222,232,141, 85,178,132,117, 3, 89,174,255,229,154, 44,253, 66, 28,227,205,126, 95,238, 8,133, 2, 92,150,211,
- 21,134,149,216, 35, 68,182, 29,172, 59,232,106, 54,243, 41, 15,230, 7,244, 66,243,176,119,156, 94, 95,198,162,126,147, 54,184,
-135,124,245, 54, 50,179,197, 96, 24,149, 44,102,125,186, 71,125,159,136,148,101,210,181,167,233, 71,233, 88,216,131,135,198,243,
- 55,215, 43,254,116,181,225,188,141,230, 83, 34,211,145, 4, 38, 13,194, 11,132,107,232, 71, 5,179, 92,227,133,230,202,117, 60,
- 10,150,139,160,248, 81,179,229,119, 21,148,147, 99,100,102, 16, 38,139, 33,122, 33,160,144, 76, 37, 84,219, 21, 63,110,122,114,
-163, 56,214,138,121, 89,161,144,212, 93,135,134,104,182,162, 12,143, 28, 8, 83, 80,100, 5, 90,103, 84, 74, 50, 46,114, 68,239,
-184,115, 56,229,247, 78, 38, 28,228, 25,101,166,249, 96,113,205,105,219,115,118,126,205, 95,124,244, 33, 63,189,124,198,207,207,
- 46,249,248,234,138,179,229,138,203,118,203,217,234,138,109,232,184,232, 91, 46,154,104,246, 82,216, 64, 38, 21,102, 84,196, 61,
-179, 3,183,233,232,154,150, 95,176,101, 33, 12, 22,201, 73,149, 83, 32,153, 20, 5,135,227, 18, 93, 26, 78,170,146,215, 76,206,
-215, 53,136,179, 75,254,253,147, 15,249,171,237,138,235,205, 21, 2, 11,121, 92, 77, 48,169, 96, 62, 65,204,198,160, 50, 68,219,
- 70, 15,246,207,146,142,125, 17,199,249, 37,223, 27,246,206,189,208,118,177, 72,217, 30, 54, 61, 79,172,103,172, 37,109,239,233,
-131,163,238,123, 86,125,207, 33,142, 63, 56, 60,230,181,241,148,204,148,140,198, 37, 58,203,112, 82, 32,180,228,195, 77,207,143,
-218, 53, 87,118,203,117,191,229,114,187, 38, 19,208,118, 91,156,237,104,251,142, 39,139, 39, 92,219, 14,154, 14, 33,210,106,162,
-239, 99,242,157,209,124,212, 90,164, 12,220,149,130,165,235,201,181,225,208,182, 44,133, 98, 34, 21,215, 62,122,250,139,224,185,
-114,142, 59,222,243, 39,215, 45, 7, 26,122, 47,169,109,226,100,249,180, 86,250,172,116,185, 97, 72,183,126,247,249,239,235, 99,
- 88, 27, 14, 2,162,193,217,206,249,191,227,162, 62, 24,104,244,253,206,175,122,112,146, 51, 58,118, 51,131, 77,222,126,183, 36,
-136, 95,211, 42, 65,248, 41,188,162,200,246, 44, 51,253,243, 82, 1, 62,163,168,251,152,228, 21,156,140,118,140,222,199,191,167,
- 31, 86,254,233,224, 17,201,128,134, 61, 4, 96,136,105,117,169,200,191,202, 46,218, 20,145, 64, 85,149,200,137,225, 86, 85, 81,
- 24,195, 56,203,144, 82,243,172,107, 88,118, 45,182,238, 99,195,162,146, 65, 65, 19,237, 94,177,125,212, 9, 7, 17,247,186,121,
- 70, 62, 29,241,181,163,138,113, 14, 19, 51,195,152,156,109,215,240,244,226, 49,189,107, 88,219,154,166,107,120,178, 56,229,221,
-199,143,225,226, 26, 86,215,188,154, 43,207,223,195,135,201,226,197, 31, 92,252,130,216, 67, 79,120,181,215, 61,220, 55,194,239,
-252,152,179, 61, 61,119,232,119,169, 78,141,221,165,244, 14,193, 65, 38,221, 75, 74,147,103,134,224, 97,148, 9,148, 86,204, 74,
- 69, 33, 5,133, 18,228, 82, 96,132, 68,163, 32,147,204,180, 74, 64,128, 96,219, 59,102,163, 2, 45, 53, 14,207,249,182,222,147,
- 72, 14,205,159, 76,209,173,110, 87,244,190, 74, 97,191, 33,200, 13,230, 20, 47, 64,131, 3, 67,222, 19,195, 93, 70, 21,179, 92,
-115,146, 25,142,140,100,172, 36,203,166,131,166,161, 21,138,119,140,230, 61,107, 57,181,233,217,124,124,158,164,129,233,240, 24,
- 60,235,125,202,146,158,150,252,240,100,204,239,223,154,114,160, 37, 31,158, 47,146, 45,175,142,200,196,180, 74,242,181,180,186,
-112,209,180, 67,164,160, 24,172, 71, 92, 47,111,210, 15,133,137, 49,203, 98, 92, 32,166, 99,126,231,193, 9,183, 71, 25,139,174,
-231,137,116, 44,165,226, 39,189, 64, 74,141,210,134,255,251,163,143,249, 23,147, 17,249,193, 45,164,142, 18, 42, 57,174, 40,231,
- 39,204,103,119, 56,174,123,178,245, 21, 63,115,150,131,204, 48, 86, 10,107, 91, 14,242, 2,107,123,122, 2, 63,175, 29, 62,139,
-241,197,149,210, 76,181,230,246,184,160, 80,146,249,108,132,237, 61,211, 92,226, 67,224, 97,221,242,151, 23, 43, 30,175,175, 9,
- 77,135, 23, 14, 47, 20, 30, 23, 21, 41,189, 99,213, 56, 86,235,150, 79,186,154, 62,212,124,236,106, 46,186,134,106,219, 50,237,
- 37, 70,154,184, 98, 93,118,116,117, 67,107,107, 62,234,106,158,224,185, 16,146, 34, 8,166,153, 70, 74,137,202,115, 84,102,248,
-218,236,128,223, 60,152,241,253,105,206,183, 11,205,237,109,224,240,226, 2,125,254,140,139,118,133, 16, 81, 94, 41, 66,218, 93,
-171, 12,113,114,136,152,143,227,127,183,105,165,241, 18, 25,220, 23, 21,249, 87,106, 2, 6, 19,166, 85,195,169,243,180, 93, 79,
- 16,129,117, 31,232,149, 64, 11,201,137, 54,124,109,122,200,253,249,156, 70, 40,116,174,104, 5,252,108,181,225,199,219,134,143,
-124, 75,103,107,106,215,177,236, 90, 62, 90, 94,162,108, 71,223, 53, 92,110, 22,156,119, 75,182, 77,207, 15, 15, 11,254,245,173,
- 25,111,143, 11,190, 89,230,252,141, 16, 8,169,112, 82,178,232, 35,154,154, 57,203,182,239, 88, 56, 88,244, 45,207,108,207,200,
-246,156,123,207, 68, 4, 14, 2,252,162,105,185, 43, 61,255,174,129,237,118,203,161,128,186,237, 56,174, 12,219,198,239,101,125,
-188,112,142,251,189, 28,145, 47,115,148,234, 87,248,126,163,227, 89, 52,248, 94,188,146, 65, 77,122,222,111, 38,245, 0,216,175,
- 80,212,245, 47, 89, 27, 76,138,191,188,129, 29,251, 29, 12,127,227, 54, 23, 82,241,214, 59,118,122,110,146, 78,120,200,149, 78,
- 50,180,129,128,244, 98, 17,255, 60,121,150,115,209, 65,104,112,230, 18,121,148,170,237,155,202,144,246,134, 93,251, 60,153,236,
-203, 16,203, 70, 5, 84, 21, 84, 57, 24,137,201, 53, 85,158, 51, 54, 25, 66, 11,214,117,203, 85,211, 97,155, 54,178, 41,195,208,
-121,185, 8, 1,119,137,205,158,155, 36,195,202, 65, 73,116,166,152,100,134, 60,211, 52,205,150,197,114,193, 71,103, 79,176,174,
- 67, 8,184, 88,109,248,217,147, 71,156, 63, 57,133,203, 37,244,219, 29,145,236, 31, 82, 33, 47,146, 13,170,200, 98,177,205, 20,
-200, 50,193,182, 73,219,248,101, 94,247,224,131,174,138,228, 95,160,118, 17,141,131,156,100, 40,242, 38, 21,212, 97, 15, 63, 50,
-241,251,149, 64, 43,193,212, 8, 42,149, 33, 9,204,198, 25, 66,122, 74, 21,139, 91,145,201,184, 30, 39,185,134, 9,129, 73,178,
-178, 69,219,210, 58,203,229,166,193, 5,145,146,221, 82,113,221,151,181, 25, 21,119,218,125, 98,206,251, 47,121, 74, 12, 67,250,
- 16, 8,179, 31, 60, 47,146, 63, 4, 18, 38, 5,234, 96,134,204,115,238, 20,154, 91,198, 80, 74, 73, 22, 60,183,115,193,217,114,
- 19, 97,248,241, 56,105,252,137,197, 60,132,104, 75,122,243,204,236,189, 70, 17,120,112,116,192, 15,142,167,204,202, 9,179, 66,
-243, 23,103, 87, 73,254,169, 96, 52,142,133,125,248,126,151,184, 24, 38,143,217,226,164,233,189,109,210,212, 21, 37, 62, 98,154,
- 67, 85,240, 71,119,142,248, 23,119,238,113,187, 40,120, 88,111,249,179,101,207, 83,149, 35, 70,211,104,189,106, 50,164,239,248,
- 53, 60,135, 71,183, 35,187,186,202, 81,111,156,160,102, 19,244,108, 74,222, 86, 28,109, 55,124,188,120,204, 89,176,204,148, 2,
-161,216,134, 8, 13, 95,245, 13, 31,136,140, 99,147,113,104,114,110, 27,197,173,169, 97,172, 21,147,145, 36,235, 99,227,116,186,
-234,184,240,150,159,159,173,184,176, 61,171,224,113,117,139, 95,172,241, 70,224, 90,139,115, 30,111, 50,156,119, 56, 99,160,233,
-121,124,118, 69,239, 44, 43,191,229,188, 89,112,220, 88,166,174, 32,116, 61,206,123,174,175,174,249, 15,235, 83,126,102,151,188,
-211,247,108, 69,160, 35,250,140, 87,153,162, 9,146, 81,158,241, 86, 53,231,107,211, 3,166, 38,103, 20,122,198,202, 35,145, 28,
- 1,191,209,116, 60,126,244, 9,117,223, 32, 66,159, 72,105, 50,106,193,205, 8, 49,159, 34,111, 31, 32,110,159, 32,242, 2,177,
-181, 81, 93,241,183, 49, 53,186, 14,177,217,208,110, 91, 86, 1,186,190,231,245,195, 3,102,229,132, 34,203,152, 8,137, 81, 5,
-211, 44, 99, 35, 5, 15, 59,199, 47, 22, 91,254,207,237, 50, 78,200, 46,113,165, 68, 68, 1, 47,186, 45,143,234,107, 22,237,150,
-117,211,243, 95, 77,114,254,205,241, 9, 83,173,249,222,108,134, 54,130,183, 10,205,143, 18,114,107,149,228, 72, 8, 86, 62,240,
-115, 39,200, 51,248,155, 62,240,166,129,255,181,238,248,154,150, 60,222, 52,212, 34,208, 4,207,143,106,201,131,208,114, 97,161,
-181, 29, 65, 72,182,109, 66,129, 91,183, 83, 63, 13, 31,135, 71, 95, 29,233, 52,137, 99,163, 85, 60,203, 67,170,131, 82,237,210,
- 42, 7, 39,166, 48,196, 72,191, 66, 97,247,251,187,126,110, 24,246, 95,190,168,255,178,117, 65,136,120, 99,221, 68,170,166, 44,
-219,174,223, 65,134,131, 25,205, 0,209,107, 21, 29,187,240, 48,158,196, 31, 90,165, 20, 53, 45, 94, 14,151,124, 17, 27,125,112,
-230,146, 69,220,175,155, 12,138, 73, 98, 60,219,228,231,237,191,154,169,205,208,217,141, 39, 41,119, 59, 67,149, 57, 85,110,152,
-103, 10, 39, 5,181,237,184,236, 61,155, 62,237,208,131, 72, 38, 61, 97, 47, 32, 36, 57, 16, 9,181, 75,169,147, 18,101, 36,117,
- 90,161, 62,221,108,121,178, 88,211,134,142,141,119,180,189,227,162,174,227,106, 97,211, 0, 77,252,153,134, 80, 16,249, 15,164,
-160, 35,163, 5,169,201,147,189, 97, 30,155,171, 76, 39, 50, 86, 10,180, 20, 98, 87, 8, 63,107, 98, 29, 86, 32, 67, 81, 23, 9,
-105,177,195, 74, 38, 69,166,234,108, 71,200, 28,248, 17,163,226, 70,179,158, 87, 37,149, 80, 24, 33,152,101,134, 34, 23,140,141,
- 70, 4, 73, 38, 21,222,123,170, 60, 26,217,152, 92, 33,131, 32,168,168, 92,240, 1,148, 81,100, 82,210, 7,232,156,199, 6, 65,
-112, 97,183, 30, 24, 26, 77, 23,146, 46,214,196,123,173,183, 95,146, 67,176,231, 13, 45,249,244,158, 79,229,241,192, 40, 21, 84,
- 35, 66, 89,112, 52,173,184,103, 12,218, 24, 60, 1,237, 61,222,247,156,158,111, 19, 19,215,193,209, 60,217,146,230,113,237,181,
-237, 35, 95, 98,136,118, 29, 8,168,189,165, 25, 85,188,117, 52,161,247,158, 31,181, 29, 79,174,234,221,154, 72,164,103, 75,101,
-187, 21,131,210,201,140, 39,174, 70, 68,155, 52,191,195,164,215,244,241, 62, 40, 11,254,229,193, 1, 95, 31, 31,161,148,226,147,
-190,230, 35, 15, 98, 84, 33, 85,129, 52, 5, 82,231,104, 37,184,190,124,204,119,231,119,200,231, 7,136, 89,137,190, 51, 71,142,
- 11,164, 86,132,141, 32,172,107, 22, 31,125,192,143, 62,126,138,159,103, 92,180,107, 78,219, 26, 73,224,189,117, 77,208,134, 7,
-197,152,183, 75,197,241,184, 34, 83,146,185,150,204, 51, 77, 37, 2, 66, 41, 58, 33,184,218, 88,150, 77, 67,221,173, 89, 35,176,
- 56,124,223,227, 67,192,245, 29,190,119,120,215,227, 16,184,186,165, 55, 10,223,122, 54,182,101, 81, 59,234,122,205,249,226,140,
-187,190,227,250,252, 25,205,114,197,159, 62,121,135, 15,234,107, 62, 14, 61,143, 76,143, 76, 50, 0, 0, 32, 0, 73, 68, 65, 84,
-155,134,218, 90, 26, 4,235,222, 82,251,104,146,243,160,154,241,102, 62,138,118,210, 58,167, 40,199,180,161,167,243, 30,107, 61,
- 51,169,249, 78, 94,240,181,166,229,241,197, 21,205,197, 85,108, 54,181, 70, 74,133,204, 52,223, 63,126,141, 63,254,250,183,248,
- 71,247, 95,227,221, 82,209,173, 27, 68,223,125,234, 94,251, 34, 72,254,149,190, 94,100,241, 44,213,130,108, 50,225,222,120, 28,
- 9,113, 65,176,240,158,167, 93,207, 19, 39,121,212, 58, 30,182, 13, 63, 95,111,216,180, 53, 77,183, 33,224, 9, 46,229, 37,144,
- 16, 74,162,197,237, 55,164,226, 15,230, 21,153, 80,220, 46, 74,206,173,101,154,130,160,206,123,203,185,117,144, 41,206,146, 10,
-226, 66,106, 62,233, 44,111, 75,201,169,131, 55, 71,154,247, 26,207, 86, 41, 36,142,191,108, 60, 95, 83, 45, 63,179, 34, 26,130,
-230,121,170, 41, 68, 18,242,128,122,237,243, 93,190, 74, 65,215, 58, 13, 13, 41,113,116,144, 65,103, 50, 62,251, 62, 37, 88, 34,
-158, 71,218,204, 32,151,118,175, 86,143, 95, 24, 52,255,238, 3, 93,188,223, 73,194, 66,216, 77,234, 69,182,139,230, 28, 76,105,
-186,126, 7,139,226, 33, 43,200,191,251, 13,220,227,179, 68, 98,210,187,139,255,156,243,194, 75,226, 86,243,189,110,201,185,248,
-251,162,132,147, 91,112, 56,143,147,138, 52,137, 16, 84,199,107,220,181, 95,173,152,155, 34, 18, 87,164,128, 89,201,120, 82, 50,
- 47,115,166, 69, 78,227, 29,181,181, 44, 26, 71,240, 30,231, 3,247, 38,115,142,171, 41, 85,145,177, 90,109, 19,180, 63, 24,155,
-168,184,227,237,125,188, 30,171, 45,110, 83,211, 93, 92,113,121, 85,179,172, 61,155,214,179,234, 45,155,174, 99,179,168, 9,139,
- 77,116, 87,179,118,183,251, 25,200, 98, 90,126,154, 36,248,119,249,161,117, 44,224,183, 15, 98,225, 24,101, 73, 9,145,197,188,
-100,146, 85,176, 78, 69, 68,137, 88,171,246, 39,140,125, 66,221, 13,209, 81,238, 32, 26, 37, 35, 3, 94,201,231,227, 94,109, 31,
-239, 23,165, 35, 68, 63, 41, 35, 41,210,196,251, 34, 87, 80, 8,193, 72, 11, 10,169, 16, 72,164, 1, 35, 4, 82, 6, 74,173,105,
-123,135,201, 52,190,115,168, 36, 81,243, 82,160, 84, 76,224,242, 82,210,135,128,208, 18,239, 60, 78, 14,106,143,164,224,112,169,
- 73, 29,148, 27, 54,145,249,190,140,114,128,189, 7, 89,238,187, 77,165, 48, 22,173, 82,228,105,234,250,143,102, 88,109,184, 85,
- 86,108,108, 71,166, 50,218,174,197,245, 13,207,158, 94,237,200,130,243, 49, 76,102, 72,109, 56, 24, 31,224, 71, 18,247,228, 42,
- 77, 79,207,203, 54, 93,231,248,169,210,252, 24,120,124,189,141, 77,196,166,143,239,211,176,179, 15, 41,123, 26, 25, 93,247, 6,
-189,110,235,161,173,119,240,174,247, 17,146,239, 44, 34,207,121,163,148,100, 66,240,193,230,154,127,119, 93,179,238,124,116,198,
-203, 43,100, 94, 48,214, 6,213, 91,214,222, 17, 78, 63,230,141,163,123,232,170, 66, 77, 11,132,212,208, 4,252,217,138,190,217,
- 34, 89,179, 89, 44,120,239,195,143, 56,111,225,162,233,249,100,187,165,147, 25,111,143, 38,124,163,200, 56, 40, 10,102,153,225,
- 65,153, 49, 85,146, 3,173, 8, 33, 48, 22, 30, 39, 52, 70, 40, 54,155,150, 92,105, 78,235, 45,214,117,120, 3,110,211, 19,121,
-247, 30,103, 61,126, 84, 68, 42,199,182,193,141,115,124,221, 99,183, 13, 75, 47,120,239,252,154,255,120,125,198, 95, 60,123,204,
-255,242,232, 93,254,183,203, 51,174, 22, 75,254,250,252,154, 46, 4, 92,112,244,125,139,196,177,114, 61,214, 11,110, 21, 5, 35,
-165, 56, 25, 79,145, 70,179,105,182, 92,120,199, 51,223,163, 20, 76,180,164, 84, 49,221,241,205,210,128,183,156, 61,185, 70,174,
-174,145,190, 71,230, 21,255,197,235,175,115, 56, 42, 25,141, 43,100,200,249, 96, 44,226,250,164,233, 62,117, 6,136, 47, 59,159,
-189, 4,133, 21, 89, 9, 65,114,124, 50,227,164,154,224,124,207,117,189,197,121,207, 82,104, 86, 93, 71,237, 61,109,211,145, 11,
- 71,238, 59,166,206,146,117, 13,206, 57,122,219,198, 60,247,172,140,110,185,121,201,127, 61, 53,204,165,225, 56,207,232, 8,104,
- 25,115, 50,158,245, 61,189,128,119,135,245,168, 84,172,165, 97,162, 5,121,150,243,137,139,170,162,159,119,158,219, 2, 30,201,
-168,205,191,165, 4,239, 53, 46,122, 59, 25, 21,125, 27,180,138, 3,147, 50,177,148, 88,251,197,210,211, 87, 65, 14,227,133,217,
-173, 6,229,128, 6,171,136, 14,187,132, 54, 27,177,243, 72, 81,233, 28,251,138, 36,218,191,191,148,182, 1,106,239, 83,164,164,
-139,123, 54,114,179,211,182,231,217, 46,208,165,143,135,131, 59, 77,134, 23, 82,239, 18,169,134, 3,231,166, 99,121, 9,228,175,
-211,244, 34, 83,145, 68,192,252, 0,198, 99,242, 60,131, 32, 41,171,130, 94,153, 40, 73,112,221,151,152,156, 82, 71,150,207, 98,
-193, 44,243,248,127, 87, 57, 89, 89,112, 56, 42, 40,140,198,135,192,178,181,180,206,211,133, 64,219, 57, 78, 70, 83,190,117,235,
- 77,198,229,152,178, 24,241,116,121, 29,117,234,150,157, 67, 92,211, 69, 45,119,183,138,145,140, 77,157, 92,141,250,104, 84,177,
-220,192, 98, 5,139, 13,212,203,248,117,231,184, 73,244, 81, 58, 78,109,194,192,237,187, 80, 86, 80,142, 99,196,230,175, 66, 86,
-245,170, 31,163, 34,134, 52,140,203, 84,216,228,141, 47,178, 44, 13, 50,203,152,140, 39,160, 13,213,164,138, 6, 55,101,138,255,
-196,237, 30, 48,249, 5,112,131, 74,130, 89,225,192, 75,254,248,191,253,111,248,233, 95,255,100, 87,228, 85, 98,164,155,161, 57,
-136, 80,186,144,130,145,210,140,165,196, 2,213, 72, 35, 67,192, 40, 73, 46, 37,109,112, 20,128,179, 30,105, 20,193,122,186,212,
- 76,104, 1,157, 23,216, 4,173,123, 27,112, 33,224,186, 62,113, 61,220,206,218,120,240,211,239,146, 20,198,219, 87,116,243,251,
-140,189,154,220,235,216,139,193,239, 94, 70, 43, 88,109, 96, 86,226,178, 28,111, 59, 70, 89, 22,109,228,251,158, 95, 60, 93,224,
- 86,235,157, 29,229,108,194,241,209, 29,126, 48,154,241,102, 89,113, 71,103,124,216,111,163,167,255,139,230, 74,125, 7,171, 13,
-193,228, 73,127,158,216,239,109, 23,167, 29,155,242,159, 93,106,146,131,220, 73, 69,229,243,105, 94, 55, 76,237,182,133,205,154,
-159,173, 59, 30, 55,107,254,244,244,154,205, 98,139,204, 4, 50,207,145, 66,115,171,156,113,172, 51,126,247,238,156,223, 58,156,
-227,141,160, 91, 47, 57, 25, 31,147, 85, 5,210, 9, 88,182,184,103,107, 92,187, 65, 72, 40,180,229,231, 79,158, 33, 55,107,212,
-122,131,106, 98, 80,201,239,142, 21,247, 70,209, 36,102,174, 21, 69,145, 49,213, 26,129,224,200, 7, 42, 41, 57,145,129,179,214,
- 33,133,100,107, 45, 65, 42,150,193, 18,250, 30, 95, 42,124,231,241, 62,224,165,192,119, 93,220, 52, 8, 25,101,207, 4, 92, 89,
- 96, 23,107, 92,153,243,172,117, 60,106,214,156,250,140,237,234,154,179,174,198,173,174,113, 87, 43,220,178, 38, 56, 75,179,173,
-209, 66,240,168,107,120,175,109, 56, 24, 79,144,214, 83, 24,205,199,125,195,135,125,205,181,181,228, 4,250, 16, 24,105, 77,165,
- 53,185,145, 28, 20, 57,127,185,234, 41,230, 37, 97,185, 66,110,214, 28,102,142, 91,163, 9, 79,219,150,255,125,181,162,245,125,
- 60, 87,134,128,158,174,127,174, 89,251,114,133,125,224,163, 68,126,148, 72, 86,204, 98, 60,227,245,147,219,168, 76, 81,183,129,
-214,117,252,226,236,146,186,171, 25,101,134, 82, 43,170, 82, 96,132,103, 28, 60,198, 91,180,237,113,157, 37, 3, 70, 82,242,235,
-211, 59,124, 99,118,135,163,124,194,194,215,124, 87, 41, 14,146,143, 64,103,123,164,210,156, 89,203, 7,125,195,199, 54,173,218,
-146,107,100,155,146,213,144,154, 45,128, 52, 92, 74,193, 88,101, 72, 15, 39, 25, 28,101,146,105, 16,212, 33,208,137, 52,236,104,
- 25, 99,138,139, 60,146, 65, 67, 26,170, 36, 95, 94, 38,173, 19,183, 68, 38,164,209,166,104,111,153,226,142,109,155,134, 72, 31,
- 11,122,159,140,207, 20, 73,250,249,213, 77,105,254,254,138,186,247,169, 59, 74,236, 40,155, 32,187,166,221, 65,227, 42,105,121,
-187, 62,254,190, 27,152,234, 38, 14,248, 34,153,208,124,145,231,186,202,162, 43,157, 76,176,189,148, 49,174,179, 26, 51,158, 76,
- 80, 66, 68, 98,187,144,244, 93, 36,210,209,109,119,100,190,207,205, 70, 47,160,156,192,228, 16, 38, 35,168,178, 24,242, 82, 40,
-212,164,100,154, 23,148,153,198, 0,173,243,108,172,101,211, 58,130, 7, 45, 36,111,222,186,205, 65,121, 64, 16,158, 76,148, 20,
- 35,195,249,249, 51,168,109, 12,221, 88,175,162,165,103,179,217,101,146,223,236, 42,135,156,242, 46, 53, 69,221,243,185,229,153,
-132,241, 60,238,244, 71, 51,152, 78,201,167, 19,142,143,167,168,170,164, 93,182,159,110, 94,190,200,159,252,151,153,208,243, 60,
-198, 18, 86,201, 85,172,139,193, 21,163,162,226,193,244,136,131, 98, 68, 97, 50,238, 29,206, 41,116, 70,166,224,168,170,152, 29,
-207,184,214, 89,114, 32, 84,187,125,151,144, 59,171,219,155,128,151,189, 53,143,136, 69,239,205, 95,123,139,119,127,250,110, 44,
- 76, 25,187,251,174, 40,192, 8, 84,145,131,243,100, 70, 83, 9,129,201, 36,163, 76, 98, 59, 79,153, 75,114,169,176,193,199, 6,
-218, 7, 58,231,110,248,152, 58,196, 52, 55,155,130,225,250,129, 6,160, 32,184, 64, 47, 6,131,138,189,247, 76, 16,165,137,131,
-223,130, 79,141,237, 87,153, 10, 60, 59, 25,219,240,222,137,236, 38, 90, 1,147, 39,121, 30,108, 36, 60,107,123, 78,157,231,252,
-122,141,187, 88, 66,187,217, 53, 4,243, 3,222,158, 79, 57,153, 28, 19,164, 32, 40,197, 51,187,166,123,250, 44,193,146,124,122,
-197, 37,116, 52,173, 25,220,227,116,242,194,247,105,213, 35, 18,169,212,165,226,225,236,115,235, 50,241, 34, 89,167,183,136,186,
-101,177,216, 32,234,109, 36,122,213, 29,178,208,136,106,202, 27,213,152,183,198, 83,190,121,123,206, 72,102, 8, 41,121,120,241,
-148,215, 68,193,116,126,136, 12, 2,225,136,102, 54,189, 5, 28, 69,158, 49,234, 26, 30, 45,151, 40, 28,186,239, 57,108, 91,126,
-111, 54,166,202, 75,230, 89,206,184, 26, 83, 6, 65,102, 84,140,155,144,146,204, 57, 60, 48,149, 1,145, 41, 58, 47,185,180,142,
-165,235,241, 93,139,215, 2,159,231,209, 87,100, 93,227,235, 26, 47, 13,222,123,188,137, 17,170,118, 91,227,133,192,106,133,173,
- 59,156,151,216,102,131,203, 74, 44,209,130,216,105,133,183, 53,190,238,240,109, 67,179,218, 16,172,165,182, 29, 63,106, 59, 90,
-229,120,191, 89,241,212, 57, 62,105, 86, 52,109,139, 12,158,194,121, 2,129,128,100, 36, 53,179, 81,198,215,143,198, 28,205, 70,
-152,217,152, 67, 35,248,232,233, 37,255,199,135, 31,240,227,235, 11, 58, 2,116, 53,132,144,124, 21, 52,204,166, 80,141,119, 65,
- 50, 47,201, 68,255, 92,201,137, 76,220, 23, 33,163, 11, 93, 62, 97,246,250, 61, 42,157,209,117, 22, 31,224,253,211, 75,220,217,
- 37, 27,107,153,151, 57,153, 9,228, 65,160, 68,160,179, 13,153, 48, 4, 39, 48, 2,164,109,185, 87, 30,112,247,228,132, 91, 71,
- 71, 84,227, 10,143,228,190,173,201,131,231,150,206,241, 34,176,177,158,143,186,134, 63,105, 58, 26,203,142,151, 53, 88, 54, 75,
-147,200, 28,233,107, 42, 99, 46,224,150, 81,108,133,100, 46, 37, 70, 57, 30, 59,143, 67,236, 56, 56, 58,249,149, 20, 89, 58,175,
-198,241,243,112,222,192,171, 69,122, 15, 89, 38, 74,239, 88,242,122, 40,232,253,206, 77,110, 56,182, 68,114, 86,181,110,119,142,
-253, 39, 87,212, 53,187, 60,117,233, 19,204,206,206,119, 93,138, 88,172,141,222,189, 89, 67,122, 91, 63,236, 72,147, 25,205, 23,
-253,240,153, 78,157,156,220, 29,248, 33,218,209,118,218,160,165,140,171, 87,136, 69,253,242,108,119,161,141,138,175,161,156,197,
-155, 63,159,196, 55,218,140, 34, 9,206,148, 49,140, 32, 31,204,111, 64, 86,154, 44,207,152,100, 25,179, 34, 71, 32,105,130,103,
-213,218,104,239,234, 2,153, 82, 76,243,146, 91,147, 3, 74, 93, 96, 84,116, 85,250,217,211,199,180, 23,151,208, 92, 67,179,141,
-230, 5,254, 43, 66, 64, 1, 56,152,243,221,111,189,193,111,127,243, 91, 60,184,119,151,163,241,156,197,122, 65,231, 61,221,182,
- 1,215, 62, 63, 37, 14,159,141,254,236, 98,175,247,138,200,103,237,130,181,222, 53, 69, 38, 93,255,188,138, 83,170, 33,101,163,
- 11,212,184,226,193,236,144,147,195, 35, 10, 97,200,139,140,145, 46,153,143, 43, 74,149,227,129,163,209,156,105, 89,114,149, 27,
-130,209, 96,101,124,221, 58, 49,201,213,222,231,129,212, 53, 32, 60, 78,239, 10,122,178,130,141,146,172,212,157,103,134,224, 3,
- 89,110,200, 4, 28,154,248, 62, 26,169, 41,115, 77, 38,226, 4,160,124,156,174, 91, 27,144, 74,226, 3,132, 16, 15,132, 46, 4,
-180, 16,120, 47,216, 88, 31,141,130,172,195, 1, 97,184, 63,247, 47,145, 75,123,116, 33, 98,177,147, 42, 58,175,233, 60, 37, 21,
-166,107,215,191, 42,243,255, 5, 39,185, 60,189, 39,131,138,163,172,226,212, 62, 16,113,154, 46, 69,233, 94,220,184,228,197,247,
- 44,163, 60, 60, 38,207, 53, 66, 42,158,244, 29,143,186, 6, 22,203,157,201,204,167,254,109, 27,159,221,241, 40, 30, 88,101, 14,
-163, 81,252, 25,235,102,215, 96,246,126,231,233,176,127,191,140,138, 88,124,115, 29,179,198,141,134,174, 67, 24,137,176, 18, 97,
-123,164,237, 17, 69,198,236,232,132,111, 87,115,238, 28, 78,184, 59,174,200,181,102, 99, 37,239, 94,110, 24,117,107,238,201, 25,
-249,180,138,242, 56,173, 17, 70, 35, 45, 4,223,161, 74,205, 97,145,115,213, 58,148, 30,241,186, 86, 28, 43,205,131, 81,206,116,
-116,128,113,129, 96, 52,153,137,232,140, 86,138,208, 90, 84, 8,100, 2,150,109,207, 88,195,242,242, 26, 45, 37,215,118, 75,176,
-129, 96, 12,161, 80,241,179, 86,132,229, 18,143,199, 11,112,157,197,139, 46,154,219,180, 53, 14,137,203, 13,206,111,177, 50,224,
-235, 30,103, 52,174,183,120,173,163,241,181,237, 9, 93, 11,155, 13, 97,209,224,183, 91,222,239, 90,222,111, 90,182, 77, 77,211,
- 55, 92,217,158,171,174, 67,116,142,210,193, 72, 65, 31, 36, 69,145, 51, 27, 85,156,100, 5,255,180, 40,249,225,120,202, 31, 77,
- 43,190,101, 36,127,246,209, 83,248,248,147,120,166,218, 46, 58,115, 42, 73, 80, 10,202,156, 80,230,145, 3, 84, 85,241,136,252,
-162, 65,201,177,139,243,101,224,189,196,226,222,143,199, 28,142, 70,212,190, 67, 11,197,229, 98, 65,184, 62,135, 62,112,182,221,
-114,221,213, 28, 87, 5, 66, 11, 90,103,209,197,148, 50,159, 80, 22, 99,186,190,166, 26,229,220, 57,188, 75, 86, 20, 84,121, 78,
- 91, 55,124,240,236, 35, 10,231,184,182, 29,231,193,241,179,122,205,255,120,121,205,181,101,135,116,145,194,189,134,194, 41,101,
-180,218,245,150, 99,173, 25, 57, 79,174, 4,218, 57,158,246,158,177,210, 44, 8,116, 66, 38, 84, 56,173,174, 84,250,149,153,136,
- 28,139,200, 77, 33, 75, 60,145,160, 62, 63,101,109,224,159, 8, 19,139,118,174,118,158, 39,221,158, 91,105, 72,197,223,250,248,
-189, 67,227, 43,253,243,222, 40,255,233, 76,234,123,135,145, 74,123,243, 65, 78, 35,213,142, 44,231, 67, 34, 0, 37,150,160,243,
-113, 15,111, 63,195, 23,251,165,203, 31,153, 46, 96, 58,216, 91,191,235, 46,149, 68, 72, 77,231, 2,157,245, 49,144,196,182, 32,
- 29,144, 69,189,109,150,222,208, 81,154,122,134,130,231,146,207,183,147,113, 58, 23,160, 42,205, 97, 81, 50, 45, 53,243,124,132,
- 18,146,166, 79,146,151,174, 37,184,192,184, 42, 57,172, 70,220, 26, 79,177,194,209,122,207,162, 93,178,236, 58, 30,126,242, 9,
- 92, 60,221, 33, 22,191, 20, 33, 77,195,124,198, 15,222,254, 38,147,241, 17,213,104,130,181,142,171,237,130,203,245,150,176, 92,
-165,195,218,238, 92,201,148,222,153,250,200, 4,221,203,180, 23, 29,138,244,240,119, 15, 68,198,151, 21,253,161,192, 14,251,236,
- 32,227,245, 55, 89,130,207, 5, 20, 57,111,204,143,184, 55,191,131, 49,154,178, 28, 49, 45, 43,138, 60, 71, 11,141,115,150, 82,
- 27,148, 82, 20, 38,122,128, 95, 6,159, 10,187,136,235,131,225, 94,218,151,117,236,123, 33,200,100, 63, 60, 52,115, 25,137,161,
-157,165,159, 19, 40, 13, 42, 8, 70,185, 34,120,152, 24, 77,174, 20, 74,199, 61,151,240, 30,151,248, 15, 89,166,232,131,139,155,
- 28,163,113, 93,135,144,146, 39,109,135,144,129, 32,163, 89, 72,112, 68,231,174, 65, 51,111, 7,162,156, 75,235,162, 16,211, 6,
-179, 50, 62,204, 69, 17,145,167, 44, 69, 52,218, 62,113, 41,190, 66, 67,215,219, 61,217,103,106, 56, 51, 19, 11,184, 72, 94,238,
-219,228, 40,183,255,247,219,142,107, 37,249,216, 40, 62, 64,240,172,107,227,186,103,187,141,190,210,242, 37,171, 45,151,126,198,
- 44,135,249,148,127,125,247, 22, 63,124,237, 62,111, 31,148,252,244,244,122,183,183,149, 47,172, 97,134,213, 71, 48, 8,215, 37,
-244, 36, 53,102, 82, 34, 66, 76,179, 18, 89,156,198,133, 0,155,231,252,227, 55, 30,240,181,201,132, 89,145,163,117,206,170,246,
- 60, 91,111,121,218, 94,240,166,131,113, 49, 69,149, 25, 98,108, 34, 19, 92, 41,168, 91, 68,150, 83,150, 37, 7,193,147, 59, 71,
-231,224,181, 34,227, 78, 53, 6,219, 98, 76, 65, 81,142,144, 66,164,158,223,199,219,135,104,223, 92, 73, 73,189,217,160, 50,193,
-220, 91, 62, 58,123, 18, 45,101,181,230,143,238,221,227, 15,223,120,157, 7, 99,201, 79,214,155,184, 81,169,107,188,118,248, 98,
-130,183, 46, 26,219, 40,133,171,175,241, 50,199,203, 16,247,240,133,137, 83,191,210, 81,205, 89,119, 17, 37,169,211,206,187, 94,
-195,179,115,186,171, 43,206,206, 47,121,124,213,114,209,116, 60,220,246,116,117,131,106, 45,165, 23,204,114, 67,150,107, 58,109,
-120, 93,231, 60,168,102, 28,155,156,153, 41, 57, 86,146,219, 35,205, 70,122,158,157, 93, 18, 46, 46,161,237,163,247,187, 82, 4,
- 29,215, 96,255,242,254, 33,255,230,237,183,248,237,251,119,185, 30,107, 46, 46, 54,159, 57, 80,132,193,111, 33, 68,200, 88, 12,
-209,201, 10,130, 13, 48, 45,233, 59,207,147,237,134,240,232, 20,182, 27,130,107,160,110,169, 55, 53,239,182, 27,182,237, 6, 65,
- 78, 89, 76,201,203,130,239,255,103,191, 77,119,213,177,109,215,140,139, 17,147,241,136,104,118,211,240, 63,191,255, 49, 15,151,
- 11,254,135,139, 21, 23,174,231,255,185, 90,179,242, 18,234,150, 16,246, 76,194,144,241,252, 86,106, 71, 74,149, 26,227, 45, 40,
- 69,238, 44, 37,224,165, 96,101, 29, 39, 90,243,108, 95,243, 61,144,181,135,198, 90, 36,165,204,192,201, 26,220, 34,209,207,171,
- 89, 94, 60,119, 7, 95, 10,210, 26, 74,232,157, 91,169, 72,191,119, 93, 66,209, 84,140,103, 30,206,168, 97,178,247, 95, 77,109,
-246,247, 56,169,239, 77,123, 3,220, 48,132,179,236,231,108, 15, 18, 29,216, 57,207,245, 95,114, 15,236, 93,108, 28,220, 30, 34,
- 19, 18, 57,194, 69, 6,107,232,109,148,127,117,219,216, 45,149, 85,156,192,139,180, 55, 82,123,241,172,106,111,151, 84,119,113,
-242, 12, 1,114,195,164, 42,152,151,134, 42,207, 80, 66,208, 58,199,182,243,172,251, 14, 31, 2,101,161, 57, 46, 42,110, 85, 51,
-124,144, 52,109, 75,227,122,222,127,250,140,167,167,167,112,250,209,115,145,150,191,212,135,115,160,114, 30,188,113,151,131,217,
- 1, 66,106,126,126,250,144,247, 63,252,152,112,113,149,194, 59,250, 29,113,113, 56,121,179,100,113,234, 19, 19, 83,165,184,209,
-144,236,120,117, 90,139,104,181,139,111, 29,246,114,131, 93,175, 16, 59,146, 26, 41,176,167, 79,172,239, 16, 29,221,100, 49,225,
-215,110, 63, 96, 54,157,227,172,167,202, 71,113,208,212, 57, 65,192,168, 24, 97,125,195,192, 53,179, 4, 38, 82,131, 49,212, 62,
- 68, 46,129,144,187,172,251,253,162,126, 19,231,187,231,188,164,108, 36, 9,169, 68,162,211, 38,189,214,104,115, 25,130,224, 32,
- 55,104, 33,137, 52, 57,133, 49,209, 4,182,119,158, 66, 74,214,182,103,164, 84,220,250,180,129, 32, 20,215,193, 49, 82,134,174,
-119,180,206,227,156,223,109, 2, 68, 72, 80,187,143,197,251, 38, 13, 47,220, 20, 82,178, 50, 93,163, 33,162, 80,236,188,185,191,
-234,174,221, 37, 61,121, 85,221, 4,204, 40, 33, 8,214,198,181, 71,215, 70, 85, 68,232,118,135,134,115,209,110,116, 54, 74,168,
- 88,106,236,154, 13, 44, 18,121,244,101, 54,204,109, 7,227,138,239,222, 58,225, 55,230,199,228, 58,195,122,207, 95, 53, 93,140,
-173,124,241,245, 15, 68, 58,169,226,243,110, 70, 8, 21, 27,177,184, 5, 19, 49,134, 83,104,132, 14,136,206, 34,189, 64, 22,134,
-127,118,235,117,222, 62, 58, 96,108, 50, 10, 29, 21, 8, 93,219,241,254,122, 67,103,151, 76, 54, 45,147,233, 28, 89, 40,196, 40,
- 35,132,128,174,166,136,117,131,197,115, 48,157, 51, 55,134, 81, 7, 77,211,144,107,184, 61, 61, 68, 21, 35,100,211, 96,133, 38,
- 83,154, 97,107,226,124,192, 53, 29, 78, 10,154,224,169, 28, 52,219,107,142,139,140, 79, 46, 47,169, 70, 35,254,249,157, 59,220,
-170,166, 28, 77, 14,120,239,250,156,235,197,150,224, 44, 65, 23,248,237,134,160, 52, 94, 42,124,179,197,103, 21,222,246,201,183,
- 41,158, 9,222,148,132,174,142, 22, 25, 10, 66,211,237, 22, 73,114, 47,140,165,237, 8,219, 13,246,122,133,109, 26,158,181, 45,
- 63,239, 45,211,206,113,175, 48,116, 82, 50, 54,154,187,197,152, 82, 42,164, 50,209,152, 74,105, 70, 82,225,133,231, 32, 83,124,
- 40, 51,124, 93,195,197, 34, 54,158, 46, 66,207,191,127,231, 54, 35,149,161,180,230, 82, 6, 30, 9,133,144, 89,124,102,247,138,
-251,254,107,187, 81, 8, 13,235, 20,231, 0, 75,189,117,212, 93, 77,120,252, 20, 54, 87, 73,177, 33, 8,222, 18,218, 6, 46, 87,
- 44,150, 91, 86, 70,115,255,240, 46,199, 71,183,217, 44, 90,180, 84,120,235,169,155,117,220, 32,217,152, 97,174,109,205, 95,127,
-252, 24,209,247,156,173,106,186, 62, 16,218, 62, 61,251, 50,166, 39,186, 16, 27, 86, 31, 24,133, 64,111,147,113,151,130,214, 11,
-238,139, 64, 19, 44, 2,129, 12,158, 18,193, 59,109,159, 12,162,194,243,110,150,195, 90, 88, 38,191, 11, 73, 60, 47,164,136, 8,
-177, 54,177, 81,150, 73,189,181,255,156,106,149,228,214,123,110,143, 67,178,164,222,243,144,207,179,157, 90,164,103, 55, 0,188,
-152,202,166,247,200,241,255, 32,139,250, 0,203, 74,177,183, 79,127,129,228,246,156, 30,156,231, 33, 59,225,190,154,172, 78,164,
-176, 15,225,119,178,157, 44,103,252,230,109,166, 7, 83,182, 62,193,132,235,117,124, 19,143,102, 59, 67, 0,111, 35,124,152, 98,
- 77, 81, 42,254,121, 68,252,222,129, 41, 89, 26,230,121,134, 49, 2, 35, 21,181,179, 92,215,150,117,103,233,189,197, 40,197,113,
- 49, 98, 82, 20, 24,169,113,210,209,116,142, 39,171, 21,205,229, 51, 56, 61,143,211,211, 87,105,142, 62, 11, 38,111,106,222, 15,
- 61,231,215,151,252,228,147,143,121,248,240, 9, 60,252, 56, 89,187,238, 77,217, 67,243,148,169, 4,249,239, 41, 11,148,220,145,
-204,110,130,116, 84,114,250,147,207, 75, 10,135, 78,119,127, 74, 31, 60,215,117, 74,217,179, 22,188,228, 27,111,189, 77, 89,142,
- 80, 82,146, 43, 3, 82, 81,230, 5,214, 89,140, 48,116,206,161,165, 64, 43, 67,221,182,232, 44,163,183,150, 46,120, 54,117,187,
- 51, 37, 26, 86, 0, 54,253, 27,195,191, 61, 76,234, 50, 33, 5, 89,186,223,196,160,137,151, 55,118,177, 90, 43,166,185,142,211,
-184, 81,100, 82,161,148,196, 7, 71,231, 2, 90, 10,214,214,145, 35, 8, 50, 58, 81, 5,231,227,218,204, 67, 43, 60, 78,106, 90,
-107,227,228, 32, 18, 44,121, 3,191, 39,247,186, 64, 44,170, 67, 81, 23,106,119, 40,220, 60,197,233, 48,233,136, 81,192, 95, 37,
-168, 72,107,152,205, 34,113,174,202,121, 80, 26, 50,231,152, 27,133,241,150,186,243, 49, 97,234, 83,114, 80, 31,215, 76,213, 56,
- 18, 3, 6, 23,188,245,122,167, 6,121, 89, 34, 97,219,113,124, 50,227,184, 28,209,120,203, 39,182,227,195,118, 11, 77,178,146,
- 29,190, 63,207,246,158,253, 4,223,170, 16,153,239, 67, 19, 22,199, 64, 68,154,102, 4, 10, 25,122,132,202,249,238,201, 9,175,
-205,142,209, 90, 35,136,100,196, 69,211,179, 88,175,120,214,110,185,114,107,170,109,207,172, 24,163,114,131, 28, 21,209,253, 55,
-104,202, 44,167,154,157,112, 92,221,225, 86, 89,209,173, 90,132,232, 40, 6,151,192,124,132, 12, 14,231, 60, 82, 41,132,150,184,
-186, 67,230,134,237,182,102, 98,162, 87,198,170,105,144, 1,238, 26,129,240, 13,119,231,199,228, 74,241,201,118,195, 95,108,106,
-218,109,141,183, 30,143, 39,228, 26,143, 34,168,130, 80,150,248,182, 37, 8,139, 15, 22,175, 51,130,245, 4,231, 8, 89, 30, 11,
- 94, 15, 65,198,245,224,128, 40, 7,249,124, 49, 13,251,124,154,109,199, 7, 82, 48,111, 29,227, 76,211, 40, 73, 41, 3,135,166,
- 64, 41,141,115, 14, 47, 5, 87, 93, 77, 38, 3,199, 74,242, 70,161, 80,163,130,199,249, 40,250,144, 47, 86,132,171, 21,183, 15,
-114, 78,170,138,107,107,249,243,229,134,173,245, 80,106, 68, 89, 70,121,173,141,211,248, 23,202,219,122, 11,155, 85, 36, 88,246,
-237,142, 59,145,204,157, 82, 5,132,224,104,174, 27,142,239,223,230,100,114,136, 82, 2,239, 28, 46,120,234,166, 78,183, 94, 92,
-123,213,219, 13, 31, 94, 46,225,217, 41,108,108,156,198,151,219,232, 3,177, 90,198,198, 99,221,196,162,238, 28,253,186,137,175,
-119, 40,236,193,179, 22,112,143,136,194,104,223,243, 65,215, 19,164,192,217,100,238, 53,236,181, 85, 26, 4,212,192,249, 74, 40,
-177, 78,123,123,147,167,228,199,168,200,226, 38, 47,106, 47, 4,169, 40,210,153, 58,252,204,118, 23,237, 29, 82,198,200,144,161,
- 32,134, 63,159, 92, 75,103,115,168,166, 41,248,108,136,246,254, 85, 77,234, 67,135, 32,245,243,126,220, 55,146, 34,255,233, 16,
-137, 87,129,132,111,166,242,192, 77, 75,252,101, 96,251,175, 74,204, 27,220,188,240,112,255, 46, 63,252,167,191,201,119,110,223,
-231,219,175,189,197,119, 94,187, 77, 89, 21, 60,126,114, 17,247,131, 89,158,114,223,101,210,235,166, 2,166,247,236, 49,141,130,
-108,248, 44,201,115,133, 81,130, 92, 43,106,235,184,220,246, 92, 55, 53,174,183,148, 70,243,214,193,109, 14,102, 99,198,229,148,
-213,102, 77,111, 61, 87, 77,195,114,177,132,197,229, 78, 19,252,101, 14,238, 1, 57, 24,160,203,193, 80,103,144, 12,102, 26,158,
- 45, 89, 61, 62,165,125,248, 49, 44, 46,118,157,245, 0,237, 12,230, 7,131, 37,168,212, 41, 76,167, 77, 8, 71, 42,242,217,192,
-220,150, 9,170, 79, 82,187, 44, 77,236, 55, 55,104,130,191,135,226, 58,152,173,116, 41,251,219, 11, 56, 58, 68,140, 71,220,154,
-204, 25,153, 18,169,179,148,182, 5,101, 22, 11,187,117, 29,130,192,186,171,233,122,143, 82,130,171,245, 26, 43, 28,141, 16,132,
-186,143,232,205, 32,121,212,164,201, 92,197, 66, 49, 48, 74,135, 61,123, 80,187,166,108,152, 56, 35, 61, 26, 37, 34,169, 34,215,
- 18,141, 32,207,210,129,232, 64,136, 16, 61,201, 69, 64, 11,104,125, 32, 75,142,178, 91,235,145, 66,210,244,158,218, 57,100, 8,
- 56,145,178,201,221,222,174,219,197, 67,140,118,207,161, 80,202, 93, 65,215, 42, 30,128,114, 56,244,210,123, 34,220,103,219, 86,
-126,238,147,173, 99, 86,250,180, 98,102,226,253,106, 16, 88,231,169, 8,209, 73,174,169,119,204,119,191,247,156, 20, 37,183,103,
-138, 77,117, 20,137,160, 50,161, 55,167,151,105,122, 23,159,158,214,173,229,217,166,227,175,187,134,191,106, 90, 62, 92,111,227,
-125, 82,232,216,108, 13,205,170, 78, 12,121,147,154,153,161, 1, 20,121,116, 71,147, 30, 33,125,156,214,133,143,111, 81, 80, 8,
-223, 33,108,203,119, 94,123,157, 73, 86, 33,181,166,211,146,211,117, 67,227, 3,205,102, 75,237, 90,150,117, 79, 79,199,253,209,
-140,162, 42, 80,202, 32,148, 66,141, 74,204, 65, 69, 54, 25,147,221, 57, 32,147, 99,140,237, 57,191,184,100, 50, 18,228,213,140,
-208,213,160, 20, 65,104,130, 15,200, 48, 80, 32, 28,211,188,160,173, 91, 38, 42,163, 16,146, 18,195,216,100,200,174,102,181, 89,
-243, 81,223,240,231, 23,151,156,247,125,212, 92,111,226,228, 77, 31, 8, 74, 18,198, 25, 65, 11, 66,221, 18,104, 9, 34,202,165,
-130, 25,206,166,100,172,101,227,164,123, 83,193,213, 75, 10,250, 11, 92, 53,250,158,119,250,142,166,105,169,157,135, 76, 48,149,
- 18,237, 29, 65, 72, 46,234, 53, 29,129,222,245, 76,188,231,174, 50,156,228,134, 55,170,156,139, 50,103, 57, 26, 17,156,227,189,
-247, 31,241,103,159, 60,230, 71,219,134,109,215, 71,147,160,148,151, 32,140,138,170, 21, 83, 70,233,154, 16,241,172, 25, 21, 47,
- 93, 17,137,207, 67, 77,135,198,191,105, 1,203, 51,147,113,171,154, 96,148, 38,120, 79,223,181,172,155, 21,214,246,104, 2,189,
-107,177, 93,207,138,134,245,227, 69,148,235,182,109,138, 62,173,119, 25,231,109,157, 86, 22,117, 36, 26,135, 20,125, 58, 52, 64,
- 10,180,115,172,251,158,214,193,194, 57,236, 62,170,230,247,236,198, 73,107, 58,157, 30,116, 4, 15,116,198,127,121, 56,227, 7,
-147, 17,255,100, 92,162,239,188,193,195, 31,255, 24,117,231,136,208,187,157,161,163, 24,146, 13, 7,211, 52,155,172,207,195, 78,
- 30,170, 72, 43,225, 52,138,251,110, 71,214, 59,152,197, 26, 36, 21,108,234,184,254,252,149, 21,117,147,237, 92,111, 6,147,217,
- 97,106, 27, 12, 96,134,169,226, 85, 14, 29,157,224, 69,157,118,133, 50,153,174, 72,241,183,195,184,126,177, 67, 81, 73, 11, 40,
- 42, 94,251,214,219,252,250,253, 7, 76,230,183,144, 66, 49,157,206,113,109,207,187,182,141,157, 81,145,160,217, 54,165,146, 45,
-175,211,141,148, 96,123,162, 71,187, 52,130,201, 40, 39,207, 12, 19,163,146, 93,168,103,209,116,212,235,116,195,105,205,107,135,
-135,220, 62, 60, 97,156, 87, 40,161,241, 74,242,241,213, 37,139,171,107,184, 88,196,124,234,208,127,185,166, 69, 13,201, 95,233,
- 49,146, 2,116,153,138,219, 16, 24,146, 76,109,156,125,121, 72,129, 38,162, 13,222,239,116,225, 67, 96,141,145,169,177,209,187,
-110, 84,134,248,158, 13, 29,169, 18,177,208, 15,108,115,173, 18, 33,100,128, 87,253,206, 80,136,244,125,101, 52,230, 57,152,206,
-152, 85, 35, 66, 8, 20,166,192,186, 62, 34,129, 64,103, 45, 4, 75,227, 58,140,136, 48,248,229, 98,137,201, 20,117,103,233,156,
-199, 53, 13,244,235, 93, 70,113,218,195,198,130,147,228, 40, 46,197,211,146, 26, 80,157,116,186, 62,236,166,198,224, 33, 51,232,
- 16, 40,141,166, 11, 30,233,226,125,221, 57,143,247,158,222, 7,156,243, 52,189, 39, 55,138,186,135,206,122,180,148,172,189,197,
-171,232, 5,223,220, 32, 25, 73, 95,111, 83,230,125,235,226, 52, 33,210,107, 29,194,128, 84,122, 38, 90,123,147,131,126,179, 6,
-169,155,212,217,135,231,209,151,231, 96,194,207,120,246,148,137, 48, 58,146, 98,148,113,168, 5, 66,105, 26,231,216, 52, 61,165,
-183,108, 54,137,183,241,162,135,117,150,179, 57, 58,130,201, 45,126,167, 28,241, 70, 86,112,168, 2,167,215,171,120,112,126, 86,
-212,112, 93,195,114,157, 16,172,132,114,105, 29,247,134, 46,125,125,240,138,184,185, 39,178,148,191,240,130, 45,169, 75,133, 29,
-162,223,183, 20,136, 96,248,155,205,150, 55,142, 15,177,186,224,170,115, 92, 11,199, 98,221, 82, 1,227,190,163,146,130,183,143,
-142, 56,152,143, 24, 85, 5, 18,133,148, 26, 89,106,228,225, 40,106,217,115, 29, 21, 15,219,128, 25, 9, 46,234, 37,235,237, 5,
-227,106,134, 84,101,220,227, 10, 8, 73,235, 47, 19,163,122, 84,150,216,166,103,146,231, 76,180, 64, 11, 67, 38, 50, 86,237, 53,
- 79,150,151,188,215,116,248,174, 35, 40,133, 47, 50, 66,215,227,155,109, 34, 4, 59, 66,219, 18,250, 53,212, 77,148, 78,245, 9,
- 1,244,137, 44,217,181,187,169, 69,238,120,189,175, 34, 53, 19,222,243,180,109,249, 69, 93,243,255, 45,123,206,235, 13, 65,123,
-182, 56,122, 31,184,106,214,148, 62, 80,132,128, 16,130,128,192,106,201,108, 92,178,146,154,235,114, 4, 71,135,241, 31,189, 94,
- 35,206, 22, 17, 61, 25,222,171,129,253, 93, 22, 49,105,242,246, 45,126,248,107, 15,248,206,237, 35,102,199, 83, 30, 47,109, 92,
-213, 5, 62,117, 79,138,151, 13, 88,131,148,214, 57,220,197, 5, 98, 62, 35, 35,196, 45,149,243, 4,161, 82,124,131,165,105, 26,
- 86,221,154,211,197,138, 38, 36,207,138,254,115,130, 84,156, 75,187,235,136, 40,138, 68, 9, 10, 87, 43,150,222,179,105, 45,171,
-166, 35, 8, 17,239, 61,149, 66,197,156,139, 53,173,245, 59,173,248,240,115,107,205, 55, 50,195, 91, 69,206,216,228, 24,169,249,
- 14,158,223,124,253, 54, 39, 38,240,243,109, 31,155, 88,153,220, 35, 7, 84,211,171, 72,148,179, 3, 26, 39,119, 12,251,225,245,
- 90,187,139, 44,206,116,226,113, 37,185,247,102,155, 26,189, 95, 69, 81, 31, 10,240,224,169, 62,176,137, 7,243,150, 1, 90, 29,
- 82,175, 94,201,171, 86,238,138, 0, 98, 47,241,172,255,219, 47,232, 38,193,136,210,192,131,187,124,255,173, 55, 25,149, 83,178,
- 44, 35, 56,232,123, 75, 89, 22,104,183,230,210,121,130, 15, 4,159,228, 17,219, 6, 46, 23,241,115,149,244,222,165, 70,230,138,
- 81,174, 49, 82, 80,101, 34, 41,151, 60,151,171, 6,183,218,194,106, 3,153, 97, 84,149,188,113,124,155,131,114, 66, 32, 50,167,
-215,125,205,197,102, 77,127,185, 76, 76,247,246,203, 17, 35, 6, 46,194, 62,251, 27, 17, 59, 62, 33,119,133, 29,191, 67, 68, 94,
- 36, 58, 37, 84,232,249, 29,146,216, 85,252,125,243, 22,159,248, 13, 50, 5,173,100,106, 39, 35, 19,236, 50,196,111,152,231, 42,
- 21, 45,249,188,169,144, 81,241,181,143,103, 76,199, 5,203, 77,205,253,131,219,180,214,226,189, 69, 9,193,182,107,232,108, 71,
-109, 91, 70,166, 68, 75, 69,227, 90,140,209,108,234, 26, 23, 98,227,228,214,203,180, 42, 72, 26, 80, 19, 98,241,216,247,255,215,
- 41,191,216,136, 56,189, 15,134, 62, 69,106, 0, 74, 19, 37, 62, 14,180,214, 88, 23,179,199,251,224, 81, 1, 28,158,173,117,228,
- 82,196,126, 78, 7,218, 54,254,253, 94,193,214,245,180, 2,154, 62,196,239, 19, 2,215,135,221,218,104,216,239,119,110, 87,200,
-135, 93,186, 52,137,149,191,127,221,211,179, 49,144, 0,131,123,254,249,120,153, 70,255,101,207,158, 41, 34,169,103, 82,210, 42,
-201, 72, 72,182,120,148,117, 80,119,172, 54, 61,110,152,158, 63,181,243, 86,112,239, 22,191,115,112,139,147,178,228, 40,203, 81,
-125,199,105,187,164,191,186,126, 57,252,190, 47,115,235,218,196, 91, 72, 4,189, 44, 49,137,133, 73,133,125, 88,229,228, 96,235,
-120,144,233, 9,248, 14,209,217, 68, 94,141,123, 75,209,219, 88,208, 1,225, 4,130,192,251,218, 83,168,146,101,151,130, 58,188,
-229,160, 50,220, 27, 79,185, 91, 76,184, 51,153,114,116, 56,195,110, 91, 52, 18,217, 6,228, 36, 71, 30, 22,136,204, 32,140, 36,
-108, 28,118,219,210,103, 10, 39, 3,173,146,180,174, 71, 5,143,200,242, 68,230,142,197, 79, 25,131,197, 99, 16,100,121, 70,223,
-212,228, 38, 67,133,192,214, 7,166,166,136,236,118, 91,115,222, 89,124, 8, 4,163, 8, 70, 18,186,158,224,122,112,155, 72, 58,
-108,219, 20,140,178,199, 25, 34,133,251,236,107,246, 63,103,242,253, 44,255,118,113, 3,203,119,124, 92,111,249,127,175, 26,254,
-100,221, 48, 22, 22,211,246,204, 60,140,149,100,237, 29, 91, 41, 88, 3,155, 16,232,203,140,181,209,252,227,163,138,127,123,247,
- 54,191,121, 50,229,247,238, 31,113,160,224,189,167,215,136,235,107, 16, 42, 42, 19,202,152, 96,121,127, 82,240, 91,243, 3, 94,
- 59,186,205,225,116,198, 59, 69, 78, 63, 42,147,178,196,164,231, 81, 68,199, 78,147, 71,101,199, 40,231,232,254, 9,181, 44,118,
- 12,242,180,102,186,176, 61,206, 40, 50, 37, 17,105, 53,211, 7,139,117, 13,235,245, 53,206,183, 52,173,101, 45, 37,200, 60, 34,
-135, 38,173,112, 94, 66,230, 19, 9,121,227,246, 93,126,239,123,223,229,215, 31,188,197,236,112,194,147,247, 63,129,174,229, 48,
- 15,212,155, 58, 66, 33,117,183, 51, 75,106,109, 10, 17, 75,207,173,142,175,241,219,153,230,159, 76, 42,114,149,225, 67, 32,147,
-154,198,247, 20, 82, 34,165,225,195,166,166,150, 3,243, 93,199,231, 86,153,228,201, 48,212,158,244, 78, 9,187,131,223, 93, 26,
- 29,153, 26,155, 0, 0, 32, 0, 73, 68, 65, 84,148,134,103,124, 88,207,217, 16,125, 71,134,144,153, 95,186,168,223,192,186,105,
-234,217,183,110,237, 82, 55, 17,210, 1,109,221,243, 22,146, 95, 4,129, 15,211,160,150,187,144,148,191,237, 41,125,144, 62,137,
-116,160,119, 14, 49,159,112, 50,154, 96,116,148, 55, 9, 41, 88,174,150, 60,188, 94,113,118,189, 66, 10, 65,232, 18,177,105, 29,
- 73, 37, 40, 25,229, 66, 82,199, 41, 61, 87, 20, 90, 16, 66,212, 46,215,157, 99,217,180,112,185,137,172, 85,109,160, 44, 57,156,
-148, 76,117, 65,150,151, 55,147,228,214, 53, 60, 58,189,128,103,105,143, 62, 20,243, 87,189, 20, 38,221,212, 46, 93,119,159,116,
-143, 65,237, 96,112,201, 30, 26,194,110,194,222,159,212, 7,199,190,161,195, 22,201,252, 32,176,211,128, 91,151,120, 8,114,167,
- 77, 30, 38,255,228,151, 30, 67, 59,210,191,181,159,119, 63, 76,238,222,167,195, 59,193,244, 58,199,101, 57, 71,101, 73,221,119,
-120,111,169,178,130,166,107,145, 74,179,105,214, 8, 25,144, 66,225, 66, 96,100, 74, 16,129,105, 89,113,185,190,230,234, 98, 17,
-167,194,190,141, 93,123, 72,114,181, 97, 82, 31,200,150, 50,165,233, 13,196,189, 96,210,207,145,140,142, 18,226, 2, 1, 33, 37,
- 69, 46, 89,119,142, 44, 37,172,181,189,199,139,184,187,213, 54, 68, 20, 47,153,195,213, 30, 90,235,169, 93,192,134, 64, 41, 37,
-117, 99,119, 5,122,144,209, 89,151,174, 91,250,255, 82,238, 53, 93,114,151, 27,190,111, 8, 50,178, 77,220,167, 11,251, 60,105,
-114, 63,110,241,197,102,249,197,134, 45,151, 81,122,153, 69,148,165, 9, 32,165,228,162,238,113,189,163, 91,109,226,123,248,178,
-137, 91,101,112, 48,231,222,116,198, 97, 94,208,216, 30,131,231, 23,171,107,220,179,243, 47,110,194,123, 11,181,139,242,182, 76,
-241,221,201,132,127,117,231,152,223, 62,153, 80, 77,114, 62, 57,191,142,215,196,167,179,228,224, 54,223,251,254,183, 57,253,224,
- 35,132,204, 35, 4, 63,236,102,149, 68,120, 3, 94, 34,219, 53,210,197,233,237,161,114,156,231, 21,149, 11, 28,224, 57,153,142,
-120, 99, 52,225,173,195, 67, 14,198, 19,242,188,192,123,203,229,163, 51,114, 43,208, 85,158, 12,142, 98, 20,175, 95, 54,216, 77,
-205,170,169,177,163,138,144,101,212,206,211, 43, 77, 16, 10,163, 13,189,179, 40, 41,177, 65, 48, 26,141,240,206,199,251,116, 60,
-194,117, 61, 2,184, 93,141,217,118,150,177,201,176,161,103,140,227, 81,219, 17, 66,192,107, 77,200,116,100,104, 55,237,141,214,
- 63, 22,224, 93,118,252,238,243,206,112,236,197,255,126, 49, 70, 85,124,206,215,110,204,187,234, 45,118,179,229, 39,171, 45, 7,
- 4,250,166,193,118,150, 32, 4,139, 0,219,204,112, 17, 4, 87, 30, 10, 99,248,245,106,194,221,114,198,215, 38,199,220,159,156,
-144,151, 25,118, 94,240,112,221,195,250, 42, 14, 41, 78,192, 40, 99, 84,102,124,111, 58, 67, 41, 77,231, 3,191,232, 45,219,214,
- 66,101,162, 74,104, 58,130,131, 57,156, 28, 69,251,225, 91, 71,252,219,111,191,193,247,143, 79,248,221,215,239,225,230, 5,143,
-201, 99, 67,115,124, 12,101,206,166,200,168,148, 38, 8,193, 73, 89, 97,189,195,120,207,114,179,102,221, 89,148, 20,148,185, 70,
-151, 57, 77, 94,194,252,144,252,181, 55,112,119, 95,131, 78, 65,150, 12,140, 32,114, 0,180,225,187,223,254, 58,199, 7, 39, 16,
- 60,214,100,124,114,246,148, 25,150,197,114, 27, 39,225,122,147,160,251, 62,170, 60,250,193, 71, 33,236, 46,106,240,188,153, 25,
-190, 89,142,147,167,137,130,224,240,222,161,164,102,211, 55,180,194,242,164, 75, 89,225,153,137,208,250, 96,231,236, 99, 17, 23,
-200, 72,161,113, 50,161, 79,105,189, 98,221,243,178,212,126, 72,192,235,190, 82,109,124,121, 81,151, 9,114,240, 41,142,210,217,
- 88, 64,250,189, 3,157,193,206, 85,236, 32,132, 87, 49, 46, 25,224,145, 23,141, 84,254, 54, 63, 6, 9, 85, 16, 17, 10, 65,176,
-200, 12, 85,150,113, 52, 46, 16,194,227, 29,156, 95,175,248,139,119,222, 5,209, 71,178, 19, 62,193,166, 77,116,197,154, 23, 73,
-222, 16, 51,166, 67,136,249,188,189,119, 52,189,163,111,250,216, 93,173,151,177,216,141, 71,140, 39, 35,170, 66, 35,241, 72,109,
-232,250,150,198,121, 30,158,157,179,125,122, 26,247, 67, 55, 59,152, 47, 67, 54, 84,177,248, 26,177,131,151, 3, 59,223,224, 97,
-160,147, 67,214,252, 75, 60,212,247,247,238, 67, 83,224,210, 62, 87, 14, 76,204, 68, 38,115,118, 23, 30,162, 19,188,173, 19,243,
-220, 13,161, 58, 58,194,197,168, 4,127, 37,191, 99, 37,118,118,166,129,104,252,211,247,244, 65,208,107,133, 32, 36, 55, 88,135,
- 11,142,197,118,129, 68, 82,234, 17, 74,104, 50,173,144,194,160,165, 98,219, 52, 76,139, 17, 15,183, 75, 56, 59, 75, 39,153, 77,
-123,252,253, 2,153,224, 46,103,119, 28, 2, 51,200, 26, 37, 84,229,243, 9,100, 68,166,115, 7, 49, 80,195,122,156, 11, 88, 5,
- 5,113, 98, 19, 30,172, 8,224, 3,181,247, 4, 33,232, 83,163, 42, 9,172,187, 97, 23, 42,246,228,107, 73, 70,166, 84, 60, 68,
- 92,159,252,207,137,178, 60,215,236,244,222,174,143,215,175,235,119,201,102,251,176,251,231,125,188, 8,161,143,170, 72,230, 73,
- 54,187, 78, 42, 90, 27,125,216,221,166,129,235,197,103, 63,123,194,195,108,140,171,170, 36,253,213,188,187,186,228,252,242, 50,
- 54,172,175, 18, 10, 50,228, 59,204, 39,252,193,157, 99,114,169,152,149, 83,156,235,121,167,238, 83, 80, 82,186,103,182,215,156,
-126,242, 48, 53,160, 18, 49,196,200, 14,211,122,232, 17, 65, 34,115,137, 8, 22,105, 5,178,105, 9, 42,144, 9,193,189, 81,198,
-131,106,202, 91,243, 25,147, 34,163,154, 69, 51, 21,223, 67,215, 56,214,151,231,140, 84,142, 57, 24,199,251,196, 65,216, 90, 66,
-211,227, 69,160,147,158,173, 20,184, 98,132, 77,220,146,218, 91,132,140, 33, 63, 69, 53,194,217, 30,161, 20, 89,150,209,214, 45,
- 50, 8,100,102,240, 65, 80,100,154, 77,239, 57,206,198,116, 90, 98,125,195,179, 46, 74,187, 66, 12, 5,136,164, 68, 27,207,148,
-151, 21, 99,249, 25,159,191,204,175, 23,167,248, 0, 4, 31, 97,255,159, 45,150,124,220, 89,124,211,210,246, 14, 39, 2, 87,222,
-114, 42, 37,207,132,100, 94, 26,222,210, 25,119, 70, 51,148,202,208,198, 96, 76, 73,171, 13,125, 33,185, 80, 89, 92, 25, 92,175,
- 97,121,197,166,243,188, 94,106,148, 84,156,246, 29, 63, 90, 44, 19,139, 59,233, 75, 85, 90,221,142, 51, 80,138,217,100,204,247,
-102,135,220,169,102,140,203,138,172,200,120, 71, 73,220,120, 12,183, 79,152,222,127,147, 81, 81,130,146, 84,192,131,201,140,147,
- 81,206,196,104, 46,250,134,218, 57,148,214,228, 66,162,165, 96,148,103,252,240,183,254, 41,255,234,159,255, 62,255,236, 55,190,
-199,209,252, 62,106, 62,166,155, 29,211,118, 93,146,230, 26,206,188,226, 27,135, 83, 68, 86,209,109, 87,124,252,240, 9,237,242,
-154,233,184,164, 93,247,233,249,232,161,109,201,180,194,109,183,209,178,185,237, 83,141,139,199,217,177,210,188, 53,202, 24,201,
-140,222,181,145, 65, 79,160,237,123,150,222,242,151,203,134,237,224, 60,103, 20,163, 42,167,207, 75,200,116, 76,203, 19,137, 43,
-129,223,157, 73,128, 8, 33,254,250, 21,214,193,151,159, 20, 34, 81,248,135,201, 92,232,221,132,190,109, 34, 57, 34,193,100,251,
-142, 61, 55,196,160,127,136, 31, 42, 77,216, 50,197,172, 62, 89,178, 58,217,176,221,108,153,140, 15, 33, 52, 56,219, 36, 82,194,
- 62,155, 60, 29,252,147,113, 60, 36,203,148, 50,119,179, 71,108, 99, 45,238, 45,172,183, 41, 35,126, 7,127, 74, 13,193, 7, 86,
- 93,207,246,234, 20,135,100, 81,119,172, 47,215,176, 90,127,177, 27,222,103,153,233,244,169,233,232,147,214,193,200,228, 91,239,
-227,207,200,144, 78,150,194,105, 20,187,223,219,189,162,190,109,118, 83,184, 75,123,244,125, 97,113,219,196,212, 51, 33, 99,193,
-217,191, 23, 94, 28,216, 84, 42,252, 55,221, 73, 6,165,136, 83,103,122, 73, 56,189,155, 84,251,150,101,219,146,101, 26,183,245,
-132,205,154,233,120, 12,214,115,114, 56, 5,160,204, 75, 50, 99,112,125,143, 50,121,220,165,251,134,215,230, 21, 15,191,254, 38,
-188,255, 65, 12, 48, 81,123,124, 4,217,199,127, 71,217,231,175,111,219,237,146,200, 26, 27, 73, 92,222,199, 48, 17, 37, 33, 3,
- 45, 4, 77,231,208, 72, 86,193, 83, 32, 88, 16, 8,206,115, 32, 5, 54, 4, 46,251,158,137,138,141,192, 38, 65,209,197, 16, 64,
-228,247,166,213,129,108,227, 93,130,223, 19, 15,194,166,130, 23, 92, 34,246,245,207,255,153, 23,255,251,171,248, 19,232,228,136,
-149, 26, 22,186, 62,194,224,214,237,174,255,103, 54, 8, 22,206,174, 57,157, 95,112,234, 61, 44, 47,226, 52, 3, 80, 8,120, 85,
-197,229,102, 5,171, 45,109,215,115, 50, 61,100,221,183, 60,209, 49,171, 30,167, 65,118, 59, 18,163,200,227,251, 54,232,117,189,
-137,208,252, 80,156,148,197,123,131,207,193,119, 29,254,236, 17,206,247, 60, 10, 61, 63,152, 85,228,128, 81, 2,157,105,100, 46,
-200,171, 10,151,107,176, 61,107,215,177, 92,109, 80,143,174,201,239, 76, 99, 19,234, 60,106, 86, 48, 42, 2,186,201, 41,187,146,
-243,229, 53, 11,105,233, 61, 28,143, 39,204,110, 29,162,148, 36, 88,104,183, 45, 25, 1,219, 89,132,136,136,157, 17,130,186,109,
-168,138,156,215,230,135,252,199,235, 83,166,121,201, 55,111,189,206,149,123,194,199,109,131, 32,139, 69,247,238, 93,184,188,138,
-171,182,182,123, 57,116,254, 57, 5,250,121,146,156,190,121, 78, 69, 90,231, 8,187, 99,165,135,255,159,186,247,108,178,236, 58,
-239,253,126, 43,237,112, 98,199,153, 1,102, 6,145, 0, 73, 48,136,162,168, 72,221,171,171,107,189,176,222, 58,125, 5,127, 13,
-126, 26, 87,185, 92, 46,135,178,101, 91,117,203,215,165,146,117, 45,139,162,196, 32, 6,136, 4, 48, 4, 6,192,204,116, 58,113,
-135,149,252, 98,173,221,231, 76, 34, 2, 85,186, 86, 87,117,117, 79, 79,247, 9,123,175,181,158,244, 15,207,248,155, 8,124,176,
-217,240,254,102, 67,216,108,152,108, 74,142, 70, 35,220,116,204, 47, 85,193,151,116,137,174, 11,106,161,232, 8,180, 33, 49, 20,
-218,224,168,139, 17,119, 15, 61,247,164, 72,190,237,139, 53,108,123,254,135,239,253,132,232, 44,232,241,117,155,154, 73,149, 20,
- 44, 67, 62,127,214, 61, 76, 71, 40,210, 56, 78, 41,131, 20, 2, 41, 52,183,170, 49,247,104,161,158,208,121,203, 97, 61, 66,199,
-200,237,233,152,219,179, 17,181, 81,172, 27,205,173,110,198, 74,104,240,150,224, 18, 30,228,197,217, 17,175,188,124,151,111,188,
- 54,199,148,154,155,199, 37, 55,223, 62,164,111, 54,252,183,189,163,251,240, 62,194,247,196,237,138, 11,111, 57,242, 61,147,170,
- 98, 50,159,178,110, 91,150, 87, 93,214,108,224,122,150,221,111,219,221, 57, 65,155,102,235, 19, 7,182,226, 3,161, 57, 31,111,
- 24,141, 21, 71,166,102,101, 27,162, 15, 56,224,157,102,203, 89, 8, 40,169,168, 43, 69, 37,210, 40, 86, 86,145, 77, 35,210, 88,
-176, 80,233,188,183,221,206,203,163,123, 90,123, 63,254, 42, 64,244, 62,117,248, 83, 87,234, 3, 8,167,200, 21,143,207, 51,219,
-224,115,133,222,166, 67,113,219,238,108, 81,201,135,214, 64, 33,250,231,212, 18,127,242,141, 63, 15, 60, 36,101, 58,228,116,238,
-155, 18,224,104,204,239,188,126,155,155, 39,199, 76,231, 37,149,209,156, 28, 30,240,225,229, 57,171,237, 22,101, 20, 81, 12,109,
-232, 68,237,160, 46,118, 82,152, 42,139, 4,172,123,216,108,224,106,155,248,200,109,127,141, 58, 86, 35,195,200, 40, 68,148,108,
-189, 99, 99, 3,103, 77, 67,127,149,231,237,155,203,207,119, 96,171,189, 46, 10,131, 82, 87,110,221, 26,147,237, 70,243, 2, 40,
- 51, 21,101, 24,228,201, 61,158,113, 36,123,210,199, 4, 2, 52, 38, 5,222,174,221,177, 20,164,220,241,106, 10,185,107,185,135,
-144,103,167,123,115,173, 48,120,162, 15,200,238,140, 54,247, 49,207,239, 67, 66,123,186,252,243,110, 11, 33,176,237, 44,203,190,
-103,213,247,148, 74,115, 52,155, 81, 21, 21, 39,179, 99,140, 81, 72,161,209,101,129, 16,146,217,120,130,115, 61, 35, 93, 80,170,
-200, 5,106,103,149,232,251,244,248, 62,163,137,221, 51, 58, 65, 74,238,168, 42, 3,208,188, 48,100, 88,123,154,102, 40,137, 37,
- 94, 23,212, 32, 17, 49, 38, 45, 23, 18,117,205,121,207,101,219, 81, 85, 26,215,123,182, 54, 80,228, 45,115, 13,148, 27, 40,108,
- 3, 86,193,251, 92,197, 59,210, 48, 88,236,130, 88,239, 30,167,118, 62,171,195,245, 60,205,251, 39, 55,122, 53, 74,126,230,227,
- 50, 37,120,101, 6, 8,250, 60, 11, 63,187,252,100, 7, 40,111,179,177,142, 72, 93, 42,107,147,167,192,114,243,233, 19, 81,159,
- 16, 74,221,164,230,131,222,241,253,182,227,103,155, 54,237,167,102, 11, 62,139,110,168, 36, 49,122,173, 43, 32, 67, 66,194, 83,
-164,239,243,216, 68,208, 35,131, 70,184, 6,169, 42,148, 23,168,222, 18,101,224,181,217, 41,199,166, 96, 50, 27, 99,180, 68,150,
- 26, 85,106, 34,130,162, 46, 89, 44,150,232,141, 69, 7,129, 84,105,223,248,182, 71, 40,129,170, 53, 69, 81, 50, 50, 37,149, 48,
- 8,161,185,117,231, 6,245,193, 24,115, 56, 70, 24,141, 18, 26,239, 34,182,115,200,210, 16,188,199,197, 64, 81, 26, 90, 31,104,
-251,150,117,132,214,148, 52,192,168, 52,188,183,110, 8, 50, 18, 11,147,206,139,201, 24, 84,129,240, 1,185,234, 17,217, 65, 55,
-239, 32,212,245,167, 70, 37,136,223,222,103, 72,191,227, 65,150, 5,210, 8,164, 18, 72,145,212, 48,165,247, 79,183,225,247, 43,
-246,253, 79, 47,232,172,227,114,221,176, 88,246,196,182,227, 81,140,252,198,116,204,161, 54, 76,234, 9, 0,239,180, 27, 46, 92,
-199,199,125,207, 54, 6,122, 17,113, 66,195,225, 12, 38, 35,226,100, 2,179, 89,218, 71,171, 38,105, 30, 92, 44,211, 26, 57, 63,
- 75,126, 20, 34,209, 21, 27,160,150,142,185,210,180,206,114,101, 59,254,106,181, 77,123,161,168,185, 51,154, 50,146,138, 50, 6,
- 94,158,140,152, 40, 73, 89, 40,188,130, 94, 40, 62,180, 14, 87,150,212,166,194, 17, 25,153,146, 55,191,240, 50, 7,211, 17,109,
- 31, 48, 72,182, 54, 34,162, 68, 19,249,229,250, 42, 61,119, 81,114,235,228, 16,163, 10,122, 4,239, 93, 93,225,151,103,153, 97,
- 16,210,243,219,236, 36, 24,158,156,207, 39,227, 33,164,166,233,123,126,218,123, 94,174, 36, 70, 68,122, 31,232,188,231,157,126,
-195, 79, 54, 61, 27,239,145,217,151, 69,163, 16,165,160,245, 36,165, 65,145,217, 35, 82,165,241,168, 16,121,236, 41,114, 49,229,
-159, 15, 42, 44,139, 84, 84, 85, 38,237,199,161, 91,250, 43, 42,251,199,131,186,148, 48, 58,132, 98,154,128, 14,163, 81, 86,184,
-146,201,122,174,168, 18, 34,215, 84,169,202, 40,244,110, 46, 54,104,214,126, 30, 78,237, 63, 69, 48, 31, 14, 55,249, 12,125, 94,
- 85,236, 29,230,164,139,116,115,204,183, 94,189,205,168, 30,209,181,129,186, 42, 80, 50,112, 88, 76,248,104,181, 96,219,111, 81,
- 50,166, 24, 88, 40,162, 86,200,202, 32,164, 76,168, 73, 31, 97,217, 38, 95,246,197, 26,150,217,159,125, 86,167,235, 54,174, 48,
- 38,205,147,173,247,248, 0, 27,239,211,225,237, 61,172,206, 63,123, 53,166,115, 23, 37,184, 93, 94, 39,217,179,161, 53,105, 30,
- 99, 76,230, 71,154, 28,108,217,161, 57, 7,224,154,209,121, 54,170,211, 74, 68, 67,200,153,234,224,152, 23, 99,170,160, 66, 76,
-139, 63,100, 10,214, 0,138, 51, 58,183,189, 51, 35, 32,100,107, 77, 93,236,230,251, 42,238,130,103,148, 89,191, 63,183,166, 93,
- 82,251,162,235, 97,181,133,208,179,145,154,227,233,148,195,106,204,108, 58,197,123, 79, 89, 22, 40, 41, 24, 79, 38, 56,107, 9,
-193, 98,187,158,178, 40, 8, 42,178,106,186,244, 6, 93, 72, 45,238,190,123,254,104,199,251,188, 49, 34, 96,114, 82,147,121,236,
- 25,131, 16,131, 39,202,152,198,219, 49,210,245, 14, 39, 99, 50,112,241, 17, 27, 28,141, 15, 76,180, 98,219, 88, 10,163,114, 52,
-207,231, 68, 8, 59,228,255,208,245,232,236, 30, 74, 63, 38, 0,159,103, 39, 60, 33,194, 39,239,157,231, 5,245,199, 70, 42, 21,
-220, 60, 74,201,247,168,230,141, 73,193,177, 54,212, 81,112,164, 21, 55,100,224, 98,185,250,228,181, 39,196,142, 2, 26, 99,154,
-237,111, 59, 88, 52,159, 92,233,239,239,205,174,227,170,141, 60, 10,145,141,202,215,223,147,170, 32,187,190,166,179, 37,212,176,
- 73, 65,222,107,132,235,147, 0, 77,238,128,136, 40, 17, 42, 38,122,155, 8,200,114,130,244, 61, 50, 68,214,209,115,103, 82,113,
- 84,205, 24, 41,141, 86, 18,169, 20, 33, 6,212,164,196, 90, 79, 64, 96, 53,244, 23, 43,100,231, 8,173, 69,212, 6, 57, 41,137,
-214, 35,141,166,156,212,140,203, 17,243,217,148,234,116,134,158, 84,168,113,133,170, 12,193, 6, 90,235, 16,133,196,134, 64, 80,
-146, 32, 37,141,247, 4, 33,184, 10, 30,163, 20,235,174,163, 51, 6,173, 43,222, 58, 57,230,230,184,230,168, 54,220, 28, 25,254,
-139,219,183,248,175, 95,191,203, 91,167, 35,254,106,213, 34, 93, 64, 6,119, 29,204,245,240,213,104,180, 82,104, 37, 51,222, 80,
-160,188, 71,121, 80, 74,163, 42,185, 75, 4, 4, 40, 41,144, 49, 33,224,229, 94,235,254,233,106, 93,167, 22,122, 78,110, 35,145,
-216,103,157,254,117,199,182,138, 8,111, 57,179, 13, 87, 81,240,113,223,114,207,182,108,172,229,178,105,137, 66, 98, 51, 59, 70,
-214, 21, 98, 52, 34,102,103, 63, 70, 21, 84, 21,163,233, 4,187,216,100, 91,209,144, 40, 89,139, 45,244, 61,247, 31, 92,242,221,
-143, 30,112,213, 47,249,139, 95, 62,130, 15, 62,204,235,106,205,202, 54, 84,125,143,176, 13, 69,136,204,140,194,134,192,186,109,
-249,225,229,154,141,212,248, 24,145,198, 32, 84,193, 89,215,113,103,114,200,205,185,193, 89,199, 98,213,177,117,160,181,132, 62,
-242, 96,253,136,237,102, 11, 77,195,225,193, 17, 33, 70,186,190,227,131, 95,188, 11,155,101, 46, 90, 51, 8, 85,239,241,204,159,
-220, 87, 33,183,203,183, 14,175, 4,127,223,118,252,223,151, 43,222,110, 59,254,118,189,225,199,139,150, 77, 76,116,213, 66,194,
- 76,107,186, 24,136, 66, 38,207,166, 97,236, 27, 19,173,247,200, 20,180, 18, 94, 61,152,112, 37, 76, 22,235, 82, 59, 9,229,167,
-138,184, 12, 52,237,243,226, 16,207,176,133,125,110,251, 93,235,164, 62, 53, 59, 76,243,218,168,178,218, 85, 1,151,151, 80, 5,
-104, 87, 80, 78,210, 28,216,100,126,162,201,237,216, 65,217,203,185,127,222, 10,125, 95,201,108, 16, 81, 25,254,237,220,222, 91,
-204, 78, 56, 58,253,205,203,211, 81,166, 77, 70,170, 66, 98, 10, 77,111, 35,101,110, 87, 42, 4,165, 0,105,210,251,178, 22, 98,
- 70,236,247,214,165, 96,212,183,169,165,178,204,193,112, 86,229, 89, 82,170, 88, 61, 17,105, 10, 68, 76, 7,100, 41, 3,157,144,
-159, 13, 16,247, 36,128,201,183, 32,170, 76, 83, 11, 59,174, 56,164,255, 43,178,232,193, 53, 90, 61, 47, 6,159, 91,244,251, 90,
-223,229, 36,161,229,251, 12, 98, 11,213,110,132, 50,140, 86,182,171,180, 97,125,174,194,237,240,213,237, 84,232,174,171,203,225,
-189,245,233,185, 6,235,207,184, 55,103,133,221, 8, 71,230,182,179,203, 86,179,155,158, 48, 25, 97, 2,196, 24,233,156,163, 42,
- 43,132,148,232, 34, 85, 71,169, 59, 22,249,222,131,247,248,218,233,109,198,198, 80,158,206,233,174,214, 57, 97,202,175,223,254,
- 10, 43,211,216,166,128, 14, 73,176,162,202,107,196,231,235, 84, 25,176, 73, 60,100, 8,202,222,122,218, 24,169, 60,120, 25, 48,
- 14,214, 46, 80,105, 65,231, 82,160,170, 76,106, 26,116, 42,111, 82,163,119,216,145, 65,203,125, 16,224, 24, 2,163, 54,169,253,
-238,229, 39,143,175,246,247,214,222, 82,127,172,139, 51,159, 51,159,212,152,217,136, 27, 82, 49, 51, 5, 91, 23, 49, 37,168,224,
-241,189,228,213,227, 99,222,221,222,255,228,231, 90,183, 48,233, 82,162,164,115,199,174, 72,157,201, 79,189, 55, 71, 85, 74, 96,
-203, 92,150, 78,138,212,241, 58,157,165, 91,112,113,158, 76,101, 84,149, 70, 40,195, 45, 42, 52,194,107, 34, 14,130, 33, 42,155,
-243, 66, 75, 12, 37,193,247,248,178,198,105,133,125,180,228,127,253,209, 15, 24, 71,193,188,252, 58, 82, 41, 60,130,114, 84, 16,
-123,143,152,214, 8, 31, 88,158,175,112,210,114,255,195,123,140,100,228,120,118,202,232,116,142, 26,151, 72,153,199, 2, 35, 65,
- 57, 31, 35, 39, 73, 57,113, 16, 67, 9, 66, 18,163,192, 75, 73, 52,208,228,110,148,170, 20,155,117,147,192,103,120,212,168,100,
- 46, 13, 55,162,163,139,145, 98, 58,227,197,245,134, 66, 27,254,112, 62,162, 38, 80, 86, 83,126,183,151,124,247, 23, 31, 49, 61,
-158,208, 54, 13,210, 6,102, 64,211, 89,164,117, 72,231, 17,131,135,183,183,215,103, 91, 52,250, 41,206,122, 28,130,180,123,188,
- 34,223, 63,102, 2, 26,177,223,226,181,225,122, 1,197, 46,161,191,127,252,119, 11,126, 60,159,115,251,246, 41,107,161,185, 49,
-155,242,113,150, 22,142, 49,178,237, 60,197,184,192,201,196,124,153,148, 21,109, 76,235,254,173,219, 55,121, 57,118,244, 93, 79,
-123, 52,226, 7, 77,195,253,143,174,146,184,141,112,176,190,202,186, 74,129,183,239,127,176, 91, 35, 75,141,248,210,239,242,202,
-228,144, 27, 85, 5, 97,195,213,102,201, 61, 21,144, 82, 17,130,231,170,233, 81,170, 96, 90,214, 9, 15,101, 45,181,144,108, 62,
-190,207,189,197, 21,181, 52, 92,184,192,228,245, 87,137,165,230,206, 75,183,248,250,242, 85,254,207,243, 5,156,159,241,227,255,
-231,175,119,103, 90,183,217,139, 25,123, 4,132, 95,245,209,245, 96, 2, 92, 56, 88,151, 48,174,185, 88,101,141,249,124, 78,170,
- 73,141,138,129,149, 11,140, 74,205,186,203, 12,161,222,131,134, 63,157, 86,220,136,145, 57, 0, 19,188, 13,124,124, 56,227,127,
-218, 58,220,162, 77,137,198,106, 5,182,223,141, 81,202, 34,157, 83,195,248,146,140,103,178,242,217,251,255,169,160, 62,170,161,
- 58, 74, 30,211,202, 64,219, 38,190, 92,211,193,252, 16,232,147,137, 70,183,222,205,212, 11,189,155,185,199,161,141,246,252,172,
-125,244,123,191,201,246, 47,255,230,159,190, 82,223, 63, 68,158, 2, 20,237, 81, 70,100, 62,200, 85,207,189,143, 23,124,243,238,
-150, 48, 58,194,148, 6,169,161, 82, 37,127,241,179,159,112,241,241, 5, 24,216, 22,145, 73,126,188,170, 84, 88, 11, 91,151, 57,
-199,235, 38, 85,231,203, 54, 7, 69,153, 40, 68, 70, 64,165,174, 27, 33,135,229, 4, 41, 21,198, 84,124,184,186,160, 27,120,202,
-101,190,198,159,229,163,235, 83, 59, 38,132, 29,143,220,134,157,242, 16,213, 14,160,228,119,221,249,148,190,231,223,209, 58, 97,
- 3,122,191,211,229,222,191,143,251, 12,135,144,175,239, 48,243,244,121,152,106,115, 0,241,215, 15,158,231,237,114,151, 64,120,
-210,154,105,114,102, 41,121,188,109, 59, 24,124, 40,185, 75, 70, 10, 13, 10, 44, 29,202,104,182,237,134, 24,234,235, 68, 11, 2,
- 90, 73, 74,173,248,202,233, 75,156,175,175,168,202,146,170, 50,116, 70, 38,228,109, 40,210,252,248, 87, 1,180, 29, 36,162,249,
- 54,137, 60, 12,243,238,125,205,250,152,223,155,221,105, 11, 7, 45,104,101,100, 82, 21, 20,170, 96, 28, 60,155, 69,131, 34, 49,
- 65,186,144, 94, 66, 73, 96,217,248, 29, 62, 33,207,223,177,185,171, 97, 51,142,161, 8, 89, 53, 46,139, 79, 12,207,253,105,242,
- 98,247,236,237, 60,159,106,166, 85,133, 50, 21, 7,165,129, 24,152, 25, 77, 99,123,250,206,115, 96, 52,141,240,105, 15,111, 63,
-197,250,243,238,154,198,132, 54, 41,153,103,245,233,246,165,219, 75,178,182, 93,186, 56,190, 72,227,142, 16,161,236,161,154,130,
-111, 82,133, 46,202,204,166,113, 59,140,134, 15, 48, 4,116, 61, 38,244, 27,194,168,194,175, 86,120, 52, 78, 68,172,208,172, 31,
- 93,241,243,135,239,115,123,118, 3, 93, 24,154,222, 49, 37, 75, 21,228, 60,164, 45, 4,155, 94,115,142, 35,108,183,196,139,143,
-185,249,209,132, 55, 94,124,153,233,139, 39, 40,173,209,227, 26, 66, 68, 42,149, 26, 43, 14, 92,227,104,215, 45, 91,235,176, 26,
-202, 66, 16, 85, 66,199,111,108,160,169, 10,150, 33,208,136, 72, 20,130, 3,231, 56,247, 18,175, 21,119,170,130,143,199, 83,140,
-243,216, 58,141,227,206,163,230, 91, 95, 62,228,171, 95,145,184,109,131,116, 61, 70,194,213,242,146,166,219, 98,131,231,195,135,
- 87, 64,199,197,253, 13,162,185,132, 62, 57,183, 69,155, 58,165,241, 58,168,167,196, 39,118,253, 83,193, 60, 15,161,174,191, 62,
- 89,185,139,189,200,112, 61,105, 90, 44,184,191, 88, 16,181,230, 74,215, 48,170,146,217, 75, 85, 18,181,162,111, 96, 52, 29,131,
- 82,108,130,165, 22, 37, 55,149,228, 75, 70, 50,215, 71,120,181,165, 24, 31,160, 23,103,220,111,129, 81,155, 40, 99,155, 54, 3,
- 65,247,248,235,166,128,187, 95,229, 63,253,218,183,153,207,231,244,155, 5,203,205, 61,188, 92,114,149,215,230,214,245, 72,111,
- 49, 42,233,183,107, 83,177, 14,150, 27, 66,112,203,119,204,154,128,213,134,211,114, 68, 37, 60, 23, 34,221,243,131,201,140, 98,
- 60,162,211, 25,219,241,228,188,250,186,232,251,148, 31,214,237,144,241, 77,147,240, 42,166, 74,103,189, 41,241,139, 13,219, 74,
- 49,171,107,154,222,161,180, 98,107, 19, 45,238,182,128,113,140,252, 70, 89,177,142,158,169,208,168,169,225,101, 4,219, 81,207,
- 15, 15,231,124,112, 49, 78, 74,114, 15, 30, 36, 87, 78,178,169,206, 16, 83,226, 94,241,179,143,139,122, 6,142, 34,181,223,181,
-134,233,113, 82,178,137,234, 90, 78, 83,169, 50, 89,244, 9, 1,109,200, 64, 22,153,103,234, 67,213, 88,164,202,103,208, 7,127,
- 94,251,240,206,171,124,251, 43, 95,229,189, 77, 3, 87,151,255,116, 65,125, 64, 85, 15,179,244, 33,184,239, 43,166, 41,185,163,
-115, 9,153,130,203,166,229, 29,122, 94,157, 78,136, 81,210,181, 29,111,255,226, 29,126,252,224, 10,187,186,202, 66,254, 10, 31,
- 34,227,194, 16,137, 88, 1,190,115,176,202, 38, 23, 93,214, 27,150, 89, 29,107, 82, 66, 57, 74,149, 8,145,233,120,198,124, 50,
- 69,106,147,148,196,165,100,217,181, 9, 29,127,181,253,124,238,107,215,109,238, 28,177,245,158, 71,184,207,130, 47, 3, 86, 77,
-100, 69,181,125,183,175, 50,189,182, 84,121,229,175,214,165,164, 46,228,170,178, 24, 2,118, 76,156, 80,223,100, 26,154, 76,179,
-247,202,236,105, 20,228,150,187, 44, 51, 71, 62,209,213,112, 54,137,233, 12,226, 43, 79,182,139, 6,101,169,129,250, 54,206,244,
-150,201,152,121, 85, 34,163,192,135,128, 68, 34,181, 34,134, 64,239, 59,218, 77,139,139,142, 77,179,198,147, 90,218,222, 90, 86,
-157, 77,247,216,246,201,221,238, 19, 89, 24, 46, 37, 98,131, 36,164,139,169, 21, 63, 84,237, 66,237, 54,241, 32,149,155, 53, 34,
- 14,170, 26, 41, 2, 94, 40,182, 77, 79, 97, 36,133,140, 4, 23, 9, 33, 34,181, 76,222, 53,144, 42,187, 65, 18, 86,134,157,170,
-222,160,255,224,247,228, 98,241, 79,211, 14, 63,203,199,193,156,131,201,132,233,225,148, 88, 26,166,166,162, 84, 6, 71,146,190,
-221,246, 22,105, 91, 54,219,150,197,249,226,233, 32, 28,158, 16, 74, 24,149,112,122,196, 27, 71, 83,190,121, 56,226, 55,142,198,
- 28,141, 21,239, 63, 92,127,242,218,173,138,148, 20, 93, 91, 35,103, 63,133, 81,157,128,141,245,140, 59, 35, 67, 24,149,244,103,
-139,204,208,200, 30,240, 54,181,151, 68,200, 95,163, 76,237,120,225, 17, 65, 35,156, 71, 84, 10,164, 65,132,152,184, 9,126,203,
-253, 71,107,142,102,154, 89, 57, 71, 8, 77, 23, 97,211, 59, 54,109,207,202, 59,182,214,241,225,114, 69,231, 45, 23,221,134,243,
-126,197, 7,221,134,179,229, 57,114,213, 50, 63, 60,130, 16, 80,198, 16, 92, 36,246, 14,187,234,105,206,214,124,116,181,102, 25,
- 60,157,136, 56,163,176, 34,242,208, 71,186, 74,211, 6,216, 32,208,133, 65,121,143, 49, 10, 35, 36,174, 44,145,198,160,165, 0,
- 99, 88,233,130, 43,235,185, 50, 5, 97, 84, 35,141,161,200, 62,241,149,169, 40,117,193, 68, 26,222, 28,207,248,198,201, 93,190,
-124,248, 2,111,222,122,129, 77, 1,237, 38, 98,138,164,136,102, 32,201, 39, 3,134,128,182, 14, 29,194,117,251, 62,181,230,143,
-145, 52,215, 36, 24,129,124,110,102, 24,159, 53,207, 13, 1, 92, 79,108,182, 9,255,208,108,210,218,213, 26,155,233,204, 35, 83,
- 49, 82,145,215, 71,154, 3, 31, 24,107,133,209,154,166,111, 56,174, 70, 92,132,192, 69, 36,157,139, 85,153,214,131, 23,136, 66,
- 38,206,251,248,132, 63,248,189,127,203, 87,191,252, 26,135, 71, 53,101,169,105,214, 45, 62,108, 40,138, 18, 79,214,112,176, 22,
-225,114, 97, 28, 4, 50, 68, 42, 97, 57,213,201,120,201,147,204,149,238, 59, 65, 35, 53,171,117,203,249,213,130,127, 60,255,152,
-248,224,193,174,120,121,222,200,234,179,152,166,120,159, 37,178, 51, 53,181, 27, 24, 47,137,151,222,117, 22, 39, 36, 86, 12,179,
- 56,207, 23, 75,201,151,181,196, 10,193, 76, 40, 90,173, 56,208, 53,125, 81, 82, 85, 99,222, 67, 51,153,207, 88, 72, 9, 71, 7,
- 80,141,211, 94,240, 54, 83,222,114,102, 90,100,145,156,103,188, 31,241, 84, 80,175, 10, 56,190,157,104, 62, 38, 75, 21, 6,153,
-230, 45, 49, 5,183,228,103, 46, 97,187,200,115, 72,151, 90,243, 93, 6,207, 13, 92,220,231,125, 44, 46,121,239, 71, 63,250,167,
- 13,232,195,205,209,250,241,153,250, 48,155,188,238, 61,101, 85, 53,113,141,100,130,206,226, 47, 87,220,211,150,191,254,135, 95,
-240,183,127,253, 99,126,254,227,159, 96, 31,158,239,184,244, 64, 49,210, 20, 82, 18,144,200, 8,125,219,167, 42,207,219, 4,136,
-155,212, 41,200, 21, 89,216, 63, 59, 30,129,228,100,122, 68, 81, 84, 8, 4,101, 89, 96,116,193,217,253,251,112,177, 72, 1,240,
-243, 28,222,194,103,119, 49,177, 83,105, 27, 90,240,106, 79,143,125, 0,194,133,152,240, 15,131,216, 79,200, 82,132,195,124,215,
-186,157, 25,129,218, 75, 16,100,166,163,233,220, 46, 14,121,150, 62, 0,232,134, 64,231,243,235, 16, 62,243,230,227, 78, 72,195,
-125,194,251,147,185, 26, 22, 25,239,160, 18, 0,209,150,138,227,122,130,136, 26, 79,199,166,109, 82,238, 98, 35, 77,219,178,217,
-172,177,193, 33,240, 92,110, 55,188,191, 88,167, 74,176,239, 18, 72, 39,186, 79, 47,134,228,178,125,218, 40,163,197, 69, 62,230,
- 6,231,167, 33, 25, 9,225,218,246, 87,213,146, 90,106,154,174, 3,231,115, 87, 57,105,110,143,181,100,166, 4, 90, 70,100, 16,
-180,249,255, 99,231,114,245,151,199, 84, 33,215, 80, 42,175, 79,216, 73, 38,127,222,160, 62,158, 96,199, 37, 98, 54,162, 86, 21,
- 86, 8,140, 20,120,169,216, 4, 16,209,211,187,192,207,207,182,233, 16,178,185,179, 85,229,222, 94,153,173, 34, 7, 21,201,227,
- 99,222, 60, 61,226,219, 55, 78,121,101,126,204,216,148,220,170,107,102, 53,188,251,209,197, 39, 84, 54,164,174,132,202, 35,169,
- 40, 83,167,108, 54, 70, 30, 28,240, 95,221, 56,230, 55, 15, 79,248,114,173,248, 94,211, 36, 34,189, 82, 89,193, 81,164, 2, 66,
- 6, 68,187, 77, 24, 13,101, 32,170,164,112,150, 41,154, 34, 88,132,243,105, 47,201,154,216, 53,252,227,213,138,218,120, 26, 7,
- 54,106, 58, 34,143,250,158,171,174,229,106,211,224, 4, 60, 90, 47, 88,249,158, 38, 10,164,136, 4,169, 57,239,183, 44,206, 23,
-212, 86, 34, 99,164,191, 76,250,237,205,217,138,247, 63,126,200, 59,155, 5, 75, 28,189, 49, 44, 66,100, 29, 5,157,128, 94, 9,
-162,146,184, 66, 83, 35, 40,181,102,235, 29,141,143,156, 26,205, 66, 42, 52, 80, 43,201,149, 11, 89, 96, 69, 35,141,162, 54,138,
-224, 3,227,162, 32, 56,199, 68,192,239, 31,156,242,214,209, 13,222, 60, 58,230,246,244,128,147,209,156, 87, 79, 95,228,214,205,
- 35,198, 55, 15,185,156, 76, 49, 40,116, 52,152,222,163, 99, 72,254, 34, 90,161,133, 64, 27,205, 75,191,255, 91,252,214,191,250,
- 54,239,255,240,251,123,192,185,180,215,196,175,110,245, 60,255,140,181,110, 39,197,218, 88,124,219,211, 41,193, 68, 41, 14,162,
-229, 11,227, 57, 70, 74,182, 93,195, 68,107,214,193,113,223, 59,206,107, 67,172,139,164, 89, 48,159,194,180, 66,212, 19,168,102,
-188,245,141,223,226,213,147, 91,220,185,123,152,140,209, 10,205,118,177, 96,219, 45,209,122, 76,101, 42,180, 20,216,222,226,131,
-165, 42,167, 84,101,133, 86,130,117,111,185,108, 87, 64,160, 87, 37,231,162,228,222, 38,242,254,217, 5, 15,175, 46, 88,244, 29,
- 31,174,175,114,155,198,254,106, 26,230,103,217,110, 58,251, 99, 12,194, 82,248,157,163,102, 22,152, 18, 34,123, 92,100,253,144,
-127,165, 34,175,104, 77,140,130, 40, 37, 94,107,130, 50,196,162, 32, 42,131,169,107,110,205, 14,121,235,240,152, 87, 38, 35,190,
-122, 56, 69,142, 20,139,160,240,155, 62,117, 60, 7,224,111,255,124,234,201,112,175,119,189,106,153,196,111, 0, 66,103,243, 6,
- 79, 98, 13, 97,177,222,189,129, 34,207, 9,201,213,156, 41,118,200,221,255,216, 31,215, 51,245,103,180,224,187,103,252,110, 12,
-172,191,255,206,227,200,104,178, 60,108,159, 17,253, 66,210,135,128, 18,146,198,237,169,129, 13,207, 17,114,160, 51, 25,193,108,
-179,222,112,173, 88,116, 45,186, 54,140,138, 10, 98,224,193,197, 85,162,189,225, 62, 63,101,201,229, 85, 88,200, 93,111, 45,228,
- 27, 24,179,165,223,208,146, 31, 42,244,161,242,206,146,181,248, 61,109,233,125,253,230, 32,119,191, 59, 84,225,158, 29, 94,162,
-207,143,207, 48, 47,222,123,158,235, 36, 74, 62,221,106,255, 85,239,229,218,180, 40,166, 4, 98,185,101, 89,151,124,108,206,184,
- 53,191, 65,187,134, 66, 43, 30,245, 45,211,106, 66,227,182,172,109, 75,239, 90,206,183,107, 70, 90,103, 11,183,161, 99, 96,159,
-125, 94,253,230, 87,249,131, 55,190,194,229,250,146,159,252,217,159,239, 81,169,100,122,238,206, 67,185,135, 11, 40,196,174,163,
-240,228,230, 89, 54,220, 15, 29, 69,244,212, 82, 97, 2,212, 49,210, 92,231, 93,158,145, 16,140,138,200,184, 80,124,180,241,232,
-218,208, 53, 57,217, 17,185, 67,224,179, 32, 77, 17,118,116, 63,177, 55,139,127,214,136,233, 73, 4,212,254,124, 48, 4, 38, 99,
-131, 17,146, 7,222, 18, 28, 76,235,154, 70, 72, 86, 4,106,105, 80,101, 65,121,235,128,110, 93, 37,112,226,102,149,124, 14,164,
- 78,235,160,205,143,183,222,130,214,188, 54,159,112, 48,158,227,128,201,104, 12, 69,203,201,244, 34,181,205, 99,183,163, 48,198,
-240,196,117,119,160, 38, 9,135, 51,170,210, 11,108,151, 32,111,242, 71,163, 41, 47, 31,222,192, 16, 48,245,152,255,252,141, 13,
-255,253,213, 50,177, 71,132, 72,201,114,151,169,137,179, 99,104, 22, 73,153, 76, 8, 98,244,196, 32, 8, 69,133,167, 69,248, 2,
-161,122,112, 13, 81, 58,194,106,193,255,248,195, 31,243,199, 95,182,156,110,206, 56, 60,184, 73,208,154, 77,112, 8, 17,136,206,
-177,240,142,166,247, 28, 25,195, 88,150,200, 24,233, 8,220,243, 27,126,242,238,247,184,251,209,156,187,245, 1, 49, 4,150, 93,
-195,125,215,112,105, 20,177,186, 69, 17, 60, 99, 20, 86, 66, 85, 8,172,139,168,210,224,189, 37,170, 4,232,155,234,130, 96, 91,
-238,175,215, 28, 72,201, 74,105, 46,235,146, 19, 33,216,216, 64,239, 60,194, 24, 92,140,152, 16, 57, 40, 12,213,100,196, 29, 51,
-231,166,214,148,194, 80, 0,117, 41, 49, 82, 48, 81,130,155,197,203,252, 54,183,249,195, 91, 75,214,205, 10,239, 35,139,230,146,
-224,123,218,118,203,119,239,159,241,198,180, 4, 34,127,247,203, 11, 52, 63,161,218, 76,177,199, 22,233, 92,166,188, 61,223,140,
- 37, 60,177,172,196, 19, 95,175, 63,182,109,250,220, 20,240,240,130, 7, 55,142,240,243, 17,191,109, 74,108, 76,182,197, 91, 31,
-104, 66, 96,163, 5,161, 39, 37,100,163, 2,209,247,144,145,245, 71,102,202,203,167,183,208,133,164,109, 91,148, 80,172, 87,107,
- 58,219, 98,132,161,210, 26, 99, 74, 84, 47,217,148, 27,156,243,116,182,167, 46, 43,140, 48, 72, 25,120,180,241,172,195,150, 35,
-113,147, 27,167,167,220,169, 74, 46,214, 91,254,254,254, 61,126,182,188, 72,227,227, 27,135,105, 45, 62, 20,136,216, 37,252,192,
-147, 45,248,231,181,226,181,126,186,213,237,246,168,220,195, 57,167,117, 2, 76, 11, 11,141,134,106,192, 12,165, 98,238,102, 93,
- 80,133, 12,141, 39,209,249,188, 16,148, 66, 33, 67, 90,189, 18, 0, 0, 32, 0, 73, 68, 65, 84, 76,133, 82, 5, 5,146,178,170,
- 56, 86, 5, 86,151,252,142, 80,188, 57,170,249, 15,135, 35, 30, 60,218,164, 89,123,187,218,141, 8,247,164,154,227,115,103,234,
-151,103,132, 91, 47, 82, 24, 67,143, 73,104, 93, 35, 9,189, 75,122,191,171, 85,170, 78,135, 57,106,116,185,117, 25, 62,191,201,
-202, 63, 53, 88,238,211,102,161, 58,255, 78,208, 79,247,158,134,116,103, 82, 82,206, 43, 42, 85, 64,244,196,172, 42,182,123,140,
-204,113, 28, 2,251, 32,206, 63,184,132, 69, 88,111,215, 84,198,176,217, 88,148,134, 69,179,205,129,242,215,189, 96, 46, 43,142,
- 13, 1, 54, 87, 70,131, 81,192,254,195, 15,115,221, 97, 49, 63,121,173,202, 98, 15, 13, 63,152,222,228,191,177,125, 62,144,217,
- 89,177,178,159, 48,236, 61,135,149, 59,128,218, 39, 9,165, 60,121,239, 68,230,148,123,145, 64,128, 77,199,163,237, 22,207,199,
- 76,203, 25,203, 54, 80, 21, 53,109,215,115,222,174, 9,177,231,188,217,114,119, 58,231, 39,239,190,151,109, 11,179, 71,184,205,
- 9,166,206, 55,122,160,245, 45,155, 20,208,207, 30, 60,254,220,165,220,157,106,206,166,214,112,204,116, 1,235,118,110,106, 82,
-160,240,148, 74,227,109,100,162,253,181, 56,247,180,132, 62, 68, 70, 67,135, 72, 64,141,192, 17, 49, 72, 14,203,200, 85,227, 41,
- 10, 65,223,199,107,145,149,235,192,222,231, 36,194, 15,236, 4,118,216,137,200,227,192, 69,246,112, 18,143, 25,170,164,100,243,
-162,117, 92, 85, 61,166,168,120,179, 26,177,245,129,121,161,184, 93, 22, 80,107,126,122,214,225,166,227, 20, 56,199, 53, 52,147,
-212,105, 82,185,251,118,152,125,158,111, 30, 2,240,161, 11,156,122,199,188, 30,177,142, 9, 85,254,115, 49,130,187, 55,179, 64,
- 71,158,151,219, 38,113,112,135, 57,189,206, 20,216, 81,150, 9,181, 29,152, 41,244,158, 18, 69,235, 61,186, 44,185,180, 61,247,
-228, 56, 29,192,219,188,222,218, 85,214, 84,128,232, 54, 8, 89, 37,198, 9,128,169, 9,177,133,190, 69,148, 18,175, 29,201,203,
-203, 19,131, 33, 72,139,235, 44,127,254,131,159, 80, 77,198,124,245,246, 1, 7,163, 41,211,201, 49, 94, 73,180,237,152, 22,134,
- 64, 75,140, 21, 94,168,164, 18, 38, 53,141,235, 89,232,130,127,247,241, 47,105,253, 59,220, 85,138,169, 72, 9,238,120, 60, 71,
- 53, 51,162,168, 17, 46, 80, 58,207,184, 44,105,125,164, 12,142, 66, 10,164,139,212, 74, 96,163,134,178, 64,245, 13,139,222,114,
- 82, 4,218,135, 87, 60, 82, 42,205,134, 77,133,236,122,122,165, 57,174, 12,115,231, 57, 42, 74,102,133,100, 60,170,208, 94, 16,
- 60,232, 40, 24,213, 6, 23, 3, 39, 58,210,183,150, 23,102, 71,248,241,148,109,223,162, 14,142,216,174, 86,152, 99,205,159,190,
- 96, 9,182,131, 16,249,227,155, 11,198,122,204, 95,254, 73,228, 7,139, 43,238,125,188, 66,108,214,233,108,216,174,247,230,241,
- 79,207,101, 3,207,159,213, 62,133,239,161,135, 51,203,217,162,228, 63,224,120,125, 62,101, 90, 86, 52, 4, 62, 34,226,115,130,
- 47,149, 36, 56,203,100, 50, 99,235, 35, 7,186,228,141,201, 41,135, 71,167,104, 96,185,106,104,150,139,196, 32,235,122, 92,238,
-222,105, 81, 32, 10,197,184,168,177, 46,205,227, 93, 8, 24, 85, 50, 42, 39,156,140,239, 48, 26,157, 82,141,231, 28,206, 11,188,
-240, 28, 90, 5,116,185,109, 77,106,251, 31, 29,164,222,253,213, 26,161,214,169, 3,173,158, 0,166,150, 69, 6,196, 13, 2, 90,
-123, 1,127,112, 68, 30, 18,237, 46, 51,120,186, 39,227, 79, 46,150,108,159,215,114, 65,215, 58,238,107, 79, 21,224, 5, 41,177,
- 58,160,133,196, 75,197, 10, 65, 39, 13,133, 41,241, 66, 82, 32, 40, 39, 19,188,210,160, 75,250,224,185,121,224,121, 16, 11, 68,
-223,130, 60, 76,230, 98, 0, 23, 23,169, 8,242, 22, 97,219,103,204,212,173,131,209, 4, 68,106,213, 17, 21,170, 40, 18,191,174,
-207,173,151,245, 58,101,245, 42, 62,157,195,133,248,207, 75, 99,251,181,231,240,123,222,225,215, 1, 43,238, 60,164,111, 30,242,
-214,171, 55,185,115,112,192, 23, 79, 79, 56, 28,141,185,236, 27,182,157, 77,128,143,109,159, 5, 11,212,227, 8, 20,124,214, 36,
-214,215,109,254,109,116,108, 93,199,102,211, 18,109, 6,140,100, 32,196,231, 31, 57,228, 3,221,100,196,110,200, 96,110, 53,112,
- 30,213,238,103, 3, 53,237,121, 20, 8,145,233,105,206, 63,238,154,229,195, 78,100,199,231,121,167,217,227, 92,135, 12,126,203,
-163,154,235,118,250, 32,123,250,228,122, 24,168,135,207, 90, 39, 3, 22,194,199, 68,225,216,108,177,214,177,180,158,179,237,150,
-243,109,195,131,245,146,181,107,121,240,209, 25,139,179, 75,250,224, 57,251,229,199,169, 37,232, 92,162,202,181,155,235, 0,124,
-109,247, 58, 0,250,154, 13,103,103,107,184,119,111,119, 45,116, 86,212, 27,212,239,204, 96,137, 40, 82,203, 46, 88, 16,146,209,
- 48,197,136, 73, 30, 82, 33,169,164, 36, 34,152, 86,130,109,155, 80,240,133, 16, 76,132,160, 18,146, 82, 72, 60,176, 33, 85, 99,
- 83, 69,146,161, 53,130,198,250, 93, 22, 25,124,222, 83,236, 84,255,180,120,220,229,110, 96, 16, 12,159, 3,102,226, 73,183, 52,
- 37,161,168,137,227, 26,111, 12, 95, 51,154,219,147,146, 73, 97,152, 20, 37,117,140, 92,161, 40,203,154,149, 22, 68,163, 96, 92,
-241,173,249,156,201,168,230,168,212, 76,235,154,182, 52,248, 34,105,183, 63, 16, 2,107,198,212,178,100,105, 3, 15,125,228, 47,
-122,155, 70, 21,211, 58,181, 84,235, 42, 29,158, 78, 36, 60,133,218, 51,126, 10, 38,143, 97,178,147, 95,173,249,176,174, 56, 84,
- 21,107,161,121,216, 88,254,175,197, 34, 21, 13,171, 77,154, 25,146, 57,189, 33, 37,146, 66,237,113,136, 67, 50,129, 17, 82,165,
-100, 80,120,162,211,217,249, 44, 16,188, 38,120,135, 15, 2,219,247,124,240,104,193, 47, 30, 46,248,201,251, 31,227,101,203,173,
-170, 96,109, 91, 42, 1, 54,122,148, 84, 68, 4, 93,102,106, 60,180, 45, 63,109, 59,250, 40,121, 20, 5, 11, 41,240, 81, 34, 70,
- 35,182, 14, 54, 50, 73, 63,203, 82,179,234,193,107, 65,139,196,118, 62, 77, 25,250,192,185, 75,244,182, 90,105,214,174,165,107,
- 90,138,174,165,245,142,105,215, 34,156,101, 29, 60, 68,207, 77, 34, 50, 6, 70,193,115,208, 5,198,198, 96,140, 65, 8,137, 48,
-201, 22,212, 55, 29,218, 5, 74,173, 40,163,199, 40,201, 44, 66,129,224, 96, 52,166,234,123,102, 74,115,247,228, 46,135,229,132,
-187, 7, 55,153,160,121,101, 60, 99, 90, 21,220, 60, 40, 57, 62,158,115,223,133,228,103, 97,178,194,227, 51,206,132,103,241,220,
-159,213, 36, 18,251, 0,178,174,227,131,203, 53, 75, 21,249,229,178,225,103,109,203,125,235,120,100, 61,181, 73,254,244, 65, 42,
- 74, 97,232,189,163, 42, 10, 14,202,212, 1,170,234,130,224, 60,190,183, 28, 11,149,196,124,164, 78,115,242,124, 22,117,237,150,
-214,181, 52, 93,139,144,129, 82, 75,148,212,124,233,139, 95,225,173, 47,222,226,133, 91, 83,156, 11,184,182,101,187, 89,241,211,
-243,143, 88,186,212,114, 23,190,231, 15,142,143,249,234,201,156,175,221, 60,226,167, 93,158,135,111, 87,215,227,190, 84, 88,100,
-155,102, 23,174, 19,202,199,180, 33,158, 44,134,194,243,207,102, 49,140,214,250,164, 40,121,207, 59, 94, 19,138,211, 66, 97,133,
-162,146,145,165, 52,108, 77,197,123,202, 96,131,167, 82, 5,163,202,224,156, 69, 41,201,170,107,153,148,117, 82,254, 35,208, 76,
-103, 80, 23,188,122,122,147,171, 73,205, 23,111,223, 69, 31,205,217, 72, 13,162, 64, 68,123,125, 63, 51, 79, 93, 39,222,172, 46,
-144,179, 41,135,147,138,173,239, 40,141,225,133,195, 9,203, 77,147, 14, 79,223,165,202, 98, 0, 81,197, 12, 78,250,255, 67,235,
-253,179,130,235, 30, 75, 71,247,200, 33, 90,162,110, 28,242,133,211, 27, 28,141,166, 8,169, 41,141,161,150,134,251,143, 22,176,
-220, 38, 47, 95,155, 91,167, 3, 69,141, 62, 27,151,144,218,153,209,239,108, 77, 93, 6,165, 53,109,250,217, 16,124,126,237,113,
-131,218,155,205,202,157,189,168, 12,187,121, 59,159,208, 10, 31,244,248,133,222, 33, 83, 7,217,215,161,125,175,242,123,244, 46,
- 3,231,220,238, 58, 10,118, 62,196, 3, 40,234, 73,127,119,153,219,250,195,235, 24,126,102,178,203, 92,161,211, 92, 74, 85,153,
- 62, 37, 19, 86,227, 60, 39,145, 23, 87,208,116,116, 31,159,165, 86,236,106, 3,171,203,140,109,112, 41, 0,119, 93, 58,244,227,
- 32,115,251, 68,192,235,250,116,223,246,175,133, 12, 9, 23, 50,188, 23,155,109, 78,251, 28, 60,124,234, 66, 89, 37,137, 54, 50,
- 83, 17,163, 12, 70,169,132,237, 83,201, 9,111,170, 19, 8,178,212, 18,239, 2, 90, 68,180, 80,196,224, 57, 18,130, 86, 66, 25,
- 21,133,132, 71,157,163,148, 18, 59,236, 33,177,135,141,136, 89,194,214,103, 45,247,225, 62, 12,238,130, 33,238, 2,250,112,178,
- 74,145,240, 12,195,232, 99, 50,130,113,205,183,234,146,131,210, 80,233, 34,255,151, 32, 10,201,105, 85,112, 97, 3,189,209, 40,
- 93,242, 95,158, 28,163, 11,195, 87,167, 51, 94,153,159,242,226,168,230,214,104,204, 5,130, 38,235,226,159,201,146,159, 8, 73,
-135,226,163, 24,248,102,125,192,116, 52,162, 46,167, 44, 76,153, 42,241,186, 78, 96,199,241, 8, 14,143,146, 2,227,124, 14, 47,
-156,192,205, 99, 56,152,229, 89,125, 2, 12,189,173, 75,254,161,115,188, 61,236,163,205, 50,119, 70,178,102,252,208,114, 50, 69,
-178,162,214, 10, 38, 19, 68,111,179, 70, 70,204, 1, 29,136,150,232, 83,130, 27,133, 32, 72, 75,240, 17, 79,139,119, 61,190, 89,
-225, 55, 13,143,174,122,230, 99,141, 11,142,149,247,105,164, 80,214,184, 24,233, 99,196, 70,199,207,187, 45,247,109,196,134, 72,
- 48,154, 82, 87, 84, 85,137,143, 10, 39,116,214,132,143,108,162, 72,213,121,161,105,123,143,147, 2,219, 71, 2, 30, 25, 2, 50,
- 6,150,192, 44, 8,108,179, 37, 10,137,246, 29,173,237,120,232,122,198,170,224,170,107,208, 8, 78,138,146,109,211,112, 56, 30,
- 99,172,199,117,150,222,246,108,150, 13,205,106,139, 80, 18, 25, 60, 90,165,253,166,173, 69, 70, 40,164, 64,216,158,170, 44,153,
-140, 38,200, 16, 41,116,137, 86, 9, 7, 84, 10,197,152,200,188,168,168, 75,195,237,113,197,237,155, 71,232,131, 25,231, 49,161,
-182, 99, 84,136, 66, 94, 87,161,226, 57, 85,186,248,196, 66,195,179,184, 92,113,177,217,178,186,108,217,110,123,204,124, 76,107,
-251,196,185, 23,176,117,142, 73, 61, 38,184, 4,110,156,152, 9,133,146,188, 60, 46,184, 83, 24,122, 23,121,233,240,128,224, 60,
- 23,222, 99,148,192,123,143, 11, 61,235,229, 58,123, 68, 8,170,170,100, 92, 76,185,123,247, 5, 78,143,198,180,157,231,195, 15,
- 47,120,255,253,123,188,255,224, 30,255,112,249,113, 94, 75,129,175,207, 15,249,198,108,202,171,227, 99, 94,153,158,240,218,164,
-230,123,203, 62,117,142,252, 54,123, 64, 20, 41,150,177,199,126, 25,198,146,195,121,166, 63,155,197,184, 8, 33,159, 71, 1,235,
- 3, 45, 34, 41,123, 35,248, 32, 70, 26,163, 88,203,130, 51, 93, 49, 47,106, 74, 4,194, 7,148,210,120, 31,168,180, 97,217,183,
- 32,193, 41,205,157,162,224,119,142,143, 57,156,204,249, 55, 71, 55,184,115,114,131,215,166, 51, 78,111,221,228,157,135, 15, 96,
- 60, 69,116,201, 5, 81,113,252,133,239, 48,174,160, 24,163,238,220,224,180,154,242,141,187, 47,115, 88, 87,220, 28,143, 9, 34,
-208,201, 64, 95, 23, 41,131,185, 56,223,129,121, 2,255,178, 42,244,231, 5,245,129,214,165, 36, 20,134,151, 94,187,197, 23, 78,
- 94, 68,171,132,188,157,212, 83,100,132, 43,183,101,251,224, 44,169,198, 57,118,252,112, 57,248,118,103,145, 27,225,179,169, 73,
- 22,218,240, 54, 85,146, 49,236,132,250,127,173, 96,206, 14,196, 37,247, 42,235,152, 27,104, 49,235, 22,199,248,233, 28,240,100,
-142, 20,131, 82, 30,113,231,164, 55, 84,249,170, 72,149,186,235, 51, 80,196,239,124,210, 7,245,180,103,129,188,134,128,222,239,
-129,215,170, 34,211,229,246, 90, 96,186,206, 45,248,172,143, 44,115, 23,164,219,164,107,230,187, 4,136,178,118, 7, 26,177,109,
- 6,251,181,105, 3, 41,185, 75, 52,158,236, 68, 8,241,244,181, 24, 50,114,138,236,247,154, 77,138, 6,160, 92,182,127, 36, 68,
- 70, 70,210, 91,152,142, 36,129,192,204, 72,148, 74,192,163, 40, 4, 42, 70,148,143,140,149,202,183, 39, 82, 74,201, 50, 4, 70,
- 8,150,206,225,124,224,164,212, 44, 93,192,134, 44, 19,123, 45,216,148, 49, 28,110, 24,223,200,148,104,239, 3,207, 76,110,209,
-203,189,170,125,160,222,201,108,170,164, 10, 78,166, 5,191, 49, 29, 37,203, 16, 9, 82,168, 36,217, 47, 53, 49, 70,206,163,228,
-202, 59,254, 85, 61, 97, 90,143, 57, 40, 19, 40, 73,232,164,175,239,164,100, 29, 4,107, 83,226,101,210,208,126,179, 26,241, 82,
- 89,243, 70, 57,226,112, 82,112,219, 24,238, 78,102,220,119,158, 70,155, 20,124, 77,145,130,187, 34, 7,246, 57,212,211,164,164,
- 86,142, 18,168,180, 30, 37, 64, 92, 81,165,170,222,231, 49,134,206,236,131,211, 35, 56,152,195,237, 91,240,210,203, 48, 31, 39,
- 5,179, 81,137, 32,173, 53,209,219,244,183,109,159,174, 65, 93, 19,157, 79,183, 74, 65, 36, 16,100, 32,108,219,107, 58,151, 15,
- 61,206, 74,222,221, 56,222,238, 44, 63, 95,116,160, 60,115, 9, 94, 68,214,221,134, 95,118, 45,127,189,233,112, 62,226,180,162,
- 48, 5, 85,161, 83, 34,107, 84,178,142,168, 52,222, 90,130, 8, 20,186, 96,221,121,138, 66,225,251, 64,235, 2,227, 90, 33, 67,
-228,188,235, 41,219, 22,215,111, 89,119, 29,135, 66, 18,251, 13,155,108,151,252,151,151, 11,180, 52, 88,223,177,218,180,148,165,
-161, 82,154,198, 59,206,182, 91,214,235, 37,163,224, 88, 54, 43, 46, 23, 75,198, 69, 1,206, 82, 6,144, 74,161, 70,163,100, 56,
- 37, 64, 27,131, 12, 1, 51, 30, 35, 11, 67,236, 44, 82, 72,124,215, 19,162, 67, 16,168, 99,228, 70, 85, 51,175, 43,230, 82,242,
-165, 27,135,204, 71, 37,167, 39, 51, 62,242, 50,221, 39, 15, 20, 50, 25,233,236, 7,114, 83, 93, 43,159,137, 33, 41, 55, 89, 46,
-251, 73,108,144,207, 50,196,182,199,159,111, 32,251, 35, 56, 27,136, 82, 19,157, 99,166, 21,117, 81, 35,108,195,235,199, 7,220,
-172, 13,194,104,238,206, 70, 68, 41, 16,163, 49, 87,162,166, 52, 83, 80,138,182,185,226,170, 89,114,177,217, 18,133,199,132,228,
-150,119,114,227,132,211,195,154, 66, 71,222,189,247, 49,255,221,223,253, 61,247,126,244, 54, 60,122,148,206,177,202,240,159,221,
-188,201,216,140, 57, 24, 79,169, 71,147,164,237, 63, 86,188,127,209,164,115,121, 48,123, 26, 58,183, 66,166, 49,156,214,187,121,
-249,224,255,190,223,225,251, 85,182,199, 60, 97,174, 19,225,172,135,191,223,182,172,140,230,255,232, 61, 27, 17,248,113,151,220,
-222, 14,138, 2, 45, 37,198, 40, 20,146,222,247, 52,206, 18,131,165, 17,145, 62,104,222, 56, 56,228,203, 7, 71,188, 57, 59,225,
-100, 50,225, 11,211, 25,186,158,224,123,199,139,119, 95,194, 23,176,157,207,241,219, 30,197,173,175,127,167,120,253, 53,126,251,
-173,183,184,125,116,135, 47,156,188, 64,223, 59, 94, 56,189, 65, 64, 81, 98,120,245,228,148,113,169,120, 24,186, 68, 73,217, 54,
-255,241,228, 96,127, 29, 16,221,116,156, 14,154,224, 30,159,167, 40, 9,163, 89, 82,207, 67,177, 80,130,163, 81,205,141,195, 91,
- 40,101,232,251,150, 85,211,176,108, 59,150, 87,219,212,150, 85, 50, 85,121, 74,102, 26,160, 73, 65,170,168,118,104, 93,153,179,
-187,144,171, 48,235, 19, 55, 58,248,207,247,250,149,206, 7,162,201,128, 46,191, 11,164, 82,114,109, 24, 48,160, 56, 62,109, 7,
-101, 8,132,215, 78, 65, 50, 7, 16,151,186, 1, 34, 39, 38, 67, 75, 91,102,231, 62, 33,115, 64,205, 63,123, 86, 2,161,116,174,
-162,195,238,112, 24,218,243, 67,139,182,172, 82, 21,237, 99,146, 53,141, 3,207,222,237, 56,243, 3, 72,103,176,253, 29,222,219,
-190,225,201,190,205,235,245, 33, 19,158, 47, 97, 44,179,175,177,200,221,148,114,143, 22, 41,228,206,233, 45, 66,105, 20, 69, 5,
- 93, 23, 81, 82, 33,133,160,146,208, 33,216,246, 9,253,174, 68,162, 25, 85, 34,153,236,180, 49, 80, 10,201,202, 5,106,145,230,
-139, 23,214, 17,163,160,243,123,140,132,152,105,145,131, 85,163,202, 38, 61, 46,236,128,144,131,221,192,181,244,236, 94,151,201,
-101, 33,160,152, 16,231, 91, 83,241,133, 81, 65, 97, 12, 18,129, 86, 26, 45, 21, 13,129, 82,105, 30,118, 29, 7, 90,243,202,100,
-130, 64, 49, 46, 42,150, 33, 82, 86, 37,202, 20, 56,153,146,138,119, 35, 68, 93, 66, 89,242,133,162,226,165, 81,197,100, 50, 98,
-102, 10,122, 37, 17, 40, 42, 93,242,158,203,199,152, 41,178,225,209, 24, 85, 77, 41,170, 9,245,193, 45, 94, 46,199, 92, 84, 99,
- 40,199, 9, 40, 37,242,186, 48,227, 36,105,171, 10,168,102,233,251,131, 23,224,240, 5, 24, 31, 65, 49,129,249,141, 68,241, 57,
-190, 1,163, 26, 49,171,225,248, 48, 89,179,222, 60,129,131, 3,152, 77, 18,204,231,197, 91,137, 20,114,122, 66,220,110,137,243,
- 83,130, 13,196, 62, 5,247,224, 37, 65,234,252,189,103,217, 71,182,177,195,227,104,125,224,123,203,134,181,237,241, 2,188, 20,
- 72,105, 48, 90, 51, 46, 74,180,144,140, 43,133, 8,129,210,104,202, 66,177,218,108, 40,100, 74,152,124, 38,216, 92,173, 59, 2,
-142,166,105,241, 93,195, 68, 8,164,181,172,187, 13, 74,105,238, 89,203,125,107,217, 70,197,205,131,116, 48,247,117,205,187,235,
-158, 63, 59, 95,208, 24,193,195,102,203,155,243, 49, 87,237, 6,169, 37, 63, 95,109,184, 88, 47,144,222,163,187, 6, 89, 24,108,
-187, 69, 42,133, 44, 74,162,115,148,213, 24,161, 13,161,233,145, 38, 17,219,250,174,161,247, 61, 93,223, 80, 41,131, 65, 50,142,
-130,163,106, 68, 41, 37,243,170,102,164, 21,175, 31, 79,169,199, 5,151, 85,141,215, 21,200, 42, 85,239, 93,198, 56,248, 44,165,
-170,117,186, 71, 36,208,173,144,123,238,156, 3,216,246, 9, 74, 28,219, 22,150, 75,196,163, 21, 8,193,111,191,242, 26,175, 31,
-159, 82, 11,152,106,193,173,217,140,211, 73,205,205,233,136, 94, 73, 84,169,233,181, 66,141,107, 86, 62,237,233,174,239, 88, 55,
-107, 54,109, 75,244,158,217,104,194,168, 26,113,124,116,202,104,100,184, 92, 55,108, 87, 27,254,230, 7, 63, 66, 60,120, 23, 54,
-107, 68,212,112, 60,231, 95, 31,157,114,115, 58,197, 34,105, 16, 84,245,136,251,206,243,174,137, 9,201,239,251,199, 99,129,179,
- 59,134,207,126,251,125,120,255, 70,239, 24, 71,159, 96, 57, 46,246,207, 64,161,192, 40, 30,181, 14,154,158, 51, 7, 75, 23,104,
-117, 96,170, 75,166, 82, 98,144,201,249, 45,128,247, 73, 74,183, 21,130,186, 48,188, 94, 79,208, 74, 81,141,199, 76,234,138,178,
- 48, 76,198, 21, 91, 97,240,245, 4,239, 37,119,230, 7,232, 89,141,226,139,255,250, 59, 95,188,251, 34, 47, 31,189,128, 41,106,
-166,147,138,211, 27,183,210, 65,160, 74, 78,143,143, 9,189,101, 82, 22,188,113,114, 19, 89, 22,156, 15, 85, 89,215,253,203, 9,
-234,197, 46,227, 39,232,164, 99, 61,124,212, 73,171, 29,163,210,108,112,219, 80, 77, 43,110, 31,223, 68, 75,205,178,109, 88,181,
- 45, 23,155, 13, 27, 23, 19, 79, 93,202,116,240, 22,249, 48,214, 58, 37, 5,131, 83, 79,204,183,212,250,236,207,219,165, 25, 75,
-223,124,190,215,111,116, 10,118,131,115,208,224,165,190,111,217, 39, 7,112, 88,120,218,138,243,147, 40, 43, 3,189, 75,136,132,
-172, 31,146, 29,231,118,146,167,125,150,160, 29,156,246,244, 30,207,251, 89, 45,254, 65,138,118,160, 77,117,109,202,238, 7,219,
- 94,159,223,147,235, 82,181,172,179,231, 59, 89, 31, 89,100,209,155,144,129,153, 90,237,172,128,159, 21,160,165,120, 60,160, 15,
-137,195, 53, 46, 32, 60,141, 40, 31,232,127,168, 52,203,142,153,194, 55,140,100, 50,136, 74,201,200,177, 74,122,219,189, 23,140,
-181,196, 75,208, 8,188,134, 34, 36, 97,156, 81,136,108, 0, 35, 69, 22, 49, 12,212, 82,112,238, 28,189,143, 40, 37, 65, 4,156,
-144,248,193,181,238,122,110,158,120,173, 41,232,229,228, 74,239,129, 31, 7,223,250,161, 13, 47,242, 97, 51,140, 49, 68,154,168,
- 81, 26,142,198,134,137, 22, 4,161, 81, 49,160,149,160,140,146, 69,240,124, 28, 34,183,116, 65,109, 20,149, 80, 56,146,252,104,
-140, 73,116,197,122,152,143, 70,108,187,158, 11, 83,242, 39,245,136, 27, 85,193,164,210,172,123,201,214, 58,166,245,152,117,231,
-169, 10,205, 54,194, 66,170,228,163,173, 52,255,230,224,152,215,170,146,111, 30, 28,240,166, 81,188, 80, 87,124,105, 52,199,171,
-130,243, 8, 20, 35, 48,163, 68,133, 53, 89,196, 67,104,168,231,188,121,122,147,163,106,204,241,244,152,249,193, 49,186,154,178,
-173,166, 41,176, 76, 15,161, 62, 64, 40, 5, 55,110,165, 81,195,104, 12,167,119,136,211, 10, 78,239,192,241, 65, 18,105,185,243,
- 42,193, 89,226,184, 78,129, 60, 42, 66,232,137, 69, 73,208,154, 16, 36,182,119, 60, 90,116,188,211, 90,126,126,177, 98, 11, 4,
-231, 9, 74, 16,140, 33,104,195, 72, 43, 42,169, 56, 25,149, 28, 9,137, 38, 48, 17, 18,235, 60,181, 86,184,222,179, 70,208, 90,
-203,213,118,131, 13,145,179,117,131,116, 45,139,190,229,253,205, 21,219,118,205,165, 11, 60,176,150,183,215, 27,154,168,249,210,
-141, 99,238, 93,109,153,215, 21,203, 69,139,168, 38,220,170, 43, 30,246, 17, 99,106,230, 37, 28, 77, 39, 60,104,123,126,210, 57,
- 54,120, 86,214,178, 45, 12, 86, 21, 68,173, 89,109, 27,150, 2, 58,103,209, 74, 35, 59,143,154,142, 8,157,163,109, 55, 4, 17,
- 89,119, 43,130, 76,107, 78,132,128, 82,138,224, 29,138, 72,161, 12, 81, 73, 70, 82,115, 50, 26,241, 27,243, 9,119,199, 21,191,
-125, 50,230, 7, 61, 41,217,234, 35, 4, 71,172, 70,185,179,146, 71, 88,213, 52, 37,250,133,222, 25, 67, 61,167, 45,143, 77,221,
- 2,198, 51,254,248,183,190, 65, 93, 40,230,227, 17,139,245,150, 55,142,142, 41,140,102,153, 3,171, 55,154, 86, 10, 30, 88,205,
- 58, 10, 54,125,160,117, 93,202,113,125,143, 23,142,113, 89,115, 58,191,193,203,175,190,200,201, 97, 77, 45, 37,239,190,251, 1,
-223,255,127,255, 38, 89, 94, 15, 32, 95, 23, 24, 29,140,121,161, 24, 19,202, 17, 93,132,183,155, 13, 63,107, 60,231,146,164,175,
-210,248,199, 99,129,220, 59,251,134,226, 97,168,202, 93, 62,131,162,218,157, 97,241, 87,119,171,133, 78,166, 66,148,114,135,153,
- 81, 58,119,153, 34, 91, 45, 57,235,183, 28,102, 7, 58, 31, 44,141,107,233,189,103, 19,123, 30,181,158,111, 30, 30,225,163,224,
-104, 50,167, 11, 1, 93, 26, 58,161, 18,188,100, 92,211,134,136, 42, 39, 24, 89,114, 88, 77, 81,188,249,251,223,249,189,215,191,
-204,209,209, 9,179,217,132,233,108, 66,111, 29,227,113,205,100, 58,162,107,122, 14,142,142, 24, 79, 38,152, 40,185, 49,157, 50,
- 25, 21,124,100, 52,209,171,164,237,203,191,128, 22,124, 33, 19, 66, 93, 10,184, 90, 39,137,215,161,202,157,206,211,194,204, 51,
- 63,124,228,226,189,251, 92,200,200,197,122,137, 66,114,182, 89,208, 57,199,230,193,249,206,241,202,103, 91,197, 34, 43,110, 21,
-106, 39,116, 51,208,192, 66, 62,120, 67,191, 19, 98,249, 92, 84,189, 12,112, 25, 68, 13,134, 92,112,255,241,100,230,134,235, 79,
- 65, 67,213,185,253, 60,120,113, 15, 45, 92, 37,211,124, 91,102, 14,186,205, 74,103,215,214,187,195, 28, 93,236,253, 94,120, 54,
- 48,110, 8,172,131,150,252, 16,144, 7,249, 88,149,147, 15,153, 65, 42,195, 11, 27,213,233,223,213, 36,139,227,100, 85, 55,181,
-247,250,158,156,113, 13,216,128,253,160, 62, 84,218, 62,211,173, 76,158,227, 15,191, 51,184,221,105,177,167, 83,111,216,167, 68,
-140, 84, 74,114, 52,130, 88,106, 54,109,224,184, 20,180, 34, 82, 72,197,170,207,147, 22, 37, 48, 49, 82, 75,133,138,176,138,201,
- 86, 17, 34,193,129, 22, 73,203,122, 25, 61, 5,130,101,235,119,246,198, 98,111,138, 41,213, 94, 96, 79, 38, 51,215, 72,222,107,
-250, 98,254,155,225,186,135,176,115, 99,243, 30,164,230, 3, 47,249,210,216, 48, 50, 5,165, 84,120, 17, 81, 18,190,223, 88,254,
-177,177,212, 33,112,168, 53, 70, 21, 8, 20, 74, 9, 36, 18,165, 20,198,104,222, 89,182,220, 11,112, 74,224,229,170,224,120, 92,
-225, 81, 20,218,112,102, 29, 42, 66, 85, 22,172, 28,104, 93,242,190, 77, 35,159, 47,215, 99, 94, 80,154, 23,103, 51,164,210, 24,
- 35,153,214, 53, 72,197,121,103,121, 80,142,211,107, 53, 38, 85,226,101, 1, 66,113, 52,155,242, 71,163,154,175, 29,141,249,210,
-141, 41,119, 70, 37, 47, 21, 48, 42, 43,222, 9,192,120,150, 70, 46,186,128,178, 66, 84, 19,168,103, 48, 57, 1, 41,121,235,198,
- 75,172, 17,152,241, 33, 95,120,225, 37, 30, 58, 7, 71, 71,196, 66, 18, 15,230, 68,165,136, 62, 18, 75,157,116,185,133, 36, 10,
- 79,104, 91,226,122, 73,116,145, 96,123, 66,136, 4,109, 8, 74,224, 68,100,164, 53,115, 41,185,173, 21, 19, 83,114,144,249,241,
- 83,169, 8,222,226,130, 37, 90, 79,211,247, 68, 68,234,230,245, 45, 15, 58,199,229,118,197, 89,211,208, 70,193,134,142,191,189,
- 90, 98,189,167, 87,146,208, 91, 94,158, 79, 88, 49,101,227, 29, 71,117, 65,148,138,141,247, 84,101,193,119,207, 22,252,163,215,
-188,189, 13,244, 40,222,241,130, 86,106,182,227,130,179,224,184, 52, 5,110, 90,113,229, 97, 89, 22,116, 93, 11,227,146,208,246,
-116,161,167,151,146, 15, 86,231,132,232,104,162,163, 68, 16,242,248, 69,106,131, 15, 1, 23, 61, 49, 4, 70,198,240,178, 54,188,
- 88,140,120,101, 58, 99, 41, 5,183,106,195,219, 54,173,179,104,202,108,190,228,136, 62, 32,234, 41,136, 36, 45,139,172,242, 30,
-206, 22,198,207,233,224,138, 32,249,218,183,191,206,235,183, 95, 65, 2,117, 53,226,195,135,247, 64,150, 72, 33, 57, 29,215, 44,
-156, 99,237, 60, 31,108, 61,223,181,145,247,122,203, 86, 68,150,214,129, 48,232,140,111,154,234,146, 27,199,167,220,120,225,152,
-182,179,172,215, 29,255,203, 95,253,123, 46,222,126,251,241,100,194,247,188, 43, 12, 7, 19, 69, 39, 74, 46,189,231,111, 87, 29,
-255, 24,243,121, 98,178, 80,215,229,122,167,136, 58, 36,243,214,238,102,233,195,207,135,194, 33, 10, 30, 67,174,126,146, 95, 67,
- 85,236,180, 2,148, 74, 8,118,145, 71,136,203, 53,157,150,172,156,165, 16,150,232, 45, 11,219,240,209,182,101,105, 29, 47,141,
- 12,135,101, 69, 89,142,152,215, 37,173, 20, 68,161,233, 99,224, 96, 84, 16, 98,164,151,130,135,157, 35, 20, 53, 50, 42,212, 27,
-191,251,167,223,121,237,133, 23,185, 88, 52,156, 28, 30, 98,125, 96, 54,175, 48,133, 70,169,196,179, 11, 62, 50,158, 84, 24, 85,
- 18,188,160,144,134,155,227,154,135,210,167,142,107,111, 63,149, 58,218,103,245, 6,254, 92,195,102,253,156, 57, 71,204, 60,242,
-190,217,153,207,107,157,170,161,186, 78,224, 54,193,206,255,122,189,102,117,209,210,207, 71, 60, 88, 44,176,209,243,232,193,121,
-146,118,149, 49, 29,178, 82,236,132, 96,194,192, 63,222, 67,147,135,144,126, 63,180, 73, 3,217,121,144,159, 19, 3,144, 91,186,
-215,126,221,136, 12,198, 11, 79, 35, 50, 63, 77,142, 37,247,105,103,123,224, 16,173,210,130,179, 62,221,211,129,234, 49, 8,149,
- 96, 51,152, 45,111,224,231, 25,167, 12,254,229, 58,207,220,219, 46,253,219,229,205, 20,179,233,204, 53,154, 95,239,161,231, 67,
- 58,188,135, 77, 51, 24, 7,145,239,161, 28,228,136,229,227,111,118,216,116, 79,221,251,184,179, 18,134,116,191, 10,181, 11,252,
- 65,103, 25, 46,177, 19,229,201,215,199, 86,134, 50, 70, 28,130, 82, 70, 14, 20,120,165,153, 32,121,100, 5, 66, 36,211, 23, 31,
- 4,165, 2, 31, 99,202, 93,128, 62, 70, 52,130,101, 72, 45,114,161, 5,155, 16, 88,109,193, 23,114,135, 91, 24,238,229,254,235,
-189,238, 20, 12, 82,192,236, 76, 39,246,157,157,134,185,158,247, 57,137,137,169,163, 82,149, 8, 19,121, 96,123,124,176,124,216,
- 58,174,154,134,239,247, 14,108, 71, 47, 52, 47, 21, 10,225, 61, 83, 93, 82, 41, 5, 8, 98, 8,116,206,241,160,143,252,204, 89,
- 94, 50,134, 49, 18, 29,160, 67, 98, 16, 28,205, 42,130, 23,233,182, 73,193,251,155, 45,103, 25, 7,240, 71,243, 49,163,178, 98,
- 99, 29,133,210, 20, 85, 69,219, 71,124,244,152,122,132,136,145,139,152,109,144, 99,128,170, 6,173,248,173, 73,197, 43,227,130,
-162, 50, 92, 89,201,172,214,180, 81, 48, 53,146,195,162,224,189, 62,166,185,188,150, 96,234, 44, 89, 91,242,237,201,132, 63,190,
-117,130,139,146,111, 30, 30,112,211, 20, 40,109,184,115,112,202, 47,157, 39,206, 78,211, 65, 90,150,112, 56,205, 9, 88,145, 80,
-224, 85, 10,114,209, 67,108,151,217, 57, 14,226,166, 35, 78,107,208, 26,129,224,229, 82,112, 36, 36,135, 33, 82,196,192, 17,130,
-121,132,146,136,244,150, 14,203,184,144,244, 77, 79,239, 59,162,132,202,109,209, 74,225,109,199, 13,233, 41,188,199,246,150,211,
- 74, 80,198,142,159,246,146,219, 35,205,182,179,140,234, 57,103,125, 79,223,119,188, 48,159,243,209,118,203,172, 26,113,217,181,
-204,171,138,217,116, 78, 81, 22, 56, 96, 77,193,249,232, 0,135,228, 92, 22, 52,101,201,251, 27, 75, 51,169,185,208,138,243,174,
-229, 35,165,248,165,119,124, 40, 2, 15,164, 38,120, 79,167, 52,147,232,177, 82,208, 59,135, 21,130,222, 59,130, 86,156, 72,131,
-145,134, 90,105,130,212,156,154,130, 94,107, 46, 10,195,133, 0,186, 44, 79, 43, 69,234,156,217,237, 53, 13, 86,168,228,194,118,
-141,173,121, 18, 85,175,117,114,166, 83,240,240,157,247,121,237,141, 87, 9, 4, 54,171, 75,254,183, 31,255,128,159, 63, 58,231,
-141,249, 33,247, 55, 91,108,148,252, 98,225,248, 65,227,248, 97,103, 89, 72,201,153,179,156, 11, 40,202,146,136, 66, 72, 73,173,
- 75,142,166, 7, 28, 29, 79,136, 17,238,191,255,136, 63,255,179,127,151,198,194,123,144, 26, 97, 29,244, 29, 63,235, 28,127,223,
-181,252, 48, 68, 46, 84,145, 94, 63, 49,159,105, 89,149,115,219,165,138,122,168,204,149,126, 92,245,242,218, 44, 76,164,243, 63,
-202, 79,198, 44, 93,203, 78,231, 98, 76,155,212,221, 22, 58, 43,210,229,162,230,252,156,245,170,229, 61, 31,233,218,134,101, 12,
-244,222,113,175,107,208, 1, 94,170, 39, 28, 84, 37,231, 65,114,179, 42, 89, 57,203, 65, 85, 98,165,100,209,121, 62, 92, 59,182,
- 65,210,224,153,212, 21,106,250,149, 63,252,206,171,183,110, 51,155, 28,226, 36, 8, 41,168, 42, 67,232, 2,101,165, 81,198, 96,
- 10,133,144, 2, 23, 2, 2, 73,215, 37,203,152,182,107,184,218,118,233,208, 9,225, 41, 27,185, 79, 67,147,248,164, 4,224,179,
-205,156,229, 14,120,244, 36,136, 97, 64, 35,218, 39, 36,101,101, 14,228,202,236, 42,208,135,139,204, 53, 92,209, 93, 92,208,109,
- 58,182,151,203,212, 62,143,195,156, 37,183, 99,188,203,146,168, 67,192, 30, 60,171, 99,202,110, 93,159, 52,226, 67,158,195,200,
-207,158,167, 60,230,150,117,125, 85, 28, 59,227,150,207,249,152,207, 74, 30,226, 19,226, 45,251,247,115, 95,165,239,121,152,138,
-161,130, 46,139, 93,149,236,135,106,221,239,181,245,115, 5,122, 61, 23,207,242,196,131, 48, 11, 34, 3,194,114,160,234,114,107,
- 94,237,241,232,131,125,188, 98,223, 15,110, 49, 38, 33, 32,111,119, 96, 61,185, 39,203,170,196,222,224,107,112,148,203, 27, 47,
-219,205, 74,157, 64, 79,117, 37,169,181,160,183,112, 80, 37, 9,220, 46,130,172, 20,109,198, 66,110, 92,164,148, 17,147,177,131,
-125, 4, 65,164, 19,130, 16, 60, 65, 10,156,247,148, 82,177,201,220,247,232,194,174,175, 30,247,241,198, 97,247,189,205, 64, 76,
-177, 87,165, 15,244,203, 33,240,239,191,255,144,213,234, 26,203, 89,227,121,212, 56,222, 91,182,124,180,105,249,160,181,201,109,
-209, 91, 58,235,232,188,231,141,217,140,177, 80,105,154,130,196, 72,205,195,118,203,119, 55, 75, 26,111, 89,219,158,223,156, 79,
- 24,149,138,211,113,141,174, 18,144,208,247, 62,187,106, 6,254,194, 38,241,159,223,171, 13,167,166,192,199,192,188, 52, 44,179,
-229,175, 85, 10,147,131,203, 61,235, 89,198, 12, 92, 52, 6,188,231,246,184,230, 37,163, 24,155, 18,139,160, 50,146,141,247,232,
- 50, 1, 42, 23,109,199, 90, 73,182, 62,166,100, 64, 3, 66,241,214,124,194,215, 15,198,120,161,121,121, 90,112, 22, 13, 55, 75,
- 77,101, 12, 31,184,136,158, 76, 88,186,152,198, 98,179,227, 84,213, 31, 28,103, 21, 72, 65,236, 33, 78,103,208,183,196,110,147,
-153, 60, 45, 49,122,196,170, 5, 35,120,177, 48,124, 81, 4, 14,149,198,216, 45, 19, 4,211,232, 41, 98,224, 32, 68, 76,112,156,
-120,199,204, 57,110, 8,203, 76, 9,198, 49,224, 67,154,153, 76,243, 89,227,148,230,134, 22,156,245, 61,151,155,142,190,235,248,
- 97,223,243,155,199, 39, 84,117, 65,107, 97, 86,215, 92, 54,150, 82, 74,130,150, 28, 85, 99, 30,110,183, 92, 5,135, 21,146,195,
-241,132, 88,150, 76,141,226,223,175, 59,190,120, 56,225,127, 63, 91,242,230,233,156,247,130, 98,189,109,185,168, 70,156, 69,201,
-185, 46,120, 20, 20,151,133,100, 93,141,208,125,203,131,162, 36,218,158, 54, 68,214,118,139,149,146, 18,152, 20, 21,181,128, 32,
- 4,165, 76,202,142,149,208,132, 66,243, 75, 41,105, 11, 13, 66, 19,251,204, 32,177, 54, 87,235,201,131, 66, 20,131, 24,138,127,
- 26,187, 50, 25,167, 17, 73, 89, 33,108,228, 31,222,121,135,127,216,158,243,163,159,191,131,248,249,251,216,251,247,249,222,197,
- 21,127,119,254, 17,151, 54,240,151,219,134,135, 49,119,212,188,205,243,104,201,178,235,185,138, 32,116,137,142,130,153,174,232,
-172,103,185, 92,241,224,236, 17, 63,251,233,219,169,197,255,100, 12,242,185,189, 46, 69, 18,135,201, 73,191,112,109,146,153,136,
- 49,237,151, 24,147, 90,219,117, 16,183,233, 12, 27,176, 66,195,156,221,217, 92,120,248,103, 83,119, 31,195, 19, 13,184,156, 44,
-171, 45, 50,219,198,147,228,144, 99, 62,159,180, 73, 95,183, 13, 87,214,115,222,245,156,181, 13, 29,145,143,154, 14,240,220, 54,
- 37, 19,173,169,202, 18, 81, 20,136, 0,203, 16,105, 4,124,188,245, 44, 66,143, 20,146,206,123,212, 75,223,250, 79,190,115, 52,
-153,208, 52, 61, 74, 74,230,227, 17,158,200,168, 42,240, 46, 34,181, 32, 34,112,155,158,174,181, 68, 21,113, 25,104, 38,133,162,
-215,138,205, 53, 15,181, 74, 72, 81,165,161, 40, 16,166, 72,154,195, 85,226,133, 11, 41, 16, 82, 34, 66,248,212, 85,186,248, 44,
-213,236,147, 82, 9,207,188,224,250,233,120, 22, 67, 70, 65,106,184,218, 36,173,243, 1,124, 84,150,169,106,172, 50, 16,174,205,
- 64,183,206,165, 27,147, 37,187, 49,185,194,235,250, 84,149, 58,155, 4, 69,162,206,179,195, 92, 29,154, 44, 41,251, 28,158,232,
- 83,173,113,246,102,221,196, 92,221,102, 31,224,207,203, 36,148,251, 10, 38,207, 32, 90,254, 58,211,148,225,154,151, 38,155,115,
-200, 93,165, 94, 21, 41,211,143,121,129,203,172, 75,175,247, 56,162, 74,166,217,221,112, 47,101,222, 72, 46,238,180,211, 33,121,
- 14,136,231,184, 2, 94,163,240,243,107, 41,138, 44,212,147,193,133,200, 93, 66, 1,169,107, 80, 12, 20, 49,149,174,171,146, 72,
- 37,121,169, 86,244, 2,162, 84,220, 80,130, 72,164, 12, 18,167, 53,151, 93,138, 3, 70, 8, 60,145,222,197, 36, 83,160, 4, 91,
- 23,104,165, 64,100, 52,123, 31, 2,107, 34,150, 72, 23, 50,200,125, 0, 80, 14,116, 64,246,131,116, 76,239, 25,247,184, 57,207,
-117,101, 31,119,137,222,179, 80,184,146,116,240,108, 92, 18,134,233, 50, 42,121,209,166,206,154, 8, 44,188, 99, 42, 3,239, 44,
-214,172, 99, 75, 27, 28, 15,182, 43,254,231,243, 75, 26, 2,116, 91,188, 86,124,169, 44,209, 74, 48, 19,169,122, 17,125,210,218,
- 47, 74,193,127,115,113, 9, 49,112,199, 68,156,212,220, 45, 53,165,142, 44,188, 96, 36, 35, 74, 72,148,214, 4,231, 48, 85, 65,
-225, 61,239,185,184,147,202,173, 12,127, 50, 41, 57, 40, 19, 55, 57, 40, 65,244,129, 32, 21,203,198, 81,149,154,131, 74,243,161,
- 13, 44,132, 72,107, 1,205,237, 66,243,173,121,197,214, 71,180,150, 60,116,112,107,172, 89, 59, 24,213,134,210, 40,222,147, 37,
-219, 16, 19,208,238,255, 99,238,189, 99, 61, 95,243,251,174,215, 83,190,237,215, 78,155, 51,103,214, 69, 66,164, 0, 0, 32, 0,
- 73, 68, 65, 84,230, 78,185,125,247,102, 91,108, 92, 18, 82, 12,137, 73,140, 67, 81,148, 40,144,200, 18, 36,161, 8,146, 16, 16,
- 2, 36, 4, 1,139, 16,100,197, 40, 10, 37, 18,130, 72, 38,160, 68, 72, 17, 9,144, 4, 41, 9,113,130,133,141,157,141,189,235,
-189,190,187,183,151,185,211, 79,251,245,111,121, 26,127, 60,207,247,252,126, 51, 59,115,119,238,238,218,230, 39, 29,253,102, 78,
-253,150,231,251,124,218,187,184, 16,109,165,203, 42, 94,199,193,110, 52,152, 17, 33, 34,236,173, 39, 24,147, 88, 28, 81,247, 64,
-212,142,217,168,228, 5,233,153, 52, 53, 19,173, 25, 56, 71, 30, 28,165,119, 20,193,115,205,123,246,124,224,102,112,236, 8,197,
-208, 7,156,119, 12,115, 69,200, 20,165,132, 34,203, 25, 2, 94,107, 42,165, 9,153,164,173, 27,156,177,188, 62, 63,227,115,131,
-146,169, 5,153, 23, 12,203,140,133,135,157,224,153, 5,143,237, 28,183,219,154,145,173, 97, 52, 97, 55, 87,124,109,209,240,219,
- 14, 38,252,141,227, 5,255,244,141,125,126,177, 9,236, 6,135, 27,143,120,104, 28,203, 97,197, 42,215, 44,101,206, 45, 23,199,
-132,167,229, 24,233, 13,247,178, 10,231, 59, 78,100,212,104,111,133, 98,207,123, 50,149, 69, 81, 20, 17,253, 10,102, 66, 82, 75,
-133,206,179, 24, 60,170, 42, 74, 28,251, 16,247, 52,145, 0,102, 93, 11,170,138,160,179,124,152, 48, 29,253,152,171, 76,108,136,
-152, 8, 10,225,160, 94, 19,110, 63, 72, 82,217, 49, 14, 48, 59,135,243, 21,167,119,239, 67,102,226, 24,204, 16, 11, 45, 37, 97,
-181,138,123,133,206,168,145, 28, 27, 19, 45,107,235, 6,230,167,184,249, 49,191,117, 8,203,231, 46, 49, 27, 14,241, 87, 14, 17,
-105,116, 40, 18,151, 94, 44,154, 4,184, 53,113, 92, 42, 99,114, 44,188, 71,200,164, 44,105, 72,248, 30, 30, 45, 14,122, 32,113,
-143,229,233, 37,178,249,132,121,122, 15, 92,237,237,177,101,210,107,200, 84,234,108,203,248,245,190, 99,216,166,228,194,116,136,
-186, 23,113,138,251,230, 29, 31,120,117,144, 49,145,154,135,139, 5,123, 85,116,199,155, 33,184, 51,183, 60,112, 29,109, 16,100,
-206, 69,187,143,211,231, 62,255,227,151,202,138,195,131, 67, 6,229, 8,135,199, 7,137,150, 1, 93, 42, 2,208,206, 91,172,247,
-120,225,113,235, 14,141,226,206,201, 9,185,206, 41, 21,156, 88,139,171,202,120,162,163, 17, 20, 5, 66,231,209,202, 85,102,136,
-106,132,144, 57,232, 18,145, 43,196,213, 27,136,253,125,100, 94, 33, 28, 48, 25, 35,140,185, 8,246, 79, 21, 58,120,156,227,220,
-183,128,159,166, 96,246,164,205, 78,203,167,183, 6,234, 58, 62,208,125,160, 80, 58, 82,112,132,220,136,238,228,121, 20,159, 41,
-210,220, 60, 43,162,127,186, 46, 54,180, 30,151,204, 66,170, 49, 76,118,226, 53, 25,237, 69, 32,145, 73,173,170, 62,170, 60, 62,
- 99,207,116, 18,213, 16,155,143,109,192,198,246,174,253,237,210, 9, 47,226,121,143,152,223,250,189,246,187,128,143,232,187, 38,
-219, 51,170,162, 55,129, 9, 27, 4,125,159,193, 56, 31,175, 77, 31,216,117, 58,255,158,178, 21, 18, 77,207,233,212, 22, 79, 51,
-177,240, 12,162, 71, 89, 30, 17,245, 89,226,122,155,176, 65,146, 95, 20,197, 50, 38, 22, 58,221, 59, 29, 91,102, 1,193,168,144,
- 92,150,154, 67, 4,121,174,153,120,201, 82, 75, 86,193,209, 5,104,130,136,185,137,128,206, 75,108, 8,172,141,199,164,189,175,
-245, 1,129, 96, 37, 2, 93, 23,112, 34,224, 2,184,222, 25,206, 37, 26, 98, 15,150,115,102,115, 28,201,170,242, 66, 57, 80,111,
-105, 62,245,244, 54, 17, 30,101, 46,108, 39, 54, 38, 13,226,235, 38,182,150, 23,203,248,251,151, 77,244, 69,151,112,107,182,230,
- 94,103,248, 96, 93,243,230,116,202,187, 93,236, 80,209, 52, 96, 27, 94,203, 51,180, 23,140,139, 12, 39,192,123, 75,103, 58,132,
-107,249,169, 91,183,224,107,191,196,247, 95,191,194,155, 45,252, 96,174, 40,108, 71, 71,193, 78, 14, 50, 72, 22,173, 37,195,227,
-139, 40, 39,253,150,177,156,118,169,114,146, 57, 88,199,107,195, 18,109, 3,186,210, 40, 31, 88,121, 65, 41, 64,105,137, 8,158,
-185,151,236,123,203,187, 93,236,128, 77,114,201,203, 90, 48,206, 51, 4, 30, 39, 21,131, 66,210,248,136,155, 80,206, 83,150, 57,
- 39,141,225, 60,203, 8, 65,243,252,225, 46,115, 36,175,142,198, 92, 59, 60,228, 65,107,216,201, 10,218,178,138,215,120,111,130,
- 24, 14,162,163,152,105, 17, 34,130, 91,229,210, 96, 51,193, 11,133,102,108, 61,185,183,236,134, 24, 12, 14,188,167, 12,142, 75,
-193, 83,233,130, 1, 2, 33, 36,101, 94,177, 14, 22, 33, 20, 70,231, 72, 1, 51,175, 25, 20, 57,173,177,172, 58, 71,174, 37,187,
-202,115,189,148, 88, 27,104, 92,203,126, 57,226,111,124,252, 1,191,233,232,128, 51, 35, 25,105,193,199,171, 5, 55,139,156,135,
-235, 37,165,202, 88, 26,195, 48, 47,176,133,230,181, 76,241, 15,141,224, 55,168,192, 3, 27, 88,218, 64,145, 43,188,214,232,206,
-226, 70, 21,109,107, 57,169, 6,140,188,141, 12, 4,233,185, 63,152,144,117, 29,247,117,134, 51, 29, 58,120, 14,178, 44, 2, 66,
-181, 98,233, 61, 43,169, 56,115, 14,165, 52, 7,163, 49,214, 24,206,117, 18,181,170,235,216,241, 25, 14,226, 51, 94,175, 17,197,
- 8,225, 26, 24,143, 35, 66, 62, 47,147,186,102, 2,118, 10, 9,181, 65,180,230,201,243, 65,215,197,103,124,186,138,254, 32, 85,
- 74,238,215, 75,132, 18, 49,192, 59,135, 72,180,213,147,182,230, 11,162,225, 48, 56, 70,174,227,123,247, 15,120,173, 42, 56,204,
-161, 46, 11,236, 78, 73,123,235,254,102, 12, 40, 2, 98, 54,139, 69,149, 14, 49,200, 6,127,145, 28, 11, 64,104,129,104,252,198,
-180,170,237, 30, 21,159,113, 46, 97, 64,196,183, 40, 28,251,238, 90,162, 67,170, 84,196, 20,169,253,222,123,167,248, 84, 56,218,
- 16,227, 73, 82,181, 20, 89, 14,243,121,188,110,214, 65,215,225,181, 69, 4, 79, 7,188, 61,157,114,110,225, 87,206, 86,124,195,
- 71, 83, 93,141,167, 53,142, 44,120, 84,120,229,251,126,252,104, 88, 48,202,115, 26,211, 65, 80,228,121, 70,103, 44,166,115, 44,
-151, 53,133,214, 72, 2,243,243, 5,157,111,105,234,142,209,100,200,124, 49,231,116,185,194, 9,137, 32, 80,141, 71,152, 76, 71,
-138, 82, 53,224,249, 43, 99,174, 28,237,113,138, 70,148, 57,159,251,236,117, 78,171, 9,191,245,229,171,124,241,250, 62, 55,110,
-220,224,133, 23,143,216, 57, 26, 80, 29,237, 51,187,123, 26,105, 18,233, 66, 61, 18,216, 7, 35,184,113,149,193,171,215,241,151,
- 47, 17,130,100,255,243, 55,168,171, 10, 22,233, 2, 93,208,144,194,147, 85,128,158,198, 81,223,166, 6,109,223,164, 30, 20,145,
-229,241,226,183,201,212, 64,138,184,104, 85, 6,195,138,157,231,174,240,210,245,155, 28, 30, 94,102,255,240, 50,167, 90,198,108,
-108, 56,102,116, 48, 65,151, 25,197,168,160,235,173, 60, 85,111,174,146, 90,190,125,197,158,109, 43,221,109,117, 30, 68,223,122,
-214, 91, 85,221, 54,114,251,219, 13,236,114, 43,194,219,239, 78, 64,239,121,232, 61,149,172,105, 55,124,250, 71,164, 78,179,152,
-173, 42,155,252,217,187,216, 21,233,205,102, 92,194,105, 52, 46, 5,175, 52,127,178, 93, 82,126,115,155,204,249,147,132, 33,100,
-228,171,146,244,129, 34, 32, 70, 36, 3, 28,145,114, 26, 21, 3,102,136, 78, 75,253, 61,184, 52,200,216, 19, 32,165,196, 75,129,
-242, 2,145,197, 54,186,117,129, 54, 72, 10, 41,233, 66,192, 38, 49, 25,151, 38, 5, 42,128,113, 2,227, 33, 47, 36,211,149, 99,
-156, 5, 58, 43,104, 3, 27,231, 54,182,170,117,159, 54,188, 94, 58, 86, 36, 4,188,176, 41,153,217,106,195,251, 20,216,123, 41,
-217,167,113,102, 31,255,156, 75, 88, 9,124, 84,137,236,186, 40,247, 58,175, 99,224, 63,153, 70,113,164,147, 41,180, 6, 95,106,
- 6,101, 78, 33, 20, 70,120,166,181,225,254, 98,193,195,213,138, 91, 93, 3,187, 7,220,245,128,169, 57,238, 26,180,204,184, 82,
- 66,112, 14, 47, 2,123,133,198, 18,216,213,129,251,235,134,159,175,155,205,102,234, 13,131, 34, 99,224, 28, 59, 58, 10,148, 8,
- 39, 40,114,197,178,131,221, 42,218, 87, 22,120,190,186,114, 76,187, 88,225,151, 18, 62, 87,198,103, 97,175,202,168, 77, 32,211,
-138, 69,109, 25, 8, 88,104,141, 86,130,155,133,102, 55,211, 76,148,224,185,209,128,171, 18, 6,227,146,145,128, 23,181,230,174,
-147,180,137,154, 41,202, 17,248, 22,177,183,131,144, 25, 12, 74,196,106,133,176,134,121, 11,147, 81,198, 16,176,198, 32,157,229,
- 57,160,178, 29, 99,161,145, 2, 50, 93,144,101, 37,186, 31,237,229, 5,133,138, 73,104,208,146,113,166,105, 17, 60,236, 28,151,
-170, 44, 90, 11,120, 27,231,190,206,112,125,178,207,207,127,244, 54,159,219, 29,178,108, 21, 95, 62,189,203,251,243, 41, 39, 54,
-240,222,114,202, 81,174, 49, 42,103, 60, 26, 97,144, 8,227,120,223, 9, 94,112, 29,239, 53,150, 60,207,105, 8,228, 85,193,170,
-109,249,184,241, 12, 27,131,215,130, 27, 93,203,221,172, 96,108, 45,239,101, 35,110,168,192, 89,174,160,109, 89, 42, 77, 27, 76,
- 82,225,243, 44,157,163,201, 10,166,192, 90,130, 80, 25, 50,196,209,128, 2, 78, 36,136, 50,131, 32, 17, 62, 89, 6, 27, 27,139,
- 27, 9,162,168, 18,189, 55, 61, 99,174,139,235,218,153, 68, 91, 53, 79,239,190, 58, 23, 43,254,118, 13,183,238, 66,115, 22,139,
- 35, 43, 16, 66,129,206,162,193, 15, 22,161, 20, 63, 58,169,216, 41, 42, 94, 27, 12, 9, 69,201, 85,145, 81,238, 93,101,112,237,
- 69, 14,242, 9,239,200, 22,206,102, 17,176, 26, 98, 1, 37,188, 68, 12,203, 24, 42,164,142,232,244,144, 70, 65, 26,200, 20,194,
- 6, 68,219,196,125,225,162, 99, 40, 55,202,163,125,108,121,218, 51,151, 12,189,200,147, 16, 88,111,112,209,218,184, 55,214,109,
-108,185, 23, 9, 25,239,100,194,114, 37, 64,114,109, 17,227, 81, 82, 30,141,157,197, 7,199,115,222,235, 12,191,180, 88,240, 86,
-103,248,149,217, 57, 31,187,150,105, 91,227,148, 70, 91, 67,158,231,212,205, 10,133, 63,250,241, 59,193,115,117,103,140,119,158,
- 92,122,150,211, 25,214, 7,206, 78,103,228,185,196, 5,207,124,186, 64,229,177, 53,217, 57,195,116, 57,103,109, 91,156,240,248,
- 16,168, 84,204, 96,126,203,149, 29, 86, 78, 50, 40, 74,214, 94,242,112,225, 24, 12, 11,254,169, 87,174,240,206,220,243,153,195,
- 35,190,231,230, 53,170,114,196,205,171,151,121,225,218, 21,118,138, 9, 26,201,135,173,138,173,156,208,123,125,235,104,209, 87,
- 14, 96,239,128,207,188,122,133, 23,246,247, 56, 26,143,249,204,243, 87,152,228, 37,121,165,153,154, 0,139,122, 35,230,209,143,
-156,241,207, 30,212,121, 74,181,115,225, 5,222, 70,212,162,105,226, 2, 80, 58, 6,139,221, 61, 62,115,120,133,113, 57,224,234,
-254, 97, 18, 16, 8, 76,155,154,124, 56,100, 82,229, 28, 14,247,208, 82,131, 46,105, 93, 20,102,136, 51,248, 52,247,245, 91,157,
-129,167,233, 57,245,173, 32,177, 69,221,122, 90,235,245, 89,231,234,189, 36,162,181, 27, 78,253,119,250,202,242, 24, 44,157,219,
-104,202,247,221,134,190, 58,247, 9,123,208,251,102,251, 44,206,222,116, 17,245,200, 67,114,109, 19, 41, 9,146,230,209, 57,149,
-243,113,206, 37, 68,162,202,125, 11,197, 60,159,152, 8, 33, 9,190,248,176,209,175, 87,125, 64, 76, 74,128, 9, 60,151, 75,201,
-149, 44,224,149, 66,132, 64, 41, 21, 34,147,200,214,162, 69,228,188,214, 46,144, 73,193,210,165,241, 19, 73,168, 71, 6, 58, 98,
-176,215, 66, 50,235, 28,251,165, 96,218,121,132, 80, 81,255,189, 7,202,185, 45,201,101,159,230,235, 93,136,227, 0,195, 38,160,
-123,187, 1,220, 94, 88, 10,247, 35,249,176, 17, 61,250, 52, 52, 70,159,240, 14, 93,172,202,105,214,177, 74,154, 47, 98, 37,214,
- 56,234, 97,201,238,112, 68, 45, 84, 84,250,106, 91,222, 94,157,241,141,211,227,184, 57,133, 54,254,188, 84,180, 93,203,171, 90,
-113,169, 42,208,222,146,123,139,177, 29,235,166, 37,152,142, 91,203,154, 59,205, 42, 38,102, 54,118, 90, 76,240,236, 11, 23, 59,
-118,157,163,212,154, 81, 6,227, 76, 80,119, 1,137,231,108,109,248,242, 42, 49, 71,130,165, 20,129, 87, 39, 57, 89, 8,212, 54,
- 80,230,146,186,181, 28,142,114, 30, 58,201,158,136, 90, 2, 15, 87,134,135, 94, 48,169, 10,126,102,217,241,249,157, 10,227, 61,
-107,231,185,167,114, 6, 2,166,198,199,128,164, 52, 98,180, 27, 55,226,241, 8,225, 90,184,113, 3,121,124,134,220,155,112,251,
-225,130,135, 18,118,139, 28,101, 44, 89,107,184,162, 20,121,240, 20, 58, 39,136,140, 78,120,178,162,164,149,154,165,212,204,242,
-140,214, 89,100,145,211, 41,197,188,131,188,208, 52,105,162,210, 9,133,203, 53, 70, 73,206,231, 39, 8, 89,240,225,236,156,111,
- 44, 78,104,186,150,198, 59,186,213, 57,214, 59,238,170,140, 35, 33,216,203,115,198,147, 33, 93,145, 83, 56,203,219,171, 53, 7,
-163,146,247,215, 29, 7,185, 98, 97, 44,120,193,243,149,226,171,181,227,121,215,113,191, 40,184, 92,175, 57, 41, 42, 94, 20, 53,
-191, 18, 10, 46,249,142, 51,159, 71, 91, 88,165, 57,183, 13,194, 89,230, 42, 34,227,167, 8, 92, 86, 97, 69,236, 72,246, 30,111,
-153,210,156,133, 4, 94, 93,214, 8,159,244,210, 69, 74, 56,139, 10, 17,210,243, 95,183, 17,152,236, 92,178, 12, 53,207, 54, 86,
-117, 17,185,206,233, 41,156, 45,225,228, 46, 66,198,145, 17,193, 35,112,252,216,254, 46, 71, 90,113, 73,105, 66,150, 81, 27, 19,
-105,155, 7,151,232,148,164,243,146,243,197, 49,243,227,211,248,247,186, 14,145,233,232,236, 23, 98,146, 32,178, 12,145,101,124,
-166, 42,249,129,225,132,239,219, 25,113,121, 84,241, 97,211,193, 98,141,104,235, 88,100, 94, 20, 80,225, 81, 23,204, 79, 74,164,
-123, 86,144,202, 19,107,200,167,234,191, 77, 32, 96,210,190,159,168, 74, 33,141,133,219, 68, 33, 54, 53,162, 72, 99, 72, 27,147,
- 34,187,110,226,179,185, 88,196,235,106, 26,192,178, 12, 48,117, 14,154, 21,139,229, 20,197,240,198,143,163, 53,171,188,229,189,
-211, 19,186,110,205,170, 94,178, 88,206, 25,100, 37,139,229,156,118,213,144,149, 25,117,179,166,110,107, 58,211,210,212,134, 7,
-235, 57,157,141,252,220,178,200,184, 57, 26,112,175,243, 72, 33,184, 57,172,184, 84,150, 84,227, 49, 47, 14, 7,220,237, 52,207,
-141,246,249,220,165, 93, 46, 29,238, 33,244,128, 60, 31,176,172,225,218,209, 37, 6,229, 46,191,225,218, 30,183,145,100, 71, 67,
-218, 51, 3, 42, 82, 88, 68, 57, 97,242,202, 33, 47, 31,236,115, 48,218, 97,111, 48,228,112,119,143,241,104,204,225, 96,192, 45,
-187,198, 28, 47, 99,150,247,248, 60,245,105, 23,252,241,215,211,132, 90,250,141,175, 87, 47, 19,105,243,151, 10, 10,205,100,103,
-143,107, 59,251,232, 92, 68,109,230, 60, 71,105,205,195,102,201, 40,215, 28, 14,118, 81, 85, 73,145, 21,100,153, 98,106,218,168,
-144,214, 75,154, 90,191, 21,212,213, 39, 13,193, 55,224,177,237,238,130,248, 54, 85,253, 60,223, 12,178,250,110, 4,244, 30, 87,
-208,219,121,170, 36, 98,225, 92, 2,191, 36,227, 27,111, 35, 55, 93,248,232,179, 45, 4, 84,217,102, 68,162, 19,133,174,179,155,
-108,183, 75, 52, 26, 29,185,216, 40, 25,103, 79,223, 74,194,177,111,122, 8,183,145, 93,237, 43,245, 30, 97,174, 19, 61, 80,101,
- 23,151,246,160, 82, 49,121,150,154, 66, 4, 26,235,201,115,133,176, 30,163, 99,219,253,196,120,134,153,162,243, 62, 61,144, 34,
-101,248,241, 60,140,243,136, 16, 88, 58,129, 34,208,132, 4, 16,236,250,121, 91,182, 25, 37,244,163, 6, 69,194, 16,244,237,119,
-185, 65,228, 7,191, 9,236,166, 79,254,122,189,130,111, 35,193,235,193,133,230, 9,206,129,133,132,157, 93,142, 39, 19,238,250,
-192, 7, 93,203,237,174, 97,213, 52, 48,155,194,249, 60,178, 58,164,143, 96,164,182,230,195,206, 82,154,150,113, 48,204,218,142,
-179, 85,205,213, 76,242,191, 61, 56,227,157,243,135, 73,167, 33,206,235, 9, 14,218, 53, 15, 77, 96,228, 26, 14, 16,100,193,225,
- 13, 52,173,103,191,128,197,178,227,221,181,231,225,114,158,128, 70,154,182, 53, 12,218,142,231,138, 28,147,148,251,118,114,201,
-131,149,225,249,161,166, 70,114,123, 29, 55,249, 99,149, 49, 53,142,239, 29,228, 76, 91,143, 44,163,166,196,170,181, 84,185,230,
- 76,228, 72,173,227,101, 46, 7, 48, 60, 64,116, 43,216,191, 18,167, 95,135, 59,136, 92, 35, 77,203,202,192,187,167, 11, 74,233,
- 25,229, 25,151,124, 64,133, 16,193, 75, 66, 18,202, 17, 11,192, 8,201,188,200, 57, 15,129,121,145, 99, 58,143, 85,130,221, 34,
-167,238, 2,115,235,201,116, 52,241,176,222,211, 5,133, 10, 2, 45, 44,185,107, 25,218,134, 35, 12,106,181,166, 11, 30,235, 44,
-222,180,124,102, 56,162, 44,135,156,173,107, 58, 27,104,138,140, 97, 89, 96, 3,136, 76, 99,165,228, 82,161,201,141,225,235,181,
-229, 75,149,226,174, 13, 28,212, 75, 78,138, 1, 59, 77,205,219,162,228, 53,209,114,203,105,174, 20,146,115,151, 49, 51,134, 74,
- 6,238, 16, 48, 93,199, 90, 69, 96,180, 19, 30,167,114,156,240,180,222,209, 56, 79, 14,100, 69,193, 92, 9, 66,145,131,174, 16,
-203, 6, 81,175, 99, 65,214,196,103, 84,244,242,225,109,253,116,134,204,179, 96,166,154, 85,148,133,158, 30, 35, 76, 7,133,100,
-183, 26,113, 40, 5, 55, 39, 21,166,109,240,214, 80,230, 25,109, 8, 24,103,184,187, 94,115,239,252,132,175,188,255, 17,194, 73,
- 68,231, 99,101,222, 69,193, 28,177,182,136,221, 1,162,200,249,220, 96,192,111, 59,188,204, 75,163, 33,135,229,136, 93, 41,169,
-131,227, 65,211,196,174,172,138, 93,232, 56, 7, 79,178,197,189,246,198, 39,137,123,109, 7,253, 44, 75, 21,120, 29, 11, 23,111,
- 19,215,189,215,154,207, 54,117,156, 78,154, 28, 69, 1,164,113,116,103,146,158,135,139, 90, 31,237, 58,106,165, 44, 22,176, 90,
-131, 89,227,108,203,108,189, 98,229, 12,138,234,218,143, 51, 95,176,250,232, 1,237,170,227, 36,147,124,124,114, 31, 47, 61,211,
-245, 25, 67,157,241,112,113, 70,103, 60,245,122, 77,231, 28, 15,166, 51,130, 2,211,116, 56, 23,233, 6, 90, 74,172,212,104,165,
-185,185,179,131,214,146,115, 39,121,249, 96,143,198,105, 46,143,247,249,236,243, 71,140,247,118, 17, 33, 99, 60, 26, 32,100,198,
-254,222,144,114,144, 51, 28, 87, 56, 49,228,114, 85, 49, 81, 57, 31, 45,150,201, 28, 69,161, 94,185,202, 43,187, 19, 46,141,247,
-120,238,202, 33,121, 86,161,164, 38,211,154, 60, 83, 28, 86, 35,222,237, 44, 44,231,207,102,105,250,164,192,254,137, 65,161,111,
-161,244,193, 84,199, 10,202, 43, 76, 89,178, 55,170, 24,230, 21, 32, 25,228, 21,139,122,206,173,143,239, 83,211,113,249,224,136,
- 16, 60, 66, 42,230,203, 53,171, 46,192,226, 52,182, 91,218,100, 55,218, 31,179,122, 26,230,191,167, 81, 36,179,145,199, 3,185,
-148,191,190,114,189,125, 80,205,212,134, 59, 31,182,132, 81, 66,106,201, 27,226,249,246,109,113,225, 99,149,222,227, 35,212, 99,
-247,196,121,144, 46, 58,192,133, 46,174,250, 50, 79,201,208, 86, 39, 96,187, 99,241,120,128,239,231,251, 23,109,235,176, 81,108,
-147, 91,216,130,222, 4, 38, 5,228, 74, 75,198,121,148,124, 85,193,179,212,138, 29, 68,148, 8, 16,129,153, 9,204,131, 99,148,
- 43,230,157,143, 46, 98, 58,141, 51,186, 68,147,233, 81,238, 66,160,144,216,158,182,102, 98, 62,131, 74,157,136, 11,237,247,109,
-128, 92,234,188,169, 45,133,187, 94,237,175,175, 20,122,122, 99, 38, 54, 73,222,119,178, 14,244,150,110, 65, 63,158,217,219,131,
-201, 36,105, 12,196,141,134,102, 13, 39,103,240,224, 1, 76,167,112,182,138,115,251, 0,116, 29, 31, 55,107,190,182, 92,242,141,
-197,130,119,231,231,252,163,217,138,245,244, 20,104,227,172,190, 91,166, 68,162, 77,109,217,142,165,183,140,125,195,201,186,101,
-136, 67, 89, 67,179, 92,240,206,210,241, 75,211,227,120,124,245, 10, 86, 51,232, 58,202, 44,167,109, 59,158, 47, 74, 74,239,184,
-189, 50, 92, 25, 40,140,241, 88, 23,131,237,137, 9,236,201,168,168, 39,149,228,221,206,177,155, 41, 68,107,184, 84, 40,154, 92,
- 19, 28, 12,164,160,214, 69, 66, 59, 7,198, 7,215, 48,206, 82, 12,118,240,121,133,152,159, 34, 71, 35,228,116,129, 8,158, 59,
- 65,177, 50, 45,101,221,113, 35,203,241, 90, 99,164,192,102, 26,151, 21, 60,208,138,133,146,156, 16,112, 66,178, 20, 1, 13, 44,
-141, 67,100,130, 70,150,212, 66,176,176, 22, 87,140, 8,182,137,213, 62,142, 44,147, 92,151,146,231,188,231,149, 92,243,170,146,
- 92,111,106, 14,149,229,103,151, 43,174,231, 3,230,109, 67, 94,150,220,152,148,152, 65, 73,176,142, 61,165,168, 67,164,151,221,
-211,154, 87, 69,224,163,181,225,200,183, 76,199, 35, 70,139, 5,205, 96,192,117,183,228, 45,167,184, 26, 60, 43,161, 25,200, 22,
- 67,198, 87, 90,184,164, 28,247,179, 44,178, 59,164,196, 7,129, 64,226,132,160,243, 14,165, 20,101,158,161, 5, 28,230, 67,230,
- 74, 97,125, 2, 23,170, 28, 17,146, 40, 87, 16, 81,213, 77,248,167,232,114,232,111,201,187, 21, 59, 59,112,249,185,168, 33, 34,
- 36,204, 27,132,143,129, 53,175, 74,110, 12, 71, 92,173,114,246, 29, 4, 17,232,218, 14,103, 12,239, 47,167, 60, 88, 28,243,149,
-135,247, 88, 26, 71,176, 14, 33, 4,194, 69,148,190, 12, 1,161, 2, 66,103,136,178,228,247,222,120,142, 27,195, 9, 74,105,218,
- 0, 59,249,128,145,146,124,117,118,134,104, 76,242,140,176,177, 99,156,165,194,226, 91, 5,244,237,174, 98,239,125,231, 83, 37,
-222,123,115, 8,159,104,189,114, 83,181,203,180,135, 6,153,152, 59, 2,130,137, 99, 14, 82,181,223, 39,225,161, 15,240,117,236,
-104,180,150,112,255, 62,254,228,180, 55,116, 73,175,186, 38,220,123, 8,147, 1,243,229,154,211,217,154, 15, 86,103,172,156,227,
-206,249, 25,171,182,230,225,114,206,188,233, 56,159,173, 65, 8,202, 74,199, 44, 53, 56,174, 12,135, 8,114, 66, 48,116, 40,174,
-142,247, 25, 21, 57, 71,123,251, 84,101,197,238,238,144,253, 97,137,211,154, 97,158, 83,230,138,241, 78, 69,166, 11, 70, 85,198,
-100, 92,208, 90, 73,240,146,231,143, 46,241,238,201, 41, 88,205,228,242,132, 47, 61,119,149,203,123, 59, 88,231,168,134, 21, 77,
-107,144, 34, 74,152,238, 78,134, 24,223,240,240,227, 89,204, 98, 62, 77,251,241, 73,122,229,223, 52, 31,241, 27, 78, 33, 50,141,
- 72, 20,120, 67, 40,135,236, 15,135, 40,161,201,179,136, 40, 61,155,207, 56,153,206,161, 94,145, 15,198, 4, 41,153,175,214,152,
-160,168,103, 11, 56, 59,137, 27,183, 79,148,184,237,106,249,137,213,122,216,208,237,250,121,164,148,143,190,255,122, 6,245, 94,
-184, 71,176, 89,244,143,207,214,165,120, 20,113,126, 33, 10,148,197, 5,170,179,141,245, 40, 36,250, 96, 58,175, 96,146,139,220,
-150, 88,139, 20, 27,141,251,109,113,156, 39,169,198,245,178,182,189, 26, 91,143,105,232, 33, 5,253, 72,227, 66,120, 38,178, 52,
- 70, 42,144, 73,133,204, 51, 38, 94, 98, 18,143,123, 25, 2, 66, 9,156, 15,212, 70,210, 6,183,169,178,123,157,249,237,164, 81,
-203,136,172,182,108,216, 18,189,118,127, 8, 91,247, 53, 5,117, 41,158, 78, 78,232, 63,231,229,166,130, 87, 9,112,167, 30, 51,
-177,249,180, 93, 22,173, 34,171, 32, 75, 6, 31,206,193,243, 55, 97, 56,138, 1,189,231,238, 26, 3,247, 78,226, 12,222,218,141,
- 89, 78, 99, 98,208, 54, 62,182, 9,235, 38,138, 83,157,157, 71, 37,178, 69, 29, 13,145, 76, 7,231,179,152,168,174,151,224, 58,
- 76,187,230,227,206,114,167, 91,242,230,123,223,224,117,114,190,114,122,194,157,197,113,236,146, 53, 11,104, 82, 50, 32, 28,211,
-249,130,223, 49, 41, 88,172, 27, 10,165,216,145, 14,237, 3,183,151, 29,135, 10,126,110,218,240,182,245, 20,109,203,213, 65,193,
- 73,231,216,215, 18,233, 2,119, 28, 76, 6, 5,101, 16, 28, 40,207,181, 65,133,149,138,203,185,230,197, 65, 65,238, 2, 47,238,
-237,114, 86,119, 88,161, 17,163, 61,196,236, 1, 98, 60, 64, 24,143, 88,175, 56, 57, 95,240,102,169,121,174, 51, 52,194,227,138,
-146, 7, 4,238, 10,193, 42,207,153, 6,201, 76, 10, 86,169, 45, 29,165,129,193,203,130,198, 24,222,247,158, 60,175,112, 1,202,
-172,164, 69,227, 8, 84,197,144,129,247, 76,138, 2, 35, 53,138, 64,169, 5,178,238,216,209,112,210,156,115,165,136, 30,228, 39,
-179, 6, 68,142,113,158, 97,149,161,172, 99, 26, 20,215,218,154,147,160,216,105,151,156,148, 3,118,166,231, 44,202,146,172, 89,
-243,150, 44,121, 77, 54, 44,100, 70, 97,150,204,173,166,202, 61,149,133, 55,169,144,139, 51, 62, 18, 57,121,183,160,201, 74, 22,
-237, 10, 47, 64, 32,162,254,188,247, 76,242, 1,147, 92,145,133,128, 31,141, 88,233,132,137, 89, 27,132,176, 96,171,136, 98, 23,
- 32,116, 21, 91,233,143,206,253, 54,115,230, 39, 5,247, 44,231, 71,255,153, 31,225,135,127,243,111,226,149,107,215,120, 99,177,
-224,210,171, 47,242,155,190,240,253,212,206,114, 54, 63,231, 67, 37,120,185,136, 94, 5,213,122,205,121,215,210, 90,195,237,213,
- 25, 63,125, 62,103,209, 26, 76,221,197,110,139, 3,145, 41,100,208, 72, 47, 16, 33,142,212, 68, 85,240,242,206,144,107,163, 93,
- 74,157,225,164,192, 19,184,179, 94,242, 13, 27,229, 92,133,105, 54,147,208,158,174,247,172,207, 87, 15,210,131, 8,178,201,178,
- 24,132,139, 98, 19, 79, 66,194, 21,245, 64,226,222,148, 75,217,132,210, 79,238,132,242, 49, 42,113, 15, 64,118,169, 51, 58,159,
-197,103,105,181,120, 44,168,247,175,243, 69,164, 28, 52, 53,204, 87,180, 77, 71,119,231, 14,139,182, 99,181, 88,179,246, 14, 39,
- 97,109, 29,133,200,200, 52, 92,159,236,166,226, 66,130, 40, 56, 28, 77, 40,117, 9, 66, 49, 40, 75,124, 16,148, 69,197,120, 82,
-144, 11,141, 46, 36,185,206,169,202, 12,165, 37,133,206,185,127,182,102, 60,169,168,215,150,229,170,229,189,245,156, 16, 96,103,
-111,196,141,201, 4,169, 20,229, 96, 68, 8,129,162,200,144, 82,162,242,140,224, 61,205,106,201,135,167,171,104, 15,251, 29, 85,
- 43,143,173,179,190, 74,223,174,214,251, 74,201, 72,152, 47, 56, 81,158,165,105, 88, 52,115, 30,204,207,249,120,185, 34, 28, 47,
- 97,113,204,162, 49, 44,100,193,170,113,172, 87,107, 56, 63,131,102,186, 1, 69, 61,158,241,169, 45,181,162,222,226, 20,243,232,
- 92,125,251,166,246, 0,191, 95,207, 42,221,152, 77,224,238, 93,215, 92,162,167,245, 98, 51, 61, 21, 77,138,180,112, 19,218,189,
- 23,120,208,249,134,222,209,163,194, 93, 2,143,249,190,165,159,109,180,223, 73,137, 85, 16, 27,254,188, 20,223,172, 77,208, 43,
-252, 93,180,220,229,150, 96,156,222,100,202, 23, 24,133, 88,173, 58,231,233,188, 96, 55,147, 72,173, 88,135, 16,213,183,164,226,
-204,153, 40, 90, 34, 21, 11,239,112,253,239, 17,114, 11,145,158, 64,124,189,251,157,148,155,234, 61, 79, 0,153, 92,197,207,245,
- 0, 69,169, 54,128, 79, 31,122,140, 76, 58, 23,177,105,226,244, 20, 55,122, 42, 32, 49, 64,110,111, 60, 23, 27,100, 9,187,123,
- 49, 0,127,210, 61,204,213, 70,132,135,116,188,229, 40, 50, 55, 38,147,228,183,238,162,134,117, 91,199, 17,210, 98,145,174, 41,
-241,221, 38,167,188,102, 5,243, 21, 44,215,176, 92, 65, 51,131,179, 57,204,207, 96, 49,219,108, 64, 15,103, 49,121,163, 23,206,
- 49,145, 51, 78, 32,204, 78, 99, 85,190,154,193, 98, 26,141,125, 22,231, 96,107, 70,193,208, 53, 75,190, 54,159,242,165,157, 93,
-190,122,255, 30,129,140, 15,206,166, 28, 73,248,219,181,225,246,249, 9, 47,155, 26,231,224,174, 9, 92,223, 29,226,114,141,237,
- 12, 7,147, 1,243, 69, 77,174, 53,161,200,208,198,209, 0,135,133,226,182, 11, 92, 31,104, 22,139, 53,217, 96,194,103,117,224,
-238,114,138, 24,237, 34,234,101, 76, 70,198,195,152,191,158, 28,243,122,166, 41,155,142, 51, 5,247,133,165,214, 25, 15,189,101,
- 46,162, 43,222, 89,235,145, 90,178,104, 37, 83,103, 80, 46,240,139, 1,106,173, 9, 50, 71, 7,143, 47,134, 72, 12,131,225, 1,
-187,190,161, 26,237, 97, 28,228, 90, 35, 84,134,149, 25, 82, 11,180,119,156,215, 29,109,187,166,198,209,214, 13, 39,117,205,123,
-139, 37, 95,110,226,109,184,238, 13,111, 4,201, 75,120,206,148,230,200, 52,156,150, 67,246, 2, 44, 60,188, 20,214,188,229, 75,
-246,154, 5, 75, 61,100, 20, 26, 26,167, 25,102, 48,182, 43,222,206,118,185,181,156,241, 1,154,118,126, 70,109, 5,132,142, 73,
- 94, 80,200,140, 66,106, 10, 25,169,121, 95, 24, 12, 57, 84,129, 87, 43,197,221,214,210,117,150,235,255,216, 23,152,220,184,196,
-252,206,233, 70, 91,253,137, 1,189,151, 72, 76, 27,110,177,173, 99, 81,241, 79,254,142, 31, 34, 43, 74,170,178, 34,180, 43,126,
-248,251,254,113, 94,124,233, 42,135,229,136,215,255,222,207,224,131,229, 43, 65,242,188,109,248,216,118, 52,182,227,141,249, 9,
-175, 47,151,220,239, 58,108,103, 32, 4,180,130,203,153,230,181,113,198, 97, 46,120,185, 42, 24,102,146,105,215, 34, 3,188,116,
-249, 18,151,171, 49, 78, 73, 36,112,102, 45, 31, 47,214,124,216,212,113, 93,158, 77,163,227,154,181,136,158,142,108, 62,197,126,
- 43, 28, 23,202, 81, 38, 68,153,242,182,141,231,107,125, 26, 69,102,177, 64,241, 73, 35, 30, 19, 71,146,157,217,236,151,150,141,
- 59,102,207,127,239,247,181,199, 18,249, 39, 7,245,254,101, 82, 22, 62, 95,196,247,182,141, 45,179,218,226, 0, 93, 13,241, 82,
-242,252,164, 98,214,193, 32, 83,152,160,168, 84,198,164, 44, 25, 14,114, 6,101, 73,103, 61,227,113, 69, 89, 72, 84,166, 25,143,
- 50,180,206,201,181, 38,203, 20,135,163,156,218,120,118, 70, 57,247, 78,107,242, 66,161,133,226, 82, 89,114, 26, 60,151,171,156,
-203,147, 33,151, 15,247,201,116, 70, 83,215,100,213,128,206,117,232, 32,152,173,102,156,175,150,124,124,190,136,179, 6,241,132,
- 13,254,211,112,184,183,214,218,133, 19,221,133, 2,155,221,180,107, 73,153,150,177,180,214, 48,111, 29,171, 69, 77,104, 13, 76,
-143, 47,220,197,194,218, 19, 22,211, 72, 21, 58,189,183, 9, 84, 79, 3, 89,248,173, 54, 75, 31,176,122,160,198, 54, 77,172,159,
-195,252,255,161, 74,239, 81,220,125, 64,223, 78, 58, 92,156,133, 94,160,188,149,220,146,133, 5,172, 74,224,186,132,109,232, 18,
-152,205, 54,209, 94, 53, 81,149, 98,208, 45,184, 48,177,239,171,239,222,198,180, 79,110, 50,189,201,146, 51,189,153,157,171, 68,
-147,203,179,216, 17,241, 91, 1, 83, 19,171,209,212, 17, 41,148, 64,151,154, 90,194,185,243,140, 81,120, 4,199,174,163,146,138,
- 22,207, 50,120,100,208, 92,108, 91,109, 66,242,247,107,165,200,211,188, 60,209,230,122,139, 90,147,196,120,250,174,131, 74,146,
-195,189,160, 69,235, 55,222, 1,189,127,122,216, 10,234, 23, 70, 48, 9, 96,163,253, 70, 88,231,113, 0,143,183,159, 28,208,203,
-100, 64,228, 21,148,137,163,223, 39, 39,210,193,229,195, 40,209,154,229, 73,201,175,142, 85,217,106, 25,209,243,189,138, 88,127,
- 49,251,249,188,183,113, 67,183,221,230,255,219,235,218,216,248,181, 85, 29, 19,134,222,209,176,141,237,120,206,231, 17,129,127,
-239, 54,156, 78,225,248, 12, 30,158,130, 11,116,161,133, 7,103, 96,107,222,152, 79,121,216,118,188, 59,187,207, 29, 7,111,204,
-206, 88,205,207,192, 26, 78,101,244, 65,120,161,138,231,119, 74, 96,183,200,200,188, 99, 80,106,186,206,179, 43, 3,115, 29,169,
- 92, 15,219,142, 10, 79, 94,100, 12,132, 2,103,200,117,198,157,144, 70, 72,222,192,238, 40, 6,171,206, 18, 60, 52,237,154, 55,
-230, 53,167,198, 50, 83,130,169,107,176,153, 70, 42,197,251,117,203, 88, 11,124,200, 88,219,142,129,202,248, 27,157, 97, 21, 34,
-234,126,222,181, 44,138, 49, 57, 1, 89,236, 48,212,154, 73, 54, 36, 83,138,188,218, 33,132,128,149, 25, 66, 6,140,214,184,188,
- 96, 25, 44, 43, 93,114,111,109,121,216,174,120,184, 94,210, 9,137,111, 87,228,182,163, 54,150,207, 75,193,173,224,185, 92,175,
- 56,174,198,236,173,166,204,144, 12,240,220, 86, 5, 47,179,230,196,107, 38,210, 80, 59,197, 80, 26, 22,157,195,232, 33, 52, 83,
-234,225, 46,221,106,198, 44, 43,112,237,154, 73,166, 24,120, 71,165, 50, 70, 89, 73, 41, 4, 47, 9, 65,165, 53,101,240,140,133,
-224,102, 33,248,229,198, 49,127,227, 29, 22, 31,221,142,227,201, 44,123,172,224,240,124,179,134,181,140, 40,240,155, 55,227,154,
-114, 14, 20,236,223, 56,228, 96,103,143,249,124,202,123, 15, 31,240,249,207,190,200,120, 88, 32,164,231, 23,126,246,231, 17,179,
-115, 40, 5,191, 60,155,241, 43,171, 53, 95, 93, 76,249,160,235,152, 37, 54,135,176, 32,130,163, 0,174, 15, 37,215,130,224,122,
-158,113, 45, 83,188, 88,229,124,190, 44,153,250,142,175, 52,158,225, 64,227, 69,198,185,247,124, 56, 91,240, 15,154, 46,106,149,
-244,207,208,114, 5,227, 33,131,223,248, 26,166, 53, 81, 95,254,153, 1,169,125, 98, 46,210,236,220, 38,234,106,114,105,202,212,
-134,174,171, 82, 66,159,103,233,185, 72, 96, 94,177,213,197,235, 85, 63,125, 82,170, 11,201,171, 99, 43,209,248,228,160,254, 36,
- 48,153,115, 17,241,106,193, 9, 73, 86, 22, 24,162,104,129, 71,115,115,156,211, 57,201,112, 56,164,208,154,172,172,168, 74,201,
-238, 32,167,200, 75,170, 44,103,152,107,138, 66,178, 55,208, 12,135,154,224, 5,231, 43,203,188,117, 52, 77,131, 16, 2,157, 9,
-102,211, 53,227, 60, 99, 55,207, 24, 15, 71,236, 76,134, 4, 41,217,153, 12,177,198,226,172,199, 99, 57, 62, 61,227,193, 98,206,
-241,157,227, 40,247, 39,210,220,226,211, 58,201,105, 54, 85,185,125,194, 92,221,250,141,168,135,210, 41,121, 72, 52,171, 58, 1,
- 26,234, 22,234,105,156,119, 36, 51, 3,234, 25,212,115, 88, 46, 30, 13,102,159, 22,208,212, 11,236,108, 1,166,127, 77,170,244,
- 94, 78,247, 66,130, 87, 63,186,137,123,183, 65,161,103,122, 35, 52,211,211,206, 50, 21, 1,109, 50, 75, 21,113,207, 17, 77, 82,
-177,222,166,192,214,165,202, 89,108, 2,122,150, 50,212, 11, 3, 5,187, 17,180,185,152,187,139,173, 17, 68, 66,138,247,179,244,
-254,251, 82,179, 35, 58,220,109,117, 69,250,177,128, 78,234, 51,169,109, 30, 4, 92, 41, 36,115, 3, 7, 69,129, 11, 30, 43,161,
-144, 18,237, 92,100,202, 11,193,220,137, 56, 79,239, 1,126,190,159,161,245, 65, 90,110, 85,162,108, 42,118, 82,117,155, 37,238,
-124,145,228, 96,149,218,120,169, 39, 36, 62,153,120, 52,145,203,182,100,137,101, 90, 27, 23,226, 53,225,217,129,143,187, 71, 49,
-104, 95, 58,140, 78,103,123, 7,241,239,181, 93, 74,138, 21, 92,218,131,157,253,141, 16,146,202,226,189, 57,157,198,164, 85,203,
-141,229,237,183,227,220, 88,232,152,196,229,122,115,252,214,193,170,139,188,122,211,197,251,179, 94,197,247,166,129,121, 18,231,
-152,173,224,236, 12,230,211,120, 47,143,239, 68, 33, 19, 41, 96,126, 12, 82, 34,164,231,104,114,137,194, 26,118,139, 12,103, 61,
-185,119,204,189,164, 8, 22, 33, 5,167,198,243,126, 23,165, 92, 95, 25,230,252,242,131, 5, 82, 73,158,203, 36,239, 47, 86,188,
- 58,168,184, 55,159, 69,151,185,249, 49,100,154,224, 60,161,243, 4,161,241,245,130,179,149,225,227,214,243,110,103,121,177,144,
-220, 53, 53, 87,164,228,107,157,103, 97, 13, 3,169,248, 74, 8,204,179, 18, 92, 71, 32, 64, 89, 97, 93, 96,169, 75,118,139, 28,
-139,100, 52,222, 71, 42, 65, 53, 28,226,243, 28,161, 74, 58,149, 51,151, 48,117,138,135, 42,199, 56,193, 74, 71, 51, 22,175, 50,
- 44, 6,231, 60,115,157,243, 57, 17,248,106,107,248,162,232, 88,150, 99, 14,204,140,243,209, 1,131,166,197, 22,154, 27,161,230,
- 61,147,115,168,162, 46,209,176, 16, 44,150, 29,168,140,117,103, 56, 46,198,148,171, 25, 62, 43,113,235, 37,181, 86,148,235, 53,
-215,171,156,177, 46, 41,165,228, 72, 43, 6, 58, 39, 88,195,174, 82, 52, 30, 20,142, 43,185,231, 77,227, 19,180, 63, 21, 87,223,
-180, 38,182, 91,238,125,242, 91,240,252, 23, 94, 97,118,214, 69,161, 36,107,120,255,141,183,248,242,207,253,191,124,237,157,143,
- 56,195, 51, 18,134,213, 98,202,151,223,126,157,135,175,223, 2,105, 16,211,105,252,125,117, 29,237,120,219, 22,209,118, 73, 84,
-198,146, 9,120, 99, 58,215,121, 0, 0, 32, 0, 73, 68, 65, 84,161, 16,148, 33,176,175, 4,215,117,198,110,150,115, 41, 83,228,
-165, 70,123,201,131,213,138,183,141,229,151,235, 37,175,215, 29, 31,154, 58,185, 95,134,205, 94,159,229, 20,175, 94,231,115, 7,
-215, 57,203, 61,246,238,244,153,100,209, 31,109,195,167,185,155, 76,115,244,158,206,219, 38,141, 14,181,253,125,105,175,243,253,
-222,183, 69, 95,237,157, 37,123,230, 75,150,246, 54,185,121,230, 63, 93, 80,135,232,174,132, 74,148, 34,197, 11,151, 43, 38,121,
- 65,235, 21,207, 13, 53,247,106,139,119,150,221, 66, 81,150, 67,134,101,198,238,168, 64,233,140, 97,153,115,237,176, 98, 50, 16,
- 12,171,168, 45, 63,204, 21,109, 23,105,113, 81,225, 85, 32,133,143,182,130, 50,202,115,102, 2,206, 27,199,254,184,160, 26,150,
-232, 60,231,228,120, 74,150,103,172,151, 51,100,240,252,204,215,223,143,224,157,126, 13,169,240,236, 85,172,222,210, 97,233, 43,
-227, 94,213,205,251,111, 78, 50,123,234,129,177,241,130, 6, 31,219,131,245, 50,206,253,218,246,201, 0, 17,249, 29, 6,215,139,
-196, 66,126, 50, 79,242,187,253,234, 41, 95,189, 7,122, 79,197,208, 91,114,188, 38,233,196, 91,183,161,115,108, 87,231, 90,197,
- 74,149, 16, 3, 87,214,243,209,147,176,143, 49,169,130,139,226, 31, 23, 0,147, 62, 65, 80, 91,109,242,109, 32, 93,255,222,187,
- 69,153,110,139,186,168, 30,165,126,201,236, 17,188,227, 35, 16,220,222,254, 52,209,239, 68,166,169,125,224,160,136, 60,221,135,
- 78,177,151, 65,231, 2, 70, 72,242, 0,107, 41, 89,251,237,225,119,162, 84, 6,145, 90,240,169,122, 14, 79,160, 82,246,194, 19,
-219,163,131,190, 52,247, 46,137, 29,165, 99,179,189,118,116, 47, 68, 20, 30,109,199,247,172, 12, 23,158,157,234,248,217,207,176,
-115,227,136, 47, 94,127,129,207, 94,190,202,193,164, 98,111, 48,100,180, 55, 97, 58, 91, 70, 20,243,100, 2, 7, 99, 24, 95,226,
-168, 44,121, 41, 47,121, 41,211, 92, 17,129,187,245, 50,130,228,124, 6, 7,123,176,179, 19, 29,175, 92,247,233,214,150,115,177,
- 82,207,139,141,197,110,111, 35, 44, 84, 92, 11, 33,196,153, 99,211, 38,245,199, 38,126,172, 23,241,123,150, 43,184,127, 7,150,
- 45, 76,231, 49, 25, 88, 45, 1,139, 9,130,171,194,114,207, 8,246, 84,180, 73,253,192,194,190, 14,236, 89,195, 91,198,243,176,
- 54, 92,241,158, 3, 5, 31,118,158,151,117,148,240,157, 11,120,206, 89, 30,172,106, 94,174, 42,238,173,231,208,173,192,121,194,
-124, 69,232, 12,190,200, 9, 90,226,219, 53,222, 91,124,187,230,227,198,113,164, 60, 15, 76,195,184, 80, 44, 87, 11, 58, 33,185,
-107, 28,141,179, 4, 85,164,241, 75, 14,195, 29,130, 11,188,176, 51,100,164, 75,106,211,177,183,179,131,109, 44, 94, 15,240, 66,
- 98,149,164,182,130,135, 30,206,144,172,242,130, 38,171,232,202, 1, 70,101,248,124, 4, 58,227,133,172, 98, 32, 37, 63,176, 59,
- 98,237, 50, 14,204, 18, 91, 76, 24,155, 25,228, 67,178,174,225, 86,200,121, 49,119,172,140,163,202,162,214,142, 2, 90, 27,184,
-151,101,200,213, 28,202, 17,147, 52, 67,191, 36, 21,167, 46,112,128, 99, 95, 72, 74, 41,185, 36,115,118,114,117, 33,136, 56, 84,
- 25, 65, 8,206,157,225,235, 30, 56, 57,139, 34, 51,206, 60, 1,225,238, 31,107,197, 71, 53,207,217,233, 57, 44,167,143, 22, 41,
- 58,137,127, 53, 29,239,191,115,155,175,255,242, 27, 60,252,165,143, 98,101, 43,227,158, 35, 86,171, 8,160,108, 29,162, 73,232,
-118, 27, 41,146, 82, 10, 14, 66,224, 69,173, 57, 16,130, 61,169, 25, 40, 69,145,105,114, 45, 25, 72,193,204,123,102,235, 46,250,
-184,247,163, 57, 33, 99,210, 37,162, 2,101,240, 30,123,231, 12,183,171,153,189,254, 46, 98,189,250,244,123,168,216,162,173,170,
-212,189,236,131,114,175,176, 25, 32,250, 30,167,203,180,221,230,239,247, 48, 37, 34,128, 78,108,213, 86,129, 71,170,245, 79, 23,
-212,181,222, 40,229, 20,146,163,215,118,248,248,173, 51, 6, 59, 25,135, 69,206,221, 58, 16,130,229, 82,169,104,125,206,115,135,
- 67, 14,118, 75, 92,200,168,180, 96,127, 39,103, 50, 20,140,170, 28,239,147,228,102, 38, 49, 38, 90, 2,158, 44, 26,170, 66,225,
-124,224,225,201, 10,219,212,228, 89,172,182,134, 85,129,247, 2,149,229,120, 31,184,116, 48,230,252,116,206, 98, 49,229,175,191,
-119, 11,238, 78,227, 76,207,134,141,109, 39, 60, 91,245,208,239,203, 50,157, 95,106,219,125, 51,111,253,177,247,254, 63, 79,219,
- 60,251,100, 65,242,221, 49,178,251,213,160,161, 61,203, 61,183,143, 38,214, 17,101,190,149, 88,100, 58,137,192,164, 64, 45,182,
- 43,249,196, 41,239,101, 99, 67,136, 93, 14, 89, 93, 56, 41, 69,109,247, 46,205,200, 83,155,218,182,137, 54,152, 61, 26,196, 67,
-216,154,169,139, 13, 8,174,179,143,242,213,123, 84,124,182,165, 92, 87,136, 71,121, 52,130,141, 96,145,202, 55, 82,144, 40,130,
-119, 56, 41,105,131,140,167, 40, 21,181,151, 81,132,201, 64,166, 21, 75, 19,131,252, 69,192,118,225, 81,173,227,190,163,114, 97,
- 79,107, 55, 85,122, 63,203, 15, 61,152,166,167,203,184, 71, 1,112, 50,141, 6,182,147,153,190,187,224, 83, 30,209,111, 8, 97,
- 11, 68,248, 73, 70, 19,229,152,157, 27,215,121,245,224,136,113, 57,100,255, 96,159, 65, 62, 32, 24, 67,174, 20,235, 76,209,206,
-215,176, 63,132, 75, 87, 57, 26, 12,120,181, 26, 51,214, 26, 45, 96,224, 59,180,111, 57, 61, 94, 69,156,195,100, 24,223,203, 28,
-166,179, 79, 81,165,167, 57,106, 33, 35, 29, 32,139, 84,198,223, 48, 86,252,192,164,228,249, 82,241,193, 89, 27, 91,242,193, 63,
-106, 17,220,175,125,147,230,147,109, 19,255,109,218,184,233,175, 18, 24, 15,207, 92,121, 90,169,120,123, 54,165, 53,130,251, 77,
- 77,133,226,118, 16,212,171,154,214, 88,198,121,198,241,186, 99,100, 28,141,214, 28, 8, 48,171, 37,199,197,128, 87,114,201,219,
-243, 37,235,122, 14,198, 16,112, 23,114,253, 97,246, 16,175, 6,120,229,241,109,139, 55,150,102,177,224,195,179,134,219,243,154,
- 15, 79,167,220,111, 26,110,227, 35,157, 81, 15, 98, 48, 27, 31, 16,218, 8, 42, 29, 20, 21, 69,210,188, 23,163,138,243,117, 67,
- 59, 24,144,103,154, 51, 47, 17, 82,115, 39, 8,110, 89,139,202, 43,150,121, 69,208, 89,244,186,207, 39,144,143, 40, 6,251, 92,
- 43, 6, 92,157,236,130,200, 57,154, 20, 52, 89, 73,190,154,113, 76, 69, 22,106,138, 98,196,161, 52,220, 94,214,236, 23, 37,141,
-177, 49, 87,178,129,219, 2,154,166,166, 40, 42, 14, 4, 12,149,230,185, 42, 67, 90,203, 43,227, 10, 37, 20,218,117, 28,170,140,
- 61,149,145, 37, 48,104,147,196,151,156, 16,204, 3,124,109,185,140,207,129,173, 83,146,109,191,197,102,214,143,174,186, 39,235,
-132,132,100,137,108, 82,146, 95,102,136,139,194, 34,126,143, 72,227, 29,129, 71,212, 77,164,204, 39,243,149,163, 74,114, 83, 72,
-118,165, 38,151,130,137, 86,236,229,154, 12, 77,174, 36,135, 74,177, 11,204,188,167,113,118, 51,102, 18,177, 3, 23,178, 52, 66,
-107, 91, 86, 31,222,137, 20, 50,239,163,104,205,167,217,127,251,209,147, 76, 64, 25, 45,226,154,101,171,144, 20, 73,116, 75,176,
-225,253,135,237,107,145,246,191, 97, 21,181, 91,122,205,120, 69,220,255, 62,117,165,190, 45,253, 41, 60,228, 37,171, 44, 32, 86,
- 29,211,181,229,222,210, 83, 35,184,170, 29,153,148,156, 47,151,188,124,117,159,162, 26,225,140,225,104,191,228,104,183, 96, 82,
-169,200,231, 86, 34,250,119, 8,129,214,240,211, 95, 91,113,176, 3,171,218,208,218, 14,151,102,122,214, 88, 92, 16, 12,134, 5,
-206, 5, 70,163,156,229,162, 35,207, 21, 77,211,114,182, 88,241,238, 91,239,197, 86, 96,109, 55, 96,178, 94,151,248,211, 4, 76,
-191, 37,198,242, 29, 7,195,199, 80,119,223,205,224,254,204, 85,208,119,161, 59,208, 7,112,185,141,109,145, 27,113,159,222,246,
-243, 66, 19, 89, 71,208, 86,166,226, 70,237,237, 6, 5,223,219, 25,170, 34, 1, 67, 68,156, 83, 74,145,130,119, 6,126, 29, 3,
- 91, 89,110, 2,217,186,217, 82,164,235, 85,212,194,163,129,110, 59,160,235,100,222,162,229,198, 1,174,175,142,123, 81, 27,177,
-229, 97, 78,226,150,247,246,165,200,152,249, 42, 69,161, 36, 51, 20,153, 16,248, 16,144, 42, 32,180,224,172,182,228, 90,209,110,
- 75, 70, 26,255, 40,194,191,139,173, 59,218,232,149, 64,161, 31,173, 80,251, 4,167, 15,242,253,231,100, 15,186,179,155, 7,251,
-113,166, 99, 95,173, 15,163,146, 87,228,245,187, 77,119,234,147, 42,245, 27, 55,248,226,205, 27,148, 89,201,225,222, 37,138, 60,
-199,217, 14,107, 28,185,202,104,108,195,204,117,176,179,195,247, 29, 94,225,181,209, 37, 14,170, 1,141,181, 81,205,178,105,104,
-187, 21, 15, 86,117,172,146,178, 4, 20,156, 47,227,115,248,105,170,244, 11,202,161,134, 50,231,218,176,224, 55,142, 11, 38, 42,
-162,209, 39,165,228,195,217, 42,169, 42,202, 71, 85, 4,165,140,201, 88,153,197,107,161,100,220, 52,219, 52,207,151, 1, 86, 13,
- 93,211,209,154,154,208,213, 44,156,195,205,143, 57,246,154,145, 51,236, 6,207, 73,219,113,108, 58, 20,130,155,227,156,176, 94,
-131,214, 40,169,216,239, 26,238,173,107, 30,212, 43,172,169, 35,192,207,180,209,202,181,235, 8, 34, 39,172, 87,132,122, 77, 24,
-148,120, 99, 99,176,119, 93,252,220, 98, 78,168, 87,132,233, 50,186,194,217, 6,116, 65,176, 22,198,187, 72,161,121,101, 52, 32,
- 32, 56, 21,160,180,226, 65,158,211, 8,201, 87,140,163,203, 52,175, 11,141, 13,176, 76, 28,106,164,138,207, 80, 62,140,231,156,
- 15,184,190,187,199, 36,203, 24,142, 70, 20, 8,206,157,102,156, 11,140, 46, 56,104,150,172,130, 66,248,154,115,163,121,126,167,
-228,108, 89, 51, 25, 42, 22,235,192, 45, 33,120, 94, 40, 12,240,188, 18,236,141, 10,156, 23,220, 24,148, 28, 85, 21,227,108,192,
-218, 59,174,102, 5,210,116,236,231, 57, 57, 2, 57, 40,169, 9,120,173, 88, 35,185,237, 29,111,218, 4,152, 60, 91,125, 50,150,
-227,153, 71,190, 62,142, 52, 73,160, 48, 25, 69,150, 68,191, 71,167, 61, 78,116, 14, 97, 58,132, 18, 8,239,144, 62, 32, 21,100,
- 82,112,128,228,178, 20,236,228, 25,149,148,220,172, 74,174, 22, 21, 87,138,156,163, 34,231,234,160, 98, 87, 75, 62, 92,119,180,
- 18,130,210,132,196, 42, 10, 33, 2,154,195,178,133,179,179, 24,204, 71,195,232, 80, 39, 36,194,218, 79,103, 60,230,183,112, 39,
-125,210,211,155, 48,245,202,155,193, 63, 74,195,237, 5,208,122,204, 82, 94,114, 97, 92,214, 39, 67, 91, 73,252,179, 7,245,158,
- 58,165, 36,232, 97,148, 7, 60,158,163,158,159, 16,206,107,174, 95,175, 40, 50,203,135,115,195, 81, 41,184, 58,201, 9,162, 4,
-111, 57,220, 31, 34, 69, 96,119, 32,216, 25, 22, 56,231,104,141, 67, 11, 88,119, 6,239, 4, 95,255,224,140,247, 63,186,195, 32,
-207, 88, 45,150,204, 23, 75,214,171,154, 60,151, 12, 70, 21,121,158, 1, 10,103, 28, 69, 1, 77,227,112,193,241,254,253,251,204,
-117,160,187,117,188,213,170,120,140, 42,246,105, 91,220,223,141,224,123, 1,172,243,159,152,160,254,170, 6,116,245, 93, 41,213,
- 19,200, 73,110,141, 41,236,163, 25,202,246, 38,155,171,216, 38, 29, 12,145, 95,252, 44, 97,182,136,237, 81,231,160, 24,197,170,
- 44, 36,250, 91, 16, 81,205, 43,171, 54,116, 47, 37, 55, 52,144,117,162,147, 92, 56, 36, 37,224,160, 44, 54,237,233, 46, 5,204,
-109,103, 62,149,199, 68, 66,170, 13, 69, 48, 16, 91,181,170,167, 8,166, 81,128, 78,130, 57,201,122,148, 66,167,141, 34, 38,135,
- 6,193,160,204, 88, 27,143,150, 34, 62,143, 38,144, 73,201,188, 55,108,184,248,251,126, 19,204, 93,136,215, 34,108, 81,250,182,
- 91,240, 61,184,204,111, 85,250, 33, 41,205,117,110, 3,154,235, 85, 4,251,148,189, 99, 83,193,103,105, 3,232, 91,123,186,183,
-139, 20,159, 72,115, 44, 94,122,137, 16, 44,215, 15, 14,201,243,156,206,116, 40,145,108, 72, 9,180,193,113,188,106,248,210,213,
- 67,138,106, 55,122, 60,228,138, 65, 86, 96, 58,131, 20,142,135,179, 19,206, 62,190, 19,219,200, 75,147, 16,241,221,166,253,222,
-107,100, 63,237, 25,236,191,222, 3, 63,117,129, 28, 14,248,157,151, 42,118,178, 28, 47, 4, 74, 64,215, 26,222, 57,111,146, 35,
-152,217,172,181,190, 75,148,231,112,120, 53,174,177,174,222,140,204, 50,157, 68, 59,146,141,240,116, 30,175,213,131,187,169,117,
-187,100,161, 52, 67, 60,210,117, 72, 2,133, 3,107, 45,227,193,144,206,116,248,229,154,157, 66,243,229,243, 57,206,180, 9, 39,
- 99, 8,166,139,125,107, 27, 8, 82, 16,218,134, 32, 3,161,105,183, 93,182, 47,138,172, 96, 34, 88, 49,220,187, 15,195, 49,140,
- 71,113, 45,234,104, 39,122,170, 51,188, 16, 92, 30,230,220, 91,117, 92,175, 50, 62,108, 45,151,180,230,190,243, 88, 36, 43,169,
- 8, 34,128, 46, 19, 56, 42,138,232, 48, 28,115,105, 48,228,102, 38,121,241,112,135,182,181,168, 73,197,209, 32,231, 97, 23, 56,
- 20,158, 85,174,105,219, 21,222, 73, 14, 10, 56,158,173,216, 27, 23,172, 59,207,185, 23,236, 2, 75, 33,201, 93,199,225,184, 96,
- 71, 74,198, 74, 48,148, 25, 58,203,217,205,115, 14, 7, 35,240, 2,169,115, 86, 93, 67,200,114,234, 32, 88, 40, 65,155,101,220,
-117,158,247,140,224,142,243,177, 91,178, 92,197, 81,152,247,143,219,108,125, 27,237,201,222,157, 49,205,155,125, 44,222,132,220,
-224,124, 68,138,129,194,216,244,110,144, 34, 35, 35,160, 51,201,101, 45,217,209,138, 35,157, 49,210,154,129, 46,169,116, 70,153,
-229,236,102, 5,198, 91,172, 53, 76, 21,212, 4,100, 94,224, 93,228,185,203,174, 35,172, 26,112, 9, 1, 63, 44, 35, 45, 78,134,
-139,142,238,183,101, 27,254, 73, 64,233,139,175,251,205, 62, 96,211,124, 93, 37, 61, 13,107,226,216, 55,124, 26,244,251, 19,129,
- 90, 9, 1,110, 36,131,207, 95,197,124, 56, 67, 93, 31, 96,131,103,250,238, 12,177,110,185,127,122,202, 7,203, 53, 59,250,156,
-157,170, 64,229, 35,118, 70,146,163, 73, 69,221, 52,148,133,138, 0,145,206,197,153,185, 14,236, 13, 5, 85,149,209,186,142,233,
-188,229,193,241, 3,140,119,104, 41,145, 89,198,100, 84,224,141, 97,185, 92, 81, 86, 37,211,243, 25, 93,211, 81,105,197, 27,247,
- 31, 16, 86, 6,154,121, 82,183,106,191, 51, 77,244, 79,251,163, 23, 93,140,132,180,238,179,172, 39,217,168,249,111, 29, 67,191,
-227,164,194,109,241,161,229,227,227, 19,249,232,199,183,188, 78, 9, 76,160, 83, 48,247,114,155,103,245,205,235,195,165, 69,169,
- 50,194,206, 78, 68, 48,135,164, 38,167, 66,156,193, 22, 18, 66, 30,249,154,189, 87,124, 81, 36, 10, 88,153, 90, 81,126,179,128,
-123,164,123, 79,147, 99,139,214,214,250, 71,145,213, 69, 30,129, 39,190, 23,131, 73, 21,253,182,211,153, 21,155, 74,223,187,168,
-242, 36,185, 48,141,136,179, 52, 46,208,243,198, 57, 42, 41, 89,121, 8, 33, 32, 2, 44, 43, 25,171,101,221, 11,238,216, 77, 64,
-207,213,134,146,231, 82, 50,164,244,133,132,236,197,245, 19,233, 30, 52, 41, 49,201, 68, 60, 72,151, 42,110,145,142,143, 45,111,
-117,181, 21,220,243, 30,116, 19,175,247, 69,182,255, 45,198, 51,238,124, 73,117,245,136,138,232,243,160, 16, 12,134, 21,109,189,
-198,250,142,186, 93, 50,204, 4,223,115,253, 38, 85, 85,177,146,138,194, 11, 36, 6, 92,199,241,114,198,215, 78, 78,225,193, 52,
- 57,229,249,216, 6,116, 38,137, 3,145,186, 50,219,224,202,199,147,222,173, 17,138,146, 32,115,190,120, 56, 96, 47, 47, 24,107,
- 69, 16, 18,227, 29,223, 88,183, 28, 79,163, 90,221,133,176, 80,191,110,123,187,231,213, 44, 2, 40,133,219,162, 7,110, 9,232,
-180,233,231,219, 85, 52,179, 89, 45, 99,208, 41, 37,179,102,206,209,112,151, 83,211, 82, 8,193,165, 76,179,182, 29,187,206, 49,
- 42, 43,254,254,195,227,152,168,180,179,200,181,183,109, 4,188, 42, 69,176, 38, 6,242,229,121,108,215, 58,247,104, 48,127,236,
- 61, 38,170,115,194,217, 12,142, 14,211, 26, 43,200,117, 84,161, 84, 68, 13,251,179,214,114,181,140,250,235, 45, 30,107,124, 20,
- 43,234,129, 83,147, 73, 92,115,121, 9, 50,227,112, 92,112,115, 50, 64,103,146, 44,203,233,148,164, 13, 48,145,138,187, 86, 48,
- 86,154,219, 54,160,156, 99,218,121,148,119, 44,189,164,105, 45,149, 16,220,115,134,207,142, 52, 7,131, 10,225, 61, 59, 66,112,
-165, 28,178, 18,130,177, 86,200, 16, 24, 13, 7,212, 1,186,214, 50, 42, 43,150, 72,214, 69,206, 84, 42,102,206,242,160, 17,204,
-165,230,212,182, 56,103, 8,138,136,185,248,118,192,147, 79,220,134,108,194,219,116,143, 24,170,136,190, 5,191, 61, 81,115, 46,
- 78,161, 36,232, 92, 49,146,138, 29, 41,184,146,107, 46,149, 5, 35, 85,196,173, 42,120,164,208,180,222,160,180,102, 41, 3,211,
-186,102,156,101,212,214, 99,157, 97,164, 4,245, 98, 25, 19,186,243,121,212,134,207, 51,132, 22, 9,101,111, 35,229,237, 49,136,
-206,167,126,189,112,141,253, 47,124,134,250,214,189,111,102, 65, 61, 30,232,219, 46, 57,133,118, 79, 28, 19, 63,209,222,236,171,
-127,239,167,248,143,127,226,127,224,111,254,221,159,123,242, 1,172, 27, 24,148,172,223, 58, 69, 20, 26,119,107,193,186,245,136,
- 28,126,240,251, 95,228,203,255,240, 1,208, 32, 41,185,123,118,159, 32, 53,207, 95,126,137,119,238,157,241,202,149, 9, 47,222,
- 60, 98,181,106,121,231,131, 7, 96, 61,247,167, 45,139,117,205,221,143, 79,152, 45,215,156,181, 75,150,214,208,153, 64, 86, 72,
-118,179, 33,167,199, 51,254,212,191,242,187,248, 63,127,238, 77,190,113,235,132,182,107, 57, 95,213,252,181,159,248,215, 81, 74,
-226,211,188, 85, 74,137,148,130,201, 43, 63, 66,103,126,149,145,225,189,184,137,216, 70,193,109,251,180,127, 27,137, 65,127,131,
-244,119,128,108, 87,143,189,111, 31,235,183,215, 3, 75, 7,148,192, 45, 79, 82, 84, 26,148, 23,235, 34, 2,158, 44,188,243, 97,
-100, 74,168, 50,118, 79,124, 52,202,192, 38,138, 90,158,116,225,109, 66,138, 23,163,200, 36, 80,101,178, 7, 77,188,105,183, 69,
-235,235,131,123,191, 14,117, 58, 46,107, 31, 61,199,124, 11, 64, 38,100,148, 28,246, 34,126,190, 87,108,235, 91,216, 89,186, 88,
-193, 61,202,149,135, 11,117,184,117,202,152, 59, 31,232,130, 68,182, 2,143, 75, 35,137,116, 45,122,197,184,158,146, 7,177, 29,
-220,177, 53,219, 79, 92,244, 32, 54, 93,132,254,107, 62, 89,173,246, 84, 55,107, 55,179,247,167,101,155,222,166,132,193,166,243,
-121,134,219,217, 44,120,240,230, 71,148,159,147,156, 46, 87,188,114,245, 26,166, 61,163, 44, 52,160, 56, 24, 76,248,204,209,101,
-202, 65, 9, 34,227,250, 96, 72,107, 28, 31, 62, 92,240,229,213, 20,191, 92,110,116, 7,214, 22, 6, 26,202,113, 60,134,198,197,
- 64,223,175, 7,251,148,181,158, 0, 73,180, 29, 20, 57,215,247, 53,151,133, 96,234, 28,131,144,225, 68,224,107,181,225, 27,203,
- 84,169, 60,105,253,150, 99, 56,184, 4, 15,239,108,198, 47,253,247, 93,172,207,173,117,177,110,128, 38,206,123,231,199,241,103,
-190,248,121,102,139,251, 92, 26,236,178,240, 29,111,156, 47,249,222,157, 67, 36,134,166,171,185,150, 73,110, 55, 45,194, 68,117,
-177, 48,157, 69,251,214,135,167,241, 25, 95,156,130,148,113, 62,254,216, 43, 60,233,255,235, 6,116, 3, 31,188, 9, 87,159, 3,
-165,105,149, 38, 8,133, 73,157, 37, 45, 5,239,173, 26,148,132,171,121,193,109,209,224,154, 36,113, 76, 25, 25, 0, 89,122,206,
-148,230,210,176, 36,228,177,187, 81,228,160, 76, 60,111,155, 43, 70,165,226, 23, 30, 46,216, 45,134,252,109, 19,216,149,150, 42,
- 40,174, 54, 11,116, 57,166, 2,174, 41,141,195,177, 19, 60, 50,175,200,117,198,217,106,193,181,225,152, 78, 75,206, 91, 75,179,
- 92, 51,153, 76, 88, 10,135,145,209,193,236,220, 90, 76,145,115,214,105, 78,164, 99,109, 58,118,243, 1, 39,229, 16,155,207, 96,
-188, 15,237,253, 95,213, 45, 56, 96, 17, 90, 19, 82, 27,252, 98, 82,101, 45,172,107,234, 14,186,231, 52,107,167,152,183,134, 98,
- 0, 54,116,104, 10,144, 26,227, 13,185,210,236,120, 79, 48,150,215, 6, 3,222,237, 26, 62,151, 59,222, 93, 59, 86,222,115, 77,
-192,157,135, 39, 81,119,190, 53,132,176, 6, 27, 16,198,198, 46,204, 19,238,185,120,202, 26,120,234,235,195, 59,156, 73,241,244,
-174, 86,175, 32,217,175,235, 79,240,187,248,166, 39,101, 56, 40,249,252,103, 95,224,231,127,241,141, 39,236,237, 54,129,228,146,
-174,119,183, 2, 87,161, 94,221,199,191,125, 15,117,243, 26,191,240,143,238, 80,221, 40,169,178,146,159,125,231,152,207,220,104,
-216, 47, 75,222,124, 39,231,232, 96,135,197,110,193,206,100,192,235,111,223, 98,186,152,177,110, 29,153,232,248,250,155,247,248,
- 59,111,125,200,165, 74,178,183, 51, 68,134,152,253,223, 59, 55,120,235,216, 29, 15,120,238,112,135, 95,121,231, 22,239,221,123,
- 72,161,115, 38, 85,201,143,254, 59, 63,201,255,243,238,251,240,254, 3,104, 22,252,249, 63,253, 39,121,238,232,210,175, 65, 64,
-231, 9, 1,253,113,148,123, 31,108,248,100,239,243,222, 82,115,187, 10, 17,252,218,188,190,213,177,109,223,251, 39,253,187,216,
- 50, 84, 41,199,169, 61, 38,162, 9, 75,207,197, 44,114,232, 68, 4,119,244,232,253, 97, 9, 77, 74, 60,180,220, 80, 51, 42, 29,
-177, 17,217, 78,172, 96,237, 34,122,176,171, 60, 86, 76, 93,189,209,124,239,215,225,246, 2, 87, 9,132,114,145, 54,247, 85, 93,
- 10,232, 93,242, 83,238, 82,224,191, 64,143,203, 77, 64, 52, 61, 42,117, 43, 65, 11, 36,212,105,128,208,225,253, 86, 85, 45,182,
- 42,116,111, 55, 26, 6,164,249,111,149, 71,160, 79,112,143,242,216,189,221,252, 91,132, 77, 66, 80,234,216,222,253,164,246, 78,
- 78,236, 72,101, 41, 49,184,118, 8, 31,222,223,200,222, 58,255,201,247,182,105,248,232,131, 59,140, 46,239,177, 51,205, 24, 23,
- 37,171, 58,218,196, 30,237,236,177,119, 52,161,110,162,216,206,170,109, 88,180, 13, 46, 3,191,154, 65,151,180,167,243,173,107,
- 4,113,148, 33,154,248,247,215,137, 13,225,158,226,121,111,211,215, 83,192, 13, 66,208, 4,143,246,129,247,186,142,179, 14,222,
-169,211,207, 21, 2,230, 91, 26, 4, 33,174,181,252, 11,175,208,221, 59,251, 22,137,235, 99, 9, 95,159,144,246,246,150,239,188,
-133,253,220,107,156,213, 53,132, 21, 72,197, 47,222,125,143,188, 28, 83, 9,193,108,126, 6,210, 19,154, 8,146, 19, 85, 9,171,
-134, 32, 53, 60,124,152,152, 48,221,183, 8, 60,143,189,230,167, 96, 87,145, 45, 96, 1,149,211, 1,183,229,152, 35,215,226,170,
-138,214,121, 94,173, 74,238,117, 29,206, 38,136,186, 77,244,217,178,188,120,142, 46,233,200,216,176, 66, 48, 46, 53,214, 5,116,
-225, 81,121, 78,221, 90, 78,219, 64, 53, 44,121,195, 74, 14,133,160,238, 26, 68,107,120, 32, 38,236,153,134, 74, 72,174,236, 14,
- 41, 77,141,148, 26,135,164,234, 90,118,118,119,185, 91, 55,228, 78,113, 56, 40, 24, 82,242,208, 7, 70,187,151, 56, 63, 62, 6,
- 37, 88,171,156, 46,192, 10,144, 33,176, 18, 18,135, 36,232, 44,170, 16,142,151,176, 78,201,221,175,202,203, 62, 26,194,116, 79,
- 51,142,235, 63, 8, 64, 26,110,157, 46, 81,151,225,197, 82, 51,109, 59,142, 84, 73,235, 28,173,179, 84, 42,231,196,116,212,193,
-178,159,231,204,172,225, 32,215,172,154,142,151, 67,203, 7,179,154,251,103, 11,164,179, 4, 27, 63,132,141,231, 19,236,163, 88,
-182, 79,188,231,207,242,122,255,246, 19, 18,215, 18, 6,195, 4, 16, 77,186, 14,166,123,166,208,148,246, 67,201,199,191,244,215,
-144, 82,242,225,151,255, 42, 0, 95,250, 29,127,152, 15,110,221,229, 63,248, 19, 63,198,191,249, 47,255, 94, 14, 15,118,249,153,
- 95,248, 26,255,210,191,255,103, 57, 62,155,241,195, 63,244, 61,252,143, 63,241,239,242,215,127,254, 23,249, 23,126,219, 15, 34,
-149,226, 79,254,248, 95,224,123,127,224, 53,254,192, 63,241,155,185,124,184,207,159,251,171,127,139, 63,247,151,255, 47,254,232,
- 15,125, 63, 82, 88,180,254, 62, 94,127,243, 35, 86, 77,199, 15,126,254, 5,190,231,139, 47,243,119,190,252,151,120,248,250, 91,
-252,200,191,248,187,249,183,254,232,239,225,198,229,125,190,254,241, 61,126,236, 39,127,138, 95,126,255,109,238,254,165, 63,141,
- 64,240,147,255,246,239, 3,224,143,253,217,191,204,207,190,253,141,216,253,156, 25,176, 53,255,252,239,254,173,252,190,223,243,
- 67,124,207, 15,255, 17,126, 93, 95, 61,184, 65, 60,107,208,220,162,242, 92,180,152,121,118,141,225,103,237, 40, 60,237,111,107,
-251,108,129,253,105,199, 93,150,177, 10,239,221,212, 84, 1, 86,199,207, 55,117,148,142, 29,148,155,227,200, 52,180, 73, 26,182,
-136,150,138,145,247,223,198, 25, 41,117,148, 24, 85, 62,182,233,251, 42,221,177,161, 61,125, 19, 56,110, 11, 33,239,205,166, 53,
- 29, 82,171, 90,166, 28,190, 15,232, 50,196, 68, 99,144,127,115, 75, 56, 35, 30,135, 77, 32, 65,147,170, 97,209, 87,228, 91,237,
-124,177,245,248, 54, 9, 73,232, 83, 96,237,103,245,117,226,223, 23,217,214, 24, 32, 5,116,231, 82,162,144,254,118,174,210,239,
-217, 10,148,166,217, 32,226,183,129,114, 90,196,121,113, 86,114,233,242, 1, 39, 15,103, 48,235,210, 40, 65, 38,239,132,173, 29,
-102,123, 45,133, 21,100, 7,188,118,245, 38, 90, 58, 6,163, 17,174,169, 81, 74,179,127,120,137,178,204, 81, 69, 96, 58,111,168,
- 93, 71,231, 44,199,245, 60,110, 44,139,117,252,176,102,179, 86,157,221,128,254,164,127, 74, 15,240,177, 53,185,181,214,239, 28,
-175,120,126, 60,228, 78,211,128, 47,121,167,115,155,243, 21,114,147, 32, 92, 36,235, 53,221,219,239, 70,250,104,219, 61,161, 66,
-127,108,221, 63,254,249,190,149,219, 76,152, 31, 31,195,184,141, 5, 75,178, 36,237,128,206,172,226, 8,193, 68, 14, 52, 64, 56,
-153, 70,175,245,166,217, 84,255,197,147,157, 2, 63,113, 99, 95, 55,177, 61, 61,174,226,249,237, 94, 6,123,200,131,241, 78,212,
-214,215, 37,239, 44,234, 77, 23,168,255,123, 66, 70, 4,246,112, 0,157, 71,101,158,202,121,156, 18,204, 93, 96, 80,102,152,198,
- 96, 8,136, 66,179,178,158,147, 96, 41,131, 98,145,105, 6,114, 68,147, 91,196,116,206,160, 24,162,186,134, 82,192,104,178,203,
- 14,130,105,211,161, 6, 21, 31,206,230,188,178,183, 71, 99, 13,171,214,113,234, 12,207, 15, 7,156, 19, 56,216,223,231,214,236,
-156, 66,230,156,174,187,200, 0, 17, 48, 8,158, 70,107,180,206,112, 34,131,225,128, 32, 10,112,205,147,241, 61,219,157,206, 79,
- 83,132, 93, 36,105,143,221,243, 94,175,201,123, 66, 90, 87,161,179, 4, 3, 31,157,231,252, 3, 47, 40,145,236, 23,138, 12, 80,
- 50,103,233, 13, 74,106,238,172,107, 78, 9,104,165,144,206,162, 75, 77,214,193,229, 61,193,195, 85,234, 2, 52,117,106,121, 63,
- 58, 90,249, 38, 12, 5,143,226, 91,191,109, 76, 65,145, 67, 89,196, 2, 72, 8,112, 42,225,109,252, 39,198,133, 71,102,234, 33,
- 4,156,115,156,156,205,248,254, 31,249,215,248, 47,254,235,255,153,243,217,130,159,248,143,254, 13,126,251,111,254, 18, 63,250,
-135,254, 61,254,204,127,245, 63,241, 99,191,255,119,241,165, 87,159,231,111,253,253,175,242,135,254,185,223,206, 23, 94,123,137,
-255,242,191,249, 43,252,137,159,250, 43, 92,175,198,252,135,127,252, 15,242,191,252,181,159,230,143,255,103,127,145,143,166,199,
-252, 39,127,228, 15,240,231,254,187,255,149, 92,214,124,254,133, 27, 76, 70, 67,254,238, 79,255, 60,191,243,183,124,145,151, 95,
-184,202, 31,249, 79,255, 91,254,239,127,248, 14,127,242, 15,255,179,252,254, 31,249, 65,126,255,159,248,179,252,169,159,252,139,
-252,150, 47,124,134,223,254,242, 77,254,234, 95,250,223,113,251, 59,116,173,225, 95,253,207,255,123,254,194,255,241, 15, 88,173,
- 86, 88,103,120,227, 87,238,192,116,202,205, 23,174,242, 55,127,234,207,240, 7,255,216,159,230,205,119, 62,250,181,169,210,241,
- 27,177,148, 39, 61,210,129,103,243, 40,239,129, 61,126,203,145, 43,244,173,216,239, 70,146,225, 63,217,114,246,153,125,212, 31,
- 27,248, 95, 24, 28, 84,233,148, 85, 2,193,117,144, 87, 96,151, 49,130, 21,101,188, 22, 85, 1, 85,149,134, 93, 58,130,210,134,
-131, 24, 64, 93, 74, 14,156,219,200, 32,154, 5,200, 50,166,196,222,196,160,218, 3,227,202,252,209,141, 64,234, 77,128,233, 9,
-180,206, 37, 48,158,216,204,209,173,216,180,188,123,106,140,220, 66,196, 43, 25, 55,218,114, 16, 31,168, 94,198,214,218, 56, 79,
-105, 76, 12,166,150, 77, 80,251,255,186, 59,243,216,202,174,251,190,127,206,114,151,119,223,198,101, 54,105,180,203,178, 36,203,
- 82,237,120, 81,188, 1,110,155,218, 13,218, 24,112, 19,184,168,255,180, 83, 32, 64,209, 38, 5,130, 2, 6,138,180, 64,227, 46,
-105,141, 26, 40,138,182,169,155,182, 6,154,216,109,224,164,177, 93, 27, 65,108, 3, 74, 17, 91,134, 20, 69,171,173, 37,150, 53,
-210,140,102,134, 67,114, 72,190,229, 46,103,233, 31,231, 92,222, 75,206,140,228, 25, 73,142,209, 7, 16, 36, 31,249,222,187,203,
- 57,191,245,251,251,126,235,232,169, 91, 36, 61,190, 35,175,176,190,119,189, 84, 36,138,112,157,156,234,129,102, 96,191, 34, 70,
- 4,195,212, 33,232, 57, 76,118,209,239, 73, 87, 53,139,237, 69, 16, 52,106,103,228,137, 61,121,209,151,233,117,221,122, 74, 52,
-119,223,247,118, 38,195,130, 99,227,117, 82,165, 25, 20, 5,227, 65, 65, 83, 55, 12, 70, 5, 94,104, 68,170,105, 28, 56, 28, 79,
-109,109,211, 8, 9, 23, 46, 4, 10, 88,211,116,199,236,162,212,166,142,228, 49, 45, 81,149, 10,162, 76, 7,122,171,253, 62,161,
- 86,113, 84, 17, 94,108, 96,203, 43,182,132, 15,193,138,139, 85, 20,235,130,194, 85, 95,200, 40,209,176, 88,118,204,145,237, 61,
-234,143, 26,181,243,238,142,131, 65,114, 31, 75, 82, 45,195, 49, 14,179, 72,128, 20,143,115,123, 35, 16,222, 72, 21,232,105,181,
-134,205,109,152, 14,195, 26,216, 62, 23,208,221, 89,250,170,153,250,149,177, 47, 13,204,150, 97, 31, 12, 70, 1, 27, 32,117, 28,
- 9,171,194, 57,167, 49,168,107,215,133, 82,221,244,135,169,104,140, 99,109, 92,176,174, 36, 74, 73,246,106,143,148,130,165, 23,
-156, 89,212, 44,113,204,107,139, 84, 10, 82, 77,227, 61, 78, 73,142,166, 41,141,148,220, 49,144,140, 17, 88, 47, 25, 74, 65,145,
-103, 44,107,195, 90, 81,176,181, 44,241, 90,147, 41,201, 40,205,184, 96, 26,214,117,194, 5,107,184,101, 52,225, 84, 89, 50, 72,
-161,170, 45, 53,130,165,173,216, 50, 13, 66,106,106, 83,117, 99,169, 91,219, 29, 51, 98,223, 97, 37,170,107,169, 93, 45,121, 81,
-111, 13,137,120,111, 69,143, 30, 66,120, 31,116,212, 33,140,186, 57, 88, 36,138,163, 90,145,105, 73, 74,104,159,205,156,101,219,
- 90, 46, 56,203, 2,129, 21, 30, 33, 4,210,251, 64, 75, 46, 37, 39,134, 41, 34, 81, 44,147, 1,216, 6,233, 65, 28, 2,199, 93,
- 65,134,235,218,123,236,237,254, 77,211, 14, 84, 42, 68,216, 99,175, 2, 2,191, 36,158,126,239,187,238,229, 27,127,252,208,254,
-239, 55, 92,119,148,191,247,137,143,114,251,253,127,155,243, 23, 46, 2,240,187, 95,125,128,143,253,205, 15, 66,185,199, 79,255,
-165,183,240,111, 63,247,191,248,230,255,125, 2,117,251, 58, 27, 91, 23,249,250,131,143,240,123,143, 61, 70,189,156,115,246,249,
- 77,118,102, 11,236,162,228,219, 79,158,231, 19, 31, 91,225,143,254,236, 73, 62,242,115,239, 71,107,205,135,126,229, 55,216,220,
-216,227,216,218,136, 79,253,210,223,226,190,159,251,135,188,180,189,139, 51,154,175,125,235, 65, 62,249,177,159,133, 69,201,253,
- 55, 93,207,215,190,243, 8, 79,109,158, 39,145,146,199, 47,206,200,178, 32, 50,161, 71, 5,191,243,217, 79,241,239,127,251,171,
- 60,240,208, 19, 63,222,186,181,239, 1,176,250,229,119,119,149, 61,113,219,150,220,123,128,179,215,181,131, 96,174, 0,161, 48,
- 63,106, 4,115,233,115,222,193,112, 26, 70, 7,163,100, 41,178, 9,229,114, 83,129, 30, 71,173,110, 7, 43, 3,152, 22,161,228,
- 40, 36,140,178, 64, 6,147, 8,210, 36,167,102,121, 41, 97, 79, 50, 14,239,237, 0,105,186,158,125,109,186,126,122,107,200,197,
-229, 90, 32,186, 3,149, 65,112,198,109,217,221, 68,133,188, 36,143,206,216,133, 13,212,146,187, 12, 90,227,145,192,162,233, 0,
-136,137, 14,165,116, 45, 2,130,185,142,199,236,234, 46, 92, 23,135, 67,244, 24,168, 45,234,174, 50, 80,153,144, 69,215,241,127,
-147, 94, 9, 63,139,206,223,134, 44, 60, 4, 30, 61, 71,116,224, 28,218,177,191,121, 55, 54,217,196,118,134,237,129,104,132, 12,
-148,178,237,253, 94,191,137,227,171,235,104,169,217, 89,236,145,231, 57,171,249,144, 36, 79, 73,101, 26, 49, 89,134,201,116, 0,
- 18,230,203, 5,183,140, 87,241,102,198,247,198, 67,216,220,233,174,107, 59,158,211,158, 99,139,177,168, 77, 36,102, 50, 87,118,
-126,109,150,221,148, 48,111,129,156, 45, 72, 49,146, 7, 73, 21,112, 22,182, 60,152,229,183,159,173, 47,131,169,208,241, 92,205,
-161, 62,187,190, 76,214,119,113, 22,152,245,210, 54, 88,216, 11, 96,186,202,192,169, 51,193,145, 22,121,144, 0,157, 47, 3, 59,
-228, 43,100,232, 87,149,113,170, 37,252,249, 11,225, 60, 7, 41, 52, 11,152, 28, 15,253,104,107,160,148, 93,123, 72,200,174,244,
- 26,191,167, 89, 78,125,238, 34,230,196, 26,110, 94, 51, 28,166,224,100,160, 76, 80,158,166,129, 97,150,176, 83, 53, 88, 37,112,
-105,152,114, 88,120,207,170, 75, 56,147,228,164,110,193,221, 89,202, 66,192,145, 68, 65, 82,224,234,134, 65,154, 4, 21,100,161,
-152, 11,199, 48,205,152,153,154, 19,163, 1,103, 22, 75,142, 15, 6,108,151, 75, 26, 26,156,183, 88,149,131,153,225, 26,131,202,
- 71,152, 34,202,151, 14,199, 65,147,163,127,111,156, 60,152,189, 43,249,163, 87, 38, 15, 93,247, 3, 25,113, 79,176,208, 43,185,
- 63, 94,232,154,146,229, 30,124, 77, 8,172,132, 66, 44, 56,150, 5,194, 35, 43, 5,115,165, 3, 75,164,245,104, 37, 24,106,205,
- 0,197, 12, 65,158, 75,134, 72,142,100, 21, 79,178, 2,179, 57,126,209,224,125, 40,199,247,209, 46,254,208,207,175,205,100,155,
- 32,109,188,175,191, 30,136,122, 94,237, 26, 93, 98,177,223,243,206,123,248,244,103, 63,191,255,251,135, 62,248, 46, 30,126,244,
-233,125,135, 14, 48, 29, 21,156,223, 14, 36, 19,247,191,253, 78,254,201,103,254, 43,140,114,236,243, 23,120,251, 93,111,226,155,
-223,126,146,157, 23,246,152,222,182,194,123,223,255, 86,190,253,240,247,112, 82, 51,190,110,192, 93,183,223,198,251, 86, 71, 76,
- 71, 5,119,254,141,127,192,238,172, 98,116, 52,227,175,254,244,125,100,169,230,161,223,251,215,241,106,120,164,144,124,241, 15,
-190,137, 7,222,115,223, 29,124,250, 55,126,139,157,231,126,176, 15,184,170,226, 92,241,175,255,242,199, 49,214,241,235,255,249,
-127, 7,135, 66,253,198,250,115, 67, 40, 89,183,151,207,186,131, 78,197, 93,195, 29,237, 27,165,170,254, 49, 5, 38,230,218, 3,
-135, 68,134, 50,187,237, 59,116, 31,174,191,175,162, 99, 95, 66, 54, 8,255,187, 50, 10, 32,170,149, 33, 89,150, 81,237, 85, 76,
- 38, 3,202,210, 99, 91, 62, 99,116,200,202,171,101, 64,176,103, 61, 16, 90,157, 4,144, 83,109, 46,189,102,109, 73,190,229, 79,
- 86,189,123,144,137,110, 57, 24, 31,126,247,209,193,139, 24,152, 16,203,244,101,236,135, 15,243, 78,188,196,187, 96, 92,117, 68,
- 62,150, 38,150,200,155,208,251, 78, 85, 96, 95, 59,236,204,219,223,219,185, 83, 31,157, 85,105,194,235,124,204,238,211,126,159,
-188,103,229, 92,203,104,101,186, 74,132,171, 35,213,109, 47, 72, 49,254,224,186,107,151, 97,227,122,216,205, 62,136, 51, 84, 52,
-110,184,237, 36,179,106, 73,158,104, 50,149,178, 87,206,209, 8, 50,173, 81, 67,168, 23, 53,211, 35, 19,118,247, 26, 22, 85,195,
-238,178, 66, 99, 40, 27, 56,178, 58,229, 66,185,132,151,202,144,173,239, 7,161, 38, 4, 33,210,117,125, 84,173,187,210,249,171,
-225, 53,148,233,136, 56,218,160, 49, 21, 65, 4, 3, 96,135, 80,173,241,166,123, 77,223,192,239,115,255,167, 7,251,142, 2, 72,
-167,112,235, 42, 60,251,220,101, 2,217, 58,242, 18,196,160, 46,199, 28,146,165, 0, 0, 19,212, 73, 68, 65, 84, 25,132, 15,187,
-176, 13,213, 94,168, 68, 93,220,137,228, 74, 85, 88,131,197,235,212, 43,174,234,240,249,207,191, 0,199,214,122, 99,195, 50,220,
-243, 74,198,209, 69,194, 40,103,108, 73,164, 66, 83, 11,184,213,212, 84, 58,225,135,103, 54,184,101, 60,100,161, 37, 59,101, 67,
-170, 85,192,163,106, 25,240,186, 89,144,153, 93, 36,158,129,147,148, 90,145, 13, 28, 55,214, 21,168, 49, 27,222,146,121,199,197,
-218,144, 36,154, 36,207,216,174, 42,174, 19,154,185, 55,228, 42, 65,226, 16, 73,138,179,150, 53,157,176,225, 26,106,149, 48, 73,
- 60,167,155, 26,105, 75, 18,157,144,160, 40, 75, 19,156, 81,158,195,145,181, 96, 11, 90,109,132,182,197,213,199,175, 92, 77, 73,
-122, 52, 13,247,231, 74,118,210,183, 83, 94,174,151,183, 24,240, 37, 75,169,248,242,210,114,231,177, 33, 43,118,193,170, 77, 25,
- 39,193,103, 36,105, 18,114, 52, 33,240,113,124,104,168, 37, 30, 69, 35, 5, 43, 90,177,146, 40, 30, 17,138, 74,215,120, 83,226,
-154, 6, 81,155,253,185,121,119,153,204,252, 53,149,225,189,129,157,157,176,119,165,123,213,126,250, 37, 78,253,150, 27, 79,176,
- 58, 29,243,232,147,207,237, 63,119,116,125,149,189,217, 65, 18,129,143,252,245, 15,240,155,191,243, 85,110,187,253, 22, 70,195,
- 1,143,253,240,165, 8,204, 17,124,224,254,123,248,231,159,251, 18,222, 59, 70,197,152,123,174, 63,201, 3,143,125,159,119,188,
-253, 24,223,127,161,230, 45,183,223,192,167,255,251, 55,120,247,155,143,242,233, 95,254, 56,255,225,139, 95,226,241,103,182, 89,
- 95, 25,243,149, 7,254,148, 95,248,213,207,226,189,197, 55, 30, 63, 47,241,245,156,155,111, 60,206,234,116, 20,142,203,214, 80,
- 0,197, 4,134, 67, 62,124,255, 61,124,242,231,127,134,183,253,194,175, 6,231, 80,164,193,184,191,209, 64,185,125,159, 30,127,
-232,247, 59,175,213, 89,190,161, 60,238,209,249,213,230, 42, 62, 71, 95, 33,203,223, 79, 9, 15,238, 72,161, 58,112,156, 34,128,
-211,178, 20,142,142,195,232,206, 56, 35,215, 9,206,195,112,117, 66,109, 13,121,150, 34,164, 97,111,105, 72,144, 84,152, 72, 27,
- 90,195,142,233,156, 49, 38, 34,172, 27,240,101,119,124, 66,135, 32,175, 53,222,135, 37, 75,219,254,185,142, 30,119, 63,203,238,
-101, 64,237,107,219,146,246,230, 44, 56,146, 36,102,132,146,192,106,166,162,227,109,226,255,238,163,220,101,216,124,109,112, 32,
- 35, 65, 19, 61,208, 99, 75,132,211,127, 93,155,229,183,239,153, 69,105, 88,161,218, 3, 63, 4,170, 59, 52, 30, 86, 19,156,222,
- 62,102, 32,222,146, 54,232, 58,188, 7, 90,199,171, 82, 94, 58,117,154, 27,238, 89, 3, 96, 94, 46,209,137,192, 52, 13,206, 86,
- 84, 75, 79,154,231,212,141,165, 24,103,156,218,188, 72,109, 26,110,212, 57, 85,230,185,119,120,130,167,202, 37,223, 91, 84,112,
-118, 43,192,173, 91, 71, 87,155, 88,133,208, 93,133,162,117,232, 87, 2,206,181,207,215, 6,146, 26, 92, 26,239,109,188, 55, 69,
-168,200,169,241,144, 19,169,227,244,198, 2, 22, 59,151,178, 8,238,247,221, 15, 33,225,189,129,249, 38, 60,187,121,249,236,218,
- 52,112,113, 47, 8,215,136, 36,148,194,215,215,195,243,167,231, 1, 16,220, 24, 96,212,177,128,165,250,245,221,158,229, 30, 92,
-104, 34, 67, 96, 92,135,131,149, 48,151, 94,214, 17,160,172, 88,115,142,147,131,156,117, 9, 79,204,151, 28, 79, 37,190, 42, 57,
- 85,150,108,160,208,123,115, 40, 6,108,249, 0,144,195, 6, 37,192, 34, 81,108, 11,139, 51,176,240,150,155, 11,205, 81, 33,168,
- 42,201,186, 20, 44,154,146,163,105,202,249,237, 25,183, 14, 37,167,231, 53,215, 37, 41,187,182, 97, 37, 73,217, 49,134, 66,105,
-230,166, 97,168, 18, 54, 49, 52, 22,150, 77,195, 89, 39,176, 74, 50,119, 26,101, 5,165,143,129,126, 86,192,176, 6,113, 49, 34,
-245,229,190, 62,249,126,217, 61,185, 74,251,103,221,193, 53,117, 57, 28, 67, 59, 69, 36,101, 32, 1,138, 69, 54,111, 12,126, 62,
-199,169,138,167,206,195,201,105, 74,230, 3, 46,101,152, 15, 40,109,131, 80, 9,185, 86, 56,227, 81, 42, 16,242, 52,214, 82,232,
-140, 92, 25, 6,192,155,110,204, 57, 83, 86,252,176, 44,249,225,102,133, 45,231,216,101,117,192,225, 58, 94,135, 76,125, 63,129,
-138, 36, 94, 50,237,104,101, 95,225, 90, 29,168, 89,158, 56,186,134,181,142,209,112,192,120, 24,234,143, 79, 61,243, 60,239,123,
-247,125,220,113,235, 13,164,137,230,159,254,163, 79,146,101, 41,191,253,251, 15,112,255,253,111,229,225,199,159,197, 8,141, 7,
-110, 58,121,140,225, 96,192,159, 61,242,125,214,223,188,202, 75,223,123,153,119,191,237,205, 60,121,246, 69, 30,124, 98,131,119,
-221,121, 19,207,189,180,193,191,251,221, 47,242, 75,255,236, 63,241,145, 15,190,147, 27,142,223,130, 83,154,199,158,125,145, 15,
-252,212,221,252,212, 91,110,195, 27,207,234,116,192, 39,255,206, 95,161,152, 12,123,199,149,134,227,178, 26,180,230,186,181, 41,
-159,255,212, 47,242,137,127,241, 95, 56,189,177,211, 33, 4, 61, 63,158,135,137,206,219,180,142,210,116,207,253,164, 61,132,142,
- 97,164,190,182,128,160,159,161, 39,192, 32, 50,192,165, 61,135,162, 34,241, 75, 22,103,179,143, 29,131,233, 24,146,132,233,120,
-200,209,188, 64,139,148,161,200, 72, 68,194, 80,101,140, 83, 77, 83, 65, 46,117,104,119, 15, 90, 93,239, 72, 20, 99,108,236,217,
- 39, 81, 33,172, 12,159, 1,145, 94,244,240,174,214,221,119,213,203,104,247,143, 63, 58,116, 14, 85, 87,164,234, 50,228,246,222,
- 46, 99, 38,218, 82, 56,150,189,209, 53,231,187,237,235, 76,231,192,196,161,173, 37,101, 71,108, 35, 99, 12,100,122,115,246,109,
-118,158, 0,149,143, 1, 67,116,136,253, 17, 23,157,244,144,242,109,102, 31, 3,158,180,181, 90, 61,194,163,198,245,130,175, 67,
-173, 22, 7,236,108,243,252,246, 89,150,139, 93,140,169, 88,238,237,210,152, 57,179,217,140,186, 90, 50, 95,204, 40, 23, 37,243,
-221,146, 81, 42, 56,174, 83,164, 80,172,143, 39,156,222,221,101,146, 36,220,125,114, 21,142, 76, 46, 13, 26,138, 60,156,119,107,
-228,132,238,233,174,155,203,103,171,125, 30,123,111,187,118,148,136, 68, 27,171, 99,110, 91, 41, 40, 6, 67,222,113,211, 42, 12,
-198,161, 36,175,117, 87, 13, 56, 76, 19,140, 57, 24,144,182, 78,191,125, 77,235,244,219, 86, 71, 99,120,203,104,141,159, 95, 63,
-198,199,111,189,149,147,199,215, 33, 31,118,193, 81, 53, 59, 8,116,187, 22,144,234, 37,191,247, 3, 80, 3,231, 78,195, 75,231,
- 2,136,206,212, 48,219,220,151,220,188,217,214,220, 87, 20, 76,235,154,220, 58,222, 63,200, 25, 84, 13,105, 83,114, 82, 39,236,
-108,189,204,185,237,243, 44, 94, 58, 69, 1,236,149, 21, 94,123, 84,166,216, 43,155,120, 45, 5,140, 50, 22, 66, 83,100, 9,201,
-164, 96, 51, 79, 25,175, 76,216,170, 12, 71,167, 35,158, 63,191,195,177,201,144,202, 25,142,142,134, 24, 9,147, 65,202, 22,142,
-245, 81,206,217,170,230,136, 82,172, 13, 52,153,214, 92,172, 23,204,141,161,196,211, 72,193, 18, 80, 58, 58,117, 37,225,232, 10,
- 20, 43,113,223,246,170,155,182, 93,167, 28,172,192,189,154,205,221,221,185,100, 29,249,150,152, 37, 50, 42,134,178,187, 11,112,
- 28,186, 47,219, 24,172, 41,177,187,123,156,186,176,203,119,247, 22,236, 85,134,178, 92, 98,170,134,198, 89, 26, 99,241, 17,232,
-156, 41, 69,161, 21,215,105,120,239,100,157, 15, 29,191,142,247,173, 30,229,195,199,142,240,209,147, 39,248,240, 13, 43,232,181,
- 53,244,100,138, 42, 70, 40,173,145,135,122,237,175,169,183,174,117,176, 95, 89, 18,190, 15,178, 75, 91,141,175,228,212, 31,125,
-234, 57, 30,122,244,251,188,252,216,239,243,245, 47,124, 6,128,175,252,225,159,240,223,190,248,127,120,232, 15, 63,199,217, 39,
-254,128, 55,221,118, 35, 31,254,228, 63,166,177,142,251,223,122, 39,223,121,244,233,125,117,173,247,188,237,173, 60,252,248, 51,
-216, 44,101,227,145,151,185,254,196, 81,214,166, 35, 30,248,214,211,184,101,197,123,223,121, 23, 15, 60,248, 24,187,231, 23,188,
-124,238, 34,127,255, 95,254, 22,255,241,215,126,145,181,233,144,175,255,201, 35,252,155,207,127,153, 47,125,230, 87,152,125,247,
-243, 60,244,133,127,197,219,238,186,157,197,238,156, 71,159,122,250,224,113,217, 18,105,106,254,199,175,253, 93,190,240,173,239,
-242,229, 63,254,211,168,102,227,130, 97,252,139,210, 23,255, 73,116,230,253, 50,142,141,223, 95,203,163,221,132,182,165,142,245,
-193,233,166,209, 0,107, 19,144,239,217, 40, 32,134,135, 9,147,241,132,198, 57,102,198,179,158,165,228, 90,146,107, 73,162, 37,
-198,193,106,158, 35, 83,201, 48, 77, 81,168,224,244,234, 72,176,160,211,142,243,189,237,187,245,209,206,251, 13,180, 86,214,245,
- 10,216,129,182, 39,217, 58,116,149, 6,128,148,137, 14,101, 95,153, 73,116,217, 67,155, 81,247, 65,106,139,186,235,253,183, 36,
- 49,109, 79,189,253,156,195, 34, 1,206, 35,147, 32, 59,140, 80, 93, 95,221, 69, 39,238,251, 65, 71,204,202,219,210,254,254,123,
-244,116,231,171, 67, 56,129,125,189, 3,115,153,221,237, 66,255,210,201, 46, 24,242,161, 60,126,238,197,179,188,176,117,129,167,
-206,158,226,236,222, 22,167,182,206,227,104,176,214, 35,156, 99,107,107,155,249,206, 54,236,205, 89, 25,229,172,166,176,187, 88,
-210,120,137,200, 51,134, 73, 6,131, 60,176, 2,182, 89,152,141, 6,218,197,190,186, 49, 33, 16, 75,210,142, 25,240,138,176, 93,
- 25, 89,178,124, 55,151,155, 8,210,241,128,119,140, 10,142,175,142,153, 20, 3,182,208, 28,185,110, 21,198,195,200,129, 32, 59,
-103, 77,175,207,223, 86,114,250,173, 45,113, 25,163, 41, 91,125,130,140,159, 57,186,202, 61,199,215,184,107,186,198, 95, 59,121,
- 3,156, 88,239, 70, 39,175, 53,240,191,210,244, 73, 31,193, 77, 47, 57,152,109,194,198, 38,108,157, 9,138,143,205,146,251,176,
-164,206,163,235,146,235,181,162, 4, 42, 60,198, 4, 85,202,235,211,154,147, 74,162,235,146,205,122,143,239,124,234, 55,209, 79,
- 63,204,169, 63,250, 10, 27,139,154, 18,137, 17, 33,192, 44,180,226, 45, 67,197,233, 65, 70, 54,202,208, 90,147,104,205,182, 46,
-176,169,102, 52,157,176,181, 51, 35,205,242, 48, 48,130, 96,230, 61,185,144, 44,170,134,235,166, 35,150,120, 42, 15,203,218, 51,
- 41, 70, 32, 36, 42, 25, 96, 61,228,105, 78,237, 91,106,228, 81,152,235, 31, 12,186,164,160, 61,215, 42, 78, 32, 44,202,171,179,
-217, 87,250,223,120,253,124, 19,197,182,122,253,238, 86, 38,193, 18, 92,133,109, 74,236, 98,201,197,141, 57, 15,238, 46,104,172,
-195, 53, 65,246,121,183,174,169,188,223,167, 96, 31,169,132, 99,233, 8,137, 96,162, 83,214,148,226,230,116,200,219, 7, 83,238,
-152, 76, 57,186, 58, 64,173, 77, 80, 71, 86,144,147, 41, 34,201,175,158, 93,238, 74, 25,122,154,244, 52, 42,232,212, 18, 95, 97,
-162, 73,112,252,253, 63,122, 94,155, 69, 22,176, 22,168,211,159,245,109,203,153,105,129,152, 45, 98, 22,209, 64, 62, 70,148,123,
-161,167, 37, 29, 66,167, 97,211,103,145, 48, 35, 11,125,140,208,239, 12,136, 96, 95, 19, 70, 56,204, 28,127,165,136,184,136,139,
-165,165, 47,173, 77, 48,106,243,249, 95,156, 83,255,113, 62,218,153,204, 55, 92,126,245,208,226, 41,162, 33, 74, 84, 96,115,107,
- 29,133,146, 7, 23,163, 34, 24,221,149, 17,211, 65,129, 18, 9,133,150, 36, 90,177, 57,171, 89,207, 83,246, 26, 67,174, 37, 3,
-173, 56, 63, 47, 81, 2,182,182,247,162,179, 43, 3,181,167, 51, 97,196,199, 87, 7,241, 6, 90, 31, 98,155,139,253,244,182,183,
- 14, 29,171, 94,214,203,206,145, 29,240,196,212,145,171,254,112, 70, 27,203,228,253, 30,119,159, 80,198, 31, 42,253,249, 30,218,
-122,159,253,226, 50,239,215,102,230, 94,116,217, 95,170, 34,133,172,138,200,108,209, 5, 23,165, 9, 1, 78,145,198,207,183, 29,
- 18,218,247,112, 2, 45,136, 79,181,206,204,117,199,148,230,112,100, 5,214, 87, 96, 99, 27,206,109,134,247,200,199, 33,203, 30,
- 14,201, 82,201, 48, 73,153, 14,114,110, 63,178,206,116, 56, 70,167,197,126,188,180, 53,219,101,148,101, 8, 47,169,109,195,139,
-139, 25,152,138,189,114,198,243,155,115,120,121, 35,204,174,215,132,106, 74,191,223,221, 22, 12, 90, 37,189, 43,181,127,218, 94,
-188,136, 45,135,181,105, 8, 24, 86, 71,188, 99, 50,230,104,154,146, 8,193,182, 41, 57, 63,175,121,102, 54,131,139,139, 64, 73,
-186,108, 66,176, 37,155, 16,116,182,220,217,253,224,175, 45,201,246,217, 65,100,143,200,232,248, 9,238,189,247, 30, 62,122,231,
-189, 12, 7, 25,137,183,252,249,185,115,124,229,217, 39,120,225,225,199,187,145,178,107,217,167, 87,218,159,175,244,183,201, 58,
-156,188, 14,142, 28,131, 60,225, 29,235, 55,114, 75, 62, 98, 94, 47, 17,163, 9,121,211,176,215, 52, 36, 58, 97, 77, 55,108,205,
-106,188,148,252,160,170,168,140,225,133,217, 38, 63,123,253,173,212,214,240,141,147,183,195,168,128, 92,161,156,228, 47, 31,201,
- 72,128, 41,138, 29,231,185, 69, 67,179, 91,113,163,114,204,247,150,176, 40, 57, 41, 60,197, 64,161,117,202,233,178, 98, 85,107,
-246,202,138,139, 42, 97,108, 13, 47,214,150,220, 90,158,156, 25, 54,202, 57,155,198,162,112,108,224,104,170, 10, 43,193,150,243,
-208,174,152,111, 5, 5,205,141,141,208, 54,121,195,230,214, 15, 58,210,195,131, 37,226, 10,207,147,228, 76, 39, 25,239, 93, 25,
- 33,178,140,193,104, 72,146, 38, 20, 89,130, 18,112, 68,103,220, 58,200, 89, 69,145, 72, 77,226, 45,206, 90,140,243,156,181,150,
-199, 23, 59,252,207,153,161, 90,150, 52,101,131,169, 74,236,238, 46,118,177,196,197,192,194, 95, 11,120, 78,235, 32,222,114,248,
-177,104, 58, 59,112,185,216,248,234, 84,218, 6,161, 79, 90,164, 1,244,212, 15, 96,133,128,201, 56, 8, 30,100, 41,194,217, 32,
- 56, 80,238, 5, 3,178, 92, 34, 6, 69, 48,164,105,212,252, 43,210, 0,209, 79, 21,190,137, 36,247, 90,194,124, 23,106,139,119,
-230,202, 99, 14, 77, 29, 12,126, 93,131,171, 66, 86, 88,215, 63,217, 14,189,149,115,237,143, 22, 93,235,251,136,168,106,181, 63,
-198,245, 70,145,202,203,203,252,110, 66,175, 46,139,136,100,221, 91, 8, 58,170,157,173, 79, 32, 77,152,140,135,236, 46,107, 78,
-140,135, 56, 43,177,222,113,253,100,202,172,170,152,102, 25, 90,194, 11, 23,247, 56, 62, 44,216, 92,204, 81,105,138, 45,203, 32,
-163,153,233, 96, 20,204,188, 19,132,217,111, 90,197,113,168,125, 73, 86,215,161, 84, 90, 66,148,118, 7,181, 4, 45, 42,233, 52,
-233, 91,174,116,223,206,136,251,206,240, 15,146,224, 28, 90, 69, 53,111,131,243,108,199,167, 90,128,157,107, 98,134, 44, 59, 56,
- 76,235,208,247, 57,217,187,221,156,102,122, 31,196, 19, 2,145, 40,247,218,248,152,193,196, 81, 10, 33,163,206,178,140,215, 32,
- 10, 21, 57, 31, 71,158,204, 65,112, 92,219, 94,112,102, 31,100,138,138, 74,109,211, 41,220,124, 34, 74,125,102, 65,128,197,197,
-192,107, 92,128, 20,100,121,130, 22,146, 60,209,204,234,134, 92,165,108, 47,150,248,114,201,238,114,155,221,186, 97,103,185,192,
- 59, 27,166, 16,133,194, 56,199, 51,198, 96,235,184,239,170,168,142, 6,161, 84,216,202,245, 38,145,219,189,137,162,207, 74,116,
- 2, 64,253,241,179, 60,138,240,248,152, 30,217, 48,141,112,239,202,144, 60, 73, 24, 36, 9,169, 20, 88,103,121,100, 89,135,114,
-107,227,187, 25,118, 41, 67,139,162, 24,114,252,216,152,108,144, 49, 25, 23,204,151,117,143, 67, 63, 94,119, 41, 46,229,165, 87,
-138,217,250, 17,238, 88, 91,195, 57,203,204,122,126,120,113,151, 7,119,183, 97,119,113,237,226, 36,251, 12,145,241, 92, 91,170,
-102,231, 94,121,207, 86,203, 48, 29, 50,208,188,115,178, 66,102, 27,134, 69, 74,166, 11,154,122,137,118,142, 65,146,161, 88,128,
- 84,228,137, 96, 36,124,160,148, 21,150,243,203, 57,207, 93,120,145,231,245, 48,236, 73, 21,136,126,238, 58, 50,224, 54, 45,169,
-149, 66, 11, 72,180, 70, 90,207, 88,193,174,245, 12, 16,172, 38,138,243,165, 33,215,138,212,212,172, 14,114,158,221, 43, 17, 8,
- 10, 44,231, 44,220, 48, 74, 57, 83, 89, 18, 91,115,209,131,171, 75,172,144, 84,206, 81, 74, 25, 64,106,182,129,122, 47,234, 31,
-208, 85,224, 84, 47,168,205,115, 24, 14, 99,165,204,189, 97,142, 29, 94,129,190,215, 25, 42,231,249,193,174,225,246, 97, 0, 32,
-214, 73,144, 85, 94,211, 25, 55, 36, 25, 39,117,193, 68, 41, 20, 30, 37, 53, 74, 40,172, 51, 20, 58,225, 34,142,133,105,216,240,
-224,132,199, 91,143, 55, 65,177,212,251,215, 96,155,219, 36,161, 21,154, 82,105,184, 78,166,126,197,247,252,209,157,122,145,199,
-186,126,143, 25,171, 53,226,165, 13,243,198, 85, 13, 43,211,160,212, 36, 4, 44,107,196,104, 28,102, 90,179, 12,204, 2,210, 34,
- 48, 57, 13,179, 48, 34,162, 85, 88,192, 38,150, 53,119,151, 1, 24, 44,204, 62,225,195,149, 65, 19, 54,114, 2,155,215,117, 81,
-188,113, 9,111, 79,145, 75, 69,141,112,119, 13,220,200, 73,218, 25,192,246, 75,218, 55, 72, 44,198, 29,252,106, 3,173, 84,134,
-146,115, 58,238,148,197,124,172,182,140,134, 32, 4,147,245, 21,118,231,115,110, 94, 95,197,227, 25,232,148, 65,146,114,113, 49,
-103,109, 56,194,216,154,221,202,114,124,148,179, 93, 86, 12,179, 1,187, 59,123,241, 60,124,152,187, 54, 54,124,206,229,164, 68,
-219,185,242,253, 67,213, 93, 54, 46, 98,159, 91,197, 56,164,157,245,222, 47,195,139,176,230, 90, 39, 47, 85,199,183,110, 76, 48,
- 7,125,153, 84,227, 58, 96,157,111,117,225,117,156,213,238,197,254, 42, 58,226, 86,113, 45,254, 45,149, 2, 97, 5, 77,210,211,
- 65, 87, 50, 42,210,133, 49,164, 64, 48, 97,195, 57,232, 52,140,243,101, 42,102,159,177,175,223,148,221,235, 91,250,217, 42,114,
- 34,168,168, 18,167, 68, 24, 41,116, 4,228,113,166,194,154,217,153,195,133,205,240,247,100, 16,240, 11, 66, 34,149,100,154,165,
- 8, 41, 81, 30,230,165,101,105, 44,139,170, 34,145,150,185,245,140,210,130,109,107, 80, 94,112,186,169, 56,101, 12,179,114, 25,
- 69, 86, 8, 76,125,109,121,164,142,247,107,237, 72,192, 84, 20, 69,200,166,155, 42, 56, 42, 23,181, 0,250,247,180,229,249,111,
-133,125,108, 0, 89,222,180, 58,224,142,213, 53,206, 47, 43,156, 16,236, 52,134,211,243, 24, 72, 72,122,220,247, 81, 63, 32,211,
- 92,159,107,132,240,140,132, 98, 92,164,236,236, 45,123,169, 89,116,230,206,119, 14,190,105,192, 89,154, 44,229,251, 77, 77,229,
- 36,207,205, 22,124,115,111, 23,202, 89, 0,209,205,103,215,150,165,247, 57,187, 47, 55, 39,191,223, 2,184, 12, 71,254,124, 15,
-138, 49,119,175,228,220, 62, 24,240,131, 89,197,117,131,132,188,200,152, 59, 24,102,161, 68, 60,175, 96, 42, 44,210,129,161,100,
-111, 89,114,174,169,195, 53, 58,127, 38, 36, 86,107, 55, 66,174,201,135, 25,133,150, 20, 94,160, 19,205,208, 5, 85,205, 60,211,
- 12,133, 96, 69,194,142,177,172, 42,193, 29, 69,202, 98,144,243,204,214,140, 34, 21,204,235,134,179,198,225,157,227,133,237, 6,
-211, 24, 54, 81, 24,215,176, 52, 22, 47,192, 72, 69,105,130,176, 77, 24, 71,109, 66, 16,218, 52,145,175,192, 68,129, 39, 17,240,
- 10, 39,142,194,209,181, 80,117,157,207,223, 16,199,206, 43, 56,246,253,255,183, 22, 33, 28,167,140, 99, 61,209, 24, 37,113, 89,
-202, 20,152, 74,184,115, 56, 33,149,138, 84,166,193,138, 75, 17,228,152,113, 92,108,106, 94, 50, 53,231,230, 53, 30, 17, 50,115,
-169,194,169, 84, 21,190,119, 78, 87, 45,248, 34,130, 28,113,128,135, 68,190,247, 87,146, 85,190, 42,167,222, 26,149,150,168, 67,
- 39,225,103,103, 2, 73,135,245, 1,165, 58, 43, 59, 69,170, 52, 82, 58,166, 42, 46,218,144,229,137, 36,137,253,207,208, 51,244,
-139, 38,100,127,101, 21,141,150, 11, 11,242,255,167,135,212,189,122,143,132,213, 81, 88,228,230, 26,130,145, 86,116,164, 37, 65,
-241,213,143,183,159,223,206, 9,103, 89,212, 59,142, 37,229, 36, 13, 64, 14, 31,130,189, 10,207,104, 52, 36, 85, 10, 45, 53, 74,
- 72, 36,154,181, 98, 72,109, 29,169, 76,200, 82, 21,199, 72, 36,103,103,243,208, 15,171,203, 64,202,177,220, 5, 83, 94, 89, 66,
-183, 37, 29,145, 34,244,166,181, 11,142, 93, 69,176, 98, 75, 12,228,125, 68,163,139,224,136,219, 44,218, 69,118,166,118,228, 75,
-244,230,210,114, 29,202,223,202,119, 78,189,149,106,109,203,246,222, 29,252,210, 73, 20, 51,105,131,135, 46,234,178, 94, 96,165,
- 36,181, 2,219,174,131, 50,182,161, 92, 79, 70, 54,213,225, 90,250, 38,204,205,187, 56, 14,103, 77,112,238,194, 7, 39,174,162,
-243,107,127,110, 57, 19, 68,196, 61,180,206,171,137,125,238, 11, 51,216,190, 16,202,212, 74, 69,117, 60, 9, 69,130, 18, 18,131,
- 64, 10,129,147,138,185,109,216, 90,214,156,218,217,226,166, 66, 49, 78, 20,149,113,148, 30,206, 88,195, 15, 76,197,178,149, 88,
-141, 28,219, 44,102, 33, 16, 49,182,203,208,215, 87,187,192,102,217,132, 64,208,154, 46, 16,235,103,203,237,189,212,145,134,209,
- 25,152, 55,156,105, 28,199, 82,203, 36,149, 92, 40,151, 60, 52, 43,195, 76, 62,190,107, 61,168, 46, 80,155, 38,146, 81, 34, 24,
- 9, 65,130,160,178,134,157, 89,117,176, 18, 35,123, 32,196,182,157, 99, 45, 88, 65,157, 8, 94,172,150,156, 41,103,161,159,189,
-172, 96,119, 30,214,228,213,238,211,214,145,183,194, 54,237,115,135, 51,246,125,114, 35, 46, 11,252,212, 3, 69,170, 37,119, 23,
- 3,102,214,145,227,200,165, 68, 9,129,104, 12,235,153, 10, 36,135, 77,195,102, 99,120,112,231, 34, 44,103,241, 61, 93, 8, 60,
-117,134,212, 5,199,134, 33, 33,184,113,152,147,106,129,208,146, 65, 34, 25, 72,193, 64, 8,106,235,185,176,177,160,180, 13,207,
- 45, 97,167, 41,169, 61,236, 44, 13, 59,149,167, 49,112,174, 10,231,176,144, 32,241, 36, 54,136, 62, 13,156,197,154,134, 25, 1,
- 48,233, 77, 29, 70, 94,157, 13,142,168,172, 67,229,109,177, 8,235,120, 50,134, 19,235,100,227, 34, 76, 46, 45,203,215,117,156,
- 87, 92,133,179, 23,128,116, 14, 89,213,108,204, 74, 46, 84,158, 90, 8, 94,150,154, 60,151,172, 24,199,245,197,132, 34, 73, 16,
-206, 82,232, 20, 39, 37,167,151,115, 78,217,154,239,206, 27, 42, 37,176,198,225,165,192,213, 53,190,113,120,107,240,175,133, 68,
-204, 69,208,168, 45, 59, 33,151, 87,121,252, 63,200,142,135, 98, 79, 39, 83, 45, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
- 0};
-
+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, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,
+111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82,
+ 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21,
+ 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,
+243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112,
+ 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48,
+ 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,
+152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33,
+ 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0,
+ 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120,
+ 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87,
+ 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21,
+ 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0,
+ 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181,
+ 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194,
+ 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,
+132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165,
+ 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75,
+ 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,
+102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,
+193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42,
+ 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,
+200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,
+145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,
+129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,
+161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177,
+ 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72,
+ 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24,
+ 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,
+210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,
+228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,
+152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22,
+ 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232,
+ 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48,
+ 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,
+222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,
+103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32,
+ 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161,
+ 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,
+226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,
+187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,
+170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,
+109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64,
+ 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6,
+ 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215,
+ 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57,
+ 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,
+182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253,
+ 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,
+207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151,
+ 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,
+135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,
+103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,
+222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103,
+ 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,
+130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126,
+ 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49,
+ 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57,
+ 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,
+169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34,
+ 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,
+144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,
+103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84,
+ 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237,
+ 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172,
+ 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,
+229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,
+220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,
+151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,
+167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219,
+ 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173,
+ 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,
+157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,
+211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219,
+ 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,
+182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19,
+ 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,
+247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114,
+ 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,
+192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,
+226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,
+151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,
+119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99,
+ 51, 45,219, 0, 0, 0, 6, 98, 75, 71, 68, 0,255, 0,255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11,
+ 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,116, 73, 77, 69, 7,219, 10, 17, 14, 51, 5,152,167,210,162, 0, 0, 32,
+ 0, 73, 68, 65, 84,120,218,236,189,123,160, 93, 85,117,239,255, 25,115,173,189,207, 35, 47, 14, 73,200, 3, 2, 33, 10, 8, 1,
+ 17,195,163,234, 21, 1, 3,213,218,170, 80, 3,150, 94,253, 41,253, 53,148, 43,173,122,123, 75,240,122,219,223,109,107, 21,244,
+122,235,175,173, 45, 70,123, 43,182,213, 11,145, 91,170, 72,171, 9, 21,209, 42, 40, 41, 74, 69,144, 71, 72,130, 64,222, 39, 39,
+ 57,143,189,247, 90,107,142,251,199,122,205,181,246,218,231, 17, 18, 4, 93, 67, 15, 57,123,159,181,230,122,205, 53,199, 24,223,
+241, 29, 99, 8,160,212, 82, 75, 45,181,212, 82, 75, 45, 47,122, 49,245, 45,168,165,150, 90,106,169,165,150, 90,169,215, 82, 75,
+ 45,181,212, 82, 75, 45,181, 82,175,165,150, 90,106,169,165,150, 90,106,165, 94, 75, 45,181,212, 82, 75, 45,181,212, 74,189,150,
+ 90,106,169,165,150, 90,106,165, 94, 75, 45,181,212, 82, 75, 45,181,212, 74,189,150, 90,106,169,165,150, 90,106,121,126,196,255,
+105, 28,244,210, 95, 56,129,223,121,195,105, 52,155,134,155,190,246, 8,127,247,141, 39,208, 58, 91,190,150, 90,106,169,165,150,
+ 90,158,147, 8,207,115,241,153, 11,207, 88,204,191, 92,247, 26,116,120, 12,230,204, 67, 22, 30,205,231,255,229, 97,174,254,203,
+111, 49,218, 10,235, 39, 82, 75, 45,181,212, 82, 75, 45,135, 40,207, 59,252, 62,139, 14, 60,187,149,137,103,159, 98,252,241,135,
+ 25,127,244, 49,174,124,237,201, 60,248,231,107, 56,249,216,121,245, 19,169,165,150, 90,106,169,165,150, 67, 20, 15,248,239,207,
+231, 1, 31,219, 61, 65, 11,120,227,202, 33, 52, 84,162,131, 7, 8, 15, 30,100,225,226, 69,188,231,173,103,241,208,246,189, 60,
+252,212,254,250,201,212, 82, 75, 45,181,212, 82,203, 11, 93,169, 3,124,107,203, 40,223,125,122,130, 53,175,156, 79,191,231, 19,
+ 76, 76, 16,237,223, 7,125,131,252,218, 27,207,226,168, 65,143,187,255,253, 25, 34, 91, 7,218,107,169,165,150, 90,106,169,101,
+186,242,188,199,212, 93,121,201,194, 62,238,252,127, 79,225,228, 57, 13,198,199, 3,240, 60,204,210,229,244, 47, 91,198, 15,158,
+216,193, 91, 63,244, 79,108,221,121,240, 69,115, 51, 87,173, 90,197,208,208, 16, 0, 91,182,108, 97,203,150, 45, 63,211,147,231,
+231,237,122,107,169,165,150, 90,106,165, 62,133,204,106, 26,254,238, 29, 39,242,230, 21,243,104, 77, 68,128, 69, 22, 29,199,192,
+241, 39,210, 81,203, 47,255,209, 29,108,252,183,159, 28,214, 99,174, 88,177,130, 21, 43, 86, 76,107,219,225,225, 97, 54,111,222,
+ 60,173,109, 55,110,220,200,234,213,171, 1,184,254,250,235,185,241,198, 27,127,166, 39,207,207,219,245, 30,150, 23, 78, 4,173,
+ 83, 61,106,169,165,150, 35, 36,207, 57,165,205,247,132, 62,223, 76, 97, 49, 72,250,255,194,226, 38, 18,255,237,125, 95,222, 65,
+223,229,253, 92,178,108, 46,157, 64, 97,120, 47,173,193,217, 52,230, 47,226,107, 31,186,148, 63,248,187,123,249,200, 45,247, 19,
+ 70,135,103, 49, 92,179,102, 13, 55,220,112,195,140,246,217,176, 97, 3,155, 54,109, 98,253,250,245,245,172,249, 25, 16, 99, 12,
+214,218,194,119,158,231,113,222,121,231,113,209, 69, 23,113,206, 57,231,176,114,229, 74, 22, 45, 90, 68, 95, 95, 31,251,247,239,
+103,219,182,109,220,123,239,189,124,254,243,159,231, 59,223,249,206, 33, 29,119, 58, 10,253,220,115,207,229,242,203, 47,231,194,
+ 11, 47,228,216, 99,143,101,254,252,249,140,143,143,179,109,219, 54, 30,124,240, 65,190,249,205,111,114,231,157,119,242,212, 83,
+ 79, 77, 58, 78,179,217,228,109,111,123, 27, 87, 94,121, 37, 43, 87,174,100,201,146, 37,236,223,191,159,173, 91,183,114,251,237,
+183,243,217,207,126,150, 29, 59,118,212,147,161,150, 90,106,165, 14, 70,132,181,175, 90,204, 7, 47, 58,158, 5,179,155, 88, 49,
+ 32, 2,198,196, 63, 34,136,239, 21, 62, 99, 12,226,121,249,103,137,255, 22,169,208,182, 16, 54, 27, 24,103,156, 48, 10,176, 19,
+194, 31,189,243, 53,188,254,172,101,172,249,147,127, 98,247,254,137,159,202,141, 90,179,102, 77,246,115,249,229,151, 51, 60, 60,
+ 92,207,158, 23,177,148, 21,250, 95,253,213, 95,113,217,101,151,113,204, 49,199, 84,110,191,112,225, 66, 22, 46, 92,200,217,103,
+159,205,181,215, 94,203,221,119,223,205, 85, 87, 93,197,147, 79, 62,121,216,206,233,216, 99,143,229,147,159,252, 36,111,121,203,
+ 91,186,254, 54,119,238, 92,206, 56,227, 12,206, 56,227, 12,126,253,215,127,157,187,238,186, 43, 67, 73,170,228,148, 83, 78,225,
+ 11, 95,248, 2,103,157,117, 86,225,251, 69,139, 22,177,104,209, 34,206, 59,239, 60,214,173, 91,199,213, 87, 95,205,173,183,222,
+ 90, 79,136, 90,106,249,121, 87,234,239,125,221, 82,254,231,155, 95, 74,103,220,162, 86,240,140, 0, 6, 84,226, 31, 12, 98, 37,
+118,213, 21, 48, 2, 22,176, 10, 94,236,169, 99,226,191,121, 34, 52, 60, 7,150,148,116, 63,197,138,208, 30,239,240,186,149,203,
+120,228,211,239,224,226,255,250, 15,252,219, 99,187, 15,235, 77,216,180,105, 83,207,191,149, 23,206,213,171, 87,179,113,227, 70,
+ 46,190,248,226, 90,177,255, 12,201,111,253,214,111,117,125,183,119,239, 94,182,109,219,198,254,253,251,153, 63,127, 62,167,159,
+126, 58,158,231, 1,112,193, 5, 23,112,255,253,247,243,186,215,189,142, 31,254,240,135,207,249,248, 43, 87,174,228,238,187,239,
+102,193,130, 5,217,119, 35, 35, 35,108,217,178,133,225,225, 97,230,204,153,195,201, 39,159,204,188,121, 83,167,125, 30,127,252,
+241,124,227, 27,223, 96,209,162, 69,217,119, 79, 63,253, 52, 79, 60,241, 4,243,231,207,231,180,211, 78, 67, 68, 56,234,168,163,
+184,229,150, 91, 16, 17,110,185,229,150,122, 18,212, 82,203,207,171, 82, 55, 2,215,188,106, 49, 58, 22, 16,180,218, 96,109,172,
+164, 19, 56, 29, 33,249, 73,127, 81,240, 12,102,254, 49,137,114,183,136, 1,172, 1,108,178, 95,162,225,141,141, 21,191, 49, 16,
+ 17,243,243, 5, 58,237,128,161,190, 62, 54,255,249,175,115,205, 39,239,226, 83,119,252,240,176,197, 38, 47,190,248,226, 41,189,
+244, 27,110,184, 33,139,195,175, 90,181,138,181,107,215,214, 49,228,159, 65,121,228,145, 71,248,155,191,249, 27,238,184,227, 14,
+126,244,163, 31, 21,254,118,244,209, 71,243,187,191,251,187,172, 91,183, 14,207,243, 56,250,232,163,249,242,151,191,204,169,167,
+158, 74,171,213, 58,228, 99,158,120,226,137,220,117,215, 93,153, 66,127,224,129, 7,248,192, 7, 62,192, 93,119,221, 69, 24, 22,
+ 11, 50,157,126,250,233, 92,122,233,165,156,120,226,137,149, 99,137, 8,183,221,118, 91,166,208,135,135,135,185,234,170,171,248,
+199,127,252,199,236,125,121,217,203, 94,198,205, 55,223,204,185,231,158, 11,192,223,252,205,223,240,192, 3, 15,240,232,163,143,
+214, 19,160,150, 90, 94,228,114, 72,197,103,172,194,199,239,121, 26, 49,109,102, 53, 35,102, 13,192, 96,191, 38, 63, 54,255,189,
+207,210,111, 58, 16, 5, 72,223, 96,172,228,173, 5,107, 75, 10,185, 3,182, 5,118, 2,180, 5,180,227,207,218, 73,182, 87, 84,
+ 45, 65,100, 9,219, 17,127,245,222, 75,184,245,247,223,196, 96, 95,227,121,185, 73, 27, 54,108,232,242,204,215,172, 89, 83,207,
+158, 23,177, 52,155,205,194,231,251,238,187,143, 95,250,165, 95,226,212, 83, 79,229,163, 31,253,104,151, 66, 7,216,183,111, 31,
+ 31,252,224, 7,121,231, 59,223,153,125,183,124,249,242, 74, 47,127, 38,242,233, 79,127, 58, 83,194,183,220,114, 11,231,156,115,
+ 14, 95,253,234, 87,187, 20, 58,192, 15,127,248, 67,254,248,143,255,152,171,174,186,170,114,172, 43,174,184,130,179,207, 62, 27,
+128, 40,138,120,227, 27,223,200,237,183,223, 94,120,223, 30,121,228, 17, 46,186,232, 34, 30,127,252,113, 0, 6, 6, 6,248,195,
+ 63,252,195,122, 82,212, 82,203,207,171,167, 14,240,169,127,221,193, 93, 63, 30,230,165, 11,251, 16, 4,235, 44, 26,105,122,121,
+ 59,180,188,234, 37,243, 88,247,134, 83, 24,108, 12,196,113, 76,207,139, 61,115,107,209,206, 40,226, 9,102,217,153,152,133, 47,
+ 69,230, 46, 70,250,231, 66,216,198,142,237, 70, 15, 62,139,221,253, 40,132, 19, 32, 3, 40, 17,145,130, 29,237,240,182,215,190,
+140, 19,151,206,227,117,239,187,149,177, 86,112,196,111,212,150, 45, 91,216,176, 97, 3,107,215,174,205,188,245,195, 33, 67, 67,
+ 67,133,177, 54,111,222,124, 88, 96,125,151,225,127,168,233,102,135, 99,140,231,227,122,221,243,156,238,120,157, 78,167,240,249,
+ 23,126,225, 23,166,125,188,207,127,254,243,188,243,157,239,228, 23,127,241, 23, 1,184,236,178,203,248,196, 39, 62,113, 72,231,
+254,107,191,246,107,188,254,245,175, 7,224,161,135, 30,226, 29,239,120, 7, 81, 20, 29,242,189,184,238,186,235, 10,198,194,125,
+247,221, 87,185,221,216,216, 24,239,127,255,251,249,242,151,191, 12,192,229,151, 95,206,245,215, 95,207,182,109,219,234, 85,177,
+150, 90,126, 30,149, 58,192,227,123,218, 60,190,167,221,243,239, 47, 95, 54,151,255,248,170, 21,204,246,250, 8,173,198,208,123,
+171,133,182,199, 32, 26,195, 59,249,181,248,103, 95,137,119,226, 47,244,132, 16,116,223, 86,194, 39,238, 34,218,246,175,136,215,
+ 4, 85, 84,160, 51,222, 97,213, 75,150,112,231,135, 47, 99,245,117, 27, 8, 66,251,188, 40,246,195,165,200,215,174, 93,203,154,
+ 53,107, 42,141,131, 45, 91,182,176,126,253,122,214,175, 95,223, 83, 65,221,112,195, 13,217,190, 27, 54,108, 96,253,250,245,217,
+184,107,215,174,237, 74,217,219,178,101, 11, 55,222,120,227,180,216,251,107,215,174,101,221,186,117,149, 99, 76,117, 94, 71,226,
+122,123, 93,235,186,117,235, 88,187,118,109,150, 43, 15, 49, 63, 98,170,112,202,225,144, 47,125,233, 75,153, 82, 63,245,212, 83,
+ 15,121,156,223,249,157,223,201,126, 95,183,110, 29, 65,112,232, 6,234, 9, 39,156, 80, 32,198,221,116,211, 77,147,110,127,231,
+157,119,178,125,251,118,142, 63,254,120,140, 49,188,229, 45,111,225,207,254,236,207,234, 85,177,150, 90, 94,228,162, 71,226,231,
+234, 11,142, 83,253,228, 37, 26,254,233, 37, 58,254, 63, 47,209,177, 27, 95,167,163,127,120,142,142,254,254,203,117,244, 15,207,
+208,224,123,159,215,153, 72,184,253,187,218,186,109,173,182,110,191, 90, 91,183, 95,171,237, 47,253,142,182,255,241,189,170, 95,
+ 95,167, 31,122,247,171,103,116,110,235,214,173, 43,140, 61,221,253,110,184,225,134,108,159,125,251,246,117,253,125,227,198,141,
+217,223,215,173, 91, 87, 57,198,234,213,171,117,223,190,125,211,186,230, 39,158,120, 66, 87,173, 90, 85, 57, 78,249, 88,171, 86,
+173,210,251,239,191,127,202, 49, 63,245,169, 79,245,188,190,161,161, 33,189,245,214, 91,167, 28,227,254,251,239,215,161,161,161,
+231,237,122,171,174,181,215,152, 27, 55,110,212, 35, 53,167,221,159, 43,174,184, 34, 59,102,187,221, 62,164, 49, 78, 59,237,180,
+108,140,157, 59,119,170,231,121,207,233,156,174,185,230,154,108,188,103,158,121,102, 90,251,172, 95,191, 62,219,231,159,255,249,
+159,159,151,123, 87,255,212, 63,245,207,145,251, 57,236,173, 87, 7,155, 30,127,126,197,201, 92,117,238,177,180, 39, 44, 81, 20,
+ 64,123, 2,194, 0, 68,145, 6,244, 93,250, 17,188,211,223,148,237,115, 96,162,205, 87,191,191,149,175,254, 96, 43,251, 70, 39,
+104,120,194,169, 75,143,230,205,103,191,148, 87,190,100, 9, 0,222,178,115,144,230, 28,130,111,125, 28,154,126,124,254, 70, 8,
+ 71,219,124,240,202, 87,243,217,175,253,136,199,159, 62,114, 53,227,135,134,134, 10,113,244,201, 24,243,189,100,205,154, 53, 93,
+233, 67,155, 55,111,102,211,166, 77,153,135,234,122,179, 43, 86,172,200,152,246,147, 21,192, 25, 26, 26,226,214, 91,111,205, 60,
+235, 13, 27, 54,100,219,175, 90,181,170,112,222,107,215,174,205,188,246, 42,143,184,204, 21,112,199, 74,207,109,213,170, 85,211,
+ 74,131, 58, 18,215, 59, 52, 52,196,198,141, 27, 51,239,220, 45, 14, 52,221,130, 66,135, 67,150, 47, 95,158,253,190,123,247,161,
+101, 99,184,136,194, 61,247,220,243,156, 96,119,128, 51,207, 60, 51,251,253,222,123,239,157,214, 62,223,254,246,183,249,205,223,
+252,205,174,253,107,169,165,150,218, 83,215,147,142, 25,208,199,126,255, 60,213,255,121,145,142,223,112,161,142,253,201,171,117,
+236,191,175,138,127,254,232,108, 29,251,131, 83,181,115,215,199, 11,158,213,119, 30,125, 70,255,195,255,119,139, 46,125,207,103,
+116,197,127,190, 89, 79,185,238,111,245,212,223,251, 91, 61,229,253,255, 75, 87,190,119,189, 94,255,183,119,233, 88,171,147,123,
+236,143,124, 77, 91, 95,248, 53,109,223,241, 62,109,223,241, 94,109,223,241, 62,213,175,253,158,126,229, 79, 46, 59, 98,158,122,
+149, 7,187,122,245,234, 25,121,234, 43, 86,172, 40,120,151, 79, 60,241, 68,229, 24, 85,222,237,253,247,223, 63,233,177, 82,185,
+245,214, 91,117,104,104,168,107,219, 21, 43, 86, 20,188,248,125,251,246,117,109,183,118,237,218, 46,111,124,197,138, 21,211,246,
+188,143,228,245, 86, 93,235, 19, 79, 60,161,107,214,172,169,124, 86,207,135, 53,252,189,239,125, 47, 59,151,219,110,187,237,144,
+198,248,187,191,251,187,108,140,223,255,253,223, 87, 64,231,207,159,175,215, 93,119,157,126,247,187,223,213,189,123,247,234,196,
+196,132,110,223,190, 93,111,191,253,118,189,234,170,171,180,209,104,244, 28,239,238,187,239,206,198,251,216,199, 62, 54,173,115,
+120,237,107, 95, 91,184,175,115,231,206,173,189,157,250,167,254,169, 61,117,120,195,105, 67,220,254,238,211,240,173,207,120, 59,
+128,168, 3, 81, 24,199,209, 5,208, 8, 89,176, 12,255,220,156, 57,252,216,142, 97,222,249,201,175,178,107, 34,100,112,214, 0,
+129,231,209,104,120, 52, 61,193,211, 38, 18,133,220,118,223,227,120,198,240,161, 43, 47,136, 61,246,151, 94, 72,244,227,127,134,
+104, 20,252, 1, 16, 8, 59, 1,171,207, 58,158, 37,243,103,241,236,222,177, 25,159,251,186,117,235,122,254,109,245,234,213, 93,
+185,234, 87, 95,125,245,140, 61,245, 79,125,234, 83, 5,239,242,236,179,207,238, 25,151, 78,227,194,169, 71,154,166,208, 77, 22,
+ 15,223,180,105, 19,151, 95,126,121, 79, 46,192,245,215, 95,207,198,141, 27, 51,111,119,245,234,213,108,216,176,161,242, 30,108,
+217,178,165,103, 30,126,122,110,247,223,127,255, 79,237,122,183,108,217,210,115,188,231,163,118,192,197, 23, 95,156, 49,204, 1,
+190,240,133, 47, 28,210, 56, 47,127,249,203,179,223,159,125,246, 89, 46,185,228, 18,110,190,249,102, 22, 47, 94, 92,216,110,217,
+178,101, 44, 91,182,140,183,188,229, 45,124,240,131, 31,228,138, 43,174,168,188,255, 39,156,112, 66,246,251,246,237,219,167,117,
+ 14,229,237,150, 47, 95,206,131, 15, 62, 88,187, 58,181,212,242, 34,149,231,172,212, 27,158,240,161, 55,157,192,117, 23, 28, 75,
+187, 5,109, 9,192,198, 80, 59,141,132,238, 38,160, 65, 7,255,228,243,145,217,121,113,141,235,255,254, 95,121,236, 39, 35, 48,
+111, 54, 35,163, 33, 72,132, 39, 48,232, 9, 11,102,249, 12, 13,248,204,155, 55,155,219,191,251, 24, 23,172, 60,129,213,103,158,
+ 8,158,143,183,226,124,194,239,223,140, 44, 92, 14,106,177, 34, 52, 7,154,188,229,213, 47,225,166, 47,207,124, 65,154,110,201,
+216,245,235,215,103,229, 98,103, 34,171, 86,173, 42, 24, 6,215, 95,127,253,148,202,103,243,230,205,172, 95,191, 62, 83,182,171,
+ 87,175,158, 84,169, 95,125,245,213,147,142,183,105,211, 38, 54,111,222, 92,128,186, 93,152,220,253,124,227,141, 55, 78,122,126,
+233,185,165,153, 0,207,247,245, 78,117,126, 71, 82,230,205,155,199,167, 62,245,169,236,243, 3, 15, 60,192,109,183,221,118, 72,
+ 99,205,159, 63,191, 0,157,255,197, 95,252, 5,125,125,125, 0,236,218,181,139, 31,255,248,199,248,190,207,202,149, 43,153, 59,
+119,110,246,220,190,241,141,111,112,241,197, 23,243,237,111,127,187, 48,222,156, 57,115,178,223, 71, 70, 70,166,117, 14,229,237,
+220, 49,106,169,165,150, 23,159,152,231,178,243,113, 71, 53,249,215,107, 87,114,221,107,150, 48, 62, 30, 17, 17,197, 10,221, 0,
+158, 32,158, 32,190, 32,158, 65,124,193, 44, 61, 61,219,247,201,157,251,249,167,239,111,135,193,129, 56,205,205, 24,240, 60, 34,
+ 12, 7,219, 17, 79,238, 30,103,203,174,113, 2, 21,172,231,113,215,191,231,169, 54,178,224,165,232,196, 1, 32, 76,138,220, 40,
+132,150,115, 79, 89,124, 68,111, 86, 26,255,117,217,214,211, 17, 87,193, 13, 15, 15, 79,187,126,188,107, 60, 76,150, 23,191,121,
+243,230,105, 49,243,221, 56,181,123, 78,101, 36, 98, 58,231,231,122,249,207,231,245,166, 76,249,159,202,203, 98, 12, 55,223,124,
+115, 86,248,165,211,233,240, 27,191,241, 27,135, 92, 4,201,173, 14,119,237,181,215,210,215,215,199,206,157, 59,185,244,210, 75,
+ 89,188,120, 49,231,159,127, 62,175,126,245,171, 89,184,112, 33,239,121,207,123,178, 2, 55,131,131,131,252,239,255,253,191, 51,
+ 69,159,202,172, 89,179,178,223,167, 91, 12,103, 98, 98,162,231, 24,181,212, 82,203,207,145,167,254,154, 21,115,184,235, 55, 78,
+161, 97, 61,198, 59, 22, 60, 5,181,136,130, 88, 65, 61, 73,160,247,184,162,156,248, 77,204,208,241,217,254, 91,119, 31, 96, 98,
+ 60,128,185,125,100, 37,232, 52, 91, 61, 65,149,253,163, 1, 65, 39,228,184,121, 62, 7,157, 92,116,153,179, 8,240,160, 61,142,
+ 12,204, 65, 81, 8, 67,206, 92,177, 0, 99, 4, 59,195, 62,236,215, 95,127,125,207,191,173, 88,177,130,213,171, 87,179, 98,197,
+ 10,134,134,134, 50, 50,217, 76,202,196,186, 74,110,186, 29,223,202, 74, 46,245,128,171,246,159, 46,114,208, 75,241,187, 94,250,
+116,199,154,110,105,221,195,125,189, 51, 25,239,112,203,199, 63,254,241, 66, 93,246,223,251,189,223,227,129, 7, 30, 56,228,241,
+250,251,251, 11,159,199,198,198,184,240,194, 11,121,248,225,135, 11,223,119, 58, 29,254,242, 47,255,146,109,219,182,113,199, 29,
+119, 0, 49, 36,127,205, 53,215, 20, 8,143,141, 70, 94,140,169,170,112, 77,149,148,183, 43, 23,229,169,165,150, 90,126,198,149,
+186,103,132,255,124,254, 34, 62,122,201,113,116, 58,208,106,196, 37, 95, 53, 82, 36,176, 52,155,134,225, 48, 98, 22, 6,124, 47,
+ 46,243,154,168,109, 52, 95, 64,142,153, 55,136,215,108, 16, 89,146,122,241,154, 40,245,228, 95, 21,240, 12, 99,227, 1,219, 90,
+ 45,250,206,116, 78, 85, 35,208, 0,194, 22,152,185,136, 90,212, 90,150, 14,245,211,240, 12,109, 59, 51, 22,241,116,202,189,174,
+ 91,183,142,117,235,214,101, 49,223,141, 27, 55, 22,226,170,147,137,155,155,157, 50,188, 15, 69,122, 33, 4,207, 21,138, 62, 84,
+ 37,236,194,249,207,215,245,254,180,148,250, 31,252,193, 31,240,190,247,189, 47,251,252,201, 79,126,242, 57,231,116,143,143,143,
+ 23,224,238, 27,111,188,177, 75,161,187,242,149,175,124,133, 13, 27, 54,100, 40,198,187,223,253,238,194,220,117,199, 43, 27, 12,
+ 51, 49, 44,106,169,165,150,159, 19,165, 62,111,192,227,139,255,113, 5,171, 79,152,203, 68,199, 66,159, 31, 43,244,192,226, 7,
+150,230,128,199,111,222,190,149, 21,243,251,184,254,181, 75,104, 41, 72,234,173, 7, 1,118,207,227,152,101,231, 0,112,234,177,
+243, 57,239,164, 99,248,246,195,187,193,247, 99, 37,110, 18,133,158,214,145,177,241,190,173,125, 99,156,180, 56, 95,224,245,192,
+ 51,208, 62,128,182,143, 66, 18,210,159,218,120, 95,145, 35,115,163,210,197, 51,141,191, 79,135,188, 86,165,156,102,210,203,253,
+167, 33, 51, 49, 16,122,109,251, 98,186,222,233,200,127,249, 47,255,165, 80, 70,245,239,255,254,239,249,237,223,254,237,231, 60,
+238,232,232,104, 65,169,127,238,115,159,155,114,159,155,111,190, 57, 83,234,167,156,114, 10,199, 28,115, 12,187,118,237,234, 26,
+111, 96, 96, 96, 90,231, 48, 56, 56,216,117, 78,181,212, 82,203,207,129, 82, 63,115,233, 32, 95,126,199, 75, 88, 54,171,201,184,
+ 21,100, 48,118,193,181, 99,233,183, 74,171, 9,111,190,249, 81,190,250,240, 8, 31,122,227,177, 49, 12, 47,128,151,176,223,125,
+131,238,204,187, 89, 25, 35,252,183, 75,207,230,151,126,116, 7,180, 2,232,107, 38,221,221, 18,165,110, 1,181, 48, 58,206, 89,
+167, 29,203, 59, 94,183, 50,219,215,238,122, 24,213, 0,137, 58,241,134,170, 24, 81,158,221, 55, 70,231, 8, 86,150,187,241,198,
+ 27, 11,164,186, 53,107,214,204, 56,190,251, 92,202,173,190, 24,187,194,189,216,175,247,218,107,175,229, 99, 31,251, 88,246,249,
+ 31,254,225, 31,120,215,187,222,117, 88,154, 9,237,217,179,135, 37, 75,226, 58, 12,105, 71,184,233,160, 35,174,172, 88,177, 34,
+ 83,234,123,247,238,205,198, 75,255,157, 74,202,219,237,221,187,183, 94, 21,107,169,229,103, 89,169, 11,112,213,185,243,249,244,
+155,151, 19,134, 48,238, 27,164,207,160, 86,209,137,136, 89,190,240,227,177,128, 95,249,235, 71,121,108, 87, 76,206,121,124, 79,
+ 27, 68,209,204, 83, 7,250, 7,137,182,126, 11,127,120, 43, 50,180, 28,128, 55,158,181,156,245,215, 92,200,251,254,250,155,140,
+239,111, 67,127, 31,120,113, 60,157, 78, 0,227, 19,188,242,101,139,248,226,239,189,137, 89,253, 73,188, 48,152, 32,250,209,109,
+ 72,179, 15, 36, 2,181,168,141,192, 24, 30,120,114,247,140,227,233, 51,149, 77,155, 54,101,112,245,100,253,172,123,201,250,245,
+235,127,174,186,187,189,152,175,119,237,218,181, 5,136,253,107, 95,251, 26,111,127,251,219,167, 29,175,158, 74, 30,121,228, 17,
+206, 56,227,140, 25, 41,211,242,118, 46, 42,242,232,163,143,114,250,233, 49, 25,245,248,227,143,159,214,120,203,150, 45,203,126,
+111,183,219,108,221,186,181, 94, 21,107,169,229, 69, 44, 83,178,223,215,190,106, 33,159,121,235,114, 90, 33, 4,131, 62, 50,224,
+161, 22, 24,143,152,213,239,241,127, 30, 31,225,220, 79, 60,148, 41,116,128,135,118, 77,196, 36,185, 40, 81,176,158,137, 33,246,
+112,148,224, 91,127, 90, 24,255, 55, 95,191,146,239,124,228,109,188,239,151,207,224,196,163,251,232,215,128,217, 38,226,213, 39,
+ 45,224, 47,254,211, 69,220,243, 39,107, 56,113, 81,206, 18, 14,191,247, 25,116,255, 86,104,244,161, 9, 9,143, 48, 2, 35,108,
+126,108,215, 11,242, 38,247, 98,157,191,216,207,175,215,182, 47,244,235,157,142,188,251,221,239,230,166,155,110,138, 91, 10, 19,
+ 87,124,123,235, 91,223,218,213, 8,230,185,200, 67, 15, 61,148,253,158,166,178, 77, 37,229, 24,184,203,114,119,227,241,175,120,
+197, 43,166, 53,158, 91, 43,254,177,199, 30,139,155, 46,213, 82, 75, 45, 63,155,158,250, 96,211,240,225, 11,151,208,105, 89,152,
+221, 64,154,130,118, 20,175, 21,210, 55,203,227,163,247,236,224,191,125,229, 41,130,168,232, 29, 63,244,236, 4, 79,141,116, 88,
+ 60,187, 73,164,154,247, 87, 31, 24,196,110,191,135,240, 95, 63,129,255,154,156,116,244,242, 19, 22,240,167, 87,157,207, 71,222,
+ 17,178, 99,223, 24,205,134,207,210,163,187, 83,107,162, 31,253, 35,225,131,127, 11,253,113, 28, 80,140,135, 70, 22,137, 44, 65,
+171,205, 29,247, 30,121, 47,227, 80,226,195, 46,161,108,245,234,213, 12, 13, 13,189,160,160,244, 45, 91,182,100,231, 55,221,238,
+115,147,109,247, 66,191,222,169,228,202, 43,175,228, 51,159,249, 76,166,208,239,187,239, 62,126,249,151,127,185, 43,253,235,185,
+202, 61,247,220,147,253,190,116,233, 82,250,251,251,167, 76, 69, 43,247, 81,223,185,115,103,246,251, 55,191,249,205,130, 82,159,
+ 61,123,246,148, 49,242,243,207, 63,191,114,255, 90,106,169,229,103,208, 83, 95, 48,203,103,168,207, 35,180, 49,187, 93,199, 35,
+154,157, 8,233, 19, 46,255,194,227,172,251,210,246, 46,133, 14, 48,222,177,252,249,189,187,104,248,160,173, 8, 80,196, 16,231,
+171, 15,206, 33,122,240,115, 4,155,254, 27, 58,190,167,232,133, 52,124,150, 47,154,215,173,208,131, 9,162,251,254,146,240,155,
+127,130,244, 53, 17,207,139,227,245,141, 62, 8, 66, 26, 6,238,188,127, 43,219,119, 29, 89,146, 79,153,244, 53, 93, 38,118, 57,
+ 85,171, 87,209,150,159,150,184,231,151, 86,155, 59, 84, 47,253,197,112,189,147,201,175,254,234,175,242,185,207,125, 14, 99,226,
+ 87,227,129, 7, 30,224, 13,111,120, 3, 7, 15, 30, 60,236,199,186,231,158,123, 50, 56,189,209,104,112,193, 5, 23, 76,185, 79,
+218, 25, 14, 96,255,254,253, 60,242,200, 35,217,231,175,127,253,235,217,121, 54, 26,141, 73,107, 27,164,134,196, 69, 23, 93,148,
+125,254,210,151,190, 84,175,136,181,212,242,179,172,212,119, 28, 12,216,218, 10, 25, 28,244, 24, 12, 34, 6, 61, 56,104, 44,231,
+223,244, 8, 27, 54,239,155,116,224,207,124,103, 55, 35, 65,132, 31, 68, 16,216,152, 53,151, 20,165, 97,214, 28,236, 19,255, 68,
+231,182,119, 18, 61,116, 27,122,224,233,202, 49,116,108, 55,246,137, 77,116,254,225, 42,194, 7, 62, 13,253,253,224,249,164, 44,
+ 60, 49, 13,164, 21,128,167,124,224,179,223, 59,162, 55, 42,109,154,226,202,100, 5, 88,202,219,185,100,177,117,235,214, 29,182,
+126,236,135, 67, 54,108,216, 80,240,164, 39, 43,155,155,222,139,201,182,121,161, 95,111, 47,249,149, 95,249, 21,190,240,133, 47,
+224,121, 49, 9,244,161,135, 30,226,146, 75, 46, 97,255,254, 35,211, 40, 40,138,162, 2,227,253, 3, 31,248, 64,134, 14, 84,201,
+156, 57,115, 10,172,251, 59,239,188,179, 0,151,119, 58, 29,110,185,229,150,236,243,117,215, 93, 55, 41,172,127,253,245,215,103,
+215,250,147,159,252,132,127,249,151,127,169, 87,196, 90,106,249, 89, 86,234,157, 80,185,224, 83,143,242,255,223,191,155, 47,110,
+ 57,192,186, 77, 79,115,202, 71,254,157,251,158,156,218, 35, 30, 30, 15,249,205, 47,110,163,209,231,161,163, 33, 26, 88, 32, 73,
+111, 19,129,193,185, 16,142, 16,124,235,195,116,110,187,146,206,151,174, 38,252,214, 71, 9,239,253, 51,194,111,127,156,206,157,
+239,165,243,197, 95, 35,216,116, 61, 58,186, 21,102,205,139,139,210,164,107,158, 53,104, 91,104,244, 27, 62,114,235, 3, 60,252,
+212,145, 89,120, 87,172, 88,193,218,181,107,185,255,254,251, 11,138,105, 38,149,210,160, 88,198, 53,237, 52, 54, 29,143,120,197,
+138, 21, 89,142,252,145,146,225,225,225, 2,153,109,245,234,213,133, 82,168,101,133,238,118, 73,123, 49, 94,111,149, 92,114,201,
+ 37,108,216,176, 33, 43,224,242,232,163,143,178,122,245,106,246,236,217,243,156,198, 85,213,236,231,173,111,125,107,215,223, 63,
+242,145,143,100,222,245,249,231,159,207,159,254,233,159,102, 40,129, 43,105, 21,185,148,216,102,173,173, 36, 32,126,232, 67, 31,
+202,226,254, 47,123,217,203,184,233,166,155, 50,197,237,202, 21, 87, 92,193,123,222,243,158,202,253,106,169,165,150, 23,175, 76,
+201,126,223,190,175,205,251,254,207,182, 67, 26,252,139,255,182,151, 79,156, 56,155,247,189,118, 49, 19, 7, 58,200,220, 38,244,
+153,152, 68,135, 66,163,129, 52, 26, 49,131,125,239, 15, 8,119,109, 38, 45, 43, 39,198, 7,191, 9,179,102,151, 86, 73,160, 19,
+161,118,128,254,190, 38, 95,127,240, 39,252,247,207,127,255, 57, 47,188, 51,149,171,175,190,122, 70,113,226, 77,155, 54,113,245,
+213, 87,103,202, 50, 85,116,155, 54,109,202,234,178,187,138, 45,173,100,151, 26, 18,147, 85,189, 59, 28,178,126,253,250, 66, 27,
+212,181,107,215,102,245,215,211,115, 91,189,122, 53,107,215,174,101,104,104,136, 45, 91,182, 48, 60, 60,220,211, 3,127,161, 95,
+111, 89,110,191,253,246,130, 87, 59, 62, 62,206,103, 63,251,217,105,239,255,134, 55,188,225,144,142,187,123,247,110,174,189,246,
+ 90,110,190,249,102, 0,222,251,222,247,114,254,249,231,243,153,207,124,134,135, 31,126, 24,223,247,121,229, 43, 95,201, 53,215,
+ 92, 83,104,216,242, 71,127,244, 71,149,141, 87,182,109,219,198, 7, 63,248,193, 44, 13,239, 93,239,122, 23,103,156,113, 6, 55,
+221,116, 19,143, 63,254, 56, 11, 22, 44,224,178,203, 46,227,237,111,127,123,134, 10,220,125,247,221,252,245, 95,255,117,189, 26,
+214, 82,203,207,131, 82,127, 78,202, 18,184,238,246,237, 28, 51,183,193,149,103,206,167, 53,210,129, 57, 13,164,223,203,243,215,
+ 99, 13, 14,205,126,100,170,193,172, 66, 59,194, 30,232, 48,176,100, 17,155,183,238,230,178, 15,223,125, 68,115,211,203,178,121,
+243,102,174,190,250,234, 67,170,108,150,122,246, 55,220,112, 67,230,233, 86,117,129,251,105,200,240,240, 48,151, 95,126, 57, 27,
+ 55,110,204,120, 3, 43, 86,172,168,108,118,147,110, 59, 85, 35,156, 23,242,245,150,165, 92,172,101,186,236,241,195, 33,159,251,
+220,231, 88,178,100, 9, 31,254,240,135, 49,198,112,214, 89,103,241,201, 79,126,178,231,246,159,248,196, 39,248,227, 63,254,227,
+158,127,255, 31,255,227,127,112,194, 9, 39,112,237,181,215, 2, 49,169,241,211,159,254,116,229,182, 63,248,193, 15,120,219,219,
+222,118,216,210,244,106,169,165,150,159,174,152, 35,125,128, 32, 82,254,159,155,159,224,163,119, 63, 75,127,211,208, 56, 16, 96,
+ 71, 2,104, 89, 8, 99,101, 45, 8, 34, 21, 63,201,255,136,128,142, 69, 15,132,200,112,155,129,161,163,248, 63, 15,238,230,194,
+ 15,126,141,253, 99, 71, 30, 50,220,180,105, 19,235,215,175,231,242,203, 47,231,236,179,207,126, 78,165, 74,215,175, 95,207,217,
+103,159,205,250,245,235,167,229,233,111,216,176,129,171,175,190,250,121,105, 98,146,182, 52,157,170,197,235, 76,238,193, 11,249,
+122, 95, 72,114,227,141, 55,114,193, 5, 23,240,221,239,126,183,231, 54, 15, 62,248, 32,111,126,243,155,121,255,251,223, 63,101,
+234,217,111,255,246,111,115,249,229,151,243,248,227,143, 87,254,125,100,100,132,143,125,236, 99,156,119,222,121,117,193,153, 90,
+106,249, 25,146, 4, 7,127,126,228,162, 83,230,241,191,174, 60,145, 19,134,250, 8,219, 74,232, 11,244,123,136,111, 98,207,221,
+ 56,190,186, 42, 68,160,161,133, 86,132, 23, 88, 26, 13,225, 64, 4,191,245, 15, 79,115,203,191, 62,141, 85,125,209, 63, 0, 23,
+114,118,149,235,240,240,240,140, 91,188, 30, 78, 73,225,112,183, 39,250,166, 77,155, 14,185, 58,220, 11,253,122, 95, 72,114,210,
+ 73, 39,113,206, 57,231,176,116,233, 82, 68,132, 29, 59,118,112,239,189,247,242,216, 99,143, 29,210,120,231,158,123, 46, 43, 87,
+174,100,209,162, 69,140,140,140,176,117,235, 86,190,254,245,175, 79,187,147, 91, 45,181,212, 82, 43,245,158, 50,183,223,227,138,
+115,230,243, 95, 47, 90,202,242,163,226,210,176,170,138, 21,193, 58, 58,221, 40, 24,213, 56,117, 77, 96,247, 68,196, 39,238,217,
+193,255,250,206,110,118,140,212,132,158, 90,106,169,165,150, 90,106,249,169, 43,245, 84,250, 26,134,147,143,233,231,109,175, 56,
+154,215,172,152,195,146,217, 13,142,234, 51, 52, 61, 33,136, 96, 36,136,216, 57, 22,242,253,167,198,248,194,191,237,229,161,103,
+ 38, 24,109, 71,245, 19,171,165,150, 90,106,169,165,150, 23,154, 82, 47,139,239, 9,190, 17, 60, 19,243,225,194, 72, 43, 11,219,
+212, 82, 75, 45,181,212, 82, 75, 45, 47,112,165, 94, 75, 45,181,212, 82, 75, 45,181, 60, 55, 49,245, 45,168,165,150, 90,106,169,
+165,150, 90,169,215, 82, 75, 45,181,212, 82, 75, 45,181, 82,175,165,150, 90,106,169,165,150, 90,106,165, 94, 75, 45,181,212, 82,
+ 75, 45,181,212, 74,189,150, 90,106,169,165,150, 90,106,165, 94, 75, 45,181,212, 82, 75, 45,181,212, 74,189,150, 90,106,169,165,
+150, 90,106,169,149,122, 45,181,212, 82, 75, 45,181,212, 50, 3,241,175,121,211,155,105,120, 62, 86, 13,160,113, 87, 52,226,138,
+ 52, 74, 92,123,221,160, 24, 44, 96,211, 62, 43,201, 39,139,162,120,128, 7,132,170,180,109,188,175,193,162,170,196,133, 93,211,
+ 26, 55, 54,254, 93,227,223,210,102,143,113, 63,115, 1, 81, 68,227,227,186, 18,143, 99,146,239,163,120, 52, 5, 68,208,100,108,
+ 75, 60,134,160,168, 74,126, 5, 26, 95,149, 38, 87,165,201, 30,217, 57, 41,136, 52,208,126,143,134, 23,225,135, 33, 97,160, 68,
+ 22,210,130,118,249,222, 73,165, 30, 17, 36,105, 38, 35,164,227, 39,215,128,179, 79,210,175,154,180,134,189,106,118,150,217,181,
+ 37,103,101, 1, 35,130,143, 98,173, 16,160,137,197, 21,223, 23, 48,136,153, 11,205,126,140,175,120, 58, 78,212, 58, 72, 20,228,
+199, 81,199, 82, 75,175, 81, 37,255, 94, 0, 73,159,137, 8, 70, 20,181,234,236, 39,233,227,201,238,171,160,136, 10, 22,197, 38,
+207, 45,158, 19,177,216,228,249,136,123,140,228,142,169,166,247, 63,254, 73,111,135, 65,241,146,103, 19, 38,243,137,174,230, 60,
+146,220, 47,247,251,210,167, 30,115, 69,156,123,235,252, 39,187,255,148,255, 46,154, 62, 88, 84, 35,240,250,241,250, 26,232,196,
+ 65,162,200,121,140,217,127,108,246,133,117, 79,166,234,152,221, 31,243,121,227,156,127,229,126,233,105, 57,247, 70, 36,249, 62,
+249,155, 59, 55,171,254, 91, 61,182,102,255,116,223,131,138, 27,164,206, 28, 83,231, 57, 40,197,241, 74,207,134,194,251,221, 91,
+220, 97,180,199,120, 83, 73,247, 61,214,222, 27, 77, 90,114, 75,157,243,159,186, 54,151, 38,219,202, 36,215, 90,190, 62, 41, 94,
+108,182,179,118,127, 40,204,221,248,116,170,207, 73,187,190, 77,239,228,116,234,139,233,164,247, 78, 43, 47, 72, 32, 24,135,176,
+ 5,166, 25,207, 15,209,120, 97, 48, 13,144, 6,234, 54,211,214,222,207,213, 93, 57,149,252, 93, 44,108,175,147, 62,217,233,205,
+155,105,206,215,234,105, 51,221, 57, 92,188,154,222,115, 84, 39,189,158,233, 79,122,186,214, 68,127,206,224, 32, 54, 82,108,172,
+134, 17, 4, 47,153, 12, 22, 5,137, 16,213,120,193, 87,131, 36, 10, 40,202, 22,110,139, 98, 17, 21, 26, 18, 55, 98,137,212, 38,
+170, 94,241, 85,137, 84, 81,241,147,131, 6,160,177, 2, 75,213,180,123,177,226, 44,211,174, 10, 54,217, 34,231, 97,146,189,172,
+ 99,134, 72,114,254,138,102,235,147,150, 23,175,146,234, 85,231, 69,180, 97,136, 17, 24,244, 60,130,184,109,123,182,135,116,237,
+ 35, 72,114, 16, 91,154,126,146,124, 82, 71,177, 34,224, 57,139,126,250,220, 77,124,231, 74, 10, 57,126, 49, 26,228, 90, 48, 29,
+ 81, 76,132,215,244,104, 54, 21,207, 10,138, 79,139, 88, 49,138,148,159,183,196,239,153,243,194,231,139, 73,124,126,158, 8,106,
+242,251,157, 26, 22, 38, 83, 21, 32, 26, 27,114,169,161, 96,156,165, 2,226,230,122,169,242, 78,207,213, 38,247,193,144, 43,245,
+244,114, 4,139,213,228, 89,165,107, 64,186,159,198,198, 11, 98,146,231, 24,197,231,170,189,151, 41,117, 22, 82,233,122,185,210,
+ 59,106,179,155, 94,232,236, 39,206, 66,172,233,184, 6, 36, 98,142, 23,209,105,248, 76, 72,114,111, 11,111,164,151,141, 99,146,
+201, 53,185, 50,215,202,151, 90, 75, 27,106,105,133,214,146,130, 47,188,190, 34, 96, 12, 26, 69,133, 5, 71, 11, 11, 99,239, 99,
+187, 3,235, 36, 11,111,118, 92,205, 45, 17, 21,201,191,170, 48,172, 42, 21,181, 78,190,124,169, 51,119, 40,232,222,231,170,224,
+181,116, 49,210,107,205, 45,152,142,130, 76,109, 36,148,236,161,236, 29, 83,237,173, 24,179,147, 51,133,121,219,109,207, 74,181,
+214, 51, 64,226,128, 85,221, 63,117,222,127,156,245,115,202,219, 88,152,227,210,243,121,138, 8,214, 42,237,145,189, 68, 3,139,
+ 48, 75, 47, 65,180,129, 9,219,248, 97, 27,211,222, 11,209,211,160, 7, 80,227,129, 52,179, 33,211,121, 83, 62,153,194,209, 52,
+125, 62,213,231, 81,222,190,184, 38,200,161,187,183, 61,109, 31, 45,122, 36,147, 25, 37, 83,108, 87, 60,196, 97, 40,230, 42,221,
+ 54,170, 8,248,125,253,253,180,198, 39, 50,207, 83, 37,174,189, 46,162,185,215, 37,177,151, 70,166,132, 21,155,122,157, 73,223,
+115,171,241,162,156,122,114,169, 71,168,137,242,142, 84,137, 76, 3, 49,160, 26,162, 81, 98,116, 38,222, 35, 5,132,128, 76,105,
+187,158,183,201, 94, 55,113,124,255, 68, 65, 97,241,156,253, 10, 83, 39, 57,159,196,223,205,142,145,249,129,137,231, 29,116,224,
+160,144,140, 83,180,196, 83, 69,158, 33, 25, 5, 37,150,250,166,210, 53, 21,227, 5, 86, 42,157, 32,139,128,181,168, 24, 68,226,
+ 5, 45,112, 94, 74,163,174,119, 11, 68, 45,232, 68, 88, 17, 68, 3, 52, 42,190, 7,238,162, 24,191, 63,154, 79,247, 12,217,208,
+204, 75,140, 28, 23,131,138, 99,111, 0, 0, 32, 0, 73, 68, 65, 84, 35, 61,191,136,184, 59, 94,182,246, 37,243, 65, 75, 70, 77,
+ 58, 19,140, 74,225,123, 91, 64,123,146,237, 82, 80, 68,213, 65, 77,186, 95, 91,131,137,231,139, 1, 49, 6, 27, 41, 81, 20,102,
+ 11,113,250,226, 90,103, 49, 20,215,125, 45, 25, 95, 10, 24, 73, 61,175, 24,181, 16,145,146,130, 76,206, 55,123, 65,226,139,157,
+ 24,143, 13,174,116,255,242, 82,148, 45, 34,174, 65, 81,242,164,202,223, 73, 14, 64, 20, 23, 39, 73,206,194,245, 36, 93,243, 69,
+227,174,196,138,115,238,170,120, 26,197,239, 88,201, 20, 46, 30, 71, 28,228,168,194, 43, 73,230,126, 47,199, 84, 36,121,255, 76,
+ 98,252, 72,105,249,204,174,175,251, 46,165,127, 50, 56,232,207, 52, 61,182,124, 83,153,177, 63,147,162,100,221,222,182,244,240,
+ 76,203,251, 75,126,143, 38, 91,236,211,153, 46,154, 27,244,154,158,114,241, 90,197, 89,243, 83,133,157,234,184, 46, 59, 83, 75,
+ 8, 76,218,170, 50, 69, 77,122,156, 88,229,252, 76,255, 43,147,184,184, 82, 54,253,171,111,142, 17,161, 21, 88,198,134,247,176,
+228,204,151,115,244, 5,239, 34,244,230, 17, 28,216,193,216,216, 24,227, 7, 32,220,217,194, 31,222,137, 57,248, 36, 18,108, 1,
+ 25, 69, 77, 19, 85,159,105,220,212,226,116,210,201,149,232,140, 21,228, 36,155,201,164, 8, 64,111,116,100, 38,103,208,253,142,
+201,180,177,148,233,202,156, 57,115,240, 5, 11,106, 51,248, 85,178, 5, 84,146, 9,152,174, 64, 6, 21,136, 52,202,161, 74, 20,
+155,238,107, 20, 47,153,161, 97, 50, 86,234, 93, 91, 12, 34, 17,198, 70, 88, 99, 16, 19, 43, 97,235, 64,220,138, 77, 20, 82,174,
+176,203,214,151,166,240,186,243, 93,170,164,109,230, 81, 43,198,217, 79, 29, 3,176,236,232,100,190, 64,130, 28,104,162,212, 66,
+ 7, 53,200, 39, 89, 2,145,211,109, 93,199,191,251, 8, 54, 91, 80, 82,207, 83, 10, 6, 74,230,254,198,215, 97,230, 35, 13, 75,
+ 20, 12, 35, 42,217, 75, 46, 18, 43,244,110,207, 91,137,130, 22, 26, 17,183,170,181,146,135, 48, 74,147, 75, 85, 11, 43, 73,122,
+253,153,177,236, 96,202,238,154, 44, 42, 9,242,146,135, 45,170, 38, 92,186, 14,216, 46,251,184,104,216,100,250,214,209, 52, 82,
+130, 44, 93, 35, 61,213,175,162, 22, 79,114, 4,169, 91,137,119, 1,150,197,243, 76,149, 85,122, 60,201,183,146,194,162,155,134,
+ 55,242,185, 0, 66,152,134,139, 98, 43, 52,123, 39, 50,131, 34,189, 48,145,162,199,149, 45,218,147,124, 39, 41,212, 79,247,118,
+169, 54,150,130, 58,206,143,225,236, 27,217,210,119,133,135,169,110,244,167,251,217,225,122,131, 78,200,194,185,183,169,218, 18,
+ 71,211,170,100, 58,172,112, 61, 74,197,139,150,219, 0, 93, 6, 76, 47, 40,180, 75, 5, 31,146,114,151,204, 32, 41, 95,231,180,
+ 87, 80,209,194, 56,170, 21,234,220,125,199, 74,171,149,166,243,170,226, 30, 59, 55, 59, 63,150, 86, 43, 10, 41,163, 58,147,120,
+187,229,224, 75,121, 13,236, 82, 49, 54, 2,241,220,183,181,167,138,242, 4, 14,182,149,214,200, 30,222,252,166,115,121,245,154,
+223,101,124,116,132,209,159, 60, 68,103,246, 24,251, 6, 3,158,156,235,243,212, 60,143,145,189, 67, 68,187,143,194,223,187, 20,
+ 57,248, 48,132, 79, 33, 38, 4,233,155, 90, 17, 11,213,240,187,184,104,110,239,249, 50, 61,229, 88,189,165,227, 27, 76,162,190,
+187, 71,153,177,111,126, 56, 21,123,133,183,238,103,202, 75,115,143,211, 56, 19, 77, 36, 86,183,154,172,184, 70, 28, 15,215, 57,
+157, 40,129,156, 68, 4, 95, 5,155,236,175,162,137,135,150,122,155, 17,214,130, 21,165,145, 40,175, 78, 9,226, 46,204,123,205,
+ 99,229,214, 81,236,145, 51,213, 37, 81,181,169, 87,175, 5,111, 88,157, 24,115, 25, 54, 75, 32,212,220, 33,138,183, 21, 28,120,
+ 88,178,152,183, 84, 62,204,216, 20, 82, 35, 88,241,241,136,192, 70, 88,141,239,149, 36, 79,209, 22, 22,134, 36, 94,172, 29,100,
+ 86,147,217,106, 8, 70, 44, 29,199,235, 21, 41,190,204, 46,156, 31, 70,177, 50, 87,113, 96,238,130,173,157,132, 78, 52, 55, 66,
+ 82,229,149,198, 99, 99,165,161,217, 24,217,191,169, 33,226,196,207,171,161, 47, 71, 9,138,244, 92, 96, 68,186, 95, 78,209, 4,
+198,235,130,205, 51, 38, 7,106,115,116, 33,126,219,108,241, 28,164,232, 41, 87,190,145, 34, 61,189,107, 41,192,239,238, 46,169,
+217,232, 37, 51, 39, 44,121, 43,137,215,159, 92,155,102, 51, 50,135, 47, 69,186,189,210, 74, 69, 94,190, 6,231, 25,167, 40,149,
+139,171,185,177,189,108,223,148,179,225,220, 23, 91, 82,174,249,177,181,228,143,150, 21,185,235,209,151,148,135,186, 74, 38, 70,
+239,220,109, 10,122,170,164,128,181, 74,229,138, 99,206,168,139,253,244, 80,209, 51, 84,238,142,239,156,132,202,226,119,116,178,
+152,103,229,106,169,213, 75,174, 58,158,121, 17, 95,172, 66, 97,232, 82,238, 5,123, 18,113, 30, 87, 55, 50,212, 21,254,171,122,
+ 62,133,247, 72,144,146,186,200,246, 19, 65,195, 0,157, 24,199, 52, 6,160, 17,197,106, 96,146, 91, 97, 4, 70, 67,131,142,236,
+226, 61,191,122, 50,175,121,231,251,217,190,101,156,145, 39, 30,161, 61, 49,138, 31,118, 88,216,128,121, 18,178,108, 86,135, 39,
+154, 62,219,103,123,140,207, 94,128,183,235, 92,252,225,133,104,251, 71, 96, 38, 64,250,122,194,251, 82,120, 23,181, 55,238,222,
+165,220,181,215, 38, 51, 87,236,101,195, 74, 39, 31,175,252, 92,196,209, 89, 51, 4, 11, 14, 91,232,192,143,189, 56, 73, 98,159,
+150, 40, 49, 46, 69,227, 23, 87, 52,167,114,229,241,100, 50,226,151,107,113,168,186,203,114, 14,214, 27,231, 91, 35,241, 39,171,
+ 66,219, 89,168,109,215, 99, 74,173,228,152,112,103, 51,207, 57,135,215,203, 20,182, 36, 82,149, 17,249,138, 97,172, 18, 68, 24,
+ 99,177,136,198,161, 5, 71,157,102,202, 93, 37, 85,114, 82,138,237,185,136,129, 34, 98, 98, 79,223,196,113,106, 35, 66, 39,212,
+196,145,115,148,136, 11, 13,139, 65,237, 1,194,131, 66,127,191, 97,208, 55,236, 10,226,235,205, 32,121, 7, 47,136,185, 11, 78,
+156, 81, 36, 67, 18, 82,197, 30,165,196, 56, 45,198,210, 81, 55,166,157,147,219, 10,238,180,163,212,242,120,110,217,131,208, 60,
+ 12,161,146,227, 36, 90,188, 47, 69, 47, 73,115,147, 76, 37, 11,231, 72,130,142,216,114, 76,214,230, 38, 99, 36, 89,148, 59,131,
+ 83, 93,156, 38,243,192, 29,239, 57,219,198,129, 44,213,137,115, 26, 60,212, 51, 16,133,185, 63,147,140,161, 46, 11,205,107,208,
+232,111,162, 19,163,132, 81, 73, 17,100,215, 79, 55,228,237, 40, 41, 38, 85,228,238,126, 69,163,160,176,216,151, 41, 84, 78,248,
+ 64, 28,227,197,186, 70, 69,151, 71,236,160, 11, 20, 81,131,106,165, 89, 60, 87,117, 13,140,114, 28,184,234,122,202, 70,149, 84,
+ 67,222,233,182, 54, 69, 6,213, 93, 59,122, 43,119,166, 1,229, 75,233,221, 79, 29,151,124, 41,152,124,255, 34, 44,221, 99,108,
+ 71, 59, 75, 55,101,179,231,253,213, 73,149,145, 84, 19,169, 52, 15,107,226,160,109, 90, 50,138,170,113,187, 20,108, 21, 90, 19,
+ 29,218,157, 49, 6, 78, 89,141,232, 10,204,211,255,140,218, 93, 32,253,149,251, 10,208,182, 66,123,248, 32,191,117,225, 92,222,
+240,235,255,137,251,159,140,120,246,201,135,104,181,218,216, 80,241,196,131,192,210, 32, 98, 65,195, 99,110, 83, 88,120,148,242,
+120, 95,196,174, 89, 13,130,193, 83,240,119,207,129,209, 7, 17,246,161,153, 98, 47, 25, 58,137, 19,169, 76, 22, 47, 40,216, 91,
+135, 68, 44,155,145,138,237, 10,215, 77,174, 87,115,195, 89,103,160,136, 15,143,170,151, 60, 76,162,241, 2,108,114,202,129, 85,
+136, 72, 61,108,197, 38, 90, 92, 50, 18, 90, 12, 52,231, 16,123, 30, 95, 55,201,194, 17,169, 18,185,244, 52,205,249,239, 5, 83,
+ 75, 92,187, 50, 31, 59,135, 31, 77,230, 83, 88, 71, 81,217,130,170,209,204, 66,210,146, 71,109, 18,149,151,190, 8,182,203,203,
+ 44, 18,114, 82,210, 87, 70, 96, 75,160,107,227, 48,190, 83,245, 32,217, 98, 21,197,112, 49, 54, 38,150, 1,190,100, 58,170,240,
+204, 10,214,183,120,104, 40,236, 59, 8, 35, 33,120, 98, 17, 51, 15,105, 28,133,218,196,192,194,160,226, 33,158, 87,132, 1,157,
+ 69,223,150, 20, 93,250, 65,170,163,141, 69, 8, 54,241,224, 76,233, 53,171, 90, 30, 18, 92,220,185,128,110,106,138, 24, 3,198,
+203,184,251,241, 61,181,101, 6, 88, 23, 20, 92, 86, 80, 54, 51, 94,114,159, 82,164,251,252,164,124,165,201, 92, 85,103, 14, 73,
+166,208,226,165,175,225,129,239,245, 38,180, 10, 6, 52,160,223,142,227,139,102,164,195,248, 48, 38,135,164, 83,222,137, 72,225,
+ 76,196, 24, 68,188,226, 53,150,183,169,248,206,125,120, 82,184, 28,233,134,207,165,104, 84,152,194,121,244, 62, 78, 33, 68,235,
+ 62,207,138,115,200,223,161,148,232,148,188, 15,153, 57,217, 99, 63,169,250, 85,122,122, 47,198,217, 93, 68,166, 69,120,146, 66,
+ 8, 77,166,216,174,136, 2, 72, 25,145,168,160, 94,165,239,182, 76, 1,191,102,198, 43, 85,188,130, 73, 8, 97, 85,223, 8,133,
+ 80, 71,121, 56,117,236, 42,209, 88,193, 75,198,168,144, 66, 48, 74, 41,210,117, 61,129,209,137, 8, 47, 24,225, 13,191,250, 43,
+172, 92,243, 31,137, 78, 58,137,104,112, 37,132,182,228, 6,229,231, 96, 69,216,119, 32,226, 77, 43,198,121,253,149,151,243,253,
+189, 39,178,119,251, 35,132,157, 0,193,226,121,137, 97,174, 22,245,132,182, 24, 68,149,229,158,225,236, 89, 62, 47, 89,164, 52,
+143, 23,130,165, 75, 97,246, 89,192,209,136, 6, 61,194, 37, 83, 67,222,213,184, 8, 83,207, 24,157,161,102,116,119,148,153, 24,
+ 13, 50,229,217, 72,239,199,127,232, 84, 63,231,125, 51, 97,194, 78,183,106, 19,208, 79,179,225,147, 36, 54,208, 88,197,121, 98,
+ 48, 38,246,100,172, 42, 33, 54,102,199, 75, 30,207,214,132, 80, 97, 12,142,162, 53, 88,135,179,174, 41, 77, 44,177, 37,226,148,
+ 56,201,198,144,204, 35, 76, 95, 28,131,151, 18,242,146, 4, 59,144, 36,185,205,181, 80, 12,238, 85, 88,114, 5, 1,130, 49, 46,
+241, 41, 73,133, 83, 87,249, 75, 22,127, 78,177,137, 52, 28, 97, 92,184,210,153, 86,177,103, 14, 86, 35,108, 20, 97,173, 98,173,
+ 11,111,166, 48, 56,142,178,202,207,192, 19,176, 6,218,153, 87,107, 48, 71, 13, 50,112,148,135,159,146,233, 36,190,247,190, 17,
+ 39,209,172, 56, 47,194, 2,252,174,133, 23,164, 12, 83,105,193,247,147,204, 59,119,207, 73, 42,102, 92,118, 15, 84,178, 84,193,
+ 42,234,174,241, 4,223, 55, 9,137,210,137,239, 73,158,173,224,210,114,138, 74, 75, 16, 49, 9,138,226, 96, 90, 25,148,218,107,
+117,205, 21,150,201,104,255,197, 88,124,202,220,215, 48, 72, 60, 31, 41,152,128,226, 24, 5,162,202,248, 68, 68,199,198,243,198,
+ 85, 36,149, 11,175,163,124, 5,141,223,147,158,138, 60, 51,167, 18,165, 32,165,235,147,242,129,226,177,187,140, 0, 41, 41,225,
+ 24,117,144, 10,197, 44, 69, 55, 55,227,112,164,247,186,235, 60,187,152, 18,146, 61, 79,145,106,229,239, 42,201,242,179,234,101,
+ 96, 84,146,142,100,250, 60,230,162, 29, 35,147,146,223,164,108,220, 84, 92, 75,217, 83,158,150,218,144,226,179,213, 66,249,143,
+162, 10,146,146,131, 64,233,185,118,175,238,229,119,204, 77, 59,117,109,236,252,168, 57,149, 56,191,162,177, 80,240,199,134,185,
+234, 87, 87,241,182, 75,223,201, 42,221,201,188, 57, 59, 8, 6,103,129, 54, 18, 54,145,118,221,219,253,109,225, 20,111, 63,151,
+ 93,246, 74,158,158,247, 70,118,111,221, 70,208, 57,136,209, 14, 30,138,213, 0, 49, 74,195,111, 2, 62,198, 70,168,137,232, 24,
+225,104, 79, 56,115,192,227,164,249,208,183,212, 16, 46, 89, 10,131,167,129, 54, 65,195,158,138,177,136,130, 77,101,208,209, 51,
+196, 35,189,148,181, 76,110,106,149,255, 46,211, 48, 27,122,235,115, 57, 84,107,226,144,197,136,196,217,230,113,154,154, 98, 9,
+137, 52,140,149, 84,234, 15, 43,177,178,210, 24,118, 52,162,120,196, 9,233, 54, 81,204,162,121,172,209, 38,240,182, 72,170, 32,
+ 52,155,183,154, 32, 0,238,237, 42,120,101,201, 62, 94, 70, 14,147,108,127, 95, 4, 63,125, 41,196, 77,175, 42,197,169,132,130,
+231,233,198,192,125, 17, 60,201, 61, 15, 23,248,176,101,106, 90, 2,197,102, 41, 91,233,162,230, 48,224,181,148, 49, 19,147,255,
+148, 0,178, 69,208, 38,175,140, 11,180, 88, 71,177,102,102,138,120,104, 56, 76,116,112, 23,115, 69, 24,242, 99, 35,200, 72,106,
+ 98,197, 10, 43, 93, 24,164, 96,136, 36,136, 66, 58,150,118,135, 40,210,120,121, 78,172,202,201,128, 41,135, 34,133,170, 11, 30,
+ 98, 57,143, 86, 92,207,183, 72,114,195,228,207,198, 36, 7,147, 68, 65, 75, 2,221, 87,190,128,146,147, 52, 17,141,239, 5,126,
+158,143, 45,221,177,224,110,111, 93, 74, 72, 72,105, 33, 79,142, 17, 90,201,210, 0, 5, 41, 44,156,226, 44,208, 86,164, 48, 86,
+118,140,212, 16, 76,239, 67, 98,240, 20,194, 23, 86, 43, 20,185, 75,126, 51,168, 38,230,162,145,174,115,201, 13,218, 34,154,225,
+ 42,198,236,191, 5, 8, 67, 75, 30,190,148, 64, 12, 41,226,199,234,144,225, 68,122,160, 11,210,229,181,100,231, 86,169,216,243,
+176, 81,165, 55, 34,213, 70,138,116,107,201,105, 45,118,130, 75,232,235, 97,245, 73,111,231,173,104, 4,203,140, 92, 61, 45, 17,
+123,139, 80,172,196,161, 14,165,100,138, 83, 68,145, 42, 12,162, 73,217, 97, 90,244,200,139,103,163,142,211,145, 59,103, 7, 71,
+ 90, 92,122,246, 32,231, 95,241, 78,182,236, 91, 72,255,254, 61, 12,181, 91, 68, 19, 59, 64,194,152, 48, 87,186,244,142,130, 55,
+218, 97,205,171,154,244,189,230, 82,182,237,153, 79, 48, 54, 12, 65, 24,167, 65,135, 29, 26,162,120,126,147,200,248, 68, 52,241,
+212,199, 19, 31, 95,148,200, 8,131,158,199,169,131, 13, 86, 28,211,196, 59,198, 35,154,189, 0,204,130, 56, 93,213, 69, 52,180,
+138, 60,249,220, 21,157, 76, 27,134,167,199, 60, 78,141,101,157, 38, 8,160, 5,244,107, 90, 48,252,225, 82,239,201,142,190, 17,
+240, 36, 37,202,145, 64,237,196, 42, 94, 33, 84,137,189, 81,148, 72, 99,130, 86, 58, 17, 61,133, 8, 67,148,196,219, 21, 33,202,
+151,172, 98, 44, 92,109,246,178,166,241,185, 40,131, 91,181, 59,223, 46,141,107,167, 5,112, 84, 18,246,121, 18, 99, 23,161,145,
+ 64,235,145, 72,204,228, 76, 65,243,228,124,173,198,113,102,196,198,233, 82,196, 33, 1,147,208,160,172,195,175,210,130, 77,166,
+206,209, 53, 35, 16,170, 74,230,209,219, 2, 51,190, 76,158,115, 88,227, 46, 12, 95, 50, 50,138, 83, 33,129,121,141,129,150,101,
+ 95, 59, 65, 22, 80,212,134, 5,214,113, 97,153, 77, 60, 61,227,140, 65,146, 58,150, 23,243,201,143,104,203, 11, 79, 86,128, 39,
+ 95,248,162,228,250,140,171,236, 10,222,181,201,227,202, 98, 50,150,131,146, 88, 53, 38,201, 63,208,124, 17, 79,211,217,208, 73,
+ 38,111,230, 96, 91,240,250,105, 12, 52,208,214, 65,162,208,162,210, 99,177, 35, 55,182, 84,114,242, 99, 87, 60, 83, 41,144,198,
+220,197, 82,210, 56,115,201,187, 47,144,239,212, 73,125, 75, 13, 34,117,211,154, 74,140,159,114,186,155,235, 57, 25,131, 49,126,
+194,172,143, 64, 45,214, 58,152, 82,154, 2,151,145,242, 42, 8, 81,165, 84, 57,205, 72,172, 76, 26,195,207,201,128,116,229, 83,
+231, 49,123,173,184,119,226,132,198,203,172,228, 10,182, 63, 46, 9, 76,123, 19,157, 37,141, 51,207,132,141, 60,185,231,222, 51,
+222,174,221,241, 98, 87, 49,103, 80,189, 22,152,124,147, 46,204,226,142,160,165,236,112,201,149,123,158,166,166, 69,146,224, 36,
+ 49,250,114,214, 68,175, 55,167, 80, 19,195,121,219, 83,179,125,127, 91, 88, 57, 56,198,219,223,114, 30,251, 22,158,206,254, 71,
+119, 51, 30,194,216,129, 8, 25,223, 7, 38, 34, 79, 60,204,143,119,160, 5,175, 61,106,140, 11, 46, 57,141,199,102,189,156,246,
+200,179, 4, 97, 11, 85, 37,140, 34,124, 35,248,115,142, 67,204, 28, 2,133,168, 19,130, 61, 8,166,141,241, 45,158,105, 32, 88,
+230, 24,203, 9, 42,236, 26,232,176,111, 80, 81,111, 46, 18, 61, 91, 97,116, 21,137,159, 58,149, 18,237,197,148,127, 46,240,251,
+ 33, 68,183,139,245, 49,132,201, 82, 54,159, 15,241, 53,137, 55,103, 47,175,179,250, 25,137, 97,249, 72,243, 56,119, 85,156, 40,
+114,105, 26, 26, 19, 95, 82,230,183, 38, 85,232, 0, 60, 71,153,155,100, 1,181,154, 67, 82, 41, 28,174, 78, 46,172,233, 90,240,
+147,143, 9,172,175,226, 35, 70, 80, 79,192, 6, 16,229,198, 68,154,159,110, 83,117,166,210,197, 18,215,138, 74, 91,198, 33,240,
+152,228,147, 77,242,198,211, 23,214,136, 20, 98, 89, 38, 11, 42,164,215, 74, 98,224, 72,193,135,212, 46, 56, 56, 87, 18, 81,122,
+ 86, 38, 97,183, 43, 25,103, 33,178,154,193,223, 82, 88,136,226, 69, 56, 38,214, 73,193,144, 16, 7,146,205,137,140, 90, 88,196,
+ 20,147, 47,238,169,129, 35,130, 73,248, 20,226,144, 82, 10, 44,117, 37, 43,192,163, 78,174,179, 85, 37, 10,163, 24,105,209,212,
+235,143, 31,112,117,101,177,132,149,239,174,185, 24, 84, 3,250, 9, 81, 35,140,138, 41, 68, 12,115,166,126, 21,145, 74,156,249,
+ 81, 44,202, 80, 86,236,154, 86,135, 43,132, 87, 99,230,125, 65,201,161,144, 20, 79, 74, 97, 67, 41, 79,200,170, 23,218, 73, 63,
+114, 57, 12,198,120,248, 30,120,158,193, 42,132,129, 5, 35,113,134, 81,166, 72,157,180, 44,165,155,253,158,160, 43,165,212,246,
+ 74,146, 92, 85,182, 64,156, 82, 41,165,169, 95, 36, 28, 22,227,203,206,189, 44, 41, 97,145, 82,218, 88,217,219,209,106,118,119,
+ 25,182,215, 46,194, 87, 17, 85, 66,167,183, 52,150, 42, 5, 20, 53, 95,197,162, 91,200, 2,200,196, 58,198,207, 20, 74,163,162,
+ 14, 69, 21, 73, 46,187, 71, 37, 50,149,150,120, 21,238, 49, 11, 70, 74,151,113, 36,133,162, 90,213, 1, 55, 37,104, 89,254,195,
+ 25,134, 69, 39,159,203,214,157, 30,102,236,105, 14,132, 29, 70,218, 1,190,248,208, 85,206, 41, 94,187,252,142,229,181,167, 67,
+223,137,103, 49,242,172,193,142, 63,131,209,136,118,167,195,220, 70,135, 5,139,143, 70, 26,187, 9,117, 11, 7,205, 28, 2, 61,
+ 30, 9, 78,164,209, 25,199,202,190,216, 9, 11, 13, 29, 59, 78, 95, 20, 50, 95,218,236,239, 11, 81,207, 79,214, 69,117,130,182,
+ 85,137,106, 83,145,211,180,244,104,166, 96,180, 79, 74,141, 47,205, 95,165,116,103,165, 43,181,113,166, 90, 91, 38, 59,116,233,
+ 4,159, 11,117,206,183,106, 51, 34,144,151, 76,160, 72, 83,136,220,100,176,111,202, 22, 79, 31,185, 58,171,188, 36, 30,190,100,
+123, 40, 81,198,252,142,199,182, 73,169,209,116, 18, 70,201, 66,229,149,111, 93,150,255,236, 24, 2, 37, 42, 72,106, 16,132, 9,
+211,221,136,224,121, 6, 76,156, 15, 31,133, 16, 36,229, 77, 83, 46, 80,154,146,102, 37, 39,212,105, 58, 86, 15, 62,132, 91,196,
+ 41,203,172, 82, 41,148,231, 20, 39,249,219, 43,145,249, 76,202, 73, 72,161, 65,237,134,224, 77, 97,123, 41,148,122,117,109,239,
+ 40, 37,196, 57, 21,151,210,172,133, 12,142, 21,231,126, 37,200, 72,138,106, 73,193, 53,202, 61, 23,241,103,129,137,208, 96, 34,
+161, 33, 75,209, 82,174,202,207,205,224,252,156,157,174, 78, 66,186, 38,181, 10,196,245, 10,179,107, 45, 22, 25,114,211,173, 92,
+178,156,104, 68,107, 60,206, 19,247, 76, 30,199,119,151, 64,149, 73,222,164, 46, 55, 79, 42, 99,134,168,227, 73, 42,213, 74, 77,
+ 5,211,136,177,158, 78,167, 20,111,147,220, 51,150, 73,149,105,106, 12,105,140,140, 37, 94,186, 73,106, 27, 72, 57,213, 42, 75,
+115,238,205,148, 47, 24, 44,133,242,200,147,229,204, 75, 86, 68, 38,159,187,218,149,138, 38,165,125, 11, 70,157,131,154, 20,175,
+189,160,149, 10,250,171,251, 94, 84, 68,172, 29,238,132,246, 66, 92,232,145,124, 95, 21,107,199, 69, 1,186,115,194, 39, 93, 91,
+213, 81,180, 38,185,183, 58,153, 7, 54,121,225, 22, 41,121,226,121,229, 93,237,130,155,139,134,142,147,126,169,147,251,236, 90,
+161,208, 39, 44, 44, 54,109, 94,113,250,124,158,157,123, 26,251,119, 24,162,208, 16,133,138,223, 12,105,205, 89, 10,123,183,129,
+182, 64, 6, 50,109, 54, 17,194, 9,141,128,151,156, 60,135,109,209, 9,180,246, 29,192,134,163,140,183,219,204,178, 29,250, 27,
+253,236,252,247,237,248, 59, 54,178,116, 94,135,197,199,247,113,224,216,197, 28,152,127, 17, 38,186, 0,198,103, 51,174,207,162,
+ 97, 63,237, 81, 37,108,239,101, 64, 67,140, 15,145, 49,249, 10,167, 78,206, 76,233,217, 72,143,154,130, 82,222, 66,116, 74,131,
+111, 38,168, 79,119,114,132, 48, 45,246,187,203,215,154, 49,196,116,152, 92,121, 1, 95,211, 50,174, 73,124, 47, 70,200,163,172,
+116,102, 12,164,231, 36,167,180, 42,151, 88, 91, 8, 31,136, 83,191,204, 36,121,217,249,185,106,166, 92,213,201, 29,181,106, 75,
+214,177, 20,108, 87,155,153, 20,201,127, 19,175, 47, 62,215,180,104,142, 37, 74, 0,113, 63,139, 59,231,112,189, 45, 67,220,133,
+250,235,121,169, 82,247,166,218,130,253, 24, 23, 64, 41, 70,108,139, 75, 82,234,209,166,112,179,106,154,166,147, 40,246, 36, 8,
+107,156,216,186,113, 12,128, 52, 62,155, 67,244,121,218,151, 91,236, 52,143,152, 25, 10, 9, 91,169,215, 76,133, 82, 46, 45, 40,
+ 38, 75,127, 74, 21,112,135,254, 70, 92, 25,110, 60, 72,234, 20,100, 21, 4,113,242,243,243,197, 56, 15, 57,148,114,115,133,138,
+244, 61,205, 39,185,227,220,138,148,201, 81,121, 61,253,244,249, 68, 18, 51, 35, 10, 21,207, 10,201,135,249,121,105, 69,237,167,
+174,156,211,146,183,155, 27, 16, 21,190,142, 20,209, 90,141,194,164, 84,175, 73, 60,121,173,220,182,218, 43, 46,122,163, 81, 20,
+ 7, 56, 44,113, 1,153,200,118,135, 2, 50,148, 69, 39, 31,207, 93,204, 76, 65,225, 79, 6,191, 23,171,205,149, 61,235, 44,151,
+223, 41,106, 35, 61, 92, 29, 41,167,241,149,174,213,173,230,216,117,218,206,179,235, 50,168,165,218, 59,239,242,170,167,242,222,
+165, 59, 4, 51,165,242,117,141, 20, 39,214,219, 53,127,180,108, 4,232,244,148, 69, 97,254,231,200, 82, 87,149, 30,220, 52, 68,
+138,153, 58, 74,165,103, 91, 86,132,237, 64, 56,115, 78,196,242,229,115,105,247,207, 69,102,205, 34,244, 7,232,143, 44,139,103,
+135, 60,186,120, 62,118,252,116,204,196,191,129, 55, 14,166, 31, 16,130, 16,150,207, 9, 24, 88,180,132,103, 39, 22,208, 57, 56,
+ 76, 48,118, 0,130, 22, 97, 19,238,252,137, 97,203,215,183,208,215,106,115,204,192, 28, 94,247, 72,196,107, 87,109,101,232,188,
+ 47,177,103,168,159, 6,175,194,180,246,178, 95, 59, 4,161, 65, 59,109,140,134,136,167,142, 39,213,139, 88,166,211, 35,166,245,
+182,154, 42, 55,158,174,222,204, 17,169,238,153, 57, 45,227, 64,167, 83,227,254,200,105,120, 63,174, 10, 23, 97,109, 26, 87, 17,
+196, 40, 34,113, 61,247,180,225,135, 77, 74,153,138, 73,232,115, 30,120, 54, 94,128,108, 90,195, 60,177,138, 83, 98, 89,170,172,
+ 10,205, 65,156,203,242,146, 27, 20, 37, 22,171, 73, 94,162,188, 8,142,118,129, 49,170, 14,224, 36, 96, 52, 36,138,148, 72, 98,
+ 6,189,113,140,145,180,192,138,173, 8,173,169, 3, 11,164,197, 58,164, 80, 60, 54, 39,192, 24,167, 2,124,158,198,150,239,171,
+ 14,178,160, 5,103,184, 88, 87,219,221,198,150, 66, 11,174,161,175, 78, 60, 58, 55, 26, 82,151,219, 20, 85,154,228,141, 65,140,
+ 11,203,166,136,130,164,215,102, 75, 48, 95, 98,160,217,128,104, 66,227,231,107, 92,194,160,100,121,177,214,137, 27,247,246, 74,
+196, 49, 62,186, 39,168, 56,243,128,138,178,214,210, 53,153, 53, 47,155, 58,201,203, 44, 85,129,243, 73,222,192, 2,164,158,233,
+102, 3, 98,123,236, 79,102,252,133,169, 65,106, 36,153, 83,201,179, 80,219,181,224,151,115,202,179, 33,147, 48, 68, 16, 90,199,
+124,149, 74, 35, 65, 75, 53, 14, 84, 42, 10,213,148,225,218,174,240, 68, 85,153,208, 34,194, 64,197,184,229, 99,117, 49,134, 85,
+167,132,187,123,157,119, 57,142, 44, 37,244, 75,123,112, 7,122,237, 63,105,206,121, 30,175,203,144, 67,149,105, 36, 57, 39, 72,
+ 99,186,109,101,121, 37,161, 80,225,114,218,181,193,186, 95,131, 28,145, 81, 45,148,158,237,122, 51,164, 59,252,225,206, 35, 45,
+ 64,218,177, 67, 49,175, 97,152, 45,227,244, 53, 71,105, 74,135,168,181, 15,207, 68,188,180,207,103,116,201, 4,207,176, 28,111,
+ 91, 3,255,224, 67,136,236,199,138,226,181,149, 99,151,142, 19, 46, 60,145,253,163,131,140,237,127,140, 96,226, 32,131, 18,240,
+180,244,177,101,119, 27, 95,134,209,185,125, 60,161,134,237,123, 12,250,189,185,172,238,219,203,129,179,190, 66,199, 95, 68,147,
+163,233,216, 93, 4,161, 65, 34,147,144,171, 37,169, 17, 97, 75, 1,200,222,181,219,187,131, 3, 51, 84,127, 51,208,145,218,117,
+ 79,167, 25, 13, 87,157,242, 64, 51, 45,120, 60,243, 2,201, 41,252,238, 98,248, 26, 37, 10, 57,142,167,155,164,185, 75,132, 98,
+109,148,177,197, 51, 54,182,198, 41, 49,110, 17, 20,183, 60,162, 85,136, 84, 48, 73,180,216, 74,226,181,102,229, 69,139, 86,165,
+ 45,248,201,121,115, 4, 43, 46, 44,170, 5, 75, 53, 45, 41,170,145, 16, 38,228,185, 66,153, 84, 7,226,182,165, 37, 52,135, 18,
+181,224, 49,152, 4,246,178, 20, 25,186,133, 20,172,244, 50, 85,157,241,187, 95,126, 55,119, 94,187, 38, 77, 41,220,167,221, 85,
+ 32,179,177, 29,207,217, 36,247,193,170,100, 41, 76, 74, 94, 45,174, 80,194, 71, 26,113, 82,118, 56,145,197,191,141, 19, 30, 80,
+129, 80, 77, 22,138,144, 66,230, 43, 78,106, 89,145, 82, 84,184,150,236, 30,202,100,170, 55, 83,106,105, 29,120,233,225,202, 72,
+ 54, 25, 10, 65,240,110, 5, 25, 15, 24,155, 86,182, 71, 44,109,178, 38, 18, 73,222,181, 36, 16,123,185,227, 90, 21, 12,154, 25,
+ 92,198, 96, 18, 3,203, 70, 49,185, 79, 92, 37,227,246,239,235,170, 7, 47, 80, 46,120,156,221, 59,155, 60,195,156,142,175,101,
+ 67,193, 57, 71, 45, 25, 16,197,103,159, 67,232,210,117, 31,243, 74,107,105, 40,167,171,244,110, 90, 49, 47, 85,186, 78,147,149,
+174,237,157,210,179, 41,148, 90, 72,131,175, 66, 73,202,222,116,133,178,234, 85, 72,167,107,102,245,130,230,187, 75,187, 21,203,
+ 6, 87,118,175,171, 40, 44,209,229,109, 87,121,148,197,162, 84, 61, 23,107,157,172,202,158,228, 92,148,146,155,233, 22,207,113,
+ 11, 45, 21, 12,168,210,185,136, 7,195,109,143,214,254, 49,130,125, 59, 57,248,244, 60,188,214, 78,212,179,244,139,176,170,161,
+ 12, 30, 59,202, 83,179,143,167,181,115, 9,236,217,198,196,248, 78,102,249,109,150,159,118, 20,123,155, 47,103,223, 83,219,104,
+ 29,216,141, 4, 33, 13,223, 50, 28, 14, 32,195,187,232, 99, 63,152, 38, 71, 3, 7, 6,224,150,189,194,130, 7, 6, 88,190,224,
+ 25,246,190,244, 33,232,251, 69, 36,236,199,250,138, 72,140,163,106,164,160,157, 66, 25,222,110, 3,140, 41, 67, 36, 5,162,111,
+102, 37,233,228,165,223,166,168, 18, 92,116,229, 38, 1, 95,186,190, 47,231, 62,112,104,100,185,195, 84,144,198, 87,201,153,210,
+105, 92, 78, 85,136,148, 44, 46,154,130,208,170, 10,161,155, 30,148,150,102,205,103,171, 11,211,249,146,230,102,199,139,159,209,
+ 98, 19, 22,155, 21, 35,145,164,152, 75,126,115,172,230, 44,250, 66,147, 4,135,132,150,230,209,231,236,244, 36,150,107, 98, 20,
+ 33, 82,186, 66, 0,185,103,152, 99,103, 89,247,176,146,162,202, 76,140, 4, 5,136,153,203,185,215,161, 18,103, 0,216,220,156,
+ 41, 64,234,160, 24,161,212,101,172, 24,203, 23, 23, 90, 75,243,135, 43, 34,117, 25,116, 47,105,101, 62,201,140,136, 94,121,148,
+241,162,110,241, 5,124,207,208,178, 85,211, 69, 28,162,162, 99, 40,165,177, 86, 21,199,251,207, 59, 88,153,228,121,216,180,195,
+153,184,158, 87, 94,237, 94, 74, 6,128, 22,106,207,118,219,194,169, 33, 23,167,200,153, 66, 23,177, 94,165, 86,141, 74, 18,214,
+208,174,100, 24,113,242,122,187, 98,236,218, 35,159,191,202,195,198, 45, 9,171,153,113,139, 38,196,198, 40,221,206,100,121,237,
+170,105,200,200, 9, 86,216, 60,189,179, 80, 94, 54,237, 7, 32,141, 4,242, 13,200, 57,114,206,140,208, 42,165, 84, 36,227,117,
+115,245,220,128,172,230, 92, 2,119,177,235, 81,169,173,208,170, 72,232,102,198, 83,173,220,243,214,185, 37, 64,181, 20, 34, 40,
+122,171, 85,228,213,233, 41,247, 46,104,190,220,113,172,208,118, 85, 10,161, 2,205, 72,122, 73, 57, 98,233,206,212,168,124,183,
+ 92,198,187, 76,221, 98,182, 96,196,232, 84, 37,113, 75, 28, 18, 45,246,129, 44,132, 57, 42, 57, 8,241,231,134,129, 61, 65,131,
+159, 60, 61, 78,240,204,247, 25, 25, 93,134,118, 26,248,157, 22, 7,109,136, 31, 25,206,246,132,229, 75, 70,249,201,252, 89, 28,
+ 24, 63,133, 32, 58,149, 51, 6,124,154, 39,244,241,228,214, 81,198,134,159,193, 70, 17, 62, 66,199,135,221,251, 58,200,254,167,
+192,132, 64, 31,138, 50, 87, 96,119, 3,190,181,219,231,165,207,180, 24, 56,113, 43, 81, 99,130,190,102, 63,194, 1,208, 14,129,
+ 85, 52, 12,147,116, 54, 42,250,235, 84,144, 79, 43,205,149,242, 58,166, 83,123,229,211,216,164,235,152,170,213, 36,186,170,112,
+ 78,146, 13, 52, 89, 20,102, 90,240,251,115,141,173, 43,248, 49, 92,109,179,197,219,230,170, 54, 47, 85,170, 78,143,180,100,113,
+143,180,196,234,214,194, 59, 83,128,219,189, 76, 25,197,223,133,169, 7,238, 84,166,210, 36,101, 46, 94,164, 99,104, 62,204, 60,
+ 84, 41, 88,163,182, 96, 81, 41, 70,163,132,196,156, 67,226,105, 42,149,181, 65,172,116,197,235,234,125,238,214,139,239,229, 61,
+123,165,170,100,185,194,179,177, 39,111,226,243,141,180, 72,110,203, 74,212,104, 21, 72, 93,104, 81,237, 52,114,113,107,221, 23,
+ 1,124, 45, 84,217, 43,131, 87,197,223, 33, 79,117, 3, 75,212,137, 50,143,222, 22, 56,167, 78,211,142, 10,194,141,150, 82,147,
+112, 72,134, 93, 53,191,157, 92,220,120,243,102,220,155,188,148,103, 27,207, 19, 27, 23,136,209, 98,174, 48, 14,123,223, 85, 2,
+101, 38,123,161, 99,153,181,133, 69,182, 24, 31,207,155,145,136, 3,103,171,235,118,246,120,197,164, 96, 8,228,200, 76,134,198,
+ 88,155,228,224,171, 83,235, 57, 47, 59,155,190,224, 90,136,183, 11,120, 9, 53,212,134,184, 29,226,172, 10,106, 45,141, 62, 47,
+ 54,192, 38, 2,202, 29, 89, 92, 88,220,205,108,112, 21, 80, 74,216, 41,195,239,121,125,241, 44,205,165, 20,159, 46,161, 19, 42,
+ 61,188,192,170,212, 63,167, 30,126, 69,220,187, 26, 97,233, 13,155, 87,213,196,159,177,114,207, 72,144, 37, 37,161, 76,178, 61,
+164, 21, 7,212,185, 71,147, 51,219, 29,214,190, 76, 93,122,182,216, 16,103, 58,241,119, 55,239,195, 22,120, 61, 89,183, 74,201,
+ 43, 96,150,203, 58, 15,120,240, 76, 96,216,252,163, 38,175, 60,238,110,100,225, 44, 90,125,103, 17,142, 5,120,102,152, 78,195,
+195, 68,194,194, 78,196, 49,205, 9,188, 57, 77, 26,125, 13,124, 35,108,217, 59, 76,107,236, 96, 60, 87,141, 79,211,192, 46, 59,
+155, 61, 79, 15,211, 28,219, 14,125,125,184,140,170, 1, 31,182, 5,194,174, 29,134,163,198,135, 25, 61,106,148, 48, 24, 64, 91,
+ 99, 68, 81,135,208, 38, 45,185, 45,137,139,210,168,190, 65,211,128,224,101, 50, 45, 40, 51,199,233,187,192,243, 25, 43, 86,113,
+ 80,152,105,148, 46, 62, 18, 28,186,228, 34,124,155, 48,221, 35,155,228,116,167,182,185,198, 73, 86,121, 81, 16,205,188, 80,147,
+246, 77, 47,188,136,154, 89,140,170, 82,202,131,201,211, 4, 68, 83,239,150, 12,226, 86,113, 84,187,211,102,213,115,212, 68,218,
+204,197, 96, 98,159,218, 45,124,161,105, 33,152, 34, 93, 74, 85, 81,111, 1, 42,150, 48, 24,193, 34, 52, 12,133, 62,229,142,250,
+ 45,228,152,139,148,253,204,226,245, 72,230,179,169,147, 83,223,157,135, 94, 69,249,112,137,198, 90, 70,253, 40, 38,121,148,139,
+213, 24,156, 24, 55,121,188, 87, 11,133, 67,138,197,114, 44,208,214,220,227,207, 82,209, 42,216,246,214,177, 54, 76,242,108, 92,
+213,111,146, 16, 74,215,117,165, 29,203,146, 49,140, 47, 52, 17,130,192, 38,173, 98,221, 90,254, 46, 55,130,130, 71,216, 29,192,
+173,240,174, 28,163,173,171, 11,150,228,165,111,187, 10, 71,217, 18,188, 39, 83, 87,174,178, 25,103, 95,179, 54,194,154,117, 73,
+ 11, 51,229,233, 42,162,184,240, 76,137,174,167, 10,198,224,251, 94,108,216, 70, 30, 54, 12,243, 16,145, 64,100, 60, 8, 59, 96,
+139, 30,153, 58,121,133, 85,173, 69,164,212, 35, 92,122, 40,199,110, 6, 57, 93,243,190,100, 29, 20, 58, 90, 20,186,193,149, 85,
+189,227,253,103,134,157,230, 33, 30,237,213,128,164, 28, 34, 40,132,134,122, 67,246,197,120,187,187,170,197, 78, 74,252,147, 60,
+ 7,181, 89,103, 8,140, 7, 21, 45,158,178,118,173, 69,160,110, 6, 36,102,201, 83,172,122, 25, 28, 50, 77, 24,182,107,151,244,
+174, 26,199,208,114,137,117,121,163,173, 28,201,138,103,175,143,210,233, 19,190,248, 84, 31,242,207, 99,188,228, 85,183, 99,151,
+236,101, 98,209, 42,188,177, 33,204,200,110, 34,246, 51, 33, 17, 13, 85,164,165, 4, 65,135, 97, 27, 48, 54, 30, 96, 58, 33, 94,
+ 35,169,207, 49,208,224,201,225, 38, 19, 79, 61,194,108,111, 2,149,217,133, 55,184, 41,202,136,194,238,131,194, 49,157,144,150,
+134,116, 90, 17, 81,103, 2,212,226,249, 94,236, 60, 70,227,149,188,154,110,244,169,183,106,123, 78, 68,241, 10,164,164,203,251,
+159, 6,239,162,119, 67,214,233,229,170, 79, 47,197, 77,103,198, 29, 0,252, 64, 12, 97,182,104,216,204,123, 78,171,130, 89, 85,
+ 39,118,161, 93,117,213,109,151,119,154,215, 97,207, 40,225,154,123,220, 66, 94, 46,149,180,131,155, 74, 33, 90, 91,172, 53,164,
+ 93, 49,148, 12,218, 78, 54,138,240,146, 56,119,152,183, 28,118, 61,180, 89,253,204,106,140,227, 31, 12, 24,235, 72,146,127,222,
+125,155, 99,214,122,162,192, 52,237,197, 45,184,119,192, 75,206, 32, 75, 93,115,202,153, 23, 10, 66,118, 21,130, 42, 86, 83,211,
+ 18,172,155, 67,190, 9,137, 48,247,251,138, 29,128,156,158,205,226,120, 78, 46,228,175, 78,250, 97,138, 54, 20, 17,131, 60, 29,
+204, 20, 12,155,164, 2, 85, 87,186, 77,209,200,144,202,142,104, 20, 27,171,132,157, 56, 15, 90,242,153,145,118, 56,147, 41, 90,
+ 25,230, 42,198, 56,237, 68,181,247, 75,212,229,245,211, 77,175,215,210, 74, 45,189,114,127, 93,146,163,135,223, 55, 0, 81,139,
+ 48,232, 64,134, 61,165, 80,180,113, 24, 32,249,113,173,106, 33,235, 34, 37,209, 25,201,183,245, 4,212,152, 2,108,234, 9,132,
+ 86, 8,108, 17, 74, 23,103, 37,202,154, 4, 17,103,172,104, 57, 68, 80,202, 69, 76, 25,241,170, 74,177, 7,120,117, 40,163,144,
+146,231, 62,230,172,206,128,102,138,186, 11,174,119, 26,209, 20,112, 38,167,187,109,165,114,119, 20,161, 86,146,229,170, 53,108,
+188,155, 5, 27, 98,195, 14, 81, 39, 32,138,148, 80, 27, 88,105,162,198, 7,241, 81, 19,123,132,198, 6, 52,180, 69, 67,198, 48,
+158,128,223, 0,211,160, 80,141,208, 41, 96,164,184, 37, 39,181,146, 27,149,133, 82, 20,183, 95,223,164,202, 93, 15, 69, 11,149,
+ 58,225, 41, 82, 88,128, 50,131, 75,156,240, 74,178,174, 14, 26,101,196, 87, 62,255,147, 65, 46,216,216,226,149, 43, 55,226,189,
+108, 11, 59,102,191,130,131,205,227,160,189, 20, 13,148,168, 61, 78,203,142, 33, 97, 64, 59,104, 97,131, 54,190, 68, 8,134,121,
+253, 30,207, 50,143, 39,127,248, 67,250,198,158, 68, 7, 6,186,174,196, 32,116, 84, 25, 15, 21,172, 79, 59, 48,116, 38,198, 49,
+209, 4, 13, 79,233, 68,134,112,124,130,102,120, 32,230,249, 20,194,132,110, 68,123,166,132,179, 25, 98,214, 58,133,247, 63,221,
+184,118, 85, 75,183,138, 90, 11, 93,225,197, 25,145,251,102,142,199,251, 13, 15, 66, 47,241, 6, 45,113,220,131,156,197,109, 82,
+200,210,129,147,133, 34, 52, 25, 51,164,147,222,211, 14,228, 22,165, 74, 37, 89,176,108,170,252,196, 98, 18,111, 61,253,222,166,
+234, 90,210, 86,174, 85, 23,159, 67,235, 94,162, 36, 99,163, 35, 66, 85,240,140,208,151,192,251,109,141,227,206,162,195, 48, 10,
+102,192, 99,169,111,216, 19,194,238, 12, 42, 79,141, 12,237, 34, 73,197,139,179,100,101, 78,211, 20,191,168, 16,235,142, 95, 99,
+155,197,155, 83,104,188,168,184, 82,245, 36, 37,184, 60,245,247,141,142,195, 42, 74, 0, 0, 32, 0, 73, 68, 65, 84,113,210,224,
+196, 7, 99,227, 20, 42,173,110,105,234, 26,180,110, 33, 27,205,122,126, 39, 4,190,180,118,128,230,134,148,100, 41,112,148, 0,
+254,132,120,227, 16, 0, 51,181,238, 66,171,189,242,191,203, 70, 3,208,137, 82, 82,161,102,198, 86, 49,132,210, 3,197,112,186,
+208,187,253,175,186, 94, 20,205, 43,121, 85,190, 48, 78,254,170,219, 34, 54,203, 67,151, 98,178,183,155, 31,173, 10,226,121, 12,
+246,123, 68, 19, 16,166, 13,124, 92,131, 17,151,100,217,173,196,221, 34, 35, 25,201,211,198,232,151,205,194, 6, 78, 92, 93, 19,
+195, 39, 59,151, 10,219,222,173,119, 80,232, 3, 95,221,175, 93, 93, 67,139, 50,193, 67, 43,171,223, 21,148,111,153,225, 45, 84,
+247,129, 47, 35, 41,226, 34, 65, 83, 85,195,235,194,229, 43,218,209,186,241,120, 11, 81,135,176, 53, 78,187, 3, 29,127, 46, 58,
+235,120,250, 23, 46,102,224,232, 69, 44,152, 55,143,193,217,179,105,244,247,227,123,134,102,195, 35,180, 48, 62,222, 98,223,158,
+125,236,127,230, 41,130, 61, 63,161, 49,190,147,134, 30,192,247,129, 70, 31, 34,126,158,182, 91, 32, 24, 86, 25, 35, 90,232, 89,
+160, 93, 57,214, 37, 2,159,150, 75,205, 76,163,121,108,185,146,148,118,143,109,113,137,167, 90,104,217,236,242, 36,230,250,194,
+184,177,124,101,255, 0,143,222,215,224,229, 79,110, 97,241, 9, 79,113,236,162,133,112,212, 98,198,103, 31,203,196,156, 37, 76,
+ 4,199, 48,113,160, 77,208,222,143, 26, 31, 43,150,121,179,125, 90,205,126, 54,127,239,199, 68, 79, 63, 64,223, 64,211,113, 59,
+ 74,118,179,130,105, 40, 65,227, 40,198,219,125,132,173,221, 72,212, 33,210,128, 3,173, 38, 28,220,143, 48,145,244,113, 47, 71,
+170, 53,207, 74,154,186,243,234,228,234,110,134, 88,119,181, 66,159, 41, 90,208,219,179,174, 98,240, 31,169, 10,115,190, 70, 17,
+ 98, 99, 37,139,128,111,200,242,102,173,166,177,219,180, 68,164,117,226,196, 6, 43,126,108,233,138, 0,227,216, 48, 68,147, 2,
+ 38,190, 3, 31,102,113,200,114, 5, 44,117,234,190, 59,249,176, 70,242,197, 46,114, 99, 20, 78, 29,240, 8,205,200, 45, 38, 81,
+182,145, 53,132, 25, 3, 63,237,121,237,225, 1,237, 81,101, 75, 98, 51,248, 5, 15, 57, 54, 16,242, 42,116,249, 11,168, 78,209,
+237, 70, 90, 64, 39,105,102, 3,197, 30,208,226,120,171,166, 4,218,231, 16,100, 17,172,203, 60,180,228,223,128, 56, 3,193, 79,
+ 60,172, 64,187, 33,253,158,149,169,157,181,208, 36,222, 98,170,184,194, 10, 31, 52,231,128,120,153,130,204,153, 89, 78,120, 43,
+ 37,215,153, 70,194,240,142,138,229, 53,165,187, 31,121,252,175,137, 59, 55, 41, 57,129,196, 65,112, 68,123, 23,141,113, 73,140,
+147,226,159,147, 36,141, 22, 66,169,226, 37,219, 70, 93,222, 97, 57,134, 38, 89,186,155, 32, 26, 96, 91, 17, 65,104,179,122,229,
+234, 64,203, 56, 21,245,122,166,206,217,244, 57, 88, 68, 12, 54,201,113,183,149,165, 85,243,119, 32, 67, 98,164, 88,137,207,237,
+153,158,147, 42,165, 64,214, 80, 39, 60, 81,238,185,158, 87,205,163, 59,174, 94, 80,214, 41,154,145,239,111,210,243,235,153,251,
+238,192, 99,197, 72,227,244, 72,118,165,103,219,101,212, 68,109,162,137, 49, 38, 58, 74,187,185,128,193,165,103,176,248,132,147,
+ 56,118,217,113, 44, 93,122, 12, 75, 22,206,225,232,217, 77, 6, 61, 75, 67, 2,196, 70,216, 48,128,168,141,141, 34, 90,246, 40,
+118,143, 45,228,153,253, 39,242,147, 61,227, 60,243,236, 62,118,111,223,198,196,206,173,248,163, 59,232, 99, 20,211, 0, 77,154,
+147,116,231,241,107, 41,215,189, 87,199,248,222, 49,123,165, 34,206,223, 19, 35,174,122,233,139,234,194, 56,168,128,170,230,181,
+252, 29, 99, 61,221, 99,208, 24,162,126,229,241,200, 99,235, 51,179, 57,250,217,136,197,125, 59, 56,238,168,167, 57,110,201, 15,
+ 56,122,233,124, 38,230, 30,199, 72, 99, 33,131, 71,205, 70,165,143, 70, 16, 48,113,112, 47,223,254,222,118,246, 62,249, 4,179,
+ 6, 60,212, 52, 43,207, 63, 2,250, 85,153, 55, 23, 38, 6,143, 99,226, 64,131, 96,124, 24,130, 9,198,188,136,131, 19, 6, 51,
+113, 32, 70, 84,147,120,122,119, 85,229,201,160,107,153,164,107,222,244, 83, 9, 39,253,106, 6,129,245,238,108, 75,157, 22,115,
+255,144,226, 5, 51, 72,176,243,213, 74,210,121, 79, 19, 5,234,176,170, 19, 22,178,117,171, 89,105, 90, 67,220,162, 26,198,109,
+ 71, 61,104,120, 66,179,225,225,117,226,106, 68, 45,193,233,112,230, 64,242, 78,106, 86, 1,198,118, 78,216,106,238, 21, 26,199,
+243,211, 66,151, 49, 23,159, 52, 25,251,189, 45, 30,113,227, 79, 3,158,208, 32,128, 8, 34, 79, 18, 50,158,147,182, 37, 41,187,
+ 94, 10, 61,201, 37,233, 35,175, 18,123,187,190, 19, 51,119, 91,203,186,173,100,138, 70,124, 9,126, 37,239, 99, 46,133,239, 36,
+203, 30, 72, 17,141, 16,139,134,234,168, 78, 50,182,187, 56,125,206, 21,122,146,219, 98, 62,130, 37,194,171,180, 42,243, 24,173,
+193,154, 70,220, 81,205, 6, 68, 65, 88,153,225,131, 42,234,249,244,249, 74,212, 10,227, 56,115, 66, 22,236,154,199,137, 66,242,
+147,243, 9, 18,244, 32, 93, 34, 35, 39,222,175, 90,209,184, 33,195, 52, 53,111, 86,226,244,146,239, 98,146,138,155,110, 86, 58,
+117, 17, 20, 15,207,143,189,108, 27,106, 92,248,197,113,185,165,171,162, 90,130,159,152,120,190,142,181,163, 4,173, 41, 26, 99,
+229,180,202, 74, 37,164,138,248,125,120,126, 31, 54,236,160, 97, 43,231, 77, 72,143,190,230,101,228, 67,242, 82,192,229, 8,110,
+106,185,184, 76, 18, 17,147,161, 2, 86,109,169,175,120, 9,173, 40,199,213, 93, 94, 64,185, 36,177, 20,153, 94,162, 21, 54,151,
+ 19, 34,210,170,244,164, 30,121,246,110, 9, 99,232, 54, 16,109,235, 32, 99, 7, 71,153,104, 46,100,240,184,243, 56,225,228,211,
+ 56,249,228,151,114,234,138, 37, 44, 57,170,201, 28,198,105, 70, 19,104,103, 63,157, 86, 64, 39,178, 4, 22, 66,245, 8,130,144,
+ 78, 24, 55, 32,241, 4,134,162,144,161,190,128,211, 79,128,225,101, 11,121,234,164,163,217,190,251,100,158,126,122, 15,195, 59,
+119,210,217,245, 20,222,196, 78, 26,118, 20,207, 36,115, 69, 76,130,178, 36, 46,136,141,179, 96,140,231, 33,126, 63, 42,254,180,
+150,235,174,188,244,233, 4,237,165,236,181, 79, 2,229,103,117, 55, 36, 49,248,108, 97,110, 64,220,199, 99,174, 7,161,167, 12,
+ 71, 30, 59, 59, 3,252,251,179, 48,127,135,101,201, 35,123, 89, 56,119, 39,115,231, 53,105,206, 30,100,212,246,179,107,127,200,
+ 19, 59, 14,114, 96, 52, 96,214, 96,127,204, 73,208,106,229,213,177,176,212, 11, 89,112,236, 28,246,115, 60, 7,247,238,161, 61,
+ 62,204, 44, 27, 48,222,104, 48, 49,106, 49,157,145, 66,170,141,184,239,138,244,152, 55,101,164, 18,166, 17,192,155,185,116, 79,
+ 83,153, 73, 36,252,240,203, 33, 30,202,207,154,113, 72,238,133, 90, 55,205,201,137, 17,168,198,221,192, 36,107, 0, 19, 65, 20,
+179,118, 35, 4, 76, 3, 99,132,254, 70, 68,219,198, 69, 95, 12,185,215,143,211,149,205, 58, 85,200,221,243,118,123,131,155, 44,
+206,146,120,242,226, 22,177, 33, 47,147,234,144,186, 80,139, 21,240, 36,194,104,188, 56, 15,122, 74, 43, 18, 90, 5, 30, 64, 84,
+104, 81, 24, 38, 49, 95,113,160, 43,181,138, 53, 36,117,217,211,133,188,218,171,112, 95,208,178,242, 86,153, 60,245, 44,125, 17,
+ 83,175,189, 76,179, 74,219, 70, 54, 76,190,192, 71,105,203, 92,242, 38, 93, 57,251,216, 96,165,129,213, 32,107,109, 91, 54, 50,
+ 12, 74,100, 60, 60, 95,240,141, 98,140, 31,215,117, 14,221,220, 2,205,194, 48, 26,180, 48,141, 89,120,205, 6,173, 86,152,165,
+109, 69,101, 62, 88,242,111,152, 20,100, 49, 20,179,218,141,147, 42, 89, 80, 44, 66, 33,230,155,101, 80, 36, 77, 99, 32,202,242,
+ 11,187,136,173, 78, 60, 66, 74, 5,127,140, 15,126, 18,223, 16, 79, 18, 59, 68,187, 60,160,170,250, 53,146,223,216, 66, 44, 29,
+173, 74,189, 41,121,255,214,162,226,209, 28, 24,164,209,104, 18, 69, 77,218,163, 22, 27,181, 29, 52,163, 90, 41, 90,151,197,223,
+ 85,205,172, 4, 88,150,200,130,190, 64,211, 64, 96, 99,114,100, 49, 36, 80,172,131, 46,238,172, 41,229,112,139,131, 70,136, 19,
+158,233, 62,231,110, 36, 64,122,120,178, 61, 11,242,148, 99,252, 18,215,158,136,198,247, 51, 50,218, 34, 56,106, 57,199,191,246,
+ 45,156,125,222,121,188,108,197, 82,150,207,111, 50, 39, 26, 33, 26,219,207,200,190, 9,134,219, 33,161, 10, 65, 16,196,104,146,
+ 24,252,102, 63,226, 9,157,132, 32,226, 53,125, 66, 11,157, 78,135,118, 96,209,150, 69, 59,227,156, 64,192,178,197,134,177, 37,
+ 11,216, 27, 29,207, 83,251, 94,201,206,157,251, 24,222,181,155,241,125, 59,161, 51,142, 70, 97, 92,130,218,239,195,248, 13,164,
+111, 22, 54,138,208,145, 61, 52,199,158,194, 55,227,136,223, 87, 9, 73, 87, 81,168,220, 85,192, 78,197,152,103,242,142, 95,221,
+ 60,148,252,253,233, 46,201,155, 43, 76, 79, 5,207,131,126, 47, 94,115, 71, 34,195,222,118, 63,222, 78,101, 96,167,197,151,113,
+218,209, 40, 45, 53, 52, 26, 62,131,179, 26, 57,210,214, 67,194, 64, 88, 49,175,133, 44, 93,193,211,195,243,153, 24,222,142,104,
+128,223,244, 56,168,179, 8, 15,236,163, 63, 26,129,134,223, 29, 74,203,238,131, 48, 89, 9, 56,153, 84,193,235, 33, 41,202,242,
+ 87, 58,211, 66, 53, 61,176,246, 67, 32,225, 31, 22, 13,159,244,182,180, 9, 28, 23,191,252, 30,234,116, 46, 43, 50, 93, 85,115,
+ 79,222,164,105, 79, 42,116, 16, 2, 27, 37,201,219,208, 52, 74, 35, 41,210, 21,166,141, 68,212,118,117, 9,115, 11,195, 74,197,
+164, 79, 97,157, 60, 46,106, 29, 67, 49,207, 62, 55, 89,197,182,216,224,136,210,127,109,220,171, 60, 45, 73,155,182,208,243,146,
+ 10,120, 54,189,102, 33, 46,176,227,240,251,210, 6, 51, 97,242,186,102, 61,209, 75,105, 35,170,233,184, 57, 67,185, 60,217, 10,
+ 10, 93,156,156, 88,103,107,155,230,202, 38, 11,105,250,217, 36,202,209, 80,234, 92, 71,146,246,151,133,144,147,122, 2,120,152,
+ 89,179, 24,208, 3,180,199, 66, 34, 49,249,114,227,182,198,180, 17, 70,189,216, 19,177, 97, 66,122,144,130, 17,146, 57,119, 86,
+105, 7,109, 6, 61,155, 25,123, 6,137,171, 1,170, 22,121,186,133,214,174,241,119,161,246, 10, 33, 72, 87,171, 66,183,227, 81,
+ 30,205,245, 8, 20,140, 88,135,220, 87,225, 8,146,107,103, 69,227,114,198,137,199, 37,145,147, 25,237, 40,101,117,223,230,178,
+178,239,145,120, 90,149, 51, 79,137,220,101,140, 36, 25,108,138,103,226,108, 54,141,186, 13,146,130,178, 46, 84,209,172,170, 82,
+ 87, 36,149,149,219,157, 70,170,116, 34,205,230,117,209, 27, 79,158,145,161,208, 55,184,224,165,187, 36, 61,215,115, 87,167,201,
+168, 99, 76, 11,101, 82,153,118,245,133, 40,123,165, 82,136, 51, 23, 21,190,136, 18,142,143, 48, 60, 50,129, 46, 60,153,149, 23,
+188,142,243,207,127, 21,171, 78, 93,206,209,118, 31, 19,123,118, 48,242,236, 4, 79, 77, 4,116,194,144, 32, 8, 18,230,183, 97,
+162, 19, 98, 4,250,155,125,120,158, 71, 24,217,140, 15, 96, 52,130, 40,138,139, 97, 25, 67, 24, 89, 90, 54, 46,138, 18,182, 35,
+252,104,156,151, 14,118,120,217,241, 3,180, 94,186,132,225,232, 37, 28,104,121, 4, 97,204,109,233,235,235,163,209,108, 48,107,
+160,129,223,108, 50, 60,114,128, 39,159,218,201, 99,255,254, 99,198,183,252,144,230,196, 86, 76,211, 71,105, 82,110,226,220,133,
+204, 22,244, 86,202,186, 47, 41,119,157, 58,136,172,147, 98, 1, 76,210, 41,142,188,149,168,198,107, 75,127,178,184, 88, 18,132,
+ 67, 61, 76, 3,102,201, 36,170,197, 57,191, 16,232,235, 68,156,120,172,114, 96,222, 74, 70,119,132,248,122,144,190,166,143, 14,
+248,236,219, 55, 8,251,127, 12, 50, 14, 50,200,228,204, 65,153,194, 56,154,118, 85,152,105,235,194, 66, 54,209,148,251, 72, 15,
+158,200,243,227,173, 79,117, 40, 63, 74, 20, 67,250,206, 89,180, 64, 26,210,174,188, 72,173,156,173,105, 46,177,175,138,132, 73,
+227, 20,103,204,188,131,101,106, 24, 72, 22, 79, 79,219, 88,106, 6, 31,187, 17,107,231,119, 39, 70,168,170,153,178,119, 19,207,
+220, 5, 58, 72, 46, 63, 32,111,236, 18,185,113,126,135,217,106, 4,124, 79, 16, 11,109,155,167,166, 8,105, 88,162,216,124,165,
+192, 56,206,140,160,132,187,175,226,144,104, 52,110,244, 42, 30,104, 16, 87,146, 87,227,152, 35, 9, 94,145, 16,141,108, 85,252,
+ 91, 20,207,109, 61, 42, 49, 58, 98,203,239, 69,218, 85, 78, 67, 76,231, 0, 13, 99,233,216,144, 16, 15,227,249, 25,167, 65,156,
+187,102,195, 0,171,130, 73,186,241,137,209, 2,155, 63,123,238, 6, 52,232, 48, 30,100,184, 8, 81,218,129,173, 92,251,220, 53,
+ 85,148,202,118,214, 90,138, 27, 22,217,167,233,243, 78, 16,161, 40,192,155,187,132,161, 1, 97,124,247, 51, 4,234,119,117, 14,
+ 43,151,137,201, 9,155, 74, 16,134, 73, 43, 94,215, 61, 46,119, 95, 18,196, 51, 73, 18, 72, 84, 17, 56,179,206,155, 91, 21, 27,
+238,134,142,213, 70,216,246, 56,210,236,195, 6, 33, 54, 12,226,218,241, 85, 68,176, 52, 39, 89,170,188,216, 10,248,189,196,174,
+ 78, 21,174,149,180,132,109, 85, 99,151, 10,168,189,100, 52,168,147,173, 32, 78,129,103, 41,212, 44,232, 78,249,114, 99,243,229,
+134, 44, 85,229, 98, 11,222,121,250,142,119, 70, 25,222, 55,130,157,127, 18,175, 88,243, 75,188,254,130,255,192,203,151,205,225,
+104,187,159,131,195, 79,176,101,207, 1, 38, 90, 45,194, 32,192, 70, 17,157, 48,194, 90,197, 75,230, 34, 94,131,230,192, 32,126,
+179, 17, 23,137,194, 67,163, 0,181,150,137, 72,177, 81,128,111, 44,129, 85,162,100, 78,196,125, 42, 4,235, 55, 25, 9, 61,250,
+198, 34,102,133, 19,156, 60,219,208,119,244, 92, 76,115, 22,125, 13, 67,163, 97,176, 97, 11,105,237, 97,116,108,156,221,227,195,
+204,243, 71, 24,122, 73,147, 31,207,122, 57, 59,158, 56, 10,127,223,143,240,252, 54, 42,205, 74,255, 81,156, 53, 71,171,226,165,
+174,114, 23,157,220,105,239,185,246, 87,247, 64, 40,119,138,203, 75, 48, 39,100, 84, 73,157,163,184,154,232, 76,154,122,139,192,
+104, 75, 56,117, 96,132, 37,103,158,202, 83,237,151,225, 31,124, 26,175,161,204,105,244,241,172,223,199,222,125,109,252,241, 29,
+ 49, 51,186,107, 0,117, 74,223,202,180, 21,176,246, 86,177,147,107,193,169, 10,196,104,165,153,222,219,200,168,178,114,122,120,
+235, 71, 30,184, 87,252,136,188,253,105, 58,143,172, 22,129,162, 66,213,184, 2,116,148,116, 66,115,106,172, 7, 73,167, 48,249,
+191,188,189,249,179, 36,217,117,223,247, 57,247,102,102, 45,239,189,238,158,238,217, 49,251, 2, 96, 0,130,162,192, 5, 20, 73,
+ 89,160, 32, 66, 92, 36, 89,178, 21, 54,169,176, 36,202, 20,109, 83,214, 22, 10, 57, 20, 10, 90,150, 35, 20,214,127,226,159, 21,
+150, 29,114,216,225, 69, 11,195,114, 0, 38, 64, 80,164, 72, 0,131,217,122,102,186,167,183,183, 86, 85, 46,247,222,227, 31,110,
+ 46, 55,179,170, 94,247, 0, 32,231, 23,160,187,223, 82,149,149,121,207, 57,223,243, 93, 84, 88,235,248, 96, 72,129,216,208, 78,
+211, 67,226,147,246,122,244, 81,231, 62,250,189, 67,238,123,106, 45,201,238,222, 56,153,238,117,100,246, 50,124, 24,161,135, 25,
+125,180,107,139,246,184,146, 18,248,134, 15,198,179,157, 88,220, 63, 33, 93, 81, 55,203,184, 25,247, 77,156,176, 59, 2,148,205,
+ 40,140,135, 38,238,251,210, 67,185,203,160,151,132,209, 63,218,224,134,128, 19, 67, 38, 48,114, 11,239, 98, 79, 39,141, 13, 2,
+ 77,227, 56,241, 2,243,103, 64, 55,212,205, 57,121, 66,138, 11, 98,218,137, 59,208, 52, 3,132, 63,114, 40,211,113,154,154,168,
+140,220,201, 84, 38, 32,152, 76,214,128,201,255, 25,123,188, 79,162, 57, 71,123,115, 25,237, 7,163,215,159,197,186, 51,142,130,
+ 80,137,161, 10,187,207,134,190, 85,153,236,103,131,210, 42, 25,118,201,149,218,233,216,196,201, 90,186, 68,188,224, 39,200,131,
+ 25,114,234, 25,135,237,236,133,149, 69,104,234, 26,223, 84,132, 48,100,182,239,178,123, 29, 43, 18,100, 43,183, 92,118, 21,246,
+145, 21,156,238, 93, 35,164, 69, 56, 5, 5,118, 22,219,169,173,170, 78,197,151,178,245, 30, 71,120,135, 14, 30, 15, 91,217,238,
+ 19, 66, 94,231,150,103,213,113,254,224, 30,199, 92,229, 51, 63,243,203,252,249,191,240,103,248, 99,175,223, 96,182,250,136, 15,
+ 63,122,139,183,155, 64, 85,213, 92, 92, 92,224,188,167,169, 29,193, 59,124, 11,116,121, 49,216,108,198,242, 96,206,114, 49,143,
+126, 0,198, 32, 1,188,243,132, 80,129, 4,156,247, 45, 99, 62,134,243,104, 80,212, 24,140,205,201,172,144,205,150,128,197, 44,
+ 11,228, 96, 65, 94, 24,154,230,156,139,147, 83,234,106,205,241,233,138,179,179, 11,202,178,230,116,237,169,235,154, 66, 3,159,
+191,110,121,243,240, 21,190,249,239, 44,220,249, 6,182,112, 81, 78,167,147, 53, 9,187,205,210,134, 41,186,157,160, 69, 38, 54,
+180,186,127,255,251, 72, 32,125, 66,156, 76,108, 19,210, 69, 73,143,191, 94,146,164,183, 27,242,135, 90,133,108,189,230,167,126,
+114, 65,243,242,207,113,241,182, 99,102,214,216,172, 32,203,148, 59,174, 96,115,247, 3, 14,220, 29,152, 23,187, 11,241, 72, 58,
+ 40,151,214, 83,101, 74, 6,252,126,134,156,201,142,118, 76,247,126,229,238,213,251, 67,219,140,239,114, 90,127,148,159, 36,100,
+222, 43,222,111,223,124,125, 65,236,220,180,146, 72,212,129, 63,213,238,167,195,192, 90,150, 86,154,101,209, 49, 11,187, 5,134,
+211,157,174,246,172,218, 24,234, 34,253, 78,121,218,172,234,100, 38,103, 82,164,167, 98,145, 97,186, 48,173, 71,122, 23, 52, 67,
+187, 94, 72,225,226,144,216,215,118,123,223, 32, 99,191,246,113,254,121,162,239,150,132,212,164,138, 24,139, 89, 40,243,170,166,
+170,227, 20, 16,153,122,155, 49,193, 41, 57, 1, 77, 71,212,154, 50,127,117, 56, 91,125,203, 36,183, 34,164,146,149,237, 64,137,
+241,116, 23,150, 87,120,225,201,156,250,221, 99,110,151,134,204, 14,197, 36, 36,240,119,208, 41,153,111,135,218, 50, 49,109, 72,
+ 3,113,211,155, 71,118,216, 60,110,255,156,113,186,188, 33,221,167, 14, 62, 1,210,133, 8,101, 25,110,179,225,253,149,130,205,
+ 48,230,146, 4,102, 85,118,102,145, 36, 54,182, 61,124,176, 3,116, 82, 17,178,204,224, 60,145, 24,149, 30,204,102, 72, 81,211,
+125, 78,104, 59,160, 68, 31, 38,221,206,180, 25,216, 97,111,171, 59, 8,114, 67,246,193,116,133,181,173, 79,151, 4,169,216,121,
+ 66, 76,166,102,221, 7, 41,166,210, 54,101,183,190, 61,125,246,100, 32,126, 62, 44,219,221,136,224, 55,103,220,190,127,206,149,
+ 79,253, 20,191,250, 87,126,153, 63,251,147,159,225,168,188,205,135, 55,191,205,121,233,169,234, 13,190, 9,148,181,163,170, 27,
+188,115,212,141,111, 67,116, 12,182,152, 49, 91, 44,153,207, 10,172, 53,209,149,207, 24,172,177, 40, 14, 33,224,234, 10, 13,142,
+186,118, 92,172, 74,130,247, 88, 33,238,199, 77, 78,150, 89, 14,150, 11,150, 71, 71, 24, 99,209,122,205,230,254, 7,220, 63, 63,
+229,244,236,140,179,139, 13,174,106,240, 38,167, 12, 25,161,169,232,100,183,149, 6,102,107,199,203,197, 61,154, 79, 63,195,219,
+190, 66,142,255, 61,166,176, 35, 50,239,100, 75, 53, 93,113,143, 10,188,200,196, 10, 72, 46,113,215, 99, 27, 85,123,148, 88,153,
+116, 53,211, 75, 77,101, 27,177,217,151,231,144, 54,132,199,167,142,159,121,246,130,215,191,244,139,252,254,217,115,204,171,223,
+ 66,243, 28,113,129,106, 30,184,117,223, 96,238,124, 27,108, 13,204,198,247,152,178,131,159,242,112,188,249,123, 78, 57,219, 57,
+208,235,224,220,169,186,215,109,118,215,185,243,113,164,115,202,247, 94,225,247, 50,225, 21, 50,109, 11,106,218,148,152, 81,212,
+226,100,191,158, 76, 87,163,248,216, 22,226, 51,116, 54,178,137,117, 98,191,107,211, 62, 81, 42, 81,216,182,240,243,240,192,251,
+ 17,231,125,172,109,238,109, 50, 19, 67, 21, 77, 92,187, 84,134,180,176,174,242,153,212,181,187,133,237,211,159, 45,147, 70,162,
+ 95, 29, 76, 62,196, 48,185,172,146, 74,119, 58,248,200,111,144,218, 98, 36,143, 57,229, 93, 51, 16, 34, 59,116, 12, 69, 15, 70,
+ 63,169,103,252,232,186, 50, 88,194,250,246,144,182,146, 34, 7,178,213, 57,247, 86, 62, 86,208,179,183,240,106, 49,230, 8, 49,
+ 46,206,161, 50,206,203,131,193,172,198,116,215, 17,197, 36,134, 35,157,231,169,110, 29, 85,140,154, 21,233,157,229,146,221,157,
+ 78, 71,243,241,200,168,109, 88,189, 73,138,144,145, 49,199,194,152, 12,111, 4, 49,145,217, 16,124, 24,145, 42,211,163, 38,168,
+ 94,218,137,211,146, 32,211,168, 90, 13, 1, 53, 49,187, 93,136,235,142, 96,164,111,120,199,179,106,162,189,159, 78,210,187,228,
+109, 19, 73,210,174, 66, 43,137, 5,175, 76, 9,110,147,194, 62,138,220,221, 34, 23, 78, 24,230,211,226,190, 69,144,211,109,146,
+223, 36, 64,102,220,146,167, 13,204, 84, 27,159, 18,228,116,171,104, 13, 78,127, 17, 17, 91, 29,223,229,129, 63,228, 11,127,241,
+111,242,215,255,242,127,196, 15, 62, 41,124,248,222,155,252,254,241, 57,234, 61, 77, 83,179, 89,175, 65, 12,206, 41, 85, 29,137,
+112,198,230, 4, 13,100,179, 25, 71,135, 7,204,138,172, 53,184, 82, 48,209,136, 42,168,167,218,148,148,171,115,170,170,198,213,
+ 21,155,170,194, 53, 77,244,112,200, 11,138, 98,134,157,205, 88, 30, 29,178,156,205, 16,173, 89,159, 62,224,254,253, 99,238,221,
+ 63,225,252,124,141,119, 14, 23, 2,162,129, 69, 30,104,104,168,203,154,204, 42,106,115, 52, 40,103,206, 49,175, 2,175, 30,157,
+ 83,190,246, 60, 31,254,246, 3,230,205,135, 72,190,236,243, 19,182,142,224, 61,167,187, 36,206,112, 35, 27,110,217, 61, 61,107,
+ 50,100,244,252, 34, 30, 98,109, 59,220,197, 29,203,120,120,141,237, 61, 37,201,158, 37,141,201,157, 38, 14,222, 59, 15,188,150,
+223,231,103,255,227, 63,201,135, 7,127,138,245,219,191,203,156,134, 77, 99,185,150, 53,188,149, 63,195,173,183, 62, 96,182,126,
+ 11,150,203, 75, 25,103,251,242,211, 71, 68, 92,246, 75,208,183,218,210,116, 55,244, 8,172,181, 65, 82, 58,117,208,208,157,141,
+148, 60,172,195,216,195,249,251,174, 10,251,163,126,147, 64,150,153,118, 58,150, 49, 87, 72, 83,210,210,196,134,148,137, 13,103,
+ 12, 60, 97,203,217, 43,213, 67,235,228,223, 7,120,123, 40,198,125,110,115, 75,106, 11, 50,158,220,109,247,187,219,145, 33,232,
+ 14, 73, 71,226,185, 45, 91,182,177,211,174, 86, 39, 76,243,177,127,245,174, 13,207, 72,161,174,233,132,215,190, 66,147,163, 24,
+ 74,241,152, 76,193,133,145,254,125,248, 90,233, 67, 65, 12, 49,150,208,161,157, 74,108,172,113,159, 0, 65, 77,255,122,205, 22,
+ 4,213,191,222, 16,253,213,141, 42,183, 30,120,204,225, 33,215, 14, 55,212, 43, 79,147,232,198,187, 3,195, 36, 70, 42, 65,198,
+246,177,129,113, 59,186,131,255, 63, 66, 8,160, 67, 20,134, 44,121, 84, 82, 18,195,238,189,152,164,160,150, 76,160,122, 33,107,
+139,110,208,152,251,167,126, 55,129, 77,146,226,180, 15, 56,107,209,244,209, 13, 20,124,104, 27, 8,179, 37,162,220,229,142,127,
+105,180,235,101,237,251, 46,105,215,142,169,107,123,170,218,237, 30,167, 59,167,127,182,138,251,192,126,215,113,131,179, 43,157,
+109,112,196, 25,164,133, 83, 56,125,194, 39,208,164, 79,234,216,150,211,221,186,136,129,208,112,239,163, 59,228, 79,127,154, 95,
+251,181,191,199,127,250,167,126, 8, 57,187,197,239,127,235, 14,171,117, 73, 85, 85,184,166,102, 83,213,248,198, 99, 77, 12,152,
+ 10, 1,172, 49,228,133, 37, 43, 14, 56, 56, 56,136, 10, 43,239,251,134, 33, 51, 17,113, 43, 47, 46, 56, 63,191,160, 92,151,120,
+117, 92,172, 75,170, 85,137, 49, 80,204,102,204,138,156,108, 86,112,116,245, 10, 87, 14, 23,108,202,134,251,247, 78, 56, 57, 61,
+ 99,179, 46, 41,125,228,253,248, 16, 80, 31,240,162,156,151, 30,175, 1,231, 2,133, 11,228,133,210,168,161,113, 14,175,129,124,
+ 93,241,218,181, 5, 39,207,189,206,250,155,119,153,251, 19,152, 29,182,156,154, 68,199,163,250,208, 90,208,163, 30,105, 86,125,
+ 66, 4, 29,199, 18, 79, 21, 68, 15,161,108,167,140,123, 17,198,249, 0, 83, 53, 68, 26,214, 36,125,113, 55, 2, 15, 86,158,107,
+213, 61,254,218, 47,127, 1,249,193,191,202,221,223,190,131, 13, 39, 84, 88, 14,213, 99,174, 31,240, 59,223, 9,132,239,124, 5,
+ 83,120, 96,185,245,234,250, 38,230, 81,210, 77,247,206,203,151, 44,251,247,164,237,237,187,238,187,225,247,125,159,209, 35,160,
+ 34,251,154,183,239,105, 98,191,196, 62, 86,163,215, 12,157,162,113,244,198,100,112,169, 10,201,117,148, 94,230,146, 56,125,117,
+ 19, 92,239,177, 60, 28, 0, 41, 60,189,139,249,220,221,222, 65, 67, 43,143, 18,108,231,208,150,208,176, 13,105,222,185,144, 17,
+ 35, 89,157, 14,154,247,238, 13, 24,209,158, 53, 30, 77,101,116,212, 76,200,164,203,141,147,146,105, 51,201, 37,177,188,222,182,
+172, 28, 32,234,212, 64,120,208, 58, 75,203,114,206, 90,109,179, 11,221,190, 62,202,214,172,164, 5,107, 32,117, 9, 66,214,165,
+204,237,128,120,134,181,138,233,225, 57,209, 36,134,117, 90, 20, 36,167, 51,253,205,114,160, 57, 35, 4, 33,136,233, 39,127, 73,
+215, 28,162, 73,210, 92,183, 94,232, 50,235, 45, 42, 33,113,188, 79,118,162, 59, 31,175,212, 97, 79,182, 34, 13,183,240, 55, 29,
+ 8,107,227,125,247,248,203,250,162,144,124,226,211, 20,176,169,212, 80,146,201,125,240,103, 81,210,176,151, 84,226, 22, 66, 24,
+144,155, 48,149,103,233, 86,231,157,194,254,187,136,108,151,177,227,217,161, 61,151,100, 69, 48,109,172,182,243,212, 91, 91, 80,
+101,183, 73,205,100,245,177,189,151,223, 93,156, 73, 12,102,186,176, 18, 73,140,103, 82,180, 97, 4,213, 78,108,164,117,242, 59,
+197, 24,124,185,226,246,189, 19, 94,253,177, 47,243,119,254,238,223,226,199, 95,187,193, 7, 55,191,195,253,243, 13,155,178,162,
+170,107, 54,101, 69, 93, 87,132,160, 4,239,219,204, 30,161, 40,114,140,205, 88, 46, 23,204, 23,243,120, 78,136,137,140,118,129,
+ 96, 44,222, 53,212,245,134,243,139, 13,155,213, 10,231, 2,229,102, 67,211, 52, 52,206,147,225,241,193, 97, 15, 15,184,241,212,
+ 83, 88, 99,169, 87,167,148,117,224,124,221,224,156,195,135, 64,104, 42,130,111,162,218, 69,128,224, 17,107,176,196,231,170,113,
+ 13, 18, 90, 78,139, 88,130, 10,107,111,184, 82,175,121,229,217, 5,191, 83,255, 8,231, 31,189, 75,182,190, 67,193, 26,155, 91,
+200,102,177,241,223, 33, 79,220,106,143, 19, 57,241,246, 65,222,133,199, 76,253, 22,229,209, 61,229, 83, 51,168,105,195,155,144,
+146, 59, 79, 42,146,233, 93,172,225,254,121,205,114,253,128,191,245, 87,127,130,231,254,212,175,241,245,111,157,161,103,239, 70,
+181, 73, 8, 92,191,102,249,205,213,117,110,254,127,255, 15,135,238, 38, 44,175, 94,194, 17,144, 61,237,236,110, 20,163, 79,142,
+124,212, 26,250,144, 17,121,107,250, 31,121, 3, 60,164,201,248, 67,146,172,127,156, 78, 32,243, 45, 68, 42,125, 32,138,140,118,
+ 98, 29,204, 60, 4,139,232, 40,224,106,180,255,105, 79,164,160,233,218,114, 48,171,208, 17,132, 61,236, 83,189, 12,221,104,148,
+ 84, 12,112,108, 72,138, 78,104,163, 78, 71,127,191, 99,126,236,160,252, 14,158,181, 74,239, 39, 63,134, 65, 12, 72, 6, 18,162,
+ 81,135, 48,118,205, 74,216,242,202,212,221,173,133, 63,123, 39, 58,162, 94,201, 11, 24,131, 74, 0, 31, 34,204, 43, 5,146,229,
+228, 97,211, 75, 7,211, 6,170, 47, 24, 97,251,147, 75,239,199, 78,206,150,181, 38, 18,161, 99,116,143,203, 41,234, 21, 93, 28,
+177, 40, 74,252,106, 77, 19, 12,120, 56,115,138, 49,131, 67, 96,202, 44,136, 82,189, 40,247, 17,117,132,208,237,237, 45,198,180,
+218,119, 29, 12,137,246,232, 32, 98, 51,160,241,179, 26, 49,179,229, 18, 56,188,111,254,116, 66, 18,147, 97,253, 32,145,149,238,
+218,130,222,189,190, 71, 34, 9,141, 32,104,157, 76, 7,210, 50,160,135,135,216,135,176,251,123, 71,217,224,186, 61,245,236, 61,
+ 60,119,145,220,182, 11,113,215, 76,246,137,115, 12,144,188, 21, 25, 50, 17,166, 16,131,200,238,231,125,135,214,102, 95, 20,237,
+248,245,200,232,115, 75,253, 25,118,161, 7, 50, 65, 15,166, 22,188, 34,113,109, 82,158, 29,243,209, 89,201, 79,255,197, 95,225,
+239,253,218,127,206, 19,249,134,239,188,243, 46, 85, 19,216,172, 86,108,202, 50,194,221, 62,224, 3,132,198,225,188, 39,179,134,
+172, 88,144,103,134,197, 98,193,108, 54,195,107, 32, 4, 37,179, 25,170, 30,105,159,183,139,245,134,245,197, 41,101,229,216,172,
+ 46, 64, 12, 85,213, 16, 92,131,119, 13,199,199, 15,120,234,233, 39,249,196, 43,175, 49,203, 44,167,167,199, 92,156,173, 9,190,
+166,113, 21,190,174,240, 77,131,119,161, 69, 35, 3, 98, 4,239, 97, 38,180, 10,137,128,218, 2,130, 39, 23,197,100, 54,158, 37,
+198,112, 81,193, 39, 22, 21, 47,126,225,121, 62, 40, 63,201,205,155,119,120,240,209, 71,172,238,221, 34, 91,223,101, 46, 43,164,
+ 40, 16, 59,219, 45,101,219,123, 39, 39, 77,212, 72,115, 42,123, 27,108,189, 20, 6,224,161, 58,172,177,192, 98, 24, 68,238,222,
+ 63,227,154, 89,243,183,127,245,207,240,250,151,126,137,223,249,214, 29, 86, 31,126, 7,223,108,208,160, 60,125, 96,248,232,224,
+ 25,190,242,127,191,205,236,222,215, 48,203,229,214, 60,171, 83,138,201,229,242,244, 45, 34,155, 62,196,134,102,127,197,102, 47,
+ 79,104, 63, 99,225, 50,216, 96, 76,150,222, 85,129,251,231,250, 15,163, 7, 16,200,188,130,211, 40,101, 72, 25,212,161, 61,232,
+134,253,130,182,161,132,146, 36, 43,133,209, 20,148,110, 65,123, 8, 60,185, 49,186,136,210,174,136,116,126,197,253,199,101, 20,
+171,130,215,116,234, 30,199,149,250, 62, 95,120,128,240, 69,199,142,106, 35, 62,167,232, 32,145, 26, 77, 62, 67, 73, 48, 86, 56,
+ 84,165,246, 66,157, 36,198, 77, 53,243,189,225,205,104, 31, 76, 31,103, 25, 95,151,195, 53,221,110, 52,154,170,170,122,212, 88,
+158,176, 66, 89, 41,103,218, 26,201,180, 77, 84,151, 72,231, 59, 40,188, 51,190,217, 73,158,106, 95,187,118,198, 46,145,140,215,
+105, 0, 68, 5,111, 45, 66,201, 12, 71, 45,209,116,199, 74, 68, 15,134,207,119,104,176,122,217,114, 43, 35, 51,180,142,121, 34,
+ 35,159,115, 35,186, 51,217,104,244,103,109,239,137,214,229, 47, 76,182, 80,194, 14,216, 80, 58,180,102, 2,114,119,129, 58,189,
+124,177,131,200,117,100,106,165, 59,118, 86,163,231,175,229, 96,152,169, 83, 84,194,212,185,100,155, 55, 34,159,169,234, 94,211,
+153,221,196, 52,122,235, 78,221,169,119,151,132,141, 62,134,177, 73, 92,219, 4, 40, 68,112,116,215, 34,185,231,218,220,249, 40,
+ 34, 8,163, 37,254,222,166, 66,198,107,169,237, 38,102,226, 83, 33,187,195,138,198,113,182,187,169, 60,198, 24,206,143,239,113,
+ 30,102,252,103,127,251,215,249, 47,127,233,207, 18, 46,238,241,206,173, 83, 50, 91, 80, 94,220,229, 98,181, 38,120,143,247, 62,
+ 74,212,128,218,199, 54,209,230, 5, 7, 71, 7,100, 89, 70,158,219, 54, 5, 47, 78,200,153, 5, 36, 99,117,126, 66, 85,150,156,
+ 95,172,216,172,214,148, 85, 77, 93, 59, 50,129,186,218, 80, 85, 53,103, 39, 39, 44,174, 92,229,179, 63,250, 19, 92, 57, 88,112,
+247,163, 91,172, 87, 27, 54,149,163,218,172,169,215, 27,202, 77,133,247,190, 79,121, 51,237,125, 19,178, 12, 31,148,224, 42, 52,
+120, 50,107,105, 84,162, 21,109, 43, 9, 21, 44,146, 9, 30,195,245,245, 25,215,103, 43, 94,255,228,130,211,215,222,224,163,139,
+ 79,241,193,189, 11,110,191,243, 62,225,206,219, 44,202,187,100,133,137,123,119, 49, 9, 82,242,112, 73,214,212, 26,125, 28,136,
+ 35, 19,182,203,142, 74,148,164,239, 61,132, 6, 55,156,237, 70,168,157,231,222,221,123,124,242, 19,215,249,235,127,245,151,121,
+242,211, 95,224, 55,191,254, 38,167,119, 63,196, 53, 53,214,192,181,153, 69,110, 60,193,191,252,250, 61,214,191,251,127,112,101,
+166, 91, 18,191,173, 76, 70, 73, 88,228,123,194,155,198,239, 87,183,220, 24,119,190,250, 71,177,154,190,164,140,127, 44,111,249,
+ 75, 16,128,189,138,148,239,105,183,190, 31,118,200,178, 20,126, 87,105,167,219,168, 93, 20,237,166,244, 24,110,162,125,145,143,
+161, 44,221, 65,101,218,125,151,151,177, 12, 76, 72, 82,162,218,239, 53,109, 5,246,163,180,179,182,247,234, 50,218,101,216,170,
+154, 68,131, 59, 16,161,232,243,216, 83,153,153, 38,146,175,142, 10, 98,218, 74, 24,146, 61,120, 72, 63, 21,117,168,131, 70, 50,
+212, 64, 80,135, 85,165,179, 56, 49, 73,136,204,192,202,214,173, 84,182, 97, 26,141, 76, 59,151, 28,216, 34,129, 80,109, 56, 17,
+ 19, 27, 35,137, 5, 44,235,157,187,162,140,205, 3,134,208, 87, 91, 59,105, 8,211,143,113, 72,207,139,187,230, 66,162,138,161,
+ 34,198,123, 26,117,108, 54,130,145,140,133, 9,241, 58,233, 56,198, 53,103, 64, 34,186,232,198,224,253, 16,220,210,190,158, 94,
+115, 31,246,247,176,134,193, 13, 45,176,187,251,237, 56, 4, 3, 33, 43,140,110, 82, 43,131, 34, 66, 53,153,208,147,131,192,244,
+ 65, 59,227,226,170,151, 60,152, 35,214,184, 78,217,223,210, 35, 58,219,136,120, 66, 40,210,125, 16,246,142, 34,173,123,108,176,
+246, 25,217,244, 15,253, 64, 42, 29,248,133,241,190,117,170, 88,157,184, 48,202, 48, 65,245,168, 84, 94,224,189, 71, 59,114,134,
+240,208,195, 91,100,215,250, 64, 18,102,180,238,109,106, 71, 14,116,233,242,173, 95,155, 25,142,239,221, 38, 44,159,224,239,254,
+253,255,150,255,228,203, 95,224,222,173,119, 57, 89,123, 14, 14, 14,185,247,209,135,156,156,158,180,252, 24, 37,248, 64,211,212,
+120, 31, 40,138, 12, 99, 51,142,174, 94,101, 62,159, 35,234,123, 53,141,181, 81,195,226,188,163, 42,107, 46, 86, 27,202,114,195,
+122,189,198,185,136,188,169,194,241,233, 41,168,114,122,122,198, 98,121,192,151,254,244,159,230,198,245,107,220,124,239, 38,103,
+103, 43, 92, 83, 19,130,227, 98, 83, 83,174,215,120, 21,124, 80,156,247,248,208,230,151,171, 39,183, 6, 23,160, 9,130,122,137,
+177,187, 70,240, 88,130, 42,206, 43, 25, 62, 34, 18,181,227,142, 88, 88, 7, 50,127,198, 81, 33, 60,125, 52,227,179,159,188,194,
+253, 79,254, 16,223, 57,254, 60,223,249,246,251,156,188,245, 59, 44,207,222,165,152, 43, 82, 28,180, 94, 22, 19, 56,250, 33,204,
+247,126,239, 14,189,105,213,254,130, 39,251,145,156, 75,136,123, 32,156,158,157, 81,111,214,252,252,127,240,163,252,133, 95,252,
+ 37, 86,217, 13,190,242,213,223,161, 92,157,226,157, 35, 23,207, 81,110, 57,120,242,113,254,197,183, 42,222,253,141,127,193,181,
+252, 2,205,175, 92, 90, 84,135,103,242,242, 61,118,122,127, 61,178,136,254, 81,245,233, 50, 69,125, 63, 14,174,254,113,210,228,
+254, 16, 80,121,129, 76,165,141,129,108, 11,164,193, 18,228, 0,240,152, 80, 19,188,226, 91,171,111,211, 23,231,244,200,139, 7,
+185, 49, 67, 62,186,244, 22,159, 93, 71, 37,189, 16,222,182,238, 67,182,135, 86,147,169, 66,135,195,201, 72,103, 48,211, 58,220,
+181,197,213, 36, 4,168, 81,146,152, 12, 4,183, 81, 20,170, 76,165, 63, 59,210,148, 20, 54, 98, 16,171, 28, 73,129,250,192,153,
+111, 0,105, 99, 7,146, 23,152, 36,179,164, 74,140, 97, 31,204, 86, 22, 67, 39,223, 41, 73, 92,225, 58, 22,126, 75,232,243, 9,
+ 14,228,187,247,153,232,130,131, 38,204,231,145,225, 71,136, 19,132,153,116,215, 38, 58,217,107,240,237,117,149,173, 61,125,215,
+ 56,248, 30, 58,239, 96,232, 33,148, 70,218, 10,173,178,221,255,155,132,152, 19, 24, 60,254,173, 36, 26,229,164,120, 78,253, 14,
+ 84,119,137, 17,199, 90,218, 64,106, 46, 44, 91, 81,188,242,144,199, 76,217, 26,202, 25, 59, 67,232, 48,205,111,253,160,196,243,
+189, 85, 2,232, 35,116,253,251, 10,255, 46,134,249, 62, 62,243,214, 94,154,136,168,141,241, 48, 25, 66,146,218,175, 61,204, 13,
+165, 40,155, 58, 36, 82,255, 65,255, 41, 35,214,251,190,125,123, 18,153, 42,221, 94, 85,183,131,221, 70,104,193,112, 28, 94,243,
+ 0, 0, 0, 32, 0, 73, 68, 65, 84, 56,107, 18,251,122,255,206,109,204,149,103,248,135,255,221, 63,225,103,127,226,179,188,251,
+246,155,172, 26,229,198,245,235, 60,184,115,139, 59,119,239,198,134,220,123,130, 6,106,215, 16, 2, 20,197, 28,140,176, 92,206,
+ 56, 58, 88,224, 92,131,243, 30,147,205, 89, 44,231, 4, 87, 83,149,107,170,186,102,117,177,194,123,207,197,249, 10,245, 13,198,
+100,184,166, 97,117,113, 17,247,243,155, 53,197,108,198,151,126,225,231,121,234,201, 27,220,186,249, 30,117, 93,211, 56,165,105,
+ 26, 54,101,100,197,139, 17,114, 12,193, 11, 89,102,241, 33,224,125, 19, 87,104,222, 97,172, 48,155,229, 84, 37,132,160, 72, 16,
+ 12,174, 39, 1,139,196,134, 32, 4,199, 44, 55, 4, 51,231,162,130,243,166, 65, 46, 60,135,249,134, 23,111, 28,243,198,243, 79,
+112,235,197,215,248,247,247, 62,201,239,125,243, 67,142,127,239,107, 28,156,189, 73, 49, 15,144, 31,128,216, 81,131,119, 89, 41,
+145, 93,147,185,112,233, 36,187, 43,180,100,123, 83, 19,223,207,102,179,226,248,248,140, 23, 62,241, 52,191,248, 43,127,153, 31,
+249,233, 47,243,230,205, 83,222,255,119, 95, 69,105,240,118, 6,141,231,160, 48, 60,246,236,211,252, 95,239,122,254,253,255,249,
+207,185, 42,119,145,217, 99,173, 34,132,135,186,198,237,108, 44,183,158,229, 84, 27,254,136,121,231,227, 52,157,135,148,231,201,
+201, 34,122,201,175,209,137,148,116,255,133,190,172,101,249,126, 77,235,233,207,177, 63,246,185, 55,254,123, 87, 55, 9,254,127,
+ 8,249, 99,112,104,201, 14, 29,135,214,177, 8, 96, 90, 23, 56, 70, 23, 74, 18,198,165,180,157,249,150,208,169, 39,189,141,213,
+230,146,232,183,182,109,199,122,207,113,186,184,211,193,113, 77,147, 56, 77, 21,217,171, 39,236, 14,150,148, 70,146,118,100, 99,
+185, 90,192, 18,152, 81, 64, 97,184,102, 29,198, 11,155,244, 35,148, 65,132, 23, 52,157, 62,119, 23,204,233,159, 76,242, 39, 35,
+211,168, 82,101, 8, 69,139,127,242,218,177, 81, 39, 91,120, 25,223, 88,113, 31, 30,250,226,234, 67,232,253,179, 27, 79,239,168,
+183,107, 75,183,213,248,104,162, 84,144, 1,234,219, 14,163, 73,222,203,120, 11, 59, 42, 58, 34,227,235,179, 85,112,147, 60,214,
+113,136,200,248,191, 33,248, 39,205, 20,127,164,121,100,204, 12,218,241,112,143,124,232,119,252,160,241,214,248,178, 95,178,155,
+157,187,107, 77, 33,210,221, 79,201, 2,202,200,126,152,126,114,152,236, 67, 40,162,173,169,182, 4,174,228,117, 39,158,236,210,
+221, 67, 19,153, 97,239, 14,152,154,146,232,176,114,219, 53,232, 37, 50,246, 81,178,156, 53,134,251,119, 62, 98,118,227, 5,254,
+209, 63,249,167,124,241,243,175,243,238,187,239,176,241, 18, 11,250,221, 91,188,251,222,205,182,128, 41,206,185, 22,126,119,204,
+231, 11,242, 89, 30,239,157, 44,199,218, 12,149,140,163,107,215,121,242,201,167, 80, 87,115,118,242,128,170,170,216, 84, 53,117,
+ 85, 81,149, 37,235,117, 73,158,103,212, 85,195,201,201, 41,117, 93, 83,151, 53,193, 7,190,244, 11, 63,203,235,159,122,131,119,
+223,126,139,213,197, 57, 77,221,208, 52, 53, 85,237,240,174, 77,118,104,137,121,222,123,130,119,132,224, 9, 33,244, 92, 35,211,
+202, 99,157,106, 11, 23,134, 56,205,139,144,101, 25,198,100, 49,133, 79, 3,153, 17,108, 81,176, 41, 61,248, 10,155, 27, 28,134,
+147, 82, 56,189,127,206,181,245, 71,252,208, 83,158, 79,189,241, 2,197, 75,159,227,110,246, 44,103,199, 21,102,117, 15,171, 27,
+196,216, 36,158, 84,246, 48,181,167, 32,175,140, 62,151,228, 67,222,163,193,146,173,251, 52,222, 50,129,106,179,230,222,189, 7,
+228,179, 37, 63,247,179, 63,203,175,254, 23,191,202,235,159,251, 60,191,251,173,119,121,239,219,223, 36,107, 42,242, 12, 26, 85,
+ 30,203,149,167,159,127,150,127,243,161,240, 27,255,211, 63,227,176,188, 73,118,120,245,146,133,216,116, 31,253,168, 6,122,250,
+221,149, 65,125,180,127,158,174,144,185,132, 11, 52, 20, 85,121,132, 10,156, 12, 43,127,192,255,205,102, 51, 50,145,208, 79,130,
+241,198,110, 8,156, 35,214,177, 44, 60, 47,136,112, 45, 40,239,111,148,247,136,250,115,195,216, 28,161,155, 54,123, 11,194, 54,
+237, 76,219, 52,175,184, 27, 13,237,244, 53, 14, 11, 25,244,205, 99,235,214,208, 49,188,219, 95,226, 91,134,153, 97, 8,114,233,
+136, 68, 97, 71,209,144,116,103, 59,137,110,237,127, 14,169,192, 66,241, 42, 92,248, 18,171, 48,107,253,224,199,164, 65,157,236,
+ 32,165, 39, 17,245, 7, 90, 15,144,202,222, 3,121, 92, 36,135, 93,242, 72, 90,215, 89,176, 34, 19, 26,204, 56, 30,181,227, 13,
+120, 29,178,136, 85, 3, 77, 19,218,134, 70,146,172,182,221,134, 21,102,244,119, 58,154, 38, 67, 82, 16,131, 38,205,136,142,119,
+254,147,214, 41,190,215,246, 34, 27, 24, 17,209, 70,211, 97, 50, 52,154,212, 88, 39,229,245,142, 52,236, 29,114,161, 91, 13,192,
+244,168,210,209,231,246, 8,246,147,105, 62,118,130, 2, 73,226,170,166,146, 22, 94, 77,161,154,189,109,197,190, 78, 95,117,220,
+201, 75, 63, 32,108,203,193,134,105,154, 29,190,110,113,175, 46, 61,103, 37, 37,178, 14,135,122, 58,137,143, 72,115,202, 22,145,
+110, 32, 96,117, 10,136,125,177,161, 50,232,162, 59, 82,159, 49, 60,184,123,155,217,245,103,249,199,255,195, 63,229, 11,159,126,
+142,119,222,125,155, 32, 57, 79, 62,113,131,211,251, 31,241,222,205, 15,177, 89,142, 2,117,217, 68, 24,220, 5, 76, 94,144,103,
+ 22,201, 50,142,174,220,224,232,232, 42, 69, 81, 80, 20, 5,135,243,130,227,123,183,249,232,214,135, 84, 77,244, 91, 8, 62, 80,
+ 54,142,213,186,196, 26,168,202,138,179,211, 11,234,166,193, 57, 79, 93, 87,252,248, 79,126,129, 31,254,145,207,243,193, 7,119,
+120,112,239, 1,168,167,170,170,254,227,203, 45, 4, 10,170,205, 6, 80,234,198,177,217,148,125, 65,151, 4,205,172,234,134,197,
+ 44,167,178, 89, 68, 0,138, 60, 62, 23, 26, 64, 98,110,123, 38,109,205,247, 14,147, 89,154, 70,144,166, 33,207, 2, 78,149,251,
+181,227,172, 82,238,110,238,242,236,149, 99,126,250,201,107,124,234, 39,110,240,187,175,254, 12,223,252,230, 77,206,222,249, 22,
+197,217, 77, 10,115,142,228,121,116,167,235,161,121,189,164,141,212,203,215, 58, 83,199,155, 81,135, 29,240,117,197,122,189,102,
+237, 51,174, 61,241, 52, 95,254,226,207,241,165, 63,241, 83,124,250,147, 47,113,247,193, 41, 95,249,234,215, 89,159,222,107, 81,
+136, 37,117,117,193,227,115,120,236,153,151,248, 87,223,186,207,191,254, 95,254, 25,135,245,135,228, 71,215,122,195,175, 94,253,
+ 61, 9, 30, 98, 50,108,238, 18,104,201, 14, 84, 98, 91,194,172,151, 86,235,253, 34, 90,118, 18, 87,183,244, 97,251,218,136,173,
+ 33, 97,119,130,222, 31,124, 29,223,126,135,153,234, 0, 61,134, 0,129, 53,148, 21,193, 11,101,174, 52, 10,103, 94, 56, 77, 15,
+176,158,111,209,102, 84, 7, 8,152,200,215,233,224,230,118, 51,143, 49,177, 9,104,101, 33, 45,255,100, 4,165, 40, 6,145, 46,
+148, 69, 19,255,247,244,154, 13,150,170,187,130, 56, 52, 97, 1, 79,249, 11,187,157,151, 82,148,181,115,195,139,255,234, 61,220,
+ 77, 34, 68, 67,226,145,173,201,180, 51,165,129,245,239, 75,146,135,108, 72,171,236,167, 98, 51, 1,124,148,221,204,104, 38,133,
+210,164, 15,128,166,197, 97,114,243,183,135,127, 80,237,145, 10,217, 51,165,119,107,149,192,212, 69,169,167, 97,143,164,124,129,
+ 93,218,249,168,209, 23, 27,131, 97, 66,203, 30, 55,146,250,217,111, 47,174,164,213,199,107, 91,192,134,100,178,142,221, 63,220,
+155, 41, 59,187,115, 42,236, 33,101,125, 88,217,150, 29,235,201, 49,237,117,107,253,150,216,175,234, 14,219,168,110,218,110, 90,
+ 22,126,190,135,188,164,186,155,130,171, 59,218,246, 48, 69, 17,118,156, 38,102,175, 28,170, 45,190, 83,179,153, 9,252,190, 19,
+134,148,125, 44,158,177, 41, 14,108,235,216,101, 4,178, 9, 98,132,179, 7,247,240,243,235,252,195, 95,255,199,252,228,103, 95,
+226,219,111,189,141,218,130, 39, 30,127,156,245,233,125,222,187,249, 62,121,145, 19,188,167, 41, 43,154,186,166,113,129,217,172,
+ 96, 62, 43, 80, 99,120,246,153, 79,112,253,198, 13,114, 35,145, 93, 30, 60,183,110,125,192,123, 55,111,146,229, 5,179,249, 60,
+ 78,247,170, 4,231, 17, 85,234,186,230,236,124,133,171,107,242,204,114,124,124,194,171, 47, 63,207, 31,251,137, 31,167,174, 26,
+ 62,252,224, 3, 92, 83,227, 3,148,181,139, 33, 47,170,248,160, 45,137,215, 80,111,206,105, 92,220,221,219, 44,202,207, 92,227,
+ 80,239, 49,121,148,207,121,231, 90,107,225,168,200, 80,175, 56,107,200, 53,144,181, 76,248,178, 9, 88, 83, 51,203, 11,154,210,
+224,212,199,123,189,187,159,196,114,238,148,111, 29,123,228,248, 62, 55,236,109,126,248,250,130,215,127,248, 73,222,122,237,143,
+243,230,219,183, 57,121,255, 93,252,233, 29,204,230, 28,241, 43,140, 9,173,175, 69,136, 44,252,172, 0,147,239,140,118,222, 85,
+127,250,181, 75, 8,168, 6,180,169,104,154,134,202, 5, 26, 51,103,121,245, 9, 94,126,227, 85,222,120,227, 13,126,244,115,175,
+243,201, 23,159,230,226,226,156,223,253,198,111,113,247,193, 9,229,122,195, 65,110, 8, 69,198,233,133,227,169,131, 57, 87,159,
+125,154,127,254,155, 31,240,149,255,245,159,113,196, 3,138,195,107, 68,160,112,104,200, 83,207, 3,182, 16, 39,185,132,160,250,
+ 48,136,250, 18, 74,249,199,112,122, 25, 57,250,109,161, 31,250,144,117,252,100,112,220,217,218, 63, 92,101,240,253,220,187,103,
+ 70, 18, 87,173,158,159,225,177,149,176,174, 13,223, 54,202, 92, 98, 10, 91, 39, 41, 11,173,191,148,106, 6,217, 2, 99, 43,164,
+105,104,156,193, 27, 33,151,200,230,150, 54,153, 77, 90,247,185, 84, 62,213, 93,170,144,124,196,221,238,188,219,197, 14,122,249,
+225,192,232, 15, 18,213,177, 11, 91, 47,102, 78, 25,248,195,135, 99, 70,240, 54, 3, 29, 80, 82,149,187,182,132,186,225, 65, 24,
+224,240,118,254,214,136,106,168, 53, 20, 18, 48, 1,170, 36,150, 83,118, 0, 69,154, 76, 94,146,204,248, 97, 12, 34,140,138,229,
+240,190, 76,202, 81,155, 20,178, 29,180,216,118, 55, 46, 2, 94,108, 12,186,104,117,231,129,129,109,159,222,251,126,215,222,170,
+109, 70,204,150, 45,237,248,144,239,235,132, 17,102,185,197,215, 49, 6,211, 24, 29,130,192, 18, 46,128,236,104,198,164,247, 54,
+209,214,139, 85, 91,181, 68, 27, 77, 57, 89,167, 12, 40,198,142,130,179, 3,226, 31, 7,152,232, 68, 31,191, 31,216,235,147,201,
+118,100,125,171, 70, 50,213,141,103,158, 39, 87,199,237, 91, 31, 98,179,108,231,129, 42, 98, 7,239,161, 16,213, 1,146,250,126,
+ 79,214, 16,227, 3, 67,119, 31, 36,157,252,114, 18,186,180,255,100,209,129,252, 54,233,100,100, 68, 47, 29,153, 49, 39,211,252,
+110, 75, 92, 77,158, 59, 99, 12,235,179, 19,206,156,229, 31,252,250,175,243,229, 63,246, 57,190,249,173, 55, 49,197,140,199,175,
+ 63, 70,181, 62,231,155,111,126,167, 77, 86, 19,170,170,193,135, 64,102,115,230,179,152, 73, 94, 85, 53, 47,190,242, 10, 79, 62,
+249, 56,117, 85,225,140,161, 48,194,221,123,247,248,224,214,109,178,118,146,111,154,184, 7,247,174, 1,239,240,206,177, 41,155,
+ 72, 90,115,142,170,170, 89,204,114,254,232,143,124,158, 43,215,174,243,246,187, 31,112,114,124,220,246, 66, 30,196,178, 46, 75,
+102,153, 64, 94, 80,111, 54, 24,107,169,130, 69,213, 81,204,102,136, 42, 77, 83,247,104,160, 65,177, 70,168,154, 88,244, 67,128,
+166,105,200, 90,167, 67, 13,145,220, 23,201,116,177,185,149, 44, 94,151,194,122,140,205, 8,222, 49,203,109,159,207,110, 50, 75,
+ 8,202, 7, 85,198,135,239,111,184, 62,123,135, 79, 95, 93,240,202,103, 30,227,206,171,127,148,251,103, 53, 39, 39,231, 84, 85,
+201,166,114,148,235,200,228,111, 86,103,152,213,125, 50,127,142, 21,135,177,166,149,210, 14,157,127, 8,161, 93, 37,104, 12, 23,
+ 82,240,146,227,197, 34,197,146,226,232, 73,142,174, 92,227,149,167,158,228,133,231,159,231,245,151,158,229,185,167, 31,231,154,
+173,217, 92,156,242, 91, 95,251,144, 7,167, 43,202,213, 26,131,103,182, 92,178,246, 25,230,124,205,139, 79,222, 96, 45, 11,254,
+199,127,241,111,249,189,175,252, 43,174,206, 2,118,254, 88,228, 26, 36, 4, 83,161,213,249,143,170,230, 4, 87,248, 24, 85, 77,
+182, 18, 57, 30,138,122, 95,234,196,174, 41, 93,106,212, 36, 60,220,253,239, 17, 61,115,254, 96,216,115,151,152,218,100, 29,195,
+219, 37, 49,159, 29, 33, 76,136, 5,171,214,152,211,220,129,196,182,179, 53,213, 26,239, 13, 46,179,204, 15, 60,215, 43, 56,175,
+133,139,214,177,192,170,239,247,222,131, 52,103,240, 97, 79, 53,200,182,159,152, 51, 76,171, 27,247, 9, 3,126,176, 67, 12,253,
+116,151, 22,187,212,180,163,175,111,137,115,154, 25,149, 44,131,154,200, 62,207,136,104, 67,221,177,226, 19,178,159,244, 5, 50,
+ 94,143,142,209, 46, 68, 50,204, 8, 78, 72, 94, 71,207,228,149,212,102,102,248,183,144, 24,242,164,208,190,103,148,159,209,131,
+248,121,178, 87, 30, 77,173, 12,186,122,109, 97, 80,219, 55, 33,134,121,158,115,128,227,172,114, 52,201,254,118,228,223, 31,182,
+ 49,141,116, 63,222,193,143, 41, 59, 79,147,235, 19, 31,218,184,217,119, 85, 69,136,157,226, 24,188,234,243,108,211, 76,110, 29,
+252,246, 67,203, 12, 72, 36, 92,253, 39,219,237,207, 71, 69, 79,218,140,248,203, 39,244,221,146,187,109, 46,237,101,207,156, 18,
+ 70,136, 69,138,134, 4, 4,169,207,163, 26, 66,204,238, 89, 66,163, 55, 64, 58,229,138,234,246, 20,213,254,253, 86,227, 35, 73,
+182,250, 78,246,243,110, 62,149,236,117,181,147, 4,101,212, 45,100,161,175,209, 61, 26,167,163,191,223, 38,215, 65,102, 99,203,
+ 92,111, 46,184,123,182,225, 87,254,206, 63,224,207,253,201, 31,227, 59,239,188,195,242,232, 26,135,135, 75,130,171,121,247,221,
+247,216,148, 21, 69,158, 83, 86, 53, 70, 32,207, 50, 92, 93, 67,112,212, 94,121,226,233,103,120,230,233,167,162,233, 76,187,186,
+169,234,154,227,139, 18,155,207,200,140,178, 94,111, 34, 67,222, 57,206, 79,207, 88, 93,172,105, 92,195,124, 94, 80,215, 21, 77,
+227,184, 88,173,249,252,231,127,128, 87, 95,123,141,213,186,228,222,189,123, 88, 19, 45,168, 67,211, 96, 69, 49, 38,235,121, 64,
+214, 90,150,243, 2,127,116,136, 43, 13,136, 97, 93,110,104,130, 98,212,147,229, 5, 62, 4,172, 53,237, 58,221, 33,214,182, 10,
+ 14,105,173,105, 99, 72,148,141,179, 52, 46, 4, 22, 2, 38, 47, 80,215, 68,139,218, 16,250,243, 45,203, 50, 66,112, 4,175, 20,
+214, 32,197,140, 51, 12,231,167,158,131,243,187, 60,181,200,121,254,250, 18,125,234, 16, 83, 60, 78,176,115,130,157, 81,106,206,
+157,179,154, 91,119,206,184,119,251, 54, 23, 39,247,168,215,231,132,186, 36,132,186,111,164,243,217,156,197,193, 17,249,114, 73,
+ 54, 91,178, 40, 50, 14, 15,150, 28, 30, 30,113,253,104,193,213,171, 7,220, 88,206,184,126, 88, 48, 19, 79,179, 58,229,246,155,
+ 31,241,118,217,160, 34,148, 77,160, 44,107, 50, 81, 14,150, 51,212,100, 28, 45,151, 28, 94,249, 4,111,190,243, 30,255,219,191,
+252,159,121,240,206, 55,121,236,202, 1,146,207,122, 82,220, 56,140,102, 24, 86, 82,205, 59,123,103,244,203, 70,111,249,120,181,
+240, 81, 35, 87, 19,255, 9,217,246,103,228,178,184,181,203,165,176,143,254, 82,190,159,242,182, 76, 77,171, 15, 15, 45,148, 40,
+ 67,119,110, 73, 53,144, 97,176, 17, 77, 8, 5, 38,148,184,181, 97,149, 25,172,133,133, 85,234,192, 40,127, 57,194,177,131, 68,
+172,223,222,106, 55,241,119,196,185, 22,138, 53, 6,171, 68, 9, 75, 72, 40,100, 65, 80,108, 76,209, 74,244, 85, 50,234,182, 18,
+203,219, 30,202,165,119,140, 35, 68,203, 71,131, 80, 72,116,193,163, 45,156, 77,171, 0,232,247,157,210,230,147, 39,144,183,138,
+193, 24,200, 85,251,180,181,142, 65, 46, 83,253, 16,131, 93,237, 96,147, 58,214,255,234,164,235, 27, 77,248,237, 68, 94,167, 5,
+ 33,233,126,101,207,148,218, 95,247,166,106,149, 11,233, 90, 66,251,208, 8, 37, 6,208,116,250,230,110, 26, 11,211,157,111,178,
+243,215, 36,247, 91,147,230, 67, 25,246,185, 41, 18,128,161,183,190,181, 9,153,170,155,192,109,251,106,189, 14,191, 87,166,158,
+204, 93,163,214,121, 19,180,250, 97,221, 97, 3, 59, 45,242,227,132,185,164,113, 49,210, 79,186, 97, 34,141,235,238, 93, 73,130,
+117,118, 61,116,179,220,114,239,222, 49,138,144,231,217,206, 29,184, 17, 67, 8, 1, 99, 58,137, 88,216,122,145, 83, 54,188,238,
+128, 6,199,225, 46, 99,205,128,238,153,234,101,170,203,191, 36, 18,114,187,232,183,141,125,130, 4,236, 10,137, 49,210, 26,227,
+120,199,173,123,199,252,185,191,244,171,252,202, 47,253,135,220,189,251, 17,135, 87,174, 51,203, 45,153,129,143, 78, 78, 56, 62,
+ 61,195,138,193,185, 38, 78,178, 64,211,212,212,117,141, 49,194,227, 79, 61,205, 75, 47, 61,223,127, 6, 69, 30,201,114, 85,221,
+112,229,232, 16, 52,112,122,124,159,166,113, 52, 77,100,187,175, 86,235,158,107,225,234,178,157,210, 27,158,122,242, 58,159,253,
+193, 31, 96, 62, 95,114,255,116,197,122,189,194, 8, 52,190, 87,249, 51, 47, 34,178, 82, 53, 46, 26,201, 88,193, 90, 75,229, 29,
+ 86,132, 34,207,104, 26,139, 15,109, 26,133,205, 34, 9,206, 10,100, 5,170,224,186,245, 85, 39,117,213,182,109, 22, 98,148, 49,
+129,229,188, 96,189,106,112,117, 69,102,133, 70,227,174,179, 12, 13,214, 24,196, 70, 45,208, 76,148, 32,145,143, 84,219,156,147,
+198, 16,142, 55,224,206, 89, 24, 56,152,101, 44, 23, 57,135,153,229,217,249,156,207,190,186,100,245,202,203,156, 53,175,115,190,
+ 42,169,203, 18,213, 64,158,229, 44, 23, 51,142,150, 11, 22,139, 25,139, 92, 34,225, 80, 3, 11, 27,162,182,222, 85,172, 47, 46,
+168,239,221,230,246,157,192, 38, 8,234, 21, 17, 19,243,230, 85, 8, 65, 89,204,115,102, 89,206,108,121,200, 99, 87,142,184,168,
+ 54,252,239,255,250,223,240,155,255,239,111, 96,234, 21,215,175, 95,139, 67,210,206,224,160,100, 40, 72,239, 45, 25, 24,186,251,
+173,182,198, 11, 62,153, 56, 83,234,195, 42,226,199,208,132,167,113,199,186,147,165,179,231,103, 60,244, 89, 98,203,130,252, 15,
+230,191,241,207,205, 98, 33, 52,136, 4, 50,160, 9,157,172,172,245,199,110,199,249,161,243, 31,118,171, 17,114, 54,100,162,120,
+ 31, 56,247,209, 84, 37,111, 63, 69,223, 50,222,131, 72, 75,180, 81, 28,113,127, 21,141,100,164,223,183,186,150, 93,111, 82, 6,
+109,123,221,124, 47,201,178,168, 41,162,197,186, 56,196,215,248, 96,146,253,181, 14,147,144,164,241,124,209,147,221, 90,193,248,
+ 42,202,103, 66,148,214,101,109, 66, 89, 47,235,146,113,100,201,212, 95, 94, 85, 49,104,132, 56,164,187, 22,154,236,201,101,139,
+ 29,158,146,168,140, 12,172,253,206,148,132,118, 26,140,135, 67, 74,186, 27,223, 76,210, 58,175, 41,166,159,200,155, 73, 65, 15,
+ 73,171, 80, 5,216, 4,105, 81, 22,122,104, 62,200, 16, 39,106,172,197,154,232, 57,239,157,199, 43, 59, 56,249,219,144,151,142,
+145,180,209,235,245, 93, 35, 32,218, 59,232,117,206,123,253, 10, 36,217,143,103, 6,130, 31,188,231, 47,187,117, 59, 14, 66,163,
+227,160, 29,195,126, 31, 8, 73, 66,105, 68, 70,217,147,137,124,178, 67, 46, 90, 65, 97,223, 33,234,200, 52,106,120,240,163, 91,
+160,205,242,173, 66,215,213,104, 43, 80, 24, 97,237, 58, 68,100,136, 57,222, 94, 11,110,219,188,110, 13, 6,189,237,237,132,236,
+182,247,212, 26, 32,247,113,128,139, 48, 17, 8,237,222, 85,194, 14, 43,210,237, 95,230,130,242,225,237,219,124,254,143,127,153,
+191,255, 55,255, 58,245,102,197,124,121, 72, 97, 5,167,112,113,113,198,221, 59, 31, 33,237,243, 82, 86, 13, 77, 85, 81,228, 25,
+197,108, 6, 38,195,100,134,231,158,251, 4,121,150, 83, 55,174, 45,158, 74,112,160,222,145, 91,161, 40, 10,130, 10, 77, 93,177,
+ 94, 71, 77,122, 83,215, 17,105,244,129,114, 83,181,166, 77,129, 87, 63,249, 42,159,120,238,121, 20,195,201,253,251,248,186,166,
+170, 26,234,186, 6,148,204, 90, 76, 86, 16, 92,131,177,194,122, 19,200, 12,216,214, 67, 66, 67,124, 22,212, 55,228, 89,214, 54,
+135, 74,221, 4, 12,158,124, 54,139,105,111,121,214, 74,223, 90,135, 15,175,189,106,196,136,160, 45, 59,222,187, 38,122,116, 96,
+ 8,222, 71, 3,157,204,180,207, 78,212,185,123, 87, 97, 77,124,159,130,224,188,163,118, 30,163,224,212,114,190,242,228,149, 50,
+155, 21,228,101,141, 80, 51, 23,207, 21, 49, 44, 67,192,228,144, 27,203,188,168,176,121,133,105,206,217,108, 2, 85,221,128, 53,
+ 56,205,120,128, 16, 52,128, 49,108,156, 16,234, 26,107, 2,198,102,228,214, 98,139, 28,193, 96, 20,172,157,113,120,120,133,163,
+ 43,135,172, 46,206,249,234,111,127,131,127,251,149,175,114,231,131,247,184,114,120, 64,126,245,177,193,165,113,223, 68, 58,229,
+128,116, 68,208,238,252, 12,190,229, 90,121, 52,180,202, 13, 31,215,182,113,229,106,192, 88, 12,130, 49, 1,205, 12,108,153,217,
+240, 72,154,244, 93, 27,114,101, 98,169,172, 31, 99, 74,222,139,247,237,251,150,203, 11,251,119,191, 91,159, 76,234,195,244, 45,
+ 4, 3, 38,116, 7,115,155, 55,174,130, 23,197,142,228,108, 3,199, 89, 90,114, 88, 38,241,123, 58, 8,185,219, 4,183,118, 43,
+189,230, 47,116,174, 71,125,128,139,105, 89,208,130, 53,237,238,187, 69, 5,180,221,175,118,185,233, 42, 6, 49,138,177,134,220,
+ 88,140, 24,124, 3,181, 90,212, 10,214, 68, 84, 32,104,194, 49, 87, 65, 37,195,139,141,158,236, 89,142,173,149,202,197,194,208,
+ 62,131,253,235, 78, 97,205,206, 40,102, 92,232,226,207,111, 72, 80,129,142, 25,204,196,168, 99,114,115, 11, 67,145, 67, 58, 35,
+158,208,199,191,218,150,101,235,246,221,136, 9,225,197, 90, 75,166, 53,206, 79,216,254, 19, 86,186,221, 10,213,161,103,178,247,
+113,139,186, 79, 60, 34, 35, 89, 55,123, 28,209,198,203,165, 65,114, 21,116,124, 27,143,247,240,161,127, 29,141,242,240,150,183,
+ 91,125,168,246, 70, 66, 29, 2,209, 53, 67,176, 95,183,222, 57,193,137,145,126,229,160, 91,121, 15,130, 41, 22,168,107,250,137,
+ 90,147,198, 96,240, 48,183, 52,117,195,166,246, 28, 44,230, 49,242, 83, 39,168,130, 68, 87,190,210,251, 17, 81, 41, 93,101,104,
+194,215,155,186,210, 77,245,175, 50, 37, 62,169,108, 81,143,140, 76, 51,204,247, 89, 88,110, 19, 2, 85,199,145,198,253, 94,221,
+232, 86, 66,200,136, 4, 40,112,113,122,194,213, 39,159,231,239,253,237,191,193,194, 6, 78,219,123,121, 83, 86, 88, 3,183,110,
+221,230,226, 98, 69,102, 44,101,211,196,245, 93,150, 83, 87, 37, 69, 22,189,220,175,223,184,206,225,225, 1,117, 93,183, 89,231,
+ 80,135,128,119,158,198,199, 73,121,150,103, 4, 13,172,214, 37,155,213,154,186,106,216,148, 53,153, 53, 4, 85,138, 60,195, 57,
+207,211, 79, 61,193,235,175,191,206,114,121,196,166,114,156,156,158,224, 92,133,247, 33,162, 38,182, 53,222, 8, 62,242, 55,130,
+ 98,219, 41,125,115,182, 34,248, 6, 17, 67,227,154, 56,212,216, 56,185,170,247,100,185, 69,213, 18,124,232,127, 94,175,144,208,
+ 72,224, 52, 70, 34, 58, 25, 2,181,104, 52,168, 9,129,220, 64, 85,123, 68, 61,197, 44, 78,250,117,213,144, 89,131,205,243,152,
+ 13, 97,178,184,171,119, 77,207,185,136,138,130,184,155,207,115,139, 24,137, 33, 50, 65, 57,119, 81,103,148,231, 57,193,100,148,
+101, 69, 30, 26,230,139, 57, 78, 50,170,178, 98,158, 11,243,217, 12, 99, 60, 42, 38, 62,122,174,137,195,149, 53, 88,177, 20,121,
+214,170, 17,162,153,213,227, 55,174,115,120,245, 58, 39, 39, 39,252,214,215,191,202,111,126,227, 27,188,253,246, 59, 20,214,114,
+227,250,141,182, 9, 13,143,190, 66,238,238,153, 16, 8,174,166,169, 54, 52,141,199,155, 25, 90, 28, 97,242, 37, 50, 91, 96,173,
+ 37,159,207,201,231,135,100,121,228, 89,184,186,164,110,106,116, 19, 40,214,119,128,187, 96,103, 76,236,185, 30,221,108,230,210,
+210,248, 49, 76,103, 84, 62,214, 12,174,223,159, 10,254, 80, 8, 62, 11, 29, 95, 61, 49,251,176,146,200, 84, 90, 66,151,239, 97,
+ 67,105, 89,203, 3, 92, 58, 32,173,161,117,251, 26,232, 96,166, 13, 41, 65, 34,100,106, 85,112,132,118,186, 77,116,180,166,155,
+252, 67,244,110, 15,113,167, 30,116,112, 54, 83,245,160, 81,186, 35, 26, 25,175,125, 72,171, 24,196,154,200, 66,110,125,161,133,
+ 6,239,148,160, 30, 35,182,157, 90, 66, 39,182,107, 97,252,241, 84,221,239,229, 53, 78,180,157, 54, 53,232,152,237, 24, 70, 94,
+132,219,186,225,173,191,237,109,205, 91, 18, 88,208, 65,206,213, 30,246, 65,199, 89,149, 50,177, 51,213,118,210,212,150,222,150,
+165,247,214, 86,190,153,142, 44, 35,119, 61,126, 1, 5,239, 91, 20, 38,196,125,127,203,171,176,157,147, 94,247,123,219,119, 22,
+ 36, 77,136,146,221, 88,150,176,197,116,215, 93,132,149, 22,121,232, 27, 61,125,152, 81, 67, 74,216, 27, 38,253,148, 64,151, 78,
+237, 50,186,174, 73,241,154,160,123,218, 54,176,152,156, 27, 87,143, 88,157,159,178,218,120,140,109, 93,242, 67,123,183, 90, 27,
+139, 77,121,206, 99, 47,188,193,231, 95,125,149, 55,191,246, 27,156,157, 95,144,229,249,238, 34,185, 3, 88, 76,167,130,105,144,
+132, 36, 44, 77,157,132,253, 78, 40,186, 91,135,137,142, 96,247,244,235, 7,158,204, 62, 67,147,222,253,176,191,161,116,216,189,
+203,190,157,122,252,243,189,211, 11,254,198, 95,251,175,248,193, 79,189,204,157,123, 15,152, 23, 51,206, 47,206, 65, 3,119,239,
+159,112,255,193,113,116,185, 11, 74, 85, 53,168,171,177,153,229,162,241,216,178,226,250,225, 17, 55, 30,191,222, 70,156, 18,253,
+222, 77,235,212, 22, 92, 79,226, 61, 59, 63,227,226, 44,234,207, 93, 93,183,156, 88, 33,203, 12,222,107, 68,154,188,227, 83,159,
+254, 44, 79, 60,241, 4, 86,148,179,243,139, 56,157,139, 69,169,193, 68, 13,189,170,226,154,104,104, 19,156, 39,179, 89,235,196,
+ 7,209,137, 56, 78,141, 89,150,245, 67, 74, 48,166, 47,240,193,185, 88, 32,123, 39,191, 44, 18,121, 85,113,141,199,185, 26, 52,
+208, 52, 66,102,115,102,179,140,197,242, 10,179,144,145, 27, 37,207, 51,170, 96,168,234, 26, 9, 33,174, 2, 9,132,224, 41,171,
+ 10,155,197,189,126,252,159,184,242,203,140,196,112, 27,245,168,201,250,144,159,172,101,196,171, 43,201, 13, 20,197, 12,140,193,
+ 53, 13, 69, 38, 72,139,126, 20,185, 65,165, 32, 4, 31, 35,156,141,161, 48,150, 76, 44,243,197,146,226,224, 49, 14, 23, 51,114,
+163,156, 61,184,205,215,127,251,171,124,253, 27,191,207,251, 31,190,143, 17,203,181,171, 87, 48, 98,134, 56,230,237,236,210,221,
+ 72,120,240, 52,229,134,178, 42,169, 53,163, 56,184,194,245, 23, 94,225,198,211,207,241,248,147, 79,113,116,253, 6,102,126,136,
+ 85, 56, 42,148,217, 65, 65, 19, 44,231,103, 43, 78,239,221,195,174,239, 82,102,129,111,111,150, 28,191,243, 42,197, 7,223, 0,
+255, 30,216,130, 84, 75,244,241, 5, 96, 58,146,238,235,163,176,208,246, 89,124,126,239,235,253,239, 7,242, 30,139,122,135, 68,
+250,100,206,242, 74, 98,255, 24,167,244,144, 76,154, 94, 90,135, 45,134,137, 60,144,197,224, 18, 83,183,208,149,180, 13, 64, 43,
+ 21,211,100,191, 39,182, 95,180,134,118, 50, 71, 59,201,150,246,206,116,227, 28,137,182, 52,249, 26,223,249,144,107, 76,105,243,
+227, 96,107,172,137, 59,114, 23, 12,106, 60,234, 27, 66, 19,168, 84, 40,104, 37, 40, 42, 61,163, 53,193,105,183,176,228,206,137,
+ 77, 68, 71,132,233,105,144,143, 94,122,221, 39,110,106, 58,117,103,212,177, 45,115,242,122, 82,154, 93,135,146, 88,148,186,241,
+148,157,198,127, 7,231, 91,147,178, 62,218, 45, 79,191,210, 7, 28,163,144, 77, 44, 74, 46,113,130,246,233,207, 19, 97,102, 45,
+226, 61,165, 74,175, 67,223, 29,139,212,111,246,123,179, 24,221, 85,255, 83, 55,204, 9, 44, 54,253,207, 43, 91,113,172,105, 2,
+ 31, 19,105, 79,231, 33, 48, 77, 20,148, 9,193,110,240, 79,247,156,159, 60,192,133,232, 87,158,154,251,100,179, 57,197,226,128,
+224,149,213,166,228,233,235,135,252,232, 75, 71,188,247,219,208,132,118, 29, 51,129,189, 59, 8,113, 74,156,155, 54,129,194, 54,
+ 33,191, 75, 91,136,222, 0, 19, 51,155, 62, 80, 70,246,162, 39,214,230, 56,239,232,241,126, 77,179,237,247,167,199,117, 8,218,
+ 56,126, 51, 13, 57, 74, 51,212,133,147, 7, 15,248,228,103,126,144,159,255,185, 47,115,118,118,198,114,121, 16,109, 90, 67,192,
+185, 38,218, 33,207, 22, 52, 77, 77,211,196, 66,220, 40, 4,231,121,236,202, 21,156,247, 28, 28, 29,178,152,207,105,124,228,117,
+ 88, 49,120,239, 41,203, 13,198,198,232,195,198, 57,214,235, 13,229,170,164,108, 97,119, 16,140,137, 77,168, 23,165,118,129,235,
+143, 95,231,185, 23,158,143, 54,175, 26, 56, 61, 59,167,218,172, 99, 60,107, 80, 44, 6,239, 34, 75, 94, 67,188,167, 84, 32, 51,
+145,251,144,217, 56, 9,135,208, 42, 63,196, 82, 87,117, 68,209,242, 44, 94,151,224, 49, 18,195,100,156, 49,152,214,223, 62,104,
+100,214,184, 0, 85, 21,139,122, 45,112,116, 96,184, 58,159, 35,254,156, 80,150, 52,222,145, 23,150, 43,243, 5,249,114,134,154,
+ 2, 35, 22,111,150,172,235, 64,161, 87,162,188, 56,120,140, 49,212, 85,133,241, 77,124, 22,197, 99,141,141,104,135, 17, 36, 8,
+141, 15,172,202, 6,209,134,195, 69,129,100,115,170, 42,250,222,103,121,129, 83,193,134,128, 72,134,195, 34, 98,163,124,112,185,
+228,240, 96,193,225, 98,134,248,154,213,249, 29,110,190,127,135,223,255,206,187,252,222,183,223,226,193,241, 3,138, 98,206,213,
+195, 35,196,152,158,207,114, 89,113,209,164,144, 87,155, 13,155,205, 6,102, 11,142, 30,127,142, 87, 63,241, 28, 47,189,252, 50,
+ 47,191,242, 18,143, 61,241, 20,143, 45, 44,121, 38,132,106, 67, 83,158,181, 54,192, 57,155,170,230,238,233,154,179,251, 39, 20,
+199, 31,177,176, 27, 30,151,156,107,135, 27,190,246,218, 21,238,202, 15, 51,187,233,192,127, 0,118,206,199, 85,131,239, 20,170,
+237,112,217,219,143, 60,104, 2, 92,238,159,214,119,171,114, 46, 79,174,249,216, 3,252,142,111,200, 66, 43, 59, 11,218, 5,160,
+ 76,205, 97, 90,194,148, 57, 68,115,135,145,146,204, 71, 77,123,119,116,135,214, 19, 93,197, 64,102,200,197, 97,107,168,195, 64,
+170,139,238,112, 97,184, 16, 22, 22,173,103,124,169, 17, 2,107, 68,251, 34, 27, 84,122,139,204,161,147,106,229, 18, 62,180,228,
+177,206,183,219,131,215,126,138,244, 93, 48,141,134,232,132, 39, 16,212,227,107,165, 20,122,207,249,244,106,132,177, 3, 71,108,
+ 86,182,188,236,181, 47,242,125, 67, 51,201,144,223, 38,173,141,157, 73, 59, 5,192,176,231,220,125,219,140,155, 6,221,174,204,
+164,201, 97, 50,176,151,167, 8,130,140, 39,194, 93,208,216,116, 30,244,157, 2, 32,229, 40,116, 61, 79, 8,147, 97, 92,183, 45,
+ 23, 82, 15,115,211, 46,110,194,244,138, 15, 57,221,221,154,199, 76,178,225,247, 89, 42,142, 61,240, 31,198,147, 73, 24,253, 50,
+ 64,102,236, 40,236, 10,108, 90,211,158, 97,171, 16, 83,186,242, 89, 17, 39,119, 3, 87, 31,187,198,219,191,247,219,188,247,251,
+191, 69,173,150,249,172,216,218,167,199,194,110,118, 50,198,211, 85,129,238,100,211, 70, 87,192,249, 98, 65,150,101, 92,156,157,
+197,221,226,136,221,144,200,218,208,109,248,124,148, 77,191,157, 41, 29, 27,178,201, 30, 81,199, 81, 59,187, 54,165, 35, 73,187,
+ 42,167,171,146,191,246, 11, 63,207,139,159,120,154,187,247, 30,112, 52,203, 41,203, 51,156,107,104,234,134, 34, 51, 92,191,118,
+149,247, 47,206,122,130,163,149, 8, 79,107,240, 28, 30, 29,240,228, 19, 79,244,142,109, 33,196, 24,230,170,174, 98,150,121,107,
+ 65, 93,149, 53,117, 91, 36, 54,235, 18, 31,124,228, 44,228,121,220, 59,163,228,153,229,149,151, 95,100,182, 56,136,140,122, 44,
+171,245,134,114,189, 30,200,134, 45, 4,110, 52, 34, 59,185, 17,188, 88, 92,187,199,183,153, 69,140, 65,188,107, 37,138, 49, 32,
+ 41, 6,211,116, 62,239, 33,174, 8,197,147, 25, 67,227, 2,117, 93,146,101,173,144,215,215, 72,235, 8,153, 27, 97, 62, 91,240,
+237,119,110,243,225,123,111,246, 13,149, 21,152, 89,152,207, 98, 72,205,114, 49, 99,190, 88,112,176, 92,176, 60,188, 74,145, 23,
+ 92, 61, 58, 32, 91, 94,165,242, 87,112, 33, 54, 55, 54,203, 17,147, 83, 86, 30, 87,174,209, 60,128, 13, 88,227,201, 13,204,150,
+115,188,228, 28, 20,177,160,103,153, 37,136, 97,102, 96,177,200, 49, 8, 25,117, 84,252,108, 78, 57,191,253, 30,111,221,123,192,
+219,239,125,192, 71, 31,221,226,206,201,138,218, 41,203,229,146,235,143,221, 24, 61, 80, 29,223, 72,247,200,190, 20,165, 90,111,
+ 88,173,215,144, 21, 92,127,242, 89, 62,247,169, 79,243,198,103, 63,203, 11,175,190,206, 83,143, 95,103,153, 11,174, 60,167, 92,
+175,104, 92,197,241,121,195,230,236,130,133,105, 96, 49, 99, 83, 5,214,165,227,238,133,231,124, 93, 98,197,115,174, 57, 23, 27,
+207, 99, 78,249,220,236,130,175,189,184,228,180,254, 35,204,110,151,104,184, 15,102,241,177, 36,100,123,101,237,242, 8,225, 47,
+ 91,126,186, 15,215,216,127,220, 73,253,123, 69,230,179, 46,128,195,160,104, 16,124, 23,230,210, 75,198, 90, 34,154,110,208, 32,
+144, 43, 7,128, 6, 97,165, 3,240, 46,226, 49,225,130, 80, 9,161,101,175,199,160,146, 46, 67, 60, 37,138, 5,240,237,238, 56,
+ 37, 74,107, 23,188, 34,163, 88,208,233, 37,140, 90,204, 36, 9, 62,148,224, 50,154,144,161, 54, 22,155,142,149,154, 58,112, 25,
+ 6, 83,150,208, 30, 46, 50,185,146, 41,141, 72, 19, 41,156, 87, 38, 62,113, 12, 17,164,227, 88,160, 29, 92,108, 29, 18,148,210,
+136,209,201,239, 28,244, 21,251, 59,207,160, 58,154, 52, 53,201,174, 15,145, 36,129, 5,156,116, 94,254, 50,113,187, 99,107,162,
+ 31,217,211, 36,201,104,169, 95,124, 55,197,215, 65,199,200,147, 78,104, 32,201,198, 32, 78,153,134,220, 10, 77,237, 7,212, 3,
+162, 71, 54,241,112,155,238,125,245, 17, 31, 18,217,229,172,182,167,184, 15,151,124, 96, 11,236, 82,120, 91, 35, 91, 20, 26, 84,
+241, 77,133,177, 57,132,128,248,154,210, 5,188, 66,145, 73,239,178,151,234,231,197,152, 8, 33,183, 33, 57, 58,149,177,233,184,
+ 72,138,108,203,107,124,211, 64,112,227,212,181, 81,203,205,150, 41, 76,167, 42,105, 26, 23,223,165,145,237,230,112,212, 68,200,
+ 88,183, 62, 98, 26,111,201,249, 19,126, 8, 92, 92,156,243,234,107,175,243,197, 63,241, 83,156,158,158, 50,159, 47,168,170, 13,
+231,167,199,212, 85,141, 15,190, 39,140,121, 23,147,207, 92, 19,181,211,222,123, 68, 12,207, 92,189,198,108, 62,143, 19,115,171,
+ 14,240,237,245,234,204, 95, 66, 8,172,215, 43, 30,220,127,192,197,106,213,194,199,113, 37, 40, 45,100, 94, 57,207,141, 27, 87,
+121,254,197,231,105,156,167, 40, 44, 34,102,104, 14,162, 73, 64,228,227,216,156, 16, 60,117,237,105, 26,135,201, 50, 92, 75,118,
+179,109,179, 19,130,146,183, 92, 31,147, 66,246,206,161, 33,144,231, 89, 12, 97,106, 26, 26, 31, 77, 97,172,181,172, 54, 53,101,
+ 89,246,172,239,163,229,146,243, 85,201,219, 31,220, 66,180, 32,107,131,104, 60, 66, 25,148, 7,171, 56,208,104, 88, 33,122, 78,
+ 33, 74,158, 5, 22,133,229,104,145,177, 92,206, 88, 46,150, 44,151, 11, 14, 14, 15, 57, 88, 44, 89, 30, 46, 49, 50,103,110, 2,
+139,229, 12,149, 12, 33,143, 4, 59, 49, 4,215,144, 91, 37, 16,173,112,155,170,162,172, 75, 78,203, 13,231,103, 43,206,207, 79,
+ 57,189,184,224,254,131, 51, 30,156,173,184,216, 56,212,102, 20,197,156,197,242, 10, 7, 70,246,108,213,100, 68,242, 84, 53,132,
+224,112,213,138,205,166,164,116,134, 39,158,124,156, 55,126,236, 39,248,236,103, 62,199, 27,111,124,146,167,159,122,154,185, 9,
+ 52,155, 51,206, 55,247,184,127, 18,215,166, 65, 44,235,178,198,213, 37, 69, 97, 49, 54,186,241, 25, 28,117,208,200, 53,192, 19,
+140, 37, 52, 21, 86, 28,231,154,113,233, 54,201,104, 0, 0, 32, 0, 73, 68, 65, 84,213,195,103, 14,106,190,254,226,156,170,250,
+ 28,249,253,175, 64, 94,130,204, 47,193,255, 31,161,104,126,108, 24, 93,118,224,177,251,135,187,239,111,217,190,252,116,204,250,
+201,120,216,246, 14, 6, 48, 93,233, 52, 32, 52, 88, 7,234,133, 77, 66,174,235,253,222, 19,169, 91,240,176,105,101,100, 38,201,
+ 99,238,140, 91,124,123,144, 52,218, 73,211,218, 66,158,132, 78,140,125,120,135,163, 43,116,250,113,105, 73,116, 90,192,193, 51,
+216,236,132,234,226,130,198, 91,114, 51, 20, 57, 77,152,227,253,165, 55,210, 51,240,117, 66, 51,143, 83,169, 37,136,144, 73,104,
+205,118, 6,120, 58,158,105, 97, 68, 98,145, 86, 34,167,137, 11, 89,122, 0,167, 35,156, 76, 59,136,201, 29, 32, 59, 38,253,113,
+147,168,187, 15,218,110,127,204,144,189, 62,157,194,167,150,160,170,227, 64,212, 45, 54,117, 2,109,235,168,205, 26,243,209,181,
+197,209,141, 72, 34,127,107,225, 90,239, 90, 69,197, 80, 44,189, 87,174, 60,254, 20,214,175, 57,126,112, 18,125,174, 39,123,229,
+135, 21,234,135, 68, 36,143, 12,110,166,251,254,135,133,178,244,196,204,228,190,107,202, 10,223,196, 69,133,111, 28, 89,150,245,
+144,187,238,128,215,173, 49,109,140,109,116, 85,116,206, 13, 5, 95,101, 91, 74, 51,249,176,141, 17,156,247,212, 78,251,130,194,
+ 68,113, 48,134,242, 38, 33, 50, 50,198, 32,246,166,203,141,156,246,146, 0, 11, 25, 59, 27, 78,153,249, 0, 23, 23,107,190,248,
+197,207,242,137,103,158,226,254,201, 57, 71, 7, 57, 15,238,223, 99,189,169,240,193, 71,118,184, 25,136,176,155,178,238,215,118,
+182, 37,200, 29, 93, 57, 2,177, 20,153,101,211,172,251,196,194,104,230, 18,179,212,107,175, 60,120,112,204,201,233, 41,161,189,
+142,182,117,101,115,222, 51,159,205,153,207, 10, 94,124,241, 57, 14, 15,143, 56, 59, 47,153,205,102, 88,155,163, 94,201,172,193,
+ 99, 88,175, 55,228,222, 49,159, 21, 52, 65,216,212, 14, 13, 74,214, 54, 67,153, 53, 84,117,124,175,214,218,190, 48, 71, 61,121,
+108, 54,140, 17,138, 34,239, 58,144,214, 60, 39, 30, 56, 77, 93,227,154, 58, 50,222, 77,156,238,107, 23,184,121,243, 3,234,243,
+ 7,152,108, 70, 29,162, 53,110, 22, 28,153, 4,102,214, 32, 89,134,152, 12, 36,174, 91,154,160,148, 13,220,221,120,194,221, 13,
+162, 23,100,226,201,141,146, 25,101, 81, 24,242, 60, 35,207, 44,179, 34,195, 88,219, 18,232, 44,117, 19, 8, 62,230,208, 59,231,
+168, 26, 79,221,120, 54,149,167,172, 27,234, 32,120, 53,136,177,228, 89, 70,158, 31,114,101,246,113, 28,204,219, 40, 90, 12,167,
+167,231, 56, 87,113,229,233,151,120,237,211,159,224, 51,159,122,153,207,255,208,103,121,254,197, 23, 35, 98, 83,151,156, 93, 28,
+243,160,172,209,166,198, 88, 40,108,134,211,104,231,107,213,179,152, 21,248,214, 28, 71,131,167, 14, 38, 62, 95,226,216,216,140,
+166, 52, 45,243, 61, 67,196,176, 10,240,164, 11,124,250, 90,201,191,123,233, 58,174,249, 28,217,217,215, 32,175, 7, 86,252, 35,
+186,200,233,165,236, 58,121,120, 57,190,132, 64,252,200,189,194,247,106, 70,179,115,167,206,176,155, 78,125,174, 67,191,187, 11,
+136,154, 36, 91,187,147, 81, 69, 82,139, 87,233,173, 79,181,139,112, 77,140, 44,186,164,167,172,133,218,235,201, 65, 43, 72,155,
+ 80,214,225, 2, 3, 59,126, 52,185,245, 4,189,104, 39, 11, 93, 20,108,220, 9,207,175, 89, 62,155,193,123,247,225, 35,133,153,
+ 76,182,187, 50, 62, 56,141,196,195, 35,180,228,179, 97, 95, 24,191, 54, 19,165, 96,200,150,239,253,237,211,224, 4,145,173, 79,
+ 70,250,170,100, 80,177, 24,171, 72,240,184,144,234,175,119,120,122,239, 9,234,216,197,152, 28, 29,175,137, 49, 75, 15,221,246,
+147,114, 11,159, 75,162, 40,145,193, 84, 38, 97, 66,141,100, 76, 50,153,188, 69,199,156,131, 81,227,161, 93, 60,143,233,191, 70,
+135,213, 45,105,252,248, 64, 70, 20,104, 54,136, 54,189,253,237,136,191,182, 3, 6,219, 41,241,122,104, 99, 62,181, 71,213,113,
+102,210,229, 62, 23,189, 95,122,119,205, 92, 93,183, 46,123,102, 47,147, 60, 38,185, 5, 66,136,108,106, 90,231,176,177,142, 45,
+ 13,209,145, 45,251,101,146,207,202,202,112,175, 69,189,187, 69,178,184, 23,158, 30, 75,210,202,149,140, 49,209,212,165,105,198,
+252,130,189,135,138,140, 50,170,123,232, 61,181,209,157,236,225,187,235,242,252,115,159, 0, 17,138, 34, 99,189,217,176, 46, 55,
+237,126,185, 53,221, 17, 65,113,209,207,193, 68, 43, 97, 99,226, 26,110, 49,159,115,112,176,228,232, 96, 73, 89,215,145, 3,208,
+ 18,184, 4,168,189,167,110, 28,119,110,223,226,228,193,131,254,158, 13, 33, 90,174, 90,107, 49,198, 98, 68,184,114,245, 10, 87,
+175, 61,134,115, 81, 71,190, 92, 30,208,184, 24,202,210,212, 13,139,197, 28,150,115,234,114, 67, 93,215,216, 44, 99,158,103,120,
+ 19,157,215, 68, 44, 33,184, 72, 18,205,114,234,178,110,209, 67,137, 14,118, 10, 78,163,126, 61,104,192,133,136, 58,168,119, 20,
+179, 5,149,131,139,243, 51, 92, 93,162, 10,133, 49, 24,155,241,230, 91,239,114,122,190,226,133,215, 62,195,147,207, 60,203,225,
+225, 33, 85, 48,220, 57,190,224,236,244,152,245,249, 41,229,197, 57,161, 60, 39,215, 53,121,110,200,242, 57, 25,134,153,181, 29,
+195, 37, 62, 71, 65,169, 84, 89,215, 74,168, 90,149,132,214,189,215,130,246,177,208, 3,121, 84, 68, 48, 38,199, 74, 65,190,152,
+ 83,180,103,198,150,185,233,163,102,142, 11, 52,193,240,224,254, 3, 62,253,252, 33, 63,249, 11,127,153,167, 95,249, 60,207, 61,
+126,200,227, 87, 50, 92,213, 80,111,206,184,187, 22, 92,237,240,170, 88, 13, 72,158,181,223, 27, 9,141,133, 21,130,196,102, 41,
+120, 23,201,203,198,224, 90,206,147, 53, 74,158, 25,236, 60, 35,132, 5,193, 53,168,243, 88, 83,179,214,140,231, 49,148,143,175,
+249,102,253, 44,254,205, 13,182,250, 93,200, 92, 91,210, 30, 61, 63,125, 63, 89,254, 97,210, 51,125,100,232,252, 17,218,131,239,
+126,150,223,106, 10,164, 35, 80,235,152,209,215,147,212, 90,123,196,182, 26, 54,162,100, 74, 31,229, 57, 24,200,116,178, 55, 19,
+247, 98,157,143,186,134,126,154,117,221,174,186, 37,208,133,132,223, 43, 19,106, 85,231, 71,111, 19,230,121,231, 30,102,218, 4,
+168, 72, 26,177,136,109,200,215,239, 80,190,155,241, 94,110,169,108,103,101,187,109, 40, 40, 50,141, 52, 77, 34, 67, 71,250,225,
+ 72, 6,112, 98,122,155,212, 65,134,164, 61,130, 49,133,177, 73, 51,176, 69, 16, 27,225, 92, 48,100, 26, 98, 97,159, 22,232, 86,
+202,151, 19, 57, 8,151, 90,158, 38, 30,231,241,128, 51,100,164,121,214,233,252, 76,111, 25, 41,147, 84,179, 41, 75, 62, 36, 64,
+187,140,168,125, 50, 52, 50,178, 99, 82, 86,250,207,196,180, 44,243,193,146, 93, 39, 65, 33,169, 28, 15, 78, 79, 79,226, 68,107,
+ 45, 35,227,135,196,206,108,215,230,106,106,206,243,168,243, 69,191,191, 79,117, 0,186,103,252,223,201, 87,143,144,250, 67, 39,
+154,182,137, 10,137,153,207, 86,172,235,196, 48,137,135,100,180,143,236,133, 69, 49,162, 19,107,223,244,231,142, 35, 98, 7, 94,
+ 4,187,119,161, 83, 96, 95, 90,170,161,110,167, 74,165,189, 86,231, 36,119,245,234,149, 72,162,242,142,205,186,196,138, 37, 47,
+ 50,168,219, 56,224,150,168,216,173, 34,102,198,162,146, 81,150, 27,230,135, 75,150, 7, 7,241,176,175,155,190, 41,233,126,237,
+193,114,193,189,123,247,185,117,251, 14,101, 89, 70,198, 59,173,145, 84,187,198, 42,242,156,188,200,121,226,233, 39,153, 45,151,
+173,235, 91,124,173,155,170,140,203, 69, 99,169, 27,215, 6, 29, 57,200, 51, 92,237,176, 81,140, 77,211, 52,204,103, 57, 23,235,
+184, 34,200, 51, 67, 99,162,105,117,132,217, 5,215,212, 88,107,169,157,195,213, 53, 69,203,118, 15, 62,106,208, 81, 75, 89, 86,
+168,171,200,139, 89,159,243,254,220, 11, 47,243,211,175,189,202,147, 55, 30, 67,240,248,242, 2, 85,229,245,103,175, 82,133,231,
+ 56, 93,109, 56, 95,149,156, 92,148,220,190,243,128,227,143,110, 33,231, 31,177,200, 2,102,182,160, 23, 19, 75,148,202, 9, 96,
+173,236,200,126,212,221, 9,136,108,237,159,182, 21, 41, 19,254,205,101, 5,189,246,194,189,187,119,248,133,207, 95,231,215,254,
+193,175,179,120,233,139,220,253,240, 54,171,227, 15,185,123,175,193, 59, 64,163,170, 32,218,149,198, 49, 45,248,104, 52,214,113,
+ 96,130, 42, 62,120,170,202, 97, 92, 5, 25,120,111,193, 57, 50,227, 41,178, 12,157,229,212, 44, 40,203, 13, 62, 84, 81,130, 8,
+209, 60,172,129, 87, 50, 71,245, 84,201, 59,238, 21,228,237, 6,219,252, 62,154, 73, 82,216,245,145, 43,100, 58,248, 92,250, 13,
+ 58, 94,223,237, 16, 0,252,225, 49,223,247,140,238, 89, 55, 95, 27,141,172,119,159,240,249, 72,131, 78, 52,226,240, 94, 6,219,
+ 78,237, 44, 84,123,152,182,133,217,219,160,142,120,184, 69,135, 36, 71,151,211, 77, 31,159,106, 38, 80,113, 31, 6,147, 28, 38,
+190, 39,102, 68,114, 74, 80, 75,109,133,204,232,160,193,150, 2, 69,184,227,226,254,222,116, 83,124,202,140,110, 95,191,154,206,
+146,180, 43,206,237, 42,161,109, 94, 84, 6,105,174,135,222,100,102,204,170,158, 22, 12,122,147, 26,147, 84,156,104, 39, 59,196,
+165,142,128, 29, 29, 14,117, 73,164, 88,126, 95, 89,146,225, 26, 43, 25,118, 54,195,248,178, 53,187, 24, 94,139,237,175,219,176,
+167, 13, 58,158, 36,189, 14, 14,223,129, 93,129, 6, 45,123,160,213,208,167,221,191,166,159,151,198, 24,202,108,167, 16,109, 76,
+181, 98,178, 10,137, 83,108,226, 56,149,152, 27,117,103, 75,208,201, 3,247, 93, 63, 36, 41, 3,124,119,158,249,120,207, 49,214,
+221,107,203,188,255, 56,187,173, 94, 74,167, 91, 67,250,232,124,144,201,129,178, 47, 17, 42,104,232,155, 5,239,125,203,116,219,
+131,250,104,204, 9,151,212, 67, 86,210,117,144, 76, 2, 95, 24, 51, 46,250, 32,151, 29,173, 85,255,236,199,123,125, 62, 43,240,
+141,163,218,148,136,208,234,175,195,144,208,101, 4, 99, 13, 89,187,239, 21, 19,247,235,243,217,140,199,174, 61,134, 6,184,184,
+ 88,225, 92,116,149,147, 54,110, 52, 19,101,181, 90,241,254,251, 55,227,179,111, 12,206, 7,124,112,228,237,174, 29,141, 6, 45,
+ 79, 61,246, 56,207, 62,251, 52, 1, 67,221,122,177, 15,113,174,142, 89,145,177,169, 26, 54,155, 13,185, 53,204,138,130,178,142,
+193, 46, 85,221,144,103, 6,231,124,223,184,217, 44, 66,218,109,133,138,251,127, 27,173, 17,157,243,248, 0,117,237, 90,226,164,
+ 80,213, 62,238,174,235, 42,202,109,157,195, 57,207,167, 94,126,154,207,254,192, 15,177,185, 56,227,238,135,111,115,118,177,198,
+181, 12,255,194,194,193, 44,103, 38,134,163,194,242,226,179, 75,126,224,133,215,184,179,126,149, 55,111,222,229,253,183,223,194,
+156,220,100,145,131, 41, 22,116,134, 72, 50, 76, 3,147, 22,125,186,168, 28, 12,174,182, 43,204,248, 4, 27,158,137,177,155,224,
+148,224,185,169, 28,199,119,239,242,231,190,240, 20,255,205, 63,250,117,138, 23,254, 3,222,251,240, 14,199,199,247,161, 90,227,
+ 84,168,106,135, 5,230,139, 2,159, 29,224,106,143,247, 53,210,134,231,160, 30, 85, 71,208, 64,227,219,154,163, 22,113, 13, 94,
+163,134,222, 24,137,198, 69,153,224, 75, 67,112, 62,146,158,219,201,203, 0,165,194,204, 11,175, 91, 71,243, 12,220,108, 94, 67,
+222, 45, 49,238, 45,176, 11,180,139,173,213, 71, 57, 49, 30, 21, 3,215,193,206,249, 17,127,210,195,179,225,190, 79, 37, 63,249,
+ 81,153,170, 38, 89,231,233,158,181,147,173, 24,196, 10, 70, 2, 38,196,120, 82,207, 16,216,210, 77,187,233, 28, 59, 24,132,180,
+211,177,166, 89,216,221,222, 62, 74,209, 52,157,211,146,124,116,211, 77,138, 29, 84, 36,210,170,224, 52, 26, 63,136,193,152, 84,
+ 10,102,176, 38,106, 54, 59,183, 47, 63, 74,198, 52, 45,228,217, 89,128,118,218,115,217,145, 31, 52,158, 8,101,207,182,101, 90,
+224, 37, 97, 33,131, 39,120,139,177, 96, 91,221,252,206,162,100,226,181, 10,173,129,143, 38,206,107,236, 33,241, 5,133,204, 66,
+ 33,194,202,233, 32, 5, 76,100, 99,178, 53,215, 38,238,105, 12, 81,170,125, 17,210, 14, 58,159,134,225, 36,239, 79,146,245,140,
+ 6,172,205,121, 98, 30, 15,200,210,135,248,224, 50,214, 51,111,255, 20, 18,205,254,176,231, 79,201, 90,170, 26,201, 78,179, 5,
+153, 40,117,211,140, 98, 81,199, 88,203, 37,197, 94, 39,240,187, 60, 90, 91,160, 83, 62,132,126,188,103, 80, 36,245,188,222,189,
+199, 86,153,114, 41,228, 33,144, 94,226, 61, 32,178,151, 80, 57,152,223,200, 22, 81,115,219,183, 93, 39,129, 47,187, 26, 10,157,
+144, 33,199,200,144,107, 42, 54,101, 52, 7,153,205,230,248, 32, 4, 7,214,102, 61, 65,112, 62,159,179, 92, 30,112,113,118,218,
+191,230,197, 98,193,108, 54, 99, 93, 86,160,129,160, 30, 43,134, 44, 47, 40,171,154,186,174,120,112,114,198,102, 83, 97,219, 88,
+217, 44,139,220,109, 52,224,125,220,123, 59, 31,184,118,237, 42, 89,150, 83, 85, 13,206, 7,178,118,207,172,117,131,247,161,245,
+153, 23,102, 69, 17,167,205,186, 70, 53, 80,215,190,111, 40,209,104,106,101,188, 68,111,122,107,105, 92,252,254, 88,136, 3, 85,
+ 93,163,222,199, 9, 93, 67, 92,171,132,120,142,172,203, 21,121, 22,189, 38,107,239, 57,156,101, 20, 70,248,198,111,125,157,213,
+166,108, 3, 96,180, 53, 8,138,197,179,156, 23,228,197, 12, 45, 27,204, 89,201, 50, 23,158, 57, 40,120,246,211,215,185,253,210,
+147,124,243,189,215,248,224, 91,223, 36, 59,189,201,124,145, 65,190,232,131,177,130,104,203,205,184,164,192,164,144,154,140,135,
+215,189,164,110,198, 1, 72,210,230, 72, 28,159, 93, 16,154,154, 63,255,197,207,241, 55,255,235,191,130, 60,243,227,188,251,254,
+109,238,220,125, 64, 88,159, 64, 30,155,182,235,143, 29,114,112,120,196,108,113, 64, 48, 57,117,227, 9, 77,133,243,129,218,213,
+172,214, 14,119,113, 2,254, 60,198,217, 90, 65, 37, 71,213,226,170, 6,139,195,153,184,186, 84, 99,162, 23,128,116,150,205, 49,
+252,198, 24,143,181, 6, 39, 25, 5,240,169, 66,113,207, 43,183,252,103,152,189, 31, 48,254, 93,200,230,104,199,154,214,203, 80,
+136,225, 48,146,135, 76,219,210, 27,176,201,132,220,242,240,243,228,187,161,188, 63,122,201, 31,191,183,172,219,165,135,238, 70,
+ 33,209,180, 66,212,144, 7,193, 91,162, 60,163,221,235,164, 46,106,154, 90,171, 38, 5,157, 62,244,163, 53,165,233,165,102, 58,
+100,167, 51,200,230,122,216, 30, 51, 24,170, 36, 81,165, 93,151, 20, 37,108, 33,154, 68,208,217,220,118, 71,189,137,128, 85,107,
+146,208, 55, 14,137, 81,201,248, 74,183, 77, 75, 18,189, 58, 28,144, 33,165,131, 49,177, 14, 25, 67,194, 9, 19,173,203,250, 14,
+248, 72,195, 79, 14,101,217, 30,193, 35,106,145, 64,170,178,171, 67, 76,183,246,226,105, 54,107,156, 68,137, 85,208,129, 8, 21,
+100,242,100,142,118,255,154, 68,169, 74,226,116,150,210,161,135,155,124,186,231, 31, 49, 60,219, 6,108,158,103,209,215,188,113,
+212, 85,104, 37,134, 15,129,161,164,131,225, 52, 1,250,187, 20, 51, 15,118,206,141, 39,174,208,172,207,168,106,191, 27, 33,215,
+ 71,124,104,116, 7,173,238, 81,163, 24,245,123,107,166,247,146,211, 36,133,179, 7, 9,224,101,191,202,236,212,150,239,163, 9,
+134, 81,214,192, 4, 91,220,243,250,182, 15,170,135,145,235,130,194,217,249, 57,206,199,124,114,107, 51, 66,208, 40,237,114, 17,
+ 85,176, 38, 70,239, 44, 15, 22,228,197,140,208, 68,183,190,195, 43,135,228, 69, 17,119,170, 33, 54,136,222, 59,124, 85,210, 13,
+ 26,213,102,195, 98, 86,112,255,193, 49,171,139, 21,153, 49, 72,102, 89,173,227,190,219, 7,101,150,231, 49, 93,173,174, 35,185,
+206, 73,107,195, 26,240, 33, 18,217, 26, 23,152, 23, 25,179, 89,198,106, 85, 18, 90,163,165, 24,182, 99, 34,235,221, 10,153, 26,
+130,181, 24, 12, 70, 34, 81,206,183, 76,251,166,118,120,231,219,207, 33,196, 70, 36, 68,244,175,170, 34, 52, 92, 20, 57,174,253,
+ 30, 49,134,155,119, 78,113,222, 71,131, 24, 19, 45,153,171,198, 19, 66, 96,150, 91, 26, 53, 4, 23, 9,122, 54,179,148, 38,163,
+ 42, 13, 75,119,193,203, 71, 51, 94,248,193,103,249,214,179, 79,240,123,223,124,151,227,247,190,133,189,184,143,181,113,120, 17,
+ 99, 80,107,233, 34,175, 90,227,226, 61, 99, 99,210, 22,202,229,133,125, 56,145, 59,139,110,225,226,252,156, 87,159,189,202, 79,
+127,233,103,248,226, 79,253, 56, 60,241, 18,183,239, 28,227,154,138, 43,135, 11,102,215, 15, 41,242, 57,139,249,140,249,124,206,
+ 44, 3,147,103,108,156,165, 60, 63, 37,100, 14, 31,160,209, 72, 80,244,107,208, 96, 17, 9, 44,114,131,147,156,139,141,163,160,
+ 34, 91,228,248,122,198, 34,156,163,102, 70, 89, 65,168,114, 60,177,193,138,147,190,193,104, 68,152, 29, 80,120,195,231,102, 14,
+ 94,153,113,139, 63, 66,113, 51, 96,221,123, 96,151, 12,254, 30,178,103,114, 79, 31,116,217,219,193,143, 6, 59,221, 67,192,249,
+174,246,227,223,227,180,190,139, 40, 23, 18,227, 25,116,232, 34, 73, 72,115,170, 17, 70,174, 37,214,168,142,189, 27,186,130, 74,
+ 24, 65, 18,166,133,120, 67, 91,145,179, 54,105,205, 37, 41, 32, 6, 29, 89,198,202,100,123, 26,229, 80,161, 93,239, 13,150,162,
+161,111, 2,232, 13,110, 98,238,121, 11, 12,107,232,119,130,166,173, 96, 94, 83,248,154,246,119, 71,146, 28, 38, 54, 13,125, 58,
+ 93,152, 0,200, 33, 73, 77,151, 52,150,146,100, 26, 27,151,222, 97, 82,139,191,208, 79,152,196, 9, 28,210, 23,157,233,217, 57,
+252,166,137, 22, 93, 7, 28, 37,118,254,233, 80, 58,216, 84, 26,182,237,104, 66,232, 18,232,100,196, 51,232,243,200, 69, 38, 26,
+122, 25,105,245, 73,146,236,164,109,248, 30,212,142,220, 72,100, 24, 27,193,251, 49, 86, 96, 8,212,237, 84,101,146,184, 89, 73,
+211,244,100,112,147,235, 26,180,153, 9, 84,173,247,117,102,205, 4,202,210,143, 65, 34,145, 71,130,224,134,161, 70,199, 42,129,
+148, 29,254, 8,191,180,219,103, 27, 99, 46,125,100, 83,252,228, 81,173, 41, 83,251,214,125, 59,248,206,211,191,191, 31,247,189,
+119, 77, 61, 7,233, 77, 95,108,146, 17,207, 40,222,117,155, 88,239,124,224,254,189,187,113, 66,109, 9,167,214,218, 86, 39, 31,
+153,239, 33, 68,121,157, 54, 13,121,102, 57, 95,199, 0,150,171, 71,209,157,204,133, 26,107,108,180, 15, 13,109,122,163,122,206,
+207,207,216,108,214,248, 16,216,148, 37,155,170, 38, 51, 81, 57,209, 1, 12,198, 10,139,121, 76, 79,171,155,134,229,108, 65,150,
+ 65, 89,151,108,214, 43,172, 93, 98,196, 80,180,166, 49,117, 21,155,129, 89,145, 35, 54,107,225,249, 8,237,102,214,162, 33,234,
+114,124,104,176, 6,140,181,148, 85,213, 59,205,169, 42, 46,132,158, 99, 99,140,233,215, 32,121, 62,139,198, 87, 10,179,153,197,
+102,134,166, 37,244, 69,165,142,193,181,123,229,217,172, 96,177, 88, 80, 20, 69,148, 73, 18,139,160, 49, 22,107, 5,178,140,219,
+ 27, 33, 28,127,196, 39,175, 22,188,246,211,159,227,235,111, 61,207,237,183,190, 77,189,185,160, 42,215,184,186,196,215, 37,132,
+ 6, 9, 21, 86, 90, 66,167,141, 82,190, 40, 89,146,173, 70, 93, 90, 8,249, 97,228, 56,211,202,120, 31, 28,159,243, 35, 47,206,
+249,197,191,244,103,121,238, 7,126, 18, 51,127,140,147,211, 13, 51,217,112,112,112,141,197,124,206,226,224, 0,212, 98, 66,201,
+186, 42,217,156,159, 99,164, 98,227, 4,231,149,218, 71,101,192,170,114,212, 23,107, 8, 21,166,117,203, 51, 86,169,157,254,255,
+188,189,251,175,100, 89,150, 30,244,173,181,247, 57, 17,113, 31,153, 89, 89,153, 89, 85,221,211, 61,212,244, 12, 30, 49,204,120,
+ 60,200,136, 97,198,104, 64, 54,143, 31, 48,146,133, 4, 66, 22, 18, 6,131, 44, 16, 8,176, 24,108, 12,255, 25,191, 34, 30, 50,
+146, 49,102,102,186,167,219, 93, 93,239,172,204,188, 55,239,189, 17,113,206,217,123,175,197, 15,107,239,125,246,137,136,155,153,
+213,221,144,163,233,238,170,155,247,222,136, 19,231,236,181,214,183,190, 7, 60, 2,184,183,213,205,228, 18,196,247,208, 33,192,
+ 81,130,119, 29, 32, 46, 55,255,206,136,221,162,128, 70, 56, 2, 38,231,176, 33,198,111,175, 70,132,143, 55,120, 30,127, 23,155,
+207, 71, 80,122, 14,184, 77, 51, 97, 47,155, 28,212,179,140, 22, 9,159,239, 70,148,187,255, 95,252,220, 37,250,231,153,214, 23,
+103, 92, 33,202,149,100,180, 82,244, 84,115,134, 55, 3, 78,103, 18, 89,190, 22, 90,146, 40, 69,235,142, 12,142,209,169,128,147,
+ 98,148,198,157, 46, 91,213,165, 60,109, 23,205,180,102,141, 50,138, 33,141, 69,142, 53,178,184, 28,142, 64,214, 32, 84, 36,161,
+241,105, 47, 7,142,165,164,229,195, 73,155, 80, 81,157,125,193,137,180, 49, 43,209,198, 61, 79,151, 16,237, 65,152, 9, 26, 66,
+ 96, 65, 4,242,108,127,100,187,218, 82,207, 10,226, 65,237,212,212, 34, 23, 68, 39, 19,198,150,159,149, 86,238,138, 52,112, 39,
+ 81,201,135,159,229,109,203,192, 24, 90,172, 16,218,226, 94,130, 84,150, 93,231,156,161, 61,107,255,180, 66,172,135,187,161,182,
+ 1, 80, 17, 32, 70,192, 59,196,100,217,216,212, 28, 10, 2, 69,100,143,239, 94,158, 91, 44,231, 36,182,239,108,145,139,134,145,
+ 94,139,130, 70,124,253,205, 75, 16,113, 45,232,191, 24,243,100, 9,237,191,109, 23, 70, 71,233, 81,223,126, 58, 23,145,119,121,
+ 57, 85,255,123, 42,179,253,126, 32,126,222,149,235, 27,254,234,172,196, 56, 49,113, 87, 82,221,140,158,212,123,184,105, 98, 78,
+153,114,148,207,223,119, 29,190,248,226,115,236,119, 91, 80, 38,113,121,103,187,204, 73,131, 21, 74,207,216, 15,123, 60,127,254,
+ 28,227, 96,166, 49, 15, 30, 60,192,217,249, 57,134,201, 96,113, 81,115, 79,243,222, 97, 63, 4,140,227,128,111, 94,188, 64,152,
+ 38,236,135, 61, 82, 52,185,211, 24, 19, 82, 50,115, 32,102,182,233,151, 9, 97,154, 16,166,128, 1, 0,179,195,126,154,240,205,
+ 55,223,224,189, 39, 31,218,217, 17, 3, 92,215, 89,209,244, 90,101,184,157,119,128, 55, 67,153, 16, 2,198,105,194, 48, 76,216,
+237,118,136,211,104, 25,228,201,248, 55,222, 57,132, 24,161,146, 50,171,156,243,121, 25,209,117, 30,196, 61,188,243,249,236,180,
+ 85,198, 52, 14, 24,247,123,104,140, 96,102,176,239,224,185, 51, 75, 97,102, 35,147, 21,158, 65,178, 68,202,152,128, 97,152,178,
+ 65, 17,227,171, 45,176, 30,191,192, 95,184,244,248,248,247,126, 19, 99, 16, 12, 33, 98,187, 27,177,223,237,176,219, 15,216,237,
+118,216,239,119, 24,247, 59, 76,227, 14, 50, 13,160, 52,129, 53, 86,196,145,170, 92, 81, 27,210, 44,101,114,171, 46, 8,144,200,
+ 28,146, 40,138,223,250,254,251,248, 43,127,244, 47, 99,117,241, 12,107,157,128,158,240, 58,246,240, 41,226, 12, 9, 94, 35,110,
+111, 94,227,229,213, 22,195,205,115,140, 49, 98, 63, 36,112, 28,224,157, 89,212, 38,177,102, 40, 70,243,216,135,235, 32,193,214,
+ 23,147, 50,210, 56, 97,237, 20, 19, 28,194, 4,120, 68, 12,204,240,222,163,239, 59, 76,195, 8, 68, 35, 20, 11, 24, 26, 83, 38,
+ 35,185,172,206, 2, 6, 37,156, 37,194,111,111, 70,252,195,143,215,184, 9,127, 17,171,175,255, 15,128, 94,131,120,211,160,164,
+205,228,222, 10,128,222,129,179,126,255, 63,233,207,181,161,255, 37,112,226, 78,252,131,201, 30,225,178,118,156,154,238,165, 20,
+ 38,206, 83,176,138, 34,148,212, 53,165,250, 16, 67, 19, 84,140,160, 85,242,188,147, 46, 56,198,117,194, 46,187,192, 18,133,153,
+ 48,107,210, 5,197, 82,150,102,208,183,236,251,169,209, 61,107, 83,140,168,241,104,111, 38, 15,105,118,168,140,217, 63, 94,129,
+133, 15, 58, 85, 20, 66,106, 48, 87, 33,155, 73, 27,160,114,140, 76, 55, 25,232, 86, 96,141, 71,192, 64,215, 97,133, 9, 49,160,
+122,199, 31, 66,199,218, 92,139,123, 21,162, 53,219,151, 22, 43,138,182, 40,187,220,248,180, 44, 86,173,190,253,118, 68,199, 60,
+193, 23, 25, 32, 45,254,238,242, 54,148, 5,251, 19,139, 41,142,233, 96,250,207, 79, 67,138, 19,178, 18,105, 97,227,154,189, 62,
+208, 57,135, 11, 78,248, 90,210, 2, 33, 64,229, 54, 28,106,160,237, 61,123,239,114,236,238,183, 53,129, 60,177,184,111,163, 75,
+223, 73,191,218, 18,203, 26,118,159,126,139,134, 91, 79, 51,228,244, 0,176, 89,228,174,224,126, 22,252,161,217,208,187, 31, 26,
+ 51,148,142,147, 19,126, 38,140,230,136,216, 73,223,128,205,202,178, 25, 89,175, 55,248,226,243, 47,113,125,245, 10,220,159, 35,
+132, 9,155,179,115, 51,116, 33, 66, 82,129,119,192,221,237, 29,118,251, 1, 46,155,184, 60,124,248,192,146,203, 82,194,106,189,
+201, 50, 53,131,181, 87,125,143,221,118,135, 24,146,165,120, 37,129, 35,158, 89, 34, 10,132, 20,225,179,118,127,203,132,155,215,
+ 55, 56,127,112,137,224, 28, 56, 90,136,212,203,171,215, 96,215,101, 85, 6,208, 59, 2, 59,143, 52,216,158,127, 10, 33, 79,237,
+ 30,206,121,236,247, 99,110,196, 8, 41, 10,118,195, 4,130, 53, 26, 33,204,166, 51,101, 48,208,100, 68, 57,115,188, 99,244,125,
+ 15,151,245,234,165,112, 80,244, 86, 28, 67, 2, 83,194,138, 8,226, 44,116,134, 40, 26, 25,143, 34, 28, 60,130, 10, 58, 15, 36,
+ 33,132, 24,176,234, 60, 86,189, 7,136,112, 27, 20, 46, 4, 56, 14,232,153,177,233, 24,143, 30,121,232,195, 7, 80,122, 4,229,
+ 14, 81, 8,251,144,112,123,183,195,118,183,195,221,221, 22,251,237, 22, 36,131, 5,221,192, 35,164,100, 43, 83, 1, 68, 2,188,
+ 38,116,157, 55, 13, 56,179, 53,212,206, 50, 50,136, 29, 62, 56,239,241,235,223,255, 14, 70,239,113,119,243, 26,159,127,241, 28,
+239,223, 94,227,209,147, 15, 17,250,135,120,126,189,195,112,247, 37,246,227, 14,219, 81,224, 72,225,124,143, 64, 14,202, 27,139,
+120, 29,115, 66,161,154,227,157,192, 35,141, 19, 58, 74,208,174,183,212, 59, 50,133, 2, 11,224, 88,145,136,177,226,132,216,217,
+107,233, 29, 16,251, 21, 36, 25,105,206,152,204, 54,169,151,221,191,138, 98,167,138,135, 0,254,226,131, 1,255,240, 7,143, 48,
+ 76,191,131,254,234,127,135, 82, 0,208,131,160, 7, 43, 80, 90,216, 30,191, 49, 74,245, 20, 57,232, 91,135,197,252,146,255,208,
+125,240,187,228, 73, 60, 27,132,180, 5,161,184,179,132,106, 69, 57,123,129, 59, 16,136,108, 50,163, 4, 75, 45, 91,116,246, 57,
+156,161, 33, 25,112, 51, 89, 8,180, 9,136,209, 42,147,163, 42,191,209, 58,141,150,233, 24,208, 50,212,231, 46, 83,176, 52, 68,
+161, 35,146,103, 65, 4,232,128,245,169,117, 95, 79,243, 24, 75,109,124,233,124,192,107, 51, 21,181, 78,115,212, 76,236, 69, 17,
+ 0, 9,115,244, 98,109,110, 90,131, 17, 58, 65,176, 59,133,225,232,114,186,207,191,171, 77, 21,110,189,152,149,168, 49, 51,161,
+163,233,175, 22,147,252,154,180, 97, 67,183,166,169,197,101,175, 32, 35,157,115,232, 8, 24, 99, 92,238,236, 50, 15,128, 65,153,
+ 77,143,172,169, 38, 36,137, 70, 88,242, 29, 72, 38,252,232,106, 0,120, 14,219,153, 35,103, 15, 66, 93,107,120, 76,195,124, 63,
+129,136,188,149,183,118,104,208,255,173,178,140,155, 8, 88,210,166,193,250, 22, 9, 78,149,216,243, 22, 83, 10,106,209, 18, 28,
+240, 23, 78,245,224, 75,154, 38,221,135, 60,180,190, 2,218,230, 90,211, 73,184,190, 56,185,189,233,100,155,189, 30,230,206,109,
+213,247,120,254,226, 37, 94, 61,255, 26,223,253,193, 63,135,237,205, 43,156, 95, 92, 54, 77,157, 98, 24, 6,108,239,238,224,156,
+ 51, 50,156,119, 56, 63, 59,207,154,244,166,241,207, 5,147,137,112,119,119,135, 16,108, 82,142, 49, 34,165,144, 13, 79,242, 51,
+ 79,132, 32, 2,202, 54,178,219,237, 93,142, 83, 78,117,181, 23, 5,184,185,219,130, 32,112,157,203, 19,190, 65,241, 83,136,112,
+206,166,212,221,126, 4, 97, 52,146, 39, 1, 41, 69,140,211,104,133, 6, 84,221,237, 98, 74,245, 12, 16, 49,180,160,239,123,136,
+ 40, 28,155,188,111, 28, 39,132, 56,101,255,120, 70, 8,161, 94,247, 36, 70,254, 92, 57,111,159, 67, 45, 16,150, 95,174, 48, 38,
+190, 65,249,206, 52,219, 49, 2, 36,112, 25,145, 16, 16,162, 50,166,104,200,134, 74,130,103,130,119, 17, 43,199,232, 89,113,121,
+ 73,192,195, 75, 16,191,135, 0, 15, 77, 9,189,183,157,253,102,221, 97,179, 89, 35, 81,111,191, 43, 69, 72, 78,121,243,157,179,
+ 92,116, 49,203,221,179,222,131,186, 13,190,120,254, 26,244,250, 5, 84,214,240, 87, 35,158, 92,174,240,248,102,135,201,157, 97,
+156,162,113,152,156,135,119,230, 71,207,136,232, 28, 67,186, 21, 36,121,196, 24,144, 72, 0,117,198,118, 15, 17,172, 9,202,132,
+105, 26, 64, 18,225,123, 15, 37,135,148, 34, 52, 41, 24,201,162, 24,242, 58,168,115, 12, 73,118,255,123, 7, 4, 50,247, 57, 74,
+ 9,112, 10, 74, 10,166, 0,113, 14, 67, 98, 60, 35,193, 95,120, 52,224,255,250,254, 51,164,253,111,100, 13,123, 50,164, 85,231,
+129,177, 70,193,194,220,241,222,120,194,220,159,133,244, 78,208,185,190,107,117,254,182, 16, 60,157, 32,202,113, 49, 46, 88, 46,
+ 29,192, 90,124,212,181, 66,198, 32, 11,174,168, 68,169, 70,249,144, 26,200, 26,121,143,164,217, 40, 70,178,166, 84, 14,120,217,
+229,144,136,152,139,107,209,228,170,226, 64,110,101,133,159, 23,108,251,124, 88, 75, 3,201, 19,213,149, 65,201,114,167,131, 96,
+174, 38, 27, 14, 76,203,159,169,121,215,207,249,119,138,158,216,185,150, 46, 15, 75, 57, 30, 96, 89,192, 99,221, 85,223, 67, 97,
+103,157, 93,197,112,159,229,169,214, 38, 11,170,144,254, 28, 23,157, 96,218,237, 17, 50, 58, 81, 14, 65,201,172,251,217,208,100,
+126,141,220,144,247,244, 64,134,199,139, 24,214, 38,200,163, 41,178,142, 24,207, 46,122,132,113,192,151,219, 17, 82,180,251,217,
+ 33, 48, 97,214,203, 39, 85,136, 70, 80,183,193,227, 71,231, 24,238,174, 48, 69,219, 61,158,214,150, 31,199,165,138,200,155,137,
+118,239,186,187, 90,250, 89,190,251,184, 95,212, 1,117,239, 63,123, 39,188,235,159,178, 79,175, 40,208, 97, 10, 42, 45,234,237,
+ 98,199,125,127,127,162,173,154,191,161, 24,234, 91,176, 57, 61, 98,198,159, 28, 63,202,115, 87,178, 2,244,132,241,101,227, 39,
+ 79, 48,167,181,171, 87,119,248,228,147,159,226, 55,127,231, 95,196,215, 95,126,138,247,222, 11,232,250, 30,211, 52,130,153,112,
+115,187,197, 20, 70,172, 87,107,220,109,239,240,224,193, 5, 86,235, 21,136, 24, 41, 69,196, 48, 89, 62, 0,153,243,220,221,246,
+ 14, 55,183, 55, 8, 33, 96,191, 27, 16, 67, 68, 18,169,103, 69, 37,149, 74, 66,231, 44, 24,106,154, 38,196, 16,225,122,147, 88,
+198, 12,119, 15,227,136, 48,141, 22, 75,154,108,239,174,176, 34, 12, 50, 3,159, 24, 83,157,194,157,179,224,152,148,131,112,166,
+ 16,155, 91,201,164,121,134,188,121,172,215, 61,144, 11, 81,140, 9,251,219, 59,132,152, 76, 21, 66, 17,222, 27, 79,192,123,103,
+ 8,150, 51,185,156,180,220, 35, 54, 2,157,102,210, 95, 74,166,145, 47, 73,104, 2,203,117,231,108, 92,229,152,160,153,212,219,
+117, 30,130,206, 8,129, 80,132, 40, 57, 72, 39,229,162, 24,234,253,123,183, 87, 56, 77, 24, 29, 97,203, 25,117, 99,130,228,108,
+130,205,170, 3, 73,143,100, 33, 25, 88,109, 58,120,223, 99, 31, 70,172, 55, 14,226, 31, 99, 98, 64,157,199,157,174, 17,111, 18,
+188,223,161, 95,245, 88,121, 7,245, 14, 33, 0, 33, 5,144, 10,122, 47, 32, 23, 33, 89, 99,223, 57,103, 90,127,137, 70, 31,102,
+198, 16, 21,154, 18,214,153,160, 62,165,104,182,200,106, 70, 52,174,216, 11,139, 98, 74, 33, 55, 31,153, 48,202,150,152, 39,108,
+141, 34,169,192,121, 27, 40,162, 0,187,160,248, 72, 34,174, 30, 71,124,242,157,239,131,127,122, 13,146,207, 12,134,175, 20,155,
+ 67,247, 79,109,200,216,167, 33,121,125,107,133,253,255,121, 82,191,143, 40,135, 26, 85, 74,149,181,109, 68,139, 89, 67, 62,107,
+104,233, 64,138, 51,107,213,185,228, 59,151, 80,149, 98,177, 72,217, 35,152,180,209, 72,219, 15,144,156, 31, 94,131, 51,106,105,
+155,135,103,110, 11,252, 65,238,116,229,104, 54,124, 0, 57, 58,178,180,110,233, 79,125, 76,154,119,214,109,137, 41,144,221,161,
+136,170, 58,180, 1,139,255,141,102,125,160,153, 40,104,107,129, 70,167, 92,180,194,185,208, 10,105, 83,107, 78,155, 22, 18,116,
+142,158, 77, 19,148,179,196,176,105, 82,228,160, 96, 81,131, 80, 80,227,254,165, 7,134,179,135, 26,246, 18, 52, 35, 57,115,188,
+188,184, 36, 17,219, 1,112,210, 66,184,246, 89, 69,101,188,119,113,134, 46, 77,120,177, 15,232,152, 48,102,129,252,229,198, 35,
+238, 76, 79,234, 8, 11,221, 51,213,162,182, 44, 74,244, 45,238,225,165,116,235, 13, 79, 16,181,222,251,111, 54,163,208,131,207,
+ 74, 27, 41, 76,202,137, 89,239,244, 26,245, 64, 58,118,224,246, 97,215, 57, 85, 94,138, 57,197,241, 91,118,253,180, 68, 43, 84,
+129,251,148, 6,173, 39, 48, 45,155,180,229,238, 31, 75, 31, 2, 61, 36, 10,234,189,239,107,126,254, 28, 62,249,233, 79, 33, 50,
+130,184,195,245,213, 43,188,247,228, 41,156,239, 16,166, 17,211, 56, 33,196, 4,210, 8,231, 28, 46,206, 47,176, 94,175, 17,163,
+ 64,137, 49,140, 3,250,190, 67,215,173, 1, 88,108,232,106,125,142,235,171, 43,147,145,153,111,171, 17,238, 98,130,115,150, 65,
+ 14, 24, 10,152, 68,112,125, 29,112,125,125,133,247,251, 77, 13,179, 1, 27, 49, 46,197, 88,185, 54, 81,204, 92,198,117, 29,166,
+ 16, 44,253, 44,235,210, 53,153, 15,252, 46, 79,247,146, 21, 52, 5, 37,240,206,229,215, 16,243,116,204,136,106,100,213,105,154,
+ 48, 78, 19, 58,239,192,176,221,123, 28,130, 57,227,177, 77,201, 76,135, 94,140,230, 47, 31, 99,132,235, 58,168,138,125, 63, 51,
+ 36, 41,216,229, 41,158,140, 16,152, 4,208, 40, 32, 49, 27, 90, 31, 39,116,125, 15, 38, 95,253, 16,172, 33,176,127, 14, 49,193,
+177,194,121,111,207, 46,219,221, 50, 42, 16,162, 32,140, 1,154, 34,214, 61, 97, 72, 12,108,239,224, 29, 97,221,119, 80,120,220,
+236, 70,164,113,192,121,239, 64,231, 43,120,231,112,177, 89, 97,125,126,142, 73, 60, 72, 3,160,214,248,104, 48,231, 56, 82,147,
+ 60, 79, 73,225,100,128,243,182,242, 48,229,159, 24,105,208, 17,130,102,148,151,212,138,246,104,168, 3, 49, 16,224, 33,113,194,
+148, 34,194, 56,216,245, 55, 24,208,228,146, 2,168,136, 69,205, 50,129,148,171,236,174,172, 71, 71, 48,124, 16,124,236, 34,110,
+ 62, 92,227,234,246, 7, 88,125,243, 26,160, 29, 64, 43,227,241,208,233,189, 52, 53,123,214,234, 48,218,140,163,170, 56,237,185,
+125,112,174,232,183, 46,236, 63,199,180,126, 15, 91,207, 75,233,126,114, 33, 43, 54,151, 74,148,253,207,219, 32, 19, 93, 64,113,
+ 37,169, 43, 29,139,110,225,235, 6, 67,243,228, 95, 14,116,147,183, 37,210, 6,210, 46,204,251,153, 13,207,217, 60,166, 20,215,
+106,204, 82, 14,157, 12,213,207,157,150,228,201,152, 23, 58,218,118,242,148,230,247, 81, 99,191,153,238,145,236,148,142, 77,105,
+118,209,163,166, 25, 40,122,124, 48,205,124, 99,109,127,103, 51,174,211,108, 8,177,178, 69, 63,118,141,193, 73,209,227,215,236,
+239, 50, 13,151,233, 40, 5,108,163,113, 25,248,192,242,182,133,170,165, 65, 32,236, 71,203,145,162,187, 68,112, 22, 93,251,236,
+ 0,183,244, 70,231,108, 77,250,106, 24,171,132,177,222,216,206, 97,179, 62,195,123, 93,194,213, 24,145, 0,172,137,208,121,143,
+ 48,237,241,217,231, 91,144,115,240,142,170, 85,172,230, 15,211, 17, 29,200, 4,117,142,253, 84, 28, 21,171,118, 15, 95, 88,254,
+182,115,151,218,136,222,219, 2,156, 50,138,191,111,109,188,144,102, 54,210,197,204,144, 21, 49,249,209,219,220,223, 10,251,189,
+117,118, 91,254, 29,129,239,250,124,104, 19,186,174,195,221,237, 13,112, 24,152,113,176,110, 57,100, 24,188,147,163,222,161, 31,
+124,163,104, 57, 94,244,235,209, 90,228,126, 9, 92,126,206,251, 21, 62,255,252, 11,220,221,222,224,252,252, 12, 87, 87,175, 16,
+ 98,192,147, 39, 31, 54,228, 77,198,118,119,139,190,235,176,217,108, 44,247, 60, 26,172, 76,222,217,117,112, 14,222, 49, 66, 24,
+140,213,156,139,232, 52, 77, 8,193,188,204,157, 99,140,227,128, 41, 4,211, 41,167,226,138, 38,160, 0, 0, 32, 0, 73, 68, 65,
+ 84, 8, 34,198,176,143,120,125,253, 26, 15, 31, 63, 1, 23,246,183, 34,223, 31, 86,192, 98,138,230,191, 15, 96,200,164, 52,239,
+ 13, 54,150,148,112, 55, 12,120,117,117,141,105, 26,178, 27,224,220, 20, 39, 85,144, 8, 98,178, 98, 73,142, 76,179,174,132,105,
+138, 24, 7,107, 76,108,183,107,167,196,148, 50,246, 39, 10, 34,133,231, 46,103,191, 27,252,206,121,111,157, 50,217,212, 57,159,
+205,119, 76,174, 86, 12, 97, 82, 74,214,152,148, 87, 19,237,121,158,130,128,199, 96,251,252,206, 3,236,141,240,158, 39,146,149,
+103, 32,251,231,247,157, 67, 84, 6,165, 96,207, 24, 3,174,247, 0,124, 70,250, 0, 17,251,228, 19,247,120,113, 27, 49,133, 61,
+156, 10, 58, 79,112,110,196,197,218, 97,208, 51, 91, 41,100, 79,144,232, 13, 54,167,236,195,207,208, 76, 0, 4,198, 52,193, 79,
+138, 68, 30, 44,130,190,103, 36, 94, 65,147, 53, 89, 54,128,185, 44,199, 53,165,132, 18,144, 52, 33, 18, 33, 68, 5,139,128,156,
+ 67, 20, 6,226, 4, 34, 69, 84, 7,137,198, 81, 32,207, 16,113,153,108,171, 21,233, 75, 57,118,119,163,192,175,173, 71,252,227,
+239, 94, 34,238,126, 0,191,251,191, 43, 12,191, 48, 38,171, 79, 23, 99,118,224,212,134, 80,247,237,150,232,135, 60,160,255,111,
+ 9,115,199, 63,221, 91,166,112,241, 64,111, 89, 78, 25,138, 54, 17,193,204,255, 46,150,173,121,111,232,234,209, 83, 2, 44,138,
+ 12,109, 78, 7,227,172, 75, 14,197,185,173, 57,108,203, 25, 33,197,151,156,230, 36,240,204,193,175,208,241,236,149, 93,224,233,
+ 89, 86,150,168, 51, 31,248, 36, 96, 6, 58,139,135,170,251,250, 2,173,148, 15, 77,202,228,185,240, 59,207,122,121,154,153,162,
+218,236, 48,237,125, 44,145,132,242,224, 42, 29, 43, 30,203,245,150,133,121,139, 96, 76,200,122,123, 90,146,220, 14, 39, 74,204,
+141, 83,137,160, 68, 67,114, 59,101, 61,170,106,233, 97, 11, 9, 89,171,177,167,150, 69, 63,251,161,147, 2,224,172,102, 40, 22,
+167,165, 9,210,195, 24, 89, 2,137, 66,166, 29,126,186, 11, 8,194, 88, 57, 96,204,208, 57, 17, 1,236,150,193, 51, 13, 43, 44,
+106, 9,127,193, 65, 80,137, 46,138, 7, 53,205, 87, 33,185, 17,128,190,243,112,158,160,194,152,166, 88, 11,251, 34,198,148,154,
+150,249, 13,226,220, 37,159,173,245,196,182,146, 30,147,224,114,189,198,239,253,218,247,240,227, 47,190,194, 79,190,185,194,166,
+239,126, 62,246,123,190,117,167, 48,225,163, 39,207,240,232,193, 5, 62,251,236, 51,116,142,151, 82,163, 19,200,133, 30,188,190,
+124,146,214,137,253, 20,165,110,225, 40, 82,224,250, 3,194, 31, 29, 45,164, 10,204,120,154, 24, 56,127, 30,246,189,235,245, 26,
+ 95,127,253, 53, 94, 95,189,196,197,163,103, 32, 98,188,124,117,133, 48, 77,120,240,240, 49,136, 29,206, 46, 46,208,175,115,118,
+247,229, 3,155, 30, 59,131,150, 87,235,141,121, 45,164,136,171,171,107,252,236,211,159,225,230,230, 6,157,247,245, 25,181,131,
+218,216,152, 22,170,194, 72, 49, 39,192,121,198, 48, 78,184,187,189,181, 65,160,196,183,198, 84, 9,158,162, 64,136,209,164,117,
+ 34,152,166,128, 85,239,224,189,199,245,237, 45,166,113,194, 20, 2, 82, 50, 4, 32, 37,153, 29, 1,129, 44,205,179, 9,209, 17,
+ 3, 76,216, 15, 35, 32,192, 48, 89,177, 33,102,131,191,115, 17,102, 80,214,177, 27,113,207,114,225, 45,171,157,200,178,201, 89,
+204, 67, 94,114, 40,140,136,237,206, 45, 40,198, 52,246, 34, 9,156, 87, 19,156, 51,205,161,217,165, 51, 9,124, 54,205, 33, 9,
+ 80, 38,196,152,224,152,192,125, 95, 37,195, 83, 72, 16, 49,157, 55,105, 66,191,234, 33,112,128, 68, 80,206, 39,232, 72,113,182,
+ 89, 65,187, 53,194,126, 15,239, 8, 64,151,173,126, 9, 99, 98,196, 81,160,195, 96,103, 62, 51, 88, 19, 86, 43,135,174, 91, 35,
+145, 3,171,128,189,179,152,216, 76, 34, 38, 10,224,206, 99, 55, 49, 36,222, 64,201, 2, 90, 86, 29, 0,199,208, 68,112, 36, 8,
+ 0,194,126, 2,201,136,152, 20, 20,141,201,229,144, 32, 12,136,122, 32,141, 6,225,139,192,187, 92, 33,140,108, 97,164,224,148,
+160, 41,229,123,159, 49, 38,224, 41, 11,190,251,104,194, 63,125,246, 33,220, 39,223,128,228,115,128, 55, 53,179,162,233,224,171,
+178,167, 6,139, 21, 67,174,249,161, 56,105,129,125,223,204, 77,191, 72,173,126,151,105,253,232, 25,205, 41,109,206, 25,227, 16,
+162, 72,106, 55,141,195, 44, 29, 83,149, 76, 54,227, 2, 8, 67, 53,153, 33, 13, 28,162,163, 44, 41, 43,240, 52,131, 88, 43, 27,
+189,238,111,107,129,110,160, 97, 41,114,173, 54,190, 50,187,158,149,125,109, 93,190, 75,222, 35,207,171, 1,100, 66, 29, 36, 1,
+253,247,192,223,237,241,189,233,207,177,125,174,184, 86, 35,230,121,204,150,163,114,194,229, 76,117, 73,134, 2,204,175,126,102,
+122, 11, 84,230,236,106,106,195,106, 22,197, 91, 23, 27,226,214,212,227,144, 18,150,148,142, 93,214, 78, 81, 42, 43,105,109,110,
+156,136,102,157,190, 46,201,234, 6,113,249, 51,172, 58, 32,142,251,140,188, 80, 99,235,123, 2, 74,205, 44,118, 33,134, 99,235,
+192,149,108, 66, 16,157, 57, 3, 71,175, 78, 5,251,201, 62,239,142,103,178, 92,105, 18, 30,173, 59,164,148,112, 19, 98,253,108,
+103, 15,148, 34,197,211, 55,194,215, 5,186,158, 55, 12, 6, 87,115,134, 33, 44, 18, 19,144,184, 92,133, 20, 73, 35, 72,235,149,
+147,123, 30,140,217,121,173, 53,221,193, 98,165,115,185,234,240,120,227,241, 99, 77,239,244,168,182, 59,245,214,175,191,252,216,
+174,235,113,251,250, 10,195,221,107,236, 71,115,100,187, 47, 36,166, 45,187,167, 56, 9,116, 4,149, 31,218,136, 46, 33,138,227,
+ 61,252,178,208,183,145, 61,111, 36, 6,230,245,196,122,213,227,155, 23, 47,240,217, 39, 63,197, 95,254,254,175,227,229,203,111,
+224,253, 10,183,219, 1, 15, 30, 49, 62,254,181, 31, 96,191,223, 1, 10,244,235, 53, 82, 12,216,111,239,176,219,239,144, 98, 64,
+ 8, 3,134, 97,192,221,221, 29,110,110,183, 24,242,181,216,238,246, 70,178, 74, 38, 43,139, 49, 33, 38, 35,158,165,152,114, 8,
+139, 73,202, 66, 76,184,186,186,194,246,238, 22,155,243,135, 96,239,178,163,156, 53, 1, 10, 65, 12,101,226, 85,164, 20,113,119,
+ 55, 34, 37, 43,244,156, 89,235,227, 24,204, 96,166,160, 44,121,207, 14, 37,132,100,223, 91, 8,118, 18, 45, 40, 38, 74,196,217,
+102,157,167,196,100,110,117, 98, 40, 68, 82, 59, 96,137,216, 28, 18, 59, 99,152,215,220,248,153,137,100,153,240,156,199, 25, 37,
+ 48, 25, 20,239, 61,231, 98,172, 25, 65,144,138,118,129,217,248, 2, 32,164,152, 67, 81,136,192,189,135,164,104, 4, 59,239, 49,
+ 69,129, 66,224, 59, 15,208,170,174, 35, 68, 25, 44, 38,217, 91,173, 60,186,245, 6,251, 81, 76, 63,206, 43,147,242,121, 66,215,
+119, 57, 37,109, 54, 52,154,146,154, 66, 1, 17, 17, 9, 83, 76, 88,187, 4, 79,107,243, 59,232, 58, 68, 37,120, 36, 4, 1,238,
+246, 35, 58, 25,225, 59, 15,113, 30,227, 68,240, 60, 32,130, 17, 98,128, 32, 97, 8,132,113,152,192,105, 15,234, 60,198,228,128,
+ 24,208,123,197,150, 60, 36,236, 1,138, 32,202, 28,140, 28,147, 27, 0,147, 61,106,130, 83,201,198, 99, 64, 32,128, 35,240, 43,
+ 62,224,213,179, 53,110,174,127, 21,253,213, 43,128, 3,128,174, 14,121, 56,176,137, 95,114,190,150,197,127, 70,147, 15,167,136,
+ 95,198, 14,253, 45,248,253,105,221,234,145,140,198,171,150, 8,209,198, 3, 30,179, 62, 93, 51, 60, 99,204,117,129,162,131,115,
+ 15,161,110, 7, 23, 39,164,100,166, 35,156, 69,113,162, 6, 1,121, 86,172,178,204, 41, 54, 48,182,107,118,216, 46,123,135, 75,
+ 33,202,149,253,165, 46,125,203,103,110,176,133,143,168, 82, 54,139, 41,133,214, 3,233, 37,176,117, 88, 59, 66,224,172,163,207,
+122, 75, 5,103, 47,248,217,228,164,185, 63,103,136, 45,115,103, 41, 63,110,128, 67,199, 10, 39,130, 1, 75,221, 55, 45, 38,215,
+ 89, 2, 71,135, 18,137, 50,125, 47,220, 74,245, 52,227,186,153,230,218, 9, 85, 51,207,193, 98, 44,243,141, 38,169,250,145, 51,
+230,134, 8,204, 56,239, 9,219, 73, 49, 10,207, 59,103, 58, 84, 39,229,107,170, 11,178, 66,245,244, 22, 44,153,217, 51,148,154,
+137,119, 11,189,235,188,152, 47,109, 83, 72,169, 42, 4, 22,169,124,218, 32, 28,250, 22,248,106,177,158,177, 59, 84, 85,144, 98,
+ 66,151, 25,205, 41,223, 44,173,204,144, 22,147,231, 28,108,210, 22,197,162,117,150, 28, 7,172, 37, 69,175,129,173, 9,128,103,
+198,245,221, 14,255,243, 63,250, 51,220, 76, 17,155, 85,247, 70,211,142, 35, 59,219, 19,249,185,142, 24, 99, 8, 24,166, 18,171,
+186,132,195,151, 92,120, 61,158,162, 79, 53, 63,122,208,208, 44,150,128,111,142,155, 93, 10, 13,219,152,165,183, 28, 77,100, 83,
+236,126, 74,248,201,143,127,130, 63,248, 35, 70,223,117, 88,173, 86,184,184,184,196,217,230, 12,187,187,215,184,185,185,198,123,
+143,159, 64,194,132, 87, 47,159, 99, 24,204, 54,116, 24, 6, 12,195,206,138, 22, 8,204, 54, 61, 79,163,101,146,199, 24,109, 74,
+151, 92,196, 81,244,220, 82, 95, 94,136, 54,193, 95, 93,221,224,249,215,207,241,253,143, 31,128, 64,112,121,237, 51, 78, 19,166,
+105,202, 5, 60,212,255, 79, 73, 42, 60, 79, 49,217,238, 63, 4, 16, 25,127,162,228, 4, 72,142, 5,245,158,161,106,228, 58,205,
+134, 58, 83,156,208,247, 29, 68, 9, 18,204,200, 38, 76, 17,222, 25,135,135, 41,203,196,234, 42, 38,175,195,200, 80,136,190,179,
+226,212,121, 6,185,174,146, 68, 75, 40, 16,113,137,193, 38, 40, 73,109,228,139, 33, 80,151,155,199,148,215, 10,200, 13,175, 18,
+ 33, 36,129, 69, 4, 4, 48, 0,223, 57,172,250, 14, 81,141,160,104,205,137, 53, 51,157,119, 38,123, 19, 27,229, 58,239, 45,158,
+149, 4,171,190,131,235, 86,153,197, 95,186,107, 70, 7, 65,183,246, 0,172,233, 0,128, 32, 64, 26,246,102,247, 27, 71,227, 76,
+ 36,129,198, 4,159,119,233,178, 31,192, 29, 35, 68, 2, 73,192, 40,138, 56, 69,172, 57, 33,184, 30,187, 17,216, 80,166,103,167,
+ 4, 33,206, 59,249, 8, 1, 91,160,152,179, 12, 16, 78, 54,112, 74, 82, 48,137,249,189, 11, 53,143,176, 34, 64,113, 6,198,247,
+ 47, 18,254,228,163,199, 72,219,239,193,197, 31, 1,206,215,149,111, 75,194, 45,156,154, 57,128,147,154, 36,197,198, 16,236, 4,
+181, 25,111, 6, 5,191, 93,177, 63,241, 23,245,109, 12,185,178, 83, 71,101,126, 83,141,240, 19,181,125,122, 71,154,157,133, 8,
+ 49,155,188,176, 2,137, 86,144, 51,193, 37, 79,216,220, 10, 94,142, 64,172,208,121, 83, 17,234,145,145,153,243,138,170,171, 46,
+ 23,204, 21,137,149,206,185,220, 86,160,168, 18,172, 10, 60, 95,124,201, 27, 23,108,243, 8,118, 4,135, 45,240, 66,240,231,194,
+208,174,112, 1, 26, 2, 91,254,221,197, 4,167,245,185,166,172,249, 70,222,117, 25,147, 91, 16, 84, 42,114,128,236,198,198,173,
+ 54,190,176,227,105,185,141,164,134, 29, 95,238, 20, 62, 16, 74,148, 9,209,206, 90,153,205, 31, 8, 39, 38,125, 61, 65, 82,154,
+195, 64,202, 31,231, 28, 16,118,184, 14,246,232,187,220,144,149,141,147,171, 5,185,205, 77,215,122,211, 22,166,118, 57, 72,102,
+115,148,198,156,162,209,151,211,162, 8, 45,239,197,109,136,245,112,154,107,126, 54, 25,106,238,126, 5, 78,154,220, 28,222,192,
+ 53, 39,158, 44,103,188,216,119,158,106,143, 78, 26,231,227,216, 39,160,166,159,233,193, 68, 75, 75, 82,219, 62, 89,116,110,151,
+161,202,182,168,138,168, 77,115,247,236,214,233,144,225,158,123, 87,151,201,168, 39,119,215,135,164, 70,220,103,144,129,211,251,
+113,232,209, 53,160, 55,229,200, 31,154,204,232, 91,166,244, 3,191,166,126,181,193, 15,127,244,103,216,221,222,224,209,123,239,
+ 35,198, 17, 73, 34,158,127,243, 53,134, 97,192,229,131, 71,184,187,187,195,139, 23,207, 33, 73,192,206, 35, 76, 33,223,192, 22,
+121,170,170,240, 57,142,104, 28, 39,136,164, 57, 69, 48, 79,147,154, 25,226, 69,238,202,228, 32, 16,116,157,199,118, 59,226,250,
+197, 75,124,255,159,249, 24,138, 14, 49,154,196, 77, 1, 76, 83, 64, 12,150,154, 54,142,131,125,102,222,213,213, 89, 72,130,164,
+146,237,139, 53,155, 32, 25, 76, 62, 78,113,134,196, 83, 66,140,201,160,252,113, 50,143,121,246,136, 41, 65, 98,194, 56,141,117,
+133,199, 10,116,189,207, 69,157,142, 76,162, 40,107,164, 57, 23,111, 27,188, 25,206,113, 85, 2,216,217, 67,112, 61,215,123, 53,
+ 41, 76, 22,198, 4,165, 92,148, 59, 95,209, 76,102,170,205, 68, 82, 32, 36, 1, 73, 50,219,221,105,130,131,160, 91,175, 48, 77,
+ 64,231, 8,125,215, 3,142,177, 29, 70, 56, 88, 97, 12,106,235,128,245,122,101, 59,237, 20,178,131,158, 89,210, 70, 9,214, 72,
+ 20,185,158, 2,208,132, 81,109,189, 88,184, 2,165, 1,235,157,145, 17,167, 40,240,148,160,220, 65, 37, 66,137,237, 51,102,198,
+ 94, 58,176, 70,244,204,136,234,144,166, 98,197, 75,214, 20,176, 98,100,135, 41, 48, 58, 13,112, 94, 17,177,202,102, 64, 38, 87,
+ 20, 53, 25, 28,229, 32, 42, 35,207,217, 61,240,161, 3,158, 63, 1,190,126,245, 61,184,175,190, 6,248, 22,138,213,209, 81,161,
+205,255, 32,232, 92,211,170, 97, 24,189, 1,254,126,147,209,236, 47,206,147,167, 83,154,161, 19,207,180, 47, 50, 49, 16,242,254,
+ 4,112, 50, 23, 2, 85, 11,111, 81, 53, 25, 1, 99, 2, 77, 95,130,174, 29,246, 29,205,180,244,204,124,204,232, 56, 88,204, 22,
+ 86,148, 22,253, 77,133,192,155,221,110,153, 52,151,187,125, 53,111,247,252,245,133, 47,113,213,110,151,232, 87, 5,195, 67,206,
+ 46,177,238,118,240,251, 1,187,104,137,114,192, 50,224,226, 80,218, 86,225, 20,118, 56,163,252, 94,193,182, 55, 82, 65, 72,192,
+ 88,164, 97, 7,187, 20, 93,102, 93, 28, 31,222, 7,222,235,139,105, 76,155, 89, 72,143,163, 69,151,197,123, 62,220,152,115, 49,
+ 81,154,161,120, 44,227,101,147, 52,233,119,116, 48,177, 22,121, 14, 22,100,231, 58,157, 38,149,185, 17, 59, 69, 85,211,251,148,
+221, 7, 60,128,194,174,110,111,252,220,252,240, 1,135,235,158,141,240, 2,221,106, 13, 35, 72, 21,197,162,128, 78,124,239,162,
+ 93,104, 41,254,237,187,201,203,116, 85, 96,189,217, 32,198, 9,227, 24,230,168,221, 2,253,103, 72,179,119,203, 9, 92, 68,208,
+175,214,120,112,121,137,235,171, 87,230,166,215, 18,201, 78,100,194, 47,138, 48,209, 59,161,108, 75, 25,219,155,142,137,131,134,
+ 68,155, 29, 21,189, 5, 21,105,172,159,113,128, 86,232, 61,127,191, 5, 90, 46, 46, 47,241,167,127,242,167,248,217,207,126,130,
+127,246,119,254, 50,190,252,244,167, 32,231,176, 90,111,240,232,189,199,216,111,183,248,236,243,207,173,177,100, 7,208, 60,125,
+ 59,102, 72,246, 95, 31,198, 17,251,237, 30, 34, 9,125,215, 99, 28, 3,166, 41, 23,120, 6, 52, 25, 90, 40, 73,102,111,242, 28,
+199,233,188,199,207, 62,253, 20, 31,125,247, 35,124,231,227,223,200, 50,177,132, 20, 34, 98, 72,213,238, 53,169, 90,177, 15, 13,
+204,174, 86,212, 85,196, 72,103,100,105,111, 76, 37, 68, 70, 49, 12, 1, 49, 24,220, 62,141, 19,156,179,204,122,131,226, 77,214,
+150, 82,170, 10, 18, 87, 38,238,188, 67, 47, 36,184,210, 44,123,239, 50, 25,208,118,252,253,138,224,156, 71,231,188, 17,220,138,
+163,101,138, 21, 1, 5, 76, 98, 74,222,195, 57, 43,166,172,146,227,157, 41, 75,236,114,240, 86,230, 38,121,103,107,128,152, 82,
+ 61,235,210, 16,225,157,135, 58,135, 33, 36,164, 49,100, 30,128,189,230,190, 99,112,183,194, 20, 34,100,156,236,119,103,243,168,
+144,204,100, 38,170,131,166, 8,239, 0, 1, 87,203,106, 38, 96, 74, 1,154,137,141, 68,132, 9,130,105,138,112,105,132, 59,235,
+ 16,132,225,132,193,222, 26, 24, 38, 66, 98, 96, 12, 4,157, 70, 48, 27,137,142, 52,205,178,105, 1, 72, 19,130, 42, 92, 4, 86,
+ 62, 33,178, 66,163,173,143,133, 60, 52,217,103,235,200, 44,193, 56, 55,141, 65, 8,235,152,240,253,117,192,213, 71, 23,136,175,
+191, 7, 63,252, 63,128,211, 35,153, 26, 29, 60, 3,170, 56,161, 63,105, 34,182, 79, 18, 74,223, 8, 68,254,146,229,109,199, 33,
+ 21, 62,230,224, 3,203,109, 97, 20,219, 96,159,151,223,115,218,154,100, 61,120, 57, 40, 19,166, 61, 99,207, 38, 89,226,218, 73,
+ 86, 55,248, 76,162, 83,147,126, 20,118,113, 33,218,233,204,182, 45,172,114,215, 76,133, 84,233,231, 51, 11,209,181,103, 85, 83,
+236, 88, 0, 37, 1,226, 14, 32, 35,150, 48,204, 14,182,181,253, 60, 52,229,175, 40, 0, 12,149, 40, 81,174, 49, 95, 36, 15,202,
+141, 1, 29,248,136, 98, 49,121,183,211, 75,123,158, 86,128,134,180, 41,206,173, 83,153, 46,146,210,234, 20,123, 15,209, 66, 85,
+178, 9, 3, 26, 83,154,214, 81, 78, 26, 93,189,233,255, 73,139,175,253,156,204,198, 51, 33,161,250,197, 47, 16, 4,157, 89,243,
+ 68, 51, 40, 59,231,171, 31, 78,179,167,239,210,210,116,213,150, 66,103,251,219, 86, 33,160,167, 38,233,123, 58,212, 58, 93,211,
+233, 98, 62, 23,205,249,139,114,194,220,173, 37, 2, 74, 52, 93, 50, 53, 92,124,122,155,141, 47, 25,209, 43,134,241,232,231, 18,
+ 49, 30, 61,122,132,237,221, 29,246,251,193,136, 76,243, 71, 60, 51,246, 79,120, 70,211, 73, 73, 38,142,122,244, 99,121,203,137,
+ 15,226,160,107, 58,106, 46, 43,202,164, 13, 71, 5, 71,156, 14, 61, 88,159, 84, 66,176, 90,145,190,185,250, 6, 31,126,244, 1,
+ 46,222,123, 2, 71,140, 39,207, 62,178,248, 82, 40, 66, 12,120,241,226,133,237,223, 55,107, 56,223, 97, 28,246, 96,103,123,102,
+192,206,159, 16,130,193,237,152,201,113,200,249,231, 69,119,158, 84, 16, 83,172,177,205,147, 36,132, 12,253, 58,239,177,189,221,
+227,135,127,250, 39,120,250,209,119,161,228, 48, 77, 1, 97,154,114,192, 75,107, 32,163,136,230, 94, 2, 5, 33,132,104,197, 32,
+239,191,199, 41, 32,196,152,137,169,100,169,144,201,138,246, 52, 5,176, 99,139,152, 5,170, 78,221,152,245,133,235, 1,211,226,
+243, 28, 47,236,188,217,158, 22, 91, 86,228,157,189,125,205,213, 85, 24,101, 13,121, 74,182, 58, 96, 50, 82,154,119,108, 58,114,
+192, 56, 0, 57, 18,182, 52,147,222, 59,128, 29, 68, 12,101, 96,103,121,239,182, 78, 19,196,196,217,156, 71,177, 94,245, 32,215,
+ 33,134, 0, 48,242,174,158, 64, 57, 74,214,142, 0,135, 16, 5, 16,187, 70, 41,153,131, 27, 17, 35, 18, 67,196,214, 16,147, 40,
+216,169,161,128,206, 99, 63, 69, 80,138,185,105, 97, 40, 56, 19, 21, 3, 88, 19, 68,186, 34, 70,132, 25,121, 42, 18, 1, 17, 52,
+ 39,224,129,114, 16, 79, 66, 12, 1,154,130,173,112, 85,208, 57,115,165, 27,147, 64,196, 86, 11,206,177, 89,198,106,145, 77,231,
+ 84, 63, 86,192,121,136, 58, 4, 17, 60,146,132,103, 15, 38,124,246,248, 67,184, 47,190, 4,244, 21, 64,235,183, 72, 98,102,148,
+177,205,243,164, 38,180,236,112,106,110, 27,223, 95, 74,189,190,143,225,123, 79,234,148, 23,102,211, 63,107,201, 17,167, 44,193,
+176, 7, 39,102, 87,184,118,199,153, 50,238,203, 44, 25,182, 71,157,138, 53, 31,162, 32,173,146, 56, 87,253,133,237,248,136, 88,
+202,150, 8,115,208,136, 21, 32, 57, 18,213, 88, 2, 25, 55,110,110,205,126,180, 20,161, 52, 32, 4, 96,100,206,186,208,134,212,
+144, 61,216,133, 40,119,209,141,137, 13,205, 33, 47,225,192,227, 90, 14,246,154, 45, 55, 65, 15,103, 85,109,195, 82,108,210, 87,
+165,131,181,193,204,228,110,173, 96,169, 73,102, 57,114, 23,203, 56,248, 2, 66, 61,178,172,109,140,131,154, 29,107,105, 50,170,
+ 83, 96, 37,148,101, 7,123,109, 10,121, 41,244, 25,238,214, 35,217,199,137, 49, 90,245, 94,148,161, 74, 21,219,228,195,197,253,
+119, 90,159,127, 72,100, 60,188,183,229,173, 50,146,153,217, 79,206, 97,221,119, 24,167,113,225, 65,211,254,204, 97, 28,209, 26,
+ 38, 45,162, 78,244,254,162, 30, 99,196,213,245, 53, 92,113, 9,107, 16,161,253,246,206,166, 31,166,227, 66,205,188, 88,105,212,
+239, 59,169, 3,167,163, 37,133,222,247,238, 15,163,102,223,194,208,111, 51,133, 78,134, 93, 52,127, 95, 84, 65, 7, 31, 48, 51,
+225,250,250, 26, 79,158,190,143,255,250,143,255, 62,222,123,252, 62,174, 94,124,133,213,106,133,149,191,192, 56, 5,236,118,119,
+120,244,240, 17,206, 54,231, 96, 71, 88,175, 54,120,241,242, 5, 94,189,252, 6,206, 17,194, 84,166,113, 43,112,235, 85,143, 81,
+ 5,119, 55, 19,198, 97, 48, 4, 81,243, 64,145, 98, 49,171, 52, 98,102,149, 12, 18, 60, 27, 98,240,211,159,125,137, 95,251,217,
+ 63,197,247,127,243,159,135, 2, 24,198, 9,146, 11,111, 33, 22, 22, 31, 7,206, 8, 28, 49,224,201, 65, 85,178,149,106,225, 58,
+152, 46,157,178,180, 44,164, 0,223,249,197,212, 29, 98,130,164,212, 52,116, 4,199,174, 54,136, 34, 10,118, 84,109,174, 29,251,
+234,243,206,206, 38,233,205,122,109, 43, 79, 73,217, 51,196,152,239,156,145, 83,109,200,194,236, 56,219,234,218, 10,162, 95,245,
+ 86,192,243,135,211,121, 54,147, 28,166, 12,193,231,233,141, 8, 16,194,122,229,161,108,141,149, 99, 66,202, 46,146,171,181, 7,
+ 57,115,219, 51,216, 59, 53, 6, 99,166, 2,233, 73,224,251, 14,251, 41, 33, 78, 1, 12, 75,228, 43, 5,110, 26, 3, 88, 34, 86,
+171, 30, 10, 87,249, 16, 49,101, 2,155,235,112, 55, 36,144, 78,232, 60,231,115, 30,245, 89,245,206, 33,193, 12,101, 74, 33, 21,
+ 16, 66, 98,104, 28,209,177,130,200,101,183, 75,134, 83, 75,215, 99, 54, 59, 89,201,103,104, 20,133,131,152,210, 42, 9,192,132,
+ 81, 9,235, 73,240,189,126,194,203,143, 46, 48, 93,127, 15,126,123, 13,245,197, 13,229, 45,245,181, 49,173, 57,229, 97,170,139,
+191,244, 45,220, 39,127, 94,205, 58,209,146, 37,221,194,239, 92, 8, 72,172,240, 34,112,194, 16, 42, 25, 43, 69,251, 77,179,252,
+ 94,151, 4,186, 60, 76, 55, 62,238,217,241, 71, 21,172,106, 22,179, 53,222,149,102,123,216,166,224,150, 27, 71, 43,196,116, 98,
+130,201,133,153,180,176,223,219,116, 29, 84, 50,153,102, 8,168, 77,100,155, 39,255,118,254,153,195, 80, 40,239,110, 82,133,243,
+ 51,220,173,199, 50, 41, 42, 9,115,139,235,105,150, 81, 5,178, 47,196, 46,193,113,161, 62,165,185,174,187,106, 90,210,217,169,
+ 64,205, 77, 52,103, 65, 22,152, 81,117,252,138,102,103, 95,181,231,180, 80, 95,206,242, 45, 75,220, 91,159,157,193, 97,196,237,
+118, 4,179,195,210,140,244,254,128,130,197,244, 94,125,250,245,148,127,217,162, 4, 21,103,191,229,109,187,124, 48, 14,165, 32,
+167, 66, 13, 79,253, 59,106,137,130,116, 64,224,147,148,253, 13, 78,243,214, 85,145,109, 58,151, 69,238,157, 30, 61, 50,200,244,
+212,159,221,126,200,156,130,121,249, 28, 83,196,229,131,135,120,240,224, 18, 95,125,249,229,226,243,191,119, 77,115, 18,207,208,
+211, 44,216,118,175,163,116,122,239, 87,247, 62, 52, 55,117, 21, 73,209, 19,168, 3,157, 82,199,129,178,132, 72, 36,224, 63,254,
+219,255, 25,126,251,183,126, 11,127,254,195, 63,195,126,216, 99,216,239,113,126,118,134,167, 31,124,100,254,230,154,176, 89,247,
+ 57,133, 77,240,248,241, 99,220,220,188,198,112,115,107, 50,179,188, 11, 22, 1,198,113,196, 48, 14, 16,177,253,117, 10, 25,126,
+ 78, 22,164,146,178,203,154,243,108,107,166, 68, 89,182,166,153,248,200,248,228,147,159,225, 59, 31,255, 58, 98,136,182, 75,159,
+ 2, 98,158,234, 36, 25,124,223,245,166,209,222,238,246, 21, 81, 74,249,245, 21, 72, 94,242, 1, 48,134, 17, 41, 68,108,206,214,
+134, 0,140, 35,166,193,180,242, 84,140,137,242,103,221,247,157,113, 6,146,249,169,121,239,225,152, 43,243,215,123,151,249, 47,
+ 86,140,186,174, 91,112,111,166, 24,107, 35,219,117, 29, 98, 14,148,137, 81, 64,220,164,102, 38,123,254, 29,207, 44,109,205,103,
+167, 53,142,115, 62,174, 39, 2,245,217,115,158, 9, 83,182,134, 37, 98,116, 68,112,253,170,158,111,222, 57, 51,186, 73, 49, 43,
+153,236,115,177, 94,194, 25,186, 34, 89,235, 77, 6,233,199, 16,144,242,170,160,247, 22, 84, 83, 12,124, 66, 18,176,102,173,188,
+ 16,168, 76,251, 81,225, 92, 68,130, 71,138,130, 21, 39,132,108,246, 67, 72, 72, 66, 32,137, 40,194,106, 83, 19, 16,226, 52,161,
+ 67, 4,119,221,226, 20, 49,251,233, 76,247, 22,192,145, 32,169, 51,233, 45, 37,164, 68, 8, 36,120,168, 14, 31,156, 79,248,233,
+123, 79,224,118,143,242,180,190,186,119, 42,166,123,220, 34,150, 80,161,204,166,104,205,100,255,166,230,250,151, 2,193,183, 57,
+216,109, 81, 79,106,240, 87,201, 32,227,156,154, 38,148, 29,223,212, 10,105,204,143, 62, 55,135,131, 42, 22,100,167,202,170, 86,
+147,107,144, 16, 18, 24,145,200,150,247, 7,131,158, 54,249,222,243,180,107,200,128,211,165,214,125,222, 47,107,150,167,101, 2,
+ 92,174,174,210,120,170,179, 46,157,184,184,129,219,253, 66,182, 51,119,250, 9,179, 73, 75, 41,248,210, 20, 49,210,249,208,147,
+195,203,168, 38, 11,234,200,214, 19,147,204,194,110,106, 97,242,172, 47, 45,157, 62, 50, 17,143,184,144,249, 50, 97,142,173,152,
+ 87,195,151,226, 61,159, 15, 14,110, 97,226,178,249,109,221,244,178, 22,180,216,230,150,166,130,243, 1,173,164, 8, 97,176,119,
+156,109, 42, 91,163,216, 67,121, 71, 99,211,127, 84, 85,233, 30, 77,181,234, 65,206, 60,102,215,178, 54,230,240,141, 38, 13, 7,
+198, 41,229,189, 31,106,192,117,241, 31,180,104, 39, 52,105,118, 5,163, 99, 36,225, 96,167, 79, 7, 28, 2,213,159,255,177, 59,
+116,136, 43, 19,122,152, 70,220,189, 22, 28, 26,205,156,122,207,122,196,174,120, 75,254,171,158,200,140, 62,197,160,109,190,174,
+149, 28,119, 64, 96,168,254, 17,122, 50, 75, 90, 1,220,220,220,224, 47,253,238,239,226, 95,250,253,223,199,215, 95,126,129,174,
+239,225,186, 30, 15,223,123,130,206,123,156,157,157,195,251, 14, 99,152,204,251, 32, 67,198,157,183,160,146, 97, 28,141,197,221,
+247, 80, 85, 12,227,104, 82,182, 52, 65, 96,161, 43,211, 20,108,162,143, 70,142, 52,102, 59, 87,134, 59, 19,131, 51,185, 54,132,
+132,126,179,198,213,171,107,188,190,122,101,196,186, 24, 17, 38,211, 60,199, 36,150,157,238,173, 9,222,239, 7,131,160, 49,251,
+ 68, 72,146, 25,198, 77,201,252,220,195,132,179,179, 13,188,183, 34,171, 48,214,189,142,105,190,215,212, 10,182,247, 22,161, 74,
+108,234, 10, 38, 67, 52,216,249,194, 91,199,106,213,219, 89,228, 44, 72, 37, 37,107,106,188,115,153, 16, 92,220,214,242, 40, 85,
+ 37,146,249,222, 39, 54,214, 62, 8, 33, 10,124, 39,150,101, 95,166,121, 51, 78,183,123,222, 57,116,174,200, 97, 51,113, 86,194,
+ 44, 53, 46,228,207,124, 54,120,207, 8,193,226,111,139,179, 38, 84, 76, 58,170,128, 74,202,246,209, 9, 9,140,113, 31,106, 1,
+239,156,221,179, 49, 74,142,179, 5, 58,223, 1,218,101, 54,254,100,107,131, 24,205, 78,182, 99,168,155,195,160, 36, 37,132,164,
+144, 16, 44, 40,140, 76,173,220,145, 2,157, 67,138,128, 80, 66,141, 2, 35, 54,103,198,148, 44,209,145, 9,147,119, 64, 50,207,
+ 18, 38, 32,145,101,214, 67, 19, 70, 2,104,136,120,234, 19,190,124,124,134,248,242, 3,184,253, 21,224,239, 87,149, 47,120, 58,
+170, 39,134,156,102,216,165,249, 36, 45, 72,240, 50, 22,245,151,109, 67,163, 39, 85, 42, 94, 33, 57,131, 28,144,106,130,148, 11,
+184,210,108, 83,218, 30,124,122, 44,202,226, 22, 28, 84, 5,232, 28,147, 87, 32, 13,166,129,167, 19,243,217,225, 25, 68, 75,155,
+211, 25,254,165,250, 69,206,137,108, 17,141,169, 76,150,185, 21, 82, 93, 49,157, 93, 22,157,202, 94,171, 48,118,235, 59,167,197,
+ 79,189,176,241, 81,204,117,154,198,165, 97,163,181, 38, 37,246,182, 4, 99,190, 46, 21, 54,147,153,140, 85,118, 47,188,136, 81,
+205,174,243,218, 92,197,198,139,144,154,192,143,214, 38,215, 29, 40, 8, 44,216,226,128, 59,125, 32,217,107,249, 79, 12, 66, 10,
+ 1,137,236, 80, 92, 8,211,100,105,151,219,206,237, 37,115, 94, 90,216,231, 36, 9, 75,231,253,107,179,178, 88,250, 46,235, 73,
+146, 28, 31,162,251,205, 20, 75, 11, 44, 76,143, 30,174,121,175, 94, 18,217,168,162, 43,133,213,124, 56,225,207, 43,140,198,166,
+239,151,108,212,172, 85,202,230, 48, 77, 19,134,113,132,103,247, 6, 81,202,129, 7,255, 27,193, 60,125,243,103, 65, 75, 70, 98,
+ 59,125,215,157,249, 97,238,188, 54,201,110,170,247, 30, 31,211, 56,224,187,223,249, 16, 23,231,151,182,134,240,206,118,156,164,
+112, 14,216,239,111,193,236,176, 94,159, 97,115,241, 0, 33, 90,188,233,126,183,195,184,223,131, 8,232,115, 65,159,226, 84,137,
+107,195,110,196,110,187,195, 56,140,112, 62,243,109, 28,153,164, 76, 18,136,157,145,195,136, 32,156,209,177,100,174,100,155,245,
+ 26,183,187, 91,124,254,233,167,160,238, 28,219,237, 22,130, 84,161, 96,202, 59,228,113,156, 16, 67,202,136,131, 64, 36,102,179,
+ 27, 99,162,199, 24, 49,236, 7, 76, 97,194,249,217, 6,253,106,141, 41, 36,203,125, 79,102, 50, 83,180,242,222,249, 12,203, 91,
+131, 92,166,240,106,154,197, 14,142, 29,250,222,103,199, 59,202,172,113,181,196, 50,207,240,174,207, 22,208,154, 21, 1,217, 67,
+ 46, 51,227,137,172,177, 1, 1,158, 9,221,202, 8,125, 37, 62,213, 67,140,100, 71,198,132,119,206,193,123,135,174, 68,219, 38,
+201,107, 4, 43,184,142, 25,190,235, 16, 37,179,165,243,234, 73, 82,182, 96, 85, 96,154,166,197,137,157,212, 80,146, 16, 4,158,
+ 4, 66,140, 41, 38,120, 74,240, 93,103,251,115,177,211,215,206, 10,174,191, 51,230,220,250,168, 4,137, 17,157, 35, 76, 2, 32,
+217, 52, 62, 37, 64, 17, 16, 19,178,127,189,173, 38,216,123, 43,250,162, 80, 9,112, 72,198,250,135, 24, 49, 91, 20,140, 8, 34,
+ 15, 38,224,204, 59, 12,188, 2, 71, 6, 52, 90,238,122,202, 50, 67,246,152, 68,113,169,138,167, 15, 18, 62,123,244, 12,188,255,
+ 28,164,119, 0,245,184,207,220,245,148, 13,196,242, 12,105,182,237, 21,209,109, 21, 70, 77,147,254,243, 20,248, 83,231,209, 27,
+ 6, 14,111, 15,132, 32,229, 80, 20,151, 9, 27, 66, 64, 71,176,194, 14,169,228,183,198, 76,111,113, 48, 82,213, 76,103,210,221,
+234, 61,200, 7,138,223,112, 95,225,193,151, 9,255,120,207, 24, 88,171,177,141, 21,108, 94,156,161, 84, 29,235,168, 78,195, 84,
+225,219, 2,245,211,193,185,219,184,165, 45,176,250,108, 53,171,138, 8,106, 2, 99,218,213,225, 92,124, 10,137, 79,107, 17, 90,
+ 78,196,243,129,169,149, 61, 94, 27, 7, 93,106,165, 11,138, 81,156,137, 74,252,107, 9,143, 57,117,132, 39, 81,112,183,198,166,
+103,196, 97,135, 73, 8,110,102,220,129,117,217, 4, 29,230,211,205, 26,243,185,177, 57,236, 62,185,233, 54,125,129, 4, 65, 64,
+ 10, 8, 41,193,119,189, 29,122, 58, 27,190,104,190,142,218,210,252,168,193, 8,238,171, 76,109, 86,200, 17, 83,244,180, 5,105,
+219, 13,183, 93,113,129,134,233,190, 40, 83, 0,107,207, 89,154, 84,138,119,161,204, 26, 59, 48,166,148,141, 64,142,141,242, 73,
+ 15, 36,136, 74,191,208,148,126,248,189, 33, 76,112,236,140, 60,150,201,168,250,198,231,154, 64, 39, 23, 12,111, 18,186, 96,214,
+203, 45, 26,167, 37,218, 97, 97, 33,178,248, 94,210, 86,126,121,136,144, 28, 13,239,185,200, 48,118,187, 61,238,238,110,225,188,
+ 37,117,137, 36, 76, 33, 96, 55, 12, 8, 33,228,169, 82,177,238, 87,120,248,232, 61, 56,231, 16, 66,192, 55, 47, 94, 32, 73,194,
+217,217, 6, 76,108, 65, 32,209,246,235,219,219, 29,238,110,238, 44,140, 37,134,236,103, 78,185, 96,198,122,143,107,142,131,102,
+199, 72,209, 10,179, 73,222,204,236,228, 39,127,254, 19,188,255,244,195, 10, 15,151, 51, 35,198,136,105, 10,217,144, 74,242, 61,
+156,161,118,216, 36, 26, 98,180,162,159, 18, 54,103, 27,172, 55,155,202, 33, 8,201,140, 78, 36,239,183, 61, 59,147,148,153,115,
+140,229, 3,144,237,181, 29, 28,156,119,240,222,146,216, 64,141,225,182,218,207, 49, 25,154,175,228,192,210,112,105,178, 56,104,
+159, 67,100,138,239, 3,195, 66, 78,236, 51, 16,155,180, 51, 59,222,229, 34,223, 57, 66,191,234,144,164, 89, 19,121,135,105, 76,
+ 57,172, 70,208,175,188,237,231,197, 8,128,174,100, 29,100,243,150,253, 56, 1,113,132,239,123,196,104,133,222, 8,104,102,162,
+163,232, 17, 39,155,210,109,125, 87,208,126, 43,232,206, 25,220,158,162,241, 37, 72, 77,250,201,204, 72,220,103, 31,251,148, 27,
+ 1,193,148,196, 32,255,124,113, 60, 3, 17, 30, 36, 17,163, 40,134,253, 8,141, 35,152,128,232, 24, 42, 4,168,185, 10, 70, 48,
+ 88, 3,122,103,167,246,153,139, 24,200, 35,142,128,166,177,186,158,214,225, 71, 8, 31,248,136,231,143, 55, 72,175, 62,128, 27,
+111,242,180,126,226,233,202,200, 38,157, 24, 72, 78, 74,113,169,101,205,235,177, 52,181,249,139,244,139,108,222,169,125, 45,203,
+118,219, 83,134,132, 56,239,110,147, 2,160, 84,119,181, 4,130,112, 14, 41,201,140,114,100, 11,197, 10,241,234, 34, 16, 18,196,
+ 10,153,190, 2,125, 67,216,246,214, 33,104, 83, 52,133,102,232,152, 10,185,140,102,175,116,106,108, 97, 75, 20,171,180,211,228,
+129, 68,170, 66,243,229, 3,208,226, 29,223,176,230,235,180, 57,199,190,182,234,159,229, 30,184,217,155, 23,251,218,252,218, 74,
+ 76,101,202, 93, 40, 29, 76, 67,139, 66,119,144,165, 94, 39, 98,153, 9,107,165,137, 96, 0,144,128, 52, 25, 84,198,180,244,251,
+230, 3, 94, 4, 55,191,107,134,150,139,138, 96, 62,220,143, 8,104, 7,230,226, 42, 19,252,249, 99, 60, 60, 91,225,230,229, 87,
+182,247,202, 16, 65,125,221, 7, 22,194,220, 48,250,143, 29,244,150,107,222,227, 40,242, 83, 68, 44, 70, 81,140, 37, 66, 53,179,
+160, 3, 9,154, 52, 92,132,195, 63, 73,116,153,220,151,167,110, 73, 17,221,234, 12,191,250,221,239,226,235, 47, 63,197,118, 55,
+152,158,127,201,209,255,133,213,165,247, 17, 84, 9,192,229,229, 67,196, 24, 17,166,177,250,146,191, 65,148,118,226,117,188,131,
+240,237, 40,104, 98,233,195,172,106,164, 38,118,140,113, 24, 15, 6,251,251,163,239,218,200,213, 89,178,203,184,122,245, 10, 31,
+124,240, 12,127,240,175,254, 53,220,220,222, 86, 83, 23, 21,197,170, 95,193,119,125, 54,143, 73,136, 34,120,254,205,115, 67,193,
+146, 32, 42,112,126,118, 14,133,177,222,211, 56, 96, 26, 71,220, 92,223,224,246,246,182, 58,158, 57, 55, 55, 11, 6,189,155, 69,
+176,168, 66,146, 5, 15,153, 29,108,246,168, 36,133,146, 98,181, 90,225,213,245, 45,166, 41,224,242,225, 35,179,111, 85,107,133,
+167,108, 21, 11, 58, 88,227, 40, 16,163,201,214, 44,212,136,177,238,123,156,159,173, 65,236, 48,133, 9,158, 25,226,140, 85,236,
+189, 77,223, 62,175, 18,138,124,205, 17,101,185, 91,111,238,113, 89,214,229,152,224,125, 54,152, 41,124, 31, 38,168, 80,102,111,
+ 51, 68, 35, 28,217,189, 44, 53,222,122,254,104,217,205,139, 74, 81,205, 63,211, 89,164,108,223,217,132, 31, 19,216,153,196,172,
+243,206,228,102, 49, 84,135, 59, 77, 49, 39,188, 49, 82,136, 72, 81, 0,137, 0,153,132,216,145,230,243, 7,240,171, 30, 96, 15,
+150,104, 13, 20, 1, 81, 9,136, 17, 9, 10,137, 33, 23,120, 75,164, 43,178, 64,239,109,247, 30,243,250,195,101, 6,255, 16, 5,
+ 46,141, 80,102, 76, 81, 65, 98,106, 7, 77, 38,165,181,166,192, 48,119,242, 6,201,143, 17, 24,135, 1, 44, 1,228, 24, 73, 25,
+ 33,153,106,194, 19,160,142,129,228,208, 57,133, 98,101,215, 69, 20, 61, 1,210, 57, 64,122,136, 12,136,201, 44,103,157, 35, 36,
+120, 92, 18,240,232, 82,241,252,242, 41,220,248, 5,160,131,161, 28, 39,233, 42,244, 14, 60,155, 3,186,114, 91,220, 27,195,177,
+118,247,174, 56,177, 46,123,199,173,251,178,237, 63,216,169,211, 28, 21,144, 73, 89,121,191, 65, 51,209,204,118,236,133,168,102,
+ 93, 97,162, 57,119, 58, 45, 6,180,252,160,104, 4,239, 20,159,223, 50,162,179,180,182, 82,136,164,217, 21,187,214, 6,116, 65,
+ 56,110, 61,184,103,248,162, 78,238,205,123,225, 18,134,210, 4, 82, 50, 80,147,227,112,192,156,166, 19,112, 47, 22,123,118, 44,
+ 38, 2, 82, 61,240,117, 39,187,129, 91, 19,150, 2,221, 55,250,241, 10,163,102,194,155, 52,196, 40,105,156,237,236,231,152,105,
+ 66, 69,230,226,191, 0, 0, 32, 0, 73, 68, 65, 84,136, 6,209,187,166,104, 31,154,194, 29,113,162, 14,248,155,148, 59,250, 34,
+ 49, 68,219, 80, 84,120,222,166,209, 24, 19, 86,171,115,252,202,135,151,248,225,171, 47, 48,170,179,201, 60,155,255,204, 77,207,
+ 76,145,166, 3, 89,116,249,121,210, 76,212,210,160, 32,149, 4,153, 17,145,147,186, 78,220,239,151,172,247, 76,192,237,218,102,
+202, 83,206, 17,137, 60, 79,166,211,176,205,135, 56,157, 46,164, 58,143,164, 42,191,156,162, 46, 98, 44,231,191,246,175,252, 17,
+158,127,245, 41,254,151,255,245,127,195,217,230, 12, 71,206, 71,122,106,159,190, 92, 15,221, 71,212,155,137,152,167,204, 40,150,
+169,108,146, 34, 82,106,215, 71,197, 85,144,150,140,255,251,126, 87, 54, 74,185,122,249, 10,170,130,255,254, 31,252, 79,248,253,
+ 63,252, 43,248,201,159,255, 48,239,129, 25,128,133,175,128,128,206, 59,196,104, 36, 47, 38,103,177,164,157, 67, 71,150, 53, 30,
+ 98,176,201,126,183,195,238,118,139,155,215, 55,121,103, 43, 8, 41,204, 16, 59,178,190,221,101,178,153, 18,146, 38,176, 35, 76,
+ 18, 13, 62, 87,115,136,115,100, 73, 21,174,235,240,250,110,135,237,126,143,205,122, 3,215,245, 57,101,143,192,222,231,123,193,
+118,236, 49, 70, 72, 10,214, 32, 59,211,143,123,103, 19,120,129,209, 61,251,188,227,141,217,167, 93,171, 43,101,225,197,244,157,
+199,170, 95,129,152,225, 59,159,209, 25, 6,179,183, 41,213,177, 53,244, 41, 39,198,129,208,173,122,116, 93,153,170,169, 22, 79,
+223,119, 21, 93, 76, 25,242,103,135,138, 64,121,239,176, 89,175,140,160,203, 12,118,198,170, 39, 82, 56,231,160,100,222,240, 73,
+ 34, 36, 41, 98,156,144, 98,200, 73,112, 89, 90,151,185, 84,196,148,127, 7,170, 9,143,231, 60,218,136, 52, 15,105,142, 66, 13,
+ 9,170, 1,158,109,205,160, 32,132, 8, 32, 5,128, 25,105, 10, 96, 10, 0, 19, 52, 1, 17, 57,171, 62,171, 22, 16,109, 13, 18,
+213, 8,144, 5,117,113,148, 99,154,157,135,144, 98, 8,130,176, 31,208,113,132, 91,245, 16, 48,166, 40,144,152,224, 73, 17,136,
+128, 24,224,105, 66, 80,179, 46, 98,215, 65,224,224,157,162,243,132, 33,117,160, 41,160,227, 4, 34, 87,239,167,141, 42,190,115,
+158,240,234,201,123, 72,175,159,194,197,159,154,203, 28,222, 2,136,125,155,172,243,118,160, 94,164, 32,234, 66,218,124,180,254,
+122,151,133,158,222,111, 87,109,114,244,230,235,146,199,226, 2,193,183,123,106,131, 37, 51, 60,203,246,117, 63,211,171, 50,185,
+108, 38, 25, 9, 8,112, 70,116, 40,161, 36,197,134,116,145,104, 86,190,174,168,132,183,114,204,136,180, 33, 48,203,208, 11,109,
+136,115,122,176,107, 46,122,120,105, 10,111,245, 33,105,166,200, 67,175,123,202,147,189, 96,217, 48,180,215, 90, 90,210, 89,227,
+ 20, 69, 7,197,181,101, 20, 23, 66,210, 41,178, 69,249,160,139, 49,197,108, 89,123,176, 75,110,102, 75,209, 54, 91,136, 22,157,
+155, 17,242, 14,118,205,249,238, 42, 51,176,203,172,231,245,106,141,120,253, 5,254,201,181, 66,213,163,227,252,222, 23,187,115,
+ 61,218,239,210,193,254,123,254,231, 25, 97,209, 74,226,195,156,169, 46,122, 84, 62, 68,196,118,135,153,157,140, 55,145,231, 78,
+ 60, 53,154,247,191,245, 51,169,166, 1, 38,239, 75, 97,194, 39, 63,251, 20,190,235,140,140,212, 76,182, 11,175, 21,201,102, 31,
+204,191,192,116, 62,239,175, 57,239, 67,255,201, 63,250, 63, 49,140,123,172,250,245, 1,113, 6,247, 90, 65,210,194, 55,241, 29,
+ 46, 2, 29,169,245,143,155, 12,109,155,133,185, 97, 5,222,236, 88,215,146,255, 94, 95,191,134,104,194,127,247, 63,252, 3,252,
+193, 31,254, 33, 62,253,217, 39,179, 68, 78, 52, 75,181,156,233,182,169,121, 55,121,186, 45,215,136,189, 67, 26, 71,220,221,222,
+ 96,123,123,135, 23, 47, 94, 97,187,221,102, 43, 82,131, 81, 67,140,112,121,106, 53, 66, 93,103,146,176, 24, 17, 37,229, 98,174,
+ 21, 77,211,188, 59, 86, 2,156,119,232,180, 67, 74,130,155,187, 91,184,156,134, 87,228,135,197, 30, 56, 69, 11, 4, 98, 98,116,
+125, 87,167,110,231,156,201,194,188, 3, 43,229,194,159,102,142,134,152,193, 73,105,186, 59,239,225,124,135,213,186,199,230,236,
+ 28, 33,152,252,142, 51,131,220,114, 21,236,222, 11, 26,193,249,164,232,251,206, 70, 39,181, 32,150, 82,108,147, 4,244,222, 91,
+161,205,250,109, 75,245,179,167,189,115,198,254,103, 82,248,222,220,227, 84,114, 65,207,206,160, 42,146, 45,120, 13, 21, 56,219,
+172,140, 65, 30,226, 60, 28,217, 77, 95, 13,110,236,254, 77,139,110,155,114, 64, 74,136,209,156,224, 50,111,130,153, 51,111,200,
+246,244, 84,238,129,148, 0, 7,104,226,172,120,176,247,230,152,145,196,242, 54,139,238,155,200, 2,164, 40,123, 2,184,204, 31,
+ 24, 18, 48, 13, 35, 60, 34,188,247, 80,202, 90,121, 49,119, 57,211,191, 43, 84, 13, 83,141, 81,209,107,192,154, 21, 68,107,136,
+ 50, 58, 82,232,138, 49, 97, 3,132, 61,148, 4,172, 12,102,133,194,227, 17, 41, 30, 60, 80, 92,157, 63,133,187,254, 2,101, 1,
+125, 31,169,244, 77, 37, 92,239,123,242, 14, 55, 98,104,194, 98, 74,144,204,183, 46,238, 51, 87,232, 20,130,224,203, 20,214,230,
+148, 23, 72, 61, 53,140,106, 87,139, 62,114,183, 60, 23, 15,226, 37, 45,182,250, 61,137,230, 76,241,214,196,164,181, 11, 61, 17,
+ 35,217,100,221,234,129, 86,186,117, 2,107,231,118,174,136, 65,171, 79,111,201,118, 52, 31,102, 52, 75,179, 92,157,250, 13,174,
+119, 77,249,242,139,137,105,137, 34,148,230,128,203, 4, 14, 44, 76, 89, 22,230, 39,245, 53, 46, 3, 74, 78,147,158,143,231, 51,
+ 58, 65, 72,156,155, 13,100,211, 5, 59,220, 36, 63, 20,167,136,207,162, 75,121,148,212,230,197, 58,147, 40,102, 3, 89, 27, 26,
+ 61, 86, 71,107,147, 33,223, 94,223,186, 29,210,165, 12,171, 50,224, 57,251,214,131,178,188,228,120, 53, 32, 34,111,227,118,191,
+ 85, 94,182,120,215, 7, 26,240,190,239, 23,159,167, 30,192, 13,154,139, 81,191, 94,153, 62,250,151, 32, 55, 41, 44,216, 31,127,
+242, 9,156,243, 22,207,249, 22, 20,128,222,124, 68,220,139,188, 31, 57, 33,221,119,141,244, 80,181,129, 74, 58,124,227, 49,194,
+140,187,219, 59,236,247, 59,252,183,127,252,247,240,111,252,155,255, 22,126,242,227, 31, 97,183,219,153, 59, 25, 8, 81, 18,136,
+115,156,172,239, 49,133, 17, 49, 4,155,142, 29,155, 86,188,120,114,135, 9,219,187, 91,220, 92,221, 26, 91,253,181, 53, 11, 22,
+201,106,136,142, 99, 7,223,117,121, 87, 63, 89,150,249,138,205,130, 52,150, 9, 79,234,231,103,125,156, 24,243, 28, 86, 68,152,
+ 56,147,219, 18,182,219, 29, 66,152, 48,238,247,120,248,240, 33,252,230, 2, 80, 51,138, 81, 88,152,145,133,158,216,196,236,189,
+135,243, 86, 36,137, 61, 48, 41, 98, 68,142, 80,237,106, 51,177, 90,173,224,187, 14,171,206,227,163,239,124, 7,251, 41, 98,188,
+186,178,123,222, 25,171,189,239,122,128, 8, 73, 3, 58,239,115,195,151,229,130, 76,232,185, 67,136, 17, 18,164, 58,237, 41,128,
+174,115,232,251, 14,196,200, 69,220,180,232,190, 51,207,121,231,156, 49,198, 83,192,122,181,202,235, 83, 5,231,188,139,110,221,
+155,199,125,182,109, 69,158,188,219,157,111,177, 8, 47,158, 35, 42,209, 20, 57,185,105, 41, 70, 48,166, 34, 72,232,188, 3,177,
+173, 18, 82,140,179,164, 78,204,242,202,148, 31,148,249,215, 10, 98, 55,231, 25, 16,114,131,160, 64, 70,116,152,115,138, 93, 14,
+172,138, 98,124, 3,199, 2,133,199, 20, 21,158,130, 49,190,102,226, 18, 56,103, 15, 40,121,196,164, 24,166, 8,164, 17,253, 42,
+161, 91,173, 1, 90,163, 39, 1,122,198,160, 27, 80,216, 3,156, 32,137, 17,226,132, 62, 18,158,116,130,235, 7, 15,160, 55,143,
+ 64,242, 13, 64,238,128, 4,167, 11, 87,185,251, 10, 59,189,169,184,211,177,164,246,168,128, 83, 67,242,173, 7, 20,225,126, 87,
+142,251,255,120, 21, 49,251,197,100,134, 6, 75,168, 59,235,193, 75,102,122,222,163,114,211,192, 72,201,159,213,185,232,151,137,
+ 76, 90,211, 19,109,229,105,218,228,167, 27, 84, 46, 52, 55, 14,213,119,188, 61,132, 51,241,108,225,213, 77, 51,149,174,222,158,
+149, 72,183,156, 73,202,107,227,182,251,162, 38,203,164,186,157, 81, 99, 72, 83, 10,211, 50,245,138,218,125, 49, 81,229, 27,168,
+ 30,250, 1,208, 98, 39,188,208, 29,147,158,208, 95,211,242,231, 30, 16,224,138, 71,124,129,247, 11,249,174, 77,194, 22, 44,225,
+250, 82,124, 25,173,201, 8,213, 69,137,102,232,162, 4, 96,200,129,156,170,114, 17, 96,145,180,197, 3, 32, 45,214, 7,217, 51,
+187, 33,106, 85,185, 98,213, 68,219, 3,205, 96, 40,235,226, 94, 91,232,162, 15, 30,157,227, 7, 36, 75,117, 42,234, 49,199,213,
+ 22, 85,195, 27,243,206,219,121,182,120,156, 19, 32,154,176,234,214,120,244,232, 33,190,250,242, 11,196,152, 83,173,190, 45,203,
+253,196,191,220,172, 55,153,132,165, 39, 73,233,135,200,211, 9,240,252, 45, 15,242,137,209,255, 84, 32, 68,235,113,175,244,206,
+ 91,123, 98,198,110,187,197,235,215,215,248,175,254,155,191,139,127,251,175,255,117,252,249,143,254, 12,195,126,143,126,189,198,
+195,135,143, 49,141, 19,174,175, 95, 2, 80,116, 93,143,243,139, 75,124,249,229,231,198, 7,105,100, 91, 83,136, 8, 49,224,238,
+230, 22, 87, 87, 87, 24,135, 1,219,221,174,134,169,196, 24, 17, 51,121,173,239,123,107, 63, 9, 88,173, 86, 8, 33, 96, 24, 45,
+ 95, 61,137,204,107, 27,157,219, 85,118,156,179, 1, 36, 79,137,214,172,166,124,126,196,152,240,232,241, 99,124,239,227, 31, 64,
+ 20, 24,135, 61, 66, 8,121, 50,183,162,146, 50,212,221,247,189, 89,165,166, 84,163, 79,189,115, 16,159, 32, 73, 45,188,102,179,
+ 6,145,195,170,115,248,248,227, 95,197,229,163,199,248,252,203,231,181, 72, 82, 86,188,148,115,172,239,186, 92,180, 29,138,187,
+107,129,206, 89, 24,222,155, 43, 92,185,199,147, 36, 56, 6, 84, 50,247, 41,239,241,157,239,192, 34,232, 58,135, 41,106, 86, 48,
+ 41,186,206, 1, 74, 85,147,238,189,195, 48, 1, 83, 24,179,214, 63,251, 50,104, 86,132,212, 9, 29,185,197,207,187,117, 40,132,
+ 4, 33,164, 28,128,147, 44, 42,183,179,253,127,137,133, 85, 41,215, 87,179,239,187, 93,195, 32, 10,141,193,130, 98,212, 60, 17,
+204,148,206,154, 0,202,188, 34, 87, 16,156, 76,182, 19, 53,135, 71, 38,201, 3, 75,204, 43, 8, 32,161, 52, 60, 89, 55,159, 7,
+ 5, 37, 27,202, 18, 19,182,137,177,191,139,120, 24,110,224,207, 19,200, 95,160, 39, 65,236, 24, 41,117,136,106, 33, 80, 78, 19,
+122, 34, 60, 89,121,124,249,120,133,237,203, 15,208,237, 94, 66, 57, 19,184, 79, 49, 92,168,237,162, 79, 65,240,173, 86,224,248,
+145,212, 83, 18, 96,154, 17,236, 54, 59,164, 34,210, 39,253, 38,222, 44,111,245,197, 89,170,194, 81, 77, 0,139,131,153,254, 8,
+ 97,225,196, 84, 94, 34,151, 67,182,228,155,107, 59,213,181,197, 17, 72, 85,130,182,244,110, 47, 69,124, 73,152,182, 73, 82,115,
+ 17,168, 6, 38,135,144,105,253,121, 90, 25,218,181, 0,211,172,123,215,236, 28,197, 77,103, 74,249, 61, 27,138, 96,255, 62, 54,
+ 49,123,203,240,145,229,132, 87, 3, 81,106,194, 89, 83,208, 15, 50,119, 79,235,176,117, 33,115, 43,154,117, 52, 19,114,149,171,
+193, 72, 54,115,200,138, 90,138, 93,126, 4,205,101,139, 79,154,182, 84,168, 62,171, 9, 90,142,156, 96,105, 76, 67,197,190,183,
+241,155, 59, 20,170, 59,226,234, 68,230, 26, 8,147, 14, 26,188,121, 69,129, 26, 97,201,142,178, 81,135, 84,211, 21,109,100,105,
+146, 25,200,142,249,232,154,241, 65, 37, 12, 49,162,235,186, 92, 40,155,198, 66,240, 86,214,250,201,172, 99,181,221,224, 56, 14,
+120,254,245, 30,190, 91, 97,181,118, 24,135, 61, 78,139,201,223,192,140, 59,181, 30, 56,116,138, 59, 85,208,245, 64, 35,255,174,
+157,249,194, 91,255,164,109,223,189,141,128,182,218,199,123,174, 27, 49, 99,191,219,225,245,245, 53,254,246,223,249,207,241,239,
+252,141,191,129, 31,255,232,135, 8, 49,225,189,199, 79,112,118,118,142,148, 34,134,225,206,108, 65,213,224,226, 97,191, 53, 2,
+215,170,131,168, 34, 14,123,203,238, 6, 44,106,245,246, 22,119,175,239,112,123,115,139, 97, 24,204,163, 33,195,196, 83,136,230,
+ 32,231,230,200, 81,151, 17,128, 88, 38,206, 26, 60,164,179, 76,143,230,180, 64, 99,222,231, 51, 32, 59,180,197, 24,177, 94,245,
+248,240, 59,223,181,226,170, 9,192, 10,196,200, 9,136,108, 63, 59,187, 79, 86,142, 70, 67,112,178,204,116, 51,105,217,108, 54,
+232, 87, 43,196, 20,241,236,217, 19,156, 95, 62,196,176,219,227,242,252, 12,211,112,137, 24, 39, 51,148, 9, 17,136, 38,185,235,
+ 10, 90, 67,130, 41, 10, 58,239,140, 23, 48, 77, 54,193,123,115,210, 16,153, 7,133,194,211,241,204, 53,104, 38, 37, 35,165, 17,
+ 2, 60, 59,248,205, 38, 43, 4,204, 42, 58,169,160,175,106,135,104,235, 32,226,121,106,204,207, 94,136, 41, 79,204, 25,250, 87,
+203,151,136, 73, 76,193,160,138,148,236,100,117,157,171,133,185,132,212,148,201, 90, 83, 52,253, 63,179, 65,229,146,208, 81,174,
+ 18,146, 0,182, 60,122,205, 18, 55,110,218,107, 81,128,178, 63, 64, 18, 5,229,180, 58, 81, 53, 21, 64, 77, 74, 51,109,123,177,
+132,165,140,234, 22, 39, 62,130,173, 94, 38, 85,188, 30, 20, 15,244, 14,221,133, 32,186, 11,120, 85, 36,207, 72,163, 7,235, 96,
+ 74, 24,102, 92, 50,225,217, 35,197,143, 31, 61,131,236, 62, 3,233, 53,136, 86, 75,249, 25, 53, 46,160,111, 37,176,157,248,234,
+129,130,132, 78, 44,219, 22, 3, 95,203, 61, 90,176,238,223, 76,167,157, 37,109,245,225, 53, 40,217,105,217, 99,231,105,145,180,
+ 78,235, 66,213, 92,116, 46,176, 77,220,166, 86, 95,235,124,131, 52,141,192, 2,112, 85,155,250,102, 35,149, 89,143, 46,135,211,
+124,179,215, 47,253,238,194, 90, 54,255,103,153,168,149, 44,140,133,218, 36, 41, 93,238, 51, 74,211, 96,172,253,172,119,172,193,
+ 39, 84,179,224, 19, 90, 83,157,246,224, 46,122,247,165,102,187,248,188, 43,200, 72,122,153, 11,208,134,212,232,161, 6,130,204,
+166,146, 42,124,213, 76,233,153,133,235,178, 9,132,178, 69, 65, 74, 35, 79,211, 98,123,219,242, 0, 14, 62,118,119, 56,177,231,
+104,221,210,116,186,252, 58, 60, 59,115, 9,203, 86,179, 71, 86,180,249,197, 59,180, 68, 66, 28, 7,127, 28, 57,144,101,159,234,
+ 3, 30, 65,107, 5,235,156,199,122,211, 99, 28,246, 85,223,127,168, 67,151, 24,177, 57,191,196,251, 23,231,120,125,245, 50,175,
+ 12,170, 28,163,162, 7,111,124,240, 22, 79, 85,123,147, 88,172,235, 20, 2, 30, 61,186,196,249,249, 26, 95,239,119,184,215, 36,
+230, 91, 32, 98, 68, 75, 21,128,222,107, 51,221, 82, 49,223,153,247,222, 86,157,122,119, 67,142, 99, 96,103, 5, 71, 3,187,191,
+ 33,189,141,136, 48, 13, 35, 94,189,120,129,255,232, 63,249, 79,241, 31,252,205,191,137, 79,127,246, 9,216,123, 60,125,252, 62,
+ 28, 51,166,105,196,235,215, 87, 57,224,102,133, 48, 5,132, 48, 97, 24,246, 54, 97,165,204,108,201,100, 44,133, 96, 28,246,120,
+125,125,131,237,221, 14,251, 97, 64,202, 57,233,206,113, 46, 32,118, 25, 98,140,217, 23, 29, 53, 33,205,244,219,102, 37, 45,213,
+147, 26,149,208,101,225, 41,182,238, 41,118,172, 81, 12,214,151,148,176,190, 56, 71,215,175,112,115,123, 99, 73,107, 93,135,213,
+166,207, 17,171,130,190,247,240, 25,114, 7,229,228,195,124, 63, 77,147, 77,245,157,247, 88,159,109,192,222, 35,165,136, 71, 15,
+ 46,241,254,147,103,230, 33,175,138,205,122,133,167, 79,159,224,238,238, 14,251,221, 14,228, 92,158,108,197,116,213,108,133, 44,
+ 36, 75,146,115,222,103, 29,122,196,249,249, 25, 20,140,105,218,163,184,100,120,239,205, 32,140,230,187,196,178,206, 57, 59, 26,
+218,207, 4, 17, 82,180,103,194,229, 6, 64,179,169, 11,193,120, 6,162,102,183,139,108,198,163,133,180,150, 51,234, 75,172,109,
+ 8, 17, 12, 75, 92, 3,204,142,149,216,155, 12,175,145,184, 38, 49, 25,160, 99, 2,195, 80,130, 20, 5, 94, 5,206,119, 89, 95,
+110, 77,138,119, 14,145,156,117,226, 10,251, 30,102, 64,205,215,191,164, 52, 69,181, 52, 62,147,172,113, 62,183,178, 37, 45,155,
+108, 47, 73, 73,107, 12,153,121,111, 50, 64, 38, 69,199,132, 8,135,219, 0,156,109, 71,172, 55, 10,183,190, 64,114, 43, 64,200,
+ 50,228, 73, 17,148,208,199,132, 15,250,128, 47,223,223, 96,124,249, 33,252,120, 13,117, 98, 35, 32, 53, 42,169,156,136,247,182,
+ 39,242,109,207,235,114, 96,161,230, 24,106, 70,218, 6,154,111,137,236,198,203, 58,192, 50, 79, 28,117, 30, 57,208, 69,164,133,
+165,237, 35,139,106,178,138, 34, 97, 82, 69,165,100, 85,203, 80,213, 76,180, 59, 80, 33, 83,201, 96,207,254, 63, 89, 74,198,205,
+ 91,147,198,100, 5, 77,113, 23,154, 93,220, 10,140, 85, 26,138,121,146, 63,152, 58,202,174, 88,117,113,198, 85, 72, 67,203,106,
+ 32,255, 95, 38,167, 73,179, 30,224,210,112, 84,109,249,113,120,138,228,139, 45,208,163,195,158, 26,147, 1,234, 58,172, 32, 72,
+ 33,206,194,169, 38, 88, 35, 39,146,219, 14, 92, 48, 23,177,102, 13, 65,217,194, 54,169, 77,235,164,138,169,200,187,136,234,247,
+ 84,222, 3,205, 69,186,109,162, 36,251,234, 57,180,156, 0,187,192,133, 59,193,236,208,123, 15,149,180,144, 22, 40,208,216,187,
+ 82,229, 95,212,127,159, 57, 5,220, 48,222, 91,127,252,118,253,160, 13,241, 80, 23, 21,207, 30,230,142, 8,145, 40,171,145,143,
+117,160, 38, 53, 34,156,173,123,188, 46, 97, 49,196,217, 51, 0, 11,207,251,123, 31,186, 3,114, 92,129, 83,202,183,117, 93,135,
+237,246, 22,187,237,237, 59, 19,230,238, 1,221,230,107, 68,247, 90,222, 47, 38,252, 67,203, 93,194, 27,180,172,122, 90,245,166,
+208, 26, 76, 18, 99, 56,206, 16,192,236, 51,175,120,115, 65, 79, 41,225,249,243,175,240,239,254,123,255, 62,254,195,191,245,183,
+240,197,231,159,161,239, 87, 56, 63, 63, 55,251,213, 56, 97,187,189,133,138, 65,238, 73, 18, 66,152,178, 43, 27,106,147,100, 26,
+109, 70, 12, 19, 94,191,190,198,213,203, 87,216,237,246, 72,154, 32,154,170,215,121,154,178, 39, 58, 49,192, 90,205, 86,168, 72,
+ 22,101,118,122, 91,186, 26,154,197, 51,164,252, 94, 27, 82, 98,176, 66,110,210, 77,105,108,132, 45, 68,101, 24, 20, 78,197, 56,
+ 1, 92, 10,137, 86,223,115,107, 18, 45, 14,117,187,221, 97,191,219, 99,179, 94, 97,181,222, 96,181, 94, 89,208, 12, 17,158, 62,
+125, 6,102,135, 20, 66,109,164,206, 55, 43,120,118,232, 87,198,209,152,198,189, 89,107,171,160,227,110, 94,183,229,189,112, 8,
+ 17, 23,103,107,124,240,236, 41, 34, 60,158, 63,127,142, 52,238,224,125,103, 62, 12,171, 46, 91,160, 74,158,200,237,222,240,206,
+ 21,230,113,181,168, 14, 33,102,162, 97, 66, 71,214,224,128,103,143,130, 66, 20, 76, 41, 65, 97,185,235, 41,165,220, 24,216,125,
+163,154,160,204,217,215,222,174, 3, 51, 32,142, 49,133, 8,166, 0,239, 60, 82, 18,120, 36, 16,117,153,123, 96,103,167,243, 14,
+ 73, 9,140, 4,100,215, 58,205,205,153, 39,216,106,139, 93,254, 92,165,114,106, 98, 76,246,187, 49,163,176,164,128,103, 0,108,
+230, 54, 76, 9, 10,135, 40, 2,206,144,191,138, 49,165, 29,153,231,123,151,235,200,221, 4,168,140,184, 80,193,197,217, 37,198,
+139,115,140,131,135, 78,123, 8, 34,134, 4, 60,148,136,103,239, 9,126,250,240, 67,248,231,159,129,176,133,162, 95, 28,100, 84,
+144, 45,253,229, 73, 94,143,228,111,153,155,213,102,185, 23,110, 82, 69,182, 23, 60,186,211,164, 58, 15, 46, 5, 44,195, 61, 50,
+ 51,216, 11, 35, 56,230, 46,193,145,193,232, 9,115,152,252, 33,104, 72,197,205,171,184,180,229,146, 35,106,191,168,146,171,180,
+200,160,172,176,112, 59,105,168,204,210,176, 38,119, 60,181,204,120,165, 5,115,144, 27,242, 91, 11, 99,104,203, 88,215,134,189,
+ 93, 19,227,200, 18,232, 26, 88,158,235, 26, 67, 27, 79,113, 99, 19,244,222, 97, 77, 4,150,132, 49, 37,236, 27, 98, 32,211, 92,
+124, 68, 18, 36, 67, 97, 51,147,188, 85,195,207,102, 43,156,229,108,165,153,224, 22,119,201, 86,184,150, 62,164, 11, 95,119,106,
+ 36,127,109,249, 73,117, 98,215,252,223,188, 32,180,149,102,170,160, 40,230,239,156,176, 31,179,193, 69,201, 72,174, 13,134, 64,
+ 5, 53,109, 44, 53,218,231,170,210,160,185,176,107,115, 13,237, 87,113,110,216,102, 26,104,101,190,194,210, 1, 37, 69,220,109,
+ 67, 37,213,233,129,122, 0, 0,124,215, 97,191,189,197, 63,189,125, 13,207, 46,175, 3,102,115, 8, 87,236,126,239,183,106,107,
+124,235, 15, 16,173,131,156,244, 35, 77,255, 91,186,115,189, 15, 16,160,123,190,120,226,251,233,136,114,163,239,214,242,183, 93,
+150, 40,152,204,166,244,180, 70,144,222,184, 15,108,175,193,151, 95,124,129,127,237,175,254,235,248, 59,255,197,127,137, 23,207,
+191, 6, 20, 56,219,108, 48,141, 19, 0,212,108,242,205,217, 57,166,105,196, 52,142,144,204, 86,111, 5,143, 49,153, 73,200, 52,
+142,120,125,245, 26,183, 55,119, 24,134, 61,134, 97,192, 56,140, 72, 73,102,255,116,192,228,106,229,185, 77,185,136,229,137,223,
+188,220, 39, 43,254, 60,163,118, 41, 89,162, 27, 96, 19,126, 8, 22, 20,147,146,105,229,189, 51,114, 90,200,217,234, 5, 25, 96,
+ 98, 51,147,129,153,212, 88, 20,234, 4, 71,140,110,213, 67,146,253,156,187,219, 91,172, 86,198,108,183,148,183,128,139,139,115,
+ 60,125,242, 20,231,151,151,245,119,163, 30,204,166, 29,239,215, 43, 92,169, 34,197, 9,147,152,241, 75, 97,197,175, 87, 61, 66,
+ 8,216,110,119,120,120,121,134,143,190,243, 17,152, 59,172,187, 14,183,231,151,120,189,191,195,218, 17,184,235,178, 91, 28, 99,
+138,161,238,173, 69,204,127,127,211,247, 8, 82,118,209, 12,176,195, 24, 34, 40,251,229,179,101,189,150,110, 7,170,201,136,134,
+ 42,245,172,167, 92,192, 19,212, 76,121,212,108,119, 61, 43,156,239, 16,162,128,210,100, 43, 46,139, 87, 67,208,108,158,227,121,
+ 14,164,130,194,119, 22, 3,171, 81,234,249, 84,216,248, 76, 10,223,121, 16,155,172, 48,101,197, 2,168,240,108, 82,246,179,103,
+ 36, 0,172,169, 54, 67,148,146,165,132,170,130,201,162,115, 89, 8,156, 29,252, 98, 50, 62, 0,169, 88,141,202,231,246, 77,100,
+200,205,132, 39,124, 13,255,192, 67,232, 28, 81, 12,165,152,146,160, 31, 5, 79,251, 61,190,124,127,131,120,245, 12, 62,254,184,
+ 30,168, 71, 1,212, 11, 47,136,119, 6,224,223,125, 37, 72,199, 11,219,195, 48, 25, 58,153,206,161, 45,252,110, 31,186,167,121,
+ 50,173,132,169,146,135, 93,204, 88, 26,178,154,149, 56,169, 50, 55, 37,173,211,183, 77,129,102,248, 15,244, 80,231,192, 52,130,
+163, 34, 20, 0,152,168,181, 28,174, 30,236,218, 76,121,101, 47,203, 71,242,176, 70,171, 71, 2, 40, 47, 38,234,170, 3,167,217,
+ 60,163,101,211,215, 56, 86, 66,157,206,171,187, 90,129,235, 27,233, 86,225, 11,192, 49,206,153,113,102, 11,102,187,241,147, 77,
+207,109,140, 43, 67, 32, 65, 48, 54,210,183,147, 5,162, 20, 53, 73, 75,227,152,166,176,148,195, 58,234,145, 81,155,221,244,167,
+ 6, 63, 34, 80,138, 8,162,240,190,203, 70, 58, 84,165, 65,200, 77, 13, 23,143, 1,109,253,248, 11,187,126,102,165,115,215,227,
+193,217, 6,251,187, 91,132, 36,213,110, 85,178,156,142,139,125,120, 94,185, 80,163,251,174,153,111,122,172, 53,111, 33,253, 57,
+ 30,118, 78, 88,171,168, 70,189, 22,115, 10,214,204, 18,157, 73,122,247, 58,220, 97,249, 99,233,144,124, 32,247, 49,233,191,165,
+140,237,190,218, 93, 8,153, 39, 26,253,153,228,181,104,245, 78, 62,186, 39,127,239, 1, 71,206,210,227,194,188,103, 62,209,105,
+104,115,119, 55,241, 70, 11,233,218,231,159,125,134,191,244, 47,252, 30,254,238, 31,255, 61,220,221,220, 96, 24, 7, 60,126,252,
+190, 49,160, 9,152, 98, 64, 74,130,174,235, 17, 83,196,126,216,155, 21, 41, 51, 72, 20, 33, 37,164, 24,145, 98,196, 56,141,136,
+ 49,100,123,216, 1,195, 96, 13, 64,152,166, 74,100, 83, 53,246,121, 20,201, 49,169,150, 83, 62,134, 80,227, 73,251,213, 26,143,
+159, 61,193,229,249, 37,156,243,112,157,179,201, 46,239,217,119,187, 1, 97,154,114, 66,153, 71, 18,193,126,191,199,139, 23, 47,
+241,242,249, 87,198,145,144, 14,251,253, 14,236, 87,182,107, 39,201, 17,176,154, 89,249, 33,107,194, 9,195,126,196,126,191, 67,
+156, 2,250,245, 10, 23, 23, 23,232,251, 30,190,235,112,126,126,134,167, 79,158, 98,181, 94, 35,198, 88,249, 7,142, 24, 96,147,
+127, 81,230, 27,149, 70,104,149,253,215, 41,127, 54, 41,153,187,221,122,213,227,233,211,103,240,221,186, 94,143,139,179, 13,246,
+171, 13,124,231,224,186, 46,179,251, 21,155,213, 42,167,180, 9,224,243, 64,150, 12,157,113,157, 7,148, 49, 69,128,145, 16, 68,
+ 17,119, 3, 54,155,149, 21,189, 24,235,121, 27, 10, 19, 94, 41,219,223, 70,187, 71,115, 46, 69, 18,173,254, 7, 41, 38,155,168,
+ 83,130,103, 51,217,137, 73,161, 26,176,234, 61, 18,156, 53, 16,204, 89,150, 12,243, 41, 33, 66, 84, 6,171,237,236, 29,178,186,
+128, 45, 92, 70, 51,138, 82, 26, 20,104, 66,239, 76,167,206,162, 96, 18,136, 0, 41,150, 59,182,172,217,108,119,174,130, 42, 1,
+ 20, 9, 32,149,156,155,129,106, 83,139, 60,204,109,197,131, 94, 71,188,167, 47,176, 58, 79, 72,253, 26, 41,117,208, 52, 96,167,
+192, 35, 31,240,236,241, 10,159, 62,252, 21,184, 23, 95, 1, 24, 64,232,142,106, 38, 53,103, 44, 20, 71, 24, 29,221,135,221,209,
+219,123,244,227,222,159,170,244,173,245,242,192, 34, 15,228,216, 4,210, 59, 34,235,140,106, 48, 10,224, 75,104, 74, 89, 89,113,
+ 97, 38,115, 53, 35,177,248,210, 46,107, 20, 83,102,187, 83,131, 10,102, 66, 21,102,242, 5,229,212, 32, 42, 54,176,121,148,150,
+ 3,114,217,156, 73, 94, 18,225,150,124, 63, 82, 90,190,241,134, 33,159,114,103,202,218, 28,141,101,167,157, 59, 55,215,170,127,
+213,208,135, 82,219,181,144,202,154,230,160,188, 39, 35, 14, 38,236, 11, 65,163,209,216, 83,187, 19,205,238, 82,220,198,146,158,
+200,244, 38,157,249,249, 45,196,220,238,242,239, 83, 72, 74,238,186,151,122,237, 92,228, 83, 2,175,206,177,242,140,105,119,135,
+ 8,158, 73,148,101, 63,173,116,164,130,166, 19, 21,169,218,206,102, 75,198,122,109,138, 99,219, 1, 23,179,137,196, 57,178, 57,
+110,205, 82, 90,191,228,229, 22,121,201,116, 63,178,139,109,189,228,181,225, 76,228, 6,243,237,210,183,172,174,160, 25, 85,210,
+ 95,162,209,251,236,194,119,112, 97,233, 77, 43,185, 54,108,119, 89,218,191, 53,247,190,248,226,211, 9,147,157, 98,138,164,186,
+ 80,128,180, 7, 2, 51,227,235,175,191,198,247,126,245,251,248,227,191,255, 63,194, 57,198,171,219, 27, 60,124,248, 30, 66, 8,
+ 0,145,201,194,198, 1,222,117,136,113,194,110,191, 71,152, 34, 20,179, 22,221,114,204, 35,134,113,192,118,187,207, 16,244,128,
+ 24, 99,118, 50,139,112,204,136, 84, 18,182, 10,106, 69,216,239, 7, 12,251, 1,151, 15, 30,224,253,103,143,113,113,121,129,247,
+223,127, 15,151, 15, 30, 97,189, 94,193,121,159,141,147,162, 21,224,124,239,143,147, 5,247,244,171, 30, 33, 76,128, 18,134,105,
+194,246,110,135, 47,190,248, 2,159,252,228, 39,248,250,139, 79,113,123,125,141,199,207, 62, 68, 4, 48, 78, 99, 70,129,124,157,
+148,156,115, 8, 49, 98,216,239,161, 10,156, 93,158,227,225,195,135,120,255,241, 19, 92, 94, 94,162, 95,173,178, 70,219,200,100,
+229, 89, 40, 73,109,197, 31,193,230, 0,194,170,239,113,121,113,150,253,230, 71,131,219,147,173, 38, 86,171, 14, 31,124,240,193,
+255,203,218,187,255,200,150, 93,231, 97,223,218,143,115,170,170, 95,247, 57,119,158, 36,135,164,169, 68,146, 19,197,176, 41, 74,
+ 12,160, 88,176, 99,202,142, 66, 57, 8, 5, 5, 81, 34, 5, 14, 16, 32, 49, 12,200, 48, 19,201, 82, 20, 58,201, 95, 21,196, 72,
+ 96, 33,137,129, 56, 54, 32,219, 17, 36,146, 67,147, 51,195,153,251,234,219,143,234,170, 58,103, 63, 86,126, 88,107,239,179, 79,
+117,223,190,119, 24, 15, 32,241,190,186,171,250,212, 57,123,173,245,173,239,129,126,113,160,201,108, 14,139,197, 18,235,109,192,
+114,217,163,211,116,181,174,243,213, 2,150,172,151,157, 55, 65, 51,203,229,126,137,154, 50, 71, 96,116, 94, 4,187,227, 46,232,
+ 80,146,117,211, 85, 98, 78, 9,129,197, 4, 40, 69,137, 91, 45, 81, 20, 4,145,225, 9,255, 66,213, 49,134, 52,143, 62,131,140,
+ 3, 57, 35, 36,102, 67, 72,138, 18,120,205,113,103,229,167, 24, 2,114, 18, 7, 16, 73,163,243,154, 48,151,166, 21,106, 78,181,
+145,112,214,105, 48, 13,192, 73, 34, 91,115,140, 98, 90, 4,130,181,114,190, 39, 38, 64,141,118, 50,132, 71, 96, 89,220,226,178,
+162,158,134, 8,137,132,131, 68, 57,193, 16,227, 50, 19,198, 23, 17,247,194, 51, 44,142,238, 96,179, 56, 4, 6, 2,120,132, 99,
+131,183, 86, 9,159, 62, 60, 65,126,241, 16, 38,255, 0,108,220, 75, 23,229, 83,131, 78, 55,148,240,207,126,162,240,109,240, 60,
+166,172,139, 89, 44,213, 75, 8,174, 46, 23,166, 56,113, 49,108,170, 26,102, 80,115, 64, 87,147,154, 44,198, 37,108,192,214,129,
+ 92, 64,151, 69,231, 28,179, 76,233,197,192, 70,138,113, 0,101, 32, 68, 66,210,201,217,206, 88,229,212,248,174,163,208,222,164,
+216,151, 44,234,107, 54,216,109, 46,120,209,140, 55, 5,252, 6,249, 82,214, 7,173, 72,218, 50,241,222,174,184,236,170, 49,147,
+146,213,139, 74,140,148, 35,182, 21,198, 39, 13, 40,152,124,226, 51,230,239, 97,142,212, 52,140,119,149,162, 77, 42, 2,154, 86,
+ 4,144, 12,250,214, 35,160,196,170,230,198,143,158,170, 43, 24,205,237,191, 33,144,220,225,234, 8,143, 78, 60, 62,250,209, 37,
+ 82,158, 75, 32,102, 41,102,123, 13,132,185,118, 29,196,181,233,242, 92,236, 29,171, 65,134,168, 70, 27,168,149,155,117, 9,170,
+151,118, 53, 52, 52,147,245,109,201,206, 46,159, 9,221, 4, 87, 55,136, 80,190,161,233, 40,228,153,150, 53,206,196,175,182,119,
+ 82,216,191,149, 14,162, 65,138, 62,115, 41,229,155, 99,106,247, 41,252,175,226,228, 95,127,117,126,141,119,115, 3,190,254,146,
+221, 3,105,146,224, 53,145,224, 94, 65, 63, 61, 61,197,114,185,196,239,253,193, 31,226,225,195,135,248,209, 15,127,136, 7, 15,
+ 31, 0, 96,164, 32,186,228, 33, 12,112,206, 99, 28, 7,236,182, 59,101, 77,139, 18, 35,165,136, 48,142,184,186,186, 66, 76, 9,
+219,205, 6, 87,235, 13,198,113, 64, 24, 70,196,152, 16, 83, 64,136, 81,116,217,149,156, 37,215, 96,125,113,129,197,114,133,191,
+240,213,191,136, 55, 30,189, 5,128, 16,194, 14,171,197, 2, 57, 49,118,187, 29,226, 56, 10, 75,218, 72, 33,141, 81, 33,218, 28,
+ 97,172,197,110,183,197, 56,142,106,253, 26, 49,108,175,112,124,176,194, 87,126,234,167,224,187, 30,159,126,244,175,208, 47,150,
+ 48, 93,135, 20,162, 36, 80,214,204,120,194,102,179,193,110,183,193,209,225, 17, 86, 71,199,232, 59,135,207,127,238,115, 56,190,
+123, 15, 49,196,106, 34,149, 42, 97, 77,136,108,229,185,172,107, 1,125, 6,156, 53, 88, 44, 22,186, 54, 16,175,247, 24, 51,188,
+115,120,231,173, 71, 56, 60, 62,209,102,194,193,169, 27, 29,215,164, 13,160,239, 60, 22,139, 37,182,187, 17,153, 89,226, 82,173,
+ 5,231,136, 69,215,193,120,175, 70, 61, 9,227, 40,122,114, 99,128,213,178, 23,137, 94,150, 41, 58,178,236,219,115,138,250,121,
+229,138,232,100, 22, 14,133,129,146, 3,203, 90,150,156,114, 12, 50,156, 90,222,130, 12, 58,103,116,181, 34,158,237,210,196,200,
+ 73, 85, 38,244, 33,148,102, 65,216,250, 68,185, 58,108,150,208,165,114,246,139,230,156,244,252, 18,167,203,226, 67, 95,152,242,
+149,156, 77, 82,188, 57, 75,154,157,183, 70,232, 97,138, 90, 20, 19,171,196, 9, 57, 3,148, 51,156, 3, 64, 22, 59, 54,120,113,
+149,241,208,156,225,248,196, 98, 99, 14,129,193, 96, 68,192, 49, 51,238,221,205,120,124,252, 22,186,211, 79, 0,147, 20,204,230,
+151, 22,246,121,212,234,109,241,200,183, 31, 47, 47,253, 43,194,204,252,108,223,221,165, 58, 26,214,236, 10,130,227, 28, 85,166,
+129, 50,170,130,139,156,141,129,168, 7, 55, 81, 9,250, 40, 6, 46, 25, 57,109, 5,253,214,137,205,144,146, 89,114,105, 0,104,
+ 70, 50,179,147, 39,205,100, 32, 32,153, 62,117,114,157,180,238,133,180,198, 83,193,172, 4, 31,154,147,207,168, 20, 60,185, 52,
+ 73,208,113, 97, 98, 82,179, 39,231,249,244, 88, 8,126,185,236,210, 27, 19, 6,106, 72, 69,134,167, 93,255, 54, 1, 94, 17,135,
+ 84, 11,196,244, 62,120, 70,230, 83,248,132,120,111, 22,157, 88,234,109, 49, 45, 63,167,130, 62, 8,152, 80,141,210,184,236,195,
+ 60,243,237,229, 68,246, 26,206,159,226,195, 75, 66, 38, 91, 67,239,139, 28,207, 52,208,110,249,190,197, 76, 39, 53,211,111,166,
+169,161, 40,142,111,204, 37,228,167,188,239,182,176,183,164,254,102,202,214, 9,134,149,232, 86,194, 43,138, 50,118, 70, 8, 43,
+205, 29,115,227,253,191, 55,245, 55,220,133,234,249,255,154,197,184, 76,233, 69,178, 88,238,249,207, 20,164,254, 26,117,118, 63,
+201,244,230,160, 37,198,220,112,136,247,186,254, 91, 28,172,170, 10,227, 6,223,246,107, 95, 70,141,135,245,205, 36, 68, 50, 6,
+103,103,103, 72, 49,226, 15,190,243, 15,240, 51, 63,243,179,248,211, 63,253, 19, 28, 31,157,200,129,170, 83, 90, 72, 17, 93,215,
+ 97, 59,236,176,217,108, 17,194, 40, 33, 42,163, 22,236, 24, 49, 12,178, 43,143, 49, 97, 24,119,136, 41, 32,197,132,171,245, 6,
+235,171,181, 90,150, 38,205,221,158, 28,218,182,195, 14,119,239,222,195, 47,252,210,215,241,249,247,223,199,233,179,231,120,252,
+201,167, 24,118, 3,182,107,105, 18,172,198,154,166,152,208,245,157,200,228,212,108,198, 89,135,113, 24,113,181,185, 82, 91,220,
+164, 4,183,157, 36,196,109,183,184,119,247, 46,182,155, 43, 60,127,254, 12,171,195, 99, 56, 47,209,176,163,202,183, 54, 87, 87,
+224,148,112,247,254,125, 28,157,156,160,243, 14,239,190,251, 14, 30,188,241, 8,227, 56,194, 57,163, 36, 68, 97,144,119, 93, 39,
+215, 47, 41, 83, 95, 37,125, 4,128,172, 20, 95, 50, 6, 29, 8,135, 7, 71,184,204,140,156, 34,142, 14, 86,184,119,239, 46,142,
+143,143,229,153, 80, 73,157, 87,155,218, 66, 46,180, 70,164,115, 33, 38,120,111,197,198, 86,255,125,140,178,230,240,234, 45,111,
+141, 67, 74,194,125,113, 86, 28,215,156, 53,202, 89,200,146, 79,159, 19, 18,179,236,200,247,154, 90, 71, 4,235,156,236,212, 51,
+ 43,106, 24,107, 2, 30, 89, 87,147,233,228,241, 21,132,214, 42,193, 78,162,110, 51, 34,107,118, 72,206,162,107,119, 29,198, 49,
+192, 33,193,122, 7, 34,171,105,112, 64, 98, 3,112,150,179, 56, 50,200,202, 10,210,116, 14, 57, 11,162, 17, 99, 9,111, 41, 13,
+ 19,193, 50,131,156, 65,130, 1,165, 84,179,140,140, 41,254,241,172,191, 87, 11,110, 93,109,178, 5,214,209,128, 46, 34, 30,208,
+115, 44, 14, 9, 67,183, 66,136,140, 85, 74,120,103, 21,240,236,193, 61,228,179,135, 48,249, 67,213,207,223,238, 36, 87, 19, 13,
+ 75,180,244,109,228,153,159,232, 72,153,124,229,105,198,202,106, 9,240,147,185,154,147, 16, 23,101,182, 43,187,148,107, 74,154,
+ 30,216, 58,225,154, 2,184,178, 78,221,172,201,109, 6,240, 74,222,128, 17, 66, 87, 80, 88,187,218,202, 50,131,205,164, 58, 23,
+168, 13,213,154,112,154, 12,139,228, 13, 21,190,206,152,116,231,197,205,173,100,248,202, 3,141,121, 20, 42, 48, 35,166,205, 19,
+195, 75,193, 87,189, 55, 97,143,113, 92,118,232,164, 49,146, 4, 50,194, 64, 47,255, 38,237,229, 85, 51, 21,174, 1,207, 35, 80,
+ 43,223, 80, 17,130,166, 40,215, 9,149,247,145, 1,198,200,147,127, 59,215,200,214,249,148,122, 83,147,192,123,187,234,152, 10,
+196,156,235, 77,183, 48, 6,137, 35,198,204,176,218, 5,115, 99,179, 89,109,103,169, 41,150,141,219, 81, 86,151, 64,211, 64,221,
+212,198,196, 98,110,111, 91, 69, 21, 57, 79, 97, 38,204,205, 42,165, 72, 17,169,222, 27,153,231,166,165,109,131,176,175,157,103,
+213,103,243,107,153,176, 77,206,137, 44, 25,195,211,105,158,159,145, 0, 0, 32, 0, 73, 68, 65, 84, 39,246, 19, 60,112, 55,237,
+210,185,113,108, 37,126, 37,221,109,198,120,111, 35, 33,248,117,252,245,246, 34,112,107,194,215, 13, 30,249,116, 75, 67, 64,100,
+112,113,126,142,113, 28,241,247,254,187,223,197,215,191,254,239,226,187,127,246,167, 88, 46,151, 56, 56, 60,196, 56,140, 26,170,
+ 34, 48,238,122,189,197,102,187, 17,227,150, 81,136,107, 33,140,202, 92,150, 16,143,138, 66,105, 97,218,165,157,236,221, 57,193,
+ 24,135,196, 65, 14, 92, 38,132, 20,177,221,238,112,116,176,194,207,254,219,255, 22,222,126,247, 93, 92, 93,172,241,252,217,169,
+ 72,200,188,192,252,187,221, 78,167, 75, 57,172,183,195, 78,166, 53,205, 45,119,206, 97,179,217, 97, 24, 70,128, 25,195, 24, 48,
+ 12, 59, 45, 54, 73, 50,217, 99,196,189,251,247, 17,195,136,113,183,147,168,215,237, 22,200, 9,214,123,248,126,129,123,247,238,
+ 98,181, 58,128,181, 6,239,189,247, 30,238, 63,124,136,156, 19,250,174,131,177,182,178,239, 23,171, 21,140,181,216,108,182, 88,
+ 56,171, 33, 71,178, 55,142, 33,202,185,105,196,155,157,188,193,202,202, 30,221, 25,224,238,221, 59, 56, 60, 60,146,116, 53, 67,
+176,222, 3,156,177, 90, 45,113,113, 53, 98,216,109,112,120,176, 68,223, 47,132,109, 14, 96,177, 92,130,200, 96, 55, 14,200, 73,
+ 52,247, 76, 50, 17, 19,184,166,199,121,239, 48,236,228, 51, 35, 35,246,170, 69, 9, 33,187,124, 41,218,101, 21, 67,196, 88,116,
+174,230,180,179, 74,161, 10, 47,201, 84,139, 91, 13,159,210,194,154,115,243,108,150,120,212, 18,234, 98, 9,228,156,248,191,115,
+134, 51, 4,134,149,137, 93, 35,110, 51, 41, 76, 15,249,125,137,106, 37, 18,197, 20, 51,195, 25,134,235, 61, 82, 18,103, 65, 25,
+165,160,186,251,105,130,167, 6,127, 44,254, 5, 70,135,185, 76, 22, 49,101, 24, 22,199,195,133, 3,182,236,113,118, 5,220,119,
+ 47,128,149,195,128, 21, 98,218,224,158,141,184,119,223,227,233,227,183,209,157,127, 10, 50, 9, 12,119,171,151,195,204,212,185,
+ 9,241,186, 70,160,249, 9,246,234,184,134,248, 22, 18,184,174,206, 52,192,172,181,159,117, 33,103,201,156,213, 9, 44, 53,187,
+222, 88,242,203,155, 84, 51,163,147,112, 86, 79, 99,111,132,100,103,181,228, 26,155,209,177,216,200, 70,213,188,143,108,145, 12,
+ 43,243,122, 98,168,167,214,241,173,232,217, 85,219, 77,205,100, 37,182,135,178,231, 55,181,192,105,145,213, 93,126,235,239, 62,
+ 47,208,194, 42, 47,146, 53,130,176,249, 77,211,233,112, 33,151, 53, 71, 95,185, 33,202,190,183, 72,220,108,141, 84,155,100, 65,
+ 45,230, 74, 13,207,124,182,255,109,246,234,118,150, 13,142,102,245,176, 23, 54, 83, 94, 95,215, 13,220, 76,243,179,228,181,107,
+232,130, 74,220,244, 51,104, 33,238,222, 16, 66, 54, 24, 74,236,100, 43, 25, 3,207,172, 68, 39,187, 87,110,212, 14,251, 62,248,
+ 37, 21, 15,123,252, 1, 93,145,236,233,209,115, 49, 6,169, 36, 66,158,165,217, 97,175,144, 51,243,245,120, 67, 52, 54,151, 51,
+114,221, 77, 15, 72, 67, 8, 99,154, 77,209,252,175, 49,145,109,182, 9,185, 33,199,190,160, 10, 32,122, 5, 23,189,109, 80, 95,
+218, 77, 92, 55,156, 41, 38, 74,170,101,229,219, 40,247,141, 73, 21, 25,131,243,179, 51, 12,195, 14,127,247,219,191,139, 95,249,
+235,127, 3,223,251,222,159, 33,231,136,163,163,135, 10,121,111, 33,107,204,136,221,110,139,231,207, 78,197, 90, 56, 6,108, 11,
+123, 61,134, 90, 4, 10, 46,101,172, 1,143,122, 47, 91, 3,239, 61,188,119,216, 13,161, 26, 24, 49,145, 78,116, 30,239,188,243,
+ 46, 30, 62,122,128,227,227, 19,124,124,254, 17,134, 97,135,197, 98,161, 16,187, 48,222, 75,180,103, 78, 25,219,157,152,136, 56,
+103,212, 29,110,196,229,229, 90, 83,254,184,174, 20, 66, 28, 49,142,131,172,125, 72,154,214,163,147, 19,108, 46,215, 50,189,198,
+132,229,106,129,187,247, 31,224,232,240, 8,198, 73,168,209,187,239,190,135,123,247, 31,200, 78,219, 89,248,206, 35, 4,129,178,
+239,222, 57,129,247, 61, 46, 46, 46,167, 53, 64,158, 98, 71,173,153,100, 92,206, 59,120,221,193,119,206,161,239, 60, 58, 13,126,
+241, 53,131,221,160,239,122, 24,235,241,226,252, 9,194,110, 64,127,184,210,159,153,209,119, 22,157,247,178,230,140, 25, 11,239,
+ 65,198, 97, 28, 6,101,158, 43,121, 53, 51,198, 49,212, 12,131,113,140, 24,134, 65, 10, 32, 9,177, 16,121,210,129,123,231,107,
+202, 90, 49,159, 41,133,223,146,216,227,114, 29,246, 84,250,156, 19,172, 3,140,145, 52, 54,202, 89,141,133,148,124,236,196,121,
+143,156,120,239,231,152, 36,162,213, 58,125,166,117,112,202, 98, 26,102,141, 5, 89,171, 22,181, 50, 20,230,156, 84,166, 43,123,
+123, 2,144,140, 65,138, 4,228,168,251,120, 65, 11, 10,199, 86,214, 8, 70,118,232,166, 65, 8, 49,207, 58, 54, 68,232, 12,225,
+ 42, 27,248,203,136, 99,251, 2,185,127,128,113, 92, 96,149,182,120,107, 53,224,244,193, 61,240,229, 67, 32,127, 2, 24,247,210,
+167,113,174, 85,153,138,109,187,115,255, 44,133,253, 54, 45, 46, 53, 28,152,249,217,202,179,129,192,137, 17,191, 20,172, 88, 83,
+216,168, 66,227, 96, 66,210,137,209, 19, 64,153,106,161,153,180,180,166, 78, 90, 4,249,128, 60,141, 48,129,177, 99, 2,187, 99,
+216,131,128, 59, 97,141,221, 54,227,170,216,155, 54, 94,226,132,121,234, 22,205, 32, 73,106, 76, 0, 52, 93,136, 76, 37,215,149,
+ 93,152,120, 62,243,236,251,181,246,171,212, 4,207,164, 61, 66,150, 45, 83,187,158,202,142, 10, 73, 76, 73,131,237, 62, 95,205,
+ 81,234,244,156,209,248,205,210,172,136,181, 94,233,134, 90,169,151,238,204, 53, 53,104,159,173,108,154,244, 39, 91, 58,232,218,
+112,208, 12,162,110,237, 11,107,176,133,254,240,150, 38, 43, 84,203,140,139, 24, 4,170, 52, 84, 39,182,242,178, 70, 87, 13, 51,
+123, 95, 76,201,103,173,213,109,110, 26,175, 76,220,242, 50,107, 35, 80,252, 14,136,184,113, 0,203, 51,210, 92, 77,118,187,133,
+248,177, 63,173, 51, 55, 52,246,150, 29,202,123,205,206,222,138,162,237,174,102, 44,252,198,198,182, 52, 30,159,121, 74,167,185,
+ 46,189, 93,146, 51,163,198,189,230,234,189,205, 55,144,228,246,203,239,205, 39,192, 75,141,100,249,230, 86,133,102,252,250,233,
+ 65, 51,198,226,244,244, 57, 98,140,248,123,191,251,247,241,215,190,241, 13,124,240,253,239, 97, 24,118, 56, 62, 58, 65,140, 9,
+187,221,149, 58, 47,202,238,251,236,197, 57, 78, 79, 79,209, 57, 89, 18, 85, 11, 81, 53, 64, 17,171, 85, 33,154, 49,203,212,154,
+ 57,163, 95, 44, 96,189,199,184,219, 33,134, 17, 45, 77,147,192, 56, 58, 62,193, 27,143, 30,225,206,201, 29, 88, 34,236,134, 1,
+171,229, 10, 49,138,164, 44,168, 35, 91, 89, 3,164,152, 16,134, 1,166,235, 49,166, 36,114, 58,230, 42,121, 35, 2,124,231,164,
+ 40,230, 92,109, 77,101,114, 77,232,188, 67,232, 58,144, 9, 56, 57,121,132,163,147, 19, 9,116, 97, 70,138, 1,111,188,249, 8,
+119,239,221, 23, 66,159, 53,232, 22, 29,140,145,212,182,174,243,112, 94, 10, 86,215,123, 24,125, 95,142, 80,125,230,125,231, 36,
+ 43, 62, 68,157, 64, 73, 76,107,150, 11,225, 21, 89, 35,202, 20,231, 48,142,163, 54, 3, 78,220,217, 88,190,175,120,213, 68, 44,
+122,143, 69,191, 64, 38,131, 16,118, 88,116,242,154, 65,237,107, 73,121, 5,212, 52,125,153,129, 97,179, 3, 56,193,170,249, 13,
+ 71,221,165, 43,233,181,243,130, 60,140, 33,214,157,183, 53, 6, 57, 19,148,239, 88, 27,250,148, 39,151,190, 12,104,210, 26,207,
+216,170,172,110, 52,197,155, 62,113,195, 21, 82,173, 55,105,179, 83, 27, 8,206,176,214, 32, 27, 3,142,185,218,115,151, 6, 32,
+165,140, 20, 18, 12, 36, 64, 38, 82, 83,155,154, 1,132, 32,122,127,144, 65,180, 86,144, 65, 36, 93, 11,136,113,151,129, 85,121,
+156,184,209, 25,202,184,200, 14,116, 17,112,116,252, 28,212,223, 71, 8, 43,220,195, 22,199,247, 12,206, 30,191, 9,191,126, 2,
+152,136, 54,232, 5,183, 32,164,173,118,156,136,167,136, 85,126, 45,114,205,107, 73, 88,235, 89, 71,180,167,126,149, 95, 56,168,
+219, 79, 41, 4, 70, 59, 67, 25,106, 76,133,167, 77, 67, 84, 48,218,109,229, 12, 68, 76,132, 21, 75, 37, 29,177, 76,176, 34,239,
+162,116,129,188, 5,118,153, 16,185, 61,200, 74,193,156, 52,222, 5,130, 23,232,221,236,193,173,212,144,155, 26,189,245,158, 7,
+180,220,120,218,100, 84,163, 24, 86,141,227,228, 70, 87, 57, 27,202,196, 52, 90, 20, 45, 77,105,109,229,231,176, 96, 69, 50,184,
+ 22,162, 92, 9, 3, 42, 99, 83, 70,186,105,141, 90,154,207,195, 26,113,187, 75, 89, 72, 54, 81, 59, 12,179, 55,201,151, 21,131,
+216, 66,202,247,163, 74, 68,156,131,179,134,246, 81,233,146,106,133, 38,179,125, 58,212,219,242, 81, 9, 99,205,180,156,219,247,
+130,169,193,186, 9,223,206,104,221,255,230, 51, 38,215,150, 50,215, 87, 21, 72,140,234, 26,187,245,122,223, 39,236,237, 23,119,
+102,110,106, 62,207,246, 87,251,150,204,180,127,159, 83,179,119,226,249, 3, 88, 94,211, 41,246, 31,126,210, 65,125, 47, 36,173,
+ 45,172, 41, 39,172, 14, 15, 96,140,192,220, 19,169,165,189,162, 55,170,197,111, 62, 66,218,207,130,111, 84,211,206,191, 79,219,
+ 92, 22, 9,161, 53,120,254,252, 57, 58,223,225, 15,190,243, 63,226, 23,190,254,139,248,224, 7,223,199,184, 27,144, 83,198,102,
+187, 81, 95, 4,134,179, 14,139,254, 0, 79,159, 62,198,179,167, 79,225,212,173, 45, 38,113, 80, 75, 49,194,117,122, 8,199,132,
+174,183,240,222, 34, 69,192, 90, 47,159,247,110, 64,223,119,122, 63, 48, 98, 74,162, 17,207, 9, 93,183,192,193,209, 17, 34,103,
+ 44, 87, 75, 73, 78,139, 1,214, 89,129,216, 33,211,220, 38,110,177,221,108,145, 98,172,186,234,237,118,163, 18, 44,129,125,199,
+ 16,116,202, 99, 96,148,235, 84,108,101,219,107, 97,140, 65,191,232,177, 52, 11,156, 28, 31, 35,107, 18, 27,152,113,124,120,136,
+ 7,111, 60,106, 32,107,217, 23, 27, 7, 28, 28, 30,169,193,139,220, 41,157,239,224, 93, 70,140,162, 2,170,124,145,242, 44, 27,
+ 41, 42,206,137,175, 59, 67, 10,176,181, 26, 43,155, 19, 86,203, 37, 58,239,208,117, 29,194,110, 68,231, 44,250,147, 59, 72, 26,
+ 15,219,119, 11,128, 8,195, 56,194, 90,130,115,157,132,219,176,129,233, 60,134,221, 32, 59,116, 34, 24,206,176,222, 99, 24, 71,
+244,157,133,115,189,184,213,165,140, 97, 24,145,194, 8,130,129,119,226,233,144, 99,172,207,185, 36,236,101, 36,101,199,195, 88,
+132, 33,232, 20, 47,127,111,173,120,213, 11,250, 36,214,206, 57,101,201,191, 40,171, 70,171,121,237,234,225,110,141,236,208,133,
+ 36, 8, 16,217,202,149,201, 73,238, 25,235, 8,198, 78,142,113, 49, 50,192,210, 80,145,161,106, 34,100, 8, 32,107, 64,214, 32,
+100,134,201,218, 52, 41, 31,200, 48,195, 26, 6, 89, 66, 98,229, 0, 64,152,253, 89,163, 94, 73, 37,189,142, 8,129, 12,158,110,
+ 9,148,214, 88,221, 3,118,238, 1,108,244,120,115, 21,113,126,255, 1,242,213,125,152,252,228,165,211, 58,223,192,136,175,230,
+ 94,133, 79, 67, 37, 93,148, 94, 89,216, 95, 57,200,243, 13, 40, 65, 89,231,103, 65,203,165,168, 39, 45,120,152,147,110,202,108,
+232, 90, 7,170,118, 66,211,147, 51,137, 99, 13,146, 33, 80, 78, 32,102, 68,102,140, 89,245,213,121, 68,138, 6,107,154,138, 63,
+148, 61, 42, 4,187,172,164, 56,177,165, 5, 3, 73,188, 83, 27,217, 17,102,221,189,153, 49,163,105,239, 32,231,250,247, 73,101,
+ 15,164,162,247, 66,123, 48, 52,135, 77,106, 65,203, 92,199,173,208, 76,238,115,138,194,190, 49,127,107,120,147,145, 26,121, 75,
+203,191, 74,105, 90,160, 23, 7, 52, 82,119,184,201,117,109,218,191, 23,187,216, 92, 28,228,234, 39, 50,151,146,149,249,108, 66,
+ 41,132,147,208, 30,237,220, 54, 15, 45,220, 14, 49,118, 40, 94,215,133, 41, 77,234,183, 92, 38,116,154, 17,252,166, 48,158,130,
+ 48,240,158,221,168, 72,107, 90, 9,155,153,140,111,180,129, 48,234,216,150, 57,207, 32,255, 18,102,209, 58,159, 1,123, 5,125,
+ 15, 90,199, 75,210,233,166,169,153,167,187,100,182,159,215,204,131,220, 72, 5,127, 18, 93,122,195,187,107,190,181, 52,115,214,
+ 98,183,221,106, 4,166,153, 53, 51, 55,177,224,111,123,172,175,217, 12,239,193,123, 55,171,219, 27,255, 5, 53, 62,185, 56,191,
+128,181, 6,127,240,157,239,224,231,191,246,139,248,222,247,254, 12, 65,221,223,140,177, 18, 24, 98, 12,150,139,165, 22,181,132,
+ 97,187, 19,196,199,119,176, 68,232,224,177,217,108, 64,222,193, 11,189, 24, 33, 74, 81, 53,214, 98,100,134, 65,134, 1,233,110,
+220, 1,220, 99,187, 27, 52,169,204,194,195,193,172, 86, 88,173, 86,184,123,239, 14, 86,135, 71, 56,125,254, 76,204,155,148,119,
+115,181, 27,112,117,121,133,237,102,131, 20, 35, 66, 74,141,190, 93,238,196,160,198, 49,242,127,154,222,197,210, 80,165,156,132,
+241,173,247,123,223,121,132, 64,176, 54,195, 57,135, 16,131,252,140, 60,121, 89,132, 97, 64,191, 92, 41,164,155, 49, 14, 1, 93,
+231, 49, 12, 35,178,134,205,244, 93,135,152,146,186,230, 9, 83, 58,235,180, 99,116,151,157,116,106, 23,125,182, 65, 24, 71,244,
+125,167, 18, 46, 11,231, 29,156, 53, 88,173,150,200,100,177, 61, 61, 3,167,160,158,250,140,148, 2,172, 21,222,147,183, 4,231,
+151,178,107,182,178,196, 28,199, 0,231,100,207,159, 98,192, 56, 74,179,209,247, 30,206,200,153,154,179,238,180,189, 3,145,252,
+ 58, 6, 9,165,145, 56,213, 44, 13, 90, 74, 64, 84,187,222,108,128, 20, 5, 77, 85, 46, 20,116, 7, 94,221, 13,152,148, 35, 65,
+ 32, 99,225, 53,242,150,200,234,103, 20,235,117,133,174, 98, 1, 41,236,204,114,214,179, 53,178, 82, 8, 9,206, 68,144,245, 90,
+188, 9,201, 24,157,184,129,162,183,235, 44, 1,174, 71,204, 25, 46,166, 74,170, 46, 67, 68,202, 44,132, 59,202, 74,254, 21,235,
+112, 57,199,132,152,105, 72, 26,150,152, 33, 59,122, 2, 46,130, 67,119,181, 67,119,124, 9,184, 99,188,225, 8,159, 60, 52, 56,
+127,246, 54,236,230,185,140,114,213, 42,246,230, 66,204,215, 45, 72, 38,211, 24,106, 56, 95,159,149,148,203,175, 30,226,171, 63,
+ 26, 1, 46, 47, 78,224,121,139,195, 93,194,176, 51,216,233,225,207,197, 52, 68,237, 98, 11, 89,171,236,126, 19,105, 33,207, 6,
+201, 48,188,147,233,186,228, 27,199, 18,221,202, 83, 56, 75, 75, 66, 99, 53,193, 48, 58,169, 91, 18, 72, 36,101,128,220, 1,204,
+210,226, 48,175, 49, 14,140, 45,166,157,189,216, 62,139, 79,113, 34, 15,235, 80, 35, 84,139,197,172,213,178, 23,103, 36, 10,221,
+197,100,192, 88, 91,211,198,152,247,172, 67,155,233, 30, 13, 36, 95,164,119,118,102, 2, 51, 89,231, 78, 57,239,147,111,123,129,
+182,185,129,179, 67,222, 79, 81,155, 32,103,131,214, 80, 64,186,248, 81,209, 18,206, 19, 92, 79,220,112, 2, 74, 51, 97,212, 59,
+158,209,144,193,208,228,178,207,239,165,201,100,136,225,124, 15, 52,150,182, 21, 94,167, 22,114,167,107, 19,186, 41, 36, 70,204,
+101,147,211,215,112,211,152,228, 38,107, 92,160, 52, 67, 52,133,227,212,239, 97, 42, 20,159, 27, 59, 96,162, 57, 90, 48,249, 50,
+ 79, 46,117,252, 42,189, 8,237,153, 10, 53, 13, 67, 98,126,165, 26,238,149,106, 57,122,201, 3, 14,104, 80,200,124,167, 78, 55,
+230,178,209,237,112,192, 77,208,196,117, 33,254,245,198,166,249,238, 97, 12,216,108, 54,248,187,223,254, 54,126,225,235, 95,199,
+ 7,223,255, 62,142,143, 79, 64, 96, 92,174,215, 32, 99,177, 88, 46,176, 90, 44,145,153,113,121,113, 1, 34,194, 98,181,132, 53,
+ 22, 49, 6,216,197, 2,113, 8, 26,224, 33,205, 93,215,119,226,169, 29, 18,198,113,168,108,107, 33,209,201,191,181, 86,166, 54,
+ 34, 83,205,131, 14, 86, 7,120,243,205, 71,248,194, 23,223,159,193,210,235,243, 11,236, 54, 91,172, 47,214, 56, 63,191, 16, 68,
+192,201, 14,125, 28, 3,134, 49, 86, 73,219,168,122,113, 34,130,115,174, 58,156, 77,166, 80,133,188, 42,147,187,120,103,200, 90,
+ 43, 4,192, 57, 82, 31,117, 96, 55,140,248,248,227,143,113,255,254,125,220,189,127, 31,139,190, 23, 56,123, 8,232,123,225, 6,
+144, 34, 0,210,120, 88, 24, 87,158,193, 92,155, 85, 86,105, 73, 78, 2, 23, 27,107, 97, 23, 11, 88, 69, 9,136, 8,227, 56, 74,
+ 52,112,223, 97, 59,102,236,182, 27, 13,155, 17, 68, 35,232, 84, 47, 57,240,146, 86, 55,134,128, 28, 19,156,115,122,141, 25,187,
+221,136,148, 2, 58,103, 37, 68,102,228, 70,174,198, 72, 77,190,123,166,172, 62,240,194, 92,143, 77, 66,101,206, 18,173, 42,193,
+ 45, 89,175, 19,137,247,185, 62,159, 98, 76, 35, 79,126,239, 29,136, 36,159,194, 56, 43,154,245, 36,112,121, 36,139, 49, 70, 48,
+199,154,170, 38,102,101,172,233,117,226,235,158, 73, 28, 68, 83,150,221,123,206,128,163, 36,235, 8, 29, 86,140, 19,143,120,163,
+164,228,148, 1,103, 50, 96,101,197, 2, 78,136,108, 0, 53,186, 73, 89, 6,172, 18,242,101,136, 96,156,211,243, 47,201, 36, 45,
+110,196,232, 29, 16,179,197,197, 46,227,200,110, 96,151, 14, 71,190,199,219,247, 8,231, 15,222, 6,127,248, 49, 8, 79,193, 88,
+220,120, 18,220, 22,239, 50, 89,187, 82,245, 51,217, 55,175,249,215,241, 95,187,241,115, 70,137, 6,157,145,139,187,205, 69, 33,
+137,154, 19, 14,237,148, 98, 67, 32, 67,150, 11,150, 56, 41,116,159,167,244,181,198, 88,132,155,233,134, 9, 83, 60,231, 12,222,
+213,223,115, 2,216, 32,230,136, 46, 72, 4, 99, 44,226,126, 13, 80, 49, 57, 33,211, 33,236,201, 18,199,124,142,184,101,196,150,
+ 75,156, 51, 50,140,122,163,163,186,169,129, 19,216,174,224,151, 6, 46,108, 49,166,201,242,207,176,124, 77, 69, 9, 26, 54,119,
+109, 10, 26,194, 25, 26,242, 26,205, 4, 6, 37,167,188, 17, 38,213,203, 71,234,118,196, 10,171, 77,137,112, 5,138,146, 52,187,
+201,191,221, 40,137,136, 33,132,183, 26,193,218,232, 38, 43,239, 32, 95,247,195,167,154, 0,135, 89,102, 54, 53, 11,144,152, 34,
+ 78,238, 61,196,202, 38,252,248,211,199,146, 27,173,100, 34, 2,129,172,169,186,242,118, 2,205,212, 56,193, 97, 50,127, 49,138,
+ 18,212, 29,127,149, 11,106,146, 26,246, 56, 5,237, 53,194,220, 66,119, 58,148,149, 40, 3,134,101,170, 77, 22,102, 76,249, 87,
+ 4,184,208, 36, 87,220,255,247,159, 37,175,133, 95,163,195,166, 61, 11, 90, 46,159,255, 53,102,250, 77,101,157, 95, 65,118,191,
+ 97,105,143,121,232, 14,207,233,129,179, 6,128, 96,240,228,233, 39,248,247,191,241, 13,252,234, 55,127, 13, 31,125,248, 33, 14,
+ 15,143,177, 92, 44,112,126,126, 6, 99,101,239,219, 57,143, 97, 24,176,217,108,144, 84,167,124,176, 58,192,157, 59,119,241,233,
+227, 79,235, 78,222,121, 47,127,159,101, 90, 22, 89,155,250,119,231,128,221, 78, 92,227,118,195, 0, 36,229, 50, 80,150,134, 45,
+196,234, 15,191, 58, 88,193,144,193,176,221,226,232,240, 16, 57,101, 60,127,250, 28,235,139,181,200,230,162,196,173,230,144, 96,
+146,193, 48,136,105,140,113,174,226,119, 5,253, 42,114, 48, 82, 14, 80, 74,185, 90, 24, 23,226, 89,145, 71, 9,161,203, 1, 73,
+237, 91, 85,139, 29, 83,198,227, 39, 79,145, 83,194,219,239,190,135,190,247,176,214,161,239, 59,244,125, 47,217,241, 48,232,157,
+ 69,192, 8,223, 45, 38,242,172, 26,227, 48,137,134, 61,154, 36, 69, 88,175, 87,223, 57,244,203, 37,134,113,132, 49, 6,222,121,
+196, 40,114, 58,228,140,213,234, 16,219,113, 68, 8, 3,124,231,145, 51,193, 27,130,113, 18, 63,219,121,143,129, 13, 98, 10,245,
+190,118,206,194,169, 13,247,102,179, 3, 33,193, 58, 95, 21, 0,150, 12,140,161,106,161, 43, 77, 71, 22, 99, 23, 98,152,174, 3,
+ 66,148, 0, 47, 50,240, 70,180,224, 37, 33, 47,178,196, 19,155,226, 69, 65, 52,227,186,164,204,146,222, 70,182,162, 65,208,115,
+195, 80, 65, 46, 5, 74,231, 86,206,169, 69,222,144,220, 79, 69, 26, 55, 70,134, 73, 35,156, 53, 10,125, 11,235, 62, 67, 92, 60,
+137,133, 31, 33, 28,132, 4,241,179,137, 34,143,142, 9,222, 48,224,189,102,199,100,228, 76,149, 64, 7, 77,171,139, 73, 56, 46,
+ 30, 25,206, 25,108,216,129,175, 34, 14,112, 14,135, 19,188,213, 3, 31,189,185,196,229,179,119,209,109,158,129,108,214, 96,151,
+185,185,242,235, 12,212, 45,103,142, 90, 34,248,103,138, 85,190,233,223, 94,127, 47, 14,187, 75,132,179,140,231, 60, 69,113,166,
+114,184,232, 94,187,120,240, 18, 8, 81,175,137,197, 52,245,128, 35, 82, 4, 54,234,239, 94,180,167,165,126, 39,180,214,155,178,
+155,206, 37, 42,181,113, 90, 75,246, 24,174, 79, 88,197, 45,198,129,176, 6,161, 73, 11,212, 73, 54,131,225,129,213, 1,238,211,
+ 5, 46,118, 25, 47,178,198,205,145, 5,140, 18,217, 56, 87,130,132, 64,202, 12,216, 37,150, 71, 6,203,171, 43, 60, 89, 19,216,
+180,154,101,204,245,202, 74, 82, 99, 22, 9,155, 85,102, 99,170, 83,162, 20, 37, 75, 52, 77,128,213, 84,102,190,189, 46,147,178,
+ 41, 95,163,208, 92, 46,100,187,107,187,101,181,140,213,230, 98,200,121, 50, 0, 82, 56,179,117,246,107,253,215,139, 15,128,165,
+ 73,158,198,215, 2,112, 38,184,166,115, 14,155,243, 23,216, 41, 59,213, 84, 56, 91,118, 92,149, 25,159,210, 76,110, 70,173,119,
+ 92,158,190, 31,183, 76,204,134,200,152,120, 46,119,219,151,223,181,183,106, 37,247, 97, 94,187,136,167,123,106,223,221,245,165,
+106, 54,218,251,243,194, 78,229,215,203, 18,111,255, 43,215,192,220, 22,244,194,215,217,239, 19, 71,134,111,227,191,188, 62, 53,
+150,111,110, 69,110,180,171,212, 15,166,240, 9,182,195, 6,247,238,222,197,183,126,253, 55,176,217,108, 16, 99,196,209, 81,135,
+171,205, 26, 67, 24,113,176,146,221,255,118,171, 6, 46,128,236,176,137, 96,157,197,253, 7,247,177,217,110,176,185,186, 66,228,
+168,112,171,236, 89, 99,140,114, 95,107,177,136,106,200,178,219, 14, 88, 95,172, 69,110,163,147, 29, 33, 35,134, 4, 99, 9, 99,
+ 24,240,226,236, 5,222, 29, 6,176,247,248,254, 7,255, 10, 31,253,232, 99,156,191, 56,195,118,183,171,141,109,214, 0, 18,102,
+ 32,134, 8,223, 57,140, 33,170,183,188, 16, 74,161, 12,112,210,115,192,152,226,145, 32,214,175, 49,230,249,133, 82,185,150,181,
+ 78, 61,221, 19,188,119, 74,152, 4,158, 60,125,134,229,114,133, 7,111,188,129,190, 23,141,124,136, 17, 93,231,209,119,189, 52,
+154,142, 36,120,133, 25,139,229, 10,235,171, 45, 98, 88,163,235,186, 74,102,117,222,195,119, 14,119, 78, 78, 96,188, 69,138, 9,
+222, 58,120,239,148, 36,215,225,234,106, 3, 32, 97,177, 92, 96, 23, 37,191,220, 59, 33,232,229,156,193, 37,191,156, 8,203, 69,
+143,245, 85,212,189, 53, 33, 27,194, 48,102,196, 24,128, 44,138,159, 52,142, 24, 67, 20,249,154,147,115, 76, 26,116, 89,135,112,
+ 78, 72,156,225,173, 76,190, 68, 12,227,164, 73,115,198,106, 96,140, 1,147,129, 3, 97, 80,107, 89,215,117,200,170, 64, 40,104,
+ 69,142, 73, 28,229,220, 68,172,149, 0, 54, 11, 75, 92,243,210,235,186, 78,159,197,162,113, 47,196, 55, 89,171,136,126, 61,115,
+ 22, 61,189,209,159,145,100,143,142,148,208, 57, 32,194,129, 32,133,156,161,217, 1, 12,176, 49, 96,202,224,148, 21, 33,212,252,
+ 1, 78,240, 22,112,206, 34,194,129, 83,132, 67, 70,182, 86,206,176, 28, 17, 73, 86, 1, 91, 55,224,208, 16,222,187, 99,241, 47,
+ 31,190,131,252,195, 15, 97,248, 41,136,150, 51,242, 27,223,194,138,231,151, 20,118,230,210, 16,241,171,201,115, 76,175,113,200,
+205,255,200,254,244,151, 63,247,157, 16, 70,145, 37, 49,102, 90,111,162, 2,177, 78,158,218,121,182,251,203, 85,239,189,223,113,
+100, 66,253,115, 54,115,248,124,255, 53,106, 48,137, 91,192,245,140, 3,142, 8, 73,190,206,204,252, 51, 8, 68, 22,134,118,160,
+171, 51, 92, 92,101,236, 10, 17, 42, 51,162,191,143,195,123, 29,238,242,128,141,189,131,213,138,225, 99, 68,132,145,201, 51,109,
+ 49,110,183,216, 6,170, 70,166, 92, 33,123,130,163,102,167, 93,166,244, 70, 63,125,205, 95,189, 37, 59,146,169,100,191, 82,244,
+ 10,219,189,200, 45, 8,115,159,251,125, 19,154, 25,129,173, 22,104,110,246,254, 77,193,221,251,172, 91,157,127, 70,177,222,157,
+ 67,210,188,247, 90,101,130, 46,230, 20,198, 24,245,158,215,117, 75,243, 32,150, 72,198,125,157,125,189,177,219,253,255,158,169,
+ 5, 87,205, 50,205,160,116,222, 99,161,223, 84,233,184,145,132,217,118,111, 65,141, 62,190, 74, 87, 26,169, 22,237, 49,254, 90,
+126, 25,191,238,124,190,103, 22,164,166, 32, 55,234,211,209,248,192,208,203, 57,110, 63, 49,192,191,111, 36,255,186, 13, 0, 77,
+108,127, 34,194,179,167,207,240,215,126,229,175,227, 63,252,230,175,225,147, 31,127, 90, 19,178, 98, 78,232,251, 30,200, 42, 97,
+ 43, 70, 80,106, 1,237,172,213, 2, 2,172, 86, 7, 48,214,169,107, 91,134,119, 29, 66, 76,216,141, 35, 82, 12, 8, 49, 32,140,
+ 17, 97, 12,216,237, 6, 92, 94, 92, 98, 28,118, 48, 86,138,201,118,183, 67,138, 89,119,217,194, 10, 7, 3,203,213, 10,207,158,
+ 61,197, 7,223,255, 0,231, 47,206,176,217,110, 36, 62, 52, 51,198, 32,158,243, 69, 99,237, 59,135, 16,197, 61,141,244,179, 65,
+227,115, 96,116,234,206, 73, 2, 90,106, 62,119,158,100,149,214,136,244,170, 32,105, 73,167,117,107,108, 77, 67,139, 41, 33,134,
+ 17, 71, 71, 71,112,174, 19, 19,151, 20,177,236,123,248,174,175,140,122,163,176,191,177, 22, 81,163, 72,157,115, 8,227, 8,239,
+ 61,156,115, 18,240,210,247, 21, 37, 88, 46, 22, 88, 44, 86,176,214, 98, 24, 35,206, 94,156,138,125,107, 16,103, 62,231,165,232,
+ 59,231,101, 55,111,141,132,171,132,136,144, 34,198, 65, 10, 51,148,179,144, 82,227,210,167, 74,128,178,242,144,102, 39, 41,137,
+143,171, 63,134,117,182,202,206,130, 34, 46, 37, 80, 73, 1,217, 58,164, 20,253, 57,172,234,205,139, 34,167,160,136, 96,109,242,
+140,242,173,242,116,173,173, 26,212, 48, 55, 40,162,169,232, 6, 41,172, 94,254,189,172, 43,140,140, 37, 90,236, 11,210, 98, 13,
+131,200,194, 26,209,160,203,207, 33,114, 54, 11,134,117, 6, 67, 54,136, 99, 16, 56, 30,114, 63,192, 24, 37,176,105, 82,159,149,
+ 70, 53,195,106, 16, 18, 16,217, 32,198, 12,147, 71,116, 6, 56, 94, 88,156,118, 7, 88,159, 57,184,237, 39,128,203,168,137,229,
+213, 65,147, 94,251, 81, 39,180,235, 87, 82,169, 26, 93,211,188, 95, 63, 11,249,214,131,161,252,179,190,239, 97,127,250,203,239,
+126, 39, 14, 99,101, 47,230, 6, 98, 76,106, 45, 89, 73, 18,196,117, 50, 69, 78,160,152, 17,146,197,174,154,180,180, 97, 44,251,
+174,226, 83, 33,226, 89, 86,118,129,201, 1,202, 59,164, 33, 98,147,228, 27,149,127,111,246, 33,140,146,211,174,206,102,168,175,
+151, 96,210,136, 20, 50, 6,114,232,109, 4,135,132, 49, 11,244, 36,142,119, 66,100,155,105,203,137,230,251,105,154,159,253,252,
+178, 73,136, 91,150,127, 29, 85,171, 67,154, 37, 3,111, 44, 58,213,167, 21, 98, 32,235,123, 55,141,228,189, 18,235,154,107,148,
+139,129, 79,123, 51, 20, 9, 32,205,139,243,180, 47,167,153, 96,122, 34,181,221, 2, 53, 23,120,172,202,206, 48, 39,146,229, 52,
+227,117,180,150,174,220, 26,233,236,237,151,103,112,243, 94,252,175, 33,122, 37,232,196,251,204,247,178, 59,111,156,234,176, 39,
+ 91, 51, 68,243, 97,185,252, 92,220,198,180,125,118,177,232, 56,142,120,239,115,159,199,221, 59, 39, 56, 61,125, 94, 27,137, 22,
+114,223,111,172, 95, 73,174,155,201,186,110, 2,244,176, 7,203, 23, 98, 0,189,246,226,160, 85, 18,164,156,145, 83,198,111,254,
+214,111,225,157,119,223,193,217,197,121, 3,101,200,243, 31,198,208,200, 21, 5,174,181,214, 32,198,132,231,207,158,227,197,217,
+ 25,152, 25, 71, 71,135,184,119,239, 30, 82, 76,120,113,118, 38, 28,151, 20,170,182, 56, 68,205, 85,223,238, 48, 12, 91, 49,131,
+ 25,130,202,167, 18, 98,214, 41,211, 24,101, 83, 51,206,206,206,112,122,122,134,221,110,135, 49,236,244, 25,215,103, 54,139,140,
+ 77,154, 77,205,210,142,162,169, 54, 78, 52,220,165,112,129, 25,198,201,238,126,167, 48,125,153, 30,173,181,178,131, 37,134,119,
+ 82, 48,129, 44,186,109, 2,186,206,107,238, 59,106, 46,251, 24,162,132,186,116, 29,156,115,232,251, 30,100, 8,206, 24,116,125,
+143, 20, 35, 22, 93, 15,231,186, 26,154,226,172, 83,242, 37, 99,185, 92,194,119, 98,217, 90, 28,230,172,145,221,188,117, 22, 33,
+102,124,252,227, 31, 35,142, 91,248,174, 71, 12,130, 72,172,150, 11, 24,215, 97, 28, 6, 44,213,243,126, 28,119,136, 42,155, 3,
+184,242, 3, 80,174, 83, 74,106,229,172,113,170, 52, 69, 22,139, 69,108, 66,210,116, 55,214,181, 10,115,174,208,151, 52,232,166,
+ 42, 1, 38, 55, 72, 76,190, 17, 42, 75,205,154,190,151,152, 4,205, 1,106,241, 46,247, 92, 73,117, 51,245,208,106,116, 39,205,
+196, 78,186, 39, 79, 42, 89, 44,228,187,122,206,233,215, 57,210, 6,142, 12,166, 40, 34, 86,182,124, 82,171, 88,185, 30,214, 50,
+152, 28, 60, 49,156, 55,128,241,202,226,207,176,200,186, 90, 36,169,101, 98,171, 8, 2, 35, 66,145,212, 20,112,128,140,195,195,
+140,199,238, 62,226, 25,195,142, 79,160, 24,254,156, 75,243, 25, 67,160,104,239,240,158,106, 16,125,198,105,128,102,191,234,250,
+ 30,246, 43, 95,124,247, 59,187, 97, 0,167, 44,150,124, 25,136,186,147, 54, 51,222,247, 84,236, 82, 30,145,242, 18,227,209,155,
+112, 15,129,159,242, 25, 46,102, 92, 37,194,158,124,112,198, 10, 43,251, 86,106, 24,212,134, 90, 7, 50, 82,111,248,178, 59, 46,
+ 69,189,108, 8,169,174, 5,114,217,153, 85, 38, 59,129,120,196, 56, 36, 12, 12,152,184,195,118,200, 34, 81,170, 30,243, 98,167,
+104,244,215,166, 24,206,236, 77,189, 73,179,115,185,117,233,224,189, 94,170, 20, 88,162, 61, 73,154,124, 56,174, 64,242, 77,131,
+ 48, 65,208, 83, 65,183,100, 20,110,198, 20,147,216, 76,188,251, 89,220,118, 15,225,168,251,234, 6,126,159, 21,124,162,155,245,
+205,250,198,138,121,204,180, 66,104,248, 1, 58,217,144, 18,100,234, 86,182, 22,198,233, 58,206, 16,136, 89, 34, 26, 53, 29,106,
+113, 6,156,203,234,218, 2,127,173, 88,182,240, 53,243,172,115,229, 38, 0,168, 98, 69, 85,115,126,253, 94, 52,159, 97,135,254,
+ 50,248,125,171,225, 37,100,232,134, 22,252,186,112,149,110, 45,184,251,204,117, 2,221, 40,155,217,203,231,171,254,144,175,201,
+ 6, 80,147,153, 23,167,167,120,239,115,239,225, 55,254,147,255, 20,219,237, 78, 24,233,157, 71,136, 1, 79, 30, 63,198,118,187,
+193,193,225, 97, 37,144, 9, 3, 61, 87,248,251,226,242, 18, 79,159, 60,134,181, 98, 93,234,189,199,193,234, 16,155,237, 6, 49,
+ 14, 34, 19,235,123,244,202, 18,191,188, 88, 99, 12, 35,198, 97, 16, 30,137, 78,179, 37,136,165,188, 47,145, 45, 9,249, 45,132,
+128, 48,142, 8, 74, 32, 75, 73,161,119, 77, 50,148, 29,171,132,120,228,156,208,247, 30,222,247, 2,159,235, 46, 91, 12,105, 28,
+198, 49,214, 34, 95, 92, 45,173, 30,200, 82, 96,157, 78,246,185,121,118,197, 53,177,220,151,206, 10, 52,191,217,108,177, 27, 54,
+ 72, 33,234,228,105, 96,172,188,231,201,255, 61, 35,140, 65,139,107, 70, 74, 17,171,197, 66,166, 39, 55, 21,115,201, 64, 55, 85,
+218,121,126,121,137,231, 79,159,170,206, 90,200,106,198, 8, 42,148,146,124, 14,214, 26, 12, 65, 76,101,188,243, 48,198,106, 81,
+149,107, 52,134,160,110,123,185,102,206,123,209,159,137,235,158, 22,216, 97, 16,226, 26,179,152, 9, 25,149,255,138,115,156, 85,
+102, 61,129,200,105,250,155,144,228, 72,209,140,204,243,236,134, 34,223,171, 72, 92,187, 63, 87, 4,179, 56,205,153,242, 26,173,
+123,185,162, 42, 80, 30,131,129, 32, 40,130,136,209,100, 80, 99, 45, 24, 86,195,114,196, 72,167,160, 50,101,197,145, 65, 96,109,
+164,156, 1,172,243, 0,140,178,221,205, 20, 93,170,161, 48, 18, 24,163,104, 2, 84,169, 33,111, 18,137, 25, 67,204,216,141, 9,
+119,243, 14,221, 9,227, 9, 30,130, 95,108, 97,242, 11, 93, 39,152, 25, 68, 71, 52, 91,124,221, 82,164,175, 31, 27,220, 34,180,
+215,166,117,122,229,247,169,235,212,174,135,253,153, 47,189,243,157,113, 24, 68, 62,193, 70, 82,112,138,212,169, 57, 81, 43, 84,
+205, 25,156, 12,210,193,251, 24, 62,223,225,103,238,158,226, 43,151, 9, 31,108, 24, 67, 97,198, 3,179,233,151,105,234,202, 36,
+ 36,128,170,139, 91, 87, 32,224,166,216,145,162, 2,148, 37, 48, 37, 72, 30,144,120,187,235,228,149,235,132,188,151,216, 86,225,
+114,211, 64,179,165, 49,144, 45,243,204,253,172,201,100, 47,190,242,166,161, 50,115,109, 53,110,186,136,243,138, 91, 14, 5, 71,
+168,239,177,200,184, 18,230,174,105,174, 22, 71, 77, 69, 82, 54,248,204, 50,117, 31,134,230, 9,150,183,123,235,219,226, 39, 64,
+123, 52, 12,190, 86,204,231,125, 74,249, 25,136,171,213,204,172, 86,152,246,231,167,105, 37, 3, 67,226,209,204, 52,203,100, 35,
+208,108, 50,125,121,228, 44, 95, 51,151, 49,205,191,173, 17,180,229,167,161, 38, 54,156,246,117, 28,243,132,178,153,252,141,218,
+101,207,188, 46,190,110,113,103,101,235,239,118, 59,236,118,187, 10,103,222, 84, 84,169,241, 98,246,206,171, 22, 59,182,138,254,
+107,175,251,202,135,159,113, 93,162, 49,211,210,221,178,220,215,206, 57,140, 1,159,126,250, 41,190,245,173, 95,199,215,126,241,
+235,120,242,228,137,154,197, 88,172,175, 46,176,221,108,112,126,113, 33,210, 59, 3,120,133,154, 89,181,200, 70,225,247,113,216,
+225,206,201, 29, 44,151, 75,108,183, 59,128, 8,157,247,184,188,188, 68,215,117,224,156,177,217,136,235,220,229,229, 26,227, 48,
+ 34,196, 8,239, 28,250, 69, 15, 67, 34,123, 43,147, 49, 64,232, 58, 95,159,157, 49,140,250,247, 42, 69,211,174,205, 59,167,140,
+237,140, 16,146,106,194, 1,231, 58,248,174,155,238,117,205, 73,151,232,213,164, 33, 51, 50,205, 90,109, 32,178,254, 92,194,196,
+ 79,213, 10, 21, 48,202, 8, 55,106,162, 35,238,112,133, 77, 31, 99,198,110, 55, 74,226,220, 40,107,134,221,110, 16,228, 33, 6,
+ 12,218,148,236,134, 1,156, 19, 14, 15, 15,176, 90,173,224,156, 7, 67, 50, 25,172, 53,213, 35,158, 0,140, 33,227,233,147, 39,
+200,105, 4,105, 81, 53,198, 32,103,198, 48, 12, 32,206,232,187,190,137, 77, 38,181,128,142, 8, 33, 74, 49,143, 65,167, 97, 65,
+ 46,199, 16, 52, 68,137,244,250,113,109,110, 36,101, 47,170, 49,203,100, 81, 44, 78,110, 34, 21, 36, 38,120,141, 64,205,202,114,
+ 47,118,222, 99,136, 98, 98,131, 70,109, 3,113,196,131,134,172, 24,221,147, 23, 24,221, 90, 43,178,178, 92, 12, 89,204,236, 54,
+ 37, 35, 69, 54,199, 0,107, 88,117,238,154,118,167, 62,247,178,195,206,106, 59, 11,125,109, 97,202, 27,102, 56, 39,197,152,213,
+112,203,121, 21, 83, 42, 10, 33,126,240, 25,214, 48,216, 56,196, 40,104,115,113,158,179, 52,201,120,193, 18,110,102,172,193, 8,
+135,205,142,113, 20, 54,232, 14, 19,206,236, 61,228,117,132, 77, 23,210,216,151,159,133, 85, 1, 69,252, 19,141, 13,116,141,146,
+243,250, 39, 84,251,138, 93,215,195,254,244,151,223,251,206, 56,108,144,179, 7,186,135, 24,239, 69, 60, 90,140,184, 55, 0,207,
+146,122,203, 98,202, 55,143,121, 68,118,239, 96,120,239, 30,190,244,224,123,248,234,199, 87,248,191,126, 76,248, 65, 38,209,179,
+183,250,111,162,217,158,160, 76,184,197,180,197,235,191,139, 77,129, 46, 54,174, 25, 6,228, 59, 28,117,192, 33, 50, 66,214, 41,
+159, 12,224, 44,156,201, 32,246,192, 98,133, 3, 31,144, 67, 70,224, 57, 36, 59,223,255, 78,240,118,153, 72,229,224, 55,213,241,
+ 12,213,110, 86, 62, 28,222,139,195,220,151, 23, 21, 70,127,153, 88,109, 49,188,209,247, 41,134, 7, 73, 76,102, 72, 95, 7, 52,
+ 27,180, 10, 12, 85,246, 70, 21, 62, 86,105, 94, 42,246,184, 77, 99,212,174, 4,236,108,237, 66,141, 95, 63,234, 58,165,238,221,
+155, 24, 89, 67,102,138,233,196, 20,232, 66,123, 19,242, 20,184, 50,135,215, 75,226, 93,198, 60, 26,119, 63, 86,143,111, 96,136,
+210, 13, 16,251,190, 38,221,144,242,229, 25, 51, 57,101,245, 57,166,219,249,161,237,214,153,249,229,242,123, 99,103, 0, 0, 32,
+ 0, 73, 68, 65, 84, 59,251,207,242,248, 25, 61,236, 95, 14,115,183, 13, 67, 99,115,123,205, 37,146,175, 93, 81,218,139,193,189,
+ 81,198, 54,243,108,167,219, 31,242, 38, 53,138,115,198,179,103,207,240,183,254,214,127,137,223,252,207,255, 11, 60, 59,125,134,
+163,195, 67, 0,132,245,250,162, 22,167, 98,230,114,126,118,142,237,118, 11,128, 38, 77,181,115,240,206,139,181,169,239,144, 83,
+194,243,231,207,112,121,185,214,248, 82,217,119,110, 54, 27,156,159, 95,224,114,125,133,113, 24, 48, 12, 99,245, 10,223,108, 36,
+173,205, 59, 87,245,209,198, 24, 24,103,107,190,248, 48, 12, 98, 62,163, 92, 15, 34,146, 93,191, 33, 12, 97,172,200,156,192,220,
+ 70,100,116,122,105,156,181,181, 8,100,206, 90,108, 99, 85, 1,144,198,188,134, 16,213, 58, 65,130, 79, 0,209,181, 23,118,118,
+ 27,103, 90, 58, 73, 49,125,145,104, 80,107, 12, 66,148, 66, 14,102,217,129,231, 84,253,222, 83, 74, 88,244, 30,247,238,223, 87,
+ 63,117, 70,223,117,162,205,183,162,239,230, 44,225, 52,151,235, 13,158, 61,125, 44,144,178,202,186,188,243,138, 42, 16,250,197,
+ 82,246,211, 10,173, 79,107,148,132,144, 18,178, 74,213, 74,161, 79, 81,254, 92,166,115,121,166, 66, 74,218, 0, 68,112,142, 85,
+107,158, 88,229,103, 70,116,229,224,172,129, 50,130, 96,196,204, 24,195, 8, 82, 63,249,152, 33,228, 50,103, 37, 24,137,147, 16,
+ 31,173, 81, 3, 51,214, 34, 41,163, 86, 41,212,206, 2,198,122,204,125, 66,121,198, 31, 74, 44, 59,123, 75, 66,166,100,133,194,
+ 75,227, 44,206,191,146,247, 17, 66,134, 69,172,118,188,172,153, 18,211,106, 79, 67,194, 82,129,253,141,114, 8, 84,179,174,114,
+ 56,103, 45,200,122,100,166,154,168, 87,208, 68, 91, 96,126,213,179,167,196,184, 99, 34,150, 71, 6,103,221,125,196, 75,192,196,
+ 23, 10, 19,183,193,101, 84,215,164, 63,177, 60,173,218,125,243,107,158, 79,211,185,221,119, 61,236,191,249,229,183,191,179,219,
+142, 96,123, 23,241,216,224,112,121,129,119,183,140,179, 45,225, 28, 4, 87,108, 77,244,226,123,178, 0, 70, 96,251, 20,230,217,
+136,143, 95, 88,124,204, 6,214,170, 12, 75,139, 57,163, 37,185, 81,157,178,202, 36,236, 10, 28, 95, 44, 85,152,192,110, 9,219,
+101,116, 44,123,159, 12,201,122,247,156, 49,100,170, 26,116, 38, 3, 67, 25,148, 2, 66, 18,121, 76,141,211,110,154,131, 25,193,
+238,218,251,104,139,158, 76,201,182, 37, 86, 85,194, 92, 6,215, 8,234, 73,111, 79,123,147,116, 9, 65, 49, 13,100,159,192, 96,
+ 61, 4,152,211,222,110,158,230,178, 99, 76, 78,119, 53,162,148, 38,244,161,221,185, 82, 19, 15, 91,161,225, 50,211, 54, 16, 55,
+ 53,209,164,220,120,168, 85, 93, 61,241,204,135,133,110, 40,148,237, 78,190, 45,152, 70,155,152,140,219,163, 79,139,116,205,220,
+ 52,213,222,120, 67, 55,172,250,218,104,177, 74, 11,165, 81, 66,201,161,223,131,233,105,127,167,255,146,125,212,205, 54,170, 55,
+191,167,219, 36,108,173,114,163,213,160,222,246,245,109,171, 72,173,150,245,165,220, 58,158, 16, 8,218, 19,196,223,210,183, 79,
+168, 6,225,201,227, 39,248,249,175,254, 60,126,247,247,255, 0,155,221, 22,157,247, 56, 62,185,131,148, 18,158, 63,123, 38, 54,
+172, 99,132,247, 30, 57,103,108,119, 3, 46,215,107, 92, 94, 94,224,206,157, 59, 56, 57, 62,194, 48,136,183,123,215,117, 24,199,
+ 1,103,231, 47,176, 94,111, 42, 65, 11, 0, 82,136, 50,165, 63, 63, 69, 12, 1, 93,231, 52, 0,196, 74,227, 48, 12,178, 83,214,
+105, 50,243,180, 38, 97,100,140, 97, 4, 43,220,206,234, 6,100,173,132,113,108,183, 59,164, 36, 7,121,230,140, 20, 51,156,179,
+232,187,110, 22,100, 99,197,217,164, 58,221,149,196,177,212,216,243,166,156, 42, 20, 62,177,227,169,230,193,151,239,231,156,157,
+154, 56,150,137,211,170,199,185,209,176, 22,113, 89,211,134,128, 24, 49,101,116,214,224,173,183,222, 66,191, 88,202,142,219, 26,
+ 61, 3,184,217,154,136, 3,218,217,217, 57,182, 87,151,112,222, 87,132,174, 91,244,186, 2,144, 39, 48,132, 17, 73, 33,127, 82,
+ 55, 63, 33, 9, 14, 98, 20,147, 84, 78,152,180,177, 64,177,144, 22,159,248,148,162,238,208,197,253,141, 57, 87,195,169,168,133,
+207, 58, 7,228,105,248,202, 26,118,148,117,143,102,136,224,189, 5,200, 86,164,195, 24,130, 83, 93,124, 53,150,209,102,188,164,
+163,133, 36,187,110, 67, 70,229,130,102, 70,160,149, 70,128, 97,140, 3,179, 17,191, 18,107,246,116,164, 26,203, 74,146,206,103,
+ 40,195, 59, 43,137,111, 80,168,190,153,254,139, 34,167,156,111,150,178,144,228, 50, 85,142,134, 65, 22,244,156, 9,206, 8, 18,
+101,244,250, 26,205, 36,136, 25,200, 49,195, 66, 84, 26,129, 45, 14,115,194,226,128,113,230,239, 34,173, 1, 27,207, 68,127,127,
+ 83,138, 3,209,103,158,218, 39,228,149,155,241,160,221,169,210,203,207, 51,150,157,186, 51, 26,198,146,242, 14,121, 55,194,109,
+ 18,158, 94, 17, 62, 73,128, 45, 24,176,228,225, 97, 97, 18,250,148,177, 77, 3,120,157,113,154, 28,158,120,131,133, 21, 62,160,
+197, 13, 43,104,154,147,175,178, 66, 62,134,129,192, 13,241, 13,140,148, 70, 24,202, 48, 89, 10, 14,165, 17, 87,145,112,174,246,
+179,150,197, 33,142,210,136, 72, 29,104,217,227,144, 55, 24,135,140,208,236,122,173,190, 70,158, 21, 59,136,219, 91, 37, 4,170,
+148,162, 4, 21,148, 92,247, 25,149, 89,136, 22,206,137,113, 77, 72,141,244,140,230, 81,176,173,108,169,104, 98, 83, 78, 48,253,
+ 17,142,151,140,245,217, 57, 6,150,160,136, 50,112,217,198,168, 38, 53, 70, 55,164,186,244,145, 27,119,236,242, 90,196,181,208,
+150,236,246,121, 53,227,198,195, 93,174, 5, 51, 95,131,120,185,238,162,168,166, 75,181,137,113, 51,173,248,126, 24,168, 18,248,
+218,253,127, 69, 10, 56,207, 30, 46,111, 45,188, 33,108, 99,186, 6, 51,241, 75,139, 96,201, 88,166,185,158,125,230, 26, 55,121,
+221,147,198, 5,183, 33, 59,109, 28, 46,209,148,119,252,178,226,121, 83, 97,127,149, 38,253,134, 45,194,107,152,212,208,126,107,
+119,123,112, 75,251,225,190,142, 11, 85, 89,209,232,119,149,221, 52,227,215,254,163,191, 9, 24,130,247, 29,156,243, 24,134,128,
+206,119,176,214, 97,184,188,148,200,202,156,116, 58, 22,230,177,183, 6,231,167,167, 58,193, 10,156, 42,147, 49,227,226,226, 76,
+ 14, 17,239, 49,166, 40, 6, 51,227,136,243,179,115,132,113, 68, 74, 17, 68, 50,241,165, 20, 16,134, 81,220,220,124,135,156,162,
+ 64,202,204, 66,220,138, 73,226, 74,169, 88,167,114,141,245,149, 41, 88,246,250, 69,106, 54,142, 1, 93,223, 99,177, 88,214,172,
+112,198, 4, 91,151, 24,213,160, 94,231,133,157,142,204,234, 97,206, 88, 46, 58,157,170, 35,172, 51,138,236, 82,189,196,222,201,
+196,138, 26, 21, 44,108,242,156,229,117, 58,191, 20,105,157, 38,211,197, 24, 17, 98,192,225,106,137, 55, 30,189,131,126,177,194,
+110,144,235,208,119, 94,155, 12, 53,146, 81,109,253,238,106,135,171,245, 57,172,147,189, 55, 88,166,195,113, 12, 24,199, 29,136,
+197,245,206,123,145,238,149, 93,249,180,110,147,235, 19,245,250, 65,125,212,211,168,169,109, 89, 50,238,115,146,124,143, 18,204,
+ 34,225, 51,178,133,238,212, 31,159,181,249, 72, 41,171,251,158, 56,133, 26,237, 92, 99,204,232, 76, 86, 69, 1,193, 57,163,104,
+159, 1, 39,153,176, 89,247,231, 78,244,184, 34,137,243, 22, 41, 48, 40, 5, 88,248,105,184, 48, 70,189, 62, 10, 50,151,225,189,
+ 65, 78, 30, 57, 70, 24,103,144,149, 15, 32,167,179,160, 54,157,183,200,236,192, 72,213,169, 18,149, 81,159,209, 89, 32,249, 30,
+227, 16,145, 34, 11, 34, 98, 37, 25,144,167, 61, 47, 98, 38, 80, 98, 88,147,148, 75, 96, 16, 57, 3,250,103, 35, 44, 56,100, 44,
+108,128,241, 61, 18, 12, 82, 2,118, 41,224, 13, 19,145, 30, 57,252,128,223, 71,254, 48,192,164,199,128,237,111, 62, 83,246,189,
+223, 63,115,121,111,140,206, 48, 25,161,205,179,168,231,255,185,172,211,143, 31, 47,192,103,132,211, 44,137,106,190,178,138, 44,
+200, 91,116, 62,227, 40, 51, 40, 49,118, 44, 6,252,206, 0, 29,101,112, 54, 34,169, 42, 54,117, 90,108, 82, 61,151,154, 28,118,
+181, 81,141,205,142,151, 53,106,149,242,136, 56, 26, 68,141, 83, 45,150,178, 69, 86,151,185,201, 86, 7,129,108,135,133, 27, 64,
+ 65,224,121, 64, 62,196, 64, 6,206, 58,233, 0, 83, 66,208, 38, 2,154,221, 78,150, 96, 85,110, 65, 77, 64, 64,230, 50,209, 23,
+ 19, 26, 49, 98,176,214,136, 22, 31,147, 62,186, 66,210, 13,161, 16,141,252,170,184,169,229, 97,141,139, 32,186, 75,170, 50, 44,
+141,148, 45, 63, 91,102, 56, 67, 48,204, 8, 57, 35,155,201,176, 37, 54, 22,173,213, 98, 87, 15,252, 86,110,152,231,156,196, 58,
+205,151, 57, 48,237, 89,147, 82, 27,134,194,205,172, 72,243, 27,134,103,197,136, 39, 7, 5, 46,206,128,140,113, 28, 64,100,225,
+188,157,241, 11,114,230,153,116,142,111,151,116,207,107, 25,166,192, 26,107,172,122, 83,167, 89,161,181,198, 52,177,132,147,118,
+ 31,152, 28,248,232, 37,100,199,215,121, 31,175,165, 28,223,183,197,111,158,179,151, 55, 5,251,166,199,183,171,216,120, 63,225,
+237,182,226, 78, 19,167,192, 16,225,241,167,159,226,223,251,229, 95,198, 95,248, 75,127, 9, 99, 72,176,214, 87, 23,179,203,245,
+ 37, 22,139,133, 64,180, 49, 72,129,180, 2,175,243, 32, 59,222,103,207, 79,113,113,181,197, 23,222,255,188,192,178, 89, 72, 97,
+ 19, 60,193, 24,199, 29, 54, 87, 91, 12,219,157,144,224, 88, 38,194, 33,141,154,236, 37,104,154, 72,196,132,129, 45,112,185, 1,
+147,195, 16, 66,221,133,146,177,176, 16,182,187,117, 22, 97, 12, 48, 70,116,222, 12, 41,172, 97,140, 56, 58, 58,196,225,225, 1,
+206,206,206,100,122,214, 73,125, 8,146,213, 94,154, 67, 67,166, 38, 25,166,156, 17, 67,209,214,147,146, 29,229,215,214, 27,205,
+179,200,122,191,169,178, 38,113,109,114, 74,140, 49, 32,240, 59, 48,194, 56,135,205,213, 22,222, 71, 44, 22, 61,238,223,187,135,
+195,163, 99, 12,170,241,247, 78,116,249, 37, 12, 69,124,227,197,164,101, 55,236, 20, 77,104, 72,186, 41,105,130, 26, 77,108,121,
+ 50,112,186, 86,144,166, 36,201,181,235,122,156,159, 95, 0, 57, 73,150,124, 22,180, 35, 21, 86,186, 38,208,101,102,140, 33,137,
+ 13,176, 66, 74,146,126,166,203, 59,163,102, 57, 28, 39,249,169,213, 66, 23,131,100,147, 19,176, 27,195, 68, 54, 54,182,166,194,
+ 21, 34, 37, 43, 58, 0,107, 17, 99,134, 53,128, 51, 22,176, 14,156, 99, 61,111, 43,225,213, 0,150,197, 7,133, 82,134,115,132,
+ 68,182,168,208,170, 27, 91, 57,147,156, 33, 48, 89,164,152,145, 19, 96, 82, 2, 89,101,223,167, 44,230, 50,150,164, 30, 85, 18,
+ 95,150,131,214,202,231,214, 89, 66,130,171,209,179, 25,133,160, 23,117, 63,174,177,219,204,240, 46,195,250, 30, 76, 30,150, 51,
+140, 3, 24, 30, 59, 16,222,230,132,241, 77,135,143,199, 47, 1,159, 12, 32, 62, 7,168,123,121,105,190,169, 24,191,142,239, 12,
+181,225,105,123, 42,176, 42,183,225, 25,121,218,217, 82, 17, 32,251,164,142,202,100, 84, 44, 94, 45, 50, 50, 22,156,129, 4,108,
+ 74, 96, 8, 76,101,178,179,238,125,131,182, 18, 17,173,107,142,238,164,116,135, 83,118,187, 99, 67,200,154,184,237,132,108,212,
+164,165, 72, 80, 96,193,222,163,199,136, 24, 89,146,127, 8, 0, 15, 72,151, 59, 60,131,209,204,102, 6,200, 75, 97,137, 27,108,
+ 54, 9,201,123, 28, 57,153,240, 65, 92,167,118,107, 45, 92,206, 8,113,138, 73, 77, 92,189, 40,102,192, 40,242,136, 97,203,211,
+222, 27,147,157, 43, 97, 98,208,243, 30,100, 90,250, 75,228,132, 49,171, 60, 6,243, 56,211,196,162,183, 60, 88, 46,241,246,157,
+ 30,135, 38,227,241,217, 26, 31, 95, 69,192,152,170, 4, 40, 19,117, 11,249, 90,213,197, 59,253, 76,199,148,117,122,214,204,115,
+221, 61,182,233,110,121,118,163,105,138, 26,207, 19,215, 18,183,193,177, 55, 16, 4, 27,254, 65, 86, 39,169,183,222,122, 15,227,
+238, 18, 47,206,206, 65,106,181,105, 0,116,186,171, 11, 73,155,145, 66, 12,108,118,251,116, 75,177,151, 41,107,218,173, 87, 90,
+ 79,249,249,155, 57,183, 56,214,165, 74,120,156,210,253, 94, 87,215,205, 55,117, 22,183,125,101,131, 4, 92,171,181,204,183,180,
+ 15, 45,106,240, 18, 23,120, 13,216, 56, 63, 59, 19, 23,177,190,195,241,209,177, 30,166, 60,183,168,186,225, 24, 49,198,224,201,
+227, 79,240,197, 47,125, 9,255,213,127,243,183,177, 90, 29, 99, 24, 36,247,220, 24,131,205,102,131,237,230, 10,214, 73, 30,248,
+122,125,133,227,147, 67, 88, 75, 8,129,171,126,153,172,197,118,183,193,233,233, 41, 30,222,127, 88, 67, 60,136,140,164,168,169,
+ 94,122,187,217, 98, 84,210, 24,107, 17, 47,249,222,229,176,233,186,226, 15,159,224,157, 67,212, 66, 71, 86, 34, 72,189, 38,191,
+177, 26,128, 20,171, 84, 33,171, 89, 12, 67,208,125, 56,195, 59,241, 94, 55,198, 32,105,186, 87,138,169,202,153, 88, 25,227, 41,
+234, 14, 29, 10,187, 90,131,190,239, 42, 68, 91,214, 1,229,254, 42,217,236,160,189,228, 60,205,109, 47,124,146,194,122,239,136,
+ 16,147, 65,223,123, 60,188,127, 15,199, 39,119, 16, 67,212,221,188,173, 26,243,156,179, 6,186,104,179,158, 51,174,214,151, 74,
+ 96, 19, 14,128,181,114,150,229,148,181,113, 82,214,190, 90,236, 70,229, 24, 24, 99,144, 66,196,168, 1, 47, 33, 3,195,118, 51,
+ 73,145, 83, 66, 80, 73, 90,241,191, 39,213,111, 67,141,172, 82,206, 53,121,141, 52,249,210, 91, 43,171, 18,206, 74,110, 44,241,
+169, 73, 33,123,217,169,247,222, 2,228, 48,142, 1,156, 35,188,183,210,224, 39,174,205,124, 74,172,232,138, 52, 0,145,141, 72,
+199,140, 54, 78, 26,118, 83,238, 99, 86, 14, 69,155,228,152,100, 15,163, 72,140,209,230, 48, 3, 57, 33,131, 49, 38,128, 82, 20,
+159,125, 16, 56,234,207,196, 25, 22, 12, 82, 4, 70, 57,114,226, 42,170,207, 86,213,205, 39, 65, 9,152, 12, 44, 3,217,202,231,
+217, 33, 72,163, 71,146,115,159, 84,159,231, 40,139,162,128, 13,222,112, 9,167,247, 22,216,157, 61,130,221, 94,148, 66,243,210,
+ 51,101,230,107,194,244,138,194,206,115,242,212,158,178,102, 31,239,107,153, 10,142, 27, 47,115,195, 98,185,202,170,255, 46,110,
+113, 8, 6,187, 60,137,255, 3, 83,157, 16, 83,129,211,155,162,209,146,184, 50, 38, 39,176,246, 24,171,177,161,133,165,206, 19,
+ 19,221,169, 54, 62, 0,136,156,192,129, 49, 18,223, 60,209, 25, 11,114, 12,147, 50, 98,202, 72,203, 99,124,254,141, 7,184,183,
+ 98,240,217,143,241,253,199,140, 75,163, 36, 54, 34, 88, 68,164, 33, 34,106, 81, 32, 78, 72,166,199,162, 55, 48, 97,135, 93,148,
+206,149, 90,217, 27, 85,132,103, 98,196, 23,231, 56,110,217,245, 77,186,173, 86, 95,107, 13, 40, 55, 49, 48,141,221, 43,103,209,
+ 68, 62,122,120, 23, 63,251,198, 10, 62, 7, 60, 88, 89,208, 71,103,248,209, 54,213, 32,133,178,135, 74,154,117,108, 21, 69, 72,
+ 76,112, 6, 48, 44,221,115,217,217, 21,109,106,226,155, 21, 87, 53,181, 75, 63,199, 74,216,227,185, 55,122, 1,107,210, 62,241,
+173,144,240,114, 70, 98,224,115,239,191,143,243,199, 63,196,227, 39,207,177, 88,186,218, 28, 48, 77, 1, 38,173,163,219,204,208,
+139,104,230, 84, 87,140, 51,140,186,246, 84,248,157,219, 91,216, 84, 50, 35, 49, 79,145,226,133, 39, 81,243,229,167,181,194,171,
+166,110,254, 44, 62, 49, 51,229,196,205, 53,252,118,159, 41,186,245,253, 24, 99,176, 94,175,113,113,126,142,175,254,252,215,240,
+181,175,125, 13,223,251,238,119,241, 71,127,244,143, 36, 95,220,154, 91,225, 60, 34,131,243,243, 23,176,214,225,239,252,206,239,
+224,253,247,191,136,171,245, 22, 80,115,144, 48,142,184,188, 56,131,113, 22,207,159, 62,197,197,197, 37, 22,203, 5, 66,148,103,
+ 99, 98,247,115,245, 28, 63, 63, 59,195,209,225, 33,150,171, 21, 66,140, 42,243,218, 97, 12, 67, 13, 82, 25, 67,192,110, 87, 82,
+213, 12, 18, 98,149, 63,149,109,109, 73,219,202,250, 62, 83, 76,232,189,175, 83,124,140, 73,137, 74, 84, 99,106,173,198,140, 14,
+227, 88,221,227, 58,253,154,150,215,192,218, 64, 36, 45, 10,130,166,178,248,103, 40,114, 88,152,238,164, 4, 54,106, 36,150,117,
+125, 14,181,150,117,226,126,101,148, 64,103,148,192, 89,126,166,152, 72,166,197, 64, 56, 60, 88,225,228,238, 93,109,116,101,218,
+ 23, 61,181, 66,162,214,105,160, 15, 0,114, 56,127,241, 28,235,203, 11,213,205,151,233, 29,112, 78,195, 95,212,209, 46,170, 65,
+143,192,238, 90,252, 98, 22,163,159, 20,170,194,135, 1,105,218, 98,192, 56,140,242, 30, 85,134, 41,205,132, 48,186, 81,108,112,
+ 99,134, 49,185,154,202, 20,131, 41,153,196, 77, 45,230,226, 63, 37,159,133,183, 22,201,120, 49,198,177, 58, 44,100,105,142,114,
+102, 88, 18,102,121, 24, 35, 88, 53,227,140, 17,206, 9,239,129, 51,102, 49,203,101,114,245,154,168,134,204, 24, 19, 35, 13, 3,
+122, 79,128,134,187,144,158, 39,166,156, 41,200, 96, 99,234, 30,191, 40, 93, 18, 67,167,117,136, 31, 63, 84,158, 6, 70,142,185,
+122,193, 87,171, 88,136,124,143,141,147,179, 50, 9,204, 47, 43,125,139,152, 12, 44,141,146,227,158,196,102, 54, 0,240, 38, 96,
+112, 22, 54, 56, 28,249, 1,155,131, 67,152,237, 1,136,175, 0,242, 47, 65,250,246,126, 85,237,229, 94,190, 16, 36,204,235,198,
+109,164,186,130, 84, 42, 82,174, 41, 85,165,168, 38, 52, 4, 9, 37,134,101, 97,112,103, 61,201,178,106,199,219, 77,173,105,166,
+171,220, 50, 71,245, 86, 44, 19,182, 65,179,227,173, 62,240,162, 59, 55, 96,233, 50,148, 40, 96, 51, 99, 0, 1, 28,193, 16,139,
+ 70, 71, 2,143,128,228,215,210,113, 74,135, 75, 8, 72,219, 75, 92,118,192,129, 37,152, 76,141,151,248,164,105,158, 32,243, 38,
+ 2, 54, 69,181, 59,157, 2,197, 73,139,140,153, 37,176, 76,140,168,220, 78,148,197,189,173, 30, 88, 18, 82,147,179,250,168, 55,
+ 19,113, 57, 70, 50, 49,198, 24,112,149, 8,119,238, 28, 99,185,189,192,102,109,113,183,239,112, 54, 14,184,212, 2,152,103, 85,
+105, 74,117, 3,228, 33,128,198,196, 22,134,120,209,191, 39,157,210,175,153,231, 52, 46,121, 78,119, 82, 9,101,234,159,194, 97,
+ 18, 11,175,194,212, 92,100,158,229,141,147,174, 12,254,217, 63,249,199,224,204, 88, 44, 23,179,155, 57, 51, 55,222,240,211,132,
+254, 82, 29,184,178,161, 23, 93,135, 48, 10, 28, 92,148, 44,115, 86,253, 20,195, 91, 46, 77, 89,215, 36,206,179, 45, 66,235,246,
+254,186,255,241,103, 72, 80, 98, 92, 83,211,189,226,235,169,233,174,185, 1,225,185, 18,195, 78, 79, 79,145, 82,196,127,253,183,
+255, 14,254,242, 47,255,101,196, 97,196,207,253,249,159,195,197,249, 5,254,201,255,243,127,227,228,228,228,150, 61, 63, 97,179,
+185,194,197,249, 5,126,231,219,223,198, 95,252,234,207,227,242,226, 18,222,119,184,186,186, 4,192,216, 13, 35,156,247,184,186,
+ 90,227,227,143, 63, 6,144,170,115,219,118,187,195,225,193, 1, 8,172, 97, 28, 2,125,135, 16,240,248,241, 99,124,225, 11,239,
+195, 89,139,139,139, 11,156, 95, 92,160,243,146, 16,182,219, 13,146,148,150, 50,250, 69,135, 97, 20,114,151, 43,142,101,200, 10,
+241,150,224, 16,177, 59, 54,234, 94,182,217,238, 16, 83,172, 69, 37,215,104,101,214, 4,178, 88,247,238,206, 90,116,139, 30, 70,
+ 39,120,231,156, 6,154,228, 58,229,149, 34,197, 41, 77,178, 40,102,116,157, 83, 29,190, 22,119,109, 6,172,149, 34, 92,118,214,
+ 66,236, 82,215,179,146, 50, 6,130,117,186, 11, 6, 41,145,142,208,119, 14,247,239, 63,144, 34, 28, 34,186,190, 3, 51, 48, 14,
+ 35,250,190,135,247,110,242, 72, 79, 98,229,122,181, 94, 35,198, 8,239, 23, 90,100,163,216,236, 70, 89,129,148,247, 64, 69, 5,
+ 2,214,212,182,168, 90,116, 32,132,164,158,233, 18,235,186, 3, 16,199, 0,103, 37,119, 60,231, 66, 44, 68,221,231,203,138, 33,
+ 2, 70, 52,255, 22, 6, 28,133,108, 54, 4,125,125,163,164, 60,103,171,241,147,119, 78,159, 69,141,127, 14, 17,142, 8,212,121,
+ 12, 33,193, 81,134,237, 22, 8,177,149, 8,150,134, 33,233,154, 67,121, 90,112,152,141, 15, 26,243, 13, 18,203, 90,183,232, 36,
+ 74,150,141, 20, 36, 50,112,134,193,100,101, 64, 34, 11, 98,137,129,101,214,226, 12,130,241,182, 18, 16, 83,148, 2,109,196, 74,
+ 78, 53,242, 70,121, 27,166,242,113,178,218,127,247, 14,128,247, 24, 51,129, 67,148, 0, 34, 68, 36, 3,228,164,249, 32, 4, 81,
+ 97,133, 4,199, 9,206, 49,238,186,140,211,147, 30,233,252, 46,108, 88,223, 22,187,254,146,125,251, 75, 16, 55,230, 38,209,237,
+ 53,214,134, 52,213, 22,251,231,190,248,246,119,118,187, 45,178,216,250, 10,140,129, 44,254,193, 9, 50,149,147,236,187, 76, 91,
+ 24, 43, 43, 91,138, 86,106,166,240,212, 20,142,226, 1, 95, 76,100, 74, 96, 73, 73,130, 67,141,206,147, 11,238,116,223,156,244,
+ 67,207, 42, 7, 51,212, 4, 84,104, 48,202,164,195, 22,183, 56,130,129,201, 35, 46, 46, 47,240,163, 39,151,248,248,202, 0,222,
+160,107,246,140,220,216,210,202, 36,110, 96, 32,210,151,200,141,237, 95,171,251,102,220, 48, 93, 81,101,218,219,106,174, 3, 85,
+ 8, 72, 65,139, 51, 54,247,116,160, 87,216, 88,161,225,245,102,135,139,205,136, 97,187,197,143, 79, 47,241,253,203, 17,219, 74,
+ 90,107,210,223, 76,171,109,111,118, 53,229, 53, 90,102,255,158, 70,125,242,135,231, 25, 92,227,173,193, 81, 39,233, 69, 99, 22,
+153,135, 55, 86,146,183, 10,243,180,141, 7,161, 86,234,195,213,148,165, 28,146,183,107, 47,111,103,187,231,204,176,206,225, 96,
+181, 66, 12, 35, 82,226, 73,162, 72, 60,163,224, 87,169,101,219, 68,128,117, 74,163, 73, 14,194,244, 82,151,183,255, 63,255,241,
+ 30,193,254,118, 21, 11,163,141,171,153,155, 9, 79,203, 27, 99, 12, 94,188,120,129, 20, 19,126,255, 15,255, 7,124,243,155,191,
+134, 63,251,211, 63,193, 63,255,227, 63, 6, 71,217, 49,255,203,255,247, 95,160,211,201,231,166,107,121,126,126,142,211,211, 83,
+252,230,111,253, 54,190,245, 27,191,129,205,213, 22, 49, 6, 60,123,246, 24,151,151, 23,240, 93, 7, 67, 6,167,167,207,241,209,
+135, 63,170, 13,233,229,197,165, 76,102,106,128, 2,133,189,235,238,159,228,160, 52,100,176,217, 94,225,244,244, 69,101, 23,111,
+174, 54, 88, 95,110,228,126,114, 14,198, 26,209,176, 55,146, 36, 82,175,240,204, 89,243, 15, 38,215,177, 24,131, 64,241,229,115,
+ 83, 59, 81,113, 38, 22,104,184, 16,210,138, 25,204,155,111,190, 9, 34,131,139,139, 75,157,118, 51,194, 56,168,163,154,209,105,
+ 59, 85, 93, 59, 80,216,236,182, 38,171,145,106,148,203,190,220,168,219, 92, 49, 79, 49, 80,182,180,162, 82,101,170, 55, 86, 56,
+ 59, 41,101,140,195,128,247,222,123, 27,247, 31, 60, 18, 51,156, 69, 47,106,161, 6, 78, 47, 70, 69,101, 7, 61,142, 35,206,207,
+207,133, 72,166, 48,187,115,194,172, 15,234,204, 86,194,102,178,174, 18, 72, 9, 75, 37,144,101,183, 11, 24,134, 1,195, 48, 32,
+132, 17,227, 16, 16, 53,168, 37, 55, 59,216,114,109,188, 53,112,222,171,241,138,174, 55,114, 2,169,209,206, 24,229,247,134,196,
+ 26, 23,152, 62,135, 82, 16, 51,147,168, 36, 44,224,156, 87, 25, 44,132, 7, 97, 12, 66, 6,226, 56,194, 89, 82, 21, 65, 33,255,
+ 90, 69, 58,101, 64, 34,107,192, 60, 25,218, 84,179, 40, 18,181,147,243, 14, 37, 43,148, 89,194,184, 74, 83, 84,172,105, 91,185,
+155,152,212,228,201, 63, 62,211,180, 38,210,104, 88,134,232,228,203, 68,111, 56,137, 74, 75,181,243, 12,130,101,101,185,195, 34,
+ 71,217,179,115, 53,209,209,100,148, 18, 25, 75, 4,207,132,131, 14, 88,251, 37,182, 87, 22,102,247, 2,160,252,153,228,108, 52,
+251,127,116,211, 95,188, 90,219,222,156,139,125,223,195, 37,221,237, 22,199,179,152, 19, 24, 7, 72,135,199,232,143,206,241,149,
+237, 22, 87,231, 6, 31, 37, 66,178, 50,205, 85,221,186, 78, 98,185, 33, 84,241,108, 98,159, 72, 76,211,122,147,145,170,169, 75,
+ 6,229, 34,175,202, 66,204, 40,201,106,218,141,182,222,194,164,175, 37,133,166, 88,195, 50,144, 35,162,218,174, 50, 89,116,222,
+192,123,170,209,142,197,250,182,216,211,146,242, 2, 64,147,180,194,146, 5, 55, 76,121,110, 2, 91,168, 76, 13,213,252, 69, 60,
+134,115,102,149,215,149, 66,163,249,232,214, 98, 69,140, 33, 37,140, 76,141,211, 16,207,248,206,117,103, 30, 7,252,201,143, 62,
+193, 7,186,115,203, 4,184, 98,184, 80,116,246,166, 16, 1, 21, 94,175,187,125, 13,108,217, 43,246,241, 6,251, 2, 87, 26, 22,
+ 69, 27, 50,128, 93, 74,232,157,197,145,183, 72,172,187, 80,149,166,116, 70,166,164, 9, 97,152,224,247, 18, 12,225,200,192, 88,
+133,219,249,230, 72, 66,186, 86,218,174,155,210,176, 54, 5, 57, 69,156,157,157,213, 38,134,247, 1,146, 41,189,181,114, 58,138,
+ 90,160, 40, 27,168, 73,200, 35,204,153,239,175, 38,233,189, 94,160, 10,209,117,178, 28,241,203,190,126, 94,208, 91, 91, 29,110,
+ 32,247,243,179, 51, 12,195,128,127,240, 63,253,207,248,198, 55,126, 5,255,219, 63,252, 95,113,246,226, 5,118,219, 29,118,187,
+ 45,150,203, 5, 92, 77, 37,107, 82,178, 50,227,114,125,137,245,229, 37,222,124,235, 45,252,103,191,253,219,248, 43,127,245,175,
+226,147, 31,255, 24, 57, 51,182,187, 43,196, 16,240,232,209,155, 32, 16,158, 62,125,130, 31,252,224, 3,172,215, 87, 88, 46,122,
+176, 38,172, 93, 92,172,113,120,116, 40, 8,142,179,232,123,129, 96, 37, 97, 78, 10,221,143, 63,253, 68, 29,206,172,232,202,199,
+ 17,195, 48, 86,153,148, 83,111,242,242,243, 21,184,221, 89, 11,182,140, 24,178, 62,139, 69,102,166,141,187,126,110, 2,169,231,
+ 90,192,137, 72, 88,228,234, 63, 15, 34,248, 78,146,210, 82,150,198, 99, 24, 36,197,141,140, 4, 78,136,108, 75, 9,122,121,186,
+113,196, 94, 54, 43,129,109,238,103,144, 89,230, 71,111, 39,249,110,212, 38,167,248,193,215,164,183, 49, 34,217,140,206,121, 60,
+184,247, 0, 71, 71, 39,226,100,231, 93,149,116, 45, 23, 11,120,223, 99,179,221,194,230,140,126,209, 35,171,188,108, 24, 71,177,
+ 97, 85,100,201, 40, 50,102, 53, 87,189,178,233, 67, 16, 52,204, 58,228,156,208,121,249, 60, 66, 8,232, 59, 3,107,150, 56, 59,
+147,226, 94,246,246,153,115,221,161,231, 44, 10, 28,206, 12,182,164,118,187,169, 38,217,137, 66, 65, 25,237, 89,158,117,227,196,
+105, 79,254, 46, 85, 67, 28,112,150, 70,198, 57, 73,211, 4,195, 59,131,144,128, 48, 14,162, 13,215,117,160, 85, 29,123,206,169,
+234,255, 13, 49, 82, 18,118,189,133, 72, 10,165,216,235,125, 64,168,246,176, 33, 18,144,130,200, 25, 51, 1, 49, 40,199, 8,226,
+118,103, 92,153,102, 36,182, 85, 39,197,196, 18,183,106,140,172,117,147, 6, 91,145, 53, 24,163, 1, 82, 40,204,100,192,102, 48,
+172,196,138,167, 40, 74, 2, 16,124, 76,232,156,193,216,121,112,132, 6,198, 0, 57, 1,196,130, 78,176, 53,210, 56, 80,134, 99,
+224,200,103,188, 56, 60, 0, 46, 14, 0,156, 1, 13,123,234,149,100,219,102,245, 60, 25,125,240,117,248,253, 21, 78,114,237, 25,
+231, 10, 9, 41,101, 77,241, 81, 87,161,184,120, 23,221,251, 71,248, 55,226, 15,177,252, 94,192, 63, 60,101, 60,205, 64, 50,123,
+134, 39,152,194, 1, 50,225, 6, 18,208,196,114, 79, 45,138, 74, 66,108, 51, 54,195,228,164,123,250,172,250,244,125, 99,146,249,
+215, 83,113,104,155, 49,188,185, 78,226,162,239,206,170,187,100, 36, 51,223,129,115, 3,199, 83,163,171,159,144,140,226,234,198,
+141, 94, 20,205, 1,148, 85,234, 50,237, 51,106,225, 39,209,216,102,163,197,184,144,214,102,230, 44,250,190, 74, 84,171, 33, 24,
+139, 74, 80,180,144, 78,179,234, 97, 85,122, 7, 42,233,118,211,247,107, 75,185, 20, 20, 83,161,152, 54,198,180,157, 36, 51,207,
+ 33,250,179, 97,196, 82,161,169,164,193, 6,150,244, 61,112,227,211, 94,252,159,169,228,164, 79, 13, 93,177,186,205,205,130,153,
+110,128,254,111,228,125, 52,238,115,101, 63, 86,101, 89, 60,145,227, 26, 11,129,250, 94,218, 40, 87,236,179,196,247,238,159,246,
+181,173, 30,208,252,147,192,238, 52,215,169,183, 25,245,237,212,204,188,255, 19,243,158, 38,125,154,208, 47, 47, 46, 48, 14, 3,
+126,255,191,255, 67,252,234,175,126, 19,255,231,255,241,143,112,113,126,142,113, 24, 48, 14, 3, 22,203, 30,238, 74,246,142,153,
+ 51,194, 16,176,219,109,171,195,221, 23, 62,255, 5,252, 59,255,193,223,192, 87,191,246, 11,120,251,237,119,240,228,241, 19,113,
+103, 11, 1, 71,199, 39,120,243,209, 91,184, 92, 95,226, 7, 63,248, 0,207,159,157, 98, 24,118, 24,135, 29,172,146,190,174,174,
+ 54,184, 90,111,196,225,109,161, 4, 52,157,216, 58,223, 33,197,164,112,188, 48,200, 99,138, 18,254,162,140,119, 99, 8,148, 53,
+ 0, 69, 83,221, 88,189,230,141, 49, 58,129, 10,121, 44,132, 80, 13,144,136,128, 28, 99,125,166,246, 27,167,172,166, 43, 57, 51,
+ 18, 25, 88,178,184,115,114,140,126,177,192,118,183,131,115, 14,155,171, 43,140, 97,208,130, 42, 25,221, 81,223, 43, 26, 35, 32,
+144,129,247, 18,112, 98, 84,162, 55, 25,160,136, 60,204,123, 7,167,230, 43, 73, 25,219,166,172,216,108,113,124,147,157,208,131,
+251,119,240, 51,127,254,231,112,121,185,198,213,213, 21,142, 78,142, 37,225,204, 57, 0,234,159,174,242,173,168,158,247, 99, 12,
+226,218,167, 40, 64, 29,119, 85,158,102, 13,193,123, 15, 99,133,111, 16, 98, 80,243, 27, 87, 81,136,206,121, 4, 61, 93, 79, 78,
+142,176,190, 50, 88, 95,174, 49,134, 32, 63,183, 78,246,133,153,158,153, 65, 97,146,219, 86, 39,189,204,200,214, 0,156, 85,118,
+231,144,114, 84,228, 81,211,247, 12, 33, 37, 84,242, 89,231,197,141,109, 12, 73,118,232,228, 96,141, 4,163,196,196,250, 92, 65,
+ 62, 99,102, 73,123, 51,128,129, 81,211, 29, 32,101,145,159, 89, 29,144, 98, 98, 16, 5,225,202, 16,195,146, 5,156,196,166,118,
+150, 17,105, 1, 78, 65, 26, 49,227,229, 76,206, 60,161,143,144,134,168,216, 90, 23,115, 49,131,201,132, 6,137,225, 29, 35, 27,
+ 15, 78, 66,196,150,213,168,232,226,139, 87, 65, 98,192, 36,198,129, 77,224,190,199,144,150, 72,227,136, 28, 71, 32,103, 24,155,
+197,168, 77,135,218,148,129, 67, 23,224,150, 29,146, 59,130, 13, 47,170,254,253,186,132,150,110,101,219,180,202,149,207,194,240,
+217,255, 91,199,141, 51,154,104,183, 61, 56,175, 97,158,254, 25, 46,221,151,241, 71, 95,250, 28,254,202,151,126,132, 95,226,136,
+255,253, 12, 56,205,197,230, 85,167, 55, 77,153,145,173,137,178, 53, 73, 63, 68, 45,144,197,236,196, 72, 98, 0, 50,140,152,218,
+168,182,145, 76,134,205, 83,150,120, 41,186, 53, 6, 84,247,200,166, 72,224,116,122, 70,102, 33,234,209, 4,105,179, 22,173,194,
+108, 19, 86,227, 20,188,130, 54, 26,180, 20, 61,157,220,139,188, 45,183, 28,101,106, 3, 78,138,119, 48,215, 2, 90, 29,234, 26,
+162, 86, 73,147, 10,234,229, 62,115,165, 43,185,242, 58,165, 23, 14,130,197, 60,208,163,205,159,231,226, 45, 92,154,167,134,205,
+ 78, 52, 15, 47,105,211,221, 91, 86,254, 68, 54,209,247, 87,101,113,242, 51,237,212, 31, 26, 12,196,196,200, 37,146, 71, 73, 70,
+ 89, 61,151,179, 26,241,180,215,251,166,130, 86,201,144, 68, 55, 50,201,121,182, 38,215, 6,169,232, 77,103, 78,132, 92,123, 64,
+190,222,158, 86,216,189,252, 17,113, 99,194, 70,124,163,163,156, 33,177,229,141, 57,207, 36,131, 63, 17, 12,207,123, 70, 49,179,
+181, 66, 70, 29, 20,193,123, 52,185,102, 66, 63, 63,199,250,242, 18,223,254,221,223,195,183,190,245,235,248,103,255,244,159,226,
+211, 79, 62, 69,138, 9,187,221, 14,222,123, 28, 30, 28,226,249,233, 41,158, 62,123,134,197, 98,129,135, 15, 31,224,189,207,125,
+ 14, 95,249,202, 87,240,238,231,222,195, 87,190,242, 83,184,115,247, 30, 94,188, 56,197,139,211, 23, 66,152,113, 14,143, 30, 61,
+ 2, 25,139, 31,252,224, 3,124,248,163, 15,101, 74, 12, 1,222, 57,228,148,177, 94, 95, 97, 28, 71, 92,173,175,116,223, 59,202,
+129, 63, 45,169, 52,153, 76,138,185,100,106, 75,179,185, 29, 7,229, 48,240,156, 16,167, 83, 23,181, 14,136,137,171, 81,145, 53,
+194, 64, 7, 73,196,107,187,210, 74, 57,171, 12, 77,164, 91,169,144,184,146,190,174, 37,172, 86,146,108,182,190, 92, 99,187,221,
+ 32,115,227,180,150,185,225,185, 24, 24, 6, 98,142,112,106,209, 90, 2,129, 66,144,196, 57,209,190, 11,164, 30,115,210, 6,197,
+ 34,166,164,104,217, 20,100, 34,207,117,170,147,232,118, 24,113,113,126, 38,215, 45, 37,196, 16, 64,203, 5,198, 24, 17,214,107,
+241,124,215, 72,215,164, 49,165,156, 25,222,123,244,125,135, 97, 39, 72, 64, 84,162, 33, 51, 99, 24,133, 92,232, 59, 7,239,172,
+ 18, 3, 5,166, 15, 65,164,136, 89,127,182, 49,142,149,167, 80,124,234, 57,231,134,148,156,180, 57,209, 24, 82, 45,234, 62,201,
+ 42, 39,106,227, 69, 36,176,191,179,162, 64,200, 89,244,233, 37,234, 54,231,194, 21, 18,130,164,177, 86,239, 9,134,247, 25,126,
+209, 33, 37,241, 6,149,157,122,150, 66,111,236,100, 31,203,128,119, 34, 73,203,234,136,151,116,170, 22,158,194,196,123,168,206,
+111,170, 79, 23,191,127,175,254,240, 12, 78, 99,245,122,167,230,108,182,132,170,109, 55,142,145,217, 74,208, 75,140,240, 38,131,
+172,151, 52, 82,203,200,217,130, 88, 72,113,172,235, 1,217,193, 67,253,249, 13,200,137,165,239,214, 46,176,131,131, 13, 87,200,
+ 38,201, 90, 72, 73,153, 12,198,146, 8, 7, 43,194,217,242, 24, 54,120, 0, 73, 80, 8,208, 28, 57,188,165, 56,215,241,171,149,
+ 30, 23,211, 49,230,215, 30, 52, 4,145, 45, 19, 79,158,210,195,178,113,160,244, 20,253,135,192, 15,195, 27,248, 95,222, 90,226,
+151,142, 46,240,185, 53,112, 54, 18, 70, 35, 7,102,199,132,108, 15,144,143, 34,190,144,119, 24,174, 12, 62,209,194,145,160,186,
+204, 82,128,235, 84, 37,197, 61,195,192,112, 0, 2, 48, 66, 89,166,122,140,120, 61, 12, 83,243,131,149,175,167,114,140, 23, 88,
+155, 49,203, 11,103,222,143,183,107,192, 74,206,215,104, 83,233, 6,105,149, 16,104, 90, 71,179,189, 29, 48, 21,162, 32,215, 38,
+ 96, 86,178, 26,168,191, 64,250,166, 53, 6, 85,210, 92,189, 17,117,252,116, 0, 2, 10, 59,190,188, 66, 70, 44, 62, 0,251, 72,
+ 66,163,145,230, 27,166,205,162, 69, 55,141,116, 48,211,156,189,205,205, 8, 91, 37, 49,121, 74,210,171,215,158, 39, 95,248,226,
+ 19,127, 83,239,105,102,117,151,170,174,159,111,113,107,171, 97, 48,188,199, 65,184,145,181, 46,191, 27,135, 1,198, 88, 97, 10,
+103,190, 33, 19,144, 95, 74, 44,205, 44,171,145,207, 98, 52,243, 42,178, 11,243, 92, 7, 95,167,192,246,129,109, 30,109,210, 9,
+238,233,211,167, 48,198,224,191,253,189,191,143,255,248, 91,223,194,191,248,231,127,140,143, 62,250, 80,138,104, 78, 56, 58, 62,
+ 70,223,117,232,151, 11,156,220,189,131, 95,253,230, 55,241,165, 47,127, 9,239,127,241,139,184,127,255, 33, 14, 14, 15, 16, 67,
+192,233,233, 41,190,247,221,239,226,240,240, 16,111,189,253, 14,172,115,200, 41,226,252,226, 28,223,251,238,119,241,236,233,115,
+157,226, 24, 49, 6,164,152, 97,157,193,110, 24, 64, 96, 44,186, 14,195, 24,176,190, 88,227,206,157, 19,184, 19, 95,239, 33,107,
+ 12,118,105, 16,231, 56, 42,123,112,177, 70,133, 78, 70, 69, 66,101,117,154,205, 44,123,112,163,158,223, 5, 85,201, 57,163,115,
+ 14,198,200,186,135,212, 16, 36, 51,131, 82,129,101,229,249, 29, 67,172,104, 81, 82, 29,179,117, 22,171,213, 10, 49, 70,156,157,
+157, 35,132, 81, 53,199, 10, 41,199, 48,197, 42,231,194,224, 55,250,190, 72,229, 84,202,209, 81,246, 60,180,232, 58,149, 64, 69,
+ 53, 98,105, 40,173,117,146, 39, 18, 73, 94,223,121, 28, 28, 28,226,242,242, 18,253, 98,129,197,162, 71,223,247, 24, 71, 49,179,
+233,251,133,166,188,233, 58,207, 72,179, 76,144,125,180,177,226,213, 25, 98,172, 4, 63,231, 44, 50,235, 48, 68, 86, 27, 80,212,
+ 16, 21, 34,209,141, 27, 34, 56,239,149, 53,191, 70, 24,163,184,241,113,134,247, 22, 68,190, 58,217,201,255, 90, 12,227, 8,210,
+216,218, 93,138,112,181,223,120, 62, 0, 0, 32, 0, 73, 68, 65, 84,234,145,111,172,173,140,148,148,147, 54,253,194,109,136, 12,
+112, 16, 24,188,184,118, 90,195, 42, 33, 46,100, 62, 57,112, 83,206,242,236, 59, 87,121, 63,197, 30,184,166,189, 25,146, 16,108,
+133,210, 5,173,128,192,249, 52, 17, 16,197,124, 72,244,245,156, 24,198, 4, 24,227,196,118, 54, 69, 37, 29, 83,221,171, 79,161,
+ 92,122, 70, 41,242, 65,204,176,158,144,216, 11,159, 35, 9,177,176,142,139,101,117,172,134, 68, 96,134,183,130,232,132, 12,184,
+ 24, 97, 45,227,192, 59,120,219, 99, 24, 12,194, 48,192, 96,128,181,146, 17, 31,217,160,203,140,227, 62,225,236,240, 8,124,113,
+ 0,226,255,143,181,119,251,181,109,203,206,187,190,214,122,239, 99,204,117,217,247,115,115, 85,157,186,218,229, 68,184,236, 92,
+100, 35,197,150, 28, 59,150, 5, 50,201, 3,145,192, 88,178, 83, 66, 1,161,132, 0,121, 64, 36, 16, 80,224,157, 7,132,248, 3,
+120,224,153, 63,128, 55, 8, 33, 65,136, 4,112,176,171, 92,101, 87,157,203,190,156,179,111,235, 50,231, 28, 99,244, 75,227,161,
+181,222, 71,159,115,173,125,206,169,132,146,172, 42,159,179,247, 90,243, 50,198,104,189,181,246,125,191,239,181, 78, 58,250,245,
+243,231,116,219, 7,141,153,200,225, 36,147, 62, 67,253,222, 13,190,235,223,242, 96, 58,200,198,110,122, 97,127, 2,146,215,184,
+251,201, 22, 47, 94, 59,252, 79,158,112,146,245,169,237,237, 11, 46, 60, 32,111, 8, 15,125,198,233, 30,120, 85, 86,207,112,105,
+164, 52,181, 16,120, 20, 68, 97,141,111,237, 48,160, 77, 87, 45, 4, 97, 70,144, 2,226, 13,104, 4, 78,243, 30,211, 66, 72,164,
+248,192, 38,214,146, 67, 59, 89, 27,217,154,208,102,237,160,104, 13,231,147, 85,137, 95,186,177, 57,147, 89, 34, 72,125,228,196,
+176,211,238, 74,123, 59, 16,136,153, 91,128,168,118,218,181,115, 71, 35,179,173, 5,110, 29,215, 23,226, 70,188,107, 59, 85,233,
+198,227,164, 55,203, 0, 40, 43,190, 43,155, 98, 62,201, 42, 92,169,135, 9, 22, 90,167, 7,221,215, 92,250,110,151,214, 17,119,
+ 57,250,115,117,215, 47, 93,245, 76, 41, 27,242,146,218,231, 86, 47,206, 34, 43, 64,131, 26, 75, 91, 12,141, 43,183, 58,166,107,
+ 87, 94,201,118,114,212,226, 10, 14,227, 89,229, 24,176, 32,116,184,200,177,110,254,157,119,223, 69, 92,102, 92, 92, 92,169,231,
+244,152, 82, 87,149,252,183,156,145,229, 95, 64,237,126, 99,160, 46, 95,204, 3,119, 0,241, 33, 96,191,219,227,249,243,231,248,
+234,215,190,138,191,249,183,254, 67,252,242, 47,255, 10,254,228,143,255, 4,143, 31, 63,198, 48, 4, 56,127, 7,195,240,200,178,
+184,149,111,253, 83, 95,249, 10,254,250,191,243,239,194, 15, 1,151, 23,151,120,245,234, 37,158, 62,125,210,198,211, 76,192,221,
+123,247, 48,140, 3, 46, 47, 46,240,241, 71, 31,226,241,227,199,120,253,234, 66,139,184,171, 93,170, 6,143,184,228, 32, 82, 52,
+110,212,146,190,230,121,198,197,229, 21, 30,189,243, 22, 78, 54,167, 88,162,238,204, 75, 41, 70,102, 99, 44,166,108, 47,185, 32,
+165,220, 92, 11, 84,149,234, 57, 35,151,245, 3, 41, 89, 97, 50,196,132,113, 8,218, 13,118,116,180, 16,148,106, 22, 83, 66,176,
+135,191,100,187,167,178, 30, 14,170,104,111,179, 57, 69, 24, 54,120,250,236, 25, 46,175, 46, 32, 57,173, 99, 87, 17,243, 31, 19,
+144,212, 14, 91, 74,214,160,153,218,237, 59, 7, 18, 32,152, 56, 52, 38, 29,151,215, 6,129,153,224,131, 38,148, 9,170, 95,124,
+237,182, 97,116,187,183, 30, 61,192,217,217,185, 22,220, 92,247,226,218, 97,143,227,198, 18,205,214, 85, 85,177,194,161, 90, 1,
+198,102, 51,106, 36,109, 84,129,144, 22,113,203,244,206, 25, 28,163,198,188, 14, 3,150,148,177, 44,139,118,217,131, 38,102,236,
+247, 19,230,121, 82,215, 7,107, 52,110,201, 81,159,163, 34,205,234,165, 59,116,224,244,100, 68,140, 25,211,126, 54, 47,187, 78,
+ 6, 66, 88, 5,139, 76,206,200,119,177,165,201,165,142, 70, 25, 83,212,181,221,160, 57,239, 57,101,155,142,100,164,152, 17, 88,
+192,102,133,163,102,179, 82,113, 27, 59,134,136, 83,113, 30,213,213,139,173, 67,179, 62,227,200,232,125,169,232,223,169, 35,105,
+245,192,103,148, 26, 94,221,137,146, 91,244,171, 21,109, 66,209, 63, 95,106, 42, 28,153, 75,130, 80, 44,109,132, 76,197, 46,201,
+ 14, 8, 2,245,159,219, 4, 38, 21, 21, 39, 10, 11, 92, 41, 8, 94,112, 26, 60,156, 27,177,115, 30,113,239,128,188, 55,246,137,
+ 22,129, 59, 46,195,159,109, 32,225, 28,148, 94, 31,106,222, 90, 97,167,110,206,250, 89,132, 43,122,131,203,253, 51, 10,251, 65,
+167, 78, 12,113, 10,220, 41, 69,223,160, 51, 2,155,144, 3,113, 66,152, 51, 94, 47,132,215,172, 98, 43,182,222,179, 16,193,201,
+ 30,195,117,194,199, 51, 53,137, 64,178, 2,196,102,235,178, 51, 29, 2, 84,204,148, 77, 87,238,142, 20,251, 21,227, 42, 0, 92,
+181,166,116,123,123,125, 30,150, 46, 57,173, 31,255,174,196, 51, 58, 70, 99, 83,111,105,163, 53,188,139, 84, 80,225, 88, 86,187,
+149,172,167,188,210,226, 89,165,137,212, 74, 85,231,154,176, 48, 48, 33,144,202, 41,146,172,147,129, 22, 64,114, 48, 22, 63,196,
+186, 80,231, 1, 87,120, 79,233,130, 82,168, 11, 8, 88,119,218,235,254,185, 11,104,145, 26, 64, 99,140,245, 22, 83,218,209,238,
+ 76,196,215,116, 4,117, 24,218, 70,217, 58, 61,121,244,232, 45, 44,211, 53,174,118,179, 58, 30,104, 61,160,149, 58, 37,176, 31,
+ 66,210,237,235,187,253,250,218,223,172,177,136, 58, 49,176,177,170,172, 99,105,105, 98, 17,234,188, 12,235,133, 65, 71,249,232,
+ 34, 90, 32,190,242,149,247,241,250,213,115, 60,127,254, 2,236,198,131, 4,187,227,236,247,207,178,174,137,252,100,217, 11,183,
+197,178,203, 23, 60,133,167,148,112,125,125,141,221,110,135, 7, 15, 31,226, 95,255,171,127, 21,255,198,111,255, 54,238,221,191,
+143,239,127,255, 15,145, 98, 66, 24,130, 22,133, 54,177,208,209,119,240, 14, 97, 24,240,244,147,167,152,246, 19, 74, 46,216, 79,
+123, 75, 61,171, 86, 49,193, 18,103, 60,121,252, 24, 63,252,193,247,241,201,179,231,200, 41,155, 66,218,246,222,172,221, 42, 1,
+136,105,177,112, 14,193,126,154, 44,145,139,112,241,250, 2, 41,101,132, 97, 80,223,243,178,232,107, 51, 33,167, 34, 73,197, 2,
+110,244,123, 13, 94,119,229,185, 84, 31,185,199, 92, 10, 98, 86,250,217, 48, 4,229,107,179, 38,121,129, 9,101,209, 98,236,135,
+128, 17,104,176, 25,169,188,118,251, 61, 34, 5,227,184, 1,136,112,239,254, 93, 0, 5,175, 94,189,210,113,183,169,140,148,178,
+170,163,218,156,138,169,229, 11,134,160,250,128,184, 68, 72, 0, 70,231, 65, 78,159, 63,170,178,198,218, 85, 90,138,104, 78,122,
+ 87, 58,238, 24,232, 22,192, 82, 68,112,239,238, 57,238,221,187,143,104,133,183,122,232,135,205,136, 64,235,225,109, 12, 65,149,
+230,166,220, 87,168,140,107,201,111,128,224,249,243,231, 77,165, 94, 73,127, 4, 96,183,219,195, 59,198,184,217,180,137, 73, 46,
+185,221,175, 49, 37, 76,211,132, 24, 51,118,251, 61,138,145,252,114,133,201,212,213, 84,209,100,181,113,208, 41,202,201,233, 73,
+167, 55, 80,150,186,247,154,218,145, 77,216,230,134,128,148, 10, 8,122, 13,204,211,164, 22, 51,118, 40,146,224,196, 33,166,108,
+128, 23,143,101, 90,140,175,174, 99,121,170,254,240, 98,217,238, 96, 72,202, 32, 54,145,179,115, 7,192, 49,214,139,104,141,199,
+181, 36, 55,177,154, 80,187,119, 72,105,105,106,149, 23,146, 50, 44,137,175, 24,168,102,173, 25, 25, 26,196,194, 69,215, 1,196,
+ 78,159,171,230,169, 87, 61,129,192, 3,128,120,139,109,181,137, 3, 51, 50, 24, 75,212,123,106,136, 11,194, 48,224,254, 24, 48,
+133, 19,236,166, 17,121,217,130, 75, 66,129, 96,227, 8,227, 6,216, 13,231,224, 88, 9, 45,188,202,199, 76, 97,143, 47,208,181,
+ 31,104,118,106,195,116, 11,108,234, 77,171,119, 15, 51, 15,100, 57, 74,183, 50,168, 71,134, 42,227, 60,173,163,216, 26,222,193,
+121, 66,218, 18,158, 0, 90,188, 73,201, 62,149, 38, 71, 68, 24, 29,192,197, 14,164,118,194, 98, 0, 81, 86,222,186, 22, 10, 66,
+170, 59,232,188, 83, 49, 6,248,144,236,212,119,122, 36,135,106,165, 82,139,240,234, 41, 85, 96,145, 30,197,196, 68, 57,210,209,
+ 83,170, 98, 89, 99,113,245,180, 88, 82, 65,225,128,224, 77,144, 39,210, 65,104,234,110, 73,191,176, 96,182, 28, 77, 84, 83,144,
+ 76,169,189,175,200,129,245,173, 10,252, 0,180, 96, 26, 28,141,101,171, 37,139,140,146,199, 7,235, 3,253,121, 97, 51,130, 74,
+198,180,196,149, 20,215,237,174,179,237,215,184,251,136,214, 12, 16, 50,141,128,116,162, 65, 91, 75, 20,209,155,174, 50,213,237,
+115,202, 69, 14, 40,114,235,200,188, 78, 44,112,128, 59, 61,200, 74,239,225, 50, 88,119,157,189,176, 76,186, 9, 81, 83,170,243,
+225,239,105,255, 93,147,181,136,240,255,254,254,255,163,233, 87,227,216, 44,136,206,222,104,146,210, 50,226,139,188,185,160,123,
+ 87,139, 84,194,231, 70,159,210,103, 8, 84,228, 80,188,231,131, 1,120,236, 97,126,117,117,133,237,246, 26,119,206,239,224,155,
+223,250, 38,126,238, 59, 63,143,191,244,151,126, 3,223,252,233,111,225,245,235, 75,124,248,225,135, 16, 99,152,143,227,198,126,
+198,128,113, 51, 2, 16,108,119, 91,204,243,140,253,180,195,171, 87,175,240,226,211,231,184,115,126, 87,247,125,203,210, 84,221,
+243, 60,227,250,234,251,152,118, 59,188,124,161,214,184,148,178,101,109,155, 7,220,113, 59, 28,141,195, 0, 71,174,117,129, 57,
+173,105, 99,251,237, 30,242, 64, 15, 80, 33,120, 43,112, 5,203, 92,253,224, 38,234,180,253,120,178, 7,171, 88,230,185,226, 74,
+ 11, 60, 51, 54,227,104,136, 83,195,150, 90,247, 6, 20, 99,157, 47, 77, 12, 86, 74, 50,213,122,110,116, 58,102,181,133,157,157,
+157,225,209,195, 7,184,188,188,194,246,122,219, 77,227,160, 97, 35,208,145,125,138,170,234, 70, 29,201,215, 73, 6,115,179,225,
+137,209,212, 42,104, 71,138,180, 85, 91, 49,149,181, 35,135,100,187,238,122, 1,120,199,120,240,224, 1,198,113, 99,209,174,122,
+ 0, 56, 63, 59, 5,153, 55, 93,189,235, 27, 44, 73, 9,120,245, 25,227, 28, 97,240, 94,133,124, 57,194,177,199, 56,142,152,247,
+123, 45, 46, 22, 24, 19,185, 24, 21, 82, 84,115, 80, 45,126, 82, 48, 79,139,185, 3, 10,216,121,196,189,137,184, 72, 95,175, 6,
+ 71, 25, 30,215,138,100, 48, 17, 91,142, 51, 70,219,231, 47, 75, 52, 88, 15, 35,102,157, 62, 0,130, 98, 73,132,142, 73,163,184,
+ 23, 37, 16, 50, 9,206, 78, 55,166,220,207,170,179, 49,134, 73,240, 78,197,116, 69, 16, 60, 41,113,205,126, 86, 61, 48,197, 76,
+160,152, 48,122, 15,239, 28, 98,177,145, 61,153, 13,205,190, 19, 50, 43, 93, 17, 66,145,108,207, 48, 11,157,113,222,158, 73,122,
+ 93,214,238, 28,118, 16,104, 81,168,214,124,177,194,244,109,250, 32, 96,138,109,229, 66,221,180, 82,170, 45, 78,178, 90,170,109,
+199,158,164,232,125, 73, 25, 49,123,228, 57, 97,112,130,147,129,129,147, 13, 38,156, 3,241, 26, 89, 50,156, 8, 78, 92,198,118,
+216, 0,219, 1,144, 89, 87, 10,221,196,177, 98,111, 63,151, 5,191,218,247, 15,133,197,183,252,221,219,224, 87, 94,114, 70, 78,
+162,236,116,133,169, 53,150,120, 31,140,193,213,187, 77,107,161, 41, 64, 23, 57,103, 35, 48, 98, 8, 51, 60, 51,198,154, 90,198,
+128,183,236,219, 66, 4,111, 34,176, 10, 10, 17,232, 7, 88,136, 21,118,210,109, 70, 93,247,251,170,103,178,206, 26,170, 42,154,
+132, 1,231, 16,144, 20, 19,216,141,202, 43,223,166, 88,225, 93, 59,232, 85, 17,175,204,119, 43, 59, 65, 57,191, 37, 31,238,210,
+155,120,142,214, 73,128, 35, 32, 79, 91, 60,157, 9,103,103, 39, 24,220,154, 84, 38, 71,226,169,166,118, 37,181, 93, 36, 11, 93,
+ 49,177,122,219,157, 56,123,183, 69, 20,206, 33,180,154,159, 10, 8, 33,140,112,101,193,188, 44,221,103,194, 7, 74,116,105,194,
+194,195, 47,188,142,202,169,230, 11, 87,186, 31, 86, 16,199,203, 23,207, 1,114,240, 78,119,158,108,167,217,108,113,141,125, 33,
+147,163,109, 49,117, 71,144,117,158,114, 72,143, 47, 7, 74,119, 57, 16, 17,246, 83,153, 3,149,251, 45,106,144, 37, 70,229,242,
+ 91,152, 7,108,109, 65,232,199,118,159,221,165,251, 97, 0, 1,216,110,163, 65, 42, 62,231,228,220, 91, 80,228, 72, 28,215, 49,
+239,235, 40,248,213,203,151,152,151, 5,223,254,246,183,241,103,255,252,159,195, 47,252,153, 63,139,111,124,243,155,184,119,239,
+ 62, 82,140,248,209,143, 63,192, 98, 59,109,231,189,138, 17,189,199,201,201, 6,119,238,220,197,197,229, 5,254,248, 7, 63,192,
+235, 87,175, 48,207, 51,166,121,194,245,213, 78,197,115,206,225,221,159,122, 79,167, 49,118, 72,221,239, 38, 92,111,183,216, 94,
+ 93, 91, 74, 90,208, 17,108,142,250,128, 47,235,200,178, 20,193, 20, 19,242,126,106, 29,229, 60,207, 24,135, 1,165,232, 65, 96,
+115,178,193,245,245, 22,119,206,206, 48, 12, 3, 62,248,224, 35,196, 20, 85,145,110,190,102,103,157, 42,113,251,193,218,169,123,
+143, 28,180,187,117,236,154, 8, 77,237,110,234,245, 45, 6, 50, 73, 49, 25,112, 69,143,121,243,146,212, 15, 12, 29,133,250, 65,
+213,198,111,191,253, 54,156, 15,248,228,211, 79,109, 87, 76,237,103, 56, 34,164,152,140,249,175,247,142,247,190, 89,189, 92,205,
+ 99, 47, 6, 64,161, 53,230, 88,227, 89,185, 77, 96, 24,107,102,133,247,234, 93, 15,230,247, 62, 59, 59,197,184, 81,170, 30,153,
+208, 46,184,161,209,250, 0,198,178, 36, 85,115,231,180,138,243,236, 53, 44, 41,233,100,197,118,222,222, 7, 36, 31, 91,188, 45,
+177,129,164, 44,247,189,136,180, 67, 87,140, 17,201, 34, 95,227,178, 88, 8, 76, 65,178,239, 67, 69,105,186, 66,131, 6,147,169,
+240,203, 60,218,204,140, 37,103, 4,172,217, 12,204, 6,198,178, 11,186,126, 63,222,115, 19,110, 13,131, 67, 46,192, 50,207,246,
+153,170,160, 44, 11, 33,199,132, 33, 56,120, 63, 98,137,218,214,144, 87,139, 92,181,253,146,165,231, 21,179,204,106,194,155, 67,
+ 42, 58,147, 44, 32, 13, 24,226, 4,248,161, 41,149,114, 46, 96,201,109,247, 47, 38,164,204, 57, 91,138, 95,229,251,139,161, 91,
+ 21,191, 11, 19, 23, 30, 79,249, 52,123, 93,225, 62,130,234,157, 23,163,164, 72, 39,234,163,102,152,214, 26,224,144, 1, 44,169,
+ 0, 41, 97,227, 8,231, 39, 1,137, 79, 48, 95, 10, 92,190,192, 70, 18,206,135, 1, 47,206, 78, 33,175, 79, 65,216,223, 24,143,
+171,231, 94,190, 40,175,178,177, 82,142,157, 59,199,214,216,227, 31,231,217, 44, 32, 10,134,177,142, 71, 86, 37, 58, 58, 27,153,
+ 84,220, 43,245,214, 43, 52,229, 60,245,221,188, 0,194,210, 8, 68,165,219,237, 38,209,174, 87,121,240,140, 60, 4,220, 25, 50,
+198,152,241, 58,174,121,235,142,235,142,154, 77, 92, 87,237, 88,101, 77, 39, 19, 85,208, 59,231,224,145, 13, 29,184,106, 3, 86,
+ 81, 69,177,135,252, 42, 48, 91,195, 91, 4,146,174,113,193,127, 26,191,252,123,191,133,191,248,244,127,192,127,247, 63,190,192,
+124,186,193,232,185,121, 62, 43, 75,210, 17,195,165, 5,113,243, 46,126,241,207,253, 2,222,154, 30,227,127,251,195,167,120, 49,
+ 19,130, 99, 3, 42,172, 73, 83,253,136, 86, 58, 31, 84, 6, 33,128, 48, 56,245, 10, 36, 17,204,182,179,231,166,188, 95, 51,218,
+ 1,193,246,234,210,172, 38,174, 77, 46,164,243,161,167, 58, 73, 17, 65,130, 90, 76, 50,148, 10,199,157, 58, 94,191,103, 90,253,
+238,109, 12,233,218, 77, 69,128,210,177, 44, 41,107, 13, 71, 89,139,175,116,243,235,181, 27, 47,141,230,214, 60,233,157, 54,225,
+ 13, 84,228,131, 11, 90,142,243, 94,187, 11, 88, 44,112,226, 88, 63, 66,210,159,102,229,214,205, 84,175, 58,159,246,251,246,191,
+127, 34,113, 92,191, 80,151,155, 63,247,242,226, 2,151, 87, 87,248,185,239,252, 28,126,235, 95,251,203,248,197, 95,250,151,113,
+239,254,125,236,247,123,188,126,245, 10, 63,126,245, 39,152,230,201,188,249,102, 7, 74,250,160,187,127,231, 14,206,207,207,241,
+227, 31,253, 8,255,251, 63,250,199,120,254,252, 83,165, 99, 89,167, 60, 91,218,217, 60,237,177, 44, 11,222,122,235, 17,182,219,
+ 29,130,215, 4,179,253,118,139,235,237, 86,177,193, 21, 6,101,221, 36, 65,217,223,197, 98, 60, 83, 84,126,249,110, 82,212,235,
+ 48,120,120,199,184,186,222, 98,191,223, 41,169,204, 57, 75, 1,219, 27, 59, 66, 5, 85, 58,102,119, 32, 39,173,227,211, 17,182,
+118,199,228, 24, 46, 69, 72,209,144,149, 34, 98,148, 64,177,145,191, 89,130,236,225,236, 61,183, 53, 65,211,145, 72,209, 24, 78,
+ 2,238, 63,184,143, 71, 15, 31,226,201,211, 39,152,166, 29,134,193, 53,203, 86, 46,235, 46,191,126,239, 85,181, 95, 45,101, 33,
+120,245,121,167,108,247, 62, 27,254, 52,183, 2,174,202,252,149,254,166,171, 72, 37,198, 21,227,144,223,189,123, 87, 71,238, 41,
+106, 81,118,222, 20,244,192,126, 63, 97,115,178, 1,195,171,130,157,131,218,164,114,196,233,233, 9, 8,140,105, 81, 97, 31, 59,
+103,144, 23,189, 64,163,217, 2,157,133,229, 16, 72,191, 83, 43, 70, 41, 46,118, 40,145, 86,224,182,215, 59, 44,243, 12, 71, 26,
+130, 85, 57,251, 76, 14, 5, 81,115,217, 65,152,230,168,182, 53,115, 28,212, 67, 69, 77,165, 99, 38, 48,235,239, 77, 89,249,249,
+ 49,234, 40, 59, 56,110,159, 69,156, 35, 70, 41,128, 11,202, 5,112,206, 18,231,116, 13,201,155, 17,203,178, 32, 72,129,115,222,
+ 28, 6,162, 5,212,120, 5,139,173, 69,194, 48,130,153, 80,178,128, 44,253, 45, 38, 32, 80,210, 84,208, 26,240, 99, 9,129,169,
+ 0, 57, 69, 21,202,145, 40, 68,168,122,172,164,218,209, 74,139, 85,173,208, 48, 34, 61,100,194, 51,114, 33,117, 53,100,101,208,
+175,246, 95,115, 91,217,116,130,161,161, 90,156,213,153, 5,155, 28, 72, 17,100, 42,152, 18, 99,140, 17,119,130,131,156,111, 32,
+219, 2,148, 45, 78,124,129, 31, 3,138, 63, 5,197, 23, 7,116,185,207, 37,200, 29, 60,100,228,243,162, 30,215, 39,101,185, 25,
+ 36,237,254,244, 55,191,244,247,119,211,220,102,161,141, 24, 39,235, 3,156,110, 17,251, 52, 8, 73,167,164,174,232,206,106, 17,
+ 75,178,166,145,161,162,104,109,175, 94,108, 72, 95,204, 55, 69,131,195, 29,206,224, 36,216, 9,186,112,209,174,135, 35, 28, 57,
+179,187, 81,122, 73, 72,121, 37,217,173, 10,117,180, 17,127,169,227,219,163, 40, 81,237,232, 29, 28, 11,210,197, 83, 60,254,232,
+ 5, 94, 76,166,214,188,165,129, 99, 19,122,148, 56,227,178,156,224,253,111,191,143,119,242, 39,248,227,103, 11,200, 51,248,192,
+143,190,210,202,235,103,200,221, 74, 65,236, 53,157,216, 73,118, 6,225,238, 24, 48, 80,193,100,214, 93, 58, 32,185, 29, 90,179,
+152,120,181, 10, 17, 29,176,219,143,163, 5,152,106, 17,175,135,157,155,185,236,171,112, 77,223,123,140,217,148,183,235,234,226,
+ 32, 13,156, 86, 11, 94,221,137,201,145,250,253, 88, 16, 87,169,125, 61,119,251,198, 69,219, 87,207,227, 55, 46, 71, 17,166,210,
+ 81,207,228,230, 49,225,179, 32, 51,130, 47,158,120,220,109, 33,218,189,210,175, 25,150, 24,241,228,241, 99,220,189,119, 15,191,
+251,221,191,134,127,239,111,252, 77,124,231, 23,254, 12, 94,189,126,133,103,207,158,226,242,242, 53, 82,140,216,156,156, 34,132,
+ 1, 67,208,238,124, 55,237,225,152,241,229, 47,125, 5,231,231,119,240,131, 63,250, 30,254,151,255,249, 31,224,217,147,103, 45,
+110, 51, 26,194, 83,227, 44, 21,217,185,204,179,174,157,178, 10,150,182,187,157,237,217,181, 91, 75, 49, 54,108,144,216, 78, 37,
+ 25,110, 85, 1, 44,218,125,206,203, 12, 66,193,102, 51, 34,166,140,253,110,143, 59,119,239,226,225,219,143, 16,231, 69,199,250,
+215,215, 16, 17,101,187,155, 5,172,148,140,101,137, 86,152,215,121,150,115,154, 64, 54, 77,139, 77, 10, 74,115, 3,176,217,133,
+212,226, 85, 12, 48, 99,126,244, 84, 51,212, 89,199,170, 69, 33, 56,167,103,167,248,234, 87,191,134,171,235, 43,124,242,236,147,
+150,214,151,115,253, 59, 98, 34, 43,133, 23,213,238,162,122,202,107,176,202, 24, 60,156,211,162,134, 38,214, 21,108,198, 65,179,
+213,169,118,132,166,152,247, 14, 32, 13, 45,154,166, 25,119,206, 79,241,232,173,183, 90,162, 92, 69,161, 58,219,147, 39, 91, 23,
+ 12,227,128, 33, 12, 45,145,110, 8,234,185,158,163, 90,177, 54, 6,206,217,237, 38,253,142,196,148,217,172,180,181, 24, 53,255,
+156,137, 27,225,175, 70,206, 50,105, 8, 84, 92, 34,246,147,138,229, 96,137,118, 21,218,163,106,127,111, 93, 50, 44,149,142, 15,
+166,134, 21,207, 91, 59,116,199,220,193,155, 42,163,126,157, 80,122,214,169,130,152, 11, 0,165, 96,244, 22, 88, 83, 0,130,238,
+230, 99, 38,228,184,152,200,177, 24,176, 7,109, 45, 80,133,195,193, 51,136,189, 37,169, 85,206,125,214,208, 23, 66,115, 44, 20,
+219,167, 23, 11,149,113, 68,202, 11, 48,141,144,126,207, 78, 33, 59, 57, 43, 78,150, 61, 74, 49,190,244, 42, 65,191,193,178,208,
+ 93, 61,106,218, 75,133,149, 2, 76,138,139,205,185,242, 81,117,207,223,114,211,245,115, 58,101,129,219, 56, 76, 56,133,143, 9,
+236, 18, 46, 36, 96,190, 78,224,229, 21,186, 66,112,248,104,251,108,252,228,141,135,160,188,225,223, 80, 11,148, 90, 5,216,195,
+ 56,192,253,169,111,188,247,247,167,221,130, 82, 44,240,192,196,114,125,108,101,161,155,227,228,222, 68,212,135,182, 52,121, 79,
+209,113,104,169,227,111,232,184,189, 10,229,106,103,207, 16,112, 78, 88,230,140, 75,117,184,173,172,245,163, 36,183,195, 2,223,
+ 21,151, 35, 97,156, 28,239, 35, 12,172,210,143,163, 15,113,170, 4,176, 71,160, 61, 46, 30, 63,198,135, 87, 94, 3, 94,168,123,
+128,119,159,166, 90,212, 25,158, 4,211,139, 39,248,167,255,236,199,248,104,235, 48,122,110,162, 60, 52,129, 91,235,145,214, 97,
+117, 87,204,200, 62,151,217, 2,115,170, 64, 71, 63, 43,106,113,182,210,193,111, 68,110,150,171, 10,126,225,238,247,247,102,170,
+ 21,148,115,155, 74,157, 15,247,251,196,237,224, 86,253,242,109,127,217, 49,134,251,223,114,155,130,252, 6,112,134,250,131,226,
+106,249,171,106, 18,106,145,103,116,171, 24,228,134,103,243, 22,149,219, 27,142, 9,111, 84,187,127,209,130,222,145,130,187, 21,
+148, 66, 54,174,174,174,240,226,229, 11, 64,128, 95,251,141, 95,199,127,240, 31,253,109,252,234,175,253, 58, 46, 46, 46,240,193,
+ 7, 31,168, 13,201,146,209, 78, 54,103,184,123,239, 46,130, 15, 56, 57, 61,193,217,233, 25,124, 8,248,169,247,190,132,179,243,
+115,252,179,223,255,125,252,195,127,240,191,226,226,213, 5,130,121,171, 79, 79, 55, 22,246,225,224,156,142,212,171, 21,173, 22,
+166, 82, 10,230,105, 50,134,248,170, 72,239,207, 68,245,161, 95, 35, 61,117,148,155,218, 61,203,172,157,235, 60, 47, 16, 0, 15,
+223,122, 8, 64, 52,137, 45, 38, 21,166,217,254,185, 70,122, 86,209,100,106,162, 54,209, 96,145,101,105, 46, 17,181, 90, 5,205,
+100,207,218,213, 47,203,162, 99,237,224, 90,119,200,206, 41,156,164,118,176, 68, 24,199, 17, 95,250,242,151, 17, 99,196,211,103,
+ 79, 33,162, 7,137, 98,120,211, 98,215, 78,240,218, 13, 86,247, 70,240,190,105, 28,244,115,116, 54,170,151,198, 0,167,238,225,
+ 66,198, 79,207,165, 22, 88,103,226,198,220, 8,123,247,239,221,195,184, 57, 65, 92,244, 51, 27, 55, 99, 75, 43,116,142, 49,110,
+ 70, 12,195,128, 92, 10,166,101, 86, 10,155, 87,228,105, 5,238, 80, 39,244, 98,118,173, 48,171,229, 75,147,216,114,138, 13,185,
+ 91,203,112,165,228,137,168,174, 97,154,103,196,101,214, 81,188,229,169,215, 67, 4, 53, 36,173, 81,254,156, 3,217,251, 95,153,
+242,180, 50,248,237, 61,212,144, 38, 38,101,228, 59,246,150,204, 86, 86,212,173,104,151, 92,223, 55, 67, 15, 20,217,242,232,139,
+137,239,234,245, 84,247,229, 21,255,203, 76,237, 62, 87,237,155,154,138, 99, 17, 80, 73,237,217, 93, 87,117,245,251,168,220, 18,
+212, 32,151,186,127,183,215,213, 39,206, 85, 78, 73,239,238,201, 54,213,241, 44, 10,182, 1,175, 83, 29,170,194, 62,125,175, 82,
+197,114,173,182, 21, 56, 7, 20,114, 26,249,138,108,201,111,132,145, 50, 16, 28, 10, 6,108, 56,225,218, 59, 92,109, 3,220,246,
+ 21, 64,179, 78, 29,110,105,179,155,128,154,232,150,246,251, 22, 98,236,109,207, 36,194, 97, 30, 43, 17,198, 97,132, 79,121,125,
+ 40, 83, 3,192, 24,207,189,250, 11,165,247,125,119,123,211, 62, 33,169,249,177,165, 9,180,216, 66, 8, 10,245,214,162, 58, 80,
+ 95,119, 5,213,115,189,102,155, 87, 46,124,245,154,210,193, 72,253, 56, 88, 69, 85,210,188, 42,195,218,164,150, 86, 79,100, 93,
+125,150,210,198,251,232,198,218, 36, 5, 9, 14,195,233, 25, 6,226,117,229, 0, 90, 49,176, 29, 72,160,146,166,194,230, 4, 15,
+218, 30,187,243,112,211,122,172, 96,172, 30,125,106, 42, 95, 90,193, 53, 66,102,167,200, 64, 46,216, 46, 6,147,232, 68, 28, 68,
+ 5,169, 8,156, 9,254,212,106, 82, 58,155,156, 24,170,147,218,126,252, 32,177,172, 49,188,117,140, 84, 8, 55, 96, 40,245,223,
+115, 51,255,161, 33,118, 91,189, 45, 21,122,115, 24,151,210, 79, 15, 14,252,231,183, 20, 83, 58, 62, 92,116,133,153, 26,143, 89,
+237,143,180,202,245, 45,147, 26, 7,239, 69, 15,157, 98,215, 40, 53,205,133,116,135,141,159,220,129,126,235,122, 75,161, 74,182,
+167,187,186,190,198,245,245, 21, 30, 62,124,132,159,249,217,111,227,253,247,191,138,191,240, 43,191,130, 95,252,165, 95,194,126,
+ 63,225,135, 63,248, 1, 64,130,243,179,115,140,227,136,105,218, 35,109, 18,198,205,104,202, 99,237, 52,239,156,223,193,157,123,
+247,176,204, 51,254,241, 63,250,135,248, 39,255,199,255,137,121,142,184,115,231,220,118,143,140, 57, 46,237,125,131, 9,203, 60,
+ 99,218, 79, 56, 63, 59,133, 72,193, 52, 79,109,116, 90,133,147, 34, 5,158, 21, 96, 18, 83,212,152, 81, 19,138,213, 56, 91,136,
+ 66, 77,166,121, 50, 40,138,180,209,249,179, 39, 79,241,244,227,199,248,202,251,239, 99,154,102,164,168, 54, 39,113, 14,113,154,
+215,224, 20, 91, 77, 5,175,163,251,235,235, 45,166,105, 6, 59,106,226, 58,102,135, 97, 8,152, 38, 61,136,100, 35,158, 57, 70,
+ 19,216,181, 53,129,237, 93,116, 29, 48,226,209, 91,111, 99,158,103,188,126,253, 10, 69,106, 40,204,170, 88,103, 6, 98, 44,150,
+ 20, 86,187,118,187, 22, 24, 96, 23, 26,234, 85, 25,239,104,148,200,122, 48, 80, 70,188, 98, 76,197,160, 57,165,232,133,158,114,
+ 70, 8,132,123,247,238,226,236,252, 78,155,116,184,102,125, 83,118,253, 18, 29,198, 81, 33, 52,234, 52, 96, 21,197,149,130,148,
+102, 21,228, 85,254, 61,151,102,253, 13, 33, 96, 79, 14, 49,205,144,168,135,128, 97, 24, 86,177,148, 89, 21, 85, 3,160,227,235,
+121,137,216,237,246,136,203,220,184,244,197, 32, 64, 68,108, 40, 92,213,218, 20, 1, 22, 35,252,113,245, 64, 55, 37,182, 30,134,
+152, 29,230, 88, 71,219,104, 98, 52,231, 28,156,168,144,110, 94,116,221,224,216, 55, 64, 84,150,130, 37,101,140, 68, 96, 23, 20,
+149,203,172, 40,217, 18,117,162,144,149, 60,167,130, 60, 61, 4,128,216,210,248, 84,209,206,206,112,174,214, 20,165, 12,181,155,
+177,179,107,222,153,144, 15, 7, 29,183, 0, 64, 42,141,176, 89, 76, 48,237, 28, 80,152, 90,125,169,140,121,117,142, 59,219,109,
+ 23,101, 24, 16, 65,216,105,206,132, 36,253, 92,172, 19,173,186, 41, 61, 28,171,110, 41, 18, 97, 94, 8, 27, 89,176, 7,161,236,
+ 5,227,120,141, 43,127, 10,204, 35,238,242, 30,207,206, 78, 81,220, 29,112,185,250,204,174,161,159, 54, 11,100,245,165,145,124,
+ 17,192,236, 33,178,186,211,101,249,130,178,238,189,235,248,253, 64,251, 83,108,237,108, 44,245,131,132,179,149,235, 14,104,116,
+171,116, 29, 54, 29, 68,148,118, 29, 52,117,173, 47,169, 87,188,116, 97, 39,221,178,188,117, 34, 61, 96,128,141, 42,215, 11,170,
+178,137,192,184,171, 84, 44,178, 22,241,163,242,181, 2,222,122,115,156, 62, 52,153,228,192,135,157,107,188,234, 17,228,165, 88,
+ 52,106,243,191,219,161,166,202,218, 20,254,223,199,178,172, 30,247, 58,138,114, 21, 82,211, 33, 43, 93,203, 81, 95,143, 75,245,
+189, 22, 0, 39,142,225, 75,193,108,244,168, 3,254,191,125,174,206,118,220,135,243,141,181, 64, 75, 23, 1,219,230, 0,157,234,
+146,100,253,119, 98,239,161,216, 94,157,250,209, 69, 21,255,245, 74,252,207,181,146, 29, 29, 71,233, 8,128, 67,114, 99, 25, 85,
+ 11, 92, 61,152,129,142, 69,106,116,224, 27,167, 55,184, 60,255,121, 32, 51,245, 47,179,193, 63,158, 61,123,138,119,223,253, 41,
+252,229,191,242, 87,240,231,127,241, 23,241,229, 47,127, 25, 15, 44,118,243,233,211, 79, 48, 77,123, 12,198, 39,175,163,230,113,
+179,129, 15, 1,151, 23, 23,120,125,241, 10, 15,238, 61, 0, 49,225,242,234, 18, 32,224,251,223,251, 30,190,255, 7,127,136,224,
+ 2, 78, 31,156, 41,135,191, 36, 56,235,230,106,228,104,206, 5,251,253,164, 59,231,148, 16,171,122,184,114,206,205,205, 80, 31,
+204, 18, 99, 43,112, 53,241,174,122,182,137,116,143,157, 98,196,102,220,160,228,162,144, 18,227,238,255,240,251, 63,196,253,123,
+247, 49,132,128,121,154, 84,228,101, 74,250, 42,178,202, 81, 69,120,222, 59,108,175, 23, 29, 17, 59,253,142, 42, 88,229,100,179,
+209,145,185, 29,110,197,210,219,234, 84, 65,170, 61, 14,140, 88,102, 83,179, 7,156,223, 57, 71, 76, 11,174,175, 46,205, 55,110,
+215,164, 83, 4,107, 41, 43,244,167,192,198,179, 94,247,177,217,220, 4,206,249,166,172, 6,139,209, 48,107,123,193,173,227, 97,
+195, 17, 58, 99,157, 39,179,122,109,198, 17,142, 9, 39, 39, 39,240, 94, 25,236,103,103, 39, 40, 69, 87, 25, 76,206,144,174, 9,
+ 23,151, 87,112,222,227,100, 51,226,228,244, 68, 83,213,100, 81, 49, 92,206,112,102,177, 75, 53,243,221, 14, 85, 33, 4,164, 52,
+ 91,156,171,122,242,157, 77, 13,180, 11,213,110,118,137, 9,203,162,241,182,203, 52, 33, 38,229,192,171, 11,129,144,225,212,246,
+101, 44,119,212, 53,161, 61, 7,197,166, 4,122, 96, 26, 80,196,181,216,220,224,156, 58,146, 74, 90, 15,203,185,186, 72,148, 27,
+224,195,202,161, 15,158,145,196,217,132, 64, 52, 32,197,180, 60,222, 17,114,241, 77, 60, 88, 98, 2,115,213,224,232,190, 26, 57,
+ 97, 51, 6, 68,241, 96, 73, 32, 63, 96,154, 11, 74, 90,180,144,122, 15, 33,221,185, 23,209,233, 65, 1,235,212,192,166,137,154,
+217,158,237, 16,199,112, 78,243,209,139, 29, 18,107,147, 85,113,219, 85,213, 46, 69,127,134,179, 8,214, 82,204, 39,127, 99,111,
+103, 81,183, 6, 70,242, 92,128,224,144,104, 80, 48, 79, 46,144,100,207,102, 79,200,240, 56, 3, 48,158, 9,150,241, 46,176,127,
+250, 19, 60, 98,104,125,166,201,231,168,227,143,158, 77,114, 4,221,242,169,212,132,181,190,139,167, 67, 79,110,103,153, 39, 19,
+166,173, 41, 88,210, 70,179,246,253,119, 77,180, 28,242, 64, 69, 83,224,214,205,132, 10,222,146, 16,136,209,112,174,133,180,112,
+175,202,222,142,216, 69,212,241,194,169,237,217,171, 74, 63,131, 14,169,102, 85,228,102,211, 2,234, 2,102, 88,216,162, 0, 75,
+ 83,131, 91, 88,212, 90, 6, 59,251, 91,238, 8,115,108,234,117,105,123,167, 14, 91,203,107, 62,121,233,144, 47, 76,132,145, 89,
+105, 82, 44,109, 36,167, 5, 51,183,228, 56, 64, 45,128,212,230, 26,197,166, 29,122, 88,152,242,186,130,104,194, 49,251,172,196,
+126, 86, 1,224,124,192,200,132,101,209, 29, 23,211,161, 45,173,207,181,215,136,199,210,174,146, 58,141,144,245, 44,117, 48,173,
+ 41,157, 97,251,182, 66,217,139,227, 14,121,232,199,167, 80, 58,132, 30,117, 83,130, 6,168, 17,125,240,220,189,119, 15, 82, 50,
+ 46, 47,175, 12,102,209, 77,159,136, 58,239,235, 27, 32, 56,255, 28, 5, 93,186, 3, 83,206, 9,207, 95, 60,199,111,254,230,191,
+138,191,241,239,255, 45, 60,124,244, 8, 47, 94,190,192, 52, 77,120,246,233,167, 72, 81,247,203,103,167,103, 42,126, 51,129, 97,
+ 78,218,181,236,118,215,248,232,227,143, 48, 77,123, 44, 95,138,120,247,221,119,113,121,121,137,143, 62,252, 16,207,158, 60,129,
+115, 1, 97, 80,109, 5,178,142, 57,235,247, 31, 99, 50, 47,243,172,106,113,235,182,227,162,161, 31,206,121, 67,156,174,135,173,
+156,147,174,137,172, 99, 84,118, 4, 99,158, 23, 56,178, 36, 45, 8,198, 97, 0, 8,205,239, 78, 12,132,113,192,171,151, 47,241,
+195, 31,252, 0,223,254, 83,223, 70,140, 9,211, 94,197,121,243,180, 40,131,192, 64, 44,204,132,105,154, 49, 77,115,243, 12,215,
+ 98,145, 75,182,215,168,135,155, 24,147,222,171,118,216,169, 36,203,100, 0, 23,245,177, 11,130,169,240, 47, 94,111,219, 1,162,
+222,255, 26,114,162,126,244, 98,135, 29,101, 31, 8, 60, 57, 43,106, 58, 33,168, 22, 62, 2, 44, 90,181,198,179,174,171, 9, 87,
+ 11, 66,221, 47, 59, 70,182, 29, 49,147,122,236, 55, 39, 39, 72, 57,129, 1, 60,122,248, 16,115, 76,184,124,253, 10,227,102,196,
+ 56,110,176,204,202,104, 31, 67, 80,222,121, 27,221,154, 6,135, 93,203,156,175,113,160,232,226, 91,209,189,190,121,158,225,156,
+183,238, 30, 40, 57,181, 41, 70,140, 9,187,221,222, 70,246,104, 32, 25,239,171, 86,161,238,244,140,255,222,248, 13,181,112,233,
+251, 94,154, 32,209, 60,248,164,161, 59, 9, 26,205,234, 8, 8, 67, 64, 44,250, 92, 30,204, 47, 95, 53, 59, 41,103,120,231,192,
+ 97, 80, 93, 64,201,166, 65, 80, 52,111,113, 64, 73, 81,139, 58, 51,114, 73, 42,186,131, 87,128, 15,235,122, 51, 56,167,160, 33,
+123,254,197, 36, 16,202, 45,177, 77, 72, 87, 54,142,181, 72, 23,169, 76,145,210, 80,196, 77, 73,100, 33, 36, 84,186,181, 74, 5,
+ 94, 91,194, 27, 89,170, 92, 29,127, 23,176,178,232, 45,230,185, 34,180, 41,215,125,124, 69,129, 19, 82, 81,247,187,138,143, 25,
+ 57, 9, 82, 73, 64, 18,220, 57,205,192,233, 57,114, 57,199, 24, 4, 83,216,192,237,130, 53,176,252,133, 10,180, 28,246,101,159,
+ 45,168,147, 55,244,241, 2,120, 77,242, 49,128,131,237,190,157,244, 52,179,227,157,245, 90,196,245, 67,208, 2, 92,192, 16, 38,
+ 56,235,185, 75, 63,186,173,227, 80, 82,172, 96, 29,107,231,218,209,211,138,127,173,184,187,254,160,194,116, 72, 34,147,222,187,
+222,176,172, 74,157,147, 34, 72,164,200,213, 78,146,220,229, 86, 91,116,158, 17,224,186, 16,167, 38,170, 43,210, 77, 25,142, 67,
+ 66,168,235, 8,169, 3,218,244, 4,183,222,182,213,113,168,139,125, 6, 57, 71,216, 10,178,195,197,174, 49,143, 48,118,254,186,
+ 17,170,255,159, 52,196,108,145,117,111,175,145,232,213,246,119,168, 76, 47, 7,202,241,206, 16, 65,135,182,172, 34, 25,129, 53,
+167, 56, 54, 67, 26, 58,212, 45,110, 65,254,220, 14,121,145, 35,166, 0,223, 50,138, 63,254, 79,245, 62, 59, 43, 52,149,100,215,
+235, 34,118,187, 93,151,228,181,234, 45, 24,192,178, 40, 54,118, 8,190, 67, 18,227,214, 53,192, 79, 84,205,101,213, 0,124,242,
+201, 39,248,245,223,248, 77,252,215,255,205,127,139,203,139,215,248,225, 31,255, 81, 83, 82,231,162,226,166,179,211, 51,120, 31,
+176,219,110,181,152,166,130,101, 73,240, 94,176,221,110, 85,216, 4,224,217,147, 39, 72,203,130,203,203, 75,188,122,249, 2,126,
+ 24,192, 73,163, 31, 61, 57, 80, 84,123,209,245,110,107, 41,104,122, 8, 92,230,165,229, 85,103,179, 52,121, 14, 88, 22, 13,243,
+ 24,130,165,184, 85,241, 32,171,176, 73,108,148, 88, 76, 78,237, 66, 64,178,226,235,172, 3, 77, 41, 55,171, 22, 4, 24,198, 17,
+ 31,126,240, 33, 74, 41,120,248,232, 17,230,105,193,245,246, 90, 73, 98,185,232,161,212,246,195, 49, 70,203,245, 14,218,149,161,
+ 32,197, 12,100, 75,237, 50,177, 19, 68,127, 31, 49, 65, 68,249,235,169,216,244,197,238, 69, 23,148,240,166, 59,124, 90, 97, 42,
+117,143, 75, 12,207, 14, 25,165, 5,151,228, 84,218,235, 46,182,203,214,224, 22, 61,240, 28, 36,252, 65,185,228,108,127,183,234,
+ 56,148,191, 94,112,178, 57, 1,241,137,118,196,243, 30,231,231,239,168, 10,219,226, 92, 95,188,124,105, 63, 83,239,183,184, 68,
+141, 93, 29,149, 79, 62, 47, 11,194, 56, 52,207,126,177,247, 86,149, 73,184, 38,170, 0, 0, 32, 0, 73, 68, 65, 84,237, 57,107,
+231,170,226,176,100, 26, 7,111,122,131,154, 46,183, 96,154,197,114,197, 77, 12,105,147,146,146, 83, 99,197,135,193,183,194, 95,
+108,175, 92,105, 86,185, 70,200, 50,175, 26,139, 38,138,131, 57, 6, 10,200,178,194,153, 4,227, 16,144,179,199,188, 76,144, 37,
+ 2,102, 79, 36,214,176, 19, 88,151,158,165,134, 78,193,192, 63,250, 93,215,231,121,240,132,133,130,170,243,189,218,156,139,101,
+185, 59,102, 20, 98, 44, 41,131, 93,212,134, 74, 10, 6, 71, 40,195,128,188,204,112, 69, 15,164, 32, 40,225, 45, 39,176,179,213,
+ 8,122,246, 58,181, 5, 51,213,149,131, 83,109, 8,108,194,235,236,112, 3, 43,220,108,208,177,138,225,230,186,154,177,159,199,
+ 86,135,115, 1,184, 78, 2, 76, 25,175,164,186, 4,128,237,208, 65, 72, 2, 44, 17, 56, 73, 11,134, 97,192,217,224,240,250,228,
+ 4,114,121, 10,200, 5,136,134, 35,202,235,155,138,181, 28,110,149, 15, 37,243,159, 67,161, 91,255,142, 63,160,147, 53,207,120,
+ 63, 26,189,153,172,197, 29,157,173, 66, 89,216,192,255,185,177,205, 13, 80,211,168,105,220,192, 51,210,169,218,219, 40, 86,128,
+100, 5,211,117,114,188,210,249,127,215, 63,127,136, 57,109, 7,141,224,113,206, 25,243, 82,176, 8, 55,229,120, 79, 57, 19,163,
+153, 85,138, 90,174, 74,106, 94,225, 39, 77, 8, 37,199,220,247, 46,194, 85,138,198,174, 98, 69,214,242, 13, 6,123, 61,180, 24,
+ 66,179, 8,182,149,145,108,133,156, 27,121,141, 90, 46,189,158,238,117,135,150, 91,124,104,233, 56,116,107,252,234,186,166,232,
+ 61,224,122,193,149, 20, 91,135, 79,157,135,189,102, 37, 51,161, 3,107, 72,139,165,172, 21,191, 64,185, 5,183, 9, 21, 15,167,
+227,116, 96,175,115, 54, 65, 72,199,136, 86,145,163,154, 73,230,138, 40,216,156,158, 33, 48,227,122,123,189, 18, 0,235,129,168,
+ 54, 31, 41,117, 66,190,149,177,206,204,248,214,215,223,199,235,139, 75,124,242,233, 75,140,155,205,154,218,116,203,239,254,162,
+ 35,247, 94,233,190,159,247,120,240,240, 33,126,247,247,254, 26, 68, 10, 30, 63,249, 88, 97, 24, 32, 76,211,212,162, 49, 53, 85,
+109,105,163,180, 24, 23, 83,107, 59, 43, 18,115, 83,135, 95, 94, 92, 52, 37,182,138,138, 84,128, 6,203,209,222,109,183,234, 71,
+182,110,106,158,163, 61,248,117, 23,237, 72, 31,182, 49,105,144,198, 16, 66,179,137, 57,231, 14,156, 7, 92, 41,136, 89,217,228,
+ 2,193, 18,213,255, 44,166,170,159, 12, 44, 51, 4,181,199,193, 17,152, 28, 62,254,232, 35,236,118, 59, 12,195, 9,230,105,209,
+212,173,154,108,150,180,176,143, 67,176, 81,166, 32, 4,253,119,123,153, 44,140,196,181,181,143,115, 26, 97, 58, 79,169,185, 41,
+164,212,238, 94,192,172, 22,177,138, 18,117,206,155,102,128, 90, 32, 74, 21,220, 1, 98, 32,147,132,147,147,141, 78, 39,138,178,
+172,125, 24,225, 28,183,145,100, 29, 59, 51, 19,136,180,160, 51, 49,192,165,233, 64,200, 66, 81,178, 89,200,150, 37,226,100, 51,
+106,180,106,180, 3, 87,240, 88, 98,130,204, 11, 54,163,226,103,183,251, 29,130,115,200, 69,125,241, 33,132, 6,182, 17,104, 10,
+ 94, 8, 1, 18, 19,170,159,182,138,211, 28, 51,124,240,112,139, 51, 6, 64,182,247,170,215, 78,180,148,188, 34, 5,211,172,193,
+ 59, 37, 39, 56,239, 48,205, 51, 56,235,115, 68, 12,137, 90,153, 34, 20,140,218,102,170,247,202,228,103,162, 70,146,240, 78, 39,
+ 17, 57,107, 80,143,178, 29, 74,115,211, 36, 67,232,150,146,225, 93,192,224, 25, 41,235, 33,113,240, 14,112, 1,243, 28,193,164,
+ 97, 41, 41, 23,120, 68,112, 24, 16,147, 32,199,197, 16,206, 74,162,147,156,225,157,141,240,115,193,180, 20, 12, 60,129,252, 8,
+177,204,244,224, 25, 40, 30, 34,118,112, 49,210, 92, 73, 25, 35, 9,200, 15,198,239, 40,205,103, 94,108, 58,233,204,110, 77,198,
+ 51, 17, 38, 72, 89, 5,113, 48, 39, 65,177, 12,245,106,117,214,213, 11,183,159,199, 88, 65,102,108, 5,221,252,223,200,236, 64,
+ 69, 99,169, 43,180, 44, 23,194,117, 22,200,117,196,253,243, 11, 60, 60,187,139,167,247, 30,160,188,184, 7, 78,175,213, 35,254,
+ 5,186, 8, 58,154,124,146, 77, 74,223,180,152,151, 91,138, 59,129,224,169,143,183,108,226, 48, 52, 10, 24,219,201, 5,157,178,
+ 93,106,255,104,227,238, 66,132,112,128, 8, 89,189,233,235, 6,127, 13,100,169, 34, 56, 22,160,143,189, 32,233,196,114,230,179,
+174,107,219, 58,196,230,166, 36, 63, 50, 49, 75, 70,140,192, 46, 16, 6, 11, 72, 46,181,147,149, 94, 96,183,118,146,212, 41,231,
+165,159, 51,119, 43, 6,245,219,243,141,238, 28,149,242,212,118, 47,170, 86,175, 60,248,122,227,148, 66,230,137,148,118, 83, 53,
+132,106,253, 26,164, 38,141,173, 50,196,108,158,124,144, 97,123,237, 53,212, 66, 85,164, 91, 77,160, 19,142,152,176,177, 10,201,
+142, 97,186,108,163,243, 34, 69,179,142,171,191,188, 78, 13,142,196, 23,249, 32,122, 22, 7,252,248,186, 42,168,131,251,254,210,
+117,182, 14, 72,102,117,227,227,113,118,213, 88,216,119,165, 15, 55,215,118,244,125, 65,199,145,160,174, 29, 46,108,239, 95,114,
+198, 18, 51,190,249,245,175,227,254,189,251,248,232,241, 19,164,156,108,165,240,249, 99,247, 55,157,155,251,223,125,125,117,133,
+191,240, 43,191,106,177,166,207,224,157,199, 44,115,203,197, 14, 97,192,203,231,159, 32,166,140,247,222,251,146, 61, 8, 4, 97,
+ 8,240,217, 97,191,223,227,226,226, 21,150, 24, 33,211, 2, 65,193,178, 68, 91,141,104, 49, 39,123,224,199,152, 48, 47, 51,138,
+237,156, 83, 86,197,183,198, 89,234, 67, 38, 69, 29, 5,111, 54,163,198,160,118,162, 64, 41, 2, 56,177,184, 78, 1,155, 61,168,
+238,195,153, 3, 38, 43,232,204,100, 32, 31,189,192,107, 65, 79,150, 70,230,131, 67, 97,194,167,159, 62,135,119, 30,155,205, 9,
+124,112, 77,123,195, 68,214,121,179, 69,150, 10,118,187, 29,230, 89, 19,196,134, 33,232,110,191,168,171, 24,206, 48,181,172, 92,
+247,250,181,214,236,240,113,180, 64, 16,130,241, 30,214, 67,177, 88,241, 42,165,180,185, 91,140, 9,196,108, 35,108, 29,203,215,
+177,187,136,190,119,111, 30,254,152, 18,134, 16,140, 98,167,217,218,117, 37,196,180, 90,191,234,119,194, 4,220,191,255, 0,108,
+171,148, 26,178,130,202,173,183,211,166, 99,197,190,110,198,161,217,180, 82, 74,141,150, 55,120,130,247, 27,237,140, 23, 93,111,
+ 12,131, 83, 1, 25, 4,193,171,152, 47,248,128,189, 69,167,170,230, 79,191,135,156,103,108,119, 59, 92, 93, 94, 97,154,247, 77,
+199,224, 88,181, 5,142, 89, 17,182,157, 88, 21,117,151,110,162,201,186,148,212, 9,143, 52,118, 1,155,112,176, 30,144, 83,158,
+193, 0,134, 16, 16,147,160, 46, 16, 97,162,231,122,127,238,231, 5, 99,112, 24,135, 0,201,108,197,151, 90,231, 95, 21, 11,236,
+ 28,166, 37, 35, 45,179, 21,197,161, 81,241, 98,204, 32,202,216,120,143, 66, 78,145, 85,182,239,174, 65, 96, 53,162,151, 29, 35,
+147, 3,165,210, 40,112,173,174, 52, 96,154,106, 0, 42,103,189,194,201,108,117, 14,152, 84,174,214, 37, 50,109, 78, 86, 54,176,
+197,176, 58,163,210, 41, 71,133,156, 91,227,164,219,253,165, 10,120,144,135,131,198,102,103, 98,108, 51,224,183, 25,119,249, 18,
+ 39,119, 2,182,155,135,112,215, 31,183, 38,234,179,159, 69,132, 35,151,118, 91,175,222,222,146,191, 25,194,225, 87,115,210,218,
+135, 73, 43, 0,117,132, 75,237,134,114, 7, 1, 34, 85, 89, 71,200,180, 50,214,181, 16, 21, 20,225, 53, 77,199, 70,235,201,164,
+112,220,132, 92,135,113,161, 21,117,122, 83,219, 38,205, 94,135,206, 47,189,254, 28,128, 75,194, 60, 17,102, 66,227,150, 87,192,
+ 63, 72,213,253, 2, 58,200, 71,135,209,230,184,239, 31, 43, 11, 93,116,127, 71,210,197,178, 86,165,125, 95, 12, 68, 26, 45,142,
+ 13,239, 88,176,122, 7, 75, 78,141, 35,223, 71,170, 2, 85,133, 94,183,229, 43,151, 77,217,243,220,168,115, 92,237,100, 21,169,
+136,195,164,180,110,113,172,123,156, 66, 56,152, 57, 30,201, 37,201,236, 34,189, 72,163, 67,207,173,211, 20,238,192, 49, 71,133,
+ 78,250,176,155,234, 27,181,131, 71,129, 32, 16,195, 3,138,207, 53, 97,151,247,254, 48, 54, 14, 42, 78,218, 95, 95, 97, 11,221,
+235,213,100, 46,122,195,120,127, 45,252,122, 12,242,206,225, 71, 31,124,136, 23,175, 47,241,237,111,126, 29,247,238, 92,226,217,
+139, 87, 8,129, 63,179,160,211,231,240,225,251,185, 66, 41, 5,143, 30, 61,196,229,197, 5,118,251, 45,134, 49, 88,192,141, 90,
+ 16,159, 60,254, 24,251,105,143,175,127,253, 27, 24,198, 17,211,188,199,180,223, 99,191,223, 97,183,219, 98,183,221, 97,187,221,
+ 41,104, 36,106, 49,143,113,209, 98,187, 68,236,167,185,169,197,231,217, 50,202,137,177,159,167,150,197, 93, 11,111,181,165, 9,
+138,217,126,180,187, 75, 89,201,104,181,179, 72,214,217,178, 40,162,181,148,210, 98, 51,245,223, 39, 80, 89,241, 78,213, 23,189,
+196,184, 94, 75, 38,146,173,123,249,221,126, 11,158,181, 0,177, 77, 3, 98, 92, 16, 19,161,148, 9,132,170,104,207, 8, 67, 80,
+ 53,246,146,109, 84, 43,246, 58, 51, 90,176,198,162, 81,175,232,208,166, 49,101, 11,121,209,235, 32, 4,219,133,183,110, 94,239,
+133, 98,113,166,158, 73,117, 2,222,227,244,228,164, 9,195,130,177,221, 43,175,158,141, 22,150,114, 54,244,233,234,152, 33,230,
+230,213,118,182,218, 56, 57, 61,193,249,249,185,197,147, 42,214, 20, 49, 25, 44,199,153, 63, 95,193, 54,155,205,168,207, 6, 99,
+223,179, 29, 72,156, 21, 81, 29,151, 3,236, 84, 55, 48,205,115,163,172,137,136,130,113, 76,136,154,179,216,161, 84, 95,251,110,
+183,197,197,235, 43,108,175,174,116, 77, 98,239,165,118,118, 53, 44, 39,103, 65, 69,230, 81, 23,155, 91,213,219, 58, 45, 44, 45,
+229,109,153, 23,100,201,117,104,137,246, 11, 77,111, 33,144,102, 65,156,150,212, 32, 88,193, 59, 0, 3,230,101,198, 41, 19,200,
+ 13, 38,100, 37,228, 76,205,123, 14, 38,236,231,132, 20, 53,139, 60, 9, 33, 75,180,169,140,106, 4, 18,235,186, 66,132,161,153,
+ 61,190, 77, 34, 97,147, 7, 71, 0, 57,167,130,229, 26, 42,101,137,162, 36,182, 51, 55, 71, 15, 74, 94,159,105,188, 66,134,104,
+157,187,183, 57, 49, 59,110,163,255,250, 76,101,201, 77, 80, 72, 29, 44, 70, 63,235,162,244, 82, 46,200, 96,184, 34, 10, 88, 19,
+101, 45, 56, 38, 92, 21,143,179,109,198, 93,126,141,171,211, 19,224,234, 20,144, 43, 8, 13, 29, 28,235,150,125, 57,117, 74,229,
+ 27, 29, 7,221, 62,126,127, 3,171,166, 6,174, 53, 35,217,154,147, 77,235,248,216,107, 28, 42, 11, 33,118, 29, 93,238, 80,117,
+ 73,214,209, 58,119,230,183, 6,220, 35,180, 34, 92,237, 2, 69,214,152,147,213,222, 85,101,222,171,193,189,244,241,167, 82,139,
+180,193, 17,236,187,170, 2, 56,238, 14, 29,174,247, 54, 75,111, 29,192, 13,166,124,159,139,154,187,184,210,118,152, 64,191,251,
+239, 59, 90, 58, 80,183, 87,176,142, 98, 48, 59,126,138,200, 97,134, 56, 29,241,236, 9,199,164, 95,176,200,129,191,156,172, 56,
+150, 3,122,218,250,185,175, 15,125, 58,120, 63,168,123, 40,224,192,254, 65,192, 65,126,239,129,197,162, 83, 73,210, 45,215,148,
+220, 34, 66, 59, 76, 88, 35, 68,251, 0, 52,189,106,192,131,251, 15,112,125,117,161, 99,126,234,245, 25,122, 3, 59, 28,139,238,
+110,134,174, 86, 78,107,139,156, 21,253,190,198,205, 6, 34, 5,223,251,193, 15,177, 68, 29,119,126, 97, 17,220, 27,254, 89, 15,
+141,243, 33,224,227,143, 62,194,118,123,141,205,233, 6, 49, 38,120, 23,176, 57,223, 96,183,221, 34,132,128,179,243,115,196,148,
+240,242,227, 15, 49,205, 19,230,253,132,235,237,117,219,155,214, 34, 52,207, 19,166,253,164, 52, 52,139,197, 76, 41, 34, 67,247,
+200,185, 84,175,185, 88, 68, 40,161, 44,121,245, 82,155, 56, 76,105,101, 89,167, 87, 54, 94,149,234,141, 46, 64,204, 26,155,169,
+251,233,100,227,111,110,175,163,142, 75,184, 22, 6,183, 2, 74,156, 87, 47,115,182,215,209,148,192,185,192, 3,200, 37, 34,217,
+232,157, 44, 35, 32,219,138,200, 7, 15,111,233,114,234, 24, 72,237,193,218, 48,159, 38, 26, 91,230,185,117,144,236,212,250, 54,
+ 12,131,249,156, 93,139,139, 85, 17,157, 22,174,186, 59,206, 57,155,134, 64,199,250,193, 59,219,185,147,142,240,153, 91, 42,152,
+118,235,107,246, 64,141, 86,109,239,173,118,181, 45, 72,166,224,225,131, 7, 24,198, 17,100,171,169,246,104,146,181,195,175, 30,
+234,154, 90, 23,130,199,224, 7,221, 69, 27,126, 55,198,136,156, 76,215,192, 58, 13, 32,169, 9,103,197, 8,140,102, 39,117, 12,
+ 74, 70,132,172, 81,185, 49,227,234,122,139,101,154,154,133,144,156,152, 69,143, 27, 12,134,169,138,149, 85,191,211,252,221,182,
+122,105, 92,140,162, 19,128,202, 45,168,135,148,210,228,123,220, 88, 1, 92, 69,101, 53, 44,134, 9, 72,132,147,209, 35,134, 83,
+164, 20,225, 89, 81,181, 37, 69, 12,158,144,200, 97,217,207, 58, 66,207,162, 34,188, 49, 32,139, 77,152, 76,173,174,103,119, 61,
+196, 49,169,176, 81,255,155, 87, 33,116, 17, 77,210, 36, 7, 87, 4, 5,245, 48,181, 50, 23,168,185, 99, 8,133,148, 87, 64, 84,
+208, 18, 54, 76, 75, 34,166,221, 96,148,230,232, 33,100,139,136,117, 43,107,165, 77, 10,181,224,175,156, 15, 94,193, 49, 82, 99,
+ 91, 1,161, 98,245, 70,239,231,165, 56,220, 67,198, 39,231, 30,249,213, 67,184,120, 9, 56, 89,195,196, 8, 55,131,171,229,102,
+ 43, 65, 7,220, 21, 58, 88,235,214,201,246,109,122, 33, 95, 95,177,163,117, 15, 94, 79, 6, 2, 66, 97, 37,173, 5, 93,146, 98,
+ 46, 86,111,233,248,135, 21, 72, 97, 20, 90, 71,221, 45,206,176,155,181,114,135,227, 18,107, 40,185, 13, 10,164,141,163,155,176,
+205,186,104,233,162, 67,181,104, 48, 54,158, 16,164, 96, 41, 58, 41,104,224,149, 46, 54, 53,247, 19, 8,233,120,192,117,148,210,
+253,252, 21,100, 83,247,233,235,190, 26, 38, 38,169,126,197, 86, 80,155, 40,171, 19,221,217, 69,195, 77,216,227,192, 70,166,210,
+223,119, 4, 76,169,177,178,221,161, 68,186, 2, 44, 5,234,109, 21,106, 66, 57, 57,160,161,224, 6,136, 71, 58, 10, 31,213,206,
+174,142,171,123, 59,155,177,159, 87, 97,223, 10,193,161,163, 93, 57,125,129,241,117,237, 30, 42,183,158, 76,163,193,236,113,118,
+122,138,235,171,215,186,111,100,182,252,128, 53, 70,182, 98,113,143,209, 51,114, 67, 84,167, 30, 7,238,138, 16, 12, 4,115,144,
+201, 46,242,185, 29,185,188,105, 8,214,157,192, 20,102, 18,240,127,255, 95,255, 20, 47, 94,190,192,207,190,243,179,184,188,186,
+130,247, 1, 23,175, 94, 97,183,219,227,254,253, 7,240,131, 90,191,230, 69,247,229, 58, 38,214,235,103,158,102,221,139, 79, 11,
+226, 18,149,196, 86,178,161, 50, 11,114, 76,205,135, 95,247,199,245, 59,137, 75, 52,205,133,118,139,197, 84,191, 53,134,151,156,
+235,172,138, 48,187, 85,110,251,184,250, 0, 7,128,101, 81, 49,220,224,131,226, 78,173,216, 87,239,246, 74, 2, 84,170,155, 20,
+209,128,156,202,180, 47, 2, 63,168,141, 43,230,164,233,103, 45, 35, 0, 13,242,193, 45,236, 8, 88,150,216,186,210,170,144, 79,
+185,232,195, 23,106, 95, 82,241, 99,193,102,179,193,217,233, 25,118,251, 93, 27,241, 87,241, 87, 85,213,215,243,111,240,190, 77,
+ 16,180, 35,245, 74,134,115,230,206,200, 53, 86, 85,197,114,185,100,179,105, 73, 3,162, 56,231,186, 8, 89,105, 88,220,187,231,
+103, 24, 55, 39,170, 65,112,154,133,224, 66, 80, 68,110, 92, 45,125,108, 92,114, 85,160,251, 22, 18,148, 98,198,236,227, 1,147,
+157,192, 54,226, 94,154,104,141,160,235, 1, 77, 94, 91,131, 92, 52, 44,166, 32, 69,181,202,197,121, 2,217,254,187, 78, 97,156,
+ 29, 48, 82,214, 16, 30,199,132, 97, 8, 90,120,179, 52, 63, 57, 19, 35,150,130,146, 83,115,200,136, 29, 66,196,178,226, 53, 16,
+201, 35,139,226,106,203, 74,140, 66, 41, 5, 39, 99, 64, 4, 99,222,237, 53,115,220, 90,180,105, 73, 24, 75, 4,249, 77,107,126,
+150, 37,233,222,159, 1, 14, 14, 37,219,132,128, 29, 54, 99,176,104,211, 2, 56,104,110,128,165, 83, 42, 45,142, 65,194, 45, 32,
+134,204, 82, 91, 15,100, 49, 23, 32, 39,120, 7, 48,123, 19, 99,235, 58,167,234, 37, 50, 84,167, 33,182, 31,111,194,106, 49,219,
+167,100, 19,164, 11, 28, 21,144,161,129,219,122,175, 24, 18,189,121,255, 77, 64,110,107,208, 2, 94,121, 10, 2, 56,235,238,133,
+148, 18, 95,216,225,156, 24,239,222, 77,248,248,225,219,224,103, 23,160,242, 26,224,193,148,248,192, 65, 4,171,124,246, 34,240,
+224,159, 54,199, 19,189, 17, 39,235, 43,131, 61, 25,239,189, 7,198, 3, 5, 46, 23,148, 4, 92, 88,135,205, 93,186, 69,237,174,
+155,248,205,246,228,201,186, 70, 39, 43, 78,150, 15, 4,100,171, 40,143,186, 98, 46, 29,103, 77, 72,208, 5,170,174,234,110,187,
+ 72, 7,199,216,176,128, 11, 97,161,106, 39,227, 38, 62, 19,235,152,219,131, 89,214, 17,179,244,147,131, 70, 76, 91,139, 56, 49,
+ 53,196,236,141, 98,102, 15,210,210,219,248,108, 91,211, 20,254,168, 66, 51,219,165,212, 81, 62, 29,177,211,187,144, 19,234,118,
+214,125,209, 47, 54, 94,226, 66, 77,240,211,142, 60, 34,237,253, 54, 47,166, 8,226, 1,117,141,154, 86,162,212,213, 6, 90,246,
+ 70,243,232,214, 67, 78,193,225,138,130,186,189, 14,117, 7,142, 94,221, 94,142, 4,112,189, 23, 50,139,134,149,196,121,143, 15,
+ 62,250, 64, 3, 62, 44,228,130, 32,240,108,167,222, 54,114,151,155,216,218,110,196, 36, 16, 60,122,244, 22,230,105,143,235,237,
+206,200, 95,114,240,118,249,232, 53,125,113,193,251, 74,224,171, 83, 0, 34,198,118,187,197,197,197, 5,126,231,247,126, 15,239,
+127,245,125, 60,123,246, 20,206,121, 60,125,252, 24, 79,159, 60,193,213,245, 21,216, 57,220,189,123, 23, 15, 30, 60,196,195, 7,
+143, 48, 12, 35,158, 61,123,138,156, 34,174, 46,175, 0, 8,150,105,193,197,197, 5,226,162,129, 60, 53,208,131,105,221,255, 85,
+ 98,215, 48, 12,234, 1, 78, 73, 15,101, 44, 88, 22, 13,207, 80, 33,150,180, 16,148,156, 74,203, 47, 39,195,213, 50, 59,140,222,
+ 91,162, 85,110,251, 89, 17, 24,112,196, 14,156, 76, 7,239, 62,165,220, 38, 66, 68,100,135, 98,187,175, 5, 24, 70,125, 0,198,
+ 57, 53,107, 89, 76,186,218, 34, 2, 74, 74,152,226,210,224, 46,171, 56,179,168, 0, 45,229,214,145,170,245,204, 30, 68,214,217,
+199,148,177,219,237,155,133,176, 20,131,185, 88,113, 41, 38,230,244,222,169,242,187, 78, 82,124, 80, 68,166, 91,179,203,235,164,
+ 80,201,104,134,149,173, 83, 14, 11,158,241,222, 70,229,194, 13, 16,227, 8,184,127,255, 30, 66, 8, 90, 68, 69,112,122,126,142,
+205,230, 4,215,219,107,236, 22, 93,155, 20, 17,141, 40,101,214,251,171, 8, 98,204,216,108, 84,192,184,219,237,245,122, 55,182,
+127,177, 81,119,237, 44,157,121,190,199,209, 99, 28, 79,176,189,222,233, 68, 5, 5, 67, 8,216,197,140, 23, 47, 95,227,250,242,
+ 66,225, 88,181,171, 55, 21,185, 70,216,242,138,113,134,166,245, 9, 52, 32,199, 25, 21, 79,186,212,204,212, 18,217,234,234,203,
+216,234,169,128, 41,183, 67, 0,152,218,202,160,221, 25, 2, 12, 65, 39, 13, 49,149,150,182,231,153, 65,193, 99,142, 17,113,138,
+102,177,173,113,177, 90, 76,133, 52,107, 96, 28, 60,188, 15,152,151,136, 82,146, 98, 97, 77,141, 79, 41,193,217, 84, 65,100,213,
+ 94, 84,124,215,146, 10,156, 36,248,193,194, 96,114, 71,174, 99,215,248,252, 53,239, 3,165, 88,146, 92,165,123,242, 42,186,166,
+106,105,115, 22,104, 99,201,119,149,203, 97,188,140, 34, 12, 7,229, 17,128,156, 41,248, 5, 44,201, 20,253,250,124,244, 92,236,
+ 53, 88, 7,159, 5,239,112,193,213, 91, 3,174,118, 95, 70,184,220, 1,156,117,122,112,160,218,191,101, 57,254,134,238, 99,181,
+215,214,102,115,101,169, 28,118,234, 69,165,251,185,141,119,245, 97,235, 80,253,235, 10, 54,112,205, 7,222,209, 57,173, 59, 40,
+ 61, 19,158,160, 93,125, 19,202, 89, 98,151,172, 39, 11,233, 5, 87,180,122,214, 33,220,141,161, 87,170, 91,159, 24, 87, 69, 96,
+ 57, 39, 92,103,105, 54, 60, 88,206,123,243,147,215,254,220, 78, 96, 78, 9, 47, 72,237,117, 80,167, 30,148,142,213,110, 35, 73,
+102,189,145, 68,173, 33,220,141, 64, 26, 71,254, 32,243,219,162, 81, 93,192, 41, 9,182, 41, 35, 29,140,215,215,233,129,116,130,
+ 66,129,133, 56, 88,252,169,136, 58, 8,216,240,109,170, 66, 14, 56, 57, 25,177, 76, 91,204,169,192, 51,217,142,157, 14,198,243,
+165, 91, 35,112,235,192,215,117, 10,215,137, 76,251, 76, 11,164,144,158, 90,205,199, 90, 41, 91,212,196,129,114,112,152, 59, 62,
+228,200, 77,172,207,250, 32,145, 67,180,171, 35, 62,228,184, 19,110, 9,109,185, 29, 15, 91, 47, 94,234, 48,151,114,203,240,137,
+110, 41,232,199,122,128, 55,137,226,156,133,228,228, 54,169, 96,188,124,249, 18,113,153,241,187,223,253, 46,254,205,223,249, 29,
+124,252,225, 7,184,184,120,141,121,158,241,236,217, 39,152, 77,237,238,188,195,126,183,195,147,199, 31, 35,132, 1,193,235,206,
+113,182,157,248,213,213, 22,219,235, 45,150,101, 50, 43, 85, 1, 83,176,224, 18,106,140,119,226, 53,165, 47,166, 4, 88, 74, 89,
+154,102,117, 68,216,190,215,177, 1, 70,236,193,172,244, 69,235,168,105,197, 11,215,157,127, 46,122,111,140, 67,128,119, 14,211,
+172,221,226, 24, 60,114, 17,176,183,180,180,250,217, 26, 82, 21, 82,218, 90,132, 72, 52, 52, 40,101, 37,133, 73, 85, 5,107,151,
+157, 43, 78,180,104, 87,157,218,180,193,152,239,150, 98,198, 92,227, 89, 19,216, 59,220,189,115, 7,103,103,103,173,147,206, 37,
+153,144, 42, 42,233,139, 8, 49,101,136,216,168,212, 58,179, 26, 26, 50,237,103,124,245,107, 95, 3, 17,112,125,117, 9,231,189,
+ 69,122,106,228,104,145,104, 5,194,124,240, 53, 72,199, 57,251, 89,220,186,247,184,204, 56, 61,217,224,252,206, 29,133,178,120,
+143,179,243,115,140,227, 6, 62,184,246,247,171, 71,223,143, 67, 43, 96,206,194,156,150, 24, 49, 14,131,114, 0, 44,114, 54,248,
+128,192, 90,156,156,211,188,242, 98,251,119, 34,215, 88,253, 76,250, 60, 6, 8,187,253,140,121,191,111,235, 44,125, 15, 12,150,
+130, 16, 70,181,132,153,238, 0, 2,144, 83, 47,117, 74, 11,198,209,195, 57,117, 67,232, 4,200,246,211,172,246,227,148, 35,188,
+231,150,124,230,109, 45, 80,245, 35,196,171,176, 43, 23, 77,240, 27,194, 0, 97,165,196,149, 18,225, 29, 97, 24, 3,166,148, 65,
+101,175,171, 26,139,248, 21,209,117,147,216, 53, 58, 4, 70,225, 1,169, 20, 16,180,139, 47,133,193,148,219,100, 32, 9,144,205,
+ 63,239,160,123,244,148, 11, 28, 34,114, 33,144,100,179,239,234,146, 32, 9, 65, 74, 70, 16, 1,187,160,150, 51, 49,152,145,137,
+221, 5,220, 8,122,234,113,207,173,115,175, 22,224,170, 3,227, 14,118,230,234,136,158,244,103,146,100,133,199, 10, 44, 59, 94,
+155, 17,189,183, 28, 82, 73,112,200, 42,176,182,103, 76, 0,225,221, 49, 99,247,232, 28,101,255, 46, 56,125, 88, 35, 2, 15,162,
+ 45,110, 20,120,122,195, 8, 81,186,141,234, 1,174,253,240, 47,248, 66, 53, 49,109, 13, 92,129,217,208,228, 32, 84,165, 83,169,
+119, 63,132, 59, 36,103, 63,187, 20,116, 89,214, 2, 21,210,117,138,243,166,124,151, 53, 66,181, 90,195,234, 14, 26, 71,234,234,
+245,200,146,145,178,170,238,171, 14,128,142,232,100,178, 62,225, 77,201,190,146,240,164, 22,246,110, 63, 70, 77,124,102,254,195,
+154,207,222,237,125,197,226, 26,143,195, 61,250, 34,146,115,194,206, 94,175,179,155, 68, 4, 7,246,170,117, 28, 46, 16, 14,170,
+254,140, 51, 98,103,213,147,166,252, 36,136,232, 30,182, 20,179, 91,200,202,121,111,140,156, 42, 58,179,240, 24, 50,129, 73, 27,
+231,154,221,112,116, 26,191, 88, 74, 23, 6, 83, 71,236, 93, 17,206, 37, 55,225,210, 58,234, 93, 83,217, 8,199,241,169, 56, 16,
+212,221, 8, 44, 32,234, 64, 62, 54,143, 16, 28,173, 69,164,131,235, 31,199, 26,172,194,149, 79, 63,253, 4,196,164,106,235,227,
+ 2, 46,242,153,130,184,207, 98,189,215,192,155,250, 97,124,250,233, 51,188,253,206, 59,248,238,191,253,215,241,175,252,214,111,
+225,227,143, 62,196,199, 31,125,132,147,147, 83,188,124,241, 10, 31,252,232, 67,176,163,166, 94, 46, 34, 72, 81, 11, 72,140,169,
+ 17, 34, 68,128,237,245, 86, 33, 50, 73,187,181, 33,132,182,203, 85,129,219, 10,124, 90,247,186,122, 69,122,239,108,103,110, 15,
+117,134,169,229,245, 1,226,188, 71, 48,177, 88,101,155,107,198,122,178,207,218,210,174,204,239, 29, 83,212,189,179,119,235,234,
+ 40,229, 54, 69,137,113,245,170,215,251,162, 88,222,119,178, 98,237,189, 83,255,187,212, 4,199,210, 10,123, 41,235,239,132,253,
+ 51,102,175,249,237,222,196,111,222, 97,216,140, 32, 48,206,206,207,244,103,207,150,231,110,221,113,177,113,127,245, 16, 3,108,
+ 66, 51, 15,102,135,224, 61,152, 24,231,103,103,120,251,237, 71,248,244,211, 79, 27,251,221, 27, 8,165, 69,189,218, 33,136,121,
+ 45,192,149, 28,103,155, 3, 4,175,246,178,123,247,239, 33,248,160,150,177, 16,224,124,176,239, 54, 53, 85,191,247,154, 80,166,
+107,134, 67,159,113,202,138, 75,221,156,158,152, 59,194,235, 68,205, 59, 16,188,238,188,205, 82,164,174,132,132,253,180,199,180,
+204, 45,207,126,183,159,176,189,188, 66,140,170,183, 96,231,236, 26, 83, 95,245,249,249, 57,174,119,123,204,187, 93, 11,180,169,
+238, 26,120,143, 37, 22,229,146,155,222,161,133,224,216,164,164,177,215, 13,154, 37,180, 90,240,106,214, 60, 1, 13,222,163,233,
+124,197, 62, 91,229,164,151,156, 13,245, 43,200,211, 78,175, 71,131, 7,105,248, 10,224, 6,143, 84,214, 85,199, 52, 11, 40, 45,
+ 10,128, 17,193, 16, 28, 18, 2, 36, 70,187,255, 20, 33, 91,144,173,121, 42,109,114,204,182,254, 92, 82,182, 5,185,165,241, 9,
+ 32, 57,193, 59,143, 82,211, 43,237,153,235,184,106, 12, 8,108,226, 61, 1,175,132,189,178,138,149,245,126,100,203,104,173, 7,
+125, 0,226, 53,173,173,194,203,192,109,223,174,181,157, 90,168, 12, 83, 86, 46, 10,233,235,186, 79,130, 71,247, 10,158, 93,191,
+141,240,252, 2,144, 75,128,134, 55,120,108,222, 12,155,161,163, 37,187,244,154,169,219,118,234, 45, 40, 30,165,165,169, 53, 59,
+ 24,233,190, 19,196, 96, 42, 24,160,221,122,185,145,132,189,198,120, 22, 61,170, 35, 39,143, 37, 0, 27,110,205,113, 19,170, 81,
+255,114, 77, 13, 46, 86,157,250,147, 75,133,193,244, 97, 40,117, 15, 93,113,177,181,211, 47,114,156,220, 85,199, 0, 69, 79,113,
+ 76,171, 55,187,198,176,178,117,222, 77, 96,167, 89,234,186,115, 89, 21,221, 43,174,116, 61,217, 1,104, 54,182,138,101, 77,185,
+ 32, 17, 99,180,238,165,116,172,251,234,143,103, 11,192,209, 81, 92,198, 50, 21,244,217,230,212,117,246,250,208,204, 74, 46,178,
+ 61,125,219,220,219,158,212,213, 43,176,251, 62,184,177,158, 13,158,101,231,152, 41,154, 98,251, 56, 40,199, 58,253,126,167,220,
+239,110,143,204,250,102,183,144, 27,251,158,166, 79,232, 14,101,114, 60, 86,175,154, 13, 58, 74, 27, 2, 29,120, 47,233,240, 76,
+219, 38, 41,206,187, 53,246,245, 11, 16, 94, 63,107,135,222,255,243,216, 5,137, 60,249,248, 99,252,244,183,127, 22,255,201,223,
+253, 79,241,115, 63,255,243,216,111,119, 8, 97,192,233,233, 25,158, 61,125,138, 79,159,125,130,237,213, 21, 54,155, 17,217,101,
+236,246,251,134, 59,173,159, 89,240, 26, 86,178,221,237, 90,184, 72, 41, 5,228,108,188, 13,105, 35,246,218,121, 19, 17,114,205,
+ 26,207, 85,165,110, 34,160,214, 81,106,183,236, 3, 25,197, 75, 71,130, 85,101,237,140,182, 87,133, 78, 41,102, 19,167,101,181,
+ 5,153,186,185,221, 75,204,205, 43,159, 13, 55,235, 44,220, 5,198,237,166,162, 15,176, 12,180, 61,118, 13, 3,169,221,157, 52,
+241,146, 30, 60,168, 0,203,162,251,246, 16,188,118, 61, 6, 0,129, 33, 92,153, 21,189, 27,227,130,101, 73, 77,192,215, 52, 35,
+108,222,125,195,244,170,144, 91, 37,176,203, 18,241,222,123,239,225,221,247,222,197,110,167, 57,243,131,121,199,235, 33,208, 91,
+234, 90, 77,117,131, 16,156,167,150,240, 86,187,105, 7, 13,151, 25, 56,104,104,139, 49, 17,198,205, 6,195, 16,192, 32,204, 75,
+108, 46, 4, 50, 82, 95,213,229, 56,230, 54, 69,241,206,161, 64,112,125,189,131,247,140,205, 48,194, 13, 1, 41, 46, 8,126,176,
+251, 86, 15, 58,113, 89,144, 69,193, 68, 41, 45,198, 41,103, 92,111,119,152,166, 93,107,110,226, 82, 73,116,130, 92,128,203,203,
+171, 78,180, 5,248,202, 22,176,188,139,220,210,215,156,185, 35,164,235,188, 51,188,179,148,182, 92,214, 84,187,166, 87, 65,131,
+250,112,251,222, 9,211,178, 96,244,132,113,115, 2,148,128,152,247, 10, 43,130, 2,133,146,217,217,170, 23, 28, 34, 8, 38, 82,
+ 76, 41,194, 83,130,119, 12, 34, 7, 97,245,162,199, 66, 70,176, 51, 59, 89,157, 38, 8,131,178,254,121, 97,111,160, 36,105,145,
+177,197, 96, 65, 84,165,242, 70, 21, 68,183,158,108, 28,139,170,111, 50,223,122,139,197,110, 69,158,218, 84,170,217,215, 12,125,
+ 11,183,166,185,145, 61,179,146, 0,174, 20,141, 29,134, 90, 19,197,233,129, 68, 10, 25, 24,167,106, 1, 8,111,185,140,139,135,
+ 30,203,245, 59,112,211, 22,112,229,200,194, 38,159,107, 97,147, 55, 21,249,131, 2,143,186,154,178,157, 18,149, 3,181, 29,219,
+195, 67,173, 88,235,222,188,180, 29,250, 74, 26, 91,125,195,164, 37, 95, 6, 44,119,238,227,237,123, 23,120,255, 98,198, 31, 94,
+ 17,182, 92, 85,121,135, 41,111, 26,139,170, 59,116,234,138,185, 96,181, 85, 29, 72,166, 68, 58, 93,253, 90, 8,235, 72, 34,203,
+ 26,249, 73,189,229,170,117,232, 90,200, 85,245,202, 24, 28,129, 75,198, 78, 86,128,140,122, 24,215,209, 8, 19, 14, 4, 99,220,
+ 35,109,104, 21,252,233, 5,169, 54,174,220,193,105,164, 99,245,163, 8,132,187,112,144,162, 98, 62,103, 35, 43,116, 25,234,185,
+ 90, 59,172,251,174, 99,115,106, 25,192,166,192,165,188,170,251, 5, 45, 8,166, 81,231, 90, 58,147, 29,210, 44, 20, 70, 4,240,
+162, 9, 73,197,118,209,199,133,178, 28,137,205, 90,199,221,173, 21,110, 67,196, 54, 39,195, 13,202, 92, 47, 70, 92,103,235,116,
+235, 21, 76, 45, 92, 8,213, 79,223,167,187,245, 35, 44,185, 9,152,161,159,208,194, 86,223,223,227,143, 62,194,191,244,157,239,
+224,239,252,103,127, 15, 95,255,198,183,112,117,113,141,121,217,227,250,234, 18, 47, 95,190,192,235,215,175, 81, 32,184,115,247,
+ 12,203, 28,177,219, 93,183,247, 27,151, 98,136, 75,135, 36, 25,243,146, 16, 77, 4, 71, 6, 8, 97,184, 70, 36,219, 79,123,237,
+ 74,205,250, 84,133, 94,245, 1, 51, 4,111,216, 96,125,239, 75, 76, 38, 10,114,237,147, 72, 41, 90,172, 48,224,137, 13,153,170,
+ 10,240,148,106, 49,211, 98, 31,188,211,113,187,237, 13,201,177, 98, 95,139,104,160,144, 61, 84,115, 86,154, 91, 24,130, 5,174,
+216, 94, 50,235,142, 94,138, 38,147, 33,151,102, 87,147, 82, 9, 93,235, 88,183, 90,160, 42,203,188,148, 85, 80, 86, 85,239, 21,
+ 59, 92,202,154, 46,167,247,104, 57, 12,110,194, 26, 98, 92,125,247,187,221, 14, 47, 95,190,196,197,235, 11, 5,231, 12, 30,234,
+ 60, 83, 1,160,119,250, 57, 85,104, 79,117,201,136,232,225,208, 27,237,174,238,189, 79, 79, 71,132, 48, 96,137, 11,198, 16,176,
+217,140,240,206, 27,227, 92,169,110, 97, 24,180, 72,164, 2, 55, 88,242,152,185, 0, 84,175, 80, 19,223,164,133, 14,150,148, 85,
+ 91, 98,202,122,116,150,169,253,180,199, 52,207,144, 84,204,231, 63,225,250,242, 26,113, 89,224, 61,195,249, 17,201,101, 76,203,
+ 12,239, 24,128,195, 50, 79,138, 89,245,190,206,153, 33,164,135, 22, 41, 74,162,203, 54,206,214,105, 34,105, 97,245,172,182,177,
+ 82,173, 91, 12,231,201,246,251,182, 66, 33,129, 3,107, 46,187,137, 55, 83,202,166,237,240, 88,162,186, 42,132, 60,242,178,135,
+115,108,172,246, 2,228,168,123,126,131, 3, 45,169,160, 72, 4, 74,117,105, 48,118, 11, 65,226, 86,189,231,138,216, 68, 38,129,
+ 43, 89, 95, 7, 19, 92,177,195,155, 89,241, 28,161, 5,175,148, 84, 52,172,167, 98,112, 43, 57,179, 0,108,188, 16,116,171, 40,
+ 49,235, 89,215, 54, 52,139,242,170, 61, 35,211, 40, 41, 96, 38,155,144,147,145, 32,164,118, 58, 47, 9,228, 9,158, 60,200,145,
+237,222,209, 58,120, 18, 3,253,212,123,200, 49, 98, 38,108,114,194,163,113,198,227,123,119,129,249, 62, 32, 47, 0, 10, 7,144,
+207,118, 20,249, 60, 60,236,209, 40,190,223,179,215, 81,188, 23, 97,243, 35, 3,148,143, 67, 98,212,204, 95,187,118, 38,129, 19,
+221,181,175,201, 99,253,142, 92,172,187, 59, 1,238,222,195,195,243,215,184,115, 81, 16,197,173,212,156,214, 36, 91,119, 47,104,
+251,234, 10,149,105, 83,130,163,173,168,116,214,177, 22, 5,218,241,220, 87,107,182, 61,242,153,110, 36,130,181,253,190, 1,107,
+230, 72,173,224, 50, 73, 27,233, 8,173,128,147, 99, 31,187,180,223, 95,224,172,112,151, 78,200, 80,250, 34, 70,221,159,175,129,
+ 56,196,144, 56,227,197, 62,227,228,252, 20,103, 94, 86, 0,132,160,195, 31,174, 1, 48,135, 54,178,110, 98,209, 68,115,221,239,
+151,190,104, 74, 19, 53, 58, 94, 59, 95, 13,191,209,139,144, 93,209, 93,156,113,247,251, 3,211, 77,155,187,220,240,140,215,149,
+196,155,196,105,212, 17,234,214, 43,153,218,225, 68,110,209,186,175,133, 91,142, 98,126, 75,243,141, 30,208,251,254, 5,162,216,
+214,175,134,241,248,241, 71,248,233,159,249, 54,254,238,223,251, 47,240,165, 47,127, 9,187,237, 14,187,237, 53,158, 63,255, 4,
+143, 63,254, 16,151,151, 87, 77,236,229,156, 71, 76, 59,245,155, 51, 99, 28, 6, 20, 95, 12,161,186,224,122,210,149,137,116,254,
+223,154, 62, 38, 2,196, 56, 55, 82, 96,206,171,173,169, 30,134,134,193, 55,198, 59, 76,229, 76, 4,112, 81,162, 22, 21,128, 69,
+255, 76,177,145,181,115, 30, 36,218, 57,198,168,129, 31,108, 52,173, 97, 8, 72, 69,173, 84,193,172,114,217,208,176,142,217,224,
+ 79, 90,164,185, 10,168,114,182,152,203,202,251, 55,117,187, 29, 16,107,104, 70, 93, 21, 57,246,141, 13, 46, 69, 3, 75, 0,157,
+ 44, 16,107, 34, 88,253, 44,198,113, 68, 74,185,121,169,217,248,240,213,227, 45, 68, 13,113, 74,214,129, 86,219,153,119,132,147,
+147, 13,182,187, 45,230,121, 15,231,188, 69,149,154,118,196,185,230, 71,172,135,139, 33,120,181,128,217, 10,196,187,122,253,219,
+ 14,184,100,156,158,156,168, 51,195,188,249,196,154,191,174,233,112, 5,193, 59,203,110,215,239,140,205,154,197,118, 95,103,195,
+240,138, 61,243, 8,192,180, 44, 8,185,180,116, 60,231,189, 30, 36, 88,233,120,251, 73,243,234, 29,233, 52,224,229,139,151,216,
+ 94, 95,171,130, 27,190,173,118,148,157, 78,200, 57, 41,146, 22,172,215,150,169,217,153, 86,112, 80, 74, 73, 25,246, 45,171,153,
+214,201, 23, 17, 18, 8,146,138, 49,245, 73,145,190, 16, 45,250, 53, 59,192, 48,196,213,138, 37,214,205, 10, 5,204,243,162, 7,
+ 67, 31,204,249,100, 0, 43,243,142,143,193, 67,136, 49, 45, 17, 84,162,118,214, 75,134, 80, 65, 90, 50, 88, 50,146, 29, 0,215,
+231,180, 78,165,234,180, 66, 58, 20, 74,197,219, 58, 14,200, 92, 0,219,113,183,112, 22, 43,224, 43,153,173,123,114, 16,183,105,
+ 97, 21,208, 49,213,216,214, 26, 36,166,167,226,234, 87,209,151,229,108,119,174,147, 28,242, 4,144, 87,110,139, 40,188,134,170,
+ 5,142, 76, 52, 87,146, 62,163,152, 65,165,181,174,120,228, 9,175, 31,120,236,174,223,134,223, 94, 2, 46, 3,228, 58,138, 28,
+186,160,172,207, 1,100,201,155,154, 20,179, 39,186,186,187, 40, 58,246, 19, 89, 89,221, 48, 62,186,138,183,184,219,169,215,199,
+109,239, 69,175,247,170, 7,104,139,225,217, 15,241,227, 39,130, 63, 18, 15,120,193, 32,235, 24,125,125,171,230,139,151,181,224,
+ 86, 59, 84,203,212,109, 74,249, 78, 94, 70,135, 37,160, 70,195,246, 73,112, 43, 25,174,207,237,174,137,107,210,237,216,245,103,
+ 58, 58,220,219,183,174,222, 58,103,161,110,255,127, 52,106,206,221,238, 95, 76,143, 64, 80,133,109, 66, 5, 81, 84,122, 10,140,
+116, 0, 0, 32, 0, 73, 68, 65, 84, 79, 48, 16,231, 25, 39,111,125, 9,255,214,183, 78,240,163,239,253, 24,255,228,138,112,226,
+169,237,171, 87, 21,252,202,112, 63,200,105, 63, 42,182,220, 77, 80,106, 62,187, 72, 61, 40,117,110, 5, 89, 17,138,161, 30, 54,
+152,225,161, 34,148,138, 28, 74, 93, 92, 43,209, 26, 53,251, 38, 24, 76,169, 17,189, 29, 9,238,224,162,171,137, 81, 93,129,146,
+131,221,144, 28, 98,127, 59, 81, 92,157, 14, 73, 23, 31, 72,116,204,153,255,252,177,251,103, 17,228,106, 65,127,241,252, 83,124,
+235, 91, 63,131,255,252,191,252,175,240,238,187,239, 96,183,221, 67, 74,198, 71, 31,254, 24, 31,126,248, 1, 46, 47, 46,112,125,
+117,173, 99, 81, 67,181, 18, 43,200,131,173, 51, 21, 0,211,188, 96,154, 38,188,253,246, 59, 56, 59, 59,133,115, 14,195,176,193,
+147,167, 79,113,113,113, 1,102,214, 14,221, 68,127, 26,230, 97,120, 95,239,117, 15, 94, 96, 30,115,155,198,212, 98,234,184, 63,
+218, 54,101,120, 5,202, 8,107, 23, 30, 99,198,180,159,116,220,105, 74,243, 16, 28,202, 34, 88, 82, 4, 70,237, 98,151, 57,182,
+ 29,179,171, 2,210,188, 34,132, 83,212, 17,168, 15,206, 8, 96, 80,244,103,187, 30,202,193, 67,183, 94, 15,138,115,173, 31, 46,
+183, 3,160,247,154,235, 29,151,132,224,131,177,184,201,130, 84,188, 69,236,102, 19,251, 41,167,179,106, 59,106,164,113,177, 29,
+241,224,130,145,209,212,167, 95,202, 26,251,236, 28, 55, 52,172, 24,108,198,177,179, 29,122, 93, 63,172, 66,215,156,245,112, 90,
+191,175,146,245, 16,162,250,128,210,108,115,197, 70,179, 33,120,157, 98, 72, 1,231, 2,118, 27, 68,131,170,212, 49,252, 56, 14,
+166,146,183,231, 94, 81,123, 91,181,252,197,152,176,159, 39, 37,176,137, 96,183, 44,120,253,242, 2,251,221, 53, 28, 3, 75,174,
+ 28,120, 45,166,228, 28,246,251, 25, 37, 46,192, 56,216,116, 77,236,176,163,171,195,224,149,110, 55, 71, 66, 73,185, 85,197,186,
+190, 73,165,128,165, 88,212,168,172,163,247, 10, 53,178, 21, 80, 21,136,177,197,197, 6, 7,240,184,209,207, 33, 38,187,167, 83,
+ 43,226,235, 97, 84,107,137,144,118,211,155,160, 74,117, 95, 18,156, 31, 81,224, 33, 72, 40,177, 96,240, 12, 33,103, 56,108, 66,
+ 78, 73,161,101,164,163,119,110,182, 87,205, 7, 96, 75,144, 35, 16, 10,105,160, 74,201, 25,137, 4,156,201,184, 53,100, 22, 52,
+ 6, 87,162, 74,205,222,144, 67, 97,109, 11,122,169,218, 40,227,163, 16, 76,117, 79,234,138, 88, 97,163,107, 30, 71,133,219,212,
+221, 61, 74, 6,138, 46,159,179,173, 53, 72,199,198, 72, 34, 24, 73,240,214, 38,226,195, 7,119, 81,166, 71,224,242, 68,111,250,
+ 46,156,165,115,172,125,246, 72,241, 22,110, 77, 79,215,240, 84, 51,150, 69, 67,223,139,141, 58,122,194,107,207,105, 47, 88,217,
+232,124,227,225, 88, 79,244,122,186,143,166, 60, 36,193, 1, 2,181,238, 81, 75, 3,209, 72,227,197,163, 99, 53, 59,220, 2, 70,
+233,152,236,210, 89,195,218, 67,166, 43,228,189,162,176, 47,238, 53,221,147,153,251,133,174,141,113,214, 55, 47,165, 42,223, 87,
+ 88, 78, 99,130, 31,140,227,117,228, 77,182,231,201,214, 81,214, 87, 81,119,165,117,140, 95, 74, 1,133, 1,195,102,163,164,181,
+204, 88,135, 25, 85,144,150, 87,175,120, 59,137, 83,151,118, 42, 7, 69,205,117,112,130, 82, 53, 5,164, 99, 88,103, 7,165,108,
+187, 82,103, 34,153,154,103, 12, 27,199,183, 7,162,141,102,107,105, 46, 56,220,157,203,109, 35,109,145, 3,116,172,220, 56, 65,
+ 18,130,243, 40,146,173,211, 61,252, 97,199, 23,114,255,119,197,246, 43,117,143,223,139,247,126, 18,176,204,155, 39,238,132,235,
+171, 43,156,156,158,225,111,255,199,127, 7, 95,251,218,215,240,209, 71, 31, 34,167,132,103,207,158,226,135, 63,248, 33,166,221,
+ 30,243,180, 32,165, 5, 37, 23,236,118,219,118,208,216, 12, 35,156, 83, 80,202,213,245, 22,251,253,132,247,222,123, 15,223,248,
+198, 55,213,199, 76,192,211,103,159, 98, 89, 34,198,205,136, 37, 46, 40,201,204, 98, 78,218, 8, 26,162, 92,237, 90,116,114,182,
+228,177,224, 76, 69,124, 8, 34,210, 14, 56, 86,164, 19,134,193, 44,108,185, 0, 69,154,117,141,157, 67, 8, 42, 46,115,172,209,
+158, 82,128,101, 78,200, 34, 24, 60,183,149, 13, 64, 88,155, 53,193,208,145,197,156,105,136, 96,172, 3,141, 77, 45, 53, 71,176,
+179,109, 74,235,182,200, 28, 15,149,187,190, 70,230,174,241,166,196, 58, 34, 37, 2,216, 51, 36, 73,163,178,149,162, 29, 85, 50,
+190,189,115, 42,230, 11, 67, 48,168,141, 52,193,158,247,190, 77, 16, 52, 21, 78, 45,124, 67, 80,152, 77, 76,201,244, 2,220,232,
+122,196, 80,101,125, 17,156,223, 61, 71, 8,163,142,205, 77, 27,145, 82,182,239,144,204,147, 47, 77, 28, 23, 99,194,233,201,136,
+ 71,143,222,194,213,245, 22, 57,171, 31,159,136,176, 25, 2, 78, 78, 78, 84,196,149,146, 9, 13, 53,235,220,179, 78,173, 82,210,
+ 40,213,189,121,247,175, 46,175,177,189,188, 92, 19,210, 82, 66,140, 25, 57,171,149, 81, 76,248,229, 76, 8, 39,148,149,193, 46,
+108,187,112,187,191, 29, 99, 28, 70, 44, 20, 65, 57, 2, 76,109,117,192,108, 99, 99,155,170,186,170, 61,146,149, 64, 87,239,120,
+ 38,192, 13,193, 84,205,217,186, 98,134, 32,131, 89,144,133, 81,114, 84, 91,170, 37,221, 37, 34,148,148,144, 83, 1,202,162,130,
+200,224,113,114,122, 6, 12, 35, 82, 18,176, 95, 48,237,128,156, 23,157, 6,219, 14,157, 73,215, 65, 40,186, 34, 21,203, 93,103,
+100, 56, 27,129,235,148,201, 0, 75,118, 64, 20,137,152,115,129,179,177,111,141,102, 21, 19,186,101,114, 22,199,186, 10,219,178,
+232, 90,146, 81,133,110,118,221,118, 99,108, 29, 63, 27, 19,181,137,131,171, 77,121,213,255, 72,209,238,223, 35, 91,152,204,234,
+ 22,169, 13, 75, 17,224, 62, 23,188,188, 3, 92, 95,188, 5,190,124, 5,208,162,171, 16,194, 13,113,112,143, 53,199,109, 17, 90,
+244,230,101,187, 39,178, 20, 27, 39, 8,250, 44, 88,121,236,150,220,211, 27,163, 96,227,120, 88,209, 93, 55, 93,118, 81, 84,207,
+ 54,233,126, 67,164,210,203, 14,189, 75,245,119,212,241,251,186,151,183,241,187,229,187,115,119,132,161,206,211, 39, 66,221, 96,
+246, 80, 41,223,132, 92,159, 51,116,205, 37,183, 60,247, 84,104,221,107,116,123,249,106, 21,171, 84,187,234,119,151, 62,191,155,
+234,216, 92, 58, 74, 27, 89,119,125,152, 87,158, 33,240,227,136,221,211, 63,193,127,255,163,130,243,179, 19, 60,218,168, 56, 49,
+ 99,181, 94,200, 58,104, 95, 63, 51,177, 3, 82, 61, 77,217,232,127,117, 96, 98,221,237,116,224,151,186,251,206, 34,154, 75,205,
+116, 48,161, 16, 36, 99,207,163, 81,154,170,143,185, 5, 68, 80,237,154,203,103,230,150, 31, 23, 90,234,190,246,152,150,131,113,
+252, 17,107,119,237,224,235,225,175,117,103, 55, 91,242, 47,130,127,197,231,224, 95,235,143, 45,165, 96,123,125,133,223,254,221,
+239,226, 59, 63,255,115,120,250,248, 99, 60,123,250, 20,207, 62,121,134,151,207, 63,197,246,106,139,156, 84,240, 22,188, 71, 76,
+ 81,247,140, 49,183, 98, 43, 4, 60,124,251, 45,220,185,127, 31, 57,102, 60,122,251, 45,204,203, 12, 34,194,197,197,107, 60,121,
+242,180, 41,219, 83, 76,107,209,182,189,113,201,170, 71,169, 76,254,205, 70,187,162, 37, 69,228,226,140,122,165,112,151, 16,156,
+210,232, 82,110, 7,188, 58,162,173, 16, 15, 30,180,203, 72, 57, 91, 64, 10,183,137, 79, 8, 42,158,186,186,222,226,238,217, 9,
+222,126,112, 15, 57,103,236,166,121,141,176, 4, 48, 45, 81,115,207,179, 41,159,177,118,116,245,255, 96,157, 74,142,217,108,102,
+ 42, 98,172,246, 49,101,144,163,197, 21, 43, 33,140,204, 82,182, 90,204, 74, 91,227, 48,220,232, 80,146, 90,250, 4,122, 56,241,
+228,154, 61,203, 59,175, 5,196, 20,251,154, 68, 23, 81,114,198,201,233, 9,200, 66, 99, 52,111, 59, 97, 56, 81, 11, 89,142, 26,
+ 23, 90, 47,191,234, 89,175,218,158,211,211, 83,144,243, 40,121,182,117,128,107,138,241,156, 51, 82,156,155, 38, 65,225, 62,162,
+209,161,196,200, 41,183,240,143,224, 29, 78, 78, 54,154,147, 62, 47,200, 85,240, 37,100,136, 85, 70, 78, 17, 33,120,228,171,130,
+203,139, 11, 44,203,140, 28,151,102,105, 75,134,254,101, 42,128,115,152, 99,212,100, 57,171, 53, 97,112, 38,142, 4, 80, 82,187,
+249,147, 37,232, 17, 19, 60, 51, 98,113,152,231, 25,204,149,170,103,186, 5, 16,200,249,166,147,232, 96,141, 38, 8, 86,117, 56,
+114, 54, 14, 60, 33,167, 5, 12, 65,240, 85,253, 13,144, 56, 19,220,233, 4,196,177, 38,178, 5, 38, 20, 10,136,115,196,249, 88,
+ 48,108, 54, 16,246, 26,254, 98, 29,217,126, 34,228,101, 50, 94, 60,129,157, 62, 47, 7,207, 40,208, 40, 97,148, 98, 28, 17, 61,
+224,178, 20, 56,167, 90, 0,239, 24, 18,156, 30, 32, 44,142,181,136, 3,178,128, 40, 25,218,215, 50, 56, 44,156,138, 60, 65,216,
+ 55,183,144, 52, 71, 78,133,135,149, 78,176, 91,149,242,186, 96, 78, 34,224, 4, 56,151,109,194,176,174, 64,117, 92,207, 43, 94,
+182,172, 75,105,141,115, 21,120, 1, 30, 13, 17,219,123, 35,202,238, 33, 56, 63,182,176, 23, 58,196,165,203,205, 8,214,131,108,
+ 76,185,189,158, 75,143,137, 21, 97, 20,100, 67,155,118, 2,181, 6,141, 89, 11,168, 28, 1,238, 74,199,137, 71,183, 83,230, 46,
+129, 76,228, 38,101,174,135, 34,180,204,223,126,247,108, 96,148,108, 35,107, 58,216, 35,244,175,162, 34,243, 42, 27,126, 21,201,
+161, 59,241,208, 17,126,148, 58,107,160,116, 40, 24,166, 21,183, 90,128,131,221,254,161,197,186, 71,149,226,198, 33,162,134,218,
+ 84, 24, 10,119,194, 66,148, 2,118, 1, 15,238,232, 23,144,203, 90,208, 5,199, 99,238, 85, 73, 94,199,157, 26, 18,163, 62,250,
+ 12,130, 55, 72, 8,137,170,240,221, 74,219, 95, 95,135,145,163, 72, 8,169, 72,155,182, 20,161, 3, 49, 92,105,233, 64,178,102,
+199,219,119, 84, 99, 26, 24, 64,166,242,153,193,103,116, 44,120,163,155,187,160, 91, 41,137,157, 58,190, 84,167, 68,143,247,253,
+255,233, 63,253,103,188,223,239,241,238,151,190,140, 95,253,181,191,136,151, 47, 62,193,147,199,143,241,244,241, 99,188,124,253,
+ 18,219,171,107,204,251, 25, 75, 92,236, 32,152,144,178,118,108,202, 36,175, 29, 43,112,117,117,141,251, 15,239,195, 17,227,217,
+179,167,216,237,118, 0, 41, 77,206, 27, 8,102, 94,230, 86,160, 91,248, 78,213, 64,152,170,138,153,177,223, 79,134, 70, 53,209,
+ 78,165,112, 89, 38,186,152, 70,103,244, 3, 74, 46,109, 58, 3,209,241, 56,155,154, 63, 24, 81, 77, 25, 4,132,251,247,238,227,
+249,139, 23,120,249,242, 21,126,250, 27, 95,199, 79,189,251, 22,166,105,209, 3, 75, 46,112,198,226, 78,185,118,110, 53,189,140,
+144, 83, 37, 31,230,131,201, 76, 77, 29,108,200,204, 14,238, 33, 88,249,254,206, 57,163, 0,214, 81,188,199,233,249, 57,246,187,
+189,222,119,172,197,209,121,135, 57, 47,107,119, 15, 69,174,106, 34,222,108,191, 75,154,250,158,205,194,150, 83,193, 50,207, 24,
+198,141,137, 21,181,107, 74, 89,187,114,103,135,109, 54, 64,141, 10,251,204, 90,198,220, 50,220,107,130, 27,179,142,132,107,204,
+105,189, 15,153,117,117, 17,194,128, 88, 10, 94,190,248, 20,227, 48, 32, 23, 61,244,120,239,177,164, 4,231, 3,130,247, 40, 57,
+193, 7,143, 49, 12,112,222, 99,191,223,195,121,143, 57,102,196, 56,227,252,244, 20,143, 47,175,177,219,238, 32, 34,152,150, 89,
+149,247,163, 71,202,140,178, 68,211, 27,100, 68,179,149,141,102,145,139, 41,175, 40,235, 92,218, 66, 52, 47,121, 61,124,155, 29,
+177,136, 18,233,106, 92,115, 43, 74,102,251,138, 41, 43, 12,198,180, 54,173, 75, 20,105, 25, 32,108, 7,153, 37, 11, 8, 9,193,
+132,137,154,135,190, 30,182, 11,128,192,192,233,221, 19,128,189,241,252, 25,193, 51,136,157, 78,163,130,199,229, 37,163,196, 45,
+152,117,125, 35, 84, 15,145, 9,140, 2,242, 14,169,232, 74,134, 76, 52,185,216, 40,222, 57, 45,236, 76,126, 21, 69, 23,129,176,
+ 67, 37,113,232, 84, 86,215, 86,197, 72,141, 42,204,182,231,152, 94,180,154, 50, 74,172,122, 20, 42, 13, 64, 83, 80,199, 83,202,
+ 56,225,108,251,124, 86,184,154,247, 2, 33, 77, 40,204, 38,218, 99, 0,226,128, 88, 60,168,100, 4, 84, 21,189,199, 61, 0,231,
+119,128,203,171,183,192,175, 95, 3,101, 15,112, 56,208, 18,221, 20,254,210, 77,224,134,188, 97,141, 8,192,151,162,114,253,218,
+137,234, 14, 89,251,177, 82, 69,113,180, 22,237,190, 26,246, 99,238,131, 56,213,174, 80, 31,244,170, 21,172,114, 99,122,208, 73,
+250,111,188,254, 67, 95,185, 61,246, 90, 33, 23,220, 72, 25,105, 15, 71,170, 99,106, 89,197,112,135, 59,243,190, 56,247, 39,165,
+ 91, 60,214,109, 63, 92,214, 81, 12,250, 56, 28, 89, 9,115, 93, 35,202,173, 27, 62,234,189,165, 32,230, 26, 55,219,237,148,143,
+ 2,115,170, 53,132, 44, 91,184, 18,158,200,246,212, 4,209,189,189,189,198, 8,101, 14,112,139,104,229, 78,216,183,162,118, 27,
+ 10,214,188,237, 13, 24, 97, 7,180, 34, 53, 5, 13,107,106,150, 33,127,143,129, 7,212,237,193,111,116,197,149,210,119,220,149,
+ 19,221, 30,135,218, 37, 2,154, 99,239, 32,110,247, 77,104,196,207,235,210,185,187, 86, 75, 39,158,212,145,166,195, 60,205,120,
+241,226, 57,198,192,248,222, 31,252, 1,174,119, 59,160,100, 3,198,164,118,132,101,203, 39, 87,161,149, 7,243,255, 71,218,187,
+ 62, 75,118, 92,215,157,107,103,230, 57,167,170,238,163,187,129, 70, 3, 36, 8,129, 36, 64, 82, 22, 69, 73, 36, 69,122, 28,178,
+ 37,121, 44,197,132,190,204,200,243, 23,225,239,154,152, 79,227,112,132, 44,143,237, 24,203,150, 37, 8, 32, 8,128,125,251,121,
+223,245, 56,143,204,220,243, 97,239,204,147,231, 84,221,238, 6, 13, 5, 67, 64, 63,238,173,170, 91,149, 59,247,222,107,253, 86,
+ 68,223,201,193,239,175,111,176,221, 74,116,236,102,189, 67,221, 84, 90, 84,101,212, 42,251,111, 40, 5, 79, 95,155, 4,118,177,
+ 18, 40,210, 15,163, 90, 62,237,212,211,165,166,174,171,172,203,128,113, 42,140,147,241, 56, 5, 41,250,117,237, 50, 82,181,105,
+234, 44,134, 75,180,180, 97, 24,176,104,106,252,201,191,248,231,248,193, 71, 31,225,252,242, 18, 79,159, 62, 69,136,140,182, 29,
+228, 98,207, 49,239,158,147, 95,220, 89,167,163,238, 46,139, 55, 83,156,167, 32, 65, 71,116,166,215, 16,144,242,181, 31,187,113,
+192,146, 85, 15,189, 40,227,125,229, 48,116,130, 84, 13, 49,192,194, 41,194,118,208,200,221,152, 17,199,139,133,136,235, 54,155,
+ 22,214, 18,108, 83, 43, 27,222, 2, 86,105,144, 42, 2,100, 21, 14,166,231, 18, 85, 17, 77,209,228,247,163,181, 66, 71,171,154,
+ 90, 83,237,188,188,239, 43, 21,165, 41,183, 63, 40,114, 54, 89, 22, 93,229,242,103,118,185,104, 96, 93, 37, 26, 12, 8, 22,151,
+ 9,162, 27, 80,184, 79,240, 29, 56, 70, 28, 87,167,185,104,222,174,111, 49, 12, 29,182,109,143,245,237, 26, 67,215, 41,179, 93,
+ 88, 0, 81, 89, 17,146,151,174,151,186,236,167,158, 56, 76,245,140, 32, 37, 11,114, 70,201, 34,117,214,250, 92,156,200,198, 53,
+237,207, 40,235,128,224,163, 38,128, 40, 37, 45,198,136,218,141, 9,124, 66,253,141, 5, 83, 68,145,148,214,101,221,132, 37,134,
+ 37,185,104, 12,253, 14,117, 99, 80,185, 5, 34,137, 48, 48,248,128,170, 6, 42, 87,231,201,223,209,106,129,174,141, 48, 34,155,
+195,224, 5, 3,203, 58,118, 37,101,207, 27, 14,128, 19, 2, 97, 44, 2,129, 82,227, 25,141,142,192, 45, 16,204,200,149, 71, 62,
+ 39,147, 85,206,234, 30,213, 67,243,224,100, 45,201,146,125, 16, 33,130,235,202, 36,182,190,136, 65,153, 9,142, 0,227, 8,198,
+ 84,218, 84,233,252, 90,199,167, 73,148,104, 16, 53,142,156,179, 38,201,168, 62,173, 54,132,135, 11,194,250,193, 17,226,246, 29,
+152,225,235,131,231, 96,201,250, 96,198,126,157,123,197, 63,246,135,223,125,239,147,174,109,229, 54,148,236, 98, 76, 99, 44,104,
+ 26, 59, 99,236, 72,203,153,191,201, 99, 83,202,136, 84, 51,187, 67,100,127,122,137,176, 41, 68, 42,227,190,121,236,162,247,187,
+ 99,202,123,100,100, 53, 62,101, 61, 0,131,246, 3,110, 12,237,193, 75,104,118,171, 97, 20,248,214,226, 98, 2, 28,200, 82, 47,
+202,114, 44, 67,104, 48, 62, 7, 42,108, 95,134,132,140,148,115,231,211,235, 71,211,169, 6, 79, 6,237, 83,222,185,117, 21,154,
+218, 10,242,144, 75,183,246,152,238,198,197,126,159,117, 39,158,223, 76, 41, 96, 39, 79, 31,184, 64,160, 82, 22, 25, 26, 18,229,
+123,152,237,206,199, 11, 35,141, 5, 87, 63,215, 41,155, 25,152,238,211, 39, 59,246,130, 45, 63,221,115, 83,129,148,157,255,192,
+199,159,208,248, 51,199,161,192,129, 55, 42,236,150, 12,172,145, 3, 31,166,184,104,234,235,230, 42,135,237,250, 22,207,158,189,
+192,253,211,251,248,234,203, 95,235,142, 84, 58, 63, 99, 36, 55, 92,136,103, 65, 21,218, 6,195, 48,100,224, 11,235, 13,136, 35,
+231, 75, 64,234, 38, 37,234, 50, 42,115,129, 51, 85, 45,105, 38,100,228, 46,170,240,160,145,167,105,207,174,226, 96,209, 61, 24,
+ 73,164, 3,179,100,122,171,213, 40,117,244,214,166, 93, 60,103, 12,171,129,201, 74,253,186,170,240,171, 95,253, 10,255,234, 79,
+254, 21,254,250,175,255,119,124,241,229,151, 50,226,230,136,155,155,219,156,229,157, 70,219, 48,146,167, 62,143,141,140, 49, 10,
+179, 59, 49, 24, 72, 60,237,140, 40, 93, 91, 74, 2, 36, 82, 95,178, 17, 80,140, 45,213,237, 12, 87, 85, 56, 58, 58,210,191, 43,
+123,243,244, 24, 42,231,178,158,130,145,148,216,156, 21,242, 62,120, 52,117,141,202, 85,226, 10, 72,169,104,214, 73,247,166, 32,
+ 21,147,132, 85,165,152, 75, 63,159,105,111, 30,252,128,227,227, 99,156,222, 59,213,142, 60,249,150, 21,173, 28,130,218,189, 68,
+232,103,173,203, 5, 83, 72,108,146,109,190, 90, 52, 32,227,208,105, 72, 77, 85, 59,221,253,235,251, 38, 74, 70,122, 93, 9, 38,
+117,183,221,224,234,122,131,167, 79,159,161,221,137,139, 34, 40,154, 53,117,212,233,163,225,245, 49,144,145,245, 65, 82,236,139,
+195, 64, 21,249, 24, 47,137,163,168,148, 51,210, 86,136,119, 38,103,210,115,129,138,141,202, 95,231,148, 91, 15,134, 51, 6,182,
+114,226,189,214, 76,246,160,217,230,153,109,162, 56, 94, 80,154,236,136,130,253,164,142, 56,185,127, 15, 29, 55,136,125,135,202,
+ 2,182,170,242, 36,137, 20,235, 26, 67, 98,168,107,108, 43,196,122,105,173,203,241,177,164,103,132,201,162, 75,210,207,143,236,
+ 61,211,228, 4,100,245,242,167, 58, 21, 81,159,202,251,159,100,221,131,108, 5, 77, 46, 9,185,216, 25, 99, 16,148,205,159, 66,
+118, 98, 90, 69,166, 26,165, 83,158,252, 53,146,122,158,145,145,185,105,124, 63,230, 79,232,247, 49, 0, 91,139, 8,139, 6,140,
+173,137,104,119, 11,152,238, 6, 64, 55,138, 73,239, 58,208,210, 13,230, 53,231, 95,211, 52,176, 63,248,238,123,159,180,237, 14,
+236, 73, 11,123, 1, 90,209, 3, 53,143,224,179, 88, 64, 95,184, 73, 30,186,238, 20, 70, 41,220, 72,130, 43, 70,225, 84,142,206,
+ 11, 38,252, 94, 62, 13, 77, 11,111,238,170,243, 88,153, 38,153,187, 37, 0,133,202, 11,201, 33,144, 40, 77, 73,101, 9,198, 63,
+190,126, 69,187,157, 68,100, 52, 41, 53,211, 14, 53, 97, 88, 13,141,226,193,189,224, 22,202,145,152,124, 32,137,103,156, 8, 20,
+240, 83, 6, 76,181,192,170,113,240,125, 7,159,237,109,243, 32, 23, 20, 2,186,148,237, 94, 78, 85,166, 1, 49, 57, 20,128, 71,
+127, 35,103,213, 60, 79,166, 19,204, 37,156,232,110, 33,102,105,151, 57, 36, 79, 39,154,129,100,202, 41,207, 36, 80,102,186, 63,
+103,126, 61,109,233,117, 69,221, 24, 41,142, 76, 34,190,225,180, 50, 41,172,112, 77,211,224, 31,255,225, 31,112,124,114,138,143,
+190,247,125,156, 61, 62, 83, 49,149, 65,215,117, 34,178, 82,225,154,120,164, 3, 56,176,142,114, 99, 78,255, 74, 94,108,155, 14,
+221,156,123, 29,114, 65, 41,133,110, 41, 53, 75,166, 50, 35,123, 91, 1,106,185,155,141, 49,162,109,123, 56,165, 6, 25, 99,208,
+ 52, 77, 30,215,215,149,197,162,174, 4,212,162,106,246, 20, 47,185, 92, 44,176, 92, 54,120,249,226, 28,255,244,217,103,112, 85,
+141, 63,254,249,207,113,121,125,161,113,170, 59,137,133, 85,248, 72, 34,200, 25,152, 12,169, 73,190,113,235, 42,109,161, 56,227,
+ 95,131,238,157,163, 30, 30, 73,160,151,172, 68,198,136,103,222,168, 55, 93,152,239,162,210, 95,174,150, 99, 38, 59,198,142,216,
+ 85,110,180,249,233,196,160,174, 42,241, 63,235, 97,107,149,178,214, 15, 3, 42,107,208, 52,245, 4,117,108,244,146,149,136,107,
+164,171,139,180,142, 72, 23, 75,107, 8, 15,223,126, 27,117,179, 64,140, 34,222, 19, 65,115,200, 49,174,172, 36, 68, 42, 46, 43,
+130,189,213,164, 60, 34, 88, 87, 97,232, 7, 77,184, 3,154,186,129,113, 34,120, 19,145,154, 94,230,140,193,243,231,231,120,254,
+236, 57,174,174,175,177,190,190, 65,223,137,189,177,105,106, 24, 75,234, 51, 23, 17, 96,162, 11, 10,172,199, 22, 43, 60,185,152,
+164, 15, 96,186, 8, 50,199,236,203, 55, 42, 96,147,255, 89, 12,129,209,245,131, 70,251,142, 23,241, 84,248, 51, 41,148, 0,103,
+133,141, 30, 21, 72,227,156,147,124,241,224,165, 64,194,102,104,139, 49, 22, 62,178,116,252,125,135, 15,222, 57,194,201,163,239,
+ 32,178,203,211, 14,107,141,210,249, 40, 39,165,245, 62, 72, 4,108, 24, 80, 81,204,191, 15,142,153, 27,159,216, 26,182, 16,249,
+149, 82, 42, 9,135, 50,234, 83, 71,182,170, 65, 5,115, 86,159,144,184,239, 69,108,152, 56,237, 70,133,111, 33, 93, 42,146,219,
+129, 1, 31,197, 19,207, 28,132,127,194, 34,130,230, 64,176,144,207,106, 76, 57,245,197,218,212, 32,157, 55, 26, 61, 46,153,188,
+ 10,204, 33, 84,209,131,108,196, 77,172,193,187, 8, 10,215, 99,209, 62,136,183, 46,218,161,215,104,197,234,166,129,253,225,119,
+191,253,201,110,183,131,151,231, 50, 98, 50,117, 63,109, 10,177,220,216,189,206,169,219, 5, 72,166, 40,154,243, 83,150, 38,118,
+182, 50, 16,133, 11,198, 4,141,251,105,154, 49,187, 73, 4, 24,181,166,175, 49,211,228,113, 77,187,242,114,220,122,224, 1,209,
+124, 23, 65, 7, 95,175, 49, 45, 46,229, 18,149, 83, 12, 20,244,170,116,147,164, 61,214,184,209,145, 78, 44, 16,168, 19,238,252,
+140,153, 86,254,252, 98, 24,208,245, 62, 63,206, 4,142, 65, 25,157, 90, 16,161, 18, 34,177,188,160,196, 82, 26,166,191,105,204,
+228, 59, 78, 49,182,169,147,209, 53, 1, 48,141, 64,159,170,226,229, 22, 92,134,210,150,209, 60, 37,220,157,246,124, 12,211,139,
+199, 52,189,128,114,225, 32,250,102, 5,125, 18,159,154,133, 80,105, 76,153, 68, 55,251,120,166, 24, 60,142, 78, 78,241,251, 63,
+254, 49,214,183,215,168,106, 39,234,228,221, 46,127, 85,163,220,125,175,163,226, 68, 98,180,214,101, 94,122,122, 61,141, 25,113,
+164, 41,122, 51, 93,245,198,228, 49,206, 69, 90,162, 38,245,242,165, 5,201, 90, 11,231, 42,244,126,200,170,109,142, 81,161, 40,
+210,161,213,206, 98,181, 88, 72, 17, 36, 30,149,238,214,226,104,181, 66, 8, 1, 95,254,250, 75,124,245,245,111,224,156,195,175,
+127,253, 5, 62,254,248, 99,124,252,241, 71,120,250,244,153, 38,153, 1,215, 55,183, 0, 51,134,190, 47,132, 98,162, 52,238,135,
+160,194, 62, 30,109, 69,106, 93,243, 33,228,247, 50,145,136,184, 72,253,207,206, 85,112,213, 24,129,105,173,174, 7,212,137,113,
+239,228, 84,119,172,102,244,179, 83, 17,202,146, 81,148, 66, 45, 19, 22, 60,114, 81,103,176,210,214,204,104,169, 76,142, 16, 91,
+174, 57,180, 40,149,232,227,200,136, 28,240,224,222, 41,222,122,235,237,236,103,135,218, 81, 57, 57, 87, 64,104,154, 74, 81,187,
+ 50, 45,177,206,229,207,125,250,122,125, 63, 8,187,194, 73,232, 78,136, 17,109,215,102, 10, 98,229, 28,152, 8,207, 95, 92,224,
+217,147,199,146,232,215,118,216,181, 59,133,218, 36,182,188,138,115,131, 62, 55,157,106,144, 17,113, 86, 93, 87,178,110,208,247,
+116, 90, 47,164, 28,120,147,113,173, 50, 1,138, 24,121, 16,253, 32,100, 65,171,174, 8,161,252,197, 12,232,129,126,222,140,146,
+224,146, 24, 55, 69,241,198, 40, 23, 87,249,218,138, 31,214, 49,171, 96, 96, 35,190,125,194,248,206,247,191,143,117, 56, 70,232,
+182,104, 42, 3,227,170,252, 49, 79,159, 11,144,193, 16, 34,124,223,195, 65,210,210,146,133, 53,198,152, 79, 27, 82, 33,114,178,
+246,153,164,229,144,226,164,151,231, 8,107,100, 13, 51,198,170, 22,172,172, 68, 3,213, 46,158, 73, 80,183, 28, 2,162,126, 14,
+ 29,123,212, 21,193, 85, 53, 34, 89, 16, 71,229,188, 75,113,246, 81, 86, 77,172, 14, 1,171,128,249, 17,142,165, 54,233, 68, 97,
+ 76, 83,110, 50,185,104,147, 98,111, 29, 9,144,173,107,107,152,110, 13, 80, 11,164,168,216, 61,245, 27, 21,103,226,171,233,152,
+117,211,192,254,224,195,111,127,178,109,187,140,100, 77,251,228, 28,146,162,221,244, 4, 6, 67, 99,161, 52, 7, 40,113, 80, 66,
+220, 40,254, 42,139, 44,205,132, 96, 4, 62,192,192, 37,226,252, 1,203, 4, 59, 50,217,110, 23,138,174, 63,210, 56,142, 79,104,
+219,146, 94,134,217, 1, 63,223, 89,148,207,141,137,246,109, 5, 49,102,193,222,161,162, 61,118,158, 52, 25,171,199,226,235, 65,
+ 69,136,169, 27,159, 20,170,194,170, 54,238, 8,184,136, 17,229,105,108,109, 18,183,204, 46, 22,102, 6,169, 65, 17,163,154, 51,
+210,105, 10,160, 65,225, 47, 79,135, 84,178, 7, 38,111,110,178,135, 16, 29,186, 73,210, 4, 52,103, 32,161, 31,163,235,191, 8,
+113,201, 79,215,236, 91, 53,230,230,123,154,184,242,127,107, 17, 92, 94,255, 68,202,227,194,148, 30,150, 53,121,250,119,234,186,
+198,179,103,207,241,224,237,183,240,232,157,135,184,188,188, 66,223, 15,185,200,164,215, 63, 68,225,167,203,207, 51,141,103, 25,
+ 41,220, 41, 97, 84,173,118,114, 2, 94, 25,237, 94, 2, 20, 75,249,224, 81,167, 37,200,214,189,244,103,141,218, 46,125,140,136,
+ 33, 96,177,168,115, 7,182,108, 22, 0, 8,203,166,193,201,209, 42, 43,206,147,250,124,209, 44,176, 90, 44,241,228,201, 83,124,
+250,233, 63,225,252,252, 2, 85, 37, 89,229,183,183,183,136, 96,252,236,167, 63,197,197,229, 5,150,139, 5,124, 8,216,110, 55,
+ 98,249, 34,131,170,150,212,173,160, 42,239, 16, 56,171,193,211, 4, 35, 70, 85,168, 71, 30,179, 10,204, 8, 34, 50,214,161,170,
+180, 24, 26,147,197, 89,204, 64,219,118,168,235, 6, 39,167,167,154, 55, 79,168,106, 89, 86,249,193,143,222,106, 37,215, 25, 99,
+ 51,186,149, 11, 78,127, 10,117,241, 33,228,130, 81, 57,245,144,235,165, 40,132, 0,103,157,118,214,163, 68, 55, 4,143,163, 69,
+131,119, 30,189, 11,167,124,119,176,236,194,229,241, 84,185,192, 49, 51,200,136, 56, 14,196, 99,194, 28, 71, 52, 77,131, 33, 4,
+ 56, 67,162,190,215, 11, 4,171,136, 85,148,240, 14,117,211,224,226,106,141,167, 79,206,228,178,222, 13,216,110,182, 18, 25, 12,
+228,139,192,174,109,213,211,110,199,144, 30, 61,145,132,159,239,114,166,124,140, 44, 80, 29, 45,232,210, 8, 72, 34,156,161, 17,
+ 1,156,254,172,172, 61, 68,179, 96,236, 72,189, 35, 45,122, 34, 88,164,113, 10,163, 34, 53,235,180, 19,207,194, 65,217, 72, 27,
+107, 49, 4,128,195,128, 0,131, 69,232,241,131,239, 61,130,185,255, 59,224, 48,192, 89,163,143,207,141,218, 28,197,188,230,168,
+ 94, 93,101, 64,149,255, 33,217,231,242,244, 65,206,187,236, 43, 39,100,247, 4,107,202, 90,210,254, 24, 75, 0,217,113, 66,152,
+ 47, 0, 82, 88, 83,188,179, 64, 16, 89,199,229, 50,173,113,214,128, 92, 5, 34,167,150, 58,155, 67,147,210,202, 85,208,178,137,
+ 62,202, 57, 56,136, 53,236,101, 68,196,218,108,129,131,254,252,146, 88, 59,128,224, 36, 56, 5, 55,112,192,142, 65,225,102,175,
+ 91,159, 29,155,175, 60,231,120, 50,126,255,232,253, 79, 98,191, 3, 5,198, 16, 69,251, 16,139, 93, 51, 83, 42,171, 69,131,155,
+ 9,107,200, 15, 50,168,173, 45,145,215, 66,138, 73,197,200,247,166,130,110,206,227,145,127,248,232, 38,236,237,181, 13, 24,158,
+ 89, 84,136,115, 85, 58, 70,165, 54, 97,196, 54, 78,109,249, 56,176, 43,159,142,233,231,251,247,108, 3,114,137,135, 62, 21, 0,
+210, 29, 42,175, 50,223, 60, 70,121,204,245,234, 8, 75, 39,183,111,214,152, 88,162,162,178,104, 7, 45,216,202, 26,149,179,224,
+ 16, 38,187,237, 67,223,211,204, 47, 43,119,220,226,178, 11, 1,211,120, 85, 20, 0,159, 84, 80, 99, 12,104,150,199,120,112,239,
+ 24, 93,183,203, 42,232,201, 37,166,176,254,161,200,107, 79,157,250, 4,197, 88, 78,142,104,140, 63,228,189,185, 8, 21, 59,239,
+153,149,227, 27, 97,226,120, 70,140,159, 78, 35,242,106,181,120,222,198, 24,236,182, 91,180,125,143,143, 62,250, 33,206, 95,190,
+148,240, 19, 43, 59, 71, 81, 16, 71, 57,216, 66,208,116,180, 49,133, 76, 26, 9,233,148,196, 70,166, 64, 26,197,130, 74,113, 25,
+125,214, 41,184, 37,195, 95,244,235,153, 12,244, 49,186,203,149, 61,179,236,230, 61,150,139, 26,239,188,253, 16,117,213,224,248,
+248, 72,139,153,193,241,241, 9, 42,215, 32,132,128,151,231, 23,248,226,139, 95,225,235,223,252, 6,204,140,166,105,242,207,175,
+105, 26,124,245,229, 87,248,248,227,143,241,253,239,127, 15,231, 23, 23,216,108, 91,236,118, 59,132, 65, 20,205, 94,189,219,204,
+140,174, 27,198,168, 74, 30, 69,179,105,237,144,108,177,214,164, 93, 52, 9,222,212, 90,133,194, 32, 59, 41, 4,225, 42,157,253,
+162,105,176, 92,173,242,215, 0, 1,237,174, 67,223,247, 35,226,152, 8,117, 93,107,122, 91,200, 60, 0, 31, 98, 46,252,203,101,
+163,143,103,204, 79, 63, 62, 57, 22,238,121,240, 57,196,196, 58, 81,223,123, 21,157,173,150, 13, 30, 61,122, 23,117,179,144,239,
+153, 82,208, 52, 41,175,174, 42,177,207,153, 4,193,161, 92,208,170,170,150, 66, 93,215,242,254,240, 1,149,179, 2,156,113, 21,
+130,151,238, 55,189, 6, 33, 70,220,108, 90,156,157,157,161,107, 55,136, 76,216,172,183,232,123,181,188, 57, 89, 11, 13,126,208,
+203,209, 88,208, 73,185, 5,149,118,235,222,123, 41,206,214,101, 26,104,140, 80, 70,190, 70, 67,171,243, 33,229,173, 3, 80, 26,
+158,201, 29,182,212,189,244,190, 78,116, 42,233,220,155,202,130,108,149, 47, 6,253, 16, 53,129, 77,102,116,206, 57, 12,145, 4,
+255,170,251,237,205,182,199,135,247, 34,190,243,195, 31, 97, 27, 86, 48, 60,128,172,205, 98, 60,210,105,140,213,130,217,123, 15,
+ 63,200,103,137,181, 51,103, 0,150, 99,158,178,100, 93,142,186, 17,210, 68,216, 41,184, 38, 97,141, 83, 1, 54, 36, 96,105,147,
+132,116,101,195,165,130, 55, 41,230, 58, 73,211,169,198, 88,244,141,138,221, 36,202, 59,120,192,178,207,188,127,102,171, 58,130,
+168,162, 87,210,177,167,153, 64,210,114,104, 23,153,188, 71, 43,211, 82, 12,128,218, 0, 27,107,208,181, 13, 76,119, 11,160,149,
+ 11,201, 1,198,251,152,247, 78,119,175,221,115,167,254,189,247, 62,105,119, 59,120, 15,248, 72, 89, 29, 93,104,193, 11, 36,169,
+116,197, 17, 81,163, 88,105, 34,236,154, 8,165,114,193, 54,217, 62,149, 70,182,135,250,169,233, 80,158,198,203, 3, 21, 72,216,
+ 50, 0, 4,227, 52,130,138,107, 66,218,235,154, 98, 60, 61,191,132,148, 99,110,194, 24, 58, 79,134,166, 65, 39,204,136,118,137,
+247,191,251, 22,190,119, 60,224,242,218,163,213,219,183,201,249,233, 99, 54,188,220, 42,121, 82,244,152,185, 32,213,105, 14,242,
+172,240,150, 24,219,220,157, 42,125, 45,127,176,245,169, 24,152, 60, 11, 39, 20,130, 55,236,231,190, 83,145, 13,190,135, 99,161,
+ 98, 84, 95,216,248,178, 0,145, 25,182,106,208, 52, 53,186,221,174, 48,229,205,220, 0,196,147, 4,191, 50,201,109,122, 17, 68,
+238, 56,236,228, 79,207,102, 52,140,226,146,194,248,166,141, 58,239, 65, 28,238, 96, 52,148,118,186, 66, 8,218,212, 53,174,175,
+174, 64,182,194,189,147,227,124,216, 39, 8, 9,169,138, 56, 29, 2, 50,118,116,217,255,156, 94, 71,159,232, 99,250, 90, 52,218,
+ 37, 55, 77,147,119,202,101,119, 73,165, 16, 46, 65,140,116,204, 89, 87,149,216,188,218, 30,203,229, 18, 31,124,251, 3, 28, 47,
+ 79, 80,213, 53,150,203,165,134,162, 4, 92, 94, 93,225,241,227,199,248,250,241,215, 56, 59, 59,195,110,183,195, 98,177,152, 28,
+144,105,127,122,113,113,129,227,147, 19,252,242,151,191,196,147,167, 79,229, 61, 24, 36,254, 51,112,200, 20,192,228,165,119,137,
+208,166,147,130,168,136,100,214, 36,173,172, 10, 79,187,102,229,174,103, 32,141, 94,250,162, 62,103,107, 13, 22,141, 92, 74,172,
+218,220,218,110,192,110,187,131, 31,124, 86,175,167,241,101,223, 15, 69,222,188,201,147, 9,142, 17, 15, 31, 62,196,163,119,223,
+197,110,187,205,239, 95,185,224, 84,232,218, 86, 46, 80,172, 72, 82, 18, 65,222,209,209, 10, 15, 31, 62,132,117,181, 10,245, 56,
+ 95, 98,136,228,130, 69,186, 47, 79, 23,133,148, 23,146,198,248,201,125, 96,140, 81, 68,109,174, 66, 57, 68,197,135, 40, 9,139,
+ 12,156, 61,121,134,245,205,149,184, 28,218, 94, 47,203, 17,222,139, 90, 62, 40,175,222, 40,191,159,195, 56, 74,119,206,230,105,
+ 69,240, 1,181,115,112,117,157,133, 93,145, 49,134,236, 24, 41,160,145, 89,193, 58, 17,141,115,178,211, 13, 1,149, 53,128, 17,
+205,194, 92,228,154,208,176,129, 9, 62, 12,168, 45, 1,174, 66,223,247, 32,246, 34, 62, 83, 76,170, 73,226,104, 98,144,117,168,
+ 67,143, 63,252,225,123, 56,254,224,199, 8, 65,184,239, 60,244, 42,118, 29, 31, 19, 88, 68,120, 32, 73,140,244,253, 0, 40,108,
+ 11,154, 68,104,141, 92, 10, 73,145,189, 86,201,121, 70,133,151, 92,122,143,244,172, 77,151,206,160, 8, 87,185, 67,216,252,253,
+179, 93, 58, 71,134,143, 66,225,128,169,160, 55, 29, 61,145, 8,186, 80, 87,251,164,198,224,106,167,101, 68,137,171,157,122,194,
+ 37,171,160,147, 12, 98, 52,146,241, 94,128,111, 72,249, 44,142, 25, 48, 17,183,108,193, 91,200,110, 61,233, 1,104,127, 35, 73,
+ 51, 33,246,161,195,177,110, 26,216,239,190,255,238, 39,219, 93,151,237, 67, 83, 97, 85, 97,101, 43,160,176, 52,217,217, 23,204,
+245,226,247, 9, 73, 13, 46, 48, 25, 46,163, 53, 11, 34, 61,151, 93,241,100, 63,191,103,154,154,110,228, 39, 62, 88, 76,216,238,
+ 57, 42,117, 50, 1,160,201,250,182, 52,247, 27,140,167, 58,207, 66,102, 37, 91,208,227,226,182,199,214,235, 27, 11,211,194, 47,
+ 2, 28,228, 75,130,153, 96,116,139,175, 23, 67,206, 74, 38, 58,208, 90, 23, 17,128,164,225, 22, 92, 20,244, 88, 20, 35,115, 80,
+ 0, 64, 26, 85, 40,214,146,228, 58,160, 73, 90,218,212, 54, 88,190, 22, 92,136,213,140, 49, 8,125,135,245,102, 35,207,153,230,
+171,137, 84,132, 41, 63, 46, 83,248,227, 71,142, 57,101, 97, 26, 32,120,218,149,115, 66, 36,227,169,224, 37, 77, 29, 18,196,232,
+155, 55,231,252,141, 27,249,249,143,129,140,193,208,247,120,241,242, 5,254,236, 95,255, 57, 40, 6, 60,127,121,142,229,162, 17,
+166,249,224, 39, 63, 39,171,177,160, 81, 59, 10,103, 43,233,148, 98,212,145,107, 45, 7,190, 94,206,250,126,144,113,177, 15,197,
+103, 72,226, 44, 75,117,118,121,169, 78,156,241,163,163, 37,190,245,206, 35,244,221,128, 23,231, 47,112,113,117,129,199,143,127,
+131,199,143,207,240,245,111,190,198,151,191,254, 53, 94,158,191, 68,223,139,194,186,170,220,157,119,162,170,170,112,246,228, 9,
+254,217,239,254, 46, 30, 61,122,132,237,118,167,132,179, 46, 11,222, 98, 12, 32,155, 21, 39,153,195,158,132,191, 73, 93,206, 96,
+ 4,175,158,113,205, 15, 79, 48, 28,232, 1,205,202, 99, 72, 25,229,181,142,182,151,203, 21, 92, 37, 2,179,190,247,232,135, 62,
+159, 87,181, 19,150,121,219,182, 50,253, 83, 12,107, 82,113,203,215,169,209,182, 45,222,123,247, 17,222,126,231, 33,182,155, 45,
+188,218,246,170,170, 70,215,247, 66,161, 51,170,136,215,131,247,193,253, 7,104,154, 5,188,226, 72,211,167,122,212,112, 40, 40,
+ 71,149,218,204, 18,182,225,156,193,178, 89,160,170,107, 21, 57,134,188,254, 10, 44, 91,213, 16, 82,238,123, 58,123, 13, 94,188,
+188,192,237,245, 69, 70,243,238,118,180,230,206, 30, 0, 0, 32, 0, 73, 68, 65, 84, 91,116,125, 39, 2, 67, 93, 57, 24,221,215,
+ 15, 94,187, 98, 5,248, 72,113, 83,123,163,226,110, 89,119,224,206, 90,120,213,108, 4, 93, 79,164,194,153, 44,134,206, 24, 56,
+221,105,231,200,213, 20,154,197,227, 41, 89,142,199, 89, 85,229, 1,164, 98, 49,104,212,168,236,150, 17,101,165, 17,137,224, 7,
+143,221,192,248,254,169,199,239,255,241, 31,226, 50,190,139,184,187,202,130, 73,161, 0, 90, 52,181, 3,155, 90,232,118,193,139,
+ 19, 2,132, 62, 50,250,174, 3,216,103,113,101,140,177,176, 5,171,248, 77,227, 76, 67,148, 92,116,167,130, 55, 48, 10,171,174,
+ 76, 15,160,140,147, 4,119, 74,157,246, 56,193,165,189,220,137,212,129,167, 38,208, 26,100,155, 27,148, 49,159, 25,250,100, 18,
+228, 92,215, 77,186,215, 71, 66,242,106,140, 43,243, 56, 53, 32,154,226,180, 97,176, 32,198,174, 98,236,252, 10,118,183, 3,176,
+ 41,214, 7, 51, 77, 89,174,176,179,110,105, 94,212, 63,254,240,189, 79,252, 78,109, 57, 17, 25, 5,155,159, 2,149, 35,114,202,
+225, 43, 37,124,102,202, 61,195,164,179,231, 98,177, 57, 1,180,240,254,152,122,238,253,158, 23, 60,115, 80,232, 70, 19, 33,222,
+ 92, 15,199, 84,142,129,105,236,238, 11,173,192, 33,101, 95,242,155, 19, 7,236,182, 29,122, 79,147,160,137,169,251,106,220,227,
+147,138,169,202, 43,133,153,136,200,166, 99,103,154, 93, 98, 70,145,156, 16,161,132,229,206, 88, 53, 13,222,105,128,245,118, 64,
+ 79, 22,149, 98,248, 74, 97, 98,238,108,116,142,111,211,184,176, 88, 51,240,196, 35, 78,123, 58,181,209,159, 78,147, 24, 81, 20,
+130,160,148,126, 84,174, 55, 50,158,150,202,233,205, 56, 63, 73, 31,154,123,171, 26,141, 51, 88,247,195,196,250,145, 57, 5, 69,
+186,219, 92, 72,255, 63, 83,196,239,218, 71,209,252,146, 2,224,118,125,139, 95,252,243,255, 5,127,253,111,255, 79, 12,125,139,
+203,243,115, 21, 46, 69, 25, 23, 70,197,240,216, 36,123, 35, 13,182, 25,253, 14,199,203,149, 16,197,124, 64, 93, 47,240,193,239,
+252, 14,214,235, 13, 54,235,141,116,229,160, 76, 67, 19, 44,178,116, 32, 94,173, 98,229,244, 43,132,128,197, 98,129,190,107,241,
+233,167,255,128,207,126,245, 25,206,206, 30,227,217,179,167,120,241,226, 5,174,148, 72,102,173,140,104,147, 39,253, 85,255, 56,
+231,240,252,217, 51,156,158,158,226,103, 63,251, 25,206, 47, 46,224, 67, 64,215,118,185, 99,245, 65,198,221, 4,202,161, 38,208,
+206, 89,198,234, 49,167,170,177,170,217,131, 90,254,100,114,193, 89,140,101, 20,249, 9, 0,139, 69,147,139,127, 85, 55,224, 8,
+ 12, 67,175, 32,149,168, 5,133, 80,213,117,166,185,205,245, 28, 49,198,236, 21, 31,134, 14, 85,229,240,214, 91,111, 35, 50,227,
+242,242, 18,214, 24, 44,151, 71,104, 59, 65,176, 26, 69,214,246,253, 0, 75,132,123,247, 78, 97, 93, 53, 17,220, 85,206,161,169,
+155, 17,117,171, 72, 86, 67,163, 74, 62,179, 3, 84,236, 23,131,232, 29,162,138,210,210, 37,217, 24, 89,213,112,100,172, 55, 91,
+ 92, 92,188,132, 31, 68,135,177,217,110,176, 89,175, 69,216,168, 4,193,152,130,125, 84,140, 69,202,179,151, 68,187,209, 14,104,
+ 73, 50,223,163,194,136,172,115, 74,145,243,217,251,159,198,192, 73,113, 94,185,106, 20, 6,234,206,218, 96,164, 16,166,194,103,
+ 53,131, 30,156,146,244, 42, 97,105,244, 61, 42, 43, 4,186, 33, 8,213,173,170, 42,101, 37, 72,154, 36,175,111,241,111,255,244,
+ 67,188,253,179,191,194,213,249, 22, 28, 90,117, 15, 0,150, 56,239,213,201,138, 69, 82, 86, 13, 17,125, 47,249,244,193, 75, 55,
+155, 94,219,108, 89, 43, 29, 84,164, 49,234, 49,192, 17,103,107,153, 36,182, 26, 24,102,181,203,141,159,195,180, 18, 19,100,191,
+104, 67, 4,176,147, 46, 49,233,194,202,227,191,147, 78,204, 97, 96, 89, 29, 46, 25,233,149,206,120, 40, 72, 73,118,233, 86,125,
+190, 76,102, 79, 60,110,213, 51, 28, 52,135, 93, 64, 58, 18, 85,236, 0,212, 21,112,109, 45,226,182,134,233,175, 0, 19,114, 59,
+ 77,123,123,213,195,217,147,229, 78,221,128,229,141,197, 81,198, 22,101, 66,151, 41,172, 94, 54, 11, 76,228,255, 66,177,151,205,
+114, 56, 30,115,217, 57,129,237,245,215,163, 90, 66,210,173,138,105,236,212, 51, 72,134, 49, 41, 7,163, 26,155, 51,225,141,247,
+204,111,242,119, 75, 38, 73, 30,247, 78,110,172, 40, 40, 73, 52,107,217, 34,166,172,255, 41,181,220, 57, 43,129, 6, 24, 71,250,
+ 49,197,253, 65,173, 14, 69, 27, 29, 98, 1, 92,209,103,232,136, 38,132,184,220,164, 22,143,111, 14,229, 41,127,189,243, 17,205,
+189, 7,248,243, 31, 62,196,135,117,196, 16,199,159,197, 56, 70, 31,109, 90,172,135, 43, 21, 76,120,230,189,193,255,228,215,169,
+ 16,227, 69,245,105,150, 69,219, 20,107,140, 81,111, 80, 76, 80,162,124,128,198,232,220, 56, 37, 30, 17,112,211, 14,120,185,235,
+116,108,151,104,123,197,197,100, 34,192,163, 55,194,190,126,163,110,126,246,120,120,118, 19,140,202, 57,255,131, 63,250, 41, 24,
+ 1, 67,136,248,240,187, 31, 98,181, 92,232,206, 53,161, 77,197, 54, 36,111, 31, 17,151,133, 65,210,177,150, 77, 35, 49,172,195,
+ 0,103,101,207,250,224,193, 3,172,150, 75, 84,174,130, 81, 84,171,192,100, 52,212, 69,111,200, 41, 78, 23,122,227, 39, 2,234,
+ 90,148,238, 95,127,245, 37, 46, 46, 47,228,253, 84, 85, 50,126, 95,173,176, 90, 45, 81, 87,181, 94, 22, 14, 94,224,247, 94,131,
+200,140,211,211, 83,252,237,223,254, 71, 60,121,242, 20,167, 39, 39,194, 44, 95, 46,199,132, 43,146,244, 46, 34, 66, 83,215,112,
+214,162,118,149,140,135,131,138, 48,245, 61, 96,157,201, 84, 48, 82, 29,137,209,142, 35, 77,149,156,211, 49,181, 42,153, 99,136,
+ 8,195,160,182, 53,131,166,169,212,246, 22, 81, 87, 82,172,250,190,207, 98, 47,233, 38, 45, 66,128,174, 68, 6,116,125, 11, 87,
+ 85,120,250,236, 57, 94, 60,147,231, 97, 93, 5, 63,120, 84,170,186, 39,189,108,183,109, 11, 63, 12, 56, 61, 61,197,114,185,202,
+147,190,160,250, 8,209, 29, 72,129,181,214,228,132,185, 92,208,141,209, 57, 92,145,152,167,185,234,139, 69, 35,160,167, 68,175,
+179,226,156,120,121,126,142,243,139,151,224, 24, 17, 3, 99,189,222,160,221,181,217,138, 33,218, 3, 41,188, 49, 74,199,157,184,
+ 7, 86,191, 14,212,105, 96, 85,232, 39, 41,117,210,189,247,195,128, 24,124,190, 92,101,138,136, 10,191, 92,186,104, 40,174, 55,
+198, 40,205,130,118,254, 38, 91,196, 8,195, 16, 68,221, 93, 10,120,180,115, 77,231, 1,179,124, 6,162, 6,239,196,200,168, 12,
+176, 51, 53, 62,255,242, 57,222,174, 90,156, 60,124, 23,171,229, 18,117,179,204,235, 9, 9, 5, 18,134, 64, 85, 57, 84, 85, 45,
+112, 36, 87,105, 98,157, 60,198,196,242, 96,221,149, 39, 46, 0,200,194, 48,163,118,162,254,183,174, 82, 74,161,145,226, 78, 70,
+ 66, 94,162,226, 96,213,230,150,190,174,252,204,228, 61,227,253,128, 97,144,255,207, 33,228, 56,172,145, 40, 74, 40, 37,224,150,
+ 25,100,129,160,133, 61, 17,248,196,178,110, 36, 7,158, 40, 79,178, 99, 36, 61, 7, 99, 14, 1, 83,225,190,252,122,140,224, 40,
+213,177, 7,227, 36, 50,190,117, 52, 32, 62, 60, 5,187,111, 1,202,241,159,186,141, 74,187,122,185,112,222, 95, 97,218,143, 62,
+120,244, 73,219,246, 26,238, 62, 85,110,231, 81, 5,141, 9,100,249, 38, 88, 40,166,115, 98,217, 12, 44, 66,121,202,110,114, 55,
+ 59,170,202, 11, 88, 75,142,191, 27,191,222,252, 72,231,188,213,165,220,214,210,161,254,139,166,192, 26,148, 95, 51,217,206,138,
+221, 59, 21,126,114, 46,176,151, 35,204,101, 28,153,152, 2, 39, 59, 23,120,165, 28,246, 44,112, 47,125,246,197,154, 32,150, 5,
+ 17,251, 32,154,185,186, 0,218,197,193, 15,120,186,141,120,240,238, 67,188,111, 7,156, 93,247,136,134,198, 61, 79,138, 94, 77,
+136,199,226,199,109,104,188,208,164,131, 31,188,223,204,149,141,111,220, 19,150,241, 68,149,110,148, 67,205,204, 51,207, 34,239,
+ 91, 49,168, 24, 35,235, 3,181,233,185,143,116,211,145, 59, 95,168,245,233, 64,103, 78,133,107,225,183,233,208, 25,251,237,121,
+ 97,142,132, 31, 6,184,122,129, 15,191,251, 1, 46,206, 95,162,221,117, 24,186, 94, 14,127, 75,153,236,101,117, 44,235,156,168,
+188, 23, 77,131,251,167,167,104,154, 5,172,115, 56, 90, 30,163,174,107, 92, 92,156,227,243,207, 63, 7, 25,139,147, 19,217,245,
+ 74, 7,172, 57,213,137,133, 80, 36,146,161, 32,234,221,191,127, 15, 79, 30, 63,198,197,197, 57, 22,203,101, 97,151,161,131, 43,
+132, 3, 32,196,131, 63,232,186,174,241,244,217, 51,156,156,156,224,167, 63,253, 41, 46, 46, 46, 48,120,143,174,109, 51,235, 61,
+ 12, 62,195,113, 36,170, 84,214, 59,233,194, 40, 54,187,196,100,183,234, 4, 8,153, 15,144,130, 62,210,220, 74,132,110,234,133,
+143,210,133, 47, 20,235,202, 42, 96, 18, 63,184,193,118,215, 98, 24,134, 60, 65, 52,198,168,138, 48,230, 46, 76,154, 45, 1,242,
+ 28, 31, 31, 97,177, 88,225,242,242, 18, 28, 2,222,126,248, 80, 64, 53,195,144, 29, 9,149,179,120,247,209, 35, 24, 87,101,208,
+ 13, 16, 81,171, 90, 62,120,143,202, 90,216,202,193,185, 74,133,143,178,174,144,253, 54,229, 34,156,206,143,168, 63,199,202, 90,
+ 44, 22, 13,250, 65,244, 13,235,245, 45,182,155, 53, 56, 68,116, 93,143,118,215, 98,232,123,244,106, 25, 20, 75,163,215,159, 59,
+101,129, 42, 25, 73,235,171,170,106,252, 92, 20, 92,131,168, 41,140, 81,161, 70, 66,193,139, 89, 76,149,200,125,181, 90,210,210,
+123, 43,209, 41,229, 82, 89,103,151, 69,106,206, 18,232,165,170,172,218,188, 66, 46,240, 50, 25, 16,133,191,177,138,134,101, 41,
+112,141, 51,184,140, 75,252, 95,255,247,127,198,207, 79,191,192, 15,254,229, 95,225,236,197, 0, 12,235,252,253,173, 62, 39,107,
+ 45, 2, 8,125,239,181,176,122,112,240,242,190, 98,228,245,161,232,230, 66,102,123,152,116,214, 89, 43, 12,124,189,152, 68, 24,
+201, 88,143, 33,251,204, 13, 73,250, 36, 77, 38,126, 5,176,204,200, 90,208,112, 4, 25,206,153,236,105, 21, 86,164,100,143, 19,
+ 91, 77,126, 11, 62,141,254, 5,211,107, 72,109,136,170, 29, 51, 73,207,101, 83, 17, 48,197, 42,155, 51, 17,211,148, 75,237, 8,
+220,183, 17,155, 37, 97, 51,220,135,221,108,193,180, 6,200,225,208,230,124, 82,220,105, 90, 41,235,166,129,253,232,131,247, 62,
+105,219, 46,239, 89,162, 22, 97,194,116,228,205,197,205, 96, 20,249,171,226,124, 66,148, 75,246,179,217, 13, 99,182,195,205,246,
+177, 60, 6, 49, 25,106,147, 70,177,230,192,152,116,212,125, 77, 9,113,135, 11,123,153, 24, 54,238,248,137,203,206,144,112, 8,
+ 97, 71, 7,108,211, 76, 99, 23,105,246,198,253, 51,198, 60,149,195, 26, 73,113,195,172,152,242, 36,196,132, 50,171,120, 12, 92,
+ 25,181,219,100, 12, 92,232,240,213,243, 91, 60,235, 89,147,227,138,177,190,153,249,214, 81,224,124,179,247, 28,211, 60,244, 3,
+167, 62,207, 94, 67,158,173, 85,120,238, 6, 79, 99,167,242, 30, 69,229, 88,157, 75, 44,157, 90, 79,202,130, 74, 69,193, 30, 65,
+195, 68,251, 26,136,242,241,254,214,133,157, 15,116,178,179, 47, 81,213, 53,254,233,211, 79,113,239,254, 91,120,239,209, 59, 56,
+123,252, 24, 55,183,107, 4, 31,245,112,151,241,117, 26,141, 46,151, 75, 28,173,142,112,255,222, 61, 88,227,240,252,229, 57, 46,
+ 46, 47,240,228,201, 25,190,254,250,107, 60,125,122,134,203,203, 75, 92,223, 92, 97,125,123,171,168,214, 21,142, 79, 78,114, 39,
+ 35,234, 89, 17,161, 37,159,185, 15, 30, 15, 30, 60,192,250,246, 22,191,254,226,115, 81, 63, 31, 16,152,242,236, 57,241,107, 38,
+ 21,229,235, 73, 68, 56, 59, 59,195, 79,254,224, 39, 56, 61,189,135,245,237, 26, 93,215, 97,187,217,101, 47,189,215,189,177, 85,
+ 8, 78, 8, 60, 17, 87,102,111, 52, 9,155, 93, 50,227,171,252, 62, 49, 10, 77, 17,173,132, 40,179,155,166,134, 33,139,174,239,
+ 85,188, 87, 41, 41, 77, 69,132, 58,238,143, 57, 52, 38, 22, 4, 74,147,213,178, 98, 79,140, 88, 45, 23,120,248,246, 59, 88, 30,
+173,224,123,143,235,235, 43, 44, 22, 75, 56, 87, 97,187,221,228, 46,247,104,181,194,201,233,169,142,189, 37,216, 38,113,231,193,
+ 49,219,195,210,184,214, 25,131,229,114, 33,227,116,245,205,215,117,157, 47, 39, 94, 45,125,134, 8, 85,237, 64,214,225,246,118,
+141,205,250, 70,113,166,194,158,111,119, 45,186,174, 67,219,181,249, 12,141, 5,236, 41, 17,243,146,222,161,174, 68,209,111,245,
+ 34, 33,151,168,132, 5, 22, 65, 47, 89,139,182,109, 81, 17, 64,214, 21,150, 84,228, 51, 35,164,127, 79,184,104,157, 4,165, 44,
+ 8, 31,164,107,148, 11, 26,101, 97, 30,116, 21, 4, 30,225, 94,134,100,199, 92,146,238,140,124, 24,112,121,189,197,217,243,115,
+124,245, 63,254, 27,254,244,247, 79,193,239,255, 2, 23, 79,206,224,253,128, 48, 12,168,172, 0,134,172,147, 2,232, 67, 68, 63,
+ 12,232,219, 30, 28,125,158,250,164,139, 69, 30,143, 27, 41,218,150, 24,145,108,158, 4,230, 20, 63,140, 59,244,178,216,101, 27,
+118, 74,164, 75, 66, 54, 26,207,103,103,132, 14,215, 71, 11,242, 30,198, 4, 89, 41, 20,159,143,200,114,137,183,196,146,127, 96,
+ 44, 66, 36, 56, 30, 84,115, 96, 37,179,149,226, 24, 27,110,138,138,149,225, 91, 99,225, 53,137, 65,162,154, 36, 31, 35, 22,145,
+113,188, 8,184, 92, 44,224,119,247, 96,187, 11,192, 12,135,189,235,119,236, 18, 57, 89,218, 62,254,142,116,234,194, 22, 54, 89,
+169,109, 15,128, 99,198,226,158,240,144,200, 29, 57, 17,100,135,139,177, 35,223,223,114,239,119, 22,188, 71, 71,155,211,228,166,
+133,211, 96,127,247,125,216,155,108,102,221,252, 56,238, 55,101,193, 42,196,113,134,166,244,181, 82, 53,159, 71,209,229,136,179,
+ 36,168, 81, 17,186,146, 65, 39, 69, 97,167,241,135,121,104, 28, 60,119, 26, 36, 76,201,100,231, 77, 22, 21,105, 98, 86, 22,236,
+113,113, 33,160,187, 15,245,164,134,167,253,215, 20,119,188,134,165, 16,113,218,220,206, 74,251, 76, 0, 66,115,121,249,188,125,
+228, 41,204, 38,240, 24,172, 81,168,139,178,199, 84, 98, 55,189,142,225,254,231, 82, 93, 14, 50, 6,246, 8,116, 6, 28, 60, 30,
+159, 61,193,251,239,127,128,161,107,113,115,187,206, 42,228,170,170,224,156,195,201,241, 41,238,157,222, 7, 25,131,245,122,141,
+ 95,125,241, 43,252,227,103,159,226, 55,143,191,198,203,151, 47,177,190, 93,163, 31,122, 85,236, 18,250,190,199,237,205, 13,174,
+174, 46,113,125,125,133,205,102, 13,239, 61,154,102,129,163,163, 35,212, 85,149, 61,205, 33, 4,188,253,214, 67,196, 16,240,247,
+255,237,191,138, 93, 75,193, 45,119,188,164,175, 93, 85,228,108,233,114, 7, 87,215,120,254,252, 57, 42, 87,225, 23,191,248, 99,
+220,220, 92, 99,219,118, 66,249, 74,194,171,200, 25, 66,148, 14,122, 99,204, 4, 27,155, 56,240, 65,199,210, 85,218,157,234, 79,
+ 50, 38,233,120, 76, 99,103,171,138,104,185,188, 16, 24,139,102,153, 27,133,212, 89, 7, 31,180,139,147,199, 48, 38,196,141,151,
+122,163, 81,163,247, 31, 60,192,209,209, 49, 54,219, 45,174,174,175,209, 52, 53,234,166, 65,223,181,146, 83, 31, 34,222,126,235,
+ 45, 84,117,163,160, 21,202,251,227, 52,133, 73,157,110, 82,239, 75,132,171,207,206,132, 74, 59,248,182,235,213, 90, 38,151,176,
+197,114,137,110,240, 56,191,184, 64,183,219,138,170, 61, 4,244,131, 71,223,118,224, 24,208,123,143,161,235,100, 95,171, 22, 46,
+167,162, 81,202,113,194,128,171,172,194,101, 40,175,215,146, 37, 47,249,110,200, 24,108,187, 30,190,107, 81,215, 14,108,140,116,
+249, 90,192,157,142,133,131, 38,176, 37,178,161,129, 0, 95,192,162,151, 16,209,153,136, 23,173,181, 96, 45,244,178,115,183, 99,
+142,125,222, 87,139, 47,220, 25, 3,227, 44,106,103,176,141, 53,158,158,189,192, 49, 95,225,179,203, 10,246,201,255,135,191,248,
+139, 63,194,115,250, 62,186,203, 51, 17, 55, 18,195, 86, 14,149,181,112,117,141,129, 45,182,187, 30, 67,219, 34,248, 65, 35,168,
+ 35, 12,162,118,210, 35, 83, 35,241,240,145,186,221, 2, 62,147,166, 86, 57, 10,117,246, 57, 47,163,185,115, 5, 83,253,179, 64,
+101,204,204,211,142, 17,161,203,106, 49, 78,118, 93, 8,101,143,245, 23, 29, 49,162,177,242, 94,228,152, 59, 6, 78, 13, 43, 75,
+ 82,105, 18, 25,167,233, 64,106,132,136,108, 38,183,122, 38,220, 3, 16,151, 1,151,116, 15,102, 13,144, 63,215,204,245,195,164,
+ 57,204,206,113, 2,161,110,106,216,239,255,206,123,159,244,125,151, 43, 89,220,235,216,104,106,153,202, 47, 38,166,171,252,162,
+ 32,206,121, 34, 49,117,191,137, 81, 78,243,146, 70, 25, 92, 66, 76, 51,112, 78, 25,158, 50, 21,167,149, 35,115, 58, 48,158, 40,
+111, 71,115, 93, 29, 31, 16,212,101,156,239,228,210, 48,178,123,161,222,233,189, 66, 72, 83,126, 90,121, 25,224,226,208,141,152,
+118,154, 57,169,171,124, 9,179, 16,113, 58, 77,200, 25,247,102,170,218,132,250,194, 99, 10, 46,160,114,130,193,121,108, 57,102,
+169, 76, 87, 23, 60, 7,237,188,170, 32,100,155, 96,122,172, 60, 25,217,115,225, 9, 21,111,246,172,115,207,211, 23,154,236,118,
+ 99,241, 34, 81,129,127, 99,136,247,246,232,232, 8,167,199, 75,236,218, 54, 79, 89,190,105, 37,231,153,240,110, 42,173, 24,227,
+118, 81, 8, 78,174,174, 46,240,242,252, 28, 15,223,121, 7,171,213, 10,141, 90,210, 22,205, 18,139,197, 10,109,215,225,203,175,
+191,196, 23,191,254, 2, 95,126,245,107,156,159,159,195,251, 1, 85, 85,161,114,149,238, 16, 93,254,102, 54,239, 21, 29,134,161,
+199,245,213, 37,174, 46, 47,112,117,117,137,205,118,141,200,140,197,114,129,193,139,192,104,232, 7,252,253,223,255, 29,118,187,
+ 29, 26,221,211,223,117, 75,161,195,176,196,189,139, 29, 31,128, 86, 84, 85,133,175,190,252, 18,223,251,222,247,240,240,157,183,
+113,123,115,139,147,211, 19,236,218, 29,118,219,118, 42,197,225, 4, 37, 25,217,254,162, 45, 24, 25,226,105, 58, 99,173,145,223,
+ 75, 22, 32, 34,217,197,107,224,139, 85, 79,120,210,130, 84,206,201, 72, 53,141,215, 99,196,208, 15,136, 16, 59, 90, 2, 46,121,
+ 29, 11,167,253,103, 93, 87, 88, 52, 11,180, 93,143,155,219, 13,110,110,175, 17,125, 68, 83, 85, 56, 58, 90,161,109, 59, 12,195,
+128,229,162,198,131,183,222, 82,107,149, 28,182,203,229, 2,198, 90,205,165, 39, 29,229,106, 22,189, 53, 25, 38,100,117,119, 30,
+ 89,210,239, 56,178,160,121, 23, 13,108, 85, 97,189,217,225,226,229, 57,118,187,141,162,108, 69,144,182, 85,239,191, 15, 94,113,
+169,234, 80, 81,119,132,100, 8, 4,248,224, 37, 98,182,146, 93,177,177, 14,121,239,160, 59,253,116, 86, 88, 50,104,135,128,118,
+187,133,115, 40,210,199, 88,199,236, 81, 50, 0, 34,192, 44, 74,124, 9, 96, 11,121,186, 98, 72,126,238,233,140,119, 86,168,111,
+109,231, 1,237,156,141,138, 8, 99, 26, 74, 27,165,172, 89, 3,102,217, 87, 55, 77,131,103,235,136,203, 39,191, 65,197, 45,234,
+163, 35,252,221,175,174,240,227,227,167,248,221,127,249,151,120,252, 50,194,244, 55, 42, 48, 52,168,107, 11,114, 53,250, 8,220,
+110, 58,180,155, 53, 98,232,229,185,234, 10, 32, 42, 16, 39, 17,253, 28, 1,209,168, 25, 95, 71,231, 73,153,110,212, 93, 65,214,
+192,144, 69,229,128, 64, 85,206, 79, 15, 0,140,134,221, 8,102, 86,186, 99, 67, 12, 38, 39,197, 73, 47,139,148,237,165,197, 10,
+152,120, 2,255, 33, 22, 87,192, 0, 11,246, 12, 75, 30,100, 92,138,186, 43, 34,183, 49,186,192, 76,154, 24,152, 49, 1,115, 90,
+ 64, 16,212,206,123, 68, 17,183, 53,163,237, 78, 97,183,183, 32,218, 74,230,250, 29, 57,171, 60,171,184, 82,212, 63,120,244, 73,
+183,235, 17, 2,193,207,207, 10,125,112, 86,187,112, 20,105, 93,169,139,179,197, 8,112,204, 77,199, 4, 13,202,123,244, 48, 2,
+221,161, 67,102,226,189, 96, 23, 46,130,101,128,105,183, 61,245,157, 23, 32,253,194, 76,198, 52,159, 14,148,154, 1,168,223,190,
+188,109, 76,247,239,156, 85,145, 52, 27, 73,207,208,178, 5,252,166,124,158,165,112, 49,149,215,136, 41,247,158,230,221,242,100,
+133, 64,147,113,189, 49, 52,129, 42, 16, 97,162,122,205,136,213, 50, 52,133, 74,244,207,184,235, 63,188,175, 17,244,235, 62, 73,
+117, 54,137, 56, 48, 23, 32, 46,231, 14, 52,209, 28, 48,128, 74,215, 4, 67,142,104,228,233,243,167,105, 51,190,107,183,248,238,
+199,191,135, 31,125,252, 61,124,245,197,231,136, 48,121,207,246,141,148,113, 37,168,175,116, 85,206, 49,189, 52, 18,209,154,197,
+ 2, 23, 23, 23, 56,123,114,134,237, 86, 60,197, 12,194,245,205, 53,126,245,197,231,248,244,179, 79,113,246,228, 12,187,118, 7,
+107,173,142,101,221,204, 66, 74, 88, 45,151, 96, 78,153,228, 35,187,221, 85,149,168,151,135, 1, 55, 55,215,184,188, 56,199,203,
+231,207,113,126,113,142,171,139,115,124,253,245,175, 49, 12, 61,154,102,161, 54,179, 3,245,156,238,240,224,191, 18,198, 51,253,
+236, 56,231,112,123,123,139,203,171,107,252,244,143,126, 10, 70,196,197,197, 21,174,174,174,115,129, 45,111,236, 82, 36, 66, 46,
+234,172, 1, 50, 41, 17,142,149,166,231,156,205, 23,189,100,107, 74,244, 61, 73, 60, 83, 56,139,118,132,131,151, 76,244,190,151,
+160, 28,231, 36,138, 53, 79,141,162, 20,148, 52,146,119,149,131,181, 14,139,166, 70,179, 88, 96,187,221,224,246,230, 90,124,217,
+ 77,141,197,162,134,177, 78,237, 98,140,119, 30, 61, 66,211, 44, 68,245, 29, 34,156, 37,212, 77,131,200, 82,196, 83,104, 78, 83,
+139, 29,144, 33,221, 58,171,170,191,169, 43, 13,120,145,130, 44,159,127, 73,214, 59,127,121,142,190, 19,159,252,224,133,136,215,
+118, 3,118,187, 22,155,205, 6, 93, 43, 42,124,161,151, 89, 29,163,203,197, 36, 68, 81,129, 87,214,194, 85,117,126, 79, 86,117,
+149,181, 71, 80, 53,189,209,105,104,223,117,112,102,228,223, 15,131, 87, 49,171, 81,203,159,136,232, 42, 55, 10,254,132, 81, 31,
+ 51,229, 47,157, 25,253, 32, 59,121,137, 0, 15,250,117,144, 29, 3, 46, 77, 13,184, 8,140, 81,114,100,103, 44,206,158, 94,193,
+ 95,157,193, 84, 14,181, 33,172,177,196,111, 62,253, 20,255,230,143, 78,193,239,255, 9,118,231, 79,101,204,237, 25, 6, 30,206,
+ 89,248,104,176,222,118,216,221,222, 2,161,203,107,130,164,112, 79,246,214,228,136,177,202,133, 48,218, 62, 19,138, 96,158,204,
+ 52,129, 8, 45,141,203,232, 88, 73, 87,139, 57,228,199, 88, 97, 12, 68, 21, 28,178,170,208,193, 34,214, 19, 27,190,153,106,187,
+210, 42, 64,250,110, 41,236, 36, 35,125, 10, 17,108,130, 8,249, 82,168, 19,132, 6,137,188, 10,136, 89,251, 65,229, 90, 86, 95,
+103,210, 61,191,103,194, 42, 2,166,242,184,180, 11, 96, 83, 1,195,121, 82,254,189,150, 52,151,199,239, 31,190,175, 66,185,172,
+ 36,151,234, 19,114, 20, 43,246,108,104,172,217,207,115,223,114,217, 1, 71,154,118,155,148,177,173,249, 86,144, 21,226, 37,201,
+141,139, 48, 24,162,185,254,111, 90, 96,112,240, 48,147,189,208,202, 24,221, 99,115,246, 74, 27,218, 31, 95,228,132,181,121,167,
+ 61, 43,178, 84,192,229,203,209,187, 33,236, 45,203, 71, 81, 93,122,189,104, 70, 85, 43, 58,195,244,186, 48, 50, 52, 71,185, 51,
+123,129, 52,121, 39,150,119, 92,242,198,136, 60,130,112, 38,126,247, 61,101, 36,237,101,173,240, 29,197,157,247,113, 53,123,251,
+109, 42, 43,203, 30, 62,103,204,134,159,112,248,213, 2, 99, 74,112, 78,202,226,158, 12,205,180,224, 88,135,237,118,141,103,207,
+ 94, 40,110,213,252, 86,222,181,156,207, 83,254,236,153, 95,123, 27,168,235, 10,193, 15,184,188,188,192,139,151, 47,240,236,249,
+ 83,156,233,142, 60,117,244, 9, 78, 50,231, 59,141,145,152, 70,242,166,231, 84,190, 98, 42,224, 84, 65, 27, 66,128,247,157, 88,
+175,140,116,110, 99, 97,221,239,206,185,216,218,188,234,170, 19,239,176,239,165,255, 94, 46, 22,248,234,171,175,176, 90, 29,225,
+ 71,191,251,187,248,205,111,126,131,174,107,197,167, 13,133,208, 36, 49,150, 94, 30,123,239,181, 64,139,136, 46,249,163, 67,244,
+ 57, 25, 46,125,179,209,126, 38,227,251,170,118,176,149, 8,174,146,173, 44,132,128, 24, 34,118,187, 29,162,247,114,225, 81, 59,
+155, 81, 49,218,200, 93,208, 12,244,202, 97,181, 90,230, 21,215,106,181, 68,229,244,215,136,176, 92, 72, 72,203,241,241, 49, 30,
+ 60,120, 27,149,106, 33, 98,100, 41,154, 44,157,115,229,170, 12, 2,114, 86,252,213,117, 37, 57,217,172, 22,189, 4,227, 49,102,
+244,236,251, 16,113,115,187, 70,187,219,192,105,122,155,209, 53,197,110,187, 85,113, 92,151, 95,155, 20,161,108, 84,184, 38, 99,
+127,163,231,182,157,164,167, 73,115,108,149,143, 16, 50, 69,174, 27, 2,250,110, 7,235, 52,129,204, 88,181, 92, 6, 56, 39, 42,
+254, 8,194, 16, 36,106,213, 24,151,133,124,100, 93, 86,214, 39, 65, 98,134,212,104,218,157, 53,132,186,114,136,144, 40, 90,103,
+ 77, 14,139, 16, 74,162,142,236,107,135,231,107,198,197,217, 99, 56, 94,131,140, 48, 26, 86,141,193,103,231, 6,139,151,255, 29,
+127,249,111,126,134,167,230, 35,220,188,124, 10,246, 59,201, 18, 48, 12, 15,131,237,182, 71,183,219, 33,248, 94,198,252,186,187,
+ 78,182, 55,155,222, 23, 76,224, 16, 36,153, 78,245, 73,206, 57, 4,205, 94,231, 48,102,199, 71, 38, 24, 30, 45,140,242, 53, 8,
+100,149, 64, 23,197,190, 22,201,140, 98, 63,196,209,174,104,198, 84, 66,168, 16, 16, 19, 22, 92, 90, 79, 51,200, 18, 2,156,168,
+227, 13,139, 51,162,208,100,165, 17, 63, 67,125,231, 57, 61, 14,136, 52,238,226, 83,205, 11, 0,108, 36, 28,155,128,117,195,216,
+250,123,176,155, 29,192,215,210,173,191, 65,239,210, 52, 13,236,247,191,243,238, 39, 93,215,103, 43, 84,156, 65, 91, 70, 31,186,
+176,220, 83,231, 28, 39, 86,248,105,208,203,216,153, 77, 59, 74, 20, 7,124,185,119,165, 73, 87, 88,198,189,242,108,164, 95,182,
+220,251, 61, 38,113, 68,164, 10,182,169,241, 78,197,176,129,177,211,241,191,225, 3,157,103,121, 0,207,128, 55,115,138, 93,222,
+149, 20,177, 36, 68,227, 99,202,123,122,166, 61,223, 62, 21,161, 53,153,136,158,215, 21,163, 64,206,150, 99,106, 67, 96, 63,224,
+102,231, 1,107,225, 12,231,145, 99, 70, 13, 82,145,170, 87,118, 98, 51,120, 9,202,209,242, 29, 55,188,201,202, 64,213,181,116,
+ 64,136, 70, 7, 46, 81,147,159, 7, 79, 9,118, 84,116,255,156,184,231,179, 43, 39,179,140,210, 26, 37,100,241,108,191, 61,244,
+ 45,182,187,157, 38,132,189, 30, 64,179, 87, 56,203,194, 14,198,155,216,219, 75,143, 3,165,174, 90,173,108,194, 70,175,179,130,
+249,206, 79,152,126, 35,233,162, 14,139,250,120,166, 83, 48,218,121,101,175,249,161, 7, 59,139, 13, 40, 87, 55,135, 42, 59,243,
+158,188,113,255,103,169,168,204, 47,190,248, 2,239, 60,124,136,183, 30, 60, 64,187,219, 97,232, 7,108,183, 45,250,190,135,171,
+ 92, 38,167, 89, 43,123, 91,112,132,171, 4,139,218, 13, 67, 58, 89, 71,248, 16,148,144, 6,210, 48, 17,233,182,171,166,209,145,
+108, 58, 60,229,128,142,201,134,169, 90, 10,175, 93,111,242,246,167, 87,205, 26,139,229,106, 33, 86,190, 20,133,201,208,130,190,
+192,234,232, 8, 33, 4,156,158,156,224,189,111,189, 7,130,133,117,146, 10, 23, 52, 0,101,181, 58, 22,239,242,224, 51, 33, 46,
+241, 25,100,138,224,244, 34,170, 40,213, 8,141,208,149,167, 57,248,136,155,219, 27,180,219, 53,172, 49, 24,124,128,211,142,172,
+237,122,116,157, 48,220, 73,187,103, 99,109,158,100,132, 24,179, 56,204, 26, 81, 45,147,177,217, 94,103,157, 22, 44,253, 44,178,
+142,189, 35, 8,187,237, 14, 96,159,199,186, 34,162, 27,221, 19,164,186,128,168,161, 43,137,249,110,140, 67,215, 15, 32, 14,185,
+243,163,226,182,157, 38,116,198,169, 31, 29, 17, 62,138,101,215, 56,139,224, 25,150, 34,140,115,112,150,208,146,195,217,147, 43,
+132,235, 51, 21,192,141,205,139,107, 26,252,247,207, 94,224,151,239, 94,227,253, 95,252,111,120,124,182, 70,227,175,112,239,100,
+137, 88, 45,177,233, 60,182,187, 14, 67,187,131, 31,122, 85,192,143,173,132,108, 19,229, 2, 37,225, 43, 82,244,157, 33, 84,214,
+ 2,182,210, 4,180, 56, 70, 73,171, 13,212,232,174, 58, 87, 39, 29,169, 71,214,203,117,185,103, 87,134,125,101,160, 34, 56, 11,
+ 7, 47,151, 0,140, 43,193,241,223,185, 88, 41, 50, 6, 38, 80, 0, 44,121,192,184, 89,190, 8,171,103,222,142, 13, 78,126,150,
+ 74, 69, 84, 75, 53,145,252, 41, 79,192,146, 45,140, 11,184,178, 53,120,219,128,250, 11,192, 4,204, 72, 45,211, 72,214, 73, 81,
+255,224,209, 39,237,174, 67, 8,140,160,153,242, 49, 31,218, 38,123,137, 75,194,205, 40,100,155,229,110, 17, 77, 94,204, 88,140,
+ 48,144, 95, 92,158, 69,102,239, 87, 25, 42, 46, 12, 76, 37, 60,150, 39, 22, 53,204,119,237, 69,241,108, 3,163, 99,134,231,241,
+ 7, 64,124,184, 43,157,116,226,152,138,235,120, 2,211,225, 3, 99,119,141, 93,213, 52, 35,208, 1,158, 61,237,175, 29, 40, 79,
+ 8,244,141, 92, 8,251, 88,247,113,113,113,138, 63,252,240, 30, 92,183,198,197,160,190,200,153,167,186, 4,218,228, 97, 1,209,
+ 76,193,207, 7, 20,223, 84,164,200,141, 23, 56,128,116,135, 72, 89, 28,120,151, 43, 64,172,141, 69,118, 51,232, 96,241,153,171,
+237,185, 84,228,107,210, 23,145,240,208,197,115, 59, 45,204,148,138,220, 27,252, 35,127,142, 15, 22,182,132, 24, 77, 32,142,187,
+ 60, 95,243,169,211,196,221,144,132, 57,119,253, 37,221, 65,240,236,189,117,183, 74, 95,245, 16, 83, 15,232, 40,126,124, 13,249,
+158,231, 15,148, 94,189, 71,167,253,123,193, 72,163,170,106,236,118, 45,190,252,242, 75,124,240,254, 7,104,234, 26,187,182, 85,
+ 54,185, 85, 50,156,230,109,199,136, 70,199,195,131,151, 14, 59,170, 56, 44,133,182,164,253,175,143,130, 75, 37,144,146,243,140,
+ 82,220,164, 27, 54, 70, 44,105, 41,102,148, 8,154, 41, 63,226,152,133,252, 38,127,222, 90,131,102,177,200,105,105, 9, 61, 91,
+213,146, 25,223, 44, 22, 66,164, 83, 23,193,253,251, 15, 96, 84, 20,227,172, 3, 25,194, 98,177,196,182,237,112,123,115,163,151,
+ 40,163, 59,110,130,171,164, 99, 11, 26,252,147, 80,165,187,182,149,180, 61, 6,122,239,177, 94,175,209,238,182, 58,194,149,113,
+110, 18, 57,110,119, 59,116,173, 32,111,161, 25,225,210,229, 67, 87, 46, 94, 35, 76,149,135,174,158,116,107, 72,166, 51, 44, 72,
+ 87, 97,155,147,134,184, 0, 93,215,129,227,144,115,229, 77, 82,176,235,215,162,194, 10,154, 73,126, 33, 98, 89,215,136, 68, 82,
+212,244,107, 39,139, 24, 41,139, 35,194,104,196,174, 8,186,140,190, 6,150, 34,140,113,122, 81, 8, 88, 86, 6,213, 98,137,179,
+171,128,171,179, 47, 81, 97, 7, 54,213,100,233,218, 88,198, 69, 88,226,249,231,159,226,207,126,250, 22,252,163,159, 3,183,151,
+ 56, 58, 94,192,187, 21,110,215, 29,174,111,214,232, 55,107, 32, 14,170,173,209,207, 40,100,154,231,125, 84, 18, 35,231, 53,162,
+201,211, 14,241,221, 75,148,170, 18, 75,121,108, 2, 19,170, 53,146, 20,254, 8, 26, 35, 95,217, 40,249,109, 92, 95, 48,185, 28,
+106,131,148,214,167,223, 35, 21,254,212,193,115,105,108, 38,192, 71, 3, 27, 3,140,101, 25,253, 99,220,135,102,161, 97,174, 31,
+ 60,198,177,114,216,251, 20,202,110,221,224,196, 68,108,235,136, 77, 56,129,217,120, 32, 92,231, 44,249, 3,101, 37,175, 34,234,
+166,134,253,222, 7,143, 62,233,219, 94, 70, 17,101, 9, 80,149,183, 77,132, 31, 42, 85,227,242,164,226,164,176,210,225,216,213,
+201,112, 93,173,106,148, 56,240,229, 62,124,118,216, 24,217,215,115,222,149,243,104,184,167,153,117,109,126, 29,136, 1, 67, 68,
+ 94, 33,100, 20, 45, 97,134, 53,153, 82,222, 48, 41,224, 80,155, 93, 74,245, 42,242,228,199,106, 51,229,178,107,145,142, 92,118,
+196,251,151,133, 76, 77, 42,210,235,136, 70, 33, 33,136, 64,190, 69,188,255, 33,126,252,163,119,177, 57,251, 10, 47, 58,139,218,
+154, 49,209,171,152,106, 36,127,188, 49, 52, 29, 45,211,161,241,248,190,170,170,124, 78, 49, 50, 86, 71, 39,168, 44,161,237,250,
+ 25,207,159,238, 24,150, 80, 86,207,209,225, 85,251,120, 11, 40,153,252,197,133,139, 53,242,115,234, 0,248, 6,171,115,237,230,
+142,142,143, 17, 67,192,224,195,152,103, 63, 19, 63, 18,189,218,246, 53, 23,105,190,113,150,123,225,226, 43, 85,252,175,251, 43,
+ 84,236, 5, 75,220,253, 43,215, 3,244, 70,191, 52, 83,184,224, 96,199, 94, 94, 79,155,166,193,203,151,231,176,214,224,231, 63,
+255, 41, 46, 47, 47,180, 75,141, 57,107,157,200,168,152, 79,148,227,217, 87,159,160, 67,106,253, 50,218,113,166, 0, 23,217,129,
+219,252, 26, 53, 77,157,211, 30,211, 37,119,204,166, 31, 23, 6,148,144,171, 69,215,213, 52,141, 0,110, 44,101,241, 89,229, 44,
+142,142,143, 16, 34, 33,196,128,213,106,133, 97, 16,161, 88,211, 44,242,243, 92,212, 53,186, 33,224,171,175,191,198,203, 23, 47,
+ 16, 57,226,228,248, 24,139,197, 82,149,252, 78, 8,122, 74,138,107,219, 14,215,215, 55,184,189,185, 22,239,180,181,232,218, 14,
+219,205, 6, 49,122,184,170,206, 98, 54, 31, 2,134,193,139, 56,175,239, 69,249,173, 35,245,160, 99, 98,168, 27,192, 90, 89, 65,
+ 90,235,242,142, 94,229,215, 26,177,203, 69,144,136, 16,254,188, 31,114, 58,154, 33, 69,166, 66, 96, 52, 9,175,106, 72,146,253,
+164, 16,201, 41,202,100,209,246,131, 52, 6,206, 76, 62, 55,162,100,119, 99,225, 84, 22, 63, 25,200, 90, 69, 33,186,206, 9,203,
+223, 26,198,109,172,112,246,248, 37,248,246, 41, 76,229, 14,190,239, 86,141,197, 63, 62,139,120,176,253, 12,191,248,147,159,226,
+ 89,255, 8,253,246, 10,196, 30,125, 4,174,111, 91,244,235, 27,128,135, 76,126,211, 99, 21, 12, 89, 79, 16, 7,209,178,177,106,
+187,108,178,220,201, 84, 33,225, 99,185,200,220, 21, 58,106,200,239,151,192,146,148,200,234,178,200,226,228,212,100, 16, 33,176,
+ 85,177, 30,195,179, 1,133, 0,107, 2,216, 56,245,177,203,106, 32,227,230,146,163,128, 0,107,129, 0,141,114,229,152, 83,227,
+152, 24,196, 38, 43,227,141,166,196, 65,115,221,141,137,186,110,177,147,201,106, 96, 96, 1,134,173, 34, 46,109,141,176, 91,193,
+180, 87,128,233,116,240,127,247,103, 92, 59,245,119, 62,233,118, 93,238,208,203,144,148, 88, 90,128, 40, 89,143,212,207,158,128,
+248,116,120,223, 26, 75,131, 55,209,129,147,231, 46,219,219,190,226, 29, 69, 97,159,167,168,129,104, 95, 0, 68, 84,236,254,202,
+194, 94, 16,225,138,203,196, 60,178,148, 38, 9,117,227, 42, 96,162, 0, 47,237, 97, 84, 12,220,137,166,187,242,114, 50,158,253,
+147,210,165, 56,189, 13, 68,157,136, 80, 1,145, 49,174,134,217, 93,225,239, 62, 61,195, 13, 47,112,175,145, 29, 88,156,128,106,
+138,113,208,126, 31, 93, 20,116, 76, 51,215, 15,164,186, 1,163,171, 97, 24, 6,244,131,159, 60,223,253,238,149, 38, 19,155,253,
+113,242,254,247, 97,236,251,211,243,216, 25,179,199,122,199, 72,125, 14,160,153, 11,220,210, 65,204,147,221,243,184,214, 96,126,
+179,241,251,190,168,140,222,168,160,103,245,209,155,252,157,226,254, 78,179, 75,210, 65,161, 59, 99,106, 73,164,215, 20,116,230,
+189,238,252,117,151, 0,232,225,125,121,117,133, 63,253,211, 63,199,183,222,125, 7, 47, 94,188,208,128, 25,217,255,250, 16, 37,
+146, 86, 31,179,213, 78, 23,234, 65, 23,117, 59,235,110, 90,148,230,146,159,158, 44, 98, 1, 85, 93,161,170, 43, 25,175,103,206,
+ 2, 77, 32, 33,204,200,118, 64,249,140,137, 69, 75,124,238,141,118,233,113,210, 54,200,197, 65, 58,212,163,229, 2, 33, 70,108,
+183, 27,220,191,119, 15, 85, 93,195, 26,224,232,232, 24, 23,151,151,184,190,186, 4, 51,163,239,122,128,229, 18, 32, 25,226,132,
+182, 27,208,238,118,184,185,185,197,213,213, 21,118,187, 13,172, 94,122,134, 97, 64,215,117,240,195,160, 99,245,100, 51, 35,244,
+ 93,192,237,237, 45,218,118, 7, 14, 1, 77, 35, 65, 42,125, 63,104, 83, 36, 23,243,200,140,232, 3, 22, 77,173, 48,151,152, 93,
+ 5,195,224,117, 82, 54, 58, 77,124,100,244,125, 47,158,108, 48,106,103, 1,178, 26,247, 43,148, 87, 0, 0, 32, 0, 73, 68, 65,
+ 84, 13,172, 92,115,125, 37, 82, 30, 65,130,229, 36,143,125, 90,173,129, 41, 79, 93,100,156, 46, 84,183,116,121, 74,225, 61,163,
+152, 86,166,184, 6, 12,227, 44,250, 72, 56,123,177,198,250,217,215,168,173,207,251,222,249,234,203, 16,192,245, 2, 95,124,254,
+ 12, 63,251,118,135,251, 63,250, 23,216, 94,111, 16,201,227,166,141,184,186, 90, 35,236,110, 37,204, 37,209, 9,121,140,214, 77,
+ 2, 53, 38, 17, 99, 86, 70,108,113, 68, 22,129, 13, 40, 70, 84,149, 1,185, 58, 95,224,179,213, 90,211,230,140,238,203,153, 12,
+ 98, 0, 12,137,130, 62, 21,222,152,172,103,153,133, 47, 35,241, 73, 40,140,177,217,210, 38, 28,181, 34, 98,156,197, 67,111,156,
+129,135, 19, 69, 60, 6,125,253,173, 16,251, 18,156, 70, 85,247,242,126,182,121,154, 64,100, 51,167, 37, 79,168, 35,227,152, 24,
+ 93,205,184,229, 99,152, 77, 4,133, 75,109,182,103,231,173, 30,245, 61, 3,236, 84,253,190,235,250,124, 26,143, 72,213, 67,254,
+152,253, 29,249,100, 7, 57, 70,135,143,254,241,116,144, 22,111,144, 61,207,122, 49, 22,159,116,141,180,127,188,230,189, 55,209,
+ 94,151, 63, 61,192,104, 90, 59,202,156,242, 89,151,206, 68, 19, 49, 87, 42,208,210,253, 90,172,156, 65,149, 16,176, 60, 85,157,
+151, 32,157,212,213,143, 1, 39,211, 34,102,201, 76, 80,171,121, 76, 78,172, 33, 48, 52, 3,136, 68, 52,150,245,182,204,121,172,
+150, 10,147, 49,154,209, 91,146,226,202, 2,144, 24,200, 5,153,173, 92,149, 24,218, 95, 61,140, 31,124,158, 42, 53,247,190,248,
+161,142,115,159, 47,192,243, 2,158, 46, 75,175,169,172,124,112,135,127,120,140, 93,254, 90, 18,149,149,190,121,252,150,214,246,
+ 87,243,218,238,178,140,205,157,240,252,106,207,124,225,173, 27,187,135,226, 52, 47,254,241, 67,159,197, 83,229,101,145,136,192,
+111,248, 90,190,201, 53,195, 58,135, 23,207,159,227,157,183, 31,226,127,253,139,191,196,229,229, 57,182,219,141, 66, 96,138,140,
+129,132, 89,141, 18, 74, 2, 38,116,237, 80,248,125,211,110, 60,230,124,121, 99,132,186, 81,215, 85,158,116, 1,200,185,236,114,
+177,149,110,217, 41,172, 36,233, 4,131,250,176, 71,178,155,205,169,100, 18,192, 34,187,111,231, 42, 88, 98, 44,151, 43,152,170,
+194,205,245, 45,250,190,195,163, 71, 15,113,114,114,140,186, 89, 98,189,222,224,230,234, 10,171,213, 2,139,197, 2,109,187,131,
+177, 22,203,213, 49,174,111,214,184,186,186, 66,187,219, 98,183,219, 34, 12, 34, 22,179,149,122,239, 99,204, 3, 88, 42,186,190,
+174, 27,176,217,238,208,182,219,108,163,138, 65,226, 84,141,138,220,210, 72, 63,106,232, 77,221, 44, 96,213,139, 28, 53,241, 46,
+ 77,111,156,149,203,127, 8,178,214,224, 48,100,203, 85,208,148, 63, 34,206,100,195, 74,215, 6,131,247,170, 13, 80,191, 59, 84,
+ 35, 96,172, 8, 85,131,207, 72, 95,241,166, 91,176, 62, 30, 31, 8, 28, 69,164, 25, 41,225, 78,211,133, 50, 98, 8,140,155, 93,
+196,249,243,151, 48,221,133, 96, 94,147, 67,202, 89,181,252,142,239,198,133, 35, 60,221,213,232,158,124,142, 63,249,217,183, 49,
+ 60,248, 49,214,155, 13, 94, 92,110,113,243,242, 28,232,214,185, 51,103,214,243, 53, 68, 88, 19,197, 3, 30, 89,201,149, 98,235,
+173,157, 3, 27,151,155,137,168, 31,112,103, 20,215,170,103, 85,138,203,101,189,140,144,149,139, 64, 84,193,106, 57, 20, 39,164,
+247,181,142,237,245,181, 15,100, 96, 88, 30, 11, 25,151, 93, 55,153, 15,159, 50, 48, 88,254,219, 42,204, 38, 77, 54,144,128,101,
+108, 70,138,125, 94,225,201,101, 65, 26, 96,147, 25, 35,233,115, 31,153,176, 0, 80,187,136,171,202,162,223,157, 32,108,111,224,
+227, 6,125,116,104, 61,163,237, 25,253, 16, 17,134, 0, 51, 12, 56,225, 14,223, 62, 50,176,223,255,224,221, 79,186, 86, 44, 5,
+227, 33, 51, 18,227,202, 46,144,112, 8, 10, 51, 29,193,203,131, 78,188,247,125,207, 58,207,243,198, 39, 54, 38,154, 20, 6,208,
+161, 49, 33,101,107,195,204, 13,190,191, 19,159, 97, 52,121, 54, 81,176, 19, 80, 54, 29,196,228,112, 74, 40,211, 44,247,200, 73,
+ 8, 88,102,186,243,164, 51, 50, 84,172, 2, 84,120,227, 64,153,168,149, 96, 6, 49,133,160,164, 56,210,132, 49, 36,249,111,144,
+222,168, 85, 88, 51,138,199, 28, 30, 46,107, 44,137,177,211,131, 16, 92,192,219, 14,116,205, 83, 59,225, 60, 25,239,240,180, 5,
+ 7,203, 83, 57,241,184,195,142,119, 96, 96, 61,197,222, 78,215, 19,165,179,224,160,171,225, 21, 69, 28,123, 69,127,170, 45,219,
+179,224,189,162,178,205,181,247,223,228, 46,192, 57,102,181,120, 67,211,171,218, 98, 30,223,243,152,218,249,230, 99,247,212,197,
+124,244,253,143, 96,173,193,205,237,109, 46,236,249,242,114,224,239,188,201,120,254, 78,181, 60, 51,182,219, 53,126,254,179, 63,
+198,195, 71,239,194, 15, 61,182,219,173, 16,212,146, 87,185,120,225,146, 87,157,131,135, 15, 3,172,181,112,170,202, 14, 62,194,
+ 57,147, 64, 11,234, 79,151, 2,207,153, 1, 19,139,104, 77, 66,136, 50,106, 13, 41,140, 35,133,166,168, 50, 61, 89,178, 72, 63,
+ 35, 68,210, 69,131, 44,186,118,135,147,147, 35, 52,205, 2,189,166,159,133, 48,224,104,181,196,233,131,183, 48, 12, 61,234,166,
+193,122,125, 11, 34, 66, 85, 87,112, 85, 37, 35,245,118,135,245,237, 26, 67,187, 69, 93, 59, 97,178,235,120,123,161,153,244,109,
+ 55,100, 44,169,172,119,133,243,222,238,118, 88,175,111, 21,218,131,172, 72, 71, 97,161,149,226,223, 1,204,168,235, 6, 76,146,
+111, 94, 85, 21, 6,213, 37,164,139,184, 85, 31,118, 96, 73, 49, 35,112,182,163, 13,222,103, 52, 47, 77, 26, 28,210, 0, 19, 81,
+180, 15,154,222,198,186, 39, 22,123,219,184,202, 96, 77, 32, 19,118,191,124,175,232,131, 70,213, 74,161, 30, 34,193, 96, 0,147,
+ 36,200, 93,222,182,216, 93,190,128, 35,177,114,141, 50, 30,147,237,203,229,187,109,209, 56,124,118,214,226,125,243, 24, 31,252,
+248, 15,240,252,182,198,238,246, 2,126,183,209,125, 58, 50, 43, 61, 95, 24,141,230, 93,102,253,139, 20,119,231, 8, 48,210,153,
+ 55, 78, 50, 16,152, 44,134, 32,209,193,153,118,170,202,254,144, 60,114,164,160,113,142, 24,162,100, 99,128,199, 4, 55, 86,135,
+150,161,160, 44,121,241,194, 7, 83, 1,145, 97, 12,107,214,186,174,143, 9,170,106, 31, 1, 65,134, 8,108, 0,142, 6,150, 21,
+ 66,175, 5,222,228,181,130,154,192, 21,135, 43,120,246, 49, 49,111,212, 63, 49, 64, 22,199,134,208,213,140,235,112,140,230,214,
+224,184,127,138,135,110,131,239,172, 2,126,231,126,196, 15,223, 54,248,201,251, 21,126,252,189, 35,252,228, 7, 15,241,147, 31,
+127, 40, 19,224,200, 52, 25,125,112, 73,100,103,154,168,134,185, 60,152,115, 10, 25,138,113,251, 24,219, 58, 29,165, 23,183, 35,
+198, 76, 0,135,177,123,227, 49, 33,205, 28,176, 86,165,199,148,252,139,148, 45, 94, 60, 1,147,204, 21,232,156, 3,103, 10, 86,
+125,206, 65,151, 23, 52,204,209,180, 4, 32,120,116, 65,167, 6,201,175,159,246,230,169, 47, 43,240,171, 37, 30,149,181,194, 68,
+ 69, 7, 18, 34, 12,203,133, 36, 20,244,180,188,234, 40,118,177,249,249,231,139,130,142,151, 35, 99,177,168,241,157,183, 23,184,
+ 56,191,198,147,142,209,216, 3,225,224,217, 70, 56, 29,161,167,229, 83,242,250,151, 35,250, 88, 94,216,120, 95, 72, 54, 50, 7,
+210,110,168, 40, 73, 60, 23, 21, 78,167, 30,101,101, 73, 34,181,172,207,224,249, 48,122,122, 49,224, 59,198,202,120,197,175,243,
+220,246,181,111, 18,184, 83, 84, 78,123, 91,103,222, 31,105,211,124,137, 94,220, 30, 38,193,204,135, 27,246,116, 51, 79,174,145,
+ 84,224, 35,199,187,134, 0, 5,164,167, 24,171,171,192,232, 85,175,207,161, 92,249, 67, 23,186,242,215, 86,203, 37, 30, 63,126,
+140,207, 62,255, 39,252,222,239,255, 4, 15,223,125, 15,187, 93, 11,126,250, 20, 49, 6, 12, 33, 8,122,149,199, 93,113,215,247,
+248,248,227,143, 16, 98,192, 63,252,143,127,132,109,148, 67,110,181,240, 26,171,239,115, 41, 88,214, 89, 29,191, 83, 46, 86, 65,
+ 19,202, 66,232, 81, 57,131,186,114,178, 10, 82, 34,162,128, 97,140, 10,210, 88, 72,152,214,160,178, 50, 54,239,251, 14,193,123,
+ 12,189, 0, 84,234,218,193, 26,198,106,245, 0, 87, 55,183,112,245, 11, 52,139, 21,110,110,110,112,122,239, 20, 87,151,151,146,
+ 59,175,106,252,148,201,190, 90, 45,225, 42, 9,152, 9, 49,160,114, 82,212,123,189,212,176, 42,167, 23,205, 18,219, 46, 96,187,
+217, 97,179,221,162,239,187, 2,156,130,172, 49,136, 49,130, 28,161, 15, 82,104,151, 77, 35,187,243, 16, 49,104,135, 26,226, 52,
+112,120,232, 61,150,203, 6, 20,156,194,105,196,143,158,156, 17,101,250,100, 30,127, 67, 47, 3,122, 49, 26,180,160, 7, 16,152,
+131,104,114,244,179,234, 7, 73,107,171,221, 24, 26, 99, 8, 96,107,101,146, 16, 35, 60, 12, 12, 49,124, 36,132,174, 71, 32,131,
+221,182,133,241, 59,160, 26,241, 99,129, 9,240, 97, 34, 32, 78,255, 84,134, 17,150,167,248,119,255,225,215,248,241, 47,255, 61,
+ 78, 31,254, 21,110, 46,151, 48,245, 2,232,182,160,216,103, 4,173,103,192,247, 1,142,131,140,201,115,238,134,145, 81,122,242,
+ 89,179, 90,208,156,149,189,181, 17,228,112, 84, 97,162,103,128,162,135, 53,194,129, 15, 81,210,229,200, 18,106, 88, 68, 18,241,
+166,211,128,154,202, 90,121,222, 44,246,194,136, 20, 34, 22,209,123,131,133,239, 97,170, 0,166, 42,197,171, 79,132,172,172, 19,
+ 78, 75, 86,194,235,162, 19, 41,115,206, 88,207,208,209,236,248, 66, 1, 9, 19,125,154, 5, 69, 32,106,192, 76, 31, 1, 12,140,
+143,200,227,231,223,217,226,248,195,183, 97,237, 31,162,105, 8,171,213, 9,226,178, 65,111,143, 17,177,130, 39,131, 30, 53,110,
+171, 83,184,116, 35,225,168, 57,216, 52, 65,117, 11,196,164,232, 0,231, 24, 89,154, 15,180,121,244,168,155, 98, 15,205, 74,173,
+ 73,126,245, 18,170, 51, 90,223, 56,239,162,239, 18,243,160,216,213,167,140,118, 51,239,126,138,236,246, 57,250,117,110,108, 51,
+243, 67,242,128,152,140, 72,238, 87,204,133,168, 39, 9, 50,120,236, 52, 19, 87, 56,230, 17, 61,231,156, 93, 15, 97, 13, 27,130,
+236,167,116, 23, 25,146,234, 51,189,174, 52, 30,250, 89,216, 71,163,121,112, 96, 96,181,168,224, 16,113, 59,196,145,253,157, 47,
+ 74,133, 13,176,184, 96,196,137,181, 44, 21, 3, 76, 0, 57,102, 94,131,120, 22, 16,155,221, 5, 92, 92,154, 36, 41,192, 24,141,
+141,100, 77, 25,222,203,192, 85, 85, 56,211, 8,176, 40, 58,104,115, 39,135,254,183, 28,157, 19, 38,123,245, 57,237,240, 78,225,
+250,222,130,230, 21,151,134,121,169,164, 66,142,254,138,111,198,147, 48,132,209, 60,207,145,239,156, 64, 88, 75,248,252,243,127,
+ 82,200, 77, 51, 58, 8,222,240,194, 51, 87,245,243, 43, 46, 54,145,197,199,188,219,237,240,217,231,159,225,247,127,242, 7, 0,
+128,183,222,121, 36,246,177,167, 79,112,121,125,141,192, 97, 76,239,171, 43, 17,171, 53,139, 98, 85, 21,243,103,204,135,160, 73,
+133,164, 35, 97,202,185,237, 80, 21,118, 63,120, 12, 93, 15,107,157,140,157, 85, 77, 79, 58, 74,142, 28,242, 88, 25, 68,226, 13,
+102, 37,218, 89,189,224,199, 32,153,229,189, 36,113,173,142,142, 84,224, 5, 12, 62,224,242,226, 2,213,162,195,147,199,191,193,
+106, 37,241,184, 86,133,119,189, 15,224,182, 3, 25, 9,187, 9,145,209,117,146,199,110,172, 67, 55,200,106, 97,177,104,176,221,
+117,104,156, 3,140,129,247,173, 38,126, 73,172,107, 82,218,199, 24,181, 83, 23,191,115,224, 40, 88, 96, 13,107,113,214,230,203,
+127, 2,214, 24, 26,181, 58, 38, 18,118,237,128, 97,232,225, 44,105,242, 29, 35,198, 66,127,160,204,118,168,239, 58,177, 4, 18,
+227,157,144,198,208,138,190, 53, 34, 4, 27, 6, 15,151, 88,251, 72,180, 57,249,122,206,138,106,220, 71, 6,188,207,141, 84,101,
+128,157, 7,134,118, 39,156,244,156,221, 57,213,246, 28,186,144,158,174, 12,254,251,139, 26, 95,254,215,255,132, 15,254,143, 63,
+195, 23,230, 20, 97,120, 44,168,221,168,150, 66,253,222,193, 16,122,207,112,102,200,171,150,200, 98,249, 50,214,128, 19,170,214,
+ 70,176,179,136,193,192, 90,130,115, 21,134,200,178, 59,135,172,132,100,221, 17, 68,209,143, 0, 38, 81,248,167, 64, 24,142, 1,
+145, 3, 40,137, 59,117, 92,102, 64, 96,182,176,145, 17, 77,148,175,201, 65, 46,166, 76,210, 97, 83, 80, 39, 13,233,122, 20,176,
+ 28,228,245, 38,161,238, 81,169,112,215,154, 32,194, 60, 53,186, 17, 36,214, 85,215, 4,108, 8, 70,109,209,145, 24, 61, 19,154,
+ 30, 56, 94,108,177,122,103,133,221,233,143,112, 19,191,133,107, 31, 17, 66,143, 97, 0,134,129,128,190, 3,194, 6,139,101, 7,
+251,241,135, 58,126,143, 5, 45,142,199, 80,150, 67, 19, 81,194,136,126, 53,243,130,142, 49,213,205, 76, 58,159, 98,252, 75,101,
+172, 28, 77,196,103,233,137,151, 34, 55,122,157, 79,122,130,105, 85,118,180,170,116,227,108,204, 76, 19, 12,107, 18, 46, 76,173,
+110,229,215, 50, 52,142,136, 13,229, 77,218,100,181,204, 52, 38,106, 16,237,123,235, 83, 71,197, 12, 9,180,208,175,237,140, 65,
+163,255, 29,103, 2,176, 72,179,177,181,162, 54,171,170,194,251,199, 21,118,235, 29, 30,111,188,242,156, 89,119, 59,188,231, 10,
+ 40,109,129,115,148,109,249, 8,211,190,232, 46,224, 12, 14, 8,198, 40, 79, 34, 10,177,247, 93,165,130,166,171,157,116,151, 50,
+251, 63,208, 59, 31,199,155,205,193,203,231, 56,243,116,190, 78,227, 54, 33, 52,188, 89,161, 28,213,107,244,102, 42,249,131, 81,
+106, 35,208,229,117,118, 61, 34,179,239, 20,121,179,151,228, 27,255,211,118, 29, 86,171, 21,254,236,207,255, 28, 0,225,233,179,
+167,226,217,215, 78, 46,101,203, 59, 85, 63, 51,128,103,207,158,227,233,217,153,128, 91,146,168, 54,166, 40, 89,141,225,116, 22,
+ 78,119,234,146,138, 38,202,235,196, 82,135, 2, 67,152,213,227,159,118,216,172,217,231,186,207,143, 74,232, 75,185,225,146,224,
+ 37,188,131, 78,199,238, 39,199, 43,212, 77,133,174,237, 53,155,158,177,221,172,225,156,168,171,157,181,168,234, 26, 67,144,216,
+ 81, 99, 8,149,115, 64,193,178, 7, 11,119, 61,165,135, 73, 33, 29,135, 38,109,215,163,239, 90, 65,178,166,189,174, 65,142, 58,
+ 77,193, 34, 93, 63,136,216,110,185,144, 0,155,210,222,153, 47,182,164, 30,121,249, 6,253, 32,129, 39,117,221, 32,168,239, 60,
+ 48,193, 7,175, 40, 94, 81,207,135, 20,139,154,208,205,122, 89,144, 88, 83,165,253, 69, 86,144,140, 5,216,195, 57, 35, 56, 90,
+154, 11, 49,199, 79,132, 65, 4,147,136, 35,157, 1,214, 61, 97,115,117, 1, 27,251, 12,164,121,147, 55,160, 37,224,202, 59,216,
+219,167,248,227,159,188,135,235,229,239, 97,125,241, 28,219,237, 22, 60,180,210, 81,231,230, 65,108,144, 8,131,128, 99,200, 22,
+130, 76,135,202, 26,212,149,129,169, 42,128, 28, 60, 19,162, 15, 32, 14, 98, 97,142, 17, 68, 81,215, 1, 26,134,195, 97,162, 3,
+225, 40,162,185, 52, 82, 79,184,234,148, 51,207,154,252, 71,218, 85,167,208, 31,206, 76,208,145, 25, 63,181, 42,115, 65,146, 75,
+235, 87, 8, 5,143,138, 52,190,236,123,215,106,192, 34,160, 20, 49,184, 29, 81,181,100, 48,192,224,122, 0,134, 77, 68,104,119,
+232,186, 45,218,221, 22,126,183, 70,232,214, 8,195, 26,126,104, 17,124, 15,103, 24,163,102,178, 4,180, 20, 89,215,124, 96,100,
+ 41, 77, 23, 77, 3, 62, 56,253,189,146,121, 86, 66, 80,102,221, 48,141,216, 23,230,185,152,135,114, 87, 8, 62, 44,154, 42, 87,
+ 4,172,151,137, 49, 46,207,193, 58,139, 19, 98, 56,253, 61, 51,103,213, 67,198,103, 65, 39, 20,148, 82,130, 14, 28,149, 38, 91,
+241,116,247,205,177, 24,147, 22,227,103,165,187,161, 40,226,105,215, 93,136, 10, 68, 93, 25, 3,118, 62, 96,151,146,137, 48,142,
+215,131,254,157,152,166, 1,197,168,193, 89,139,161, 31,240, 98,211,195,103, 59, 29,143, 94,217,180,155,225,114,122,193,175, 85,
+ 70, 39, 43, 17, 21, 59,220,252,103,120, 20, 14, 78, 82,222,210,129,148,158,123, 60, 60, 18,231,153,223, 58, 77, 23,172,138, 7,
+ 57,175, 31,120,166, 75,248, 45,213,109, 52,113,217,125,131,191, 58,165,240, 49,191,142, 58,135, 59,156, 29,175, 46,172,233,125,
+ 77,197, 8,157,223,140,136,163,116,198,195,197,122,111,175, 62,123, 73, 14,141,229, 15, 90, 3,245,223,155,186,193,197,249, 57,
+ 54,155,181, 20,152,174, 71, 63,180,226, 1,175,107,212,117,157,115,192, 57,202, 78, 51, 33, 61,141,254, 47,132,136, 90, 51,177,
+ 25, 50,222, 13, 33,130,140, 21,136,143,115,210,193, 6,159,161, 59,206, 8,220, 71, 0, 55,118, 84,116, 27,163,140,118, 17,148,
+197, 32,131, 74,167,118,172,174,147,132, 56,144,224,106,131,170,211,137,132,185, 79, 41,218, 20, 26,218,163, 25,225, 33,196,204,
+101,119,206,161,110, 22,136, 33,200,148,192, 24, 56, 71,153, 75, 63,168,165,172,170,107, 48, 89,108,182, 29,182,155,181,118,186,
+162,236, 31,134, 1, 67,239,133, 84,166, 33, 40, 93, 55,128,131, 71, 85,139, 47,159, 20, 14, 19,181,224, 57, 21, 17, 90, 29,213,
+133, 40,222,252,166,178, 88, 44,151, 82,112,136, 52,146, 52,102,225, 96,140,202,162, 87,207,186,209,125,112,100,217,207,167, 88,
+220,228,233,237, 6,137, 58,181,206, 97, 8,178, 94, 20, 94, 60, 96,181,105,225, 24, 80,145, 92,194,124,148, 4, 57, 14, 18,193,
+219,245, 3, 56,244, 96, 67,133,210,234,245,159, 73,233,214, 45,254,243, 87, 6,159,255,167,127,143, 7,199,183, 48,139,251,168,
+ 93,149,177,174,169,232, 26, 34, 81,247, 91, 89,177, 48, 7, 24, 13,169,169,157, 69, 93, 59, 52,139, 26,245, 98, 1, 83,213,185,
+ 80, 50, 25, 56,141, 61, 77, 54,177,108,199,214, 41,105,250, 30, 17, 6,222,203,165, 45,100,198, 2,163, 27, 2,124,215,131,226,
+160, 83, 19,241,196, 7, 24, 12, 65,227,104,149,168,151, 21,240, 24, 63,191, 76,227, 36,146, 35,231, 58, 48,194,220, 40, 71,175,
+210,228, 50, 63, 54,197, 49,127,214, 69,115, 21,152,225, 3,176,238, 3,186, 93,135,216,221, 32,198, 14, 62, 50,134, 16, 16,188,
+ 48, 15, 56, 6, 64,223, 7,249, 92, 74, 48,147, 20,193, 26,139, 52,182,114,215, 44, 44,120,134, 41,250,155,169,248,141, 38, 69,
+ 44,166,139, 3,151,153,225,101,194, 90,156,136,188,120,175,248, 78, 71,255,251,190, 91, 30,141, 65, 44,166,254, 46, 0,107,126,
+253,200,145, 32,164,162, 81, 40,168,251,238,196,142, 75,143, 89, 11,118,210, 6,164, 61, 69, 44, 30,173,209, 44,232, 56,217, 37,
+151,149,189,216,195, 67, 62,156, 67,136,240,121, 31,207,121,188,157,108, 64, 49, 21,119,189,110,248,161,199, 87,215, 59, 92, 7,
+160,162, 34,166, 20, 83,168,203,158, 18,157,121, 79, 44,200, 60,237, 13,153,199, 75, 4, 77,180, 2,156,195, 13, 98,161,200,227,
+153,147,123,250, 60,167,237,178,172,119,202, 87, 64,158,215, 16,227,236,114,193,104,154, 5,154,170,154, 36, 76,253,182, 29,251,
+155,119,170, 60, 94, 22,243,158,154,191,217, 55,224,187,111, 17, 84, 94,126,121,246,238,120,211,118,155,112, 87,240,225, 43, 31,
+106,198, 10, 27,122,101, 7,207,179,247,136,113, 22,219,237, 6,219,205, 90, 10,171,130, 99, 88, 25,219,174, 18, 69,176,129,196,
+142, 26, 99,149, 95,174,234,100, 50, 25,169,106, 77,202, 60, 96, 21,175, 73,199, 46,118, 48,169, 98,162,208, 54,130,143, 85,146,
+154,181, 86,193, 55, 54,171,233,141,218,122, 18,205, 51,248, 8,159,104,117,198,106,224,139, 88,240, 4,104, 19,177, 88,212, 88,
+ 46, 23,218,177,134,172,200, 95,111, 54, 24,250, 22,171, 20,236,162,130, 60, 99, 44,252, 16, 52,214, 83,198,215,181,115,104,234,
+ 26, 62, 68, 12, 67,175, 23,135, 30,136,146, 48, 22,116,162, 32,218, 51, 29,205,146,193, 48, 12, 0, 34,234,166, 66, 85,213,194,
+126,175, 28,200,218, 28, 59, 29, 85,176,149, 66, 99,188, 23,175, 59,114,167, 47, 86,179,186,118,249,194, 84,235,235, 23, 85, 4,
+ 55,198,151,202,123,204,146,209,228, 57, 76,178,176, 19,202,182,174,171, 28, 73, 42,128, 27,225,220,203, 36, 86, 68,138,222, 71,
+185, 28, 25,128,141, 67,240, 1,148,115,232, 95, 63, 93, 42, 15,156,198, 50,174,237, 49,254,195,223,126,134,147,203,255,130,197,
+233, 3,153,108,144,203,174,138,124,150, 26, 11, 99,235,140,205,181, 16,126,123,101, 29,142, 22, 14,110,177,132,179, 21,154,218,
+129,170, 70, 70,216, 49,194, 24,206,121,235,105,253,234,172, 94, 10,173,203,169,103,206,136, 13,141,148, 70,199, 49,130, 88,180,
+ 27,125, 16, 22, 63,124, 7, 67, 17,206, 88,229, 33,152, 12, 6, 19, 79,125,208, 51,219,100, 27,119,100, 6,197, 32, 53, 45, 77,
+ 50, 57,104,129, 15,122,217, 2, 76, 12, 42,202, 51,153, 46,135, 24, 64,170,215,136,106,169,179, 20,193,134,208, 49,161,245, 64,
+215, 14, 64,215,193,134, 29, 64, 94,215, 4,128, 69, 64, 77, 17,100, 57, 41,239,139, 84, 25, 46,104,110, 92, 96, 81,181,123,183,
+132,189,248, 83,210,161, 68, 62, 12,192,176,140,220,161,153, 60,122,158, 31, 96,180,215,177,199, 9,185,142, 4, 60, 48, 43, 36,
+119,199,103,242,168, 44,140, 30, 61, 67, 67,106, 74,191,124,234,200,145,127, 8, 99, 55, 89,116,182,153,174, 55,118,161, 1,140,
+144,237, 96,156,119, 21,163,128,112,228,220,199, 66, 48, 72,179,192, 82,158, 89,239,140,138, 44, 98, 97, 43,228,130,176,148,178,
+157, 61, 36,187, 58,164, 32,128, 36, 67,208,159,160,165,253,100,210, 73,136, 9, 51,124,140, 24, 98, 65,245,227, 49, 86, 51, 43,
+118,121,250, 88, 11,125, 93,158,162,140, 19, 1,222,239,252, 74, 37,120,178,212, 41, 52,167, 44,236,135, 66, 74,140,145,145, 99,
+ 55,248,252,129,195,172,139,191,179,112,241, 43, 70,221,119,193,112,202,201, 68, 65,222,163,215, 90,217,104, 86, 50,249, 13,110,
+ 16,115, 85,124,122,237,249,205,252,104,133,195,161,252,217,222,117,184,230, 71,168,133,225,209,163,119, 5,197, 27,194, 27, 93,
+115,140,162, 90,187,174,207,156,244,132,240,172,154, 6,139,197, 82,246,199,132, 2, 94, 37, 93, 74,242,123,103, 6,183,147,160,
+ 27, 63, 4, 84,149,197,241,106,137,186,174,115,156,109,246,163, 27,194, 48,200,247,244, 62, 32, 4,159, 79,168, 42,117,252, 10,
+ 76,177, 86,198,247,253,208, 75,102,183,171, 68,108, 53, 8,161,172, 31,122, 12,195, 32,231,138, 70,173,166,110,220, 88,131,186,
+170,176, 90, 46,208,212, 13, 18, 75, 94,200,106, 81, 39, 87, 99,220,236,174,235, 16, 66, 64, 93,215, 48,106,155, 25,134, 65, 46,
+ 8, 65, 78,147,168, 89,223,117, 37, 59,243, 16,161,202,243,128,202, 25, 44,155,133, 8, 2,205,200,156,148,110, 58,106, 96,137,
+132,195,132,220,125, 9,122,215, 16,148, 89, 47,194, 61,231,156, 76, 13, 53,251,221,106, 71, 25,180,251,159,242, 47,101,231, 27,
+130,151,181,134,226,111, 83,188,170,171, 92, 38, 81, 70, 61,197,125,148, 75,139, 65, 28, 35,118, 21,192,229, 67,212, 46,149, 14,
+216, 55,239,238,210,211,225,125,114,228,240, 31,191, 0,190,248,127,255, 31, 60, 60,221,130,154,251, 64, 49, 41, 21, 81,159,128,
+142, 44,162, 22, 97, 59, 10, 0,173,252,236,170,186, 66, 85, 53,168,156,195,162,169, 80,213, 53, 96, 43, 4, 38,125, 61, 33,127,
+ 86, 11, 87,212,139, 67, 12,233,108, 13, 89,255,147,190,174,100,169,143, 48,155, 46, 68,248,193,131,185, 23, 60,173,179,128,181,
+136, 44,190,255,160,174, 36,210,215,156, 38,231,123,204, 83, 1, 82,178, 93,100,229,122,235,103, 62, 42, 93, 14,108,179,242,125,
+116, 82,137,246, 42,166, 63,175,228,186,206, 51,186,190, 7, 15, 61, 42,120, 52,142,208,212, 14,182,118, 32, 87,203, 69,145,153,
+114,158,117,250, 49,197,189,190,150, 50,102,143,153, 16,113,215,152,117,236, 64,194,172,170,152,209, 36, 55, 83,180, 39,159,184,
+250, 9,203,238, 24,132, 90,201, 65, 40,130, 80,198,199,184,127,110,231,226, 76, 70,163, 92, 75,101,126, 49,234,231,177,184, 79,
+148,196,101, 55,201,211,238,149, 35,143,133, 55, 61,122,189,188, 68,150,130, 95,178,188,185, 80,219,143, 13,123, 28,111,211,128,
+ 10, 95,210, 94, 58,170,229,141, 11,209,156,142,233, 98,186, 44,240, 40,210,211,170,206,106,251, 73,175,110,140,227,215,207,126,
+ 6, 6, 60, 3, 39,181,195,195,154,114,116,102, 42,228,137, 69, 93,142,106, 99,144,139, 70, 73,205, 27,149,218, 5, 93,144,121,
+ 42, 28,227,226, 34, 86,100, 12,151,232,196, 41,171,101, 58,238, 15, 62,225, 66,239,222,111, 31, 30, 37,167,231,206,111,180,152,
+103,148, 86, 48,202, 63,111,154, 97,128, 95,223,137,208, 27,143,222,203, 57,250, 55, 65,212, 76,140, 13, 51, 88,221,107,197,113,
+ 26,145,119,115,115,155, 71,202,111,166, 27, 32,189,208, 6, 13, 30,177,242, 94, 83,111,184,181, 22, 71,171, 35,217,177,235,207,
+ 76, 34, 84, 43,176, 2, 87, 0,104,231, 78,105,228,133, 69, 83, 99,177, 90, 73, 58, 91, 84, 61,137,126, 70,130,142,241,137, 9,
+129,131,114, 7,228,125, 20,195,248, 9, 55, 86,130, 74,140, 90,210, 22,203, 37,140,147,241,119, 72, 99,207,200,216,172,183,240,
+ 93,143, 24, 98,222,217, 27,157, 32, 68, 16,172,171,224,153,113,187,217,161,235,122,161,130, 5, 25,203, 58,107, 80, 85, 21,140,
+122,211,189, 31,132,122, 72, 6,155,109,135,221,118,131,221,174, 69,212,139, 71, 76,246, 59,175,135, 61,141, 94,112,107,157, 20,
+ 25, 99,165,232, 59, 7,231, 12,234,186, 18, 33, 88, 44, 70,174, 81, 46, 9,206, 25,253, 28,134,252,126, 73, 60,119, 87, 57,153,
+ 14,132,152, 57,239,164, 69, 64,210,199, 82, 51,162,252,116,144,208,217,180,232,133,200, 24, 50, 97, 78,168,105,125,239, 17,124,
+ 63, 54, 2, 12, 84,142,164,195,213,247,159, 92, 8,195, 1,174,199,221,146,147,242, 15, 45, 44,227,198,158,224,223,253,205,175,
+ 96,158,254, 13,220,209,169,172, 97, 42, 7,103,171,156, 65,144, 28, 87, 34, 74,147, 16,160,218, 0,139,133, 69,180, 11,184,200,
+ 88,212,114,185,180,174, 18,128,142,218,235, 2, 3,209, 7, 88, 10,128,117, 16,159, 25,103,226,158, 76,102, 9,222, 51,252, 48,
+168, 62, 33,202,107,161,151,203, 8, 32, 70,131,193,203,235,228,251, 94, 46,103,134,224,156, 5,172, 25,199,231, 28,243,250, 51,
+ 55,158, 76,185, 81, 27,199,240,148,207,196, 0,130,143, 6,209, 51, 16, 61, 0,143,241,183,121, 50, 41,150, 70, 59,192, 35,162,
+ 15, 6,221, 0,185,244,118, 45, 56,116, 10,212,113, 96, 83,129,168,134,139, 24, 73, 58, 89,137,156,230,250, 5, 36, 36, 71,149,
+206,252,188, 57, 29, 71,103,172, 97,118, 95, 1, 37, 31,245, 97,219,213, 84, 12,198,185, 72, 50,148,184,131, 49, 84,134,147,122,
+158, 71,154,157, 57,184,179, 44,157,231, 99,144,202, 30, 18,118, 62,158,204, 42,243, 17, 10,195,201,154,166,211, 8, 26,145, 53,
+ 99, 97,158, 88,179,198,147,119,252,112, 36,113, 96,121,183, 29,161, 7, 68, 18,116, 18, 19,200,130, 71,232,255,200,134,215,209,
+ 35, 71,133, 25,164, 92,106,202, 35,123,159, 67, 67,166,225, 49,217,199,202, 64,211, 44,177,228, 14,231, 93,175,236,246,169, 87,
+ 58,141, 1,193,132,202, 18, 66,223,226,214, 91,220, 59, 90,192,234,158,142, 15,188,134,105,231, 78,121,110, 48,142,231,152,167,
+110,135,169,181,140, 15,232,206,232,181,158,112, 42, 88,207,101, 76, 45,229,139, 27,191,246,235,100,130, 83, 30, 59,115, 86,127,
+127, 99,153, 61,223, 45, 91, 59,132, 50, 70,222,201,141, 54,209,131, 5,153,166, 22,189,137,184,158, 95, 95,208, 75,163,224,122,
+125,155,217,247,111, 34, 4, 12, 49, 98,185, 88,225,244,244, 20,183,235, 13,182,237, 78, 47,182, 82,104, 72, 85,215,167,247,239,
+227,234,242, 18,232, 59,241,163, 51, 48, 12, 1, 85,202,187, 38, 9, 83, 97,246, 96,239,181, 83,182, 42, 34,146,172,111, 3,194,
+160,251,232, 90,209,179, 38, 38,213,187, 92, 44,160, 32, 22, 3,131,190,239,177, 88, 44, 0,212, 24, 6, 47,254,119, 59, 78,227,
+156,147,241,171, 15,195,228,112, 77,254,254,232, 35,192, 1,222,171,224, 79,199,248, 0, 16,245,177, 85,206,229,207,126, 85,201,
+228,193, 71,198,237,205, 22,215, 87, 87,136, 97,200,239,153,196,166,143, 17,232,134, 1, 49, 70, 73, 58,211,209,118, 85, 55, 90,
+ 84, 60,140,145, 75, 79,218,211,183,157,144,226,140,179,136,131, 76, 33, 90,175, 44,121,171,175,103,100,132,190, 71, 93, 89, 1,
+180,164, 6, 43,248,188,135, 79, 83, 20,142, 65, 69,113, 64, 83, 57, 68, 50,176, 33, 32, 6, 17,206, 25, 35,122, 22,113, 23,120,
+ 48, 85,240, 33, 10,148, 70,187, 99,113,180,164,118, 44, 22, 78, 30, 46, 62,217,111, 40,213, 44, 26,122,102,224,100,101,240,247,
+ 79, 27,252,179,255,242, 55,120,244,203,247,241,120,113, 15, 54,158,131,217, 73, 32, 78,140,224,202, 33,122,160,250,255,153,123,
+183, 94,203,182,227, 60,236,171, 26, 99,206,181,214,222,221,125, 14, 15,207, 17, 41,145, 10, 47,226,205, 18, 73, 89,176,101,229,
+ 38, 40, 2,228, 7, 3,121,203, 75,126, 14,255, 68,128,188, 58, 72, 30, 29, 32, 48,236,200, 82, 2,217,129, 21,203,177, 44, 65,
+ 84,100,200,114, 20, 37,186,146,135,231,210,167,123,239,189,214,154,115,140,170, 60, 84,141, 49,199,152,107,238, 75,147, 18,144,
+ 38,136, 62,189, 47,235, 58,215,168,170,175,190,139,102, 16, 5,140,145,112, 53, 50,246,135, 17, 52,236, 49,176, 73,239,178, 68,
+132,144, 16,195,100,144, 59, 17,118,145,144,147,145, 57, 75, 10, 26,185, 46,220, 72, 29,112, 20, 0,200,106, 13,155,136, 0,156,
+ 65, 20,253, 26, 10, 94,251, 92,206, 39, 25,148,205,160, 39,178,241, 62, 4,209,245,230,104, 10,182,184,228, 77,193, 36,213,152,
+136,188,190, 9, 92,190, 14, 1, 83,104,234, 2, 53,132,222,214, 89,179,120, 9,216, 32,123, 22, 5, 38, 5, 81, 2,209, 4, 65,
+ 48, 11,121, 18, 16, 5, 72,142,240,183,237,146,245,168,101,130, 43,199, 52,161,129,145,201,223,102,114,162,192,197,182,182,151,
+158,249, 62, 54, 52,254,188,104, 10,109,119,248,180,123,118, 17,156, 4, 53,231,157, 86,230, 52,170,219, 17,161,107,192,187, 47,
+246,253,125,183, 3,153,117, 87,203,196, 47, 14, 33, 51,154,233,205, 27,146,208,104,218,219,255,115,185,253,198, 33,168, 66,218,
+218, 46, 44, 26, 91,196,118,178,213, 69,203,159,125,215, 95,139,174, 44, 31, 36,169,100, 50,237,144,147,234,222, 87, 30,191,127,
+ 16,179, 2, 67, 32,124,124,115,139, 63,189,153,107,174,249, 26,183,174,129, 50,121,198, 73, 7,252,167,127,251, 91,248,165,175,
+188,141,243,249,108, 19, 16,181,168,135, 94,236, 97,237,178,150,101, 2,199,178,151,215, 39, 46,143,215, 5,191,248,142,111, 78,
+236,141, 4, 83,229,146, 35,208,202,190, 47,137,100,139,225,131,190, 9,223, 94,155, 21, 3,244,114,231,241,200,228, 98,142,125,
+232,200,140,143, 53, 3,157, 33, 34, 61,109,135,190, 94,193,135,198,168,228, 41,127,230,105,194,187,239,190,139,103, 47,222,194,
+235, 87,175, 48,159,206,152,231, 9,146,114,245, 38, 55, 41,163, 77,193,236,178,170,105,158, 65,164, 75, 64, 74,140,216,123, 0,
+203,110, 24, 16,157, 52,151,197,125,217,199, 1, 28, 24, 41,149,152, 79, 51, 80, 49, 15,114,247,156,207,106,159, 57,143,167,133,
+191,183,150,189,126,198,249,124, 52, 29,189, 8, 14,251, 29,134, 97,132,168,226,116, 58,225,245,173, 69,160,150, 38,112, 24, 34,
+246,251,157,193,255,100,108,249,221,104,118,173,196, 77,195,202, 92,227, 94,161,240,196,186, 51,238,238,110,145,210, 25, 80,193,
+110, 48,200, 95, 36,155,171, 89,157,166,121, 89, 69, 12,163,219,130,154,122, 37,249, 30,178, 52, 88,163, 91,219,206,179, 49,240,
+147, 91,225, 6, 46,190,239,229, 51,100,174,124, 37,162,215,154,151,224,231, 22,213, 85, 11, 26, 62, 76, 18, 56, 3,222, 66, 97,
+184, 36, 74, 6, 70, 28,130,163, 26,185, 34,165, 37,219,190,160, 51,149,215, 2, 75,165, 51, 84,162,173, 21, 79, 41,235,253, 65,
+ 29,161, 56,143,123,252,223,255,254, 3,124,227,240,255,224,250,167,190, 14,145,177,202,124,195, 48,128,120,176, 21, 3,219,234,
+ 38,134,128,171, 49,226,250,250, 10,215, 87, 7,196,235, 43,196,221, 53,226, 16,193,209,136,209, 97, 24,172, 33,241,223, 17,138,
+144,172,206,132,183,195,162, 52, 43, 32,227, 51,132, 24, 16, 56, 86,150,189, 58,113, 82,179, 64, 52,187,133, 44,170, 1,217,156,
+ 5,121,154, 65,249,236,178, 77, 70,202,142,166, 72,118,246, 19,160, 98,190, 0,226,254, 41,189,100,182,120,213,155,141, 45, 49,
+ 12,250,247,116, 57,184,125,173,104,240,227, 69, 42,147, 94, 8, 56, 9,225,120, 86,156, 79, 39,156,167, 91, 76,243,140,121, 78,
+152,167, 9,115, 58,131, 35, 83,213,156,151,211,180,236,146,155,240,151,174,248,245, 91, 20,173, 26,231,234,156,179,129, 27, 94,
+110, 14,181,147,207,117, 12,100, 66, 13,119, 93,195,189,192, 2,213,243, 6,137,174,118,145, 69,106,213, 92,120, 76,184,216,155,
+183, 60, 0, 52, 68,193,101, 79, 78,110,193,186,232,201, 69,129,228,163, 83,209,132, 54, 54,255, 64,219,217,118, 26,129, 37,244,
+134, 87, 13, 13,225,146,209,183,144,242,236,195, 90,249,237,186, 32, 43,170,232,224,124, 93,237,159,181, 97,208,207,190,159, 9,
+ 88, 94, 27,110,224,246, 54,111, 60, 6, 70,186,123,133,223,187, 25,241, 83,127,231,239,226, 39,174, 5,119,231, 84,109, 46,245,
+145, 73,175,122,229,173,126, 88, 27,179,148,251,107,124,121,252,118,120, 93, 93, 63,195,187,239,188, 93, 99, 40, 47, 26,181,198,
+150,120,141, 9, 42,182,221,217,150, 68,167,110, 17,244, 70,164,186,101,116,126,252,104, 91,152,244,218,235,237,158,220, 68,108,
+200,246, 84, 31,221,246, 63,246,200, 30,106,180, 82,154,240,222,123,239, 25,161,236,230, 53,158, 61,127,134,103,207,158,225,112,
+216, 91,186,154, 39,155,229,148,106, 78,121, 89, 83,229,172,190, 19, 23, 28,207, 39, 28, 39,115, 14,179,140,114, 32,207,169,238,
+172, 11,151, 38, 50, 91, 78,118, 54,139, 85,118, 38, 28,187, 78,159,216,254, 63, 58,244,126,115,119, 7,149, 92,155,149, 18,243,
+202,193, 34, 70, 85, 45,239,252,124, 62, 2, 16,164,148, 49, 77,147, 59,193,113, 45,224,182, 67,158, 17, 67,201, 80,183,251, 49,
+ 50,157, 53, 48, 73, 50,230, 36,184,125,253, 26,121, 62, 27,148,188,219, 65,193, 72, 30,221,122,158,146, 39,204, 69,183,250, 20,
+236,118,163, 21,144,146, 97,238,136, 2, 59, 1,108,246, 66, 48, 12,131, 17,165,156,217,111, 59, 97,139, 90,181,189,186, 37,165,
+221,157, 38,228,148, 16,216, 8, 96,228, 73, 98,115,202,198, 18,103,114, 98,153,217,210,150, 36, 72,147, 83,177, 17, 26,125, 39,
+111, 4, 70,174,103,124,140, 1, 49,122,147,225,205,131,233,200, 29, 37,177,165,244,211,123, 95,221, 44, 24, 80, 0, 47,246,192,
+255,241,193, 53,238,254,240,119,240, 31,255,236, 1,252,233,159,193,200, 25, 66, 1, 44,130, 49, 88,190,124,242, 9,120, 23, 9,
+135,195,128,171,235, 29,226,213, 51, 32, 92, 33,251, 74, 81, 84,221,216,133, 64,158,146,166,176,176, 21,226,126,207, 85, 87,141,
+146,235,170,194,154, 39,127, 61, 66,116,142, 7,213,148,210, 33, 90,243, 20,130, 53, 23,182, 87, 39, 68,100,196, 8, 71,157,236,
+ 32, 74, 66,174,121, 95,236,117,139, 81, 81, 65, 95,139, 24,156, 90,179, 42,207, 82,177,245,136,175, 84, 37, 91, 48,141,136,239,
+232,157,227, 64,140,147, 16, 78, 19,144, 78, 19,116,186,133,228, 51,178,204,144, 44, 46,186, 35,170,110, 55,229,245, 15,104, 36,
+ 92,229,223,157, 52,108,129, 60,185,241, 78,191, 36,232, 74,221, 39,200,138,149,221,239, 96, 55,168,119,149,117,191,144,232, 90,
+107,209, 42,159,107, 66, 58, 20,253, 36,223,195,158, 75, 90, 91,105, 12, 10,252,121,145,192,214,238,217,101,153,166, 85,115,195,
+150, 95,200, 94,173, 7, 52,123, 54, 46,175, 72,116, 80,113,130, 69, 89, 41,172,139,243, 66,204,211,198,132, 71, 32,203, 97, 41,
+104,204, 99,164,129,138,251, 73,184, 85, 49, 44,251,236, 69,101, 80, 27,148,238, 96,151,250,243, 2,198,126, 63,224,253, 63,252,
+ 29,252,195,127,252,175,240,193, 52, 98, 55,114,231,229,223,214, 27,209, 94,154, 88,112, 29, 1, 86, 23, 76, 91, 76,180,243, 47,
+ 95,231,147,215,226, 75,209,246,122,186,198,146,182, 11,249, 5, 57,189,198,174,210,102,149,212, 7,179, 75,239, 41,230,213, 10,
+ 86, 27,106,106,154, 0, 0, 32, 0, 73, 68, 65, 84,159, 36, 77,207,121,118,210,151, 54, 50,207, 55, 36,244,119, 46,121,250, 96,
+237,167, 31,177,160,151, 21,199,143,125,230, 51,200,162, 78,180,162,202, 89, 40,220,131, 44,102, 93,186, 59, 28,204,171, 61,132,
+ 70, 86,101,239,111, 74, 54, 69,148,200, 82,184, 65, 75,224, 1, 68, 38,247,202, 41,185,236,204, 51,235,185,245,183,167,186, 79,
+182,125,252, 53,206,211,236, 89,238,177,202,211,198,113,128, 16,225,120,116, 51, 24,223,117,146,250, 68, 63, 77,206,160, 54, 72,
+127, 55, 12,184,218, 31,140, 4,235,182,171, 37,243, 93,253,224, 39,135, 86,231, 41,225,116, 60, 66, 37,185,247, 55, 33,137,224,
+120, 58, 98,154, 38,136,199,132, 78,201,154,135,133, 63, 73,216,143, 1,251,253, 30, 28,173, 97, 24,135,136, 48, 88,218,150, 90,
+180, 23,146,199, 13,103, 81, 68,182,130, 54,207, 25,243, 52,155, 47,123, 49,141,202, 69,146, 71,216,237, 45,131,189, 64,123, 54,
+165,251,170, 48,144, 23,162, 80,179,232,201,119,212, 69,194,197, 30,250,210, 82, 98,205,243, 61,120,226, 88,145,251,154, 52, 79,
+253, 61,165,110, 78,127,195,166,212,255, 30, 24, 56, 31,174,240,143,127,227,175,240,211,159,252, 6,190,253,203,191,128,103,239,
+126, 25,135,235,107,191,142,156, 92,201, 22,226, 51,104,194,243, 67,196,120,125, 5, 26,118, 6, 93,179,185,230,157,167,132, 60,
+ 77, 96,117, 82,101,195, 57, 33, 42, 35,155,171, 52, 24, 24,130, 53, 51,202,228,110,127,217, 61, 5,140,241,201,238,167,207,193,
+ 2,136,204,167,157, 65, 20,109,149, 20, 24, 8, 17, 9,108, 8, 18,188,153,160, 80, 87, 32,164, 25,224,197, 84, 75,104,129,232,
+ 9,121, 25, 67,153, 59,162, 58,156,104, 29, 32, 8,108,103,150, 50,119, 3, 31,249, 36,127,206,140,121, 82, 96, 62,129,228, 4,
+130,173,145,184, 88,146, 18,181,231, 21,117,184, 62,121,248, 71,235, 34,199,181,215,208,198,114,149, 58,211, 25,172, 36, 97,170,
+219,155, 67, 90, 33, 52, 29,140, 78, 45, 1,174,157,204,221, 8,159, 90, 57,217,229,193, 38,205, 99,145,202,230, 95,167,153,233,
+133,188,139,176,160, 5, 10,105,100,126, 11,108,219,166,214,101, 89,140,105, 90, 67,157, 66, 43, 20,109, 53,202,174,143,149,158,
+194,220, 78,162,101,215, 34, 69,255,173,253,239, 86,205,123, 37,244,245, 72, 23,173,158, 95, 75, 36,108, 59, 32,105,158, 67, 71,
+177,246,194,126, 24, 2,226,233, 53,206,217,180,162,180,202, 68,239, 39,194, 30, 69, 40,255, 81,247,235,155,142,105,122, 65,148,
+107,255,132, 16,112,251,250, 37,222,255,193, 7, 38, 45,194,194,194,215, 78, 90,215,163,224,165, 17,235,153,231,188, 81,179,169,
+107,250, 30, 47,207,237,232, 13,172,172,243, 54, 15,180, 57,101,252,248,143,255, 4,222,123,247,211,102,166,242, 6,244,184,173,
+187, 16,125,202,238,254,105,109,202, 67, 13,196, 16, 35, 94,188,245, 54,238,238,142,149,165, 61,207,147, 21,188,178,154, 98,115,
+131, 11, 67, 68, 28,134, 22, 95, 50, 50, 86, 74, 56,158,207,149,193,125,158,204, 49,142, 56, 32,101,139, 53,229,154,125,206,213,
+172,165,232,171, 9,102, 44,163, 34, 24, 66, 64,136, 3,110,239, 78,144,156, 49, 12,209,184, 40, 98,246,161,197, 8,102, 62, 79,
+134, 14,138,161, 5, 41,101, 35,180,165,185,178,242,139,108, 81, 28,149,186, 58,236, 60,123,124,130,170, 49,140,231,121, 50, 87,
+185,201,124,239,167,233,140,243,228,240,184, 42,238,142, 71,136,164,197, 6, 52,152, 7,252,224,171,135, 98, 94, 21,138,211,153,
+100, 79,238, 44, 41, 93, 84,247,240,183,119, 39,220, 29,143, 70, 10,243,119, 45,101,133, 72,170,111,224, 56, 68,140,187,209,101,
+ 96,140, 52,103, 11, 57,217, 13,142, 2,248,238,215, 27,145,148,197,124,221,131,161, 18, 73, 77, 89, 32,201,236, 97, 77, 11, 47,
+238,191,111,215,255, 57, 9,230,201,208,128,121, 78, 96, 73,150,132,198,177,204,103, 91,174, 35, 63,212,245,245,238,149,226,127,
+251,224, 83,248,157,127,242, 63,227,191,248,226,159,225,221,159,249,101,124,250,211,239,224,234,237,119, 16,119, 7,179,230, 29,
+ 2,246,227,136, 16, 35,134,129, 49,238, 15,224,184,119,213,133, 17, 30,149,172,240,147, 36, 48,171,153,226, 56,212,110,102, 62,
+ 75, 67,111,196,192, 0,138,182, 6, 66, 48, 52, 64,221,121,174, 16,198,165,225, 16, 36,181,247, 2, 34, 86,144,201, 72,209,115,
+ 38, 76, 73,144,231,132,160,201,115, 0,204,161,111,206,228, 60, 5,105,110,139,186,213,175,116,138, 47,171,163,246,121,114, 4,
+197, 2,223, 61,248, 37,120,228,172,214,122, 39, 12,156, 50,227,116, 38,232,249,236, 43,129, 12,190,208, 47, 43,122,149,181,214,
+121,187,146,194,138, 12,171, 0,207,226, 47,214,208,104,213, 91, 40,158, 30,216, 88,182,138,221,181,169, 6, 53,196, 51,238,160,
+117, 52, 59,234,213,110,160,219,213,235,106,114,233, 27, 11,233, 19,228, 87,255,239,161,120, 92,232,179,215,123,217,197,104, 37,
+160,215,113, 51,100,145,201,181, 82, 50,148, 61,112,251, 28,151, 11,160, 78,100,101,119, 94,236,104,187, 6, 99, 77, 14, 92, 30,
+ 39,109,238,218,219,233, 85,186,226,177, 24,221, 44,236, 97, 33,114,184, 14, 53,196,226, 98,146,214,254,245, 83, 69, 93, 65, 16,
+150,140,236,135,166,195,194,212,221,130,229,153, 93, 1,177,106, 2,234,237, 53, 76,127, 87,127, 32, 6,151, 29,182, 11,129,156,
+ 47,186, 74,186, 55,157,248,158,189, 32,240,228, 29,122,219, 68, 37, 1,146,188, 65, 84,252, 61,166, 75, 16,125, 82,219,161,143,
+170,249, 30,127, 14, 5,125, 58, 29, 75,144,139,214,201,131,153,186,168, 77,102,198, 48,140,126,208, 50,200, 37, 99, 49, 4, 64,
+178,201,112, 20,184,218,239,125, 2, 34,183, 13,182,221, 57,133,104, 6, 45,126,155, 34,166,193,141, 67, 0,124, 23, 77, 28,112,
+123,123,132,228,100, 97, 36,162, 53,232,133, 99,196,156, 19,210,116,174,198, 43, 42, 54, 9,167,156,220,161,205,138,190, 49,228,
+129,187,187, 19,230,105, 66, 8,230, 61,191, 63,236,205,130, 23,182, 87, 61,157, 39, 28,239,142,152, 79,103, 28,143, 39,220,221,
+157,144,230, 25, 57,207,142,190, 44,122,111,132, 96,190,236, 80,115,203,115,150,251, 56,142,184, 59,207, 72,243, 25,227, 16, 16,
+162, 25,173,140,129,240,236,217, 21,198,157, 89,254,206,211,140,156,236,249, 79, 41, 67,196,136,134, 53,127, 94,220, 92,198, 37,
+125,193,245,237,134,106,144,175, 62,140, 84, 87, 76, 83,178,179,232,125,212, 68, 18, 51,217,129,251,157,139,175,183,178,230,170,
+126,129, 42, 34,171,173, 8,200, 44,104,153, 13,129, 81, 54,155,188,167,108,211, 91, 25,219,125, 52,249, 8, 32,190,216,227,191,
+255, 23, 55, 24,254,237,255,128,111,125,251, 29, 60,255,204,215,240,252,173,183,241,226,249, 11, 92, 93, 63, 67, 28, 15,136,113,
+192, 48,238, 16,195,136,195, 8,240,238, 0, 38, 43,118, 44,132,145,197,115,207,203,226,143, 93,121, 96,196, 72,165, 96,245, 40,
+ 48, 18, 49, 82,182,235,130, 84,204,186, 59, 68,100, 71, 48,202, 62,157,104,201, 54,207,217, 81, 16, 73, 32,228, 26, 94, 83,149,
+ 4, 57, 65,188,176,199, 64, 32, 30,205,172, 38, 89,168, 78,158,205, 66, 24,154,124,192,165,186,123, 23, 63,103,181,154,127, 21,
+ 40,190,220, 62,154,122,167,125,112,151,147,163,143, 9, 56,157, 50,228,116, 2,201, 17,177,192,163,129,109, 23,144,176,236,211,
+213,221,114,114, 83,208, 47, 38,108, 47,234, 92, 9,119, 84,191, 39, 69, 30,190,178,157,221,186, 28,202,225, 74,141,171, 93,111,
+ 63,167,253,197, 2,133, 42, 47,236,109, 66, 7,197, 11,250, 56,213, 11,127,122, 20,100,161,184,200, 45, 91,239, 11,205, 51, 45,
+ 69,215,138,113,249,240,104,199,214,214,194, 31,232, 72,133, 85, 45,186,176, 36,169,183,110,232, 44,114,213,246,253,210,160, 36,
+173,222,184, 56,219,241,198,237,105, 23, 86,231,205, 8,209,165, 46, 27,212,201,204,180, 77,155,115,254, 67,145, 83,107, 27,226,
+221, 17,217, 46,227, 88, 29,250,233, 96,117,173,225, 63,235,130,178, 4,242, 92,194,242, 27, 44,248,123,156,219,180,193,165,141,
+184,153,145,105,192, 23, 62,255, 57,188,250,248, 3,124,248,242,181, 39, 83,233,197,114,165, 79, 25,120,204,104,166, 55, 84,106,
+ 92,125, 54,127, 85, 27,247,189, 48, 4,124,255, 47,255, 28, 10,115, 98,211,199,140,109,116,245, 52,181,145, 73, 62,129,100,252,
+248,148,244,148,130, 14,164,148,241,234,213, 13,152, 45,174,147,124, 26,214,154,121, 93,140,104,220,131, 29, 90,119,181,131, 79,
+ 18,236,166, 51,243, 52,129, 84,112,245,236, 10,227,110,172, 16,182, 17,228,204, 1, 34,167, 4, 68,243,228, 14,158,197,158, 37,
+ 99,140, 17,196, 3, 94,223,222, 66,114,178, 93, 49,236,241, 49, 51,246,187,161,238, 39,217,189,189,201,253,230,225, 94, 7,167,
+105,198,224,187,165,224,251,236,253,110, 52, 39,186,105,194,156,197,247,210,230, 50,105,153, 24, 1,199,211, 9,147, 59,213, 73,
+206,136,145, 60,190, 52, 35, 48, 99, 78,182, 75, 83, 47,152, 33,112,205,222, 30, 7, 91, 7, 72, 78,216,141,214,244,204, 98, 89,
+232,202,140,211, 57, 89,193, 0, 99,136,166, 87,158,147,167,186,169, 96,244, 29, 60, 60,205,145, 96,122,251, 24,184,166,171, 9,
+220,200, 36, 68, 40, 18, 32,226,110,119, 17,115,154,145,197, 66, 75,132, 98, 37,141,150,156,114,241, 20,180,170,194,241, 21, 21,
+177, 89,241, 70,202, 80, 97,119,189, 83,159, 20,123,215,193,237,208,163,123, 14,249, 13,103,210,119, 15,138,223,126,255,211,248,
+213,127,244,207,241, 95,255,252,111,226,207,191,242,203, 72,119, 31, 96,164, 4, 30, 6,100,188,246,160,153,140,221,200, 8,195,
+ 14,148, 7, 0, 1, 35, 11, 78, 67,244,245, 28, 67,148,161, 57, 53,103,104,201, 77, 39,204, 74, 96, 15,180,129, 26,251, 61,121,
+174, 61,147, 90,102,186, 88,147,153,221, 8, 38, 0,160, 96,182,188,102, 4, 99, 67, 78,153,184, 7, 88, 88,140,176, 98, 22, 66,
+ 78,192, 16, 18,134, 16,144,104,128, 36, 53, 37, 66, 81,227, 32, 85,171,113, 83,133,201, 18,108, 69,173,162,101, 33, 64, 23, 66,
+ 93,249,155, 64, 29, 97, 29,100,136,203, 49, 3,114, 22,236, 78,103,112, 86,219, 75,100,184,164,202,237,244,162,147, 45,234, 96,
+226,112,115, 63, 33,146,239,219, 23, 25,156, 52,211, 40, 87,255,219,134,208,180, 50,208,232, 36,109,237,177,181,250,185,150,100,
+214, 77,248,122, 25,196,194,205,196,170,247,202,221,202,154, 96,225, 14,112,117,164,235,205,100,186,105,178,192,228,165, 25, 32,
+238, 38,100, 21, 49,171,215,118,210, 36,170,166, 61, 97, 21,144,179, 64,236,246,250,102, 52,251,126,105,167, 80,170, 77,133, 52,
+122,249,133, 20,168, 11,242,208, 34,236,218,234,200, 47,209, 5, 52,171, 17,116,144,118,235,124,167,189, 61,108,183,195,215,174,
+184,214,233,159,176,185,235, 95,127,194, 31, 98,197,183, 72,192, 67,164,176,218,124,148,132, 59, 21,124,240,241, 39,184, 59, 39,
+103, 33, 95,146,205,245, 73,101,114,133, 39,117, 4, 69,125,128, 24,223,152,202,144, 29,196,251,171, 3, 62,253,206,167,170,252,
+240,177,187,107,249,119,186, 14,131,251, 17,254, 60,213,157,175,120,171,255,249, 95,252, 5,224, 4,183,156, 50,230, 52, 35,229,
+236, 50, 50,212,204, 0,246, 29,120, 12,193,226, 64, 57, 86, 47, 4, 14, 1, 28,185, 90, 94,198, 97, 0, 17,176,219, 13, 24, 98,
+196, 16, 77, 95, 28,199, 97, 81, 7,176,199,174,138,173, 47,206,211,201,108, 87,217,219,112, 70,205, 31, 47, 80,165,152,151,170,
+ 53, 9,133,224,230,146,181, 60,207, 72,105, 54,226,222,233, 92,205, 94,178, 67,244,183,183, 39,156,142, 39,243,102,112,203,205,
+156,109,167,125, 58, 77, 56,159,207,213, 64, 41,103,115,176, 19, 79, 27, 76,115,106,108,102, 67,141,254,228, 96, 69, 58, 6, 2,
+200,210,222,118,131, 77,152,211, 44,152,231, 51,210,116,182,198, 97,154,220,139,221, 61,233,201,216,234,217,165,126,101,146,203,
+110,253, 90, 19,217,188, 56, 23, 93, 61, 17,123,240,203,146,159,158,178,241, 3, 24, 78,192, 99,119, 4,241,195,218, 98, 65,185,
+ 30,212, 41,155, 43, 90, 8,182, 95, 47,200,135, 77,145,252, 8,139,243,158,206,244,158,110,147, 21,184,126,107,196, 63,252, 45,
+194, 95,254,218,127,135,159,251,242, 29, 14,159,253, 38,194,112,192,179,195,136,103,207,159, 35,238, 15, 38,113,214,140, 24, 35,
+174,134,128,221, 62, 2, 97,135, 73,109, 34, 14,174,164, 0, 17, 34, 21,233, 98,168,251,109, 14, 70,188, 28, 73, 77, 58,232,147,
+118,206,100, 22,187,200,238,128, 88,194,134,108,173, 3, 17, 68,118,239,133, 24, 49,107, 64,158, 25,200,166, 45, 55,106,124,132,
+ 80, 64,202,132,105, 18, 80,154, 48,114, 54, 54,126, 24,109,234, 22, 79,242,146, 12,169,213, 97, 89, 1,233,170, 38,224, 66, 96,
+147,235, 98,171,102,109, 96,137,169, 21, 98, 28, 51,112,119, 86,132, 47,127,254,189,239,156,110, 39, 99,171,186,235, 27,161, 53,
+146, 41,105, 94, 27,250,222,134, 57, 46,205,155, 72, 77,250, 58, 81,239,180,211,190,193, 61,109,105, 29, 40,210, 20,240,117,226,
+ 23, 53, 90,239,246,177, 16, 86,236,114,106,210,206,122,167,226, 37, 79,188,120, 2,211,170, 64,161,185,159,203,198,160,107, 70,
+219,189, 56, 90,159,223,133,159, 64, 14, 9,181,100, 64, 90,201,248,150,111, 50,176,161, 91,108,131, 3, 80,145,143,246,117, 90,
+ 12,115, 43,177,102, 67, 89,192,104,179, 8,104, 67,250,215, 71,156, 96,227,245,191,248,156,210,242,126,171,110, 59, 66, 63, 46,
+167,162, 39,192,211,212,249,186,235, 90,242,229,143,254,120,119,107,240,168, 7,115,116, 41,149,212,167,172, 17,225,194,195, 90,
+171,186, 97, 19, 87,220,120,173,208,235,230,137,150,247, 7, 10,102, 35,251,205,243,244,240, 41,183,206, 70,237, 12, 41,158,218,
+126,252, 40,219,206,254,198,230,148,240,181,175,127, 29,170,130,211,233,136,217, 93,218,200,189,100, 82, 50, 77,246,156,108,210,
+ 86, 53,207,244,228, 12,237, 37,141, 13, 72,115,194, 48,142,120,246,226, 5, 40,120,144,134,123,105,139, 67,233,102, 13,107, 48,
+111, 32,212, 6,160, 52, 35,193, 19,208,180,149,140, 54, 22,179, 21, 5, 34, 51,255, 40, 63, 85,200, 87, 5,117, 42,118,202,213,
+ 67,222,165, 90, 41, 89,174, 67, 74,130,243, 52, 33,165,100,122,103,119, 69, 44,114, 53,219, 89,219,105, 89,206,143,224,106, 0,
+ 34,194, 24, 35,230,172, 70, 0,140, 1, 96,194,243,171, 29,194,184, 71, 74,185,198, 76,159,230,140,227,241, 22, 44, 22,176, 18,
+ 98,172, 60,148, 98, 51, 26, 73, 49,142, 3,230,140,154,115, 14, 88,177,166, 2, 3,231,217, 89,238,193,164,110,129, 65, 33,248,
+116, 46,149, 92, 23, 61,248,166, 96,146, 33, 16, 50,216,222, 7,119,170, 44,178,182, 84,146, 79, 84, 17, 9, 56,105,192,235, 79,
+110,192,233,246,222, 48,151, 53,141,229, 41, 14, 75,135, 8,252,201,237, 30,249,207,254, 47,252,151,191,112,192,221, 79,254,125,
+124,252,193, 13,248,252, 18, 20, 25, 89, 24, 81, 5,239,189, 8,120,254,222,167, 49,133,119,144,231, 12,201, 51,206, 73, 48,221,
+157,128,249, 14, 25,138,148,213,121, 9,213, 46,213,131,163,180,250,158, 18, 51,178, 88,147, 5,201,232,173,204,150,113,166, 20,
+209,146,110,153,153, 45, 43, 93, 50, 4,201, 94, 85,241,236,118,191, 5,110, 2,186, 24,166,232, 8,180, 4,143, 19,212,173, 97,
+ 23, 11,246, 54,224, 5,170,247,191,104,132,154,102,215, 33,140,180,212,145, 16,119, 8, 63,245,249,247,190, 99,174, 72,132, 84,
+ 38,113,159,182,165, 59,195, 23,200, 86,155, 98, 86, 24,206,114,161, 85,110,127,150, 26,137, 17,182,139, 66,179,171,191,192, 1,
+105, 61,153, 53, 44,246, 38, 62,102, 41,248,109,225,209,205,194,169, 27, 39,161,110, 24, 42, 40,209,102, 35,178,166, 90,175,139,
+ 95,125,205,156,249,223,245,179,212,235,216, 74,218, 19, 53, 13,130,250,125,107,165,246, 93, 48,224, 22, 57, 93,147, 97, 94, 76,
+ 87,218,215,132,232,210, 0,133,169, 39, 96,181,184,196,146, 21,190,250, 84,210, 86, 33,111, 87,204,151,241, 97, 15, 21,242,237,
+239,173, 21, 18, 91,176, 50,117, 12,237,246,110,203, 93,247, 38, 43,218, 33, 65, 45,132,133,141,231,115,129,246,123, 33, 40, 42,
+143,101,125,208, 63,143, 18, 93,137,149, 38,181, 4,137,156,206, 39,255, 89,126, 90,117, 38,188,129, 57,124,215, 7,252,208,123,
+244,110,231, 25, 35, 62,248,224, 67,124,238,115,159,195,103, 63,251, 25,124,244,209, 71, 16, 89,156, 39,139, 29,171,100,197,249,
+124,170,218,241,211,249,100,168, 84, 52,215, 51, 56,121, 43,165, 12, 98,224,234,249,115,140,113,196,233, 52, 97,154,230,234,147,
+110,197,217, 25, 57,236,210, 30,136,235,223, 93,126,228,242,181, 92,188,213, 93, 10,183,223,239, 49, 87, 98, 93,168,141, 80,114,
+150,247, 56, 70,107,150,149, 48, 12,134, 12, 12, 67,196,110, 55, 96, 28, 7, 39,165,101,204, 62,217,207,115, 66,154,179, 71,162,
+138, 59,158, 69,111, 84,202,190, 90, 43,177,175, 16,227,136,201,114, 11, 16, 48,167, 9,135, 33, 66,137,113,216, 69,196,221, 1,
+183,167,201, 96, 96, 16, 94,223,157,112,123,251, 26, 3,137, 49,227,171, 37,183,175, 21, 61, 69,142, 57, 66,224, 89,236,243, 84,
+173, 79,115,214,186, 22, 41, 4,202, 80, 82,192, 28,221, 10,229, 98,246,224, 24, 43,232,238,179,193,193,124, 72, 28, 5, 40,131,
+ 80, 96,114, 56, 58,215,175,135, 96,105, 97,175, 94, 31,129,243,205,166, 43, 97, 71,196,122, 67, 95,154,113,100,124,247,207, 4,
+ 95,215,127,143, 95,248,165,159,197,203,253, 55,113,247,234, 37, 36, 29, 49, 9,144,167,140,183,199, 25,135, 79,189,192, 20, 62,
+133, 84, 56, 8,126, 93, 36,201,152,146, 64, 83, 2, 36, 85, 25, 89, 57,195,139, 23,187, 56,199, 9,206,156,175,164, 79,129,113,
+159, 72, 45,158,181, 37,141,187, 42, 65,196,248, 82,196, 25,153, 2, 72,168,250,185, 7,181, 88, 91,138,102, 11,155,136,129, 12,
+176, 38,196,168,246,254,242, 80,207, 30,117, 24,191,156, 71,222,227, 54,171, 54,234,226,175, 75,154, 92, 69,133,125,175,207,181,
+254,217,237,140,195,184,156, 46,178,210,149,149, 29,184, 53,148,117, 35,220,232,185, 23, 44,189,232, 4,203, 66, 95,180,199,217,
+215,164,181, 22, 50, 95, 75,224, 54,217,241,139,148,175,219,126,183,165,136, 47,136,112, 84,119, 71,132,214,137,110,173,174,104,
+111,167,209,155,183, 59,103,221,230, 0,244, 11, 3,194, 61,222, 97, 40, 30,223,102, 7,235, 63,199,212,173, 9, 46,229,125,218,
+ 89,152,234,138, 61, 69,181, 97,232,153,251,109,204,107,171,217,215,174,201, 90,180,226,151, 34, 47,237,188,208,151,215, 87, 43,
+ 65, 15, 43, 66,158,182, 77, 81,251,161,198,125,158,237,180, 49,244,210, 34, 11,172,128, 5,119,156,130,213, 2,161,238,247, 32,
+ 15, 3,129,143, 78, 20,232,245,253,253,186, 98,131,157, 79,235, 29,226,250,123, 11,191,162,174, 54,220, 72,227, 33,130, 81,215,
+240,234,211, 10,177, 62,245,107, 63, 4,118,207,204,144,156,240,239,254,224,223, 97, 55,238, 16, 60,208, 67,125,167, 92, 27, 9,
+ 53, 35,154,148,146,145,210, 56, 32, 14,195, 2, 19, 91,128,181,173, 34, 82, 54,217, 80, 48, 88, 55, 59,121,209,118,201,138, 24,
+ 7,115,206,242, 98, 95,200,112,196, 64,136,161,102,176,199, 24,234,234,235,176,223, 27,155,222,201,124, 90,160, 98, 15,146,225,
+192,134, 68,206, 51, 68, 44,224,197, 36,142, 1,138,128, 41, 47,190, 13, 68,240, 80,151,132, 24,109,178, 45, 77,130,229,204, 91,
+115, 32, 89,170, 54,218,156,217,164, 94, 7, 89,205, 97, 46,144,241, 41,174,175, 70, 28,174,174,112,158, 5,121, 58,129,200,164,
+125,243, 60,153,131, 26,219, 26, 96,154, 83,149,176, 45,241,206,166,145,207,110,101, 74, 80,111, 56,140,109,205, 37,121,206,125,
+221,181,253,220,137,120, 52,171,107,242,217, 72, 99,145,141,176,103,146,172, 92,155,120,114,197, 66, 78,201,172, 71, 41,116,171,
+141, 33, 40,120, 24,158,230, 36,247, 4, 91,248,118,141,122, 21, 20,249,197, 91,248,111,254,201, 71,248,222,175,254,183,248,153,
+207,223,225,221, 47,252, 52,246,215,239, 96,183, 27, 65, 67,196, 71,119,140,233,213,107, 4,189, 53,184, 91, 25,147, 56,162,192,
+222,116,197, 96,254,231,236,108,241,106,229,218,164,120,194, 72,180, 28, 8, 74,177,238,210, 75,177, 12,206, 11,177,226,206, 8,
+172,240, 68, 27, 79,198, 83,176, 22,110,130, 98, 96, 66,185,196, 51, 41, 18,216, 18, 79, 9, 56, 11,225, 52, 43, 52,205, 8,200,
+208,192,200, 20,171, 68, 90, 60,141,207,100,144,197, 47,158, 61,115,189, 40,159, 44, 21,142,218,201,156, 86,131, 88,131, 26,134,
+ 47,253,228,123,223, 57,157, 38, 71, 89,220,159, 22,173, 70,122, 25,237,219, 93,176, 54,228, 48,246,189,186,174, 38, 5,106, 8,
+115, 23, 60, 99,186, 28, 74,182,230,177,251,160,119,172, 97,122,186,156, 56,139,132,137,233,114,158,105,167,219, 74, 74,112,179,
+ 1,194,125,129, 91,151, 89,229, 29,135,170, 61,152,181,181, 41,165, 13, 54, 19, 53,235, 3, 5, 58,115,213,118,138,166, 53,234,
+188, 90, 77,208,197, 99,211, 7,166, 97,162, 21,214, 80,164,119,122,129,174,119,104, 69, 36,198,200,112,223, 2,109, 88,156,122,
+ 73, 36,243,239,109, 13,226, 91,211,249,166,199,123, 83, 44,235,247,245,129,238,239, 65,123, 89,234,174,199, 55, 42,111,229,194,
+ 7, 61,192, 15,216,184, 71, 93, 61,200,203,139,121,251,128,211, 94,161,240, 38,144,251,143,186, 71,223,156,214, 7,155,214,191,
+242,213,175,226,249,139,231,248,193, 15,126,224,153, 0, 82,161,240, 52,207,198, 37,153,211, 18, 73,236,142,105,192,170, 1,144,
+140,253,213, 1,135,235,103,245, 93,153,166, 2,233,219, 53, 83,165,108, 49, 56,161,142,221,195,158, 43, 40, 90,224,173, 16, 8,
+135,195, 30,243,108,222,236, 37,179,189,112, 84,216,167,214,224, 9,103,228,137,107,204,236,140, 98,129,250,206, 58,167, 12, 82,
+ 91, 57,164,100,210, 67,201,166, 17,207,238,106, 88,164,146, 34, 38,127, 50,125,185,127, 22, 84,176,115,173, 61, 23, 31,113, 16,
+246,251,157, 73,146, 32,136, 33,184,223,132, 51,222,115,170,211,112, 22, 91, 3, 12,163, 77,247,168,144,121, 64, 18,130,230,100,
+201,108, 28,107, 94,123,185, 2, 2,163,166,189, 5,178,160,150,218,103,122,128,139,186,164,206, 94, 19, 47, 80,117, 69,177,112,
+104,180,168,194,192,206, 13,176, 2,151,137,240,234, 54, 33,223,126, 98,210, 49,208, 38, 75,230,135,218,243, 64,113, 61, 2,127,
+124,179,199,203,255,240, 71,248,149,159,206,216,255,212,127,134,187, 41, 66,206, 39, 51,233,153, 4,239, 29,206,208, 23,111,227,
+245,249,128,243,221, 13, 78,167, 35, 78,199, 19,230,211,157, 79,238,105,145,206,250, 26,187,178,202,235, 0,107,187, 35,117,162,
+115,137, 82, 37,159, 28,109,150, 95,114,210, 85, 27, 45,143, 46, 44,117,165,133,235, 85, 50,211, 5,193,206, 62,151,191, 21,148,
+207, 92, 36,165,166, 23,182,106,169,138,244,250,170, 68,169, 49, 62, 83,242, 65, 58, 23,242, 3, 74, 22, 75,175, 30,179,199, 58,
+140, 3,194,151, 62,247,222,119,142,167,105, 49, 53,193, 58,226,148,238,241,244,160, 70, 35,222, 78,128,253,247,218,201, 25,247,
+236,212,239,187,175,237, 95,235,247,194,180, 56, 12,108,204,201, 84,243,109,219,130,183, 76,242,122,143, 24,104, 11,178,238,225,
+114, 90,183, 36,164, 93, 30,119,197,212, 59,205, 58,234,125,146,162,143,172, 85,234,152,233,151,175,213, 82, 36,181, 37, 51,173,
+ 27,141,173,201,150, 46, 65, 97, 52,176, 92,183,110,166, 62, 82,181,251, 32,128, 16,253,201,103,109,246,232,254,132,182,216,215,
+ 79, 45,226,143,239,220,169,127, 73,239,173,145,116,209,156,188,129, 1,236, 19,202,230,211,194, 91,106,195, 68,111, 80,125, 91,
+194,225, 19,209, 6,218,186,223, 7, 56, 0,111,250, 39,132,136,151, 31,191,196,139,183, 94,224, 27, 95,255, 42,222,127,255, 7,
+ 56, 79,211, 18,240, 2,212,189,115, 57,164, 82, 18,159, 36,169, 18,238, 0,139,172,204,201,252, 14,158,189,120,142, 16,134,170,
+135, 78, 41,215,103,145,115, 54,242, 28, 7, 79,122, 91, 32,226,102,217, 5, 6,217, 20, 23, 7,204,179,133,147, 4,230,133,134,
+148,179,195,208, 25, 87,251,157,161, 0,141,229,240, 16,131,185,227,141, 70,234,179,136,212,101,162,155,167,132,156,140, 31,144,
+252,177,171,212,108, 45, 36, 75,253,168,230, 55,251, 49, 34,142, 59,207, 62, 87, 12,131, 21,224, 24,138, 83,219, 0, 14,209,137,
+134,147,217,144,187,155, 93,206,130, 33,152,227,155, 33, 1,173,175,180, 25,221,104, 78, 38, 7,116, 67,153, 54, 37, 81,155,232,
+104,118,203, 83,128,170,140, 45,242,130,132, 17, 27,226,193, 30,174, 93, 72,157,197, 45,147, 9,117,215,174, 69, 83,229,159,255,
+215,183, 51,210,221, 39,158, 82, 73, 15, 92,252,143, 95,239,181, 97,215, 69, 72,178,223, 71,252,254,247, 8,167, 63,249, 46,126,
+241,103,223,194,254, 63,250,121,188, 62, 3,233,124,194,160, 25,159, 58,100,228,231,111,227,110,186,194,124,188,193,105,154,144,
+207, 70,130,156,230,140, 60, 77, 48, 51,244,110,249,219,248,133,246,153, 15, 89,220,134,149, 10, 3,157,107,190, 65,145,239,149,
+215, 69, 37,131,213, 87, 68,196, 29,130,218, 34,148,236,198, 84,236, 62, 14, 32,174,249,243,236, 74,130,226,239, 80,157, 16,213,
+216,240,234, 70,112,229,125,229,194,146,175,123,120,106,108,197, 23,249,112,137, 3,223, 13, 3,194,151,127,242,189,239,156,142,
+231,138, 0,139,150,194, 64, 13,195,189, 23,144,107,119,152, 47,119, 0,117,222,128, 63,152, 75,173,109,211, 87,208,229,126,186,
+221,143, 19,250, 0, 44,234,138,120,211, 2, 52,132,183,154,246,182,138,115,173,102, 48, 45, 51,254,158, 6,131,188,216,147, 46,
+ 5, 82, 47,134,109, 90,224, 14,234,129,252,182, 8,111, 77,196,168,187,242,229,204, 45,186, 71,162,109, 62, 1,249, 14,188,151,
+159, 45,175,163, 94,236,187, 27,114, 32, 53,241,172,212, 30,137,253, 0,185, 36, 14,221,215, 12,216,228, 51,187,116,169, 20,158,
+ 37,119,189, 39,227, 61,133, 4,247,208,100, 77, 15,113, 32,222,164, 68,175,216,116,244,212,202, 74,192,138, 48,240,164,251, 93,
+118, 94,116,177,106,122,236,238, 10,121,239, 77, 10,250,218,227,253,169,170,251, 55,253,115, 60,158,240,173,111,127, 27,129,129,
+155,215, 55,198, 44,119,146, 27, 26, 25,171,170, 26,129,204,125, 7,164, 73, 11,179,105,216, 38,162,235,231,207,192,193,138,177,
+249,165,231,186,159,142,238,228, 85,140, 56,138,161, 74,105, 12, 2, 91, 86, 56, 49, 99,191, 63, 32,101, 65,154,103, 48,177,101,
+190,195,163, 86, 85,109,162, 21,155,204,199,113,112,246,186, 77,248, 49, 4,223,171,239,113,156, 18,206,167, 51,230, 52, 23,216,
+199,152,243, 57,249,132,158,172,192, 17,176, 27, 7, 40, 24,243, 60, 97,116,242, 29,193,162, 62, 5,206, 92,247, 3, 59, 6,198,
+ 16,163,175, 31,216,155, 32,203, 97, 47,238,121,198,212, 55, 68,128, 56, 56, 25,206,141,189, 2, 25,188, 92, 76, 76, 68,171, 19,
+ 28,209,194, 98, 15, 30, 7, 27,200, 16,199,156,197,139,179,233,211, 89, 5, 97, 24, 22, 35, 43,111, 40,224, 36,210, 44,139, 73,
+ 22,107,182,228, 54, 81, 12, 36,200, 20, 33, 41, 97,140,138, 59,137,184,123,245, 26, 65,167,142, 9,191, 94, 15, 62, 81, 98,113,
+ 49, 44, 5, 2,120, 63,226,127,255, 15,103,204,127,244, 91,248,229,191,243, 28,251,175,252,231,120,249,154, 32,167, 87, 56, 68,
+ 1,237,247,184,157,119,152,143,183,230,119,126,182,247,109,158, 51, 52,217,250, 66,200, 84, 72,154,181,106,206,203,202,178,176,
+248,203, 74,197,200,117,201, 80, 72, 31,152,109,104,151,229,124, 35,212,180,183,226, 48,199,205, 55, 99, 51,221,150,151, 32, 3,
+ 30, 6, 99, 95,140,197,212,203,121, 35,196,228,206,117,236, 86,194,188,172,140, 9,171,112, 23, 44,185,235, 21,121,160, 78,129,
+ 68, 80,155,212,191,248,185,247,190,115, 60,158,141,114,191, 4,116,247, 36,177,166,128, 83, 75,144,194, 90,115,189,248,178,235,
+230,180, 68, 93,241,163,203,237,249, 35,240,123,179, 43, 95, 85,227,114,251, 3, 17, 2,105,235,228,222,184,188,177,135,218,247,
+235, 0,218, 40,196,117,234,165,254,241,182, 82, 56, 93,145,203,148, 30, 98, 34, 47, 83,123,183, 25, 38, 91, 96,148,221, 49,211,
+ 37, 50, 0,119,244, 91, 20,119, 11, 18,210, 41,236,105,155,145,222,149, 35,234,185,147,109,206,252, 66, 43,167,139,219, 41,151,
+ 6,145, 54, 77, 77,105,234,250,251,209, 13,166,254,118,163,240, 56,235,189,107,220,180,189,207,133,159,122, 31,212,223, 18,227,
+116,213, 8, 61,105, 48,255,161, 70,252,101,253,160,244,180, 95,175,136,150, 94, 54,135,111,194,116,215,191, 70,216,189,157,244,
+ 99,140,120,255,253,247,241,233,119,127, 12, 95,254,210, 23,241,209, 71, 31,154,131,151,115, 27,202,142,186,248,106,151,252,246,
+ 66,222, 42,197,131,125, 29,166, 98, 5,102,127,184, 50, 11,217, 57, 53, 89, 12, 90, 25,224,113,136,174, 9, 47,225, 49,236, 94,
+230,182,111, 28,135, 0,246, 41,189, 20, 92,168, 79,246,173, 87, 70, 9, 18,113, 72, 90, 61, 15, 60, 4,198,243,235, 43, 12,227,
+ 14,175,111,238,144,230,201,154, 87,119,207, 43,143, 77,154,189,179,170, 65,232, 2,211,159,151,236,109,179,181, 21, 12, 49, 96,
+183,115,183, 50,178,152, 89, 10,131, 73,203,210, 12,144, 98, 78,138,105,206, 96,100, 12,195, 0, 37, 70,116, 51, 31,245,120,218,
+ 82, 56,230, 12,179,134, 45,254, 20,132,234, 94,169, 30, 85, 27, 72,170,156,141,168, 56, 39, 54,203, 58, 90, 60, 62, 3,151,148,
+ 55,113, 2,152,212, 16, 24,248, 20,169,196, 72, 73, 49,152, 99,139,157,181,126,123,119,153,113,124,125, 3,150,163, 7,144, 52,
+106,161, 55,252,148,180,231, 23,209, 34, 23, 29, 89, 49, 94,239,241, 91,127,114,198,247,191,251, 91,248,197,175, 17,222,250,250,
+127,130, 79, 94, 7, 28,210, 75, 12, 87, 1, 71,185, 2,206,119, 16,157,112, 74,142,170,204, 51,114,154,144,213,158,211,156, 21,
+154, 50,152,102,123, 13,124,226, 83, 90,130,200,202,117, 75, 98, 49,101, 54, 97,115,199, 40, 47,126, 38,133,152, 92, 62,216, 53,
+ 32, 85,151, 42, 35,108,108,125,201, 90,115,214, 33, 10,150, 12,130, 64,216,204,113,160, 86,236, 85,196,246,243,108, 4,207, 24,
+ 2, 56,184,202,131,130,203,225, 80, 19,227, 26,113,119, 93, 1, 72, 83,236,119,187, 1,225, 11, 63,241,222,119,206,167,105,129,
+165,117, 67, 98,213, 96,215,117,146, 38, 90, 21, 98,170,169, 97,104,248,197,218,183, 5, 93, 49,160,203,227,123, 11,236, 92, 29,
+142,180, 82,121, 57,172, 65,140, 93, 32,140,112, 57, 96, 45,114, 75,224,202,178, 59,111, 88,132, 46, 68,192, 74,214,228,165,182,
+ 41, 13,188,242,184,167, 5, 33, 88, 21,125,218, 92, 45,172, 25,250,218, 73,199, 72, 11,154,208, 19, 4, 24,116,209,240,172, 89,
+237, 29,219,157, 54,248,249,253, 38, 96,217, 49,123,152,128,110,242,249,105, 27, 77,161,130,128,208, 69,245,161, 39, 78,232,247,
+ 21,241,242, 60,104,147, 64,214,116,175,247, 80,188,137,104,123,216,238, 86, 59,107,169,154,246, 65,229, 88,179,213,168, 15, 47,
+127,224,136,234,204,127,168, 49, 82,122, 10,220,174,253,251,245, 38, 5,253,175,139, 24,183,221, 18,217,189, 72,154,241,201,171,
+215,248,214,183,190,137,243,249,140,215,175, 95,187,139,153, 93, 91,243,100, 73, 81,229,137,100, 49,214,122, 59,177, 23,165,130,
+136,201,208, 14,215, 87,136,113,192,233,116, 50, 66, 91,157,158, 76,143, 92, 60,231, 67, 8,213,115,126, 28, 12,122,206, 57,225,
+250,176,199,156, 4,211, 52, 85, 73, 91,118,237,250, 16,162, 29,224,197,237,144, 77,102,198,193,189,187,149, 92, 66, 54,224, 60,
+103, 68,182,219,174, 92,142,178,247,158,109,239, 45,162,174,201,183,160,151, 82, 20, 69, 76, 62,182, 27, 35,134,113, 68, 28, 34,
+226, 48, 34,120, 86, 58, 40,120,184,136, 5,170,164,172,238,106, 55, 57,148,239,186,122,223,255, 39,103, 97,155,241, 14,129,196,
+244,231, 82, 56,205,174, 61,215,156,236,221,145,236,146,185,104,182,211, 53,168, 26, 30, 1, 42, 8,193, 14,126,207, 70,246,162,
+ 38,213,129,141, 96, 30,249,129, 96,174,113,234,102, 98,206,202, 55,207,119, 67, 4, 38, 1,110,111,143,160,249,214,214, 35, 63,
+ 2, 38, 68,181, 33,191,240,253,196,200,138,221,245, 1,191,253,167, 25,223,255,183,255, 2,191,242,183,142,120,241, 51,191,132,
+243,105,143, 16, 39,100,126,134,243,148,113,151, 18, 78,103, 65, 58,157, 32,233,188,112, 31,178, 17, 50,141,175,224, 73,104, 94,
+ 76,203, 53, 91,252, 65,172,152, 23,251,101, 54,127, 22, 86,100,132,133,140, 44,134, 48,217, 74,137,151,184,242,198,174,187,184,
+195,177, 47,176,217,227, 87, 51, 19, 8, 30,144, 3,203,105, 47,123,124, 81,197, 92,146,225,196, 76,102, 18, 17, 20, 1,129,204,
+164,200, 10,187,253, 60, 90,147, 55,127, 78,212,224,116,187, 33,218,164,126, 62, 77,141, 19,219,146,161,174,221,143,219,109, 68,
+183,131,141,206, 18, 92, 67,127,245, 5,107,244,234,180, 81, 48,209,237,111,123,246,222, 69, 33,188,103,170, 87, 42,242,151,101,
+210,205,170,200,173, 19, 27, 45,247, 35,116,121,251,220, 30,202,180, 66, 19, 86,219,254,234,145, 79, 43,109,114,251, 58, 17, 86,
+153,243,157,119,218,106,136,222,226, 43,112,227,157, 95, 30,147, 86,114, 80, 95,211,188, 1, 35,234, 63, 86,205,237,134, 13,248,
+255, 2,162,111,120, 16,171, 50,221,140,129,122,193, 41, 80,194, 74,235, 78,247, 20,247,167, 23,246,173,239,209, 74,209,240,144,
+221,250,154, 8,216, 54,117,250, 32, 62, 79,141,175,253,170,205,164,199, 24,232, 84,249, 18,164,212,147, 96, 26, 77,125,239,238,
+215, 40, 66,158,200, 20,126,106,161,255,107, 43,232,205,110,111, 28, 7,188,255,254,251,120,247, 51,159,197, 23,191,240,121,124,
+248,225,135, 53,144,196, 44, 70,197,146,200, 6,163,204, 26,155, 87, 59,190,139, 73,211,178,201,112,156, 80,119, 56, 92,213, 68,
+180, 98, 85,202,196,152,230,228,102, 51, 38,116, 77,142, 27, 15, 49, 34, 59, 25,121,220,237,141, 37,159, 82, 93,177,193, 61, 26,
+202, 90, 48,184,234, 32,198,128,253,110,135, 16,131,231,185, 91, 46,246, 16,227,146,206, 22,162,223,132, 56,171, 92,171, 1,151,
+122,202,150,249,121, 91,161, 85,226, 69,159, 76,214, 32,144, 23,230,148,146,215,224, 0,166,128,236,175,227,156, 4, 57, 77, 85,
+118, 52, 59, 99, 63,123, 80, 75,203,126, 54,152, 29,117,183, 77,100,141, 6, 85,159,112, 70, 8,108, 67,140, 23, 19,102,242,216,
+103,173,231, 72, 86,242,105, 92, 26,147, 38, 56, 20,159, 17, 3, 0,138,213, 76,135,161, 56,140, 17, 20, 71,136, 24, 8, 61,165,
+ 12,164, 4,138,132,219,163, 64, 78,175,107,147,131,251,164,213,244,216,181,218, 15, 44,107,107,227, 8,197,225,217,136,223,253,
+222,136,247,127,231, 95,227,239,127,243,136,195,207,252, 10, 62,186,217,225,116, 60,226, 60, 39,220,158, 38, 76,199, 59,228,233,
+104,161, 73,146,145, 61, 10,149,145, 17, 72,106, 51, 89, 94, 17,109,200,156, 82,148, 81,176,152,113, 72,177,119,105,179, 77,138,
+169,213,226,254, 6, 98, 72,179,110, 99, 88,211, 87, 28,231,205, 49,174, 73,149,113, 34,101,134,186, 20, 78, 0,205,126,219,234,
+147,123,198,156,103,164,217, 72,155,146, 50, 72,103, 71, 71,203,251, 44,139, 1, 77, 29,206,124,248, 35, 32,142, 35,194, 23, 63,
+255,238,119,206,231,201,242, 95,139,147, 89, 53, 49,113,221, 34, 89,220,225, 33, 16,174, 2,227, 42, 16,246,214,123, 52,161, 38,
+ 13,193,110,101, 4,178,102, 33, 95,192,203, 27,236,119, 94, 65,240,186,121,189, 80,117,144,173,157, 83,155,182, 70,237,110,153,
+234,206,146,170,230,126, 9,171,161,166, 80,110,104,254,253,205,108,141,108,180, 55, 77,162, 75,130, 22,225,126, 93,251,125,173,
+ 12,187, 1, 16, 46, 6, 97, 90,138,198, 61, 44,247,139,186,208,132,241, 84,194, 98,133,210,181, 49,137, 89,145,231, 54,139, 44,
+117, 77, 76, 7,183,111, 18, 31,159, 88,200, 55, 26, 27, 90,255, 44,245,133,253, 73,208,120, 85, 32, 92,224, 36, 15,255, 82,121,
+ 60,170, 15,160, 15,171, 89, 91, 87,104, 3,245,215,230,102,211,209,216, 66,190,105, 61,127, 72, 4,240,215, 98, 59,135, 86,101,
+185, 32, 72, 57,205,248,240,227, 79,240,237,111,127, 11, 42, 9,199,227,201,229, 94,234,251,224, 37, 67, 92, 85,106, 88, 73,129,
+194,235, 14,215,223,143,192,132,171,235,107,132, 56,166,222,148,179, 0, 0, 32, 0, 73, 68, 65, 84,152,219,155, 23,194,156,141,
+220, 22, 61,165, 75, 61,115, 96,240, 73, 59,205, 9,135,221,104,197,102,154, 23,174, 12,193, 92,217,216,138,104,206,234, 54,178,
+ 35, 2, 71,215,147,219, 62,156, 84, 16, 99,196, 48,140, 24,247,123,128, 24,119,199,147,177,222,157, 49, 95,217,238,196,149, 19,
+ 0, 49, 91,209, 16,184,174,203,134,104, 69,184,234,153,243,140,195,110,168, 26,249,172, 12,201, 51,230,108, 16,124,117,179, 83,
+115,163, 11,148, 29, 90, 55,114, 90,167, 84, 38, 70, 80,193, 48, 4, 87,161,216, 19,205, 37, 83,130, 67,125,238,193, 82,101,140,
+209,238,252,155,156, 61, 49,172,238,135,123,227,146,146,180, 87, 63,254,213, 42,214,226,109,197, 11, 73,206, 9,172, 9, 20, 24,
+ 55,103, 32,221,221,130, 57, 65,125,207,124, 1, 31, 61, 38, 51, 41, 82,216, 78, 2,186, 65,212, 4,112,117, 61,224,119,191,191,
+195, 71,223,253, 55,248,219, 95, 59, 98,250,241, 95,196,235,143, 19, 78,119, 31, 34,159, 79, 72,211, 4, 77, 19,166,156,145,102,
+ 1,114, 70,208, 12,162,108,181,204,165,105,212, 30,168, 62,177,139,186,159,189,102,115,102, 83,184, 37,172, 43, 0,124,202, 46,
+246,199, 96, 27, 88,197,125, 93,201,155, 41, 45, 81,193,180, 48,212,219,129,167, 12,140, 37,195, 36, 66,193,110,207,206,228,131,
+169,199, 1, 51, 8, 81,197,108,101,225,133,159,101, 25, 67,165, 72,121,179, 17,236, 84, 1,202,214, 8,141, 14,191, 31,143,147,
+251,211, 46,147,166,237, 32,236, 3, 50,196,136,195, 16,112, 24, 3, 14,209,131, 91, 20,152, 5,152,156, 16,208, 66,181,139,238,
+ 81, 31, 40,108,216,166,151,223,207,179,194,118,112, 38, 53,201,114, 88,133,191,180, 79,168, 4,240,181,151,243, 82,248, 55, 87,
+ 1,164,171,171,174, 61, 51,123, 54, 58,221,195,188,190,104, 66,186, 98,164, 23,251,113,169,135, 42, 93,202,241,136, 58, 51,157,
+203,168,216,229,142,185,249, 92, 73, 67,200,107, 24, 6,155,124, 21, 90,173, 87,168,127,165, 47,220,254,222,180,104,111,195,236,
+ 4,162,251,154,123,234,173,231,215,138, 8,162,123, 10,158,118, 86,191, 68, 79, 36,200,109, 77,205,244, 16,189,110, 53,225, 83,
+239,254,167, 15,160, 9,245,247,232,205,232,127,127,163, 59,244,246,150, 59,210,134, 98,183, 27,241,254,247,190,143,171,231,111,
+227,111,125,227,171,248,232,195,143, 43,188,205, 30,145,153,230,228,150,156, 86, 44,202,161, 54, 37, 35,154, 5, 38,119,101,179,
+200, 80, 14,140,221, 97,239, 19, 58, 16, 67,244,191, 93,186,227,251,249,221, 96, 22,178,231,148, 64,158, 83,158,196, 38, 36, 59,
+ 24, 13, 22, 53,166,185, 65,151,115,182,251,140, 62,221,151, 67, 86, 81, 82, 21,151,134,124,242,228, 50, 11,253,177,226, 61,165,
+132,187,227, 9,231,211,217,199, 90,251,253,209, 13,101, 10, 81,112,191,223,129, 56,186, 23, 61, 33,122, 44, 42, 60,117, 46,146,
+ 49,229,207,167,179,133,122,136, 57,215,169,204, 22, 40, 82, 38,110, 48,166, 41,131, 52,129,163,193,233,228, 44,125, 26,118,152,
+178, 58, 98, 64, 22,205, 25, 92, 96, 74,166,199, 87,182, 52, 49, 53, 74, 55,178,147,222, 66,108,226,112, 81,153,204,126,225, 73,
+195, 68, 55, 84, 0, 10, 4, 5,146, 75,184, 40, 16, 82, 6, 8, 25, 33, 48,238, 18,227,124,251, 26, 92,200,114,244, 20, 25,198,
+234, 58,237,200, 49,247,199, 15,169, 23,246,195, 85,196,239,254,229,136, 23,127,246,219,248,198, 79,157,113,123,248, 26,230,211,
+132,121, 58, 98, 78, 9,121,206,152,114, 70,158, 51, 66,158, 64,108,147,183, 8,187,108, 77, 12, 22, 39,174,153,230, 80, 71,118,
+221,115,192,248, 4, 37,142, 76, 61, 46,117,137, 83, 45,254,251, 76,108, 69,191, 72, 48,125,109, 84,189, 84,202,247,120,137,183,
+134,146, 89,175,147,214, 52, 55, 45, 80, 62,185, 14, 65, 25,177, 32, 52,129,173, 65,141, 1, 20,108,117, 67, 28, 16,137, 17,130,
+ 33, 85,228, 72, 17,123,122, 26, 19,155,249, 76, 19,212, 85, 71,250,186, 53,102,118,184, 42, 24, 17, 3,192,156, 21,175,102,197,
+135, 89,241, 74,129,249, 98,119,222,236, 47,169,175,246,235,140,150,246, 45,236,204, 81,232,254,115,246,114,170,209, 46,154, 85,
+ 20, 72,186,228,149, 23,230,163,174,204, 77, 22,151, 54, 19,248,231,134,144,198,221,189, 46,187,103,180, 70,250, 88,148, 2, 76,
+ 45,251, 83, 47,229,201,205,238,148, 86, 47, 0, 67, 54, 99,103, 75, 84,172,104,223, 80, 72, 19,143,186, 54,197,105,205,199,150,
+ 85, 72,163,173, 46, 4, 25,172,220,237, 54, 34,107,171,207,121,227, 88, 36,237,123,179,105,202,163,151,131,226,134, 60, 75, 47,
+188,228, 47,163,111,151,151, 83, 47, 6,129,135, 10,217, 42, 65,192, 31,247,226, 21,136,123,111, 75,155,195,101, 5, 3, 52,143,
+ 97,237,255,190, 54,254, 81, 21,148, 16,132,251,138,172,172,188,248, 43, 74, 79,248,255,197, 31,149,222, 12,169, 52, 41,170,132,
+103,215, 7,252,230,191,252, 77,124,239, 7, 47,241,147,159,255,113, 39,123,162, 78,235, 28, 8, 42,168,114, 29,114,166,182, 21,
+174, 96, 5, 40,132, 26,157,123,119,123,139, 52, 37, 92, 29, 14,184,190,190,174,182,190,204, 17,129,131,195,209,230,112, 54, 39,
+ 65,154,108, 10, 38, 14,200,105,118,139, 86,243, 76, 31, 98,172, 70, 48, 28, 9,135,221,136, 24, 3,196, 33,115,133,184,133,173,
+233,179,211,108, 30,239,251,200,184,218, 13,102, 8, 21, 2, 68,201, 72, 86,226,167, 97,145, 49,177, 77,193, 37, 86, 86,179,237,
+162,143,167, 25,164, 54,177, 7,182,208,158, 66,240,115, 99,210,234,172, 55, 68,219,233, 71, 82,236,198, 1, 52, 12,110,104, 19,
+252, 58, 48,219,218, 52,167,106,209, 58, 37,193,249, 60, 33,146, 79,144, 80, 79, 77, 11, 78,226, 50, 68, 64,220, 45,196,152,240,
+238,185, 17, 66, 99,188, 66,158,178,103,207, 13,110,144, 67, 37, 2, 86,109,135, 31,144,145, 0,228, 89, 64, 58, 27,139,220,245,
+249,164,130,195, 62, 0,195,161,179, 90,190,175, 47,220,252, 50,173, 6, 39,221, 30,213,181, 43,236,138,253,243, 29,238, 62,217,
+ 97,248,254,111, 34, 12,239, 67,195, 21, 64, 3,200,156,219, 1,177, 98, 75,108,171, 86, 65,240,247,201,130,122,204, 20, 45, 85,
+224,154,170,228, 44,212,192,148,224,240,139, 80, 25,201,203,142,222,222,239,156,204,100,201, 26, 1, 67,108,224,156, 6, 59,175,
+157,111,225,136, 55, 19, 91, 33, 38, 32,195,246,231, 73,205,200,198,245,133, 8, 48,114, 55, 23, 7, 55, 18, 8, 1, 73,131,145,
+238,192, 32, 10,102, 57, 27, 9, 20,162,173,138,226, 0,132, 29,148, 70, 40, 98, 53,184, 98, 99,131,107,179, 57,134,127,147, 16,
+193, 54,145,231,140,219,243,132, 87,199, 25, 31,157, 50, 94,206,130, 59, 1, 18, 86,174,108,205,212,219,196,105, 47, 50,199,170,
+ 47, 93,206,207,139, 34,221,212,197, 22, 70, 7,173,208, 0, 44,182,168, 53, 38,180,113, 3, 43,166, 57,236,144, 54, 53,249, 40,
+221,237, 52,137, 67, 11,233, 77,107,120,202,150, 74,163, 48, 38,219,206,228,130,233,174, 27, 77, 9,173,247, 79,139, 41,138,234,
+150,204,115,237,130,167,189, 51, 95, 23, 45,187,148,223, 26,128,162,109,221,214,138, 2, 20,215,191, 54,188, 5,186,184,238,213,
+ 73,223,157,194, 90,124, 76,165,117, 7,212,134,181,252, 64,129,190, 47, 47,125,221, 24, 52,239, 95,199,165, 80,189,112, 36, 92,
+191, 31,186,153,100,166, 23,239, 89,213, 56,183,201,118,109, 55,217, 69, 38,209, 69,195,210,121, 46,107,243,130,150,219,174,136,
+151, 62, 60,105,235,114, 80,190,233, 12,189,142,219, 85,125,186, 41,206, 99, 63,187, 94,175,244, 88,188, 98,119,184,194,249,230,
+ 37,126,253,127,249, 13,236, 15,207,241,206,219,111, 33,165,100,208,247, 48, 88, 68, 42,145,201,139, 80, 15,153,234, 76,102,169,
+ 89, 30,180, 65,140,121, 78,248,228,147, 79,204,155,125, 24,113,216,143,184,186, 58,120,241,116,215, 55,207, 73,159,230, 9,135,
+145,113,184,186,178, 56, 77,230,234, 94, 73, 30,247, 74, 78,206, 51,230,187,133,162, 8,216,141, 87,236,231, 9,206, 7, 98,135,
+ 96, 97, 7,101, 33,173,229,148, 49, 79,103,168,154,212, 44,120,230,246,121, 50, 45,252,110,140, 24,130,161, 2, 74,100,172,121,
+ 77,216,239, 45,186, 53, 22,215,181,234,192,168, 24,162,175, 1, 66,132,146, 57,187, 37, 33,231, 3, 72, 69,164,118, 67, 68, 24,
+ 6,211,220,187, 92, 46,139, 32,207, 19, 34, 41,226,254, 0,112,172, 7,172,249,183, 51, 78,153,144,167,201,208, 72,207, 26, 39,
+191, 94,171, 7,127, 99, 21, 27,216,158,115,118,252,146, 1,140,145,177, 31, 13, 21,200,202, 96,153,109,136,200,150,216,150,193,
+200,179, 96, 31, 20, 97,127, 48,232,122,123, 34,121, 26,214,244,134,215, 62, 67, 16,135, 1, 97, 60, 32, 14, 17, 33,140, 21, 38,
+ 39,102,132,210, 20,177,165,219,149,181, 68, 41,216, 11, 49, 46, 55,136, 38, 33, 4, 67, 57, 68, 9, 1,234, 83,112,129,220, 45,
+198, 57,150,233,216,111, 84, 61,240,101,118, 66, 30,235, 98,219, 45,206,113,144, 70, 50,200,161,240, 43, 34, 32,106, 82,201,148,
+220,115,223,107,111, 32,247, 32,176,166, 55,131, 12, 13,159, 21,167, 41,227, 60, 39,107,108,213, 92,235,236,245, 55,242,221, 44,
+132, 57,187, 92,243, 75, 63,241,238,119, 78,167,185,153,202,150,204,110, 75, 10,147,186,211,154,187, 20,177,149,173,234,198,126,
+ 81, 87,158,216,212,233,239, 46, 97,223,245, 12, 85,243,200,171,221,235,246,148,181,102,228,175, 73, 96,109,240, 73, 89, 8,104,
+179,111,238,110,203,191, 30,154, 2, 33, 27,215, 35,109, 60,226, 22, 81, 90, 51,198, 47,186, 3,218,102,105, 99, 83,174,134, 46,
+115,125,235,119, 8,180,233,210,167, 23,204,244,222,247,124,177, 97, 45,228,194, 69,154, 88, 96,242, 26, 44,226, 31, 2,189,215,
+160,135,182, 85, 13, 79,128,228,239,251, 90,251,159, 91,171, 15,108, 52, 56,219,124,141, 21,255,160,172, 2, 91,246,127,123,209,
+ 60,166, 43,107,195, 86,126, 84, 53, 56,253,112, 63, 74, 64,181,251,125,202, 31, 81,197, 97, 55,226,234,106,111, 4, 45,209, 94,
+ 49,176, 9,157, 46, 69,190, 52,129,135,195, 30,127,245, 23,127,142, 51, 34,126,238,219, 63,141,211,237, 45, 78,211, 92,223,175,
+ 44, 2, 73,142,251,121, 18,154, 17,189,108,135,152,220,201, 44,122, 54,120,206, 6, 55, 43,172, 49,224, 48,152, 46,220, 37, 91,
+115, 50, 91, 84,130,224,197,179,103,160,184,179, 68, 53,207, 24, 87, 38, 72, 86, 47,212, 86,216, 45,183,220,242,177,137,212,166,
+156, 97,240,124,112,143, 19,101, 66, 8,209, 38, 81,152,134,190, 32, 89,228,254,236, 39,103,245, 75, 78, 8,176,199, 76,113,240,
+221, 60, 48,205,134, 22, 12, 67,196, 48,238, 49,103, 91, 49,132, 24,107, 38,186,193,167, 6,147,103, 39,209,229,156,220,244,132,
+ 92,199,175,181, 9, 40,230, 38, 54, 97,219, 84, 14, 98,207, 89, 23, 12,172,238, 56,103, 5, 59,129,145,231, 25,251,168, 72,110,
+229, 27,124, 98, 87,181, 1, 45, 35, 0,206,152, 79, 2, 35, 98, 1, 96,119, 82,147, 34,211, 98,115, 68, 27, 89, 64,145,161,202,
+ 96, 85, 24,210,111, 97, 38, 60, 16,110,230,128,116,243, 10, 76,169, 79,110,123,138, 45,172,127,238,122,196, 94, 31,161,173, 40,
+206,137,240,245,235,132,111,124,243, 10,167, 31,251,123, 56, 79, 47,144,167, 91,104, 78,152,179,224,156,103, 36, 35, 46, 64, 52,
+ 67,179,159,222,196, 75, 84,181, 35, 47,168,153,232, 77,234,166,239,170, 75,204,108, 93, 85,146,237,186,205, 95,196,232,115,129,
+164,186,207,113, 65,132,105, 33,220,154,133,111,113,138,166,186,201, 45, 25,245,194, 4,213,224, 8,130,184,227,156,173, 71,164,
+160,198, 85, 82, 7,143,254,117,158, 71,202,208,156,221,129,208, 37,164,106, 4,188, 33, 70, 71, 31,106, 62,185,237,199, 85,109,
+ 10,159,160, 16,178, 28,217,129,138, 6,220, 10, 11,175,152,241,109,164,170,182,187,237,134, 52,215, 6,191, 40,245, 14,118,141,
+ 61,192,197,174,149,232, 50, 24,102,155,104, 89,195, 76,205,139, 58, 43,166,134,217, 93, 24,252,213,228,224, 98,133,186,124,176,
+ 82,237, 14, 21, 65,215, 53,153,112,185, 5, 90,246,170, 92, 98,241,202, 51, 83,221, 78, 45,195, 70,226, 91, 3,199, 75,247,115,
+218,147, 17, 87,143, 91, 75,230,238,106,159,222,175,185, 46, 97,123,241, 72,221, 30, 74,246, 72,192,234,111,188,101,177,170,117,
+250,149, 21,204,210,215,153,251, 38,247,213,227,107, 96,237, 22, 6,214, 38,134,112,125,155,235, 42,190,142,201, 93,146,236, 47,
+139, 91,206, 90, 97,240, 98,224,160, 45,172,244, 88,177, 94, 36,253,184,199,243,248,225,105,123,221,208,210,227,162, 57, 93, 29,
+140,242,134, 99,190,177,124, 25,231, 84, 76, 57, 46, 87, 34,151,112,200,114,244,238,198,193, 44, 67, 65,120,251,197, 51,252,155,
+127,245,155,248,157, 63,248, 99,124,249,203, 95, 70,228, 80,173,145, 11,219, 60,198,176,248, 47, 52,132,160, 24, 67,109,210,119,
+227,104,154,226,211,209,200, 96,234, 86,169,113,196, 56, 12, 24, 35,227, 48, 14, 64,217,151, 15, 3,142,231, 9, 41, 77, 14, 29,
+115,149, 17,101,135,203, 57, 4,204,115, 2,187,249, 11, 51,129, 99,244,195, 54,120,222,185,253,108,202, 25, 36,150,129, 29, 98,
+168,215, 68,136, 3,166,172,238, 34,151, 49, 48,155,123, 93,136,184, 59, 30,113,115,119,215,124, 62, 8,154, 77,254,102, 59,121,
+155,238,163,155,206,168, 26, 42,144, 85, 65,226,153,235,146,205,206, 53, 6,112,176,181, 65,117,118,211,229, 51, 33,197,233,147,
+131,245,154, 57,225,156,213,201,109, 90, 13,149,198,200, 16, 30,108, 82,131, 32, 70, 0,193,222,175,217, 97,245,232,217,227,209,
+ 5,114, 36,217,200,183,110,138, 99, 16,115, 2, 33, 35, 19, 35,137, 33, 2,234,146,184,171,129, 49, 94, 95, 33,134, 17,187,221,
+ 0, 9,251,218, 4,189, 41,203,147,148, 42,190,184,245, 49,235,206, 87,106,253, 37, 8,211, 44,152,206,103,100,201, 72,106,188,
+ 47,142, 17,224,209,118,207,238,118, 39,180,152,200, 44, 33, 86, 30, 53,158,221,182,213,237,112, 73,201,149, 6,132,156, 20,164,
+201, 52,224, 26,140, 3, 81,214, 15, 94,192,213,167, 89,102,159,244, 3, 65, 56,160, 4,145,151,231,201, 40,123,119, 11, 76,155,
+ 69, 60, 60,198, 97, 19, 95,187,248, 27, 0, 72, 66,114,110,128,204, 9, 42,201,207, 88,107, 64, 44, 88, 38, 67,114,130,164, 25,
+115,118,130,105, 78, 0,102,128, 13,145,170, 5,142, 96,206, 67, 42, 38,131, 72, 32, 36,242,125,133, 31,238, 3,200,118, 0,190,
+231, 88, 56,242,122, 65, 60,163,166, 97,104, 83, 55,214,231, 71, 87, 84, 87,169, 96,155,123, 98, 92,230,162,211,106, 9,147, 85,
+161,129,240,124, 0, 14, 36,198, 54,244, 20,165, 72, 75, 26,156, 92,108, 80, 13,157, 16,181,189,138, 77,243, 46, 89,168,143, 91,
+ 55, 14, 92, 93,253, 77,253,243,187, 40, 98, 15,113, 74,214,136, 7, 58, 59, 66,221, 56,118,181,145,221,232, 70,235, 81, 77, 56,
+ 26,232, 88,187,151,108, 41,190,212, 64,253,162, 11, 76,101,175,129,108, 82,165,245,161,169,121,181,151,238, 26,128,142, 55,168,
+ 29, 4,191,188,110,219, 59,247,229,235,122,241, 94, 44,193, 54,114,127,145,116,200,108,136,161,121, 30,122, 63,131, 92,183,223,
+ 34, 34,237,148, 12,164,143,156,105,205,250,190, 62, 14,125,244, 28,236, 45, 43,127, 24, 93, 48, 51,206,231, 19, 78,119,183, 79,
+115,184,233,118, 19,176, 3,200,237, 73,195, 48,226,249, 62,224,159,253,211,127,138,223,255,163, 63,197, 87,191,244,147,117,165,
+ 49, 12,198, 82, 47,191, 22,156,244,134, 70,226, 99, 36, 47,207,238, 38,139,101, 37,133, 65,212, 49, 32,137, 32,101, 51,162,217,
+237,119,184,218, 69,236,118, 59,100, 37, 32,155,239, 58,177,157, 53,145,128, 97, 24, 23,127,115,166,106, 81,203, 33, 26,243,185,
+172,160,220, 18,116, 24,162,241, 97,220,228, 38,249,133,110, 28, 51, 99, 77,231, 60,131,144, 45,213,141,108,148, 97,102,236,199,
+ 17,154, 51,210,116,194, 24, 3,134, 97, 64, 24, 6,119,210,179, 48,150, 2,219,219,203,152,145,157,212, 55, 12,209,229,117,163,
+231,109, 15, 16,177,194,144, 43,164,142,202, 79, 48, 70,182,120, 94,187, 64, 57,216,196, 54, 79, 0, 4, 70,246,206, 62,205, 1,
+ 65, 51,118,145, 32, 97,135, 57,185,241, 79, 22, 0,217,157,211,124, 85,225,228, 57, 81,174,158,240,218,240,120,179, 0, 58, 79,
+ 32,164,154, 7, 50,139, 66, 17, 48,114,192,245,213, 0,218, 95,215,245,241, 99,187,244, 14,204,211, 39, 78,232,205,119,185,156,
+235, 98,133, 45,165,132,211,121,194,221,113,198,233,238, 8, 73,103,227, 21, 16, 97, 2, 67, 50, 33, 84,246,218, 98, 26,195, 80,
+ 40,155, 60, 44, 39, 1, 36, 45,133, 29,130, 72,106,235, 17, 1,162,115, 41,216,239,220,146, 2,179, 15, 51, 22,187,106, 86,179,
+ 4, 18, 66, 80,242,157,190, 66,203,202,195,157, 56,115, 73,235, 20,227, 87,144,100, 68,100, 67,144, 60,236,168, 12,212,209,223,
+139, 12,123,140,146,147, 93,243, 34, 32, 41, 37,202,175,117,111, 6,231,156, 49,207, 25,115,246, 92,121,110,216,225,220,152,204,
+147, 26,124,147,137, 32, 78,178,136,108,236,247, 2,137,115,153,222, 27,136,188,183,118,105,117, 11,186, 33,105,164,213, 78,155,
+ 46,118,165,242, 0,156,203,205,239,118,250,241, 48, 96,255, 44,224,197,129,113, 21, 9, 3,140, 13,154,117,137,152,181,201,157,
+ 23, 66, 79, 39, 83, 83,111, 14,108,183, 81,190, 95,114,144,117,115,150, 89, 74,169,174,104, 91,165,220,202, 3,107, 37, 90,239,
+206,203, 20,172,219,104,194,214,126, 21,226,223,107,221,201, 84, 47,247,210, 77,241,234, 16,147,118,250,246, 67, 61,171,120, 48,
+ 2,245,187,239,135, 10,251,214,207, 96,131,220,215,238,209,155,202, 85,147,229, 58,200, 97,107, 7,173,117,106, 93, 51, 12, 42,
+202,211,220,222,186, 21, 35,178, 73,233,146,156,167,157,203,219,250,154,236, 46,235, 58,182,111, 39,250,109,110, 5,232, 82,210,
+115, 95,202, 42,173, 16,141,167,201,243,238,185,255, 34,205,217, 34, 27,210,170, 59, 94,221,193,249,124,170, 81,159,170,138,113,
+127,133, 65, 79,248,245, 95,251,103,120,255, 38,225, 11,159,251,113,155,246,148,220,250,114,137,169,101, 90,204,169,138,129,153,
+148,141, 54, 91,168,203,237,237,109,253, 28, 51, 25,210, 53, 79, 51,152, 25, 47,222,122,142,113,183,199, 60,205, 8,129, 17, 56,
+ 32,132, 8,102,182, 29, 54, 5, 12,193,146,186,200, 11, 92, 9,243,112, 54,157, 29,118,171,179, 34, 43, 48,205, 25,154,147,187,
+222,105, 77, 7,220,143, 3,198,113,103,144,102,100,164, 44, 16,201,136, 33,226,217,213, 1,227, 56,152,251, 29, 57, 33, 75,169,
+174, 0,106, 17, 40,112,172, 59,229,101,101, 35, 88, 13,209,138, 75,202,182, 43, 14, 70, 70, 22, 55,133, 89,114,225,109,157, 16,
+217,124,248, 1, 96, 8, 54,185,151,168, 81,201,158, 60, 7, 65,140, 4,138, 3, 84, 8,193,146,210, 49, 68,128,227, 88, 27,140,
+ 57,137,187,212,217, 90, 34, 70,174, 13, 87, 49, 99,217, 15,140,209, 9,137,228,175, 75, 6, 35,165, 51,146,100, 92, 15,132,241,
+234, 25, 4, 3,172,210,188,129,174,130,202,218, 75,241,216, 66,222, 26,224,229,156,154, 51,129,211,140,145,207,230,194,135,140,
+227,148, 48, 31, 79, 64, 58,187,195, 33, 65,211, 12,104,242,179,157,157,217,111, 18, 75, 41,102, 95,206,124,135,228,186,167,117,
+ 19, 61, 95, 41,104, 69, 50, 6,102,196, 96, 54,190, 69, 77,164,229, 63, 32,254, 53,129,253,207, 2,115, 10,243,190,204,180, 65,
+ 77,190,168,164, 86, 87,196,164,155,182,183, 15, 8,209, 16, 41, 22,227, 48, 16,171, 73, 22,213,248, 4,129, 4,129,197,106,112,
+180, 70, 48, 50, 89, 74, 92,112,139,246, 4,176,186,174, 54, 20,167,154,162,161,211,214,174,222,138,122,246,253,213,192,192,158,
+ 80, 39,246, 34,185, 47, 19, 63, 58,230, 53, 58, 88,149,238, 81,206,180,197, 70, 58, 65,146, 94,146,202,213,173,254, 26,242, 92,
+209, 94,147,138,153, 66, 12, 1, 17,132, 83, 6,142, 89,113, 20,152,125,160,195,212,237,174,153,155, 70,132, 27,184,185,188, 35,
+180,218, 23, 27, 99, 93,187,117,195,122, 2,171,100, 53,244,108,233,126, 71,113, 9,147, 95, 18, 7,245, 2,217,208,238,117, 89,
+ 10,124, 11,177,139, 19,133,180,149,159,235, 6, 65, 95,181,115, 52,211,134,157, 45, 21,150, 69, 23,223,218,145,189,244,145, 66,
+190,250,189,158,200,183,242,201, 91, 17,228,138,179,215,197,124,222,221, 71,211, 10,117,176,142,128, 67,180,131,112,161,174,215,
+201, 94,253,142,178, 36,156,207,211, 61,231,138,222, 67, 46,211,197,145,111,165,148,120,144, 0,172, 61, 82, 5, 69,147,142,168,
+253, 26, 0, 61, 41,184,125, 12,244,196,161,232,169,196,185,203, 7,120,127, 67,176, 94,113, 92, 63,127, 11,233,238, 19,252,163,
+255,241,127, 66,142, 7,124,233,243,159,245, 93, 61, 47,235,168,192, 24,198, 1,236, 33, 35,182,115, 54, 24, 60, 16, 35, 80,128,
+228,140,233,116,194, 52,207, 24, 34,227,234,112,192,213,213, 1,207,159, 29,144,149,113,123,182, 80,149,113, 96, 12, 67,180,192,
+ 18, 71, 90,146,168, 77,250,254,225, 13, 33, 24, 3, 58,231,142,172, 84,125, 87,188,249, 42, 92,151,236, 68,191,253,110,192,110,
+191, 67, 22, 96, 58,159,237,208, 38,147,137,129, 34, 56,152, 65, 72,150,140, 73, 24, 83, 6,230,100,107,190,121,206,144, 60, 91,
+ 50,155, 79, 95, 37, 42, 54, 75,110, 96,230,150,148,204, 24, 2,220,223, 30, 94,232, 67,117, 26, 19,231, 34,160,184,217,249,237,
+170, 23,122,118,247, 60, 20,213,133, 39,202,157, 37, 32,205,102, 73, 75, 33, 98,214,128, 57, 45,231, 85, 36, 96,112,134, 89, 86,
+ 20, 28,217,134, 36,151,223,229, 44, 8,204, 21,133,152,133, 13,193, 20, 32,207, 9,163,158,241,236,249, 1, 18,159, 57,244,251,
+ 56, 5,229, 2,181,211,181, 12,103, 99, 93,232, 59,233,194,127, 49, 15,117,193, 24, 4,135,253,136,195,126,135, 48,140,230,177,
+ 62, 79, 96,157, 17,217,237, 83, 93,198, 22, 88,141,128,198,238,211, 47, 98,146, 64, 22, 80,240,245,136,102,183, 92,245, 61,186,
+147,239,184,130, 75,198, 95,136, 49,120,115,229, 43, 11, 89,206, 50,123,156, 10,202,106,136,119, 49,251,169, 81,229, 62, 24,134,
+ 37, 31, 93, 92,173, 97,201,132, 2,142,140, 28, 3, 4,174,252,240,200,220,194,148, 23, 16,102, 37,107, 14, 17, 64, 28, 17, 66,
+192,232, 57, 6, 60, 68,139, 94, 61,187, 36, 67, 27, 22,251, 58, 32, 68,125,185, 90,118,172,129, 76,119, 87, 9,103, 27,110,112,
+161,221,131,175, 35, 75,123, 30,212,198,111,111,145,208,214, 81,167,212,184, 48,181, 19,187,209,185,114,202, 72,115, 54,111, 96,
+162, 70,191, 78,139,165, 42,245,174,107,151,249,107,212,201, 48,208, 17,246, 86,186,116,194,131, 30,230, 91,145,177,219, 82,189,
+ 77, 15,213,117,202,236, 6,241,109, 33,184,213,234, 65,116,207,253,227, 17,253,117, 79, 54,227, 21,215,190,125,222,213,135,157,
+ 46,221,232,232, 30, 50,156,170, 77, 46,251, 64, 6,155,122, 58,145,226, 30,130,219,102, 18,159,118,183, 75,157,232,144,106,195,
+115,143, 90, 28,151,247, 70,143,187,205, 52,188, 3,125, 18,124,221, 90, 42,183,191, 79,203,122,234, 9, 59,248,191, 17,233,218,
+ 22, 44,160, 15,153, 29,111,236, 4, 20, 24,119, 35,110, 62,122, 31,127,245,209, 45,254,222,207,255, 93,176, 76,184,185, 59,122,
+ 33,213,106,165,106,112,187, 21, 11,118,121, 88,100, 70, 12, 17, 89,237, 56,221,237,119,216, 31,174, 12,174, 38, 35,120,221, 30,
+239, 32,243, 4,149,108, 69, 87, 25,121,158, 76,161, 19, 99,149,105, 49, 25,243,155, 61,255,188,176,220, 69,253,112,244,125,255,
+ 48,216, 86, 57,176,219,187, 14, 62,225,187, 89, 78,206, 9,105,158, 49,205, 51, 36,155,156,108,158,103, 71, 56, 24,231,105,198,
+ 52,157, 1,177,168, 89,201, 25,187, 24, 48,196,224,214,179, 17,201, 39,193, 24,150,224, 16,170, 81,176,237,199,203, 25,238, 89,
+144,179,133,189,144,102,136, 79,244, 84,124,236, 11,225,176, 32, 31, 80, 68, 55,164, 25,216, 97,125, 38,100, 14,152,102,129,166,
+201, 27, 10,111,150,115, 50,108, 68,129, 72,138,224,232, 6,220,105,142,157,116, 87,144, 28,209,165, 89, 85, 50, 89, 92,240,169,
+146, 92,139,175, 49,226,213, 81, 64,199, 87,139,187,220, 19,136,158, 74, 79,189,166, 27,131, 46, 50,162,220, 23,199,140,111,126,
+ 35,224,230, 39,126, 14,231,233,179,208,124,196, 41,103,220, 29,203,180,126, 4,144,155, 59, 16,255, 76, 59, 11,140,116, 49, 25,
+243,149,212, 12,107,170, 84, 50,178, 90,156,174,237,189,169, 22, 23,109,246,255,133,108,201,196,158, 86, 87, 28, 19,117, 89, 99,
+ 84,143, 27,110, 32,184, 69,237,196, 84, 80, 24, 2,216,206,146, 66,212, 51, 36,120, 73,107, 83,210, 38,229,147,170,165,173,148,
+160, 36, 40,196, 17,137,221,110,135, 88, 29,177,219, 0, 0,159,218,115,123,140,186,150,219, 4,243, 70,180, 8, 12, 12,106, 30,
+183,185,176,252, 24,216,145, 98, 80,224,164, 70,183,191, 96, 98,119,253,170, 94,236, 12,105,227,192,164,149,158,186, 55,124, 89,
+ 73,194, 52, 3,201, 44,249,146, 46,171,133, 30,123,160,133,112, 68,125,228,135,250,191, 75,145,225, 38,221,172, 56, 43, 19,217,
+152,165, 78,138,208, 86, 98, 71, 61,244,206,221, 51,106,252,228,133, 58,226,104,123, 98,210,154,224,165,139,233,204,186,175,237,
+ 37,110,212,237,103, 85,197, 77, 39,180, 91, 87,212,225,120, 51,162,180,199, 15, 84, 23,139,221,206,208, 81,251, 64, 31,104, 27,
+253, 90, 38,111,234,165,105,180, 56, 45,137, 42, 78,121,201,133,166,102, 66,191,140,105,107, 86, 5, 13, 99,191, 66,210,116, 65,
+227,171, 94,215, 23,205,139, 46, 76,213, 5, 29,232,117,236,247,214,177, 18,141, 8,237, 19,102,128, 62,251, 29,139,209, 73,235,
+187,175,173, 12,173,153,126,183,118,228,127, 83,197, 28,155, 48,255, 26, 74,211,173, 15,108, 95,251,155, 27,123,235, 83,159,194,
+159,252,225,239,225, 87,127,227, 61,252, 87,255,224,151,144,178,224,251, 31,124,140, 68,201, 52,251, 76, 24,119, 3, 82,202, 94,
+ 32,201,227, 75, 13, 81, 97,247, 35,215,100,134, 46, 49, 4,112, 12, 56,221,156, 0,201, 32,182,169, 54,134, 96,210, 50,151,147,
+205,217,156, 27,246, 59, 11, 77,201,170, 72,217, 25,236, 62,181,203, 52, 55,173,233,162,244, 72, 41, 33,196,128,125,180,194,174,
+ 74,152,230,132,236, 13, 39,207, 51,152,200,242,205, 79, 9,144,108, 59,119,201,216, 69, 64,105, 64,112,230, 56,249,158, 94,200,
+248, 0,133,203,161,209,244,246, 16, 23,143,177,251,134,187,169, 78,185,126, 35, 19, 88, 51,104, 96,156, 39, 54, 86,122,160,106,
+241,202,148, 17, 56, 32,165, 50,125, 90,224,199, 24,237, 44,202,100,132, 46,201, 2,198, 4,138,206,146, 82,219, 3, 7,182,210,
+205,106,172,246,217, 43, 43, 55,206,120, 20, 34,230, 4,227, 5, 4,243,169, 39,201, 80,100,236, 88,161,113,168,136,163,168,226,
+121, 20, 92,189,120,142,155, 87, 87, 24,244, 14,160,248, 8,175,116,181, 99, 67,227,226,217,108,216,105,133,246,182,176,253,148,
+ 9, 52,101, 76,233,132,143,111,103,232,205, 29, 34, 4,195, 48, 98,226, 88,173, 84, 1, 51, 68, 90,120, 59,139, 29,171, 5,104,
+149,152, 22, 39,213,105,240,196,214, 84,215, 31,234, 17,180, 20, 2,160,188, 60, 86, 81, 4, 54,206, 22,116, 48,146,166,255, 14,
+187,137, 82, 33,157,195,253,220,209, 36, 48,154,210,192, 35, 85, 61, 51,221,254, 93,228, 83,185, 36,168, 87,153,108,205, 83, 33,
+ 63, 67,101, 9,164,209, 44,208, 44, 32, 22, 72, 74,136,178,112,195,156, 16,167, 96,223, 25,231,242, 86, 20,135, 58,247, 1,158,
+217, 95, 14,159,114,163, 31,142,137,217, 48,127, 53,227,255, 25,203, 20, 44,197,230,212, 79, 4, 65,239,231,141,106,140,143,206,
+171,187,141, 12,181,110, 28,139, 94,184,196,228,109, 16, 48,104, 35, 41,110, 77,178, 18, 93, 17,156,168,129,233,136,160,108, 76,
+118,109,216,109, 84,104,253, 94, 80, 24,122,129, 34, 85,251,207,106, 71,173,171, 34, 76, 93, 85,165, 70, 22, 77,186, 77,130,235,
+ 11,219, 3,206,123,126, 49,162,250, 22,183,251,185, 53,233,106, 41,188,109,192, 73,253,113,109, 73,120,125, 83,193,222,153,138,
+246,147,178,125,136, 30, 40,246, 53,255,153,160,146,155,132, 53,183,173,173,241,244,122,105, 84,209, 61,199,181,250, 66, 46,165,
+110,212, 79,215, 75, 30, 59, 93, 78,252,218, 7,226,220, 23,212,214,178,112,107,228,176, 39, 56,209, 61,211,239,162, 95,167, 86,
+ 7,183,120, 4, 60, 65,190,166,127,173, 5, 93,239,159,188,183, 42,190,222,143,115,168,219,190, 42, 1,239,188,245, 2,255,250,
+ 95,254,115,124,227,235, 95,193,207,126,227, 27, 56,254,222,119,241,137,120, 60,171,235,210,119,187,161,154,115, 40, 51, 82, 78,
+214,120,150,171,197, 99, 68,247,135, 43, 28, 79,147,237,144,227, 0, 66,198,179,235, 3,132, 7,196, 57, 65, 56,154, 51, 93,177,
+176, 85,115, 85,139, 12, 76,243,226, 82,145,230,140, 33,178, 79,230,240,189,181, 45,249, 44,216,197,140, 73,200, 29,215, 84, 21,
+211,233,228,102, 57, 35, 78, 58, 27,186, 16,216, 52,230, 41,155,129, 78, 28, 33,146, 44,141,141,131,193,173,254, 88, 84,196,145,
+ 8,131,138,179,227,152, 33, 6, 76,105,153,208, 11,204, 11, 48,194, 24, 49,205, 4,204, 9, 67,180, 66,156,212,160, 98,102, 84,
+230,117, 12,134,112,100, 0,193, 63,107, 73,252,117,204, 9,204, 75,195,205,129, 16, 40,152,217, 78, 57,167,136, 48, 37, 51, 73,
+ 25, 49, 35, 12,209,204, 80,200,167, 83,183, 64,101, 15,172, 81,181,107, 55,139, 58,177,208,206, 73, 1, 99, 32,197,219,111, 29,
+112,243,225,167,128,219, 27, 32, 62, 12, 55,117, 54, 29, 93,204,176,222,123,185,145,175,210,202, 63,142,153, 64,243,140,235,221,
+ 4,196, 17,183,119, 51,166,243, 75,219, 67, 15, 1,105, 26, 33, 46, 65,100,205,182, 89,192, 66, 68,171,249, 0, 72, 53,129,141,
+148, 22,174,140,107,218,139,193, 80, 61, 3,201,148,239,220,229,109,169,171, 27, 24, 1,128,248, 20, 72,133, 85,239,159,121,110,
+ 76,199,200,135, 70, 51,250,113,163,153,230,211,190,184,218, 1,172,132,236,196, 88,114,210,111,246, 23, 49, 52,145,105,149, 77,
+ 36, 98,154,249,160,218, 37,170, 21,158,122, 49,186,103, 45,169, 51, 90,237, 19, 69, 8, 51, 8, 19, 8,137, 22,200, 59,144, 49,
+ 45,143,153,112,238, 52,236, 14,125,185, 44, 46,178, 34,146, 54, 46,199, 43,153, 15, 45,240,125,149,103,209, 18,131, 87,159, 74,
+129, 39,148,186, 85, 53,175, 89,241,247, 8,132,244,162, 27, 92,252,225, 27,235,180,149,116,206, 98,250, 58,229, 83,251, 56, 87,
+186, 35,213,237, 97,103, 45,231, 91, 11,243,244, 65,110,168,110, 16,211,208,200,177,250,231,183,150,179,201,198,142, 91,154, 66,
+211,255, 44, 93,220, 47, 26, 79,131, 82,168,101,253, 26, 61, 34, 99,187,112,159,107, 38,128,110, 72, 84, 92,240, 23,122,201,218,
+229, 4,122,159,185,202, 5,175,195, 31,163, 25, 89, 44,241,133, 45, 55,128, 26,134, 61,181,255, 94,153,211,168,234, 69,146, 94,
+135, 40,181,156,138, 31,134,224,134, 31, 57,239,101, 85,208,245,254, 14,226,169,127, 68, 59,162, 64, 24, 70, 28,162,226,127,253,
+181, 95,199,140,136,175,126,229, 75,248,212,167,222, 70, 28,108, 18,151,108, 82,177,221,126, 87,109, 75, 11,167, 32,198,136,148,
+ 51,206,211,140,156,237,223,162,192, 52, 77, 24, 34,227,249,179,103,200, 52, 34,205, 9,163, 51,200,135, 24, 49,238, 70,196,113,
+ 64,202, 51,152,108, 98, 99,102,239,187,203, 4, 61, 98,136,193, 83,218,162,235,123, 19, 2, 19,174,247,123,132, 16, 49, 39,177,
+169,223, 37, 98,105,158, 49,103,193,156, 18, 72, 18,136,216, 96, 89, 34, 36, 13, 80,153, 49,198,193, 38,105,149,154, 63,142,194,
+140,110,174,241,210, 64,103,245, 6, 36,231, 26, 0, 82, 27,209, 18, 13,170, 98,205, 50, 5,104, 22,112,217, 7,151,152, 83,106,
+114, 30, 72,113,202,130,121, 58,131,213, 28,243, 44, 74, 85, 61,124,198, 57, 41,108, 83, 60,121, 40,142,136, 32,232,100,132,176,
+ 16,161,176,251,154,125, 50, 15,209,246,189, 33, 88,222,119, 12, 64,162,128,156, 50,160,115, 61,205, 82, 86, 92, 15, 25,251,183,
+222, 66,194, 30, 54,234, 62,116,241, 45, 9,149, 79,106, 83, 75,225, 47,131, 4, 1,175, 19,227,229,203, 4, 58,125,130,195,129,
+ 65,251,231, 56,205,140,233,238, 14, 65, 78,216, 13,132,195, 24,177, 27, 24, 8,214, 36, 74,182,138, 86,214,196, 35, 27, 66, 97,
+ 43, 63, 15,229, 33, 87, 60,101, 67,158, 11, 78,154, 0, 76,217,208,159, 57,139,191, 6,213, 48,118,241,211,111, 8,231,234,250,
+119,248,250,135,156, 52, 74, 12, 80, 48, 75,224,104,108, 55, 8,199, 90,228, 33,102,199,155,178,239,234,203,210,192, 87, 30,182,
+242,118, 98, 94,206, 96, 73, 96,204,118,141, 56, 31, 96,114,164, 0,182,210,183, 55, 74, 28, 54, 16, 39,190, 21,102,123, 33, 5,
+137,187,140, 73, 38,204,162, 56,139,233,217, 1, 65, 16,131,148,187, 20,177,102, 47, 17,136, 49, 48, 97,143,210,212,105, 71,137,
+ 44,166,249, 78, 86,245,191,181,237, 39,156,229,220, 23,190,174, 44, 54,235, 64, 90,161,137,221, 49, 91, 23, 59, 82,167,118, 99,
+ 70,182, 17,163,139, 33,203, 37,195, 79,107, 26,157, 82, 79,150,171,244,200, 7, 72, 77,180, 34,126,193, 59,111, 96,219, 22,247,
+ 62,217, 91,125, 53,214, 83,150,162,166, 16,225,162,136,163, 99,232,107, 37, 6, 74, 45, 93,180, 42,226, 91,100,181,220, 22,115,
+ 93,228,111,104,136,139,216,146,177,105, 79, 0, 19,189, 44,126,107, 42, 92, 81, 30,208, 5, 81, 79,183,153,226,186,165,101,111,
+208, 20, 39, 76,210,210,224, 94,174,211,107,241,190,212,208,163, 90, 16,111,207, 24,116,207,164,253,212,125,226,155,168,132,158,
+ 10,183,247,175, 21,109,244,185,212, 67, 78,143,248,119,119,139, 51,239,104,159, 61,127, 11,127,250, 39,127,140,223,251,189,239,
+226, 11, 95,248, 18,222,125,239, 61, 92, 95, 95, 99, 28, 99,125,127,135, 97,112, 89,155, 21,231,236, 5,150, 65,200,233,108,132,
+ 39, 63, 86, 99,176,166,235,156, 8,146, 38, 39, 43, 69,196, 56,120, 99, 96,196,180,253, 48,128,216, 92,225,134, 49,186, 61,170,
+ 59,210,129,173,176,145,199,147,170,173,196,134, 24,128, 96,178,178, 57,205, 78,142,203, 16, 48,206, 73,112, 62,222, 2, 50, 35,
+122,241,158,166, 25, 36, 25, 47, 70,155,152,179,103,184, 77, 41, 35,231,108,209,175, 46,123,130, 42,134,192, 62,241,153, 60, 47,
+167, 25,197,144,103,246, 88,208, 92, 73,105,150,167,109,193, 45,193,139,187,147,122,165,129,167,125,175, 30,204, 26, 14,154, 1,
+205, 51, 68,179, 27,161, 80,109,204, 85,129, 57,101, 47,106,203, 91, 27,252,156,157, 53,152, 87,186,195,189,131,102,187, 79,152,
+ 99, 25,139, 96, 24, 8, 51,155,236,142, 36, 87, 38, 60, 49, 35, 41, 33,228,132, 23,215, 3,116,247,194, 88,228, 15,212,243,218,
+ 51,223,211, 69,234, 70, 3,222,234,216,137,128, 73, 8,211, 81,112,186,253, 8,243,241,181,163,233, 59,131,187,231, 25,144, 4,
+142,140,113,183,195,245,213, 1,187,253,222,154, 34, 53, 43,214,125, 36,236, 6, 2,141, 12,196, 17,160,104, 6, 63,110,140, 20,
+120,209, 97,129,221,108, 70, 1,202,142,158, 72, 54, 93,184, 24, 71, 65,154,212, 59, 16, 53,241,220,161,158, 87,166,155,103,168,
+186, 5,177, 24, 25,209,222, 39, 6, 35, 58,255,172, 88,207,100,139,100,205,166, 71,103,127, 93,213,119,240, 99, 0,194, 64, 16,
+ 10,150,162,167,197,216,201,247,252,117, 42, 39,241,104, 57,234,160,218,245, 33,205, 16, 99,103,138,120, 3, 96, 16, 65, 49, 59,
+ 12, 12, 12, 5,158,237,200, 92,140, 76,132, 25,176, 9, 31,212, 5, 42,132, 38, 0, 67,116,177,110, 89,222, 90,233,119,197, 23,
+115, 26, 85, 35,134,198, 48,117, 51, 32,164,103,250, 82, 5, 48, 10, 91,177, 88,253,181,157, 2,119,135, 28, 45, 50, 51,109,119,
+253,218,237,102,183,167,241,213,225,223, 76,189, 2,237,152,231, 15,157,246,218,152,182, 95,232,191,215,101,124,195,163,189, 51,
+ 87, 89, 77,208,107,220, 64,161,247,222,198,154,217,174, 91, 95,219, 96,191,246, 43,220,141,219,215,101,250,229,246,250,208,222,
+ 15,224,146,188,182,241, 74,175,181,236, 34,125,115,146,230,202, 34,190,159,230, 88,116,251, 77, 50,251, 19,170,237,197, 54,224,
+137, 3, 10,109,188,155,143, 5,211, 61,124,201, 60,245,193, 42, 54, 46,138,237,125, 60,245,167,182, 17,169, 25, 99,100,252,193,
+255,249,251, 16, 5,222,253,177,207,224,240,236, 57, 56,140,216,239, 7, 12, 46, 1, 51, 6, 59, 33, 3,253, 37, 17, 0, 0, 32,
+ 0, 73, 68, 65, 84,122,129, 87,101, 12,113, 0,212, 92,218,110, 78, 19, 52,103, 92, 31,246,136,113, 7,149,217,125,211, 7,131,
+135,217,116,214, 28,140, 61, 31,226,224, 72, 91,118, 9, 19, 99, 28,184, 78,198, 57,101, 75, 72, 35,113,249, 80,112, 63,249,140,
+ 52, 37, 12,129, 49, 4,115,187,155,211, 4,146, 25, 49,216,161, 62, 37,207, 27,103,197, 16,128,171,103, 47, 48,209, 30,231,243,
+ 17,243,156,156, 7, 96,110,109,209,189,221,139,132,170,236,196, 9,214, 57,146,136,135,193, 40,210, 60,251,234, 65,124,202,135,
+ 63,167,232,166, 38,198,178,102,135,100, 11,191, 39,248,250,103, 22, 32,184,142, 94,193, 96, 18,196,200,245, 49,152,209,142, 37,
+144, 13,172, 53,123, 37,176,249,241, 67, 9, 1, 9, 28,128,192, 17,113, 96,232, 48, 66, 53,184,132,205, 13,168, 16, 16, 53, 33,
+ 6, 1,130, 9,229,146,203,223, 41, 41, 62,125,149,113,120,231, 29, 36,221,187,183,250,195,159,131, 86,150,249,240,117,171, 13,
+209,205,134,204,163, 2,199,163,130,228, 14, 39, 81,228,243, 25,148, 39,132,146,153,174,182, 75, 54,196, 2, 24,199,128,195,213,
+ 14, 97,220, 33, 18, 99, 12, 4,140, 1, 33,238, 16,121,132,178, 67,228, 32, 15, 70, 49, 79,125, 1, 87,207,252, 0, 5,241,146,
+ 69, 47,202,182,199,150, 4, 38, 89,217,151,147,199,253,146, 93,103,238, 3, 99, 77, 27, 47, 73,109,254, 56, 3,102, 75,233, 99,
+ 84, 95,130, 64, 84, 67, 90, 4, 64, 16, 96,240, 38,175, 68,192, 14, 4,196,129,192,195, 0, 66, 4,137,130,196,252, 88, 34, 53,
+ 30,216,178,146,209, 8, 86,201,107,100,233, 61, 98,235,117,247,218, 45,230,249,158, 64,227,187,147,208,112,157,196, 53,226,164,
+130,228,255, 93,225, 11,234, 39,161,150, 97, 45,174,239, 92, 28,136,154,159,161,141, 75,198,247,201,124, 95, 46,251, 67,135,149,
+ 94, 66,230,178, 21, 34,212,228, 99,183,210,168,150,225, 92,221,215,180, 39,182,233, 6, 12, 47, 13,164,155,218, 38,198,121, 7,
+244,200,180, 84,239, 87,116,123,184,210,102,167,219,237,139,165, 54, 52, 5,185,232,202,229, 5,219,124,209,231, 19,173, 11,123,
+ 27, 7,235,254, 6,212, 55,131,186, 98,199,235,138,100, 86, 52,222,235,189,184,170, 86,146,158, 93,208,139,244,203,174,145,214,
+ 95,160, 48,133,233,226,104,168,175,195, 69,166,109,223,216,220,247,122, 47, 13,132, 56, 63,100, 67,222,183, 82,117,212,107,167,
+ 85, 9, 60, 96, 86,119, 95,172, 58,109,182,106, 63,194,254,124,139, 45,240,196,142,163, 76,252,132,197, 70,184,107,164, 84,177,
+ 63,236,241,193,251,223,195,171, 87,159,224,197,219,111,227,237,183,158,227,116,123, 3,205,193,236, 59,211, 25,195,184,135, 8,
+ 48, 79,231, 26,148, 18,152, 48,165,132,155,155, 59,100,144, 27,181, 12,144, 36,158,129, 30, 12, 18, 22, 43,138,136, 1, 89, 50,
+246,131, 65,200,211,156,156, 0,103,163, 74,140, 35,152,197, 8,113, 33, 96, 96,212,244, 51,248,206, 52, 4,184,107, 23,129, 57,
+250, 26, 81, 49,238, 70,188, 62,102,164,124, 50,131, 18,216,234,224,148, 21,119,159, 28,145,211, 12,146,100, 58,121, 6,148, 2,
+ 78,231,140,221, 0,236,247,131, 53, 12,230,112,130,129, 9, 51, 34,180,200,166, 82, 66,244, 41, 47,168, 64,157,228,198,100, 14,
+152, 34,130, 44, 14, 3, 59,161,180, 64,188,234,196, 16,174,132, 83, 1,152,193,194,134,180, 41, 65,153, 45, 11,158, 0, 13, 1,
+172, 25, 28,204, 43,156,169, 97,208, 59,148,159,200,170, 7,193, 8, 97, 17, 2,101, 32,171, 17,243,118, 33, 65,198,136, 44,140,
+164,140,156, 44,246, 51,194,138,209, 24, 8,239,188,251, 2,127,254,242, 93,232,221,159,129,134,248, 0,154,254,116,222,187,174,
+ 62, 68,145,128,215, 74,248,232, 21,225, 75,199,151, 8,135, 51, 70, 13, 72, 97, 70, 14, 4, 74, 12,132, 0,206, 64,140,138, 44,
+140, 32, 9, 99, 4, 36, 70,104, 14,200,154, 33, 4, 32, 15, 32, 42, 50,200, 80,237,162,165,150, 93,233,134, 1, 91,255, 18,130,
+187,193, 41, 1, 73, 5, 49, 27,164,204, 62, 80,138,159, 81, 68, 78,162, 38, 90, 82,211, 8, 96,161, 74,226,181,250, 81, 53, 98,
+ 8, 62,200, 38, 71, 99,138, 69,109, 82, 39,127,179, 64, 41, 66,100,112, 37,131,121,216,135, 24,141,144,231,232, 66,236,180,228,
+107,111,181,102,135, 13,183, 63,109,225,208,165,200,150, 67,151,161,164,136, 48,131, 26, 51, 79, 33,103,128, 47,221, 89,107, 99,
+ 90,142, 66,129,174, 36,111, 90,189,112, 75,167,138,134,145,222,235,167,244,114,182, 92, 89,166,182,177,166,189, 44, 75, 59,246,
+122, 55,219,200,138, 4,182,208,239,154,253, 51, 26,194, 84,127, 42,151,204,242,226, 26,248, 16, 12,127, 9,211, 47,132,178,101,
+ 15, 69,216,148, 4, 52,149,100,209, 79,111, 84,248, 86, 86,209,113,245,244,158,110,122,163,136,119,143,105, 85,240,105,235,245,
+160,139, 6,160,181, 69, 85,213,149,168,172,217, 87,251,243, 86, 1, 50,109,241, 18,124,135,185, 98,144,151,219, 44, 4, 23,106,
+ 96, 39, 45,100,150, 77, 10, 28, 46, 26,139,250, 42,116,122,127,237,124,232,107, 19,164,107, 91,165,123, 12,138,238, 33,158, 17,
+ 45,132,125,253, 17,247,232,143, 31,160,107,247, 35,122,216,214, 14,141,141, 49,181,250,140,203, 71, 24, 99,196,237,221, 29, 94,
+190,252, 24,159,123,235,109, 60,127,241, 2,175,111,110,112,122,125,235,203, 46,167,249,140, 35, 8,106,201,105,115, 2,129, 49,
+167, 12,184,101,236,110,120,102, 68, 36,100, 55, 72, 97,140,131, 21,204,219,187,163,233,122,197, 14,194, 24, 6, 12,158,104,102,
+209,174,140,156,205, 26,181, 72,193, 66, 28, 33, 96,228, 60, 97, 23,205,118,245,156, 4,251,209,172,100,167,100, 82,140, 16, 34,
+166, 41,227,124,158,204, 54,213,223,219, 57,217,105, 54,232,140,200,140,115, 54, 41, 26,147, 79, 74, 16, 76,179,177,214,227, 16,
+192,106, 65, 46,137, 24,121, 50,169,154,178, 53, 13, 26,184,154, 75,169,187,128, 17,147,121,197, 43, 67,133, 32,169,225,185,144,
+214, 9,223,200,125,140,200, 17, 41, 4,228,108, 33, 37, 75, 26, 92,125,167, 42,245, 65,197,144,192,168, 2,162, 80,215,114,226,
+233,123,198,114,151,154,120,167, 28,129,106, 27, 43, 22,212,147, 45,241, 76, 84,192,200, 8, 65,145,201, 86, 35,239,140, 9, 55,
+159,249, 52, 94,254,191, 31, 99,148, 59,128,199,149,130,230,126,149,199,253, 83,122, 95,221,153,128, 19,128, 15, 94, 5,124,237,
+229,135,120,254,252, 35,224,240, 54,114, 10,200,178, 51, 63,244,201, 2, 82, 2, 8,227, 72, 16,236, 64,170, 24, 2, 33,143, 17,
+146, 5,195,108, 52,112,129,154, 51, 42,123, 49,118, 20,132,124, 45, 43,126,157,103, 47, 19,193,165, 99,226, 62,237, 64,192, 44,
+ 12,202, 62,105, 83,240,201,223, 80, 16,130,248, 64,178,216,177, 25,143,130,125,248, 92,184, 81, 86,196, 5, 4,187, 62, 82,110,
+124, 87,138,138,107,246, 90,136,236,231,114, 65, 95,100, 9, 42,179,162,190, 54, 54,209,139,233,116, 61, 20,183,174,106,181, 21,
+ 32,115, 94,235,216,209,133, 68,230,211,125,106, 12,179,215,158,115,193,235,180, 96,113, 16, 66, 5, 61, 91,142,122,211, 4,232,
+ 90, 27,173, 15,219,175,234, 6, 4,175,205,149,163,235, 37, 60,213,189,121,163,152, 92, 64,222, 78, 22, 85,146,221,168, 74,226,
+106, 49,190,120,156,155,181,118, 99,142,106,110,191,147,138, 53, 13, 73,155, 73,172, 79,201,231,222, 40,204,155, 5,188,127, 13,
+ 46,190,190,150,171,221,243, 60, 91,230,125,249, 57,193, 18,112, 80,180,204,165, 98,234, 70,163,208,166,159,161, 97,196,183,153,
+180,122, 17,242,162, 93, 24, 13, 54, 27, 19,185,100,214,119, 36, 62, 90,221,151,214,144,141,203,125,136, 94, 60,231, 69,253,112,
+105,169,190,134,216,137,157,116,163,242, 67, 79,229,111, 58, 13,109,236,116,182,245,107, 23,183, 75,151,138,130,174,168, 7,124,
+242,201, 43,124,244,209,135,248,226, 87,191,129, 41, 41, 66, 24,176, 63,236, 64,211, 18, 9, 52, 12,140,105, 8,184,185, 57, 34,
+235, 12, 73,166, 15, 79, 57,227,112, 56,128,201, 28,218, 3,193,225,117,155, 98,204,168,195, 32, 78, 30,162,107,118,179,201,208,
+242,217, 82,227, 34, 99, 8, 17,228,187,115,211, 32,195,236, 91, 93,178,166, 8,144,121,134,134,128, 41,239,108,162,135,185,120,
+ 37,153, 32,105,238, 63,191,106, 69, 61,196, 17,202, 12, 22,131,233,131, 71,162, 86, 61,249,156, 44,115, 59,176,165,191, 9, 16,
+200,164, 82,200, 9, 32, 51, 22,129,152,141,171, 57,234,154,127,188, 25,243, 12, 24, 96,234,161,228,203, 87, 1,170, 77,105,202,
+ 2,226,140,113,132,221, 22,230,138,164,138,216,227, 12,158, 64,167, 98, 69,155, 37, 33, 50,131,216, 57, 83,249,255,163,237,221,
+122, 44,185,174, 52,177,111,173,189, 35,206,201,204,170,172, 98,145, 85,188,138,164, 72, 81, 20, 91, 98,171,187,221, 61, 13,247,
+216,238, 65,195,128,141,198,216,243, 48, 54,198,158,134, 7,240, 13, 6,108,192,176, 95,108, 3,126,209,131,127,137,255,128,159,
+108, 24,227,129,253, 48,134,103,198,234,214,232, 70, 81, 45,241, 90, 36,171,138,172,123, 85,102,158,115, 34,246, 94,203, 15,107,
+ 69,196,142, 56,113, 78, 38,213,114, 1, 18,164,170,204,115,137, 19,103,175,181,190,245, 93, 28,117, 82,128,145, 17,131, 32,196,
+224,105, 95,106,215,136, 1,229,174, 41, 50,148, 99,193, 38,118, 78,173,161, 9,150,226, 38,168, 37,225,133,107, 7, 56, 61,121,
+ 5,249,171, 95, 35,212,201, 78,245, 78, 73,116,206, 29, 61,181,208, 30, 16, 61, 26, 13,131, 45, 3,183, 79, 2,232,209, 83, 44,
+ 94,189,135,167,135, 47,128, 55,199,136,233, 4,178, 24, 24,239, 64, 50,198, 58,155,251, 96,183, 35, 95,114, 13, 33, 5,135, 53,
+192,149,179,201, 27,128, 25, 68, 17,129,179, 33, 80,110,110,148,132,128,108, 5, 87, 84,124, 18,231, 94,214,106, 5,182,227, 87,
+117,123, 83,203, 54, 48,174,154,120,163,110,168, 51, 83,151,127, 99,143,211,145,176, 58,235, 55,118, 20,134, 2,144,123,197, 80,
+118,133, 7,249,231,155,122, 57,156,138,157, 99, 68,220, 15, 76,177,179,198, 35,108,167,141, 13,100, 55, 29,217,117, 50, 13,187,
+ 77,233,226, 67,189, 57, 72, 4,100,191,113, 98, 65,254,234, 62,148,110,242,239,245,222, 24,164, 98,211,248,141,105,136, 72, 9,
+ 37, 82, 33,123,219, 79, 52, 42,140, 89,118,238, 23,117, 7, 42, 57, 62,236,180, 95,167, 79,130,101, 70, 7,183, 75, 2,137,202,
+124,171,254, 49,104, 46,117,144,118, 67,173, 84,104,194,251,249,147,134,199,236, 89,217,229,234, 66,123, 32,124, 50,113, 98,180,
+ 4, 80,165,249, 98,127,161,233,124, 44, 87, 3,202,215, 52, 49,229,153, 72,231,200,161,119, 81, 26,173,119,230, 26,128,158, 61,
+ 92, 76,252,221,123,221,130,217,119,188, 70, 21,187,105,105,132,240,104, 33,171,153, 64,254,163, 93,191, 22,174, 6, 37,182,164,
+231, 23, 86, 45,229,152,147,149, 80, 33,203, 3, 60, 96, 98, 4,108,140,103, 26, 58,199, 20,231, 55, 42,230,170, 59,240,206, 93,
+184, 59,134,134,181, 67,242,116,123,169, 68,100, 19,247, 23,183,191,194,239,139,244, 68, 56,170, 42,164,172, 88, 46, 23,110, 98,
+ 22,128,179, 6,116,182,129, 42,187,161,139,153,189, 60,173, 78,112,229,234,101, 44,171, 26, 45,213, 14, 69,154, 46, 93,179,237,
+215, 21,140,148, 20, 11, 22, 44, 23,230,193,158,150, 53, 88, 4, 77,106,144, 81,163, 34,160,170, 2, 82,230,222, 0,198,216,242,
+ 6,175,134,142,173,220, 54, 96,205,216,116,172,113,181, 29,167,136, 5,177,168,152,150,220, 92, 8, 5, 0,155, 51,219,162,130,
+144,123,221,147, 65,196, 28,109,157, 64, 66,104, 83,161,172, 1,185, 89,136,221,131,134,206,103,196, 46,128, 67,197,130, 59, 68,
+ 80, 17,161,225,128, 86, 50, 56,103,196,104, 76,116, 98, 2, 9, 16,217,200,108, 73,124,162,235, 50, 55, 24, 30, 72,162,198,108,
+ 23, 39,182,117,183, 15, 7,104, 38, 72,206, 8,212, 73, 9, 19, 68, 25, 1, 12, 13,209,124, 4,180, 69, 66, 68, 2,131, 4,160,
+108,147,121, 21, 8,177, 14, 72,185,182,168, 87,109, 81,177, 37,161, 29,113,194,181,235, 87,241,229,147,231, 16,154, 47,141,229,
+ 72,123, 20, 23,123,118,239,170,219,200, 17,217,203,199, 39,167, 1,103, 95,174,176,208, 91,208,240,125, 64,107, 68, 40, 50, 51,
+ 52, 70, 48, 11,152, 92,139,159, 13, 37,142,145,144, 40, 66,132, 65, 65, 64,180,112, 95, 4,118, 46, 83,238,214,241,189,134, 61,
+184, 97,145, 56,239, 33,143, 52,227, 0, 72, 6,197, 84,153, 87, 65,169, 95, 55, 10, 20,234,171,145,228, 36,195, 62, 4,134, 10,
+ 59, 52, 26,171, 3, 2,163, 15, 64, 50,102,124,238, 17, 65,149,224,235,113,237,215,174,157,172, 86,149, 16,222,124,229,250, 15,
+ 86,235,198,246, 76,180, 93,220,117,194, 98,239,164, 98, 60,120,210, 12,241,149, 90,202,194, 74,121,220, 32, 49,147, 2, 98, 87,
+148,193, 47,197, 36,220, 59,244,184, 84, 96,178,239,167, 17,132, 79,179,123,208,145,235,155,142,139,204, 62, 88,115, 62,231, 98,
+ 90, 38,104,139,249, 76,115,239,197, 95,152,208,248,113,136,230,171, 57,205, 48,167,105,134, 21, 48, 61,224,231,188,214,186, 6,
+106,250,184,229,154,106, 40,150, 52, 79, 40,156,157,248,119,105,228,231, 99, 87, 65,219,222,248, 23,184,224, 91, 46,113, 99, 23,
+188, 49,253,108,190,222, 81,225,179, 78,163,155,103,103,121, 28,233,237, 7,184,138, 74,105,205,121,143, 49,153, 52, 58, 56, 98,
+180,219,118,134,108,119, 10,208,212,221,142,232,220,120,218,223,108, 34,223,179,192,223,211, 52,148,222,240, 84,172,230,230, 24,
+ 43, 61, 87, 36, 37,100, 13,248,206, 59,111,163,109, 55,104, 27,115, 56,219,180, 9,196, 1,177,170,193,177,194,166,205, 56, 91,
+173,209, 54,107,164,212,186, 74,206,118,182,151, 46, 29,226,232,242, 21,140,172,101,253, 0,169,162,145,153, 42, 6,158,185,188,
+196,149, 43, 87,112,116,233, 50, 22,139, 3,160,170,113,182,206,198,150, 15,132, 88, 45,108,186,119,185, 79,136,209, 72, 98,172,
+224,104,194,217, 24, 24,224,136,182, 77,104,155, 13, 82,178,244,171,142,191,193, 24, 18,190,152, 96,102, 49,129,204,214,213, 9,
+122,204,193,139, 94,237, 23,168, 91, 85, 40,154,212,177,164, 13,154,205, 57,131, 84, 16,145,129, 64, 80,138,190, 35,181, 76,111,
+176, 77,137,237,186,233,253,246,131,231,197,135, 64, 16,174,144, 50, 65,218,141,193,182,157,243,153, 59,217, 73,150, 94,166,106,
+196, 80,234,151,160,236,239,167, 10,125,206,235,144, 71,160,132,156, 4,140, 22,153, 2,114,147, 1,105, 60,106,180,147,210,177,
+147, 87, 5,145, 4, 33, 90, 49, 85,101, 28, 45, 2,206,176,192,250,201, 83, 4, 52, 80,207, 6,191, 48,236,212,175,206,116,150,
+251,193, 12, 60, 88, 51, 94,195, 26,111,124, 43,226,244,210,239, 66, 86, 10,228,167, 0,101,136, 16,162, 2,117, 16, 35,146,197,
+170,111,160, 59,139, 87,117,143,251, 62,173, 45,155,247,191,228,214, 62,131,206,170, 92,204,125,143,141, 89,232,138,140,208,171,
+176,208,231, 20, 80,177,248,165,237,175, 24,249,112,203,190,247, 22, 83,223,228, 46,106,119,228,100, 73,253,200, 74, 93,161,237,
+ 99,194,217,178,214, 73, 11, 89,227,216,130,188,142, 1,225,155,175, 92,255,193,106,213,184,148,139,118,144,203,104, 84,200,139,
+ 85,244,214, 76,172,147, 47,190,118,191,235,183, 85, 40,154,132,209,227,211,248,208, 54,199,169,241,110,104,176, 12,156, 20,179,
+233,244, 91,248, 58,207,101,181,206,237, 58,247,213,152,126,122,157,161, 51,211,200, 90,119,172, 30, 24,118,200, 52,114, 32, 29,
+138, 45,237,156,214,177,151,185,143,153, 67,159,182,154, 2, 45, 42, 16,233, 92, 97, 40,190, 60, 59, 45, 99,119, 20,235,157,117,
+ 96,119,166,250,244,158,186, 80,179, 48,243, 36, 58, 83,216,119, 22,218,114,109, 81, 6,222,239, 91, 81,140,136,121,152, 40, 65,
+138, 2, 76, 23,240,123,223,123,109,119, 5,250, 20, 89,246, 59, 31, 79,255,134,197, 92,199,137, 50,231, 21,244, 41,231,134, 48,
+177,149, 27,255,169,171,136, 91,119,190,194,179,207,191,132, 55, 94,121, 17,183,190,188,139,166,105,161,185, 29, 76, 87, 56,224,
+201,211, 51,108, 86,107,116, 1, 40,169, 77, 80, 17,135,214,107, 44, 22, 75, 28, 44, 43,223, 69,218,129, 90, 5,177, 48, 21, 2,
+ 46, 45, 43, 28, 93,121, 6,161, 62, 66, 85, 45,192, 85,141,175,158, 36,156, 60,122,140, 72,217,237, 56, 77,227,221,103,169,187,
+211,154, 21,201,208, 27,141,116,141, 92,155, 21,235,117, 99,217,213,222, 12,116, 73,115, 57, 39,147,249, 6,243,105,207, 41,227,
+160,102,132,186, 54, 25, 26, 51,234, 24, 16,235, 26, 89,200,205, 68, 2, 82,155,204, 99,222, 47, 91, 96,219,143,198,170,194, 70,
+ 34, 52,181, 32,102,228, 44,168, 34,129, 67, 13,241,152,205,156, 82,175,127, 39,130,153,197,100, 65, 12,206, 89,234, 16,135,114,
+ 4, 32,195,226, 67,207, 93,233,216,225,190, 34, 9, 4,142,182, 59,239,210, 43,179,250,192,230,198, 41, 29,132, 79, 48,195, 29,
+143, 51,243, 62,192, 8, 98, 49, 70,112, 12, 72,136,104,178,195,252,203, 26, 79,214, 53,244,236,161, 37,150,245,132,232,139, 82,
+228,230,111,205,206,131,228,169, 2,225, 4,248,219, 47, 63, 4,125,235,155, 56,149,111,162,221,156, 26, 10, 67,176,236,119,134,
+251,162,215, 22,203, 74,220, 91,225, 34, 26, 2,209, 38,120, 30,185,165,235,229,110,149, 36, 5,108, 46, 70, 70, 52, 31,248,208,
+ 79,239,228, 38, 53,228,169,127, 66, 29, 73,110,124,222,134, 46, 8,204,173,213,251, 34, 13, 50, 95, 1,181,200,219, 46, 6, 23,
+190,198,206, 74, 99,238, 79,159, 24,138,193,139,222,253,232, 45,224,200,214, 84,139,186,178, 73, 61,173, 91,240,128, 24,142, 50,
+209,169, 72, 96,235,197, 61, 90, 88,216, 21, 52,128,146, 64,215, 49,150, 67,175,247,134, 81,237,157, 97, 8, 29,166,114, 45,216,
+238, 37, 97,106,122,234,209,140,185, 7, 21,135, 48,109, 49,121,169,112,115,163,157,197,243,220,193,177,212,170,251,184, 70,229,
+193,191, 67, 64,212,237, 56,184,115, 32,155,120,224,151,110,105,115,207, 59,142,148, 45,100, 10, 91,240,246, 92,182,252,148, 30,
+ 64,227,231,157,216,170,238, 45,114,187,208, 16,218,131,119,208, 84, 60, 56,254, 11,154, 69, 2,246, 21,231,242, 14,208,249,122,
+191,167, 49,161,185,189, 71,249,243,131,127,235, 28, 88,190, 7,218,161, 81,191, 64,186, 19,110, 57, 95,234,243, 53,254, 16,209,
+185,144,252,254, 39,221,229,153, 87, 76,219,170, 51, 4,206,242,126,221,189,134, 96, 98, 72,123,134,155, 95, 61,197, 55,222,124,
+ 7, 7, 88,227,254,131,199,150,143,190, 48, 51,152, 54, 19,158, 60, 57, 1,165,198, 9,115,102, 10,163,157, 46, 87,129,203, 71,
+ 7, 56,190,114, 12,114,121, 22, 67,176,172, 43,112,181,192,178,174,112,249,248, 50,132, 23, 54, 8, 16,227, 73, 10,184,125,251,
+ 14,120,243, 24, 33, 70, 4,142,189, 20,204, 72, 96,193,162, 45,221,227, 91,180,224, 73,144, 17,237,154, 38, 35,109,214,208,212,
+246, 58,228,206,205,173,123,207, 49, 24,244, 45, 41, 25,209,174, 90,246, 94, 7, 92, 69, 36,170,160, 57,217, 74,210,181,241,164,
+ 25,145,187, 66,108,174,115, 96,182, 53,187,182, 78,226, 51,108,179,170,204,246, 86, 36, 35,186,215,119,206,157,142,217,172, 68,
+197, 51, 57,162, 40, 56, 0, 9,193,249, 6, 6,241,138, 23,133,186, 98, 32, 70,211,180,119,123,119,104, 95,164,251,245, 25, 25,
+150,170, 68, 72,217, 2, 92, 66,224,225,188, 86,177,248, 85,183,253,109,133, 77,162, 23, 24, 89, 44,148, 39,181, 45,150, 72,224,
+197, 18,143, 79, 18,168,125,234,198, 57,123,131,166,231, 73,114,115,253,168, 2,129, 21,183,206, 24,111,224, 4,111,126, 63,226,
+241,209,159, 32,173, 24,104, 79, 16,144,128, 64, 16,138,136,100,198, 57, 66,132,154, 76,234,215,187,254,113, 68,171,132,166,205,
+104,147, 25, 13,169, 24, 1, 78, 52,155,238,191,239,243,196, 10,174,167,247, 85,193,120, 35,226,197, 57, 2, 16,182, 68, 79, 18,
+114,119,193,193, 8,157,251,212, 48,234,145, 81,233,118,232, 93,157,112,134, 59,185,127,188, 0,200,217,255,135, 74,143,162,244,
+223,125,120,250, 92, 49,209, 83, 8,168,150, 7, 8,111,190,122,253, 7,169,105, 44,134,174,183,203,158,216,158,208,120, 10,150,
+ 45,208, 25,147,208,150,129,226, 79,212, 21,107,131, 26,164,176, 47,165, 30, 38,198,104,191,184,117,152,238,153, 98,105,103, 53,
+154,131,182,231, 67, 81,102, 37, 68,180,205, 49,216, 90,132, 83, 9, 69,210,204,115, 12,160,204, 40, 16,134, 74,210, 29, 97, 75,
+101, 53, 61,110, 75, 8,121,122, 24,151,150,133,227,104,146, 29, 7,249,190, 24, 18,218,143,196,238, 42,154,123, 62, 59, 42,108,
+217,169, 92,131, 16, 38,100,180,241,122, 99,220, 3,232,136,231, 65, 95, 11, 69, 24, 11,249,105, 23,212, 95, 34, 69, 61,220, 94,
+ 76, 62,122, 94,214, 11,253,205,170, 52,126, 43,191,126, 46, 23,174,135, 30, 80,176, 97,105,126, 63, 63,250,142, 20,144,223, 69,
+ 95,229, 98,177,192,163,175,110,227,131, 47, 30,226,245, 55,222,192, 33, 53,104, 83,194,225,165, 67, 80,168,241,100,213, 98,117,
+114,138,138, 44,156,100,221,166,222, 18, 52,176, 21,180,197,114,137, 43,207, 92,195,114,177, 0, 1, 56, 92, 70, 80,172,208,120,
+248,244,226,240,146,233,134,213,156, 44,239, 62, 56,193,250,209,151,189, 73, 77,231,215,201, 69,124,100,181,168, 16, 98,101, 26,
+115, 17,176,102,196, 64,104,132,176,105, 90,164,102, 3,104, 54,105, 81,246,200,203, 24,140,125, 46, 30,131, 25,173, 89,168, 40,
+ 99,225,123,245, 54,217,212, 23,221,209, 78, 53, 65,178,246,217,215, 96,182,244, 45,184,236,201,207, 67,241,172,245,110,135,105,
+154,117, 65,136,149,103,196, 91,113, 53,141,186,145,162, 50,216, 8,113, 80,196, 0,104,172,144,133,141,136,215,223,172,150,235,
+174,172, 16,170,253,251,215,157,189,102,177, 27,131, 21,154,174,208, 43,145, 89,245,186,115, 6,179, 32,134,104,114,101, 54, 51,
+159, 77, 18,180,173, 41, 5,114, 78,198,146,119,152,191,162,140,138, 20,199,135,192,186, 62,198,233,163, 21,130,158, 1, 28,119,
+174,106,182,199,161,194, 3,164,248,183,232,255, 16,161,120, 10,194,163,187,132,191,117,237, 54,234,183, 95, 71,147,190, 5,110,
+159, 0,200,168,217, 96,104, 51,233, 19,247, 32,168, 32, 44,144, 16,144, 17,145, 92, 90,150,133,208,180,130,212, 52,200,109,234,
+141,124,204,139, 75, 7, 37,145, 42,178, 71,166,138,122,154,103, 12,222,108,218,222,221,228,134,236,247,112,238,189, 53,132, 58,
+211, 52,234,211,249,208,223, 3,218,175,246, 58,207, 50, 38, 35, 76,114,232, 66,100,212,200,113, 78,196, 68,111, 4,103,126,254,
+ 93,171, 39, 96,212,213, 2,225,205, 87,111,252, 96,179,218, 88,215,169, 83, 68,141, 48,109,200,101,199,225,163, 52, 78,120,235,
+187,125,116, 10, 11,103,199,123,167,193, 4, 84,174, 61, 20, 66, 1,209,219,193, 43,189,148,142,102,131,163,116,110,163, 92, 72,
+191, 70, 50,164,153,247,115,158,180,108, 74,128,163,157, 9, 94,123, 86, 2, 52, 33, 21, 99,112,169, 83, 42, 97,114,255,255,180,
+ 3, 42,221,211,172,244, 37,157,198, 18, 35,217, 53,105, 94,100, 39,188,111, 98,222, 3,147,207,123,236,207,201,187,104,231, 99,
+110,239,207,167,228,193,153, 11,181, 7,222,166, 30,247,167,253,181,151, 48, 50,224, 31,194, 21,244, 66,215,165, 72,134, 44,118,
+228, 52,132,230,236, 24,136, 21,187, 61, 12,126,171, 21,157,230, 22,226,180,131, 59,167,243,203,119,189, 64, 50,221,232,128,102,
+ 44, 23, 21, 30,222,250, 20, 95, 61,222,224,237, 55, 95, 55, 3,141, 16,177,206,132,147, 39,143,209,110, 54,125,168, 11,121,232,
+ 73, 78,185,119,118, 60, 90, 84, 56,184,116,132,197,225, 37,115,139,171, 42,100,138,104,214,107,212, 1,160, 88, 99,221, 8, 54,
+ 77,139, 71, 79, 55, 56,125,120, 15,172,141,179,240,217, 29, 42,141, 5, 13, 87, 24, 40,193, 15, 99,107, 28,234, 24, 16,170,136,
+ 38, 41,218,181,233,210,147, 0, 77,147, 64, 42,142, 55,155,173,104, 74, 86, 52, 56,216,148,187, 88,212, 32,174, 32, 96,164,148,
+ 16,187,120,216,186, 66,103,176,157,178, 34,231, 60, 76,252, 4,183, 14,181,233,139,213, 37,109,100,164,188,206,107,221,226,131,
+ 67,239, 10,199, 33, 24, 33, 47, 68,228,172, 8,200, 22,239, 74, 17, 34,238, 57, 15,233,179,192,217,161,222,193, 42, 53,123, 16,
+151,135,148,184,124,141, 67,116,111, 15,113,175,114,131,176,201,121, 11, 76, 78,186, 35, 51,197,201, 8, 72,155, 12,202,107,135,
+162, 13,174, 86,101, 84, 36, 8,110,187,124,112,233, 0, 39,114,136,205,227, 7, 8,212,246,107, 16,218, 69,104, 30, 97,238,219,
+162,206,224,255, 37,136, 88, 48,240,217, 58,224,234,253, 83,124,247,205,123, 56,185,254,175, 0,205, 33, 2, 86, 22, 82, 19, 25,
+ 84, 69, 48,215,136, 68,160,138,208,114, 68,210, 8,201,140, 44,130, 54,153,221,170,170, 66,147, 64,164, 53,254,130,100, 4,136,
+ 19,194,101,140, 72,187,153,144,168,153,189,132, 46,217,204,125,241,225,210,198,232, 46,117, 96,114,126,188, 73, 21,123,107,101,
+146,254,172, 40, 57, 86,170,228,113,174, 78, 20, 15,182, 62, 82,226, 66, 51, 63, 12,194,157,195,106,215, 17, 44,170,202,118,234,
+235, 85, 99,161,237,138,137, 99,153,157, 84, 92,176,205,119, 25, 97, 76, 67, 65, 58,134,178, 78,136,113,221,110, 32,128, 16,137,
+202,212,244, 9, 57, 15,133, 55, 60, 97, 74, 27,167,201,191, 83, 9,209,238,176, 14, 45,137,120, 56,103, 82,167,153,154, 74,231,
+141, 87,163, 53, 0, 13,181,100,139, 96,229, 69,120,107,164,166, 17,111, 97, 76,212,162,237, 99,127,242,187,218, 21, 36, 45,107,
+ 20,245,166, 45,211,157,241,223,168,176,207, 78,244,147,191,215,129,119,176,107, 87, 78, 59, 38,221,209, 59,165,178, 25,208, 29,
+136,248,110,148,129,102, 9, 93,243,239, 79, 49, 68, 31,242,206, 18, 75,115,125, 82,143, 76,232, 62,226, 6,237,124, 53,255, 63,
+ 78,234, 83, 9,231,142, 34,172,187,223,111,239, 21,116,193,214, 99,200, 65, 48, 19,153, 7, 95,125,142,239,190,245, 42, 94,122,
+249, 69, 60, 62, 91, 97,179,218, 0,169, 69,187,105,145, 83,235, 44, 94, 70, 43, 70,146,203, 57, 33,137,226,248,210, 1,110, 92,
+191,230,132, 43,155,172,152, 0,214,108,147,117, 2, 86,171, 53, 78, 78, 87, 88,157, 62, 1,218, 51, 48, 19,170,200, 8, 29,123,
+184, 55,186,178,201,180,142,193, 10,173, 90,150,186,194, 44, 54, 1,139, 93,205, 89,208,166,108, 6, 51, 78,243, 21,247, 77, 39,
+ 85, 44, 34, 97,113,112,136,117,235,144,122, 93,153,174, 88, 50,142, 22,140,176,168,145, 41, 96,149, 8,237, 38,129,197,221,192,
+224,174, 98,206,104, 14,197,247,159, 67,128,176,233,211,161,217, 38,230, 44, 94, 84, 2, 68,108,191,223,133, 89,117,134, 85,102,
+ 63,106,140,124, 18,243,141,239,148, 30,230,204,201,206,138, 54,150,124,112, 31,113, 37,238, 27, 56, 17,187,113, 51, 5,144,152,
+ 46, 91,221,221, 46,163,243,231,135,179,201, 5,181,195,189,134, 74, 88,207, 35, 24,164, 95,153, 8, 27,173,192,162,136, 7, 11,
+156,108, 34,228,236, 17, 56,184,155,185, 35,143,211, 84, 13,154,197,227,169,111,142,115, 31,250,197, 8, 80,164,168,184,117,191,
+194,187,250, 5,158,121,231, 16, 43,250, 30, 56,173, 60,202,212,131, 86,136, 16, 34, 33, 19, 35, 83,132, 74,128,164,140,172, 9,
+ 77, 54, 95, 1,105, 18, 84, 51,178, 59,165, 90, 6,170,120,148, 47,245,215,184, 99,165,195,229,106, 70, 78,147,126,117, 17,217,
+205,145,216,245,232,140, 65,183, 14,179,136, 53,143, 1,237, 37,208,220, 77,239,101,137, 35,244, 62,254, 34,198,165, 48, 63,121,
+119, 89,213,201, 53,235, 89,234, 98,254, 8, 34,131, 39,111,199, 84, 31, 49,248,220, 0, 70, 39,146,159,210,252,115, 8,190, 40,
+ 10, 57,149,187,113,119,200,161,161, 16, 11,128, 70,213, 45, 19,208,155,211,116,222,243,101,178,101, 47,220,215,193, 60,127,206,
+136,164,247,231,166,237,226,188,175,136, 43,246,136,220,232, 28, 18, 84,121, 24,234,118,163, 51,202,124, 47,175, 93, 23, 68, 83,
+146,232, 58, 31,116, 29, 83, 3,116,215,120,169, 51,239, 66,199,187,251,142,248, 49,134,196, 75,123,217,237,240,151,242,205,232,
+185, 64,217,204,223, 23,159, 3,233, 32,127,220,186,102, 91,246,180, 83,168,188,115, 93,218,237, 95,191,117, 87,234, 52, 40, 70,
+183, 93,207,166,143,161,227,255, 12, 33, 53, 59,163,240,198,182,248,229,227,208,108,199,187,125,175, 20,215, 96,223,125,248, 91,
+195,221, 75,146,204,100, 2,234,131,108,102, 95, 38,245,246,199,231,218,205,206, 4,244,152, 79,121, 64, 78, 9,151,143, 2,222,
+120,243,117, 44,171, 26,181, 99,169, 49, 18,234, 42, 32,229,140,179, 77,139,212, 52,253, 36,169, 34,104,154, 6, 49, 86, 56, 62,
+ 58, 52,214,186,107,125,195,226,208, 66, 72,206,158,162, 93,157,161, 57,123, 10,106,207, 16,221,196,133, 57,128,163, 77,150, 85,
+240, 61,169, 36,131,225,131, 77,214,154,205,105, 45,231, 22,109,106,176, 78, 98,176, 62,134,176, 41, 45,120, 57,172, 2, 98,194,
+ 70, 8,103,141,183, 10,106, 62,221, 41, 43, 46,215,138, 75,199, 7, 72,188, 64,206, 4,202, 13, 72, 54, 0,178,187,150, 17, 82,
+ 22,131,240, 85,221, 60, 36, 58, 1, 79,144, 91,113,187, 83,131, 88,141,235,166,208,212, 34,116, 83,183, 26,148,207, 68,150, 1,
+ 95,156, 52,236, 76,109, 99, 72,187,221,168,154,145,119,197,100, 48,189,107,164, 43,246,207,212,119,182,201,209,128,236,205,131,
+180, 2, 73, 13,146, 0,109,171,166,217,247, 36, 56,104,131,122,193,168,151, 7,214,164, 68, 66,197, 1,139, 72,208, 96, 28,130,
+220,180,104,207,214, 56,206,167,184,254,252, 49,242,193, 13,104,235, 76,172, 29,247,219,150, 23,194,112,178, 15,141,162, 0,144,
+ 22, 10,193, 37, 6,190,168, 34,254,247,191,170,113,240,211,127,140,227,227,143, 80, 29,221, 64, 93, 69, 44, 23, 21,150,139,136,
+ 42,178,217,224,198,128,192,110, 73, 76, 0, 41,163, 66,199,243, 82,243,140,135,173, 23,152,140, 33,223, 24, 49,222,154, 58, 14,
+200,106,222,254,185, 91,155,104, 64, 22,130,230,100, 77,168, 5, 11,152, 5,113, 92, 0,161, 70,160, 10, 21, 71,227,116, 56,254,
+220,229, 88, 88,122,161, 37,173, 72,177,134, 86,114,255,127,207,121, 79, 41, 33, 55, 45, 36, 39,228, 36, 72, 73, 32,201, 25,251,
+106,106,248, 46,229, 67, 77,162,110, 87, 83,252, 63, 25, 24,164, 16, 93, 1,214, 14,191,159,158, 91,165,146,157,134, 47, 1,166,
+ 41, 85,110, 32, 81,124,225, 91, 37,108, 0, 52,118,203,143, 82,217,184,140, 45,165, 33, 92,101,219,201, 99, 27,167,166,153,227,
+155, 70,175, 71,139,169, 99,254,100,210,201, 26,251,226,128,163,246,156,131,109,111,177, 61,197, 97,196,239, 43,138, 91,191, 26,
+211,193, 8,192,201,135,177,187,158,115,215, 66,169,128,189, 39, 71,177,142,169,124,218,233,223,117, 78,125,173, 51,233,106,219,
+255, 54, 71, 17, 44, 67,227, 74, 75, 93,221,249, 24, 99,243,150, 50,245,140, 70,127, 55,253, 93,157,145, 87,235, 56,192, 68,117,
+ 71, 54,141,140,138,190, 14,126,119, 67,192,141,158,247,121, 23,205, 68,215, 63,209,222, 79,188, 15,177, 65, 39,141, 44,222,151,
+254,214, 11,253,200,215,120,212, 45, 14, 9,133,219,237, 17, 13, 97,127,160, 11,124, 3,202, 21,147,186,134,118,180,112, 33, 43,
+174, 55, 94,124, 5,151,175, 92, 65,172,106, 44,234,136,101, 29, 17,130,229, 96,231,102, 3,201,201, 33, 95, 99,145,231, 44, 16,
+ 73,168,150,135,198,110,103,198,186, 85,164, 54, 99,185,168,176, 88, 68,132,160, 61,115, 24, 33,130, 57, 32,121,104,134, 8,129,
+ 56,130, 98, 4, 59, 59,189,201, 22, 99,169, 52, 28,218,109, 22,172,207, 86,144,118,141, 38, 37, 75, 44, 83,119,235, 34, 12,190,
+224, 10,228,172,144,205, 41, 42,110,161,177, 66,211, 0,148, 91,112, 32,108,170, 99,172, 90, 70,211,172,109, 2,143,209, 38, 95,
+ 79,102,139, 4,176, 38,128,196,137,109, 10, 56, 25,173,130,249,203, 19,133, 34,195,130,156,109,110, 68,173, 44, 86,232,153, 20,
+ 20, 25, 9,150,102,215,165,116,169,119,244,170,100, 44,250,186, 2, 81, 64, 29, 1,174, 35,148,236,154, 38, 53,195, 19,179, 60,
+ 85,168, 50, 52,101, 32,103,207, 39, 87, 51,221,202,138,168, 25, 17,201,140, 89,130, 89,197,106, 54, 41,155,112, 5,213, 96,204,
+253,192, 80,174, 17, 16, 80, 83,198,162, 82, 68, 22, 60,127,148,113,237,229, 23,208,134,103,128,220,204, 14, 7, 52, 59,102,141,
+ 53, 30,157,135,122, 87, 7, 8,192,165,165,226,159,157, 28,225, 23,255,244, 30,174,221,255, 95,177,188,194,136,203,107, 64, 85,
+ 33,198, 10,245,114,137, 88, 31,128, 67, 5, 14, 4,142, 1, 49, 4, 84,108,215, 53,179,103,209,195,214, 37, 93, 96, 94, 12, 38,
+163, 20,152,151, 0,114, 26,206, 21, 49,158, 67, 23,212,147,196,156,223,224,211,181, 37,185,101, 99,216,171, 57, 23, 86,193,204,
+150,130,251,250, 71,227, 46,142, 98,197,123, 41, 91,151, 65,226, 46,118,193, 3, 70, 36,103,136,180, 22, 58, 36, 98,153, 6, 57,
+ 33,139,107,236,189,246,176, 8,208,138,155,247, 23,141,146,120, 10,151, 22, 83,220,118, 76,168,142,204,226,185,152,176,165, 55,
+ 27,113,184,172, 63, 92, 13, 82,234, 88,167, 89, 9,169,248, 96,251,100,184,201,148,218,235,227,177,181,182,199,144, 29,174, 91,
+195,137,206, 35,213,123,139,117, 9, 3,237,116,214, 59,167,176,111,215, 91,218,129, 6,232, 40, 20,102,180,250,244, 29, 14, 77,
+ 38,173, 92,240, 19,118,206,208,162, 69,108,234, 57, 83,183, 14, 54, 63,180,179,128,239,254,125,157, 78,188, 69,115, 53,250, 55,
+ 42, 10,177,206, 5,193, 76,166, 65,221, 17, 31, 59,189,182, 82, 52, 17, 58,220,103, 91,217,245, 91, 77,202,182, 17,187, 78,151,
+ 65,147,215,171, 51, 67,184,142,160,251, 93, 77,208, 20, 80,212,145,157,177,246, 77, 28,141,254,158,166,205, 83,105,235,172, 23,
+109, 54,169,120, 59,101, 35,164,187,192,246,173, 41,159, 20, 59,143,222, 81,227,172, 24, 53,137, 0,122,131,148,171,151, 14, 16,
+ 15, 46,227,232,210, 37, 28, 31, 45,113,112,116,136,250,224, 8, 66, 1,145, 44, 44,197,166,222,132, 44,106,187,222, 16,208, 38,
+ 51,175,137, 49, 32,112, 64,133,140,128, 12, 81,182,148, 53,142,166,223,246,221, 85, 86,238, 83,209, 8,130,148, 51, 52, 11,170,
+ 42, 34, 35,224,116,213,224,116,213, 96,189, 73, 32, 77, 16,233,136, 95, 9, 1, 6, 93, 74,219, 32, 4,133, 32, 24,217,205, 53,
+238,182,167, 54,130,146,194, 33,126,201,168, 88,144,185,194,234,116, 5,110,207,144,115,139,245,166, 69, 78,198,162,174,216,146,
+213,108,223, 91, 33, 41, 35, 37, 65, 78,246, 51, 16,247, 91,231,202,163, 91,201,156,220,178, 49,175,179, 24, 49, 46,178, 37,101,
+166, 44,200, 30, 78,161, 57,163,130,216,190,219,217,243, 80,248,228,104, 5, 87,152, 1,138,125,138, 24,103, 69,165,217,140, 88,
+216,164,119,129,205, 11,159, 24, 16, 98,128, 42, 84,164,168, 42, 0, 85, 5,112,229,209, 39, 4,233,120, 2,174,141,207,146,237,
+117,103,245,226, 79, 16,102,228, 80,131,169,194,203,215,106, 28,190,252, 13,180,122, 4,146,102,132, 6,119,196, 84,154, 24, 74,
+233,232, 32,245,255,231,205, 85,135,237, 46, 1, 60,173, 9, 63,250,236, 50,248, 23, 63, 66, 69,255, 47,232,224, 26, 66, 56, 68,
+228,218, 86, 28, 33,128,252,117, 16, 49,152, 35, 56, 50,196,249, 8,170,209,108,116, 37,155,126,220, 95, 77,100, 91,213, 84, 49,
+ 32,178,154, 91, 93, 39, 79,131,251, 9, 64,236,254, 48, 41,132,169, 29, 58,131, 34, 73,125, 18,159,186, 51, 32, 71,134,134, 10,
+ 66, 21, 64, 22,222, 99,185, 6, 60, 81, 44,107,127, 60, 5, 88,174, 10, 5, 99,188,219,164, 47,195,217, 32,198, 13,176,192, 32,
+ 5,139,232,214, 4, 46,216,142,255,220,254, 34,235,104,103, 76,163,242, 79, 61,204,129, 2, 28,232,254, 27, 29,235, 79,135, 93,
+112,234,147,219, 20, 21, 20, 85,177,127,212,209,235,161,193,126,182,159,238,183,142,226,253,219, 69,157,211,217,235,216, 57,110,
+239,123, 63, 7,122,156, 77, 43,219,197,244, 30, 67,195, 58,241, 19,149, 17, 74, 43,197,212,169,200,123,182, 1,218, 35, 40,147,
+201,118, 47,108,238,152,139,254, 6,112,188, 98, 52,161,247, 46, 75,251,214, 5,211,231,217,177,243,208,105, 83,164,187,208, 26,
+157,113, 2,150, 25,248,127,238, 90,116, 19,183, 12,228,147,109, 60,121,118,234, 47,211,250,168, 40,188,115,136, 59,237, 69,172,
+117,228,208,166, 90, 25,223,136,104, 0, 0, 32, 0, 73, 68, 65, 84,114, 85,252, 49,123, 66,228, 16,255,123, 94, 77, 87, 45,163,
+104,181, 28,193,247, 78,247,219,110,221,186,205, 86, 45, 66, 47,184, 59,140, 60, 89,107,232, 67, 4,145, 5,151,175, 92, 65,168,
+ 22, 88, 44, 22, 56, 60,126, 6,245, 98, 9,142, 11, 24, 23,205, 76, 91,172,112,187, 99, 90, 54,134,181,120,206,249,209,193, 2,
+ 7, 7, 53,226,242, 0, 28, 43,219, 49,167,108, 13, 0, 44,244, 69, 65, 30,141,217,154,142,152, 8,129,141,192,149, 65,144, 44,
+184, 94, 39,220, 56,200,184, 86,219,196,220, 8, 33,181, 9, 34, 25,141, 18,146, 48,152, 61, 23, 93,236,181, 3, 54,252,216,174,
+214,226, 84,219,214, 14,237, 69,205,200,196, 88,103,219, 51,107, 23,131,170, 25,146, 91,179,254,101,130,132, 26,173, 50,218,228,
+196,181,220,192,120,236,118,226,166, 12,100,111, 46,152,196, 33,119,237,253, 36, 34,164,103, 92,167,156,145,155, 6,164,201,247,
+228, 64, 85, 69, 67, 42, 68,176,168,188,117,204,173,201,247,178, 17, 16, 9, 54,133, 86,149, 57,195,129, 43, 51, 53,177,202, 1,
+226, 0,102, 51,146, 97, 21,132, 8,228, 16,209, 74, 4,137,103,123, 19,219,148, 43, 10,201,166, 88,176,228, 49, 27,216,114, 22,
+ 39,118, 5,228,100,123,235,144, 50, 94,124,238, 16,241,217,215,144, 82,152,164,185, 77,227,180,231,111,204,172,142,172,104, 63,
+ 66, 2, 0,234,168,248,245,186,198,147, 79, 51,174,158,254,115,196,197, 25, 22,225, 8,117, 32, 84, 85, 64, 93, 17,170, 16, 16,
+ 61, 27, 94, 25,104,180,147,252, 25, 1,210,239,142, 30,161, 75, 98,249,242, 89,196,172,120, 67, 5,174,162,195,248, 54,229,135,
+ 0,196,104, 44,117, 56,105, 45,107,118, 52,133,192,162, 8,106,249,165,173, 55,171,146, 19, 2,204, 22, 58, 75,128,241, 39,197,
+165,105, 1,194,193, 17, 28,179,140, 85, 16, 90,255,202, 6,255,236,152,163,217, 74, 23,209,232,220,217,208,194, 36,144,243,146,
+150, 29, 4,158,146,248, 54, 14,224,192,196,222,211,190,212,217, 33, 70,154,153, 87,203, 8,112, 1, 65, 88, 17, 93,247,215,103,
+ 2, 23,135,136, 76,115,211,117,191, 77, 44,237,220,165,151, 19, 28, 21, 4, 97,157,152,212,206,239,210, 47, 6,201, 23,254,248,
+ 52, 87,216,181, 71, 1, 6,243,209,130,101,220,237, 96, 10,223,247,129, 60,168, 91,136, 66,153,178, 69, 19,166,154,246, 77,208,
+ 96,165, 58, 15,121, 13, 51,118,231,194,180, 21,116, 51,243,158,104,223, 85, 81,237, 37,127,179, 13, 87, 7,179,143,172,111,183,
+187, 41, 45, 50, 3,202,198,105,250,119,165,253, 45,237,124,158,201,223,161,132,153,117,231,119, 96,174, 9,162,157,124,139,225,
+ 90,151,247, 27,205,211,215,118,148,250,109,222,129,110,177,240,134,235,176,253, 5, 46,194,127,183,110,226,217,101,203,214,202,
+168,203, 56, 40,155,205,173, 41,223,225,118,166,242,254, 29, 55,170, 49, 48,170,197, 1,146, 6, 52, 26,176,202,140, 77, 14, 56,
+ 91,219, 33,215,186, 91, 91, 86,187,195,235, 69,133,186,147,129, 9,144,114,139, 80, 31, 64, 88,209, 54, 27, 48, 41,234, 42, 96,
+157,179,155,195, 4, 75, 16,147, 22,228,108,242,232,228, 55, 2, 80,215, 21, 90,101, 28,160,197,115,207, 63, 11,240, 18,155,156,
+240,244,206, 99, 52, 95,125,133, 58, 90,115,210,122,240,138,229, 19,152, 17, 76,134, 57,208, 33,103,207, 11, 24,120, 41, 41, 37,
+ 80, 85, 67,136,177, 89,173, 17,163, 79,175, 34,182,175, 23, 47, 70, 45,160,109,107, 19,159,113,197, 7,200,220, 73,107,154,179,
+ 75, 7,185, 71, 3,140, 75,148,177,136, 64,166,128, 38, 5, 0,150, 46,150, 37, 33, 74, 64,116, 34, 24,251,117,102, 55,169,225,
+106, 1,202, 9, 57,103,139,127, 85, 35,112,133,200,200, 20,208, 9,215,236,179,180,223,167,110,164, 11,209, 8,131,217,172,107,
+ 41, 43, 50, 90, 32, 16, 34, 5, 43,100,204,216,180,110,156, 18,204,235, 62,146, 37,196,229,156,251, 5,130, 66,145, 18,112,137,
+ 51,158,127,225, 18,190,216,188, 12,122,122, 19, 84,149,226,230, 49,244, 52,190,133,117, 82, 47,242,232,231, 22, 12,220, 17,224,
+214,157, 5,254,228,233, 77, 60,189,254, 57,214,205, 59, 16, 60,245,159,168,144,152, 16, 52, 33, 72, 68, 10,138,181, 10, 54, 77,
+130,166, 4, 11,119, 1, 68,184, 79, 32, 4,140, 56,174, 34,136,104,109,253, 66,206,215,160,193, 2,150,196, 17, 38,192,188,225,
+ 29, 37,100,191,143,253,162, 26, 2, 39,236,113,185,201,163, 86,217,136,123, 2, 48,153,244,176,251, 76,186,248,111,117,255,120,
+ 82, 35,151,195,141,155, 20,236,252, 43,203, 64,233, 24,214,226,247,129,165, 96, 41, 60, 18,117,248,195,147,201, 81,119, 64,205,
+218,147,215,180,159,196, 71,190,113, 90,104,146,167,178, 5,149,226, 20,103,100, 0, 27, 40, 26,127,254,168, 58,233,228,198, 7,
+142, 96,119, 60,239, 52,139,122,138, 72, 64,203,169,138,182, 44,254,118, 77,230,180, 27,120,223, 38,116, 77,167,246,146,128, 68,
+211,230, 70, 39, 68,145,129,216,166,122, 30, 89,111,162,235,236, 28,137,138,233,178,179,244, 37, 96, 7,204, 62,105, 4,116, 55,
+ 33,173,124, 83, 58, 55,205,110, 47,146,119, 54, 97, 84, 76,165,227,157,248, 76, 3,160,219,217,236, 90,124,134, 37,115, 77, 47,
+196, 17,240, 24, 68, 29, 41,100, 81, 98,220,179, 68, 63, 12,215,118,180, 79,166,153, 49,121,114,143,206,243, 11,126, 3,242,219,
+ 22, 60, 83,254, 71, 38,141,228, 20, 37,210,157,107,129,254,250,147,206,118,177,164,243,139, 31,227,222, 72,239, 99,221, 35,127,
+ 98,105,101, 49,214,200, 57,163,230,140,118,125, 2,109,215, 64, 90,185, 15,124,180,162,166, 70, 4,218,180, 25,202, 53,132, 44,
+140,133, 84,177,217,180, 64,110, 64, 44,200, 89, 45, 52, 37, 90,244,105,134,185,182, 65, 18,152,201,164, 95,236, 7, 38, 20,194,
+ 17,151,170,128,197,149,203,120,208, 28, 64, 16,241, 48, 93,194,217, 38,160,102, 27,255,170, 64, 88, 4,117,164,192,194, 54,132,
+130,211,145,179,163,190,195, 89, 23,216, 48,194,213, 58, 65,218, 12, 86, 53,171,219,108, 19,177,136, 2,217,152,239,172,130, 3,
+110,193,148, 33,228, 51,149, 75,215, 52,231,222,158,212, 28, 98, 7,105, 89,197,138,186, 34, 80, 21,208, 96, 97,211,178,102,111,
+ 92, 3, 42, 18,155,178, 41,248,243, 10,184,178,137, 47,123,188,103, 12,228, 68, 57,219, 19, 91,179,110,123,113,150, 22, 21, 18,
+ 58, 17,108,197,100, 48,175, 26,243, 58,183, 10,106, 27,144, 54, 80,100, 99,242, 35,163, 85,131,221, 99,136, 0, 5,180, 34, 38,
+145, 7, 1,209, 32,101,139,172, 55,163,154,224, 46,116,215, 22, 45,174,190,120, 29,109,117, 29, 72,109, 15,189,239,217, 37,158,
+251, 39, 18,176, 98,224, 87, 15, 42,240,151, 39, 56, 14, 31,163,186,124,132, 80, 31,187, 62, 62, 26, 51,189,170, 80, 85, 53, 56,
+154,119, 74, 74, 4,105, 90, 80,187,246,164,179,110,111,108,139,203, 72,132, 64,150, 25,144, 69, 76,191, 46,210, 27, 18, 69, 50,
+201,100, 23, 84, 47,204,110,180,195,190, 94, 30, 88,102, 12, 66, 36, 70,116,151,190,148, 5,146, 18, 4, 25,137,216, 60,246, 85,
+ 17, 57,219,254, 61,146,175,147,134,149,245,128,134, 38, 59,192,125,173,162,204,163,111,113,212, 98,145, 62,242, 99,223,195, 26,
+ 23,104, 79,168,238,160, 65, 42, 26,129,110, 26,146,137, 33, 74,169,217,165, 81, 14,153,142,234,187,210, 0,177,107, 49, 69,143,
+217,227,251,181,189,180,167, 40,235,148, 20, 71,115, 56,233,238,121,124,215, 20, 87, 90,179, 78, 39, 92,242, 9,119,108,106, 51,
+104,160,166,243,102,233, 76,166,163,100, 60,237, 45, 68,105,134,224, 55, 77,207,155,219,157,107, 33, 83, 84,156,231,241,164,147,
+148,184, 57,102, 53,109,167,142,109, 69,168,206, 79,250, 37,123,183,203,159,231, 18,146,219, 21,243,218, 55, 40,197, 52, 44, 5,
+193,123,196,109,152,123,140,110, 88, 45, 27,137,193, 97,134, 49,211, 60, 76,188,215, 9, 99,163,150,238,250,211, 30, 2,102, 89,
+216,247, 70,247,253, 54, 20,108,123,101,106,251,224, 39,234, 81,178,173, 40,221, 9, 76, 86,174,197,116, 18,232, 83,126,207,152,
+ 45, 23,122,211,182, 88, 46, 15,112,180,168,208, 86, 4,138, 53,210,233,202, 9,134,110,135,169, 45,144, 21,194, 9, 21, 87,168,
+162,253,190,102, 69, 18,113, 34, 89, 99, 30,242, 49,154,215,250,166, 5, 57,164,171, 5,125,215,108, 67,237,112, 14,203, 0,165,
+ 67, 28,203, 41, 26, 28,225,233,147, 53,228,233, 93,107, 2, 56, 0, 16, 80,172,128, 54, 33, 68,133, 34, 34,167,236,118,169,108,
+ 17,167,238,140, 73, 33, 64,153,221, 85,173, 65,197, 10, 13,209,189,199,109,114,141, 96, 43,214, 46, 85,163, 8,128, 23,200,171,
+ 6, 76,238,251,237,201, 95,162, 30, 6,227,218,102,245, 8, 78, 9, 1, 77, 54,167, 50, 74, 25, 42, 27,128, 9,146,129, 90, 5,
+139, 10, 88,135, 26,109, 99, 76,119,228, 12, 97, 6,115, 48,253,184,100,211, 91, 7, 6,185,105,138,184,166,154, 2,140, 32, 71,
+182,185, 37, 17,131,161, 57, 34, 2,238,255,174,208,172, 67,144, 21,236, 11,154,149, 64,173,130, 56, 89, 49,243,212,183,164, 25,
+ 16, 3,131,137, 9, 68,149, 57,174, 73,134,144, 34, 72,192,141, 35,194,233,141,151,208,222, 58, 67,212, 51,128,170,194,182, 88,
+119,224, 71,187, 69, 37, 12, 0, 17,248,232,148,113,250,121,198,229,245,175,177, 62, 58,193,122,243, 12,176,222, 64,115,139,144,
+220, 41, 15, 21, 24, 21, 16, 20,160,141, 75,216, 18, 72, 91, 4,247, 76, 81,146, 97,248, 33, 75, 75, 83, 33, 80,231,163, 27,128,
+ 4, 32,100, 5,177, 66,136, 33, 26,220, 76,134,124,182, 86,100,181,104,224,206, 94,191,112, 19, 55,163, 32, 81,184, 22,210,200,
+154,112,150, 56,219,250,130,130, 53, 89, 80,111, 44, 50,192,118,211,248,144,202,189, 42,172,203, 46, 37, 12, 17,233,253,138,141,
+102, 72,113,135,135, 71,120,247, 15,255,213,129,157,173,227,141,115,151, 85, 46,197,182,111,254,171, 93, 66,171, 99, 75, 88,118,
+234, 73,119, 36,138, 90,244, 32,156,233,205, 51,147, 91, 55, 91,247, 14,109, 58,127,182,237, 43,205,125,216,128,238,167,195,209,
+ 94, 56,191,212,229,110,255, 91,231,255, 59, 26,102, 75,212,161,131,158,123, 93,122, 65, 80, 84, 26, 21,234,190,248,232, 54, 95,
+ 95, 65, 88, 30, 28,226,187,223,255, 67, 16,117,255,251,143,198,112,188,103, 1,119, 46,127,164, 23,100, 88,239,253, 57,103,103,
+ 22, 53, 82, 21,123,150, 23,197, 4, 59,105, 23, 59, 72, 92,231, 86,246,115, 40,209, 12,164,178,141,220,232,132,245,143, 45, 2,
+206, 96, 35, 59,143, 40,232,132,164, 54,171, 84,155,227, 17,204, 64,237,138, 93,232,215,111, 83,197, 70,123,152, 49,243, 47, 80,
+203, 4,186,115,214, 91,180,219,100,121,235, 95,152, 9,155,172,120,178,218, 32, 53,107,187, 86,241, 0,107, 9,102,116, 66, 25,
+ 73,164,247,100, 31,249, 82,112,192,114,185, 68,172,140, 42, 44,109,194, 34, 8, 22,139, 26, 25,140, 86,204, 9,206, 34, 45,217,
+ 63, 71, 35,153, 25, 44, 79,160, 80, 35, 6, 32,233, 18,199, 33,225,232,218, 37,156,166, 37,214,167,143,177, 12, 77, 63,197,162,
+ 99,163,187, 39, 55, 51,163,138,220, 51,121,152, 77, 44, 20, 3,131, 99, 52,171,207,156,193,200, 70,142,114,184, 54, 1,104, 37,
+ 32,137,160,161,136, 54,217,181, 93,183, 70,168, 50,189,125, 70,202, 48,120, 91, 76, 82, 37,146, 76,125, 36,132,160, 22,235,153,
+ 51, 65,154, 12, 89,175,204,192,133, 25, 57, 3, 17,130, 69, 20,180, 33,162,213, 26,104, 21, 65,146,229,109,231, 12,146, 22,145,
+ 5,129,130, 55, 15, 64,197, 0, 5,131,224,149, 25,141, 18, 26, 9,104, 50, 27,217,203,115,187,219, 22,104, 51, 32, 28,192,177,
+ 66,168,205, 63, 61,196,232,141,140,203,188, 96,188, 7, 21,247,158,103, 25, 20, 21,146, 32,201, 18,230, 2, 9, 36, 48, 36, 91,
+ 88,204, 66, 90, 92,191, 22, 65, 87, 94,130,100, 6, 52, 21,103, 55,109,147,227, 46, 48,184, 47, 3,240,105, 75,248,236,139,128,
+195, 71,159, 97, 89,221, 70,117,120, 25, 92, 29, 33,114, 13, 10,209,154, 33, 34,100, 13,200,146,145,157, 84,105, 17,244,118,247,
+139,121,174,218, 74,196, 97,246,192,190,147, 15, 12, 33,177,240, 30, 79,109, 19,207,177, 37, 31,220,200, 61,222,216,253,226,213,
+ 9,139, 41, 91, 74, 91, 82,130, 40,131,157,106, 71, 8, 96,177, 21, 6,156,143,144,218,132,212, 36, 52,173,160, 77,254,243,204,
+136, 21,129, 98, 0, 16, 6,141,188,116, 36,245,174, 22,170,161,219,226,133,145, 61, 52, 64, 74,119, 47,218,134,177,167, 7,136,
+244,178,149,146,100, 51, 15, 79, 51,128,229,225, 17,190,253,206,187,248,217,143,254, 69, 63,229, 92,190,122, 21,175,188,254, 22,
+110,127,254, 9, 30,220,187, 87,110, 3, 29,146,242,116, 66,184,142,157,208, 79,191,101, 90, 13, 0, 28, 28, 30,225,173,119,222,
+197, 79,253,241,231,110,134,239,253,222, 31, 21,131,135, 5, 61,228, 60,236,106,126,254,147, 31,126, 45, 52, 72,103,199, 30,103,
+202,206, 17,175,138,137,149,180,160,180,141, 32, 6, 45,125, 98, 49,245,243, 82,108, 79,187, 23,194,172,116,104, 2, 64,165, 48,
+113,191,212,175,204,107,159, 38,190,245,249,242, 58,103, 34,160, 35,239,119,154, 76,145, 74, 24, 73,201,202, 60,242, 41, 26, 48,
+ 26, 22, 71,252, 8,111, 8,251,199,164,157, 49,177,219, 38, 23,226,246,197, 52, 33,160,209, 12,191,209, 37,145,251,166,236,153,
+253,253,148, 37, 94, 78,249,227,230,238,183, 57,169, 79, 99,102, 47,240,171, 90,218, 54,239,193,113,116,146,162,229, 32,135, 78,
+ 19,233, 96,135,226,233, 38,225,246, 87, 15,241,150, 36, 75,247, 10,198, 48,103, 86,228, 80, 65,115,235, 13,167,153,126,152,245,
+166, 17,127,170,170, 2,133, 26,208, 13, 66, 32, 52, 57, 56, 90,213, 90, 0, 76,179,177,253,119, 96,100, 18, 72,182,168, 80,138,
+ 17,224,136, 0, 6, 87, 17, 53, 54,224,229, 17, 30,165,203, 56, 57,121, 4,108,206,204,249,141, 35,186, 50, 21,115, 70, 18, 70,
+ 78, 98, 22,163, 85, 0,137,201,154,212,139, 45, 8, 16, 10, 70,224,131, 66, 29,230,151,212, 26,175, 32, 89,234,168,197,167,219,
+ 78, 28,158,176, 70,218, 24, 75, 61, 17,144,237, 90,152, 41, 12,245,187,120,144,130, 42, 70, 70,132,166,140,192,201,101,144,230,
+111, 15, 18,212,198, 16,195,153, 44,128,182, 69,197,141,127, 26,193, 38, 67, 88,241, 22,138,150,135,141,108,118,165, 84,161,205,
+228, 22,168,112, 38,186,162, 88,173, 3,240,204,118, 85, 84, 76, 16,159,232,109,103, 75,230,247,174,201,191, 7,108, 13, 10, 76,
+154, 7,237,200, 90, 4,101, 32,169, 34, 64, 16,185,118, 66, 90, 3, 17,193,213, 64, 88, 93, 63,198,253,213, 13, 84,155, 91,208,
+192,192, 76,229,160, 25,244,117,238,207,130,128,123, 0,222,187, 93,225,251, 95, 60, 64,245,141, 15,192,245,187,224,250,208, 9,
+106, 98,188, 7, 82, 36, 33, 4,247,176,207, 2,255,247,108, 4,191, 46, 50, 89,105,194, 37, 85,100,182,235,171,125,208,139,213,
+ 34, 22, 5, 81,246,102,160, 83,113,121,196,184, 12, 22,233, 93, 20,106, 40,178, 68,196,135,185,233,209,105, 96,129,103,184,103,
+219,180,135, 64,118, 79,135,202,107,245,160,116,232,124, 10, 2,187,157,174, 21, 86,218, 50,209, 80,103, 28,202, 68,166, 52,146,
+ 44,109,237, 98, 29, 8,208,242,111,236, 20,230,201,249,146,253, 95,175, 95,127, 30, 47,190,252, 42,110,126,252, 43, 60,125,244,
+120,200,206,214,194, 12,199, 33,227,126,255, 77,195,227,118, 63, 56, 93,207,204,153,122,117,255,255,231, 63,254, 97,255,191, 15,
+ 14,143,240,246, 59,239,226,103, 63,254,225,132,211,214, 21,151,237,131,106, 39, 25,175, 8,197, 25,166,238,185, 95,156,196,127,
+ 17,141, 10, 57, 41,102, 88,199,229,198, 91, 1,229, 1,111, 32,221, 66, 42, 46,180,151, 85,187,150,243,196,184,253,112,123,217,
+ 84, 15,131,174, 98,151, 97,108,175, 46,160,201,187,209,161,176, 79, 53,244, 68, 59,218, 38,151,127,245, 30,137, 52,105,122,230,
+136,113,221,125, 66, 52,134,167, 20, 5, 57,113,158, 16, 87, 54, 18, 68, 37, 36,189, 43,250,181,128,162, 47,100, 11,175, 35,166,
+ 63,104,251,254,213, 11, 89,252, 22,215,122,139, 77, 74, 59,219,207,173,198, 73,186,235, 49,131,145,168, 78,162,141, 49, 86, 38,
+ 76, 39,117, 34,180, 25,248,240,227,155,248, 83,217, 32, 81,196, 90, 42,247, 83, 39,155, 94, 73, 16,216, 34, 80,147,203,200,114,
+ 22, 44, 43,198,225,178,182,249, 39, 27, 19, 57,165, 12,149,228,211,120,182, 41,188,181,196, 48,219, 57, 27,145,140,216, 72, 71,
+117, 72, 32, 62,192,225,146,176,193, 1,154,147,167,104, 86,167, 32,217, 32,199,170,111,170, 3, 19,168,142,222, 66, 39,203, 85,
+ 7,153,165,171, 40, 42, 77,136,117, 64,163, 17, 72,230,115,190, 86,128, 90, 65,229,113,104, 34, 9,129, 2, 2, 41, 18, 2, 8,
+ 25, 76,182,147,205,170,168,153, 81, 87,193,188,220, 53,131,201,119,162,206,210, 7,147,233,224, 85,145, 28,185, 96,245,204,119,
+ 55,138, 9,108,197,163,209, 10,104, 1, 78,107,228, 40, 32,170, 12, 38,134, 55, 5, 26,250,239, 86, 86, 66,206,238, 82,103,226,
+107,243,115, 15, 62,157,106,193, 79, 34, 69,197, 64, 80, 65, 38, 35,144, 69,117,134,184,175, 78,163, 67,240,112, 29,181,102, 5,
+ 82,178,115,190,115, 84, 11,140, 86, 2,164,201,168,171,132, 28, 3, 88,204,196,133, 69,113,237, 48,227,244,185,235,216,220, 58,
+ 65,148, 39, 0,215, 23, 94,164, 79,127,138, 1, 72, 4,126,254, 40,226,228,147,167, 88,124,255,103,208,195, 63, 3,232, 16,160,
+ 53, 20,166,110, 72, 2,172, 19,161,221, 24,154,160, 36,246,253, 22, 11, 84,129, 36,143,178,149, 30, 41,144,146,211, 85, 38,158,
+169, 58, 62,105,121, 17, 66,221,254,207,245,255, 80, 8,163,143,195,165, 30,166,205, 62, 72,154,255, 65,238,236, 98,252,187,195,
+ 10, 8,149, 17,180,226,232,147, 64, 91, 75,243, 3,117, 81,116,157,103,255, 16, 33, 22,187, 11,146,251,137,219, 36,248,170,229,
+164,110, 79,118,229,217,235,120,254,165,111, 32,196,136,199, 15,239,227,243, 79, 62, 68, 86,224,185,235,207,227,185, 27,207,227,
+151,239,253,172,255,178, 87,139, 5,126,231,221,223,199,123, 63,253, 17,218,182, 25, 12, 68,104,224,240,136, 2, 47,190,248, 13,
+ 92,191,126, 3, 31,253,234,125,156,157,158,244,135, 70, 96,198, 43,175,126, 19,199, 87,159, 1, 17,240,248,209, 67,220,186,249,
+ 49,160,130,163,195, 75,120,227,157,239,225,147, 15,127,133, 23, 94,254, 6,234,122,129,245,122,133,207, 63,254, 0,155,166,193,
+183,222,254, 46, 0,224,187,223,255, 67, 40,128, 59, 95,220,196,253,187, 95,142,124,235,247,177,155, 15, 28, 73,184,249,201, 7,
+120,254,133, 87, 80,213, 53,126,246,227, 31,226,217,231,110,224,185, 27, 47,160,170,236,230, 59,121,250, 4, 95,220,252, 4, 41,
+181,246, 59,223,249, 30, 62,249,232,215,120,225,197,151, 81, 47, 22, 88,175,215,248,252,211,143, 80, 47, 22,120,225,197, 87, 80,
+ 47,150,216,172, 87,184,249,233, 71,216,172, 87, 56, 56, 56,196, 91,223,249, 46, 62,253,248, 3, 60,255,226,203,168,235, 26,155,
+245, 26,159,223,252, 24,117, 93,227,249,226,119, 62,187,105,191, 3,151, 67,188,244,242,107,184,124,197,174,205,147,199,143,240,
+197,103, 55,123, 63,225, 11,125, 37,148, 70, 68,135,158,224,120,110, 97, 31,119,125, 35,207,250, 82,115,189,115,250,212, 34, 25,
+170,179,216,160,130,112,182, 99, 98,166,178, 89,232,154,129,146,237, 95,184,233, 97,102,135,143,194, 76,173, 95,190, 79, 88,224,
+ 37, 27,126, 58,157,119,251,114,154,243, 50,164,189,107,158,114,234,159, 11,139,219,219, 16,116,239,149, 10, 66,161,219,254,206,
+191, 86,140, 63,219, 17,156,174,123,215,239,228, 58,246,206,221,176,148,212, 41,182,152,158, 5,232,115, 14,139,147, 8,139,186,
+198, 71, 31,124,136,175, 30, 60, 66,155, 43, 60,121,244, 20,171, 77, 70,202,174,187,118, 8, 84, 40, 32,185, 44, 76, 18,161, 14,
+140,203,151, 47, 97,229, 5,178, 51, 3,201,109, 99,158, 13,162, 0, 71, 8, 26, 64,140,112, 71,149,177,148,155,172, 56,132,128,
+ 15,142, 76, 94, 84, 47,208, 72,132, 96,133,220,182,134, 22, 72, 30,118,240,106,132,179, 24, 97, 48,119,211, 66,115,114, 29, 55,
+ 0,111, 56,204, 57, 52, 67, 3,163, 2, 65,218, 53, 0,219,239,231,228,135,183, 23,233,156, 19, 32,206,196, 79,130,156, 26, 72,
+ 48,191,120,176,184,221, 40,247,214,161, 68,193,223,151, 25,152,144, 26,121,176,151, 73,145,155,145, 4, 43,242, 81, 91,132,168,
+216, 40, 35,136, 5,211,168, 90, 60,171, 0, 30,233,105, 72,148,117, 5,226,241,170, 98, 17,171,220,217,126,117,217,235,166,129,
+ 14, 78, 54,204, 32, 32,217,130, 33, 6,147,128, 73,178, 85,169, 4, 35,155, 5, 16, 40,116, 5, 78, 93,164,199, 32, 97, 44,137,
+144,137,208,182, 27,160,170, 32, 90, 1,218, 90,114,154, 42,174, 93, 9,184,243,244, 5,232,163, 51,128, 19,160, 97,118, 53,117,
+ 17, 4,235, 32, 0,191, 90, 17, 62,252, 56,224, 59, 15, 62, 68,117,244, 41, 82,248,221, 94,243,205, 0, 88, 50,178,102,108,146,
+162,221,108,128,212,244,196, 88,210,220, 79,101, 10,140, 88,230,182,194, 24,156, 6,201,186, 0, 4, 29,204,215, 58,119,246, 46,
+102, 92, 61,221,212, 86,118,118,253,173, 97,112,186, 91,199, 23,234,210,219,196, 28, 3, 59,193,158, 20,154,113, 41,150, 94, 42,
+ 50, 60, 35,117,206, 1,232,131, 93,120,228,195,230,111, 60, 98, 26,251,105,127, 46, 95,185,138, 15,222,251,151,248,240,167, 63,
+194,225,225, 17, 94,124,229, 53, 48, 20, 15,239,223, 69,189, 48, 51,137,174,137,121,246,185, 27,120,250,228, 49,218,166,241, 46,
+ 68, 10,102,188,189,196,215, 95,255, 38,174, 61,251, 44,126,245,254,207,113,122,242,180, 63,200, 25,138,215,190,249, 38, 66, 12,
+120,255,103, 63,198,123, 63,249,151,168,170, 26,207,191,252,106, 15,150, 2,192,213,103,174,225,195, 95,254, 28,239,253,248,135,
+ 88,175,206,240,242,107,111, 64, 36,227,195,191,126, 15, 0,240,222, 79,254, 18, 63,255,241, 15,113,255,238,151, 51,206,103,231,
+223, 44,151,143,175,226, 87,191,252, 57,126,254,147,191, 4, 0,180, 77,131,143, 63,248,107,252,236, 39,127,137,247,223,251, 9,
+152, 3, 94,121,245,155,163,199,187,114,245, 26, 62,248,245, 47,240,222, 79,127,132,245,234, 12,175,191,249,109, 92,185,122, 13,
+ 31,254,250,125,188,247,211,191,194,106,117,134, 87,190,241,250,232,121,174, 92,125, 6, 31,253,250,125,188,255,179,127,137,245,
+122,133,215,222,120, 11, 87,174, 94,195, 71, 31,188,143,247,127,246, 87, 88,175,207,240,242, 43,175,247,175,254,149, 87,223, 0,
+135,136, 95,253,226, 39,248,235,247,126,140,170,170,240,194, 75, 47, 15,110,176, 23, 44,236,115, 72, 64, 73,250,210,115,126, 91,
+ 75,130,183,238,209,191,207, 78,251,131,135,219, 72,219,160, 58,111,233,186,181, 43, 47, 38,255,114, 93,177,195,126, 86,225, 30,
+202, 14, 45, 15,174, 10, 83,173,247,120, 95, 63, 38,142,234,224, 6, 55, 93,168, 43,206, 97,180, 15, 54,200,138,139, 58,197,233,
+152,181, 95, 64, 35, 90,234,213,167,207, 59, 98, 89, 94,112,236,209,209, 70,125,148, 67,175, 58, 47, 45, 2, 58, 93,250,249,111,
+230,224,224, 0,159,125,118, 11,191,252,229, 71,136, 16,164,245, 9,210,250, 12, 77,211,130, 53,163, 38,207,254, 86,241, 9, 22,
+ 72,109,198,229, 5,176,184,116,108,214,163,254, 58, 2, 11,146, 88, 62,185,186,131, 87, 21, 3,212,109, 96,149,237,152, 11, 32,
+196, 5,160,116,136,203, 11, 96, 77, 53, 56,173,177,145,128,102,179,134,122, 28, 39,245,126,252,217, 11,159, 23,119,102,212, 21,
+155,105, 12, 71, 44,234, 10, 21, 51, 2,137,153,177,104,192, 50, 50, 14,150, 53, 66, 32, 68, 86,139,133,101,143,101, 21,216, 46,
+151, 12, 73, 91,212, 1, 28, 3,154,156, 1,201,195, 38, 84, 7,201,153, 41, 0, 82,111, 75, 27,157,147, 96,251, 89,123,125,236,
+ 33, 34, 76,228, 97, 43, 1, 49, 86,189,151, 60,135, 96, 30,242, 57, 65, 53,129,196, 7, 55,191, 87,109, 66, 55, 73,154, 34,246,
+247, 79,176,135,117,237,179, 34, 19, 65, 16, 92,131, 13,104,242, 46,158,171, 1, 61, 37, 54,243, 19,195, 58, 64, 20, 12, 94, 22,
+ 49,230,191,180,136, 53,160,177, 54,183, 92, 77,110, 93,106,239,247,106,204,184,122,253, 16,105,121,195,225,233,109, 30, 19, 93,
+112, 13,186, 36,224, 1, 1, 63,186,189, 0,223,188,139, 58,255, 20, 84,103,196, 88, 57, 25,146, 81, 5,251, 60,213,211,240, 76,
+173,208, 24,185,205,181,235, 61,237, 76,217,137,175,140,224, 70,238, 22,182,226, 9,142,190,182, 5, 49,132,128,164, 5, 73,147,
+ 6, 63,247, 46, 38, 85,123,198,156,123,194,119,113,170,210, 43, 37,157, 93,230, 26,250, 94, 26,202,133, 34,105,122, 6,102,136,
+ 27, 40,169, 27,198,177,162, 84,153,233,112,120,149, 64,168,191,144, 59,183, 63,135,168,162,205, 45,238,222,254, 28, 87,159,125,
+206,165, 27,130,135, 15,238,225,185,231,110,140,138,250,189,187,119, 70,143, 53,253,115,229,234, 51,120,242,248, 17, 54,155,117,
+ 15, 89, 19, 44, 50,241,248,234, 53,220,254,236, 83,179,141, 20,193, 87, 95,222,198, 51,215,158,117,183, 31,219,191,220,253,226,
+166,101, 22,139,224,193,221,175,112,120,116, 9, 91,105, 45, 51,207,191,143, 58, 84,254,228,157,219,159,185,203,144,253,237,147,
+ 39,143,208, 52, 27, 91, 29,164,132, 47,239,220,194,165,227, 43,163,223,191,253,197, 77,228,156, 33, 42,120,112,255, 46,234,122,
+129, 91, 95,124,214,107, 69, 31,220,247,215, 89, 60,219,237, 91,159, 33,101,243,144,238,126,231,206,173,207, 33,190,227,121,120,
+255,110,255, 59, 33, 68, 28, 95,121, 6,119,110,127,102,144,158, 40,238,125,117, 7, 87,159,185,246,181,118,167,152,149,223, 97,
+152,128,167,103,245, 28, 9,177,168,178,178,111,127,175,243,133,157,102, 73,103, 58,149,172,110, 21,158, 17,231, 64,101,134, 55,
+ 49,150,174,245,133, 89,117,236,131, 63,121,159,187,164,123,227,250,189,203,202, 77,103,159,119,219, 16, 73,183,229,114,250,117,
+ 65,199, 73,145, 47, 93,231,186, 47,116,105,177,119, 78, 6,203,212,222, 25, 58,254, 59, 76,114, 30,166,136,194,246,218,103,251,
+155, 85, 87, 17, 15, 30,159,224,253, 31,253, 24, 36, 9, 85, 80,212, 44,230, 37, 78, 64,172,107,112,136, 80,115, 55, 49,216, 28,
+ 25, 47, 60,123,132, 54, 94, 66,179,105,205,155, 60, 11, 4,230, 32,167,154,253, 99,204, 30, 35, 26, 33, 34,168, 3, 33, 4,194,
+241,130,209,240, 17, 22,178, 1, 29, 30, 0,169, 6,199,140,117, 43,160,220, 64,179,145, 70, 57,116, 78,107,230, 74, 71, 76, 6,
+ 63, 7,130,112,109,176, 48, 49,136, 34,170,197, 18, 33,214,168, 57,160,102,219,157, 47, 22, 75,212,139, 37,192,150,246,182, 60,
+ 88,128,136,144, 82,178,231,128, 69,155,102, 5,148, 43,136, 16,114,110,123, 6,124,231,233,209,122,190,123, 22,103,217,187, 3,
+ 93, 34, 54,178,148,167,175,117, 68, 60, 22,115,128,147,222,122,204,173,108,212,120, 12,145, 93, 78,197, 22, 27,170, 74, 61, 9,
+ 87,136,205,222,213,119,177, 29, 81,151, 24, 8, 33,152,195, 25, 27, 99, 62,104,238, 67, 92,178, 7,146, 80,151,230,198, 10,142,
+230,174,198, 42, 46,163,131,121,174, 71,219,193, 43, 4, 33,152, 93,109,103,170, 99, 25, 30,130, 0,224,218,145,162,190,254, 28,
+ 18, 93, 5,180,157, 61,149,206,109,130,187,253,119, 13,252,240, 65,196,151,239, 43, 22,143,126,134, 80,221, 71, 8,151,193, 33,
+ 96,195,140,181,154, 21, 44, 87, 21,152,106, 35,193,171, 53, 89,164, 98,146, 61,119,107, 35, 79,107,172,160,168,221,241,144,216,
+245, 95,142,158,100,245,137,154,236,243, 49,119, 61,251, 12, 85,108, 64,142,108,247, 21,251, 52,157,148, 33, 98,122,242,224,211,
+117, 86,187,143,137,114,103, 86,107, 13, 88,151, 17, 80,152,174,117,231,170,184, 92, 76, 61, 67, 69,220, 79, 62,118,172,245, 33,
+ 90,117, 16, 10,144, 67,155,228, 36,137,205,102,211,231,173,111,154, 13, 98,172,252, 39, 21, 15,239,126,137, 55,222,254, 29,124,
+246,217,167, 56,190,124, 5, 32,194,163,135, 15,247, 58,181,124,240,215,239,227,141,183,190, 3, 40,240,217,103,159, 12,186,195,
+170, 6, 17,225,173,119,222, 29,157, 19, 68, 60, 68,178, 2, 72, 14,235,119,144,132,197,108,142,161, 81,238,119,162,165, 25,200,
+ 54,129,111,238,232,108, 55,205,136,134,117,245,234, 51,184,254,252, 75, 88, 44,150, 61, 41,144, 71, 26, 65, 32,165,118, 88,223,
+122,215,159, 82,235,124, 55, 75, 60,154, 66,184,169,109, 7,242, 90,241, 59,221, 27, 23, 25,178,172, 43,191, 54,223,250,246,239,
+140,185,200, 93, 18,155,206,163, 17,122,174,140,105, 70, 16, 88, 18,227,104,155,240,213,145, 19,123,239,127,218,163, 52, 24, 65,
+238,133,212,175,248, 92,104,107,194,167, 49, 87,112,150, 32,184, 79,118, 55,118, 9,236,200, 41, 42,229,118, 96, 28,120,162,179,
+187,108,157,157, 23,166,121,240, 52, 75,215,191,200, 18,124,128,219,137,126,179,150,108, 27,125,161, 49, 28,191, 83,220, 89,188,
+106, 25, 79,227,187, 60, 5,134, 53,135, 77,160,219,134, 56,219,175,112,149,129, 43,148,241,183,142, 63,198,195,211, 19, 48, 71,
+196,197, 1, 64,107, 52,173,249,144,183, 25, 22, 49, 10,197, 70, 24,223,190, 34,120,229,149,231,177,198, 18, 11,125,136,164,150,
+158,150,154,214,228,101,176,172,114, 34,179,248,140, 49,152, 3, 24, 71, 28, 6, 66,125, 16, 16,218,136,227, 67,193,134,143, 81,
+227, 41,190,204,198,122, 63,136,210,123,185,117, 4, 52, 43, 63, 6,117, 70, 18,155, 72, 83, 2,177, 17,251, 58, 24,183,142, 17,
+ 49, 40,178, 70, 36, 81,136,178,249,133, 83, 70,155, 18, 98,140,168,235, 0,108, 54,104,157,237, 78, 12,135, 95,237,117, 55, 73,
+177,112, 30, 65,106,115,159,164, 22,212, 96,253,156,179,113, 2, 56,120,229, 72, 54,195, 5, 67, 1, 72,146, 21, 22, 54,118,180,
+177, 3,237, 75,153,179,165,188,113,100,243,122,247, 6,176, 82,133,146,160, 21, 6,139,185,246, 5, 79,117, 83, 97,231, 40,160,
+215, 93, 7,138,182, 91, 14,134,162,180, 20,128,236, 83, 56,101, 4,102, 52, 86,209, 16, 66,180,105,215, 11, 90, 4, 64, 85,128,
+104,128, 72,114, 42,170, 23, 39,102, 8,219, 61,159, 5, 56, 0,225,217,171,192,173,147,231,161, 15, 79, 64, 49,161,163,123,237,
+146,177,237,250,115, 20,128, 15, 55,192, 79,255,186,198,159,126,242, 1,240,189,159, 65,195,191, 1,225,136, 6, 45, 54, 57, 34,
+109, 24,104, 7,173, 55,119, 69,132,197,141,150,116, 36,152,235,156,219,200, 37,134, 57, 7, 80, 54,189,120,150, 33,108, 57,248,
+244,157,161,189,135, 69,246, 51, 37, 16, 35, 68,130, 8, 35, 73, 30,188, 49, 88, 93, 70,231,102, 86, 50, 16,133,181,148,151,250,
+142,189, 51, 31, 19, 47,250,157, 90,164, 3,224,161, 64, 76,133,233,140,206,136, 96, 84,135,135,143,213, 2,235,205,202, 32,250,
+106,105,197,202,191,203,171,211, 19,108,214,107, 60,243,204, 53, 92,125,230, 89,220,191,247, 85, 15,229,238,250,115,118,118,138,
+ 95,253,242,231,120,235,237,239,130, 67,192,205,143, 63,128, 2,104, 90, 43,104,239,191,247, 99,228,182,237, 55,150, 82,196,191,
+194,119, 14, 58,137,138, 30, 79,133,221, 62,177,136, 48, 85,108,101,178,211, 57,108, 96,243, 83,168,240,218, 55,223,194,205, 79,
+ 62,192,163, 71, 15,161,170,184,116,233, 24,223,250,246, 59, 95,163, 88,238,127, 86,157,241,141,159,254, 84, 87,236,127,245,139,
+159,250,255,166,217,194, 81, 78,127, 97,231, 36, 61,175,169,223,106, 5,116,219, 40,167, 39,171,245, 43,111,237,117,230, 59,223,
+157,142, 37,124,138,121,253,250, 22, 59,190,107,171,136,246, 95,201, 50, 4,134,230,176, 8,154, 37,252, 17,205,237,178, 11, 98,
+220,192,204,155, 65, 46,246,233,225, 49,210,110,211, 5,138,123, 79, 0,252,141,181,108,219,238, 92, 59,143,195,222,237,111,184,
+214,116,238,225, 89,122,118,119, 95,190,233,243,141,191,129, 2,224,238,131, 22,255,197,239, 17,254,189,255,248,239,225,127,254,
+ 23,132,167,143, 31, 67, 99,133, 44,150, 11,158,218,198,200, 91,200, 56, 67,192,129, 52,248,215,126,247, 57, 44, 94,126, 27, 39,
+167,138,197, 98,129, 54,101,156,173, 54, 96,202, 96,205,104,179,160, 84,165,103, 48, 66,101,204,224,170, 86, 80,125,140,103,151,
+ 27,172, 23,199,160,148,241, 36, 84,120,112,119, 13, 61,185, 11,170, 13, 82, 77,169,131,194,129,192, 1, 77,231, 69, 26,208,147,
+ 47, 67,167,142, 81,179,238,164,192,200,108, 97, 42,109,110, 93,231,108,122,244,200,140,148, 26, 48, 87, 8, 85,133, 44,173,105,
+180,187,149,134,216, 4,174, 0, 82,211, 98,177,168,161, 49, 32,165,100,240, 46,251,154,198,217,207,228, 48, 44,147, 77,134, 22,
+179,198,182,106, 8, 10,145, 96, 36, 53, 53,140, 61,178, 66,131, 13, 2,214, 80,152,161, 87, 16, 1, 7,193, 6, 4,109, 3,146,
+ 36,203, 38,247, 44,117,114, 15,123,168, 64, 56,131,114, 0, 5, 69, 38, 32, 32, 66, 88,125, 27,111,204,134, 36,140, 10, 22,109,
+ 42, 98, 83,102,246, 29,116, 32,237,211,228,200,211,205,200, 61,236,173,239, 16,103,138, 71, 16, 11, 36, 11,158, 9,138,147,231,
+142,240,228,236, 6,170,230,115,211,145, 79, 40,183, 59,125, 73,138,191,168, 1, 60,174,128,127,114,171,198, 31,252,226, 41, 14,
+222,248,103, 88, 85,127,128, 86,151,104,101,141,148, 9, 77,155,209, 52,107,180,105,229,219, 22, 91, 25,136, 75,208, 58, 25, 0,
+ 21,166,105,226,227,174, 25,194,176, 57,165,102,184, 50,129,205,148, 70, 4, 93,172,182,118, 66,109,149, 33,147,221,205,106,106,
+ 38, 36, 17,207,172,144,222, 14,214,124,111,250,121,190, 47,192,170,221,170, 3,254,115, 93, 93, 35, 31,189,213,173,102,253, 89,
+125, 47, 95,176,168, 75,115, 63, 67,248,131,255,235,139, 47,189, 2, 38, 6,135, 10, 55, 94,122, 25, 15,239,223,243,100, 24,211,
+ 56,222,191,251, 37,158,127,225, 37, 92,185,114, 21,247,239,126, 57, 12, 9,123,164, 95,155,245, 26,191,122,255,231,184,116,249,
+ 50, 94,127,243,219, 22, 79,152, 90, 60,126,244, 0, 47,191,242, 26, 98, 48, 18, 71, 8, 21, 46, 93, 62, 30,125,168, 82,146,160,
+138, 9, 35,181,102, 66, 81, 47,150,227,224,128, 11,206, 59,115,127,130,107, 96,115, 54,248,169,174,106,188,240,226,203, 23, 28,
+162,102,150,206,122, 78,255,185, 99, 85,153, 83,194,147,199, 15,241,226, 43,175, 34, 4, 35,149,196, 24,113,233,210,229,201,129,
+ 59,188,227,188, 15, 24,189,144,153,253,140,123,220, 80, 23,139, 6, 98,170, 63,159,153,242,186,189,244, 44,252,175,123, 95,139,
+106, 41,242,159, 20,211,173, 29, 58,198, 48,251, 76,180,235,212,241,111,250,124,211,253,183,106,153,202,182,159,193,190, 13,189,
+235,197,125, 96, 46,234, 29, 48, 87,112,245,235,220,225, 52,106, 88,182, 44, 27,246,244,163,164, 10,204,138,144,166,204,119,224,
+238, 41,240,251, 71,119,241, 15,255,225,223,193,221,151,254, 2,111, 63, 23,112, 36, 39, 56, 89,181,200, 57,129, 67, 64, 85,217,
+247,139, 3, 35,109, 4,127,252,226, 6, 47,255,193, 31,227, 49,189,140,245,250,204,246,223,117,141, 24,221,205, 34,154,175,184,
+ 73,207, 44,209, 45,144, 77,192,151, 23,192, 98,121,128,227,144, 65,151, 46, 35,181, 75, 60,109,206,112,247,129, 32,156,126,133,
+ 24,236,112, 87,144,177,208,217, 80, 46,241,184, 18,168, 21,121,118,227, 15,130, 21,114, 98, 11, 85, 73, 10,108, 18,144,155, 4,
+ 77,109, 31,228,145,221,163,126, 17, 35, 72,141, 4,200, 33,128,189,240, 73, 6,178,154, 6, 62,248,242, 90, 36,129, 56,128, 40,
+ 90,233, 80, 69, 78,102, 52,162, 57,155, 3, 29,139, 35, 97, 38,181, 67, 78, 80,216,207,144, 42,136, 76, 6,152,125,167, 42, 48,
+ 55, 61, 38,178,134, 67,146,105,233, 73, 33, 82,219,174,158,178,187,198, 37,228,214,116,237, 33, 24, 84, 31, 8,238,225,158,250,
+ 27, 34,171,250, 78,220, 79,123, 81,139,107,149,100, 65, 52,232,121,120, 32, 49,100, 66,148,122,227, 26,227,106,229, 62,194, 87,
+105, 72, 6, 85, 0, 49, 3,215,143, 4,213,179,207, 33,227,216,188,251,177,149,138,124,238,119, 66, 1, 92,173,128,191,106, 8,
+255,248,135, 53,142, 63,252, 41,192,191, 64, 67,135,144,164, 72,238, 69,223,186, 69,172,230, 4,245,117,105, 71,110, 83,116,187,
+244,242, 59,225, 65, 56, 74,230, 52, 23,224, 77, 64,112,194,123, 23,121,171,238, 8,104,234,128,206,202, 21,106,210, 55,117,162,
+ 30,179, 37, 10,154, 35,145,163,202,228,235,140,222,175, 99,248, 94,119, 18, 28, 29, 0, 0, 18,211, 73, 68, 65, 84,246,235, 67,
+183, 23, 38,240, 32,187,115, 2,175,184, 68, 46,118, 69,153, 10,159,203, 46, 63,185,139, 65,237, 46,229,233,227,199,248,238,247,
+126, 15, 33, 70, 60,122,248, 0, 95,124,241,217,168, 80, 60,184,119, 23, 47,125,227,117,156,156, 60, 69,179, 94, 15,166, 48,221,
+ 1,185, 67,250,211, 52, 86,216,223,122,251,119,240,198,183,222,198,199, 31,252, 53, 62,249,232, 67,188,242,141, 87,241,246,247,
+126, 31,196,140,182,109,112,255,238,151, 56,125,242,120,228,164,218,133,144,116,143,205,176, 8,199,123, 95,221,193,183,190,243,
+221,126,207,253,224,238,151,174, 7,164, 18, 89,190,152, 46, 88,129, 77,179,193,173, 47,110,226,213,215,222, 4, 49, 99,179, 94,
+225,193,253,187,184,116,249,248,226, 51,212, 57, 1, 26,219,187,229,121,232,246,243, 79, 63,196, 11, 47,189,138,111,255,206,247,
+ 65,196, 72,109,131,251,247,190,194,201,211, 39,147, 9,113,123,223,173,231,145,225, 47,194,120, 63,175, 94,232,192,216, 46, 27,
+174,113,129,219, 1,215, 23,222, 70,163,137,189,240,172, 31,179,219, 71,232,249,100,106, 47, 50, 10,116, 48,233, 33,218, 47, 63,
+163,146,211, 62,147, 78,214, 27, 99,232,246, 99,105,231,233, 79, 52,203, 91,216,173,127,159,187, 8, 91,174,215, 19,175,251, 93,
+ 31,213,249,243,118, 39,171, 84, 96,108,242,112, 78,207,176,117, 73,116,247,142,135, 0,156,102, 66,245,244, 49,254,171,127,244,
+ 34,174,254,237,255, 28,191,248,224, 62,158,127,237, 69,252, 81,250, 22,254,207,255,231,125,220, 93, 53, 88, 6,203, 21, 87, 74,
+120,212, 4,188,123,249, 49,254,248, 95,127, 7, 15,143,190,143,205,253, 39,144,205, 25, 86, 68, 56,107, 8, 73,163, 77,185,201,
+ 63,223,108, 18, 50,179, 38,101, 28,167, 21,174, 28, 45, 81, 93, 58, 6, 42,198, 73,115,132,117,122,140,219,143, 20,225,228, 14,
+ 24, 43,104, 88,152, 92, 43, 91, 20,171,121,202,168,159,131,130,101, 12,200,100,146,209,186,234, 76,101, 24,172, 70, 30, 75, 9,
+144,156, 16, 41, 33, 50,185,252, 88, 65,217,160, 84, 14, 1, 21, 7, 80,219, 98,211, 26,123,190,114, 19, 18, 81,147,127, 49, 17,
+ 2, 7, 40,137,251,164,155,167,184, 20,156, 11,133,162, 85, 35, 98,169,235,189,193, 64,146,140,138, 8, 53, 17,148,196, 39,232,
+ 96,231, 96,238, 38, 97,131,139, 57,152,230, 90, 32,230,171, 47, 22,159,197,209, 99, 93,157,181, 45,162,110,103, 23,144,124,156,
+139,202,136, 16,247, 30,239, 62,236,220, 59, 90,170,164,222, 12, 28,125,106,153,137,184,137,109, 16,210, 12, 79, 55,115, 13,119,
+ 32, 36, 55,230,129, 24,220, 12, 8, 26, 2, 14, 53,227,202, 51, 21,238,157,188,136,240,228, 12,224,140, 34,176,251,194,231,108,
+ 4, 80, 45,129,255,229,243, 5,222,250, 39, 15,241,202,139,255, 27, 62, 63,120, 19,103,233, 18, 86,205, 29,108, 82, 50, 89,100,
+155,128,212, 64,180, 1, 75,139,220, 75, 86, 7, 53, 66, 23, 82,212,155,155,185, 46,187, 38, 69,172, 8, 13, 69, 31,244,146,123,
+194,243,128,120, 59,210,162,170, 46,119, 99,179, 56,118,253, 32,163, 75,101,172, 12,213, 0,250, 85,141,184, 17,146,168, 24, 82,
+212,133,164,117, 28,177,222, 77,147,134, 97,131,220,245,242,247,190,247, 29, 61, 57,121,186,117, 50,118, 68,122, 46,166, 62,246,
+ 67,178,113,232,187, 52, 59,233,220,224,222,249,221, 63,192,157,207,111,226,209,131,251, 64, 17,231, 58,107,216, 54, 78,133,244,
+115,129, 11,218,253,112,152, 83, 25,120, 82, 10,185,105,188, 63,231,222, 8,127,224, 12,117,175,175,156,102,148,118,215,165, 89,
+182,229, 76, 40,201,197,179,214,135,221,200,126, 68,147,118, 60,191, 31,228,164, 24,214,241,133, 67,221,174, 87, 65,197, 35,158,
+219,196,208,185, 57,224,131,115, 46,125,141, 47, 89,153, 11, 80, 48,170,203,247, 75,123, 94,188,238, 94,251,211, 57,239, 65,103,
+ 63,177,237, 7,152,181,187, 40,232, 25,189,157, 44,237,241, 27,220, 97, 52,179,127,167,254, 53,139,245,228, 94,234, 89,234,122,
+ 81,188,105,178,118,209,225,238,210,125,213,121,110, 69, 68,211,230, 97,230,247, 24,184,249, 85,198,127,246,206, 93,252,215,255,
+211,127,135, 79,174,252, 71, 88,125,241, 19,132,229, 37, 28, 31, 6,220,255,197, 63,197,255,245,127,255, 24, 31,220, 79,184,116,
+105,137,123, 79, 54,120,102,243, 0,255,225,159, 61,131,229, 31,254, 7,184,251,232, 8,205,217,125,228,205, 10,171, 38,225,201,
+ 89,131,118,189, 66,219,182,104,155, 53,144, 90,136, 36,147,153,113,196,179, 75,198,141,103, 25,249,240, 57,156,181, 53, 84, 3,
+214,237, 6,159,222, 91,227,236,206, 29, 28,240, 99, 84,117,141, 38,137,125, 44,238,132, 38, 68,104,179, 21,151, 40,150, 76,118,
+166, 17,205,170, 69, 12,118, 48,139, 88, 80, 75, 82,130,166, 46,137, 77, 16, 66,116,148, 84,144,186,125, 50,155,141, 44, 41,144,
+115, 66,211, 52, 22,222,162, 4,201,217,147, 0,209, 51,178,205,130, 54,187, 20,201,224, 87, 81, 69, 0,144,252,243, 13, 46, 55,
+ 76, 10,180, 89, 17, 37,225,104,201,200, 49,162,105, 25,148,115,225, 92, 98,159, 71,232,214,142,254, 30, 55, 73,161, 73,192,104,
+ 65,238,160, 23,124,140, 22, 0,172,182, 63,102, 0,173,147,188, 22, 17,104,131,185,200, 25, 91, 92,250, 38,155,196,200,126,232,
+ 43, 3,250,105,145, 97, 9,105,160, 8,245, 40, 93,209,236, 6, 52, 17,154, 45, 86,150,145,205,255, 28,132, 90,128, 13, 3,159,
+ 61,137,104,111,125,129,144,239, 12, 76,123,156, 15, 66,141,220, 81, 9,120,212, 40, 94,105, 91,252,167,255,230, 10,244,239,252,
+ 5,126,246,228,239,225,225, 71,159, 98,115,239, 22,242,211,251,144,245, 67,160, 61,133,232,202, 72,151, 93,168,151,127, 47,178,
+ 55,232,150,170, 86,176,217,137,251,147,172, 5,208, 36, 65,106,205,162,151, 72, 93,138, 86,108,126, 73,138, 88,115, 67,150,136,
+131,121, 42,184, 52,110,152,190,186, 60, 83, 3,225, 73, 58, 41,157, 13,174, 66, 29,242,106,168,129,153, 96,121,150,187,154, 28,
+ 59,188,120,227,217, 31,108, 54,155,158, 54, 63,136,121, 59,151, 26,251,171, 88,108, 56,180, 8, 90,237, 78, 34, 38,194, 51,215,
+158,197,241,213,107,248,252,211,143,156,128, 50, 19,162, 66,219,104, 97,151,149,142, 93,126,105,189,236,150,138, 67,108, 60,152,
+ 80,145, 9, 68, 37,180,216, 63,207,246,188, 72,115,230,103,187,110, 30,194,214,142,231, 55,217,124,238, 63,223,105,155,112,133,
+194, 22,153, 74,169, 17, 77, 26,176, 29,143,126,225,194, 62, 95,180, 74, 51, 34,154,188,214,139, 52, 53,195,239, 16, 74,229,245,
+197,154,137, 65,167, 77,211,194, 65,187,222,241, 56,241,173,111,165,118,190,247,237,235,178,203, 62,231,252,198,135,118,125, 4,
+ 59,188,243,103,222, 39,125,205, 59,105, 26,182,114, 33,120,159, 10, 30, 10,125,173, 70,173,111,172, 93,166, 5,162, 33,251,157,
+ 38,176,251, 25,225,219,225, 75,252,143,255,237,159, 98,253,157,255, 18,247, 62,255, 18,208, 6,237,102,131,204, 11, 92,126,225,
+101,188,116,141,240,232,214,231,184,245, 88,112,148, 50,254,254, 31,100, 60,255,167,127, 23, 15,219,111, 34,175, 30, 2,210, 34,
+ 57,121,168,105, 54, 72,155,141,153,112,136, 69,142,198, 16, 80,139,224,249,131,132,197,213, 26, 79,150, 47, 0,124, 25, 85, 78,
+216,164, 21,190, 56, 3, 86, 95, 61,196, 82,238, 66, 9,168, 98,101, 94,222,201,124,211,201,201,100, 42, 54, 81,114,100,180, 84,
+ 65, 51,155,166, 60, 11, 66, 48, 31,243,238,144,173, 40,187,115, 30,185,132,140,156,112,101,136, 71,246, 6, 64,212, 12,112, 2,
+119,234,102,238,229, 78,162,230,234,198, 68, 96, 38, 87,121, 21,103,151, 18,152,196, 77,103, 60,195,219,205,105, 84,196, 10, 34,
+ 43, 52, 44,144, 51,131, 36, 21,150,217,195,183, 37, 4, 75,112,235, 32, 90,149,236,195,150,177,179,216, 11, 22,148, 17, 97,142,
+100, 28, 96,118,164, 98, 68,174, 20, 34,178, 4,243, 58,135,237,192, 73,179,189, 27,178,223, 87, 98,164,110,141,163, 22, 38, 3,
+ 15,221, 81,151,124, 41,200,144, 4,117,249,158,218, 30,186,103, 69, 8,176, 68, 70, 91, 1,167,237, 18,188, 58, 3,113,211,171,
+157,190,238,121,187,140,192,151, 18,241,235, 15, 18,110,172,126,141,203,223,120, 14,167,205,107,104,238,221, 6, 54, 15,192,249,
+ 20,164, 27,168, 38,139,180,233,214, 1, 62,153, 7,194,176,134,235,252, 27, 96, 44,247,224,142,121, 93,180, 47, 40, 64, 53,184,
+ 52, 81, 70,124, 28,237, 80, 19,178,207, 85,123, 21, 78, 55,218,152, 13,155,217,216,114, 63, 81,112,183, 55, 39, 35,243, 41,117,
+110,134,126,254,106,231,194, 39, 16, 82, 40, 49,170,186, 70,120,225,185,235, 63,104,154,102,148, 93,206,126, 99,112, 47,108,183,
+ 2,158,137,138,253, 44, 13,122, 60, 16,222,253,189, 63,194,229, 43, 87,113,243,147,143,176, 58, 59, 27,133, 61,236,170, 95,138,
+129, 13, 93,218,200,206, 23,249,201, 60, 69,227,147,122,154,111, 61, 45,193, 52,119, 52,237, 56, 12,233,156,162,123,254, 1,186,
+155, 12, 71,231, 87,191,237, 3,116,196,238,155, 22,150,178, 40, 93, 96, 98,223, 55,229, 78,254,173, 95,181,210,246,203, 43,227,
+ 62,105, 63,101,171, 96,232,239, 43,222,227,233,184,103, 53,234,215,123,205,219,197,117,250,237,218,255, 26,198,169,181,180,255,
+ 83,164, 57, 27, 75,218,187,102, 57,191,104,127, 93, 6,124,249,146, 6,199, 40, 58,239,103, 59,150, 99,215, 36,211,185,118, 56,
+197, 37, 45,187, 76, 29, 53, 90,221,207,108,148,176,121,112,138,255,254,207, 43,124,251, 31,252, 15,184,253,232,101,208,234, 38,
+146, 16, 84, 90,104,110,209, 74, 5, 58,254, 6,174, 31, 3,155, 59,159,227,143,158,123,130,119,255,252,207,240,104,241, 39,200,
+167,143,177,105, 26,180, 89,209,166,140, 85,178, 61,104,110, 91, 52,173,101, 84, 55, 25, 56,172, 35,174, 93, 37,180, 87,175,224,
+118,126, 30,247,190, 74,104,214,167,200,117,141,187,107,198,211, 47,159, 96,185,249, 28,168,131,105,178, 25, 8, 28,161,154,144,
+153, 29,250,116,168,149, 0,237, 83,217, 60,239, 59,183,142,252, 5, 27,110, 88, 64,129,160, 8, 3,251,152, 12, 46, 37, 88,186,
+ 86,206,174,198, 97, 43,220, 74, 0, 56,248,119,201,252,194,179, 55, 42,157, 34, 35,112,232,205, 73,122,247, 77,166, 30, 10,102,
+223,195,118,175, 67, 97,242, 37,114,226, 84, 69, 98,251, 88, 30,140, 74, 58, 11,240, 12, 39,211,217, 60,222, 75,182,130, 67,239,
+ 68, 4,166, 0,102,241,194,226,218, 45,138,200,170, 32,177, 6, 38,136, 33, 23, 96,215,208,187,143, 60, 60, 66, 86,124, 81,206,
+ 80, 84,236,207,167,169,104, 98,186, 91, 47,247, 46, 17,102,138, 99,247, 35, 43, 80, 65,160, 81,113,138, 5,244, 76,129,252,116,
+ 52,104, 94,100, 74, 47,255,199, 97,165,120,160, 53,126,253,235, 19,200,253,247,112,229,198, 21, 44,235, 27,144,211,123,208,246,
+ 20, 74,217, 96,119, 53,148,151, 84, 33, 57, 67,250,203, 69, 78,200, 54,174, 69,137, 62, 6,230, 62,111,160,107,108,108, 48, 23,
+ 71,185,221,233,147,180, 95, 13, 7,234, 32,115, 43,254,230, 19, 95, 44, 20, 29, 85, 81,229, 17, 45,156, 10,196,197,146,120,236,
+185,250,120, 86,223,177,214, 85,133,240,194,245,103,127,208, 54, 77,113, 16, 82,175, 19, 45, 15, 56, 49,158, 68, 65,179, 31,251,
+109,125,121,231, 22,190,186,243,197,224,122,182, 51, 3, 76, 39,133,107,114, 78,210, 57, 7, 56, 48, 91, 28,104, 14,228,222,241,
+ 88, 83, 39,174, 93, 25,215,116,129,194,190,227, 21, 94,240,231,246, 21,117,221,182,237,158,233, 66,232,188,194, 78,115,175, 13,
+187,161,231,105, 61,212,243,178,235,247, 61,222,204,103, 77, 23,170, 78,253,190,104, 84, 68, 46,136, 52,208,185, 23,157,118,222,
+ 99,229, 43, 38, 58,175,184,111,255, 27, 97,158, 5,127, 94, 67,240,245,127,230, 60, 50,220,124,115,160,197, 88,109, 1, 20, 58,
+219,130,234,204,247,162, 75,116,220,250,206, 76,174, 45, 49,112,251,145,224,207, 95,186,135,255,228,191,249, 11,220, 60,248,119,
+177,185,127, 19,161, 98,180,173, 21, 73,118,143,129,179,213, 6, 56,120, 14,223,125, 94,241,230,187,215,241,228,198,191, 5, 89,
+ 37,156,165, 53, 86,171, 13,180,217,160, 73, 25,103,103,107,232,102,131,172, 25,235, 77,107,118,167,185,133,144,224, 81,125, 29,
+183, 30, 93, 66,186,247, 8,124,246, 5,214,103, 79,113,186, 18, 52, 79, 86,224,179, 59,136,117,134,240, 2, 16,139, 71, 37,159,
+136,164,245,244,106, 50, 2, 19,147, 5,157,168,100, 47,166,240,132, 45,117,104,221,172,173, 19,162,187, 32,202,200,183, 32,139,
+ 34,134, 0, 10, 1, 41,231,190, 96,138, 12, 54,214,221, 14,159, 36, 27, 75,217,239,237,192, 64,136,236,133,216,173,155,137, 60,
+163,222, 65,121, 38, 36,113,182,185, 23,195, 14,159, 12, 80,196, 72,208, 16,109, 50, 55, 59, 57,164,158,149,214, 9,248,224,132,
+ 44,244, 5,153,217, 38, 79,227,135,185,189,108,238, 34, 91,156,209, 70,121,208,202,132, 8,229,136, 12, 69,102, 6, 83, 68,244,
+102, 66,243,208,152, 80,231,119,239,245,145, 84, 93,231, 62, 64,172, 29, 1,140,161, 96, 82, 48,219,107, 91, 49, 99,179,174, 64,
+205, 9, 64,109, 63,230,237,231,242,236,158,216,155,184,196,103,159,157,224,254,103,191, 0, 85, 17,135,151,159,195, 97,157, 81,
+235,198,164,130,202, 8, 29,212, 78, 86,209,201,167,238,126,151,228,172, 96, 38,237,155,128,232,206,123,212,201, 35, 93, 81, 78,
+197,142, 91,168, 11, 73,235,248, 95,228,122,119,238,102,244,190,152,119,187,251, 46,190, 24,158,113,175, 52, 72,130,253,106, 13,
+235,215,142,136,167,138,186,170, 16, 75, 26, 83,119,118,138,239, 22,186,228, 26,214,185,107, 39, 91,108, 51,221, 59,107,234,220,
+ 86,115, 84,100,141, 80,167, 23,132, 16,135, 23, 61,221,155,150, 4, 41,198,126,107, 76,157,231,122,255, 6, 59,243,173,197,243,
+215,251,163,152, 88,123, 14, 59,207, 17, 28, 65, 69,178, 28,205,175, 54, 70, 38, 95, 58, 26,240,199,127,129, 41, 65,174,208, 32,
+235,208, 96,169, 94,160,152,108, 17,223,116, 82, 42, 7,221,249,254, 98, 53,252,236, 56,107,121,172,155,159,109, 32, 10,137,154,
+170,110, 69, 11,205,198,183, 98,176,221,167, 30, 98,155,236,101, 10,105, 29, 77,201,122,147,176,154, 93,196,187,217,235, 53,121,
+170,173,107,183,245, 24,165,100,173,136, 38,212,185,176,100,237, 61,235, 71,139, 70, 42,178,226, 39,105, 77, 58,209, 43,142, 81,
+135,193,106, 86,183,222, 81,249, 77, 86,156,180,132, 27,233, 49,254,193,223,125, 11,103,111,252,251, 56,187,249, 8,146, 79, 1,
+170, 81, 49, 97,221, 36, 72, 8, 88, 80,134, 74,139,170, 77,120,246,173,239,161,185,244, 34,210, 19,194, 38,159,224,233,202,124,
+ 34, 8, 25,171, 86,192,185, 5,168, 69, 35, 10,201,130,136,140, 16,129,211, 77,194,234,139, 7,208,205, 25, 34,159, 65, 22, 53,
+ 52, 41,170,149,169,111, 54,156,208,230, 26,129,128,218,135,156, 36,210,195,219,226,240, 38,113,112,249,145, 59,116, 56,201, 44,
+171,197,152,178,102,180, 41, 67,147, 90, 8, 75, 48,153,154,144, 21,215,206, 66,180, 77, 45, 16,106, 48, 87,200,210,244, 26,103,
+133,248,101, 87, 16, 7, 84, 53, 89, 83,226,207,105, 86,185, 17,204, 21, 40,139,239,240, 21, 28, 12, 25, 16, 49, 73,157,167,196,
+244,166, 49, 34,131, 41,138,185,150, 7,159,136, 91,107, 30, 50,129,114, 66, 96,133,211,213,140,144, 71, 6,250, 50, 8,149, 19,
+184,148,120, 40, 72, 29, 27,220, 79, 80,246, 47, 86, 22,242,141,175, 57,172,105, 2, 18,212, 87, 1, 4,228, 8,104,107,239, 83,
+140, 21,222,173, 96,205,177,205,208,139,168, 22, 29,151, 93, 86,217,165,140,101,111, 2,150, 17,120,122,184, 0,206,142, 65,121,
+ 13,229,139,183,179,115, 86,198,203,160,168,175, 92,198,227,199, 43, 60,252,231,255, 7, 46,221,120, 13,207, 60,255, 42, 46, 31,
+ 95, 70,189,108,193,121, 3,110, 19, 40, 37, 44, 20,128, 90, 72, 15, 89, 58,144,191, 54, 91,125,176,170,251, 26, 24, 47,195, 92,
+253, 34,106,178,119,145,252, 61,118, 82, 51,231,170,251,251,215,190,217, 83,247,137, 79,106,210, 8, 67,138,120,192,169,105,104,
+ 32,114,119,255, 24,173,209,155,235, 48, 52, 94,158,253, 65, 80,196,179,147, 39,246,132, 40, 35, 47, 7,217, 17,131,204, 92,190,
+ 48,176,160,222,238,210,247,128, 59,136,103,132,177,212, 76, 49,246,179,158,110, 20,117,118,231,186,151, 28, 60, 98, 59, 15, 83,
+ 18,149, 36,236, 49,233,105,114, 86, 79,119, 31,123, 39,234,125,245, 90, 75, 23,240,253, 10,248,157, 15,163, 19, 24,181,192, 59,
+ 70, 7, 61, 13,215,125,168,147,180,181,162, 61,143,242, 52,242,111,199, 57,157,206,142, 7, 43, 37,133, 84,232,212,203, 95,218,
+178, 51,217,171,103, 31, 81,178, 38,248,203,188, 81,204,180, 25,208,177,107,250,168,153,152,251, 20,186,251,100,100,135,175,243,
+ 55,192,156,129, 17,237,148, 15,236,208,223,207, 52, 67,187,239,139, 73, 3, 50,219, 63,234,133,142,187,105,216,142,106, 25, 59,
+171,163,192,152,174, 49,210,146, 28,217, 53,121, 50,238, 7,202,238, 81, 9,120,252, 36,225, 31,189,147,241,189,127,251,239,227,
+195,167, 47,128,154, 95, 34, 18,129,165, 69,168, 35, 14,218, 13,114, 74, 72,188,196, 2,140,235,199, 25,233,232, 37,172, 54, 75,
+180,233, 33,158,174,128,205,233, 41,180, 89, 65,152,145, 54, 27,108, 82,139, 86, 43, 72, 90,131, 36, 33,145,241,156, 53, 55,192,
+230, 62, 72, 90,100, 14, 8,201,165, 83, 33, 0, 90,153, 25, 74,179, 65,168, 24, 82, 49, 24, 70,108, 75, 98,225, 35,154, 77,250,
+221, 35, 45, 42,166,255, 6, 33, 40, 67,217, 92,210, 2, 51,132,179, 39,179,101,100, 88,145, 53,215, 71,159,128,217, 28,197,144,
+146, 95, 63,130,182,130, 80, 25,185, 10,126,166,230, 12,115, 32,139,181,161, 2,106, 5, 55, 39,215,165,243, 16,166, 19, 24,255,
+ 95,103,103,151,219,182, 17,196,241,223,236, 46, 73, 73, 81, 90, 3, 65, 80, 39, 71,232, 17,122,129,190, 53,247,127, 13,138,162,
+ 15, 65, 11, 24,146,107,145,187, 51,121,152,161, 68,217,150,228,244, 0,146, 72,241, 99,119,254,159,180,228,202,118,154,231,147,
+ 59, 69,127,226,162, 85,141, 92,178, 43,166,171,146, 99,154,116,142,219,225,225,185, 39,221,155,151,213,161,252,104, 43,147,220,
+ 92, 97, 79, 10, 87,138,198, 19, 23,141,121,226, 42,117, 77, 96,121,110,120,107,199, 69, 71,212,155,241,172, 9,102, 30,159,139,
+212,240,245, 7,164,175,145,129,174, 39,117,191, 68,152, 78, 10,255,253, 12,202,103, 21,122,160, 12,208,186, 45,180,127,142,212,
+193,143, 79, 74,231,111,135, 97,189, 6,107, 28,190,125,229,207,111,127,147,182,191,208,253,244,145,178,121, 71,233,215,148,212,
+145,101,164, 16,190,250,228, 61,245, 37, 56,113, 36,147, 81,214,192, 54, 54,133, 45,164,109, 57,119,222, 5, 16, 93, 6,214,218,
+ 2,134,143,161, 85,102,226,222, 23,246, 25, 25,152,227, 98,221,178,214, 60,101,206,201, 33,114,208, 46, 53, 32,115,177, 89, 82,
+ 30, 57,242, 50, 47,248,198,254,113, 79,185,191,191,103,183,219, 7,180, 46,103,226,179,133,136,245,108, 79,110,139, 73,121, 57,
+ 13, 45, 63, 51,171, 40,101,177,224,233, 43,188,246, 37, 17,221,165,188, 95,121, 54,161,190, 64,164,237, 60,218, 86,176,103,231,
+176,236,138,255, 31,117,151,114,157, 29,151,139,120,196,219, 96,248, 51,129,185, 93, 63,142,215,212,213,114,182,120, 62,187,181,
+133, 99, 33,193,101,124, 94,126, 72,148,146, 22,135,170, 47,137,241, 43,184,216, 53,136,249,245, 69, 82, 46, 66,245,243,189,119,
+190,201,148, 27, 84,193,237,107, 36, 87,168,160,147, 98,253,197,213,126,181, 20, 71,110,156,135,189,253,126,124, 54,100,203,205,
+255,122,137, 56,200,121,123,226, 21,113,234,165,218,226,107,191,241, 88,225,215,187, 7,254,248,242, 27,255,125,250,157,244,215,
+191,108, 86,153, 44, 93, 64,140, 61,219,148,152,166, 3, 99,203,220,173,133,225,195,103,118,237, 61,117,220, 49, 42,216,248, 68,
+177, 17,233, 18, 7, 77,244, 89,104, 41,209,158, 42,125, 22,100, 53, 68,124,115,130,222, 64, 87,104, 43,228,156,200,197,115,208,
+ 75, 42,116,120,148,107,237,125, 2,204, 41,211,229,132,165,204,211, 88, 41,145, 55,223, 34,240, 71,194,127,175,164, 16,149, 41,
+ 85,123,166,234, 62,230,110, 24, 60, 97, 46, 32,212,177, 26,170,213,185,240, 4, 41, 57, 12,123,202,195, 31,208, 54,185, 39,185,
+148,200,135,241,239, 85,213,227,251, 82,155,210,128, 85, 51,247,103,135,181,172,195, 43, 91, 39, 41,148, 22, 92,116,107,228, 20,
+ 2, 69,157,243, 27,148,148,133,148,186,224, 86,125,202, 31, 16, 90,139,160, 26,177,104,246,194,251,203, 61, 64,158,108, 13, 73,
+138,228,158,106,110,163,146,216, 20,120, 12,111, 4,206, 4,162,112,236, 5,154, 53, 7, 71, 4, 46,250,197,171, 81, 52,147,114,
+143,198, 52,107, 73, 24,200,180,106,152, 78,206,187,155,226,221, 53,238,245,174,214,220,206, 23, 86,175, 4, 28,146,240, 52,221,
+145,118,123,224,241,228,233,182,183, 76,233,118,227,142,253,217, 55, 70,211, 3, 60,236,177,221, 6,235,182,180,178,166,149,194,
+ 33, 23,167, 39,202,233,157, 38, 88,196,231, 66, 39,190,168,127, 30,132,247, 67, 65, 83,161, 73,166, 90, 97,108,194, 56, 86,234,
+180,130, 58, 34,156, 52, 4,243,115,107,106, 71,161,161,178,104,127, 83,195,104, 71,152,244,108, 96, 72, 94, 25,227, 26,135, 89,
+ 8,236,105,115, 22,170,253,205,230, 29,223, 1,210,128,212,206, 14,153,242,124, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
+};
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index cfa9585868e..8e83b01fc2f 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -114,12 +114,14 @@ static void gp_draw_stroke_buffer (tGPspoint *points, int totpoints, short thick
/* don't draw stroke at all! */
}
else {
- float oldpressure = 0.0f;
+ float oldpressure = points[0].pressure;
/* draw stroke curve */
if (G.f & G_DEBUG) setlinestyle(2);
-
+
+ glLineWidth(oldpressure * thickness);
glBegin(GL_LINE_STRIP);
+
for (i=0, pt=points; i < totpoints && pt; i++, pt++) {
/* if there was a significant pressure change, stop the curve, change the thickness of the stroke,
* and continue drawing again (since line-width cannot change in middle of GL_LINE_STRIP)
@@ -144,6 +146,9 @@ static void gp_draw_stroke_buffer (tGPspoint *points, int totpoints, short thick
glVertex2f(pt->x, pt->y);
}
glEnd();
+
+ /* reset for predictable OpenGL context */
+ glLineWidth(1.0f);
if (G.f & G_DEBUG) setlinestyle(0);
}
diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c
index 937d24eed04..56210864593 100644
--- a/source/blender/editors/gpencil/editaction_gpencil.c
+++ b/source/blender/editors/gpencil/editaction_gpencil.c
@@ -259,7 +259,7 @@ void duplicate_gplayer_frames (bGPDlayer *gpl)
/* Copy and Paste Tools */
/* - The copy/paste buffer currently stores a set of GP_Layers, with temporary
* GP_Frames with the necessary strokes
- * - Unless there is only one element in the buffer, names are also tested to check for compatability.
+ * - Unless there is only one element in the buffer, names are also tested to check for compatibility.
* - All pasted frames are offset by the same amount. This is calculated as the difference in the times of
* the current frame and the 'first keyframe' (i.e. the earliest one in all channels).
* - The earliest frame is calculated per copy operation.
@@ -311,7 +311,7 @@ void copy_gpdata ()
gpln= MEM_callocN(sizeof(bGPDlayer), "GPCopyPasteLayer");
gpln->frames.first= gpln->frames.last= NULL;
- strcpy(gpln->info, gpls->info);
+ BLI_strncpy(gpln->info, gpls->info, sizeof(gpln->info));
BLI_addtail(&gpcopybuf, gpln);
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index 3c810f7da2d..0ac5a9e46ce 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -123,7 +123,7 @@ typedef struct bAnimListElem {
/* Some types for easier type-testing
- * NOTE: need to keep the order of these synchronised with the channels define code
+ * NOTE: need to keep the order of these synchronized with the channels define code
* which is used for drawing and handling channel lists for
*/
typedef enum eAnim_ChannelType {
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 1eedd7ec782..df4113ca07a 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -106,7 +106,7 @@ void ED_fileselect_clear(struct bContext *C, struct SpaceFile *sfile);
void ED_fileselect_exit(struct bContext *C, struct SpaceFile *sfile);
-int ED_file_extension_icon(char *relname);
+int ED_file_extension_icon(const char *relname);
#endif /* ED_FILES_H */
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index a816c1612a1..16edd0a1a9e 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -575,7 +575,7 @@ static void ui_draw_links(uiBlock *block)
/* NOTE: if but->poin is allocated memory for every defbut, things fail... */
static int ui_but_equals_old(uiBut *but, uiBut *oldbut)
{
- /* various properties are being compared here, hopfully sufficient
+ /* various properties are being compared here, hopefully sufficient
* to catch all cases, but it is simple to add more checks later */
if(but->retval != oldbut->retval) return 0;
if(but->rnapoin.data != oldbut->rnapoin.data) return 0;
@@ -640,7 +640,7 @@ static int ui_but_update_from_old_block(const bContext *C, uiBlock *block, uiBut
// but->flag= oldbut->flag;
#else
/* exception! redalert flag can't be update from old button.
- * perhaps it should only copy spesific flags rather than all. */
+ * perhaps it should only copy specific flags rather than all. */
// but->flag= (oldbut->flag & ~UI_BUT_REDALERT) | (but->flag & UI_BUT_REDALERT);
#endif
// but->active= oldbut->active;
@@ -748,7 +748,7 @@ static int ui_but_is_rna_undo(uiBut *but)
if(but->rnapoin.id.data) {
/* avoid undo push for buttons who's ID are screen or wm level
* we could disable undo for buttons with no ID too but may have
- * unforseen conciquences, so best check for ID's we _know_ are not
+ * unforeseen consequences, so best check for ID's we _know_ are not
* handled by undo - campbell */
ID *id= but->rnapoin.id.data;
if(ID_CHECK_UNDO(id) == FALSE) {
@@ -865,7 +865,7 @@ void uiEndBlock(const bContext *C, uiBlock *block)
/* inherit flags from 'old' buttons that was drawn here previous, based
* on matching buttons, we need this to make button event handling non
- * blocking, while still alowing buttons to be remade each redraw as it
+ * blocking, while still allowing buttons to be remade each redraw as it
* is expected by blender code */
for(but=block->buttons.first; but; but=but->next) {
if(ui_but_update_from_old_block(C, block, &but))
@@ -1211,7 +1211,7 @@ void ui_delete_linkline(uiLinkLine *line, uiBut *but)
* an edit override pointer while dragging for example */
/* for buttons pointing to color for example */
-void ui_get_but_vectorf(uiBut *but, float *vec)
+void ui_get_but_vectorf(uiBut *but, float vec[3])
{
PropertyRNA *prop;
int a, tot;
@@ -1249,27 +1249,34 @@ void ui_get_but_vectorf(uiBut *but, float *vec)
vec[0]= vec[1]= vec[2]= 0.0f;
}
}
+
+ if (but->type == BUT_NORMAL) {
+ normalize_v3(vec);
+ }
}
/* for buttons pointing to color for example */
-void ui_set_but_vectorf(uiBut *but, float *vec)
+void ui_set_but_vectorf(uiBut *but, const float vec[3])
{
PropertyRNA *prop;
- int a, tot;
if(but->editvec) {
- VECCOPY(but->editvec, vec);
+ copy_v3_v3(but->editvec, vec);
}
if(but->rnaprop) {
prop= but->rnaprop;
if(RNA_property_type(prop) == PROP_FLOAT) {
+ int tot;
+ int a;
+
tot= RNA_property_array_length(&but->rnapoin, prop);
tot= MIN2(tot, 3);
- for(a=0; a<tot; a++)
+ for (a=0; a<tot; a++) {
RNA_property_float_set_index(&but->rnapoin, prop, a, vec[a]);
+ }
}
}
else if(but->pointype == CHA) {
@@ -1280,7 +1287,7 @@ void ui_set_but_vectorf(uiBut *but, float *vec)
}
else if(but->pointype == FLO) {
float *fp= (float *)but->poin;
- VECCOPY(fp, vec);
+ copy_v3_v3(fp, vec);
}
}
@@ -1740,7 +1747,9 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str)
}
else if(but->type == TEX) {
/* string */
- BLI_strncpy(but->poin, str, but->hardmax);
+ if(ui_is_but_utf8(but)) BLI_strncpy_utf8(but->poin, str, but->hardmax);
+ else BLI_strncpy(but->poin, str, but->hardmax);
+
return 1;
}
else if(but->type == SEARCH_MENU) {
@@ -2552,6 +2561,24 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, const char *str,
if(block->curlayout)
ui_layout_add_but(block->curlayout, but);
+#ifdef WITH_PYTHON_UI_INFO
+ {
+ extern void PyC_FileAndNum_Safe(const char **filename, int *lineno);
+
+ const char *fn;
+ int lineno= -1;
+ PyC_FileAndNum_Safe(&fn, &lineno);
+ if (lineno != -1) {
+ BLI_strncpy(but->py_dbg_fn, fn, sizeof(but->py_dbg_fn));
+ but->py_dbg_ln= lineno;
+ }
+ else {
+ but->py_dbg_fn[0]= '\0';
+ but->py_dbg_ln= -1;
+ }
+ }
+#endif /* WITH_PYTHON_UI_INFO */
+
return but;
}
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index c35996701ee..aeb8ad99dd2 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -38,6 +38,7 @@
#include "BLI_listbase.h"
#include "BLI_string.h"
+#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
@@ -115,7 +116,7 @@ int ui_but_anim_expression_set(uiBut *but, const char *str)
driver= fcu->driver;
if(driver && driver->type == DRIVER_TYPE_PYTHON) {
- BLI_strncpy(driver->expression, str, sizeof(driver->expression));
+ BLI_strncpy_utf8(driver->expression, str, sizeof(driver->expression));
driver->flag |= DRIVER_FLAG_RECOMPILE;
WM_event_add_notifier(but->block->evil_C, NC_ANIMATION|ND_KEYFRAME, NULL);
return 1;
@@ -164,7 +165,7 @@ int ui_but_anim_expression_create(uiBut *but, const char *str)
/* set the expression */
// TODO: need some way of identifying variables used
- BLI_strncpy(driver->expression, str, sizeof(driver->expression));
+ BLI_strncpy_utf8(driver->expression, str, sizeof(driver->expression));
/* FIXME: for now, assume that
* - for expressions, users are likely to be using "frame" -> current frame" as a variable
@@ -179,6 +180,7 @@ int ui_but_anim_expression_create(uiBut *but, const char *str)
dtar = &dvar->targets[0];
dtar->id = (ID *)CTX_data_scene(C); // XXX: should we check that C is valid first?
+ dtar->idtype= ID_SCE;
dtar->rna_path = BLI_sprintfN("frame_current");
}
diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index a40900fb39b..aefe773fdad 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -600,13 +600,13 @@ static void ui_draw_but_CHARTAB(uiBut *but)
wstr[0] = cs;
if(strcmp(G.selfont->name, FO_BUILTIN_NAME))
{
- wcs2utf8s((char *)ustr, (wchar_t *)wstr);
+ BLI_strncpy_wchar_as_utf8((char *)ustr, (wchar_t *)wstr, sizeof(ustr));
}
else
{
if(G.ui_international == TRUE)
{
- wcs2utf8s((char *)ustr, (wchar_t *)wstr);
+ BLI_strncpy_wchar_as_utf8((char *)ustr, (wchar_t *)wstr, sizeof(ustr));
}
else
{
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 9af9b2f55ad..c02bbafce15 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -107,6 +107,12 @@ typedef enum uiHandleButtonState {
BUTTON_STATE_EXIT
} uiHandleButtonState;
+typedef enum uiButtonJumpType {
+ BUTTON_EDIT_JUMP_NONE,
+ BUTTON_EDIT_JUMP_DELIM,
+ BUTTON_EDIT_JUMP_ALL
+} uiButtonJumpType;
+
typedef struct uiHandleButtonData {
wmWindowManager *wm;
wmWindow *window;
@@ -260,7 +266,7 @@ static int ui_is_a_warp_but(uiBut *but)
}
/* file selectors are exempt from utf-8 checks */
-static int ui_is_utf8_but(uiBut *but)
+int ui_is_but_utf8(uiBut *but)
{
if (but->rnaprop) {
const int subtype= RNA_property_subtype(but->rnaprop);
@@ -1163,7 +1169,10 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
}
else {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
- BLI_strncpy(active_data->str, buf, active_data->maxlen);
+
+ if(ui_is_but_utf8(but)) BLI_strncpy_utf8(active_data->str, buf, active_data->maxlen);
+ else BLI_strncpy(active_data->str, buf, active_data->maxlen);
+
if(but->type == SEARCH_MENU) {
/* else uiSearchboxData.active member is not updated [#26856] */
ui_searchbox_update(C, data->searchbox, but, 1);
@@ -1252,6 +1261,86 @@ static short test_special_char(char ch)
return 0;
}
+static int ui_textedit_step_next_utf8(const char *str, size_t maxlen, short *pos)
+{
+ const char *str_end= str + (maxlen + 1);
+ const char *str_pos= str + (*pos);
+ const char *str_next= BLI_str_find_next_char_utf8(str_pos, str_end);
+ if (str_next) {
+ (*pos) += (str_next - str_pos);
+ if((*pos) > maxlen) (*pos)= maxlen;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static int ui_textedit_step_prev_utf8(const char *str, size_t UNUSED(maxlen), short *pos)
+{
+ if((*pos) > 0) {
+ const char *str_pos= str + (*pos);
+ const char *str_prev= BLI_str_find_prev_char_utf8(str, str_pos);
+ if (str_prev) {
+ (*pos) -= (str_pos - str_prev);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void ui_textedit_step_utf8(const char *str, size_t maxlen,
+ short *pos, const char direction,
+ uiButtonJumpType jump)
+{
+ const short pos_prev= *pos;
+
+ if(direction) { /* right*/
+ if(jump != BUTTON_EDIT_JUMP_NONE) {
+ /* jump between special characters (/,\,_,-, etc.),
+ * look at function test_special_char() for complete
+ * list of special character, ctr -> */
+ while((*pos) < maxlen) {
+ if (ui_textedit_step_next_utf8(str, maxlen, pos)) {
+ if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break;
+ }
+ else {
+ break; /* unlikely but just incase */
+ }
+ }
+ }
+ else {
+ ui_textedit_step_next_utf8(str, maxlen, pos);
+ }
+ }
+ else { /* left */
+ if(jump != BUTTON_EDIT_JUMP_NONE) {
+ /* left only: compensate for index/change in direction */
+ ui_textedit_step_prev_utf8(str, maxlen, pos);
+
+ /* jump between special characters (/,\,_,-, etc.),
+ * look at function test_special_char() for complete
+ * list of special character, ctr -> */
+ while ((*pos) > 0) {
+ if (ui_textedit_step_prev_utf8(str, maxlen, pos)) {
+ if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break;
+ }
+ else {
+ break;
+ }
+ }
+
+ /* left only: compensate for index/change in direction */
+ if(((*pos) != 0) && ABS(pos_prev - (*pos)) > 1) {
+ ui_textedit_step_next_utf8(str, maxlen, pos);
+ }
+ }
+ else {
+ ui_textedit_step_prev_utf8(str, maxlen, pos);
+ }
+ }
+}
+
static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
{
char *str= data->str;
@@ -1294,13 +1383,17 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
/* mouse dragged outside the widget to the left */
if (x < startx && but->ofs > 0) {
- int i= but->ofs;
+ short i= but->ofs;
origstr[but->ofs] = 0;
while (i > 0) {
- i--;
- if (BLF_width(fstyle->uifont_id, origstr+i) > (startx - x)*0.25f) break; // 0.25 == scale factor for less sensitivity
+ if (ui_textedit_step_prev_utf8(origstr, but->ofs, &i)) {
+ if (BLF_width(fstyle->uifont_id, origstr+i) > (startx - x)*0.25f) break; // 0.25 == scale factor for less sensitivity
+ }
+ else {
+ break; /* unlikely but possible */
+ }
}
but->ofs = i;
but->pos = but->ofs;
@@ -1314,9 +1407,13 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
/* XXX does not take zoom level into account */
while (startx + aspect_sqrt * BLF_width(fstyle->uifont_id, origstr+but->ofs) > x) {
if (but->pos <= 0) break;
- but->pos--;
- origstr[but->pos+but->ofs] = 0;
- }
+ if (ui_textedit_step_prev_utf8(origstr, but->ofs, &but->pos)) {
+ origstr[but->pos+but->ofs] = 0;
+ }
+ else {
+ break; /* unlikely but possible */
+ }
+ }
but->pos += but->ofs;
if(but->pos<0) but->pos= 0;
}
@@ -1340,27 +1437,28 @@ static void ui_textedit_set_cursor_select(uiBut *but, uiHandleButtonData *data,
ui_check_but(but);
}
-static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char ascii)
+/* note: utf8 & ascii funcs should be merged */
+static int ui_textedit_type_utf8(uiBut *but, uiHandleButtonData *data, const char utf8_buf[6])
{
char *str;
- int len, x, changed= 0;
+ int len, changed= 0;
str= data->str;
len= strlen(str);
if(len-(but->selend - but->selsta)+1 <= data->maxlen) {
+ int step= BLI_strnlen(utf8_buf, sizeof(utf8_buf));
+
/* type over the current selection */
- if ((but->selend - but->selsta) > 0)
+ if ((but->selend - but->selsta) > 0) {
changed= ui_textedit_delete_selection(but, data);
+ len= strlen(str);
+ }
- len= strlen(str);
- if(len+1 < data->maxlen) {
- for(x= data->maxlen; x>but->pos; x--)
- str[x]= str[x-1];
- str[but->pos]= ascii;
- str[len+1]= '\0';
-
- but->pos++;
+ if(len + step < data->maxlen) {
+ memmove(&str[but->pos + step], &str[but->pos], (len + 1) - but->pos);
+ memcpy(&str[but->pos], utf8_buf, step * sizeof(char));
+ but->pos += step;
changed= 1;
}
}
@@ -1368,7 +1466,13 @@ static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char asc
return changed;
}
-static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump, int jump_all)
+static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char ascii)
+{
+ char utf8_buf[6]= {ascii, '\0'};
+ return ui_textedit_type_utf8(but, data, utf8_buf);
+}
+
+static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, uiButtonJumpType jump)
{
const char *str= data->str;
const int len= strlen(str);
@@ -1377,7 +1481,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction
/* special case, quit selection and set cursor */
if (has_sel && !select) {
- if (jump_all) {
+ if (jump == BUTTON_EDIT_JUMP_ALL) {
but->selsta = but->selend= but->pos = direction ? len : 0;
}
else {
@@ -1391,48 +1495,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction
data->selextend = 0;
}
else {
- if(direction) { /* right*/
- if(jump) {
- /* jump between special characters (/,\,_,-, etc.),
- * look at function test_special_char() for complete
- * list of special character, ctr -> */
- while(but->pos < len) {
- but->pos++;
- if(!jump_all && test_special_char(str[but->pos])) break;
- }
- }
- else {
- but->pos++;
- if(but->pos > len) but->pos= len;
- }
- }
- else { /* left */
- if(jump) {
-
- /* left only: compensate for index/change in direction */
- if(but->pos > 0) {
- but->pos--;
- }
-
- /* jump between special characters (/,\,_,-, etc.),
- * look at function test_special_char() for complete
- * list of special character, ctr -> */
- while(but->pos > 0){
- but->pos--;
- if(!jump_all && test_special_char(str[but->pos])) break;
- }
-
- /* left only: compensate for index/change in direction */
- if((but->pos != 0) && ABS(pos_prev - but->pos) > 1) {
- but->pos++;
- }
-
- }
- else {
- if(but->pos>0) but->pos--;
- }
- }
-
+ ui_textedit_step_utf8(str, len, &but->pos, direction, jump);
if(select) {
/* existing selection */
@@ -1481,69 +1544,43 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction
}
}
-static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, const int all, const int jump)
+static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, uiButtonJumpType jump)
{
char *str= data->str;
const int len= strlen(str);
- int x, changed= 0;
+ int changed= 0;
- if(all) {
+ if(jump == BUTTON_EDIT_JUMP_ALL) {
if(len) changed=1;
- str[0]= 0;
+ str[0]= '\0';
but->pos= 0;
}
else if(direction) { /* delete */
if ((but->selend - but->selsta) > 0) {
changed= ui_textedit_delete_selection(but, data);
}
- else if(but->pos>=0 && but->pos<len) {
+ else if (but->pos>=0 && but->pos<len) {
+ short pos= but->pos;
int step;
-
- if (jump) {
- x = but->pos;
- step= 0;
- while(x < len) {
- x++;
- step++;
- if(test_special_char(str[x])) break;
- }
- }
- else {
- step= 1;
- }
-
- for(x=but->pos; x<len; x++)
- str[x]= str[x+step];
- str[len-step]='\0';
+ ui_textedit_step_utf8(str, len, &pos, direction, jump);
+ step= pos - but->pos;
+ memmove(&str[but->pos], &str[but->pos + step], (len + 1) - but->pos);
changed= 1;
}
}
else { /* backspace */
- if(len!=0) {
+ if (len != 0) {
if ((but->selend - but->selsta) > 0) {
changed= ui_textedit_delete_selection(but, data);
}
else if(but->pos>0) {
+ short pos= but->pos;
int step;
- if (jump) {
- x = but->pos;
- step= 0;
- while(x > 0) {
- x--;
- step++;
- if((step > 1) && test_special_char(str[x])) break;
- }
- }
- else {
- step= 1;
- }
-
- for(x=but->pos; x<len; x++)
- str[x-step]= str[x];
- str[len-step]='\0';
-
+ ui_textedit_step_utf8(str, len, &pos, direction, jump);
+ step= but->pos - pos;
+ memmove(&str[but->pos - step], &str[but->pos], (len + 1) - but->pos);
but->pos -= step;
changed= 1;
}
@@ -1653,19 +1690,9 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
ui_get_but_string(but, data->str, data->maxlen);
if(ELEM3(but->type, NUM, NUMABS, NUMSLI)) {
- /* XXX: we dont have utf editing yet so for numbers its best to strip out utf chars
- * this is so the deg' synbol isnt included in number editing fields: bug 22274 */
- int i;
- for(i=0; data->str[i]; i++) {
- if(!isascii(data->str[i])) {
- /* no stripping actually: just convert to alt name */
- ui_convert_to_unit_alt_name(but, data->str, data->maxlen);
- break;
- }
- }
+ ui_convert_to_unit_alt_name(but, data->str, data->maxlen);
}
-
-
+
data->origstr= BLI_strdup(data->str);
data->selextend= 0;
data->selstartx= 0;
@@ -1690,7 +1717,7 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data)
{
if(but) {
- if(ui_is_utf8_but(but)) {
+ if(ui_is_but_utf8(but)) {
int strip= BLI_utf8_invalid_strip(but->editstr, strlen(but->editstr));
/* not a file?, strip non utf-8 chars */
if(strip) {
@@ -1842,11 +1869,11 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
}
break;
case RIGHTARROWKEY:
- ui_textedit_move(but, data, 1, event->shift, event->ctrl, FALSE);
+ ui_textedit_move(but, data, 1, event->shift, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE);
retval= WM_UI_HANDLER_BREAK;
break;
case LEFTARROWKEY:
- ui_textedit_move(but, data, 0, event->shift, event->ctrl, FALSE);
+ ui_textedit_move(but, data, 0, event->shift, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE);
retval= WM_UI_HANDLER_BREAK;
break;
case DOWNARROWKEY:
@@ -1856,7 +1883,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
}
/* pass on purposedly */
case ENDKEY:
- ui_textedit_move(but, data, 1, event->shift, TRUE, TRUE);
+ ui_textedit_move(but, data, 1, event->shift, BUTTON_EDIT_JUMP_ALL);
retval= WM_UI_HANDLER_BREAK;
break;
case UPARROWKEY:
@@ -1866,7 +1893,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
}
/* pass on purposedly */
case HOMEKEY:
- ui_textedit_move(but, data, 0, event->shift, TRUE, TRUE);
+ ui_textedit_move(but, data, 0, event->shift, BUTTON_EDIT_JUMP_ALL);
retval= WM_UI_HANDLER_BREAK;
break;
case PADENTER:
@@ -1875,12 +1902,12 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
retval= WM_UI_HANDLER_BREAK;
break;
case DELKEY:
- changed= ui_textedit_delete(but, data, 1, 0, event->ctrl);
+ changed= ui_textedit_delete(but, data, 1, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE);
retval= WM_UI_HANDLER_BREAK;
break;
case BACKSPACEKEY:
- changed= ui_textedit_delete(but, data, 0, event->shift, event->ctrl);
+ changed= ui_textedit_delete(but, data, 0, event->shift ? BUTTON_EDIT_JUMP_ALL : (event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE));
retval= WM_UI_HANDLER_BREAK;
break;
@@ -1903,7 +1930,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
break;
}
- if(event->ascii && (retval == WM_UI_HANDLER_CONTINUE)) {
+ if((event->ascii || event->utf8_buf[0]) && (retval == WM_UI_HANDLER_CONTINUE)) {
char ascii = event->ascii;
/* exception that's useful for number buttons, some keyboard
@@ -1912,7 +1939,16 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
if(event->type == PADPERIOD && ascii == ',')
ascii = '.';
- changed= ui_textedit_type_ascii(but, data, ascii);
+ if(event->utf8_buf[0]) {
+ /* keep this printf until utf8 is well tested */
+ printf("%s: utf8 char '%s'\n", __func__, event->utf8_buf);
+ // strcpy(event->utf8_buf, "12345");
+ changed= ui_textedit_type_utf8(but, data, event->utf8_buf);
+ }
+ else {
+ changed= ui_textedit_type_ascii(but, data, ascii);
+ }
+
retval= WM_UI_HANDLER_BREAK;
}
@@ -1966,8 +2002,6 @@ static void ui_do_but_textedit_select(bContext *C, uiBlock *block, uiBut *but, u
static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
{
- float softrange, softmin, softmax;
-
if(but->type == BUT_CURVE) {
but->editcumap= (CurveMapping*)but->poin;
}
@@ -1977,10 +2011,12 @@ static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
}
else if(ELEM3(but->type, BUT_NORMAL, HSVCUBE, HSVCIRCLE)) {
ui_get_but_vectorf(but, data->origvec);
- VECCOPY(data->vec, data->origvec);
+ copy_v3_v3(data->vec, data->origvec);
but->editvec= data->vec;
}
else {
+ float softrange, softmin, softmax;
+
data->startvalue= ui_get_but_val(but);
data->origvalue= data->startvalue;
data->value= data->origvalue;
@@ -3004,6 +3040,9 @@ static int ui_numedit_but_NORMAL(uiBut *but, uiHandleButtonData *data, int mx, i
/* button is presumed square */
/* if mouse moves outside of sphere, it does negative normal */
+ /* note that both data->vec and data->origvec should be normalized
+ * else we'll get a hamrless but annoying jump when first clicking */
+
fp= data->origvec;
rad= (but->x2 - but->x1);
radsq= rad*rad;
@@ -4408,6 +4447,17 @@ static int ui_but_menu(bContext *C, uiBut *but)
}
}
+#ifdef WITH_PYTHON_UI_INFO
+ if (but->py_dbg_ln != -1) {
+ PointerRNA ptr_props;
+
+ WM_operator_properties_create(&ptr_props, "WM_OT_text_edit");
+ RNA_string_set(&ptr_props, "filepath", but->py_dbg_fn);
+ RNA_int_set(&ptr_props, "line", but->py_dbg_ln);
+ uiItemFullO(layout, "WM_OT_text_edit", "Edit Source", ICON_NONE, ptr_props.data, WM_OP_EXEC_DEFAULT, 0);
+ }
+#endif /* WITH_PYTHON_UI_INFO */
+
uiPupMenuEnd(C, pup);
return 1;
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 2127685d74c..84cbc84630c 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -253,6 +253,11 @@ struct uiBut {
/* pointer back */
uiBlock *block;
+
+#ifdef WITH_PYTHON_UI_INFO
+ char py_dbg_fn[240];
+ int py_dbg_ln;
+#endif
};
struct uiBlock {
@@ -351,8 +356,8 @@ extern void ui_window_to_region(const ARegion *ar, int *x, int *y);
extern double ui_get_but_val(uiBut *but);
extern void ui_set_but_val(uiBut *but, double value);
extern void ui_set_but_hsv(uiBut *but);
-extern void ui_get_but_vectorf(uiBut *but, float *vec);
-extern void ui_set_but_vectorf(uiBut *but, float *vec);
+extern void ui_get_but_vectorf(uiBut *but, float vec[3]);
+extern void ui_set_but_vectorf(uiBut *but, const float vec[3]);
extern void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti *rect, float mx, float my);
@@ -369,6 +374,7 @@ extern void ui_check_but(uiBut *but);
extern int ui_is_but_float(uiBut *but);
extern int ui_is_but_unit(uiBut *but);
extern int ui_is_but_rna_valid(uiBut *but);
+extern int ui_is_but_utf8(uiBut *but);
extern void ui_bounds_block(uiBlock *block);
extern void ui_block_translate(uiBlock *block, int x, int y);
diff --git a/source/blender/editors/interface/interface_node.c b/source/blender/editors/interface/interface_node.c
index 80473025c7d..abf12029b23 100644
--- a/source/blender/editors/interface/interface_node.c
+++ b/source/blender/editors/interface/interface_node.c
@@ -256,10 +256,10 @@ static void ui_node_link(bContext *C, void *arg_p, void *event_p)
ui_node_remove_linked(ntree, node_prev);
}
- NodeTagChanged(ntree, node_from);
+ nodeUpdate(ntree, node_from);
}
- NodeTagChanged(ntree, node_to);
+ nodeUpdate(ntree, node_to);
ntreeUpdateTree(ntree);
ED_node_generic_update(CTX_data_main(C), ntree, node_to);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 622d50752fa..028ab05464b 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -368,7 +368,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
/* create tooltip data */
data= MEM_callocN(sizeof(uiTooltipData), "uiTooltipData");
- /* special case, enum rna buttons only have enum item description, use general enum description too before the spesific one */
+ /* special case, enum rna buttons only have enum item description, use general enum description too before the specific one */
if(but->rnaprop && RNA_property_type(but->rnaprop) == PROP_ENUM) {
const char *descr= RNA_property_description(but->rnaprop);
if(descr && descr[0]) {
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index dcbd56c9a27..194dc3efb43 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -38,8 +38,8 @@
#include "DNA_scene_types.h"
#include "DNA_userdef_types.h"
-#include "BLI_string.h"
#include "BLI_utildefines.h"
+#include "BLI_string.h"
#include "BLI_ghash.h"
#include "BKE_animsys.h"
@@ -764,18 +764,28 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
if (mti->flags & eModifierTypeFlag_SupportsEditmode)
uiItemR(row, &ptr, "show_in_editmode", 0, "", ICON_NONE);
}
- if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex))
- {
- /* -- convert to rna ? */
- but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0,
- UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode")));
- if (index < cageIndex)
- uiButSetFlag(but, UI_BUT_DISABLED);
- uiButSetFunc(but, modifiers_setOnCage, ob, md);
- }
- /* tesselation point for curve-typed objects */
- if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
+ if (ob->type==OB_MESH) {
+ if (modifier_couldBeCage(scene, md) && (index <= lastCageIndex))
+ {
+ /* -- convert to rna ? */
+ but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0,
+ UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode")));
+ if (index < cageIndex)
+ uiButSetFlag(but, UI_BUT_DISABLED);
+ uiButSetFunc(but, modifiers_setOnCage, ob, md);
+ }
+ else {
+ uiBlockEndAlign(block);
+
+ /* place holder button */
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+ but= uiDefIconBut(block, BUT, 0, ICON_NONE, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, NULL);
+ uiButSetFlag(but, UI_BUT_DISABLED);
+ uiBlockSetEmboss(block, UI_EMBOSS);
+ }
+ } /* tesselation point for curve-typed objects */
+ else if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
/* some modifiers could work with pre-tesselated curves only */
if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) {
/* add disabled pre-tesselated button, so users could have
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 9b9237f70cf..fd511948bac 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -1151,7 +1151,7 @@ void init_userdef_do_versions(void)
vDM_ColorBand_store((U.flag & USER_CUSTOM_RANGE) ? (&U.coba_weight):NULL);
if (bmain->versionfile <= 191) {
- strcpy(U.plugtexdir, U.textudir);
+ BLI_strncpy(U.plugtexdir, U.textudir, sizeof(U.plugtexdir));
strcpy(U.sounddir, "/");
}
diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c
index 02b5250f67a..8945cac428b 100644
--- a/source/blender/editors/mesh/editmesh_lib.c
+++ b/source/blender/editors/mesh/editmesh_lib.c
@@ -337,7 +337,7 @@ void EM_editselection_normal(float *normal, EditSelection *ese)
}
/* Calculate a plane that is rightangles to the edge/vert/faces normal
-also make the plane run allong an axis that is related to the geometry,
+also make the plane run along an axis that is related to the geometry,
because this is used for the manipulators Y axis.*/
void EM_editselection_plane(float *plane, EditSelection *ese)
{
@@ -345,7 +345,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese)
EditVert *eve= ese->data;
float vec[3]={0,0,0};
- if (ese->prev) { /*use previously selected data to make a usefull vertex plane */
+ if (ese->prev) { /*use previously selected data to make a useful vertex plane */
EM_editselection_center(vec, ese->prev);
sub_v3_v3v3(plane, vec, eve->co);
} else {
@@ -361,7 +361,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese)
} else if (ese->type==EDITEDGE) {
EditEdge *eed= ese->data;
- /*the plane is simple, it runs allong the edge
+ /*the plane is simple, it runs along the edge
however selecting different edges can swap the direction of the y axis.
this makes it less likely for the y axis of the manipulator
(running along the edge).. to flip less often.
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 526bf177ab7..e6836d7d5aa 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -957,7 +957,7 @@ long mesh_mirrtopo_table(Object *ob, char mode)
}
} else {
for(a=0, medge=me->medge; a<me->totedge; a++, medge++) {
- /* This can make realy big numbers, wrapping around here is fine */
+ /* This can make really big numbers, wrapping around here is fine */
MirrTopoHash[medge->v1] += MirrTopoHash_Prev[medge->v2];
MirrTopoHash[medge->v2] += MirrTopoHash_Prev[medge->v1];
}
diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index 6c553289052..ec7c6cc6108 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -245,7 +245,7 @@ static void set_constraint_nth_target (bConstraint *con, Object *target, const c
for (ct=targets.first, i=0; ct; ct= ct->next, i++) {
if (i == index) {
ct->tar= target;
- strcpy(ct->subtarget, subtarget);
+ BLI_strncpy(ct->subtarget, subtarget, sizeof(ct->subtarget));
break;
}
}
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index fa0c75a0707..58b678403eb 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -587,7 +587,7 @@ void OBJECT_OT_posemode_toggle(wmOperatorType *ot)
/* identifiers */
ot->name= "Toggle Pose Mode";
ot->idname= "OBJECT_OT_posemode_toggle";
- ot->description= "Enables or disables posing/selecting bones";
+ ot->description= "Enable or disable posing/selecting bones";
/* api callbacks */
ot->exec= posemode_exec;
diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c
index ce01bef34f6..9f1ad8e4c3c 100644
--- a/source/blender/editors/object/object_hook.c
+++ b/source/blender/editors/object/object_hook.c
@@ -837,7 +837,7 @@ void OBJECT_OT_hook_select(wmOperatorType *ot)
/* identifiers */
ot->name= "Select Hook";
- ot->description= "Selects effected vertices on mesh";
+ ot->description= "Select affected vertices on mesh";
ot->idname= "OBJECT_OT_hook_select";
/* callbacks */
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index ebbc4137628..20ca50581bf 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -1163,9 +1163,6 @@ static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *U
if(CustomData_external_test(&me->fdata, CD_MDISPS))
return OPERATOR_CANCELLED;
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath"))
return multires_external_save_exec(C, op);
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 389c0941cc2..49a71018719 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -334,11 +334,9 @@ static int make_proxy_exec (bContext *C, wmOperator *op)
/* Add new object for the proxy */
newob= add_object(scene, OB_EMPTY);
- if (gob)
- strcpy(name, gob->id.name+2);
- else
- strcpy(name, ob->id.name+2);
- strcat(name, "_proxy");
+
+ BLI_snprintf(name, sizeof(name), "%s_proxy", ((ID *)(gob ? gob : ob))->name);
+
rename_id(&newob->id, name);
/* set layers OK */
@@ -605,7 +603,7 @@ static int parent_set_exec(bContext *C, wmOperator *op)
/* handle types */
if (pchan)
- strcpy(ob->parsubstr, pchan->name);
+ BLI_strncpy(ob->parsubstr, pchan->name, sizeof(ob->parsubstr));
else
ob->parsubstr[0]= 0;
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index 7b4db347315..c1b21865504 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -669,7 +669,7 @@ static void vgroup_duplicate(Object *ob)
}
cdg = defgroup_duplicate(dg);
- strcpy(cdg->name, name);
+ BLI_strncpy(cdg->name, name, sizeof(cdg->name));
defgroup_unique_name(cdg, ob);
BLI_addtail(&ob->defbase, cdg);
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c
index 019d6df9b73..740fd5137de 100644
--- a/source/blender/editors/physics/particle_edit.c
+++ b/source/blender/editors/physics/particle_edit.c
@@ -2970,7 +2970,7 @@ static void brush_puff(PEData *data, int point_index)
VECSUB(dco, lastco, co);
mul_mat3_m4_v3(imat, dco); /* into particle space */
- /* move the point allong a vector perpendicular to the
+ /* move the point along a vector perpendicular to the
* hairs direction, reduces odd kinks, */
cross_v3_v3v3(c1, ofs, dco);
cross_v3_v3v3(c2, c1, dco);
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 0b350e3afd0..d80f3fef125 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -398,13 +398,13 @@ static void render_endjob(void *rjv)
ED_update_for_newframe(G.main, rj->scene, rj->win->screen, 1);
/* XXX above function sets all tags in nodes */
- ntreeClearTags(rj->scene->nodetree);
+ ntreeCompositClearTags(rj->scene->nodetree);
/* potentially set by caller */
rj->scene->r.scemode &= ~R_NO_FRAME_UPDATE;
if(rj->srl) {
- NodeTagIDChanged(rj->scene->nodetree, &rj->scene->id);
+ nodeUpdateID(rj->scene->nodetree, &rj->scene->id);
WM_main_add_notifier(NC_NODE|NA_EDITED, rj->scene);
}
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 638f62435f7..7b0a056bb53 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -262,7 +262,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre
sce->r.alphamode= R_ADDSKY;
sce->r.cfra= scene->r.cfra;
- strcpy(sce->r.engine, scene->r.engine);
+ BLI_strncpy(sce->r.engine, scene->r.engine, sizeof(sce->r.engine));
if(id_type==ID_MA) {
Material *mat= NULL, *origmat= (Material *)id;
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 4ae5f8bdde4..54ac626ed5c 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -728,9 +728,6 @@ static int envmap_save_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event
{
//Scene *scene= CTX_data_scene(C);
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath"))
return envmap_save_exec(C, op);
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index a2be1e8fa6f..bae6fa9d6b0 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -649,7 +649,7 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot)
ot->flag= OPTYPE_BLOCKING;
- RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2);
+ RNA_def_int(ot->srna, "modifier", 0, 0, 2, "Modifier", "Modifier state", 0, 2);
}
/* ************** swap area operator *********************************** */
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index 3010adafe20..27c311aa04f 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -157,7 +157,7 @@ static int screenshot_exec(bContext *C, wmOperator *op)
RNA_string_get(op->ptr, "filepath", path);
- strcpy(G.ima, path);
+ BLI_strncpy(G.ima, path, sizeof(G.ima));
BLI_path_abs(path, G.main->name);
/* BKE_add_image_extension() checks for if extension was already set */
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 9e12aa64065..b7c861c703d 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -403,7 +403,7 @@ static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int
*tmpibuf = IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat|IB_rect);
tile= MEM_callocN(sizeof(UndoImageTile), "UndoImageTile");
- strcpy(tile->idname, ima->id.name);
+ BLI_strncpy(tile->idname, ima->id.name, sizeof(tile->idname));
tile->x= x_tile;
tile->y= y_tile;
@@ -411,7 +411,7 @@ static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int
allocsize *= (ibuf->rect_float)? sizeof(float): sizeof(char);
tile->rect= MEM_mapallocN(allocsize, "UndeImageTile.rect");
- strcpy(tile->ibufname, ibuf->name);
+ BLI_strncpy(tile->ibufname, ibuf->name, sizeof(tile->ibufname));
tile->gen_type= ima->gen_type;
tile->source= ima->source;
@@ -3429,7 +3429,7 @@ static void project_paint_end(ProjPaintState *ps)
}
/* This is a BIT ODD, but overwrite the undo tiles image info with this pixels original color
- * because allocating the tiles allong the way slows down painting */
+ * because allocating the tiles along the way slows down painting */
if (is_float) {
float *rgba_fp = (float *)tilerect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4;
@@ -4008,7 +4008,7 @@ static int project_paint_op(void *state, ImBuf *UNUSED(ibufb), float *lastpos, f
copy_v2_v2(handles[a].mval, pos);
copy_v2_v2(handles[a].prevmval, lastpos);
- /* thread spesific */
+ /* thread specific */
handles[a].thread_index = a;
handles[a].projImages = (ProjPaintImage *)BLI_memarena_alloc(ps->arena_mt[a], ps->image_tot * sizeof(ProjPaintImage));
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index cf90c43f3e1..87411b97061 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1619,7 +1619,7 @@ static void do_weight_paint_vertex( /* vars which remain the same for every vert
}
}
- /* important to normalize after mirror, otherwise mirror gets wight
+ /* important to normalize after mirror, otherwise mirror gets weight
* which has already been scaled down in relation to other weights,
* then scales a second time [#26193]. Tricky multi-paint code doesn't
* suffer from this problem - campbell */
diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c
index 13b6fef3004..7656e51d241 100644
--- a/source/blender/editors/sculpt_paint/sculpt_undo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_undo.c
@@ -39,6 +39,8 @@
#include "BLI_math.h"
#include "BLI_utildefines.h"
+#include "BLI_string.h"
+#include "BLI_listbase.h"
#include "BLI_ghash.h"
#include "BLI_threads.h"
@@ -262,7 +264,7 @@ SculptUndoNode *sculpt_undo_push_node(Object *ob, PBVHNode *node)
}
unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode");
- strcpy(unode->idname, ob->id.name);
+ BLI_strncpy(unode->idname, ob->id.name, sizeof(unode->idname));
unode->node= node;
BLI_pbvh_node_num_verts(ss->pbvh, node, &totvert, &allvert);
diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c
index d03c2b19300..50dda49bead 100644
--- a/source/blender/editors/sound/sound_ops.c
+++ b/source/blender/editors/sound/sound_ops.c
@@ -164,9 +164,6 @@ static int open_exec(bContext *UNUSED(C), wmOperator *op)
static int open_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath"))
return open_exec(C, op);
@@ -264,9 +261,6 @@ static int mixdown_exec(bContext *C, wmOperator *op)
static int mixdown_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath"))
return mixdown_exec(C, op);
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index a05053a2d9d..7bf0f98b471 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -246,20 +246,32 @@ static void get_keyframe_extents (bAnimContext *ac, float *min, float *max, cons
/* go through channels, finding max extents */
for (ale= anim_data.first; ale; ale= ale->next) {
AnimData *adt= ANIM_nla_mapping_get(ac, ale);
- FCurve *fcu= (FCurve *)ale->key_data;
- float tmin, tmax;
-
- /* get range and apply necessary scaling before processing */
- calc_fcurve_range(fcu, &tmin, &tmax, onlySel);
-
- if (adt) {
- tmin= BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
- tmax= BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
+ if (ale->datatype == ALE_GPFRAME) {
+ bGPDlayer *gpl= ale->data;
+ bGPDframe *gpf;
+
+ /* find gp-frame which is less than or equal to cframe */
+ for (gpf= gpl->frames.first; gpf; gpf= gpf->next) {
+ *min= MIN2(*min, gpf->framenum);
+ *max= MAX2(*max, gpf->framenum);
+ }
+ }
+ else {
+ FCurve *fcu= (FCurve *)ale->key_data;
+ float tmin, tmax;
+
+ /* get range and apply necessary scaling before processing */
+ calc_fcurve_range(fcu, &tmin, &tmax, onlySel);
+
+ if (adt) {
+ tmin= BKE_nla_tweakedit_remap(adt, tmin, NLATIME_CONVERT_MAP);
+ tmax= BKE_nla_tweakedit_remap(adt, tmax, NLATIME_CONVERT_MAP);
+ }
+
+ /* try to set cur using these values, if they're more extreme than previously set values */
+ *min= MIN2(*min, tmin);
+ *max= MAX2(*max, tmax);
}
-
- /* try to set cur using these values, if they're more extreme than previously set values */
- *min= MIN2(*min, tmin);
- *max= MAX2(*max, tmax);
}
/* free memory */
diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c
index 99e5c6d693e..75b3eb950a5 100644
--- a/source/blender/editors/space_buttons/buttons_ops.c
+++ b/source/blender/editors/space_buttons/buttons_ops.c
@@ -201,6 +201,8 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_string_set(op->ptr, path_prop, str);
MEM_freeN(str);
+ /* normally ED_fileselect_get_params would handle this but we need to because of stupid
+ * user-prefs exception - campbell */
if(RNA_struct_find_property(op->ptr, "relative_path")) {
if(!RNA_property_is_set(op->ptr, "relative_path")) {
/* annoying exception!, if were dealign with the user prefs, default relative to be off */
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 611bf79603e..85edcce35ca 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -181,7 +181,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
but = uiDefButTextO(block, TEX, "FILE_OT_directory", 0, "",
min_x, line1_y, line1_w-chan_offs, btn_h,
- params->dir, 0.0, (float)FILE_MAX-1, 0, 0,
+ params->dir, 0.0, (float)FILE_MAX, 0, 0,
UI_translate_do_tooltip(N_("File path")));
uiButSetCompleteFunc(but, autocomplete_directory, NULL);
uiButSetFlag(but, UI_BUT_NO_UTF8);
@@ -189,7 +189,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
if((params->flag & FILE_DIRSEL_ONLY) == 0) {
but = uiDefBut(block, TEX, B_FS_FILENAME, "",
min_x, line2_y, line2_w-chan_offs, btn_h,
- params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0,
+ params->file, 0.0, (float)FILE_MAXFILE, 0, 0,
UI_translate_do_tooltip(overwrite_alert ?N_("File name, overwrite existing") : N_("File name")));
uiButSetCompleteFunc(but, autocomplete_file, NULL);
uiButSetFlag(but, UI_BUT_NO_UTF8);
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 0955d264ca8..559873bd601 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -666,7 +666,7 @@ void file_operator_to_sfile(SpaceFile *sfile, wmOperator *op)
if((prop= RNA_struct_find_property(op->ptr, "filepath"))) {
char filepath[FILE_MAX];
RNA_property_string_get(op->ptr, prop, filepath);
- BLI_split_dirfile(filepath, sfile->params->dir, sfile->params->file);
+ BLI_split_dirfile(filepath, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file));
}
else {
if((prop= RNA_struct_find_property(op->ptr, "filename"))) {
@@ -1143,7 +1143,7 @@ int file_directory_exec(bContext *C, wmOperator *UNUSED(unused))
if(BLI_exists(sfile->params->dir) && BLI_is_dir(sfile->params->dir) == 0) {
char path[sizeof(sfile->params->dir)];
BLI_strncpy(path, sfile->params->dir, sizeof(path));
- BLI_split_dirfile(path, sfile->params->dir, sfile->params->file);
+ BLI_split_dirfile(path, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file));
}
BLI_cleanup_dir(G.main->name, sfile->params->dir);
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index c2e45c5ad8a..b478976d027 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -736,7 +736,7 @@ static int file_is_blend_backup(const char *str)
}
-static int file_extension_type(char *relname)
+static int file_extension_type(const char *relname)
{
if(BLO_has_bfile_extension(relname)) {
return BLENDERFILE;
@@ -769,7 +769,7 @@ static int file_extension_type(char *relname)
return 0;
}
-int ED_file_extension_icon(char *relname)
+int ED_file_extension_icon(const char *relname)
{
int type= file_extension_type(relname);
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index e3571886cf4..f36145aaba0 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -113,7 +113,7 @@ short ED_fileselect_set_params(SpaceFile *sfile)
if (!sfile->params) {
sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams");
/* set path to most recently opened .blend */
- BLI_split_dirfile(G.main->name, sfile->params->dir, sfile->params->file);
+ BLI_split_dirfile(G.main->name, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file));
sfile->params->filter_glob[0] = '\0';
}
@@ -125,6 +125,7 @@ short ED_fileselect_set_params(SpaceFile *sfile)
const short is_filepath= (RNA_struct_find_property(op->ptr, "filepath") != NULL);
const short is_filename= (RNA_struct_find_property(op->ptr, "filename") != NULL);
const short is_directory= (RNA_struct_find_property(op->ptr, "directory") != NULL);
+ const short is_relative_path= (RNA_struct_find_property(op->ptr, "relative_path") != NULL);
BLI_strncpy(params->title, op->type->name, sizeof(params->title));
@@ -141,7 +142,7 @@ short ED_fileselect_set_params(SpaceFile *sfile)
sfile->params->file[0]= '\0';
}
else {
- BLI_split_dirfile(name, sfile->params->dir, sfile->params->file);
+ BLI_split_dirfile(name, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file));
}
}
else {
@@ -228,6 +229,11 @@ short ED_fileselect_set_params(SpaceFile *sfile)
params->display= FILE_SHORTDISPLAY;
}
+ if (is_relative_path) {
+ if (!RNA_property_is_set(op->ptr, "relative_path")) {
+ RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
+ }
+ }
}
else {
/* default values, if no operator */
@@ -607,7 +613,7 @@ void autocomplete_directory(struct bContext *C, char *str, void *UNUSED(arg_v))
DIR *dir;
struct dirent *de;
- BLI_split_dirfile(str, dirname, NULL);
+ BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0);
dir = opendir(dirname);
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c
index aa2ea124fe0..bd9a38ab27e 100644
--- a/source/blender/editors/space_file/fsmenu.c
+++ b/source/blender/editors/space_file/fsmenu.c
@@ -44,7 +44,6 @@
#include "BLI_blenlib.h"
#include "BLI_linklist.h"
#include "BLI_dynstr.h"
-#include "BLI_string.h"
#ifdef WIN32
#include <windows.h> /* need to include windows.h so _WIN32_IE is defined */
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index dc5e71f0406..37e6c0b73c9 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -340,7 +340,7 @@ static void draw_fcurve_handles (SpaceIpo *sipo, FCurve *fcu)
int sel, b;
/* a single call to GL_LINES here around these calls should be sufficient to still
- * get separate line segments, but which aren't wrapped with GL_LINE_STRIP everytime we
+ * get separate line segments, but which aren't wrapped with GL_LINE_STRIP every time we
* want a single line
*/
glBegin(GL_LINES);
diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c
index 71d9dd3adcb..beeb5e3532f 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -704,8 +704,8 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, const char
sprintf(str, "(%d) Frames:", iuser->framenr);
else strcpy(str, "Frames:");
uiBlockBeginAlign(block);
- uiDefButI(block, NUM, imagechanged, str, 10, 90,150, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Sets the number of images of a movie to use");
- uiDefButI(block, NUM, imagechanged, "StartFr:", 160,90,150,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Sets the global starting frame of the movie");
+ uiDefButI(block, NUM, imagechanged, str, 10, 90,150, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Number of images of a movie to use");
+ uiDefButI(block, NUM, imagechanged, "StartFr:", 160,90,150,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Global starting frame of the movie");
}
#endif
}
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 33c3ae45a58..725b5f5c02d 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -843,10 +843,6 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
if(ima)
path= ima->name;
-
-
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
if(RNA_property_is_set(op->ptr, "filepath"))
return open_exec(C, op);
@@ -1167,9 +1163,6 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
Scene *scene= CTX_data_scene(C);
SaveImageOptions simopts;
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath"))
return save_as_exec(C, op);
diff --git a/source/blender/editors/space_info/info_report.c b/source/blender/editors/space_info/info_report.c
index d0a80cddf56..52930626964 100644
--- a/source/blender/editors/space_info/info_report.c
+++ b/source/blender/editors/space_info/info_report.c
@@ -160,7 +160,7 @@ void INFO_OT_select_pick(wmOperatorType *ot)
/* ot->flag= OPTYPE_REGISTER; */
/* properties */
- RNA_def_int(ot->srna, "report_index", 0, 0, INT_MAX, "Report", "The index of the report", 0, INT_MAX);
+ RNA_def_int(ot->srna, "report_index", 0, 0, INT_MAX, "Report", "Index of the report", 0, INT_MAX);
}
diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c
index b7f9af09348..b1c0dd02e4b 100644
--- a/source/blender/editors/space_logic/logic_ops.c
+++ b/source/blender/editors/space_logic/logic_ops.c
@@ -478,7 +478,7 @@ static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(e
static void LOGIC_OT_actuator_remove(wmOperatorType *ot)
{
ot->name= "Remove Actuator";
- ot->description= "Remove a actuator from the active object";
+ ot->description= "Remove an actuator from the active object";
ot->idname= "LOGIC_OT_actuator_remove";
ot->invoke= actuator_remove_invoke;
@@ -533,7 +533,7 @@ static void LOGIC_OT_actuator_add(wmOperatorType *ot)
/* identifiers */
ot->name= "Add Actuator";
- ot->description = "Add a actuator to the active object";
+ ot->description = "Add an actuator to the active object";
ot->idname= "LOGIC_OT_actuator_add";
/* api callbacks */
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 35f0cc29f96..78a0f87bf87 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -110,12 +110,12 @@ void ED_node_changed_update(ID *id, bNode *node)
WM_main_add_notifier(NC_WORLD|ND_WORLD_DRAW, id);
}
else if(treetype==NTREE_COMPOSIT) {
- NodeTagChanged(edittree, node);
+ nodeUpdate(edittree, node);
/* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */
node= node_tree_get_editgroup(nodetree);
if(node)
- NodeTagIDChanged(nodetree, node->id);
+ nodeUpdateID(nodetree, node->id);
WM_main_add_notifier(NC_SCENE|ND_NODES, id);
}
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 82b3da675ba..10c5ca7ee1a 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -556,17 +556,17 @@ void snode_set_context(SpaceNode *snode, Scene *scene)
node_tree_from_ID(snode->id, &snode->nodetree, &snode->edittree, NULL);
}
-static void snode_tag_changed(SpaceNode *snode, bNode *node)
+static void snode_update(SpaceNode *snode, bNode *node)
{
bNode *gnode;
if (node)
- NodeTagChanged(snode->edittree, node);
+ nodeUpdate(snode->edittree, node);
/* if inside group, tag entire group */
gnode= node_tree_get_editgroup(snode->nodetree);
if(gnode)
- NodeTagIDChanged(snode->nodetree, gnode->id);
+ nodeUpdateID(snode->nodetree, gnode->id);
}
static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
@@ -1846,7 +1846,7 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode)
link->fromsock= sock;
}
ntreeUpdateTree(snode->edittree);
- snode_tag_changed(snode, node);
+ snode_update(snode, node);
}
}
}
@@ -2198,7 +2198,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace)
continue;
}
- snode_tag_changed(snode, node_to);
+ snode_update(snode, node_to);
++numlinks;
break;
}
@@ -2246,7 +2246,7 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate
if(node->id)
id_us_plus(node->id);
- snode_tag_changed(snode, node);
+ snode_update(snode, node);
}
if(snode->nodetree->type==NTREE_TEXTURE) {
@@ -2483,7 +2483,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event)
case MIDDLEMOUSE:
if(link->tosock && link->fromsock) {
/* send changed events for original tonode and new */
- snode_tag_changed(snode, link->tonode);
+ snode_update(snode, link->tonode);
/* we might need to remove a link */
if(in_out==SOCK_OUT)
@@ -2566,7 +2566,7 @@ static int node_link_init(SpaceNode *snode, bNodeLinkDrag *nldrag)
if(link) {
/* send changed event to original tonode */
if(link->tonode)
- snode_tag_changed(snode, link->tonode);
+ snode_update(snode, link->tonode);
nldrag->node= link->fromnode;
nldrag->sock= link->fromsock;
@@ -2734,7 +2734,7 @@ static int cut_links_exec(bContext *C, wmOperator *op)
next= link->next;
if(cut_links_intersect(link, mcoords, i)) {
- snode_tag_changed(snode, link->tonode);
+ snode_update(snode, link->tonode);
nodeRemLink(snode->edittree, link);
}
}
@@ -2865,7 +2865,7 @@ void ED_node_link_insert(ScrArea *sa)
nodeAddLink(snode->edittree, select, socket_best_match(&select->outputs, sockto->type), node, sockto);
ntreeUpdateTree(snode->edittree); /* needed for pointers */
- snode_tag_changed(snode, select);
+ snode_update(snode, select);
ED_node_changed_update(snode->id, select);
}
}
@@ -3269,7 +3269,7 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op))
/* Be able to mute in-/output nodes as well. - DingTo
if(node->inputs.first && node->outputs.first) { */
node->flag ^= NODE_MUTED;
- snode_tag_changed(snode, node);
+ snode_update(snode, node);
}
}
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index a17b58a80d8..f2d5efa0957 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -252,10 +252,10 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn)
if(type==NTREE_COMPOSIT) {
Scene *scene= wmn->window->screen->scene;
- /* note that NodeTagIDChanged is already called by BKE_image_signal() on all
+ /* note that nodeUpdateID is already called by BKE_image_signal() on all
* scenes so really this is just to know if the images is used in the compo else
* painting on images could become very slow when the compositor is open. */
- if(NodeTagIDChanged(scene->nodetree, wmn->reference))
+ if(nodeUpdateID(scene->nodetree, wmn->reference))
ED_area_tag_refresh(sa);
}
}
diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c
index 6bfe370d105..1d1abf80fe4 100644
--- a/source/blender/editors/space_outliner/outliner_edit.c
+++ b/source/blender/editors/space_outliner/outliner_edit.c
@@ -947,7 +947,7 @@ void OUTLINER_OT_show_hierarchy(wmOperatorType *ot)
/* ANIMATO OPERATIONS */
/* KeyingSet and Driver Creation - Helper functions */
-/* specialised poll callback for these operators to work in Datablocks view only */
+/* specialized poll callback for these operators to work in Datablocks view only */
static int ed_operator_outliner_datablocks_active(bContext *C)
{
ScrArea *sa= CTX_wm_area(C);
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index b390b7dbdb5..7e4d02036ef 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -235,7 +235,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
strip->stripdata= MEM_callocN(seq->len*sizeof(StripElem), "stripelem");
- strcpy(seq->name+2, sce_seq->id.name+2);
+ BLI_strncpy(seq->name+2, sce_seq->id.name+2, sizeof(seq->name)-2);
seqbase_unique_name_recursive(&ed->seqbase, seq);
seq->scene_sound = sound_scene_add_scene_sound(scene, seq, start_frame, start_frame + strip->len, 0);
@@ -321,7 +321,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad
char dir_only[FILE_MAX];
char file_only[FILE_MAX];
- BLI_split_dirfile(seq_load.path, dir_only, NULL);
+ BLI_split_dirfile(seq_load.path, dir_only, NULL, sizeof(dir_only), 0);
RNA_BEGIN(op->ptr, itemptr, "files") {
RNA_string_get(&itemptr, "name", file_only);
@@ -380,9 +380,6 @@ static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent
sequencer_generic_invoke_xy__internal(C, op, event, 0);
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
WM_event_add_fileselect(C, op);
return OPERATOR_RUNNING_MODAL;
@@ -434,10 +431,7 @@ static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent
}
sequencer_generic_invoke_xy__internal(C, op, event, 0);
-
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
+
WM_event_add_fileselect(C, op);
return OPERATOR_RUNNING_MODAL;
@@ -543,9 +537,6 @@ static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent
}
sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME);
-
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
WM_event_add_fileselect(C, op);
return OPERATOR_RUNNING_MODAL;
@@ -721,10 +712,6 @@ static int sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, wmEven
sequencer_generic_invoke_xy__internal(C, op, event, prop_flag);
if (is_type_set && type==SEQ_PLUGIN) {
-
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
/* only plugins need the file selector */
return WM_operator_filesel(C, op, event);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 0f5398f24a7..13e54c9a4c0 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -187,8 +187,14 @@ static void drawseqwave(Scene *scene, Sequence *seq, float x1, float y1, float x
if(!seq->sound->waveform)
sound_read_waveform(seq->sound);
+ if(!seq->sound->waveform)
+ return; /* zero length sound */
+
waveform = seq->sound->waveform;
+ if(!waveform)
+ return;
+
startsample = floor((seq->startofs + seq->anim_startofs)/FPS * SOUND_WAVE_SAMPLES_PER_SECOND);
endsample = ceil((seq->startofs + seq->anim_startofs + seq->enddisp - seq->startdisp)/FPS * SOUND_WAVE_SAMPLES_PER_SECOND);
samplestep = (endsample-startsample) * stepsize / (x2-x1);
@@ -508,47 +514,48 @@ static void draw_seq_text(View2D *v2d, Sequence *seq, float x1, float x2, float
char str[32 + FILE_MAXDIR+FILE_MAXFILE];
const char *name= seq->name+2;
char col[4];
-
+
+ /* note, all strings should include 'name' */
if(name[0]=='\0')
name= give_seqname(seq);
if(seq->type == SEQ_META || seq->type == SEQ_ADJUSTMENT) {
- sprintf(str, "%d | %s", seq->len, name);
+ BLI_snprintf(str, sizeof(str), "%d | %s", seq->len, name);
}
else if(seq->type == SEQ_SCENE) {
if(seq->scene) {
if(seq->scene_camera) {
- sprintf(str, "%d | %s: %s (%s)", seq->len, name, seq->scene->id.name+2, ((ID *)seq->scene_camera)->name+2);
+ BLI_snprintf(str, sizeof(str), "%d | %s: %s (%s)", seq->len, name, seq->scene->id.name+2, ((ID *)seq->scene_camera)->name+2);
} else {
- sprintf(str, "%d | %s: %s", seq->len, name, seq->scene->id.name+2);
+ BLI_snprintf(str, sizeof(str), "%d | %s: %s", seq->len, name, seq->scene->id.name+2);
}
}
else {
- sprintf(str, "%d | %s", seq->len, name);
+ BLI_snprintf(str, sizeof(str), "%d | %s", seq->len, name);
}
}
else if(seq->type == SEQ_MULTICAM) {
- sprintf(str, "Cam: %d", seq->multicam_source);
+ BLI_snprintf(str, sizeof(str), "Cam | %s: %d", name, seq->multicam_source);
}
else if(seq->type == SEQ_IMAGE) {
- sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name);
+ BLI_snprintf(str, sizeof(str), "%d | %s: %s%s", seq->len, name, seq->strip->dir, seq->strip->stripdata->name);
}
else if(seq->type & SEQ_EFFECT) {
int can_float = (seq->type != SEQ_PLUGIN)
|| (seq->plugin && seq->plugin->version >= 4);
if(seq->seq3!=seq->seq2 && seq->seq1!=seq->seq3)
- sprintf(str, "%d | %s: %d>%d (use %d)%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, seq->seq3->machine, can_float ? "" : " No float, upgrade plugin!");
+ BLI_snprintf(str, sizeof(str), "%d | %s: %d>%d (use %d)%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, seq->seq3->machine, can_float ? "" : " No float, upgrade plugin!");
else if (seq->seq1 && seq->seq2)
- sprintf(str, "%d | %s: %d>%d%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, can_float ? "" : " No float, upgrade plugin!");
+ BLI_snprintf(str, sizeof(str), "%d | %s: %d>%d%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, can_float ? "" : " No float, upgrade plugin!");
else
- sprintf(str, "%d | %s", seq->len, name);
+ BLI_snprintf(str, sizeof(str), "%d | %s", seq->len, name);
}
else if (seq->type == SEQ_SOUND) {
- sprintf(str, "%d | %s", seq->len, seq->sound->name);
+ BLI_snprintf(str, sizeof(str), "%d | %s: %s", seq->len, name, seq->sound->name);
}
else if (seq->type == SEQ_MOVIE) {
- sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name);
+ BLI_snprintf(str, sizeof(str), "%d | %s: %s%s", seq->len, name, seq->strip->dir, seq->strip->stripdata->name);
}
if(seq->flag & SELECT){
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index bd93a1270f6..33d2a27f789 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -929,11 +929,11 @@ static void UNUSED_FUNCTION(seq_remap_paths)(Scene *scene)
if(last_seq==NULL)
return;
- BLI_strncpy(from, last_seq->strip->dir, FILE_MAX);
+ BLI_strncpy(from, last_seq->strip->dir, sizeof(from));
// XXX if (0==sbutton(from, 0, sizeof(from)-1, "From: "))
// return;
- strcpy(to, from);
+ BLI_strncpy(to, from, sizeof(to));
// XXX if (0==sbutton(to, 0, sizeof(to)-1, "To: "))
// return;
@@ -2961,9 +2961,11 @@ void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot)
static int sequencer_change_path_exec(bContext *C, wmOperator *op)
{
+ Main *bmain= CTX_data_main(C);
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq= seq_active_get(scene);
+ const int is_relative_path= RNA_boolean_get(op->ptr, "relative_path");
if(seq->type == SEQ_IMAGE) {
char directory[FILE_MAX];
@@ -2974,6 +2976,12 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
RNA_string_get(op->ptr, "directory", directory);
+ if (is_relative_path) {
+ /* TODO, shouldn't this already be relative from the filesel?
+ * (as the 'filepath' is) for now just make relative here,
+ * but look into changing after 2.60 - campbell */
+ BLI_path_rel(directory, bmain->name);
+ }
BLI_strncpy(seq->strip->dir, directory, sizeof(seq->strip->dir));
if(seq->strip->stripdata) {
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index 7e718dc176a..53a520a355d 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -530,7 +530,7 @@ void SEQUENCER_OT_select(wmOperatorType *ot)
-/* run recursivly to select linked */
+/* run recursively to select linked */
static int select_more_less_seq__internal(Scene *scene, int sel, int linked)
{
Editing *ed= seq_give_editing(scene, FALSE);
diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c
index 5c2013ee863..45908801147 100644
--- a/source/blender/editors/space_sequencer/space_sequencer.c
+++ b/source/blender/editors/space_sequencer/space_sequencer.c
@@ -362,7 +362,7 @@ static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop)
PointerRNA itemptr;
char dir[FILE_MAX], file[FILE_MAX];
- BLI_split_dirfile(drag->path, dir, file);
+ BLI_split_dirfile(drag->path, dir, file, sizeof(dir), sizeof(file));
RNA_string_set(drop->ptr, "directory", dir);
diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c
index 47f051e1ec4..51f4f1e579c 100644
--- a/source/blender/editors/space_text/space_text.c
+++ b/source/blender/editors/space_text/space_text.c
@@ -136,7 +136,12 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn)
switch(wmn->data) {
case ND_DISPLAY:
+ ED_area_tag_redraw(sa);
+ break;
case ND_CURSOR:
+ if(st->text && st->text == wmn->reference)
+ text_scroll_to_cursor(st, sa);
+
ED_area_tag_redraw(sa);
break;
}
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 8d40550961f..242bccd2376 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -2583,6 +2583,9 @@ static int set_selection_invoke(bContext *C, wmOperator *op, wmEvent *event)
SpaceText *st= CTX_wm_space_text(C);
SetSelection *ssel;
+ if(event->mval[0]>=st->txtbar.xmin)
+ return OPERATOR_PASS_THROUGH;
+
op->customdata= MEM_callocN(sizeof(SetSelection), "SetCursor");
ssel= op->customdata;
ssel->selecting= RNA_boolean_get(op->ptr, "select");
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index 83a695ba72a..eed86467eaa 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -1839,7 +1839,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
}
/* wire draw over solid only in posemode */
- if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || (arm->drawtype==ARM_LINE)) {
+ if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
/* draw line check first. we do selection indices */
if ELEM(arm->drawtype, ARM_LINE, ARM_WIRE) {
if (arm->flag & ARM_POSEMODE)
@@ -2512,7 +2512,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in
if(v3d->flag2 & V3D_RENDER_OVERRIDE)
return 1;
- if(dt>OB_WIRE && arm->drawtype!=ARM_LINE) {
+ if(dt>OB_WIRE && !ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
/* we use color for solid lighting */
glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR);
glEnable(GL_COLOR_MATERIAL);
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 5521460ac14..c095259b93d 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -768,7 +768,7 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa
else glDepthMask(0);
for(vos= strings->first; vos; vos= vos->next) {
-#if 0 // too slow, reading opengl info while drawing is very bad, better to see if we cn use the zbuffer while in pixel space - campbell
+#if 0 // too slow, reading opengl info while drawing is very bad, better to see if we can use the zbuffer while in pixel space - campbell
if(v3d->zbuf && (vos->flag & V3D_CACHE_TEXT_ZBUF)) {
gluProject(vos->vec[0], vos->vec[1], vos->vec[2], mats.modelview, mats.projection, (GLint *)mats.viewport, &ux, &uy, &uz);
glReadPixels(ar->winrct.xmin+vos->mval[0]+vos->xoffs, ar->winrct.ymin+vos->mval[1], 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth);
@@ -6727,7 +6727,10 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
}
else {
Mesh *me= ob->data;
- if(me->editflag & ME_EDIT_VERT_SEL) {
+ if( (me->editflag & ME_EDIT_VERT_SEL) &&
+ /* currently vertex select only supports weight paint */
+ (ob->mode & OB_MODE_WEIGHT_PAINT))
+ {
DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask);
glColor3ub(0, 0, 0);
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 0854f9f3685..115b3756029 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -450,7 +450,7 @@ static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event)
sub_v3_v3v3(my_pivot, rv3d->ofs, upvec);
negate_v3(my_pivot); /* ofs is flipped */
- /* find a new ofs value that is allong the view axis (rather than the mouse location) */
+ /* find a new ofs value that is along the view axis (rather than the mouse location) */
closest_to_line_v3(dvec, vod->dyn_ofs, my_pivot, my_origin);
vod->dist0 = rv3d->dist = len_v3v3(my_pivot, dvec);
diff --git a/source/blender/editors/space_view3d/view3d_fly.c b/source/blender/editors/space_view3d/view3d_fly.c
index 02a6cee5140..b66440738b2 100644
--- a/source/blender/editors/space_view3d/view3d_fly.c
+++ b/source/blender/editors/space_view3d/view3d_fly.c
@@ -179,7 +179,7 @@ typedef struct FlyInfo {
/* fly state state */
float speed; /* the speed the view is moving per redraw */
- short axis; /* Axis index to move allong by default Z to move allong the view */
+ short axis; /* Axis index to move along by default Z to move along the view */
short pan_view; /* when true, pan the view instead of rotating */
/* relative view axis locking - xlock, zlock
@@ -725,7 +725,7 @@ static int flyApply(bContext *C, FlyInfo *fly)
RegionView3D *rv3d= fly->rv3d;
ARegion *ar = fly->ar;
- float mat[3][3], /* 3x3 copy of the view matrix so we can move allong the view axis */
+ float mat[3][3], /* 3x3 copy of the view matrix so we can move along the view axis */
dvec[3]={0,0,0}, /* this is the direction thast added to the view offset per redraw */
/* Camera Uprighting variables */
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 73acd1f9000..859c7778883 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1922,7 +1922,7 @@ static void protectedQuaternionBits(short protectflag, float *quat, float *oldqu
quat[3]= oldquat[3];
}
else {
- /* quaternions get limited with euler... (compatability mode) */
+ /* quaternions get limited with euler... (compatibility mode) */
float eul[3], oldeul[3], nquat[4], noldquat[4];
float qlen;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index c4295b15858..879dc425091 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2947,7 +2947,7 @@ static TransData *ActionFCurveToTransData(TransData *td, TransData2D **td2dv, FC
TransData2D *td2d = *td2dv;
int i;
- if (fcu == NULL)
+ if (ELEM(NULL, fcu, fcu->bezt))
return td;
for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) {
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index a1e1c0e0b1d..1c3241237f5 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -312,6 +312,15 @@ static void calcSpringFactor(MouseInput *mi)
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
{
+ /* may have been allocated previously */
+ /* TODO, holding R-key can cause mem leak, but this causes [#28903]
+ * disable for now. */
+#if 0
+ if(mi->data) {
+ MEM_freeN(mi->data);
+ mi->data= NULL;
+ }
+#endif
switch(mode)
{
diff --git a/source/blender/editors/util/crazyspace.c b/source/blender/editors/util/crazyspace.c
index 9560924941d..53ccd37952d 100644
--- a/source/blender/editors/util/crazyspace.c
+++ b/source/blender/editors/util/crazyspace.c
@@ -384,7 +384,7 @@ void crazyspace_build_sculpt(Scene *scene, Object *ob, float (**deformmats)[3][3
int totleft= sculpt_get_first_deform_matrices(scene, ob, deformmats, deformcos);
if(totleft) {
- /* there are deformation modifier which doesn't support deformation matricies
+ /* there are deformation modifier which doesn't support deformation matrices
calculation. Need additional crazyspace correction */
float (*deformedVerts)[3]= *deformcos;
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index 0285d4736b8..cc8db440344 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -466,7 +466,7 @@ void UV_OT_minimize_stretch(wmOperatorType *ot)
/* identifiers */
ot->name= "Minimize Stretch";
ot->idname= "UV_OT_minimize_stretch";
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_GRAB_POINTER|OPTYPE_BLOCKING;
ot->description="Reduce UV stretching by relaxing angles";
/* api callbacks */
diff --git a/source/blender/imbuf/intern/IMB_indexer.h b/source/blender/imbuf/intern/IMB_indexer.h
index bd5a455df98..08fa51966f2 100644
--- a/source/blender/imbuf/intern/IMB_indexer.h
+++ b/source/blender/imbuf/intern/IMB_indexer.h
@@ -37,7 +37,7 @@
#include "IMB_anim.h"
/*
- seperate animation index files to solve the following problems:
+ separate animation index files to solve the following problems:
a) different timecodes within one file (like DTS/PTS, Timecode-Track,
"implicit" timecodes within DV-files and HDV-files etc.)
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c
index b9500c2f798..34c39b1083a 100644
--- a/source/blender/imbuf/intern/anim_movie.c
+++ b/source/blender/imbuf/intern/anim_movie.c
@@ -745,9 +745,9 @@ static int ffmpeg_decode_video_frame(struct anim * anim)
" FRAME DONE: "
"next_pts=%lld pkt_pts=%lld\n",
(anim->pFrame->pts == AV_NOPTS_VALUE) ?
- -1 : anim->pFrame->pts,
+ -1 : (long long int)anim->pFrame->pts,
(anim->pFrame->pkt_pts == AV_NOPTS_VALUE) ?
- -1 : anim->pFrame->pkt_pts);
+ -1 : (long long int)anim->pFrame->pkt_pts);
anim->next_pts =
av_get_pts_from_frame(anim->pFormatCtx,
anim->pFrame);
@@ -767,9 +767,9 @@ static int ffmpeg_decode_video_frame(struct anim * anim)
anim->next_packet.stream_index,
anim->videoStream,
(anim->next_packet.dts == AV_NOPTS_VALUE) ? -1:
- anim->next_packet.dts,
+ (long long int)anim->next_packet.dts,
(anim->next_packet.pts == AV_NOPTS_VALUE) ? -1:
- anim->next_packet.pts,
+ (long long int)anim->next_packet.pts,
(anim->next_packet.flags & AV_PKT_FLAG_KEY) ?
" KEY" : "");
if (anim->next_packet.stream_index == anim->videoStream) {
@@ -796,11 +796,11 @@ static int ffmpeg_decode_video_frame(struct anim * anim)
" FRAME DONE: next_pts=%lld "
"pkt_pts=%lld, guessed_pts=%lld\n",
(anim->pFrame->pts == AV_NOPTS_VALUE) ?
- -1 : anim->pFrame->pts,
+ -1 : (long long int)anim->pFrame->pts,
(anim->pFrame->pkt_pts
== AV_NOPTS_VALUE) ?
- -1 : anim->pFrame->pkt_pts,
- anim->next_pts);
+ -1 : (long long int)anim->pFrame->pkt_pts,
+ (long long int)anim->next_pts);
}
}
av_free_packet(&anim->next_packet);
@@ -824,13 +824,13 @@ static void ffmpeg_decode_video_frame_scan(
av_log(anim->pFormatCtx,
AV_LOG_DEBUG,
"SCAN start: considering pts=%lld in search of %lld\n",
- anim->next_pts, pts_to_search);
+ (long long int)anim->next_pts, (long long int)pts_to_search);
while (count > 0 && anim->next_pts < pts_to_search) {
av_log(anim->pFormatCtx,
AV_LOG_DEBUG,
" WHILE: pts=%lld in search of %lld\n",
- anim->next_pts, pts_to_search);
+ (long long int)anim->next_pts, (long long int)pts_to_search);
if (!ffmpeg_decode_video_frame(anim)) {
break;
}
@@ -841,7 +841,7 @@ static void ffmpeg_decode_video_frame_scan(
AV_LOG_ERROR,
"SCAN failed: completely lost in stream, "
"bailing out at PTS=%lld, searching for PTS=%lld\n",
- anim->next_pts, pts_to_search);
+ (long long int)anim->next_pts, (long long int)pts_to_search);
}
if (anim->next_pts == pts_to_search) {
av_log(anim->pFormatCtx,
@@ -938,13 +938,13 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position,
av_log(anim->pFormatCtx, AV_LOG_DEBUG,
"FETCH: looking for PTS=%lld "
"(pts_timebase=%g, frame_rate=%g, st_time=%lld)\n",
- pts_to_search, pts_time_base, frame_rate, st_time);
+ (long long int)pts_to_search, pts_time_base, frame_rate, st_time);
if (anim->last_frame &&
anim->last_pts <= pts_to_search && anim->next_pts > pts_to_search){
av_log(anim->pFormatCtx, AV_LOG_DEBUG,
"FETCH: frame repeat: last: %lld next: %lld\n",
- anim->last_pts, anim->next_pts);
+ (long long int)anim->last_pts, (long long int)anim->next_pts);
IMB_refImBuf(anim->last_frame);
anim->curposition = position;
return anim->last_frame;
@@ -957,7 +957,8 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position,
av_log(anim->pFormatCtx, AV_LOG_DEBUG,
"FETCH: no seek necessary: "
"next: %lld next undecoded: %lld\n",
- anim->next_pts, anim->next_undecoded_pts);
+ (long long int)anim->next_pts,
+ (long long int)anim->next_undecoded_pts);
/* we are already done :) */
@@ -1031,7 +1032,7 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position,
"FETCH: "
"error while seeking to DTS = %lld "
"(frameno = %d, PTS = %lld): errcode = %d\n",
- pos, position, pts_to_search, ret);
+ pos, position, (long long int)pts_to_search, ret);
}
avcodec_flush_buffers(anim->pCodecCtx);
@@ -1174,7 +1175,7 @@ static struct ImBuf * anim_getnew(struct anim * anim) {
case ANIM_SEQUENCE:
ibuf = IMB_loadiffname(anim->name, anim->ib_flags);
if (ibuf) {
- strcpy(anim->first, anim->name);
+ BLI_strncpy(anim->first, anim->name, sizeof(anim->first));
anim->duration = 1;
}
break;
diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c
index d79e881e5a2..e4abd8b329d 100644
--- a/source/blender/imbuf/intern/indexer.c
+++ b/source/blender/imbuf/intern/indexer.c
@@ -29,10 +29,11 @@
#include "AVI_avi.h"
#include "imbuf.h"
#include "MEM_guardedalloc.h"
+
#include "BLI_utildefines.h"
#include "BLI_blenlib.h"
#include "BLI_math_base.h"
-#include "BLI_string.h"
+
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BKE_global.h"
@@ -87,7 +88,7 @@ anim_index_builder * IMB_index_builder_create(const char * name)
BLI_make_existing_file(rv->temp_name);
- rv->fp = fopen(rv->temp_name, "w");
+ rv->fp = fopen(rv->temp_name, "wb");
if (!rv->fp) {
fprintf(stderr, "Couldn't open index target: %s! "
@@ -797,7 +798,7 @@ static int index_rebuild_ffmpeg(struct anim * anim,
while(av_read_frame(iFormatCtx, &next_packet) >= 0) {
int frame_finished = 0;
- float next_progress = ((int)floor(((double) next_packet.pos) * 100 /
+ float next_progress = (float)((int)floor(((double) next_packet.pos) * 100 /
((double) stream_size)+0.5)) / 100;
if (*progress != next_progress) {
@@ -840,8 +841,8 @@ static int index_rebuild_ffmpeg(struct anim * anim,
start_pts_set = TRUE;
}
- frameno = (pts - start_pts)
- * pts_time_base * frame_rate;
+ frameno = floor((pts - start_pts)
+ * pts_time_base * frame_rate + 0.5f);
/* decoding starts *always* on I-Frames,
so: P-Frames won't work, even if all the
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index 492dd34caa6..db574160771 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -340,8 +340,8 @@ typedef struct bPose {
void *ikdata; /* temporary IK data, depends on the IK solver. Not saved in file */
void *ikparam; /* IK solver parameters, structure depends on iksolver */
- bAnimVizSettings avs; /* settings for visualisation of bone animation */
- char proxy_act_bone[32]; /*proxy active bone name*/
+ bAnimVizSettings avs; /* settings for visualization of bone animation */
+ char proxy_act_bone[32]; /* proxy active bone name*/
} bPose;
@@ -423,6 +423,8 @@ typedef enum eItasc_Solver {
* This is also exploited for bone-groups. Bone-Groups are stored per bPose, and are used
* primarily to color bones in the 3d-view. There are other benefits too, but those are mostly related
* to Action-Groups.
+ *
+ * Note that these two uses each have their own RNA 'ActionGroup' and 'BoneGroup'.
*/
typedef struct bActionGroup {
struct bActionGroup *next, *prev;
@@ -651,7 +653,7 @@ typedef enum eAnimEdit_AutoSnap {
* Constraint Channels in certain situations.
*
* Action-Channels can only belong to one group at a time, but they still live the Action's
- * list of achans (to preserve backwards compatability, and also minimise the code
+ * list of achans (to preserve backwards compatibility, and also minimize the code
* that would need to be recoded). Grouped achans are stored at the start of the list, according
* to the position of the group in the list, and their position within the group.
*/
diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h
index e04bdd4ec45..00f6f2433af 100644
--- a/source/blender/makesdna/DNA_constraint_types.h
+++ b/source/blender/makesdna/DNA_constraint_types.h
@@ -228,7 +228,7 @@ typedef struct bMinMaxConstraint {
int minmaxflag;
float offset;
int flag;
- short sticky, stuck, pad1, pad2; /* for backward compatability */
+ short sticky, stuck, pad1, pad2; /* for backward compatibility */
float cache[3];
char subtarget[32];
} bMinMaxConstraint;
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index b259d592864..a4d0b3685e3 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -99,7 +99,8 @@ typedef struct bGPDlayer {
float color[4]; /* color that should be used to draw all the strokes in this layer */
- char info[128]; /* optional reference info about this layer (i.e. "director's comments, 12/3") */
+ char info[128]; /* optional reference info about this layer (i.e. "director's comments, 12/3")
+ * this is used for the name of the layer too and kept unique. */
} bGPDlayer;
/* bGPDlayer->flag */
diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h
index 8fe8b3bcf70..201ea8994ca 100644
--- a/source/blender/makesdna/DNA_ipo_types.h
+++ b/source/blender/makesdna/DNA_ipo_types.h
@@ -30,7 +30,7 @@
* \deprecated
* The contents of this file are now officially depreceated. They were used for the 'old' animation system,
* which has (as of 2.50) been replaced with a completely new system by Joshua Leung (aligorith). All defines,
- * etc. are only still maintained to provide backwards compatability for old files.
+ * etc. are only still maintained to provide backwards compatibility for old files.
*/
#ifndef DNA_IPO_TYPES_H
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index b05d688e0bc..c52dbdaded6 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -155,7 +155,9 @@ typedef struct bNode {
float locx, locy; /* root offset for drawing */
float width, height; /* node custom width and height */
float miniwidth; /* node width if hidden */
- int pad;
+
+ int update; /* update flags */
+
char label[32]; /* custom user-defined label */
short custom1, custom2; /* to be abused for buttons */
float custom3, custom4;
@@ -195,6 +197,13 @@ typedef struct bNode {
/* node is active texture */
#define NODE_ACTIVE_TEXTURE (1<<14)
+/* node->update */
+/* XXX NODE_UPDATE is a generic update flag. More fine-grained updates
+ * might be used in the future, but currently all work the same way.
+ */
+#define NODE_UPDATE 0xFFFF /* generic update flag (includes all others) */
+#define NODE_UPDATE_ID 1 /* associated id data block has changed */
+
typedef struct bNodeLink {
struct bNodeLink *next, *prev;
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 9463a445ba9..913149ca3cc 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -415,14 +415,14 @@ typedef struct DupliObject {
#define OB_EMPTY_IMAGE 8
/* boundtype */
-#define OB_BOUND_BOX 0
-#define OB_BOUND_SPHERE 1
-#define OB_BOUND_CYLINDER 2
-#define OB_BOUND_CONE 3
-#define OB_BOUND_POLYH 4
-#define OB_BOUND_POLYT 5
+#define OB_BOUND_BOX 0
+#define OB_BOUND_SPHERE 1
+#define OB_BOUND_CYLINDER 2
+#define OB_BOUND_CONE 3
+#define OB_BOUND_TRIANGLE_MESH 4
+#define OB_BOUND_CONVEX_HULL 5
/* #define OB_BOUND_DYN_MESH 6 */ /*UNUSED*/
-#define OB_BOUND_CAPSULE 7
+#define OB_BOUND_CAPSULE 7
/* **************** BASE ********************* */
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 9fec5207dbb..da2fce4da82 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -386,7 +386,8 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_DRAW_HEALTH 16
#define PART_ABS_PATH_TIME 32
#define PART_DRAW_COUNT_GR 64
-#define PART_DRAW_BB_LOCK 128
+#define PART_DRAW_BB_LOCK 128 /* used with billboards */
+#define PART_DRAW_ROTATE_OB 128 /* used with dupliobjects/groups */
#define PART_DRAW_PARENT 256
#define PART_DRAW_NUM 512
#define PART_DRAW_RAND_GR 1024
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index c0da8188cf5..ec96bfb55d3 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -443,7 +443,8 @@ typedef struct SpaceLogic {
struct bGPdata *gpd; /* grease-pencil data */
} SpaceLogic;
-
+/* note, this entire struct isnt used anymore!,
+ * may remove some day - campbell */
typedef struct SpaceImaSel {
SpaceLink *next, *prev;
ListBase regionbase; /* storage of regions for inactive spaces */
diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c
index 44c37f93b5e..f2d1578388d 100644
--- a/source/blender/makesrna/intern/rna_action.c
+++ b/source/blender/makesrna/intern/rna_action.c
@@ -132,7 +132,7 @@ static void rna_Action_fcurve_remove(bAction *act, ReportList *reports, FCurve *
}
}
-static TimeMarker *rna_Action_pose_markers_new(bAction *act, ReportList *reports, const char name[])
+static TimeMarker *rna_Action_pose_markers_new(bAction *act, const char name[])
{
TimeMarker *marker = MEM_callocN(sizeof(TimeMarker), "TimeMarker");
marker->flag= 1;
@@ -550,7 +550,6 @@ static void rna_def_action_pose_markers(BlenderRNA *brna, PropertyRNA *cprop)
func= RNA_def_function(srna, "new", "rna_Action_pose_markers_new");
RNA_def_function_ui_description(func, "Add a pose marker to the action");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm= RNA_def_string(func, "name", "Marker", 0, "", "New name for the marker (not unique)");
RNA_def_property_flag(parm, PROP_REQUIRED);
diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c
index d828139a6d5..2859a7bb89b 100644
--- a/source/blender/makesrna/intern/rna_actuator.c
+++ b/source/blender/makesrna/intern/rna_actuator.c
@@ -450,7 +450,7 @@ EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, Property
return item;
}
-static void rna_Actuator_Armature_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Actuator_Armature_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
bActuator *act= (bActuator *)ptr->data;
bArmatureActuator *aa = act->data;
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index ebf8990adf3..21e99d312d6 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -80,6 +80,8 @@ static void rna_AnimData_action_set(PointerRNA *ptr, PointerRNA value)
/* wrapper for poll callback */
static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C)
{
+ extern FunctionRNA rna_KeyingSetInfo_poll_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
@@ -87,7 +89,7 @@ static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C)
int ok;
RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr);
- func= RNA_struct_find_function(&ptr, "poll");
+ func= &rna_KeyingSetInfo_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
/* hook up arguments */
@@ -108,12 +110,14 @@ static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C)
/* wrapper for iterator callback */
static void RKS_ITER_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks)
{
+ extern FunctionRNA rna_KeyingSetInfo_iterator_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr);
- func= RNA_struct_find_function(&ptr, "iterator");
+ func= &rna_KeyingSetInfo_iterator_func; /* RNA_struct_find_function(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
/* hook up arguments */
@@ -129,12 +133,14 @@ static void RKS_ITER_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks
/* wrapper for generator callback */
static void RKS_GEN_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks, PointerRNA *data)
{
+ extern FunctionRNA rna_KeyingSetInfo_generate_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr);
- func= RNA_struct_find_function(&ptr, "generate");
+ func= &rna_KeyingSetInfo_generate_func; /* RNA_struct_find_generate(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
/* hook up arguments */
diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c
index 357f613f65f..e21f6aeb26f 100644
--- a/source/blender/makesrna/intern/rna_boid.c
+++ b/source/blender/makesrna/intern/rna_boid.c
@@ -76,7 +76,7 @@ EnumPropertyItem boidruleset_type_items[] ={
#include "BKE_depsgraph.h"
#include "BKE_particle.h"
-static void rna_Boids_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Boids_reset(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
if(ptr->type==&RNA_ParticleSystem) {
ParticleSystem *psys = (ParticleSystem*)ptr->data;
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index edae977f3f6..8bdbdcefc61 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -292,7 +292,7 @@ static void rna_Curve_dimension_set(PointerRNA *ptr, int value)
}
}
-static EnumPropertyItem *rna_Curve_fill_mode_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *free)
+static EnumPropertyItem *rna_Curve_fill_mode_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free))
{
Curve *cu= (Curve*)ptr->id.data;
@@ -483,7 +483,7 @@ void rna_Curve_body_set(PointerRNA *ptr, const char *value)
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_wchar_as_utf8(cu->str, value, len+1); // value is not wchar_t
BLI_strncpy(cu->str, value, len+1);
}
@@ -722,7 +722,7 @@ static void rna_def_bpoint(BlenderRNA *brna)
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_ui_text(prop, "Weight", "NURBS weight");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Number values */
@@ -1446,7 +1446,7 @@ static void rna_def_curve_nurb(BlenderRNA *brna)
srna= RNA_def_struct(brna, "Spline", NULL);
RNA_def_struct_sdna(srna, "Nurb");
- RNA_def_struct_ui_text(srna, "Spline", "Element of a curve, either Nurbs, Bezier or Polyline or a character with text objects");
+ RNA_def_struct_ui_text(srna, "Spline", "Element of a curve, either NURBS, Bezier or Polyline or a character with text objects");
prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "bp", NULL);
@@ -1496,13 +1496,13 @@ static void rna_def_curve_nurb(BlenderRNA *brna)
prop= RNA_def_property(srna, "order_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "orderu");
RNA_def_property_range(prop, 2, 6);
- RNA_def_property_ui_text(prop, "Order U", "Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area");
+ RNA_def_property_ui_text(prop, "Order U", "NURBS order in the U direction (for splines and surfaces, higher values let points influence a greater area)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_u");
prop= RNA_def_property(srna, "order_v", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "orderv");
RNA_def_property_range(prop, 2, 6);
- RNA_def_property_ui_text(prop, "Order V", "Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area");
+ RNA_def_property_ui_text(prop, "Order V", "NURBS order in the V direction (for surfaces only, higher values let points influence a greater area)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_v");
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index ab469c19e15..06571a454be 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -39,7 +39,6 @@
#include "DNA_genfile.h"
#include "DNA_sdna_types.h"
-#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BLI_ghash.h"
diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c
index 43812ad4a01..08a71e0cd4f 100644
--- a/source/blender/makesrna/intern/rna_fcurve.c
+++ b/source/blender/makesrna/intern/rna_fcurve.c
@@ -1368,13 +1368,14 @@ static void rna_def_fkeyframe(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "ipo");
RNA_def_property_enum_items(prop, beztriple_interpolation_mode_items);
RNA_def_property_ui_text(prop, "Interpolation",
- "Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe");
+ "Interpolation method to use for segment of the F-Curve from "
+ "this Keyframe until the next Keyframe");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "hide");
RNA_def_property_enum_items(prop, beztriple_keyframe_type_items);
- RNA_def_property_ui_text(prop, "Type", "The type of keyframe (for visual purposes only");
+ RNA_def_property_ui_text(prop, "Type", "Type of keyframe (for visual purposes only)");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
/* Vector values */
diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c
index ba90aca47a3..c114c44ad77 100644
--- a/source/blender/makesrna/intern/rna_fluidsim.c
+++ b/source/blender/makesrna/intern/rna_fluidsim.c
@@ -173,6 +173,7 @@ static void rna_FluidSettings_update_type(Main *bmain, Scene *scene, PointerRNA
static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *value)
{
#ifdef DISABLE_ELBEEM
+ (void)ptr;
value[0]= '\0';
#else
Object *ob= (Object*)ptr->id.data;
@@ -182,7 +183,7 @@ static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *v
#endif
}
-static int rna_DomainFluidSettings_memory_estimate_length(PointerRNA *ptr)
+static int rna_DomainFluidSettings_memory_estimate_length(PointerRNA *UNUSED(ptr))
{
#ifdef DISABLE_ELBEEM
return 0;
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 810db9f3634..371c387e871 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -40,6 +40,8 @@
#ifdef RNA_RUNTIME
+#include "BLI_path_util.h"
+
static int rna_GPencilLayer_active_frame_editable(PointerRNA *ptr)
{
bGPDlayer *gpl= (bGPDlayer *)ptr->data;
@@ -90,6 +92,17 @@ static void rna_GPencil_active_layer_set(PointerRNA *ptr, PointerRNA value)
}
}
+void rna_GPencilLayer_info_set(PointerRNA *ptr, const char *value)
+{
+ bGPdata *gpd= ptr->id.data;
+ bGPDlayer *gpl= ptr->data;
+
+ /* copy the new name into the name slot */
+ BLI_strncpy_utf8(gpl->info, value, sizeof(gpl->info));
+
+ BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info), sizeof(gpl->info));
+}
+
#else
static void rna_def_gpencil_stroke_point(BlenderRNA *brna)
@@ -176,6 +189,7 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
/* Name */
prop= RNA_def_property(srna, "info", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Info", "Layer name");
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_GPencilLayer_info_set");
RNA_def_struct_name_property(srna, prop);
/* Frames */
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index eac4932ac43..66bcc5951cd 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -369,25 +369,25 @@ static void rna_def_imageuser(BlenderRNA *brna)
prop= RNA_def_property(srna, "frame_duration", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "frames");
RNA_def_property_range(prop, 0, MAXFRAMEF);
- RNA_def_property_ui_text(prop, "Frames", "Sets the number of images of a movie to use");
+ RNA_def_property_ui_text(prop, "Frames", "Number of images of a movie to use");
RNA_def_property_update(prop, 0, "rna_ImageUser_update");
prop= RNA_def_property(srna, "frame_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_ui_text(prop, "Offset", "Offset the number of the frame to use in the animation");
RNA_def_property_update(prop, 0, "rna_ImageUser_update");
prop= RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "sfra");
RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
- RNA_def_property_ui_text(prop, "Start Frame", "Sets the global starting frame of the movie/sequence, assuming first picture has a #1");
+ RNA_def_property_ui_text(prop, "Start Frame", "Global starting frame of the movie/sequence, assuming first picture has a #1");
RNA_def_property_update(prop, 0, "rna_ImageUser_update");
prop= RNA_def_property(srna, "fields_per_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "fie_ima");
RNA_def_property_range(prop, 1, 200);
- RNA_def_property_ui_text(prop, "Fields per Frame", "The number of fields per rendered frame (2 fields is 1 image)");
+ RNA_def_property_ui_text(prop, "Fields per Frame", "Number of fields per rendered frame (2 fields is 1 image)");
RNA_def_property_update(prop, 0, "rna_ImageUser_update");
prop= RNA_def_property(srna, "multilayer_layer", PROP_INT, PROP_UNSIGNED);
diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c
index 50ce816d7a1..473278440e6 100644
--- a/source/blender/makesrna/intern/rna_image_api.c
+++ b/source/blender/makesrna/intern/rna_image_api.c
@@ -157,7 +157,7 @@ static void rna_Image_unpack(Image *image, ReportList *reports, int method)
return;
}
else {
- /* reports its own error on failier */
+ /* reports its own error on failure */
unpackImage (reports, image, method);
}
}
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index 2a81c4f0a2c..f30fea659ae 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -179,10 +179,11 @@ static void rna_Lattice_points_w_set(PointerRNA *ptr, int value)
static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value)
{
Lattice *lt= ptr->data;
- strcpy(lt->vgroup, value);
+ BLI_strncpy(lt->vgroup, value, sizeof(lt->vgroup));
- if(lt->editlatt)
- strcpy(lt->editlatt->latt->vgroup, value);
+ if(lt->editlatt) {
+ BLI_strncpy(lt->editlatt->latt->vgroup, value, sizeof(lt->editlatt->latt->vgroup));
+ }
}
/* annoying, but is a consequence of RNA structures... */
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index d35b7ad38fb..c4f33f9cf10 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -1383,20 +1383,20 @@ static void rna_def_mtface(BlenderRNA *brna)
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_get", "rna_MeshTextureFaceLayer_active_set");
- RNA_def_property_ui_text(prop, "Active", "Sets the layer as active for display and editing");
+ RNA_def_property_ui_text(prop, "Active", "Set the layer as active for display and editing");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
prop= RNA_def_property(srna, "active_render", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "active_rnd", 0);
RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_render_get",
"rna_MeshTextureFaceLayer_active_render_set");
- RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering");
+ RNA_def_property_ui_text(prop, "Active Render", "Set 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_ui_text(prop, "Active Clone", "Set 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);
@@ -1835,7 +1835,8 @@ 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", NULL, NULL, NULL, "rna_Mesh_uv_textures_length", NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", NULL, NULL, NULL,
+ "rna_Mesh_uv_textures_length", NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "MeshTextureFaceLayer");
RNA_def_property_ui_text(prop, "UV Textures", "");
rna_def_uv_textures(brna, prop);
@@ -1865,26 +1866,30 @@ static void rna_def_mesh(BlenderRNA *brna)
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", NULL, NULL, NULL, "rna_Mesh_vertex_colors_length", NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", NULL, NULL, NULL,
+ "rna_Mesh_vertex_colors_length", NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "MeshColorLayer");
RNA_def_property_ui_text(prop, "Vertex Colors", "");
rna_def_vertex_colors(brna, prop);
prop= RNA_def_property(srna, "layers_float", 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", NULL, NULL, NULL, "rna_Mesh_float_layers_length", NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", NULL, NULL, NULL,
+ "rna_Mesh_float_layers_length", NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "MeshFloatPropertyLayer");
RNA_def_property_ui_text(prop, "Float Property Layers", "");
prop= RNA_def_property(srna, "layers_int", 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", NULL, NULL, NULL, "rna_Mesh_int_layers_length", NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", NULL, NULL, NULL,
+ "rna_Mesh_int_layers_length", NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "MeshIntPropertyLayer");
RNA_def_property_ui_text(prop, "Int Property Layers", "");
prop= RNA_def_property(srna, "layers_string", 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", NULL, NULL, NULL, "rna_Mesh_string_layers_length", NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", NULL, NULL, NULL,
+ "rna_Mesh_string_layers_length", NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "MeshStringPropertyLayer");
RNA_def_property_ui_text(prop, "String Property Layers", "");
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index fbf54a76cd9..c33fa0bc7f8 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -55,6 +55,11 @@
#include "WM_types.h"
EnumPropertyItem modifier_type_items[] ={
+ {0, "", 0, "Modify", ""},
+ {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""},
+ {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""},
+ {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""},
+ {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Proximity", ""},
{0, "", 0, "Generate", ""},
{eModifierType_Array, "ARRAY", ICON_MOD_ARRAY, "Array", ""},
{eModifierType_Bevel, "BEVEL", ICON_MOD_BEVEL, "Bevel", ""},
@@ -68,11 +73,6 @@ EnumPropertyItem modifier_type_items[] ={
{eModifierType_Screw, "SCREW", ICON_MOD_SCREW, "Screw", ""},
{eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""},
{eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""},
- {0, "", 0, "Modify", ""},
- {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""},
- {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""},
- {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""},
- {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Proximity", ""},
{0, "", 0, "Deform", ""},
{eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""},
{eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""},
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index f1fe5b6a85e..8b071f4fef7 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -591,7 +591,7 @@ static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *UNUSED(C), Repor
}
else {
ntreeUpdateTree(ntree); /* update group node socket links*/
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
WM_main_add_notifier(NC_NODE|NA_EDITED, ntree);
if (group)
@@ -674,7 +674,7 @@ static bNodeLink *rna_NodeTree_link_new(bNodeTree *ntree, ReportList *reports, b
ret= nodeAddLink(ntree, fromnode, in, tonode, out);
if(ret) {
- NodeTagChanged(ntree, tonode);
+ nodeUpdate(ntree, tonode);
ntreeUpdateTree(ntree);
@@ -1783,19 +1783,19 @@ static void def_cmp_image(StructRNA *srna)
prop = RNA_def_property(srna, "frame_duration", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "frames");
RNA_def_property_range(prop, 0, MAXFRAMEF);
- RNA_def_property_ui_text(prop, "Frames", "Sets the number of images of a movie to use"); /* copied from the rna_image.c */
+ RNA_def_property_ui_text(prop, "Frames", "Number of images of a movie to use"); /* copied from the rna_image.c */
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sfra");
RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
- RNA_def_property_ui_text(prop, "Start Frame", "Sets the global starting frame of the movie/sequence, assuming first picture has a #1"); /* copied from the rna_image.c */
+ RNA_def_property_ui_text(prop, "Start Frame", "Global starting frame of the movie/sequence, assuming first picture has a #1"); /* copied from the rna_image.c */
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "frame_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"); /* copied from the rna_image.c */
+ RNA_def_property_ui_text(prop, "Offset", "Offset the number of the frame to use in the animation"); /* copied from the rna_image.c */
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "use_cyclic", PROP_BOOLEAN, PROP_NONE);
@@ -2251,7 +2251,7 @@ static void def_cmp_id_mask(StructRNA *srna)
prop = RNA_def_property(srna, "index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom1");
- RNA_def_property_range(prop, 0, 10000);
+ RNA_def_property_range(prop, 0, 32767);
RNA_def_property_ui_text(prop, "Index", "Pass index number to convert to alpha");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 6b2ea77f270..7b869867401 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -83,8 +83,8 @@ static EnumPropertyItem collision_bounds_items[] = {
{OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""},
{OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""},
{OB_BOUND_CONE, "CONE", 0, "Cone", ""},
- {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""},
- {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""},
+ {OB_BOUND_CONVEX_HULL, "CONVEX_HULL", 0, "Convex Hull", ""},
+ {OB_BOUND_TRIANGLE_MESH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""},
{OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", ""},
//{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""},
{0, NULL, 0, NULL, NULL}};
@@ -432,8 +432,8 @@ static EnumPropertyItem *rna_Object_collision_bounds_itemf(bContext *UNUSED(C),
EnumPropertyItem *item= NULL;
int totitem= 0;
- RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYH);
- RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYT);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_TRIANGLE_MESH);
+ RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONVEX_HULL);
if(ob->body_type!=OB_BODY_TYPE_SOFT) {
RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONE);
@@ -936,9 +936,9 @@ static void rna_GameObjectSettings_physics_type_set(PointerRNA *ptr, int value)
ob->gameflag &= ~(OB_RIGID_BODY|OB_OCCLUDER|OB_SENSOR|OB_NAVMESH);
/* assume triangle mesh, if no bounds chosen for soft body */
- if ((ob->gameflag & OB_BOUNDS) && (ob->boundtype<OB_BOUND_POLYH))
+ if ((ob->gameflag & OB_BOUNDS) && (ob->boundtype<OB_BOUND_TRIANGLE_MESH))
{
- ob->boundtype=OB_BOUND_POLYH;
+ ob->boundtype= OB_BOUND_TRIANGLE_MESH;
}
/* create a BulletSoftBody structure if not already existing */
if (!ob->bsoft)
@@ -1399,7 +1399,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "controllers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Controller");
RNA_def_property_ui_text(prop, "Controllers",
- "Game engine controllers to process events, connecting sensor to actuators");
+ "Game engine controllers to process events, connecting sensors to actuators");
prop= RNA_def_property(srna, "actuators", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Actuator");
@@ -1428,7 +1428,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "body_type");
RNA_def_property_enum_items(prop, body_type_items);
RNA_def_property_enum_funcs(prop, "rna_GameObjectSettings_physics_type_get", "rna_GameObjectSettings_physics_type_set", NULL);
- RNA_def_property_ui_text(prop, "Physics Type", "Selects the type of physical representation");
+ RNA_def_property_ui_text(prop, "Physics Type", "Select the type of physical representation");
RNA_def_property_update(prop, NC_LOGIC, NULL);
prop= RNA_def_property(srna, "use_actor", PROP_BOOLEAN, PROP_NONE);
@@ -1490,20 +1490,20 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
/* lock rotation */
prop= RNA_def_property(srna, "lock_rotation_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_X_ROT_AXIS);
- RNA_def_property_ui_text(prop, "Lock X Rotation Axis", "Disable simulation of angular motion along the X axis");
+ RNA_def_property_ui_text(prop, "Lock X Rotation Axis", "Disable simulation of angular motion along the X axis");
prop= RNA_def_property(srna, "lock_rotation_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Y_ROT_AXIS);
- RNA_def_property_ui_text(prop, "Lock Y Rotation Axis", "Disable simulation of angular motion along the Y axis");
+ RNA_def_property_ui_text(prop, "Lock Y Rotation Axis", "Disable simulation of angular motion along the Y axis");
prop= RNA_def_property(srna, "lock_rotation_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Z_ROT_AXIS);
- RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
+ RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
/* is this used anywhere ? */
prop= RNA_def_property(srna, "use_activity_culling", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflag2", OB_NEVER_DO_ACTIVITY_CULLING);
- RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
+ RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
prop= RNA_def_property(srna, "use_material_physics_fh", PROP_BOOLEAN, PROP_NONE);
@@ -1528,7 +1528,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "anisotropicFriction");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Friction Coefficients",
- "Relative friction coefficient in the in the X, Y and Z directions, "
+ "Relative friction coefficients in the in the X, Y and Z directions, "
"when anisotropic friction is enabled");
prop= RNA_def_property(srna, "use_collision_bounds", PROP_BOOLEAN, PROP_NONE);
@@ -1539,7 +1539,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "boundtype");
RNA_def_property_enum_items(prop, collision_bounds_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Object_collision_bounds_itemf");
- RNA_def_property_ui_text(prop, "Collision Bounds", "Selects the collision type");
+ RNA_def_property_ui_text(prop, "Collision Bounds", "Select the collision type");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
prop= RNA_def_property(srna, "use_collision_compound", PROP_BOOLEAN, PROP_NONE);
@@ -1805,7 +1805,7 @@ static void rna_def_object(BlenderRNA *brna)
{OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", "Draw bounds as sphere"},
{OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", "Draw bounds as cylinder"},
{OB_BOUND_CONE, "CONE", 0, "Cone", "Draw bounds as cone"},
- {OB_BOUND_POLYH, "POLYHEDRON", 0, "Polyhedron", "Draw bounds as polyhedron"},
+ {OB_BOUND_TRIANGLE_MESH, "POLYHEDRON", 0, "Polyhedron", "Draw bounds as polyhedron"},
{OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", "Draw bounds as capsule"},
{0, NULL, 0, NULL, NULL}};
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index a6e0e9f3331..597f8730e72 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -53,7 +53,7 @@ static EnumPropertyItem effector_shape_items[] = {
#ifdef RNA_RUNTIME
-/* type spesific return values only used from functions */
+/* type specific return values only used from functions */
static EnumPropertyItem curve_shape_items[] = {
{PFIELD_SHAPE_POINT, "POINT", 0, "Point", ""},
{PFIELD_SHAPE_PLANE, "PLANE", 0, "Plane", ""},
@@ -193,7 +193,7 @@ static void rna_Cache_idname_change(Main *UNUSED(bmain), Scene *UNUSED(scene), P
pid2 = pid;
else if(cache->name[0] != '\0' && strcmp(cache->name,pid->cache->name)==0) {
/*TODO: report "name exists" to user */
- strcpy(cache->name, cache->prev_name);
+ BLI_strncpy(cache->name, cache->prev_name, sizeof(cache->name));
new_name = 0;
}
}
@@ -203,13 +203,13 @@ static void rna_Cache_idname_change(Main *UNUSED(bmain), Scene *UNUSED(scene), P
char old_name[80];
char new_name[80];
- strcpy(old_name, cache->prev_name);
- strcpy(new_name, cache->name);
+ BLI_strncpy(old_name, cache->prev_name, sizeof(old_name));
+ BLI_strncpy(new_name, cache->name, sizeof(new_name));
BKE_ptcache_disk_cache_rename(pid2, old_name, new_name);
}
- strcpy(cache->prev_name, cache->name);
+ BLI_strncpy(cache->prev_name, cache->name, sizeof(cache->prev_name));
}
}
@@ -679,7 +679,8 @@ static void rna_softbody_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Point
}
-static EnumPropertyItem *rna_Effector_shape_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free))
+static EnumPropertyItem *rna_Effector_shape_itemf(bContext *UNUSED(C), PointerRNA *ptr,
+ PropertyRNA *UNUSED(prop), int *UNUSED(free))
{
Object *ob= NULL;
@@ -725,7 +726,8 @@ static void rna_def_ptcache_point_caches(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_struct_ui_text(srna, "Point Caches", "Collection of point caches");
prop= RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_int_funcs(prop, "rna_Cache_active_point_cache_index_get", "rna_Cache_active_point_cache_index_set", "rna_Cache_active_point_cache_index_range");
+ RNA_def_property_int_funcs(prop, "rna_Cache_active_point_cache_index_get", "rna_Cache_active_point_cache_index_set",
+ "rna_Cache_active_point_cache_index_range");
RNA_def_property_ui_text(prop, "Active Point Cache Index", "");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_change");
}
@@ -827,7 +829,8 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
prop= RNA_def_property(srna, "point_caches", 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", NULL, NULL, NULL, NULL);
+ RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next",
+ "rna_iterator_listbase_end", "rna_iterator_listbase_get", NULL, NULL, NULL, NULL);
RNA_def_property_struct_type(prop, "PointCache");
RNA_def_property_ui_text(prop, "Point Cache List", "Point cache list");
rna_def_ptcache_point_caches(brna, prop);
@@ -914,7 +917,8 @@ static void rna_def_collision(BlenderRNA *brna)
prop= RNA_def_property(srna, "absorption", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2);
- RNA_def_property_ui_text(prop, "Absorption", "How much of effector force gets lost during collision with this object (in percent)");
+ RNA_def_property_ui_text(prop, "Absorption",
+ "How much of effector force gets lost during collision with this object (in percent)");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
}
@@ -1128,7 +1132,9 @@ static void rna_def_field(BlenderRNA *brna)
prop= RNA_def_property(srna, "texture_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "tex_mode");
RNA_def_property_enum_items(prop, texture_items);
- RNA_def_property_ui_text(prop, "Texture Mode", "How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead)");
+ RNA_def_property_ui_text(prop, "Texture Mode",
+ "How the texture effect is calculated (RGB & Curl need a RGB texture, "
+ "else Gradient will be used instead)");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
prop= RNA_def_property(srna, "z_direction", PROP_ENUM, PROP_NONE);
@@ -1423,7 +1429,10 @@ static void rna_def_game_softbody(BlenderRNA *brna)
prop= RNA_def_property(srna, "weld_threshold", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "welding");
RNA_def_property_range(prop, 0.0f, 0.01f);
- RNA_def_property_ui_text(prop, "Welding", "Welding threshold: distance between nearby vertices to be considered equal => set to 0.0 to disable welding test and speed up scene loading (ok if the mesh has no duplicates)");
+ RNA_def_property_ui_text(prop, "Welding",
+ "Welding threshold: distance between nearby vertices to be considered equal "
+ "=> set to 0.0 to disable welding test and speed up scene loading "
+ "(ok if the mesh has no duplicates)");
/* Integers */
@@ -1435,7 +1444,7 @@ static void rna_def_game_softbody(BlenderRNA *brna)
prop= RNA_def_property(srna, "cluster_iterations", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "numclusteriterations");
RNA_def_property_range(prop, 1, 128);
- RNA_def_property_ui_text(prop, "Cluster Iterations", "Specify the number of cluster iterations");
+ RNA_def_property_ui_text(prop, "Cluster Iterations", "Number of cluster iterations");
/* Booleans */
@@ -1519,7 +1528,8 @@ static void rna_def_softbody(BlenderRNA *brna)
prop= RNA_def_property(srna, "vertex_group_goal", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vertgroup");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); /* not impossible .. but not supported yet */
- RNA_def_property_string_funcs(prop, "rna_SoftBodySettings_goal_vgroup_get", "rna_SoftBodySettings_goal_vgroup_length", "rna_SoftBodySettings_goal_vgroup_set");
+ RNA_def_property_string_funcs(prop, "rna_SoftBodySettings_goal_vgroup_get", "rna_SoftBodySettings_goal_vgroup_length",
+ "rna_SoftBodySettings_goal_vgroup_set");
RNA_def_property_ui_text(prop, "Goal Vertex Group", "Control point weight values");
prop= RNA_def_property(srna, "goal_min", PROP_FLOAT, PROP_NONE);
@@ -1641,7 +1651,8 @@ static void rna_def_softbody(BlenderRNA *brna)
prop= RNA_def_property(srna, "error_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rklimit");
RNA_def_property_range(prop, 0.001f, 10.0f);
- RNA_def_property_ui_text(prop, "Error Limit", "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed");
+ RNA_def_property_ui_text(prop, "Error Limit",
+ "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed");
RNA_def_property_update(prop, 0, "rna_softbody_update");
prop= RNA_def_property(srna, "step_min", PROP_INT, PROP_NONE);
@@ -1665,7 +1676,8 @@ static void rna_def_softbody(BlenderRNA *brna)
prop= RNA_def_property(srna, "fuzzy", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "fuzzyness");
RNA_def_property_range(prop, 1, 100);
- RNA_def_property_ui_text(prop, "Fuzzy", "Fuzziness while on collision, high values make collision handling faster but less stable");
+ RNA_def_property_ui_text(prop, "Fuzzy",
+ "Fuzziness while on collision, high values make collision handling faster but less stable");
RNA_def_property_update(prop, 0, "rna_softbody_update");
prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index f0f782fede2..43d5f87f0d5 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -505,6 +505,17 @@ static int rna_PartSettings_is_fluid_get(PointerRNA *ptr)
return part->type == PART_FLUID;
}
+void rna_ParticleSystem_name_set(PointerRNA *ptr, const char *value)
+{
+ Object *ob= ptr->id.data;
+ ParticleSystem *part= (ParticleSystem*)ptr->data;
+
+ /* copy the new name into the name slot */
+ BLI_strncpy_utf8(part->name, value, sizeof(part->name));
+
+ BLI_uniquename(&ob->particlesystem, part, "ParticleSystem", '.', offsetof(ParticleSystem, name), sizeof(part->name));
+}
+
static PointerRNA rna_ParticleSystem_active_particle_target_get(PointerRNA *ptr)
{
ParticleSystem *psys= (ParticleSystem*)ptr->data;
@@ -1467,7 +1478,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
static EnumPropertyItem rot_mode_items[] = {
{0, "NONE", 0, "None", ""},
{PART_ROT_NOR, "NOR", 0, "Normal", ""},
- {PART_ROT_VEL, "VEL", 0, "Velocity", ""},
+ {PART_ROT_VEL, "VEL", 0, "Velocity / Hair", ""},
{PART_ROT_GLOB_X, "GLOB_X", 0, "Global X", ""},
{PART_ROT_GLOB_Y, "GLOB_Y", 0, "Global Y", ""},
{PART_ROT_GLOB_Z, "GLOB_Z", 0, "Global Z", ""},
@@ -1722,7 +1733,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "rotmode");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_enum_items(prop, rot_mode_items);
- RNA_def_property_ui_text(prop, "Rotation", "Particles initial rotation");
+ RNA_def_property_ui_text(prop, "Rotation", "Particle rotation axis");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
prop= RNA_def_property(srna, "angular_velocity_mode", PROP_ENUM, PROP_NONE);
@@ -1787,7 +1798,12 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_global_dupli", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_GLOBAL_OB);
- RNA_def_property_ui_text(prop, "Use Global", "Use object's global coordinates for duplication");
+ RNA_def_property_ui_text(prop, "Global", "Use object's global coordinates for duplication");
+ RNA_def_property_update(prop, 0, "rna_Particle_redo");
+
+ prop= RNA_def_property(srna, "use_rotation_dupli", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_ROTATE_OB);
+ RNA_def_property_ui_text(prop, "Rotation", "Use object's rotation for duplication (global x-axis is aligned particle rotation axis)");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
prop= RNA_def_property(srna, "use_render_adaptive", PROP_BOOLEAN, PROP_NONE);
@@ -2617,6 +2633,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Particle system name");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL);
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ParticleSystem_name_set");
RNA_def_struct_name_property(srna, prop);
/* access to particle settings is redirected through functions */
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index b61495edc94..d224bd0d4e5 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -48,13 +48,14 @@
// XXX: this RNA enum define is currently duplicated for objects, since there is some text here which is not applicable
EnumPropertyItem posebone_rotmode_items[] = {
{ROT_MODE_QUAT, "QUATERNION", 0, "Quaternion (WXYZ)", "No Gimbal Lock (default)"},
- {ROT_MODE_XYZ, "XYZ", 0, "XYZ Euler", "XYZ Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_XZY, "XZY", 0, "XZY Euler", "XZY Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_YXZ, "YXZ", 0, "YXZ Euler", "YXZ Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_YZX, "YZX", 0, "YZX Euler", "YZX Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_ZXY, "ZXY", 0, "ZXY Euler", "ZXY Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_ZYX, "ZYX", 0, "ZYX Euler", "ZYX Rotation Order. Prone to Gimbal Lock"},
- {ROT_MODE_AXISANGLE, "AXIS_ANGLE", 0, "Axis Angle", "Axis Angle (W+XYZ). Defines a rotation around some axis defined by 3D-Vector"},
+ {ROT_MODE_XYZ, "XYZ", 0, "XYZ Euler", "XYZ Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_XZY, "XZY", 0, "XZY Euler", "XZY Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_YXZ, "YXZ", 0, "YXZ Euler", "YXZ Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_YZX, "YZX", 0, "YZX Euler", "YZX Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_ZXY, "ZXY", 0, "ZXY Euler", "ZXY Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_ZYX, "ZYX", 0, "ZYX Euler", "ZYX Rotation Order (prone to Gimbal Lock)"},
+ {ROT_MODE_AXISANGLE, "AXIS_ANGLE", 0, "Axis Angle",
+ "Axis Angle (W+XYZ), defines a rotation around some axis defined by 3D-Vector"},
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
@@ -139,6 +140,17 @@ static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
}
}
+void rna_BoneGroup_name_set(PointerRNA *ptr, const char *value)
+{
+ Object *ob= ptr->id.data;
+ bActionGroup *agrp= ptr->data;
+
+ /* copy the new name into the name slot */
+ BLI_strncpy_utf8(agrp->name, value, sizeof(agrp->name));
+
+ BLI_uniquename(&ob->pose->agroups, agrp, "Group", '.', offsetof(bActionGroup, name), sizeof(agrp->name));
+}
+
static IDProperty *rna_PoseBone_idprops(PointerRNA *ptr, int create)
{
bPoseChannel *pchan= ptr->data;
@@ -657,6 +669,7 @@ static void rna_def_bone_group(BlenderRNA *brna)
/* name */
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "");
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_BoneGroup_name_set");
RNA_def_struct_name_property(srna, prop);
// TODO: add some runtime-collections stuff to access grouped bones
@@ -705,7 +718,8 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
/* 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, NULL);
+ RNA_def_property_pointer_funcs(prop, "rna_PoseChannel_active_constraint_get",
+ "rna_PoseChannel_active_constraint_set", NULL, NULL);
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Active Constraint", "Active PoseChannel constraint");
@@ -808,7 +822,8 @@ 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);
- RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL);
+ 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_float_array_default(prop, default_axisAngle);
RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation");
@@ -841,7 +856,7 @@ static void rna_def_pose_channel(BlenderRNA *brna)
prop= RNA_def_property(srna, "matrix_basis", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_multi_array(prop, 2, matrix_dimsize);
RNA_def_property_ui_text(prop, "Basis Matrix",
- "Provides an alternative access to loc/scale/rotation relative to the parent and own rest bone");
+ "Alternative access to location/scale/rotation relative to the parent and own rest bone");
RNA_def_property_float_funcs(prop, "rna_PoseChannel_matrix_basis_get", "rna_PoseChannel_matrix_basis_set", NULL);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
@@ -1027,7 +1042,8 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "agrp_index");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
- RNA_def_property_int_funcs(prop, "rna_PoseChannel_bone_group_index_get", "rna_PoseChannel_bone_group_index_set", "rna_PoseChannel_bone_group_index_range");
+ RNA_def_property_int_funcs(prop, "rna_PoseChannel_bone_group_index_get", "rna_PoseChannel_bone_group_index_set",
+ "rna_PoseChannel_bone_group_index_range");
RNA_def_property_ui_text(prop, "Bone Group Index", "Bone Group this pose channel belongs to (0=no group)");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
@@ -1060,7 +1076,8 @@ static void rna_def_pose_channel(BlenderRNA *brna)
// XXX this is sub-optimal - it really should be included above, but due to technical reasons we can't do this!
prop= RNA_def_property(srna, "lock_rotation_w", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTW);
- RNA_def_property_ui_text(prop, "Lock Rotation (4D Angle)", "Lock editing of 'angle' component of four-component rotations in the interface");
+ RNA_def_property_ui_text(prop, "Lock Rotation (4D Angle)",
+ "Lock editing of 'angle' component of four-component rotations in the interface");
RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1);
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
@@ -1068,7 +1085,8 @@ static void rna_def_pose_channel(BlenderRNA *brna)
// XXX this needs a better name
prop= RNA_def_property(srna, "lock_rotations_4d", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROT4D);
- RNA_def_property_ui_text(prop, "Lock Rotations (4D)", "Lock editing of four component rotations by components (instead of as Eulers)");
+ RNA_def_property_ui_text(prop, "Lock Rotations (4D)",
+ "Lock editing of four component rotations by components (instead of as Eulers)");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
@@ -1086,13 +1104,17 @@ static void rna_def_pose_channel(BlenderRNA *brna)
static void rna_def_pose_itasc(BlenderRNA *brna)
{
static const EnumPropertyItem prop_itasc_mode_items[]= {
- {0, "ANIMATION", 0, "Animation", "Stateless solver computing pose starting from current action and non-IK constraints"},
- {ITASC_SIMULATION, "SIMULATION", 0, "Simulation", "Statefull solver running in real-time context and ignoring actions and non-IK constraints"},
+ {0, "ANIMATION", 0, "Animation",
+ "Stateless solver computing pose starting from current action and non-IK constraints"},
+ {ITASC_SIMULATION, "SIMULATION", 0, "Simulation",
+ "Statefull solver running in real-time context and ignoring actions and non-IK constraints"},
{0, NULL, 0, NULL, NULL}};
static const EnumPropertyItem prop_itasc_reiteration_items[]= {
{0, "NEVER", 0, "Never", "The solver does not reiterate, not even on first frame (starts from rest pose)"},
- {ITASC_INITIAL_REITERATION, "INITIAL", 0, "Initial", "The solver reiterates (converges) on the first frame but not on subsequent frame"},
- {ITASC_INITIAL_REITERATION|ITASC_REITERATION, "ALWAYS", 0, "Always", "The solver reiterates (converges) on all frames"},
+ {ITASC_INITIAL_REITERATION, "INITIAL", 0, "Initial",
+ "The solver reiterates (converges) on the first frame but not on subsequent frame"},
+ {ITASC_INITIAL_REITERATION|ITASC_REITERATION, "ALWAYS", 0, "Always",
+ "The solver reiterates (converges) on all frames"},
{0, NULL, 0, NULL, NULL}};
StructRNA *srna;
@@ -1129,12 +1151,15 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
prop= RNA_def_property(srna, "reiteration_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_itasc_reiteration_items);
- RNA_def_property_ui_text(prop, "Reiteration", "Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames");
+ RNA_def_property_ui_text(prop, "Reiteration",
+ "Defines if the solver is allowed to reiterate (converges until "
+ "precision is met) on none, first or all frames");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ITASC_AUTO_STEP);
- RNA_def_property_ui_text(prop, "Auto step", "Automatically determine the optimal number of steps for best performance/accuracy trade off");
+ RNA_def_property_ui_text(prop, "Auto step",
+ "Automatically determine the optimal number of steps for best performance/accuracy trade off");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
prop= RNA_def_property(srna, "step_min", PROP_FLOAT, PROP_NONE);
@@ -1152,7 +1177,8 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
prop= RNA_def_property(srna, "feedback", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "feedback");
RNA_def_property_range(prop, 0.0f,100.0f);
- RNA_def_property_ui_text(prop, "Feedback", "Feedback coefficient for error correction. Average response time=1/feedback. Default=20");
+ RNA_def_property_ui_text(prop, "Feedback",
+ "Feedback coefficient for error correction. Average response time=1/feedback. Default=20");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
prop= RNA_def_property(srna, "velocity_max", PROP_FLOAT, PROP_NONE);
@@ -1170,13 +1196,17 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
prop= RNA_def_property(srna, "damping_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampmax");
RNA_def_property_range(prop, 0.0f,1.0f);
- RNA_def_property_ui_text(prop, "Damp", "Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5");
+ RNA_def_property_ui_text(prop, "Damp",
+ "Maximum damping coefficient when singular value is nearly 0 "
+ "(higher values=more stability, less reactivity - default=0.5)");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
prop= RNA_def_property(srna, "damping_epsilon", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampeps");
RNA_def_property_range(prop, 0.0f,1.0f);
- RNA_def_property_ui_text(prop, "Epsilon", "Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1");
+ RNA_def_property_ui_text(prop, "Epsilon",
+ "Singular value under which damping is progressively applied "
+ "(higher values=more stability, less reactivity - default=0.1)");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
}
@@ -1220,7 +1250,8 @@ static void rna_def_bone_groups(BlenderRNA *brna, PropertyRNA *cprop)
prop= RNA_def_property(srna, "active_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "active_group");
- RNA_def_property_int_funcs(prop, "rna_Pose_active_bone_group_index_get", "rna_Pose_active_bone_group_index_set", "rna_Pose_active_bone_group_index_range");
+ RNA_def_property_int_funcs(prop, "rna_Pose_active_bone_group_index_get", "rna_Pose_active_bone_group_index_set",
+ "rna_Pose_active_bone_group_index_range");
RNA_def_property_ui_text(prop, "Active Bone Group Index", "Active index in bone groups array");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
}
@@ -1253,7 +1284,8 @@ static void rna_def_pose(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "iksolver");
RNA_def_property_enum_funcs(prop, NULL, "rna_Pose_ik_solver_set", NULL);
RNA_def_property_enum_items(prop, prop_iksolver_items);
- RNA_def_property_ui_text(prop, "IK Solver", "Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC");
+ RNA_def_property_ui_text(prop, "IK Solver",
+ "Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_ik_solver_update");
prop= RNA_def_property(srna, "ik_param", PROP_POINTER, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 45015f491d2..208ef482909 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -64,12 +64,13 @@ void engine_tag_update(RenderEngine *engine)
static void engine_update(RenderEngine *engine, Main *bmain, Scene *scene)
{
+ extern FunctionRNA rna_RenderEngine_update_func;
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "update");
+ func= &rna_RenderEngine_update_func;
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "data", &bmain);
@@ -81,12 +82,13 @@ static void engine_update(RenderEngine *engine, Main *bmain, Scene *scene)
static void engine_render(RenderEngine *engine)
{
+ extern FunctionRNA rna_RenderEngine_render_func;
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "render");
+ func= &rna_RenderEngine_render_func;
RNA_parameter_list_create(&list, &ptr, func);
engine->type->ext.call(NULL, &ptr, func, &list);
@@ -96,12 +98,13 @@ static void engine_render(RenderEngine *engine)
static void engine_preview_update(RenderEngine *engine, const struct bContext *context, struct ID *id)
{
+ extern FunctionRNA rna_RenderEngine_preview_update_func;
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "preview_update");
+ func= &rna_RenderEngine_preview_update_func;
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &context);
@@ -113,12 +116,14 @@ static void engine_preview_update(RenderEngine *engine, const struct bContext *c
static void engine_preview_render(RenderEngine *engine)
{
+ extern FunctionRNA rna_RenderEngine_preview_render_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "preview_render");
+ func= &rna_RenderEngine_preview_render_func;
RNA_parameter_list_create(&list, &ptr, func);
engine->type->ext.call(NULL, &ptr, func, &list);
@@ -128,12 +133,13 @@ static void engine_preview_render(RenderEngine *engine)
static void engine_view_update(RenderEngine *engine, const struct bContext *context)
{
+ extern FunctionRNA rna_RenderEngine_view_update_func;
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "view_update");
+ func= &rna_RenderEngine_view_update_func;
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &context);
@@ -144,12 +150,13 @@ static void engine_view_update(RenderEngine *engine, const struct bContext *cont
static void engine_view_draw(RenderEngine *engine, const struct bContext *context)
{
+ extern FunctionRNA rna_RenderEngine_view_draw_func;
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
- func= RNA_struct_find_function(&ptr, "view_draw");
+ func= &rna_RenderEngine_view_draw_func;
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &context);
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 376b0c529d0..31c872f43f8 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -167,7 +167,7 @@ static int rna_idproperty_known(CollectionPropertyIterator *iter, void *data)
return 0;
}
-static int rna_property_builtin(CollectionPropertyIterator *iter, void *data)
+static int rna_property_builtin(CollectionPropertyIterator *UNUSED(iter), void *data)
{
PropertyRNA *prop= (PropertyRNA*)data;
@@ -176,7 +176,7 @@ static int rna_property_builtin(CollectionPropertyIterator *iter, void *data)
return (prop->flag & PROP_BUILTIN);
}
-static int rna_function_builtin(CollectionPropertyIterator *iter, void *data)
+static int rna_function_builtin(CollectionPropertyIterator *UNUSED(iter), void *data)
{
FunctionRNA *func= (FunctionRNA*)data;
@@ -775,7 +775,7 @@ static int rna_EnumProperty_default_get(PointerRNA *ptr)
return ((EnumPropertyRNA*)prop)->defaultvalue;
}
-static int rna_enum_check_separator(CollectionPropertyIterator *iter, void *data)
+static int rna_enum_check_separator(CollectionPropertyIterator *UNUSED(iter), void *data)
{
EnumPropertyItem *item= (EnumPropertyItem*)data;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 42ebdcbc582..911dd6ac396 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -820,8 +820,8 @@ static void rna_SceneRenderLayer_name_set(PointerRNA *ptr, const char *value)
{
Scene *scene= (Scene*)ptr->id.data;
SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data;
-
BLI_strncpy_utf8(rl->name, value, sizeof(rl->name));
+ BLI_uniquename(&scene->r.layers, rl, "RenderLayer", '.', offsetof(SceneRenderLayer, name), sizeof(rl->name));
if(scene->nodetree) {
bNode *node;
@@ -1068,7 +1068,7 @@ static KeyingSet *rna_Scene_keying_set_new(Scene *sce, ReportList *reports, cons
* is not for general use and only for the few cases where changing scene
* settings and NOT for general purpose updates, possibly this should be
* given its own notifier. */
-static void rna_Scene_update_active_object_data(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Scene_update_active_object_data(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
{
Object *ob= OBACT;
if(ob) {
@@ -1769,13 +1769,13 @@ static void rna_def_scene_game_recast_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "region_min_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "regionminsize");
RNA_def_property_ui_range(prop, 0, 150, 1, 2);
- RNA_def_property_ui_text(prop, "Min Region Size", "Minimum regions size. Smaller regions will be deleted");
+ RNA_def_property_ui_text(prop, "Min Region Size", "Minimum regions size (smaller regions will be deleted)");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "region_merge_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "regionmergesize");
RNA_def_property_ui_range(prop, 0, 150, 1, 2);
- RNA_def_property_ui_text(prop, "Merged Region Size", "Minimum regions size. Smaller regions will be merged");
+ RNA_def_property_ui_text(prop, "Merged Region Size", "Minimum regions size (smaller regions will be merged)");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "edge_max_len", PROP_FLOAT, PROP_NONE);
@@ -1991,7 +1991,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "occlusionRes");
RNA_def_property_range(prop, 128.0, 1024.0);
RNA_def_property_ui_text(prop, "Occlusion Resolution",
- "The size of the occlusion buffer in pixel, use higher value for better precision (slower)");
+ "Size of the occlusion buffer in pixel, use higher value for better precision (slower)");
RNA_def_property_update(prop, NC_SCENE, NULL);
prop= RNA_def_property(srna, "fps", PROP_INT, PROP_NONE);
@@ -1999,7 +1999,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 1, 60, 1, 1);
RNA_def_property_range(prop, 1, 250);
RNA_def_property_ui_text(prop, "Frames Per Second",
- "The nominal number of game frames per second "
+ "Nominal number of game frames per second "
"(physics fixed timestep = 1/fps, independently of actual frame rate)");
RNA_def_property_update(prop, NC_SCENE, NULL);
@@ -2008,7 +2008,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 1, 5, 1, 1);
RNA_def_property_range(prop, 1, 5);
RNA_def_property_ui_text(prop, "Max Logic Steps",
- "Sets the maximum number of logic frame per game frame if graphics slows down the game, "
+ "Maximum number of logic frame per game frame if graphics slows down the game, "
"higher value allows better synchronization with physics");
RNA_def_property_update(prop, NC_SCENE, NULL);
@@ -2017,7 +2017,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 1, 5, 1, 1);
RNA_def_property_range(prop, 1, 5);
RNA_def_property_ui_text(prop, "Max Physics Steps",
- "Sets the maximum number of physics step per game frame if graphics slows down the game, "
+ "Maximum number of physics step per game frame if graphics slows down the game, "
"higher value allows physics to keep up with realtime");
RNA_def_property_update(prop, NC_SCENE, NULL);
@@ -2026,7 +2026,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 1, 5, 1, 1);
RNA_def_property_range(prop, 1, 5);
RNA_def_property_ui_text(prop, "Physics Sub Steps",
- "Sets the number of simulation substep per physic timestep, "
+ "Number of simulation substep per physic timestep, "
"higher value give better physics precision");
RNA_def_property_update(prop, NC_SCENE, NULL);
@@ -2080,7 +2080,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_animation_record", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_ENABLE_ANIMATION_RECORD);
- RNA_def_property_ui_text(prop, "Record Animation", "Record animation to fcurves");
+ RNA_def_property_ui_text(prop, "Record Animation", "Record animation to F-Curves");
prop= RNA_def_property(srna, "use_auto_start", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_GameSettings_auto_start_get", "rna_GameSettings_auto_start_set");
@@ -2089,8 +2089,8 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "restrict_animation_updates", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_RESTRICT_ANIM_UPDATES);
RNA_def_property_ui_text(prop, "Restrict Animation Updates",
- "Restrict the number of animation updates to the animation FPS. This is "
- "better for performance, but can cause issues with smooth playback");
+ "Restrict the number of animation updates to the animation FPS (this is "
+ "better for performance, but can cause issues with smooth playback)");
/* materials */
prop= RNA_def_property(srna, "material_mode", PROP_ENUM, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index b350956047c..d169ee5079b 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -127,17 +127,28 @@ static void rna_ParticleEdit_tool_set(PointerRNA *ptr, int value)
pset->brushtype = value;
}
-static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *UNUSED(free))
+static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr),
+ PropertyRNA *UNUSED(prop), int *UNUSED(free))
{
Scene *scene= CTX_data_scene(C);
Object *ob= (scene->basact)? scene->basact->object: NULL;
+#if 0
PTCacheEdit *edit = PE_get_current(scene, ob);
-
- if(edit && edit->psys) {
- if(edit->psys->flag & PSYS_GLOBAL_HAIR)
+ ParticleSystem *psys= edit ? edit->psys : NULL;
+#else
+ /* use this rather than PE_get_current() - because the editing cache is
+ * dependant on the cache being updated which can happen after this UI
+ * draws causing a glitch [#28883] */
+ ParticleSystem *psys= psys_get_current(ob);
+#endif
+
+ if(psys) {
+ if(psys->flag & PSYS_GLOBAL_HAIR) {
return particle_edit_disconnected_hair_brush_items;
- else
+ }
+ else {
return particle_edit_hair_brush_items;
+ }
}
return particle_edit_cache_brush_items;
@@ -265,7 +276,8 @@ static void rna_def_sculpt(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_symmetry_feather", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_SYMMETRY_FEATHER);
- RNA_def_property_ui_text(prop, "Symmetry Feathering", "Reduce the strength of the brush where it overlaps symmetrical daubs");
+ RNA_def_property_ui_text(prop, "Symmetry Feathering",
+ "Reduce the strength of the brush where it overlaps symmetrical daubs");
prop= RNA_def_property(srna, "use_threaded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_USE_OPENMP);
@@ -273,7 +285,9 @@ static void rna_def_sculpt(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_deform_only", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_ONLY_DEFORM);
- RNA_def_property_ui_text(prop, "Use Deform Only", "Use only deformation modifiers (temporary disable all constructive modifiers except multi-resolution)");
+ RNA_def_property_ui_text(prop, "Use Deform Only",
+ "Use only deformation modifiers (temporary disable all "
+ "constructive modifiers except multi-resolution)");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Sculpt_update");
}
@@ -335,7 +349,8 @@ static void rna_def_image_paint(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_clone_layer", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_CLONE);
- RNA_def_property_ui_text(prop, "Clone Layer", "Use another UV layer as clone source, otherwise use 3D the cursor as the source");
+ RNA_def_property_ui_text(prop, "Clone Layer",
+ "Use another UV layer as clone source, otherwise use 3D the cursor as the source");
/* integers */
@@ -347,7 +362,8 @@ static void rna_def_image_paint(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 90);
RNA_def_property_ui_text(prop, "Angle", "Paint most on faces pointing towards the view according to this angle");
- prop= RNA_def_int_array(srna, "screen_grab_size", 2, NULL, 0, 0, "screen_grab_size", "Size to capture the image for re-projecting", 0, 0);
+ prop= RNA_def_int_array(srna, "screen_grab_size", 2, NULL, 0, 0, "screen_grab_size",
+ "Size to capture the image for re-projecting", 0, 0);
RNA_def_property_range(prop, 512, 16384);
}
@@ -508,7 +524,8 @@ static void rna_def_particle_edit(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_puff_volume", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_BRUSH_DATA_PUFF_VOLUME);
- RNA_def_property_ui_text(prop, "Puff Volume", "Apply puff to unselected end-points, (helps maintain hair volume when puffing root)");
+ RNA_def_property_ui_text(prop, "Puff Volume",
+ "Apply puff to unselected end-points (helps maintain hair volume when puffing root)");
prop= RNA_def_property(srna, "length_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "invert");
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index a75166c3e99..9d72eeacf3e 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -443,7 +443,6 @@ static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *
static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value)
{
Sequence *seq= (Sequence*)(ptr->data);
- char dir[FILE_MAX], name[FILE_MAX];
if(seq->type == SEQ_SOUND && seq->sound) {
/* for sound strips we need to update the sound as well.
@@ -453,11 +452,11 @@ static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value)
PointerRNA id_ptr;
RNA_id_pointer_create((ID *)seq->sound, &id_ptr);
RNA_string_set(&id_ptr, "filepath", value);
+ sound_load(G.main, seq->sound);
+ sound_update_scene_sound(seq->scene_sound, seq->sound);
}
- BLI_split_dirfile(value, dir, name);
- BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir));
- BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name));
+ BLI_split_dirfile(value, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name));
}
static void rna_Sequence_filepath_get(PointerRNA *ptr, char *value)
@@ -479,11 +478,7 @@ static int rna_Sequence_filepath_length(PointerRNA *ptr)
static void rna_Sequence_proxy_filepath_set(PointerRNA *ptr, const char *value)
{
StripProxy *proxy= (StripProxy*)(ptr->data);
- char dir[FILE_MAX], name[FILE_MAX];
-
- BLI_split_dirfile(value, dir, name);
- BLI_strncpy(proxy->dir, dir, sizeof(proxy->dir));
- BLI_strncpy(proxy->file, name, sizeof(proxy->file));
+ BLI_split_dirfile(value, proxy->dir, proxy->file, sizeof(proxy->dir), sizeof(proxy->file));
}
static void rna_Sequence_proxy_filepath_get(PointerRNA *ptr, char *value)
@@ -539,20 +534,13 @@ static int rna_Sequence_input_count_get(PointerRNA *ptr)
/*static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value)
{
Sequence *seq= (Sequence*)(ptr->data);
- char dir[FILE_MAX], name[FILE_MAX];
-
- BLI_split_dirfile(value, dir, name);
- BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir));
- BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name));
+ BLI_split_dirfile(value, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name));
}
static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value)
{
StripElem *elem= (StripElem*)(ptr->data);
- char name[FILE_MAX];
-
- BLI_split_dirfile(value, NULL, name);
- BLI_strncpy(elem->name, name, sizeof(elem->name));
+ BLI_split_dirfile(value, NULL, elem->name, 0, sizeof(elem->name));
}*/
static void rna_Sequence_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
@@ -1202,7 +1190,7 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Overlay Offset", "");
RNA_def_property_int_funcs(prop, "rna_SequenceEditor_overlay_frame_get", "rna_SequenceEditor_overlay_frame_set", NULL);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
- RNA_def_property_ui_text(prop, "Active Strip", "Sequencers active strip");
+ RNA_def_property_ui_text(prop, "Active Strip", "Sequencer's active strip");
}
static void rna_def_filter_video(StructRNA *srna)
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 217d68860f2..c40548ade6b 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -177,14 +177,14 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "alpha");
RNA_def_property_range(prop, -5.0, 5.0);
RNA_def_property_ui_range(prop, -5.0, 5.0, 0.02, 5);
- RNA_def_property_ui_text(prop, "Density", "How much density effects smoke motion, higher value results in faster rising smoke");
+ RNA_def_property_ui_text(prop, "Density", "How much density affects smoke motion (higher value results in faster rising smoke)");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "beta", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "beta");
RNA_def_property_range(prop, -5.0, 5.0);
RNA_def_property_ui_range(prop, -5.0, 5.0, 0.02, 5);
- RNA_def_property_ui_text(prop, "Heat", "How much heat effects smoke motion, higher value results in faster rising smoke");
+ RNA_def_property_ui_text(prop, "Heat", "How much heat affects smoke motion (higher value results in faster rising smoke)");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "collision_group", PROP_POINTER, PROP_NONE);
@@ -245,7 +245,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "collision_extents", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "border_collisions");
RNA_def_property_enum_items(prop, smoke_domain_colli_items);
- RNA_def_property_ui_text(prop, "Border Collisions", "Selects which domain border will be treated as collision object");
+ RNA_def_property_ui_text(prop, "Border Collisions", "Select which domain border will be treated as collision object");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "effector_weights", PROP_POINTER, PROP_NONE);
@@ -289,12 +289,14 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
RNA_def_property_range(prop, 0.001, 1);
RNA_def_property_ui_range(prop, 0.001, 1.0, 1.0, 4);
RNA_def_property_ui_text(prop, "Density", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "temperature", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "temp");
RNA_def_property_range(prop, -10, 10);
RNA_def_property_ui_range(prop, -10, 10, 1, 1);
RNA_def_property_ui_text(prop, "Temp. Diff.", "Temperature difference to ambient temperature");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "psys");
@@ -306,20 +308,24 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_outflow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type", MOD_SMOKE_FLOW_TYPE_OUTFLOW);
RNA_def_property_ui_text(prop, "Outflow", "Delete smoke from simulation");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "use_absolute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_ABSOLUTE);
RNA_def_property_ui_text(prop, "Absolute Density", "Only allow given density value in emitter area");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "initial_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_INITVELOCITY);
- RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits it's velocity from the emitter particle");
+ RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits its velocity from the emitter particle");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
prop= RNA_def_property(srna, "velocity_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "vel_multi");
RNA_def_property_range(prop, -2.0, 2.0);
RNA_def_property_ui_range(prop, -2.0, 2.0, 0.05, 5);
RNA_def_property_ui_text(prop, "Multiplier", "Multiplier to adjust velocity passed to smoke");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
}
static void rna_def_smoke_coll_settings(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 8279bdc4a91..1bdc5b89687 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -907,7 +907,7 @@ static int rna_SpaceNodeEditor_node_tree_poll(PointerRNA *ptr, PointerRNA value)
return (ntree->nodetype==0 && ntree->type == snode->treetype);
}
-static void rna_SpaceNodeEditor_node_tree_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_SpaceNodeEditor_node_tree_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
{
SpaceNode *snode= (SpaceNode*)ptr->data;
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index 61c0605c73b..abe7f950195 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -133,7 +133,7 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
}
}
-static void rna_Texture_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Texture_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
Tex *tex= ptr->id.data;
@@ -162,7 +162,7 @@ static void rna_Texture_voxeldata_image_update(Main *bmain, Scene *scene, Pointe
/* Used for Texture Properties, used (also) for/in Nodes */
-static void rna_Texture_nodes_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Texture_nodes_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
Tex *tex= ptr->id.data;
@@ -177,7 +177,7 @@ static void rna_Texture_type_set(PointerRNA *ptr, int value)
tex_set_type(tex, value);
}
-void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+void rna_TextureSlot_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
ID *id= ptr->id.data;
@@ -398,12 +398,12 @@ static void rna_PointDensity_psys_set(PointerRNA *ptr, PointerRNA value)
pd->psys= BLI_findindex(&ob->particlesystem, value.data) + 1;
}
-static char *rna_PointDensity_path(PointerRNA *ptr)
+static char *rna_PointDensity_path(PointerRNA *UNUSED(ptr))
{
return BLI_sprintfN("point_density");
}
-static char *rna_VoxelData_path(PointerRNA *ptr)
+static char *rna_VoxelData_path(PointerRNA *UNUSED(ptr))
{
return BLI_sprintfN("voxel_data");
}
@@ -708,7 +708,7 @@ static EnumPropertyItem prop_noise_basis_items[] = {
{TEX_VORONOI_CRACKLE, "VORONOI_CRACKLE", 0, "Voronoi Crackle",
"Noise algorithm - Voronoi Crackle: Voronoi tessellation with sharp edges"},
{TEX_CELLNOISE, "CELL_NOISE", 0, "Cell Noise",
- "Noise algorithm - Cell Noise: Square cell tessallation"},
+ "Noise algorithm - Cell Noise: Square cell tessellation"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem prop_noise_type[] = {
@@ -1535,13 +1535,13 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
prop= RNA_def_property(srna, "particle_cache_space", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "psys_cache_space");
RNA_def_property_enum_items(prop, particle_cache_items);
- RNA_def_property_ui_text(prop, "Particle Cache", "Co-ordinate system to cache particles in");
+ RNA_def_property_ui_text(prop, "Particle Cache", "Coordinate system to cache particles in");
RNA_def_property_update(prop, 0, "rna_Texture_update");
prop= RNA_def_property(srna, "vertex_cache_space", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "ob_cache_space");
RNA_def_property_enum_items(prop, vertice_cache_items);
- RNA_def_property_ui_text(prop, "Vertices Cache", "Co-ordinate system to cache vertices in");
+ RNA_def_property_ui_text(prop, "Vertices Cache", "Coordinate system to cache vertices in");
RNA_def_property_update(prop, 0, "rna_Texture_update");
prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_NONE);
@@ -1667,9 +1667,9 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem voxeldata_extension[] = {
- {TEX_EXTEND, "EXTEND", 0, "Extend", "Extends by repeating edge pixels of the image"},
- {TEX_CLIP, "CLIP", 0, "Clip", "Clips to image size and sets exterior pixels as transparent"},
- {TEX_REPEAT, "REPEAT", 0, "Repeat", "Causes the image to repeat horizontally and vertically"},
+ {TEX_EXTEND, "EXTEND", 0, "Extend", "Extend by repeating edge pixels of the image"},
+ {TEX_CLIP, "CLIP", 0, "Clip", "Clip to image size and set exterior pixels as transparent"},
+ {TEX_REPEAT, "REPEAT", 0, "Repeat", "Cause the image to repeat horizontally and vertically"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem smoked_type_items[] = {
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index 2c2bc4704bf..2a62a39ef33 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -95,6 +95,8 @@ static ARegionType *region_type_find(ReportList *reports, int space_type, int re
static int panel_poll(const bContext *C, PanelType *pt)
{
+ extern FunctionRNA rna_Panel_poll_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
@@ -102,7 +104,7 @@ static int panel_poll(const bContext *C, PanelType *pt)
int visible;
RNA_pointer_create(NULL, pt->ext.srna, NULL, &ptr); /* dummy */
- func= RNA_struct_find_function(&ptr, "poll");
+ func= &rna_Panel_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -118,12 +120,14 @@ static int panel_poll(const bContext *C, PanelType *pt)
static void panel_draw(const bContext *C, Panel *pnl)
{
+ extern FunctionRNA rna_Panel_draw_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(&CTX_wm_screen(C)->id, pnl->type->ext.srna, pnl, &ptr);
- func= RNA_struct_find_function(&ptr, "draw");
+ func= &rna_Panel_draw_func;/* RNA_struct_find_function(&ptr, "draw"); */
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -134,12 +138,14 @@ static void panel_draw(const bContext *C, Panel *pnl)
static void panel_draw_header(const bContext *C, Panel *pnl)
{
+ extern FunctionRNA rna_Panel_draw_header_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(&CTX_wm_screen(C)->id, pnl->type->ext.srna, pnl, &ptr);
- func= RNA_struct_find_function(&ptr, "draw_header");
+ func= &rna_Panel_draw_header_func; /* RNA_struct_find_function(&ptr, "draw_header"); */
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -249,12 +255,14 @@ static StructRNA* rna_Panel_refine(PointerRNA *ptr)
static void header_draw(const bContext *C, Header *hdr)
{
+ extern FunctionRNA rna_Header_draw_func;
+
PointerRNA htr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(&CTX_wm_screen(C)->id, hdr->type->ext.srna, hdr, &htr);
- func= RNA_struct_find_function(&htr, "draw");
+ func= &rna_Header_draw_func; /* RNA_struct_find_function(&htr, "draw"); */
RNA_parameter_list_create(&list, &htr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -347,6 +355,8 @@ static StructRNA* rna_Header_refine(PointerRNA *htr)
static int menu_poll(const bContext *C, MenuType *pt)
{
+ extern FunctionRNA rna_Menu_poll_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
@@ -354,7 +364,7 @@ static int menu_poll(const bContext *C, MenuType *pt)
int visible;
RNA_pointer_create(NULL, pt->ext.srna, NULL, &ptr); /* dummy */
- func= RNA_struct_find_function(&ptr, "poll");
+ func= &rna_Menu_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -370,12 +380,14 @@ static int menu_poll(const bContext *C, MenuType *pt)
static void menu_draw(const bContext *C, Menu *hdr)
{
+ extern FunctionRNA rna_Menu_draw_func;
+
PointerRNA mtr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(&CTX_wm_screen(C)->id, hdr->type->ext.srna, hdr, &mtr);
- func= RNA_struct_find_function(&mtr, "draw");
+ func= &rna_Menu_draw_func; /* RNA_struct_find_function(&mtr, "draw"); */
RNA_parameter_list_create(&list, &mtr, func);
RNA_parameter_set_lookup(&list, "context", &C);
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 11157e67741..0c3ff108c03 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -72,7 +72,7 @@ static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Pointe
WM_main_add_notifier(NC_WINDOW, NULL);
}
-static void rna_userdef_dpi_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_userdef_dpi_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{
U.widget_unit = (U.dpi * 20 + 36)/72;
WM_main_add_notifier(NC_WINDOW, NULL); /* full redraw */
@@ -813,25 +813,25 @@ static void rna_def_userdef_theme_spaces_curves(StructRNA *srna, short incl_nurb
prop= RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "nurb_uline");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Nurb U-lines", "");
+ RNA_def_property_ui_text(prop, "NURBS U-lines", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "nurb_vline", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "nurb_vline");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Nurb V-lines", "");
+ RNA_def_property_ui_text(prop, "NURBS V-lines", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "nurb_sel_uline", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "nurb_sel_uline");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Nurb active U-lines", "");
+ RNA_def_property_ui_text(prop, "NURBS active U-lines", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "nurb_sel_vline", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "nurb_sel_vline");
RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Nurb active V-lines", "");
+ RNA_def_property_ui_text(prop, "NURBS active V-lines", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop= RNA_def_property(srna, "act_spline", PROP_FLOAT, PROP_COLOR_GAMMA);
@@ -1984,19 +1984,19 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_array(prop, 3);
RNA_def_property_float_array_default(prop, default_dir);
- RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining");
+ RNA_def_property_ui_text(prop, "Direction", "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_ui_text(prop, "Diffuse Color", "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_ui_text(prop, "Specular Color", "Color of the light's specular highlight");
RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
}
@@ -2511,20 +2511,22 @@ static void rna_def_userdef_system(BlenderRNA *brna)
/* locale according to http://www.roseindia.net/tutorials/I18N/locales-list.shtml */
/* if you edit here, please also edit the source/blender/blenfont/intern/blf_lang.c 's locales */
static EnumPropertyItem language_items[] = {
+ {0, "", 0, "Nearly done", ""},
{0, "DEFAULT", 0, N_("Default (Default)"), ""},
{1, "ENGLISH", 0, N_("English (English)"), "en_US"},
+ {8, "FRENCH", 0, N_("French (Français)"), "fr_FR"},
+ {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"},
+ {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"},
+ {0, "", 0, "In progress", ""},
{2, "JAPANESE", 0, N_("Japanese (日本語)"), "ja_JP"},
{3, "DUTCH", 0, N_("Dutch (Nederlandse taal)"), "nl_NL"},
{4, "ITALIAN", 0, N_("Italian (Italiano)"), "it_IT"},
{5, "GERMAN", 0, N_("German (Deutsch)"), "de_DE"},
{6, "FINNISH", 0, N_("Finnish (Suomi)"), "fi_FI"},
{7, "SWEDISH", 0, N_("Swedish (Svenska)"), "sv_SE"},
- {8, "FRENCH", 0, N_("French (Française)"), "fr_FR"},
- {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"},
{10, "CATALAN", 0, N_("Catalan (Català)"), "ca_AD"},
{11, "CZECH", 0, N_("Czech (Český)"), "cs_CZ"},
{12, "BRAZILIAN_PORTUGUESE", 0, N_("Brazilian Portuguese (Português do Brasil)"), "pt_BR"},
- {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"},
{14, "TRADITIONAL_CHINESE", 0, N_("Traditional Chinese (繁體中文)"), "zh_TW"},
{15, "RUSSIAN", 0, N_("Russian (Русский)"), "ru_RU"},
{16, "CROATIAN", 0, N_("Croatian (Hrvatski)"), "hr_HR"},
@@ -2539,7 +2541,7 @@ static void rna_def_userdef_system(BlenderRNA *brna)
{24, "KOREAN", 0, N_("Korean (한국 언어)"), "ko_KR"},
/*{25, "NEPALI", 0, N_("Nepali (नेपाली)"), "ne_NP"},*/
/* using the utf8 flipped form of Persian (فارسی) */
- {26, "PERSIAN", 0, N_("Persian (ﺱﺭﺎﻓ)"), "fa_PE"},
+ {26, "PERSIAN", 0, N_("Persian (ﯽﺳﺭﺎﻓ)"), "fa_PE"},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "UserPreferencesSystem", NULL);
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index e9df79acd4a..676fe1e092d 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -762,6 +762,8 @@ static void rna_Operator_unregister(struct Main *bmain, StructRNA *type)
static int operator_poll(bContext *C, wmOperatorType *ot)
{
+ extern FunctionRNA rna_Operator_poll_func;
+
PointerRNA ptr;
ParameterList list;
FunctionRNA *func;
@@ -769,7 +771,7 @@ static int operator_poll(bContext *C, wmOperatorType *ot)
int visible;
RNA_pointer_create(NULL, ot->ext.srna, NULL, &ptr); /* dummy */
- func= RNA_struct_find_function(&ptr, "poll");
+ func= &rna_Operator_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */
RNA_parameter_list_create(&list, &ptr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -785,6 +787,8 @@ static int operator_poll(bContext *C, wmOperatorType *ot)
static int operator_execute(bContext *C, wmOperator *op)
{
+ extern FunctionRNA rna_Operator_execute_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
@@ -792,7 +796,7 @@ static int operator_execute(bContext *C, wmOperator *op)
int result;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "execute");
+ func= &rna_Operator_execute_func; /* RNA_struct_find_function(&opr, "execute"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -809,6 +813,8 @@ static int operator_execute(bContext *C, wmOperator *op)
/* same as execute() but no return value */
static int operator_check(bContext *C, wmOperator *op)
{
+ extern FunctionRNA rna_Operator_check_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
@@ -816,7 +822,7 @@ static int operator_check(bContext *C, wmOperator *op)
int result;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "check");
+ func= &rna_Operator_check_func; /* RNA_struct_find_function(&opr, "check"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -832,6 +838,8 @@ static int operator_check(bContext *C, wmOperator *op)
static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
+ extern FunctionRNA rna_Operator_invoke_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
@@ -839,7 +847,7 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event)
int result;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "invoke");
+ func= &rna_Operator_invoke_func; /* RNA_struct_find_function(&opr, "invoke"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -857,6 +865,8 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* same as invoke */
static int operator_modal(bContext *C, wmOperator *op, wmEvent *event)
{
+ extern FunctionRNA rna_Operator_modal_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
@@ -864,7 +874,7 @@ static int operator_modal(bContext *C, wmOperator *op, wmEvent *event)
int result;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "modal");
+ func= &rna_Operator_modal_func; /* RNA_struct_find_function(&opr, "modal"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -881,12 +891,14 @@ static int operator_modal(bContext *C, wmOperator *op, wmEvent *event)
static void operator_draw(bContext *C, wmOperator *op)
{
+ extern FunctionRNA rna_Operator_draw_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "draw");
+ func= &rna_Operator_draw_func; /* RNA_struct_find_function(&opr, "draw"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -898,6 +910,8 @@ static void operator_draw(bContext *C, wmOperator *op)
/* same as exec(), but call cancel */
static int operator_cancel(bContext *C, wmOperator *op)
{
+ extern FunctionRNA rna_Operator_cancel_func;
+
PointerRNA opr;
ParameterList list;
FunctionRNA *func;
@@ -905,7 +919,7 @@ static int operator_cancel(bContext *C, wmOperator *op)
int result;
RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr);
- func= RNA_struct_find_function(&opr, "cancel");
+ func= &rna_Operator_cancel_func; /* RNA_struct_find_function(&opr, "cancel"); */
RNA_parameter_list_create(&list, &opr, func);
RNA_parameter_set_lookup(&list, "context", &C);
@@ -1689,7 +1703,7 @@ static void rna_def_keyconfig(BlenderRNA *brna)
prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "id");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "id", "ID of the item");
+ RNA_def_property_ui_text(prop, "ID", "ID of the item");
RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
prop= RNA_def_property(srna, "any", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c
index eb797158477..fe1408aead8 100644
--- a/source/blender/makesrna/intern/rna_world.c
+++ b/source/blender/makesrna/intern/rna_world.c
@@ -420,7 +420,7 @@ static void rna_def_world_mist(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "mistdist");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 10000, 10, 2);
- RNA_def_property_ui_text(prop, "Depth", "The distance over which the mist effect fades in");
+ RNA_def_property_ui_text(prop, "Depth", "Distance over which the mist effect fades in");
RNA_def_property_update(prop, 0, "rna_World_draw_mist_update");
prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_DISTANCE);
@@ -444,7 +444,7 @@ static void rna_def_world_stars(BlenderRNA *brna)
srna= RNA_def_struct(brna, "WorldStarsSettings", NULL);
RNA_def_struct_sdna(srna, "World");
RNA_def_struct_nested(brna, srna, "World");
- RNA_def_struct_ui_text(srna, "World Stars", "Stars setting for a World data-block");
+ RNA_def_struct_ui_text(srna, "World Stars", "Stars settings for a World data-block");
prop= RNA_def_property(srna, "use_stars", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_STARS);
diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py
index ae17ade36d7..ca610eeb024 100755
--- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py
+++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3.1
+#! /usr/bin/env python3
"""
This script is used to help cleaning RNA api.
@@ -8,7 +8,7 @@ Typical line in the input file (elements in [] are optional).
[comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target]
Geterate output format from blender run this:
- ./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
+ ./blender.bin --background -noaudio --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
"""
diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
index 8d2fe07b774..89d95b5a627 100755
--- a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
+++ b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3.1
+#! /usr/bin/env python3
import sys
diff --git a/source/blender/makesrna/rna_cleanup/rna_update.sh b/source/blender/makesrna/rna_cleanup/rna_update.sh
index a4d686cc482..e3119191cb2 100755
--- a/source/blender/makesrna/rna_cleanup/rna_update.sh
+++ b/source/blender/makesrna/rna_cleanup/rna_update.sh
@@ -1,5 +1,5 @@
cd ../../../../
-./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
+./blender.bin --background -noaudio --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
cd ./source/blender/makesrna/rna_cleanup/
./rna_cleaner.py out.txt
./rna_cleaner.py rna_properties.txt
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index 197e6a24342..3397dad2460 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -37,6 +37,7 @@
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
+#include "BLI_string.h"
#include "BKE_bmesh.h"
#include "BKE_cdderivedmesh.h"
diff --git a/source/blender/modifiers/intern/MOD_boolean_util.c b/source/blender/modifiers/intern/MOD_boolean_util.c
index 9d83e351b2b..01245ca4e01 100644
--- a/source/blender/modifiers/intern/MOD_boolean_util.c
+++ b/source/blender/modifiers/intern/MOD_boolean_util.c
@@ -43,6 +43,7 @@
#include "BLI_math.h"
#include "BLI_utildefines.h"
+#include "BLI_listbase.h"
#include "BLI_ghash.h"
#include "BKE_cdderivedmesh.h"
diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c
index b7cdac9e246..ad1e0806327 100644
--- a/source/blender/modifiers/intern/MOD_mask.c
+++ b/source/blender/modifiers/intern/MOD_mask.c
@@ -38,6 +38,8 @@
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
#include "BLI_ghash.h"
#include "DNA_armature_types.h"
diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c
index 486c98f82a0..663faf0ed19 100644
--- a/source/blender/modifiers/intern/MOD_screw.c
+++ b/source/blender/modifiers/intern/MOD_screw.c
@@ -357,7 +357,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
if (!totedge) {
for (i=0; i < totvert; i++, mv_orig++, mv_new++) {
copy_v3_v3(mv_new->co, mv_orig->co);
- normalize_v3_v3(vc->no, mv_new->co); /* no edges- this is realy a dummy normal */
+ normalize_v3_v3(vc->no, mv_new->co); /* no edges- this is really a dummy normal */
}
}
else {
diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c
index b2e3c9532b6..7c852527c3d 100644
--- a/source/blender/modifiers/intern/MOD_simpledeform.c
+++ b/source/blender/modifiers/intern/MOD_simpledeform.c
@@ -326,7 +326,7 @@ static void deformVerts(ModifierData *md, Object *ob,
DerivedMesh *dm = derivedData;
CustomDataMask dataMask = requiredDataMask(ob, md);
- /* we implement requiredDataMask but thats not really usefull since
+ /* we implement requiredDataMask but thats not really useful since
mesh_calc_modifiers pass a NULL derivedData */
if(dataMask)
dm= get_dm(ob, NULL, dm, NULL, 0);
@@ -346,7 +346,7 @@ static void deformVertsEM(ModifierData *md, Object *ob,
DerivedMesh *dm = derivedData;
CustomDataMask dataMask = requiredDataMask(ob, md);
- /* we implement requiredDataMask but thats not really usefull since
+ /* we implement requiredDataMask but thats not really useful since
mesh_calc_modifiers pass a NULL derivedData */
if(dataMask)
dm= get_dm(ob, editData, dm, NULL, 0);
diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c
index 757da28e4b5..f2e3a0d016a 100644
--- a/source/blender/modifiers/intern/MOD_solidify.c
+++ b/source/blender/modifiers/intern/MOD_solidify.c
@@ -40,6 +40,7 @@
#include "BLI_math.h"
#include "BLI_edgehash.h"
#include "BLI_utildefines.h"
+#include "BLI_string.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_mesh.h"
@@ -183,7 +184,7 @@ static void copyData(ModifierData *md, ModifierData *target)
tsmd->crease_outer = smd->crease_outer;
tsmd->crease_rim = smd->crease_rim;
tsmd->flag = smd->flag;
- strcpy(tsmd->defgrp_name, smd->defgrp_name);
+ BLI_strncpy(tsmd->defgrp_name, smd->defgrp_name, sizeof(tsmd->defgrp_name));
}
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c
index 5c58070be9d..6f4939ecbdd 100644
--- a/source/blender/nodes/composite/node_composite_tree.c
+++ b/source/blender/nodes/composite/node_composite_tree.c
@@ -183,6 +183,11 @@ static void local_merge(bNodeTree *localtree, bNodeTree *ntree)
}
}
+static void update(bNodeTree *ntree)
+{
+ ntreeSetOutput(ntree);
+}
+
bNodeTreeType ntreeType_Composite = {
/* type */ NTREE_COMPOSIT,
/* idname */ "NTCompositing Nodetree",
@@ -195,7 +200,7 @@ bNodeTreeType ntreeType_Composite = {
/* localize */ localize,
/* local_sync */ local_sync,
/* local_merge */ local_merge,
- /* update */ NULL,
+ /* update */ update,
/* update_node */ update_node
};
@@ -716,9 +721,9 @@ void ntreeCompositTagRender(Scene *curscene)
for(node= sce->nodetree->nodes.first; node; node= node->next) {
if(node->id==(ID *)curscene || node->type==CMP_NODE_COMPOSITE)
- NodeTagChanged(sce->nodetree, node);
+ nodeUpdate(sce->nodetree, node);
else if(node->type==CMP_NODE_TEXTURE) /* uses scene sizex/sizey */
- NodeTagChanged(sce->nodetree, node);
+ nodeUpdate(sce->nodetree, node);
}
}
}
@@ -745,7 +750,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
for (index=0; index<len; index++) {
if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
return 1;
}
}
@@ -763,7 +768,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
for (index=0; index<len; index++) {
if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
return 1;
}
}
@@ -789,18 +794,18 @@ int ntreeCompositTagAnimated(bNodeTree *ntree)
if(node->type==CMP_NODE_IMAGE) {
Image *ima= (Image *)node->id;
if(ima && ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
tagged= 1;
}
}
else if(node->type==CMP_NODE_TIME) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
tagged= 1;
}
/* here was tag render layer, but this is called after a render, so re-composites fail */
else if(node->type==NODE_GROUP) {
if( ntreeCompositTagAnimated((bNodeTree *)node->id) ) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
}
}
}
@@ -818,12 +823,12 @@ void ntreeCompositTagGenerators(bNodeTree *ntree)
for(node= ntree->nodes.first; node; node= node->next) {
if( ELEM(node->type, CMP_NODE_R_LAYERS, CMP_NODE_IMAGE))
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
}
}
/* XXX after render animation system gets a refresh, this call allows composite to end clean */
-void ntreeClearTags(bNodeTree *ntree)
+void ntreeCompositClearTags(bNodeTree *ntree)
{
bNode *node;
@@ -832,6 +837,6 @@ void ntreeClearTags(bNodeTree *ntree)
for(node= ntree->nodes.first; node; node= node->next) {
node->need_exec= 0;
if(node->type==NODE_GROUP)
- ntreeClearTags((bNodeTree *)node->id);
+ ntreeCompositClearTags((bNodeTree *)node->id);
}
}
diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c
index c18a35fdd98..5e32800fe45 100644
--- a/source/blender/nodes/composite/nodes/node_composite_image.c
+++ b/source/blender/nodes/composite/nodes/node_composite_image.c
@@ -38,7 +38,7 @@
/* **************** IMAGE (and RenderResult, multilayer image) ******************** */
static bNodeSocketTemplate cmp_node_rlayers_out[]= {
- { SOCK_RGBA, 0, "Image", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
+ { SOCK_RGBA, 0, "Image", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_FLOAT, 0, "Alpha", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_FLOAT, 0, "Z", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_VECTOR, 0, "Normal", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c
index b4f2bf31515..4e86ae79326 100644
--- a/source/blender/nodes/intern/node_common.c
+++ b/source/blender/nodes/intern/node_common.c
@@ -199,6 +199,9 @@ bNode *node_group_make_from_selected(bNodeTree *ntree)
}
}
+ /* node groups don't use internal cached data */
+ ntreeFreeCache(ngroup);
+
/* make group node */
ntemp.type = NODE_GROUP;
ntemp.ngroup = ngroup;
@@ -236,9 +239,11 @@ bNode *node_group_make_from_selected(bNodeTree *ntree)
}
}
+ /* update of the group tree */
ngroup->update |= NTREE_UPDATE;
ntreeUpdateTree(ngroup);
- ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS;
+ /* update of the tree containing the group instance node */
+ ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS;
ntreeUpdateTree(ntree);
return gnode;
@@ -556,7 +561,7 @@ int node_group_ungroup(bNodeTree *ntree, bNode *gnode)
/* free the group tree (takes care of user count) */
free_libblock(&G.main->nodetree, wgroup);
- ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS;
+ ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS;
ntreeUpdateTree(ntree);
return 1;
@@ -713,7 +718,7 @@ static bNodeSocket *group_verify_socket(bNodeTree *ntree, ListBase *lb, int in_o
if(sock) {
sock->groupsock = gsock;
- strcpy(sock->name, gsock->name);
+ BLI_strncpy(sock->name, gsock->name, sizeof(sock->name));
sock->type= gsock->type;
/* XXX hack: group socket input/output roles are inverted internally,
@@ -898,7 +903,7 @@ static void loop_sync(bNodeTree *ntree, int sync_in_out)
if (mirror->own_index == GET_INT_FROM_POINTER(sock->storage))
break;
/* make sure the name is the same (only for identification by user, no deeper meaning) */
- strcpy(mirror->name, sock->name);
+ BLI_strncpy(mirror->name, sock->name, sizeof(mirror->name));
/* fix the socket order if necessary */
if (mirror != sync) {
BLI_remlink(sync_lb, mirror);
diff --git a/source/blender/nodes/intern/node_exec.c b/source/blender/nodes/intern/node_exec.c
index 608347bc258..154f7613223 100644
--- a/source/blender/nodes/intern/node_exec.c
+++ b/source/blender/nodes/intern/node_exec.c
@@ -174,11 +174,13 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree)
exec->stacksize = index;
exec->stack = MEM_callocN(exec->stacksize * sizeof(bNodeStack), "bNodeStack");
+ /* all non-const results are considered inputs */
+ for (n=0; n < exec->stacksize; ++n)
+ exec->stack[n].hasinput = 1;
+
/* prepare group tree inputs */
for (sock=ntree->inputs.first; sock; sock=sock->next) {
- ns = setup_stack(exec->stack, sock);
- if (ns->hasoutput)
- ns->hasinput = 1;
+ /* ns = */ setup_stack(exec->stack, sock);
}
/* prepare all internal nodes for execution */
for(n=0, nodeexec= exec->nodeexec; n < totnodes; ++n, ++nodeexec) {
@@ -191,14 +193,12 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree)
node->need_exec= 0;
ns = setup_stack(exec->stack, sock);
- if (ns->hasoutput)
- ns->hasinput = 1;
+ ns->hasoutput = 1;
}
/* tag all outputs */
for (sock=node->outputs.first; sock; sock=sock->next) {
- ns = setup_stack(exec->stack, sock);
- ns->hasoutput = 1;
+ /* ns = */ setup_stack(exec->stack, sock);
}
if(node->typeinfo->initexecfunc)
diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c
index 5563c20559c..ec205abe76c 100644
--- a/source/blender/nodes/intern/node_socket.c
+++ b/source/blender/nodes/intern/node_socket.c
@@ -407,15 +407,15 @@ static bNodeSocket *verify_socket_template(bNodeTree *ntree, bNode *node, int in
static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_out, ListBase *socklist, bNodeSocketTemplate *stemp_first)
{
- bNodeSocket *sock;
+ bNodeSocket *sock, *nextsock;
bNodeSocketTemplate *stemp;
/* no inputs anymore? */
if(stemp_first==NULL) {
- while(socklist->first) {
- sock = (bNodeSocket*)socklist->first;
+ for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) {
+ nextsock = sock->next;
if (!(sock->flag & SOCK_DYNAMIC))
- nodeRemoveSocket(ntree, node, socklist->first);
+ nodeRemoveSocket(ntree, node, sock);
}
}
else {
@@ -426,10 +426,10 @@ static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_ou
stemp++;
}
/* leftovers are removed */
- while(socklist->first) {
- sock = (bNodeSocket*)socklist->first;
+ for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) {
+ nextsock = sock->next;
if (!(sock->flag & SOCK_DYNAMIC))
- nodeRemoveSocket(ntree, node, socklist->first);
+ nodeRemoveSocket(ntree, node, sock);
}
/* and we put back the verified sockets */
diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c
index bb2e82fb033..34f0a7ffa2e 100644
--- a/source/blender/nodes/shader/node_shader_tree.c
+++ b/source/blender/nodes/shader/node_shader_tree.c
@@ -102,6 +102,11 @@ static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
}
}
+static void update(bNodeTree *ntree)
+{
+ ntreeSetOutput(ntree);
+}
+
bNodeTreeType ntreeType_Shader = {
/* type */ NTREE_SHADER,
/* id_name */ "NTShader Nodetree",
@@ -114,7 +119,7 @@ bNodeTreeType ntreeType_Shader = {
/* localize */ NULL,
/* local_sync */ local_sync,
/* local_merge */ NULL,
- /* update */ NULL,
+ /* update */ update,
/* update_node */ NULL
};
diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c
index 603aa7ceb77..2b016177820 100644
--- a/source/blender/nodes/texture/node_texture_tree.c
+++ b/source/blender/nodes/texture/node_texture_tree.c
@@ -108,7 +108,7 @@ int ntreeTexTagAnimated(bNodeTree *ntree)
for(node= ntree->nodes.first; node; node= node->next) {
if(node->type==TEX_NODE_CURVE_TIME) {
- NodeTagChanged(ntree, node);
+ nodeUpdate(ntree, node);
return 1;
}
else if(node->type==NODE_GROUP) {
diff --git a/source/blender/python/generic/IDProp.c b/source/blender/python/generic/IDProp.c
index e6883eb30af..1524812086b 100644
--- a/source/blender/python/generic/IDProp.c
+++ b/source/blender/python/generic/IDProp.c
@@ -254,7 +254,7 @@ static PyObject *BPy_IDGroup_Map_GetItem(BPy_IDProperty *self, PyObject *item)
idprop= IDP_GetPropertyFromGroup(self->prop, name);
- if(idprop==NULL) {
+ if (idprop==NULL) {
PyErr_SetString(PyExc_KeyError, "key not in subgroup dict");
return NULL;
}
@@ -273,20 +273,20 @@ static int idp_sequence_type(PyObject *seq)
for (i=0; i < len; i++) {
item = PySequence_GetItem(seq, i);
if (PyFloat_Check(item)) {
- if(type == IDP_IDPARRAY) { /* mixed dict/int */
+ if (type == IDP_IDPARRAY) { /* mixed dict/int */
Py_DECREF(item);
return -1;
}
type= IDP_DOUBLE;
}
else if (PyLong_Check(item)) {
- if(type == IDP_IDPARRAY) { /* mixed dict/int */
+ if (type == IDP_IDPARRAY) { /* mixed dict/int */
Py_DECREF(item);
return -1;
}
}
else if (PyMapping_Check(item)) {
- if(i != 0 && (type != IDP_IDPARRAY)) { /* mixed dict/int */
+ if (i != 0 && (type != IDP_IDPARRAY)) { /* mixed dict/int */
Py_DECREF(item);
return -1;
}
@@ -309,7 +309,7 @@ const char *BPy_IDProperty_Map_ValidateAndCreate(const char *name, IDProperty *g
IDProperty *prop = NULL;
IDPropertyTemplate val = {0};
- if(strlen(name) >= sizeof(group->name))
+ if (strlen(name) >= sizeof(group->name))
return "the length of IDProperty names is limited to 31 characters";
if (PyFloat_Check(ob)) {
@@ -335,7 +335,7 @@ const char *BPy_IDProperty_Map_ValidateAndCreate(const char *name, IDProperty *g
PyObject *item;
int i;
- if((val.array.type= idp_sequence_type(ob)) == -1)
+ if ((val.array.type= idp_sequence_type(ob)) == -1)
return "only floats, ints and dicts are allowed in ID property arrays";
/*validate sequence and derive type.
@@ -369,7 +369,7 @@ const char *BPy_IDProperty_Map_ValidateAndCreate(const char *name, IDProperty *g
error= BPy_IDProperty_Map_ValidateAndCreate("", prop, item);
Py_DECREF(item);
- if(error)
+ if (error)
return error;
}
break;
@@ -415,7 +415,7 @@ const char *BPy_IDProperty_Map_ValidateAndCreate(const char *name, IDProperty *g
}
else return "invalid property value";
- if(group->type==IDP_IDPARRAY) {
+ if (group->type==IDP_IDPARRAY) {
IDP_AppendArray(group, prop);
// IDP_FreeProperty(item); // IDP_AppendArray does a shallow copy (memcpy), only free memory
MEM_freeN(prop);
@@ -598,7 +598,7 @@ static PyObject *BPy_IDGroup_Pop(BPy_IDProperty *self, PyObject *value)
idprop= IDP_GetPropertyFromGroup(self->prop, name);
- if(idprop) {
+ if (idprop) {
pyform = BPy_IDGroup_MapDataToPy(idprop);
if (!pyform) {
@@ -1050,7 +1050,7 @@ static PyObject *BPy_IDArray_slice(BPy_IDArray *self, int begin, int end)
case IDP_FLOAT:
{
float *array= (float*)IDP_Array(prop);
- for(count = begin; count < end; count++) {
+ for (count = begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(array[count]));
}
break;
@@ -1058,7 +1058,7 @@ static PyObject *BPy_IDArray_slice(BPy_IDArray *self, int begin, int end)
case IDP_DOUBLE:
{
double *array= (double*)IDP_Array(prop);
- for(count = begin; count < end; count++) {
+ for (count = begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(array[count]));
}
break;
@@ -1066,7 +1066,7 @@ static PyObject *BPy_IDArray_slice(BPy_IDArray *self, int begin, int end)
case IDP_INT:
{
int *array= (int*)IDP_Array(prop);
- for(count = begin; count < end; count++) {
+ for (count = begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyLong_FromLong(array[count]));
}
break;
@@ -1094,7 +1094,7 @@ static int BPy_IDArray_ass_slice(BPy_IDArray *self, int begin, int end, PyObject
alloc_len= size * elem_size;
vec= MEM_mallocN(alloc_len, "array assignment"); /* NOTE: we count on int/float being the same size here */
- if(PyC_AsArray(vec, seq, size, py_type, is_double, "slice assignment: ") == -1) {
+ if (PyC_AsArray(vec, seq, size, py_type, is_double, "slice assignment: ") == -1) {
MEM_freeN(vec);
return -1;
}
diff --git a/source/blender/python/generic/bgl.c b/source/blender/python/generic/bgl.c
index 35c211d5424..e8dd0274568 100644
--- a/source/blender/python/generic/bgl.c
+++ b/source/blender/python/generic/bgl.c
@@ -95,7 +95,7 @@ static PyObject *Buffer_to_list_recursive(Buffer *self)
{
PyObject *list;
- if(self->ndimensions > 1) {
+ if (self->ndimensions > 1) {
int i, len= self->dimensions[0];
list= PyList_New(len);
@@ -213,7 +213,7 @@ PyTypeObject BGL_bufferType = {
static PyObject *Method_##funcname (PyObject *UNUSED(self), PyObject *args) {\
arg_def##nargs arg_list; \
ret_def_##ret; \
- if(!PyArg_ParseTuple(args, arg_str##nargs arg_list, arg_ref##nargs arg_list)) return NULL;\
+ if (!PyArg_ParseTuple(args, arg_str##nargs arg_list, arg_ref##nargs arg_list)) return NULL;\
ret_set_##ret gl##funcname (arg_var##nargs arg_list);\
ret_ret_##ret; \
}
@@ -222,7 +222,7 @@ static PyObject *Method_##funcname (PyObject *UNUSED(self), PyObject *args) {\
static PyObject *Method_##funcname (PyObject *UNUSED(self), PyObject *args) {\
arg_def##nargs arg_list; \
ret_def_##ret; \
- if(!PyArg_ParseTuple(args, arg_str##nargs arg_list, arg_ref##nargs arg_list)) return NULL;\
+ if (!PyArg_ParseTuple(args, arg_str##nargs arg_list, arg_ref##nargs arg_list)) return NULL;\
ret_set_##ret glu##funcname (arg_var##nargs arg_list);\
ret_ret_##ret; \
}
@@ -289,7 +289,7 @@ static PyObject *Buffer_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject
int type;
Py_ssize_t i, ndimensions = 0;
- if(kwds && PyDict_Size(kwds)) {
+ if (kwds && PyDict_Size(kwds)) {
PyErr_SetString(PyExc_TypeError,
"bgl.Buffer(): takes no keyword args");
return NULL;
@@ -307,7 +307,7 @@ static PyObject *Buffer_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject
if (PyLong_Check(length_ob)) {
ndimensions= 1;
- if(((dimensions[0]= PyLong_AsLong(length_ob)) < 1)) {
+ if (((dimensions[0]= PyLong_AsLong(length_ob)) < 1)) {
PyErr_SetString(PyExc_AttributeError,
"dimensions must be between 1 and "STRINGIFY(MAX_DIMENSIONS));
return NULL;
@@ -332,7 +332,7 @@ static PyObject *Buffer_new(PyTypeObject *UNUSED(type), PyObject *args, PyObject
else dimensions[i]= PyLong_AsLong(ob);
Py_DECREF(ob);
- if(dimensions[i] < 1) {
+ if (dimensions[i] < 1) {
PyErr_SetString(PyExc_AttributeError,
"dimensions must be between 1 and "STRINGIFY(MAX_DIMENSIONS));
return NULL;
@@ -490,7 +490,7 @@ static int Buffer_ass_slice(Buffer *self, int begin, int end, PyObject *seq)
for (count= begin; count < end; count++) {
item= PySequence_GetItem(seq, count - begin);
- if(item) {
+ if (item) {
err= Buffer_ass_item(self, count, item);
Py_DECREF(item);
}
@@ -1293,7 +1293,7 @@ PyObject *BPyInit_bgl(void)
submodule= PyModule_Create(&BGL_module_def);
dict= PyModule_GetDict(submodule);
- if(PyType_Ready(&BGL_bufferType) < 0)
+ if (PyType_Ready(&BGL_bufferType) < 0)
return NULL; /* should never happen */
diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c
index d29bc798399..0346c421f68 100644
--- a/source/blender/python/generic/bpy_internal_import.c
+++ b/source/blender/python/generic/bpy_internal_import.c
@@ -62,7 +62,7 @@ void bpy_import_init(PyObject *builtins)
/* move reload here
* XXX, use import hooks */
mod= PyImport_ImportModuleLevel((char *)"imp", NULL, NULL, NULL, 0);
- if(mod) {
+ if (mod) {
PyDict_SetItemString(PyModule_GetDict(mod), "reload", item=PyCFunction_New(&bpy_reload_meth, NULL)); Py_DECREF(item);
Py_DECREF(mod);
}
@@ -74,7 +74,7 @@ void bpy_import_init(PyObject *builtins)
static void free_compiled_text(Text *text)
{
- if(text->compiled) {
+ if (text->compiled) {
Py_DECREF((PyObject *)text->compiled);
}
text->compiled= NULL;
@@ -102,7 +102,7 @@ PyObject *bpy_text_import(Text *text)
char modulename[24];
int len;
- if(!text->compiled) {
+ if (!text->compiled) {
char fn_dummy[256];
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
@@ -110,7 +110,7 @@ PyObject *bpy_text_import(Text *text)
text->compiled= Py_CompileString(buf, fn_dummy, Py_file_input);
MEM_freeN(buf);
- if(PyErr_Occurred()) {
+ if (PyErr_Occurred()) {
PyErr_Print();
PyErr_Clear();
PySys_SetObject("last_traceback", NULL);
@@ -135,7 +135,7 @@ PyObject *bpy_text_import_name(char *name, int *found)
*found= 0;
- if(!maggie) {
+ if (!maggie) {
printf("ERROR: bpy_import_main_set() was not called before running python. this is a bug.\n");
return NULL;
}
@@ -147,7 +147,7 @@ PyObject *bpy_text_import_name(char *name, int *found)
text= BLI_findstring(&maggie->text, txtname, offsetof(ID, name) + 2);
- if(!text)
+ if (!text)
return NULL;
else
*found= 1;
@@ -169,7 +169,7 @@ PyObject *bpy_text_reimport(PyObject *module, int *found)
//XXX Main *maggie= bpy_import_main ? bpy_import_main:G.main;
Main *maggie= bpy_import_main;
- if(!maggie) {
+ if (!maggie) {
printf("ERROR: bpy_import_main_set() was not called before running python. this is a bug.\n");
return NULL;
}
@@ -177,24 +177,24 @@ PyObject *bpy_text_reimport(PyObject *module, int *found)
*found= 0;
/* get name, filename from the module itself */
- if((name= PyModule_GetName(module)) == NULL)
+ if ((name= PyModule_GetName(module)) == NULL)
return NULL;
- if((filepath= (char *)PyModule_GetFilename(module)) == NULL)
+ if ((filepath= (char *)PyModule_GetFilename(module)) == NULL)
return NULL;
/* look up the text object */
text= BLI_findstring(&maggie->text, BLI_path_basename(filepath), offsetof(ID, name) + 2);
/* uh-oh.... didn't find it */
- if(!text)
+ if (!text)
return NULL;
else
*found= 1;
/* if previously compiled, free the object */
/* (can't see how could be NULL, but check just in case) */
- if(text->compiled){
+ if (text->compiled) {
Py_DECREF((PyObject *)text->compiled);
}
@@ -204,7 +204,7 @@ PyObject *bpy_text_reimport(PyObject *module, int *found)
MEM_freeN(buf);
/* if compile failed.... return this error */
- if(PyErr_Occurred()) {
+ if (PyErr_Occurred()) {
PyErr_Print();
PyErr_Clear();
PySys_SetObject("last_traceback", NULL);
@@ -229,14 +229,14 @@ static PyObject *blender_import(PyObject *UNUSED(self), PyObject *args, PyObject
//PyObject_Print(args, stderr, 0);
static const char *kwlist[]= {"name", "globals", "locals", "fromlist", "level", NULL};
- if(!PyArg_ParseTupleAndKeywords(args, kw, "s|OOOi:bpy_import_meth", (char **)kwlist,
+ if (!PyArg_ParseTupleAndKeywords(args, kw, "s|OOOi:bpy_import_meth", (char **)kwlist,
&name, &globals, &locals, &fromlist, &level))
return NULL;
/* import existing builtin modules or modules that have been imported already */
newmodule= PyImport_ImportModuleLevel(name, globals, locals, fromlist, level);
- if(newmodule)
+ if (newmodule)
return newmodule;
PyErr_Fetch(&exception, &err, &tb); /* get the python error incase we cant import as blender text either */
@@ -244,7 +244,7 @@ static PyObject *blender_import(PyObject *UNUSED(self), PyObject *args, PyObject
/* importing from existing modules failed, see if we have this module as blender text */
newmodule= bpy_text_import_name(name, &found);
- if(newmodule) {/* found module as blender text, ignore above exception */
+ if (newmodule) {/* found module as blender text, ignore above exception */
PyErr_Clear();
Py_XDECREF(exception);
Py_XDECREF(err);
@@ -278,14 +278,14 @@ static PyObject *blender_reload(PyObject *UNUSED(self), PyObject *module)
/* try reimporting from file */
newmodule= PyImport_ReloadModule(module);
- if(newmodule)
+ if (newmodule)
return newmodule;
/* no file, try importing from memory */
PyErr_Fetch(&exception, &err, &tb); /*restore for probable later use */
newmodule= bpy_text_reimport(module, &found);
- if(newmodule) {/* found module as blender text, ignore above exception */
+ if (newmodule) {/* found module as blender text, ignore above exception */
PyErr_Clear();
Py_XDECREF(exception);
Py_XDECREF(err);
@@ -359,10 +359,10 @@ void bpy_text_clear_modules(int clear_all)
*/
while (PyDict_Next(modules, &pos, &key, &value)) {
fname= PyModule_GetFilename(value);
- if(fname) {
+ if (fname) {
if (clear_all || ((strstr(fname, SEPSTR))==0)) { /* no path ? */
file_extension= strstr(fname, ".py");
- if(file_extension && (*(file_extension + 3) == '\0' || *(file_extension + 4) == '\0')) { /* .py or pyc extension? */
+ if (file_extension && (*(file_extension + 3) == '\0' || *(file_extension + 4) == '\0')) { /* .py or pyc extension? */
/* now we can be fairly sure its a python import from the blendfile */
PyList_Append(list, key); /* free'd with the list */
}
@@ -374,7 +374,7 @@ void bpy_text_clear_modules(int clear_all)
}
/* remove all our modules */
- for(pos=0; pos < PyList_GET_SIZE(list); pos++) {
+ for (pos=0; pos < PyList_GET_SIZE(list); pos++) {
/* PyObject_Print(key, stderr, 0); */
key= PyList_GET_ITEM(list, pos);
PyDict_DelItem(modules, key);
diff --git a/source/blender/python/generic/noise_py_api.c b/source/blender/python/generic/noise_py_api.c
index 7be0998c0a1..2171f1f7f39 100644
--- a/source/blender/python/generic/noise_py_api.c
+++ b/source/blender/python/generic/noise_py_api.c
@@ -136,7 +136,7 @@ static void init_genrand(unsigned long s)
{
int j;
state[0] = s & 0xffffffffUL;
- for(j = 1; j < N; j++) {
+ for (j = 1; j < N; j++) {
state[j] =
(1812433253UL *
(state[j - 1] ^ (state[j - 1] >> 30)) + j);
@@ -157,16 +157,16 @@ static void next_state(void)
/* if init_genrand() has not been called, */
/* a default initial seed is used */
- if(initf == 0)
+ if (initf == 0)
init_genrand(5489UL);
left = N;
next = state;
- for(j = N - M + 1; --j; p++)
+ for (j = N - M + 1; --j; p++)
*p = p[M] ^ TWIST(p[0], p[1]);
- for(j = M; --j; p++)
+ for (j = M; --j; p++)
*p = p[M - N] ^ TWIST(p[0], p[1]);
*p = p[M - N] ^ TWIST(p[0], state[0]);
@@ -176,7 +176,7 @@ static void next_state(void)
static void setRndSeed(int seed)
{
- if(seed == 0)
+ if (seed == 0)
init_genrand(time(NULL));
else
init_genrand(seed);
@@ -187,7 +187,7 @@ static float frand(void)
{
unsigned long y;
- if(--left == 0)
+ if (--left == 0)
next_state();
y = *next++;
@@ -207,7 +207,7 @@ static void randuvec(float v[3])
{
float r;
v[2] = 2.f * frand() - 1.f;
- if((r = 1.f - v[2] * v[2]) > 0.f) {
+ if ((r = 1.f - v[2] * v[2]) > 0.f) {
float a = (float)(6.283185307f * frand());
r = (float)sqrt(r);
v[0] = (float)(r * cosf(a));
@@ -237,7 +237,7 @@ static PyObject *Noise_random_unit_vector(PyObject *UNUSED(self))
static PyObject *Noise_seed_set(PyObject *UNUSED(self), PyObject *args)
{
int s;
- if(!PyArg_ParseTuple(args, "i:seed_set", &s))
+ if (!PyArg_ParseTuple(args, "i:seed_set", &s))
return NULL;
setRndSeed(s);
Py_RETURN_NONE;
@@ -251,7 +251,7 @@ static PyObject *Noise_noise(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)|i:noise", &x, &y, &z, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)|i:noise", &x, &y, &z, &nb))
return NULL;
return PyFloat_FromDouble((2.0f * BLI_gNoise(1.0f, x, y, z, 0, nb) - 1.0f));
@@ -275,7 +275,7 @@ static PyObject *Noise_vector(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, v[3];
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)|i:vector", &x, &y, &z, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)|i:vector", &x, &y, &z, &nb))
return NULL;
noise_vector(x, y, z, nb, v);
return Py_BuildValue("[fff]", v[0], v[1], v[2]);
@@ -292,15 +292,15 @@ static float turb(float x, float y, float z, int oct, int hard, int nb,
int i;
amp = 1.f;
out = (float)(2.0f * BLI_gNoise(1.f, x, y, z, 0, nb) - 1.0f);
- if(hard)
+ if (hard)
out = (float)fabs(out);
- for(i = 1; i < oct; i++) {
+ for (i = 1; i < oct; i++) {
amp *= ampscale;
x *= freqscale;
y *= freqscale;
z *= freqscale;
t = (float)(amp * (2.0f * BLI_gNoise(1.f, x, y, z, 0, nb) - 1.0f));
- if(hard)
+ if (hard)
t = (float)fabs(t);
out += t;
}
@@ -312,7 +312,7 @@ static PyObject *Noise_turbulence(PyObject *UNUSED(self), PyObject *args)
float x, y, z;
int oct, hd, nb = 1;
float as = 0.5, fs = 2.0;
- if(!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence", &x, &y, &z, &oct, &hd, &nb, &as, &fs))
+ if (!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence", &x, &y, &z, &oct, &hd, &nb, &as, &fs))
return NULL;
return PyFloat_FromDouble(turb(x, y, z, oct, hd, nb, as, fs));
@@ -329,18 +329,18 @@ static void vTurb(float x, float y, float z, int oct, int hard, int nb,
int i;
amp = 1.f;
noise_vector(x, y, z, nb, v);
- if(hard) {
+ if (hard) {
v[0] = (float)fabs(v[0]);
v[1] = (float)fabs(v[1]);
v[2] = (float)fabs(v[2]);
}
- for(i = 1; i < oct; i++) {
+ for (i = 1; i < oct; i++) {
amp *= ampscale;
x *= freqscale;
y *= freqscale;
z *= freqscale;
noise_vector(x, y, z, nb, t);
- if(hard) {
+ if (hard) {
t[0] = (float)fabs(t[0]);
t[1] = (float)fabs(t[1]);
t[2] = (float)fabs(t[2]);
@@ -356,7 +356,7 @@ static PyObject *Noise_turbulence_vector(PyObject *UNUSED(self), PyObject *args)
float x, y, z, v[3];
int oct, hd, nb = 1;
float as = 0.5, fs = 2.0;
- if(!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence_vector", &x, &y, &z, &oct, &hd, &nb, &as, &fs))
+ if (!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence_vector", &x, &y, &z, &oct, &hd, &nb, &as, &fs))
return NULL;
vTurb(x, y, z, oct, hd, nb, as, fs, v);
return Py_BuildValue("[fff]", v[0], v[1], v[2]);
@@ -370,7 +370,7 @@ static PyObject *Noise_fractal(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, H, lac, oct;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)fff|i:fractal", &x, &y, &z, &H, &lac, &oct, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)fff|i:fractal", &x, &y, &z, &H, &lac, &oct, &nb))
return NULL;
return PyFloat_FromDouble(mg_fBm(x, y, z, H, lac, oct, nb));
}
@@ -381,7 +381,7 @@ static PyObject *Noise_multi_fractal(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, H, lac, oct;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)fff|i:multi_fractal", &x, &y, &z, &H, &lac, &oct, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)fff|i:multi_fractal", &x, &y, &z, &H, &lac, &oct, &nb))
return NULL;
return PyFloat_FromDouble(mg_MultiFractal(x, y, z, H, lac, oct, nb));
@@ -393,7 +393,7 @@ static PyObject *Noise_vl_vector(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, d;
int nt1 = 1, nt2 = 1;
- if(!PyArg_ParseTuple(args, "(fff)f|ii:vl_vector", &x, &y, &z, &d, &nt1, &nt2))
+ if (!PyArg_ParseTuple(args, "(fff)f|ii:vl_vector", &x, &y, &z, &d, &nt1, &nt2))
return NULL;
return PyFloat_FromDouble(mg_VLNoise(x, y, z, d, nt1, nt2));
}
@@ -404,7 +404,7 @@ static PyObject *Noise_hetero_terrain(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, H, lac, oct, ofs;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)ffff|i:hetero_terrain", &x, &y, &z, &H, &lac, &oct, &ofs, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)ffff|i:hetero_terrain", &x, &y, &z, &H, &lac, &oct, &ofs, &nb))
return NULL;
return PyFloat_FromDouble(mg_HeteroTerrain(x, y, z, H, lac, oct, ofs, nb));
@@ -416,7 +416,7 @@ static PyObject *Noise_hybrid_multi_fractal(PyObject *UNUSED(self), PyObject *ar
{
float x, y, z, H, lac, oct, ofs, gn;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)fffff|i:hybrid_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)fffff|i:hybrid_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb))
return NULL;
return PyFloat_FromDouble(mg_HybridMultiFractal(x, y, z, H, lac, oct, ofs, gn, nb));
@@ -428,7 +428,7 @@ static PyObject *Noise_ridged_multi_fractal(PyObject *UNUSED(self), PyObject *ar
{
float x, y, z, H, lac, oct, ofs, gn;
int nb = 1;
- if(!PyArg_ParseTuple(args, "(fff)fffff|i:ridged_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb))
+ if (!PyArg_ParseTuple(args, "(fff)fffff|i:ridged_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb))
return NULL;
return PyFloat_FromDouble(mg_RidgedMultiFractal(x, y, z, H, lac, oct, ofs, gn, nb));
}
@@ -440,7 +440,7 @@ static PyObject *Noise_voronoi(PyObject *UNUSED(self), PyObject *args)
float x, y, z, da[4], pa[12];
int dtype = 0;
float me = 2.5; /* default minkovsky exponent */
- if(!PyArg_ParseTuple(args, "(fff)|if:voronoi", &x, &y, &z, &dtype, &me))
+ if (!PyArg_ParseTuple(args, "(fff)|if:voronoi", &x, &y, &z, &dtype, &me))
return NULL;
voronoi(x, y, z, da, pa, me, dtype);
return Py_BuildValue("[[ffff][[fff][fff][fff][fff]]]",
@@ -455,7 +455,7 @@ static PyObject *Noise_voronoi(PyObject *UNUSED(self), PyObject *args)
static PyObject *Noise_cell(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z;
- if(!PyArg_ParseTuple(args, "(fff):cell", &x, &y, &z))
+ if (!PyArg_ParseTuple(args, "(fff):cell", &x, &y, &z))
return NULL;
return PyFloat_FromDouble(cellNoise(x, y, z));
@@ -466,7 +466,7 @@ static PyObject *Noise_cell(PyObject *UNUSED(self), PyObject *args)
static PyObject *Noise_cell_vector(PyObject *UNUSED(self), PyObject *args)
{
float x, y, z, ca[3];
- if(!PyArg_ParseTuple(args, "(fff):cell_vector", &x, &y, &z))
+ if (!PyArg_ParseTuple(args, "(fff):cell_vector", &x, &y, &z))
return NULL;
cellNoiseV(x, y, z, ca);
return Py_BuildValue("[fff]", ca[0], ca[1], ca[2]);
@@ -698,7 +698,7 @@ PyObject *BPyInit_noise(void)
setRndSeed(0);
/* Constant noisetype dictionary */
- if(submodule) {
+ if (submodule) {
static PyStructSequence_Field noise_types_fields[] = {
{(char *)"BLENDER", NULL},
{(char *)"STDPERLIN", NULL},
@@ -747,7 +747,7 @@ PyObject *BPyInit_noise(void)
PyModule_AddObject(submodule, "types", noise_types);
}
- if(submodule) {
+ if (submodule) {
static PyStructSequence_Field distance_metrics_fields[] = {
{(char *)"DISTANCE", NULL},
{(char *)"DISTANCE_SQUARED", NULL},
diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c
index bf14102bb0d..575495e186e 100644
--- a/source/blender/python/generic/py_capi_utils.c
+++ b/source/blender/python/generic/py_capi_utils.c
@@ -30,7 +30,7 @@
#include "py_capi_utils.h"
-#include "BKE_font.h" /* only for utf8towchar, should replace with py funcs but too late in release now */
+#include "BLI_string_utf8.h" /* only for BLI_strncpy_wchar_from_utf8, should replace with py funcs but too late in release now */
#ifdef _WIN32 /* BLI_setenv */
#include "BLI_path_util.h"
@@ -43,13 +43,13 @@ int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObje
int value_len;
int i;
- if(!(value_fast=PySequence_Fast(value, error_prefix))) {
+ if (!(value_fast=PySequence_Fast(value, error_prefix))) {
return -1;
}
value_len= PySequence_Fast_GET_SIZE(value_fast);
- if(value_len != length) {
+ if (value_len != length) {
Py_DECREF(value);
PyErr_Format(PyExc_TypeError,
"%.200s: invalid sequence length. expected %d, got %d",
@@ -58,30 +58,30 @@ int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObje
}
/* for each type */
- if(type == &PyFloat_Type) {
- if(is_double) {
+ if (type == &PyFloat_Type) {
+ if (is_double) {
double *array_double= array;
- for(i=0; i<length; i++) {
+ for (i=0; i<length; i++) {
array_double[i]= PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value_fast, i));
}
}
else {
float *array_float= array;
- for(i=0; i<length; i++) {
+ for (i=0; i<length; i++) {
array_float[i]= PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value_fast, i));
}
}
}
- else if(type == &PyLong_Type) {
+ else if (type == &PyLong_Type) {
/* could use is_double for 'long int' but no use now */
int *array_int= array;
- for(i=0; i<length; i++) {
+ for (i=0; i<length; i++) {
array_int[i]= PyLong_AsSsize_t(PySequence_Fast_GET_ITEM(value_fast, i));
}
}
- else if(type == &PyBool_Type) {
+ else if (type == &PyBool_Type) {
int *array_bool= array;
- for(i=0; i<length; i++) {
+ for (i=0; i<length; i++) {
array_bool[i]= (PyLong_AsSsize_t(PySequence_Fast_GET_ITEM(value_fast, i)) != 0);
}
}
@@ -95,7 +95,7 @@ int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObje
Py_DECREF(value_fast);
- if(PyErr_Occurred()) {
+ if (PyErr_Occurred()) {
PyErr_Format(PyExc_TypeError,
"%s: one or more items could not be used as a %s",
error_prefix, type->tp_name);
@@ -119,7 +119,7 @@ void PyC_ObSpit(const char *name, PyObject *var)
fprintf(stderr, " ptr:%p", (void *)var);
fprintf(stderr, " type:");
- if(Py_TYPE(var))
+ if (Py_TYPE(var))
fprintf(stderr, "%s", Py_TYPE(var)->tp_name);
else
fprintf(stderr, "<NIL>");
@@ -134,7 +134,7 @@ void PyC_LineSpit(void)
int lineno;
/* Note, allow calling from outside python (RNA) */
- if(!PYC_INTERPRETER_ACTIVE) {
+ if (!PYC_INTERPRETER_ACTIVE) {
fprintf(stderr, "python line lookup failed, interpreter inactive\n");
return;
}
@@ -162,18 +162,18 @@ void PyC_FileAndNum(const char **filename, int *lineno)
}
/* when executing a module */
- if(filename && *filename == NULL) {
+ if (filename && *filename == NULL) {
/* try an alternative method to get the filename - module based
* references below are all borrowed (double checked) */
PyObject *mod_name= PyDict_GetItemString(PyEval_GetGlobals(), "__name__");
- if(mod_name) {
+ if (mod_name) {
PyObject *mod= PyDict_GetItem(PyImport_GetModuleDict(), mod_name);
- if(mod) {
+ if (mod) {
*filename= PyModule_GetFilename(mod);
}
/* unlikely, fallback */
- if(*filename == NULL) {
+ if (*filename == NULL) {
*filename= _PyUnicode_AsString(mod_name);
}
}
@@ -184,6 +184,15 @@ void PyC_FileAndNum(const char **filename, int *lineno)
}
}
+void PyC_FileAndNum_Safe(const char **filename, int *lineno)
+{
+ if(!PYC_INTERPRETER_ACTIVE) {
+ return;
+ }
+
+ PyC_FileAndNum(filename, lineno);
+}
+
/* Would be nice if python had this built in */
PyObject *PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n, ...)
{
@@ -225,7 +234,7 @@ PyObject *PyC_Err_Format_Prefix(PyObject *exception_type_prefix, const char *for
error_value_prefix= PyUnicode_FromFormatV(format, args); /* can fail and be NULL */
va_end(args);
- if(PyErr_Occurred()) {
+ if (PyErr_Occurred()) {
PyObject *error_type, *error_value, *error_traceback;
PyErr_Fetch(&error_type, &error_value, &error_traceback);
PyErr_Format(exception_type_prefix,
@@ -259,7 +268,7 @@ PyObject *PyC_ExceptionBuffer(void)
PyObject *format_tb_func= NULL;
PyObject *ret= NULL;
- if(! (traceback_mod= PyImport_ImportModule("traceback")) ) {
+ if (! (traceback_mod= PyImport_ImportModule("traceback")) ) {
goto error_cleanup;
}
else if (! (format_tb_func= PyObject_GetAttrString(traceback_mod, "format_exc"))) {
@@ -268,7 +277,7 @@ PyObject *PyC_ExceptionBuffer(void)
ret= PyObject_CallObject(format_tb_func, NULL);
- if(ret == Py_None) {
+ if (ret == Py_None) {
Py_DECREF(ret);
ret= NULL;
}
@@ -303,7 +312,7 @@ PyObject *PyC_ExceptionBuffer(void)
* string_io = io.StringIO()
*/
- if(! (string_io_mod= PyImport_ImportModule("io")) ) {
+ if (! (string_io_mod= PyImport_ImportModule("io")) ) {
goto error_cleanup;
}
else if (! (string_io = PyObject_CallMethod(string_io_mod, (char *)"StringIO", NULL))) {
@@ -360,7 +369,7 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce)
result= _PyUnicode_AsString(py_str);
- if(result) {
+ if (result) {
/* 99% of the time this is enough but we better support non unicode
* chars since blender doesnt limit this */
return result;
@@ -368,7 +377,7 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce)
else {
PyErr_Clear();
- if(PyBytes_Check(py_str)) {
+ if (PyBytes_Check(py_str)) {
return PyBytes_AS_STRING(py_str);
}
else {
@@ -380,7 +389,7 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce)
PyObject *PyC_UnicodeFromByte(const char *str)
{
PyObject *result= PyUnicode_FromString(str);
- if(result) {
+ if (result) {
/* 99% of the time this is enough but we better support non unicode
* chars since blender doesnt limit this */
return result;
@@ -412,7 +421,7 @@ PyObject *PyC_DefaultNameSpace(const char *filename)
PyDict_SetItemString(interp->modules, "__main__", mod_main);
Py_DECREF(mod_main); /* sys.modules owns now */
PyModule_AddStringConstant(mod_main, "__name__", "__main__");
- if(filename)
+ if (filename)
PyModule_AddStringConstant(mod_main, "__file__", filename); /* __file__ only for nice UI'ness */
PyModule_AddObject(mod_main, "__builtins__", interp->builtins);
Py_INCREF(interp->builtins); /* AddObject steals a reference */
@@ -437,7 +446,7 @@ void PyC_MainModule_Restore(PyObject *main_mod)
/* must be called before Py_Initialize, expects output of BLI_get_folder(BLENDER_PYTHON, NULL) */
void PyC_SetHomePath(const char *py_path_bundle)
{
- if(py_path_bundle==NULL) {
+ if (py_path_bundle==NULL) {
/* Common enough to have bundled *nix python but complain on OSX/Win */
#if defined(__APPLE__) || defined(_WIN32)
fprintf(stderr, "Warning! bundled python not found and is expected on this platform. (if you built with CMake: 'install' target may have not been built)\n");
@@ -450,7 +459,7 @@ void PyC_SetHomePath(const char *py_path_bundle)
#ifdef __APPLE__
/* OSX allow file/directory names to contain : character (represented as / in the Finder)
but current Python lib (release 3.1.1) doesn't handle these correctly */
- if(strchr(py_path_bundle, ':'))
+ if (strchr(py_path_bundle, ':'))
printf("Warning : Blender application is located in a path containing : or / chars\
\nThis may make python import function fail\n");
#endif
@@ -469,7 +478,7 @@ void PyC_SetHomePath(const char *py_path_bundle)
/* cant use this, on linux gives bug: #23018, TODO: try LANG="en_US.UTF-8" /usr/bin/blender, suggested 22008 */
/* mbstowcs(py_path_bundle_wchar, py_path_bundle, FILE_MAXDIR); */
- utf8towchar(py_path_bundle_wchar, py_path_bundle);
+ BLI_strncpy_wchar_from_utf8(py_path_bundle_wchar, py_path_bundle, sizeof(py_path_bundle_wchar) / sizeof(wchar_t));
Py_SetPythonHome(py_path_bundle_wchar);
// printf("found python (wchar_t) '%ls'\n", py_path_bundle_wchar);
@@ -481,7 +490,7 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
{
FILE *fp= fopen(filepath, "r");
- if(fp) {
+ if (fp) {
PyGILState_STATE gilstate= PyGILState_Ensure();
va_list vargs;
@@ -508,13 +517,13 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
ret= PyObject_CallFunction(calcsize, (char *)"s", format);
- if(ret) {
+ if (ret) {
sizes[i]= PyLong_AsSsize_t(ret);
Py_DECREF(ret);
ret = PyObject_CallFunction(unpack, (char *)"sy#", format, (char *)ptr, sizes[i]);
}
- if(ret == NULL) {
+ if (ret == NULL) {
printf("PyC_InlineRun error, line:%d\n", __LINE__);
PyErr_Print();
PyErr_Clear();
@@ -525,7 +534,7 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
sizes[i]= 0;
}
else {
- if(PyTuple_GET_SIZE(ret) == 1) {
+ if (PyTuple_GET_SIZE(ret) == 1) {
/* convenience, convert single tuples into single values */
PyObject *tmp= PyTuple_GET_ITEM(ret, 0);
Py_INCREF(tmp);
@@ -545,13 +554,13 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
fclose(fp);
- if(py_result) {
+ if (py_result) {
/* we could skip this but then only slice assignment would work
* better not be so strict */
values= PyDict_GetItemString(py_dict, "values");
- if(values && PyList_Check(values)) {
+ if (values && PyList_Check(values)) {
/* dont use the result */
Py_DECREF(py_result);
@@ -567,10 +576,10 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
PyObject *item_new;
/* prepend the string formatting and remake the tuple */
item= PyList_GET_ITEM(values, i);
- if(PyTuple_CheckExact(item)) {
+ if (PyTuple_CheckExact(item)) {
int ofs= PyTuple_GET_SIZE(item);
item_new= PyTuple_New(ofs + 1);
- while(ofs--) {
+ while (ofs--) {
PyObject *member= PyTuple_GET_ITEM(item, ofs);
PyTuple_SET_ITEM(item_new, ofs + 1, member);
Py_INCREF(member);
@@ -584,7 +593,7 @@ void PyC_RunQuicky(const char *filepath, int n, ...)
ret = PyObject_Call(pack, item_new, NULL);
- if(ret) {
+ if (ret) {
/* copy the bytes back into memory */
memcpy(ptr, PyBytes_AS_STRING(ret), sizes[i]);
Py_DECREF(ret);
diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h
index 03a8637710e..f38ce209be2 100644
--- a/source/blender/python/generic/py_capi_utils.h
+++ b/source/blender/python/generic/py_capi_utils.h
@@ -36,6 +36,7 @@ PyObject * PyC_ExceptionBuffer(void);
PyObject * PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n, ...);
PyObject * PyC_Err_Format_Prefix(PyObject *exception_type_prefix, const char *format, ...);
void PyC_FileAndNum(const char **filename, int *lineno);
+void PyC_FileAndNum_Safe(const char **filename, int *lineno); /* checks python is running */
int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObject *type, const short is_double, const char *error_prefix);
/* follow http://www.python.org/dev/peps/pep-0383/ */
diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c
index 3f637feadf7..f251e41a92d 100644
--- a/source/blender/python/intern/bpy.c
+++ b/source/blender/python/intern/bpy.c
@@ -109,7 +109,7 @@ static PyObject *bpy_blend_paths(PyObject *UNUSED(self), PyObject *args, PyObjec
list= PyList_New(0);
- for(BLI_bpathIterator_init(&bpi, G.main, G.main->name, 0); !BLI_bpathIterator_isDone(bpi); BLI_bpathIterator_step(bpi)) {
+ for (BLI_bpathIterator_init(&bpi, G.main, G.main->name, 0); !BLI_bpathIterator_isDone(bpi); BLI_bpathIterator_step(bpi)) {
/* build the list */
if (absolute) {
BLI_bpathIterator_getPathExpanded(bpi, filepath_expanded);
@@ -149,10 +149,10 @@ static PyObject *bpy_user_resource(PyObject *UNUSED(self), PyObject *args, PyObj
return NULL;
/* stupid string compare */
- if (!strcmp(type, "DATAFILES")) folder_id= BLENDER_USER_DATAFILES;
- else if(!strcmp(type, "CONFIG")) folder_id= BLENDER_USER_CONFIG;
- else if(!strcmp(type, "SCRIPTS")) folder_id= BLENDER_USER_SCRIPTS;
- else if(!strcmp(type, "AUTOSAVE")) folder_id= BLENDER_USER_AUTOSAVE;
+ if (!strcmp(type, "DATAFILES")) folder_id= BLENDER_USER_DATAFILES;
+ else if (!strcmp(type, "CONFIG")) folder_id= BLENDER_USER_CONFIG;
+ else if (!strcmp(type, "SCRIPTS")) folder_id= BLENDER_USER_SCRIPTS;
+ else if (!strcmp(type, "AUTOSAVE")) folder_id= BLENDER_USER_AUTOSAVE;
else {
PyErr_SetString(PyExc_ValueError, "invalid resource argument");
return NULL;
@@ -193,9 +193,9 @@ static PyObject *bpy_resource_path(PyObject *UNUSED(self), PyObject *args, PyObj
return NULL;
/* stupid string compare */
- if (!strcmp(type, "USER")) folder_id= BLENDER_RESOURCE_PATH_USER;
- else if(!strcmp(type, "LOCAL")) folder_id= BLENDER_RESOURCE_PATH_LOCAL;
- else if(!strcmp(type, "SYSTEM")) folder_id= BLENDER_RESOURCE_PATH_SYSTEM;
+ if (!strcmp(type, "USER")) folder_id= BLENDER_RESOURCE_PATH_USER;
+ else if (!strcmp(type, "LOCAL")) folder_id= BLENDER_RESOURCE_PATH_LOCAL;
+ else if (!strcmp(type, "SYSTEM")) folder_id= BLENDER_RESOURCE_PATH_SYSTEM;
else {
PyErr_SetString(PyExc_ValueError, "invalid resource argument");
return NULL;
@@ -215,7 +215,7 @@ static PyMethodDef meth_bpy_resource_path= {"resource_path", (PyCFunction)bpy_re
static PyObject *bpy_import_test(const char *modname)
{
PyObject *mod= PyImport_ImportModuleLevel((char *)modname, NULL, NULL, NULL, 0);
- if(mod) {
+ if (mod) {
Py_DECREF(mod);
}
else {
@@ -238,7 +238,7 @@ void BPy_init_modules(void)
/* Needs to be first since this dir is needed for future modules */
char *modpath= BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, "modules");
- if(modpath) {
+ if (modpath) {
// printf("bpy: found module path '%s'.\n", modpath);
PyObject *sys_path= PySys_GetObject("path"); /* borrow */
PyObject *py_modpath= PyUnicode_FromString(modpath);
diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c
index 079d5223f58..bd7be8dd9c5 100644
--- a/source/blender/python/intern/bpy_app.c
+++ b/source/blender/python/intern/bpy_app.c
@@ -168,13 +168,13 @@ static int bpy_app_debug_set(PyObject *UNUSED(self), PyObject *value, void *UNUS
{
int param= PyObject_IsTrue(value);
- if(param < 0) {
+ if (param < 0) {
PyErr_SetString(PyExc_TypeError, "bpy.app.debug can only be True/False");
return -1;
}
- if(param) G.f |= G_DEBUG;
- else G.f &= ~G_DEBUG;
+ if (param) G.f |= G_DEBUG;
+ else G.f &= ~G_DEBUG;
return 0;
}
@@ -230,7 +230,7 @@ static void py_struct_seq_getset_init(void)
/* tricky dynamic members, not to py-spec! */
PyGetSetDef *getset;
- for(getset= bpy_app_getsets; getset->name; getset++) {
+ for (getset= bpy_app_getsets; getset->name; getset++) {
PyDict_SetItemString(BlenderAppType.tp_dict, getset->name, PyDescr_NewGetSet(&BlenderAppType, getset));
}
}
diff --git a/source/blender/python/intern/bpy_app_handlers.c b/source/blender/python/intern/bpy_app_handlers.c
index cd3d78410f2..1a50ae79dc7 100644
--- a/source/blender/python/intern/bpy_app_handlers.c
+++ b/source/blender/python/intern/bpy_app_handlers.c
@@ -77,13 +77,13 @@ static PyObject *make_app_cb_info(void)
return NULL;
}
- for(pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
- if(app_cb_info_fields[pos].name == NULL) {
+ for (pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
+ if (app_cb_info_fields[pos].name == NULL) {
Py_FatalError("invalid callback slots 1");
}
PyStructSequence_SET_ITEM(app_cb_info, pos, (py_cb_array[pos]= PyList_New(0)));
}
- if(app_cb_info_fields[pos].name != NULL) {
+ if (app_cb_info_fields[pos].name != NULL) {
Py_FatalError("invalid callback slots 2");
}
@@ -103,12 +103,12 @@ PyObject *BPY_app_handlers_struct(void)
BlenderAppCbType.tp_new= NULL;
/* assign the C callbacks */
- if(ret) {
+ if (ret) {
static bCallbackFuncStore funcstore_array[BLI_CB_EVT_TOT]= {{NULL}};
bCallbackFuncStore *funcstore;
int pos= 0;
- for(pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
+ for (pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
funcstore= &funcstore_array[pos];
funcstore->func= bpy_app_generic_callback;
funcstore->alloc= 0;
@@ -124,7 +124,7 @@ void BPY_app_handlers_reset(void)
{
int pos= 0;
- for(pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
+ for (pos= 0; pos < BLI_CB_EVT_TOT; pos++) {
PyList_SetSlice(py_cb_array[pos], 0, PY_SSIZE_T_MAX, NULL);
}
}
@@ -134,7 +134,7 @@ void bpy_app_generic_callback(struct Main *UNUSED(main), struct ID *id, void *ar
{
PyObject *cb_list= py_cb_array[GET_INT_FROM_POINTER(arg)];
Py_ssize_t cb_list_len;
- if((cb_list_len= PyList_GET_SIZE(cb_list)) > 0) {
+ if ((cb_list_len= PyList_GET_SIZE(cb_list)) > 0) {
PyGILState_STATE gilstate= PyGILState_Ensure();
PyObject* args= PyTuple_New(1); // save python creating each call
@@ -143,7 +143,7 @@ void bpy_app_generic_callback(struct Main *UNUSED(main), struct ID *id, void *ar
Py_ssize_t pos;
/* setup arguments */
- if(id) {
+ if (id) {
PointerRNA id_ptr;
RNA_id_pointer_create(id, &id_ptr);
PyTuple_SET_ITEM(args, 0, pyrna_struct_CreatePyObject(&id_ptr));
diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c
index 319790340ca..c5d15145ab2 100644
--- a/source/blender/python/intern/bpy_driver.c
+++ b/source/blender/python/intern/bpy_driver.c
@@ -99,7 +99,7 @@ void BPY_driver_reset(void)
PyGILState_STATE gilstate;
int use_gil= 1; /* !PYC_INTERPRETER_ACTIVE; */
- if(use_gil)
+ if (use_gil)
gilstate= PyGILState_Ensure();
if (bpy_pydriver_Dict) { /* free the global dict used by pydrivers */
@@ -108,7 +108,7 @@ void BPY_driver_reset(void)
bpy_pydriver_Dict= NULL;
}
- if(use_gil)
+ if (use_gil)
PyGILState_Release(gilstate);
return;
@@ -157,14 +157,14 @@ float BPY_driver_exec(ChannelDriver *driver)
if ((expr == NULL) || (expr[0]=='\0'))
return 0.0f;
- if(!(G.f & G_SCRIPT_AUTOEXEC)) {
+ if (!(G.f & G_SCRIPT_AUTOEXEC)) {
printf("skipping driver '%s', automatic scripts are disabled\n", driver->expression);
return 0.0f;
}
use_gil= 1; /* !PYC_INTERPRETER_ACTIVE; */
- if(use_gil)
+ if (use_gil)
gilstate= PyGILState_Ensure();
/* needed since drivers are updated directly after undo where 'main' is
@@ -175,17 +175,17 @@ float BPY_driver_exec(ChannelDriver *driver)
if (!bpy_pydriver_Dict) {
if (bpy_pydriver_create_dict() != 0) {
fprintf(stderr, "Pydriver error: couldn't create Python dictionary");
- if(use_gil)
+ if (use_gil)
PyGILState_Release(gilstate);
return 0.0f;
}
}
- if(driver->expr_comp==NULL)
+ if (driver->expr_comp==NULL)
driver->flag |= DRIVER_FLAG_RECOMPILE;
/* compile the expression first if it hasn't been compiled or needs to be rebuilt */
- if(driver->flag & DRIVER_FLAG_RECOMPILE) {
+ if (driver->flag & DRIVER_FLAG_RECOMPILE) {
Py_XDECREF(driver->expr_comp);
driver->expr_comp= PyTuple_New(2);
@@ -199,7 +199,7 @@ float BPY_driver_exec(ChannelDriver *driver)
expr_code= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 0);
}
- if(driver->flag & DRIVER_FLAG_RENAMEVAR) {
+ if (driver->flag & DRIVER_FLAG_RENAMEVAR) {
/* may not be set */
expr_vars= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 1);
Py_XDECREF(expr_vars);
@@ -260,7 +260,7 @@ float BPY_driver_exec(ChannelDriver *driver)
if (retval == NULL) {
pydriver_error(driver);
}
- else if((result= PyFloat_AsDouble(retval)) == -1.0 && PyErr_Occurred()) {
+ else if ((result= PyFloat_AsDouble(retval)) == -1.0 && PyErr_Occurred()) {
pydriver_error(driver);
Py_DECREF(retval);
result= 0.0;
@@ -271,10 +271,10 @@ float BPY_driver_exec(ChannelDriver *driver)
Py_DECREF(retval);
}
- if(use_gil)
+ if (use_gil)
PyGILState_Release(gilstate);
- if(finite(result)) {
+ if (finite(result)) {
return (float)result;
}
else {
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index fcaaf2ff663..725414a6104 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -52,12 +52,12 @@
#include "BLI_path_util.h"
#include "BLI_math_base.h"
#include "BLI_string.h"
+#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
#include "BKE_text.h"
-#include "BKE_font.h" /* only for utf8towchar */
#include "BKE_main.h"
#include "BKE_global.h" /* only for script checking */
@@ -100,14 +100,14 @@ void bpy_context_set(bContext *C, PyGILState_STATE *gilstate)
{
py_call_level++;
- if(gilstate)
+ if (gilstate)
*gilstate= PyGILState_Ensure();
- if(py_call_level==1) {
+ if (py_call_level==1) {
bpy_context_update(C);
#ifdef TIME_PY_RUN
- if(bpy_timer_count==0) {
+ if (bpy_timer_count==0) {
/* record time from the beginning */
bpy_timer= PIL_check_seconds_timer();
bpy_timer_run= bpy_timer_run_tot= 0.0;
@@ -125,13 +125,13 @@ void bpy_context_clear(bContext *UNUSED(C), PyGILState_STATE *gilstate)
{
py_call_level--;
- if(gilstate)
+ if (gilstate)
PyGILState_Release(*gilstate);
- if(py_call_level < 0) {
+ if (py_call_level < 0) {
fprintf(stderr, "ERROR: Python context internal state bug. this should not happen!\n");
}
- else if(py_call_level==0) {
+ else if (py_call_level==0) {
// XXX - Calling classes currently wont store the context :\, cant set NULL because of this. but this is very flakey still.
//BPy_SetContext(NULL);
//bpy_import_main_set(NULL);
@@ -146,7 +146,7 @@ void bpy_context_clear(bContext *UNUSED(C), PyGILState_STATE *gilstate)
void BPY_text_free_code(Text *text)
{
- if(text->compiled) {
+ if (text->compiled) {
Py_DECREF((PyObject *)text->compiled);
text->compiled= NULL;
}
@@ -199,7 +199,7 @@ void BPY_python_start(int argc, const char **argv)
/* not essential but nice to set our name */
static wchar_t bprogname_wchar[FILE_MAXDIR+FILE_MAXFILE]; /* python holds a reference */
- utf8towchar(bprogname_wchar, bprogname);
+ BLI_strncpy_wchar_from_utf8(bprogname_wchar, bprogname, sizeof(bprogname_wchar) / sizeof(wchar_t));
Py_SetProgramName(bprogname_wchar);
/* must run before python initializes */
@@ -278,10 +278,10 @@ void BPY_python_end(void)
printf("*bpy stats* - ");
printf("tot exec: %d, ", bpy_timer_count);
printf("tot run: %.4fsec, ", bpy_timer_run_tot);
- if(bpy_timer_count>0)
+ if (bpy_timer_count>0)
printf("average run: %.6fsec, ", (bpy_timer_run_tot/bpy_timer_count));
- if(bpy_timer>0.0)
+ if (bpy_timer>0.0)
printf("tot usage %.4f%%", (bpy_timer_run_tot/bpy_timer)*100.0);
printf("\n");
@@ -297,7 +297,7 @@ static void python_script_error_jump_text(struct Text *text)
int lineno;
int offset;
python_script_error_jump(text->id.name+2, &lineno, &offset);
- if(lineno != -1) {
+ if (lineno != -1) {
/* select the line with the error */
txt_move_to(text, lineno - 1, INT_MAX, FALSE);
txt_move_to(text, lineno - 1, offset, TRUE);
@@ -337,22 +337,22 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
char fn_dummy[FILE_MAXDIR];
bpy_text_filename_get(fn_dummy, sizeof(fn_dummy), text);
- if(text->compiled == NULL) { /* if it wasn't already compiled, do it now */
+ if (text->compiled == NULL) { /* if it wasn't already compiled, do it now */
char *buf= txt_to_buf(text);
text->compiled= Py_CompileString(buf, fn_dummy, Py_file_input);
MEM_freeN(buf);
- if(PyErr_Occurred()) {
- if(do_jump) {
+ if (PyErr_Occurred()) {
+ if (do_jump) {
python_script_error_jump_text(text);
}
BPY_text_free_code(text);
}
}
- if(text->compiled) {
+ if (text->compiled) {
py_dict= PyC_DefaultNameSpace(fn_dummy);
py_result= PyEval_EvalCode(text->compiled, py_dict, py_dict);
}
@@ -361,7 +361,7 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
else {
FILE *fp= fopen(fn, "r");
- if(fp) {
+ if (fp) {
py_dict= PyC_DefaultNameSpace(fn);
#ifdef _WIN32
@@ -395,8 +395,8 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
}
if (!py_result) {
- if(text) {
- if(do_jump) {
+ if (text) {
+ if (do_jump) {
python_script_error_jump_text(text);
}
}
@@ -406,7 +406,7 @@ static int python_script_exec(bContext *C, const char *fn, struct Text *text, st
Py_DECREF(py_result);
}
- if(py_dict) {
+ if (py_dict) {
#ifdef PYMODULE_CLEAR_WORKAROUND
PyModuleObject *mmod= (PyModuleObject *)PyDict_GetItemString(PyThreadState_GET()->interp->modules, "__main__");
PyObject *dict_back= mmod->md_dict;
@@ -455,7 +455,7 @@ int BPY_button_exec(bContext *C, const char *expr, double *value, const short ve
if (!value || !expr) return -1;
- if(expr[0]=='\0') {
+ if (expr[0]=='\0') {
*value= 0.0;
return error_ret;
}
@@ -484,13 +484,13 @@ int BPY_button_exec(bContext *C, const char *expr, double *value, const short ve
else {
double val;
- if(PyTuple_Check(retval)) {
+ if (PyTuple_Check(retval)) {
/* Users my have typed in 10km, 2m
* add up all values */
int i;
val= 0.0;
- for(i=0; i<PyTuple_GET_SIZE(retval); i++) {
+ for (i=0; i<PyTuple_GET_SIZE(retval); i++) {
val+= PyFloat_AsDouble(PyTuple_GET_ITEM(retval, i));
}
}
@@ -499,7 +499,7 @@ int BPY_button_exec(bContext *C, const char *expr, double *value, const short ve
}
Py_DECREF(retval);
- if(val==-1 && PyErr_Occurred()) {
+ if (val==-1 && PyErr_Occurred()) {
error_ret= -1;
}
else if (!finite(val)) {
@@ -510,8 +510,8 @@ int BPY_button_exec(bContext *C, const char *expr, double *value, const short ve
}
}
- if(error_ret) {
- if(verbose) {
+ if (error_ret) {
+ if (verbose) {
BPy_errors_to_report(CTX_wm_reports(C));
}
else {
@@ -536,7 +536,7 @@ int BPY_string_exec(bContext *C, const char *expr)
if (!expr) return -1;
- if(expr[0]=='\0') {
+ if (expr[0]=='\0') {
return error_ret;
}
@@ -577,20 +577,20 @@ void BPY_modules_load_user(bContext *C)
Text *text;
/* can happen on file load */
- if(bmain==NULL)
+ if (bmain==NULL)
return;
/* update pointers since this can run from a nested script
* on file load */
- if(py_call_level) {
+ if (py_call_level) {
bpy_context_update(C);
}
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")) {
- if(!(G.f & G_SCRIPT_AUTOEXEC)) {
+ 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")) {
+ if (!(G.f & G_SCRIPT_AUTOEXEC)) {
printf("scripts disabled for \"%s\", skipping '%s'\n", bmain->name, text->id.name+2);
}
else {
@@ -616,13 +616,13 @@ int BPY_context_member_get(bContext *C, const char *member, bContextDataResult *
PointerRNA *ptr= NULL;
int done= 0;
- if(item==NULL) {
+ if (item==NULL) {
/* pass */
}
- else if(item==Py_None) {
+ else if (item==Py_None) {
/* pass */
}
- else if(BPy_StructRNA_Check(item)) {
+ else if (BPy_StructRNA_Check(item)) {
ptr= &(((BPy_StructRNA *)item)->ptr);
//result->ptr= ((BPy_StructRNA *)item)->ptr;
@@ -638,10 +638,10 @@ int BPY_context_member_get(bContext *C, const char *member, bContextDataResult *
else {
int len= PySequence_Fast_GET_SIZE(seq_fast);
int i;
- for(i= 0; i < len; i++) {
+ for (i= 0; i < len; i++) {
PyObject *list_item= PySequence_Fast_GET_ITEM(seq_fast, i);
- if(BPy_StructRNA_Check(list_item)) {
+ if (BPy_StructRNA_Check(list_item)) {
/*
CollectionPointerLink *link= MEM_callocN(sizeof(CollectionPointerLink), "bpy_context_get");
link->ptr= ((BPy_StructRNA *)item)->ptr;
@@ -661,12 +661,12 @@ int BPY_context_member_get(bContext *C, const char *member, bContextDataResult *
}
}
- if(done==0) {
+ if (done==0) {
if (item) printf("PyContext '%s' not a valid type\n", member);
else printf("PyContext '%s' not found\n", member);
}
else {
- if(G.f & G_DEBUG) {
+ if (G.f & G_DEBUG) {
printf("PyContext '%s' found\n", member);
}
}
@@ -764,7 +764,7 @@ PyInit_bpy(void)
dealloc_obj_Type.tp_dealloc= dealloc_obj_dealloc;
dealloc_obj_Type.tp_flags= Py_TPFLAGS_DEFAULT;
- if(PyType_Ready(&dealloc_obj_Type) < 0)
+ if (PyType_Ready(&dealloc_obj_Type) < 0)
return NULL;
dob= (dealloc_obj *) dealloc_obj_Type.tp_alloc(&dealloc_obj_Type, 0);
diff --git a/source/blender/python/intern/bpy_interface_atexit.c b/source/blender/python/intern/bpy_interface_atexit.c
index ac8c90198a0..9424bdab93f 100644
--- a/source/blender/python/intern/bpy_interface_atexit.c
+++ b/source/blender/python/intern/bpy_interface_atexit.c
@@ -68,7 +68,7 @@ static void atexit_func_call(const char *func_name, PyObject *atexit_func_arg)
Py_DECREF(atexit_func);
Py_DECREF(args);
- if(ret) {
+ if (ret) {
Py_DECREF(ret);
}
else { /* should never happen */
diff --git a/source/blender/python/intern/bpy_library.c b/source/blender/python/intern/bpy_library.c
index 4ce3e0356e2..3b0c6a9ff25 100644
--- a/source/blender/python/intern/bpy_library.c
+++ b/source/blender/python/intern/bpy_library.c
@@ -58,7 +58,7 @@
typedef struct {
PyObject_HEAD /* required python macro */
- /* collection iterator spesific parts */
+ /* collection iterator specific parts */
char relpath[FILE_MAX];
char abspath[FILE_MAX]; /* absolute path */
BlendHandle *blo_handle;
@@ -184,7 +184,7 @@ static PyObject *bpy_lib_load(PyObject *UNUSED(self), PyObject *args, PyObject *
const char* filename= NULL;
int is_rel= 0, is_link= 0;
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "s|ii:load", (char **)kwlist, &filename, &is_link, &is_rel))
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|ii:load", (char **)kwlist, &filename, &is_link, &is_rel))
return NULL;
ret= PyObject_New(BPy_Library, &bpy_lib_Type);
@@ -210,10 +210,10 @@ static PyObject *_bpy_names(BPy_Library *self, int blocktype)
names= BLO_blendhandle_get_datablock_names(self->blo_handle, blocktype, &totnames);
- if(names) {
+ if (names) {
int counter= 0;
list= PyList_New(totnames);
- for(l= names; l; l= l->next) {
+ for (l= names; l; l= l->next) {
PyList_SET_ITEM(list, counter, PyUnicode_FromString((char *)l->link));
counter++;
}
@@ -237,8 +237,8 @@ static PyObject *bpy_lib_enter(BPy_Library *self, PyObject *UNUSED(args))
self->blo_handle= BLO_blendhandle_from_file(self->abspath, &reports);
- if(self->blo_handle == NULL) {
- if(BPy_reports_to_error(&reports, PyExc_IOError, TRUE) != -1) {
+ if (self->blo_handle == NULL) {
+ if (BPy_reports_to_error(&reports, PyExc_IOError, TRUE) != -1) {
PyErr_Format(PyExc_IOError,
"load: %s failed to open blend file",
self->abspath);
@@ -247,8 +247,8 @@ static PyObject *bpy_lib_enter(BPy_Library *self, PyObject *UNUSED(args))
}
else {
int i= 0, code;
- while((code= BKE_idcode_iter_step(&i))) {
- if(BKE_idcode_is_linkable(code)) {
+ while ((code= BKE_idcode_iter_step(&i))) {
+ if (BKE_idcode_is_linkable(code)) {
const char *name_plural= BKE_idcode_to_name_plural(code);
PyObject *str= PyUnicode_FromString(name_plural);
PyDict_SetItem(self->dict, str, PyList_New(0));
@@ -322,27 +322,27 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
{
int i= 0, code;
- while((code= BKE_idcode_iter_step(&i))) {
- if(BKE_idcode_is_linkable(code)) {
+ while ((code= BKE_idcode_iter_step(&i))) {
+ if (BKE_idcode_is_linkable(code)) {
const char *name_plural= BKE_idcode_to_name_plural(code);
PyObject *ls= PyDict_GetItemString(self->dict, name_plural);
// printf("lib: %s\n", name_plural);
- if(ls && PyList_Check(ls)) {
+ if (ls && PyList_Check(ls)) {
/* loop */
Py_ssize_t size= PyList_GET_SIZE(ls);
Py_ssize_t i;
PyObject *item;
const char *item_str;
- for(i= 0; i < size; i++) {
+ for (i= 0; i < size; i++) {
item= PyList_GET_ITEM(ls, i);
item_str= _PyUnicode_AsString(item);
// printf(" %s\n", item_str);
- if(item_str) {
+ if (item_str) {
ID *id= BLO_library_append_named_part(mainl, &(self->blo_handle), item_str, code);
- if(id) {
+ if (id) {
#ifdef USE_RNA_DATABLOCKS
PointerRNA id_ptr;
RNA_id_pointer_create(id, &id_ptr);
@@ -382,7 +382,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
}
}
- if(err == -1) {
+ if (err == -1) {
/* exception raised above, XXX, this leaks some memory */
BLO_blendhandle_close(self->blo_handle);
self->blo_handle= NULL;
@@ -399,10 +399,10 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
recalc_all_library_objects(G.main);
/* append, rather than linking */
- if((self->flag & FILE_LINK)==0) {
+ if ((self->flag & FILE_LINK)==0) {
Library *lib= BLI_findstring(&G.main->library, self->abspath, offsetof(Library, name));
- if(lib) all_local(lib, 1);
- else BLI_assert(!"cant find name of just added library!");
+ if (lib) all_local(lib, 1);
+ else BLI_assert(!"cant find name of just added library!");
}
}
@@ -426,7 +426,7 @@ int bpy_lib_init(PyObject *mod_par)
/* some compilers dont like accessing this directly, delay assignment */
bpy_lib_Type.tp_getattro= PyObject_GenericGetAttr;
- if(PyType_Ready(&bpy_lib_Type) < 0)
+ if (PyType_Ready(&bpy_lib_Type) < 0)
return -1;
return 0;
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index dedc5df1f1c..7e8b9b7b6df 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -44,6 +44,7 @@
#include "../generic/bpy_internal_import.h"
#include "BLI_utildefines.h"
+#include "BLI_string.h"
#include "RNA_access.h"
#include "RNA_enum_types.h"
@@ -76,7 +77,7 @@ static PyObject *pyop_poll(PyObject *UNUSED(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= (bContext *)BPy_GetContext();
- if(C==NULL) {
+ if (C==NULL) {
PyErr_SetString(PyExc_RuntimeError, "Context is None, cant poll any operators");
return NULL;
}
@@ -93,8 +94,8 @@ static PyObject *pyop_poll(PyObject *UNUSED(self), PyObject *args)
return NULL;
}
- if(context_str) {
- if(RNA_enum_value_from_id(operator_context_items, context_str, &context)==0) {
+ if (context_str) {
+ if (RNA_enum_value_from_id(operator_context_items, context_str, &context)==0) {
char *enum_str= BPy_enum_as_string(operator_context_items);
PyErr_Format(PyExc_TypeError,
"Calling operator \"bpy.ops.%s.poll\" error, "
@@ -105,7 +106,7 @@ static PyObject *pyop_poll(PyObject *UNUSED(self), PyObject *args)
}
}
- if(context_dict==NULL || context_dict==Py_None) {
+ if (context_dict==NULL || context_dict==Py_None) {
context_dict= NULL;
}
else if (!PyDict_Check(context_dict)) {
@@ -150,7 +151,7 @@ static PyObject *pyop_call(PyObject *UNUSED(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= (bContext *)BPy_GetContext();
- if(C==NULL) {
+ if (C==NULL) {
PyErr_SetString(PyExc_RuntimeError, "Context is None, cant poll any operators");
return NULL;
}
@@ -167,7 +168,7 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
return NULL;
}
- if(!pyrna_write_check()) {
+ if (!pyrna_write_check()) {
PyErr_Format(PyExc_RuntimeError,
"Calling operator \"bpy.ops.%s\" error, "
"can't modify blend data in this state (drawing/rendering)",
@@ -175,8 +176,8 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
return NULL;
}
- if(context_str) {
- if(RNA_enum_value_from_id(operator_context_items, context_str, &context)==0) {
+ if (context_str) {
+ if (RNA_enum_value_from_id(operator_context_items, context_str, &context)==0) {
char *enum_str= BPy_enum_as_string(operator_context_items);
PyErr_Format(PyExc_TypeError,
"Calling operator \"bpy.ops.%s\" error, "
@@ -187,7 +188,7 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
}
}
- if(context_dict==NULL || context_dict==Py_None) {
+ if (context_dict==NULL || context_dict==Py_None) {
context_dict= NULL;
}
else if (!PyDict_Check(context_dict)) {
@@ -203,7 +204,7 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
CTX_py_dict_set(C, (void *)context_dict);
Py_XINCREF(context_dict); /* so we done loose it */
- if(WM_operator_poll_context((bContext*)C, ot, context) == FALSE) {
+ if (WM_operator_poll_context((bContext*)C, ot, context) == FALSE) {
const char *msg= CTX_wm_operator_poll_msg_get(C);
PyErr_Format(PyExc_RuntimeError,
"Operator bpy.ops.%.200s.poll() %.200s",
@@ -215,7 +216,7 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
WM_operator_properties_create_ptr(&ptr, ot);
WM_operator_properties_sanitize(&ptr, 0);
- if(kw && PyDict_Size(kw))
+ if (kw && PyDict_Size(kw))
error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: ");
@@ -245,10 +246,10 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args)
error_val= BPy_reports_to_error(reports, PyExc_RuntimeError, FALSE);
/* operator output is nice to have in the terminal/console too */
- if(reports->list.first) {
+ if (reports->list.first) {
char *report_str= BKE_reports_string(reports, 0); /* all reports */
- if(report_str) {
+ if (report_str) {
PySys_WriteStdout("%s\n", report_str);
MEM_freeN(report_str);
}
@@ -315,7 +316,7 @@ static PyObject *pyop_as_string(PyObject *UNUSED(self), PyObject *args)
bContext *C= (bContext *)BPy_GetContext();
- if(C==NULL) {
+ if (C==NULL) {
PyErr_SetString(PyExc_RuntimeError, "Context is None, cant get the string representation of this object.");
return NULL;
}
@@ -336,7 +337,7 @@ static PyObject *pyop_as_string(PyObject *UNUSED(self), PyObject *args)
/* Save another lookup */
RNA_pointer_create(NULL, ot->srna, NULL, &ptr);
- if(kw && PyDict_Size(kw))
+ if (kw && PyDict_Size(kw))
error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: ");
if (error_val==0)
@@ -348,7 +349,7 @@ static PyObject *pyop_as_string(PyObject *UNUSED(self), PyObject *args)
return NULL;
}
- if(buf) {
+ if (buf) {
pybuf= PyUnicode_FromString(buf);
MEM_freeN(buf);
}
@@ -364,7 +365,7 @@ static PyObject *pyop_dir(PyObject *UNUSED(self))
GHashIterator *iter= WM_operatortype_iter();
PyObject *list= PyList_New(0), *name;
- for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) {
+ for ( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) {
wmOperatorType *ot= BLI_ghashIterator_getValue(iter);
name= PyUnicode_FromString(ot->idname);
@@ -383,12 +384,12 @@ static PyObject *pyop_getrna(PyObject *UNUSED(self), PyObject *value)
char *opname= _PyUnicode_AsString(value);
BPy_StructRNA *pyrna= NULL;
- if(opname==NULL) {
+ if (opname==NULL) {
PyErr_SetString(PyExc_TypeError, "_bpy.ops.get_rna() expects a string argument");
return NULL;
}
ot= WM_operatortype_find(opname, TRUE);
- if(ot==NULL) {
+ if (ot==NULL) {
PyErr_Format(PyExc_KeyError, "_bpy.ops.get_rna(\"%s\") not found", opname);
return NULL;
}
@@ -416,12 +417,12 @@ static PyObject *pyop_getinstance(PyObject *UNUSED(self), PyObject *value)
char *opname= _PyUnicode_AsString(value);
BPy_StructRNA *pyrna= NULL;
- if(opname==NULL) {
+ if (opname==NULL) {
PyErr_SetString(PyExc_TypeError, "_bpy.ops.get_instance() expects a string argument");
return NULL;
}
ot= WM_operatortype_find(opname, TRUE);
- if(ot==NULL) {
+ if (ot==NULL) {
PyErr_Format(PyExc_KeyError, "_bpy.ops.get_instance(\"%s\") not found", opname);
return NULL;
}
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index b5ded8b3a65..1b158f9bade 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -50,7 +50,7 @@ static void operator_properties_init(wmOperatorType *ot)
* later */
RNA_def_struct_identifier(ot->srna, ot->idname);
- if(pyrna_deferred_register_class(ot->srna, py_class) != 0) {
+ if (pyrna_deferred_register_class(ot->srna, py_class) != 0) {
PyErr_Print(); /* failed to register operator props */
PyErr_Clear();
}
@@ -72,8 +72,9 @@ void operator_wrapper(wmOperatorType *ot, void *userdata)
RNA_pointer_create(NULL, ot->srna, NULL, &ptr);
prop= RNA_struct_find_property(&ptr, "type");
- if(prop)
+ if (prop) {
ot->prop= prop;
+ }
}
}
diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c
index 5c668590dff..5a78ac8e094 100644
--- a/source/blender/python/intern/bpy_props.c
+++ b/source/blender/python/intern/bpy_props.c
@@ -123,11 +123,11 @@ static PyObject *pyrna_struct_as_instance(PointerRNA *ptr)
PyObject *self= NULL;
/* first get self */
/* operators can store their own instance for later use */
- if(ptr->data) {
+ if (ptr->data) {
void **instance= RNA_struct_instance(ptr);
- if(instance) {
- if(*instance) {
+ if (instance) {
+ if (*instance) {
self= *instance;
Py_INCREF(self);
}
@@ -135,7 +135,7 @@ static PyObject *pyrna_struct_as_instance(PointerRNA *ptr)
}
/* in most cases this will run */
- if(self == NULL) {
+ if (self == NULL) {
self= pyrna_struct_CreatePyObject(ptr);
}
@@ -167,7 +167,7 @@ static PyObject *bpy_prop_deferred_return(PyObject *func, PyObject *kw)
PyTuple_SET_ITEM(ret, 0, func);
Py_INCREF(func);
- if(kw==NULL)
+ if (kw==NULL)
kw= PyDict_New();
else
Py_INCREF(kw);
@@ -190,7 +190,7 @@ static void bpy_prop_update_cb(struct bContext *C, struct PointerRNA *ptr, struc
BLI_assert(py_data != NULL);
- if(!is_write_ok) {
+ if (!is_write_ok) {
pyrna_write_set(TRUE);
}
@@ -209,11 +209,11 @@ static void bpy_prop_update_cb(struct bContext *C, struct PointerRNA *ptr, struc
Py_DECREF(args);
- if(ret == NULL) {
+ if (ret == NULL) {
printf_func_error(py_func);
}
else {
- if(ret != Py_None) {
+ if (ret != Py_None) {
PyErr_SetString(PyExc_ValueError, "the return value must be None");
printf_func_error(py_func);
}
@@ -223,15 +223,15 @@ static void bpy_prop_update_cb(struct bContext *C, struct PointerRNA *ptr, struc
bpy_context_clear(C, &gilstate);
- if(!is_write_ok) {
+ if (!is_write_ok) {
pyrna_write_set(FALSE);
}
}
static int bpy_prop_callback_check(PyObject *py_func, int argcount)
{
- if(py_func) {
- if(!PyFunction_Check(py_func)) {
+ if (py_func) {
+ if (!PyFunction_Check(py_func)) {
PyErr_Format(PyExc_TypeError,
"update keyword: expected a function type, not a %.200s",
Py_TYPE(py_func)->tp_name);
@@ -255,7 +255,7 @@ static int bpy_prop_callback_check(PyObject *py_func, int argcount)
static int bpy_prop_callback_assign(struct PropertyRNA *prop, PyObject *update_cb)
{
/* assume this is already checked for type and arg length */
- if(update_cb) {
+ if (update_cb) {
PyObject **py_data= MEM_callocN(sizeof(PyObject *) * BPY_DATA_CB_SLOT_SIZE, "bpy_prop_callback_assign");
RNA_def_property_update_runtime(prop, (void *)bpy_prop_update_cb);
py_data[BPY_DATA_CB_SLOT_UPDATE]= update_cb;
@@ -270,7 +270,7 @@ static int bpy_prop_callback_assign(struct PropertyRNA *prop, PyObject *update_c
/* utility function we need for parsing int's in an if statement */
static int py_long_as_int(PyObject *py_long, int *r_int)
{
- if(PyLong_CheckExact(py_long)) {
+ if (PyLong_CheckExact(py_long)) {
*r_int= (int)PyLong_AS_LONG(py_long);
return 0;
}
@@ -295,8 +295,8 @@ static int py_long_as_int(PyObject *py_long, int *r_int)
return NULL; \
} \
srna= srna_from_self(self, #_func"(...):"); \
- if(srna==NULL) { \
- if(PyErr_Occurred()) \
+ if (srna==NULL) { \
+ if (PyErr_Occurred()) \
return NULL; \
return bpy_prop_deferred_return((void *)pymeth_##_func, kw); \
} \
@@ -304,24 +304,24 @@ static int py_long_as_int(PyObject *py_long, int *r_int)
/* terse macros for error checks shared between all funcs cant use function
* calls because of static strins passed to pyrna_set_to_enum_bitfield */
#define BPY_PROPDEF_CHECK(_func, _property_flag_items) \
- if(id_len >= MAX_IDPROP_NAME) { \
+ if (id_len >= MAX_IDPROP_NAME) { \
PyErr_Format(PyExc_TypeError, \
#_func"(): '%.200s' too long, max length is %d", \
id, MAX_IDPROP_NAME-1); \
return NULL; \
} \
- if(RNA_def_property_free_identifier(srna, id) == -1) { \
+ if (RNA_def_property_free_identifier(srna, id) == -1) { \
PyErr_Format(PyExc_TypeError, \
#_func"(): '%s' is defined as a non-dynamic type", \
id); \
return NULL; \
} \
- if(pyopts && pyrna_set_to_enum_bitfield(_property_flag_items, pyopts, &opts, #_func"(options={...}):")) \
+ if (pyopts && pyrna_set_to_enum_bitfield(_property_flag_items, pyopts, &opts, #_func"(options={...}):")) \
return NULL; \
#define BPY_PROPDEF_SUBTYPE_CHECK(_func, _property_flag_items, _subtype) \
BPY_PROPDEF_CHECK(_func, _property_flag_items) \
- if(pysubtype && RNA_enum_value_from_id(_subtype, pysubtype, &subtype)==0) { \
+ if (pysubtype && RNA_enum_value_from_id(_subtype, pysubtype, &subtype)==0) { \
PyErr_Format(PyExc_TypeError, \
#_func"(subtype='%s'): invalid subtype", \
pysubtype); \
@@ -359,7 +359,7 @@ static int bpy_struct_id_used(StructRNA *srna, char *identifier)
#endif
-/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna allong
+/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna along
* This isnt incorrect since its a python object - but be careful */
PyDoc_STRVAR(BPy_BoolProperty_doc,
".. function:: BoolProperty(name=\"\", description=\"\", default=False, options={'ANIMATABLE'}, subtype='NONE', update=None)\n"
@@ -380,7 +380,7 @@ static PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw)
BPY_PROPDEF_HEAD(BoolProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "options", "subtype", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -412,9 +412,9 @@ static PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw)
RNA_def_property_boolean_default(prop, def);
RNA_def_property_ui_text(prop, name, description);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -446,7 +446,7 @@ static PyObject *BPy_BoolVectorProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_HEAD(BoolVectorProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "options", "subtype", "size", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -472,12 +472,12 @@ static PyObject *BPy_BoolVectorProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_SUBTYPE_CHECK(BoolVectorProperty, property_flag_items, property_subtype_array_items)
- if(size < 1 || size > PYRNA_STACK_ARRAY) {
+ if (size < 1 || size > PYRNA_STACK_ARRAY) {
PyErr_Format(PyExc_TypeError, "BoolVectorProperty(size=%d): size must be between 0 and " STRINGIFY(PYRNA_STACK_ARRAY), size);
return NULL;
}
- if(pydef && PyC_AsArray(def, pydef, size, &PyBool_Type, FALSE, "BoolVectorProperty(default=sequence)") < 0)
+ if (pydef && PyC_AsArray(def, pydef, size, &PyBool_Type, FALSE, "BoolVectorProperty(default=sequence)") < 0)
return NULL;
if (bpy_prop_callback_check(update_cb, 2) == -1) {
@@ -487,12 +487,12 @@ static PyObject *BPy_BoolVectorProperty(PyObject *self, PyObject *args, PyObject
// prop= RNA_def_boolean_array(srna, id, size, pydef ? def:NULL, name, description);
prop= RNA_def_property(srna, id, PROP_BOOLEAN, subtype);
RNA_def_property_array(prop, size);
- if(pydef) RNA_def_property_boolean_array_default(prop, def);
+ if (pydef) RNA_def_property_boolean_array_default(prop, def);
RNA_def_property_ui_text(prop, name, description);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -520,7 +520,7 @@ static PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw)
BPY_PROPDEF_HEAD(IntProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "options", "subtype", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -555,9 +555,9 @@ static PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw)
RNA_def_property_ui_text(prop, name, description);
RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, 3);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -588,7 +588,7 @@ static PyObject *BPy_IntVectorProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_HEAD(IntVectorProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "options", "subtype", "size", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -616,12 +616,12 @@ static PyObject *BPy_IntVectorProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_SUBTYPE_CHECK(IntVectorProperty, property_flag_items, property_subtype_array_items)
- if(size < 1 || size > PYRNA_STACK_ARRAY) {
+ if (size < 1 || size > PYRNA_STACK_ARRAY) {
PyErr_Format(PyExc_TypeError, "IntVectorProperty(size=%d): size must be between 0 and " STRINGIFY(PYRNA_STACK_ARRAY), size);
return NULL;
}
- if(pydef && PyC_AsArray(def, pydef, size, &PyLong_Type, FALSE, "IntVectorProperty(default=sequence)") < 0)
+ if (pydef && PyC_AsArray(def, pydef, size, &PyLong_Type, FALSE, "IntVectorProperty(default=sequence)") < 0)
return NULL;
if (bpy_prop_callback_check(update_cb, 2) == -1) {
@@ -630,14 +630,14 @@ static PyObject *BPy_IntVectorProperty(PyObject *self, PyObject *args, PyObject
prop= RNA_def_property(srna, id, PROP_INT, subtype);
RNA_def_property_array(prop, size);
- if(pydef) RNA_def_property_int_array_default(prop, def);
+ if (pydef) RNA_def_property_int_array_default(prop, def);
RNA_def_property_range(prop, min, max);
RNA_def_property_ui_text(prop, name, description);
RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, 3);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -666,7 +666,7 @@ static PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
BPY_PROPDEF_HEAD(FloatProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "options", "subtype", "unit", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -695,7 +695,7 @@ static PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
BPY_PROPDEF_SUBTYPE_CHECK(FloatProperty, property_flag_items, property_subtype_number_items)
- if(pyunit && RNA_enum_value_from_id(property_unit_items, pyunit, &unit)==0) {
+ if (pyunit && RNA_enum_value_from_id(property_unit_items, pyunit, &unit)==0) {
PyErr_Format(PyExc_TypeError, "FloatProperty(unit='%s'): invalid unit", pyunit);
return NULL;
}
@@ -710,9 +710,9 @@ static PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw)
RNA_def_property_ui_text(prop, name, description);
RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, precision);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -744,7 +744,7 @@ static PyObject *BPy_FloatVectorProperty(PyObject *self, PyObject *args, PyObjec
BPY_PROPDEF_HEAD(FloatVectorProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "options", "subtype", "unit", "size", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -774,17 +774,17 @@ static PyObject *BPy_FloatVectorProperty(PyObject *self, PyObject *args, PyObjec
BPY_PROPDEF_SUBTYPE_CHECK(FloatVectorProperty, property_flag_items, property_subtype_array_items)
- if(pyunit && RNA_enum_value_from_id(property_unit_items, pyunit, &unit)==0) {
+ if (pyunit && RNA_enum_value_from_id(property_unit_items, pyunit, &unit)==0) {
PyErr_Format(PyExc_TypeError, "FloatVectorProperty(unit='%s'): invalid unit", pyunit);
return NULL;
}
- if(size < 1 || size > PYRNA_STACK_ARRAY) {
+ if (size < 1 || size > PYRNA_STACK_ARRAY) {
PyErr_Format(PyExc_TypeError, "FloatVectorProperty(size=%d): size must be between 0 and " STRINGIFY(PYRNA_STACK_ARRAY), size);
return NULL;
}
- if(pydef && PyC_AsArray(def, pydef, size, &PyFloat_Type, FALSE, "FloatVectorProperty(default=sequence)") < 0)
+ if (pydef && PyC_AsArray(def, pydef, size, &PyFloat_Type, FALSE, "FloatVectorProperty(default=sequence)") < 0)
return NULL;
if (bpy_prop_callback_check(update_cb, 2) == -1) {
@@ -793,14 +793,14 @@ static PyObject *BPy_FloatVectorProperty(PyObject *self, PyObject *args, PyObjec
prop= RNA_def_property(srna, id, PROP_FLOAT, subtype | unit);
RNA_def_property_array(prop, size);
- if(pydef) RNA_def_property_float_array_default(prop, def);
+ if (pydef) RNA_def_property_float_array_default(prop, def);
RNA_def_property_range(prop, min, max);
RNA_def_property_ui_text(prop, name, description);
RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, precision);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -827,7 +827,7 @@ static PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw
BPY_PROPDEF_HEAD(StringProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "name", "description", "default", "maxlen", "options", "subtype", "update", NULL};
const char *id=NULL, *name="", *description="", *def="";
int id_len;
@@ -856,13 +856,13 @@ static PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw
}
prop= RNA_def_property(srna, id, PROP_STRING, subtype);
- if(maxlen != 0) RNA_def_property_string_maxlength(prop, maxlen + 1); /* +1 since it includes null terminator */
- if(def) RNA_def_property_string_default(prop, def);
+ if (maxlen != 0) RNA_def_property_string_maxlength(prop, maxlen + 1); /* +1 since it includes null terminator */
+ if (def) RNA_def_property_string_default(prop, def);
RNA_def_property_ui_text(prop, name, description);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -878,7 +878,7 @@ static size_t strswapbufcpy(char *buf, const char **orig)
char *dst= buf;
size_t i= 0;
*orig= buf;
- while((*dst= *src)) { dst++; src++; i++; }
+ while ((*dst= *src)) { dst++; src++; i++; }
return i + 1; /* include '\0' */
}
#endif
@@ -893,12 +893,12 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
short def_used= 0;
const char *def_cmp= NULL;
- if(is_enum_flag) {
- if(seq_len > RNA_ENUM_BITFLAG_SIZE) {
+ if (is_enum_flag) {
+ if (seq_len > RNA_ENUM_BITFLAG_SIZE) {
PyErr_SetString(PyExc_TypeError, "EnumProperty(...): maximum " STRINGIFY(RNA_ENUM_BITFLAG_SIZE) " members for a ENUM_FLAG type property");
return NULL;
}
- if(def && !PySet_Check(def)) {
+ if (def && !PySet_Check(def)) {
PyErr_Format(PyExc_TypeError,
"EnumProperty(...): default option must be a 'set' "
"type when ENUM_FLAG is enabled, not a '%.200s'",
@@ -907,9 +907,9 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
}
}
else {
- if(def) {
+ if (def) {
def_cmp= _PyUnicode_AsString(def);
- if(def_cmp==NULL) {
+ if (def_cmp==NULL) {
PyErr_Format(PyExc_TypeError,
"EnumProperty(...): default option must be a 'str' "
"type when ENUM_FLAG is disabled, not a '%.200s'",
@@ -924,7 +924,7 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
items= MEM_callocN(sizeof(EnumPropertyItem) * (seq_len + 1), "enum_items_from_py1");
- for(i=0; i<seq_len; i++) {
+ for (i=0; i<seq_len; i++) {
EnumPropertyItem tmp= {0, "", 0, "", ""};
Py_ssize_t item_size;
Py_ssize_t id_str_size;
@@ -933,7 +933,7 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
item= PySequence_Fast_GET_ITEM(seq_fast, i);
- if( (PyTuple_CheckExact(item)) &&
+ if ( (PyTuple_CheckExact(item)) &&
(item_size= PyTuple_GET_SIZE(item)) &&
(item_size == 3 || item_size == 4) &&
(tmp.identifier= _PyUnicode_AsStringAndSize(PyTuple_GET_ITEM(item, 0), &id_str_size)) &&
@@ -941,22 +941,22 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
(tmp.description= _PyUnicode_AsStringAndSize(PyTuple_GET_ITEM(item, 2), &desc_str_size)) &&
(item_size < 4 || py_long_as_int(PyTuple_GET_ITEM(item, 3), &tmp.value) != -1) /* TODO, number isnt ensured to be unique from the script author */
) {
- if(is_enum_flag) {
- if(item_size < 4) {
+ if (is_enum_flag) {
+ if (item_size < 4) {
tmp.value= 1<<i;
}
- if(def && PySet_Contains(def, PyTuple_GET_ITEM(item, 0))) {
+ if (def && PySet_Contains(def, PyTuple_GET_ITEM(item, 0))) {
*defvalue |= tmp.value;
def_used++;
}
}
else {
- if(item_size < 4) {
+ if (item_size < 4) {
tmp.value= i;
}
- if(def && def_used == 0 && strcmp(def_cmp, tmp.identifier)==0) {
+ if (def && def_used == 0 && strcmp(def_cmp, tmp.identifier)==0) {
*defvalue= tmp.value;
def_used++; /* only ever 1 */
}
@@ -978,9 +978,9 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
}
- if(is_enum_flag) {
+ if (is_enum_flag) {
/* strict check that all set members were used */
- if(def && def_used != PySet_GET_SIZE(def)) {
+ if (def && def_used != PySet_GET_SIZE(def)) {
MEM_freeN(items);
PyErr_Format(PyExc_TypeError,
@@ -990,7 +990,7 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
}
}
else {
- if(def && def_used == 0) {
+ if (def && def_used == 0) {
MEM_freeN(items);
PyErr_Format(PyExc_TypeError,
@@ -1012,7 +1012,7 @@ static EnumPropertyItem *enum_items_from_py(PyObject *seq_fast, PyObject *def, i
EnumPropertyItem *items_ptr= items_dup;
char *buf= ((char *)items_dup) + (sizeof(EnumPropertyItem) * (seq_len + 1));
memcpy(items_dup, items, sizeof(EnumPropertyItem) * (seq_len + 1));
- for(i=0; i<seq_len; i++, items_ptr++) {
+ for (i=0; i<seq_len; i++, items_ptr++) {
buf += strswapbufcpy(buf, &items_ptr->identifier);
buf += strswapbufcpy(buf, &items_ptr->name);
buf += strswapbufcpy(buf, &items_ptr->description);
@@ -1052,14 +1052,14 @@ static EnumPropertyItem *bpy_props_enum_itemf(struct bContext *C, PointerRNA *pt
Py_DECREF(args);
- if(items==NULL) {
+ if (items==NULL) {
err= -1;
}
else {
PyObject *items_fast;
int defvalue_dummy=0;
- if(!(items_fast= PySequence_Fast(items, "EnumProperty(...): return value from the callback was not a sequence"))) {
+ if (!(items_fast= PySequence_Fast(items, "EnumProperty(...): return value from the callback was not a sequence"))) {
err= -1;
}
else {
@@ -1067,7 +1067,7 @@ static EnumPropertyItem *bpy_props_enum_itemf(struct bContext *C, PointerRNA *pt
Py_DECREF(items_fast);
- if(!eitems) {
+ if (!eitems) {
err= -1;
}
}
@@ -1075,7 +1075,7 @@ static EnumPropertyItem *bpy_props_enum_itemf(struct bContext *C, PointerRNA *pt
Py_DECREF(items);
}
- if(err != -1) { /* worked */
+ if (err != -1) { /* worked */
*free= 1;
}
else {
@@ -1118,7 +1118,7 @@ static PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
BPY_PROPDEF_HEAD(EnumProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "items", "name", "description", "default", "options", "update", NULL};
const char *id=NULL, *name="", *description="";
PyObject *def= NULL;
@@ -1149,16 +1149,16 @@ static PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
}
/* items can be a list or a callable */
- if(PyFunction_Check(items)) { /* dont use PyCallable_Check because we need the function code for errors */
+ if (PyFunction_Check(items)) { /* dont use PyCallable_Check because we need the function code for errors */
PyCodeObject *f_code= (PyCodeObject *)PyFunction_GET_CODE(items);
- if(f_code->co_argcount != 2) {
+ if (f_code->co_argcount != 2) {
PyErr_Format(PyExc_ValueError,
"EnumProperty(...): expected 'items' function to take 2 arguments, not %d",
f_code->co_argcount);
return NULL;
}
- if(def) {
+ if (def) {
/* note, using type error here is odd but python does this for invalid arguments */
PyErr_SetString(PyExc_TypeError,
"EnumProperty(...): 'default' can't be set when 'items' is a function");
@@ -1169,7 +1169,7 @@ static PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
eitems= DummyRNA_NULL_items;
}
else {
- if(!(items_fast= PySequence_Fast(items, "EnumProperty(...): expected a sequence of tuples for the enum items or a function"))) {
+ if (!(items_fast= PySequence_Fast(items, "EnumProperty(...): expected a sequence of tuples for the enum items or a function"))) {
return NULL;
}
@@ -1177,28 +1177,28 @@ static PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw)
Py_DECREF(items_fast);
- if(!eitems) {
+ if (!eitems) {
return NULL;
}
}
- if(opts & PROP_ENUM_FLAG) prop= RNA_def_enum_flag(srna, id, eitems, defvalue, name, description);
- else prop= RNA_def_enum(srna, id, eitems, defvalue, name, description);
+ if (opts & PROP_ENUM_FLAG) prop= RNA_def_enum_flag(srna, id, eitems, defvalue, name, description);
+ else prop= RNA_def_enum(srna, id, eitems, defvalue, name, description);
- if(is_itemf) {
+ if (is_itemf) {
RNA_def_enum_funcs(prop, bpy_props_enum_itemf);
RNA_def_enum_py_data(prop, (void *)items);
/* Py_INCREF(items); */ /* watch out!, if user is tricky they can probably crash blender if they manage to free the callback, take care! */
}
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
- if(is_itemf == FALSE) {
+ if (is_itemf == FALSE) {
MEM_freeN(eitems);
}
}
@@ -1210,8 +1210,8 @@ static StructRNA *pointer_type_from_py(PyObject *value, const char *error_prefix
StructRNA *srna;
srna= srna_from_self(value, "");
- if(!srna) {
- if(PyErr_Occurred()) {
+ if (!srna) {
+ if (PyErr_Occurred()) {
PyObject *msg= PyC_ExceptionBuffer();
char *msg_char= _PyUnicode_AsString(msg);
PyErr_Format(PyExc_TypeError,
@@ -1227,7 +1227,7 @@ static StructRNA *pointer_type_from_py(PyObject *value, const char *error_prefix
return NULL;
}
- if(!RNA_struct_is_a(srna, &RNA_PropertyGroup)) {
+ if (!RNA_struct_is_a(srna, &RNA_PropertyGroup)) {
PyErr_Format(PyExc_TypeError,
"%.200s expected an RNA type derived from PropertyGroup",
error_prefix);
@@ -1256,7 +1256,7 @@ static PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *k
BPY_PROPDEF_HEAD(PointerProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "type", "name", "description", "options", "update", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -1280,7 +1280,7 @@ static PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *k
BPY_PROPDEF_CHECK(PointerProperty, property_flag_items)
ptype= pointer_type_from_py(type, "PointerProperty(...):");
- if(!ptype)
+ if (!ptype)
return NULL;
if (bpy_prop_callback_check(update_cb, 2) == -1) {
@@ -1288,9 +1288,9 @@ static PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *k
}
prop= RNA_def_pointer_runtime(srna, id, ptype, name, description);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
bpy_prop_callback_assign(prop, update_cb);
RNA_def_property_duplicate_pointers(srna, prop);
@@ -1316,7 +1316,7 @@ static PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_HEAD(CollectionProperty)
- if(srna) {
+ if (srna) {
static const char *kwlist[]= {"attr", "type", "name", "description", "options", NULL};
const char *id=NULL, *name="", *description="";
int id_len;
@@ -1338,13 +1338,13 @@ static PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject
BPY_PROPDEF_CHECK(CollectionProperty, property_flag_items)
ptype= pointer_type_from_py(type, "CollectionProperty(...):");
- if(!ptype)
+ if (!ptype)
return NULL;
prop= RNA_def_collection_runtime(srna, id, ptype, name, description);
- if(pyopts) {
- if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
- if((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ if (pyopts) {
+ if (opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
+ if ((opts & PROP_ANIMATABLE)==0) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
}
RNA_def_property_duplicate_pointers(srna, prop);
}
@@ -1363,7 +1363,7 @@ static PyObject *BPy_RemoveProperty(PyObject *self, PyObject *args, PyObject *kw
{
StructRNA *srna;
- if(PyTuple_GET_SIZE(args) == 1) {
+ if (PyTuple_GET_SIZE(args) == 1) {
PyObject *ret;
self= PyTuple_GET_ITEM(args, 0);
args= PyTuple_New(0);
@@ -1377,10 +1377,10 @@ static PyObject *BPy_RemoveProperty(PyObject *self, PyObject *args, PyObject *kw
}
srna= srna_from_self(self, "RemoveProperty(...):");
- if(srna==NULL && PyErr_Occurred()) {
+ if (srna==NULL && PyErr_Occurred()) {
return NULL; /* self's type was compatible but error getting the srna */
}
- else if(srna==NULL) {
+ else if (srna==NULL) {
PyErr_SetString(PyExc_TypeError, "RemoveProperty(): struct rna not available for this type");
return NULL;
}
@@ -1396,7 +1396,7 @@ static PyObject *BPy_RemoveProperty(PyObject *self, PyObject *args, PyObject *kw
return NULL;
}
- if(RNA_def_property_free_identifier(srna, id) != 1) {
+ if (RNA_def_property_free_identifier(srna, id) != 1) {
PyErr_Format(PyExc_TypeError, "RemoveProperty(): '%s' not a defined dynamic property", id);
return NULL;
}
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index ba7e2d41e69..e52df8f9320 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -85,14 +85,17 @@ static PyObject* pyrna_struct_Subtype(PointerRNA *ptr);
static PyObject *pyrna_prop_collection_values(BPy_PropertyRNA *self);
#define BPY_DOC_ID_PROP_TYPE_NOTE \
-" .. note:: Only :class:`bpy.types.ID`, :class:`bpy.types.Bone` and \n" \
+" .. note::\n" \
+"\n" \
+" Only :class:`bpy.types.ID`, :class:`bpy.types.Bone` and \n" \
" :class:`bpy.types.PoseBone` classes support custom properties.\n"
int pyrna_struct_validity_check(BPy_StructRNA *pysrna)
{
- if(pysrna->ptr.type)
+ if (pysrna->ptr.type) {
return 0;
+ }
PyErr_Format(PyExc_ReferenceError,
"StructRNA of type %.200s has been removed",
Py_TYPE(pysrna)->tp_name);
@@ -101,8 +104,9 @@ int pyrna_struct_validity_check(BPy_StructRNA *pysrna)
int pyrna_prop_validity_check(BPy_PropertyRNA *self)
{
- if(self->ptr.type)
+ if (self->ptr.type) {
return 0;
+ }
PyErr_Format(PyExc_ReferenceError,
"PropertyRNA of type %.200s.%.200s has been removed",
Py_TYPE(self)->tp_name, RNA_property_identifier(self->prop));
@@ -131,15 +135,15 @@ static void id_release_gc(struct ID *id)
{
unsigned int j;
// unsigned int i= 0;
- for(j=0; j<3; j++) {
+ for (j=0; j<3; j++) {
/* hack below to get the 2 other lists from _PyGC_generation0 that are normally not exposed */
PyGC_Head *gen= (PyGC_Head *)(((char *)_PyGC_generation0) + (sizeof(gc_generation) * j));
PyGC_Head *g= gen->gc.gc_next;
while ((g= g->gc.gc_next) != gen) {
PyObject *ob= FROM_GC(g);
- if(PyType_IsSubtype(Py_TYPE(ob), &pyrna_struct_Type) || PyType_IsSubtype(Py_TYPE(ob), &pyrna_prop_Type)) {
+ if (PyType_IsSubtype(Py_TYPE(ob), &pyrna_struct_Type) || PyType_IsSubtype(Py_TYPE(ob), &pyrna_prop_Type)) {
BPy_DummyPointerRNA *ob_ptr= (BPy_DummyPointerRNA *)ob;
- if(ob_ptr->ptr.id.data == id) {
+ if (ob_ptr->ptr.id.data == id) {
pyrna_invalidate(ob_ptr);
// printf("freeing: %p %s, %.200s\n", (void *)ob, id->name, Py_TYPE(ob)->tp_name);
// i++;
@@ -163,7 +167,7 @@ static GHash *id_weakref_pool_get(ID *id)
{
GHash *weakinfo_hash= NULL;
- if(id_weakref_pool) {
+ if (id_weakref_pool) {
weakinfo_hash= BLI_ghash_lookup(id_weakref_pool, (void *)id);
}
else {
@@ -172,7 +176,7 @@ static GHash *id_weakref_pool_get(ID *id)
weakinfo_hash= NULL;
}
- if(weakinfo_hash==NULL) {
+ if (weakinfo_hash==NULL) {
/* we're using a ghash as a set, could use libHX's HXMAP_SINGULAR but would be an extra dep. */
weakinfo_hash= BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "rna_id");
BLI_ghash_insert(id_weakref_pool, (void *)id, weakinfo_hash);
@@ -220,7 +224,7 @@ static PyObject *id_free_weakref_cb(PyObject *weakinfo_capsule, PyObject *weakre
GHash *weakinfo_hash= PyCapsule_GetPointer(weakinfo_capsule, NULL);
- if(BLI_ghash_size(weakinfo_hash) > 1) {
+ if (BLI_ghash_size(weakinfo_hash) > 1) {
BLI_ghash_remove(weakinfo_hash, weakref, NULL, NULL);
}
else { /* get the last id and free it */
@@ -246,7 +250,7 @@ static void id_release_weakref_list(struct ID *id, GHash *weakinfo_hash)
while (!BLI_ghashIterator_isDone(&weakinfo_hash_iter)) {
PyObject *weakref= (PyObject *)BLI_ghashIterator_getKey(&weakinfo_hash_iter);
PyObject *item= PyWeakref_GET_OBJECT(weakref);
- if(item != Py_None) {
+ if (item != Py_None) {
#ifdef DEBUG_RNA_WEAKREF
PyC_ObSpit("id_release_weakref item ", item);
@@ -263,7 +267,7 @@ static void id_release_weakref_list(struct ID *id, GHash *weakinfo_hash)
BLI_ghash_remove(id_weakref_pool, (void *)id, NULL, NULL);
BLI_ghash_free(weakinfo_hash, NULL, NULL);
- if(BLI_ghash_size(id_weakref_pool) == 0) {
+ if (BLI_ghash_size(id_weakref_pool) == 0) {
BLI_ghash_free(id_weakref_pool, NULL, NULL);
id_weakref_pool= NULL;
#ifdef DEBUG_RNA_WEAKREF
@@ -275,7 +279,7 @@ static void id_release_weakref_list(struct ID *id, GHash *weakinfo_hash)
static void id_release_weakref(struct ID *id)
{
GHash *weakinfo_hash= BLI_ghash_lookup(id_weakref_pool, (void *)id);
- if(weakinfo_hash) {
+ if (weakinfo_hash) {
id_release_weakref_list(id, weakinfo_hash);
}
}
@@ -289,7 +293,7 @@ void BPY_id_release(struct ID *id)
#endif
#ifdef USE_PYRNA_INVALIDATE_WEAKREF
- if(id_weakref_pool) {
+ if (id_weakref_pool) {
PyGILState_STATE gilstate= PyGILState_Ensure();
id_release_weakref(id);
@@ -307,13 +311,13 @@ static short rna_disallow_writes= FALSE;
static int rna_id_write_error(PointerRNA *ptr, PyObject *key)
{
ID *id= ptr->id.data;
- if(id) {
+ if (id) {
const short idcode= GS(id->name);
- if(!ELEM(idcode, ID_WM, ID_SCR)) { /* may need more added here */
+ if (!ELEM(idcode, ID_WM, ID_SCR)) { /* may need more added here */
const char *idtype= BKE_idcode_to_name(idcode);
const char *pyname;
- if(key && PyUnicode_Check(key)) pyname= _PyUnicode_AsString(key);
- else pyname= "<UNKNOWN>";
+ if (key && PyUnicode_Check(key)) pyname= _PyUnicode_AsString(key);
+ else pyname= "<UNKNOWN>";
/* make a nice string error */
BLI_assert(idtype != NULL);
@@ -386,13 +390,13 @@ static int mathutils_rna_vector_get(BaseMathObject *bmo, int subtype)
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
RNA_property_float_get_array(&self->ptr, self->prop, bmo->data);
/* Euler order exception */
- if(subtype==MATHUTILS_CB_SUBTYPE_EUL) {
+ if (subtype==MATHUTILS_CB_SUBTYPE_EUL) {
EulerObject *eul= (EulerObject *)bmo;
PropertyRNA *prop_eul_order= NULL;
eul->order= pyrna_rotation_euler_order_get(&self->ptr, &prop_eul_order, eul->order);
@@ -408,11 +412,11 @@ static int mathutils_rna_vector_set(BaseMathObject *bmo, int subtype)
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
return -1;
}
#endif // USE_PEDANTIC_WRITE
@@ -426,26 +430,26 @@ static int mathutils_rna_vector_set(BaseMathObject *bmo, int subtype)
RNA_property_float_range(&self->ptr, self->prop, &min, &max);
- if(min != FLT_MIN || max != FLT_MAX) {
+ if (min != FLT_MIN || max != FLT_MAX) {
int i, len= RNA_property_array_length(&self->ptr, self->prop);
- for(i=0; i<len; i++) {
+ for (i=0; i<len; i++) {
CLAMP(bmo->data[i], min, max);
}
}
RNA_property_float_set_array(&self->ptr, self->prop, bmo->data);
- if(RNA_property_update_check(self->prop)) {
+ if (RNA_property_update_check(self->prop)) {
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
}
/* Euler order exception */
- if(subtype==MATHUTILS_CB_SUBTYPE_EUL) {
+ if (subtype==MATHUTILS_CB_SUBTYPE_EUL) {
EulerObject *eul= (EulerObject *)bmo;
PropertyRNA *prop_eul_order= NULL;
short order= pyrna_rotation_euler_order_get(&self->ptr, &prop_eul_order, eul->order);
- if(order != eul->order) {
+ if (order != eul->order) {
RNA_property_enum_set(&self->ptr, prop_eul_order, eul->order);
- if(RNA_property_update_check(prop_eul_order)) {
+ if (RNA_property_update_check(prop_eul_order)) {
RNA_property_update(BPy_GetContext(), &self->ptr, prop_eul_order);
}
}
@@ -459,7 +463,7 @@ static int mathutils_rna_vector_get_index(BaseMathObject *bmo, int UNUSED(subtyp
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
bmo->data[index]= RNA_property_float_get_index(&self->ptr, self->prop, index);
@@ -472,11 +476,11 @@ static int mathutils_rna_vector_set_index(BaseMathObject *bmo, int UNUSED(subtyp
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
return -1;
}
#endif // USE_PEDANTIC_WRITE
@@ -491,7 +495,7 @@ static int mathutils_rna_vector_set_index(BaseMathObject *bmo, int UNUSED(subtyp
RNA_property_float_clamp(&self->ptr, self->prop, &bmo->data[index]);
RNA_property_float_set_index(&self->ptr, self->prop, index, bmo->data[index]);
- if(RNA_property_update_check(self->prop)) {
+ if (RNA_property_update_check(self->prop)) {
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
}
@@ -516,7 +520,7 @@ static int mathutils_rna_matrix_get(BaseMathObject *bmo, int UNUSED(subtype))
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
RNA_property_float_get_array(&self->ptr, self->prop, bmo->data);
@@ -529,11 +533,11 @@ static int mathutils_rna_matrix_set(BaseMathObject *bmo, int UNUSED(subtype))
PYRNA_PROP_CHECK_INT(self);
- if(self->prop==NULL)
+ if (self->prop==NULL)
return -1;
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, NULL)) {
return -1;
}
#endif // USE_PEDANTIC_WRITE
@@ -548,7 +552,7 @@ static int mathutils_rna_matrix_set(BaseMathObject *bmo, int UNUSED(subtype))
/* can ignore clamping here */
RNA_property_float_set_array(&self->ptr, self->prop, bmo->data);
- if(RNA_property_update_check(self->prop)) {
+ if (RNA_property_update_check(self->prop)) {
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
}
return 0;
@@ -565,10 +569,10 @@ static Mathutils_Callback mathutils_rna_matrix_cb= {
static short pyrna_rotation_euler_order_get(PointerRNA *ptr, PropertyRNA **prop_eul_order, short order_fallback)
{
/* attempt to get order */
- if(*prop_eul_order==NULL)
+ if (*prop_eul_order==NULL)
*prop_eul_order= RNA_struct_find_property(ptr, "rotation_mode");
- if(*prop_eul_order) {
+ if (*prop_eul_order) {
short order= RNA_property_enum_get(ptr, *prop_eul_order);
if (order >= EULER_ORDER_XYZ && order <= EULER_ORDER_ZYX) /* could be quat or axisangle */
return order;
@@ -604,13 +608,13 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
is_thick= (flag & PROP_THICK_WRAP);
if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) {
- if(!is_thick)
+ if (!is_thick)
ret= pyrna_prop_CreatePyObject(ptr, prop); /* owned by the mathutils PyObject */
switch(RNA_property_subtype(prop)) {
case PROP_ALL_VECTOR_SUBTYPES:
- if(len>=2 && len <= 4) {
- if(is_thick) {
+ if (len>=2 && len <= 4) {
+ if (is_thick) {
ret= newVectorObject(NULL, len, Py_NEW, NULL);
RNA_property_float_get_array(ptr, prop, ((VectorObject *)ret)->vec);
}
@@ -622,8 +626,8 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
}
break;
case PROP_MATRIX:
- if(len==16) {
- if(is_thick) {
+ if (len==16) {
+ if (is_thick) {
ret= newMatrixObject(NULL, 4, 4, Py_NEW, NULL);
RNA_property_float_get_array(ptr, prop, ((MatrixObject *)ret)->contigPtr);
}
@@ -634,7 +638,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
}
}
else if (len==9) {
- if(is_thick) {
+ if (is_thick) {
ret= newMatrixObject(NULL, 3, 3, Py_NEW, NULL);
RNA_property_float_get_array(ptr, prop, ((MatrixObject *)ret)->contigPtr);
}
@@ -647,8 +651,8 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
break;
case PROP_EULER:
case PROP_QUATERNION:
- if(len==3) { /* euler */
- if(is_thick) {
+ if (len==3) { /* euler */
+ if (is_thick) {
/* attempt to get order, only needed for thick types since wrapped with update via callbacks */
PropertyRNA *prop_eul_order= NULL;
short order= pyrna_rotation_euler_order_get(ptr, &prop_eul_order, EULER_ORDER_XYZ);
@@ -664,7 +668,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
}
}
else if (len==4) {
- if(is_thick) {
+ if (is_thick) {
ret= newQuaternionObject(NULL, Py_NEW, NULL);
RNA_property_float_get_array(ptr, prop, ((QuaternionObject *)ret)->quat);
}
@@ -677,8 +681,8 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
break;
case PROP_COLOR:
case PROP_COLOR_GAMMA:
- if(len==3) { /* color */
- if(is_thick) {
+ if (len==3) { /* color */
+ if (is_thick) {
ret= newColorObject(NULL, Py_NEW, NULL); // TODO, get order from RNA
RNA_property_float_get_array(ptr, prop, ((ColorObject *)ret)->col);
}
@@ -693,8 +697,8 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
}
}
- if(ret==NULL) {
- if(is_thick) {
+ if (ret==NULL) {
+ if (is_thick) {
/* this is an array we cant reference (since its not thin wrappable)
* and cannot be coerced into a mathutils type, so return as a list */
ret= pyrna_prop_array_subscript_slice(NULL, ptr, prop, 0, len, len);
@@ -714,7 +718,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop)
/* same as RNA_enum_value_from_id but raises an exception */
int pyrna_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix)
{
- if(RNA_enum_value_from_id(item, identifier, value) == 0) {
+ if (RNA_enum_value_from_id(item, identifier, value) == 0) {
const char *enum_str= BPy_enum_as_string(item);
PyErr_Format(PyExc_TypeError,
"%s: '%.200s' not found in (%s)",
@@ -800,14 +804,14 @@ static PyObject *pyrna_struct_str(BPy_StructRNA *self)
PyObject *ret;
const char *name;
- if(!PYRNA_STRUCT_IS_VALID(self)) {
+ if (!PYRNA_STRUCT_IS_VALID(self)) {
return PyUnicode_FromFormat("<bpy_struct, %.200s dead>",
Py_TYPE(self)->tp_name);
}
/* print name if available */
name= RNA_struct_name_get_alloc(&self->ptr, NULL, FALSE);
- if(name) {
+ if (name) {
ret= PyUnicode_FromFormat("<bpy_struct, %.200s(\"%.200s\")>",
RNA_struct_identifier(self->ptr.type),
name);
@@ -826,12 +830,12 @@ static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
PyObject *tmp_str;
PyObject *ret;
- if(id == NULL || !PYRNA_STRUCT_IS_VALID(self))
+ if (id == NULL || !PYRNA_STRUCT_IS_VALID(self))
return pyrna_struct_str(self); /* fallback */
tmp_str= PyUnicode_FromString(id->name+2);
- if(RNA_struct_is_ID(self->ptr.type)) {
+ if (RNA_struct_is_ID(self->ptr.type)) {
ret= PyUnicode_FromFormat("bpy.data.%s[%R]",
BKE_idcode_to_name_plural(GS(id->name)),
tmp_str);
@@ -839,7 +843,7 @@ static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
else {
const char *path;
path= RNA_path_from_ID_to_struct(&self->ptr);
- if(path) {
+ if (path) {
ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
BKE_idcode_to_name_plural(GS(id->name)),
tmp_str,
@@ -872,7 +876,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
type= RNA_property_type(self->prop);
- if(RNA_enum_id_from_value(property_type_items, type, &type_id)==0) {
+ if (RNA_enum_id_from_value(property_type_items, type, &type_id)==0) {
PyErr_SetString(PyExc_RuntimeError, "could not use property type, internal error"); /* should never happen */
return NULL;
}
@@ -883,23 +887,23 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
while ((*c++= tolower(*type_id++))) {} ;
- if(type==PROP_COLLECTION) {
+ if (type==PROP_COLLECTION) {
len= pyrna_prop_collection_length(self);
}
else if (RNA_property_array_check(self->prop)) {
len= pyrna_prop_array_length((BPy_PropertyArrayRNA *)self);
}
- if(len != -1)
+ if (len != -1)
sprintf(--c, "[%d]", len);
}
/* if a pointer, try to print name of pointer target too */
- if(RNA_property_type(self->prop) == PROP_POINTER) {
+ if (RNA_property_type(self->prop) == PROP_POINTER) {
ptr= RNA_property_pointer_get(&self->ptr, self->prop);
name= RNA_struct_name_get_alloc(&ptr, NULL, FALSE);
- if(name) {
+ if (name) {
ret= PyUnicode_FromFormat("<bpy_%.200s, %.200s.%.200s(\"%.200s\")>",
type_fmt,
RNA_struct_identifier(self->ptr.type),
@@ -909,9 +913,9 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
return ret;
}
}
- if(RNA_property_type(self->prop) == PROP_COLLECTION) {
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
PointerRNA r_ptr;
- if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ if (RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
return PyUnicode_FromFormat("<bpy_%.200s, %.200s>",
type_fmt,
RNA_struct_identifier(r_ptr.type));
@@ -933,13 +937,13 @@ static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
PYRNA_PROP_CHECK_OBJ(self);
- if(id == NULL)
+ if (id == NULL)
return pyrna_prop_str(self); /* fallback */
tmp_str= PyUnicode_FromString(id->name+2);
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
- if(path) {
+ if (path) {
ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
BKE_idcode_to_name_plural(GS(id->name)),
tmp_str,
@@ -1025,7 +1029,7 @@ static void pyrna_struct_dealloc(BPy_StructRNA *self)
#endif
#ifdef USE_PYRNA_STRUCT_REFERENCE
- if(self->reference) {
+ if (self->reference) {
PyObject_GC_UnTrack(self);
pyrna_struct_clear(self);
}
@@ -1038,13 +1042,13 @@ static void pyrna_struct_dealloc(BPy_StructRNA *self)
#ifdef USE_PYRNA_STRUCT_REFERENCE
static void pyrna_struct_reference_set(BPy_StructRNA *self, PyObject *reference)
{
- if(self->reference) {
+ if (self->reference) {
// PyObject_GC_UnTrack(self); /* INITIALIZED TRACKED? */
pyrna_struct_clear(self);
}
/* reference is now NULL */
- if(reference) {
+ if (reference) {
self->reference= reference;
Py_INCREF(reference);
// PyObject_GC_Track(self); /* INITIALIZED TRACKED? */
@@ -1082,14 +1086,14 @@ static const char *pyrna_enum_as_string(PointerRNA *ptr, PropertyRNA *prop)
int free= FALSE;
RNA_property_enum_items(BPy_GetContext(), ptr, prop, &item, NULL, &free);
- if(item) {
+ if (item) {
result= BPy_enum_as_string(item);
}
else {
result= "";
}
- if(free)
+ if (free)
MEM_freeN(item);
return result;
@@ -1142,14 +1146,14 @@ int pyrna_set_to_enum_bitfield(EnumPropertyItem *items, PyObject *value, int *r_
while (_PySet_NextEntry(value, &pos, &key, &hash)) {
const char *param= _PyUnicode_AsString(key);
- if(param==NULL) {
+ if (param==NULL) {
PyErr_Format(PyExc_TypeError,
"%.200s expected a string, not %.200s",
error_prefix, Py_TYPE(key)->tp_name);
return -1;
}
- if(pyrna_enum_value_from_id(items, param, &ret, error_prefix) < 0) {
+ if (pyrna_enum_value_from_id(items, param, &ret, error_prefix) < 0) {
return -1;
}
@@ -1178,11 +1182,11 @@ static int pyrna_prop_to_enum_bitfield(PointerRNA *ptr, PropertyRNA *prop, PyObj
RNA_property_enum_items(BPy_GetContext(), ptr, prop, &item, NULL, &free);
- if(item) {
+ if (item) {
ret= pyrna_set_to_enum_bitfield(item, value, r_value, error_prefix);
}
else {
- if(PySet_GET_SIZE(value)) {
+ if (PySet_GET_SIZE(value)) {
PyErr_Format(PyExc_TypeError,
"%.200s: empty enum \"%.200s\" could not have any values assigned",
error_prefix, RNA_property_identifier(prop));
@@ -1193,7 +1197,7 @@ static int pyrna_prop_to_enum_bitfield(PointerRNA *ptr, PropertyRNA *prop, PyObj
}
}
- if(free)
+ if (free)
MEM_freeN(item);
return ret;
@@ -1204,10 +1208,10 @@ PyObject *pyrna_enum_bitfield_to_py(EnumPropertyItem *items, int value)
PyObject *ret= PySet_New(NULL);
const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1];
- if(RNA_enum_bitflag_identifiers(items, value, identifier)) {
+ if (RNA_enum_bitflag_identifiers(items, value, identifier)) {
PyObject *item;
int index;
- for(index=0; identifier[index]; index++) {
+ for (index=0; identifier[index]; index++) {
item= PyUnicode_FromString(identifier[index]);
PySet_Add(ret, item);
Py_DECREF(item);
@@ -1221,7 +1225,7 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
{
PyObject *item, *ret= NULL;
- if(RNA_property_flag(prop) & PROP_ENUM_FLAG) {
+ if (RNA_property_flag(prop) & PROP_ENUM_FLAG) {
const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1];
ret= PySet_New(NULL);
@@ -1229,7 +1233,7 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
if (RNA_property_enum_bitflag_identifiers(BPy_GetContext(), ptr, prop, val, identifier)) {
int index;
- for(index=0; identifier[index]; index++) {
+ for (index=0; identifier[index]; index++) {
item= PyUnicode_FromString(identifier[index]);
PySet_Add(ret, item);
Py_DECREF(item);
@@ -1249,7 +1253,7 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
/* don't throw error here, can't trust blender 100% to give the
* right values, python code should not generate error for that */
RNA_property_enum_items(BPy_GetContext(), ptr, prop, &enum_item, NULL, &free);
- if(enum_item && enum_item->identifier) {
+ if (enum_item && enum_item->identifier) {
ret= PyUnicode_FromString(enum_item->identifier);
}
else {
@@ -1264,13 +1268,13 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
PyErr_Warn(PyExc_RuntimeWarning, error_str);
#endif
- if(ptr_name)
+ if (ptr_name)
MEM_freeN((void *)ptr_name);
ret= PyUnicode_FromString("");
}
- if(free)
+ if (free)
MEM_freeN(enum_item);
/*
PyErr_Format(PyExc_AttributeError,
@@ -1312,7 +1316,7 @@ PyObject *pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
buf= RNA_property_string_get_alloc(ptr, prop, buf_fixed, sizeof(buf_fixed));
#ifdef USE_STRING_COERCE
/* only file paths get special treatment, they may contain non utf-8 chars */
- if(ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
+ if (ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
ret= PyC_UnicodeFromByte(buf);
}
else {
@@ -1321,7 +1325,7 @@ PyObject *pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
#else // USE_STRING_COERCE
ret= PyUnicode_FromString(buf);
#endif // USE_STRING_COERCE
- if(buf_fixed != buf) {
+ if (buf_fixed != buf) {
MEM_freeN((void *)buf);
}
break;
@@ -1384,7 +1388,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha
item= PyDict_GetItemString(kw, arg_name); /* wont set an error */
if (item == NULL) {
- if(all_args) {
+ if (all_args) {
PyErr_Format(PyExc_TypeError,
"%.200s: keyword \"%.200s\" missing",
error_prefix, arg_name ? arg_name : "<UNKNOWN>");
@@ -1439,7 +1443,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
if (RNA_property_array_check(prop)) {
/* done getting the length */
- if(pyrna_py_to_array(ptr, prop, data, value, error_prefix) == -1) {
+ if (pyrna_py_to_array(ptr, prop, data, value, error_prefix) == -1) {
return -1;
}
}
@@ -1454,12 +1458,12 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
/* 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_OUTPUT)
+ if (RNA_property_flag(prop) & PROP_OUTPUT)
param= PyObject_IsTrue(value);
else
param= PyLong_AsLong(value);
- if(param < 0) {
+ if (param < 0) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s expected True/False or 0/1, not %.200s",
error_prefix, RNA_struct_identifier(ptr->type),
@@ -1467,8 +1471,8 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
return -1;
}
else {
- if(data) *((int*)data)= param;
- else RNA_property_boolean_set(ptr, prop, param);
+ if (data) *((int*)data)= param;
+ else RNA_property_boolean_set(ptr, prop, param);
}
break;
}
@@ -1476,7 +1480,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
{
int overflow;
long param= PyLong_AsLongAndOverflow(value, &overflow);
- if(overflow || (param > INT_MAX) || (param < INT_MIN)) {
+ if (overflow || (param > INT_MAX) || (param < INT_MIN)) {
PyErr_Format(PyExc_ValueError,
"%.200s %.200s.%.200s value not in 'int' range "
"(" STRINGIFY(INT_MIN) ", " STRINGIFY(INT_MAX) ")",
@@ -1494,8 +1498,8 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
else {
int param_i= (int)param;
RNA_property_int_clamp(ptr, prop, &param_i);
- if(data) *((int*)data)= param_i;
- else RNA_property_int_set(ptr, prop, param_i);
+ if (data) *((int*)data)= param_i;
+ else RNA_property_int_set(ptr, prop, param_i);
}
break;
}
@@ -1511,8 +1515,8 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
else {
RNA_property_float_clamp(ptr, prop, (float *)&param);
- if(data) *((float*)data)= param;
- else RNA_property_float_set(ptr, prop, param);
+ if (data) *((float*)data)= param;
+ else RNA_property_float_set(ptr, prop, param);
}
break;
}
@@ -1522,14 +1526,14 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
#ifdef USE_STRING_COERCE
PyObject *value_coerce= NULL;
int subtype= RNA_property_subtype(prop);
- if(ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
+ if (ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
/* TODO, get size */
param= PyC_UnicodeAsByte(value, &value_coerce);
}
else {
param= _PyUnicode_AsString(value);
#ifdef WITH_INTERNATIONAL
- if(subtype == PROP_TRANSLATE) {
+ if (subtype == PROP_TRANSLATE) {
param= UI_translate_do_iface(param);
}
#endif // WITH_INTERNATIONAL
@@ -1540,7 +1544,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
#endif // USE_STRING_COERCE
if (param==NULL) {
- if(PyUnicode_Check(value)) {
+ if (PyUnicode_Check(value)) {
/* there was an error assigning a string type,
* rather than setting a new error, prefix the existing one
*/
@@ -1559,8 +1563,8 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
return -1;
}
else {
- if(data) *((char**)data)= (char *)param; /*XXX, this is suspect but needed for function calls, need to see if theres a better way */
- else RNA_property_string_set(ptr, prop, param);
+ if (data) *((char**)data)= (char *)param; /*XXX, this is suspect but needed for function calls, need to see if theres a better way */
+ else RNA_property_string_set(ptr, prop, param);
}
#ifdef USE_STRING_COERCE
Py_XDECREF(value_coerce);
@@ -1572,9 +1576,9 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
int val= 0;
/* type checkins is done by each function */
- if(RNA_property_flag(prop) & PROP_ENUM_FLAG) {
+ if (RNA_property_flag(prop) & PROP_ENUM_FLAG) {
/* set of enum items, concatenate all values with OR */
- if(pyrna_prop_to_enum_bitfield(ptr, prop, value, &val, error_prefix) < 0) {
+ if (pyrna_prop_to_enum_bitfield(ptr, prop, value, &val, error_prefix) < 0) {
return -1;
}
}
@@ -1585,8 +1589,8 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
}
- if(data) *((int*)data)= val;
- else RNA_property_enum_set(ptr, prop, val);
+ if (data) *((int*)data)= val;
+ else RNA_property_enum_set(ptr, prop, val);
break;
}
@@ -1608,7 +1612,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
* this is so bad that its almost a good reason to do away with fake 'self.properties -> self' class mixing
* if this causes problems in the future it should be removed.
*/
- if( (ptr_type == &RNA_AnyType) &&
+ if ((ptr_type == &RNA_AnyType) &&
(BPy_StructRNA_Check(value)) &&
(RNA_struct_is_a(((BPy_StructRNA *)value)->ptr.type, &RNA_Operator))
) {
@@ -1624,10 +1628,10 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
/* another exception, allow to pass a collection as an RNA property */
- if(Py_TYPE(value)==&pyrna_prop_collection_Type) { /* ok to ignore idprop collections */
+ if (Py_TYPE(value)==&pyrna_prop_collection_Type) { /* ok to ignore idprop collections */
PointerRNA c_ptr;
BPy_PropertyRNA *value_prop= (BPy_PropertyRNA *)value;
- if(RNA_property_collection_type_get(&value_prop->ptr, value_prop->prop, &c_ptr)) {
+ if (RNA_property_collection_type_get(&value_prop->ptr, value_prop->prop, &c_ptr)) {
value= pyrna_struct_CreatePyObject(&c_ptr);
value_new= value;
}
@@ -1641,7 +1645,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
}
- if(!BPy_StructRNA_Check(value) && value != Py_None) {
+ if (!BPy_StructRNA_Check(value) && value != Py_None) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s expected a %.200s type, not %.200s",
error_prefix, RNA_struct_identifier(ptr->type),
@@ -1649,14 +1653,14 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
Py_TYPE(value)->tp_name);
Py_XDECREF(value_new); return -1;
}
- else if((flag & PROP_NEVER_NULL) && value == Py_None) {
+ else if ((flag & PROP_NEVER_NULL) && value == Py_None) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s does not support a 'None' assignment %.200s type",
error_prefix, RNA_struct_identifier(ptr->type),
RNA_property_identifier(prop), RNA_struct_identifier(ptr_type));
Py_XDECREF(value_new); return -1;
}
- else if(value != Py_None && ((flag & PROP_ID_SELF_CHECK) && ptr->id.data == ((BPy_StructRNA*)value)->ptr.id.data)) {
+ else if (value != Py_None && ((flag & PROP_ID_SELF_CHECK) && ptr->id.data == ((BPy_StructRNA*)value)->ptr.id.data)) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s ID type does not support assignment to its self",
error_prefix, RNA_struct_identifier(ptr->type),
@@ -1666,18 +1670,18 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
else {
BPy_StructRNA *param= (BPy_StructRNA*)value;
int raise_error= FALSE;
- if(data) {
+ if (data) {
- if(flag & PROP_RNAPTR) {
- if(value == Py_None)
+ if (flag & PROP_RNAPTR) {
+ if (value == Py_None)
memset(data, 0, sizeof(PointerRNA));
else
*((PointerRNA*)data)= param->ptr;
}
- else if(value == Py_None) {
+ else if (value == Py_None) {
*((void**)data)= NULL;
}
- else if(RNA_struct_is_a(param->ptr.type, ptr_type)) {
+ else if (RNA_struct_is_a(param->ptr.type, ptr_type)) {
*((void**)data)= param->ptr.data;
}
else {
@@ -1686,11 +1690,11 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
else {
/* data==NULL, assign to RNA */
- if(value == Py_None) {
+ if (value == Py_None) {
PointerRNA valueptr= {{NULL}};
RNA_property_pointer_set(ptr, prop, valueptr);
}
- else if(RNA_struct_is_a(param->ptr.type, ptr_type)) {
+ else if (RNA_struct_is_a(param->ptr.type, ptr_type)) {
RNA_property_pointer_set(ptr, prop, param->ptr);
}
else {
@@ -1705,7 +1709,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
}
- if(raise_error) {
+ if (raise_error) {
PointerRNA tmp;
RNA_pointer_create(NULL, ptr_type, NULL, &tmp);
PyErr_Format(PyExc_TypeError,
@@ -1732,7 +1736,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
lb= (data)? (ListBase*)data: NULL;
/* convert a sequence of dict's into a collection */
- if(!PySequence_Check(value)) {
+ if (!PySequence_Check(value)) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s expected a sequence for an RNA collection, not %.200s",
error_prefix, RNA_struct_identifier(ptr->type),
@@ -1741,10 +1745,10 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
seq_len= PySequence_Size(value);
- for(i=0; i < seq_len; i++) {
+ for (i=0; i < seq_len; i++) {
item= PySequence_GetItem(value, i);
- if(item==NULL) {
+ if (item==NULL) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s failed to get sequence index '%d' for an RNA collection",
error_prefix, RNA_struct_identifier(ptr->type),
@@ -1753,7 +1757,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
return -1;
}
- if(PyDict_Check(item)==0) {
+ if (PyDict_Check(item)==0) {
PyErr_Format(PyExc_TypeError,
"%.200s %.200s.%.200s expected a each sequence "
"member to be a dict for an RNA collection, not %.200s",
@@ -1763,7 +1767,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
return -1;
}
- if(lb) {
+ if (lb) {
link= MEM_callocN(sizeof(CollectionPointerLink), "PyCollectionPointerLink");
link->ptr= itemptr;
BLI_addtail(lb, link);
@@ -1771,7 +1775,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
else
RNA_property_collection_add(ptr, prop, &itemptr);
- if(pyrna_pydict_to_props(&itemptr, item, 1, "Converting a python list to an RNA collection")==-1) {
+ if (pyrna_pydict_to_props(&itemptr, item, 1, "Converting a python list to an RNA collection")==-1) {
PyObject *msg= PyC_ExceptionBuffer();
const char *msg_char= _PyUnicode_AsString(msg);
@@ -1801,7 +1805,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
}
/* Run rna property functions */
- if(RNA_property_update_check(prop)) {
+ if (RNA_property_update_check(prop)) {
RNA_property_update(BPy_GetContext(), ptr, prop);
}
@@ -1836,7 +1840,7 @@ static int pyrna_py_to_prop_array_index(BPy_PropertyArrayRNA *self, int index, P
{
int param= PyLong_AsLong(value);
- if(param < 0 || param > 1) {
+ if (param < 0 || param > 1) {
PyErr_SetString(PyExc_TypeError, "expected True/False or 0/1");
ret= -1;
}
@@ -1879,7 +1883,7 @@ static int pyrna_py_to_prop_array_index(BPy_PropertyArrayRNA *self, int index, P
}
/* Run rna property functions */
- if(RNA_property_update_check(prop)) {
+ if (RNA_property_update_check(prop)) {
RNA_property_update(BPy_GetContext(), ptr, prop);
}
@@ -1932,9 +1936,9 @@ static int pyrna_prop_collection_bool(BPy_PropertyRNA *self)
* index is used or to detect internal error with a valid index.
* This is done for faster lookups. */
#define PYRNA_PROP_COLLECTION_ABS_INDEX(ret_err) \
- if(keynum < 0) { \
+ if (keynum < 0) { \
keynum_abs += RNA_property_collection_length(&self->ptr, self->prop); \
- if(keynum_abs < 0) { \
+ if (keynum_abs < 0) { \
PyErr_Format(PyExc_IndexError, \
"bpy_prop_collection[%d]: out of range.", keynum); \
return ret_err; \
@@ -1952,12 +1956,12 @@ static PyObject *pyrna_prop_collection_subscript_int(BPy_PropertyRNA *self, Py_s
PYRNA_PROP_COLLECTION_ABS_INDEX(NULL);
- if(RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum_abs, &newptr)) {
+ if (RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum_abs, &newptr)) {
return pyrna_struct_CreatePyObject(&newptr);
}
else {
const int len= RNA_property_collection_length(&self->ptr, self->prop);
- if(keynum_abs >= len) {
+ if (keynum_abs >= len) {
PyErr_Format(PyExc_IndexError,
"bpy_prop_collection[index]: "
"index %d out of range, size %d", keynum, len);
@@ -1983,9 +1987,9 @@ static int pyrna_prop_collection_ass_subscript_int(BPy_PropertyRNA *self, Py_ssi
PYRNA_PROP_COLLECTION_ABS_INDEX(-1);
- if(RNA_property_collection_assign_int(&self->ptr, self->prop, keynum_abs, ptr) == 0) {
+ if (RNA_property_collection_assign_int(&self->ptr, self->prop, keynum_abs, ptr) == 0) {
const int len= RNA_property_collection_length(&self->ptr, self->prop);
- if(keynum_abs >= len) {
+ if (keynum_abs >= len) {
PyErr_Format(PyExc_IndexError,
"bpy_prop_collection[index] = value: "
"index %d out of range, size %d", keynum, len);
@@ -2010,12 +2014,13 @@ static PyObject *pyrna_prop_array_subscript_int(BPy_PropertyArrayRNA *self, int
len= pyrna_prop_array_length(self);
- if(keynum < 0) keynum += len;
+ if (keynum < 0) keynum += len;
- if(keynum >= 0 && keynum < len)
+ if (keynum >= 0 && keynum < len)
return pyrna_prop_array_to_py_index(self, keynum);
- PyErr_Format(PyExc_IndexError, "bpy_prop_array[index]: index %d out of range", keynum);
+ PyErr_Format(PyExc_IndexError,
+ "bpy_prop_array[index]: index %d out of range", keynum);
return NULL;
}
@@ -2025,7 +2030,7 @@ static PyObject *pyrna_prop_collection_subscript_str(BPy_PropertyRNA *self, cons
PYRNA_PROP_CHECK_OBJ(self);
- if(RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
+ if (RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
return pyrna_struct_CreatePyObject(&newptr);
PyErr_Format(PyExc_KeyError, "bpy_prop_collection[key]: key \"%.200s\" not found", keyname);
@@ -2046,22 +2051,22 @@ static PyObject *pyrna_prop_collection_subscript_slice(BPy_PropertyRNA *self, Py
list= PyList_New(0);
/* first loop up-until the start */
- for(RNA_property_collection_begin(&self->ptr, self->prop, &rna_macro_iter); rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) {
+ for (RNA_property_collection_begin(&self->ptr, self->prop, &rna_macro_iter); rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) {
/* PointerRNA itemptr= rna_macro_iter.ptr; */
- if(count == start) {
+ if (count == start) {
break;
}
count++;
}
/* add items until stop */
- for(; rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) {
+ for (; rna_macro_iter.valid; RNA_property_collection_next(&rna_macro_iter)) {
item= pyrna_struct_CreatePyObject(&rna_macro_iter.ptr);
PyList_Append(list, item);
Py_DECREF(item);
count++;
- if(count == stop) {
+ if (count == stop) {
break;
}
}
@@ -2098,14 +2103,14 @@ static PyObject *pyrna_prop_array_subscript_slice(BPy_PropertyArrayRNA *self, Po
{
float values_stack[PYRNA_STACK_ARRAY];
float *values;
- if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(float) * length); }
- else { values= values_stack; }
+ if (length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(float) * length); }
+ else { values= values_stack; }
RNA_property_float_get_array(ptr, prop, values);
- for(count=start; count<stop; count++)
+ for (count=start; count<stop; count++)
PyTuple_SET_ITEM(tuple, count-start, PyFloat_FromDouble(values[count]));
- if(values != values_stack) {
+ if (values != values_stack) {
PyMem_FREE(values);
}
break;
@@ -2114,14 +2119,14 @@ static PyObject *pyrna_prop_array_subscript_slice(BPy_PropertyArrayRNA *self, Po
{
int values_stack[PYRNA_STACK_ARRAY];
int *values;
- if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); }
- else { values= values_stack; }
+ if (length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); }
+ else { values= values_stack; }
RNA_property_boolean_get_array(ptr, prop, values);
- for(count=start; count<stop; count++)
+ for (count=start; count<stop; count++)
PyTuple_SET_ITEM(tuple, count-start, PyBool_FromLong(values[count]));
- if(values != values_stack) {
+ if (values != values_stack) {
PyMem_FREE(values);
}
break;
@@ -2130,14 +2135,14 @@ static PyObject *pyrna_prop_array_subscript_slice(BPy_PropertyArrayRNA *self, Po
{
int values_stack[PYRNA_STACK_ARRAY];
int *values;
- if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); }
- else { values= values_stack; }
+ if (length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); }
+ else { values= values_stack; }
RNA_property_int_get_array(ptr, prop, values);
- for(count=start; count<stop; count++)
+ for (count=start; count<stop; count++)
PyTuple_SET_ITEM(tuple, count-start, PyLong_FromSsize_t(values[count]));
- if(values != values_stack) {
+ if (values != values_stack) {
PyMem_FREE(values);
}
break;
@@ -2171,28 +2176,28 @@ static PyObject *pyrna_prop_collection_subscript(BPy_PropertyRNA *self, PyObject
PySliceObject *key_slice= (PySliceObject *)key;
Py_ssize_t step= 1;
- if(key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
+ if (key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
return NULL;
}
else if (step != 1) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection[slice]: slice steps not supported");
return NULL;
}
- else if(key_slice->start == Py_None && key_slice->stop == Py_None) {
+ else if (key_slice->start == Py_None && key_slice->stop == Py_None) {
return pyrna_prop_collection_subscript_slice(self, 0, PY_SSIZE_T_MAX);
}
else {
Py_ssize_t start= 0, stop= PY_SSIZE_T_MAX;
/* avoid PySlice_GetIndicesEx because it needs to know the length ahead of time. */
- if(key_slice->start != Py_None && !_PyEval_SliceIndex(key_slice->start, &start)) return NULL;
- if(key_slice->stop != Py_None && !_PyEval_SliceIndex(key_slice->stop, &stop)) return NULL;
+ if (key_slice->start != Py_None && !_PyEval_SliceIndex(key_slice->start, &start)) return NULL;
+ if (key_slice->stop != Py_None && !_PyEval_SliceIndex(key_slice->stop, &stop)) return NULL;
- if(start < 0 || stop < 0) {
+ if (start < 0 || stop < 0) {
/* only get the length for negative values */
Py_ssize_t len= (Py_ssize_t)RNA_property_collection_length(&self->ptr, self->prop);
- if(start < 0) start += len;
- if(stop < 0) start += len;
+ if (start < 0) start += len;
+ if (stop < 0) start += len;
}
if (stop - start <= 0) {
@@ -2213,16 +2218,16 @@ static PyObject *pyrna_prop_collection_subscript(BPy_PropertyRNA *self, PyObject
}
/* generic check to see if a PyObject is compatible with a collection
- * -1 on failier, 0 on success, sets the error */
+ * -1 on failure, 0 on success, sets the error */
static int pyrna_prop_collection_type_check(BPy_PropertyRNA *self, PyObject *value)
{
StructRNA *prop_srna;
- if(value == Py_None) {
+ if (value == Py_None) {
if (RNA_property_flag(self->prop) & PROP_NEVER_NULL) {
PyErr_Format(PyExc_TypeError,
- "bpy_prop_collection[key] = value: invalid, "
- "this collection doesnt support None assignment");
+ "bpy_prop_collection[key] = value: invalid, "
+ "this collection doesnt support None assignment");
return -1;
}
else {
@@ -2236,7 +2241,7 @@ static int pyrna_prop_collection_type_check(BPy_PropertyRNA *self, PyObject *val
Py_TYPE(value)->tp_name);
return -1;
}
- else if((prop_srna= RNA_property_pointer_type(&self->ptr, self->prop))) {
+ else if ((prop_srna= RNA_property_pointer_type(&self->ptr, self->prop))) {
StructRNA *value_srna= ((BPy_StructRNA *)value)->ptr.type;
if (RNA_struct_is_a(value_srna, prop_srna) == 0) {
PyErr_Format(PyExc_TypeError,
@@ -2265,7 +2270,7 @@ static int pyrna_prop_collection_ass_subscript(BPy_PropertyRNA *self, PyObject *
PYRNA_PROP_CHECK_INT(self);
/* validate the assigned value */
- if(value == NULL) {
+ if (value == NULL) {
PyErr_SetString(PyExc_TypeError,
"del bpy_prop_collection[key]: not supported");
return -1;
@@ -2292,28 +2297,28 @@ static int pyrna_prop_collection_ass_subscript(BPy_PropertyRNA *self, PyObject *
PySliceObject *key_slice= (PySliceObject *)key;
Py_ssize_t step= 1;
- if(key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
+ if (key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
return NULL;
}
else if (step != 1) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection[slice]: slice steps not supported");
return NULL;
}
- else if(key_slice->start == Py_None && key_slice->stop == Py_None) {
+ else if (key_slice->start == Py_None && key_slice->stop == Py_None) {
return pyrna_prop_collection_subscript_slice(self, 0, PY_SSIZE_T_MAX);
}
else {
Py_ssize_t start= 0, stop= PY_SSIZE_T_MAX;
/* avoid PySlice_GetIndicesEx because it needs to know the length ahead of time. */
- if(key_slice->start != Py_None && !_PyEval_SliceIndex(key_slice->start, &start)) return NULL;
- if(key_slice->stop != Py_None && !_PyEval_SliceIndex(key_slice->stop, &stop)) return NULL;
+ if (key_slice->start != Py_None && !_PyEval_SliceIndex(key_slice->start, &start)) return NULL;
+ if (key_slice->stop != Py_None && !_PyEval_SliceIndex(key_slice->stop, &stop)) return NULL;
- if(start < 0 || stop < 0) {
+ if (start < 0 || stop < 0) {
/* only get the length for negative values */
Py_ssize_t len= (Py_ssize_t)RNA_property_collection_length(&self->ptr, self->prop);
- if(start < 0) start += len;
- if(stop < 0) start += len;
+ if (start < 0) start += len;
+ if (stop < 0) start += len;
}
if (stop - start <= 0) {
@@ -2352,14 +2357,14 @@ static PyObject *pyrna_prop_array_subscript(BPy_PropertyArrayRNA *self, PyObject
Py_ssize_t step= 1;
PySliceObject *key_slice= (PySliceObject *)key;
- if(key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
+ if (key_slice->step != Py_None && !_PyEval_SliceIndex(key, &step)) {
return NULL;
}
else if (step != 1) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_array[slice]: slice steps not supported");
return NULL;
}
- else if(key_slice->start == Py_None && key_slice->stop == Py_None) {
+ else if (key_slice->start == Py_None && key_slice->stop == Py_None) {
/* note, no significant advantage with optimizing [:] slice as with collections but include here for consistency with collection slice func */
Py_ssize_t len= (Py_ssize_t)pyrna_prop_array_length(self);
return pyrna_prop_array_subscript_slice(self, &self->ptr, self->prop, 0, len, len);
@@ -2393,16 +2398,16 @@ static int prop_subscript_ass_array_slice(PointerRNA *ptr, PropertyRNA *prop, in
void *values_alloc= NULL;
int ret= 0;
- if(value_orig == NULL) {
+ if (value_orig == NULL) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_array[slice]= value: deleting with list types is not supported by bpy_struct");
return -1;
}
- if(!(value=PySequence_Fast(value_orig, "bpy_prop_array[slice]= value: assignment is not a sequence type"))) {
+ if (!(value=PySequence_Fast(value_orig, "bpy_prop_array[slice]= value: assignment is not a sequence type"))) {
return -1;
}
- if(PySequence_Fast_GET_SIZE(value) != stop-start) {
+ if (PySequence_Fast_GET_SIZE(value) != stop-start) {
Py_DECREF(value);
PyErr_SetString(PyExc_TypeError, "bpy_prop_array[slice]= value: resizing bpy_struct arrays isn't supported");
return -1;
@@ -2417,36 +2422,36 @@ static int prop_subscript_ass_array_slice(PointerRNA *ptr, PropertyRNA *prop, in
float min, max;
RNA_property_float_range(ptr, prop, &min, &max);
- if(length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(float) * length); }
- else { values= values_stack; }
- if(start != 0 || stop != length) /* partial assignment? - need to get the array */
+ if (length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(float) * length); }
+ else { values= values_stack; }
+ if (start != 0 || stop != length) /* partial assignment? - need to get the array */
RNA_property_float_get_array(ptr, prop, values);
- for(count=start; count<stop; count++) {
+ for (count=start; count<stop; count++) {
fval= PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value, count-start));
CLAMP(fval, min, max);
values[count]= fval;
}
- if(PyErr_Occurred()) ret= -1;
- else RNA_property_float_set_array(ptr, prop, values);
+ if (PyErr_Occurred()) ret= -1;
+ else RNA_property_float_set_array(ptr, prop, values);
break;
}
case PROP_BOOLEAN:
{
int values_stack[PYRNA_STACK_ARRAY];
int *values;
- if(length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(int) * length); }
- else { values= values_stack; }
+ if (length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(int) * length); }
+ else { values= values_stack; }
- if(start != 0 || stop != length) /* partial assignment? - need to get the array */
+ if (start != 0 || stop != length) /* partial assignment? - need to get the array */
RNA_property_boolean_get_array(ptr, prop, values);
- for(count=start; count<stop; count++)
+ for (count=start; count<stop; count++)
values[count]= PyLong_AsLong(PySequence_Fast_GET_ITEM(value, count-start));
- if(PyErr_Occurred()) ret= -1;
- else RNA_property_boolean_set_array(ptr, prop, values);
+ if (PyErr_Occurred()) ret= -1;
+ else RNA_property_boolean_set_array(ptr, prop, values);
break;
}
case PROP_INT:
@@ -2457,20 +2462,20 @@ static int prop_subscript_ass_array_slice(PointerRNA *ptr, PropertyRNA *prop, in
int min, max;
RNA_property_int_range(ptr, prop, &min, &max);
- if(length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(int) * length); }
- else { values= values_stack; }
+ if (length > PYRNA_STACK_ARRAY) { values= values_alloc= PyMem_MALLOC(sizeof(int) * length); }
+ else { values= values_stack; }
- if(start != 0 || stop != length) /* partial assignment? - need to get the array */
+ if (start != 0 || stop != length) /* partial assignment? - need to get the array */
RNA_property_int_get_array(ptr, prop, values);
- for(count=start; count<stop; count++) {
+ for (count=start; count<stop; count++) {
ival= PyLong_AsLong(PySequence_Fast_GET_ITEM(value, count-start));
CLAMP(ival, min, max);
values[count]= ival;
}
- if(PyErr_Occurred()) ret= -1;
- else RNA_property_int_set_array(ptr, prop, values);
+ if (PyErr_Occurred()) ret= -1;
+ else RNA_property_int_set_array(ptr, prop, values);
break;
}
default:
@@ -2480,7 +2485,7 @@ static int prop_subscript_ass_array_slice(PointerRNA *ptr, PropertyRNA *prop, in
Py_DECREF(value);
- if(values_alloc) {
+ if (values_alloc) {
PyMem_FREE(values_alloc);
}
@@ -2496,12 +2501,13 @@ static int prop_subscript_ass_array_int(BPy_PropertyArrayRNA *self, Py_ssize_t k
len= pyrna_prop_array_length(self);
- if(keynum < 0) keynum += len;
+ if (keynum < 0) keynum += len;
- if(keynum >= 0 && keynum < len)
+ if (keynum >= 0 && keynum < len)
return pyrna_py_to_prop_array_index(self, keynum, value);
- PyErr_SetString(PyExc_IndexError, "bpy_prop_array[index] = value: index out of range");
+ PyErr_SetString(PyExc_IndexError,
+ "bpy_prop_array[index] = value: index out of range");
return -1;
}
@@ -2551,8 +2557,8 @@ static int pyrna_prop_array_ass_subscript(BPy_PropertyArrayRNA *self, PyObject *
ret= -1;
}
- if(ret != -1) {
- if(RNA_property_update_check(self->prop)) {
+ if (ret != -1) {
+ if (RNA_property_update_check(self->prop)) {
RNA_property_update(BPy_GetContext(), &self->ptr, self->prop);
}
}
@@ -2611,7 +2617,7 @@ static int pyrna_prop_collection_contains(BPy_PropertyRNA *self, PyObject *value
/* key in dict style check */
const char *keyname= _PyUnicode_AsString(value);
- if(keyname==NULL) {
+ if (keyname==NULL) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection.__contains__: expected a string");
return -1;
}
@@ -2634,14 +2640,14 @@ static int pyrna_struct_contains(BPy_StructRNA *self, PyObject *value)
return -1;
}
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "bpy_struct: this type doesn't support IDProperties");
return -1;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(!group)
+ if (!group)
return 0;
return IDP_GetPropertyFromGroup(group, name) ? 1:0;
@@ -2694,26 +2700,26 @@ static PyObject *pyrna_struct_subscript(BPy_StructRNA *self, PyObject *key)
PYRNA_STRUCT_CHECK_OBJ(self);
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
- if(name==NULL) {
+ if (name==NULL) {
PyErr_SetString(PyExc_TypeError, "bpy_struct[key]: only strings are allowed as keys of ID properties");
return NULL;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(group==NULL) {
+ if (group==NULL) {
PyErr_Format(PyExc_KeyError, "bpy_struct[key]: key \"%s\" not found", name);
return NULL;
}
idprop= IDP_GetPropertyFromGroup(group, name);
- if(idprop==NULL) {
+ if (idprop==NULL) {
PyErr_Format(PyExc_KeyError, "bpy_struct[key]: key \"%s\" not found", name);
return NULL;
}
@@ -2730,12 +2736,12 @@ static int pyrna_struct_ass_subscript(BPy_StructRNA *self, PyObject *key, PyObje
group= RNA_struct_idprops(&self->ptr, 1);
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, key)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, key)) {
return -1;
}
#endif // USE_STRING_COERCE
- if(group==NULL) {
+ if (group==NULL) {
PyErr_SetString(PyExc_TypeError, "bpy_struct[key]= val: id properties not supported for this type");
return -1;
}
@@ -2764,14 +2770,14 @@ static PyObject *pyrna_struct_keys(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "bpy_struct.keys(): this type doesn't support IDProperties");
return NULL;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(group==NULL)
+ if (group==NULL)
return PyList_New(0);
return BPy_Wrap_GetKeys(group);
@@ -2792,14 +2798,14 @@ static PyObject *pyrna_struct_items(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "bpy_struct.items(): this type doesn't support IDProperties");
return NULL;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(group==NULL)
+ if (group==NULL)
return PyList_New(0);
return BPy_Wrap_GetItems(self->ptr.id.data, group);
@@ -2820,14 +2826,14 @@ static PyObject *pyrna_struct_values(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "bpy_struct.values(): this type doesn't support IDProperties");
return NULL;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(group==NULL)
+ if (group==NULL)
return PyList_New(0);
return BPy_Wrap_GetValues(self->ptr.id.data, group);
@@ -2853,7 +2859,7 @@ static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *arg
if (!PyArg_ParseTuple(args, "s:is_property_set", &name))
return NULL;
- if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
+ if ((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
PyErr_Format(PyExc_TypeError,
"%.200s.is_property_set(\"%.200s\") not found",
RNA_struct_identifier(self->ptr.type), name);
@@ -2862,9 +2868,9 @@ static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *arg
/* double property lookup, could speed up */
/* return PyBool_FromLong(RNA_property_is_set(&self->ptr, name)); */
- if(RNA_property_flag(prop) & PROP_IDPROPERTY) {
+ if (RNA_property_flag(prop) & PROP_IDPROPERTY) {
IDProperty *group= RNA_struct_idprops(&self->ptr, 0);
- if(group) {
+ if (group) {
ret= IDP_GetPropertyFromGroup(group, name) ? 1:0;
}
else {
@@ -2896,7 +2902,7 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA *self, PyObject *
if (!PyArg_ParseTuple(args, "s:is_property_hidden", &name))
return NULL;
- if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
+ if ((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
PyErr_Format(PyExc_TypeError,
"%.200s.is_property_hidden(\"%.200s\") not found",
RNA_struct_identifier(self->ptr.type), name);
@@ -2931,10 +2937,10 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *args)
return NULL;
if (RNA_path_resolve_full(&self->ptr, path, &r_ptr, &r_prop, &index)) {
- if(r_prop) {
- if(index != -1) {
- if(index >= RNA_property_array_length(&r_ptr, r_prop) || index < 0) {
- PyErr_Format(PyExc_TypeError,
+ if (r_prop) {
+ if (index != -1) {
+ if (index >= RNA_property_array_length(&r_ptr, r_prop) || index < 0) {
+ PyErr_Format(PyExc_IndexError,
"%.200s.path_resolve(\"%.200s\") index out of range",
RNA_struct_identifier(self->ptr.type), path);
return NULL;
@@ -2944,7 +2950,7 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *args)
}
}
else {
- if(coerce == Py_False) {
+ if (coerce == Py_False) {
return pyrna_prop_CreatePyObject(&r_ptr, r_prop);
}
else {
@@ -2957,7 +2963,7 @@ static PyObject *pyrna_struct_path_resolve(BPy_StructRNA *self, PyObject *args)
}
}
else {
- PyErr_Format(PyExc_TypeError,
+ PyErr_Format(PyExc_ValueError,
"%.200s.path_resolve(\"%.200s\") could not be resolved",
RNA_struct_identifier(self->ptr.type), path);
return NULL;
@@ -2972,7 +2978,7 @@ PyDoc_STRVAR(pyrna_struct_path_from_id_doc,
" :arg property: Optional property name which can be used if the path is\n"
" to a property of this object.\n"
" :type property: string\n"
-" :return: The path from :class:`bpy_struct.id_data`\n"
+" :return: The path from :class:`bpy.types.bpy_struct.id_data`\n"
" to this struct and property (when given).\n"
" :rtype: str\n"
);
@@ -2988,10 +2994,10 @@ static PyObject *pyrna_struct_path_from_id(BPy_StructRNA *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|s:path_from_id", &name))
return NULL;
- if(name) {
+ if (name) {
prop= RNA_struct_find_property(&self->ptr, name);
- if(prop==NULL) {
- PyErr_Format(PyExc_TypeError,
+ if (prop==NULL) {
+ PyErr_Format(PyExc_AttributeError,
"%.200s.path_from_id(\"%.200s\") not found",
RNA_struct_identifier(self->ptr.type), name);
return NULL;
@@ -3003,14 +3009,14 @@ static PyObject *pyrna_struct_path_from_id(BPy_StructRNA *self, PyObject *args)
path= RNA_path_from_ID_to_struct(&self->ptr);
}
- if(path==NULL) {
- if(name) {
- PyErr_Format(PyExc_TypeError,
+ if (path==NULL) {
+ if (name) {
+ PyErr_Format(PyExc_ValueError,
"%.200s.path_from_id(\"%s\") found but does not support path creation",
RNA_struct_identifier(self->ptr.type), name);
}
else {
- PyErr_Format(PyExc_TypeError,
+ PyErr_Format(PyExc_ValueError,
"%.200s.path_from_id() does not support path creation for this type",
RNA_struct_identifier(self->ptr.type));
}
@@ -3028,7 +3034,7 @@ PyDoc_STRVAR(pyrna_prop_path_from_id_doc,
"\n"
" Returns the data path from the ID to this property (string).\n"
"\n"
-" :return: The path from :class:`bpy_struct.id_data` to this property.\n"
+" :return: The path from :class:`bpy.types.bpy_struct.id_data` to this property.\n"
" :rtype: str\n"
);
static PyObject *pyrna_prop_path_from_id(BPy_PropertyRNA *self)
@@ -3039,8 +3045,8 @@ static PyObject *pyrna_prop_path_from_id(BPy_PropertyRNA *self)
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
- if(path==NULL) {
- PyErr_Format(PyExc_TypeError,
+ if (path==NULL) {
+ PyErr_Format(PyExc_ValueError,
"%.200s.%.200s.path_from_id() does not support path creation for this type",
RNA_struct_identifier(self->ptr.type), RNA_property_identifier(prop));
return NULL;
@@ -3059,7 +3065,7 @@ PyDoc_STRVAR(pyrna_struct_type_recast_doc,
" such as textures can be changed at runtime.\n"
"\n"
" :return: a new instance of this object with the type initialized again.\n"
-" :rtype: subclass of :class:`bpy_struct`\n"
+" :rtype: subclass of :class:`bpy.types.bpy_struct`\n"
);
static PyObject *pyrna_struct_type_recast(BPy_StructRNA *self)
{
@@ -3079,14 +3085,14 @@ static void pyrna_dir_members_py(PyObject *list, PyObject *self)
dict_ptr= _PyObject_GetDictPtr((PyObject *)self);
- if(dict_ptr && (dict=*dict_ptr)) {
+ 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) {
+ if (dict) {
list_tmp= PyDict_Keys(dict);
PyList_SetSlice(list, INT_MAX, INT_MAX, list_tmp);
Py_DECREF(list_tmp);
@@ -3127,13 +3133,14 @@ static void pyrna_dir_members_rna(PyObject *list, PointerRNA *ptr)
RNA_PROP_BEGIN(ptr, itemptr, iterprop) {
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
- if(nameptr) {
+ if (nameptr) {
pystring= PyUnicode_FromString(nameptr);
PyList_Append(list, pystring);
Py_DECREF(pystring);
- if(name != nameptr)
+ if (name != nameptr) {
MEM_freeN(nameptr);
+ }
}
}
RNA_PROP_END;
@@ -3158,11 +3165,11 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA *self)
pyrna_dir_members_rna(ret, &self->ptr);
- if(self->ptr.type == &RNA_Context) {
+ if (self->ptr.type == &RNA_Context) {
ListBase lb= CTX_data_dir_get(self->ptr.data);
LinkData *link;
- for(link=lb.first; link; link=link->next) {
+ for (link=lb.first; link; link=link->next) {
pystring= PyUnicode_FromString(link->data);
PyList_Append(ret, pystring);
Py_DECREF(pystring);
@@ -3195,13 +3202,13 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
PYRNA_STRUCT_CHECK_OBJ(self);
- if(name == NULL) {
+ if (name == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_struct: __getattr__ must be a string");
ret= NULL;
}
- else if(name[0]=='_') { // rna can't start with a "_", so for __dict__ and similar we can skip using rna lookups
+ else 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_idprops_check(self->ptr.type)) {
+ if ((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idprops_check(self->ptr.type)) {
PyErr_SetString(PyExc_AttributeError, "bpy_struct: no __getitem__ support for this type");
ret= NULL;
}
@@ -3218,7 +3225,7 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
}
else if (self->ptr.type == &RNA_Context) {
bContext *C= self->ptr.data;
- if(C==NULL) {
+ if (C==NULL) {
PyErr_Format(PyExc_AttributeError,
"bpy_struct: Context is 'NULL', can't get \"%.200s\" from context",
name);
@@ -3231,10 +3238,10 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
int done= CTX_data_get(C, name, &newptr, &newlb, &newtype);
- if(done==1) { /* found */
+ if (done==1) { /* found */
switch(newtype) {
case CTX_DATA_TYPE_POINTER:
- if(newptr.data == NULL) {
+ if (newptr.data == NULL) {
ret= Py_None;
Py_INCREF(ret);
}
@@ -3249,7 +3256,7 @@ static PyObject *pyrna_struct_getattro(BPy_StructRNA *self, PyObject *pyname)
ret= PyList_New(0);
- for(link=newlb.first; link; link=link->next) {
+ for (link=newlb.first; link; link=link->next) {
linkptr= pyrna_struct_CreatePyObject(&link->ptr);
PyList_Append(ret, linkptr);
Py_DECREF(linkptr);
@@ -3328,11 +3335,11 @@ static PyObject *pyrna_struct_meta_idprop_getattro(PyObject *cls, PyObject *attr
*
* Disable for now, this is faking internal behavior in a way thats too tricky to maintain well. */
#if 0
- if(ret == NULL) { // || pyrna_is_deferred_prop(ret)
+ if (ret == NULL) { // || pyrna_is_deferred_prop(ret)
StructRNA *srna= srna_from_self(cls, "StructRNA.__getattr__");
- if(srna) {
+ if (srna) {
PropertyRNA *prop= RNA_struct_type_find_property(srna, _PyUnicode_AsString(attr));
- if(prop) {
+ if (prop) {
PointerRNA tptr;
PyErr_Clear(); /* clear error from tp_getattro */
RNA_pointer_create(NULL, &RNA_Property, prop, &tptr);
@@ -3351,7 +3358,7 @@ static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyOb
StructRNA *srna= srna_from_self(cls, "StructRNA.__setattr__");
const int is_deferred_prop= (value && pyrna_is_deferred_prop(value));
- if(srna && !pyrna_write_check() && (is_deferred_prop || RNA_struct_type_find_property(srna, _PyUnicode_AsString(attr)))) {
+ if (srna && !pyrna_write_check() && (is_deferred_prop || RNA_struct_type_find_property(srna, _PyUnicode_AsString(attr)))) {
PyErr_Format(PyExc_AttributeError,
"pyrna_struct_meta_idprop_setattro() "
"can't set in readonly state '%.200s.%S'",
@@ -3359,10 +3366,10 @@ static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyOb
return -1;
}
- if(srna == NULL) {
+ if (srna == NULL) {
/* allow setting on unregistered classes which can be registered later on */
/*
- if(value && is_deferred_prop) {
+ if (value && is_deferred_prop) {
PyErr_Format(PyExc_AttributeError,
"pyrna_struct_meta_idprop_setattro() unable to get srna from class '%.200s'",
((PyTypeObject *)cls)->tp_name);
@@ -3374,11 +3381,11 @@ static int pyrna_struct_meta_idprop_setattro(PyObject *cls, PyObject *attr, PyOb
return PyType_Type.tp_setattro(cls, attr, value);
}
- if(value) {
+ if (value) {
/* check if the value is a property */
- if(is_deferred_prop) {
+ if (is_deferred_prop) {
int ret= deferred_register_prop(srna, attr, value);
- if(ret == -1) {
+ if (ret == -1) {
/* error set */
return ret;
}
@@ -3417,12 +3424,12 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
PYRNA_STRUCT_CHECK_INT(self);
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, pyname)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, pyname)) {
return -1;
}
#endif // USE_STRING_COERCE
- if(name == NULL) {
+ if (name == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_struct: __setattr__ must be a string");
return -1;
}
@@ -3437,7 +3444,7 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
else if (self->ptr.type == &RNA_Context) {
/* code just raises correct error, context prop's cant be set, unless its apart of the py class */
bContext *C= self->ptr.data;
- if(C==NULL) {
+ if (C==NULL) {
PyErr_Format(PyExc_AttributeError,
"bpy_struct: Context is 'NULL', can't set \"%.200s\" from context",
name);
@@ -3450,7 +3457,7 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
int done= CTX_data_get(C, name, &newptr, &newlb, &newtype);
- if(done==1) {
+ if (done==1) {
PyErr_Format(PyExc_AttributeError,
"bpy_struct: Context property \"%.200s\" is read-only",
name);
@@ -3463,8 +3470,8 @@ static int pyrna_struct_setattro(BPy_StructRNA *self, PyObject *pyname, PyObject
}
/* pyrna_py_to_prop sets its own exceptions */
- if(prop) {
- if(value == NULL) {
+ if (prop) {
+ if (value == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_struct: del not supported");
return -1;
}
@@ -3489,8 +3496,8 @@ static PyObject *pyrna_prop_dir(BPy_PropertyRNA *self)
pyrna_dir_members_py(ret, (PyObject *)self);
}
- if(RNA_property_type(self->prop) == PROP_COLLECTION) {
- if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ if (RNA_property_type(self->prop) == PROP_COLLECTION) {
+ if (RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
pyrna_dir_members_rna(ret, &r_ptr);
}
}
@@ -3508,17 +3515,17 @@ static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject
{
const char *name= _PyUnicode_AsString(pyname);
- if(name == NULL) {
+ if (name == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_prop_collection: __getattr__ must be a string");
return NULL;
}
- else if(name[0] != '_') {
+ else if (name[0] != '_') {
PyObject *ret;
PropertyRNA *prop;
FunctionRNA *func;
PointerRNA r_ptr;
- if(RNA_property_collection_type_get(&self->ptr, self->prop, &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);
@@ -3545,10 +3552,10 @@ static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject
PyObject *ret= PyObject_GenericGetAttr((PyObject *)self, pyname);
- if(ret == NULL && name[0] != '_') { /* avoid inheriting __call__ and similar */
+ if (ret == NULL && name[0] != '_') { /* avoid inheriting __call__ and similar */
/* since this is least common case, handle it last */
PointerRNA r_ptr;
- if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ if (RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
PyObject *cls;
PyObject *error_type, *error_value, *error_traceback;
@@ -3558,7 +3565,7 @@ static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject
cls= pyrna_struct_Subtype(&r_ptr); /* borrows */
ret= PyObject_GenericGetAttr(cls, pyname);
/* restore the original error */
- if(ret == NULL) {
+ if (ret == NULL) {
PyErr_Restore(error_type, error_value, error_traceback);
}
}
@@ -3577,20 +3584,20 @@ static int pyrna_prop_collection_setattro(BPy_PropertyRNA *self, PyObject *pynam
PointerRNA r_ptr;
#ifdef USE_PEDANTIC_WRITE
- if(rna_disallow_writes && rna_id_write_error(&self->ptr, pyname)) {
+ if (rna_disallow_writes && rna_id_write_error(&self->ptr, pyname)) {
return -1;
}
#endif // USE_STRING_COERCE
- if(name == NULL) {
+ if (name == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_prop: __setattr__ must be a string");
return -1;
}
- else if(value == NULL) {
+ else if (value == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy_prop: del not supported");
return -1;
}
- else if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) {
+ else 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):");
@@ -3609,7 +3616,7 @@ static PyObject *pyrna_prop_collection_idprop_add(BPy_PropertyRNA *self)
PointerRNA r_ptr;
RNA_property_collection_add(&self->ptr, self->prop, &r_ptr);
- if(!r_ptr.data) {
+ if (!r_ptr.data) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection.add(): not supported for this collection");
return NULL;
}
@@ -3627,7 +3634,7 @@ static PyObject *pyrna_prop_collection_idprop_remove(BPy_PropertyRNA *self, PyOb
return NULL;
}
- if(!RNA_property_collection_remove(&self->ptr, self->prop, key)) {
+ if (!RNA_property_collection_remove(&self->ptr, self->prop, key)) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection.remove() not supported for this collection");
return NULL;
}
@@ -3644,7 +3651,7 @@ static PyObject *pyrna_prop_collection_idprop_move(BPy_PropertyRNA *self, PyObje
return NULL;
}
- if(!RNA_property_collection_move(&self->ptr, self->prop, key, pos)) {
+ if (!RNA_property_collection_move(&self->ptr, self->prop, key, pos)) {
PyErr_SetString(PyExc_TypeError, "bpy_prop_collection.move() not supported for this collection");
return NULL;
}
@@ -3655,7 +3662,7 @@ static PyObject *pyrna_prop_collection_idprop_move(BPy_PropertyRNA *self, PyObje
static PyObject *pyrna_struct_get_id_data(BPy_DummyPointerRNA *self)
{
/* used for struct and pointer since both have a ptr */
- if(self->ptr.id.data) {
+ 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);
@@ -3664,6 +3671,11 @@ static PyObject *pyrna_struct_get_id_data(BPy_DummyPointerRNA *self)
Py_RETURN_NONE;
}
+static PyObject *pyrna_struct_get_data(BPy_DummyPointerRNA *self)
+{
+ return pyrna_struct_CreatePyObject(&self->ptr);
+}
+
static PyObject *pyrna_struct_get_rna_type(BPy_PropertyRNA *self)
{
PointerRNA tptr;
@@ -3679,6 +3691,7 @@ static PyObject *pyrna_struct_get_rna_type(BPy_PropertyRNA *self)
static PyGetSetDef pyrna_prop_getseters[]= {
{(char *)"id_data", (getter)pyrna_struct_get_id_data, (setter)NULL, (char *)"The :class:`bpy.types.ID` object this datablock is from or None, (not available for all data types)", NULL},
+ {(char *)"data", (getter)pyrna_struct_get_data, (setter)NULL, (char *)"The data this property is using, *type* :class:`bpy.types.bpy_struct`", NULL},
{(char *)"rna_type", (getter)pyrna_struct_get_rna_type, (setter)NULL, (char *)"The property type for introspection", NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -3707,15 +3720,16 @@ static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self)
RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) {
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
- if(nameptr) {
+ if (nameptr) {
/* add to python list */
item= PyUnicode_FromString(nameptr);
PyList_Append(ret, item);
Py_DECREF(item);
/* done */
- if(name != nameptr)
+ if (name != nameptr) {
MEM_freeN(nameptr);
+ }
}
}
RNA_PROP_END;
@@ -3740,13 +3754,13 @@ static PyObject *pyrna_prop_collection_items(BPy_PropertyRNA *self)
int i= 0;
RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) {
- if(itemptr.data) {
+ if (itemptr.data) {
/* add to python list */
item= PyTuple_New(2);
nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name));
- if(nameptr) {
+ if (nameptr) {
PyTuple_SET_ITEM(item, 0, PyUnicode_FromString(nameptr));
- if(name != nameptr)
+ if (name != nameptr)
MEM_freeN(nameptr);
}
else {
@@ -3786,7 +3800,7 @@ PyDoc_STRVAR(pyrna_struct_get_doc,
" Returns the value of the custom property assigned to key or default\n"
" when not found (matches pythons dictionary function of the same name).\n"
"\n"
-" :arg key: The key assosiated with the custom property.\n"
+" :arg key: The key associated with the custom property.\n"
" :type key: string\n"
" :arg default: Optional argument for the value to return if\n"
" *key* is not found.\n"
@@ -3807,17 +3821,18 @@ static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args)
return NULL;
/* mostly copied from BPy_IDGroup_Map_GetItem */
- if(RNA_struct_idprops_check(self->ptr.type)==0) {
+ if (RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString(PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
group= RNA_struct_idprops(&self->ptr, 0);
- if(group) {
+ if (group) {
idprop= IDP_GetPropertyFromGroup(group, key);
- if(idprop)
+ if (idprop) {
return BPy_IDGroup_WrapData(self->ptr.id.data, idprop);
+ }
}
return Py_INCREF(def), def;
@@ -3863,7 +3878,7 @@ static PyObject *pyrna_prop_collection_get(BPy_PropertyRNA *self, PyObject *args
if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
return NULL;
- if(RNA_property_collection_lookup_string(&self->ptr, self->prop, key, &newptr))
+ if (RNA_property_collection_lookup_string(&self->ptr, self->prop, key, &newptr))
return pyrna_struct_CreatePyObject(&newptr);
return Py_INCREF(def), def;
@@ -3904,19 +3919,19 @@ static int foreach_parse_args(
*size= *attr_tot= *attr_signed= FALSE;
*raw_type= PROP_RAW_UNSET;
- if(!PyArg_ParseTuple(args, "sO", attr, seq) || (!PySequence_Check(*seq) && PyObject_CheckBuffer(*seq))) {
+ if (!PyArg_ParseTuple(args, "sO", attr, seq) || (!PySequence_Check(*seq) && PyObject_CheckBuffer(*seq))) {
PyErr_SetString(PyExc_TypeError, "foreach_get(attr, sequence) expects a string and a sequence");
return -1;
}
*tot= PySequence_Size(*seq); // TODO - buffer may not be a sequence! array.array() is tho.
- if(*tot>0) {
+ if (*tot>0) {
foreach_attr_type(self, *attr, raw_type, attr_tot, attr_signed);
*size= RNA_raw_type_sizeof(*raw_type);
#if 0 // works fine but not strictly needed, we could allow RNA_property_collection_raw_* to do the checks
- if((*attr_tot) < 1)
+ if ((*attr_tot) < 1)
*attr_tot= 1;
if (RNA_property_type(self->prop) == PROP_COLLECTION)
@@ -3928,7 +3943,7 @@ static int foreach_parse_args(
target_tot= array_tot * (*attr_tot);
/* rna_access.c - rna_raw_access(...) uses this same method */
- if(target_tot != (*tot)) {
+ if (target_tot != (*tot)) {
PyErr_Format(PyExc_TypeError,
"foreach_get(attr, sequence) sequence length mismatch given %d, needed %d",
*tot, target_tot);
@@ -3952,14 +3967,14 @@ static int foreach_compat_buffer(RawPropertyType raw_type, int attr_signed, cons
switch(raw_type) {
case PROP_RAW_CHAR:
- if (attr_signed) return (f=='b') ? 1:0;
- else return (f=='B') ? 1:0;
+ if (attr_signed) return (f=='b') ? 1:0;
+ else return (f=='B') ? 1:0;
case PROP_RAW_SHORT:
- if (attr_signed) return (f=='h') ? 1:0;
- else return (f=='H') ? 1:0;
+ if (attr_signed) return (f=='h') ? 1:0;
+ else return (f=='H') ? 1:0;
case PROP_RAW_INT:
- if (attr_signed) return (f=='i') ? 1:0;
- else return (f=='I') ? 1:0;
+ if (attr_signed) return (f=='i') ? 1:0;
+ else return (f=='I') ? 1:0;
case PROP_RAW_FLOAT:
return (f=='f') ? 1:0;
case PROP_RAW_DOUBLE:
@@ -3983,17 +3998,17 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
int tot, size, attr_tot, attr_signed;
RawPropertyType raw_type;
- if(foreach_parse_args(self, args, &attr, &seq, &tot, &size, &raw_type, &attr_tot, &attr_signed) < 0)
+ if (foreach_parse_args(self, args, &attr, &seq, &tot, &size, &raw_type, &attr_tot, &attr_signed) < 0)
return NULL;
- if(tot==0)
+ if (tot==0)
Py_RETURN_NONE;
- if(set) { /* get the array from python */
+ if (set) { /* get the array from python */
buffer_is_compat= FALSE;
- if(PyObject_CheckBuffer(seq)) {
+ if (PyObject_CheckBuffer(seq)) {
Py_buffer buf;
PyObject_GetBuffer(seq, &buf, PyBUF_SIMPLE | PyBUF_FORMAT);
@@ -4001,7 +4016,7 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
buffer_is_compat= foreach_compat_buffer(raw_type, attr_signed, buf.format);
- if(buffer_is_compat) {
+ if (buffer_is_compat) {
ok= RNA_property_collection_raw_set(NULL, &self->ptr, self->prop, attr, buf.buf, raw_type, tot);
}
@@ -4009,10 +4024,10 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
}
/* could not use the buffer, fallback to sequence */
- if(!buffer_is_compat) {
+ if (!buffer_is_compat) {
array= PyMem_Malloc(size * tot);
- for( ; i<tot; i++) {
+ for ( ; i<tot; i++) {
item= PySequence_GetItem(seq, i);
switch(raw_type) {
case PROP_RAW_CHAR:
@@ -4044,7 +4059,7 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
}
else {
buffer_is_compat= FALSE;
- if(PyObject_CheckBuffer(seq)) {
+ if (PyObject_CheckBuffer(seq)) {
Py_buffer buf;
PyObject_GetBuffer(seq, &buf, PyBUF_SIMPLE | PyBUF_FORMAT);
@@ -4052,7 +4067,7 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
buffer_is_compat= foreach_compat_buffer(raw_type, attr_signed, buf.format);
- if(buffer_is_compat) {
+ if (buffer_is_compat) {
ok= RNA_property_collection_raw_get(NULL, &self->ptr, self->prop, attr, buf.buf, raw_type, tot);
}
@@ -4060,14 +4075,14 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
}
/* could not use the buffer, fallback to sequence */
- if(!buffer_is_compat) {
+ if (!buffer_is_compat) {
array= PyMem_Malloc(size * tot);
ok= RNA_property_collection_raw_get(NULL, &self->ptr, self->prop, attr, array, raw_type, tot);
- if(!ok) i= tot; /* skip the loop */
+ if (!ok) i= tot; /* skip the loop */
- for( ; i<tot; i++) {
+ for ( ; i<tot; i++) {
switch(raw_type) {
case PROP_RAW_CHAR:
@@ -4099,10 +4114,10 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
}
}
- if(array)
+ if (array)
PyMem_Free(array);
- if(PyErr_Occurred()) {
+ if (PyErr_Occurred()) {
/* Maybe we could make our own error */
PyErr_Print();
PyErr_SetString(PyExc_TypeError, "couldn't access the py sequence");
@@ -4172,7 +4187,7 @@ static PyObject *pyrna_prop_array_iter(BPy_PropertyArrayRNA *self)
/* we know this is a list so no need to PyIter_Check
* otherwise it could be NULL (unlikely) if conversion failed */
- if(ret) {
+ if (ret) {
iter= PyObject_GetIter(ret);
Py_DECREF(ret);
}
@@ -4192,7 +4207,7 @@ static PyObject *pyrna_prop_collection_iter(BPy_PropertyRNA *self)
/* we know this is a list so no need to PyIter_Check
* otherwise it could be NULL (unlikely) if conversion failed */
- if(ret) {
+ if (ret) {
iter= PyObject_GetIter(ret);
Py_DECREF(ret);
}
@@ -4264,7 +4279,7 @@ static struct PyMethodDef pyrna_prop_collection_idprop_methods[]= {
* todo - also accept useful args */
static PyObject *pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject *UNUSED(kwds))
{
- if(PyTuple_GET_SIZE(args) == 1) {
+ if (PyTuple_GET_SIZE(args) == 1) {
BPy_StructRNA *base= (BPy_StructRNA *)PyTuple_GET_ITEM(args, 0);
if (Py_TYPE(base) == type) {
Py_INCREF(base);
@@ -4285,7 +4300,7 @@ static PyObject *pyrna_struct_new(PyTypeObject *type, PyObject *args, PyObject *
* Keep this since it could be useful.
*/
BPy_StructRNA *ret;
- if((ret= (BPy_StructRNA *)type->tp_alloc(type, 0))) {
+ if ((ret= (BPy_StructRNA *)type->tp_alloc(type, 0))) {
ret->ptr= base->ptr;
}
/* pass on exception & NULL if tp_alloc fails */
@@ -4338,7 +4353,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
int type= RNA_property_type(prop);
int flag= RNA_property_flag(prop);
- if(RNA_property_array_check(prop)) {
+ if (RNA_property_array_check(prop)) {
int a, len;
if (flag & PROP_DYNAMIC) {
@@ -4356,12 +4371,12 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
switch (type) {
case PROP_BOOLEAN:
ret= PyTuple_New(len);
- for(a=0; a<len; a++)
+ for (a=0; a<len; a++)
PyTuple_SET_ITEM(ret, a, PyBool_FromLong(((int*)data)[a]));
break;
case PROP_INT:
ret= PyTuple_New(len);
- for(a=0; a<len; a++)
+ for (a=0; a<len; a++)
PyTuple_SET_ITEM(ret, a, PyLong_FromSsize_t((Py_ssize_t)((int*)data)[a]));
break;
case PROP_FLOAT:
@@ -4371,7 +4386,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
ret= newVectorObject(data, len, Py_NEW, NULL);
break;
case PROP_MATRIX:
- if(len==16) {
+ if (len==16) {
ret= newMatrixObject(data, 4, 4, Py_NEW, NULL);
break;
}
@@ -4383,7 +4398,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
#endif
default:
ret= PyTuple_New(len);
- for(a=0; a<len; a++)
+ for (a=0; a<len; a++)
PyTuple_SET_ITEM(ret, a, PyFloat_FromDouble(((float*)data)[a]));
}
@@ -4420,7 +4435,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
data_ch= *(char **)data;
#ifdef USE_STRING_COERCE
- if(ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
+ if (ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) {
ret= PyC_UnicodeFromByte(data_ch);
}
else {
@@ -4446,12 +4461,12 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
PointerRNA newptr;
StructRNA *ptype= RNA_property_pointer_type(ptr, prop);
- if(flag & PROP_RNAPTR) {
+ if (flag & PROP_RNAPTR) {
/* in this case we get the full ptr */
newptr= *(PointerRNA*)data;
}
else {
- if(RNA_struct_is_ID(ptype)) {
+ if (RNA_struct_is_ID(ptype)) {
RNA_id_pointer_create(*(void**)data, &newptr);
}
else {
@@ -4480,7 +4495,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
ret= PyList_New(0);
- for(link=lb->first; link; link=link->next) {
+ for (link=lb->first; link; link=link->next) {
linkptr= pyrna_struct_CreatePyObject(&link->ptr);
PyList_Append(ret, linkptr);
Py_DECREF(linkptr);
@@ -4510,8 +4525,8 @@ static PyObject *small_dict_get_item_string(PyObject *dict, const char *key_look
PyObject *value = NULL;
while (PyDict_Next(dict, &pos, &key, &value)) {
- if(PyUnicode_Check(key)) {
- if(strcmp(key_lookup, _PyUnicode_AsString(key))==0) {
+ if (PyUnicode_Check(key)) {
+ if (strcmp(key_lookup, _PyUnicode_AsString(key))==0) {
return value;
}
}
@@ -4547,12 +4562,12 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
/* Should never happen but it does in rare cases */
BLI_assert(self_ptr != NULL);
- if(self_ptr==NULL) {
+ if (self_ptr==NULL) {
PyErr_SetString(PyExc_RuntimeError, "rna functions internal rna pointer is NULL, this is a bug. aborting");
return NULL;
}
- if(self_func==NULL) {
+ if (self_func==NULL) {
PyErr_Format(PyExc_RuntimeError,
"%.200s.<unknown>(): rna function internal function is NULL, this is a bug. aborting",
RNA_struct_identifier(self_ptr->type));
@@ -4582,7 +4597,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
parms_len= RNA_parameter_list_arg_count(&parms);
ret_len= 0;
- if(pyargs_len + pykw_len > parms_len) {
+ if (pyargs_len + pykw_len > parms_len) {
RNA_parameter_list_end(&iter);
PyErr_Format(PyExc_TypeError,
"%.200s.%.200s(): takes at most %d arguments, got %d",
@@ -4619,7 +4634,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
#else
item= small_dict_get_item_string(kw, RNA_property_identifier(parm)); /* borrow ref */
#endif
- if(item)
+ if (item)
kw_tot++; /* make sure invalid keywords are not given */
kw_arg= TRUE;
@@ -4628,7 +4643,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
i++; /* current argument */
if (item==NULL) {
- if(flag & PROP_REQUIRED) {
+ if (flag & PROP_REQUIRED) {
PyErr_Format(PyExc_TypeError,
"%.200s.%.200s(): required parameter \"%.200s\" not specified",
RNA_struct_identifier(self_ptr->type),
@@ -4643,8 +4658,8 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
}
#ifdef DEBUG_STRING_FREE
- if(item) {
- if(PyUnicode_Check(item)) {
+ if (item) {
+ if (PyUnicode_Check(item)) {
item= PyUnicode_FromString(_PyUnicode_AsString(item));
PyList_Append(string_free_ls, item);
Py_DECREF(item);
@@ -4653,13 +4668,13 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
#endif
err= pyrna_py_to_prop(&funcptr, parm, iter.data, item, "");
- if(err!=0) {
+ if (err!=0) {
/* the error generated isn't that useful, so generate it again with a useful prefix
* could also write a function to prepend to error messages */
char error_prefix[512];
PyErr_Clear(); /* re-raise */
- if(kw_arg==TRUE)
+ if (kw_arg==TRUE)
BLI_snprintf(error_prefix, sizeof(error_prefix),
"%.200s.%.200s(): error with keyword argument \"%.200s\" - ",
RNA_struct_identifier(self_ptr->type),
@@ -4686,7 +4701,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
* the if below is quick, checking if it passed less keyword args then we gave.
* (Dont overwrite the error if we have one, otherwise can skip important messages and confuse with args)
*/
- if(err == 0 && kw && (pykw_len > kw_tot)) {
+ if (err == 0 && kw && (pykw_len > kw_tot)) {
PyObject *key, *value;
Py_ssize_t pos= 0;
@@ -4701,13 +4716,13 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
arg_name= _PyUnicode_AsString(key);
found= FALSE;
- if(arg_name==NULL) { /* unlikely the argname is not a string but ignore if it is*/
+ if (arg_name==NULL) { /* unlikely the argname is not a string but ignore if it is*/
PyErr_Clear();
}
else {
/* Search for arg_name */
RNA_parameter_list_begin(&parms, &iter);
- for(; iter.valid; RNA_parameter_list_next(&iter)) {
+ for (; iter.valid; RNA_parameter_list_next(&iter)) {
parm= iter.parm;
if (strcmp(arg_name, RNA_property_identifier(parm))==0) {
found= TRUE;
@@ -4717,7 +4732,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
RNA_parameter_list_end(&iter);
- if(found==FALSE) {
+ if (found==FALSE) {
BLI_dynstr_appendf(bad_args, first ? "%s" : ", %s", arg_name);
first= FALSE;
}
@@ -4728,9 +4743,9 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
first= TRUE;
RNA_parameter_list_begin(&parms, &iter);
- for(; iter.valid; RNA_parameter_list_next(&iter)) {
+ for (; iter.valid; RNA_parameter_list_next(&iter)) {
parm= iter.parm;
- if(RNA_property_flag(parm) & PROP_OUTPUT)
+ if (RNA_property_flag(parm) & PROP_OUTPUT)
continue;
BLI_dynstr_appendf(good_args, first ? "%s" : ", %s", RNA_property_identifier(parm));
@@ -4767,7 +4782,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
err= (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE));
/* return value */
- if(err != -1) {
+ if (err != -1) {
if (ret_len > 0) {
if (ret_len > 1) {
ret= PyTuple_New(ret_len);
@@ -4775,7 +4790,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
RNA_parameter_list_begin(&parms, &iter);
- for(; iter.valid; RNA_parameter_list_next(&iter)) {
+ for (; iter.valid; RNA_parameter_list_next(&iter)) {
parm= iter.parm;
flag= RNA_property_flag(parm);
@@ -4789,7 +4804,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
ret= pyrna_param_to_py(&funcptr, pret_single, retdata_single);
/* possible there is an error in conversion */
- if(ret==NULL)
+ if (ret==NULL)
err= -1;
}
}
@@ -4797,7 +4812,7 @@ static PyObject *pyrna_func_call(BPy_FunctionRNA *self, PyObject *args, PyObject
#ifdef DEBUG_STRING_FREE
- // if(PyList_GET_SIZE(string_free_ls)) printf("%.200s.%.200s(): has %d strings\n", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), (int)PyList_GET_SIZE(string_free_ls));
+ // if (PyList_GET_SIZE(string_free_ls)) printf("%.200s.%.200s(): has %d strings\n", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), (int)PyList_GET_SIZE(string_free_ls));
Py_DECREF(string_free_ls);
#undef DEBUG_STRING_FREE
#endif
@@ -5533,7 +5548,7 @@ static PyObject *pyrna_prop_collection_iter(BPy_PropertyRNA *self)
static PyObject *pyrna_prop_collection_iter_next(BPy_PropertyCollectionIterRNA *self)
{
- if(self->iter.valid == FALSE) {
+ if (self->iter.valid == FALSE) {
PyErr_SetString(PyExc_StopIteration, "pyrna_prop_collection_iter stop");
return NULL;
}
@@ -5541,8 +5556,8 @@ static PyObject *pyrna_prop_collection_iter_next(BPy_PropertyCollectionIterRNA *
BPy_StructRNA *pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&self->iter.ptr);
#ifdef USE_PYRNA_STRUCT_REFERENCE
- if(pyrna) { /* unlikely but may fail */
- if((PyObject *)pyrna != Py_None) {
+ if (pyrna) { /* unlikely but may fail */
+ if ((PyObject *)pyrna != Py_None) {
/* hold a reference to the iterator since it may have
* allocated memory 'pyrna' needs. eg: introspecting dynamic enum's */
/* TODO, we could have an api call to know if this is needed since most collections don't */
@@ -5616,13 +5631,13 @@ static PyObject* pyrna_srna_PyBase(StructRNA *srna) //, PyObject *bpy_types_dict
/* get the base type */
base= RNA_struct_base(srna);
- if(base && base != srna) {
+ if (base && base != srna) {
/*/printf("debug subtype %s %p\n", RNA_struct_identifier(srna), srna); */
py_base= pyrna_srna_Subtype(base); //, bpy_types_dict);
Py_DECREF(py_base); /* srna owns, this is only to pass as an arg */
}
- if(py_base==NULL) {
+ if (py_base==NULL) {
py_base= (PyObject *)&pyrna_struct_Type;
}
@@ -5638,10 +5653,10 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna)
const char *idname= RNA_struct_identifier(srna);
PyObject *newclass;
- if(bpy_types_dict==NULL) {
+ if (bpy_types_dict==NULL) {
PyObject *bpy_types= PyImport_ImportModuleLevel((char *)"bpy_types", NULL, NULL, NULL, 0);
- if(bpy_types==NULL) {
+ if (bpy_types==NULL) {
PyErr_Print();
PyErr_Clear();
fprintf(stderr, "%s: failed to find 'bpy_types' module\n", __func__);
@@ -5654,27 +5669,27 @@ static PyObject* pyrna_srna_ExternalType(StructRNA *srna)
newclass= PyDict_GetItemString(bpy_types_dict, idname);
/* sanity check, could skip this unless in debug mode */
- if(newclass) {
+ if (newclass) {
PyObject *base_compare= pyrna_srna_PyBase(srna);
//PyObject *slots= PyObject_GetAttrString(newclass, "__slots__"); // cant do this because it gets superclasses values!
//PyObject *bases= PyObject_GetAttrString(newclass, "__bases__"); // can do this but faster not to.
PyObject *tp_bases= ((PyTypeObject *)newclass)->tp_bases;
PyObject *tp_slots= PyDict_GetItem(((PyTypeObject *)newclass)->tp_dict, bpy_intern_str___slots__);
- if(tp_slots==NULL) {
+ if (tp_slots==NULL) {
fprintf(stderr, "%s: expected class '%s' to have __slots__ defined\n\nSee bpy_types.py\n", __func__, idname);
newclass= NULL;
}
- else if(PyTuple_GET_SIZE(tp_bases)) {
+ else if (PyTuple_GET_SIZE(tp_bases)) {
PyObject *base= PyTuple_GET_ITEM(tp_bases, 0);
- if(base_compare != base) {
+ if (base_compare != base) {
fprintf(stderr, "%s: incorrect subclassing of SRNA '%s'\nSee bpy_types.py\n", __func__, idname);
PyC_ObSpit("Expected! ", base_compare);
newclass= NULL;
}
else {
- if(G.f & G_DEBUG)
+ if (G.f & G_DEBUG)
fprintf(stderr, "SRNA Subclassed: '%s'\n", idname);
}
}
@@ -5713,10 +5728,10 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna)
/* remove __doc__ for now */
// const char *descr= RNA_struct_ui_description(srna);
- // if(!descr) descr= "(no docs)";
+ // if (!descr) descr= "(no docs)";
// "__doc__", descr
- if(RNA_struct_idprops_check(srna) && !PyObject_IsSubclass(py_base, (PyObject *)&pyrna_struct_meta_idprop_Type)) {
+ if (RNA_struct_idprops_check(srna) && !PyObject_IsSubclass(py_base, (PyObject *)&pyrna_struct_meta_idprop_Type)) {
metaclass= (PyObject *)&pyrna_struct_meta_idprop_Type;
}
else {
@@ -5751,7 +5766,7 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna)
/* use for subtyping so we know which srna is used for a PointerRNA */
static StructRNA *srna_from_ptr(PointerRNA *ptr)
{
- if(ptr->type == &RNA_Struct) {
+ if (ptr->type == &RNA_Struct) {
return ptr->data;
}
else {
@@ -5790,7 +5805,7 @@ PyObject *pyrna_struct_CreatePyObject(PointerRNA *ptr)
}
}
- if(pyrna == NULL) {
+ if (pyrna == NULL) {
PyErr_SetString(PyExc_MemoryError, "couldn't create bpy_struct object");
return NULL;
}
@@ -5807,7 +5822,7 @@ PyObject *pyrna_struct_CreatePyObject(PointerRNA *ptr)
// PyC_ObSpit("NewStructRNA: ", (PyObject *)pyrna);
#ifdef USE_PYRNA_INVALIDATE_WEAKREF
- if(ptr->id.data) {
+ if (ptr->id.data) {
id_weakref_pool_add(ptr->id.data, (BPy_DummyPointerRNA *)pyrna);
}
#endif
@@ -5825,7 +5840,7 @@ PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
type= &pyrna_prop_Type;
}
else {
- if((RNA_property_flag(prop) & PROP_IDPROPERTY) == 0) {
+ if ((RNA_property_flag(prop) & PROP_IDPROPERTY) == 0) {
type= &pyrna_prop_collection_Type;
}
else {
@@ -5847,7 +5862,7 @@ PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
#endif
}
- if(pyrna == NULL) {
+ if (pyrna == NULL) {
PyErr_SetString(PyExc_MemoryError, "couldn't create BPy_rna object");
return NULL;
}
@@ -5856,7 +5871,7 @@ PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
pyrna->prop= prop;
#ifdef USE_PYRNA_INVALIDATE_WEAKREF
- if(ptr->id.data) {
+ if (ptr->id.data) {
id_weakref_pool_add(ptr->id.data, (BPy_DummyPointerRNA *)pyrna);
}
#endif
@@ -5880,29 +5895,29 @@ void BPY_rna_init(void)
#endif
/* metaclass */
- if(PyType_Ready(&pyrna_struct_meta_idprop_Type) < 0)
+ if (PyType_Ready(&pyrna_struct_meta_idprop_Type) < 0)
return;
- if(PyType_Ready(&pyrna_struct_Type) < 0)
+ if (PyType_Ready(&pyrna_struct_Type) < 0)
return;
- if(PyType_Ready(&pyrna_prop_Type) < 0)
+ if (PyType_Ready(&pyrna_prop_Type) < 0)
return;
- if(PyType_Ready(&pyrna_prop_array_Type) < 0)
+ if (PyType_Ready(&pyrna_prop_array_Type) < 0)
return;
- if(PyType_Ready(&pyrna_prop_collection_Type) < 0)
+ if (PyType_Ready(&pyrna_prop_collection_Type) < 0)
return;
- if(PyType_Ready(&pyrna_prop_collection_idprop_Type) < 0)
+ if (PyType_Ready(&pyrna_prop_collection_idprop_Type) < 0)
return;
- if(PyType_Ready(&pyrna_func_Type) < 0)
+ if (PyType_Ready(&pyrna_func_Type) < 0)
return;
#ifdef USE_PYRNA_ITER
- if(PyType_Ready(&pyrna_prop_collection_iter_Type) < 0)
+ if (PyType_Ready(&pyrna_prop_collection_iter_Type) < 0)
return;
#endif
}
@@ -5955,7 +5970,7 @@ static PyObject *pyrna_basetype_getattro(BPy_BaseTypeRNA *self, PyObject *pyname
PyObject *ret;
const char *name= _PyUnicode_AsString(pyname);
- if(name == NULL) {
+ if (name == NULL) {
PyErr_SetString(PyExc_AttributeError, "bpy.types: __getattr__ must be a string");
ret= NULL;
}
@@ -6001,7 +6016,7 @@ static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self)
list= pyrna_prop_collection_keys(self); /* like calling structs.keys(), avoids looping here */
#if 0 /* for now only contains __dir__ */
- for(meth=pyrna_basetype_methods; meth->ml_name; meth++) {
+ for (meth=pyrna_basetype_methods; meth->ml_name; meth++) {
name= PyUnicode_FromString(meth->ml_name);
PyList_Append(list, name);
Py_DECREF(name);
@@ -6023,7 +6038,7 @@ PyObject *BPY_rna_types(void)
pyrna_basetype_Type.tp_flags= Py_TPFLAGS_DEFAULT;
pyrna_basetype_Type.tp_methods= pyrna_basetype_methods;
- if(PyType_Ready(&pyrna_basetype_Type) < 0)
+ if (PyType_Ready(&pyrna_basetype_Type) < 0)
return NULL;
}
@@ -6044,26 +6059,26 @@ StructRNA *pyrna_struct_as_srna(PyObject *self, int parent, const char *error_pr
StructRNA *srna;
/* ack, PyObject_GetAttrString wont look up this types tp_dict first :/ */
- if(PyType_Check(self)) {
+ if (PyType_Check(self)) {
py_srna= (BPy_StructRNA *)PyDict_GetItem(((PyTypeObject *)self)->tp_dict, bpy_intern_str_bl_rna);
Py_XINCREF(py_srna);
}
- if(parent) {
+ if (parent) {
/* be very careful with this since it will return a parent classes srna.
* modifying this will do confusing stuff! */
- if(py_srna==NULL)
+ if (py_srna==NULL)
py_srna= (BPy_StructRNA*)PyObject_GetAttr(self, bpy_intern_str_bl_rna);
}
- if(py_srna==NULL) {
+ if (py_srna==NULL) {
PyErr_Format(PyExc_RuntimeError,
"%.200s, missing bl_rna attribute from '%.200s' instance (may not be registered)",
error_prefix, Py_TYPE(self)->tp_name);
return NULL;
}
- if(!BPy_StructRNA_Check(py_srna)) {
+ if (!BPy_StructRNA_Check(py_srna)) {
PyErr_Format(PyExc_TypeError,
"%.200s, bl_rna attribute wrong type '%.200s' on '%.200s'' instance",
error_prefix, Py_TYPE(py_srna)->tp_name,
@@ -6072,7 +6087,7 @@ StructRNA *pyrna_struct_as_srna(PyObject *self, int parent, const char *error_pr
return NULL;
}
- if(py_srna->ptr.type != &RNA_Struct) {
+ if (py_srna->ptr.type != &RNA_Struct) {
PyErr_Format(PyExc_TypeError,
"%.200s, bl_rna attribute not a RNA_Struct, on '%.200s'' instance",
error_prefix, Py_TYPE(self)->tp_name);
@@ -6093,7 +6108,7 @@ StructRNA *pyrna_struct_as_srna(PyObject *self, int parent, const char *error_pr
StructRNA *srna_from_self(PyObject *self, const char *error_prefix)
{
- if(self==NULL) {
+ if (self==NULL) {
return NULL;
}
else if (PyCapsule_CheckExact(self)) {
@@ -6114,7 +6129,7 @@ StructRNA *srna_from_self(PyObject *self, const char *error_prefix)
srna= pyrna_struct_as_srna(self, 0, error_prefix);
- if(!PyErr_Occurred()) {
+ if (!PyErr_Occurred()) {
PyErr_Restore(error_type, error_value, error_traceback);
}
@@ -6126,14 +6141,14 @@ static int deferred_register_prop(StructRNA *srna, PyObject *key, PyObject *item
{
/* We only care about results from C which
* are for sure types, save some time with error */
- if(pyrna_is_deferred_prop(item)) {
+ if (pyrna_is_deferred_prop(item)) {
PyObject *py_func, *py_kw, *py_srna_cobject, *py_ret;
- if(PyArg_ParseTuple(item, "OO!", &py_func, &PyDict_Type, &py_kw)) {
+ if (PyArg_ParseTuple(item, "OO!", &py_func, &PyDict_Type, &py_kw)) {
PyObject *args_fake;
- if(*_PyUnicode_AsString(key)=='_') {
+ if (*_PyUnicode_AsString(key)=='_') {
PyErr_Format(PyExc_ValueError,
"bpy_struct \"%.200s\" registration error: "
"%.200s could not register because the property starts with an '_'\n",
@@ -6152,7 +6167,7 @@ static int deferred_register_prop(StructRNA *srna, PyObject *key, PyObject *item
Py_DECREF(args_fake); /* free's py_srna_cobject too */
- if(py_ret) {
+ if (py_ret) {
Py_DECREF(py_ret);
}
else {
@@ -6190,12 +6205,12 @@ static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
/* in both cases PyDict_CheckExact(class_dict) will be true even
* though Operators have a metaclass dict namespace */
- if((order= PyDict_GetItem(class_dict, bpy_intern_str_order)) && PyList_CheckExact(order)) {
- for(pos= 0; pos<PyList_GET_SIZE(order); pos++) {
+ if ((order= PyDict_GetItem(class_dict, bpy_intern_str_order)) && PyList_CheckExact(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, key, item);
- if(ret != 0)
+ if (ret != 0)
break;
}
}
@@ -6203,7 +6218,7 @@ static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
while (PyDict_Next(class_dict, &pos, &key, &item)) {
ret= deferred_register_prop(srna, key, item);
- if(ret != 0)
+ if (ret != 0)
break;
}
}
@@ -6217,7 +6232,7 @@ static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject
int i, ret;
/* first scan base classes for registerable properties */
- for(i=0; i<len; i++) {
+ for (i=0; i<len; i++) {
PyTypeObject *py_superclass= (PyTypeObject *)PyTuple_GET_ITEM(py_class->tp_bases, i);
/* the rules for using these base classes are not clear,
@@ -6229,12 +6244,12 @@ static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject
* So only scan base classes which are not subclasses if blender types.
* This best fits having 'mix-in' classes for operators and render engines.
* */
- if( py_superclass != &PyBaseObject_Type &&
+ if (py_superclass != &PyBaseObject_Type &&
!PyObject_IsSubclass((PyObject *)py_superclass, (PyObject *)&pyrna_struct_Type)
) {
ret= pyrna_deferred_register_class_recursive(srna, py_superclass);
- if(ret != 0) {
+ if (ret != 0) {
return ret;
}
}
@@ -6248,7 +6263,7 @@ int pyrna_deferred_register_class(StructRNA *srna, PyObject *py_class)
{
/* Panels and Menus dont need this
* save some time and skip the checks here */
- if(!RNA_struct_idprops_register_check(srna))
+ if (!RNA_struct_idprops_register_check(srna))
return 0;
return pyrna_deferred_register_class_recursive(srna, (PyTypeObject *)py_class);
@@ -6263,9 +6278,9 @@ static int rna_function_arg_count(FunctionRNA *func)
Link *link;
int count= (RNA_function_flag(func) & FUNC_NO_SELF) ? 0 : 1;
- for(link=lb->first; link; link=link->next) {
+ for (link=lb->first; link; link=link->next) {
parm= (PropertyRNA*)link;
- if(!(RNA_property_flag(parm) & PROP_OUTPUT))
+ if (!(RNA_property_flag(parm) & PROP_OUTPUT))
count++;
}
@@ -6299,11 +6314,11 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
/* verify callback functions */
lb= RNA_struct_type_functions(srna);
i= 0;
- for(link=lb->first; link; link=link->next) {
+ for (link=lb->first; link; link=link->next) {
func= (FunctionRNA*)link;
flag= RNA_function_flag(func);
- if(!(flag & FUNC_REGISTER))
+ if (!(flag & FUNC_REGISTER))
continue;
item= PyObject_GetAttrString(py_class, RNA_function_identifier(func));
@@ -6324,7 +6339,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
}
else {
Py_DECREF(item); /* no need to keep a ref, the class owns it (technically we should keep a ref but...) */
- if(flag & FUNC_NO_SELF) {
+ if (flag & FUNC_NO_SELF) {
if (PyMethod_Check(item)==0) {
PyErr_Format(PyExc_TypeError,
"expected %.200s, %.200s class \"%.200s\" attribute to be a method, not a %.200s",
@@ -6349,7 +6364,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
/* note, the number of args we check for and the number of args we give to
* @classmethods are different (quirk of python), this is why rna_function_arg_count() doesn't return the value -1*/
- if(flag & FUNC_NO_SELF)
+ if (flag & FUNC_NO_SELF)
func_arg_count++;
if (arg_count != func_arg_count) {
@@ -6365,12 +6380,12 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
/* verify properties */
lb= RNA_struct_type_properties(srna);
- for(link=lb->first; link; link=link->next) {
+ for (link=lb->first; link; link=link->next) {
const char *identifier;
prop= (PropertyRNA*)link;
flag= RNA_property_flag(prop);
- if(!(flag & PROP_REGISTER))
+ if (!(flag & PROP_REGISTER))
continue;
identifier= RNA_property_identifier(prop);
@@ -6380,10 +6395,10 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
/* Sneaky workaround to use the class name as the bl_idname */
#define BPY_REPLACEMENT_STRING(rna_attr, py_attr) \
- if(strcmp(identifier, rna_attr) == 0) { \
+ if (strcmp(identifier, rna_attr) == 0) { \
item= PyObject_GetAttrString(py_class, py_attr); \
- if(item && item != Py_None) { \
- if(pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class:") != 0) { \
+ if (item && item != Py_None) { \
+ if (pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class:") != 0) { \
Py_DECREF(item); \
return -1; \
} \
@@ -6409,7 +6424,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
else {
Py_DECREF(item); /* no need to keep a ref, the class owns it */
- if(pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class:") != 0)
+ if (pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class:") != 0)
return -1;
}
}
@@ -6448,7 +6463,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
py_class= RNA_struct_py_type_get(ptr->type);
/* rare case. can happen when registering subclasses */
- if(py_class==NULL) {
+ if (py_class==NULL) {
fprintf(stderr, "%s: unable to get python class for rna struct '%.200s'\n",
__func__, RNA_struct_identifier(ptr->type));
return -1;
@@ -6456,7 +6471,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
/* XXX, this is needed because render engine calls without a context
* this should be supported at some point but at the moment its not! */
- if(C==NULL)
+ if (C==NULL)
C= BPy_GetContext();
is_valid_wm= (CTX_wm_manager(C) != NULL);
@@ -6465,11 +6480,11 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
if (!is_static) {
/* some datatypes (operator, render engine) can store PyObjects for re-use */
- if(ptr->data) {
+ if (ptr->data) {
void **instance = RNA_struct_instance(ptr);
- if(instance) {
- if(*instance) {
+ if (instance) {
+ if (*instance) {
py_class_instance= *instance;
Py_INCREF(py_class_instance);
}
@@ -6481,16 +6496,16 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
}
/* end exception */
- if(py_class_instance==NULL)
+ if (py_class_instance==NULL)
py_srna= pyrna_struct_CreatePyObject(ptr);
- if(py_class_instance) {
+ if (py_class_instance) {
/* special case, instance is cached */
}
- else if(py_srna == NULL) {
+ else if (py_srna == NULL) {
py_class_instance= NULL;
}
- else if(py_srna == Py_None) { /* probably wont ever happen but possible */
+ else if (py_srna == Py_None) { /* probably wont ever happen but possible */
Py_DECREF(py_srna);
py_class_instance= NULL;
}
@@ -6500,7 +6515,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
* otherwise __init__() always needs to take a second self argument, see pyrna_struct_new().
* Although this is annoying to have to impliment a part of pythons typeobject.c:type_call().
*/
- if(py_class->tp_init) {
+ if (py_class->tp_init) {
#ifdef USE_PEDANTIC_WRITE
const int prev_write= rna_disallow_writes;
rna_disallow_writes= is_operator ? FALSE : TRUE; /* only operators can write on __init__ */
@@ -6541,10 +6556,10 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
#endif
- if(py_class_instance == NULL) {
+ if (py_class_instance == NULL) {
err= -1; /* so the error is not overridden below */
}
- else if(py_class_instance_store) {
+ else if (py_class_instance_store) {
*py_class_instance_store= py_class_instance;
Py_INCREF(py_class_instance);
}
@@ -6555,12 +6570,12 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
PyObject *item= PyObject_GetAttrString((PyObject *)py_class, RNA_function_identifier(func));
// flag= RNA_function_flag(func);
- if(item) {
+ if (item) {
RNA_pointer_create(NULL, &RNA_Function, func, &funcptr);
args= PyTuple_New(rna_function_arg_count(func)); /* first arg is included in 'item' */
- if(is_static) {
+ if (is_static) {
i= 0;
}
else {
@@ -6619,7 +6634,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
}
else {
/* the error may be already set if the class instance couldn't be created */
- if(err != -1) {
+ if (err != -1) {
PyErr_Format(PyExc_RuntimeError,
"could not create instance of %.200s to call callback function %.200s",
RNA_struct_identifier(ptr->type), RNA_function_identifier(func));
@@ -6631,30 +6646,30 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
err= -1;
}
else {
- if(ret_len==0 && ret != Py_None) {
+ if (ret_len==0 && ret != Py_None) {
PyErr_Format(PyExc_RuntimeError,
"expected class %.200s, function %.200s to return None, not %.200s",
RNA_struct_identifier(ptr->type), RNA_function_identifier(func),
Py_TYPE(ret)->tp_name);
err= -1;
}
- else if(ret_len==1) {
+ else if (ret_len==1) {
err= pyrna_py_to_prop(&funcptr, pret_single, retdata_single, ret, "");
/* when calling operator funcs only gives Function.result with
* no line number since the func has finished calling on error,
* re-raise the exception with more info since it would be slow to
* create prefix on every call (when there are no errors) */
- if(err == -1) {
+ if (err == -1) {
PyC_Err_Format_Prefix(PyExc_RuntimeError,
"class %.200s, function %.200s: incompatible return value ",
- RNA_struct_identifier(ptr->type), RNA_function_identifier(func)
+ RNA_struct_identifier(ptr->type), RNA_function_identifier(func)
);
}
}
else if (ret_len > 1) {
- if(PyTuple_Check(ret)==0) {
+ if (PyTuple_Check(ret)==0) {
PyErr_Format(PyExc_RuntimeError,
"expected class %.200s, function %.200s to return a tuple of size %d, not %.200s",
RNA_struct_identifier(ptr->type), RNA_function_identifier(func),
@@ -6680,8 +6695,9 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
/* only useful for single argument returns, we'll need another list loop for multiple */
if (flag & PROP_OUTPUT) {
err= pyrna_py_to_prop(&funcptr, parm, iter.data, PyTuple_GET_ITEM(ret, i++), "calling class function:");
- if(err)
+ if (err) {
break;
+ }
}
}
@@ -6691,7 +6707,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
Py_DECREF(ret);
}
- if(err != 0) {
+ if (err != 0) {
ReportList *reports;
/* alert the user, else they wont know unless they see the console. */
if ( (!is_static) &&
@@ -6731,12 +6747,12 @@ static void bpy_class_free(void *pyob_ptr)
//
// remove the rna attribute instead.
PyDict_DelItem(((PyTypeObject *)self)->tp_dict, bpy_intern_str_bl_rna);
- if(PyErr_Occurred())
+ if (PyErr_Occurred())
PyErr_Clear();
#if 0 /* needs further investigation, too annoying so quiet for now */
- if(G.f&G_DEBUG) {
- if(self->ob_refcnt > 1) {
+ if (G.f&G_DEBUG) {
+ if (self->ob_refcnt > 1) {
PyC_ObSpit("zombie class - ref should be 1", self);
}
}
@@ -6761,8 +6777,8 @@ void pyrna_alloc_types(void)
RNA_PROP_BEGIN(&ptr, itemptr, prop) {
PyObject *item= pyrna_struct_Subtype(&itemptr);
- if(item == NULL) {
- if(PyErr_Occurred()) {
+ if (item == NULL) {
+ if (PyErr_Occurred()) {
PyErr_Print();
PyErr_Clear();
}
@@ -6791,7 +6807,7 @@ void pyrna_free_types(void)
StructRNA *srna= srna_from_ptr(&itemptr);
void *py_ptr= RNA_struct_py_type_get(srna);
- if(py_ptr) {
+ if (py_ptr) {
#if 0 // XXX - should be able to do this but makes python crash on exit
bpy_class_free(py_ptr);
#endif
@@ -6838,19 +6854,19 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
const char *identifier;
PyObject *py_cls_meth;
- if(PyDict_GetItem(((PyTypeObject*)py_class)->tp_dict, bpy_intern_str_bl_rna)) {
+ if (PyDict_GetItem(((PyTypeObject*)py_class)->tp_dict, bpy_intern_str_bl_rna)) {
PyErr_SetString(PyExc_AttributeError, "register_class(...): already registered as a subclass");
return NULL;
}
/* warning: gets parent classes srna, only for the register function */
srna= pyrna_struct_as_srna(py_class, 1, "register_class(...):");
- if(srna==NULL)
+ if (srna==NULL)
return NULL;
/* fails in cases, cant use this check but would like to :| */
/*
- if(RNA_struct_py_type_get(srna)) {
+ if (RNA_struct_py_type_get(srna)) {
PyErr_Format(PyExc_ValueError,
"register_class(...): %.200s's parent class %.200s is already registered, this is not allowed",
((PyTypeObject*)py_class)->tp_name, RNA_struct_identifier(srna));
@@ -6861,7 +6877,7 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
/* check that we have a register callback for this type */
reg= RNA_struct_register(srna);
- if(!reg) {
+ if (!reg) {
PyErr_Format(PyExc_ValueError,
"register_class(...): expected a subclass of a registerable "
"rna type (%.200s does not support registration)",
@@ -6879,18 +6895,18 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
srna_new= reg(CTX_data_main(C), &reports, py_class, identifier, bpy_class_validate, bpy_class_call, bpy_class_free);
- if(BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
+ if (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
return NULL;
/* python errors validating are not converted into reports so the check above will fail.
* the cause for returning NULL will be printed as an error */
- if(srna_new == NULL)
+ if (srna_new == NULL)
return NULL;
pyrna_subtype_set_rna(py_class, srna_new); /* takes a ref to py_class */
/* old srna still references us, keep the check incase registering somehow can free it */
- if(RNA_struct_py_type_get(srna)) {
+ if (RNA_struct_py_type_get(srna)) {
RNA_struct_py_type_set(srna, NULL);
// Py_DECREF(py_class); // should be able to do this XXX since the old rna adds a new ref.
}
@@ -6899,17 +6915,17 @@ static PyObject *pyrna_register_class(PyObject *UNUSED(self), PyObject *py_class
*
* item= PyObject_GetAttrString(py_class, "__dict__");
*/
- if(pyrna_deferred_register_class(srna_new, py_class)!=0)
+ if (pyrna_deferred_register_class(srna_new, py_class)!=0)
return NULL;
/* call classed register method () */
py_cls_meth= PyObject_GetAttr(py_class, bpy_intern_str_register);
- if(py_cls_meth == NULL) {
+ if (py_cls_meth == NULL) {
PyErr_Clear();
}
else {
PyObject *ret= PyObject_CallObject(py_cls_meth, NULL);
- if(ret) {
+ if (ret) {
Py_DECREF(ret);
}
else {
@@ -6929,13 +6945,13 @@ static int pyrna_srna_contains_pointer_prop_srna(StructRNA *srna_props, StructRN
/* verify properties */
const ListBase *lb= RNA_struct_type_properties(srna);
- for(link=lb->first; link; link=link->next) {
+ for (link=lb->first; link; link=link->next) {
prop= (PropertyRNA*)link;
- if(RNA_property_type(prop) == PROP_POINTER && !(RNA_property_flag(prop) & PROP_BUILTIN)) {
+ if (RNA_property_type(prop) == PROP_POINTER && !(RNA_property_flag(prop) & PROP_BUILTIN)) {
PointerRNA tptr;
RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr);
- if(RNA_property_pointer_type(&tptr, prop) == srna) {
+ if (RNA_property_pointer_type(&tptr, prop) == srna) {
*prop_identifier= RNA_property_identifier(prop);
return 1;
}
@@ -6961,32 +6977,32 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
StructRNA *srna;
PyObject *py_cls_meth;
- /*if(PyDict_GetItem(((PyTypeObject*)py_class)->tp_dict, bpy_intern_str_bl_rna)==NULL) {
+ /*if (PyDict_GetItem(((PyTypeObject*)py_class)->tp_dict, bpy_intern_str_bl_rna)==NULL) {
PWM_cursor_wait(0);
PyErr_SetString(PyExc_ValueError, "unregister_class(): not a registered as a subclass");
return NULL;
}*/
srna= pyrna_struct_as_srna(py_class, 0, "unregister_class(...):");
- if(srna==NULL)
+ if (srna==NULL)
return NULL;
/* check that we have a unregister callback for this type */
unreg= RNA_struct_unregister(srna);
- if(!unreg) {
+ if (!unreg) {
PyErr_SetString(PyExc_ValueError, "unregister_class(...): expected a Type subclassed from a registerable rna type (no unregister supported)");
return NULL;
}
/* call classed unregister method */
py_cls_meth= PyObject_GetAttr(py_class, bpy_intern_str_unregister);
- if(py_cls_meth == NULL) {
+ if (py_cls_meth == NULL) {
PyErr_Clear();
}
else {
PyObject *ret= PyObject_CallObject(py_cls_meth, NULL);
- if(ret) {
+ if (ret) {
Py_DECREF(ret);
}
else {
@@ -6995,7 +7011,7 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
}
/* should happen all the time but very slow */
- if(G.f & G_DEBUG) {
+ if (G.f & G_DEBUG) {
/* remove all properties using this class */
StructRNA *srna_iter;
PointerRNA ptr_rna;
@@ -7010,13 +7026,13 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
/* loop over all structs */
RNA_PROP_BEGIN(&ptr_rna, itemptr, prop_rna) {
srna_iter= itemptr.data;
- if(pyrna_srna_contains_pointer_prop_srna(srna_iter, srna, &prop_identifier)) {
+ if (pyrna_srna_contains_pointer_prop_srna(srna_iter, srna, &prop_identifier)) {
break;
}
}
RNA_PROP_END;
- if(prop_identifier) {
+ if (prop_identifier) {
PyErr_Format(PyExc_RuntimeError,
"unregister_class(...): can't unregister %s because %s.%s pointer property is using this",
RNA_struct_identifier(srna), RNA_struct_identifier(srna_iter), prop_identifier);
@@ -7031,7 +7047,7 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
unreg(CTX_data_main(C), srna); /* calls bpy_class_free, this decref's py_class */
PyDict_DelItem(((PyTypeObject *)py_class)->tp_dict, bpy_intern_str_bl_rna);
- if(PyErr_Occurred())
+ if (PyErr_Occurred())
PyErr_Clear(); //return NULL;
Py_RETURN_NONE;
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index 502fa25c872..98afad38abe 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -149,7 +149,7 @@ typedef struct {
PyObject *in_weakreflist;
#endif
- /* collection iterator spesific parts */
+ /* collection iterator specific parts */
CollectionPropertyIterator iter;
} BPy_PropertyCollectionIterRNA;
diff --git a/source/blender/python/intern/bpy_rna_anim.c b/source/blender/python/intern/bpy_rna_anim.c
index c87a141f5bd..00b20f0599c 100644
--- a/source/blender/python/intern/bpy_rna_anim.c
+++ b/source/blender/python/intern/bpy_rna_anim.c
@@ -70,18 +70,18 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi
}
/* full paths can only be given from ID base */
- if(is_idbase) {
+ if (is_idbase) {
int r_index= -1;
- if(RNA_path_resolve_full(ptr, path, &r_ptr, &prop, &r_index)==0) {
+ if (RNA_path_resolve_full(ptr, path, &r_ptr, &prop, &r_index)==0) {
prop= NULL;
}
- else if(r_index != -1) {
+ else if (r_index != -1) {
PyErr_Format(PyExc_ValueError,
"%.200s path includes index, must be a separate argument",
error_prefix, path);
return -1;
}
- else if(ptr->id.data != r_ptr.id.data) {
+ else if (ptr->id.data != r_ptr.id.data) {
PyErr_Format(PyExc_ValueError,
"%.200s path spans ID blocks",
error_prefix, path);
@@ -107,8 +107,8 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi
return -1;
}
- if(RNA_property_array_check(prop) == 0) {
- if((*index) == -1) {
+ if (RNA_property_array_check(prop) == 0) {
+ if ((*index) == -1) {
*index= 0;
}
else {
@@ -120,7 +120,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi
}
else {
int array_len= RNA_property_array_length(&r_ptr, prop);
- if((*index) < -1 || (*index) >= array_len) {
+ if ((*index) < -1 || (*index) >= array_len) {
PyErr_Format(PyExc_TypeError,
"%.200s index out of range \"%s\", given %d, array length is %d",
error_prefix, path, *index, array_len);
@@ -128,7 +128,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi
}
}
- if(is_idbase) {
+ if (is_idbase) {
*path_full= BLI_strdup(path);
}
else {
@@ -156,10 +156,10 @@ static int pyrna_struct_keyframe_parse(PointerRNA *ptr, PyObject *args, PyObject
if (!PyArg_ParseTupleAndKeywords(args, kw, parse_str, (char **)kwlist, &path, index, cfra, group_name))
return -1;
- if(pyrna_struct_anim_args_parse(ptr, error_prefix, path, path_full, index) < 0)
+ if (pyrna_struct_anim_args_parse(ptr, error_prefix, path, path_full, index) < 0)
return -1;
- if(*cfra==FLT_MAX)
+ if (*cfra==FLT_MAX)
*cfra= CTX_data_scene(BPy_GetContext())->r.cfra;
return 0; /* success */
@@ -191,7 +191,7 @@ PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *args, PyOb
PYRNA_STRUCT_CHECK_OBJ(self);
- if(pyrna_struct_keyframe_parse(&self->ptr, args, kw,
+ if (pyrna_struct_keyframe_parse(&self->ptr, args, kw,
"s|ifs:bpy_struct.keyframe_insert()", "bpy_struct.keyframe_insert()",
&path_full, &index, &cfra, &group_name) == -1)
{
@@ -206,7 +206,7 @@ PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *args, PyOb
result= insert_keyframe(&reports, (ID *)self->ptr.id.data, NULL, group_name, path_full, index, cfra, 0);
MEM_freeN((void *)path_full);
- if(BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
+ if (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
return NULL;
return PyBool_FromLong(result);
@@ -239,7 +239,7 @@ PyObject *pyrna_struct_keyframe_delete(BPy_StructRNA *self, PyObject *args, PyOb
PYRNA_STRUCT_CHECK_OBJ(self);
- if(pyrna_struct_keyframe_parse(&self->ptr, args, kw,
+ if (pyrna_struct_keyframe_parse(&self->ptr, args, kw,
"s|ifs:bpy_struct.keyframe_delete()",
"bpy_struct.keyframe_insert()",
&path_full, &index, &cfra, &group_name) == -1)
@@ -255,7 +255,7 @@ PyObject *pyrna_struct_keyframe_delete(BPy_StructRNA *self, PyObject *args, PyOb
result= delete_keyframe(&reports, (ID *)self->ptr.id.data, NULL, group_name, path_full, index, cfra, 0);
MEM_freeN((void *)path_full);
- if(BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
+ if (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
return NULL;
return PyBool_FromLong(result);
@@ -285,7 +285,7 @@ PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index))
return NULL;
- if(pyrna_struct_anim_args_parse(&self->ptr, "bpy_struct.driver_add():", path, &path_full, &index) < 0) {
+ if (pyrna_struct_anim_args_parse(&self->ptr, "bpy_struct.driver_add():", path, &path_full, &index) < 0) {
return NULL;
}
else {
@@ -297,10 +297,10 @@ PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
result= ANIM_add_driver(&reports, (ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON);
- if(BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
+ if (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
return NULL;
- if(result) {
+ if (result) {
ID *id= self->ptr.id.data;
AnimData *adt= BKE_animdata_from_id(id);
FCurve *fcu;
@@ -308,10 +308,10 @@ PyObject *pyrna_struct_driver_add(BPy_StructRNA *self, PyObject *args)
PointerRNA tptr;
PyObject *item;
- if(index == -1) { /* all, use a list */
+ if (index == -1) { /* all, use a list */
int i= 0;
ret= PyList_New(0);
- while((fcu= list_find_fcurve(&adt->drivers, path_full, i++))) {
+ 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);
@@ -361,7 +361,7 @@ PyObject *pyrna_struct_driver_remove(BPy_StructRNA *self, PyObject *args)
if (!PyArg_ParseTuple(args, "s|i:driver_remove", &path, &index))
return NULL;
- if(pyrna_struct_anim_args_parse(&self->ptr, "bpy_struct.driver_remove():", path, &path_full, &index) < 0) {
+ if (pyrna_struct_anim_args_parse(&self->ptr, "bpy_struct.driver_remove():", path, &path_full, &index) < 0) {
return NULL;
}
else {
@@ -374,7 +374,7 @@ PyObject *pyrna_struct_driver_remove(BPy_StructRNA *self, PyObject *args)
MEM_freeN((void *)path_full);
- if(BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
+ if (BPy_reports_to_error(&reports, PyExc_RuntimeError, TRUE) == -1)
return NULL;
WM_event_add_notifier(BPy_GetContext(), NC_ANIMATION|ND_FCURVES_ORDER, NULL);
diff --git a/source/blender/python/intern/bpy_rna_array.c b/source/blender/python/intern/bpy_rna_array.c
index cab57724d6d..24ecad85d14 100644
--- a/source/blender/python/intern/bpy_rna_array.c
+++ b/source/blender/python/intern/bpy_rna_array.c
@@ -67,7 +67,7 @@ static int validate_array_type(PyObject *seq, int dim, int totdim, int dimsize[]
if (dim + 1 < totdim) {
/* check that a sequence contains dimsize[dim] items */
const Py_ssize_t seq_size= PySequence_Size(seq);
- if(seq_size == -1) {
+ if (seq_size == -1) {
PyErr_Format(PyExc_ValueError, "%s sequence expected at dimension %d, not '%s'",
error_prefix, (int)dim + 1, Py_TYPE(seq)->tp_name);
return -1;
@@ -77,7 +77,7 @@ static int validate_array_type(PyObject *seq, int dim, int totdim, int dimsize[]
int ok= 1;
item= PySequence_GetItem(seq, i);
- if(item == NULL) {
+ if (item == NULL) {
PyErr_Format(PyExc_TypeError, "%s sequence type '%s' failed to retrieve index %d",
error_prefix, Py_TYPE(seq)->tp_name, i);
ok= 0;
@@ -112,7 +112,7 @@ static int validate_array_type(PyObject *seq, int dim, int totdim, int dimsize[]
else {
/* check that items are of correct type */
const int seq_size= PySequence_Size(seq);
- if(seq_size == -1) {
+ if (seq_size == -1) {
PyErr_Format(PyExc_ValueError, "%s sequence expected at dimension %d, not '%s'",
error_prefix, (int)dim + 1, Py_TYPE(seq)->tp_name);
return -1;
@@ -120,7 +120,7 @@ static int validate_array_type(PyObject *seq, int dim, int totdim, int dimsize[]
for (i= 0; i < seq_size; i++) {
PyObject *item= PySequence_GetItem(seq, i);
- if(item == NULL) {
+ if (item == NULL) {
PyErr_Format(PyExc_TypeError, "%s sequence type '%s' failed to retrieve index %d",
error_prefix, Py_TYPE(seq)->tp_name, i);
return -1;
@@ -146,15 +146,15 @@ static int count_items(PyObject *seq, int dim)
{
int totitem= 0;
- if(dim > 1) {
+ if (dim > 1) {
const Py_ssize_t seq_size= PySequence_Size(seq);
Py_ssize_t i;
for (i= 0; i < seq_size; i++) {
PyObject *item= PySequence_GetItem(seq, i);
- if(item) {
+ if (item) {
const int tot= count_items(item, dim - 1);
Py_DECREF(item);
- if(tot != -1) {
+ if (tot != -1) {
totitem += tot;
}
else {
@@ -184,7 +184,7 @@ static int validate_array_length(PyObject *rvalue, PointerRNA *ptr, PropertyRNA
totdim= RNA_property_array_dimension(ptr, prop, dimsize);
tot= count_items(rvalue, totdim - lvalue_dim);
- if(tot == -1) {
+ if (tot == -1) {
PyErr_Format(PyExc_ValueError, "%s %.200s.%.200s, error validating the sequence length",
error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop));
return -1;
@@ -294,13 +294,13 @@ static char *copy_values(PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, int
/* Note that 'data can be NULL' */
- if(seq_size == -1) {
+ if (seq_size == -1) {
return NULL;
}
for (i= 0; i < seq_size; i++) {
PyObject *item= PySequence_GetItem(seq, i);
- if(item) {
+ if (item) {
if (dim + 1 < totdim) {
data= copy_values(item, ptr, prop, dim + 1, data, item_size, index, convert_item, rna_set_index);
}
@@ -334,7 +334,7 @@ static int py_to_array(PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, char *
if (totitem) {
/* note: this code is confusing */
- if(param_data && RNA_property_flag(prop) & PROP_DYNAMIC) {
+ if (param_data && RNA_property_flag(prop) & PROP_DYNAMIC) {
/* not freeing allocated mem, RNA_parameter_list_free() will do this */
ParameterDynAlloc *param_alloc= (ParameterDynAlloc *)param_data;
param_alloc->array_tot= (int)totitem;
@@ -351,7 +351,7 @@ static int py_to_array(PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, char *
/* will only fail in very rare cases since we already validated the
* python data, the check here is mainly for completeness. */
- if(copy_values(seq, ptr, prop, 0, data, item_size, NULL, convert_item, NULL) != NULL) {
+ if (copy_values(seq, ptr, prop, 0, data, item_size, NULL, convert_item, NULL) != NULL) {
if (param_data==NULL) {
/* NULL can only pass through in case RNA property arraylength is 0 (impossible?) */
rna_set_array(ptr, prop, data);
@@ -396,8 +396,8 @@ static int py_to_array_index(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, i
index += arrayoffset;
- if(lvalue_dim == totdim) { /* single item, assign directly */
- if(!check_item_type(py)) {
+ if (lvalue_dim == totdim) { /* single item, assign directly */
+ if (!check_item_type(py)) {
PyErr_Format(PyExc_TypeError, "%s %.200s.%.200s, expected a %s type, not %s",
error_prefix, RNA_struct_identifier(ptr->type),
RNA_property_identifier(prop), item_type_str,
@@ -628,7 +628,7 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
int type;
int i;
- if(len==0) /* possible with dynamic arrays */
+ if (len==0) /* possible with dynamic arrays */
return 0;
if (RNA_property_array_dimension(ptr, prop, NULL) > 1) {
@@ -642,7 +642,7 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
case PROP_FLOAT:
{
float value_f= PyFloat_AsDouble(value);
- if(value_f==-1 && PyErr_Occurred()) {
+ if (value_f==-1 && PyErr_Occurred()) {
PyErr_Clear();
return 0;
}
@@ -650,7 +650,7 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
float tmp[32];
float *tmp_arr;
- if(len * sizeof(float) > sizeof(tmp)) {
+ if (len * sizeof(float) > sizeof(tmp)) {
tmp_arr= PyMem_MALLOC(len * sizeof(float));
}
else {
@@ -659,11 +659,13 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
RNA_property_float_get_array(ptr, prop, tmp_arr);
- for(i=0; i<len; i++)
- if(tmp_arr[i] == value_f)
+ for (i=0; i<len; i++) {
+ if (tmp_arr[i] == value_f) {
break;
+ }
+ }
- if(tmp_arr != tmp)
+ if (tmp_arr != tmp)
PyMem_FREE(tmp_arr);
return i<len ? 1 : 0;
@@ -674,7 +676,7 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
case PROP_INT:
{
int value_i= PyLong_AsSsize_t(value);
- if(value_i==-1 && PyErr_Occurred()) {
+ if (value_i==-1 && PyErr_Occurred()) {
PyErr_Clear();
return 0;
}
@@ -682,23 +684,25 @@ int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value)
int tmp[32];
int *tmp_arr;
- if(len * sizeof(int) > sizeof(tmp)) {
+ if (len * sizeof(int) > sizeof(tmp)) {
tmp_arr= PyMem_MALLOC(len * sizeof(int));
}
else {
tmp_arr= tmp;
}
- if(type==PROP_BOOLEAN)
+ if (type==PROP_BOOLEAN)
RNA_property_boolean_get_array(ptr, prop, tmp_arr);
else
RNA_property_int_get_array(ptr, prop, tmp_arr);
- for(i=0; i<len; i++)
- if(tmp_arr[i] == value_i)
+ for (i=0; i<len; i++) {
+ if (tmp_arr[i] == value_i) {
break;
+ }
+ }
- if(tmp_arr != tmp)
+ if (tmp_arr != tmp)
PyMem_FREE(tmp_arr);
return i<len ? 1 : 0;
diff --git a/source/blender/python/intern/bpy_traceback.c b/source/blender/python/intern/bpy_traceback.c
index 747a876d6df..9c4eea2f6af 100644
--- a/source/blender/python/intern/bpy_traceback.c
+++ b/source/blender/python/intern/bpy_traceback.c
@@ -114,19 +114,19 @@ void python_script_error_jump(const char *filepath, int *lineno, int *offset)
PyErr_Fetch(&exception, &value, (PyObject **)&tb);
- if(exception && PyErr_GivenExceptionMatches(exception, PyExc_SyntaxError)) {
+ if (exception && PyErr_GivenExceptionMatches(exception, PyExc_SyntaxError)) {
/* no traceback available when SyntaxError.
* python has no api's to this. reference parse_syntax_error() from pythonrun.c */
PyErr_NormalizeException(&exception, &value, (PyObject **)&tb);
PyErr_Restore(exception, value, (PyObject *)tb); /* takes away reference! */
- if(value) { /* should always be true */
+ if (value) { /* should always be true */
PyObject *message;
const char *filename, *text;
- if(parse_syntax_error(value, &message, &filename, lineno, offset, &text)) {
+ if (parse_syntax_error(value, &message, &filename, lineno, offset, &text)) {
/* python adds a '/', prefix, so check for both */
- if( (strcmp(filename, filepath) == 0) ||
+ if ((strcmp(filename, filepath) == 0) ||
((filename[0] == '\\' || filename[0] == '/') && strcmp(filename + 1, filepath) == 0)
) {
/* good */
@@ -145,13 +145,13 @@ void python_script_error_jump(const char *filepath, int *lineno, int *offset)
PyErr_Restore(exception, value, (PyObject *)tb); /* takes away reference! */
PyErr_Print();
- for(tb= (PyTracebackObject *)PySys_GetObject("last_traceback"); tb && (PyObject *)tb != Py_None; tb= tb->tb_next) {
+ for (tb= (PyTracebackObject *)PySys_GetObject("last_traceback"); tb && (PyObject *)tb != Py_None; tb= tb->tb_next) {
PyObject *coerce;
const char *tb_filepath= traceback_filepath(tb, &coerce);
const int match= strcmp(tb_filepath, filepath) != 0;
Py_DECREF(coerce);
- if(match) {
+ if (match) {
*lineno= tb->tb_lineno;
break;
}
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index 1450621d59e..516a9e49a39 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -48,7 +48,7 @@ char *BPy_enum_as_string(EnumPropertyItem *item)
char *cstring;
for (e= item; item->identifier; item++) {
- if(item->identifier[0])
+ if (item->identifier[0])
BLI_dynstr_appendf(dynstr, (e==item)?"'%s'":", '%s'", item->identifier);
}
@@ -63,11 +63,11 @@ short BPy_reports_to_error(ReportList *reports, PyObject *exception, const short
report_str= BKE_reports_string(reports, RPT_ERROR);
- if(clear) {
+ if (clear) {
BKE_reports_clear(reports);
}
- if(report_str) {
+ if (report_str) {
PyErr_SetString(exception, report_str);
MEM_freeN(report_str);
}
@@ -89,7 +89,7 @@ short BPy_errors_to_report(ReportList *reports)
return 1;
/* less hassle if we allow NULL */
- if(reports==NULL) {
+ if (reports==NULL) {
PyErr_Print();
PyErr_Clear();
return 1;
@@ -97,13 +97,13 @@ short BPy_errors_to_report(ReportList *reports)
pystring= PyC_ExceptionBuffer();
- if(pystring==NULL) {
+ if (pystring==NULL) {
BKE_report(reports, RPT_ERROR, "unknown py-exception, couldn't convert");
return 0;
}
PyC_FileAndNum(&filename, &lineno);
- if(filename==NULL)
+ if (filename==NULL)
filename= "<unknown location>";
cstring= _PyUnicode_AsString(pystring);
diff --git a/source/blender/python/intern/gpu.c b/source/blender/python/intern/gpu.c
index 8fa6a7b0629..b4363716d86 100644
--- a/source/blender/python/intern/gpu.c
+++ b/source/blender/python/intern/gpu.c
@@ -77,7 +77,7 @@ PyInit_gpu(void)
PyObject* m;
m = PyModule_Create(&gpumodule);
- if(m == NULL)
+ if (m == NULL)
return NULL;
// device constants
@@ -164,7 +164,7 @@ static PyObject* GPU_export_shader(PyObject* UNUSED(self), PyObject *args, PyObj
static const char *kwlist[] = {"scene", "material", NULL};
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "OO:export_shader", (char**)(kwlist), &pyscene, &pymat))
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO:export_shader", (char**)(kwlist), &pyscene, &pymat))
return NULL;
if (!strcmp(Py_TYPE(pyscene)->tp_name, "Scene") &&
diff --git a/source/blender/python/mathutils/mathutils.c b/source/blender/python/mathutils/mathutils.c
index 9adeae9dc29..34575a8d886 100644
--- a/source/blender/python/mathutils/mathutils.c
+++ b/source/blender/python/mathutils/mathutils.c
@@ -49,14 +49,14 @@ static int mathutils_array_parse_fast(float *array, int array_min, int array_max
int i, size;
/* non list/tuple cases */
- if(!(value_fast=PySequence_Fast(value, error_prefix))) {
+ if (!(value_fast=PySequence_Fast(value, error_prefix))) {
/* PySequence_Fast sets the error */
return -1;
}
size= PySequence_Fast_GET_SIZE(value_fast);
- if(size > array_max || size < array_min) {
+ if (size > array_max || size < array_min) {
if (array_max == array_min) {
PyErr_Format(PyExc_ValueError,
"%.200s: sequence size is %d, expected %d",
@@ -74,7 +74,7 @@ static int mathutils_array_parse_fast(float *array, int array_min, int array_max
i= size;
do {
i--;
- if(((array[i]= PyFloat_AsDouble((item= PySequence_Fast_GET_ITEM(value_fast, i)))) == -1.0f) && PyErr_Occurred()) {
+ if (((array[i]= PyFloat_AsDouble((item= PySequence_Fast_GET_ITEM(value_fast, i)))) == -1.0f) && PyErr_Occurred()) {
PyErr_Format(PyExc_TypeError,
"%.200s: sequence index %d expected a number, "
"found '%.200s' type, ",
@@ -82,7 +82,7 @@ static int mathutils_array_parse_fast(float *array, int array_min, int array_max
Py_DECREF(value_fast);
return -1;
}
- } while(i);
+ } while (i);
Py_XDECREF(value_fast);
return size;
@@ -94,16 +94,16 @@ int mathutils_array_parse(float *array, int array_min, int array_max, PyObject *
#if 1 /* approx 6x speedup for mathutils types */
int size;
- if( (size= VectorObject_Check(value) ? ((VectorObject *)value)->size : 0) ||
+ if ( (size= VectorObject_Check(value) ? ((VectorObject *)value)->size : 0) ||
(size= EulerObject_Check(value) ? 3 : 0) ||
(size= QuaternionObject_Check(value) ? 4 : 0) ||
(size= ColorObject_Check(value) ? 3 : 0))
{
- if(BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
+ if (BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
return -1;
}
- if(size > array_max || size < array_min) {
+ if (size > array_max || size < array_min) {
if (array_max == array_min) {
PyErr_Format(PyExc_ValueError,
"%.200s: sequence size is %d, expected %d",
@@ -129,8 +129,8 @@ int mathutils_array_parse(float *array, int array_min, int array_max, PyObject *
int mathutils_any_to_rotmat(float rmat[3][3], PyObject *value, const char *error_prefix)
{
- if(EulerObject_Check(value)) {
- if(BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
+ if (EulerObject_Check(value)) {
+ if (BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
return -1;
}
else {
@@ -139,7 +139,7 @@ int mathutils_any_to_rotmat(float rmat[3][3], PyObject *value, const char *error
}
}
else if (QuaternionObject_Check(value)) {
- if(BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
+ if (BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
return -1;
}
else {
@@ -150,10 +150,10 @@ int mathutils_any_to_rotmat(float rmat[3][3], PyObject *value, const char *error
}
}
else if (MatrixObject_Check(value)) {
- if(BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
+ if (BaseMath_ReadCallback((BaseMathObject *)value) == -1) {
return -1;
}
- else if(((MatrixObject *)value)->col_size < 3 || ((MatrixObject *)value)->row_size < 3) {
+ else if (((MatrixObject *)value)->col_size < 3 || ((MatrixObject *)value)->row_size < 3) {
PyErr_Format(PyExc_ValueError,
"%.200s: matrix must have minimum 3x3 dimensions",
error_prefix);
@@ -202,7 +202,7 @@ int EXPP_FloatsAreEqual(float af, float bf, int maxDiff)
int EXPP_VectorsAreEqual(float *vecA, float *vecB, int size, int floatSteps)
{
int x;
- for (x=0; x< size; x++){
+ for (x=0; x< size; x++) {
if (EXPP_FloatsAreEqual(vecA[x], vecB[x], floatSteps) == 0)
return 0;
}
@@ -220,8 +220,8 @@ int Mathutils_RegisterCallback(Mathutils_Callback *cb)
int i;
/* find the first free slot */
- for(i= 0; mathutils_callbacks[i]; i++) {
- if(mathutils_callbacks[i]==cb) /* already registered? */
+ for (i= 0; mathutils_callbacks[i]; i++) {
+ if (mathutils_callbacks[i]==cb) /* already registered? */
return i;
}
@@ -233,10 +233,10 @@ int Mathutils_RegisterCallback(Mathutils_Callback *cb)
int _BaseMathObject_ReadCallback(BaseMathObject *self)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->get(self, self->cb_subtype) != -1)
+ if (cb->get(self, self->cb_subtype) != -1)
return 0;
- if(!PyErr_Occurred()) {
+ if (!PyErr_Occurred()) {
PyErr_Format(PyExc_RuntimeError,
"%s read, user has become invalid",
Py_TYPE(self)->tp_name);
@@ -247,10 +247,10 @@ int _BaseMathObject_ReadCallback(BaseMathObject *self)
int _BaseMathObject_WriteCallback(BaseMathObject *self)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->set(self, self->cb_subtype) != -1)
+ if (cb->set(self, self->cb_subtype) != -1)
return 0;
- if(!PyErr_Occurred()) {
+ if (!PyErr_Occurred()) {
PyErr_Format(PyExc_RuntimeError,
"%s write, user has become invalid",
Py_TYPE(self)->tp_name);
@@ -261,10 +261,10 @@ int _BaseMathObject_WriteCallback(BaseMathObject *self)
int _BaseMathObject_ReadIndexCallback(BaseMathObject *self, int index)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->get_index(self, self->cb_subtype, index) != -1)
+ if (cb->get_index(self, self->cb_subtype, index) != -1)
return 0;
- if(!PyErr_Occurred()) {
+ if (!PyErr_Occurred()) {
PyErr_Format(PyExc_RuntimeError,
"%s read index, user has become invalid",
Py_TYPE(self)->tp_name);
@@ -275,10 +275,10 @@ int _BaseMathObject_ReadIndexCallback(BaseMathObject *self, int index)
int _BaseMathObject_WriteIndexCallback(BaseMathObject *self, int index)
{
Mathutils_Callback *cb= mathutils_callbacks[self->cb_type];
- if(cb->set_index(self, self->cb_subtype, index) != -1)
+ if (cb->set_index(self, self->cb_subtype, index) != -1)
return 0;
- if(!PyErr_Occurred()) {
+ if (!PyErr_Occurred()) {
PyErr_Format(PyExc_RuntimeError,
"%s write index, user has become invalid",
Py_TYPE(self)->tp_name);
@@ -316,11 +316,11 @@ int BaseMathObject_clear(BaseMathObject *self)
void BaseMathObject_dealloc(BaseMathObject *self)
{
/* only free non wrapped */
- if(self->wrapped != Py_WRAP) {
+ if (self->wrapped != Py_WRAP) {
PyMem_Free(self->data);
}
- if(self->cb_user) {
+ if (self->cb_user) {
PyObject_GC_UnTrack(self);
BaseMathObject_clear(self);
}
@@ -350,15 +350,15 @@ PyMODINIT_FUNC PyInit_mathutils(void)
PyObject *submodule;
PyObject *item;
- if(PyType_Ready(&vector_Type) < 0)
+ if (PyType_Ready(&vector_Type) < 0)
return NULL;
- if(PyType_Ready(&matrix_Type) < 0)
+ if (PyType_Ready(&matrix_Type) < 0)
return NULL;
- if(PyType_Ready(&euler_Type) < 0)
+ if (PyType_Ready(&euler_Type) < 0)
return NULL;
- if(PyType_Ready(&quaternion_Type) < 0)
+ if (PyType_Ready(&quaternion_Type) < 0)
return NULL;
- if(PyType_Ready(&color_Type) < 0)
+ if (PyType_Ready(&color_Type) < 0)
return NULL;
submodule = PyModule_Create(&M_Mathutils_module_def);
diff --git a/source/blender/python/mathutils/mathutils_Color.c b/source/blender/python/mathutils/mathutils_Color.c
index d0c7ec72cea..f7cc1d4271a 100644
--- a/source/blender/python/mathutils/mathutils_Color.c
+++ b/source/blender/python/mathutils/mathutils_Color.c
@@ -42,7 +42,7 @@ static PyObject *Color_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
float col[3]= {0.0f, 0.0f, 0.0f};
- if(kwds && PyDict_Size(kwds)) {
+ if (kwds && PyDict_Size(kwds)) {
PyErr_SetString(PyExc_TypeError,
"mathutils.Color(): "
"takes no keyword args");
@@ -53,7 +53,7 @@ static PyObject *Color_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
case 0:
break;
case 1:
- if((mathutils_array_parse(col, COLOR_SIZE, COLOR_SIZE, PyTuple_GET_ITEM(args, 0), "mathutils.Color()")) == -1)
+ if ((mathutils_array_parse(col, COLOR_SIZE, COLOR_SIZE, PyTuple_GET_ITEM(args, 0), "mathutils.Color()")) == -1)
return NULL;
break;
default:
@@ -75,13 +75,13 @@ static PyObject *Color_ToTupleExt(ColorObject *self, int ndigits)
ret= PyTuple_New(COLOR_SIZE);
- if(ndigits >= 0) {
- for(i= 0; i < COLOR_SIZE; i++) {
+ if (ndigits >= 0) {
+ for (i= 0; i < COLOR_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(double_round((double)self->col[i], ndigits)));
}
}
else {
- for(i= 0; i < COLOR_SIZE; i++) {
+ for (i= 0; i < COLOR_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(self->col[i]));
}
}
@@ -102,7 +102,7 @@ PyDoc_STRVAR(Color_copy_doc,
);
static PyObject *Color_copy(ColorObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return newColorObject(self->col, Py_NEW, Py_TYPE(self));
@@ -115,7 +115,7 @@ static PyObject *Color_repr(ColorObject * self)
{
PyObject *ret, *tuple;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
tuple= Color_ToTupleExt(self, -1);
@@ -137,7 +137,7 @@ static PyObject* Color_richcmpr(PyObject *a, PyObject *b, int op)
ColorObject *colA= (ColorObject*)a;
ColorObject *colB= (ColorObject*)b;
- if(BaseMath_ReadCallback(colA) == -1 || BaseMath_ReadCallback(colB) == -1)
+ if (BaseMath_ReadCallback(colA) == -1 || BaseMath_ReadCallback(colB) == -1)
return NULL;
ok= EXPP_VectorsAreEqual(colA->col, colB->col, COLOR_SIZE, 1) ? 0 : -1;
@@ -175,16 +175,16 @@ static int Color_len(ColorObject *UNUSED(self))
//sequence accessor (get)
static PyObject *Color_item(ColorObject * self, int i)
{
- if(i<0) i= COLOR_SIZE-i;
+ if (i<0) i= COLOR_SIZE-i;
- if(i < 0 || i >= COLOR_SIZE) {
+ if (i < 0 || i >= COLOR_SIZE) {
PyErr_SetString(PyExc_IndexError,
"color[attribute]: "
"array index out of range");
return NULL;
}
- if(BaseMath_ReadIndexCallback(self, i) == -1)
+ if (BaseMath_ReadIndexCallback(self, i) == -1)
return NULL;
return PyFloat_FromDouble(self->col[i]);
@@ -196,16 +196,16 @@ static int Color_ass_item(ColorObject * self, int i, PyObject *value)
{
float f = PyFloat_AsDouble(value);
- if(f == -1 && PyErr_Occurred()) { // parsed item not a number
+ if (f == -1 && PyErr_Occurred()) { // parsed item not a number
PyErr_SetString(PyExc_TypeError,
"color[attribute] = x: "
"argument not a number");
return -1;
}
- if(i<0) i= COLOR_SIZE-i;
+ if (i<0) i= COLOR_SIZE-i;
- if(i < 0 || i >= COLOR_SIZE){
+ if (i < 0 || i >= COLOR_SIZE) {
PyErr_SetString(PyExc_IndexError, "color[attribute] = x: "
"array assignment index out of range");
return -1;
@@ -213,7 +213,7 @@ static int Color_ass_item(ColorObject * self, int i, PyObject *value)
self->col[i] = f;
- if(BaseMath_WriteIndexCallback(self, i) == -1)
+ if (BaseMath_WriteIndexCallback(self, i) == -1)
return -1;
return 0;
@@ -225,7 +225,7 @@ static PyObject *Color_slice(ColorObject * self, int begin, int end)
PyObject *tuple;
int count;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
CLAMP(begin, 0, COLOR_SIZE);
@@ -234,7 +234,7 @@ static PyObject *Color_slice(ColorObject * self, int begin, int end)
begin= MIN2(begin, end);
tuple= PyTuple_New(end - begin);
- for(count= begin; count < end; count++) {
+ for (count= begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->col[count]));
}
@@ -247,7 +247,7 @@ static int Color_ass_slice(ColorObject *self, int begin, int end, PyObject *seq)
int i, size;
float col[COLOR_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
CLAMP(begin, 0, COLOR_SIZE);
@@ -255,17 +255,17 @@ static int Color_ass_slice(ColorObject *self, int begin, int end, PyObject *seq)
CLAMP(end, 0, COLOR_SIZE);
begin = MIN2(begin, end);
- if((size=mathutils_array_parse(col, 0, COLOR_SIZE, seq, "mathutils.Color[begin:end] = []")) == -1)
+ if ((size=mathutils_array_parse(col, 0, COLOR_SIZE, seq, "mathutils.Color[begin:end] = []")) == -1)
return -1;
- if(size != (end - begin)){
+ if (size != (end - begin)) {
PyErr_SetString(PyExc_ValueError,
"color[begin:end] = []: "
"size mismatch in slice assignment");
return -1;
}
- for(i= 0; i < COLOR_SIZE; i++)
+ for (i= 0; i < COLOR_SIZE; i++)
self->col[begin + i] = col[i];
(void)BaseMath_WriteCallback(self);
@@ -379,7 +379,7 @@ static PyObject *Color_add(PyObject *v1, PyObject *v2)
color1 = (ColorObject*)v1;
color2 = (ColorObject*)v2;
- if(BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
+ if (BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
return NULL;
add_vn_vnvn(col, color1->col, color2->col, COLOR_SIZE);
@@ -401,7 +401,7 @@ static PyObject *Color_iadd(PyObject *v1, PyObject *v2)
color1 = (ColorObject*)v1;
color2 = (ColorObject*)v2;
- if(BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
+ if (BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
return NULL;
add_vn_vn(color1->col, color2->col, COLOR_SIZE);
@@ -426,7 +426,7 @@ static PyObject *Color_sub(PyObject *v1, PyObject *v2)
color1 = (ColorObject*)v1;
color2 = (ColorObject*)v2;
- if(BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
+ if (BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
return NULL;
sub_vn_vnvn(col, color1->col, color2->col, COLOR_SIZE);
@@ -448,7 +448,7 @@ static PyObject *Color_isub(PyObject *v1, PyObject *v2)
color1 = (ColorObject*)v1;
color2 = (ColorObject*)v2;
- if(BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
+ if (BaseMath_ReadCallback(color1) == -1 || BaseMath_ReadCallback(color2) == -1)
return NULL;
sub_vn_vn(color1->col, color2->col, COLOR_SIZE);
@@ -473,12 +473,12 @@ static PyObject *Color_mul(PyObject *v1, PyObject *v2)
if ColorObject_Check(v1) {
color1= (ColorObject *)v1;
- if(BaseMath_ReadCallback(color1) == -1)
+ if (BaseMath_ReadCallback(color1) == -1)
return NULL;
}
if ColorObject_Check(v2) {
color2= (ColorObject *)v2;
- if(BaseMath_ReadCallback(color2) == -1)
+ if (BaseMath_ReadCallback(color2) == -1)
return NULL;
}
@@ -515,7 +515,7 @@ static PyObject *Color_div(PyObject *v1, PyObject *v2)
if ColorObject_Check(v1) {
color1= (ColorObject *)v1;
- if(BaseMath_ReadCallback(color1) == -1)
+ if (BaseMath_ReadCallback(color1) == -1)
return NULL;
}
else {
@@ -526,7 +526,7 @@ static PyObject *Color_div(PyObject *v1, PyObject *v2)
/* make sure v1 is always the vector */
if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* COLOR * FLOAT */
- if(scalar==0.0f) {
+ if (scalar==0.0f) {
PyErr_SetString(PyExc_ZeroDivisionError,
"Color division: divide by zero error");
return NULL;
@@ -547,7 +547,7 @@ static PyObject *Color_imul(PyObject *v1, PyObject *v2)
ColorObject *color = (ColorObject *)v1;
float scalar;
- if(BaseMath_ReadCallback(color) == -1)
+ if (BaseMath_ReadCallback(color) == -1)
return NULL;
/* only support color *= float */
@@ -572,12 +572,12 @@ static PyObject *Color_idiv(PyObject *v1, PyObject *v2)
ColorObject *color = (ColorObject *)v1;
float scalar;
- if(BaseMath_ReadCallback(color) == -1)
+ if (BaseMath_ReadCallback(color) == -1)
return NULL;
/* only support color /= float */
if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* COLOR /= FLOAT */
- if(scalar==0.0f) {
+ if (scalar==0.0f) {
PyErr_SetString(PyExc_ZeroDivisionError,
"Color division: divide by zero error");
return NULL;
@@ -603,7 +603,7 @@ static PyObject *Color_neg(ColorObject *self)
{
float tcol[COLOR_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
negate_vn_vn(tcol, self->col, COLOR_SIZE);
@@ -665,7 +665,7 @@ static PyObject *Color_getChannelHSV(ColorObject * self, void *type)
float hsv[3];
int i= GET_INT_FROM_POINTER(type);
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
rgb_to_hsv(self->col[0], self->col[1], self->col[2], &(hsv[0]), &(hsv[1]), &(hsv[2]));
@@ -679,14 +679,14 @@ static int Color_setChannelHSV(ColorObject * self, PyObject *value, void * type)
int i= GET_INT_FROM_POINTER(type);
float f = PyFloat_AsDouble(value);
- if(f == -1 && PyErr_Occurred()) {
+ if (f == -1 && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError,
"color.h/s/v = value: "
"argument not a number");
return -1;
}
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
rgb_to_hsv(self->col[0], self->col[1], self->col[2], &(hsv[0]), &(hsv[1]), &(hsv[2]));
@@ -694,7 +694,7 @@ static int Color_setChannelHSV(ColorObject * self, PyObject *value, void * type)
hsv[i] = f;
hsv_to_rgb(hsv[0], hsv[1], hsv[2], &(self->col[0]), &(self->col[1]), &(self->col[2]));
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return -1;
return 0;
@@ -706,7 +706,7 @@ static PyObject *Color_getHSV(ColorObject * self, void *UNUSED(closure))
float hsv[3];
PyObject *ret;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
rgb_to_hsv(self->col[0], self->col[1], self->col[2], &(hsv[0]), &(hsv[1]), &(hsv[2]));
@@ -722,7 +722,7 @@ static int Color_setHSV(ColorObject * self, PyObject *value, void *UNUSED(closur
{
float hsv[3];
- if(mathutils_array_parse(hsv, 3, 3, value, "mathutils.Color.hsv = value") == -1)
+ if (mathutils_array_parse(hsv, 3, 3, value, "mathutils.Color.hsv = value") == -1)
return -1;
CLAMP(hsv[0], 0.0f, 1.0f);
@@ -731,7 +731,7 @@ static int Color_setHSV(ColorObject * self, PyObject *value, void *UNUSED(closur
hsv_to_rgb(hsv[0], hsv[1], hsv[2], &(self->col[0]), &(self->col[1]), &(self->col[2]));
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return -1;
return 0;
@@ -834,11 +834,11 @@ PyObject *newColorObject(float *col, int type, PyTypeObject *base_type)
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
- if(type == Py_WRAP){
+ if(type == Py_WRAP) {
self->col = col;
self->wrapped = Py_WRAP;
}
- else if (type == Py_NEW){
+ else if (type == Py_NEW) {
self->col = PyMem_Malloc(COLOR_SIZE * sizeof(float));
if(col)
copy_v3_v3(self->col, col);
diff --git a/source/blender/python/mathutils/mathutils_Euler.c b/source/blender/python/mathutils/mathutils_Euler.c
index c96eafcd6ad..c6be461a227 100644
--- a/source/blender/python/mathutils/mathutils_Euler.c
+++ b/source/blender/python/mathutils/mathutils_Euler.c
@@ -50,21 +50,21 @@ static PyObject *Euler_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
float eul[EULER_SIZE]= {0.0f, 0.0f, 0.0f};
short order= EULER_ORDER_XYZ;
- if(kwds && PyDict_Size(kwds)) {
+ if (kwds && PyDict_Size(kwds)) {
PyErr_SetString(PyExc_TypeError,
"mathutils.Euler(): "
"takes no keyword args");
return NULL;
}
- if(!PyArg_ParseTuple(args, "|Os:mathutils.Euler", &seq, &order_str))
+ if (!PyArg_ParseTuple(args, "|Os:mathutils.Euler", &seq, &order_str))
return NULL;
switch(PyTuple_GET_SIZE(args)) {
case 0:
break;
case 2:
- if((order=euler_order_from_string(order_str, "mathutils.Euler()")) == -1)
+ if ((order=euler_order_from_string(order_str, "mathutils.Euler()")) == -1)
return NULL;
/* intentionally pass through */
case 1:
@@ -75,7 +75,7 @@ static PyObject *Euler_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return newEulerObject(eul, order, Py_NEW, type);
}
-/* internal use, assuem read callback is done */
+/* internal use, assume read callback is done */
static const char *euler_order_str(EulerObject *self)
{
static const char order[][4] = {"XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX"};
@@ -84,7 +84,7 @@ static const char *euler_order_str(EulerObject *self)
short euler_order_from_string(const char *str, const char *error_prefix)
{
- if((str[0] && str[1] && str[2] && str[3]=='\0')) {
+ if ((str[0] && str[1] && str[2] && str[3]=='\0')) {
switch(*((PY_INT32_T *)str)) {
case 'X'|'Y'<<8|'Z'<<16: return EULER_ORDER_XYZ;
case 'X'|'Z'<<8|'Y'<<16: return EULER_ORDER_XZY;
@@ -109,13 +109,13 @@ static PyObject *Euler_ToTupleExt(EulerObject *self, int ndigits)
ret= PyTuple_New(EULER_SIZE);
- if(ndigits >= 0) {
- for(i= 0; i < EULER_SIZE; i++) {
+ if (ndigits >= 0) {
+ for (i= 0; i < EULER_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(double_round((double)self->eul[i], ndigits)));
}
}
else {
- for(i= 0; i < EULER_SIZE; i++) {
+ for (i= 0; i < EULER_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(self->eul[i]));
}
}
@@ -138,7 +138,7 @@ static PyObject *Euler_to_quaternion(EulerObject * self)
{
float quat[4];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
eulO_to_quat(quat, self->eul, self->order);
@@ -159,7 +159,7 @@ static PyObject *Euler_to_matrix(EulerObject * self)
{
float mat[9];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
eulO_to_mat3((float (*)[3])mat, self->eul, self->order);
@@ -176,7 +176,7 @@ static PyObject *Euler_zero(EulerObject * self)
{
zero_v3(self->eul);
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return NULL;
Py_RETURN_NONE;
@@ -198,21 +198,21 @@ static PyObject *Euler_rotate_axis(EulerObject * self, PyObject *args)
float angle = 0.0f;
int axis; /* actually a character */
- if(!PyArg_ParseTuple(args, "Cf:rotate", &axis, &angle)){
+ if (!PyArg_ParseTuple(args, "Cf:rotate", &axis, &angle)) {
PyErr_SetString(PyExc_TypeError,
"Euler.rotate_axis(): "
"expected an axis 'X', 'Y', 'Z' and an angle (float)");
return NULL;
}
- if(!(ELEM3(axis, 'X', 'Y', 'Z'))){
+ if (!(ELEM3(axis, 'X', 'Y', 'Z'))) {
PyErr_SetString(PyExc_ValueError,
"Euler.rotate_axis(): "
"expected axis to be 'X', 'Y' or 'Z'");
return NULL;
}
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
@@ -235,10 +235,10 @@ static PyObject *Euler_rotate(EulerObject * self, PyObject *value)
{
float self_rmat[3][3], other_rmat[3][3], rmat[3][3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_any_to_rotmat(other_rmat, value, "euler.rotate(value)") == -1)
+ if (mathutils_any_to_rotmat(other_rmat, value, "euler.rotate(value)") == -1)
return NULL;
eulO_to_mat3(self_rmat, self->eul, self->order);
@@ -262,10 +262,10 @@ static PyObject *Euler_make_compatible(EulerObject * self, PyObject *value)
{
float teul[EULER_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_array_parse(teul, EULER_SIZE, EULER_SIZE, value, "euler.make_compatible(other), invalid 'other' arg") == -1)
+ if (mathutils_array_parse(teul, EULER_SIZE, EULER_SIZE, value, "euler.make_compatible(other), invalid 'other' arg") == -1)
return NULL;
compatible_eul(self->eul, teul);
@@ -291,7 +291,7 @@ PyDoc_STRVAR(Euler_copy_doc,
);
static PyObject *Euler_copy(EulerObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return newEulerObject(self->eul, self->order, Py_NEW, Py_TYPE(self));
@@ -304,7 +304,7 @@ static PyObject *Euler_repr(EulerObject * self)
{
PyObject *ret, *tuple;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
tuple= Euler_ToTupleExt(self, -1);
@@ -324,7 +324,7 @@ static PyObject* Euler_richcmpr(PyObject *a, PyObject *b, int op)
EulerObject *eulA= (EulerObject*)a;
EulerObject *eulB= (EulerObject*)b;
- if(BaseMath_ReadCallback(eulA) == -1 || BaseMath_ReadCallback(eulB) == -1)
+ if (BaseMath_ReadCallback(eulA) == -1 || BaseMath_ReadCallback(eulB) == -1)
return NULL;
ok= ((eulA->order == eulB->order) && EXPP_VectorsAreEqual(eulA->eul, eulB->eul, EULER_SIZE, 1)) ? 0 : -1;
@@ -362,16 +362,16 @@ static int Euler_len(EulerObject *UNUSED(self))
//sequence accessor (get)
static PyObject *Euler_item(EulerObject * self, int i)
{
- if(i<0) i= EULER_SIZE-i;
+ if (i<0) i= EULER_SIZE-i;
- if(i < 0 || i >= EULER_SIZE) {
+ if (i < 0 || i >= EULER_SIZE) {
PyErr_SetString(PyExc_IndexError,
"euler[attribute]: "
"array index out of range");
return NULL;
}
- if(BaseMath_ReadIndexCallback(self, i) == -1)
+ if (BaseMath_ReadIndexCallback(self, i) == -1)
return NULL;
return PyFloat_FromDouble(self->eul[i]);
@@ -383,16 +383,16 @@ static int Euler_ass_item(EulerObject * self, int i, PyObject *value)
{
float f = PyFloat_AsDouble(value);
- if(f == -1 && PyErr_Occurred()) { // parsed item not a number
+ if (f == -1 && PyErr_Occurred()) { // parsed item not a number
PyErr_SetString(PyExc_TypeError,
"euler[attribute] = x: "
"argument not a number");
return -1;
}
- if(i<0) i= EULER_SIZE-i;
+ if (i<0) i= EULER_SIZE-i;
- if(i < 0 || i >= EULER_SIZE){
+ if (i < 0 || i >= EULER_SIZE) {
PyErr_SetString(PyExc_IndexError,
"euler[attribute] = x: "
"array assignment index out of range");
@@ -401,7 +401,7 @@ static int Euler_ass_item(EulerObject * self, int i, PyObject *value)
self->eul[i] = f;
- if(BaseMath_WriteIndexCallback(self, i) == -1)
+ if (BaseMath_WriteIndexCallback(self, i) == -1)
return -1;
return 0;
@@ -413,7 +413,7 @@ static PyObject *Euler_slice(EulerObject * self, int begin, int end)
PyObject *tuple;
int count;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
CLAMP(begin, 0, EULER_SIZE);
@@ -422,7 +422,7 @@ static PyObject *Euler_slice(EulerObject * self, int begin, int end)
begin= MIN2(begin, end);
tuple= PyTuple_New(end - begin);
- for(count = begin; count < end; count++) {
+ for (count = begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->eul[count]));
}
@@ -435,7 +435,7 @@ static int Euler_ass_slice(EulerObject *self, int begin, int end, PyObject *seq)
int i, size;
float eul[EULER_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
CLAMP(begin, 0, EULER_SIZE);
@@ -443,17 +443,17 @@ static int Euler_ass_slice(EulerObject *self, int begin, int end, PyObject *seq)
CLAMP(end, 0, EULER_SIZE);
begin = MIN2(begin, end);
- if((size=mathutils_array_parse(eul, 0, EULER_SIZE, seq, "mathutils.Euler[begin:end] = []")) == -1)
+ if ((size=mathutils_array_parse(eul, 0, EULER_SIZE, seq, "mathutils.Euler[begin:end] = []")) == -1)
return -1;
- if(size != (end - begin)){
+ if (size != (end - begin)) {
PyErr_SetString(PyExc_ValueError,
"euler[begin:end] = []: "
"size mismatch in slice assignment");
return -1;
}
- for(i= 0; i < EULER_SIZE; i++)
+ for (i= 0; i < EULER_SIZE; i++)
self->eul[begin + i] = eul[i];
(void)BaseMath_WriteCallback(self);
@@ -566,7 +566,7 @@ static int Euler_setAxis(EulerObject *self, PyObject *value, void *type)
/* rotation order */
static PyObject *Euler_getOrder(EulerObject *self, void *UNUSED(closure))
{
- if(BaseMath_ReadCallback(self) == -1) /* can read order too */
+ if (BaseMath_ReadCallback(self) == -1) /* can read order too */
return NULL;
return PyUnicode_FromString(euler_order_str(self));
@@ -577,7 +577,7 @@ static int Euler_setOrder(EulerObject *self, PyObject *value, void *UNUSED(closu
const char *order_str= _PyUnicode_AsString(value);
short order= euler_order_from_string(order_str, "euler.order");
- if(order == -1)
+ if (order == -1)
return -1;
self->order= order;
@@ -678,18 +678,18 @@ PyObject *newEulerObject(float *eul, short order, int type, PyTypeObject *base_t
self= base_type ? (EulerObject *)base_type->tp_alloc(base_type, 0) :
(EulerObject *)PyObject_GC_New(EulerObject, &euler_Type);
- if(self) {
+ if (self) {
/* init callbacks as NULL */
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
- if(type == Py_WRAP) {
+ if (type == Py_WRAP) {
self->eul = eul;
self->wrapped = Py_WRAP;
}
else if (type == Py_NEW) {
self->eul = PyMem_Malloc(EULER_SIZE * sizeof(float));
- if(eul) {
+ if (eul) {
copy_v3_v3(self->eul, eul);
}
else {
@@ -711,7 +711,7 @@ PyObject *newEulerObject(float *eul, short order, int type, PyTypeObject *base_t
PyObject *newEulerObject_cb(PyObject *cb_user, short order, int cb_type, int cb_subtype)
{
EulerObject *self= (EulerObject *)newEulerObject(NULL, order, Py_NEW, NULL);
- if(self) {
+ if (self) {
Py_INCREF(cb_user);
self->cb_user= cb_user;
self->cb_type= (unsigned char)cb_type;
diff --git a/source/blender/python/mathutils/mathutils_Matrix.c b/source/blender/python/mathutils/mathutils_Matrix.c
index a2a15600965..7570b5642ef 100644
--- a/source/blender/python/mathutils/mathutils_Matrix.c
+++ b/source/blender/python/mathutils/mathutils_Matrix.c
@@ -55,10 +55,10 @@ static int mathutils_matrix_vector_get(BaseMathObject *bmo, int subtype)
MatrixObject *self= (MatrixObject *)bmo->cb_user;
int i;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
- for(i=0; i < self->col_size; i++)
+ for (i=0; i < self->col_size; i++)
bmo->data[i]= self->matrix[subtype][i];
return 0;
@@ -69,10 +69,10 @@ static int mathutils_matrix_vector_set(BaseMathObject *bmo, int subtype)
MatrixObject *self= (MatrixObject *)bmo->cb_user;
int i;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
- for(i=0; i < self->col_size; i++)
+ for (i=0; i < self->col_size; i++)
self->matrix[subtype][i]= bmo->data[i];
(void)BaseMath_WriteCallback(self);
@@ -83,7 +83,7 @@ static int mathutils_matrix_vector_get_index(BaseMathObject *bmo, int subtype, i
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
bmo->data[index]= self->matrix[subtype][index];
@@ -94,7 +94,7 @@ static int mathutils_matrix_vector_set_index(BaseMathObject *bmo, int subtype, i
{
MatrixObject *self= (MatrixObject *)bmo->cb_user;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
self->matrix[subtype][index]= bmo->data[index];
@@ -117,7 +117,7 @@ Mathutils_Callback mathutils_matrix_vector_cb = {
//create a new matrix type
static PyObject *Matrix_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
- if(kwds && PyDict_Size(kwds)) {
+ if (kwds && PyDict_Size(kwds)) {
PyErr_SetString(PyExc_TypeError,
"Matrix(): "
"takes no keyword args");
@@ -134,15 +134,15 @@ static PyObject *Matrix_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
/* -1 is an error, size checks will accunt for this */
const unsigned short row_size= PySequence_Size(arg);
- if(row_size >= 2 && row_size <= 4) {
+ if (row_size >= 2 && row_size <= 4) {
PyObject *item= PySequence_GetItem(arg, 0);
const unsigned short col_size= PySequence_Size(item);
Py_XDECREF(item);
- if(col_size >= 2 && col_size <= 4) {
+ if (col_size >= 2 && col_size <= 4) {
/* sane row & col size, new matrix and assign as slice */
PyObject *matrix= newMatrixObject(NULL, row_size, col_size, Py_NEW, type);
- if(Matrix_ass_slice((MatrixObject *)matrix, 0, INT_MAX, arg) == 0) {
+ if (Matrix_ass_slice((MatrixObject *)matrix, 0, INT_MAX, arg) == 0) {
return matrix;
}
else { /* matrix ok, slice assignment not */
@@ -164,7 +164,7 @@ static PyObject *matrix__apply_to_copy(PyNoArgsFunction matrix_func, MatrixObjec
{
PyObject *ret= Matrix_copy(self);
PyObject *ret_dummy= matrix_func(ret);
- if(ret_dummy) {
+ if (ret_dummy) {
Py_DECREF(ret_dummy);
return (PyObject *)ret;
}
@@ -214,16 +214,16 @@ static PyObject *C_Matrix_Rotation(PyObject *cls, PyObject *args)
float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
- if(!PyArg_ParseTuple(args, "di|O", &angle, &matSize, &vec)) {
+ if (!PyArg_ParseTuple(args, "di|O", &angle, &matSize, &vec)) {
PyErr_SetString(PyExc_TypeError,
"Matrix.Rotation(angle, size, axis): "
"expected float int and a string or vector");
return NULL;
}
- if(vec && PyUnicode_Check(vec)) {
+ if (vec && PyUnicode_Check(vec)) {
axis= _PyUnicode_AsString((PyObject *)vec);
- if(axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') {
+ if (axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') {
PyErr_SetString(PyExc_ValueError,
"Matrix.Rotation(): "
"3rd argument axis value must be a 3D vector "
@@ -238,19 +238,19 @@ static PyObject *C_Matrix_Rotation(PyObject *cls, PyObject *args)
angle= angle_wrap_rad(angle);
- if(matSize != 2 && matSize != 3 && matSize != 4) {
+ if (matSize != 2 && matSize != 3 && matSize != 4) {
PyErr_SetString(PyExc_ValueError,
"Matrix.Rotation(): "
"can only return a 2x2 3x3 or 4x4 matrix");
return NULL;
}
- if(matSize == 2 && (vec != NULL)) {
+ if (matSize == 2 && (vec != NULL)) {
PyErr_SetString(PyExc_ValueError,
"Matrix.Rotation(): "
"cannot create a 2x2 rotation matrix around arbitrary axis");
return NULL;
}
- if((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) {
+ if ((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) {
PyErr_SetString(PyExc_ValueError,
"Matrix.Rotation(): "
"axis of rotation for 3d and 4d matrices is required");
@@ -258,7 +258,7 @@ static PyObject *C_Matrix_Rotation(PyObject *cls, PyObject *args)
}
/* check for valid vector/axis above */
- if(vec) {
+ if (vec) {
float tvec[3];
if (mathutils_array_parse(tvec, 3, 3, vec, "Matrix.Rotation(angle, size, axis), invalid 'axis' arg") == -1)
@@ -281,7 +281,7 @@ static PyObject *C_Matrix_Rotation(PyObject *cls, PyObject *args)
single_axis_angle_to_mat3((float (*)[3])mat, axis[0], angle);
}
- if(matSize == 4) {
+ if (matSize == 4) {
matrix_3x3_as_4x4(mat);
}
//pass to matrix creation
@@ -337,23 +337,23 @@ static PyObject *C_Matrix_Scale(PyObject *cls, PyObject *args)
float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
- if(!PyArg_ParseTuple(args, "fi|O:Matrix.Scale", &factor, &matSize, &vec)) {
+ if (!PyArg_ParseTuple(args, "fi|O:Matrix.Scale", &factor, &matSize, &vec)) {
return NULL;
}
- if(matSize != 2 && matSize != 3 && matSize != 4) {
+ if (matSize != 2 && matSize != 3 && matSize != 4) {
PyErr_SetString(PyExc_ValueError,
"Matrix.Scale(): "
"can only return a 2x2 3x3 or 4x4 matrix");
return NULL;
}
- if(vec) {
+ if (vec) {
vec_size= (matSize == 2 ? 2 : 3);
- if(mathutils_array_parse(tvec, vec_size, vec_size, vec, "Matrix.Scale(factor, size, axis), invalid 'axis' arg") == -1) {
+ if (mathutils_array_parse(tvec, vec_size, vec_size, vec, "Matrix.Scale(factor, size, axis), invalid 'axis' arg") == -1) {
return NULL;
}
}
- if(vec == NULL) { //scaling along axis
- if(matSize == 2) {
+ if (vec == NULL) { //scaling along axis
+ if (matSize == 2) {
mat[0] = factor;
mat[3] = factor;
}
@@ -367,14 +367,14 @@ static PyObject *C_Matrix_Scale(PyObject *cls, PyObject *args)
//normalize arbitrary axis
float norm = 0.0f;
int x;
- for(x = 0; x < vec_size; x++) {
+ for (x = 0; x < vec_size; x++) {
norm += tvec[x] * tvec[x];
}
norm = (float) sqrt(norm);
- for(x = 0; x < vec_size; x++) {
+ for (x = 0; x < vec_size; x++) {
tvec[x] /= norm;
}
- if(matSize == 2) {
+ if (matSize == 2) {
mat[0] = 1 + ((factor - 1) *(tvec[0] * tvec[0]));
mat[1] = ((factor - 1) *(tvec[0] * tvec[1]));
mat[2] = ((factor - 1) *(tvec[0] * tvec[1]));
@@ -392,7 +392,7 @@ static PyObject *C_Matrix_Scale(PyObject *cls, PyObject *args)
mat[8] = 1 + ((factor - 1) *(tvec[2] * tvec[2]));
}
}
- if(matSize == 4) {
+ if (matSize == 4) {
matrix_3x3_as_4x4(mat);
}
//pass to matrix creation
@@ -423,21 +423,21 @@ static PyObject *C_Matrix_OrthoProjection(PyObject *cls, PyObject *args)
float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
- if(!PyArg_ParseTuple(args, "Oi:Matrix.OrthoProjection", &axis, &matSize)) {
+ if (!PyArg_ParseTuple(args, "Oi:Matrix.OrthoProjection", &axis, &matSize)) {
return NULL;
}
- if(matSize != 2 && matSize != 3 && matSize != 4) {
+ if (matSize != 2 && matSize != 3 && matSize != 4) {
PyErr_SetString(PyExc_ValueError,
"Matrix.OrthoProjection(): "
"can only return a 2x2 3x3 or 4x4 matrix");
return NULL;
}
- if(PyUnicode_Check(axis)) { //ortho projection onto cardinal plane
+ if (PyUnicode_Check(axis)) { //ortho projection onto cardinal plane
Py_ssize_t plane_len;
const char *plane= _PyUnicode_AsStringAndSize(axis, &plane_len);
- if(matSize == 2) {
- if(plane_len == 1 && plane[0]=='X') {
+ if (matSize == 2) {
+ if (plane_len == 1 && plane[0]=='X') {
mat[0]= 1.0f;
}
else if (plane_len == 1 && plane[0]=='Y') {
@@ -452,7 +452,7 @@ static PyObject *C_Matrix_OrthoProjection(PyObject *cls, PyObject *args)
}
}
else {
- if(plane_len == 2 && plane[0]=='X' && plane[1]=='Y') {
+ if (plane_len == 2 && plane[0]=='X' && plane[1]=='Y') {
mat[0]= 1.0f;
mat[4]= 1.0f;
}
@@ -479,25 +479,25 @@ static PyObject *C_Matrix_OrthoProjection(PyObject *cls, PyObject *args)
int vec_size= (matSize == 2 ? 2 : 3);
float tvec[4];
- if(mathutils_array_parse(tvec, vec_size, vec_size, axis, "Matrix.OrthoProjection(axis, size), invalid 'axis' arg") == -1) {
+ if (mathutils_array_parse(tvec, vec_size, vec_size, axis, "Matrix.OrthoProjection(axis, size), invalid 'axis' arg") == -1) {
return NULL;
}
//normalize arbitrary axis
- for(x = 0; x < vec_size; x++) {
+ for (x = 0; x < vec_size; x++) {
norm += tvec[x] * tvec[x];
}
norm = (float) sqrt(norm);
- for(x = 0; x < vec_size; x++) {
+ for (x = 0; x < vec_size; x++) {
tvec[x] /= norm;
}
- if(matSize == 2) {
+ if (matSize == 2) {
mat[0] = 1 - (tvec[0] * tvec[0]);
mat[1] = -(tvec[0] * tvec[1]);
mat[2] = -(tvec[0] * tvec[1]);
mat[3] = 1 - (tvec[1] * tvec[1]);
}
- else if(matSize > 2) {
+ else if (matSize > 2) {
mat[0] = 1 - (tvec[0] * tvec[0]);
mat[1] = -(tvec[0] * tvec[1]);
mat[2] = -(tvec[0] * tvec[2]);
@@ -509,7 +509,7 @@ static PyObject *C_Matrix_OrthoProjection(PyObject *cls, PyObject *args)
mat[8] = 1 - (tvec[2] * tvec[2]);
}
}
- if(matSize == 4) {
+ if (matSize == 4) {
matrix_3x3_as_4x4(mat);
}
//pass to matrix creation
@@ -540,20 +540,20 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args)
float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
- if(!PyArg_ParseTuple(args, "siO:Matrix.Shear", &plane, &matSize, &fac)) {
+ if (!PyArg_ParseTuple(args, "siO:Matrix.Shear", &plane, &matSize, &fac)) {
return NULL;
}
- if(matSize != 2 && matSize != 3 && matSize != 4) {
+ if (matSize != 2 && matSize != 3 && matSize != 4) {
PyErr_SetString(PyExc_ValueError,
"Matrix.Shear(): "
"can only return a 2x2 3x3 or 4x4 matrix");
return NULL;
}
- if(matSize == 2) {
+ if (matSize == 2) {
float const factor= PyFloat_AsDouble(fac);
- if(factor==-1.0f && PyErr_Occurred()) {
+ if (factor==-1.0f && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError,
"Matrix.Shear(): "
"the factor to be a float");
@@ -564,10 +564,10 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args)
mat[0] = 1.0f;
mat[3] = 1.0f;
- if(strcmp(plane, "X") == 0) {
+ if (strcmp(plane, "X") == 0) {
mat[2] = factor;
}
- else if(strcmp(plane, "Y") == 0) {
+ else if (strcmp(plane, "Y") == 0) {
mat[1] = factor;
}
else {
@@ -581,7 +581,7 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args)
/* 3 or 4, apply as 3x3, resize later if needed */
float factor[2];
- if(mathutils_array_parse(factor, 2, 2, fac, "Matrix.Shear()") < 0) {
+ if (mathutils_array_parse(factor, 2, 2, fac, "Matrix.Shear()") < 0) {
return NULL;
}
@@ -590,15 +590,15 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args)
mat[4] = 1.0f;
mat[8] = 1.0f;
- if(strcmp(plane, "XY") == 0) {
+ if (strcmp(plane, "XY") == 0) {
mat[6] = factor[0];
mat[7] = factor[1];
}
- else if(strcmp(plane, "XZ") == 0) {
+ else if (strcmp(plane, "XZ") == 0) {
mat[3] = factor[0];
mat[5] = factor[1];
}
- else if(strcmp(plane, "YZ") == 0) {
+ else if (strcmp(plane, "YZ") == 0) {
mat[1] = factor[0];
mat[2] = factor[1];
}
@@ -610,7 +610,7 @@ static PyObject *C_Matrix_Shear(PyObject *cls, PyObject *args)
}
}
- if(matSize == 4) {
+ if (matSize == 4) {
matrix_3x3_as_4x4(mat);
}
//pass to matrix creation
@@ -627,11 +627,11 @@ void matrix_as_3x3(float mat[3][3], MatrixObject *self)
/* assumes rowsize == colsize is checked and the read callback has run */
static float matrix_determinant_internal(MatrixObject *self)
{
- if(self->row_size == 2) {
+ if (self->row_size == 2) {
return determinant_m2(self->matrix[0][0], self->matrix[0][1],
self->matrix[1][0], self->matrix[1][1]);
}
- else if(self->row_size == 3) {
+ else if (self->row_size == 3) {
return 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],
@@ -657,17 +657,17 @@ static PyObject *Matrix_to_quaternion(MatrixObject *self)
{
float quat[4];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if((self->col_size < 3) || (self->row_size < 3) || (self->col_size != self->row_size)) {
+ if ((self->col_size < 3) || (self->row_size < 3) || (self->col_size != self->row_size)) {
PyErr_SetString(PyExc_ValueError,
"Matrix.to_quat(): "
"inappropriate matrix size - expects 3x3 or 4x4 matrix");
return NULL;
}
- if(self->col_size == 3){
+ if (self->col_size == 3) {
mat3_to_quat(quat, (float (*)[3])self->contigPtr);
}
else {
@@ -704,21 +704,21 @@ static PyObject *Matrix_to_euler(MatrixObject *self, PyObject *args)
float tmat[3][3];
float (*mat)[3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(!PyArg_ParseTuple(args, "|sO!:to_euler", &order_str, &euler_Type, &eul_compat))
+ if (!PyArg_ParseTuple(args, "|sO!:to_euler", &order_str, &euler_Type, &eul_compat))
return NULL;
- if(eul_compat) {
- if(BaseMath_ReadCallback(eul_compat) == -1)
+ if (eul_compat) {
+ if (BaseMath_ReadCallback(eul_compat) == -1)
return NULL;
copy_v3_v3(eul_compatf, eul_compat->eul);
}
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if(self->col_size ==3 && self->row_size ==3) {
+ if (self->col_size ==3 && self->row_size ==3) {
mat= (float (*)[3])self->contigPtr;
}
else if (self->col_size ==4 && self->row_size ==4) {
@@ -732,19 +732,19 @@ static PyObject *Matrix_to_euler(MatrixObject *self, PyObject *args)
return NULL;
}
- if(order_str) {
+ if (order_str) {
order= euler_order_from_string(order_str, "Matrix.to_euler()");
- if(order == -1)
+ if (order == -1)
return NULL;
}
- if(eul_compat) {
- if(order == 1) mat3_to_compatible_eul(eul, eul_compatf, mat);
+ if (eul_compat) {
+ if (order == 1) mat3_to_compatible_eul(eul, eul_compatf, mat);
else mat3_to_compatible_eulO(eul, eul_compatf, order, mat);
}
else {
- if(order == 1) mat3_to_eul(eul, mat);
+ if (order == 1) mat3_to_eul(eul, mat);
else mat3_to_eulO(eul, order, mat);
}
@@ -760,13 +760,13 @@ static PyObject *Matrix_resize_4x4(MatrixObject *self)
{
int x, first_row_elem, curr_pos, new_pos, blank_columns, blank_rows, index;
- if(self->wrapped==Py_WRAP){
+ if (self->wrapped==Py_WRAP) {
PyErr_SetString(PyExc_TypeError,
"Matrix.resize_4x4(): "
"cannot resize wrapped data - make a copy and resize that");
return NULL;
}
- if(self->cb_user){
+ if (self->cb_user) {
PyErr_SetString(PyExc_TypeError,
"Matrix.resize_4x4(): "
"cannot resize owned data - make a copy and resize that");
@@ -774,21 +774,21 @@ static PyObject *Matrix_resize_4x4(MatrixObject *self)
}
self->contigPtr = PyMem_Realloc(self->contigPtr, (sizeof(float) * 16));
- if(self->contigPtr == NULL) {
+ if (self->contigPtr == NULL) {
PyErr_SetString(PyExc_MemoryError,
"Matrix.resize_4x4(): "
"problem allocating pointer space");
return NULL;
}
/*set row pointers*/
- for(x = 0; x < 4; x++) {
+ for (x = 0; x < 4; x++) {
self->matrix[x] = self->contigPtr + (x * 4);
}
/*move data to new spot in array + clean*/
- for(blank_rows = (4 - self->row_size); blank_rows > 0; blank_rows--){
- for(x = 0; x < 4; x++){
+ for (blank_rows = (4 - self->row_size); blank_rows > 0; blank_rows--) {
+ for (x = 0; x < 4; x++) {
index = (4 * (self->row_size + (blank_rows - 1))) + x;
- if (index == 10 || index == 15){
+ if (index == 10 || index == 15) {
self->contigPtr[index] = 1.0f;
}
else {
@@ -796,14 +796,14 @@ static PyObject *Matrix_resize_4x4(MatrixObject *self)
}
}
}
- for(x = 1; x <= self->row_size; x++){
+ for (x = 1; x <= self->row_size; x++) {
first_row_elem = (self->col_size * (self->row_size - x));
curr_pos = (first_row_elem + (self->col_size -1));
new_pos = (4 * (self->row_size - x)) + (curr_pos - first_row_elem);
- for(blank_columns = (4 - self->col_size); blank_columns > 0; blank_columns--){
+ for (blank_columns = (4 - self->col_size); blank_columns > 0; blank_columns--) {
self->contigPtr[new_pos + blank_columns] = 0.0f;
}
- for( ; curr_pos >= first_row_elem; curr_pos--){
+ for ( ; curr_pos >= first_row_elem; curr_pos--) {
self->contigPtr[new_pos] = self->contigPtr[curr_pos];
new_pos--;
}
@@ -824,13 +824,13 @@ PyDoc_STRVAR(Matrix_to_4x4_doc,
);
static PyObject *Matrix_to_4x4(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(self->col_size==4 && self->row_size==4) {
+ if (self->col_size==4 && self->row_size==4) {
return (PyObject *)newMatrixObject(self->contigPtr, 4, 4, Py_NEW, Py_TYPE(self));
}
- else if(self->col_size==3 && self->row_size==3) {
+ else if (self->col_size==3 && self->row_size==3) {
float mat[4][4];
copy_m4_m3(mat, (float (*)[3])self->contigPtr);
return (PyObject *)newMatrixObject((float *)mat, 4, 4, Py_NEW, Py_TYPE(self));
@@ -855,10 +855,10 @@ static PyObject *Matrix_to_3x3(MatrixObject *self)
{
float mat[3][3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if((self->col_size < 3) || (self->row_size < 3)) {
+ if ((self->col_size < 3) || (self->row_size < 3)) {
PyErr_SetString(PyExc_TypeError,
"Matrix.to_3x3(): inappropriate matrix size");
return NULL;
@@ -879,10 +879,10 @@ PyDoc_STRVAR(Matrix_to_translation_doc,
);
static PyObject *Matrix_to_translation(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if((self->col_size < 3) || self->row_size < 4){
+ if ((self->col_size < 3) || self->row_size < 4) {
PyErr_SetString(PyExc_TypeError,
"Matrix.to_translation(): "
"inappropriate matrix size");
@@ -908,11 +908,11 @@ static PyObject *Matrix_to_scale(MatrixObject *self)
float mat[3][3];
float size[3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if((self->col_size < 3) || (self->row_size < 3)) {
+ if ((self->col_size < 3) || (self->row_size < 3)) {
PyErr_SetString(PyExc_TypeError,
"Matrix.to_scale(): "
"inappropriate matrix size, 3x3 minimum size");
@@ -945,10 +945,10 @@ static PyObject *Matrix_invert(MatrixObject *self)
float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(self->row_size != self->col_size){
+ if (self->row_size != self->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix.invert(ed): "
"only square matrices are supported");
@@ -958,25 +958,25 @@ static PyObject *Matrix_invert(MatrixObject *self)
/*calculate the determinant*/
det = matrix_determinant_internal(self);
- if(det != 0) {
+ if (det != 0) {
/*calculate the classical adjoint*/
- if(self->row_size == 2) {
+ if (self->row_size == 2) {
mat[0] = self->matrix[1][1];
mat[1] = -self->matrix[0][1];
mat[2] = -self->matrix[1][0];
mat[3] = self->matrix[0][0];
- } else if(self->row_size == 3) {
+ } else if (self->row_size == 3) {
adjoint_m3_m3((float (*)[3]) mat,(float (*)[3])self->contigPtr);
- } else if(self->row_size == 4) {
+ } else if (self->row_size == 4) {
adjoint_m4_m4((float (*)[4]) mat, (float (*)[4])self->contigPtr);
}
/*divide by determinate*/
- for(x = 0; x < (self->row_size * self->col_size); x++) {
+ for (x = 0; x < (self->row_size * self->col_size); x++) {
mat[x] /= det;
}
/*set values*/
- for(x = 0; x < self->row_size; x++) {
- for(y = 0; y < self->col_size; y++) {
+ for (x = 0; x < self->row_size; x++) {
+ for (y = 0; y < self->col_size; y++) {
self->matrix[x][y] = mat[z];
z++;
}
@@ -1024,13 +1024,13 @@ static PyObject *Matrix_rotate(MatrixObject *self, PyObject *value)
{
float self_rmat[3][3], other_rmat[3][3], rmat[3][3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_any_to_rotmat(other_rmat, value, "matrix.rotate(value)") == -1)
+ if (mathutils_any_to_rotmat(other_rmat, value, "matrix.rotate(value)") == -1)
return NULL;
- if(self->col_size != 3 || self->row_size != 3) {
+ if (self->col_size != 3 || self->row_size != 3) {
PyErr_SetString(PyExc_TypeError,
"Matrix.rotate(): "
"must have 3x3 dimensions");
@@ -1063,14 +1063,14 @@ static PyObject *Matrix_decompose(MatrixObject *self)
float quat[4];
float size[3];
- if(self->col_size != 4 || self->row_size != 4) {
+ if (self->col_size != 4 || self->row_size != 4) {
PyErr_SetString(PyExc_TypeError,
"Matrix.decompose(): "
"inappropriate matrix size - expects 4x4 matrix");
return NULL;
}
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
mat4_to_loc_rot_size(loc, rot, size, (float (*)[4])self->contigPtr);
@@ -1089,7 +1089,7 @@ static PyObject *Matrix_decompose(MatrixObject *self)
PyDoc_STRVAR(Matrix_lerp_doc,
".. function:: lerp(other, factor)\n"
"\n"
-" Returns the interpolation of two matricies.\n"
+" Returns the interpolation of two matrices.\n"
"\n"
" :arg other: value to interpolate with.\n"
" :type other: :class:`Matrix`\n"
@@ -1103,21 +1103,21 @@ static PyObject *Matrix_lerp(MatrixObject *self, PyObject *args)
MatrixObject *mat2 = NULL;
float fac, mat[MATRIX_MAX_DIM*MATRIX_MAX_DIM];
- if(!PyArg_ParseTuple(args, "O!f:lerp", &matrix_Type, &mat2, &fac))
+ if (!PyArg_ParseTuple(args, "O!f:lerp", &matrix_Type, &mat2, &fac))
return NULL;
- if(self->row_size != mat2->row_size || self->col_size != mat2->col_size) {
+ if (self->row_size != mat2->row_size || self->col_size != mat2->col_size) {
PyErr_SetString(PyExc_ValueError,
"Matrix.lerp(): "
"expects both matrix objects of the same dimensions");
return NULL;
}
- if(BaseMath_ReadCallback(self) == -1 || BaseMath_ReadCallback(mat2) == -1)
+ if (BaseMath_ReadCallback(self) == -1 || BaseMath_ReadCallback(mat2) == -1)
return NULL;
/* TODO, different sized matrix */
- if(self->row_size==4 && self->col_size==4) {
+ if (self->row_size==4 && self->col_size==4) {
blend_m4_m4m4((float (*)[4])mat, (float (*)[4])self->contigPtr, (float (*)[4])mat2->contigPtr, fac);
}
else if (self->row_size==3 && self->col_size==3) {
@@ -1146,10 +1146,10 @@ PyDoc_STRVAR(Matrix_determinant_doc,
);
static PyObject *Matrix_determinant(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(self->row_size != self->col_size){
+ if (self->row_size != self->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix.determinant(): "
"only square matrices are supported");
@@ -1170,21 +1170,21 @@ static PyObject *Matrix_transpose(MatrixObject *self)
{
float t = 0.0f;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(self->row_size != self->col_size){
+ if (self->row_size != self->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix.transpose(d): "
"only square matrices are supported");
return NULL;
}
- if(self->row_size == 2) {
+ if (self->row_size == 2) {
t = self->matrix[1][0];
self->matrix[1][0] = self->matrix[0][1];
self->matrix[0][1] = t;
- } else if(self->row_size == 3) {
+ } else if (self->row_size == 3) {
transpose_m3((float (*)[3])self->contigPtr);
}
else {
@@ -1221,7 +1221,7 @@ static PyObject *Matrix_zero(MatrixObject *self)
{
fill_vn(self->contigPtr, self->row_size * self->col_size, 0.0f);
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return NULL;
Py_RETURN_NONE;
@@ -1239,29 +1239,29 @@ PyDoc_STRVAR(Matrix_identity_doc,
);
static PyObject *Matrix_identity(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(self->row_size != self->col_size){
+ if (self->row_size != self->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix.identity(): "
"only square matrices are supported");
return NULL;
}
- if(self->row_size == 2) {
+ if (self->row_size == 2) {
self->matrix[0][0] = 1.0f;
self->matrix[0][1] = 0.0f;
self->matrix[1][0] = 0.0f;
self->matrix[1][1] = 1.0f;
- } else if(self->row_size == 3) {
+ } else if (self->row_size == 3) {
unit_m3((float (*)[3])self->contigPtr);
}
else {
unit_m4((float (*)[4])self->contigPtr);
}
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return NULL;
Py_RETURN_NONE;
@@ -1278,7 +1278,7 @@ PyDoc_STRVAR(Matrix_copy_doc,
);
static PyObject *Matrix_copy(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return (PyObject*)newMatrixObject((float (*))self->contigPtr, self->row_size, self->col_size, Py_NEW, Py_TYPE(self));
@@ -1291,12 +1291,12 @@ static PyObject *Matrix_repr(MatrixObject *self)
int x, y;
PyObject *rows[MATRIX_MAX_DIM]= {NULL};
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- for(x = 0; x < self->row_size; x++){
+ for (x = 0; x < self->row_size; x++) {
rows[x]= PyTuple_New(self->col_size);
- for(y = 0; y < self->col_size; y++) {
+ for (y = 0; y < self->col_size; y++) {
PyTuple_SET_ITEM(rows[x], y, PyFloat_FromDouble(self->matrix[x][y]));
}
}
@@ -1327,7 +1327,7 @@ static PyObject* Matrix_richcmpr(PyObject *a, PyObject *b, int op)
MatrixObject *matA= (MatrixObject*)a;
MatrixObject *matB= (MatrixObject*)b;
- if(BaseMath_ReadCallback(matA) == -1 || BaseMath_ReadCallback(matB) == -1)
+ if (BaseMath_ReadCallback(matA) == -1 || BaseMath_ReadCallback(matB) == -1)
return NULL;
ok= ( (matA->col_size == matB->col_size) &&
@@ -1369,10 +1369,10 @@ static int Matrix_len(MatrixObject *self)
the wrapped vector gives direct access to the matrix data*/
static PyObject *Matrix_item(MatrixObject *self, int i)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(i < 0 || i >= self->row_size) {
+ if (i < 0 || i >= self->row_size) {
PyErr_SetString(PyExc_IndexError,
"matrix[attribute]: "
"array index out of range");
@@ -1386,16 +1386,16 @@ static PyObject *Matrix_item(MatrixObject *self, int i)
static int Matrix_ass_item(MatrixObject *self, int i, PyObject *value)
{
float vec[4];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
- if(i >= self->row_size || i < 0){
+ if (i >= self->row_size || i < 0) {
PyErr_SetString(PyExc_IndexError,
"matrix[attribute] = x: bad column");
return -1;
}
- if(mathutils_array_parse(vec, self->col_size, self->col_size, value, "matrix[i] = value assignment") < 0) {
+ if (mathutils_array_parse(vec, self->col_size, self->col_size, value, "matrix[i] = value assignment") < 0) {
return -1;
}
@@ -1413,7 +1413,7 @@ static PyObject *Matrix_slice(MatrixObject *self, int begin, int end)
PyObject *tuple;
int count;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
CLAMP(begin, 0, self->row_size);
@@ -1421,7 +1421,7 @@ static PyObject *Matrix_slice(MatrixObject *self, int begin, int end)
begin= MIN2(begin, end);
tuple= PyTuple_New(end - begin);
- for(count= begin; count < end; count++) {
+ for (count= begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin,
newVectorObject_cb((PyObject *)self, self->col_size, mathutils_matrix_vector_cb_index, count));
@@ -1435,7 +1435,7 @@ static int Matrix_ass_slice(MatrixObject *self, int begin, int end, PyObject *va
{
PyObject *value_fast= NULL;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
CLAMP(begin, 0, self->row_size);
@@ -1443,7 +1443,7 @@ static int Matrix_ass_slice(MatrixObject *self, int begin, int end, PyObject *va
begin = MIN2(begin, end);
/* non list/tuple cases */
- if(!(value_fast=PySequence_Fast(value, "matrix[begin:end] = value"))) {
+ if (!(value_fast=PySequence_Fast(value, "matrix[begin:end] = value"))) {
/* PySequence_Fast sets the error */
return -1;
}
@@ -1452,7 +1452,7 @@ static int Matrix_ass_slice(MatrixObject *self, int begin, int end, PyObject *va
int i;
float mat[16];
- if(PySequence_Fast_GET_SIZE(value_fast) != size) {
+ if (PySequence_Fast_GET_SIZE(value_fast) != size) {
Py_DECREF(value_fast);
PyErr_SetString(PyExc_ValueError,
"matrix[begin:end] = []: "
@@ -1465,7 +1465,7 @@ static int Matrix_ass_slice(MatrixObject *self, int begin, int end, PyObject *va
/*parse each sub sequence*/
PyObject *item= PySequence_Fast_GET_ITEM(value_fast, i);
- if(mathutils_array_parse(&mat[i * self->col_size], self->col_size, self->col_size, item, "matrix[begin:end] = value assignment") < 0) {
+ if (mathutils_array_parse(&mat[i * self->col_size], self->col_size, self->col_size, item, "matrix[begin:end] = value assignment") < 0) {
return -1;
}
}
@@ -1489,17 +1489,17 @@ static PyObject *Matrix_add(PyObject *m1, PyObject *m2)
mat1 = (MatrixObject*)m1;
mat2 = (MatrixObject*)m2;
- if(!MatrixObject_Check(m1) || !MatrixObject_Check(m2)) {
+ if (!MatrixObject_Check(m1) || !MatrixObject_Check(m2)) {
PyErr_SetString(PyExc_TypeError,
"Matrix addition: "
"arguments not valid for this operation");
return NULL;
}
- if(BaseMath_ReadCallback(mat1) == -1 || BaseMath_ReadCallback(mat2) == -1)
+ if (BaseMath_ReadCallback(mat1) == -1 || BaseMath_ReadCallback(mat2) == -1)
return NULL;
- if(mat1->row_size != mat2->row_size || mat1->col_size != mat2->col_size){
+ if (mat1->row_size != mat2->row_size || mat1->col_size != mat2->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix addition: "
"matrices must have the same dimensions for this operation");
@@ -1520,17 +1520,17 @@ static PyObject *Matrix_sub(PyObject *m1, PyObject *m2)
mat1 = (MatrixObject*)m1;
mat2 = (MatrixObject*)m2;
- if(!MatrixObject_Check(m1) || !MatrixObject_Check(m2)) {
+ if (!MatrixObject_Check(m1) || !MatrixObject_Check(m2)) {
PyErr_SetString(PyExc_TypeError,
"Matrix addition: "
"arguments not valid for this operation");
return NULL;
}
- if(BaseMath_ReadCallback(mat1) == -1 || BaseMath_ReadCallback(mat2) == -1)
+ if (BaseMath_ReadCallback(mat1) == -1 || BaseMath_ReadCallback(mat2) == -1)
return NULL;
- if(mat1->row_size != mat2->row_size || mat1->col_size != mat2->col_size){
+ if (mat1->row_size != mat2->row_size || mat1->col_size != mat2->col_size) {
PyErr_SetString(PyExc_TypeError,
"Matrix addition: "
"matrices must have the same dimensions for this operation");
@@ -1556,18 +1556,18 @@ static PyObject *Matrix_mul(PyObject *m1, PyObject *m2)
MatrixObject *mat1 = NULL, *mat2 = NULL;
- if(MatrixObject_Check(m1)) {
+ if (MatrixObject_Check(m1)) {
mat1 = (MatrixObject*)m1;
- if(BaseMath_ReadCallback(mat1) == -1)
+ if (BaseMath_ReadCallback(mat1) == -1)
return NULL;
}
- if(MatrixObject_Check(m2)) {
+ if (MatrixObject_Check(m2)) {
mat2 = (MatrixObject*)m2;
- if(BaseMath_ReadCallback(mat2) == -1)
+ if (BaseMath_ReadCallback(mat2) == -1)
return NULL;
}
- if(mat1 && mat2) {
+ if (mat1 && mat2) {
/*MATRIX * MATRIX*/
float mat[16]= {0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f,
@@ -1576,9 +1576,9 @@ static PyObject *Matrix_mul(PyObject *m1, PyObject *m2)
double dot = 0.0f;
int x, y, z;
- for(x = 0; x < mat2->row_size; x++) {
- for(y = 0; y < mat1->col_size; y++) {
- for(z = 0; z < mat1->row_size; z++) {
+ for (x = 0; x < mat2->row_size; x++) {
+ for (y = 0; y < mat1->col_size; y++) {
+ for (z = 0; z < mat1->row_size; z++) {
dot += (mat1->matrix[z][y] * mat2->matrix[x][z]);
}
mat[((x * mat1->col_size) + y)] = (float)dot;
@@ -1588,20 +1588,20 @@ static PyObject *Matrix_mul(PyObject *m1, PyObject *m2)
return newMatrixObject(mat, mat2->row_size, mat1->col_size, Py_NEW, Py_TYPE(mat1));
}
- else if(mat2) {
+ else if (mat2) {
/*FLOAT/INT * MATRIX */
if (((scalar= PyFloat_AsDouble(m1)) == -1.0f && PyErr_Occurred())==0) {
return matrix_mul_float(mat2, scalar);
}
}
- else if(mat1) {
+ else if (mat1) {
/*VEC * MATRIX */
- if(VectorObject_Check(m2)) {
+ if (VectorObject_Check(m2)) {
VectorObject *vec2= (VectorObject *)m2;
float tvec[4];
- if(BaseMath_ReadCallback(vec2) == -1)
+ if (BaseMath_ReadCallback(vec2) == -1)
return NULL;
- if(column_vector_multiplication(tvec, vec2, mat1) == -1) {
+ if (column_vector_multiplication(tvec, vec2, mat1) == -1) {
return NULL;
}
@@ -1624,7 +1624,7 @@ static PyObject *Matrix_mul(PyObject *m1, PyObject *m2)
}
static PyObject* Matrix_inv(MatrixObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return Matrix_invert(self);
@@ -1669,7 +1669,7 @@ static PyObject *Matrix_subscript(MatrixObject* self, PyObject* item)
}
else {
PyErr_SetString(PyExc_IndexError,
- "slice steps not supported with matricies");
+ "slice steps not supported with matrices");
return NULL;
}
}
@@ -1701,7 +1701,7 @@ static int Matrix_ass_subscript(MatrixObject* self, PyObject* item, PyObject* va
return Matrix_ass_slice(self, start, stop, value);
else {
PyErr_SetString(PyExc_IndexError,
- "slice steps not supported with matricies");
+ "slice steps not supported with matrices");
return -1;
}
}
@@ -1771,11 +1771,11 @@ static PyObject *Matrix_median_scale_get(MatrixObject *self, void *UNUSED(closur
{
float mat[3][3];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if((self->col_size < 3) || (self->row_size < 3)) {
+ if ((self->col_size < 3) || (self->row_size < 3)) {
PyErr_SetString(PyExc_AttributeError,
"Matrix.median_scale: "
"inappropriate matrix size, 3x3 minimum");
@@ -1789,13 +1789,13 @@ static PyObject *Matrix_median_scale_get(MatrixObject *self, void *UNUSED(closur
static PyObject *Matrix_is_negative_get(MatrixObject *self, void *UNUSED(closure))
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if(self->col_size == 4 && self->row_size == 4)
+ if (self->col_size == 4 && self->row_size == 4)
return PyBool_FromLong(is_negative_m4((float (*)[4])self->contigPtr));
- else if(self->col_size == 3 && self->row_size == 3)
+ else if (self->col_size == 3 && self->row_size == 3)
return PyBool_FromLong(is_negative_m3((float (*)[3])self->contigPtr));
else {
PyErr_SetString(PyExc_AttributeError,
@@ -1807,13 +1807,13 @@ static PyObject *Matrix_is_negative_get(MatrixObject *self, void *UNUSED(closure
static PyObject *Matrix_is_orthogonal_get(MatrixObject *self, void *UNUSED(closure))
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
/*must be 3-4 cols, 3-4 rows, square matrix*/
- if(self->col_size == 4 && self->row_size == 4)
+ if (self->col_size == 4 && self->row_size == 4)
return PyBool_FromLong(is_orthogonal_m4((float (*)[4])self->contigPtr));
- else if(self->col_size == 3 && self->row_size == 3)
+ else if (self->col_size == 3 && self->row_size == 3)
return PyBool_FromLong(is_orthogonal_m3((float (*)[3])self->contigPtr));
else {
PyErr_SetString(PyExc_AttributeError,
@@ -1953,7 +1953,7 @@ PyObject *newMatrixObject(float *mat, const unsigned short rowSize, const unsign
int x, row, col;
/*matrix objects can be any 2-4row x 2-4col matrix*/
- if(rowSize < 2 || rowSize > 4 || colSize < 2 || colSize > 4) {
+ if (rowSize < 2 || rowSize > 4 || colSize < 2 || colSize > 4) {
PyErr_SetString(PyExc_RuntimeError,
"Matrix(): "
"row and column sizes must be between 2 and 4");
@@ -1963,7 +1963,7 @@ PyObject *newMatrixObject(float *mat, const unsigned short rowSize, const unsign
self= base_type ? (MatrixObject *)base_type->tp_alloc(base_type, 0) :
(MatrixObject *)PyObject_GC_New(MatrixObject, &matrix_Type);
- if(self) {
+ if (self) {
self->row_size = rowSize;
self->col_size = colSize;
@@ -1971,30 +1971,30 @@ PyObject *newMatrixObject(float *mat, const unsigned short rowSize, const unsign
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
- if(type == Py_WRAP){
+ if (type == Py_WRAP) {
self->contigPtr = mat;
/*pointer array points to contigous memory*/
- for(x = 0; x < rowSize; x++) {
+ for (x = 0; x < rowSize; x++) {
self->matrix[x] = self->contigPtr + (x * colSize);
}
self->wrapped = Py_WRAP;
}
- else if (type == Py_NEW){
+ else if (type == Py_NEW) {
self->contigPtr = PyMem_Malloc(rowSize * colSize * sizeof(float));
- if(self->contigPtr == NULL) { /*allocation failure*/
+ if (self->contigPtr == NULL) { /*allocation failure*/
PyErr_SetString(PyExc_MemoryError,
"Matrix(): "
"problem allocating pointer space");
return NULL;
}
/*pointer array points to contigous memory*/
- for(x = 0; x < rowSize; x++) {
+ for (x = 0; x < rowSize; x++) {
self->matrix[x] = self->contigPtr + (x * colSize);
}
/*parse*/
- if(mat) { /*if a float array passed*/
- for(row = 0; row < rowSize; row++) {
- for(col = 0; col < colSize; col++) {
+ if (mat) { /*if a float array passed*/
+ for (row = 0; row < rowSize; row++) {
+ for (col = 0; col < colSize; col++) {
self->matrix[row][col] = mat[(row * colSize) + col];
}
}
@@ -2016,7 +2016,7 @@ PyObject *newMatrixObject(float *mat, const unsigned short rowSize, const unsign
PyObject *newMatrixObject_cb(PyObject *cb_user, int rowSize, int colSize, int cb_type, int cb_subtype)
{
MatrixObject *self= (MatrixObject *)newMatrixObject(NULL, rowSize, colSize, Py_NEW, NULL);
- if(self) {
+ if (self) {
Py_INCREF(cb_user);
self->cb_user= cb_user;
self->cb_type= (unsigned char)cb_type;
diff --git a/source/blender/python/mathutils/mathutils_Quaternion.c b/source/blender/python/mathutils/mathutils_Quaternion.c
index 9d1cfb1948a..eda6aa5c84e 100644
--- a/source/blender/python/mathutils/mathutils_Quaternion.c
+++ b/source/blender/python/mathutils/mathutils_Quaternion.c
@@ -53,13 +53,13 @@ static PyObject *Quaternion_to_tuple_ext(QuaternionObject *self, int ndigits)
ret= PyTuple_New(QUAT_SIZE);
- if(ndigits >= 0) {
- for(i= 0; i < QUAT_SIZE; i++) {
+ if (ndigits >= 0) {
+ for (i= 0; i < QUAT_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(double_round((double)self->quat[i], ndigits)));
}
}
else {
- for(i= 0; i < QUAT_SIZE; i++) {
+ for (i= 0; i < QUAT_SIZE; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(self->quat[i]));
}
}
@@ -90,34 +90,34 @@ static PyObject *Quaternion_to_euler(QuaternionObject *self, PyObject *args)
short order= EULER_ORDER_XYZ;
EulerObject *eul_compat = NULL;
- if(!PyArg_ParseTuple(args, "|sO!:to_euler", &order_str, &euler_Type, &eul_compat))
+ if (!PyArg_ParseTuple(args, "|sO!:to_euler", &order_str, &euler_Type, &eul_compat))
return NULL;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(order_str) {
+ if (order_str) {
order= euler_order_from_string(order_str, "Matrix.to_euler()");
- if(order == -1)
+ if (order == -1)
return NULL;
}
normalize_qt_qt(tquat, self->quat);
- if(eul_compat) {
+ if (eul_compat) {
float mat[3][3];
- if(BaseMath_ReadCallback(eul_compat) == -1)
+ if (BaseMath_ReadCallback(eul_compat) == -1)
return NULL;
quat_to_mat3(mat, tquat);
- if(order == EULER_ORDER_XYZ) mat3_to_compatible_eul(eul, eul_compat->eul, mat);
+ if (order == EULER_ORDER_XYZ) mat3_to_compatible_eul(eul, eul_compat->eul, mat);
else mat3_to_compatible_eulO(eul, eul_compat->eul, order, mat);
}
else {
- if(order == EULER_ORDER_XYZ) quat_to_eul(eul, tquat);
+ if (order == EULER_ORDER_XYZ) quat_to_eul(eul, tquat);
else quat_to_eulO(eul, order, tquat);
}
@@ -136,7 +136,7 @@ static PyObject *Quaternion_to_matrix(QuaternionObject *self)
{
float mat[9]; /* all values are set */
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
quat_to_mat3((float (*)[3])mat, self->quat);
@@ -158,10 +158,10 @@ static PyObject *Quaternion_cross(QuaternionObject *self, PyObject *value)
{
float quat[QUAT_SIZE], tquat[QUAT_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.cross(other), invalid 'other' arg") == -1)
+ if (mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.cross(other), invalid 'other' arg") == -1)
return NULL;
mul_qt_qtqt(quat, self->quat, tquat);
@@ -183,10 +183,10 @@ static PyObject *Quaternion_dot(QuaternionObject *self, PyObject *value)
{
float tquat[QUAT_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.dot(other), invalid 'other' arg") == -1)
+ if (mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.dot(other), invalid 'other' arg") == -1)
return NULL;
return PyFloat_FromDouble(dot_qtqt(self->quat, tquat));
@@ -206,10 +206,10 @@ static PyObject *Quaternion_rotation_difference(QuaternionObject *self, PyObject
{
float tquat[QUAT_SIZE], quat[QUAT_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.difference(other), invalid 'other' arg") == -1)
+ if (mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.difference(other), invalid 'other' arg") == -1)
return NULL;
rotation_between_quats_to_quat(quat, self->quat, tquat);
@@ -234,20 +234,20 @@ static PyObject *Quaternion_slerp(QuaternionObject *self, PyObject *args)
PyObject *value;
float tquat[QUAT_SIZE], quat[QUAT_SIZE], fac;
- if(!PyArg_ParseTuple(args, "Of:slerp", &value, &fac)) {
+ if (!PyArg_ParseTuple(args, "Of:slerp", &value, &fac)) {
PyErr_SetString(PyExc_TypeError,
"quat.slerp(): "
"expected Quaternion types and float");
return NULL;
}
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.slerp(other), invalid 'other' arg") == -1)
+ if (mathutils_array_parse(tquat, QUAT_SIZE, QUAT_SIZE, value, "Quaternion.slerp(other), invalid 'other' arg") == -1)
return NULL;
- if(fac > 1.0f || fac < 0.0f) {
+ if (fac > 1.0f || fac < 0.0f) {
PyErr_SetString(PyExc_ValueError,
"quat.slerp(): "
"interpolation factor must be between 0.0 and 1.0");
@@ -272,10 +272,10 @@ static PyObject *Quaternion_rotate(QuaternionObject *self, PyObject *value)
float self_rmat[3][3], other_rmat[3][3], rmat[3][3];
float tquat[4], length;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
- if(mathutils_any_to_rotmat(other_rmat, value, "Quaternion.rotate(value)") == -1)
+ if (mathutils_any_to_rotmat(other_rmat, value, "Quaternion.rotate(value)") == -1)
return NULL;
length= normalize_qt_qt(tquat, self->quat);
@@ -298,7 +298,7 @@ PyDoc_STRVAR(Quaternion_normalize_doc,
);
static PyObject *Quaternion_normalize(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
normalize_qt(self->quat);
@@ -327,7 +327,7 @@ PyDoc_STRVAR(Quaternion_invert_doc,
);
static PyObject *Quaternion_invert(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
invert_qt(self->quat);
@@ -359,7 +359,7 @@ PyDoc_STRVAR(Quaternion_identity_doc,
);
static PyObject *Quaternion_identity(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
unit_qt(self->quat);
@@ -378,7 +378,7 @@ PyDoc_STRVAR(Quaternion_negate_doc,
);
static PyObject *Quaternion_negate(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
mul_qt_fl(self->quat, -1.0f);
@@ -394,7 +394,7 @@ PyDoc_STRVAR(Quaternion_conjugate_doc,
);
static PyObject *Quaternion_conjugate(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
conjugate_qt(self->quat);
@@ -429,7 +429,7 @@ PyDoc_STRVAR(Quaternion_copy_doc,
);
static PyObject *Quaternion_copy(QuaternionObject *self)
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return newQuaternionObject(self->quat, Py_NEW, Py_TYPE(self));
@@ -441,7 +441,7 @@ static PyObject *Quaternion_repr(QuaternionObject *self)
{
PyObject *ret, *tuple;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
tuple= Quaternion_to_tuple_ext(self, -1);
@@ -461,7 +461,7 @@ static PyObject* Quaternion_richcmpr(PyObject *a, PyObject *b, int op)
QuaternionObject *quatA= (QuaternionObject *)a;
QuaternionObject *quatB= (QuaternionObject *)b;
- if(BaseMath_ReadCallback(quatA) == -1 || BaseMath_ReadCallback(quatB) == -1)
+ if (BaseMath_ReadCallback(quatA) == -1 || BaseMath_ReadCallback(quatB) == -1)
return NULL;
ok= (EXPP_VectorsAreEqual(quatA->quat, quatB->quat, QUAT_SIZE, 1)) ? 0 : -1;
@@ -499,16 +499,16 @@ static int Quaternion_len(QuaternionObject *UNUSED(self))
//sequence accessor (get)
static PyObject *Quaternion_item(QuaternionObject *self, int i)
{
- if(i<0) i= QUAT_SIZE-i;
+ if (i<0) i= QUAT_SIZE-i;
- if(i < 0 || i >= QUAT_SIZE) {
+ if (i < 0 || i >= QUAT_SIZE) {
PyErr_SetString(PyExc_IndexError,
"quaternion[attribute]: "
"array index out of range");
return NULL;
}
- if(BaseMath_ReadIndexCallback(self, i) == -1)
+ if (BaseMath_ReadIndexCallback(self, i) == -1)
return NULL;
return PyFloat_FromDouble(self->quat[i]);
@@ -519,16 +519,16 @@ static PyObject *Quaternion_item(QuaternionObject *self, int i)
static int Quaternion_ass_item(QuaternionObject *self, int i, PyObject *ob)
{
float scalar= (float)PyFloat_AsDouble(ob);
- if(scalar==-1.0f && PyErr_Occurred()) { /* parsed item not a number */
+ if (scalar==-1.0f && PyErr_Occurred()) { /* parsed item not a number */
PyErr_SetString(PyExc_TypeError,
"quaternion[index] = x: "
"index argument not a number");
return -1;
}
- if(i<0) i= QUAT_SIZE-i;
+ if (i<0) i= QUAT_SIZE-i;
- if(i < 0 || i >= QUAT_SIZE){
+ if (i < 0 || i >= QUAT_SIZE) {
PyErr_SetString(PyExc_IndexError,
"quaternion[attribute] = x: "
"array assignment index out of range");
@@ -536,7 +536,7 @@ static int Quaternion_ass_item(QuaternionObject *self, int i, PyObject *ob)
}
self->quat[i] = scalar;
- if(BaseMath_WriteIndexCallback(self, i) == -1)
+ if (BaseMath_WriteIndexCallback(self, i) == -1)
return -1;
return 0;
@@ -548,7 +548,7 @@ static PyObject *Quaternion_slice(QuaternionObject *self, int begin, int end)
PyObject *tuple;
int count;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
CLAMP(begin, 0, QUAT_SIZE);
@@ -557,7 +557,7 @@ static PyObject *Quaternion_slice(QuaternionObject *self, int begin, int end)
begin= MIN2(begin, end);
tuple= PyTuple_New(end - begin);
- for(count= begin; count < end; count++) {
+ for (count= begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->quat[count]));
}
@@ -570,7 +570,7 @@ static int Quaternion_ass_slice(QuaternionObject *self, int begin, int end, PyOb
int i, size;
float quat[QUAT_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
CLAMP(begin, 0, QUAT_SIZE);
@@ -578,10 +578,10 @@ static int Quaternion_ass_slice(QuaternionObject *self, int begin, int end, PyOb
CLAMP(end, 0, QUAT_SIZE);
begin = MIN2(begin, end);
- if((size=mathutils_array_parse(quat, 0, QUAT_SIZE, seq, "mathutils.Quaternion[begin:end] = []")) == -1)
+ if ((size=mathutils_array_parse(quat, 0, QUAT_SIZE, seq, "mathutils.Quaternion[begin:end] = []")) == -1)
return -1;
- if(size != (end - begin)){
+ if (size != (end - begin)) {
PyErr_SetString(PyExc_ValueError,
"quaternion[begin:end] = []: "
"size mismatch in slice assignment");
@@ -589,7 +589,7 @@ static int Quaternion_ass_slice(QuaternionObject *self, int begin, int end, PyOb
}
/* parsed well - now set in vector */
- for(i= 0; i < size; i++)
+ for (i= 0; i < size; i++)
self->quat[begin + i] = quat[i];
(void)BaseMath_WriteCallback(self);
@@ -674,7 +674,7 @@ static PyObject *Quaternion_add(PyObject *q1, PyObject *q2)
float quat[QUAT_SIZE];
QuaternionObject *quat1 = NULL, *quat2 = NULL;
- if(!QuaternionObject_Check(q1) || !QuaternionObject_Check(q2)) {
+ if (!QuaternionObject_Check(q1) || !QuaternionObject_Check(q2)) {
PyErr_SetString(PyExc_TypeError,
"Quaternion addition: "
"arguments not valid for this operation");
@@ -683,7 +683,7 @@ static PyObject *Quaternion_add(PyObject *q1, PyObject *q2)
quat1 = (QuaternionObject*)q1;
quat2 = (QuaternionObject*)q2;
- if(BaseMath_ReadCallback(quat1) == -1 || BaseMath_ReadCallback(quat2) == -1)
+ if (BaseMath_ReadCallback(quat1) == -1 || BaseMath_ReadCallback(quat2) == -1)
return NULL;
add_qt_qtqt(quat, quat1->quat, quat2->quat, 1.0f);
@@ -697,7 +697,7 @@ static PyObject *Quaternion_sub(PyObject *q1, PyObject *q2)
float quat[QUAT_SIZE];
QuaternionObject *quat1 = NULL, *quat2 = NULL;
- if(!QuaternionObject_Check(q1) || !QuaternionObject_Check(q2)) {
+ if (!QuaternionObject_Check(q1) || !QuaternionObject_Check(q2)) {
PyErr_SetString(PyExc_TypeError,
"Quaternion addition: "
"arguments not valid for this operation");
@@ -707,10 +707,10 @@ static PyObject *Quaternion_sub(PyObject *q1, PyObject *q2)
quat1 = (QuaternionObject*)q1;
quat2 = (QuaternionObject*)q2;
- if(BaseMath_ReadCallback(quat1) == -1 || BaseMath_ReadCallback(quat2) == -1)
+ if (BaseMath_ReadCallback(quat1) == -1 || BaseMath_ReadCallback(quat2) == -1)
return NULL;
- for(x = 0; x < QUAT_SIZE; x++) {
+ for (x = 0; x < QUAT_SIZE; x++) {
quat[x] = quat1->quat[x] - quat2->quat[x];
}
@@ -732,24 +732,24 @@ static PyObject *Quaternion_mul(PyObject *q1, PyObject *q2)
float quat[QUAT_SIZE], scalar;
QuaternionObject *quat1 = NULL, *quat2 = NULL;
- if(QuaternionObject_Check(q1)) {
+ if (QuaternionObject_Check(q1)) {
quat1 = (QuaternionObject*)q1;
- if(BaseMath_ReadCallback(quat1) == -1)
+ if (BaseMath_ReadCallback(quat1) == -1)
return NULL;
}
- if(QuaternionObject_Check(q2)) {
+ if (QuaternionObject_Check(q2)) {
quat2 = (QuaternionObject*)q2;
- if(BaseMath_ReadCallback(quat2) == -1)
+ if (BaseMath_ReadCallback(quat2) == -1)
return NULL;
}
- if(quat1 && quat2) { /* QUAT*QUAT (cross product) */
+ if (quat1 && quat2) { /* QUAT*QUAT (cross product) */
mul_qt_qtqt(quat, quat1->quat, quat2->quat);
return newQuaternionObject(quat, Py_NEW, Py_TYPE(q1));
}
/* the only case this can happen (for a supported type is "FLOAT*QUAT") */
- else if(quat2) { /* FLOAT*QUAT */
- if(((scalar= PyFloat_AsDouble(q1)) == -1.0f && PyErr_Occurred())==0) {
+ else if (quat2) { /* FLOAT*QUAT */
+ if (((scalar= PyFloat_AsDouble(q1)) == -1.0f && PyErr_Occurred())==0) {
return quat_mul_float(quat2, scalar);
}
}
@@ -759,14 +759,14 @@ static PyObject *Quaternion_mul(PyObject *q1, PyObject *q2)
VectorObject *vec2 = (VectorObject *)q2;
float tvec[3];
- if(vec2->size != 3) {
+ if (vec2->size != 3) {
PyErr_SetString(PyExc_ValueError,
"Vector multiplication: "
"only 3D vector rotations (with quats) "
"currently supported");
return NULL;
}
- if(BaseMath_ReadCallback(vec2) == -1) {
+ if (BaseMath_ReadCallback(vec2) == -1) {
return NULL;
}
@@ -776,7 +776,7 @@ static PyObject *Quaternion_mul(PyObject *q1, PyObject *q2)
return newVectorObject(tvec, 3, Py_NEW, Py_TYPE(vec2));
}
/* QUAT * FLOAT */
- else if((((scalar= PyFloat_AsDouble(q2)) == -1.0f && PyErr_Occurred())==0)) {
+ else if ((((scalar= PyFloat_AsDouble(q2)) == -1.0f && PyErr_Occurred())==0)) {
return quat_mul_float(quat1, scalar);
}
}
@@ -797,7 +797,7 @@ static PyObject *Quaternion_neg(QuaternionObject *self)
{
float tquat[QUAT_SIZE];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
negate_v4_v4(tquat, self->quat);
@@ -874,7 +874,7 @@ static int Quaternion_setAxis(QuaternionObject *self, PyObject *value, void *typ
static PyObject *Quaternion_getMagnitude(QuaternionObject *self, void *UNUSED(closure))
{
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
return PyFloat_FromDouble(sqrt(dot_qtqt(self->quat, self->quat)));
@@ -884,7 +884,7 @@ static PyObject *Quaternion_getAngle(QuaternionObject *self, void *UNUSED(closur
{
float tquat[4];
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
normalize_qt_qt(tquat, self->quat);
@@ -899,7 +899,7 @@ static int Quaternion_setAngle(QuaternionObject *self, PyObject *value, void *UN
float axis[3], angle_dummy;
double angle;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
len= normalize_qt_qt(tquat, self->quat);
@@ -907,7 +907,7 @@ static int Quaternion_setAngle(QuaternionObject *self, PyObject *value, void *UN
angle= PyFloat_AsDouble(value);
- if(angle==-1.0 && PyErr_Occurred()) { /* parsed item not a number */
+ if (angle==-1.0 && PyErr_Occurred()) { /* parsed item not a number */
PyErr_SetString(PyExc_TypeError,
"Quaternion.angle = value: float expected");
return -1;
@@ -916,7 +916,7 @@ static int Quaternion_setAngle(QuaternionObject *self, PyObject *value, void *UN
angle= angle_wrap_rad(angle);
/* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */
- if( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) &&
+ if ( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) &&
EXPP_FloatsAreEqual(axis[1], 0.0f, 10) &&
EXPP_FloatsAreEqual(axis[2], 0.0f, 10)
) {
@@ -926,7 +926,7 @@ static int Quaternion_setAngle(QuaternionObject *self, PyObject *value, void *UN
axis_angle_to_quat(self->quat, axis, angle);
mul_qt_fl(self->quat, len);
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return -1;
return 0;
@@ -939,14 +939,14 @@ static PyObject *Quaternion_getAxisVec(QuaternionObject *self, void *UNUSED(clos
float axis[3];
float angle;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return NULL;
normalize_qt_qt(tquat, self->quat);
quat_to_axis_angle(axis, &angle, tquat);
/* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */
- if( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) &&
+ if ( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) &&
EXPP_FloatsAreEqual(axis[1], 0.0f, 10) &&
EXPP_FloatsAreEqual(axis[2], 0.0f, 10)
) {
@@ -964,7 +964,7 @@ static int Quaternion_setAxisVec(QuaternionObject *self, PyObject *value, void *
float axis[3];
float angle;
- if(BaseMath_ReadCallback(self) == -1)
+ if (BaseMath_ReadCallback(self) == -1)
return -1;
len= normalize_qt_qt(tquat, self->quat);
@@ -976,7 +976,7 @@ static int Quaternion_setAxisVec(QuaternionObject *self, PyObject *value, void *
axis_angle_to_quat(self->quat, axis, angle);
mul_qt_fl(self->quat, len);
- if(BaseMath_WriteCallback(self) == -1)
+ if (BaseMath_WriteCallback(self) == -1)
return -1;
return 0;
@@ -989,14 +989,14 @@ static PyObject *Quaternion_new(PyTypeObject *type, PyObject *args, PyObject *kw
double angle = 0.0f;
float quat[QUAT_SIZE]= {0.0f, 0.0f, 0.0f, 0.0f};
- if(kwds && PyDict_Size(kwds)) {
+ if (kwds && PyDict_Size(kwds)) {
PyErr_SetString(PyExc_TypeError,
"mathutils.Quaternion(): "
"takes no keyword args");
return NULL;
}
- if(!PyArg_ParseTuple(args, "|Od:mathutils.Quaternion", &seq, &angle))
+ if (!PyArg_ParseTuple(args, "|Od:mathutils.Quaternion", &seq, &angle))
return NULL;
switch(PyTuple_GET_SIZE(args)) {
@@ -1021,7 +1021,7 @@ static PyObject *quat__apply_to_copy(PyNoArgsFunction quat_func, QuaternionObjec
{
PyObject *ret= Quaternion_copy(self);
PyObject *ret_dummy= quat_func(ret);
- if(ret_dummy) {
+ if (ret_dummy) {
Py_DECREF(ret_dummy);
return (PyObject *)ret;
}
@@ -1144,18 +1144,18 @@ PyObject *newQuaternionObject(float *quat, int type, PyTypeObject *base_type)
self= base_type ? (QuaternionObject *)base_type->tp_alloc(base_type, 0) :
(QuaternionObject *)PyObject_GC_New(QuaternionObject, &quaternion_Type);
- if(self) {
+ if (self) {
/* init callbacks as NULL */
self->cb_user= NULL;
self->cb_type= self->cb_subtype= 0;
- if(type == Py_WRAP){
+ if (type == Py_WRAP) {
self->quat = quat;
self->wrapped = Py_WRAP;
}
- else if (type == Py_NEW){
+ else if (type == Py_NEW) {
self->quat = PyMem_Malloc(QUAT_SIZE * sizeof(float));
- if(!quat) { //new empty
+ if (!quat) { //new empty
unit_qt(self->quat);
}
else {
@@ -1173,7 +1173,7 @@ PyObject *newQuaternionObject(float *quat, int type, PyTypeObject *base_type)
PyObject *newQuaternionObject_cb(PyObject *cb_user, int cb_type, int cb_subtype)
{
QuaternionObject *self= (QuaternionObject *)newQuaternionObject(NULL, Py_NEW, NULL);
- if(self) {
+ if (self) {
Py_INCREF(cb_user);
self->cb_user= cb_user;
self->cb_type= (unsigned char)cb_type;
diff --git a/source/blender/python/mathutils/mathutils_Vector.c b/source/blender/python/mathutils/mathutils_Vector.c
index 413df78f09e..df8598cc3f1 100644
--- a/source/blender/python/mathutils/mathutils_Vector.c
+++ b/source/blender/python/mathutils/mathutils_Vector.c
@@ -123,11 +123,11 @@ static PyObject *Vector_normalize(VectorObject *self)
if(BaseMath_ReadCallback(self) == -1)
return NULL;
- for(i = 0; i < self->size; i++) {
+ for (i = 0; i < self->size; i++) {
norm += self->vec[i] * self->vec[i];
}
norm = (float) sqrt(norm);
- for(i = 0; i < self->size; i++) {
+ for (i = 0; i < self->size; i++) {
self->vec[i] /= norm;
}
@@ -251,11 +251,11 @@ static PyObject *Vector_resize_4d(VectorObject *self)
return NULL;
}
- if(self->size == 2){
+ if(self->size == 2) {
self->vec[2] = 0.0f;
self->vec[3] = 1.0f;
}
- else if(self->size == 3){
+ else if(self->size == 3) {
self->vec[3] = 1.0f;
}
self->size = 4;
@@ -332,12 +332,12 @@ static PyObject *Vector_to_tuple_ext(VectorObject *self, int ndigits)
ret= PyTuple_New(self->size);
if(ndigits >= 0) {
- for(i = 0; i < self->size; i++) {
+ for (i = 0; i < self->size; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(double_round((double)self->vec[i], ndigits)));
}
}
else {
- for(i = 0; i < self->size; i++) {
+ for (i = 0; i < self->size; i++) {
PyTuple_SET_ITEM(ret, i, PyFloat_FromDouble(self->vec[i]));
}
}
@@ -581,7 +581,7 @@ static PyObject *Vector_dot(VectorObject *self, PyObject *value)
if(mathutils_array_parse(tvec, self->size, self->size, value, "Vector.dot(other), invalid 'other' arg") == -1)
return NULL;
- for(x = 0; x < self->size; x++) {
+ for (x = 0; x < self->size; x++) {
dot += (double)(self->vec[x] * tvec[x]);
}
@@ -621,11 +621,11 @@ static PyObject *Vector_angle(VectorObject *self, PyObject *args)
if(mathutils_array_parse(tvec, size, size, value, "Vector.angle(other), invalid 'other' arg") == -1)
return NULL;
- for(x = 0; x < size; x++) {
+ for (x = 0; x < size; x++) {
test_v1 += (double)(self->vec[x] * self->vec[x]);
test_v2 += (double)(tvec[x] * tvec[x]);
}
- if (!test_v1 || !test_v2){
+ if (!test_v1 || !test_v2) {
/* avoid exception */
if(fallback) {
Py_INCREF(fallback);
@@ -640,7 +640,7 @@ static PyObject *Vector_angle(VectorObject *self, PyObject *args)
}
//dot product
- for(x = 0; x < self->size; x++) {
+ for (x = 0; x < self->size; x++) {
dot += (double)(self->vec[x] * tvec[x]);
}
dot /= (sqrt(test_v1) * sqrt(test_v2));
@@ -714,13 +714,13 @@ static PyObject *Vector_project(VectorObject *self, PyObject *value)
return NULL;
//get dot products
- for(x = 0; x < size; x++) {
+ for (x = 0; x < size; x++) {
dot += (double)(self->vec[x] * tvec[x]);
dot2 += (double)(tvec[x] * tvec[x]);
}
//projection
dot /= dot2;
- for(x = 0; x < size; x++) {
+ for (x = 0; x < size; x++) {
vec[x] = (float)dot * tvec[x];
}
return newVectorObject(vec, size, Py_NEW, Py_TYPE(self));
@@ -757,7 +757,7 @@ static PyObject *Vector_lerp(VectorObject *self, PyObject *args)
ifac= 1.0f - fac;
- for(x = 0; x < size; x++) {
+ for (x = 0; x < size; x++) {
vec[x] = (ifac * self->vec[x]) + (fac * tvec[x]);
}
return newVectorObject(vec, size, Py_NEW, Py_TYPE(self));
@@ -872,7 +872,7 @@ static int vector_ass_item_internal(VectorObject *self, int i, PyObject *value,
if(i<0) i= self->size-i;
- if(i < 0 || i >= self->size){
+ if(i < 0 || i >= self->size) {
if(is_attr) {
PyErr_Format(PyExc_AttributeError,
"Vector.%c = x: unavailable on %dd vector",
@@ -912,7 +912,7 @@ static PyObject *Vector_slice(VectorObject *self, int begin, int end)
begin= MIN2(begin, end);
tuple= PyTuple_New(end - begin);
- for(count = begin; count < end; count++) {
+ for (count = begin; count < end; count++) {
PyTuple_SET_ITEM(tuple, count - begin, PyFloat_FromDouble(self->vec[count]));
}
@@ -936,7 +936,7 @@ static int Vector_ass_slice(VectorObject *self, int begin, int end, PyObject *se
return -1;
/*parsed well - now set in vector*/
- for(y = 0; y < size; y++){
+ for (y = 0; y < size; y++) {
self->vec[begin + y] = vec[y];
}
@@ -1088,7 +1088,7 @@ int column_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject* vec,
double dot = 0.0f;
int x, y, z = 0;
- if(mat->row_size != vec->size){
+ if(mat->row_size != vec->size) {
if(mat->row_size == 4 && vec->size == 3) {
vec_cpy[3] = 1.0f;
}
@@ -1105,8 +1105,8 @@ int column_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject* vec,
rvec[3] = 1.0f;
- for(x = 0; x < mat->col_size; x++) {
- for(y = 0; y < mat->row_size; y++) {
+ for (x = 0; x < mat->col_size; x++) {
+ for (y = 0; y < mat->row_size; y++) {
dot += (double)(mat->matrix[y][x] * vec_cpy[y]);
}
rvec[z++] = (float)dot;
@@ -1153,7 +1153,7 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
}
/*dot product*/
- for(i = 0; i < vec1->size; i++) {
+ for (i = 0; i < vec1->size; i++) {
dot += (double)(vec1->vec[i] * vec2->vec[i]);
}
return PyFloat_FromDouble(dot);
@@ -1325,7 +1325,7 @@ static PyObject *Vector_div(PyObject *v1, PyObject *v2)
return NULL;
}
- for(i = 0; i < vec1->size; i++) {
+ for (i = 0; i < vec1->size; i++) {
vec[i] = vec1->vec[i] / scalar;
}
return newVectorObject(vec, vec1->size, Py_NEW, Py_TYPE(v1));
@@ -1354,7 +1354,7 @@ static PyObject *Vector_idiv(PyObject *v1, PyObject *v2)
"divide by zero error");
return NULL;
}
- for(i = 0; i < vec1->size; i++) {
+ for (i = 0; i < vec1->size; i++) {
vec1->vec[i] /= scalar;
}
@@ -1383,7 +1383,7 @@ static double vec_magnitude_nosqrt(float *data, int size)
double dot = 0.0f;
int i;
- for(i=0; i<size; i++){
+ for (i=0; i<size; i++) {
dot += (double)data[i];
}
/*return (double)sqrt(dot);*/
@@ -1403,8 +1403,8 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
double epsilon = .000001f;
double lenA, lenB;
- if (!VectorObject_Check(objectA) || !VectorObject_Check(objectB)){
- if (comparison_type == Py_NE){
+ if (!VectorObject_Check(objectA) || !VectorObject_Check(objectB)) {
+ if (comparison_type == Py_NE) {
Py_RETURN_TRUE;
}
else {
@@ -1417,8 +1417,8 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
if(BaseMath_ReadCallback(vecA) == -1 || BaseMath_ReadCallback(vecB) == -1)
return NULL;
- if (vecA->size != vecB->size){
- if (comparison_type == Py_NE){
+ if (vecA->size != vecB->size) {
+ if (comparison_type == Py_NE) {
Py_RETURN_TRUE;
}
else {
@@ -1426,18 +1426,18 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
}
}
- switch (comparison_type){
+ switch (comparison_type) {
case Py_LT:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
- if(lenA < lenB){
+ if(lenA < lenB) {
result = 1;
}
break;
case Py_LE:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
- if(lenA < lenB){
+ if(lenA < lenB) {
result = 1;
}
else {
@@ -1453,14 +1453,14 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
case Py_GT:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
- if(lenA > lenB){
+ if(lenA > lenB) {
result = 1;
}
break;
case Py_GE:
lenA = vec_magnitude_nosqrt(vecA->vec, vecA->size);
lenB = vec_magnitude_nosqrt(vecB->vec, vecB->size);
- if(lenA > lenB){
+ if(lenA > lenB) {
result = 1;
}
else {
@@ -1471,7 +1471,7 @@ static PyObject* Vector_richcmpr(PyObject *objectA, PyObject *objectB, int compa
printf("The result of the comparison could not be evaluated");
break;
}
- if (result == 1){
+ if (result == 1) {
Py_RETURN_TRUE;
}
else {
@@ -1631,7 +1631,7 @@ static PyObject *Vector_getLength(VectorObject *self, void *UNUSED(closure))
if(BaseMath_ReadCallback(self) == -1)
return NULL;
- for(i = 0; i < self->size; i++){
+ for (i = 0; i < self->size; i++) {
dot += (double)(self->vec[i] * self->vec[i]);
}
return PyFloat_FromDouble(sqrt(dot));
@@ -1661,7 +1661,7 @@ static int Vector_setLength(VectorObject *self, PyObject *value)
return 0;
}
- for(i = 0; i < self->size; i++){
+ for (i = 0; i < self->size; i++) {
dot += (double)(self->vec[i] * self->vec[i]);
}
@@ -1675,7 +1675,7 @@ static int Vector_setLength(VectorObject *self, PyObject *value)
dot= dot/param;
- for(i = 0; i < self->size; i++){
+ for (i = 0; i < self->size; i++) {
self->vec[i]= self->vec[i] / (float)dot;
}
@@ -1693,7 +1693,7 @@ static PyObject *Vector_getLengthSquared(VectorObject *self, void *UNUSED(closur
if(BaseMath_ReadCallback(self) == -1)
return NULL;
- for(i = 0; i < self->size; i++){
+ for (i = 0; i < self->size; i++) {
dot += (double)(self->vec[i] * self->vec[i]);
}
return PyFloat_FromDouble(dot);
@@ -1778,7 +1778,7 @@ static int Vector_setSwizzle(VectorObject *self, PyObject *value, void *closure)
if (((scalarVal=PyFloat_AsDouble(value)) == -1 && PyErr_Occurred())==0) {
int i;
- for(i=0; i < MAX_DIMENSIONS; i++)
+ for (i=0; i < MAX_DIMENSIONS; i++)
vec_assign[i]= scalarVal;
size_from= axis_from;
@@ -2219,8 +2219,8 @@ static int row_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject *v
double dot = 0.0f;
int x, y, z= 0, vec_size= vec->size;
- if(mat->col_size != vec_size){
- if(mat->col_size == 4 && vec_size != 3){
+ if(mat->col_size != vec_size) {
+ if(mat->col_size == 4 && vec_size != 3) {
PyErr_SetString(PyExc_ValueError,
"vector * matrix: matrix column size "
"and the vector size must be the same");
@@ -2235,11 +2235,11 @@ static int row_vector_multiplication(float rvec[MAX_DIMENSIONS], VectorObject *v
return -1;
memcpy(vec_cpy, vec->vec, vec_size * sizeof(float));
-printf("asasas\n");
+
rvec[3] = 1.0f;
//muliplication
- for(x = 0; x < mat->row_size; x++) {
- for(y = 0; y < mat->col_size; y++) {
+ for (x = 0; x < mat->row_size; x++) {
+ for (y = 0; y < mat->col_size; y++) {
dot += mat->matrix[x][y] * vec_cpy[y];
}
rvec[z++] = (float)dot;
diff --git a/source/blender/python/mathutils/mathutils_geometry.c b/source/blender/python/mathutils/mathutils_geometry.c
index 0394d732ae3..dafd89757a9 100644
--- a/source/blender/python/mathutils/mathutils_geometry.c
+++ b/source/blender/python/mathutils/mathutils_geometry.c
@@ -86,16 +86,16 @@ static PyObject *M_Geometry_intersect_ray_tri(PyObject *UNUSED(self), PyObject*
float det, inv_det, u, v, t;
int clip= 1;
- if(!PyArg_ParseTuple(args, "O!O!O!O!O!|i:intersect_ray_tri", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &ray, &vector_Type, &ray_off , &clip)) {
+ if (!PyArg_ParseTuple(args, "O!O!O!O!O!|i:intersect_ray_tri", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &ray, &vector_Type, &ray_off , &clip)) {
return NULL;
}
- if(vec1->size != 3 || vec2->size != 3 || vec3->size != 3 || ray->size != 3 || ray_off->size != 3) {
+ if (vec1->size != 3 || vec2->size != 3 || vec3->size != 3 || ray->size != 3 || ray_off->size != 3) {
PyErr_SetString(PyExc_ValueError,
"only 3D vectors for all parameters");
return NULL;
}
- if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(ray) == -1 || BaseMath_ReadCallback(ray_off) == -1)
+ if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(ray) == -1 || BaseMath_ReadCallback(ray_off) == -1)
return NULL;
VECCOPY(v1, vec1->vec);
@@ -174,19 +174,19 @@ static PyObject *M_Geometry_intersect_line_line(PyObject *UNUSED(self), PyObject
VectorObject *vec1, *vec2, *vec3, *vec4;
float v1[3], v2[3], v3[3], v4[3], i1[3], i2[3];
- if(!PyArg_ParseTuple(args, "O!O!O!O!:intersect_line_line", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4)) {
+ if (!PyArg_ParseTuple(args, "O!O!O!O!:intersect_line_line", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4)) {
return NULL;
}
- if(vec1->size != vec2->size || vec1->size != vec3->size || vec3->size != vec2->size) {
+ if (vec1->size != vec2->size || vec1->size != vec3->size || vec3->size != vec2->size) {
PyErr_SetString(PyExc_ValueError,
"vectors must be of the same size");
return NULL;
}
- if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(vec4) == -1)
+ if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(vec4) == -1)
return NULL;
- if(vec1->size == 3 || vec1->size == 2) {
+ if (vec1->size == 3 || vec1->size == 2) {
int result;
if (vec1->size == 3) {
@@ -257,42 +257,42 @@ static PyObject *M_Geometry_normal(PyObject *UNUSED(self), PyObject* args)
VectorObject *vec1, *vec2, *vec3, *vec4;
float n[3];
- if(PyTuple_GET_SIZE(args) == 3) {
- if(!PyArg_ParseTuple(args, "O!O!O!:normal", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3)) {
+ if (PyTuple_GET_SIZE(args) == 3) {
+ if (!PyArg_ParseTuple(args, "O!O!O!:normal", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3)) {
return NULL;
}
- if(vec1->size != vec2->size || vec1->size != vec3->size) {
+ if (vec1->size != vec2->size || vec1->size != vec3->size) {
PyErr_SetString(PyExc_ValueError,
"vectors must be of the same size");
return NULL;
}
- if(vec1->size < 3) {
+ if (vec1->size < 3) {
PyErr_SetString(PyExc_ValueError,
"2D vectors unsupported");
return NULL;
}
- if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1)
+ if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1)
return NULL;
normal_tri_v3(n, vec1->vec, vec2->vec, vec3->vec);
}
else {
- if(!PyArg_ParseTuple(args, "O!O!O!O!:normal", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4)) {
+ if (!PyArg_ParseTuple(args, "O!O!O!O!:normal", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4)) {
return NULL;
}
- if(vec1->size != vec2->size || vec1->size != vec3->size || vec1->size != vec4->size) {
+ if (vec1->size != vec2->size || vec1->size != vec3->size || vec1->size != vec4->size) {
PyErr_SetString(PyExc_ValueError,
"vectors must be of the same size");
return NULL;
}
- if(vec1->size < 3) {
+ if (vec1->size < 3) {
PyErr_SetString(PyExc_ValueError,
"2D vectors unsupported");
return NULL;
}
- if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(vec4) == -1)
+ if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1 || BaseMath_ReadCallback(vec4) == -1)
return NULL;
normal_quad_v3(n, vec1->vec, vec2->vec, vec3->vec, vec4->vec);
@@ -320,17 +320,17 @@ static PyObject *M_Geometry_area_tri(PyObject *UNUSED(self), PyObject* args)
{
VectorObject *vec1, *vec2, *vec3;
- if(!PyArg_ParseTuple(args, "O!O!O!:area_tri", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3)) {
+ if (!PyArg_ParseTuple(args, "O!O!O!:area_tri", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3)) {
return NULL;
}
- if(vec1->size != vec2->size || vec1->size != vec3->size) {
+ if (vec1->size != vec2->size || vec1->size != vec3->size) {
PyErr_SetString(PyExc_ValueError,
"vectors must be of the same size");
return NULL;
}
- if(BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1)
+ if (BaseMath_ReadCallback(vec1) == -1 || BaseMath_ReadCallback(vec2) == -1 || BaseMath_ReadCallback(vec3) == -1)
return NULL;
if (vec1->size == 3) {
@@ -367,7 +367,7 @@ static PyObject *M_Geometry_intersect_line_line_2d(PyObject *UNUSED(self), PyObj
{
VectorObject *line_a1, *line_a2, *line_b1, *line_b2;
float vi[2];
- if(!PyArg_ParseTuple(args, "O!O!O!O!:intersect_line_line_2d",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!:intersect_line_line_2d",
&vector_Type, &line_a1,
&vector_Type, &line_a2,
&vector_Type, &line_b1,
@@ -376,10 +376,10 @@ static PyObject *M_Geometry_intersect_line_line_2d(PyObject *UNUSED(self), PyObj
return NULL;
}
- if(BaseMath_ReadCallback(line_a1) == -1 || BaseMath_ReadCallback(line_a2) == -1 || BaseMath_ReadCallback(line_b1) == -1 || BaseMath_ReadCallback(line_b2) == -1)
+ if (BaseMath_ReadCallback(line_a1) == -1 || BaseMath_ReadCallback(line_a2) == -1 || BaseMath_ReadCallback(line_b1) == -1 || BaseMath_ReadCallback(line_b2) == -1)
return NULL;
- if(isect_seg_seg_v2_point(line_a1->vec, line_a2->vec, line_b1->vec, line_b2->vec, vi) == 1) {
+ if (isect_seg_seg_v2_point(line_a1->vec, line_a2->vec, line_b1->vec, line_b2->vec, vi) == 1) {
return newVectorObject(vi, 2, Py_NEW, NULL);
}
else {
@@ -411,7 +411,7 @@ static PyObject *M_Geometry_intersect_line_plane(PyObject *UNUSED(self), PyObjec
VectorObject *line_a, *line_b, *plane_co, *plane_no;
int no_flip= 0;
float isect[3];
- if(!PyArg_ParseTuple(args, "O!O!O!O!|i:intersect_line_plane",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!|i:intersect_line_plane",
&vector_Type, &line_a,
&vector_Type, &line_b,
&vector_Type, &plane_co,
@@ -421,7 +421,7 @@ static PyObject *M_Geometry_intersect_line_plane(PyObject *UNUSED(self), PyObjec
return NULL;
}
- if( BaseMath_ReadCallback(line_a) == -1 ||
+ if ( BaseMath_ReadCallback(line_a) == -1 ||
BaseMath_ReadCallback(line_b) == -1 ||
BaseMath_ReadCallback(plane_co) == -1 ||
BaseMath_ReadCallback(plane_no) == -1
@@ -429,14 +429,14 @@ static PyObject *M_Geometry_intersect_line_plane(PyObject *UNUSED(self), PyObjec
return NULL;
}
- if(ELEM4(2, line_a->size, line_b->size, plane_co->size, plane_no->size)) {
+ if (ELEM4(2, line_a->size, line_b->size, plane_co->size, plane_no->size)) {
PyErr_SetString(PyExc_ValueError,
"geometry.intersect_line_plane(...): "
" can't use 2D Vectors");
return NULL;
}
- if(isect_line_plane_v3(isect, line_a->vec, line_b->vec, plane_co->vec, plane_no->vec, no_flip) == 1) {
+ if (isect_line_plane_v3(isect, line_a->vec, line_b->vec, plane_co->vec, plane_no->vec, no_flip) == 1) {
return newVectorObject(isect, 3, Py_NEW, NULL);
}
else {
@@ -471,7 +471,7 @@ static PyObject *M_Geometry_intersect_line_sphere(PyObject *UNUSED(self), PyObje
float isect_a[3];
float isect_b[3];
- if(!PyArg_ParseTuple(args, "O!O!O!f|i:intersect_line_sphere",
+ if (!PyArg_ParseTuple(args, "O!O!O!f|i:intersect_line_sphere",
&vector_Type, &line_a,
&vector_Type, &line_b,
&vector_Type, &sphere_co,
@@ -480,14 +480,14 @@ static PyObject *M_Geometry_intersect_line_sphere(PyObject *UNUSED(self), PyObje
return NULL;
}
- if( BaseMath_ReadCallback(line_a) == -1 ||
+ if ( BaseMath_ReadCallback(line_a) == -1 ||
BaseMath_ReadCallback(line_b) == -1 ||
BaseMath_ReadCallback(sphere_co) == -1
) {
return NULL;
}
- if(ELEM3(2, line_a->size, line_b->size, sphere_co->size)) {
+ if (ELEM3(2, line_a->size, line_b->size, sphere_co->size)) {
PyErr_SetString(PyExc_ValueError,
"geometry.intersect_line_sphere(...): "
" can't use 2D Vectors");
@@ -502,22 +502,22 @@ static PyObject *M_Geometry_intersect_line_sphere(PyObject *UNUSED(self), PyObje
switch(isect_line_sphere_v3(line_a->vec, line_b->vec, sphere_co->vec, sphere_radius, isect_a, isect_b)) {
case 1:
- if(!(!clip || (((lambda= line_point_factor_v3(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v3(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
use_b= FALSE;
break;
case 2:
- if(!(!clip || (((lambda= line_point_factor_v3(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
- if(!(!clip || (((lambda= line_point_factor_v3(isect_b, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_b= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v3(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v3(isect_b, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_b= FALSE;
break;
default:
use_a= FALSE;
use_b= FALSE;
}
- if(use_a) { PyTuple_SET_ITEM(ret, 0, newVectorObject(isect_a, 3, Py_NEW, NULL)); }
+ if (use_a) { PyTuple_SET_ITEM(ret, 0, newVectorObject(isect_a, 3, Py_NEW, NULL)); }
else { PyTuple_SET_ITEM(ret, 0, Py_None); Py_INCREF(Py_None); }
- if(use_b) { PyTuple_SET_ITEM(ret, 1, newVectorObject(isect_b, 3, Py_NEW, NULL)); }
+ if (use_b) { PyTuple_SET_ITEM(ret, 1, newVectorObject(isect_b, 3, Py_NEW, NULL)); }
else { PyTuple_SET_ITEM(ret, 1, Py_None); Py_INCREF(Py_None); }
return ret;
@@ -551,7 +551,7 @@ static PyObject *M_Geometry_intersect_line_sphere_2d(PyObject *UNUSED(self), PyO
float isect_a[3];
float isect_b[3];
- if(!PyArg_ParseTuple(args, "O!O!O!f|i:intersect_line_sphere_2d",
+ if (!PyArg_ParseTuple(args, "O!O!O!f|i:intersect_line_sphere_2d",
&vector_Type, &line_a,
&vector_Type, &line_b,
&vector_Type, &sphere_co,
@@ -560,7 +560,7 @@ static PyObject *M_Geometry_intersect_line_sphere_2d(PyObject *UNUSED(self), PyO
return NULL;
}
- if( BaseMath_ReadCallback(line_a) == -1 ||
+ if ( BaseMath_ReadCallback(line_a) == -1 ||
BaseMath_ReadCallback(line_b) == -1 ||
BaseMath_ReadCallback(sphere_co) == -1
) {
@@ -575,22 +575,22 @@ static PyObject *M_Geometry_intersect_line_sphere_2d(PyObject *UNUSED(self), PyO
switch(isect_line_sphere_v2(line_a->vec, line_b->vec, sphere_co->vec, sphere_radius, isect_a, isect_b)) {
case 1:
- if(!(!clip || (((lambda= line_point_factor_v2(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v2(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
use_b= FALSE;
break;
case 2:
- if(!(!clip || (((lambda= line_point_factor_v2(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
- if(!(!clip || (((lambda= line_point_factor_v2(isect_b, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_b= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v2(isect_a, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_a= FALSE;
+ if (!(!clip || (((lambda= line_point_factor_v2(isect_b, line_a->vec, line_b->vec)) >= 0.0f) && (lambda <= 1.0f)))) use_b= FALSE;
break;
default:
use_a= FALSE;
use_b= FALSE;
}
- if(use_a) { PyTuple_SET_ITEM(ret, 0, newVectorObject(isect_a, 2, Py_NEW, NULL)); }
+ if (use_a) { PyTuple_SET_ITEM(ret, 0, newVectorObject(isect_a, 2, Py_NEW, NULL)); }
else { PyTuple_SET_ITEM(ret, 0, Py_None); Py_INCREF(Py_None); }
- if(use_b) { PyTuple_SET_ITEM(ret, 1, newVectorObject(isect_b, 2, Py_NEW, NULL)); }
+ if (use_b) { PyTuple_SET_ITEM(ret, 1, newVectorObject(isect_b, 2, Py_NEW, NULL)); }
else { PyTuple_SET_ITEM(ret, 1, Py_None); Py_INCREF(Py_None); }
return ret;
@@ -617,7 +617,7 @@ static PyObject *M_Geometry_intersect_point_line(PyObject *UNUSED(self), PyObjec
float lambda;
PyObject *ret;
- if(!PyArg_ParseTuple(args, "O!O!O!:intersect_point_line",
+ if (!PyArg_ParseTuple(args, "O!O!O!:intersect_point_line",
&vector_Type, &pt,
&vector_Type, &line_1,
&vector_Type, &line_2)
@@ -625,7 +625,7 @@ static PyObject *M_Geometry_intersect_point_line(PyObject *UNUSED(self), PyObjec
return NULL;
}
- if(BaseMath_ReadCallback(pt) == -1 || BaseMath_ReadCallback(line_1) == -1 || BaseMath_ReadCallback(line_2) == -1)
+ if (BaseMath_ReadCallback(pt) == -1 || BaseMath_ReadCallback(line_1) == -1 || BaseMath_ReadCallback(line_2) == -1)
return NULL;
/* accept 2d verts */
@@ -666,7 +666,7 @@ static PyObject *M_Geometry_intersect_point_tri_2d(PyObject *UNUSED(self), PyObj
{
VectorObject *pt_vec, *tri_p1, *tri_p2, *tri_p3;
- if(!PyArg_ParseTuple(args, "O!O!O!O!:intersect_point_tri_2d",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!:intersect_point_tri_2d",
&vector_Type, &pt_vec,
&vector_Type, &tri_p1,
&vector_Type, &tri_p2,
@@ -675,7 +675,7 @@ static PyObject *M_Geometry_intersect_point_tri_2d(PyObject *UNUSED(self), PyObj
return NULL;
}
- if(BaseMath_ReadCallback(pt_vec) == -1 || BaseMath_ReadCallback(tri_p1) == -1 || BaseMath_ReadCallback(tri_p2) == -1 || BaseMath_ReadCallback(tri_p3) == -1)
+ if (BaseMath_ReadCallback(pt_vec) == -1 || BaseMath_ReadCallback(tri_p1) == -1 || BaseMath_ReadCallback(tri_p2) == -1 || BaseMath_ReadCallback(tri_p3) == -1)
return NULL;
return PyLong_FromLong(isect_point_tri_v2(pt_vec->vec, tri_p1->vec, tri_p2->vec, tri_p3->vec));
@@ -702,7 +702,7 @@ static PyObject *M_Geometry_intersect_point_quad_2d(PyObject *UNUSED(self), PyOb
{
VectorObject *pt_vec, *quad_p1, *quad_p2, *quad_p3, *quad_p4;
- if(!PyArg_ParseTuple(args, "O!O!O!O!O!:intersect_point_quad_2d",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!O!:intersect_point_quad_2d",
&vector_Type, &pt_vec,
&vector_Type, &quad_p1,
&vector_Type, &quad_p2,
@@ -712,7 +712,7 @@ static PyObject *M_Geometry_intersect_point_quad_2d(PyObject *UNUSED(self), PyOb
return NULL;
}
- if(BaseMath_ReadCallback(pt_vec) == -1 || BaseMath_ReadCallback(quad_p1) == -1 || BaseMath_ReadCallback(quad_p2) == -1 || BaseMath_ReadCallback(quad_p3) == -1 || BaseMath_ReadCallback(quad_p4) == -1)
+ if (BaseMath_ReadCallback(pt_vec) == -1 || BaseMath_ReadCallback(quad_p1) == -1 || BaseMath_ReadCallback(quad_p2) == -1 || BaseMath_ReadCallback(quad_p3) == -1 || BaseMath_ReadCallback(quad_p4) == -1)
return NULL;
return PyLong_FromLong(isect_point_quad_v2(pt_vec->vec, quad_p1->vec, quad_p2->vec, quad_p3->vec, quad_p4->vec));
@@ -747,7 +747,7 @@ static PyObject *M_Geometry_barycentric_transform(PyObject *UNUSED(self), PyObje
VectorObject *vec_t1_src, *vec_t2_src, *vec_t3_src;
float vec[3];
- if(!PyArg_ParseTuple(args, "O!O!O!O!O!O!O!:barycentric_transform",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!O!O!O!:barycentric_transform",
&vector_Type, &vec_pt,
&vector_Type, &vec_t1_src,
&vector_Type, &vec_t2_src,
@@ -759,7 +759,7 @@ static PyObject *M_Geometry_barycentric_transform(PyObject *UNUSED(self), PyObje
return NULL;
}
- if( vec_pt->size != 3 ||
+ if ( vec_pt->size != 3 ||
vec_t1_src->size != 3 ||
vec_t2_src->size != 3 ||
vec_t3_src->size != 3 ||
@@ -814,7 +814,7 @@ static PyObject *M_Geometry_interpolate_bezier(PyObject *UNUSED(self), PyObject*
float h2[4]= {0.0, 0.0, 0.0, 0.0};
- if(!PyArg_ParseTuple(args, "O!O!O!O!i:interpolate_bezier",
+ if (!PyArg_ParseTuple(args, "O!O!O!O!i:interpolate_bezier",
&vector_Type, &vec_k1,
&vector_Type, &vec_h1,
&vector_Type, &vec_h2,
@@ -823,30 +823,30 @@ static PyObject *M_Geometry_interpolate_bezier(PyObject *UNUSED(self), PyObject*
return NULL;
}
- if(resolu <= 1) {
+ if (resolu <= 1) {
PyErr_SetString(PyExc_ValueError,
"resolution must be 2 or over");
return NULL;
}
- if(BaseMath_ReadCallback(vec_k1) == -1 || BaseMath_ReadCallback(vec_h1) == -1 || BaseMath_ReadCallback(vec_k2) == -1 || BaseMath_ReadCallback(vec_h2) == -1)
+ if (BaseMath_ReadCallback(vec_k1) == -1 || BaseMath_ReadCallback(vec_h1) == -1 || BaseMath_ReadCallback(vec_k2) == -1 || BaseMath_ReadCallback(vec_h2) == -1)
return NULL;
dims= MAX4(vec_k1->size, vec_h1->size, vec_h2->size, vec_k2->size);
- for(i=0; i < vec_k1->size; i++) k1[i]= vec_k1->vec[i];
- for(i=0; i < vec_h1->size; i++) h1[i]= vec_h1->vec[i];
- for(i=0; i < vec_k2->size; i++) k2[i]= vec_k2->vec[i];
- for(i=0; i < vec_h2->size; i++) h2[i]= vec_h2->vec[i];
+ for (i=0; i < vec_k1->size; i++) k1[i]= vec_k1->vec[i];
+ for (i=0; i < vec_h1->size; i++) h1[i]= vec_h1->vec[i];
+ for (i=0; i < vec_k2->size; i++) k2[i]= vec_k2->vec[i];
+ for (i=0; i < vec_h2->size; i++) h2[i]= vec_h2->vec[i];
coord_array= MEM_callocN(dims * (resolu) * sizeof(float), "interpolate_bezier");
- for(i=0; i<dims; i++) {
+ for (i=0; i<dims; i++) {
forward_diff_bezier(k1[i], h1[i], h2[i], k2[i], coord_array+i, resolu-1, sizeof(float)*dims);
}
list= PyList_New(resolu);
fp= coord_array;
- for(i=0; i<resolu; i++, fp= fp+dims) {
+ for (i=0; i<resolu; i++, fp= fp+dims) {
PyList_SET_ITEM(list, i, newVectorObject(fp, dims, Py_NEW, NULL));
}
MEM_freeN(coord_array);
@@ -875,7 +875,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
float *fp; /*pointer to the array of malloced dl->verts to set the points from the vectors */
int index, *dl_face, totpoints=0;
- if(!PySequence_Check(polyLineSeq)) {
+ if (!PySequence_Check(polyLineSeq)) {
PyErr_SetString(PyExc_TypeError,
"expected a sequence of poly lines");
return NULL;
@@ -883,7 +883,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
len_polylines= PySequence_Size(polyLineSeq);
- for(i= 0; i < len_polylines; ++i) {
+ for (i= 0; i < len_polylines; ++i) {
polyLine= PySequence_GetItem(polyLineSeq, i);
if (!PySequence_Check(polyLine)) {
freedisplist(&dispbase);
@@ -914,16 +914,16 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
dl->verts= fp= MEM_callocN(sizeof(float)*3*len_polypoints, "dl verts");
dl->index= MEM_callocN(sizeof(int)*3*len_polypoints, "dl index");
- for(index= 0; index<len_polypoints; ++index, fp+=3) {
+ for (index= 0; index<len_polypoints; ++index, fp+=3) {
polyVec= PySequence_GetItem(polyLine, index);
- if(VectorObject_Check(polyVec)) {
+ if (VectorObject_Check(polyVec)) {
- if(BaseMath_ReadCallback((VectorObject *)polyVec) == -1)
+ if (BaseMath_ReadCallback((VectorObject *)polyVec) == -1)
ls_error= 1;
fp[0]= ((VectorObject *)polyVec)->vec[0];
fp[1]= ((VectorObject *)polyVec)->vec[1];
- if(((VectorObject *)polyVec)->size > 2)
+ if (((VectorObject *)polyVec)->size > 2)
fp[2]= ((VectorObject *)polyVec)->vec[2];
else
fp[2]= 0.0f; /* if its a 2d vector then set the z to be zero */
@@ -939,7 +939,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
Py_DECREF(polyLine);
}
- if(ls_error) {
+ if (ls_error) {
freedisplist(&dispbase); /* possible some dl was allocated */
PyErr_SetString(PyExc_TypeError,
"A point in one of the polylines "
@@ -955,7 +955,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
dl= dispbase.first;
tri_list= PyList_New(dl->parts);
- if(!tri_list) {
+ if (!tri_list) {
freedisplist(&dispbase);
PyErr_SetString(PyExc_RuntimeError,
"failed to make a new list");
@@ -964,7 +964,7 @@ static PyObject *M_Geometry_tesselate_polygon(PyObject *UNUSED(self), PyObject *
index= 0;
dl_face= dl->index;
- while(index < dl->parts) {
+ while (index < dl->parts) {
PyList_SET_ITEM(tri_list, index, Py_BuildValue("iii", dl_face[0], dl_face[1], dl_face[2]));
dl_face+= 3;
index++;
@@ -989,7 +989,7 @@ static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
/* Error checking must already be done */
- if(!PyList_Check(value)) {
+ if (!PyList_Check(value)) {
PyErr_SetString(PyExc_TypeError,
"can only back a list of [x, y, w, h]");
return -1;
@@ -1000,9 +1000,9 @@ static int boxPack_FromPyObject(PyObject *value, boxPack **boxarray)
(*boxarray)= MEM_mallocN(len*sizeof(boxPack), "boxPack box");
- for(i= 0; i < len; i++) {
+ for (i= 0; i < len; i++) {
list_item= PyList_GET_ITEM(value, i);
- if(!PyList_Check(list_item) || PyList_GET_SIZE(list_item) < 4) {
+ if (!PyList_Check(list_item) || PyList_GET_SIZE(list_item) < 4) {
MEM_freeN(*boxarray);
PyErr_SetString(PyExc_TypeError,
"can only pack a list of [x, y, w, h]");
@@ -1040,7 +1040,7 @@ static void boxPack_ToPyObject(PyObject *value, boxPack **boxarray)
len= PyList_GET_SIZE(value);
- for(i= 0; i < len; i++) {
+ for (i= 0; i < len; i++) {
box= (*boxarray)+i;
list_item= PyList_GET_ITEM(value, box->index);
PyList_SET_ITEM(list_item, 0, PyFloat_FromDouble(box->x));
@@ -1066,7 +1066,7 @@ static PyObject *M_Geometry_box_pack_2d(PyObject *UNUSED(self), PyObject *boxlis
PyObject *ret;
- if(!PyList_Check(boxlist)) {
+ if (!PyList_Check(boxlist)) {
PyErr_SetString(PyExc_TypeError,
"expected a list of boxes [[x, y, w, h], ... ]");
return NULL;
@@ -1075,7 +1075,7 @@ static PyObject *M_Geometry_box_pack_2d(PyObject *UNUSED(self), PyObject *boxlis
len= PyList_GET_SIZE(boxlist);
if (len) {
boxPack *boxarray= NULL;
- if(boxPack_FromPyObject(boxlist, &boxarray) == -1) {
+ if (boxPack_FromPyObject(boxlist, &boxarray) == -1) {
return NULL; /* exception set */
}
diff --git a/source/blender/render/intern/include/raycounter.h b/source/blender/render/intern/include/raycounter.h
index 4d4952cb6c3..7acef6d3c67 100644
--- a/source/blender/render/intern/include/raycounter.h
+++ b/source/blender/render/intern/include/raycounter.h
@@ -35,7 +35,7 @@
#ifndef RE_RAYCOUNTER_H
#define RE_RAYCOUNTER_H
-//#define RE_RAYCOUNTER /* enable counters per ray, usefull for measuring raytrace structures performance */
+//#define RE_RAYCOUNTER /* enable counters per ray, useful for measuring raytrace structures performance */
#ifdef __cplusplus
extern "C" {
diff --git a/source/blender/render/intern/raytrace/bvh.h b/source/blender/render/intern/raytrace/bvh.h
index 3ba5bbc624e..c7a1b002d61 100644
--- a/source/blender/render/intern/raytrace/bvh.h
+++ b/source/blender/render/intern/raytrace/bvh.h
@@ -167,7 +167,7 @@ static inline void bvh_node_merge_bb(Node *node, float *min, float *max)
/*
- * recursivly transverse a BVH looking for a rayhit using a local stack
+ * recursively transverse a BVH looking for a rayhit using a local stack
*/
template<class Node> static inline void bvh_node_push_childs(Node *node, Isect *isec, Node **stack, int &stack_pos);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index e9107c700e8..a3e4e7821fd 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -2270,7 +2270,7 @@ static void ntree_render_scenes(Render *re)
restore_scene= (scene != re->scene);
node->id->flag &= ~LIB_DOIT;
- NodeTagChanged(re->scene->nodetree, node);
+ nodeUpdate(re->scene->nodetree, node);
}
}
}
@@ -2477,7 +2477,7 @@ static void do_render_composite_fields_blur_3d(Render *re)
ntreeCompositTagAnimated(ntree);
}
- if(ntree && re->r.scemode & R_DOCOMP) {
+ if(ntree && re->scene->use_nodes && re->r.scemode & R_DOCOMP) {
/* checks if there are render-result nodes that need scene */
if((re->r.scemode & R_SINGLE_LAYER)==0)
ntree_render_scenes(re);
diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c
index 7a39342ac8d..a73bf93841d 100644
--- a/source/blender/render/intern/source/renderdatabase.c
+++ b/source/blender/render/intern/source/renderdatabase.c
@@ -481,12 +481,12 @@ void RE_set_customdata_names(ObjectRen *obr, CustomData *data)
layer= &data->layers[i];
if (layer->type == CD_MTFACE) {
- strcpy(obr->mtface[mtfn++], layer->name);
+ BLI_strncpy(obr->mtface[mtfn++], layer->name, sizeof(layer->name));
obr->actmtface= CLAMPIS(layer->active_rnd, 0, numtf);
obr->bakemtface= layer->active;
}
else if (layer->type == CD_MCOL) {
- strcpy(obr->mcol[mcn++], layer->name);
+ BLI_strncpy(obr->mcol[mcn++], layer->name, sizeof(layer->name));
obr->actmcol= CLAMPIS(layer->active_rnd, 0, numcol);
}
}
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index fec59e97194..f28fb08ac6e 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -341,8 +341,8 @@ typedef struct wmEvent {
short val; /* press, release, scrollvalue */
int x, y; /* mouse pointer position, screen coord */
int mval[2]; /* region mouse position, name convention pre 2.5 :) */
- short unicode; /* future, ghost? */
- char ascii; /* from ghost */
+ char utf8_buf[6]; /* from, ghost if utf8 is enabled for the platform */
+ char ascii; /* from ghost, fallback if utf8 isnt set */
char pad;
/* previous state */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index d5a5e93eadf..c08a14307b5 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -33,7 +33,6 @@
#include <stdlib.h>
#include <string.h>
-#include <math.h>
#include "DNA_listBase.h"
#include "DNA_screen_types.h"
@@ -47,6 +46,7 @@
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
+#include "BLI_math.h"
#include "BKE_blender.h"
#include "BKE_context.h"
@@ -1152,7 +1152,7 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
/* the matching rules */
if(kmitype==KM_TEXTINPUT)
- if(ISTEXTINPUT(winevent->type) && winevent->ascii) return 1;
+ if(ISTEXTINPUT(winevent->type) && (winevent->ascii || winevent->utf8_buf[0])) return 1;
if(kmitype!=KM_ANY)
if(winevent->type!=kmitype) return 0;
@@ -1796,11 +1796,14 @@ void wm_event_do_handlers(bContext *C)
}
if(playing == 0) {
- int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f;
- if(ncfra != scene->r.cfra) {
- scene->r.cfra = ncfra;
- ED_update_for_newframe(CTX_data_main(C), scene, win->screen, 1);
- WM_event_add_notifier(C, NC_WINDOW, NULL);
+ float time = sound_sync_scene(scene);
+ if(finite(time)) {
+ int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f;
+ if(ncfra != scene->r.cfra) {
+ scene->r.cfra = ncfra;
+ ED_update_for_newframe(CTX_data_main(C), scene, win->screen, 1);
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
}
}
@@ -2581,6 +2584,7 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U
GHOST_TEventKeyData *kd= customdata;
event.type= convert_key(kd->key);
event.ascii= kd->ascii;
+ strcpy(event.utf8_buf, kd->utf8_buf);
event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE;
/* exclude arrow keys, esc, etc from text input */
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index eda85f112df..1face062e7e 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -56,7 +56,6 @@
#include "BLI_blenlib.h"
#include "BLI_dynstr.h" /*for WM_operator_pystring */
#include "BLI_math.h"
-#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BLI_ghash.h"
@@ -105,6 +104,11 @@
static GHash *global_ops_hash= NULL;
+#ifdef WITH_PYTHON_UI_INFO
+# include "DNA_text_types.h"
+# include "BKE_text.h"
+#endif
+
/* ************ operator API, exported ********** */
@@ -860,7 +864,7 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type,
RNA_def_property_flag(prop, PROP_HIDDEN);
if(flag & WM_FILESEL_RELPATH)
- RNA_def_boolean(ot->srna, "relative_path", (U.flag & USER_RELPATHS) ? 1:0, "Relative Path", "Select the file relative to the blend file");
+ RNA_def_boolean(ot->srna, "relative_path", TRUE, "Relative Path", "Select the file relative to the blend file");
}
void WM_operator_properties_select_all(wmOperatorType *ot)
@@ -1618,9 +1622,6 @@ static void WM_OT_open_mainfile(wmOperatorType *ot)
static int wm_link_append_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
- if(!RNA_property_is_set(op->ptr, "relative_path"))
- RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
-
if(RNA_property_is_set(op->ptr, "filepath")) {
return WM_operator_call(C, op);
}
@@ -3508,6 +3509,79 @@ static void operatortype_ghash_free_cb(wmOperatorType *ot)
MEM_freeN(ot);
}
+#ifdef WITH_PYTHON_UI_INFO
+
+static ScrArea *biggest_text_view(bContext *C)
+{
+ bScreen *sc= CTX_wm_screen(C);
+ ScrArea *sa, *big= NULL;
+ int size, maxsize= 0;
+
+ for(sa= sc->areabase.first; sa; sa= sa->next) {
+ if(sa->spacetype==SPACE_TEXT) {
+ size= sa->winx * sa->winy;
+ if(size > maxsize) {
+ maxsize= size;
+ big= sa;
+ }
+ }
+ }
+ return big;
+}
+
+static int wm_text_edit_exec(bContext *C, wmOperator *op)
+{
+ Main *bmain= CTX_data_main(C);
+ Text *text;
+
+ char filepath[240];
+ int line= RNA_int_get(op->ptr, "line");
+ RNA_string_get(op->ptr, "filepath", filepath);
+
+ for (text=bmain->text.first; text; text=text->id.next) {
+ if (text->name && BLI_path_cmp(text->name, filepath) == 0) {
+ break;
+ }
+ }
+
+ if (text == NULL) {
+ text= add_text(filepath, bmain->name);
+ }
+
+ if (text == NULL) {
+ BKE_reportf(op->reports, RPT_WARNING, "file: '%s' can't be opened", filepath);
+ return OPERATOR_CANCELLED;
+ }
+ else {
+ /* naughty!, find text area to set, not good behavior
+ * but since this is a dev tool lets allow it - campbell */
+ ScrArea *sa= biggest_text_view(C);
+ if(sa) {
+ SpaceText *st= sa->spacedata.first;
+ st->text= text;
+ }
+
+ txt_move_toline(text, line - 1, FALSE);
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+static void WM_OT_text_edit(wmOperatorType *ot)
+{
+ ot->name= "Edit Text File";
+ ot->idname= "WM_OT_text_edit";
+
+ ot->exec= wm_text_edit_exec;
+
+ RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "Path", "");
+ RNA_def_int(ot->srna, "line", 0, INT_MIN, INT_MAX, "Line", "", 0, INT_MAX);
+}
+
+#endif /* WITH_PYTHON_UI_INFO */
+
+
/* ******************************************************* */
/* called on initialize WM_exit() */
void wm_operatortype_free(void)
@@ -3551,6 +3625,10 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_collada_import);
#endif
+#ifdef WITH_PYTHON_UI_INFO
+ WM_operatortype_append(WM_OT_text_edit);
+#endif
+
}
/* circleselect-like modal operators */
@@ -3589,8 +3667,8 @@ static void gesture_circle_modal_keymap(wmKeyConfig *keyconf)
WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_SHIFT, 0, GESTURE_MODAL_DESELECT);
WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_SHIFT, 0, GESTURE_MODAL_NOP);
#else
- WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // defailt 2.4x
- WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); // defailt 2.4x
+ WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // default 2.4x
+ WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); // default 2.4x
#endif
WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP);
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index c1ba7ebbb67..51297f57e9d 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -88,8 +88,8 @@ if(WITH_GAMEENGINE)
add_definitions(-DWITH_GAMEENGINE)
endif()
-if(NOT WITH_SDL)
- add_definitions(-DDISABLE_SDL)
+if(WITH_SDL)
+ add_definitions(-DWITH_SDL)
endif()
if(WITH_BINRELOC)
@@ -443,14 +443,6 @@ elseif(WIN32)
endif()
endif()
- install( # same as linux!, deduplicate
- DIRECTORY
- ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale
- ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts
- DESTINATION ${TARGETDIR_VER}/datafiles
- PATTERN ".svn" EXCLUDE
- )
-
# plugins in blender 2.5 don't work at the moment.
#
# install(
@@ -664,8 +656,8 @@ elseif(APPLE)
if(WITH_INTERNATIONAL)
install(
DIRECTORY
- ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts
${CMAKE_SOURCE_DIR}/release/bin/.blender/locale
+ ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts
DESTINATION ${TARGETDIR_VER}/datafiles
PATTERN ".svn" EXCLUDE
)
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 64f8cf463da..fd752fa85e6 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -306,7 +306,7 @@ static int print_help(int UNUSED(argc), const char **UNUSED(argv), void *data)
#else
printf (" $TMP or $TMPDIR Store temporary files here.\n");
#endif
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
printf (" $SDL_AUDIODRIVER LibSDL audio driver - alsa, esd, dma.\n");
#endif
printf (" $PYTHONHOME Path to the python directory, eg. /usr/lib/python.\n\n");
@@ -1214,7 +1214,7 @@ int main(int argc, const char **argv)
/* this is properly initialized with user defs, but this is default */
BLI_where_is_temp(btempdir, FILE_MAX, 1); /* call after loading the startup.blend so we can read U.tempdir */
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
BLI_setenv("SDL_VIDEODRIVER", "dummy");
#endif
}
diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist
index 23941d91075..37920dc8181 100644
--- a/source/darwin/blender.app/Contents/Info.plist
+++ b/source/darwin/blender.app/Contents/Info.plist
@@ -1,36 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
<dict>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
-
- <key>CFBundleExecutable</key>
- <string>blender</string>
-
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
-
- <key>CFBundleIconFile</key>
- <string>blender icon.icns</string>
-
- <key>CFBundleName</key>
- <string>Blender</string>
- <key>CFBundleIdentifier</key>
- <string>org.blenderfoundation.blender</string>
-
- <key>CFBundleVersion</key>
- <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation</string>
- <key>CFBundleShortVersionString</key>
- <string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
- <key>CFBundleGetInfoString</key>
- <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation</string>
-
<key>CFBundleDocumentTypes</key>
<array>
<dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>blend</string>
+ </array>
<key>CFBundleTypeIconFile</key>
<string>blender file icon.icns</string>
<key>CFBundleTypeName</key>
@@ -39,15 +17,36 @@
<array>
<string>BLND</string>
</array>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>blend</string>
- </array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSIsAppleDefaultForType</key>
- <true/>
+ <true/>
</dict>
</array>
+ <key>CFBundleExecutable</key>
+ <string>blender</string>
+ <key>CFBundleGetInfoString</key>
+ <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation</string>
+ <key>CFBundleIconFile</key>
+ <string>blender icon.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.blenderfoundation.blender</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>Blender</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation</string>
+ <key>LSEnvironment</key>
+ <dict>
+ <key>OMP_NUM_THREADS</key>
+ <string>4</string>
+ </dict>
</dict>
</plist>
diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist
new file mode 100644
index 00000000000..eb80955e5a6
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleAllowMixedLocalizations</key>
+ <true/>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>applet</string>
+ <key>CFBundleIconFile</key>
+ <string>applet</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>set_simulation_threads</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>aplt</string>
+ <key>LSMinimumSystemVersionByArchitecture</key>
+ <dict>
+ <key>x86_64</key>
+ <string>10.6</string>
+ </dict>
+ <key>LSRequiresCarbon</key>
+ <true/>
+ <key>WindowState</key>
+ <dict>
+ <key>dividerCollapsed</key>
+ <false/>
+ <key>eventLogLevel</key>
+ <integer>-1</integer>
+ <key>name</key>
+ <string>ScriptWindowState</string>
+ <key>positionOfDivider</key>
+ <real>493</real>
+ <key>savedFrame</key>
+ <string>698 332 1163 846 0 0 1920 1178 </string>
+ <key>selectedTabView</key>
+ <string>result</string>
+ </dict>
+</dict>
+</plist>
diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet
new file mode 100755
index 00000000000..0079f4b19d4
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet
Binary files differ
diff --git a/source/darwin/set_simulation_threads.app/Contents/PkgInfo b/source/darwin/set_simulation_threads.app/Contents/PkgInfo
new file mode 100644
index 00000000000..3253614c402
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPLaplt \ No newline at end of file
diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt b/source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt
new file mode 100644
index 00000000000..fa562578a80
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt
Binary files differ
diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns
new file mode 100644
index 00000000000..fcc1f09273d
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns
Binary files differ
diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc
new file mode 100644
index 00000000000..540621d0b9e
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc
Binary files differ
diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf b/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf
new file mode 100644
index 00000000000..0d0a60c08b5
--- /dev/null
+++ b/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf
@@ -0,0 +1,4 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230
+{\fonttbl}
+{\colortbl;\red255\green255\blue255;}
+} \ No newline at end of file
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index ce542671425..af4df5035bb 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -360,7 +360,14 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c
ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == RV3D_ORTHO));
ketsjiengine->SetCameraOverrideProjectionMatrix(MT_CmMatrix4x4(rv3d->winmat));
ketsjiengine->SetCameraOverrideViewMatrix(MT_CmMatrix4x4(rv3d->viewmat));
- ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
+ if(rv3d->persp == RV3D_ORTHO)
+ {
+ ketsjiengine->SetCameraOverrideClipping(-v3d->far, v3d->far);
+ }
+ else
+ {
+ ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
+ }
ketsjiengine->SetCameraOverrideLens(v3d->lens);
}
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp
index c5bf28b9b8d..43c9bd434c5 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.cpp
+++ b/source/gameengine/Converter/BL_ArmatureObject.cpp
@@ -663,7 +663,7 @@ KX_PYMETHODDEF_DOC_NOARGS(BL_ArmatureObject, update,
"update()\n"
"Make sure that the armature will be updated on next graphic frame.\n"
"This is automatically done if a KX_ArmatureActuator with mode run is active\n"
- "or if an action is playing. This function is usefull in other cases.\n")
+ "or if an action is playing. This function is useful in other cases.\n")
{
SetActiveAction(NULL, 0, KX_GetActiveEngine()->GetFrameTime());
Py_RETURN_NONE;
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 8633a14de03..0f5176af60c 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -1590,15 +1590,15 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_boundobject.box.m_extends[1]=2.f*bb.m_extends[1];
objprop.m_boundobject.box.m_extends[2]=2.f*bb.m_extends[2];
break;
- case OB_BOUND_POLYT:
+ case OB_BOUND_CONVEX_HULL:
if (blenderobject->type == OB_MESH)
{
objprop.m_boundclass = KX_BOUNDPOLYTOPE;
break;
}
- // Object is not a mesh... fall through OB_BOUND_POLYH to
+ // Object is not a mesh... fall through OB_BOUND_TRIANGLE_MESH to
// OB_BOUND_SPHERE
- case OB_BOUND_POLYH:
+ case OB_BOUND_TRIANGLE_MESH:
if (blenderobject->type == OB_MESH)
{
objprop.m_boundclass = KX_BOUNDMESH;
diff --git a/source/gameengine/Expressions/ConstExpr.cpp b/source/gameengine/Expressions/ConstExpr.cpp
index 8d5a47b2d0d..c41cf5a54f5 100644
--- a/source/gameengine/Expressions/ConstExpr.cpp
+++ b/source/gameengine/Expressions/ConstExpr.cpp
@@ -99,7 +99,7 @@ bool CConstExpr::NeedsRecalculated()
CExpression* CConstExpr::CheckLink(std::vector<CBrokenLinkInfo*>& brokenlinks)
{
-// parent checks if child is still usefull.
+// parent checks if child is still useful.
// When for example it's value it's deleted flag set
// then release Value, and return NULL in case of constexpression
// else return this...
diff --git a/source/gameengine/GameLogic/CMakeLists.txt b/source/gameengine/GameLogic/CMakeLists.txt
index bd417165337..9a57de60517 100644
--- a/source/gameengine/GameLogic/CMakeLists.txt
+++ b/source/gameengine/GameLogic/CMakeLists.txt
@@ -131,8 +131,8 @@ if(WITH_SDL)
list(APPEND INC_SYS
${SDL_INCLUDE_DIR}
)
-else()
- add_definitions(-DDISABLE_SDL)
+
+ add_definitions(-DWITH_SDL)
endif()
blender_add_lib(ge_logic "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
index 48ba09e67d2..0547d97285d 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
@@ -29,8 +29,8 @@
* \ingroup gamelogic
*/
-#ifndef DISABLE_SDL
-#include <SDL.h>
+#ifdef WITH_SDL
+# include <SDL.h>
#endif
#include <stdio.h>
@@ -57,7 +57,7 @@ SCA_Joystick::SCA_Joystick(short int index)
for(int i=0; i<JOYHAT_MAX; i++)
m_hat_array[i]= 0;
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
m_private = new PrivateData();
#endif
}
@@ -66,7 +66,7 @@ SCA_Joystick::SCA_Joystick(short int index)
SCA_Joystick::~SCA_Joystick()
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
delete m_private;
#endif
}
@@ -77,9 +77,9 @@ int SCA_Joystick::m_refCount = 0;
SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
{
-#ifdef DISABLE_SDL
+#ifndef WITH_SDL
return NULL;
-#else
+#else /* WITH_SDL */
if (joyindex < 0 || joyindex >= JOYINDEX_MAX) {
echo("Error-invalid joystick index: " << joyindex);
return NULL;
@@ -107,14 +107,14 @@ SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
m_refCount++;
}
return m_instance[joyindex];
-#endif
+#endif /* WITH_SDL */
}
void SCA_Joystick::ReleaseInstance()
{
if (--m_refCount == 0)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
int i;
for (i=0; i<JOYINDEX_MAX; i++) {
if (m_instance[i]) {
@@ -125,7 +125,7 @@ void SCA_Joystick::ReleaseInstance()
}
SDL_QuitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
-#endif
+#endif /* WITH_SDL */
}
}
@@ -163,7 +163,7 @@ bool SCA_Joystick::aAxisIsPositive(int axis_single)
bool SCA_Joystick::aAnyButtonPressIsPositive(void)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
/* this is needed for the "all events" option
* so we know if there are no buttons pressed */
for (int i=0; i<m_buttonmax; i++)
@@ -175,7 +175,7 @@ bool SCA_Joystick::aAnyButtonPressIsPositive(void)
bool SCA_Joystick::aButtonPressIsPositive(int button)
{
-#ifdef DISABLE_SDL
+#ifndef WITH_SDL
return false;
#else
bool result;
@@ -187,7 +187,7 @@ bool SCA_Joystick::aButtonPressIsPositive(int button)
bool SCA_Joystick::aButtonReleaseIsPositive(int button)
{
-#ifdef DISABLE_SDL
+#ifndef WITH_SDL
return false;
#else
bool result;
@@ -221,11 +221,11 @@ int SCA_Joystick::GetNumberOfHats()
bool SCA_Joystick::CreateJoystickDevice(void)
{
-#ifdef DISABLE_SDL
+#ifndef WITH_SDL
m_isinit = true;
m_axismax = m_buttonmax = m_hatmax = 0;
return false;
-#else
+#else /* WITH_SDL */
if(m_isinit == false){
if (m_joyindex>=m_joynum) {
// don't print a message, because this is done anyway
@@ -257,13 +257,13 @@ bool SCA_Joystick::CreateJoystickDevice(void)
}
return true;
-#endif
+#endif /* WITH_SDL */
}
void SCA_Joystick::DestroyJoystickDevice(void)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
if (m_isinit){
if(SDL_JoystickOpened(m_joyindex)){
echo("Closing-joystick " << m_joyindex);
@@ -271,12 +271,12 @@ void SCA_Joystick::DestroyJoystickDevice(void)
}
m_isinit = false;
}
-#endif
+#endif /* WITH_SDL */
}
int SCA_Joystick::Connected(void)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
if (m_isinit && SDL_JoystickOpened(m_joyindex))
return 1;
#endif
@@ -285,7 +285,7 @@ int SCA_Joystick::Connected(void)
int SCA_Joystick::pGetAxis(int axisnum, int udlr)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
return m_axis_array[(axisnum*2)+udlr];
#endif
return 0;
@@ -293,7 +293,7 @@ int SCA_Joystick::pGetAxis(int axisnum, int udlr)
int SCA_Joystick::pAxisTest(int axisnum)
{
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
short i1= m_axis_array[(axisnum*2)];
short i2= m_axis_array[(axisnum*2)+1];
@@ -304,7 +304,7 @@ int SCA_Joystick::pAxisTest(int axisnum)
if (i2 < 0) i2 = -i2;
if (i1 <i2) return i2;
else return i1;
-#else
+#else /* WITH_SDL */
return 0;
-#endif
+#endif /* WITH_SDL */
}
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
index f371955ffc6..4e3e3ef656d 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
@@ -33,8 +33,8 @@
#define _SCA_JOYSTICK_H_
#include "SCA_JoystickDefines.h"
-#ifndef DISABLE_SDL
-#include "SDL.h"
+#ifdef WITH_SDL
+# include "SDL.h"
#endif
/**
@@ -52,7 +52,7 @@ class SCA_Joystick
static int m_refCount;
class PrivateData;
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
PrivateData *m_private;
#endif
int m_joyindex;
@@ -89,7 +89,7 @@ class SCA_Joystick
bool m_istrig_button;
bool m_istrig_hat;
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
/**
* event callbacks
*/
@@ -102,7 +102,7 @@ class SCA_Joystick
void OnBallMotion(SDL_Event *sdl_event){}
#endif
-#endif
+#endif /* WITH_SDL */
/**
* Open the joystick
*/
@@ -193,7 +193,7 @@ public:
*/
int Connected(void);
};
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
void Joystick_HandleEvents( void );
#endif
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
index b6e313aa6c2..e1ab364ae67 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
@@ -29,15 +29,15 @@
* \ingroup gamelogic
*/
-#ifndef DISABLE_SDL
-#include <SDL.h>
+#ifdef WITH_SDL
+# include <SDL.h>
#endif
#include "SCA_Joystick.h"
#include "SCA_JoystickPrivate.h"
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
void SCA_Joystick::OnAxisMotion(SDL_Event* sdl_event)
{
if(sdl_event->jaxis.axis >= JOYAXIS_MAX)
@@ -125,4 +125,4 @@ void SCA_Joystick::HandleEvents(void)
}
}
}
-#endif
+#endif /* WITH_SDL */
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
index 02dd8145bb7..472a7353190 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
@@ -33,7 +33,7 @@
#define __SCA_JOYSTICKPRIVATE_H__
#include "SCA_Joystick.h"
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
class SCA_Joystick::PrivateData
{
public:
@@ -47,6 +47,6 @@ public:
{
}
};
-#endif
+#endif /* WITH_SDL */
#endif
diff --git a/source/gameengine/GameLogic/SCA_JoystickManager.cpp b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
index b61e4f4edca..2942384055b 100644
--- a/source/gameengine/GameLogic/SCA_JoystickManager.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
@@ -65,7 +65,7 @@ void SCA_JoystickManager::NextFrame(double curtime,double deltatime)
}
else {
;
-#ifndef DISABLE_SDL
+#ifdef WITH_SDL
SCA_Joystick::HandleEvents(); /* Handle all SDL Joystick events */
#endif
SG_DList::iterator<SCA_JoystickSensor> it(m_sensors);
diff --git a/source/gameengine/GameLogic/SConscript b/source/gameengine/GameLogic/SConscript
index d6323882267..62bdbc29544 100644
--- a/source/gameengine/GameLogic/SConscript
+++ b/source/gameengine/GameLogic/SConscript
@@ -10,9 +10,8 @@ incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph'
defs = []
if env['WITH_BF_SDL']:
+ defs.append('WITH_SDL')
incs += ' ' + env['BF_SDL_INC']
-else:
- defs.append('DISABLE_SDL')
if env['WITH_BF_PYTHON']:
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index f5bd3a91c26..ea17b9adcfd 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -309,7 +309,7 @@ static void get_filename(int argc, char **argv, char *filename)
#endif // !_APPLE
}
-static BlendFileData *load_game_data(char *progname, char *filename = NULL, char *relativename = NULL)
+static BlendFileData *load_game_data(const char *progname, char *filename = NULL, char *relativename = NULL)
{
ReportList reports;
BlendFileData *bfd = NULL;
@@ -321,7 +321,7 @@ static BlendFileData *load_game_data(char *progname, char *filename = NULL, char
bfd= BLO_read_runtime(progname, &reports);
if (bfd) {
bfd->type= BLENFILETYPE_RUNTIME;
- strcpy(bfd->main->name, progname);
+ BLI_strncpy(bfd->main->name, progname, sizeof(bfd->main->name));
}
} else {
bfd= BLO_read_from_file(progname, &reports);
@@ -766,7 +766,7 @@ int main(int argc, char** argv)
char basedpath[240];
// base the actuator filename relative to the last file
- strcpy(basedpath, exitstring.Ptr());
+ BLI_strncpy(basedpath, exitstring.Ptr(), sizeof(basedpath));
BLI_path_abs(basedpath, pathname);
bfd = load_game_data(basedpath);
diff --git a/source/gameengine/Ketsji/BL_Action.cpp b/source/gameengine/Ketsji/BL_Action.cpp
index 08794042e37..9e8f53ad219 100644
--- a/source/gameengine/Ketsji/BL_Action.cpp
+++ b/source/gameengine/Ketsji/BL_Action.cpp
@@ -361,9 +361,6 @@ void BL_Action::Update(float curtime)
break;
}
-
- if (!m_done)
- InitIPO();
}
if (m_obj->GetGameObjectType() == SCA_IObject::OBJ_ARMATURE)
@@ -446,8 +443,6 @@ void BL_Action::Update(float curtime)
obj->SetActiveAction(NULL, 0, curtime);
}
-
- InitIPO();
m_obj->UpdateIPO(m_localtime, m_ipo_flags & ACT_IPOFLAG_CHILD);
}
}
diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt
index 9d8b1781869..329ac890cd2 100644
--- a/source/gameengine/Ketsji/CMakeLists.txt
+++ b/source/gameengine/Ketsji/CMakeLists.txt
@@ -225,8 +225,7 @@ if(WITH_SDL)
list(APPEND INC_SYS
${SDL_INCLUDE_DIR}
)
-else()
- add_definitions(-DDISABLE_SDL)
+ add_definitions(-DWITH_SDL)
endif()
if(WITH_CODEC_FFMPEG)
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
index a795a4eddc6..7e496136ce2 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
@@ -146,7 +146,7 @@ bool KX_NetworkMessageSensor::Evaluate()
// Return always true if a message was received otherwise we can loose messages
if (m_IsUp)
return true;
- // Is it usefull to return also true when the first frame without a message??
+ // Is it useful to return also true when the first frame without a message??
// This will cause a fast on/off cycle that seems useless!
return result;
}
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 8e6126bb173..afc3bf2b53d 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -1400,8 +1400,14 @@ void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene)
KX_Camera* activecam = NULL;
RAS_CameraData camdata = RAS_CameraData();
- if (override_camera) camdata.m_lens = m_overrideCamLens;
-
+ if (override_camera)
+ {
+ camdata.m_lens = m_overrideCamLens;
+ camdata.m_clipstart = m_overrideCamNear;
+ camdata.m_clipend = m_overrideCamFar;
+
+ camdata.m_perspective= !m_overrideCamUseOrtho;
+ }
activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata);
activecam->SetName("__default__cam__");
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
index 34f5c26415d..e1978263a12 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
@@ -240,29 +240,23 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
/* build the from and to point in normalized device coordinates
- * Looks like normailized device coordinates are [-1,1] in x [-1,1] in y
- * [0,-1] in z
+ * Normalized device coordinates are [-1,1] in x, y, z
*
* The actual z coordinates used don't have to be exact just infront and
* behind of the near and far clip planes.
*/
frompoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
1.0 - (2 * (m_y_inv - y_lb) / height),
- /*cam->GetCameraData()->m_perspective ? 0.0:cdata->m_clipstart,*/ /* real clipstart is scaled in ortho for some reason, zero is ok */
- 0.0, /* nearclip, see above comments */
+ -1.0,
1.0 );
topoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
1.0 - (2 * (m_y_inv-y_lb) / height),
- cam->GetCameraData()->m_perspective ? 1.0:cam->GetCameraData()->m_clipend, /* farclip, see above comments */
+ 1.0,
1.0 );
-
- /* camera to world */
- MT_Transform wcs_camcs_tranform = cam->GetWorldToCamera();
- MT_Transform cams_wcs_transform;
- cams_wcs_transform.invert(wcs_camcs_tranform);
- MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cams_wcs_transform);
+ /* camera to world */
+ MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cam->GetCameraToWorld());
/* badly defined, the first time round.... I wonder why... I might
* want to guard against floating point errors here.*/
@@ -272,6 +266,8 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
/* shoot-points: clip to cam to wcs . win to clip was already done.*/
frompoint = clip_camcs_matrix * frompoint;
topoint = clip_camcs_matrix * topoint;
+ /* clipstart = - (frompoint[2] / frompoint[3])
+ * clipend = - (topoint[2] / topoint[3]) */
frompoint = camcs_wcs_matrix * frompoint;
topoint = camcs_wcs_matrix * topoint;
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 62ca2910c60..e86831b9323 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -502,7 +502,7 @@ static PyObject* gPyGetBlendFileList(PyObject*, PyObject* args)
BLI_path_abs(cpath, gp_GamePythonPath);
} else {
/* Get the dir only */
- BLI_split_dirfile(gp_GamePythonPath, cpath, NULL);
+ BLI_split_dirfile(gp_GamePythonPath, cpath, NULL, sizeof(cpath), 0);
}
if((dp = opendir(cpath)) == NULL) {
@@ -1732,7 +1732,7 @@ static void initPySysObjects__append(PyObject *sys_path, char *filename)
PyObject *item;
char expanded[FILE_MAXDIR + FILE_MAXFILE];
- BLI_split_dirfile(filename, expanded, NULL); /* get the dir part of filename only */
+ BLI_split_dirfile(filename, expanded, NULL, sizeof(expanded), 0); /* get the dir part of filename only */
BLI_path_abs(expanded, gp_GamePythonPath); /* filename from lib->filename is (always?) absolute, so this may not be needed but it wont hurt */
BLI_cleanup_file(gp_GamePythonPath, expanded); /* Dont use BLI_cleanup_dir because it adds a slash - BREAKS WIN32 ONLY */
item= PyUnicode_DecodeFSDefault(expanded);
@@ -1816,7 +1816,7 @@ PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecur
/* Yet another gotcha in the py api
* Cant run PySys_SetArgv more then once because this adds the
* binary dir to the sys.path each time.
- * Id have thaught python being totally restarted would make this ok but
+ * Id have thought python being totally restarted would make this ok but
* somehow it remembers the sys.path - Campbell
*/
static bool first_time = true;
diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript
index 9b453ed76d5..064f09df9f3 100644
--- a/source/gameengine/Ketsji/SConscript
+++ b/source/gameengine/Ketsji/SConscript
@@ -27,8 +27,7 @@ incs += ' ' + env['BF_OPENGL_INC']
if env['WITH_BF_SDL']:
incs += ' ' + env['BF_SDL_INC']
-else:
- defs.append('DISABLE_SDL')
+ defs.append('WITH_SDL')
if env['WITH_BF_PYTHON']:
incs += ' ' + env['BF_PYTHON_INC']
diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.cpp b/source/gameengine/Rasterizer/RAS_FramingManager.cpp
index edacd1dd0f1..6ca402691cb 100644
--- a/source/gameengine/Rasterizer/RAS_FramingManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_FramingManager.cpp
@@ -99,7 +99,7 @@ ComputeDefaultOrtho(
frustum.x1 = -frustum.x2;
frustum.y2 = sizeY;
frustum.y1 = -frustum.y2;
- frustum.camnear = -camfar;
+ frustum.camnear = camnear;
frustum.camfar = camfar;
}
diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt
index c5a6831a4cb..64cc79de879 100644
--- a/source/tests/CMakeLists.txt
+++ b/source/tests/CMakeLists.txt
@@ -43,7 +43,7 @@ else()
endif()
# for testing with valgrind prefix: valgrind --track-origins=yes --error-limit=no
-set(TEST_BLENDER_EXE ${TEST_BLENDER_EXE} --background --factory-startup --env-system-scripts ${CMAKE_SOURCE_DIR}/release/scripts)
+set(TEST_BLENDER_EXE ${TEST_BLENDER_EXE} --background -noaudio --factory-startup --env-system-scripts ${CMAKE_SOURCE_DIR}/release/scripts)
# ------------------------------------------------------------------------------
diff --git a/source/tests/rna_info_dump.py b/source/tests/rna_info_dump.py
index 62c1248d733..293c02dfb84 100644
--- a/source/tests/rna_info_dump.py
+++ b/source/tests/rna_info_dump.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
# Used for generating API diff's between releases
-# ./blender.bin --background --python release/test/rna_info_dump.py
+# ./blender.bin --background -noaudio --python release/test/rna_info_dump.py
import bpy