Full Code of zenkovich/o2 for AI

master 47bf364fee1f cached
4848 files
32.7 MB
8.9M tokens
14363 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (35,534K chars total). Download the full file to get everything.
Repository: zenkovich/o2
Branch: master
Commit: 47bf364fee1f
Files: 4848
Total size: 32.7 MB

Directory structure:
gitextract_vp8reetq/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── AssetsBuildTool/
│   ├── CMakeLists.txt
│   └── Sources/
│       ├── AssetsBuildTool.cpp
│       └── o2AssetBuilder/
│           ├── AssetsBuilder.cpp
│           ├── AssetsBuilder.h
│           ├── AssetsBuilderRunner.cpp
│           ├── Converters/
│           │   ├── AtlasAssetConverter.cpp
│           │   ├── AtlasAssetConverter.h
│           │   ├── FolderAssetConverter.cpp
│           │   ├── FolderAssetConverter.h
│           │   ├── IAssetConverter.cpp
│           │   ├── IAssetConverter.h
│           │   ├── ImageAssetConverter.cpp
│           │   ├── ImageAssetConverter.h
│           │   ├── StdAssetConverter.cpp
│           │   └── StdAssetConverter.h
│           ├── ImageCompressor.cpp
│           └── ImageCompressor.h
├── CMake/
│   ├── CMakeDetermineMetalCompiler.cmake
│   ├── CMakeMetalCompiler.cmake.in
│   ├── CMakeMetalInformation.cmake
│   ├── CMakeTestMetalCompiler.cmake
│   ├── CheckLanguage.cmake
│   └── MetalShaderSupport.cmake
├── CMakeLists.txt
├── CodeTool/
│   ├── CMakeLists.txt
│   └── Src/
│       ├── CodeTool.cpp
│       ├── CodeToolApp.cpp
│       ├── CodeToolApp.h
│       ├── CppSyntaxParser.cpp
│       ├── CppSyntaxParser.h
│       ├── SyntaxTree.cpp
│       ├── SyntaxTree.h
│       └── pugixml/
│           ├── pugiconfig.hpp
│           ├── pugixml.cpp
│           └── pugixml.hpp
├── CompressToolsConfig.json
├── Docs/
│   ├── en/
│   │   ├── Architecture/
│   │   │   └── architecture.md
│   │   └── main.md
│   └── ru/
│       ├── Architecture/
│       │   ├── HighLevel/
│       │   │   ├── components.md
│       │   │   ├── scene.md
│       │   │   └── ui.md
│       │   ├── LowLevel/
│       │   │   ├── animations.md
│       │   │   ├── application.md
│       │   │   ├── assets.md
│       │   │   ├── input.md
│       │   │   ├── physics.md
│       │   │   ├── render.md
│       │   │   └── scripting.md
│       │   ├── Utils/
│       │   │   ├── containers.md
│       │   │   ├── debug.md
│       │   │   ├── filesystem.md
│       │   │   ├── function.md
│       │   │   ├── logging.md
│       │   │   ├── math.md
│       │   │   ├── memory.md
│       │   │   ├── properties.md
│       │   │   ├── reflection.md
│       │   │   ├── serialization.md
│       │   │   └── string.md
│       │   └── architecture.md
│       ├── Editor/
│       │   ├── Animation/
│       │   │   └── animation.md
│       │   ├── Assets/
│       │   │   └── assets.md
│       │   ├── Game/
│       │   │   └── game.md
│       │   ├── Log/
│       │   │   └── log.md
│       │   ├── Properties/
│       │   │   └── properties.md
│       │   ├── Scene/
│       │   │   └── scene.md
│       │   ├── Tree/
│       │   │   └── tree.md
│       │   └── editor.md
│       └── main.md
├── Editor/
│   ├── Assets/
│   │   ├── BasicAtlas.atlas
│   │   ├── BasicAtlas.atlas.meta
│   │   ├── Editor UI styles.meta
│   │   ├── SimulationDevicesList.json
│   │   ├── SimulationDevicesList.json.meta
│   │   ├── debugFont.ttf.meta
│   │   ├── stdFont.ttf.meta
│   │   ├── ui/
│   │   │   ├── .meta
│   │   │   ├── CurveHandle.png.meta
│   │   │   ├── CurveHandleHover.png.meta
│   │   │   ├── CurveHandlePressed.png.meta
│   │   │   ├── CurveHandleSelected.png.meta
│   │   │   ├── CurveSupportHandle.png.meta
│   │   │   ├── CurveSupportHandleHover.png.meta
│   │   │   ├── CurveSupportHandlePressed.png.meta
│   │   │   ├── CurveSupportHandleSelected.png.meta
│   │   │   ├── JSFileIcon.png.meta
│   │   │   ├── TopologyTool.png.meta
│   │   │   ├── UI2_accept_prefab.png.meta
│   │   │   ├── UI2_accept_prefab_pressed.png.meta
│   │   │   ├── UI2_accept_prefab_select.png.meta
│   │   │   ├── UI2_actor_icon.png.meta
│   │   │   ├── UI2_add_asset_icon.png.meta
│   │   │   ├── UI2_anim_file_icon.png.meta
│   │   │   ├── UI2_asset_icon_selection.png.meta
│   │   │   ├── UI2_big_file_icon.png.meta
│   │   │   ├── UI2_big_folder_icon.png.meta
│   │   │   ├── UI2_big_lock_close.png.meta
│   │   │   ├── UI2_big_lock_open.png.meta
│   │   │   ├── UI2_big_lock_unknown.png.meta
│   │   │   ├── UI2_big_text_file_icon.png.meta
│   │   │   ├── UI2_break_prefab.png.meta
│   │   │   ├── UI2_break_prefab_pressed.png.meta
│   │   │   ├── UI2_break_prefab_select.png.meta
│   │   │   ├── UI2_component_head.png.meta
│   │   │   ├── UI2_enable_dot_big.png.meta
│   │   │   ├── UI2_enable_dot_big_unknown.png.meta
│   │   │   ├── UI2_enable_toggle_big.png.meta
│   │   │   ├── UI2_enable_toggle_big_focused.png.meta
│   │   │   ├── UI2_enable_toggle_big_pressed.png.meta
│   │   │   ├── UI2_enable_toggle_big_select.png.meta
│   │   │   ├── UI2_eye_closed_icon.png.meta
│   │   │   ├── UI2_eye_opened_icon.png.meta
│   │   │   ├── UI2_filter_icon.png.meta
│   │   │   ├── UI2_folder_icon.png.meta
│   │   │   ├── UI2_gear_icon.png.meta
│   │   │   ├── UI2_gray_options.png.meta
│   │   │   ├── UI2_gray_options_pressed.png.meta
│   │   │   ├── UI2_gray_options_select.png.meta
│   │   │   ├── UI2_green_edit_box.png.meta
│   │   │   ├── UI2_handle_pressed.png.meta
│   │   │   ├── UI2_handle_regular.png.meta
│   │   │   ├── UI2_handle_select.png.meta
│   │   │   ├── UI2_handle_side_pressed.png.meta
│   │   │   ├── UI2_handle_side_regular.png.meta
│   │   │   ├── UI2_handle_side_select.png.meta
│   │   │   ├── UI2_image_asset_back.png.meta
│   │   │   ├── UI2_layer_big.png.meta
│   │   │   ├── UI2_layer_icon_t.png.meta
│   │   │   ├── UI2_link_icon.png.meta
│   │   │   ├── UI2_log_errors_icon.png.meta
│   │   │   ├── UI2_log_errors_inactive_icon.png.meta
│   │   │   ├── UI2_log_info_icon.png.meta
│   │   │   ├── UI2_log_info_inactive_icon.png.meta
│   │   │   ├── UI2_log_warnings_icon.png.meta
│   │   │   ├── UI2_log_warnings_inactive_icon.png.meta
│   │   │   ├── UI2_move_tool_center.png.meta
│   │   │   ├── UI2_move_tool_center_pressed.png.meta
│   │   │   ├── UI2_move_tool_center_select.png.meta
│   │   │   ├── UI2_pivot.png.meta
│   │   │   ├── UI2_pivot_icon.png.meta
│   │   │   ├── UI2_pivot_pressed.png.meta
│   │   │   ├── UI2_pivot_select.png.meta
│   │   │   ├── UI2_position_icon.png.meta
│   │   │   ├── UI2_prefab_link_big.png.meta
│   │   │   ├── UI2_red_edit_box.png.meta
│   │   │   ├── UI2_revert_prefab.png.meta
│   │   │   ├── UI2_revert_prefab_pressed.png.meta
│   │   │   ├── UI2_revert_prefab_select.png.meta
│   │   │   ├── UI2_right_move_arrow.png.meta
│   │   │   ├── UI2_right_move_arrow_pressed.png.meta
│   │   │   ├── UI2_right_move_arrow_select.png.meta
│   │   │   ├── UI2_right_scale_arrow.png.meta
│   │   │   ├── UI2_right_scale_arrow_pressed.png.meta
│   │   │   ├── UI2_right_scale_arrow_select.png.meta
│   │   │   ├── UI2_rotate_icon.png.meta
│   │   │   ├── UI2_round_field.png.meta
│   │   │   ├── UI2_round_field_focused.png.meta
│   │   │   ├── UI2_round_field_gray.png.meta
│   │   │   ├── UI2_round_field_gray_pressed.png.meta
│   │   │   ├── UI2_round_field_gray_select.png.meta
│   │   │   ├── UI2_round_field_pressed.png.meta
│   │   │   ├── UI2_round_field_select.png.meta
│   │   │   ├── UI2_save_gray copy 2.png.meta
│   │   │   ├── UI2_save_gray copy.png.meta
│   │   │   ├── UI2_save_gray.png.meta
│   │   │   ├── UI2_scale_both.png.meta
│   │   │   ├── UI2_scale_both_pressed.png.meta
│   │   │   ├── UI2_scale_both_select.png.meta
│   │   │   ├── UI2_scale_icon.png.meta
│   │   │   ├── UI2_scene_icon.png.meta
│   │   │   ├── UI2_small_panel_back.png.meta
│   │   │   ├── UI2_small_panel_down_back.png.meta
│   │   │   ├── UI2_small_trash_icon.png.meta
│   │   │   ├── UI2_tag_big.png.meta
│   │   │   ├── UI2_trach_icon.png.meta
│   │   │   ├── UI2_transform_icon.png.meta
│   │   │   ├── UI2_up_move_arrow.png.meta
│   │   │   ├── UI2_up_move_arrow_pressed.png.meta
│   │   │   ├── UI2_up_move_arrow_select.png.meta
│   │   │   ├── UI2_up_scale_arrow.png.meta
│   │   │   ├── UI2_up_scale_arrow_pressed.png.meta
│   │   │   ├── UI2_up_scale_arrow_select.png.meta
│   │   │   ├── UI3_add_btn.png.meta
│   │   │   ├── UI3_add_btn_hover.png.meta
│   │   │   ├── UI3_add_btn_pressed.png.meta
│   │   │   ├── UI3_anchor_hover.png.meta
│   │   │   ├── UI3_anchor_pressed.png.meta
│   │   │   ├── UI3_anchor_regular.png.meta
│   │   │   ├── UI3_anchors_hover.png.meta
│   │   │   ├── UI3_anchors_pressed.png.meta
│   │   │   ├── UI3_ch_arrows.png.meta
│   │   │   ├── UI3_icon_anchor.png.meta
│   │   │   ├── UI3_icon_max_size.png.meta
│   │   │   ├── UI3_icon_min_size.png.meta
│   │   │   ├── UI3_icon_offsets.png.meta
│   │   │   ├── UI3_icon_size.png.meta
│   │   │   ├── UI3_icon_weight.png.meta
│   │   │   ├── UI3_rotate_hover.png.meta
│   │   │   ├── UI3_rotate_pressed.png.meta
│   │   │   ├── UI3_rotate_regular.png.meta
│   │   │   ├── UI4_Background.png.meta
│   │   │   ├── UI4_Box_focus.png.meta
│   │   │   ├── UI4_Box_pressed.png.meta
│   │   │   ├── UI4_Box_regular.png.meta
│   │   │   ├── UI4_Box_select.png.meta
│   │   │   ├── UI4_Check_bk.png.meta
│   │   │   ├── UI4_Check_bk_focus.png.meta
│   │   │   ├── UI4_Check_bk_pressed.png.meta
│   │   │   ├── UI4_Check_bk_select.png.meta
│   │   │   ├── UI4_Check_unknown.png.meta
│   │   │   ├── UI4_Ckeck.png.meta
│   │   │   ├── UI4_Close_button_pressed.png.meta
│   │   │   ├── UI4_Close_button_regular.png.meta
│   │   │   ├── UI4_Close_button_select.png.meta
│   │   │   ├── UI4_Context_menu.png.meta
│   │   │   ├── UI4_Context_menu_select.png.meta
│   │   │   ├── UI4_Context_menu_white.png.meta
│   │   │   ├── UI4_Down_icn.png.meta
│   │   │   ├── UI4_Down_icn_pressed.png.meta
│   │   │   ├── UI4_Down_icn_select.png.meta
│   │   │   ├── UI4_Down_icn_white.png.meta
│   │   │   ├── UI4_Editbox_focus.png.meta
│   │   │   ├── UI4_Editbox_pressed.png.meta
│   │   │   ├── UI4_Editbox_regular.png.meta
│   │   │   ├── UI4_Editbox_select.png.meta
│   │   │   ├── UI4_Hor_scrollbar_bk.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_pressed.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_regular.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_select.png.meta
│   │   │   ├── UI4_Options_button_pressed.png.meta
│   │   │   ├── UI4_Options_button_regular.png.meta
│   │   │   ├── UI4_Options_button_select.png.meta
│   │   │   ├── UI4_Radio.png.meta
│   │   │   ├── UI4_Radio_bk.png.meta
│   │   │   ├── UI4_Radio_bk_focus.png.meta
│   │   │   ├── UI4_Radio_bk_pressed.png.meta
│   │   │   ├── UI4_Radio_bk_select.png.meta
│   │   │   ├── UI4_Record_icon.png.meta
│   │   │   ├── UI4_Right_icn.png.meta
│   │   │   ├── UI4_Right_icn_pressed.png.meta
│   │   │   ├── UI4_Right_icn_select.png.meta
│   │   │   ├── UI4_Right_icn_white.png.meta
│   │   │   ├── UI4_Right_icn_white_pressed.png.meta
│   │   │   ├── UI4_Right_icn_white_select.png.meta
│   │   │   ├── UI4_Separator.png.meta
│   │   │   ├── UI4_ToolsPanel_bk.png.meta
│   │   │   ├── UI4_Up_Menu.png.meta
│   │   │   ├── UI4_Up_Menu_pressed.png.meta
│   │   │   ├── UI4_Up_Menu_select.png.meta
│   │   │   ├── UI4_Ver_scrollbar_bk.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_pressed.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_regular.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_select.png.meta
│   │   │   ├── UI4_Ver_separator.png.meta
│   │   │   ├── UI4_Window_place.png.meta
│   │   │   ├── UI4_accept_prefab.png.meta
│   │   │   ├── UI4_accept_prefab_pressed.png.meta
│   │   │   ├── UI4_accept_prefab_select.png.meta
│   │   │   ├── UI4_actor_icon.png.meta
│   │   │   ├── UI4_add_asset_icon.png.meta
│   │   │   ├── UI4_add_btn.png.meta
│   │   │   ├── UI4_add_btn_hover.png.meta
│   │   │   ├── UI4_add_btn_pressed.png.meta
│   │   │   ├── UI4_add_key.png.meta
│   │   │   ├── UI4_add_key_hover.png.meta
│   │   │   ├── UI4_add_key_pressed.png.meta
│   │   │   ├── UI4_anchor_hover.png.meta
│   │   │   ├── UI4_anchor_pressed.png.meta
│   │   │   ├── UI4_anchor_regular.png.meta
│   │   │   ├── UI4_anchors_hover.png.meta
│   │   │   ├── UI4_anchors_pressed.png.meta
│   │   │   ├── UI4_anim_file_icon.png.meta
│   │   │   ├── UI4_anim_loop.png.meta
│   │   │   ├── UI4_anim_loop_hover.png.meta
│   │   │   ├── UI4_anim_loop_pressed.png.meta
│   │   │   ├── UI4_anim_loop_regular.png.meta
│   │   │   ├── UI4_anim_not_loop.png.meta
│   │   │   ├── UI4_anim_pause.png.meta
│   │   │   ├── UI4_anim_play.png.meta
│   │   │   ├── UI4_anim_properties_icon.png.meta
│   │   │   ├── UI4_anim_type.png.meta
│   │   │   ├── UI4_animation_bar.png.meta
│   │   │   ├── UI4_animation_component.png.meta
│   │   │   ├── UI4_animation_icon.png.meta
│   │   │   ├── UI4_animation_state_default.png.meta
│   │   │   ├── UI4_animation_state_frame.png.meta
│   │   │   ├── UI4_animation_state_hover.png.meta
│   │   │   ├── UI4_animation_state_pressed.png.meta
│   │   │   ├── UI4_animation_state_regular.png.meta
│   │   │   ├── UI4_animation_state_shadow.png.meta
│   │   │   ├── UI4_animation_wnd_icon.png.meta
│   │   │   ├── UI4_asset_icon_selection.png.meta
│   │   │   ├── UI4_big_file_icon.png.meta
│   │   │   ├── UI4_big_folder_icon.png.meta
│   │   │   ├── UI4_big_fragment_shader_icon.png.meta
│   │   │   ├── UI4_big_js_file_icon.png.meta
│   │   │   ├── UI4_big_lock_close.png.meta
│   │   │   ├── UI4_big_lock_open.png.meta
│   │   │   ├── UI4_big_lock_unknown.png.meta
│   │   │   ├── UI4_big_material_icon.png.meta
│   │   │   ├── UI4_big_text_file_icon.png.meta
│   │   │   ├── UI4_big_vertex_shader_icon.png.meta
│   │   │   ├── UI4_bones_tool.png.meta
│   │   │   ├── UI4_bool_type.png.meta
│   │   │   ├── UI4_break_prefab.png.meta
│   │   │   ├── UI4_break_prefab_pressed.png.meta
│   │   │   ├── UI4_break_prefab_select.png.meta
│   │   │   ├── UI4_brush_tool.png.meta
│   │   │   ├── UI4_button_focus.png.meta
│   │   │   ├── UI4_button_pressed-87.png.meta
│   │   │   ├── UI4_button_pressed-90.png.meta
│   │   │   ├── UI4_button_pressed.png.meta
│   │   │   ├── UI4_button_regular.png.meta
│   │   │   ├── UI4_button_select.png.meta
│   │   │   ├── UI4_camera_icn.png.meta
│   │   │   ├── UI4_ch_arrows.png.meta
│   │   │   ├── UI4_color_type.png.meta
│   │   │   ├── UI4_common_anim_track.png.meta
│   │   │   ├── UI4_component_head.png.meta
│   │   │   ├── UI4_component_icon.png.meta
│   │   │   ├── UI4_component_icon_dark.png.meta
│   │   │   ├── UI4_create_asset_instance.png.meta
│   │   │   ├── UI4_create_asset_instance_hover.png.meta
│   │   │   ├── UI4_create_asset_instance_pressed.png.meta
│   │   │   ├── UI4_curve_color.png.meta
│   │   │   ├── UI4_curves_mode.png.meta
│   │   │   ├── UI4_dopesheet_back.png.meta
│   │   │   ├── UI4_drag_handle.png.meta
│   │   │   ├── UI4_edit_anim_hover.png.meta
│   │   │   ├── UI4_edit_anim_pressed.png.meta
│   │   │   ├── UI4_edit_anim_regular.png.meta
│   │   │   ├── UI4_emitter_component.png.meta
│   │   │   ├── UI4_enable_dot_big.png.meta
│   │   │   ├── UI4_enable_dot_big_unknown.png.meta
│   │   │   ├── UI4_enable_toggle_big.png.meta
│   │   │   ├── UI4_enable_toggle_big_focused.png.meta
│   │   │   ├── UI4_enable_toggle_big_pressed.png.meta
│   │   │   ├── UI4_enable_toggle_big_select.png.meta
│   │   │   ├── UI4_eye_closed_icon.png.meta
│   │   │   ├── UI4_eye_opened_icon.png.meta
│   │   │   ├── UI4_filter_icon .png.meta
│   │   │   ├── UI4_filter_icon.png.meta
│   │   │   ├── UI4_float_type.png.meta
│   │   │   ├── UI4_folder_icn.png.meta
│   │   │   ├── UI4_folder_icon.png.meta
│   │   │   ├── UI4_folder_icon_dark.png.meta
│   │   │   ├── UI4_frame_tool.png.meta
│   │   │   ├── UI4_game_icon.png.meta
│   │   │   ├── UI4_gear_icon.png.meta
│   │   │   ├── UI4_graph_component.png.meta
│   │   │   ├── UI4_graph_icon.png.meta
│   │   │   ├── UI4_gray_options.png.meta
│   │   │   ├── UI4_gray_options_pressed.png.meta
│   │   │   ├── UI4_gray_options_select.png.meta
│   │   │   ├── UI4_green_edit_box.png.meta
│   │   │   ├── UI4_handles_mode.png.meta
│   │   │   ├── UI4_icon_anchor.png.meta
│   │   │   ├── UI4_icon_max_size.png.meta
│   │   │   ├── UI4_icon_min_size.png.meta
│   │   │   ├── UI4_icon_offsets.png.meta
│   │   │   ├── UI4_icon_size.png.meta
│   │   │   ├── UI4_icon_weight.png.meta
│   │   │   ├── UI4_image_asset_back.png.meta
│   │   │   ├── UI4_image_component.png.meta
│   │   │   ├── UI4_image_frame_tool.png.meta
│   │   │   ├── UI4_image_icn.png.meta
│   │   │   ├── UI4_key.png.meta
│   │   │   ├── UI4_key_hover.png.meta
│   │   │   ├── UI4_key_pressed.png.meta
│   │   │   ├── UI4_keys_select border.png.meta
│   │   │   ├── UI4_keys_select border_hover.png.meta
│   │   │   ├── UI4_keys_select border_pressed.png.meta
│   │   │   ├── UI4_keys_select.png.meta
│   │   │   ├── UI4_keys_select_hover.png.meta
│   │   │   ├── UI4_keys_select_pressed.png.meta
│   │   │   ├── UI4_layer_big.png.meta
│   │   │   ├── UI4_layer_icon_t.png.meta
│   │   │   ├── UI4_link_icon-143.png.meta
│   │   │   ├── UI4_link_icon.png.meta
│   │   │   ├── UI4_list_icon.png.meta
│   │   │   ├── UI4_lock_icon.png.meta
│   │   │   ├── UI4_log_errors_icon.png.meta
│   │   │   ├── UI4_log_errors_inactive_icon.png.meta
│   │   │   ├── UI4_log_icon.png.meta
│   │   │   ├── UI4_log_info_icon.png.meta
│   │   │   ├── UI4_log_info_inactive_icon.png.meta
│   │   │   ├── UI4_log_warnings_icon.png.meta
│   │   │   ├── UI4_log_warnings_inactive_icon.png.meta
│   │   │   ├── UI4_log_wnd_icon.png.meta
│   │   │   ├── UI4_map_key.png.meta
│   │   │   ├── UI4_map_key_hover.png.meta
│   │   │   ├── UI4_map_key_pressed.png.meta
│   │   │   ├── UI4_menu_new_asset.png.meta
│   │   │   ├── UI4_menu_open_asset.png.meta
│   │   │   ├── UI4_menu_revert_asset.png.meta
│   │   │   ├── UI4_menu_save_as_asset.png.meta
│   │   │   ├── UI4_menu_save_asset.png.meta
│   │   │   ├── UI4_menu_toggled.png.meta
│   │   │   ├── UI4_menu_toggled_hover.png.meta
│   │   │   ├── UI4_menu_toggled_pressed.png.meta
│   │   │   ├── UI4_minus_small_hover.png.meta
│   │   │   ├── UI4_minus_small_pressed.png.meta
│   │   │   ├── UI4_minus_small_regular.png.meta
│   │   │   ├── UI4_move_left.png.meta
│   │   │   ├── UI4_move_right.png.meta
│   │   │   ├── UI4_move_tool.png.meta
│   │   │   ├── UI4_non_loop_anim_hover.png.meta
│   │   │   ├── UI4_non_loop_anim_pressed.png.meta
│   │   │   ├── UI4_non_loop_anim_regular.png.meta
│   │   │   ├── UI4_o2_sign.png.meta
│   │   │   ├── UI4_off_dot.png.meta
│   │   │   ├── UI4_on_dot.png.meta
│   │   │   ├── UI4_on_off_dot.png.meta
│   │   │   ├── UI4_other_type.png.meta
│   │   │   ├── UI4_panel_button.png.meta
│   │   │   ├── UI4_panel_button_focus.png.meta
│   │   │   ├── UI4_panel_button_pressed.png.meta
│   │   │   ├── UI4_panel_button_select.png.meta
│   │   │   ├── UI4_panel_subpanel_bk.png.meta
│   │   │   ├── UI4_panel_subpanel_pressed.png.meta
│   │   │   ├── UI4_panel_subpanel_select.png.meta
│   │   │   ├── UI4_path_tool.png.meta
│   │   │   ├── UI4_pause_btn_inactive.png.meta
│   │   │   ├── UI4_pause_btn_pressed.png.meta
│   │   │   ├── UI4_pause_btn_regular.png.meta
│   │   │   ├── UI4_pause_btn_select .png.meta
│   │   │   ├── UI4_pause_btn_select.png.meta
│   │   │   ├── UI4_pause_green.png.meta
│   │   │   ├── UI4_pause_green_pressed.png.meta
│   │   │   ├── UI4_pause_green_selected.png.meta
│   │   │   ├── UI4_pencil_icon_green.png.meta
│   │   │   ├── UI4_pivot.png.meta
│   │   │   ├── UI4_pivot_icon.png.meta
│   │   │   ├── UI4_pivot_pressed.png.meta
│   │   │   ├── UI4_pivot_select.png.meta
│   │   │   ├── UI4_play_anim_hover.png.meta
│   │   │   ├── UI4_play_anim_pressed.png.meta
│   │   │   ├── UI4_play_anim_regular.png.meta
│   │   │   ├── UI4_play_btn_pressed.png.meta
│   │   │   ├── UI4_play_btn_regular.png.meta
│   │   │   ├── UI4_play_btn_select.png.meta
│   │   │   ├── UI4_play_green.png.meta
│   │   │   ├── UI4_play_green_pressed.png.meta
│   │   │   ├── UI4_play_green_selected.png.meta
│   │   │   ├── UI4_play_panel_bk.png.meta
│   │   │   ├── UI4_plus_small_hover.png.meta
│   │   │   ├── UI4_plus_small_pressed.png.meta
│   │   │   ├── UI4_plus_small_regular.png.meta
│   │   │   ├── UI4_position_icon.png.meta
│   │   │   ├── UI4_prefab_link_big.png.meta
│   │   │   ├── UI4_preview_anim.png.meta
│   │   │   ├── UI4_red_edit_box.png.meta
│   │   │   ├── UI4_remove_asset_instance.png.meta
│   │   │   ├── UI4_remove_asset_instance_hover.png.meta
│   │   │   ├── UI4_remove_asset_instance_pressed.png.meta
│   │   │   ├── UI4_revert.png.meta
│   │   │   ├── UI4_revert_prefab.png.meta
│   │   │   ├── UI4_revert_prefab_pressed.png.meta
│   │   │   ├── UI4_revert_prefab_select.png.meta
│   │   │   ├── UI4_rewind_left.png.meta
│   │   │   ├── UI4_rewind_right.png.meta
│   │   │   ├── UI4_rotate_hover.png.meta
│   │   │   ├── UI4_rotate_icon.png.meta
│   │   │   ├── UI4_rotate_pressed.png.meta
│   │   │   ├── UI4_rotate_regular.png.meta
│   │   │   ├── UI4_rotate_tool.png.meta
│   │   │   ├── UI4_round_field.png.meta
│   │   │   ├── UI4_round_field_focused.png.meta
│   │   │   ├── UI4_round_field_gray.png.meta
│   │   │   ├── UI4_round_field_gray_pressed.png.meta
│   │   │   ├── UI4_round_field_gray_select.png.meta
│   │   │   ├── UI4_round_field_pressed.png.meta
│   │   │   ├── UI4_round_field_select.png.meta
│   │   │   ├── UI4_save_asset_instance.png.meta
│   │   │   ├── UI4_save_asset_instance_hover.png.meta
│   │   │   ├── UI4_save_asset_instance_pressed.png.meta
│   │   │   ├── UI4_save_gray copy.png.meta
│   │   │   ├── UI4_save_gray.png.meta
│   │   │   ├── UI4_save_gray_pressed.png.meta
│   │   │   ├── UI4_scale_icon.png.meta
│   │   │   ├── UI4_scale_tool.png.meta
│   │   │   ├── UI4_scene_icon.png.meta
│   │   │   ├── UI4_search_pressed.png.meta
│   │   │   ├── UI4_search_regular.png.meta
│   │   │   ├── UI4_search_select.png.meta
│   │   │   ├── UI4_select_tool.png.meta
│   │   │   ├── UI4_selected_key.png.meta
│   │   │   ├── UI4_selected_key_hover.png.meta
│   │   │   ├── UI4_selected_key_pressed.png.meta
│   │   │   ├── UI4_selected_map_key.png.meta
│   │   │   ├── UI4_selected_map_key_hover.png.meta
│   │   │   ├── UI4_selected_map_key_pressed.png.meta
│   │   │   ├── UI4_selection_frame.png.meta
│   │   │   ├── UI4_shadow_separator.png.meta
│   │   │   ├── UI4_shear_icon.png.meta
│   │   │   ├── UI4_small_panel_back.png.meta
│   │   │   ├── UI4_small_panel_down_back.png.meta
│   │   │   ├── UI4_small_trash_icon.png.meta
│   │   │   ├── UI4_square_button.png.meta
│   │   │   ├── UI4_square_button_pressed.png.meta
│   │   │   ├── UI4_square_button_select.png.meta
│   │   │   ├── UI4_square_field.png.meta
│   │   │   ├── UI4_step_btn_pressed .png.meta
│   │   │   ├── UI4_step_btn_pressed.png.meta
│   │   │   ├── UI4_step_btn_regular .png.meta
│   │   │   ├── UI4_step_btn_regular.png.meta
│   │   │   ├── UI4_step_btn_select.png.meta
│   │   │   ├── UI4_stop_anim_hover.png.meta
│   │   │   ├── UI4_stop_anim_pressed.png.meta
│   │   │   ├── UI4_stop_anim_regular.png.meta
│   │   │   ├── UI4_stop_btn_pressed.png.meta
│   │   │   ├── UI4_stop_btn_regular.png.meta
│   │   │   ├── UI4_stop_btn_select.png.meta
│   │   │   ├── UI4_sub_track.png.meta
│   │   │   ├── UI4_tag_big.png.meta
│   │   │   ├── UI4_time_line.png.meta
│   │   │   ├── UI4_time_line_hover.png.meta
│   │   │   ├── UI4_time_line_left.png.meta
│   │   │   ├── UI4_time_line_pressed.png.meta
│   │   │   ├── UI4_time_line_right.png.meta
│   │   │   ├── UI4_time_line_right_hover.png.meta
│   │   │   ├── UI4_time_line_right_pressed.png.meta
│   │   │   ├── UI4_trach_icon.png.meta
│   │   │   ├── UI4_transform_icon.png.meta
│   │   │   ├── UI4_transform_icon_white.png.meta
│   │   │   ├── UI4_tree_icon-223.png.meta
│   │   │   ├── UI4_tree_icon-61.png.meta
│   │   │   ├── UI4_tree_icon.png.meta
│   │   │   ├── UI4_tree_wnd_icon.png.meta
│   │   │   ├── UI4_unlock_icon.png.meta
│   │   │   ├── UI4_vector_type.png.meta
│   │   │   ├── UI4_weight_tool.png.meta
│   │   │   ├── UI4_window_frame_docked.png.meta
│   │   │   ├── UI4_window_frame_docked_tab.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_active_back copy.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_back.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_inactive.png.meta
│   │   │   ├── UI4_window_frame_regular.png.meta
│   │   │   ├── UI_Background.png.meta
│   │   │   ├── UI_Box_focus.png.meta
│   │   │   ├── UI_Box_pressed.png.meta
│   │   │   ├── UI_Box_regular.png.meta
│   │   │   ├── UI_Box_select.png.meta
│   │   │   ├── UI_Check_bk.png.meta
│   │   │   ├── UI_Check_bk_focus.png.meta
│   │   │   ├── UI_Check_bk_pressed.png.meta
│   │   │   ├── UI_Check_bk_select.png.meta
│   │   │   ├── UI_Check_unknown.png.meta
│   │   │   ├── UI_Ckeck.png.meta
│   │   │   ├── UI_Close_button_pressed.png.meta
│   │   │   ├── UI_Close_button_regular.png.meta
│   │   │   ├── UI_Close_button_select.png.meta
│   │   │   ├── UI_Context_menu.png.meta
│   │   │   ├── UI_Context_menu_select copy.png.meta
│   │   │   ├── UI_Context_menu_select.png.meta
│   │   │   ├── UI_Context_menu_white.png.meta
│   │   │   ├── UI_Down_icn.png.meta
│   │   │   ├── UI_Editbox_focus.png.meta
│   │   │   ├── UI_Editbox_pressed.png.meta
│   │   │   ├── UI_Editbox_regular.png.meta
│   │   │   ├── UI_Editbox_select.png.meta
│   │   │   ├── UI_Hor_scrollbar_bk.png.meta
│   │   │   ├── UI_Hor_scrollhandle_pressed.png.meta
│   │   │   ├── UI_Hor_scrollhandle_regular.png.meta
│   │   │   ├── UI_Hor_scrollhandle_select.png.meta
│   │   │   ├── UI_ListBox_selection_hover.png.meta
│   │   │   ├── UI_ListBox_selection_pressed.png.meta
│   │   │   ├── UI_ListBox_selection_regular.png.meta
│   │   │   ├── UI_Options_button_pressed.png.meta
│   │   │   ├── UI_Options_button_regular.png.meta
│   │   │   ├── UI_Options_button_select.png.meta
│   │   │   ├── UI_Radio.png.meta
│   │   │   ├── UI_Radio_bk.png.meta
│   │   │   ├── UI_Radio_bk_focus.png.meta
│   │   │   ├── UI_Radio_bk_pressed.png.meta
│   │   │   ├── UI_Radio_bk_select.png.meta
│   │   │   ├── UI_Right_icn.png.meta
│   │   │   ├── UI_Right_icn_pressed.png.meta
│   │   │   ├── UI_Right_icn_select.png.meta
│   │   │   ├── UI_Separator.png.meta
│   │   │   ├── UI_ToolsPanel_bk.png.meta
│   │   │   ├── UI_Up_Menu.png.meta
│   │   │   ├── UI_Up_Menu_pressed.png.meta
│   │   │   ├── UI_Up_Menu_select.png.meta
│   │   │   ├── UI_Ver_scrollbar_bk.png.meta
│   │   │   ├── UI_Ver_scrollhandle_pressed.png.meta
│   │   │   ├── UI_Ver_scrollhandle_regular.png.meta
│   │   │   ├── UI_Ver_scrollhandle_select.png.meta
│   │   │   ├── UI_Ver_separator.png.meta
│   │   │   ├── UI_Window_place.png.meta
│   │   │   ├── UI_brush_tool.png.meta
│   │   │   ├── UI_brush_tool_pressed.png.meta
│   │   │   ├── UI_brush_tool_select.png.meta
│   │   │   ├── UI_button_focus.png.meta
│   │   │   ├── UI_button_pressed.png.meta
│   │   │   ├── UI_button_regular.png.meta
│   │   │   ├── UI_button_select.png.meta
│   │   │   ├── UI_frame_tool.png.meta
│   │   │   ├── UI_frame_tool_pressed.png.meta
│   │   │   ├── UI_frame_tool_select.png.meta
│   │   │   ├── UI_link_icon.png.meta
│   │   │   ├── UI_list_icon.png.meta
│   │   │   ├── UI_lock_icon.png.meta
│   │   │   ├── UI_move_tool.png.meta
│   │   │   ├── UI_move_tool_pressed.png.meta
│   │   │   ├── UI_move_tool_select.png.meta
│   │   │   ├── UI_o2_sign.png.meta
│   │   │   ├── UI_off_dot.png.meta
│   │   │   ├── UI_on_dot.png.meta
│   │   │   ├── UI_on_off_dot.png.meta
│   │   │   ├── UI_panel_button.png.meta
│   │   │   ├── UI_panel_button_focus.png.meta
│   │   │   ├── UI_panel_button_pressed.png.meta
│   │   │   ├── UI_panel_button_select.png.meta
│   │   │   ├── UI_panel_subpanel_bk.png.meta
│   │   │   ├── UI_panel_subpanel_pressed.png.meta
│   │   │   ├── UI_panel_subpanel_select.png.meta
│   │   │   ├── UI_pause_btn_inactive.png.meta
│   │   │   ├── UI_pause_btn_pressed.png.meta
│   │   │   ├── UI_pause_btn_regular.png.meta
│   │   │   ├── UI_pause_btn_select.png.meta
│   │   │   ├── UI_play_btn_regular.png.meta
│   │   │   ├── UI_play_btn_select copy.png.meta
│   │   │   ├── UI_play_btn_select.png.meta
│   │   │   ├── UI_play_panel_bk.png.meta
│   │   │   ├── UI_rotate_tool.png.meta
│   │   │   ├── UI_rotate_tool_pressed.png.meta
│   │   │   ├── UI_rotate_tool_select.png.meta
│   │   │   ├── UI_scale_tool.png.meta
│   │   │   ├── UI_scale_tool_pressed.png.meta
│   │   │   ├── UI_scale_tool_select.png.meta
│   │   │   ├── UI_search_pressed.png.meta
│   │   │   ├── UI_search_regular.png.meta
│   │   │   ├── UI_search_select.png.meta
│   │   │   ├── UI_select_tool.png.meta
│   │   │   ├── UI_select_tool_pressed.png.meta
│   │   │   ├── UI_select_tool_select.png.meta
│   │   │   ├── UI_square_button.png.meta
│   │   │   ├── UI_square_button_pressed.png.meta
│   │   │   ├── UI_square_button_select.png.meta
│   │   │   ├── UI_square_field.png.meta
│   │   │   ├── UI_step_btn_pressed.png.meta
│   │   │   ├── UI_step_btn_regular.png.meta
│   │   │   ├── UI_step_btn_select.png.meta
│   │   │   ├── UI_stop_btn_pressed.png.meta
│   │   │   ├── UI_stop_btn_regular.png.meta
│   │   │   ├── UI_stop_btn_select.png.meta
│   │   │   ├── UI_tree_icon.png.meta
│   │   │   ├── UI_unlock_icon.png.meta
│   │   │   ├── UI_window_frame_docked.png.meta
│   │   │   ├── UI_window_frame_docked_tab.png.meta
│   │   │   ├── UI_window_frame_docked_tab_active_back copy.png.meta
│   │   │   ├── UI_window_frame_docked_tab_back.png.meta
│   │   │   ├── UI_window_frame_docked_tab_inactive.png.meta
│   │   │   ├── UI_window_frame_regular.png.meta
│   │   │   ├── circle_hole_handle.png.meta
│   │   │   ├── function_icon.png.meta
│   │   │   ├── hor_hole_handle.png.meta
│   │   │   ├── hor_slice_line.png.meta
│   │   │   ├── ver_hole_handle.png.meta
│   │   │   └── ver_slice_line.png.meta
│   │   └── ui.meta
│   ├── Platforms/
│   │   ├── Mac/
│   │   │   └── Editor.xcodeproj/
│   │   │       ├── project.pbxproj
│   │   │       └── xcuserdata/
│   │   │           └── playrix.xcuserdatad/
│   │   │               └── xcschemes/
│   │   │                   └── xcschememanagement.plist
│   │   └── Windows/
│   │       ├── Editor.vcxproj
│   │       ├── Editor.vcxproj.filters
│   │       └── resource.h
│   └── Sources/
│       └── o2Editor/
│           ├── Actions/
│           │   ├── ActionsList.cpp
│           │   ├── ActionsList.h
│           │   ├── Create.cpp
│           │   ├── Create.h
│           │   ├── Delete.cpp
│           │   ├── Delete.h
│           │   ├── Enable.cpp
│           │   ├── Enable.h
│           │   ├── IAction.cpp
│           │   ├── IAction.h
│           │   ├── Lock.cpp
│           │   ├── Lock.h
│           │   ├── PropertyChange.cpp
│           │   ├── PropertyChange.h
│           │   ├── Reparent.cpp
│           │   ├── Reparent.h
│           │   ├── Select.cpp
│           │   ├── Select.h
│           │   ├── Transform.cpp
│           │   └── Transform.h
│           ├── Dialogs/
│           │   ├── ColorPickerDlg.cpp
│           │   ├── ColorPickerDlg.h
│           │   ├── CurveEditorDlg.cpp
│           │   ├── CurveEditorDlg.h
│           │   ├── EditNameDlg.cpp
│           │   ├── EditNameDlg.h
│           │   ├── KeyEditDlg.cpp
│           │   ├── KeyEditDlg.h
│           │   ├── System/
│           │   │   ├── Linux/
│           │   │   │   └── OpenSaveDialog.cpp
│           │   │   ├── Mac/
│           │   │   │   └── OpenSaveDialog.mm
│           │   │   ├── OpenSaveDialog.h
│           │   │   └── Windows/
│           │   │       └── OpenSaveDialog.cpp
│           │   ├── YesNoCancelDlg.cpp
│           │   └── YesNoCancelDlg.h
│           ├── EditorApplication.cpp
│           ├── EditorApplication.h
│           ├── EditorConfig.cpp
│           ├── EditorConfig.h
│           ├── MenuPanel.cpp
│           ├── MenuPanel.h
│           ├── Properties/
│           │   ├── Basic/
│           │   │   ├── ActorProperty.cpp
│           │   │   ├── ActorProperty.h
│           │   │   ├── AssetProperty.cpp
│           │   │   ├── AssetProperty.h
│           │   │   ├── BooleanProperty.cpp
│           │   │   ├── BooleanProperty.h
│           │   │   ├── BorderFloatProperty.cpp
│           │   │   ├── BorderFloatProperty.h
│           │   │   ├── BorderIntProperty.cpp
│           │   │   ├── BorderIntProperty.h
│           │   │   ├── ColorGradientProperty.cpp
│           │   │   ├── ColorGradientProperty.h
│           │   │   ├── ColorProperty.cpp
│           │   │   ├── ColorProperty.h
│           │   │   ├── ComponentProperty.cpp
│           │   │   ├── ComponentProperty.h
│           │   │   ├── CurveProperty.cpp
│           │   │   ├── CurveProperty.h
│           │   │   ├── EnumMaskProperty.h
│           │   │   ├── EnumProperty.cpp
│           │   │   ├── EnumProperty.h
│           │   │   ├── FloatProperty.cpp
│           │   │   ├── FloatProperty.h
│           │   │   ├── FunctionProperty.cpp
│           │   │   ├── FunctionProperty.h
│           │   │   ├── IntegerProperty.cpp
│           │   │   ├── IntegerProperty.h
│           │   │   ├── ObjectProperty.cpp
│           │   │   ├── ObjectProperty.h
│           │   │   ├── ObjectPtrProperty.cpp
│           │   │   ├── ObjectPtrProperty.h
│           │   │   ├── RectangleFloatProperty.cpp
│           │   │   ├── RectangleFloatProperty.h
│           │   │   ├── RectangleIntProperty.cpp
│           │   │   ├── RectangleIntProperty.h
│           │   │   ├── SceneLayerRefProperty.cpp
│           │   │   ├── SceneLayerRefProperty.h
│           │   │   ├── SceneLayersListProperty.cpp
│           │   │   ├── SceneLayersListProperty.h
│           │   │   ├── ScriptValueProperty.cpp
│           │   │   ├── ScriptValueProperty.h
│           │   │   ├── StringProperty.cpp
│           │   │   ├── StringProperty.h
│           │   │   ├── TagProperty.cpp
│           │   │   ├── TagProperty.h
│           │   │   ├── Vector2FloatProperty.cpp
│           │   │   ├── Vector2FloatProperty.h
│           │   │   ├── Vector2IntProperty.cpp
│           │   │   ├── Vector2IntProperty.h
│           │   │   ├── VectorProperty.cpp
│           │   │   ├── VectorProperty.h
│           │   │   ├── WStringProperty.cpp
│           │   │   └── WStringProperty.h
│           │   ├── IObjectPropertiesViewer.cpp
│           │   ├── IObjectPropertiesViewer.h
│           │   ├── IPropertyField.cpp
│           │   ├── IPropertyField.h
│           │   ├── ObjectViewer.cpp
│           │   ├── ObjectViewer.h
│           │   ├── Objects/
│           │   │   ├── Actors/
│           │   │   │   ├── CameraActorViewer.cpp
│           │   │   │   └── CameraActorViewer.h
│           │   │   ├── Assets/
│           │   │   │   ├── ImageAssetViewer.cpp
│           │   │   │   ├── ImageAssetViewer.h
│           │   │   │   ├── VectorFontAssetViewer.cpp
│           │   │   │   └── VectorFontAssetViewer.h
│           │   │   ├── Components/
│           │   │   │   ├── AnimationStateViewer.cpp
│           │   │   │   ├── AnimationStateViewer.h
│           │   │   │   ├── MeshComponentViewer.cpp
│           │   │   │   ├── MeshComponentViewer.h
│           │   │   │   ├── ParticlesEmitterComponentViewer.cpp
│           │   │   │   ├── ParticlesEmitterComponentViewer.h
│           │   │   │   ├── SkinnedMesh/
│           │   │   │   │   ├── SkinningMeshBoneComponentViewer.cpp
│           │   │   │   │   ├── SkinningMeshBoneComponentViewer.h
│           │   │   │   │   ├── SkinningMeshComponentViewer.cpp
│           │   │   │   │   ├── SkinningMeshComponentViewer.h
│           │   │   │   │   ├── SkinningMeshEditorLayer.cpp
│           │   │   │   │   └── SkinningMeshEditorLayer.h
│           │   │   │   ├── SplineColliderViewer.cpp
│           │   │   │   └── SplineColliderViewer.h
│           │   │   ├── DefaultObjectPropertiesViewer.cpp
│           │   │   ├── DefaultObjectPropertiesViewer.h
│           │   │   ├── ParticlesSplineEffectViewer.cpp
│           │   │   ├── ParticlesSplineEffectViewer.h
│           │   │   ├── SpriteViewer.cpp
│           │   │   ├── SpriteViewer.h
│           │   │   ├── TextViewer.cpp
│           │   │   └── TextViewer.h
│           │   ├── Properties.cpp
│           │   ├── Properties.h
│           │   ├── PropertiesContext.cpp
│           │   └── PropertiesContext.h
│           ├── Tools/
│           │   ├── CustomFrameTool.cpp
│           │   ├── CustomFrameTool.h
│           │   ├── FrameTool.cpp
│           │   ├── FrameTool.h
│           │   ├── IEditorTool.cpp
│           │   ├── IEditorTool.h
│           │   ├── ITransformTool.cpp
│           │   ├── ITransformTool.h
│           │   ├── MeshTopologyTool.cpp
│           │   ├── MeshTopologyTool.h
│           │   ├── MeshWeightsTool.cpp
│           │   ├── MeshWeightsTool.h
│           │   ├── MoveTool.cpp
│           │   ├── MoveTool.h
│           │   ├── RotateTool.cpp
│           │   ├── RotateTool.h
│           │   ├── ScaleTool.cpp
│           │   ├── ScaleTool.h
│           │   ├── SelectionTool.cpp
│           │   ├── SelectionTool.h
│           │   ├── SkeletonTool.cpp
│           │   ├── SkeletonTool.h
│           │   ├── SplineTool.cpp
│           │   └── SplineTool.h
│           ├── ToolsPanel.cpp
│           ├── ToolsPanel.h
│           ├── UI/
│           │   ├── CurveEditor/
│           │   │   ├── CurveActions.cpp
│           │   │   ├── CurveActions.h
│           │   │   ├── CurvesEditor.cpp
│           │   │   └── CurvesEditor.h
│           │   ├── CurvePreview.cpp
│           │   ├── CurvePreview.h
│           │   ├── FrameScrollView.cpp
│           │   ├── FrameScrollView.h
│           │   ├── ImageSlicesEditorWidget.cpp
│           │   ├── ImageSlicesEditorWidget.h
│           │   ├── ScrollView.cpp
│           │   ├── ScrollView.h
│           │   ├── SplineEditor/
│           │   │   ├── SplineEditor.cpp
│           │   │   └── SplineEditor.h
│           │   ├── SpoilerWithHead.cpp
│           │   ├── SpoilerWithHead.h
│           │   ├── Style/
│           │   │   ├── BasicUIStyle.cpp
│           │   │   ├── BasicUIStyle.h
│           │   │   ├── EditorUIStyle.cpp
│           │   │   └── EditorUIStyle.h
│           │   ├── TexturePreview.cpp
│           │   └── TexturePreview.h
│           ├── UIRoot.cpp
│           ├── UIRoot.h
│           ├── Utils/
│           │   ├── CommonTextures.cpp
│           │   └── CommonTextures.h
│           ├── Windows/
│           │   ├── AnimationStateGraphWindow/
│           │   │   ├── AnimationGraphTransitionViewer.cpp
│           │   │   ├── AnimationGraphTransitionViewer.h
│           │   │   ├── AnimationStateGraphEditor.cpp
│           │   │   ├── AnimationStateGraphEditor.h
│           │   │   ├── AnimationStateGraphWindow.cpp
│           │   │   ├── AnimationStateGraphWindow.h
│           │   │   ├── GraphAnimationStateViewer.cpp
│           │   │   └── GraphAnimationStateViewer.h
│           │   ├── AnimationWindow/
│           │   │   ├── AnimationKeysActions.cpp
│           │   │   ├── AnimationKeysActions.h
│           │   │   ├── AnimationWindow.cpp
│           │   │   ├── AnimationWindow.h
│           │   │   ├── CurvesSheet.cpp
│           │   │   ├── CurvesSheet.h
│           │   │   ├── KeyHandlesSheet.cpp
│           │   │   ├── KeyHandlesSheet.h
│           │   │   ├── PropertiesListDlg.cpp
│           │   │   ├── PropertiesListDlg.h
│           │   │   ├── Timeline.cpp
│           │   │   ├── Timeline.h
│           │   │   ├── TrackControls/
│           │   │   │   ├── AnimationKeyDragHandle.cpp
│           │   │   │   ├── AnimationKeyDragHandle.h
│           │   │   │   ├── AnimationTrackWrapper.h
│           │   │   │   ├── ITrackControl.cpp
│           │   │   │   ├── ITrackControl.h
│           │   │   │   ├── KeyFramesTrackControl.cpp
│           │   │   │   ├── KeyFramesTrackControl.h
│           │   │   │   ├── MapKeyFramesTrackControl.cpp
│           │   │   │   ├── MapKeyFramesTrackControl.h
│           │   │   │   ├── SubTrackControl.cpp
│           │   │   │   ├── SubTrackControl.h
│           │   │   │   ├── Vec2KeyFramesTrackControl.cpp
│           │   │   │   └── Vec2KeyFramesTrackControl.h
│           │   │   ├── Tree.cpp
│           │   │   └── Tree.h
│           │   ├── AssetsWindow/
│           │   │   ├── AssetIcon.cpp
│           │   │   ├── AssetIcon.h
│           │   │   ├── AssetsIconsScroll.cpp
│           │   │   ├── AssetsIconsScroll.h
│           │   │   ├── AssetsWindow.cpp
│           │   │   ├── AssetsWindow.h
│           │   │   ├── FoldersTree.cpp
│           │   │   └── FoldersTree.h
│           │   ├── DockWindowPlace.cpp
│           │   ├── DockWindowPlace.h
│           │   ├── DockableWindow.cpp
│           │   ├── DockableWindow.h
│           │   ├── GameWindow/
│           │   │   ├── GameWindow.cpp
│           │   │   └── GameWindow.h
│           │   ├── IAssetEditorWindow.cpp
│           │   ├── IAssetEditorWindow.h
│           │   ├── IEditorWindow.cpp
│           │   ├── IEditorWindow.h
│           │   ├── LogWindow/
│           │   │   ├── LogWindow.cpp
│           │   │   └── LogWindow.h
│           │   ├── MemoryAnalyzerWindow/
│           │   │   ├── MemoryAnalyzerWindow.cpp
│           │   │   └── MemoryAnalyzerWindow.h
│           │   ├── PropertiesWindow/
│           │   │   ├── ActorsViewer/
│           │   │   │   ├── ActorViewer.cpp
│           │   │   │   ├── ActorViewer.h
│           │   │   │   ├── AddComponentPanel.cpp
│           │   │   │   ├── AddComponentPanel.h
│           │   │   │   ├── DefaultActorComponentViewer.cpp
│           │   │   │   ├── DefaultActorComponentViewer.h
│           │   │   │   ├── DefaultActorHeaderViewer.cpp
│           │   │   │   ├── DefaultActorHeaderViewer.h
│           │   │   │   ├── DefaultActorPropertiesViewer.cpp
│           │   │   │   ├── DefaultActorPropertiesViewer.h
│           │   │   │   ├── DefaultActorTransformViewer.cpp
│           │   │   │   ├── DefaultActorTransformViewer.h
│           │   │   │   ├── IActorComponentViewer.cpp
│           │   │   │   ├── IActorComponentViewer.h
│           │   │   │   ├── IActorHeaderViewer.cpp
│           │   │   │   ├── IActorHeaderViewer.h
│           │   │   │   ├── IActorPropertiesViewer.cpp
│           │   │   │   ├── IActorPropertiesViewer.h
│           │   │   │   ├── IActorTransformViewer.cpp
│           │   │   │   └── IActorTransformViewer.h
│           │   │   ├── AssetPropertiesViewer.cpp
│           │   │   ├── AssetPropertiesViewer.h
│           │   │   ├── DefaultPropertiesViewer.cpp
│           │   │   ├── DefaultPropertiesViewer.h
│           │   │   ├── IPropertiesViewer.cpp
│           │   │   ├── IPropertiesViewer.h
│           │   │   ├── PropertiesWindow.cpp
│           │   │   ├── PropertiesWindow.h
│           │   │   └── WidgetLayerViewer/
│           │   │       ├── DefaultWidgetLayerHeadViewer.cpp
│           │   │       ├── DefaultWidgetLayerHeadViewer.h
│           │   │       ├── DefaultWidgetLayerLayoutViewer.cpp
│           │   │       ├── DefaultWidgetLayerLayoutViewer.h
│           │   │       ├── DefaultWidgetLayerPropertiesViewer.cpp
│           │   │       ├── DefaultWidgetLayerPropertiesViewer.h
│           │   │       ├── IWidgetLayerHeadViewer.cpp
│           │   │       ├── IWidgetLayerHeadViewer.h
│           │   │       ├── IWidgetLayerLayoutViewer.cpp
│           │   │       ├── IWidgetLayerLayoutViewer.h
│           │   │       ├── IWidgetLayerPropertiesViewer.cpp
│           │   │       ├── IWidgetLayerPropertiesViewer.h
│           │   │       ├── WidgetLayerViewer.cpp
│           │   │       └── WidgetLayerViewer.h
│           │   ├── SceneWindow/
│           │   │   ├── LayersPopup.cpp
│           │   │   ├── LayersPopup.h
│           │   │   ├── SceneDragHandle.cpp
│           │   │   ├── SceneDragHandle.h
│           │   │   ├── SceneEditScreen.cpp
│           │   │   ├── SceneEditScreen.h
│           │   │   ├── SceneEditorLayer.h
│           │   │   ├── SceneWindow.cpp
│           │   │   └── SceneWindow.h
│           │   ├── TreeWindow/
│           │   │   ├── DrawOrderTree.cpp
│           │   │   ├── DrawOrderTree.h
│           │   │   ├── SceneHierarchyTree.cpp
│           │   │   ├── SceneHierarchyTree.h
│           │   │   ├── TreeWindow.cpp
│           │   │   └── TreeWindow.h
│           │   ├── WindowsLayout.cpp
│           │   ├── WindowsLayout.h
│           │   ├── WindowsManager.cpp
│           │   └── WindowsManager.h
│           ├── o2Editor.cpp
│           ├── stdafx.cpp
│           └── stdafx.h
├── FindOpenGLES2.cmake
├── Framework/
│   ├── 3rdPartyLibs/
│   │   ├── Box2D/
│   │   │   ├── Box2D.h
│   │   │   ├── Box2DConfig.cmake
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Collision/
│   │   │   │   ├── Shapes/
│   │   │   │   │   ├── b2ChainShape.cpp
│   │   │   │   │   ├── b2ChainShape.h
│   │   │   │   │   ├── b2CircleShape.cpp
│   │   │   │   │   ├── b2CircleShape.h
│   │   │   │   │   ├── b2EdgeShape.cpp
│   │   │   │   │   ├── b2EdgeShape.h
│   │   │   │   │   ├── b2PolygonShape.cpp
│   │   │   │   │   ├── b2PolygonShape.h
│   │   │   │   │   └── b2Shape.h
│   │   │   │   ├── b2BroadPhase.cpp
│   │   │   │   ├── b2BroadPhase.h
│   │   │   │   ├── b2CollideCircle.cpp
│   │   │   │   ├── b2CollideEdge.cpp
│   │   │   │   ├── b2CollidePolygon.cpp
│   │   │   │   ├── b2Collision.cpp
│   │   │   │   ├── b2Collision.h
│   │   │   │   ├── b2Distance.cpp
│   │   │   │   ├── b2Distance.h
│   │   │   │   ├── b2DynamicTree.cpp
│   │   │   │   ├── b2DynamicTree.h
│   │   │   │   ├── b2TimeOfImpact.cpp
│   │   │   │   └── b2TimeOfImpact.h
│   │   │   ├── Common/
│   │   │   │   ├── b2BlockAllocator.cpp
│   │   │   │   ├── b2BlockAllocator.h
│   │   │   │   ├── b2Draw.cpp
│   │   │   │   ├── b2Draw.h
│   │   │   │   ├── b2GrowableStack.h
│   │   │   │   ├── b2Math.cpp
│   │   │   │   ├── b2Math.h
│   │   │   │   ├── b2Settings.cpp
│   │   │   │   ├── b2Settings.h
│   │   │   │   ├── b2StackAllocator.cpp
│   │   │   │   ├── b2StackAllocator.h
│   │   │   │   ├── b2Timer.cpp
│   │   │   │   └── b2Timer.h
│   │   │   ├── Dynamics/
│   │   │   │   ├── Contacts/
│   │   │   │   │   ├── b2ChainAndCircleContact.cpp
│   │   │   │   │   ├── b2ChainAndCircleContact.h
│   │   │   │   │   ├── b2ChainAndPolygonContact.cpp
│   │   │   │   │   ├── b2ChainAndPolygonContact.h
│   │   │   │   │   ├── b2CircleContact.cpp
│   │   │   │   │   ├── b2CircleContact.h
│   │   │   │   │   ├── b2Contact.cpp
│   │   │   │   │   ├── b2Contact.h
│   │   │   │   │   ├── b2ContactSolver.cpp
│   │   │   │   │   ├── b2ContactSolver.h
│   │   │   │   │   ├── b2EdgeAndCircleContact.cpp
│   │   │   │   │   ├── b2EdgeAndCircleContact.h
│   │   │   │   │   ├── b2EdgeAndPolygonContact.cpp
│   │   │   │   │   ├── b2EdgeAndPolygonContact.h
│   │   │   │   │   ├── b2PolygonAndCircleContact.cpp
│   │   │   │   │   ├── b2PolygonAndCircleContact.h
│   │   │   │   │   ├── b2PolygonContact.cpp
│   │   │   │   │   └── b2PolygonContact.h
│   │   │   │   ├── Joints/
│   │   │   │   │   ├── b2DistanceJoint.cpp
│   │   │   │   │   ├── b2DistanceJoint.h
│   │   │   │   │   ├── b2FrictionJoint.cpp
│   │   │   │   │   ├── b2FrictionJoint.h
│   │   │   │   │   ├── b2GearJoint.cpp
│   │   │   │   │   ├── b2GearJoint.h
│   │   │   │   │   ├── b2Joint.cpp
│   │   │   │   │   ├── b2Joint.h
│   │   │   │   │   ├── b2MotorJoint.cpp
│   │   │   │   │   ├── b2MotorJoint.h
│   │   │   │   │   ├── b2MouseJoint.cpp
│   │   │   │   │   ├── b2MouseJoint.h
│   │   │   │   │   ├── b2PrismaticJoint.cpp
│   │   │   │   │   ├── b2PrismaticJoint.h
│   │   │   │   │   ├── b2PulleyJoint.cpp
│   │   │   │   │   ├── b2PulleyJoint.h
│   │   │   │   │   ├── b2RevoluteJoint.cpp
│   │   │   │   │   ├── b2RevoluteJoint.h
│   │   │   │   │   ├── b2RopeJoint.cpp
│   │   │   │   │   ├── b2RopeJoint.h
│   │   │   │   │   ├── b2WeldJoint.cpp
│   │   │   │   │   ├── b2WeldJoint.h
│   │   │   │   │   ├── b2WheelJoint.cpp
│   │   │   │   │   └── b2WheelJoint.h
│   │   │   │   ├── b2Body.cpp
│   │   │   │   ├── b2Body.h
│   │   │   │   ├── b2ContactManager.cpp
│   │   │   │   ├── b2ContactManager.h
│   │   │   │   ├── b2Fixture.cpp
│   │   │   │   ├── b2Fixture.h
│   │   │   │   ├── b2Island.cpp
│   │   │   │   ├── b2Island.h
│   │   │   │   ├── b2TimeStep.h
│   │   │   │   ├── b2World.cpp
│   │   │   │   ├── b2World.h
│   │   │   │   ├── b2WorldCallbacks.cpp
│   │   │   │   └── b2WorldCallbacks.h
│   │   │   └── Rope/
│   │   │       ├── b2Rope.cpp
│   │   │       └── b2Rope.h
│   │   ├── CDT/
│   │   │   ├── LICENSE
│   │   │   ├── extras/
│   │   │   │   ├── InitializeWithGrid.h
│   │   │   │   └── VerifyTopology.h
│   │   │   ├── include/
│   │   │   │   ├── CDT.h
│   │   │   │   ├── CDT.hpp
│   │   │   │   ├── CDTUtils.h
│   │   │   │   ├── CDTUtils.hpp
│   │   │   │   ├── KDTree.h
│   │   │   │   ├── LocatorKDTree.h
│   │   │   │   ├── predicates.h
│   │   │   │   └── remove_at.hpp
│   │   │   └── src/
│   │   │       └── CDT.cpp
│   │   ├── CMakeLists.txt
│   │   ├── CheckGCCVersion.cmake
│   │   ├── FreeType/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── devel/
│   │   │   │   ├── ft2build.h
│   │   │   │   └── ftoption.h
│   │   │   ├── freetype.cmake
│   │   │   ├── include/
│   │   │   │   ├── config/
│   │   │   │   │   ├── ftconfig.h
│   │   │   │   │   ├── ftheader.h
│   │   │   │   │   ├── ftmodule.h
│   │   │   │   │   ├── ftoption.h
│   │   │   │   │   └── ftstdlib.h
│   │   │   │   ├── freetype.h
│   │   │   │   ├── ft2build.h
│   │   │   │   ├── ftadvanc.h
│   │   │   │   ├── ftautoh.h
│   │   │   │   ├── ftbbox.h
│   │   │   │   ├── ftbdf.h
│   │   │   │   ├── ftbitmap.h
│   │   │   │   ├── ftbzip2.h
│   │   │   │   ├── ftcache.h
│   │   │   │   ├── ftcffdrv.h
│   │   │   │   ├── ftchapters.h
│   │   │   │   ├── ftcid.h
│   │   │   │   ├── fterrdef.h
│   │   │   │   ├── fterrors.h
│   │   │   │   ├── ftgasp.h
│   │   │   │   ├── ftglyph.h
│   │   │   │   ├── ftgxval.h
│   │   │   │   ├── ftgzip.h
│   │   │   │   ├── ftimage.h
│   │   │   │   ├── ftincrem.h
│   │   │   │   ├── ftlcdfil.h
│   │   │   │   ├── ftlist.h
│   │   │   │   ├── ftlzw.h
│   │   │   │   ├── ftmac.h
│   │   │   │   ├── ftmm.h
│   │   │   │   ├── ftmodapi.h
│   │   │   │   ├── ftmoderr.h
│   │   │   │   ├── ftotval.h
│   │   │   │   ├── ftoutln.h
│   │   │   │   ├── ftpfr.h
│   │   │   │   ├── ftrender.h
│   │   │   │   ├── ftsizes.h
│   │   │   │   ├── ftsnames.h
│   │   │   │   ├── ftstroke.h
│   │   │   │   ├── ftsynth.h
│   │   │   │   ├── ftsystem.h
│   │   │   │   ├── fttrigon.h
│   │   │   │   ├── ftttdrv.h
│   │   │   │   ├── fttypes.h
│   │   │   │   ├── ftwinfnt.h
│   │   │   │   ├── ftxf86.h
│   │   │   │   ├── internal/
│   │   │   │   │   ├── autohint.h
│   │   │   │   │   ├── ftcalc.h
│   │   │   │   │   ├── ftdebug.h
│   │   │   │   │   ├── ftdriver.h
│   │   │   │   │   ├── ftgloadr.h
│   │   │   │   │   ├── ftmemory.h
│   │   │   │   │   ├── ftobjs.h
│   │   │   │   │   ├── ftpic.h
│   │   │   │   │   ├── ftrfork.h
│   │   │   │   │   ├── ftserv.h
│   │   │   │   │   ├── ftstream.h
│   │   │   │   │   ├── fttrace.h
│   │   │   │   │   ├── ftvalid.h
│   │   │   │   │   ├── internal.h
│   │   │   │   │   ├── psaux.h
│   │   │   │   │   ├── pshints.h
│   │   │   │   │   ├── services/
│   │   │   │   │   │   ├── svbdf.h
│   │   │   │   │   │   ├── svcid.h
│   │   │   │   │   │   ├── svgldict.h
│   │   │   │   │   │   ├── svgxval.h
│   │   │   │   │   │   ├── svkern.h
│   │   │   │   │   │   ├── svmm.h
│   │   │   │   │   │   ├── svotval.h
│   │   │   │   │   │   ├── svpfr.h
│   │   │   │   │   │   ├── svpostnm.h
│   │   │   │   │   │   ├── svprop.h
│   │   │   │   │   │   ├── svpscmap.h
│   │   │   │   │   │   ├── svpsinfo.h
│   │   │   │   │   │   ├── svsfnt.h
│   │   │   │   │   │   ├── svttcmap.h
│   │   │   │   │   │   ├── svtteng.h
│   │   │   │   │   │   ├── svttglyf.h
│   │   │   │   │   │   ├── svwinfnt.h
│   │   │   │   │   │   └── svxf86nm.h
│   │   │   │   │   ├── sfnt.h
│   │   │   │   │   ├── t1types.h
│   │   │   │   │   └── tttypes.h
│   │   │   │   ├── t1tables.h
│   │   │   │   ├── ttnameid.h
│   │   │   │   ├── tttables.h
│   │   │   │   ├── tttags.h
│   │   │   │   └── ttunpat.h
│   │   │   └── src/
│   │   │       ├── autofit/
│   │   │       │   ├── afangles.c
│   │   │       │   ├── afangles.h
│   │   │       │   ├── afblue.c
│   │   │       │   ├── afblue.cin
│   │   │       │   ├── afblue.h
│   │   │       │   ├── afblue.hin
│   │   │       │   ├── afcjk.c
│   │   │       │   ├── afcjk.h
│   │   │       │   ├── afcover.h
│   │   │       │   ├── afdummy.c
│   │   │       │   ├── afdummy.h
│   │   │       │   ├── aferrors.h
│   │   │       │   ├── afglobal.c
│   │   │       │   ├── afglobal.h
│   │   │       │   ├── afhints.c
│   │   │       │   ├── afhints.h
│   │   │       │   ├── afindic.c
│   │   │       │   ├── afindic.h
│   │   │       │   ├── aflatin.c
│   │   │       │   ├── aflatin.h
│   │   │       │   ├── aflatin2.c
│   │   │       │   ├── aflatin2.h
│   │   │       │   ├── afloader.c
│   │   │       │   ├── afloader.h
│   │   │       │   ├── afmodule.c
│   │   │       │   ├── afmodule.h
│   │   │       │   ├── afpic.c
│   │   │       │   ├── afpic.h
│   │   │       │   ├── afranges.c
│   │   │       │   ├── afranges.h
│   │   │       │   ├── afscript.h
│   │   │       │   ├── afstyles.h
│   │   │       │   ├── aftypes.h
│   │   │       │   ├── afwarp.c
│   │   │       │   ├── afwarp.h
│   │   │       │   ├── afwrtsys.h
│   │   │       │   ├── autofit.c
│   │   │       │   ├── hbshim.c
│   │   │       │   └── hbshim.h
│   │   │       ├── base/
│   │   │       │   ├── basepic.c
│   │   │       │   ├── basepic.h
│   │   │       │   ├── ftadvanc.c
│   │   │       │   ├── ftapi.c
│   │   │       │   ├── ftbase.c
│   │   │       │   ├── ftbase.h
│   │   │       │   ├── ftbbox.c
│   │   │       │   ├── ftbdf.c
│   │   │       │   ├── ftbitmap.c
│   │   │       │   ├── ftcalc.c
│   │   │       │   ├── ftcid.c
│   │   │       │   ├── ftdbgmem.c
│   │   │       │   ├── ftdebug.c
│   │   │       │   ├── ftfstype.c
│   │   │       │   ├── ftgasp.c
│   │   │       │   ├── ftgloadr.c
│   │   │       │   ├── ftglyph.c
│   │   │       │   ├── ftgxval.c
│   │   │       │   ├── ftinit.c
│   │   │       │   ├── ftlcdfil.c
│   │   │       │   ├── ftmac.c
│   │   │       │   ├── ftmm.c
│   │   │       │   ├── ftobjs.c
│   │   │       │   ├── ftotval.c
│   │   │       │   ├── ftoutln.c
│   │   │       │   ├── ftpatent.c
│   │   │       │   ├── ftpfr.c
│   │   │       │   ├── ftpic.c
│   │   │       │   ├── ftrfork.c
│   │   │       │   ├── ftsnames.c
│   │   │       │   ├── ftstream.c
│   │   │       │   ├── ftstroke.c
│   │   │       │   ├── ftsynth.c
│   │   │       │   ├── ftsystem.c
│   │   │       │   ├── fttrigon.c
│   │   │       │   ├── fttype1.c
│   │   │       │   ├── ftutil.c
│   │   │       │   ├── ftwinfnt.c
│   │   │       │   ├── ftxf86.c
│   │   │       │   ├── md5.c
│   │   │       │   └── md5.h
│   │   │       ├── bdf/
│   │   │       │   ├── README
│   │   │       │   ├── bdf.c
│   │   │       │   ├── bdf.h
│   │   │       │   ├── bdfdrivr.c
│   │   │       │   ├── bdfdrivr.h
│   │   │       │   ├── bdferror.h
│   │   │       │   └── bdflib.c
│   │   │       ├── bzip2/
│   │   │       │   └── ftbzip2.c
│   │   │       ├── cache/
│   │   │       │   ├── ftcache.c
│   │   │       │   ├── ftcbasic.c
│   │   │       │   ├── ftccache.c
│   │   │       │   ├── ftccache.h
│   │   │       │   ├── ftccback.h
│   │   │       │   ├── ftccmap.c
│   │   │       │   ├── ftcerror.h
│   │   │       │   ├── ftcglyph.c
│   │   │       │   ├── ftcglyph.h
│   │   │       │   ├── ftcimage.c
│   │   │       │   ├── ftcimage.h
│   │   │       │   ├── ftcmanag.c
│   │   │       │   ├── ftcmanag.h
│   │   │       │   ├── ftcmru.c
│   │   │       │   ├── ftcmru.h
│   │   │       │   ├── ftcsbits.c
│   │   │       │   └── ftcsbits.h
│   │   │       ├── cff/
│   │   │       │   ├── cf2arrst.c
│   │   │       │   ├── cf2arrst.h
│   │   │       │   ├── cf2blues.c
│   │   │       │   ├── cf2blues.h
│   │   │       │   ├── cf2error.c
│   │   │       │   ├── cf2error.h
│   │   │       │   ├── cf2fixed.h
│   │   │       │   ├── cf2font.c
│   │   │       │   ├── cf2font.h
│   │   │       │   ├── cf2ft.c
│   │   │       │   ├── cf2ft.h
│   │   │       │   ├── cf2glue.h
│   │   │       │   ├── cf2hints.c
│   │   │       │   ├── cf2hints.h
│   │   │       │   ├── cf2intrp.c
│   │   │       │   ├── cf2intrp.h
│   │   │       │   ├── cf2read.c
│   │   │       │   ├── cf2read.h
│   │   │       │   ├── cf2stack.c
│   │   │       │   ├── cf2stack.h
│   │   │       │   ├── cf2types.h
│   │   │       │   ├── cff.c
│   │   │       │   ├── cffcmap.c
│   │   │       │   ├── cffcmap.h
│   │   │       │   ├── cffdrivr.c
│   │   │       │   ├── cffdrivr.h
│   │   │       │   ├── cfferrs.h
│   │   │       │   ├── cffgload.c
│   │   │       │   ├── cffgload.h
│   │   │       │   ├── cffload.c
│   │   │       │   ├── cffload.h
│   │   │       │   ├── cffobjs.c
│   │   │       │   ├── cffobjs.h
│   │   │       │   ├── cffparse.c
│   │   │       │   ├── cffparse.h
│   │   │       │   ├── cffpic.c
│   │   │       │   ├── cffpic.h
│   │   │       │   ├── cfftoken.h
│   │   │       │   └── cfftypes.h
│   │   │       ├── cid/
│   │   │       │   ├── ciderrs.h
│   │   │       │   ├── cidgload.c
│   │   │       │   ├── cidgload.h
│   │   │       │   ├── cidload.c
│   │   │       │   ├── cidload.h
│   │   │       │   ├── cidobjs.c
│   │   │       │   ├── cidobjs.h
│   │   │       │   ├── cidparse.c
│   │   │       │   ├── cidparse.h
│   │   │       │   ├── cidriver.c
│   │   │       │   ├── cidriver.h
│   │   │       │   ├── cidtoken.h
│   │   │       │   └── type1cid.c
│   │   │       ├── gxvalid/
│   │   │       │   ├── README
│   │   │       │   ├── gxvalid.c
│   │   │       │   ├── gxvalid.h
│   │   │       │   ├── gxvbsln.c
│   │   │       │   ├── gxvcommn.c
│   │   │       │   ├── gxvcommn.h
│   │   │       │   ├── gxverror.h
│   │   │       │   ├── gxvfeat.c
│   │   │       │   ├── gxvfeat.h
│   │   │       │   ├── gxvfgen.c
│   │   │       │   ├── gxvjust.c
│   │   │       │   ├── gxvkern.c
│   │   │       │   ├── gxvlcar.c
│   │   │       │   ├── gxvmod.c
│   │   │       │   ├── gxvmod.h
│   │   │       │   ├── gxvmort.c
│   │   │       │   ├── gxvmort.h
│   │   │       │   ├── gxvmort0.c
│   │   │       │   ├── gxvmort1.c
│   │   │       │   ├── gxvmort2.c
│   │   │       │   ├── gxvmort4.c
│   │   │       │   ├── gxvmort5.c
│   │   │       │   ├── gxvmorx.c
│   │   │       │   ├── gxvmorx.h
│   │   │       │   ├── gxvmorx0.c
│   │   │       │   ├── gxvmorx1.c
│   │   │       │   ├── gxvmorx2.c
│   │   │       │   ├── gxvmorx4.c
│   │   │       │   ├── gxvmorx5.c
│   │   │       │   ├── gxvopbd.c
│   │   │       │   ├── gxvprop.c
│   │   │       │   └── gxvtrak.c
│   │   │       ├── gzip/
│   │   │       │   ├── adler32.c
│   │   │       │   ├── ftgzip.c
│   │   │       │   ├── infblock.c
│   │   │       │   ├── infblock.h
│   │   │       │   ├── infcodes.c
│   │   │       │   ├── infcodes.h
│   │   │       │   ├── inffixed.h
│   │   │       │   ├── inflate.c
│   │   │       │   ├── inftrees.c
│   │   │       │   ├── inftrees.h
│   │   │       │   ├── infutil.c
│   │   │       │   ├── infutil.h
│   │   │       │   ├── zconf.h
│   │   │       │   ├── zlib.h
│   │   │       │   ├── zutil.c
│   │   │       │   └── zutil.h
│   │   │       ├── lzw/
│   │   │       │   ├── ftlzw.c
│   │   │       │   ├── ftzopen.c
│   │   │       │   └── ftzopen.h
│   │   │       ├── otvalid/
│   │   │       │   ├── otvalid.c
│   │   │       │   ├── otvalid.h
│   │   │       │   ├── otvbase.c
│   │   │       │   ├── otvcommn.c
│   │   │       │   ├── otvcommn.h
│   │   │       │   ├── otverror.h
│   │   │       │   ├── otvgdef.c
│   │   │       │   ├── otvgpos.c
│   │   │       │   ├── otvgpos.h
│   │   │       │   ├── otvgsub.c
│   │   │       │   ├── otvjstf.c
│   │   │       │   ├── otvmath.c
│   │   │       │   ├── otvmod.c
│   │   │       │   └── otvmod.h
│   │   │       ├── pcf/
│   │   │       │   ├── README
│   │   │       │   ├── pcf.c
│   │   │       │   ├── pcf.h
│   │   │       │   ├── pcfdrivr.c
│   │   │       │   ├── pcfdrivr.h
│   │   │       │   ├── pcferror.h
│   │   │       │   ├── pcfread.c
│   │   │       │   ├── pcfread.h
│   │   │       │   ├── pcfutil.c
│   │   │       │   └── pcfutil.h
│   │   │       ├── pfr/
│   │   │       │   ├── pfr.c
│   │   │       │   ├── pfrcmap.c
│   │   │       │   ├── pfrcmap.h
│   │   │       │   ├── pfrdrivr.c
│   │   │       │   ├── pfrdrivr.h
│   │   │       │   ├── pfrerror.h
│   │   │       │   ├── pfrgload.c
│   │   │       │   ├── pfrgload.h
│   │   │       │   ├── pfrload.c
│   │   │       │   ├── pfrload.h
│   │   │       │   ├── pfrobjs.c
│   │   │       │   ├── pfrobjs.h
│   │   │       │   ├── pfrsbit.c
│   │   │       │   ├── pfrsbit.h
│   │   │       │   └── pfrtypes.h
│   │   │       ├── psaux/
│   │   │       │   ├── afmparse.c
│   │   │       │   ├── afmparse.h
│   │   │       │   ├── psaux.c
│   │   │       │   ├── psauxerr.h
│   │   │       │   ├── psauxmod.c
│   │   │       │   ├── psauxmod.h
│   │   │       │   ├── psconv.c
│   │   │       │   ├── psconv.h
│   │   │       │   ├── psobjs.c
│   │   │       │   ├── psobjs.h
│   │   │       │   ├── t1cmap.c
│   │   │       │   ├── t1cmap.h
│   │   │       │   ├── t1decode.c
│   │   │       │   └── t1decode.h
│   │   │       ├── pshinter/
│   │   │       │   ├── pshalgo.c
│   │   │       │   ├── pshalgo.h
│   │   │       │   ├── pshglob.c
│   │   │       │   ├── pshglob.h
│   │   │       │   ├── pshinter.c
│   │   │       │   ├── pshmod.c
│   │   │       │   ├── pshmod.h
│   │   │       │   ├── pshnterr.h
│   │   │       │   ├── pshpic.c
│   │   │       │   ├── pshpic.h
│   │   │       │   ├── pshrec.c
│   │   │       │   └── pshrec.h
│   │   │       ├── psnames/
│   │   │       │   ├── psmodule.c
│   │   │       │   ├── psmodule.h
│   │   │       │   ├── psnamerr.h
│   │   │       │   ├── psnames.c
│   │   │       │   ├── pspic.c
│   │   │       │   ├── pspic.h
│   │   │       │   └── pstables.h
│   │   │       ├── raster/
│   │   │       │   ├── ftmisc.h
│   │   │       │   ├── ftraster.c
│   │   │       │   ├── ftraster.h
│   │   │       │   ├── ftrend1.c
│   │   │       │   ├── ftrend1.h
│   │   │       │   ├── raster.c
│   │   │       │   ├── rasterrs.h
│   │   │       │   ├── rastpic.c
│   │   │       │   └── rastpic.h
│   │   │       ├── sfnt/
│   │   │       │   ├── pngshim.c
│   │   │       │   ├── pngshim.h
│   │   │       │   ├── sfdriver.c
│   │   │       │   ├── sfdriver.h
│   │   │       │   ├── sferrors.h
│   │   │       │   ├── sfnt.c
│   │   │       │   ├── sfntpic.c
│   │   │       │   ├── sfntpic.h
│   │   │       │   ├── sfobjs.c
│   │   │       │   ├── sfobjs.h
│   │   │       │   ├── ttbdf.c
│   │   │       │   ├── ttbdf.h
│   │   │       │   ├── ttcmap.c
│   │   │       │   ├── ttcmap.h
│   │   │       │   ├── ttcmapc.h
│   │   │       │   ├── ttkern.c
│   │   │       │   ├── ttkern.h
│   │   │       │   ├── ttload.c
│   │   │       │   ├── ttload.h
│   │   │       │   ├── ttmtx.c
│   │   │       │   ├── ttmtx.h
│   │   │       │   ├── ttpost.c
│   │   │       │   ├── ttpost.h
│   │   │       │   ├── ttsbit.c
│   │   │       │   └── ttsbit.h
│   │   │       ├── smooth/
│   │   │       │   ├── ftgrays.c
│   │   │       │   ├── ftgrays.h
│   │   │       │   ├── ftsmerrs.h
│   │   │       │   ├── ftsmooth.c
│   │   │       │   ├── ftsmooth.h
│   │   │       │   ├── ftspic.c
│   │   │       │   ├── ftspic.h
│   │   │       │   └── smooth.c
│   │   │       ├── truetype/
│   │   │       │   ├── truetype.c
│   │   │       │   ├── ttdriver.c
│   │   │       │   ├── ttdriver.h
│   │   │       │   ├── tterrors.h
│   │   │       │   ├── ttgload.c
│   │   │       │   ├── ttgload.h
│   │   │       │   ├── ttgxvar.c
│   │   │       │   ├── ttgxvar.h
│   │   │       │   ├── ttinterp.c
│   │   │       │   ├── ttinterp.h
│   │   │       │   ├── ttobjs.c
│   │   │       │   ├── ttobjs.h
│   │   │       │   ├── ttpic.c
│   │   │       │   ├── ttpic.h
│   │   │       │   ├── ttpload.c
│   │   │       │   ├── ttpload.h
│   │   │       │   ├── ttsubpix.c
│   │   │       │   └── ttsubpix.h
│   │   │       ├── type1/
│   │   │       │   ├── t1afm.c
│   │   │       │   ├── t1afm.h
│   │   │       │   ├── t1driver.c
│   │   │       │   ├── t1driver.h
│   │   │       │   ├── t1errors.h
│   │   │       │   ├── t1gload.c
│   │   │       │   ├── t1gload.h
│   │   │       │   ├── t1load.c
│   │   │       │   ├── t1load.h
│   │   │       │   ├── t1objs.c
│   │   │       │   ├── t1objs.h
│   │   │       │   ├── t1parse.c
│   │   │       │   ├── t1parse.h
│   │   │       │   ├── t1tokens.h
│   │   │       │   └── type1.c
│   │   │       ├── type42/
│   │   │       │   ├── t42drivr.c
│   │   │       │   ├── t42drivr.h
│   │   │       │   ├── t42error.h
│   │   │       │   ├── t42objs.c
│   │   │       │   ├── t42objs.h
│   │   │       │   ├── t42parse.c
│   │   │       │   ├── t42parse.h
│   │   │       │   ├── t42types.h
│   │   │       │   └── type42.c
│   │   │       └── winfonts/
│   │   │           ├── fnterrs.h
│   │   │           ├── winfnt.c
│   │   │           └── winfnt.h
│   │   ├── OpenGL/
│   │   │   ├── glext.h
│   │   │   └── wglext.h
│   │   ├── Spine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── flags.cmake
│   │   │   └── spine-cpp/
│   │   │       ├── include/
│   │   │       │   └── spine/
│   │   │       │       ├── Animation.h
│   │   │       │       ├── AnimationState.h
│   │   │       │       ├── AnimationStateData.h
│   │   │       │       ├── Atlas.h
│   │   │       │       ├── AtlasAttachmentLoader.h
│   │   │       │       ├── Attachment.h
│   │   │       │       ├── AttachmentLoader.h
│   │   │       │       ├── AttachmentTimeline.h
│   │   │       │       ├── AttachmentType.h
│   │   │       │       ├── BlendMode.h
│   │   │       │       ├── BlockAllocator.h
│   │   │       │       ├── Bone.h
│   │   │       │       ├── BoneData.h
│   │   │       │       ├── BoundingBoxAttachment.h
│   │   │       │       ├── ClippingAttachment.h
│   │   │       │       ├── Color.h
│   │   │       │       ├── ColorTimeline.h
│   │   │       │       ├── ConstraintData.h
│   │   │       │       ├── ContainerUtil.h
│   │   │       │       ├── CurveTimeline.h
│   │   │       │       ├── Debug.h
│   │   │       │       ├── DeformTimeline.h
│   │   │       │       ├── DrawOrderTimeline.h
│   │   │       │       ├── Event.h
│   │   │       │       ├── EventData.h
│   │   │       │       ├── EventTimeline.h
│   │   │       │       ├── Extension.h
│   │   │       │       ├── HasRendererObject.h
│   │   │       │       ├── HashMap.h
│   │   │       │       ├── IkConstraint.h
│   │   │       │       ├── IkConstraintData.h
│   │   │       │       ├── IkConstraintTimeline.h
│   │   │       │       ├── Inherit.h
│   │   │       │       ├── InheritTimeline.h
│   │   │       │       ├── Json.h
│   │   │       │       ├── LinkedMesh.h
│   │   │       │       ├── Log.h
│   │   │       │       ├── MathUtil.h
│   │   │       │       ├── MeshAttachment.h
│   │   │       │       ├── MixBlend.h
│   │   │       │       ├── MixDirection.h
│   │   │       │       ├── PathAttachment.h
│   │   │       │       ├── PathConstraint.h
│   │   │       │       ├── PathConstraintData.h
│   │   │       │       ├── PathConstraintMixTimeline.h
│   │   │       │       ├── PathConstraintPositionTimeline.h
│   │   │       │       ├── PathConstraintSpacingTimeline.h
│   │   │       │       ├── Physics.h
│   │   │       │       ├── PhysicsConstraint.h
│   │   │       │       ├── PhysicsConstraintData.h
│   │   │       │       ├── PhysicsConstraintTimeline.h
│   │   │       │       ├── PointAttachment.h
│   │   │       │       ├── Pool.h
│   │   │       │       ├── PositionMode.h
│   │   │       │       ├── Property.h
│   │   │       │       ├── RTTI.h
│   │   │       │       ├── RegionAttachment.h
│   │   │       │       ├── RotateMode.h
│   │   │       │       ├── RotateTimeline.h
│   │   │       │       ├── ScaleTimeline.h
│   │   │       │       ├── Sequence.h
│   │   │       │       ├── SequenceTimeline.h
│   │   │       │       ├── ShearTimeline.h
│   │   │       │       ├── Skeleton.h
│   │   │       │       ├── SkeletonBinary.h
│   │   │       │       ├── SkeletonBounds.h
│   │   │       │       ├── SkeletonClipping.h
│   │   │       │       ├── SkeletonData.h
│   │   │       │       ├── SkeletonJson.h
│   │   │       │       ├── SkeletonRenderer.h
│   │   │       │       ├── Skin.h
│   │   │       │       ├── Slot.h
│   │   │       │       ├── SlotData.h
│   │   │       │       ├── SpacingMode.h
│   │   │       │       ├── SpineObject.h
│   │   │       │       ├── SpineString.h
│   │   │       │       ├── TextureLoader.h
│   │   │       │       ├── TextureRegion.h
│   │   │       │       ├── Timeline.h
│   │   │       │       ├── TransformConstraint.h
│   │   │       │       ├── TransformConstraintData.h
│   │   │       │       ├── TransformConstraintTimeline.h
│   │   │       │       ├── TranslateTimeline.h
│   │   │       │       ├── Triangulator.h
│   │   │       │       ├── Updatable.h
│   │   │       │       ├── Vector.h
│   │   │       │       ├── Version.h
│   │   │       │       ├── VertexAttachment.h
│   │   │       │       ├── Vertices.h
│   │   │       │       ├── dll.h
│   │   │       │       └── spine.h
│   │   │       └── src/
│   │   │           └── spine/
│   │   │               ├── Animation.cpp
│   │   │               ├── AnimationState.cpp
│   │   │               ├── AnimationStateData.cpp
│   │   │               ├── Atlas.cpp
│   │   │               ├── AtlasAttachmentLoader.cpp
│   │   │               ├── Attachment.cpp
│   │   │               ├── AttachmentLoader.cpp
│   │   │               ├── AttachmentTimeline.cpp
│   │   │               ├── Bone.cpp
│   │   │               ├── BoneData.cpp
│   │   │               ├── BoundingBoxAttachment.cpp
│   │   │               ├── ClippingAttachment.cpp
│   │   │               ├── ColorTimeline.cpp
│   │   │               ├── ConstraintData.cpp
│   │   │               ├── CurveTimeline.cpp
│   │   │               ├── DeformTimeline.cpp
│   │   │               ├── DrawOrderTimeline.cpp
│   │   │               ├── Event.cpp
│   │   │               ├── EventData.cpp
│   │   │               ├── EventTimeline.cpp
│   │   │               ├── Extension.cpp
│   │   │               ├── IkConstraint.cpp
│   │   │               ├── IkConstraintData.cpp
│   │   │               ├── IkConstraintTimeline.cpp
│   │   │               ├── InheritTimeline.cpp
│   │   │               ├── Json.cpp
│   │   │               ├── LinkedMesh.cpp
│   │   │               ├── Log.cpp
│   │   │               ├── MathUtil.cpp
│   │   │               ├── MeshAttachment.cpp
│   │   │               ├── PathAttachment.cpp
│   │   │               ├── PathConstraint.cpp
│   │   │               ├── PathConstraintData.cpp
│   │   │               ├── PathConstraintMixTimeline.cpp
│   │   │               ├── PathConstraintPositionTimeline.cpp
│   │   │               ├── PathConstraintSpacingTimeline.cpp
│   │   │               ├── PhysicsConstraint.cpp
│   │   │               ├── PhysicsConstraintData.cpp
│   │   │               ├── PhysicsConstraintTimeline.cpp
│   │   │               ├── PointAttachment.cpp
│   │   │               ├── RTTI.cpp
│   │   │               ├── RegionAttachment.cpp
│   │   │               ├── RotateTimeline.cpp
│   │   │               ├── ScaleTimeline.cpp
│   │   │               ├── Sequence.cpp
│   │   │               ├── SequenceTimeline.cpp
│   │   │               ├── ShearTimeline.cpp
│   │   │               ├── Skeleton.cpp
│   │   │               ├── SkeletonBinary.cpp
│   │   │               ├── SkeletonBounds.cpp
│   │   │               ├── SkeletonClipping.cpp
│   │   │               ├── SkeletonData.cpp
│   │   │               ├── SkeletonJson.cpp
│   │   │               ├── SkeletonRenderer.cpp
│   │   │               ├── Skin.cpp
│   │   │               ├── Slot.cpp
│   │   │               ├── SlotData.cpp
│   │   │               ├── SpineObject.cpp
│   │   │               ├── TextureLoader.cpp
│   │   │               ├── Timeline.cpp
│   │   │               ├── TransformConstraint.cpp
│   │   │               ├── TransformConstraintData.cpp
│   │   │               ├── TransformConstraintTimeline.cpp
│   │   │               ├── TranslateTimeline.cpp
│   │   │               ├── Triangulator.cpp
│   │   │               ├── Updatable.cpp
│   │   │               └── VertexAttachment.cpp
│   │   ├── boost/
│   │   │   └── CMakeLists.txt
│   │   ├── jerryscript/
│   │   │   ├── .github/
│   │   │   │   ├── ISSUE_TEMPLATE/
│   │   │   │   │   └── bug_report.md
│   │   │   │   ├── pull_request_template.md
│   │   │   │   └── workflows/
│   │   │   │       └── gh-actions.yml
│   │   │   ├── .gitignore
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── DCO.md
│   │   │   ├── Doxyfile
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── appveyor.yml
│   │   │   ├── cmake/
│   │   │   │   ├── toolchain-esp32.cmake
│   │   │   │   ├── toolchain_linux_aarch64.cmake
│   │   │   │   ├── toolchain_linux_armv7l-el.cmake
│   │   │   │   ├── toolchain_linux_armv7l.cmake
│   │   │   │   ├── toolchain_linux_i686.cmake
│   │   │   │   ├── toolchain_mcu_stm32f3.cmake
│   │   │   │   ├── toolchain_mcu_stm32f4.cmake
│   │   │   │   ├── toolchain_mcu_stm32f7.cmake
│   │   │   │   ├── toolchain_mcu_tim4f.cmake
│   │   │   │   ├── toolchain_openwrt_mips.cmake
│   │   │   │   └── toolchain_openwrt_mipsel.cmake
│   │   │   ├── docs/
│   │   │   │   ├── 00.GETTING-STARTED.md
│   │   │   │   ├── 01.CONFIGURATION.md
│   │   │   │   ├── 02.API-REFERENCE.md
│   │   │   │   ├── 03.API-EXAMPLE.md
│   │   │   │   ├── 04.INTERNALS.md
│   │   │   │   ├── 05.PORT-API.md
│   │   │   │   ├── 06.REFERENCE-COUNTING.md
│   │   │   │   ├── 07.DEBUGGER.md
│   │   │   │   ├── 08.CODING-STANDARDS.md
│   │   │   │   ├── 09.EXT-REFERENCE-ARG.md
│   │   │   │   ├── 10.EXT-REFERENCE-HANDLER.md
│   │   │   │   ├── 11.EXT-REFERENCE-AUTORELEASE.md
│   │   │   │   ├── 12.EXT-REFERENCE-MODULE.md
│   │   │   │   ├── 13.DEBUGGER-TRANSPORT.md
│   │   │   │   ├── 14.EXT-REFERENCE-HANDLE-SCOPE.md
│   │   │   │   ├── 15.MODULE-SYSTEM.md
│   │   │   │   └── 16.MIGRATION-GUIDE.md
│   │   │   ├── jerry-core/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── api/
│   │   │   │   │   ├── jerry-debugger-transport.c
│   │   │   │   │   ├── jerry-debugger.c
│   │   │   │   │   ├── jerry-snapshot.c
│   │   │   │   │   ├── jerry-snapshot.h
│   │   │   │   │   └── jerry.c
│   │   │   │   ├── config.h
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── debugger.c
│   │   │   │   │   └── debugger.h
│   │   │   │   ├── ecma/
│   │   │   │   │   ├── base/
│   │   │   │   │   │   ├── ecma-alloc.c
│   │   │   │   │   │   ├── ecma-alloc.h
│   │   │   │   │   │   ├── ecma-gc.c
│   │   │   │   │   │   ├── ecma-gc.h
│   │   │   │   │   │   ├── ecma-globals.h
│   │   │   │   │   │   ├── ecma-helpers-collection.c
│   │   │   │   │   │   ├── ecma-helpers-conversion.c
│   │   │   │   │   │   ├── ecma-helpers-errol.c
│   │   │   │   │   │   ├── ecma-helpers-external-pointers.c
│   │   │   │   │   │   ├── ecma-helpers-number.c
│   │   │   │   │   │   ├── ecma-helpers-string.c
│   │   │   │   │   │   ├── ecma-helpers-value.c
│   │   │   │   │   │   ├── ecma-helpers.c
│   │   │   │   │   │   ├── ecma-helpers.h
│   │   │   │   │   │   ├── ecma-init-finalize.c
│   │   │   │   │   │   ├── ecma-init-finalize.h
│   │   │   │   │   │   ├── ecma-lcache.c
│   │   │   │   │   │   ├── ecma-lcache.h
│   │   │   │   │   │   ├── ecma-literal-storage.c
│   │   │   │   │   │   ├── ecma-literal-storage.h
│   │   │   │   │   │   ├── ecma-module.c
│   │   │   │   │   │   ├── ecma-module.h
│   │   │   │   │   │   ├── ecma-property-hashmap.c
│   │   │   │   │   │   └── ecma-property-hashmap.h
│   │   │   │   │   ├── builtin-objects/
│   │   │   │   │   │   ├── ecma-builtin-array-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-array-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array-prototype-unscopables.c
│   │   │   │   │   │   ├── ecma-builtin-array-prototype-unscopables.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-array-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array.c
│   │   │   │   │   │   ├── ecma-builtin-array.inc.h
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer.c
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-function-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-function-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-function.c
│   │   │   │   │   │   ├── ecma-builtin-async-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator-function.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-bigint-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-bigint-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-bigint.c
│   │   │   │   │   │   ├── ecma-builtin-bigint.inc.h
│   │   │   │   │   │   ├── ecma-builtin-boolean-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-boolean-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-boolean.c
│   │   │   │   │   │   ├── ecma-builtin-boolean.inc.h
│   │   │   │   │   │   ├── ecma-builtin-dataview-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-dataview-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-dataview.c
│   │   │   │   │   │   ├── ecma-builtin-dataview.inc.h
│   │   │   │   │   │   ├── ecma-builtin-date-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-date-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-date.c
│   │   │   │   │   │   ├── ecma-builtin-date.inc.h
│   │   │   │   │   │   ├── ecma-builtin-error-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-error-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-error.c
│   │   │   │   │   │   ├── ecma-builtin-error.inc.h
│   │   │   │   │   │   ├── ecma-builtin-evalerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-evalerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-evalerror.c
│   │   │   │   │   │   ├── ecma-builtin-evalerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.h
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-function.c
│   │   │   │   │   │   ├── ecma-builtin-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator-function.c
│   │   │   │   │   │   ├── ecma-builtin-generator-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-generator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator.c
│   │   │   │   │   │   ├── ecma-builtin-generator.inc.h
│   │   │   │   │   │   ├── ecma-builtin-global.c
│   │   │   │   │   │   ├── ecma-builtin-global.inc.h
│   │   │   │   │   │   ├── ecma-builtin-handlers.c
│   │   │   │   │   │   ├── ecma-builtin-handlers.h
│   │   │   │   │   │   ├── ecma-builtin-handlers.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-date.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-error.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-json.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-macro-defines.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-macro-undefs.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-sort.c
│   │   │   │   │   │   ├── ecma-builtin-helpers.c
│   │   │   │   │   │   ├── ecma-builtin-helpers.h
│   │   │   │   │   │   ├── ecma-builtin-internal-routines-template.inc.h
│   │   │   │   │   │   ├── ecma-builtin-intrinsic.c
│   │   │   │   │   │   ├── ecma-builtin-intrinsic.inc.h
│   │   │   │   │   │   ├── ecma-builtin-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-json.c
│   │   │   │   │   │   ├── ecma-builtin-json.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-map-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-map-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map.c
│   │   │   │   │   │   ├── ecma-builtin-map.inc.h
│   │   │   │   │   │   ├── ecma-builtin-math.c
│   │   │   │   │   │   ├── ecma-builtin-math.inc.h
│   │   │   │   │   │   ├── ecma-builtin-number-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-number-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-number.c
│   │   │   │   │   │   ├── ecma-builtin-number.inc.h
│   │   │   │   │   │   ├── ecma-builtin-object-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-object-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-object.c
│   │   │   │   │   │   ├── ecma-builtin-object.h
│   │   │   │   │   │   ├── ecma-builtin-object.inc.h
│   │   │   │   │   │   ├── ecma-builtin-promise-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-promise-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-promise.c
│   │   │   │   │   │   ├── ecma-builtin-promise.inc.h
│   │   │   │   │   │   ├── ecma-builtin-proxy.c
│   │   │   │   │   │   ├── ecma-builtin-proxy.inc.h
│   │   │   │   │   │   ├── ecma-builtin-rangeerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-rangeerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-rangeerror.c
│   │   │   │   │   │   ├── ecma-builtin-rangeerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-referenceerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-referenceerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-referenceerror.c
│   │   │   │   │   │   ├── ecma-builtin-referenceerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-reflect.c
│   │   │   │   │   │   ├── ecma-builtin-reflect.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-regexp-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp-string-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-regexp-string-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp.c
│   │   │   │   │   │   ├── ecma-builtin-regexp.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-set-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-set-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set.c
│   │   │   │   │   │   ├── ecma-builtin-set.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-string-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-string-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string.c
│   │   │   │   │   │   ├── ecma-builtin-string.inc.h
│   │   │   │   │   │   ├── ecma-builtin-symbol-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-symbol-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-symbol.c
│   │   │   │   │   │   ├── ecma-builtin-symbol.inc.h
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror.c
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-type-error-thrower.c
│   │   │   │   │   │   ├── ecma-builtin-type-error-thrower.inc.h
│   │   │   │   │   │   ├── ecma-builtin-typeerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-typeerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-typeerror.c
│   │   │   │   │   │   ├── ecma-builtin-typeerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-urierror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-urierror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-urierror.c
│   │   │   │   │   │   ├── ecma-builtin-urierror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakmap-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-weakmap-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakmap.c
│   │   │   │   │   │   ├── ecma-builtin-weakmap.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakset-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-weakset-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakset.c
│   │   │   │   │   │   ├── ecma-builtin-weakset.inc.h
│   │   │   │   │   │   ├── ecma-builtins-internal.h
│   │   │   │   │   │   ├── ecma-builtins.c
│   │   │   │   │   │   ├── ecma-builtins.h
│   │   │   │   │   │   ├── ecma-builtins.inc.h
│   │   │   │   │   │   └── typedarray/
│   │   │   │   │   │       ├── ecma-builtin-bigint64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-bigint64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-bigint64array.c
│   │   │   │   │   │       ├── ecma-builtin-bigint64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-biguint64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-biguint64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-biguint64array.c
│   │   │   │   │   │       ├── ecma-builtin-biguint64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-float32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float32array.c
│   │   │   │   │   │       ├── ecma-builtin-float32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-float64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float64array.c
│   │   │   │   │   │       ├── ecma-builtin-float64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int16array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int16array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int16array.c
│   │   │   │   │   │       ├── ecma-builtin-int16array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int32array.c
│   │   │   │   │   │       ├── ecma-builtin-int32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int8array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int8array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int8array.c
│   │   │   │   │   │       ├── ecma-builtin-int8array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-helpers.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray-helpers.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype-template.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-template.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint16array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint16array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint16array.c
│   │   │   │   │   │       ├── ecma-builtin-uint16array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint32array.c
│   │   │   │   │   │       ├── ecma-builtin-uint32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint8array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8array.c
│   │   │   │   │   │       ├── ecma-builtin-uint8array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray.c
│   │   │   │   │   │       └── ecma-builtin-uint8clampedarray.inc.h
│   │   │   │   │   └── operations/
│   │   │   │   │       ├── ecma-arguments-object.c
│   │   │   │   │       ├── ecma-arguments-object.h
│   │   │   │   │       ├── ecma-array-object.c
│   │   │   │   │       ├── ecma-array-object.h
│   │   │   │   │       ├── ecma-arraybuffer-object.c
│   │   │   │   │       ├── ecma-arraybuffer-object.h
│   │   │   │   │       ├── ecma-async-generator-object.c
│   │   │   │   │       ├── ecma-async-generator-object.h
│   │   │   │   │       ├── ecma-big-uint.c
│   │   │   │   │       ├── ecma-big-uint.h
│   │   │   │   │       ├── ecma-bigint-object.c
│   │   │   │   │       ├── ecma-bigint-object.h
│   │   │   │   │       ├── ecma-bigint.c
│   │   │   │   │       ├── ecma-bigint.h
│   │   │   │   │       ├── ecma-boolean-object.c
│   │   │   │   │       ├── ecma-boolean-object.h
│   │   │   │   │       ├── ecma-comparison.c
│   │   │   │   │       ├── ecma-comparison.h
│   │   │   │   │       ├── ecma-container-object.c
│   │   │   │   │       ├── ecma-container-object.h
│   │   │   │   │       ├── ecma-conversion.c
│   │   │   │   │       ├── ecma-conversion.h
│   │   │   │   │       ├── ecma-dataview-object.c
│   │   │   │   │       ├── ecma-dataview-object.h
│   │   │   │   │       ├── ecma-eval.c
│   │   │   │   │       ├── ecma-eval.h
│   │   │   │   │       ├── ecma-exceptions.c
│   │   │   │   │       ├── ecma-exceptions.h
│   │   │   │   │       ├── ecma-function-object.c
│   │   │   │   │       ├── ecma-function-object.h
│   │   │   │   │       ├── ecma-get-put-value.c
│   │   │   │   │       ├── ecma-iterator-object.c
│   │   │   │   │       ├── ecma-iterator-object.h
│   │   │   │   │       ├── ecma-jobqueue.c
│   │   │   │   │       ├── ecma-jobqueue.h
│   │   │   │   │       ├── ecma-lex-env.c
│   │   │   │   │       ├── ecma-lex-env.h
│   │   │   │   │       ├── ecma-number-arithmetic.c
│   │   │   │   │       ├── ecma-number-arithmetic.h
│   │   │   │   │       ├── ecma-number-object.c
│   │   │   │   │       ├── ecma-number-object.h
│   │   │   │   │       ├── ecma-objects-general.c
│   │   │   │   │       ├── ecma-objects-general.h
│   │   │   │   │       ├── ecma-objects.c
│   │   │   │   │       ├── ecma-objects.h
│   │   │   │   │       ├── ecma-promise-object.c
│   │   │   │   │       ├── ecma-promise-object.h
│   │   │   │   │       ├── ecma-proxy-object.c
│   │   │   │   │       ├── ecma-proxy-object.h
│   │   │   │   │       ├── ecma-reference.c
│   │   │   │   │       ├── ecma-reference.h
│   │   │   │   │       ├── ecma-regexp-object.c
│   │   │   │   │       ├── ecma-regexp-object.h
│   │   │   │   │       ├── ecma-string-object.c
│   │   │   │   │       ├── ecma-string-object.h
│   │   │   │   │       ├── ecma-symbol-object.c
│   │   │   │   │       ├── ecma-symbol-object.h
│   │   │   │   │       ├── ecma-typedarray-object.c
│   │   │   │   │       └── ecma-typedarray-object.h
│   │   │   │   ├── include/
│   │   │   │   │   ├── jerryscript-compiler.h
│   │   │   │   │   ├── jerryscript-core.h
│   │   │   │   │   ├── jerryscript-debugger-transport.h
│   │   │   │   │   ├── jerryscript-debugger.h
│   │   │   │   │   ├── jerryscript-port.h
│   │   │   │   │   ├── jerryscript-snapshot.h
│   │   │   │   │   └── jerryscript.h
│   │   │   │   ├── jcontext/
│   │   │   │   │   ├── jcontext.c
│   │   │   │   │   └── jcontext.h
│   │   │   │   ├── jmem/
│   │   │   │   │   ├── jmem-allocator-internal.h
│   │   │   │   │   ├── jmem-allocator.c
│   │   │   │   │   ├── jmem-heap.c
│   │   │   │   │   ├── jmem-poolman.c
│   │   │   │   │   └── jmem.h
│   │   │   │   ├── jrt/
│   │   │   │   │   ├── jrt-bit-fields.h
│   │   │   │   │   ├── jrt-fatals.c
│   │   │   │   │   ├── jrt-libc-includes.h
│   │   │   │   │   ├── jrt-types.h
│   │   │   │   │   └── jrt.h
│   │   │   │   ├── libjerry-core.pc.in
│   │   │   │   ├── lit/
│   │   │   │   │   ├── lit-char-helpers.c
│   │   │   │   │   ├── lit-char-helpers.h
│   │   │   │   │   ├── lit-globals.h
│   │   │   │   │   ├── lit-magic-strings.c
│   │   │   │   │   ├── lit-magic-strings.h
│   │   │   │   │   ├── lit-magic-strings.inc.h
│   │   │   │   │   ├── lit-magic-strings.ini
│   │   │   │   │   ├── lit-strings.c
│   │   │   │   │   ├── lit-strings.h
│   │   │   │   │   ├── lit-unicode-conversions-sup.inc.h
│   │   │   │   │   ├── lit-unicode-conversions.inc.h
│   │   │   │   │   ├── lit-unicode-folding.inc.h
│   │   │   │   │   ├── lit-unicode-ranges-sup.inc.h
│   │   │   │   │   └── lit-unicode-ranges.inc.h
│   │   │   │   ├── parser/
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── byte-code.c
│   │   │   │   │   │   ├── byte-code.h
│   │   │   │   │   │   ├── common.c
│   │   │   │   │   │   ├── common.h
│   │   │   │   │   │   ├── js-lexer.c
│   │   │   │   │   │   ├── js-lexer.h
│   │   │   │   │   │   ├── js-parser-expr.c
│   │   │   │   │   │   ├── js-parser-internal.h
│   │   │   │   │   │   ├── js-parser-limits.h
│   │   │   │   │   │   ├── js-parser-mem.c
│   │   │   │   │   │   ├── js-parser-module.c
│   │   │   │   │   │   ├── js-parser-statm.c
│   │   │   │   │   │   ├── js-parser-tagged-template-literal.c
│   │   │   │   │   │   ├── js-parser-tagged-template-literal.h
│   │   │   │   │   │   ├── js-parser-util.c
│   │   │   │   │   │   ├── js-parser.c
│   │   │   │   │   │   ├── js-parser.h
│   │   │   │   │   │   ├── js-scanner-internal.h
│   │   │   │   │   │   ├── js-scanner-ops.c
│   │   │   │   │   │   ├── js-scanner-util.c
│   │   │   │   │   │   ├── js-scanner.c
│   │   │   │   │   │   └── js-scanner.h
│   │   │   │   │   └── regexp/
│   │   │   │   │       ├── re-bytecode.c
│   │   │   │   │       ├── re-bytecode.h
│   │   │   │   │       ├── re-compiler-context.h
│   │   │   │   │       ├── re-compiler.c
│   │   │   │   │       ├── re-compiler.h
│   │   │   │   │       ├── re-parser.c
│   │   │   │   │       ├── re-parser.h
│   │   │   │   │       └── re-token.h
│   │   │   │   ├── profiles/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── es.next.profile
│   │   │   │   │   ├── es2015-subset.profile
│   │   │   │   │   ├── es5.1.profile
│   │   │   │   │   └── minimal.profile
│   │   │   │   └── vm/
│   │   │   │       ├── opcodes-ecma-arithmetics.c
│   │   │   │       ├── opcodes-ecma-bitwise.c
│   │   │   │       ├── opcodes-ecma-relational-equality.c
│   │   │   │       ├── opcodes.c
│   │   │   │       ├── opcodes.h
│   │   │   │       ├── vm-defines.h
│   │   │   │       ├── vm-stack.c
│   │   │   │       ├── vm-stack.h
│   │   │   │       ├── vm-utils.c
│   │   │   │       ├── vm.c
│   │   │   │       └── vm.h
│   │   │   ├── jerry-debugger/
│   │   │   │   ├── README.md
│   │   │   │   ├── jerry_client.py
│   │   │   │   ├── jerry_client_main.py
│   │   │   │   ├── jerry_client_rawpacket.py
│   │   │   │   ├── jerry_client_serial.py
│   │   │   │   ├── jerry_client_tcp.py
│   │   │   │   └── jerry_client_websocket.py
│   │   │   ├── jerry-ext/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── arg/
│   │   │   │   │   ├── arg-internal.h
│   │   │   │   │   ├── arg-js-iterator-helper.c
│   │   │   │   │   ├── arg-transform-functions.c
│   │   │   │   │   └── arg.c
│   │   │   │   ├── common/
│   │   │   │   │   └── jext-common.h
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── debugger-common.c
│   │   │   │   │   ├── debugger-rp.c
│   │   │   │   │   ├── debugger-serial.c
│   │   │   │   │   ├── debugger-sha1.c
│   │   │   │   │   ├── debugger-sha1.h
│   │   │   │   │   ├── debugger-tcp.c
│   │   │   │   │   └── debugger-ws.c
│   │   │   │   ├── handle-scope/
│   │   │   │   │   ├── handle-scope-allocator.c
│   │   │   │   │   ├── handle-scope-internal.h
│   │   │   │   │   └── handle-scope.c
│   │   │   │   ├── handler/
│   │   │   │   │   ├── handler-assert.c
│   │   │   │   │   ├── handler-gc.c
│   │   │   │   │   ├── handler-print.c
│   │   │   │   │   ├── handler-register.c
│   │   │   │   │   └── handler-resource-name.c
│   │   │   │   ├── include/
│   │   │   │   │   └── jerryscript-ext/
│   │   │   │   │       ├── arg.h
│   │   │   │   │       ├── arg.impl.h
│   │   │   │   │       ├── autorelease.h
│   │   │   │   │       ├── autorelease.impl.h
│   │   │   │   │       ├── debugger.h
│   │   │   │   │       ├── handle-scope.h
│   │   │   │   │       ├── handler.h
│   │   │   │   │       └── module.h
│   │   │   │   ├── libjerry-ext.pc.in
│   │   │   │   └── module/
│   │   │   │       └── module.c
│   │   │   ├── jerry-main/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── benchmarking.c
│   │   │   │   ├── cli.c
│   │   │   │   ├── cli.h
│   │   │   │   ├── libfuzzer.c
│   │   │   │   ├── main-options.c
│   │   │   │   ├── main-options.h
│   │   │   │   ├── main-unix-snapshot.c
│   │   │   │   ├── main-unix-test.c
│   │   │   │   ├── main-unix.c
│   │   │   │   ├── main-utils.c
│   │   │   │   └── main-utils.h
│   │   │   ├── jerry-math/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── acos.c
│   │   │   │   ├── acosh.c
│   │   │   │   ├── asin.c
│   │   │   │   ├── asinh.c
│   │   │   │   ├── atan.c
│   │   │   │   ├── atan2.c
│   │   │   │   ├── atanh.c
│   │   │   │   ├── cbrt.c
│   │   │   │   ├── ceil.c
│   │   │   │   ├── copysign.c
│   │   │   │   ├── cosh.c
│   │   │   │   ├── exp.c
│   │   │   │   ├── expm1.c
│   │   │   │   ├── fabs.c
│   │   │   │   ├── floor.c
│   │   │   │   ├── fmod.c
│   │   │   │   ├── include/
│   │   │   │   │   └── math.h
│   │   │   │   ├── jerry-math-internal.h
│   │   │   │   ├── libjerry-math.pc.in
│   │   │   │   ├── log.c
│   │   │   │   ├── log10.c
│   │   │   │   ├── log1p.c
│   │   │   │   ├── log2.c
│   │   │   │   ├── nextafter.c
│   │   │   │   ├── pow.c
│   │   │   │   ├── scalbn.c
│   │   │   │   ├── sinh.c
│   │   │   │   ├── sqrt.c
│   │   │   │   ├── tanh.c
│   │   │   │   └── trig.c
│   │   │   ├── jerry-port/
│   │   │   │   └── default/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── default-date.c
│   │   │   │       ├── default-debugger.c
│   │   │   │       ├── default-external-context.c
│   │   │   │       ├── default-fatal.c
│   │   │   │       ├── default-io.c
│   │   │   │       ├── default-module.c
│   │   │   │       ├── default-promise.c
│   │   │   │       ├── include/
│   │   │   │       │   └── jerryscript-port-default.h
│   │   │   │       └── libjerry-port-default.pc.in
│   │   │   ├── sonar-project.properties
│   │   │   ├── targets/
│   │   │   │   ├── curie_bsp/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── inttypes.h
│   │   │   │   │   │   └── setjmp.h
│   │   │   │   │   ├── jerry_app/
│   │   │   │   │   │   ├── arc/
│   │   │   │   │   │   │   ├── defconfig
│   │   │   │   │   │   │   ├── main.c
│   │   │   │   │   │   │   └── memory_pool_list.def
│   │   │   │   │   │   ├── include/
│   │   │   │   │   │   │   └── project_mapping.h
│   │   │   │   │   │   └── quark/
│   │   │   │   │   │       ├── defconfig
│   │   │   │   │   │       ├── main.c
│   │   │   │   │   │       └── memory_pool_list.def
│   │   │   │   │   ├── setup.py
│   │   │   │   │   └── source/
│   │   │   │   │       ├── curie-bsp-port.c
│   │   │   │   │       └── setjmp.S
│   │   │   │   ├── esp-idf/
│   │   │   │   │   ├── CMakeLists.txt.example
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── date.c
│   │   │   │   │   ├── debugger.c
│   │   │   │   │   ├── external-context.c
│   │   │   │   │   ├── fatal.c
│   │   │   │   │   ├── io.c
│   │   │   │   │   ├── module.c
│   │   │   │   │   └── promise.c
│   │   │   │   ├── esp8266/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.esp8266
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── docs/
│   │   │   │   │   │   └── ESP-PREREQUISITES.md
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── jerry_extapi.h
│   │   │   │   │   │   ├── jerry_run.h
│   │   │   │   │   │   └── user_config.h
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── blink.js
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── ld/
│   │   │   │   │   │   └── eagle.app.v6.ld
│   │   │   │   │   ├── readme.md
│   │   │   │   │   └── user/
│   │   │   │   │       ├── Makefile
│   │   │   │   │       ├── jerry_extapi.c
│   │   │   │   │       ├── jerry_port.c
│   │   │   │   │       ├── jerry_run.c
│   │   │   │   │       └── user_main.c
│   │   │   │   ├── mbedos5/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── jerryscript-mbed/
│   │   │   │   │   │   ├── jerryscript-mbed-drivers/
│   │   │   │   │   │   │   ├── AnalogIn-js.h
│   │   │   │   │   │   │   ├── DigitalOut-js.h
│   │   │   │   │   │   │   ├── I2C-js.h
│   │   │   │   │   │   │   ├── InterruptIn-js.h
│   │   │   │   │   │   │   ├── PwmOut-js.h
│   │   │   │   │   │   │   ├── lib_drivers.h
│   │   │   │   │   │   │   ├── setInterval-js.h
│   │   │   │   │   │   │   ├── setTimeout-js.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       ├── AnalogIn-js.cpp
│   │   │   │   │   │   │       ├── DigitalOut-js.cpp
│   │   │   │   │   │   │       ├── I2C-js.cpp
│   │   │   │   │   │   │       ├── InterruptIn-js.cpp
│   │   │   │   │   │   │       ├── PwmOut-js.cpp
│   │   │   │   │   │   │       ├── setInterval-js.cpp
│   │   │   │   │   │   │       └── setTimeout-js.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-event-loop/
│   │   │   │   │   │   │   ├── BoundCallback.h
│   │   │   │   │   │   │   ├── EventLoop.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       └── EventLoop.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-launcher/
│   │   │   │   │   │   │   ├── launcher.h
│   │   │   │   │   │   │   ├── setup.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       ├── launcher.cpp
│   │   │   │   │   │   │       └── setup.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-library-registry/
│   │   │   │   │   │   │   ├── registry.h
│   │   │   │   │   │   │   ├── source/
│   │   │   │   │   │   │   │   ├── registry.cpp
│   │   │   │   │   │   │   │   └── wrap_tools.cpp
│   │   │   │   │   │   │   └── wrap_tools.h
│   │   │   │   │   │   └── jerryscript-mbed-util/
│   │   │   │   │   │       ├── js_source.h
│   │   │   │   │   │       ├── logging.h
│   │   │   │   │   │       └── wrappers.h
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── flash_leds.js
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── mbed-os.lib
│   │   │   │   │   ├── mbed_app.json
│   │   │   │   │   ├── source/
│   │   │   │   │   │   └── jerry_port_mbed.c
│   │   │   │   │   ├── template-mbedignore.txt
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── check_pins.sh
│   │   │   │   │       ├── cmsis.h
│   │   │   │   │       ├── generate_pins.py
│   │   │   │   │       ├── jshint.conf
│   │   │   │   │       └── requirements.txt
│   │   │   │   ├── nuttx-stm32f4/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Kconfig
│   │   │   │   │   ├── Make.defs
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── jerry_main.c
│   │   │   │   │   ├── jerry_port.c
│   │   │   │   │   ├── setjmp.S
│   │   │   │   │   └── setjmp.h
│   │   │   │   ├── openwrt/
│   │   │   │   │   └── readme.md
│   │   │   │   ├── particle/
│   │   │   │   │   ├── Makefile.particle
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── source/
│   │   │   │   │       └── main.cpp
│   │   │   │   ├── riot-stm32f4/
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.riot
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── source/
│   │   │   │   │       └── main-riotos.c
│   │   │   │   └── zephyr/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── Makefile.travis
│   │   │   │       ├── Makefile.zephyr
│   │   │   │       ├── README.md
│   │   │   │       ├── prj.conf
│   │   │   │       └── src/
│   │   │   │           ├── Makefile
│   │   │   │           ├── getline-zephyr.c
│   │   │   │           ├── getline-zephyr.h
│   │   │   │           ├── jerry-port.c
│   │   │   │           └── main-zephyr.c
│   │   │   ├── tests/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── benchmarks/
│   │   │   │   │   └── jerry/
│   │   │   │   │       ├── fill-array-with-numbers-3-times-5000-elements.js
│   │   │   │   │       ├── function_loop.js
│   │   │   │   │       ├── gc.js
│   │   │   │   │       ├── loop_arithmetics_10kk.js
│   │   │   │   │       └── loop_arithmetics_1kk.js
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── client_source.cmd
│   │   │   │   │   ├── client_source.expected
│   │   │   │   │   ├── client_source.js
│   │   │   │   │   ├── client_source_multiple.cmd
│   │   │   │   │   ├── client_source_multiple.expected
│   │   │   │   │   ├── client_source_multiple_1.js
│   │   │   │   │   ├── client_source_multiple_2.js
│   │   │   │   │   ├── do_abort.cmd
│   │   │   │   │   ├── do_abort.expected
│   │   │   │   │   ├── do_abort.js
│   │   │   │   │   ├── do_backtrace.cmd
│   │   │   │   │   ├── do_backtrace.expected
│   │   │   │   │   ├── do_backtrace.js
│   │   │   │   │   ├── do_break.cmd
│   │   │   │   │   ├── do_break.expected
│   │   │   │   │   ├── do_break.js
│   │   │   │   │   ├── do_continue.cmd
│   │   │   │   │   ├── do_continue.expected
│   │   │   │   │   ├── do_continue.js
│   │   │   │   │   ├── do_delete.cmd
│   │   │   │   │   ├── do_delete.expected
│   │   │   │   │   ├── do_delete.js
│   │   │   │   │   ├── do_delete_all.cmd
│   │   │   │   │   ├── do_delete_all.expected
│   │   │   │   │   ├── do_delete_all.js
│   │   │   │   │   ├── do_display.cmd
│   │   │   │   │   ├── do_display.expected
│   │   │   │   │   ├── do_display.js
│   │   │   │   │   ├── do_eval.cmd
│   │   │   │   │   ├── do_eval.expected
│   │   │   │   │   ├── do_eval.js
│   │   │   │   │   ├── do_eval_at.cmd
│   │   │   │   │   ├── do_eval_at.expected
│   │   │   │   │   ├── do_eval_at.js
│   │   │   │   │   ├── do_eval_syntax.cmd
│   │   │   │   │   ├── do_eval_syntax.expected
│   │   │   │   │   ├── do_eval_syntax.js
│   │   │   │   │   ├── do_exception.cmd
│   │   │   │   │   ├── do_exception.expected
│   │   │   │   │   ├── do_exception.js
│   │   │   │   │   ├── do_finish.cmd
│   │   │   │   │   ├── do_finish.expected
│   │   │   │   │   ├── do_finish.js
│   │   │   │   │   ├── do_help.cmd
│   │   │   │   │   ├── do_help.expected
│   │   │   │   │   ├── do_help.js
│   │   │   │   │   ├── do_list.cmd
│   │   │   │   │   ├── do_list.expected
│   │   │   │   │   ├── do_list.js
│   │   │   │   │   ├── do_next.cmd
│   │   │   │   │   ├── do_next.expected
│   │   │   │   │   ├── do_next.js
│   │   │   │   │   ├── do_pending_breakpoints.cmd
│   │   │   │   │   ├── do_pending_breakpoints.expected
│   │   │   │   │   ├── do_pending_breakpoints.js
│   │   │   │   │   ├── do_print.cmd
│   │   │   │   │   ├── do_print.expected
│   │   │   │   │   ├── do_print.js
│   │   │   │   │   ├── do_quit.cmd
│   │   │   │   │   ├── do_quit.expected
│   │   │   │   │   ├── do_quit.js
│   │   │   │   │   ├── do_restart.cmd
│   │   │   │   │   ├── do_restart.expected
│   │   │   │   │   ├── do_restart.js
│   │   │   │   │   ├── do_scope.cmd
│   │   │   │   │   ├── do_scope.expected
│   │   │   │   │   ├── do_scope.js
│   │   │   │   │   ├── do_src.cmd
│   │   │   │   │   ├── do_src.expected
│   │   │   │   │   ├── do_src.js
│   │   │   │   │   ├── do_step.cmd
│   │   │   │   │   ├── do_step.expected
│   │   │   │   │   ├── do_step.js
│   │   │   │   │   ├── do_throw.cmd
│   │   │   │   │   ├── do_throw.expected
│   │   │   │   │   ├── do_throw.js
│   │   │   │   │   ├── do_throw_adv.cmd
│   │   │   │   │   ├── do_throw_adv.expected
│   │   │   │   │   ├── do_throw_adv.js
│   │   │   │   │   ├── do_variables.cmd
│   │   │   │   │   ├── do_variables.expected
│   │   │   │   │   └── do_variables.js
│   │   │   │   ├── hello.js
│   │   │   │   ├── jerry/
│   │   │   │   │   ├── and-or.js
│   │   │   │   │   ├── arguments-parse.js
│   │   │   │   │   ├── arguments.js
│   │   │   │   │   ├── arithmetics-bignums.js
│   │   │   │   │   ├── arithmetics.js
│   │   │   │   │   ├── array-prototype-concat.js
│   │   │   │   │   ├── array-prototype-every.js
│   │   │   │   │   ├── array-prototype-filter.js
│   │   │   │   │   ├── array-prototype-foreach.js
│   │   │   │   │   ├── array-prototype-indexof.js
│   │   │   │   │   ├── array-prototype-join.js
│   │   │   │   │   ├── array-prototype-lastindexof.js
│   │   │   │   │   ├── array-prototype-map.js
│   │   │   │   │   ├── array-prototype-pop.js
│   │   │   │   │   ├── array-prototype-push.js
│   │   │   │   │   ├── array-prototype-reduce-right.js
│   │   │   │   │   ├── array-prototype-reduce.js
│   │   │   │   │   ├── array-prototype-reverse.js
│   │   │   │   │   ├── array-prototype-shift.js
│   │   │   │   │   ├── array-prototype-slice.js
│   │   │   │   │   ├── array-prototype-some.js
│   │   │   │   │   ├── array-prototype-sort.js
│   │   │   │   │   ├── array-prototype-splice.js
│   │   │   │   │   ├── array-prototype-tolocalestring.js
│   │   │   │   │   ├── array-prototype-tostring.js
│   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   ├── array.js
│   │   │   │   │   ├── assignments.js
│   │   │   │   │   ├── bitwise-logic.js
│   │   │   │   │   ├── break-continue-nested-to-try-with-blocks.js
│   │   │   │   │   ├── builtin-constructor-class.js
│   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   ├── date-annexb.js
│   │   │   │   │   ├── date-construct.js
│   │   │   │   │   ├── date-getters.js
│   │   │   │   │   ├── date-parse.js
│   │   │   │   │   ├── date-setters.js
│   │   │   │   │   ├── date-toisostring.js
│   │   │   │   │   ├── date-tojson.js
│   │   │   │   │   ├── date-tostring.js
│   │   │   │   │   ├── date-utc.js
│   │   │   │   │   ├── delete.js
│   │   │   │   │   ├── do-while.js
│   │   │   │   │   ├── empty-varg.js
│   │   │   │   │   ├── equality.js
│   │   │   │   │   ├── error.js
│   │   │   │   │   ├── es.next/
│   │   │   │   │   │   ├── argument-spread.js
│   │   │   │   │   │   ├── arguments-iterator.js
│   │   │   │   │   │   ├── arguments.js
│   │   │   │   │   │   ├── arithmetic-parse.js
│   │   │   │   │   │   ├── arithmetics-2.js
│   │   │   │   │   │   ├── arithmetics-3.js
│   │   │   │   │   │   ├── array-from.js
│   │   │   │   │   │   ├── array-isarray.js
│   │   │   │   │   │   ├── array-new-target-support.js
│   │   │   │   │   │   ├── array-of.js
│   │   │   │   │   │   ├── array-pattern.js
│   │   │   │   │   │   ├── array-prototype-copywithin.js
│   │   │   │   │   │   ├── array-prototype-entries.js
│   │   │   │   │   │   ├── array-prototype-fill.js
│   │   │   │   │   │   ├── array-prototype-find-index.js
│   │   │   │   │   │   ├── array-prototype-find.js
│   │   │   │   │   │   ├── array-prototype-flat-flatMap.js
│   │   │   │   │   │   ├── array-prototype-includes.js
│   │   │   │   │   │   ├── array-prototype-keys.js
│   │   │   │   │   │   ├── array-prototype-slice.js
│   │   │   │   │   │   ├── array-prototype-sort.js
│   │   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   │   ├── array-prototype-values.js
│   │   │   │   │   │   ├── array-species.js
│   │   │   │   │   │   ├── array-spread.js
│   │   │   │   │   │   ├── arraybuffer-isview.js
│   │   │   │   │   │   ├── arrow-assignment.js
│   │   │   │   │   │   ├── arrow-eval.js
│   │   │   │   │   │   ├── arrow-function.js
│   │   │   │   │   │   ├── arrow-this.js
│   │   │   │   │   │   ├── bigint-typedarray-prototype-filter.js
│   │   │   │   │   │   ├── bigint-typedarray-prototype-reduce.js
│   │   │   │   │   │   ├── bigint1.js
│   │   │   │   │   │   ├── bigint2.js
│   │   │   │   │   │   ├── bigint3.js
│   │   │   │   │   │   ├── bigint4.js
│   │   │   │   │   │   ├── bigint5.js
│   │   │   │   │   │   ├── bigint6.js
│   │   │   │   │   │   ├── bigint7.js
│   │   │   │   │   │   ├── bigint8.js
│   │   │   │   │   │   ├── bigint9.js
│   │   │   │   │   │   ├── binary-literal.js
│   │   │   │   │   │   ├── block-var-redecl.js
│   │   │   │   │   │   ├── builtin-objects-accessor-property-configurable.js
│   │   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   │   ├── class-fields1.js
│   │   │   │   │   │   ├── class-fields2.js
│   │   │   │   │   │   ├── class-fields3.js
│   │   │   │   │   │   ├── class-fields4.js
│   │   │   │   │   │   ├── class-fields5.js
│   │   │   │   │   │   ├── class-get-set-as-method.js
│   │   │   │   │   │   ├── class-inheritance-bound.js
│   │   │   │   │   │   ├── class-inheritance-builtin-array.js
│   │   │   │   │   │   ├── class-inheritance-builtin-typedarray.js
│   │   │   │   │   │   ├── class-inheritance-core-1.js
│   │   │   │   │   │   ├── class-inheritance-core-10.js
│   │   │   │   │   │   ├── class-inheritance-core-11.js
│   │   │   │   │   │   ├── class-inheritance-core-12.js
│   │   │   │   │   │   ├── class-inheritance-core-13.js
│   │   │   │   │   │   ├── class-inheritance-core-14.js
│   │   │   │   │   │   ├── class-inheritance-core-15.js
│   │   │   │   │   │   ├── class-inheritance-core-2.js
│   │   │   │   │   │   ├── class-inheritance-core-3.js
│   │   │   │   │   │   ├── class-inheritance-core-4.js
│   │   │   │   │   │   ├── class-inheritance-core-5.js
│   │   │   │   │   │   ├── class-inheritance-core-6.js
│   │   │   │   │   │   ├── class-inheritance-core-7.js
│   │   │   │   │   │   ├── class-inheritance-core-8.js
│   │   │   │   │   │   ├── class-inheritance-core-9.js
│   │   │   │   │   │   ├── class-inheritance-early-semantics.js
│   │   │   │   │   │   ├── class-inheritance-has-instance.js
│   │   │   │   │   │   ├── class-inheritance-inner-class.js
│   │   │   │   │   │   ├── class-inheritance-mixins-1.js
│   │   │   │   │   │   ├── class-inheritance-mixins-2.js
│   │   │   │   │   │   ├── class-super-access-direct.js
│   │   │   │   │   │   ├── class-super-access-indirect.js
│   │   │   │   │   │   ├── class-with.js
│   │   │   │   │   │   ├── class.js
│   │   │   │   │   │   ├── const1.js
│   │   │   │   │   │   ├── continue.js
│   │   │   │   │   │   ├── dataview.js
│   │   │   │   │   │   ├── date-construct.js
│   │   │   │   │   │   ├── date-prototype-toprimitive.js
│   │   │   │   │   │   ├── decimal-with-leading-zero.js
│   │   │   │   │   │   ├── directive.js
│   │   │   │   │   │   ├── error-names.js
│   │   │   │   │   │   ├── error.js
│   │   │   │   │   │   ├── exponentiation.js
│   │   │   │   │   │   ├── for-await-of-iterator-close.js
│   │   │   │   │   │   ├── for-await-of.js
│   │   │   │   │   │   ├── for-let-reference-error.js
│   │   │   │   │   │   ├── for-let.js
│   │   │   │   │   │   ├── for-of-iterator-close.js
│   │   │   │   │   │   ├── for-of.js
│   │   │   │   │   │   ├── for-pattern.js
│   │   │   │   │   │   ├── forin-header-strict.js
│   │   │   │   │   │   ├── function-accessor.js
│   │   │   │   │   │   ├── function-arguments-caller.js
│   │   │   │   │   │   ├── function-async-gen1.js
│   │   │   │   │   │   ├── function-async-gen2.js
│   │   │   │   │   │   ├── function-async-gen3.js
│   │   │   │   │   │   ├── function-async-gen4.js
│   │   │   │   │   │   ├── function-async1.js
│   │   │   │   │   │   ├── function-async2.js
│   │   │   │   │   │   ├── function-async3.js
│   │   │   │   │   │   ├── function-await1.js
│   │   │   │   │   │   ├── function-await2.js
│   │   │   │   │   │   ├── function-await3.js
│   │   │   │   │   │   ├── function-call.js
│   │   │   │   │   │   ├── function-decl.js
│   │   │   │   │   │   ├── function-if.js
│   │   │   │   │   │   ├── function-name.js
│   │   │   │   │   │   ├── function-new-target.js
│   │   │   │   │   │   ├── function-param-init.js
│   │   │   │   │   │   ├── function-param-init2.js
│   │   │   │   │   │   ├── function-param-init3.js
│   │   │   │   │   │   ├── function-param-init4.js
│   │   │   │   │   │   ├── function-pattern1.js
│   │   │   │   │   │   ├── function-pattern2.js
│   │   │   │   │   │   ├── function-properties.js
│   │   │   │   │   │   ├── function-prototype-bind.js
│   │   │   │   │   │   ├── function-prototype-hasinstance-class.js
│   │   │   │   │   │   ├── function-prototype-hasinstance.js
│   │   │   │   │   │   ├── function-rest-parameter.js
│   │   │   │   │   │   ├── function-scope.js
│   │   │   │   │   │   ├── function-scope2.js
│   │   │   │   │   │   ├── generator-function.js
│   │   │   │   │   │   ├── generator-initializer.js
│   │   │   │   │   │   ├── generator-return.js
│   │   │   │   │   │   ├── generator-throw.js
│   │   │   │   │   │   ├── generator-yield-iterator.js
│   │   │   │   │   │   ├── generator-yield.js
│   │   │   │   │   │   ├── generator.js
│   │   │   │   │   │   ├── global-this.js
│   │   │   │   │   │   ├── global-unescape.js
│   │   │   │   │   │   ├── identifier-escape.js
│   │   │   │   │   │   ├── instanceof-symbol-hasinstance-class.js
│   │   │   │   │   │   ├── instanceof-symbol-hasinstance.js
│   │   │   │   │   │   ├── intrinsic-properties.js
│   │   │   │   │   │   ├── iterator-prototype.js
│   │   │   │   │   │   ├── json-parse-proxy.js
│   │   │   │   │   │   ├── json-stringify.js
│   │   │   │   │   │   ├── json-superset.js
│   │   │   │   │   │   ├── length-property.js
│   │   │   │   │   │   ├── let1.js
│   │   │   │   │   │   ├── let10.js
│   │   │   │   │   │   ├── let11.js
│   │   │   │   │   │   ├── let12.js
│   │   │   │   │   │   ├── let13.js
│   │   │   │   │   │   ├── let14.js
│   │   │   │   │   │   ├── let15.js
│   │   │   │   │   │   ├── let2.js
│   │   │   │   │   │   ├── let3.js
│   │   │   │   │   │   ├── let4.js
│   │   │   │   │   │   ├── let5.js
│   │   │   │   │   │   ├── let6.js
│   │   │   │   │   │   ├── let7.js
│   │   │   │   │   │   ├── let8.js
│   │   │   │   │   │   ├── let9.js
│   │   │   │   │   │   ├── map-iterators.js
│   │   │   │   │   │   ├── map-prototype-foreach.js
│   │   │   │   │   │   ├── map.js
│   │   │   │   │   │   ├── math-acosh.js
│   │   │   │   │   │   ├── math-asinh.js
│   │   │   │   │   │   ├── math-atanh.js
│   │   │   │   │   │   ├── math-cbrt.js
│   │   │   │   │   │   ├── math-cosh.js
│   │   │   │   │   │   ├── math-expm1.js
│   │   │   │   │   │   ├── math-functions-tonumber-rule2.js
│   │   │   │   │   │   ├── math-log10.js
│   │   │   │   │   │   ├── math-log1p.js
│   │   │   │   │   │   ├── math-log2.js
│   │   │   │   │   │   ├── math-sign.js
│   │   │   │   │   │   ├── math-sinh.js
│   │   │   │   │   │   ├── math-tanh.js
│   │   │   │   │   │   ├── math-trunc.js
│   │   │   │   │   │   ├── module-export-01.mjs
│   │   │   │   │   │   ├── module-export-02.mjs
│   │   │   │   │   │   ├── module-export-03.mjs
│   │   │   │   │   │   ├── module-export-04.mjs
│   │   │   │   │   │   ├── module-export-05.mjs
│   │   │   │   │   │   ├── module-export-06.mjs
│   │   │   │   │   │   ├── module-export-07.mjs
│   │   │   │   │   │   ├── module-export-08.mjs
│   │   │   │   │   │   ├── module-export-default-1.mjs
│   │   │   │   │   │   ├── module-export-default-2.mjs
│   │   │   │   │   │   ├── module-export-default-3.mjs
│   │   │   │   │   │   ├── module-export-default-4.mjs
│   │   │   │   │   │   ├── module-export-default-5.mjs
│   │   │   │   │   │   ├── module-export-default-6.mjs
│   │   │   │   │   │   ├── module-export-default-7.mjs
│   │   │   │   │   │   ├── module-export-default-8.mjs
│   │   │   │   │   │   ├── module-export-default-9.mjs
│   │   │   │   │   │   ├── module-export-default-main.mjs
│   │   │   │   │   │   ├── module-export-fail-test.mjs
│   │   │   │   │   │   ├── module-import-01.mjs
│   │   │   │   │   │   ├── module-import-02.mjs
│   │   │   │   │   │   ├── module-import-03.mjs
│   │   │   │   │   │   ├── module-import-04.mjs
│   │   │   │   │   │   ├── module-import-05.mjs
│   │   │   │   │   │   ├── module-resource-name-export.mjs
│   │   │   │   │   │   ├── module-resource-name.mjs
│   │   │   │   │   │   ├── new-target-async.js
│   │   │   │   │   │   ├── new-target-class.js
│   │   │   │   │   │   ├── new-target-error.js
│   │   │   │   │   │   ├── new-target-for-boolean.js
│   │   │   │   │   │   ├── new-target-for-containers.js
│   │   │   │   │   │   ├── new-target-for-dataview.js
│   │   │   │   │   │   ├── new-target-for-date-object.js
│   │   │   │   │   │   ├── new-target-for-number.js
│   │   │   │   │   │   ├── new-target-for-string.js
│   │   │   │   │   │   ├── new-target-for-typedarray-and-arraybuffer.js
│   │   │   │   │   │   ├── new-target-generator.js
│   │   │   │   │   │   ├── new-target.js
│   │   │   │   │   │   ├── nullish-coalescing.js
│   │   │   │   │   │   ├── number-constants.js
│   │   │   │   │   │   ├── number-isfinite.js
│   │   │   │   │   │   ├── number-isinteger.js
│   │   │   │   │   │   ├── number-isnan.js
│   │   │   │   │   │   ├── number-issafeinteger.js
│   │   │   │   │   │   ├── number-methods.js
│   │   │   │   │   │   ├── numeric-separator.js
│   │   │   │   │   │   ├── object-assign.js
│   │   │   │   │   │   ├── object-computed-prescanner.js
│   │   │   │   │   │   ├── object-computed.js
│   │   │   │   │   │   ├── object-copy-data.js
│   │   │   │   │   │   ├── object-define-properties.js
│   │   │   │   │   │   ├── object-entries.js
│   │   │   │   │   │   ├── object-freeze-with-symbol.js
│   │   │   │   │   │   ├── object-fromEntries.js
│   │   │   │   │   │   ├── object-get-own-property-descriptors.js
│   │   │   │   │   │   ├── object-get-own-property-names.js
│   │   │   │   │   │   ├── object-get-own-property-symbols.js
│   │   │   │   │   │   ├── object-getprototypeof.js
│   │   │   │   │   │   ├── object-initializer.js
│   │   │   │   │   │   ├── object-is.js
│   │   │   │   │   │   ├── object-keys.js
│   │   │   │   │   │   ├── object-literal-super.js
│   │   │   │   │   │   ├── object-methods.js
│   │   │   │   │   │   ├── object-pattern.js
│   │   │   │   │   │   ├── object-pattern2.js
│   │   │   │   │   │   ├── object-property-redefiniton.js
│   │   │   │   │   │   ├── object-prototype-define-getter.js
│   │   │   │   │   │   ├── object-prototype-define-setter.js
│   │   │   │   │   │   ├── object-prototype-lookup-getter.js
│   │   │   │   │   │   ├── object-prototype-lookup-setter.js
│   │   │   │   │   │   ├── object-prototype-proto.js
│   │   │   │   │   │   ├── object-prototype-tostring.js
│   │   │   │   │   │   ├── object-seal-with-symbol.js
│   │   │   │   │   │   ├── object-values.js
│   │   │   │   │   │   ├── octal-literal.js
│   │   │   │   │   │   ├── parser-additive-op-assign.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-1.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-2.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-3.js
│   │   │   │   │   │   ├── parser-binary-logical-op-assign.js
│   │   │   │   │   │   ├── parser-covered-parenthesized-exp-assign.js
│   │   │   │   │   │   ├── parser-delete-op-assign.js
│   │   │   │   │   │   ├── parser-equality-exp-assign-1.js
│   │   │   │   │   │   ├── parser-equality-exp-assign-2.js
│   │   │   │   │   │   ├── parser-mult-op-assign-1.js
│   │   │   │   │   │   ├── parser-mult-op-assign-2.js
│   │   │   │   │   │   ├── parser-mult-op-assign-3.js
│   │   │   │   │   │   ├── parser-not-op-assign.js
│   │   │   │   │   │   ├── parser-plus-negation-op-assign.js
│   │   │   │   │   │   ├── parser-postfix-exp-assign.js
│   │   │   │   │   │   ├── parser-prefix-exp-assign.js
│   │   │   │   │   │   ├── parser-rational-exp-assign-1.js
│   │   │   │   │   │   ├── parser-rational-exp-assign-2.js
│   │   │   │   │   │   ├── parser-shift-exp-assign.js
│   │   │   │   │   │   ├── parser-typeof-op-assign.js
│   │   │   │   │   │   ├── parser-void-op-assign.js
│   │   │   │   │   │   ├── promise-all-iterator.js
│   │   │   │   │   │   ├── promise-new-target.js
│   │   │   │   │   │   ├── promise-on-finally.js
│   │   │   │   │   │   ├── promise-race-iterator.js
│   │   │   │   │   │   ├── promise-species.js
│   │   │   │   │   │   ├── promise-thenable.js
│   │   │   │   │   │   ├── proxy-date-prototype-json.js
│   │   │   │   │   │   ├── proxy-extension.js
│   │   │   │   │   │   ├── proxy-for-in.js
│   │   │   │   │   │   ├── proxy_call.js
│   │   │   │   │   │   ├── proxy_construct.js
│   │   │   │   │   │   ├── proxy_create.js
│   │   │   │   │   │   ├── proxy_define_own_property.js
│   │   │   │   │   │   ├── proxy_delete.js
│   │   │   │   │   │   ├── proxy_flags.js
│   │   │   │   │   │   ├── proxy_get.js
│   │   │   │   │   │   ├── proxy_get_own_property_descriptor.js
│   │   │   │   │   │   ├── proxy_get_prototoype_of.js
│   │   │   │   │   │   ├── proxy_has.js
│   │   │   │   │   │   ├── proxy_is_extensible.js
│   │   │   │   │   │   ├── proxy_own_keys.js
│   │   │   │   │   │   ├── proxy_prevent_extensions.js
│   │   │   │   │   │   ├── proxy_revocable.js
│   │   │   │   │   │   ├── proxy_set.js
│   │   │   │   │   │   ├── proxy_set_apply_receiver.js
│   │   │   │   │   │   ├── proxy_set_prototoype_of.js
│   │   │   │   │   │   ├── realms1.js
│   │   │   │   │   │   ├── realms2.js
│   │   │   │   │   │   ├── realms3.js
│   │   │   │   │   │   ├── realms4.js
│   │   │   │   │   │   ├── reflect-apply.js
│   │   │   │   │   │   ├── reflect-construct.js
│   │   │   │   │   │   ├── reflect-define-Property.js
│   │   │   │   │   │   ├── reflect-deleteproperty.js
│   │   │   │   │   │   ├── reflect-get-own-property-description.js
│   │   │   │   │   │   ├── reflect-get.js
│   │   │   │   │   │   ├── reflect-getPrototypeOf.js
│   │   │   │   │   │   ├── reflect-has.js
│   │   │   │   │   │   ├── reflect-isextensible.js
│   │   │   │   │   │   ├── reflect-own-keys.js
│   │   │   │   │   │   ├── reflect-preventextensions.js
│   │   │   │   │   │   ├── reflect-set.js
│   │   │   │   │   │   ├── reflect-setPrototypeOf.js
│   │   │   │   │   │   ├── regexp-accessors-descriptors.js
│   │   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   │   ├── regexp-dotAll.js
│   │   │   │   │   │   ├── regexp-flags.js
│   │   │   │   │   │   ├── regexp-lastindex.js
│   │   │   │   │   │   ├── regexp-new-target.js
│   │   │   │   │   │   ├── regexp-prototype-match-all.js
│   │   │   │   │   │   ├── regexp-prototype-match.js
│   │   │   │   │   │   ├── regexp-prototype-source.js
│   │   │   │   │   │   ├── regexp-prototype-split.js
│   │   │   │   │   │   ├── regexp-prototype-test.js
│   │   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   │   ├── regexp-unicode.js
│   │   │   │   │   │   ├── regression-test-issue-1616.js
│   │   │   │   │   │   ├── regression-test-issue-1622.js
│   │   │   │   │   │   ├── regression-test-issue-1633.js
│   │   │   │   │   │   ├── regression-test-issue-1670.js
│   │   │   │   │   │   ├── regression-test-issue-1763.js
│   │   │   │   │   │   ├── regression-test-issue-1765.js
│   │   │   │   │   │   ├── regression-test-issue-1881.js
│   │   │   │   │   │   ├── regression-test-issue-1936.js
│   │   │   │   │   │   ├── regression-test-issue-1995.js
│   │   │   │   │   │   ├── regression-test-issue-1996.js
│   │   │   │   │   │   ├── regression-test-issue-1997.js
│   │   │   │   │   │   ├── regression-test-issue-2058.js
│   │   │   │   │   │   ├── regression-test-issue-2107.js
│   │   │   │   │   │   ├── regression-test-issue-2110.js
│   │   │   │   │   │   ├── regression-test-issue-2111.js
│   │   │   │   │   │   ├── regression-test-issue-2143.js
│   │   │   │   │   │   ├── regression-test-issue-2181.js
│   │   │   │   │   │   ├── regression-test-issue-2414.js
│   │   │   │   │   │   ├── regression-test-issue-2435.js
│   │   │   │   │   │   ├── regression-test-issue-2465.js
│   │   │   │   │   │   ├── regression-test-issue-2468.js
│   │   │   │   │   │   ├── regression-test-issue-2486.js
│   │   │   │   │   │   ├── regression-test-issue-2487.js
│   │   │   │   │   │   ├── regression-test-issue-2488.js
│   │   │   │   │   │   ├── regression-test-issue-2489-original.js
│   │   │   │   │   │   ├── regression-test-issue-2490.js
│   │   │   │   │   │   ├── regression-test-issue-2528.js
│   │   │   │   │   │   ├── regression-test-issue-2544.js
│   │   │   │   │   │   ├── regression-test-issue-2587.js
│   │   │   │   │   │   ├── regression-test-issue-2602.js
│   │   │   │   │   │   ├── regression-test-issue-2603.js
│   │   │   │   │   │   ├── regression-test-issue-2657.js
│   │   │   │   │   │   ├── regression-test-issue-2658.js
│   │   │   │   │   │   ├── regression-test-issue-2664.js
│   │   │   │   │   │   ├── regression-test-issue-2666.js
│   │   │   │   │   │   ├── regression-test-issue-2667.js
│   │   │   │   │   │   ├── regression-test-issue-2671.js
│   │   │   │   │   │   ├── regression-test-issue-2693.js
│   │   │   │   │   │   ├── regression-test-issue-2698.js
│   │   │   │   │   │   ├── regression-test-issue-2724.js
│   │   │   │   │   │   ├── regression-test-issue-2743.js
│   │   │   │   │   │   ├── regression-test-issue-2757.js
│   │   │   │   │   │   ├── regression-test-issue-2768.js
│   │   │   │   │   │   ├── regression-test-issue-2769.js
│   │   │   │   │   │   ├── regression-test-issue-2770.js
│   │   │   │   │   │   ├── regression-test-issue-2777.js
│   │   │   │   │   │   ├── regression-test-issue-2779.js
│   │   │   │   │   │   ├── regression-test-issue-2782.js
│   │   │   │   │   │   ├── regression-test-issue-2783.js
│   │   │   │   │   │   ├── regression-test-issue-2822.js
│   │   │   │   │   │   ├── regression-test-issue-2823.js
│   │   │   │   │   │   ├── regression-test-issue-2825.js
│   │   │   │   │   │   ├── regression-test-issue-2842.mjs
│   │   │   │   │   │   ├── regression-test-issue-2848.js
│   │   │   │   │   │   ├── regression-test-issue-2850.js
│   │   │   │   │   │   ├── regression-test-issue-2851.js
│   │   │   │   │   │   ├── regression-test-issue-2852.js
│   │   │   │   │   │   ├── regression-test-issue-2853.js
│   │   │   │   │   │   ├── regression-test-issue-2854.js
│   │   │   │   │   │   ├── regression-test-issue-2891.js
│   │   │   │   │   │   ├── regression-test-issue-2895.js
│   │   │   │   │   │   ├── regression-test-issue-2910.js
│   │   │   │   │   │   ├── regression-test-issue-2911.js
│   │   │   │   │   │   ├── regression-test-issue-2947.js
│   │   │   │   │   │   ├── regression-test-issue-2948.js
│   │   │   │   │   │   ├── regression-test-issue-2950.js
│   │   │   │   │   │   ├── regression-test-issue-2951.js
│   │   │   │   │   │   ├── regression-test-issue-2975.js
│   │   │   │   │   │   ├── regression-test-issue-2990.js
│   │   │   │   │   │   ├── regression-test-issue-3040.js
│   │   │   │   │   │   ├── regression-test-issue-3043-3046.js
│   │   │   │   │   │   ├── regression-test-issue-3045.js
│   │   │   │   │   │   ├── regression-test-issue-3049.js
│   │   │   │   │   │   ├── regression-test-issue-3050.js
│   │   │   │   │   │   ├── regression-test-issue-3062.js
│   │   │   │   │   │   ├── regression-test-issue-3063.js
│   │   │   │   │   │   ├── regression-test-issue-3067.js
│   │   │   │   │   │   ├── regression-test-issue-3070.js
│   │   │   │   │   │   ├── regression-test-issue-3072.js
│   │   │   │   │   │   ├── regression-test-issue-3078.js
│   │   │   │   │   │   ├── regression-test-issue-3079.js
│   │   │   │   │   │   ├── regression-test-issue-3084.js
│   │   │   │   │   │   ├── regression-test-issue-3095.js
│   │   │   │   │   │   ├── regression-test-issue-3097.js
│   │   │   │   │   │   ├── regression-test-issue-3105.js
│   │   │   │   │   │   ├── regression-test-issue-3106.js
│   │   │   │   │   │   ├── regression-test-issue-3107.js
│   │   │   │   │   │   ├── regression-test-issue-3109.js
│   │   │   │   │   │   ├── regression-test-issue-3129.js
│   │   │   │   │   │   ├── regression-test-issue-3162.js
│   │   │   │   │   │   ├── regression-test-issue-3204.js
│   │   │   │   │   │   ├── regression-test-issue-3222.js
│   │   │   │   │   │   ├── regression-test-issue-3237.js
│   │   │   │   │   │   ├── regression-test-issue-3243.js
│   │   │   │   │   │   ├── regression-test-issue-3250.js
│   │   │   │   │   │   ├── regression-test-issue-3252.js
│   │   │   │   │   │   ├── regression-test-issue-3262.js
│   │   │   │   │   │   ├── regression-test-issue-3267.js
│   │   │   │   │   │   ├── regression-test-issue-3298.js
│   │   │   │   │   │   ├── regression-test-issue-3302.js
│   │   │   │   │   │   ├── regression-test-issue-3306.js
│   │   │   │   │   │   ├── regression-test-issue-3348.js
│   │   │   │   │   │   ├── regression-test-issue-3355.js
│   │   │   │   │   │   ├── regression-test-issue-3356.js
│   │   │   │   │   │   ├── regression-test-issue-3360.js
│   │   │   │   │   │   ├── regression-test-issue-3361.js
│   │   │   │   │   │   ├── regression-test-issue-3363.js
│   │   │   │   │   │   ├── regression-test-issue-3364.js
│   │   │   │   │   │   ├── regression-test-issue-3376.js
│   │   │   │   │   │   ├── regression-test-issue-3381.js
│   │   │   │   │   │   ├── regression-test-issue-3383.js
│   │   │   │   │   │   ├── regression-test-issue-3390.js
│   │   │   │   │   │   ├── regression-test-issue-3395.js
│   │   │   │   │   │   ├── regression-test-issue-3396.js
│   │   │   │   │   │   ├── regression-test-issue-3408.js
│   │   │   │   │   │   ├── regression-test-issue-3409.js
│   │   │   │   │   │   ├── regression-test-issue-3411.js
│   │   │   │   │   │   ├── regression-test-issue-3419.js
│   │   │   │   │   │   ├── regression-test-issue-3420.js
│   │   │   │   │   │   ├── regression-test-issue-3421.js
│   │   │   │   │   │   ├── regression-test-issue-3422.js
│   │   │   │   │   │   ├── regression-test-issue-3431.js
│   │   │   │   │   │   ├── regression-test-issue-3434.js
│   │   │   │   │   │   ├── regression-test-issue-3437.js
│   │   │   │   │   │   ├── regression-test-issue-3454.js
│   │   │   │   │   │   ├── regression-test-issue-3455.js
│   │   │   │   │   │   ├── regression-test-issue-3458.js
│   │   │   │   │   │   ├── regression-test-issue-3459.js
│   │   │   │   │   │   ├── regression-test-issue-3478.js
│   │   │   │   │   │   ├── regression-test-issue-3479.js
│   │   │   │   │   │   ├── regression-test-issue-3483.js
│   │   │   │   │   │   ├── regression-test-issue-3485.js
│   │   │   │   │   │   ├── regression-test-issue-3519.js
│   │   │   │   │   │   ├── regression-test-issue-3527.js
│   │   │   │   │   │   ├── regression-test-issue-3534.js
│   │   │   │   │   │   ├── regression-test-issue-3536.js
│   │   │   │   │   │   ├── regression-test-issue-3580.js
│   │   │   │   │   │   ├── regression-test-issue-3588.js
│   │   │   │   │   │   ├── regression-test-issue-3589.js
│   │   │   │   │   │   ├── regression-test-issue-3595.js
│   │   │   │   │   │   ├── regression-test-issue-3606.js
│   │   │   │   │   │   ├── regression-test-issue-3611.js
│   │   │   │   │   │   ├── regression-test-issue-3625.js
│   │   │   │   │   │   ├── regression-test-issue-3628.js
│   │   │   │   │   │   ├── regression-test-issue-3630.js
│   │   │   │   │   │   ├── regression-test-issue-3636.js
│   │   │   │   │   │   ├── regression-test-issue-3637.js
│   │   │   │   │   │   ├── regression-test-issue-3640.js
│   │   │   │   │   │   ├── regression-test-issue-3641.js
│   │   │   │   │   │   ├── regression-test-issue-3647.js
│   │   │   │   │   │   ├── regression-test-issue-3655.js
│   │   │   │   │   │   ├── regression-test-issue-3656.js
│   │   │   │   │   │   ├── regression-test-issue-3658.js
│   │   │   │   │   │   ├── regression-test-issue-3665.js
│   │   │   │   │   │   ├── regression-test-issue-3671.js
│   │   │   │   │   │   ├── regression-test-issue-3713.js
│   │   │   │   │   │   ├── regression-test-issue-3715.js
│   │   │   │   │   │   ├── regression-test-issue-3727.js
│   │   │   │   │   │   ├── regression-test-issue-3751.js
│   │   │   │   │   │   ├── regression-test-issue-3760.js
│   │   │   │   │   │   ├── regression-test-issue-3784.js
│   │   │   │   │   │   ├── regression-test-issue-3785.js
│   │   │   │   │   │   ├── regression-test-issue-3787.js
│   │   │   │   │   │   ├── regression-test-issue-3812.js
│   │   │   │   │   │   ├── regression-test-issue-3814.js
│   │   │   │   │   │   ├── regression-test-issue-3815.js
│   │   │   │   │   │   ├── regression-test-issue-3817.js
│   │   │   │   │   │   ├── regression-test-issue-3819.js
│   │   │   │   │   │   ├── regression-test-issue-3820.js
│   │   │   │   │   │   ├── regression-test-issue-3822.js
│   │   │   │   │   │   ├── regression-test-issue-3823.js
│   │   │   │   │   │   ├── regression-test-issue-3824.js
│   │   │   │   │   │   ├── regression-test-issue-3825.js
│   │   │   │   │   │   ├── regression-test-issue-3836.js
│   │   │   │   │   │   ├── regression-test-issue-3837.js
│   │   │   │   │   │   ├── regression-test-issue-3841.js
│   │   │   │   │   │   ├── regression-test-issue-3842.js
│   │   │   │   │   │   ├── regression-test-issue-3845.js
│   │   │   │   │   │   ├── regression-test-issue-3849.js
│   │   │   │   │   │   ├── regression-test-issue-3856.js
│   │   │   │   │   │   ├── regression-test-issue-3857.js
│   │   │   │   │   │   ├── regression-test-issue-3860.js
│   │   │   │   │   │   ├── regression-test-issue-3861.js
│   │   │   │   │   │   ├── regression-test-issue-3862.js
│   │   │   │   │   │   ├── regression-test-issue-3866.js
│   │   │   │   │   │   ├── regression-test-issue-3868.js
│   │   │   │   │   │   ├── regression-test-issue-3869.js
│   │   │   │   │   │   ├── regression-test-issue-3870.js
│   │   │   │   │   │   ├── regression-test-issue-3871.js
│   │   │   │   │   │   ├── regression-test-issue-3880.js
│   │   │   │   │   │   ├── regression-test-issue-3888.js
│   │   │   │   │   │   ├── regression-test-issue-3893.js
│   │   │   │   │   │   ├── regression-test-issue-3908.js
│   │   │   │   │   │   ├── regression-test-issue-3935.js
│   │   │   │   │   │   ├── regression-test-issue-3945.js
│   │   │   │   │   │   ├── regression-test-issue-3950.js
│   │   │   │   │   │   ├── regression-test-issue-3975.js
│   │   │   │   │   │   ├── regression-test-issue-4013.js
│   │   │   │   │   │   ├── regression-test-issue-4016-4019.js
│   │   │   │   │   │   ├── regression-test-issue-4017.js
│   │   │   │   │   │   ├── regression-test-issue-4018.js
│   │   │   │   │   │   ├── regression-test-issue-4043.js
│   │   │   │   │   │   ├── regression-test-issue-4044.js
│   │   │   │   │   │   ├── regression-test-issue-4045.js
│   │   │   │   │   │   ├── regression-test-issue-4048.js
│   │   │   │   │   │   ├── regression-test-issue-4050.js
│   │   │   │   │   │   ├── regression-test-issue-4051.js
│   │   │   │   │   │   ├── regression-test-issue-4052.js
│   │   │   │   │   │   ├── regression-test-issue-4054.js
│   │   │   │   │   │   ├── regression-test-issue-4059.js
│   │   │   │   │   │   ├── regression-test-issue-4093.js
│   │   │   │   │   │   ├── regression-test-issue-4094.js
│   │   │   │   │   │   ├── regression-test-issue-4097.js
│   │   │   │   │   │   ├── regression-test-issue-4129.js
│   │   │   │   │   │   ├── regression-test-issue-4131.js
│   │   │   │   │   │   ├── regression-test-issue-4132.js
│   │   │   │   │   │   ├── regression-test-issue-4138.js
│   │   │   │   │   │   ├── regression-test-issue-4139.js
│   │   │   │   │   │   ├── regression-test-issue-4146.js
│   │   │   │   │   │   ├── regression-test-issue-4147.js
│   │   │   │   │   │   ├── regression-test-issue-4148.js
│   │   │   │   │   │   ├── regression-test-issue-4149.js
│   │   │   │   │   │   ├── regression-test-issue-4213.js
│   │   │   │   │   │   ├── regression-test-issue-4214.js
│   │   │   │   │   │   ├── regression-test-issue-4234.js
│   │   │   │   │   │   ├── regression-test-issue-4265.js
│   │   │   │   │   │   ├── regression-test-issue-4341.js
│   │   │   │   │   │   ├── regression-test-issue-4375.js
│   │   │   │   │   │   ├── regression-test-issue-4385.js
│   │   │   │   │   │   ├── regression-test-issue-4396.js
│   │   │   │   │   │   ├── regression-test-issue-4397.js
│   │   │   │   │   │   ├── regression-test-issue-4398.js
│   │   │   │   │   │   ├── regression-test-issue-4402.js
│   │   │   │   │   │   ├── regression-test-issue-4405.js
│   │   │   │   │   │   ├── regression-test-issue-4408.js
│   │   │   │   │   │   ├── regression-test-issue-4413.js
│   │   │   │   │   │   ├── regression-test-issue-4432.js
│   │   │   │   │   │   ├── regression-test-issue-4440.js
│   │   │   │   │   │   ├── regression-test-issue-4441.js
│   │   │   │   │   │   ├── regression-test-issue-4442.js
│   │   │   │   │   │   ├── regression-test-issue-4445.js
│   │   │   │   │   │   ├── regression-test-issue-4446.js
│   │   │   │   │   │   ├── regression-test-issue-4463.js
│   │   │   │   │   │   ├── regression-test-issue-4464.js
│   │   │   │   │   │   ├── regression-test-issue-4466.js
│   │   │   │   │   │   ├── regression-test-issue-4468.js
│   │   │   │   │   │   ├── regression-test-issue-4469.js
│   │   │   │   │   │   ├── regression-test-issue-612.js
│   │   │   │   │   │   ├── regression-test-issue-782.js
│   │   │   │   │   │   ├── restricted-properties.js
│   │   │   │   │   │   ├── set-iterators.js
│   │   │   │   │   │   ├── set.js
│   │   │   │   │   │   ├── string-fromcodepoint.js
│   │   │   │   │   │   ├── string-iterator.js
│   │   │   │   │   │   ├── string-prototype-codepointat.js
│   │   │   │   │   │   ├── string-prototype-endswith.js
│   │   │   │   │   │   ├── string-prototype-includes.js
│   │   │   │   │   │   ├── string-prototype-match-all.js
│   │   │   │   │   │   ├── string-prototype-match.js
│   │   │   │   │   │   ├── string-prototype-padding.js
│   │   │   │   │   │   ├── string-prototype-repeat.js
│   │   │   │   │   │   ├── string-prototype-replace-all.js
│   │   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   │   ├── string-prototype-startswith.js
│   │   │   │   │   │   ├── string-prototype-trim.js
│   │   │   │   │   │   ├── string-raw-crash-escaping-backslash.js
│   │   │   │   │   │   ├── string-raw.js
│   │   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   │   ├── super-assignment.js
│   │   │   │   │   │   ├── symbol-computed-object-literal.js
│   │   │   │   │   │   ├── symbol-exception.js
│   │   │   │   │   │   ├── symbol-in.js
│   │   │   │   │   │   ├── symbol-isconcatspreadable.js
│   │   │   │   │   │   ├── symbol-key-keyfor.js
│   │   │   │   │   │   ├── symbol-prototype-description.js
│   │   │   │   │   │   ├── symbol-prototype-symbol-toprimitive.js
│   │   │   │   │   │   ├── symbol-prototype-tostring.js
│   │   │   │   │   │   ├── symbol-prototype-valueof.js
│   │   │   │   │   │   ├── symbol-prototype.toprimitive.js
│   │   │   │   │   │   ├── symbol-replace.js
│   │   │   │   │   │   ├── symbol-search.js
│   │   │   │   │   │   ├── symbol-split.js
│   │   │   │   │   │   ├── symbol-unscopables.js
│   │   │   │   │   │   ├── symbol.js
│   │   │   │   │   │   ├── tagged-template-literal.js
│   │   │   │   │   │   ├── template_string.js
│   │   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   │   ├── test_suite_19.js
│   │   │   │   │   │   ├── test_suite_22.js
│   │   │   │   │   │   ├── test_suite_24.js
│   │   │   │   │   │   ├── test_suite_25.js
│   │   │   │   │   │   ├── to-length.js
│   │   │   │   │   │   ├── to-number-string.js
│   │   │   │   │   │   ├── to-property-key.js
│   │   │   │   │   │   ├── try-catch.js
│   │   │   │   │   │   ├── try-pattern.js
│   │   │   │   │   │   ├── typedArray-fill.js
│   │   │   │   │   │   ├── typedArray-find-index.js
│   │   │   │   │   │   ├── typedArray-find.js
│   │   │   │   │   │   ├── typedArray-join.js
│   │   │   │   │   │   ├── typedArray-set-with-typedArray.js
│   │   │   │   │   │   ├── typedArray-sort.js
│   │   │   │   │   │   ├── typedArray-stringify.js
│   │   │   │   │   │   ├── typedArray-subarray.js
│   │   │   │   │   │   ├── typedArray-tostring.js
│   │   │   │   │   │   ├── typedarray-from.js
│   │   │   │   │   │   ├── typedarray-of.js
│   │   │   │   │   │   ├── typedarray-offset-modulo.js
│   │   │   │   │   │   ├── typedarray-prototype-copy-within.js
│   │   │   │   │   │   ├── typedarray-prototype-entries.js
│   │   │   │   │   │   ├── typedarray-prototype-includes.js
│   │   │   │   │   │   ├── typedarray-prototype-indexof.js
│   │   │   │   │   │   ├── typedarray-prototype-keys.js
│   │   │   │   │   │   ├── typedarray-prototype-lastindexof.js
│   │   │   │   │   │   ├── typedarray-prototype-slice-ext-arraybuffer.js
│   │   │   │   │   │   ├── typedarray-prototype-slice.js
│   │   │   │   │   │   ├── typedarray-prototype-tolocalestring.js
│   │   │   │   │   │   ├── typedarray-prototype-values.js
│   │   │   │   │   │   ├── typedarray-symbol-properties.js
│   │   │   │   │   │   ├── unicode-escape-identifiers.js
│   │   │   │   │   │   ├── weakmap.js
│   │   │   │   │   │   └── weakset.js
│   │   │   │   │   ├── es5.1/
│   │   │   │   │   │   ├── arguments.js
│   │   │   │   │   │   ├── arithmetic-parse.js
│   │   │   │   │   │   ├── arithmetics.js
│   │   │   │   │   │   ├── array-prototype-push.js
│   │   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   │   ├── date-utc.js
│   │   │   │   │   │   ├── func-decl.js
│   │   │   │   │   │   ├── func-length.js
│   │   │   │   │   │   ├── json-superset.js
│   │   │   │   │   │   ├── object-getprototypeof.js
│   │   │   │   │   │   ├── object-literal-fails.js
│   │   │   │   │   │   ├── object-methods.js
│   │   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   │   ├── regexp-lastindex.js
│   │   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   │   ├── regression-test-issue-1065.js
│   │   │   │   │   │   ├── regression-test-issue-1080.js
│   │   │   │   │   │   ├── regression-test-issue-116.js
│   │   │   │   │   │   ├── regression-test-issue-1546.js
│   │   │   │   │   │   ├── regression-test-issue-1641.js
│   │   │   │   │   │   ├── regression-test-issue-2058.js
│   │   │   │   │   │   ├── regression-test-issue-312.js
│   │   │   │   │   │   ├── regression-test-issue-3151-function.js
│   │   │   │   │   │   ├── regression-test-issue-3637.js
│   │   │   │   │   │   ├── regression-test-issue-3815.js
│   │   │   │   │   │   ├── regression-test-issue-787.js
│   │   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   │   ├── string-regexp-methods.js
│   │   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   │   └── try-catch.js
│   │   │   │   │   ├── escape-sequences.js
│   │   │   │   │   ├── eval-with.js
│   │   │   │   │   ├── eval.js
│   │   │   │   │   ├── fail/
│   │   │   │   │   │   ├── arguments-assignment-strict.js
│   │   │   │   │   │   ├── arguments-catch-strict.js
│   │   │   │   │   │   ├── arguments-in-prop-set-param-list-strict.js
│   │   │   │   │   │   ├── arguments-in-var-decl-strict.js
│   │   │   │   │   │   ├── arguments-param-strict.js
│   │   │   │   │   │   ├── arguments-postfix-strict.js
│   │   │   │   │   │   ├── arguments-prefix-strict.js
│   │   │   │   │   │   ├── delete-strict.js
│   │   │   │   │   │   ├── escape-sequences-invalid-hex.js
│   │   │   │   │   │   ├── escape-sequences-invalid-unicode.js
│   │   │   │   │   │   ├── escape-sequences-invalid-variable.js
│   │   │   │   │   │   ├── eval-assignment-strict.js
│   │   │   │   │   │   ├── eval-catch-strict.js
│   │   │   │   │   │   ├── eval-in-prop-set-param-list-strict.js
│   │   │   │   │   │   ├── eval-in-var-decl-strict.js
│   │   │   │   │   │   ├── eval-param-strict.js
│   │   │   │   │   │   ├── eval-postfix-strict.js
│   │   │   │   │   │   ├── eval-prefix-strict.js
│   │   │   │   │   │   ├── func-expr-strict.js
│   │   │   │   │   │   ├── labelled-statements-break-across-function.js
│   │   │   │   │   │   ├── labelled-statements-duplicate-label.js
│   │   │   │   │   │   ├── labelled-statements-no-label.js
│   │   │   │   │   │   ├── let-strict.js
│   │   │   │   │   │   ├── module-001.mjs
│   │   │   │   │   │   ├── module-002.mjs
│   │   │   │   │   │   ├── module-003.mjs
│   │   │   │   │   │   ├── module-004.mjs
│   │   │   │   │   │   ├── module-005.mjs
│   │   │   │   │   │   ├── module-006.mjs
│   │   │   │   │   │   ├── module-007.mjs
│   │   │   │   │   │   ├── module-008.mjs
│   │   │   │   │   │   ├── module-009.mjs
│   │   │   │   │   │   ├── module-010.mjs
│   │   │   │   │   │   ├── module-011.mjs
│   │   │   │   │   │   ├── module-012.mjs
│   │   │   │   │   │   ├── module-013.mjs
│   │   │   │   │   │   ├── module-014.mjs
│   │   │   │   │   │   ├── module-015.mjs
│   │   │   │   │   │   ├── module-016.mjs
│   │   │   │   │   │   ├── module-017.mjs
│   │   │   │   │   │   ├── module-018.mjs
│   │   │   │   │   │   ├── module-019.mjs
│   │   │   │   │   │   ├── module-020.mjs
│   │   │   │   │   │   ├── module-021.mjs
│   │   │   │   │   │   ├── module-022.mjs
│   │   │   │   │   │   ├── module-023.mjs
│   │   │   │   │   │   ├── module-024.mjs
│   │   │   │   │   │   ├── module-025.mjs
│   │   │   │   │   │   ├── module-026.mjs
│   │   │   │   │   │   ├── module-027.mjs
│   │   │   │   │   │   ├── module-028.mjs
│   │   │   │   │   │   ├── module-029.mjs
│   │   │   │   │   │   ├── module-030.mjs
│   │   │   │   │   │   ├── module-031.mjs
│   │   │   │   │   │   ├── module-032.mjs
│   │   │   │   │   │   ├── module-033.mjs
│   │   │   │   │   │   ├── module-034.mjs
│   │   │   │   │   │   ├── module-035.mjs
│   │   │   │   │   │   ├── module-036.mjs
│   │   │   │   │   │   ├── module-037.mjs
│   │   │   │   │   │   ├── module-await-001.mjs
│   │   │   │   │   │   ├── module-export-001.mjs
│   │   │   │   │   │   ├── module-export-default-arrow.mjs
│   │   │   │   │   │   ├── module-sideeffect.mjs
│   │   │   │   │   │   ├── octal-strict.js
│   │   │   │   │   │   ├── param-duplication-strict.js
│   │   │   │   │   │   ├── regression-test-issue-1387.js
│   │   │   │   │   │   ├── regression-test-issue-1549.js
│   │   │   │   │   │   ├── regression-test-issue-1550.js
│   │   │   │   │   │   ├── regression-test-issue-1597.js
│   │   │   │   │   │   ├── regression-test-issue-1598.js
│   │   │   │   │   │   ├── regression-test-issue-1615.js
│   │   │   │   │   │   ├── regression-test-issue-1624.js
│   │   │   │   │   │   ├── regression-test-issue-1671.js
│   │   │   │   │   │   ├── regression-test-issue-1831.js
│   │   │   │   │   │   ├── regression-test-issue-1871-1.js
│   │   │   │   │   │   ├── regression-test-issue-1871-2.js
│   │   │   │   │   │   ├── regression-test-issue-1873.js
│   │   │   │   │   │   ├── regression-test-issue-1918.js
│   │   │   │   │   │   ├── regression-test-issue-2039.js
│   │   │   │   │   │   ├── regression-test-issue-2069.js
│   │   │   │   │   │   ├── regression-test-issue-2094.js
│   │   │   │   │   │   ├── regression-test-issue-2095.js
│   │   │   │   │   │   ├── regression-test-issue-2106.js
│   │   │   │   │   │   ├── regression-test-issue-2180.js
│   │   │   │   │   │   ├── regression-test-issue-2192.js
│   │   │   │   │   │   ├── regression-test-issue-2344.js
│   │   │   │   │   │   ├── regression-test-issue-2489.js
│   │   │   │   │   │   ├── regression-test-issue-2654.js
│   │   │   │   │   │   ├── regression-test-issue-2659.js
│   │   │   │   │   │   ├── regression-test-issue-2719.js
│   │   │   │   │   │   ├── regression-test-issue-2774.js
│   │   │   │   │   │   ├── regression-test-issue-2775.js
│   │   │   │   │   │   ├── regression-test-issue-2819.js
│   │   │   │   │   │   ├── regression-test-issue-2846.js
│   │   │   │   │   │   ├── regression-test-issue-2885.js
│   │   │   │   │   │   ├── regression-test-issue-2894.js
│   │   │   │   │   │   ├── regression-test-issue-2896.js
│   │   │   │   │   │   ├── regression-test-issue-2897.js
│   │   │   │   │   │   ├── regression-test-issue-2901.js
│   │   │   │   │   │   ├── regression-test-issue-2902.js
│   │   │   │   │   │   ├── regression-test-issue-2908-1.js
│   │   │   │   │   │   ├── regression-test-issue-2908-2.js
│   │   │   │   │   │   ├── regression-test-issue-2908-3.js
│   │   │   │   │   │   ├── regression-test-issue-2908-4.js
│   │   │   │   │   │   ├── regression-test-issue-2993.js
│   │   │   │   │   │   ├── regression-test-issue-3094.js
│   │   │   │   │   │   ├── regression-test-issue-3096.js
│   │   │   │   │   │   ├── regression-test-issue-3101.js
│   │   │   │   │   │   ├── regression-test-issue-3102.js
│   │   │   │   │   │   ├── regression-test-issue-3112.js
│   │   │   │   │   │   ├── regression-test-issue-3117.js
│   │   │   │   │   │   ├── regression-test-issue-3119.js
│   │   │   │   │   │   ├── regression-test-issue-3121.js
│   │   │   │   │   │   ├── regression-test-issue-3123.js
│   │   │   │   │   │   ├── regression-test-issue-3131.js
│   │   │   │   │   │   ├── regression-test-issue-3140.js
│   │   │   │   │   │   ├── regression-test-issue-3145.js
│   │   │   │   │   │   ├── regression-test-issue-3152.js
│   │   │   │   │   │   ├── regression-test-issue-3173.js
│   │   │   │   │   │   ├── regression-test-issue-3174.js
│   │   │   │   │   │   ├── regression-test-issue-3214.js
│   │   │   │   │   │   ├── regression-test-issue-3253-1.js
│   │   │   │   │   │   ├── regression-test-issue-3253-2.js
│   │   │   │   │   │   ├── regression-test-issue-3275.js
│   │   │   │   │   │   ├── regression-test-issue-3276.js
│   │   │   │   │   │   ├── regression-test-issue-3297.js
│   │   │   │   │   │   ├── regression-test-issue-3299.js
│   │   │   │   │   │   ├── regression-test-issue-3300.js
│   │   │   │   │   │   ├── regression-test-issue-3394.js
│   │   │   │   │   │   ├── regression-test-issue-3398.js
│   │   │   │   │   │   ├── regression-test-issue-3410.js
│   │   │   │   │   │   ├── regression-test-issue-3554.js
│   │   │   │   │   │   ├── regression-test-issue-358.js
│   │   │   │   │   │   ├── regression-test-issue-3714.js
│   │   │   │   │   │   ├── regression-test-issue-3735.js
│   │   │   │   │   │   ├── regression-test-issue-384.js
│   │   │   │   │   │   ├── regression-test-issue-3882.js
│   │   │   │   │   │   ├── regression-test-issue-4403.js
│   │   │   │   │   │   ├── throw-error-object.js
│   │   │   │   │   │   ├── throw-number.js
│   │   │   │   │   │   ├── throw-string.js
│   │   │   │   │   │   └── with-strict.js
│   │   │   │   │   ├── for-in-parse.js
│   │   │   │   │   ├── for-in.js
│   │   │   │   │   ├── for-parse.js
│   │   │   │   │   ├── for.js
│   │   │   │   │   ├── func-decl.js
│   │   │   │   │   ├── function-args.js
│   │   │   │   │   ├── function-construct.js
│   │   │   │   │   ├── function-expr-named.js
│   │   │   │   │   ├── function-external.js
│   │   │   │   │   ├── function-prototype-apply.js
│   │   │   │   │   ├── function-prototype-bind.js
│   │   │   │   │   ├── function-prototype-tostring.js
│   │   │   │   │   ├── function-return.js
│   │   │   │   │   ├── function-scopes.js
│   │   │   │   │   ├── function.js
│   │   │   │   │   ├── function.prototype.js
│   │   │   │   │   ├── gc.js
│   │   │   │   │   ├── get-value.js
│   │   │   │   │   ├── getter-setter-this-value.js
│   │   │   │   │   ├── global-escaping.js
│   │   │   │   │   ├── global-parsefloat.js
│   │   │   │   │   ├── global-parseint.js
│   │   │   │   │   ├── global-uri-coding.js
│   │   │   │   │   ├── global.js
│   │   │   │   │   ├── hash.js
│   │   │   │   │   ├── if-else.js
│   │   │   │   │   ├── if_parser.js
│   │   │   │   │   ├── insert-semicolon.js
│   │   │   │   │   ├── json-parse.js
│   │   │   │   │   ├── json-stringify.js
│   │   │   │   │   ├── keyword.js
│   │   │   │   │   ├── labelled-statements.js
│   │   │   │   │   ├── large_literal.js
│   │   │   │   │   ├── logical.js
│   │   │   │   │   ├── math-abs.js
│   │   │   │   │   ├── math-exp.js
│   │   │   │   │   ├── math-functions-tonumber-rule.js
│   │   │   │   │   ├── math-log.js
│   │   │   │   │   ├── math-max.js
│   │   │   │   │   ├── math-min.js
│   │   │   │   │   ├── math-pow.js
│   │   │   │   │   ├── math-round.js
│   │   │   │   │   ├── math-trig.js
│   │   │   │   │   ├── nested-function.js
│   │   │   │   │   ├── new-line-in-literal.js
│   │   │   │   │   ├── number-prototype-to-exponential.js
│   │   │   │   │   ├── number-prototype-to-fixed.js
│   │   │   │   │   ├── number-prototype-to-precision.js
│   │   │   │   │   ├── number-prototype-to-string.js
│   │   │   │   │   ├── object-create.js
│   │   │   │   │   ├── object-define-properties.js
│   │   │   │   │   ├── object-defineproperty.js
│   │   │   │   │   ├── object-get-own-property-descriptor.js
│   │   │   │   │   ├── object-get-own-property-names.js
│   │   │   │   │   ├── object-is-extensible.js
│   │   │   │   │   ├── object-keys.js
│   │   │   │   │   ├── object-literal-2.js
│   │   │   │   │   ├── object-literal-prescanner.js
│   │   │   │   │   ├── object-literal.js
│   │   │   │   │   ├── object-prototype-hasownproperty.js
│   │   │   │   │   ├── object-prototype-isprototypeof.js
│   │   │   │   │   ├── object-prototype-propertyisenumerable.js
│   │   │   │   │   ├── object-prototype-tolocalestring.js
│   │   │   │   │   ├── object_freeze.js
│   │   │   │   │   ├── object_seal.js
│   │   │   │   │   ├── octal.js
│   │   │   │   │   ├── parser-oom.js
│   │   │   │   │   ├── parser-oom2.js
│   │   │   │   │   ├── prescanner.js
│   │   │   │   │   ├── regexp-alternatives.js
│   │   │   │   │   ├── regexp-assertions.js
│   │   │   │   │   ├── regexp-backreference.js
│   │   │   │   │   ├── regexp-backtrack.js
│   │   │   │   │   ├── regexp-capture-groups.js
│   │   │   │   │   ├── regexp-character-class.js
│   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   ├── regexp-literal.js
│   │   │   │   │   ├── regexp-non-capture-groups.js
│   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   ├── regexp-simple-atom-and-iterations.js
│   │   │   │   │   ├── regexp-web-compatibility.js
│   │   │   │   │   ├── regression-test-issue-1054.js
│   │   │   │   │   ├── regression-test-issue-1071.js
│   │   │   │   │   ├── regression-test-issue-1072.js
│   │   │   │   │   ├── regression-test-issue-1073.js
│   │   │   │   │   ├── regression-test-issue-1074.js
│   │   │   │   │   ├── regression-test-issue-1075.js
│   │   │   │   │   ├── regression-test-issue-1076.js
│   │   │   │   │   ├── regression-test-issue-1078.js
│   │   │   │   │   ├── regression-test-issue-1079.js
│   │   │   │   │   ├── regression-test-issue-1081.js
│   │   │   │   │   ├── regression-test-issue-1082.js
│   │   │   │   │   ├── regression-test-issue-1083.js
│   │   │   │   │   ├── regression-test-issue-112.js
│   │   │   │   │   ├── regression-test-issue-113.js
│   │   │   │   │   ├── regression-test-issue-114.js
│   │   │   │   │   ├── regression-test-issue-115.js
│   │   │   │   │   ├── regression-test-issue-117.js
│   │   │   │   │   ├── regression-test-issue-121.js
│   │   │   │   │   ├── regression-test-issue-122.js
│   │   │   │   │   ├── regression-test-issue-123.js
│   │   │   │   │   ├── regression-test-issue-128.js
│   │   │   │   │   ├── regression-test-issue-1282.js
│   │   │   │   │   ├── regression-test-issue-1284.js
│   │   │   │   │   ├── regression-test-issue-1286.js
│   │   │   │   │   ├── regression-test-issue-129.js
│   │   │   │   │   ├── regression-test-issue-1292.js
│   │   │   │   │   ├── regression-test-issue-130.js
│   │   │   │   │   ├── regression-test-issue-1300.js
│   │   │   │   │   ├── regression-test-issue-1309.js
│   │   │   │   │   ├── regression-test-issue-132.js
│   │   │   │   │   ├── regression-test-issue-1386.js
│   │   │   │   │   ├── regression-test-issue-1389.js
│   │   │   │   │   ├── regression-test-issue-1533.js
│   │   │   │   │   ├── regression-test-issue-1547.js
│   │   │   │   │   ├── regression-test-issue-1552.js
│   │   │   │   │   ├── regression-test-issue-1555.js
│   │   │   │   │   ├── regression-test-issue-1556.js
│   │   │   │   │   ├── regression-test-issue-156.js
│   │   │   │   │   ├── regression-test-issue-1621.js
│   │   │   │   │   ├── regression-test-issue-1636.js
│   │   │   │   │   ├── regression-test-issue-164.js
│   │   │   │   │   ├── regression-test-issue-1657.js
│   │   │   │   │   ├── regression-test-issue-1821.js
│   │   │   │   │   ├── regression-test-issue-1829.js
│   │   │   │   │   ├── regression-test-issue-1830.js
│   │   │   │   │   ├── regression-test-issue-1855.js
│   │   │   │   │   ├── regression-test-issue-1917.js
│   │   │   │   │   ├── regression-test-issue-1934.js
│   │   │   │   │   ├── regression-test-issue-1947.js
│   │   │   │   │   ├── regression-test-issue-195.js
│   │   │   │   │   ├── regression-test-issue-1970.js
│   │   │   │   │   ├── regression-test-issue-1972.js
│   │   │   │   │   ├── regression-test-issue-1973.js
│   │   │   │   │   ├── regression-test-issue-1974.js
│   │   │   │   │   ├── regression-test-issue-1990.js
│   │   │   │   │   ├── regression-test-issue-1993.js
│   │   │   │   │   ├── regression-test-issue-2008.js
│   │   │   │   │   ├── regression-test-issue-2073.js
│   │   │   │   │   ├── regression-test-issue-2105.js
│   │   │   │   │   ├── regression-test-issue-2108.js
│   │   │   │   │   ├── regression-test-issue-212.js
│   │   │   │   │   ├── regression-test-issue-2178.js
│   │   │   │   │   ├── regression-test-issue-2182.js
│   │   │   │   │   ├── regression-test-issue-2190.js
│   │   │   │   │   ├── regression-test-issue-2198.js
│   │   │   │   │   ├── regression-test-issue-2200.js
│   │   │   │   │   ├── regression-test-issue-2204.js
│   │   │   │   │   ├── regression-test-issue-2230.js
│   │   │   │   │   ├── regression-test-issue-2237.js
│   │   │   │   │   ├── regression-test-issue-2258-2963.js
│   │   │   │   │   ├── regression-test-issue-2272.js
│   │   │   │   │   ├── regression-test-issue-2384.js
│   │   │   │   │   ├── regression-test-issue-2386.js
│   │   │   │   │   ├── regression-test-issue-2398.js
│   │   │   │   │   ├── regression-test-issue-2400.js
│   │   │   │   │   ├── regression-test-issue-2409.js
│   │   │   │   │   ├── regression-test-issue-2448.js
│   │   │   │   │   ├── regression-test-issue-245.js
│   │   │   │   │   ├── regression-test-issue-2451.js
│   │   │   │   │   ├── regression-test-issue-2452.js
│   │   │   │   │   ├── regression-test-issue-2453.js
│   │   │   │   │   ├── regression-test-issue-2478.js
│   │   │   │   │   ├── regression-test-issue-2494.js
│   │   │   │   │   ├── regression-test-issue-255.js
│   │   │   │   │   ├── regression-test-issue-257.js
│   │   │   │   │   ├── regression-test-issue-260.js
│   │   │   │   │   ├── regression-test-issue-261.js
│   │   │   │   │   ├── regression-test-issue-2614.js
│   │   │   │   │   ├── regression-test-issue-262.js
│   │   │   │   │   ├── regression-test-issue-263.js
│   │   │   │   │   ├── regression-test-issue-264.js
│   │   │   │   │   ├── regression-test-issue-265.js
│   │   │   │   │   ├── regression-test-issue-2652-2653.js
│   │   │   │   │   ├── regression-test-issue-2656.js
│   │   │   │   │   ├── regression-test-issue-266.js
│   │   │   │   │   ├── regression-test-issue-2660.js
│   │   │   │   │   ├── regression-test-issue-267.js
│   │   │   │   │   ├── regression-test-issue-2699.js
│   │   │   │   │   ├── regression-test-issue-274.js
│   │   │   │   │   ├── regression-test-issue-2755.js
│   │   │   │   │   ├── regression-test-issue-276.js
│   │   │   │   │   ├── regression-test-issue-279.js
│   │   │   │   │   ├── regression-test-issue-280.js
│   │   │   │   │   ├── regression-test-issue-2802.js
│   │   │   │   │   ├── regression-test-issue-2805.js
│   │   │   │   │   ├── regression-test-issue-281.js
│   │   │   │   │   ├── regression-test-issue-285.js
│   │   │   │   │   ├── regression-test-issue-2905.js
│   │   │   │   │   ├── regression-test-issue-2914.js
│   │   │   │   │   ├── regression-test-issue-2936.js
│   │   │   │   │   ├── regression-test-issue-2937.js
│   │   │   │   │   ├── regression-test-issue-3039.js
│   │   │   │   │   ├── regression-test-issue-3048.js
│   │   │   │   │   ├── regression-test-issue-3055.js
│   │   │   │   │   ├── regression-test-issue-3060.js
│   │   │   │   │   ├── regression-test-issue-3068.js
│   │   │   │   │   ├── regression-test-issue-3072.js
│   │   │   │   │   ├── regression-test-issue-3082.js
│   │   │   │   │   ├── regression-test-issue-3114.js
│   │   │   │   │   ├── regression-test-issue-316.js
│   │   │   │   │   ├── regression-test-issue-3229.js
│   │   │   │   │   ├── regression-test-issue-3271.js
│   │   │   │   │   ├── regression-test-issue-3313.js
│   │   │   │   │   ├── regression-test-issue-3325.js
│   │   │   │   │   ├── regression-test-issue-339.js
│   │   │   │   │   ├── regression-test-issue-3397.js
│   │   │   │   │   ├── regression-test-issue-340.js
│   │   │   │   │   ├── regression-test-issue-341.js
│   │   │   │   │   ├── regression-test-issue-3467.js
│   │   │   │   │   ├── regression-test-issue-3477.js
│   │   │   │   │   ├── regression-test-issue-3523.js
│   │   │   │   │   ├── regression-test-issue-3532.js
│   │   │   │   │   ├── regression-test-issue-354.js
│   │   │   │   │   ├── regression-test-issue-3553.js
│   │   │   │   │   ├── regression-test-issue-359.js
│   │   │   │   │   ├── regression-test-issue-3608.js
│   │   │   │   │   ├── regression-test-issue-3648.js
│   │   │   │   │   ├── regression-test-issue-3650.js
│   │   │   │   │   ├── regression-test-issue-3711.js
│   │   │   │   │   ├── regression-test-issue-3748-3749.js
│   │   │   │   │   ├── regression-test-issue-3761.js
│   │   │   │   │   ├── regression-test-issue-3778.js
│   │   │   │   │   ├── regression-test-issue-3779.js
│   │   │   │   │   ├── regression-test-issue-380.js
│   │   │   │   │   ├── regression-test-issue-381.js
│   │   │   │   │   ├── regression-test-issue-3813.js
│   │   │   │   │   ├── regression-test-issue-3821.js
│   │   │   │   │   ├── regression-test-issue-3878.js
│   │   │   │   │   ├── regression-test-issue-3903.js
│   │   │   │   │   ├── regression-test-issue-3934.js
│   │   │   │   │   ├── regression-test-issue-3944.js
│   │   │   │   │   ├── regression-test-issue-4056.js
│   │   │   │   │   ├── regression-test-issue-4238.js
│   │   │   │   │   ├── regression-test-issue-429.js
│   │   │   │   │   ├── regression-test-issue-440.js
│   │   │   │   │   ├── regression-test-issue-447.js
│   │   │   │   │   ├── regression-test-issue-453.js
│   │   │   │   │   ├── regression-test-issue-541.js
│   │   │   │   │   ├── regression-test-issue-563.js
│   │   │   │   │   ├── regression-test-issue-566.js
│   │   │   │   │   ├── regression-test-issue-613.js
│   │   │   │   │   ├── regression-test-issue-614.js
│   │   │   │   │   ├── regression-test-issue-639.js
│   │   │   │   │   ├── regression-test-issue-640.js
│   │   │   │   │   ├── regression-test-issue-641.js
│   │   │   │   │   ├── regression-test-issue-642.js
│   │   │   │   │   ├── regression-test-issue-644.js
│   │   │   │   │   ├── regression-test-issue-646.js
│   │   │   │   │   ├── regression-test-issue-652.js
│   │   │   │   │   ├── regression-test-issue-653.js
│   │   │   │   │   ├── regression-test-issue-654.js
│   │   │   │   │   ├── regression-test-issue-655.js
│   │   │   │   │   ├── regression-test-issue-667.js
│   │   │   │   │   ├── regression-test-issue-669.js
│   │   │   │   │   ├── regression-test-issue-680.js
│   │   │   │   │   ├── regression-test-issue-686.js
│   │   │   │   │   ├── regression-test-issue-689.js
│   │   │   │   │   ├── regression-test-issue-703.js
│   │   │   │   │   ├── regression-test-issue-725.js
│   │   │   │   │   ├── regression-test-issue-736.js
│   │   │   │   │   ├── regression-test-issue-737.js
│   │   │   │   │   ├── regression-test-issue-738.js
│   │   │   │   │   ├── regression-test-issue-739.js
│   │   │   │   │   ├── regression-test-issue-741.js
│   │   │   │   │   ├── regression-test-issue-743.js
│   │   │   │   │   ├── regression-test-issue-745.js
│   │   │   │   │   ├── regression-test-issue-747.js
│   │   │   │   │   ├── regression-test-issue-781.js
│   │   │   │   │   ├── regression-test-issue-783.js
│   │   │   │   │   ├── regression-test-issue-785.js
│   │   │   │   │   ├── regression-test-issue-786.js
│   │   │   │   │   ├── regression-test-issue-798.js
│   │   │   │   │   ├── regression-test-issue-962.js
│   │   │   │   │   ├── regression-test-issues-43-183.js
│   │   │   │   │   ├── relational.js
│   │   │   │   │   ├── shift.js
│   │   │   │   │   ├── sqrt.js
│   │   │   │   │   ├── stack-limit.js
│   │   │   │   │   ├── strict.js
│   │   │   │   │   ├── strict2.js
│   │   │   │   │   ├── string-prototype-charat.js
│   │   │   │   │   ├── string-prototype-charcodeat.js
│   │   │   │   │   ├── string-prototype-concat.js
│   │   │   │   │   ├── string-prototype-indexof.js
│   │   │   │   │   ├── string-prototype-lastindexof.js
│   │   │   │   │   ├── string-prototype-localecompare.js
│   │   │   │   │   ├── string-prototype-match.js
│   │   │   │   │   ├── string-prototype-replace.js
│   │   │   │   │   ├── string-prototype-search.js
│   │   │   │   │   ├── string-prototype-slice.js
│   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   ├── string-prototype-substr.js
│   │   │   │   │   ├── string-prototype-substring.js
│   │   │   │   │   ├── string-prototype-trim.js
│   │   │   │   │   ├── string-prototype.js
│   │   │   │   │   ├── string-surrogates-concat.js
│   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   ├── string.js
│   │   │   │   │   ├── switch-case.js
│   │   │   │   │   ├── test-new-string.js
│   │   │   │   │   ├── test_suite_06.js
│   │   │   │   │   ├── test_suite_07.js
│   │   │   │   │   ├── test_suite_08.js
│   │   │   │   │   ├── test_suite_10.js
│   │   │   │   │   ├── test_suite_11.js
│   │   │   │   │   ├── test_suite_12.js
│   │   │   │   │   ├── test_suite_13.js
│   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   ├── this-arg.js
│   │   │   │   │   ├── try-catch-finally.js
│   │   │   │   │   ├── try-eval.js
│   │   │   │   │   ├── typeof.js
│   │   │   │   │   ├── unary-plus-minus.js
│   │   │   │   │   ├── unicode-format-control-characters.js
│   │   │   │   │   ├── unusual.js
│   │   │   │   │   ├── var-decl.js
│   │   │   │   │   ├── variables.js
│   │   │   │   │   ├── windows-line-ending.js
│   │   │   │   │   └── zero-character.js
│   │   │   │   ├── test262-es6-excludelist.xml
│   │   │   │   ├── test262-esnext-excludelist.xml
│   │   │   │   ├── unit-core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── test-abort.c
│   │   │   │   │   ├── test-api-binary-operations-arithmetics.c
│   │   │   │   │   ├── test-api-binary-operations-comparisons.c
│   │   │   │   │   ├── test-api-binary-operations-instanceof.c
│   │   │   │   │   ├── test-api-errortype.c
│   │   │   │   │   ├── test-api-functiontype.c
│   │   │   │   │   ├── test-api-iteratortype.c
│   │   │   │   │   ├── test-api-object-property-names.c
│   │   │   │   │   ├── test-api-objecttype.c
│   │   │   │   │   ├── test-api-promise.c
│   │   │   │   │   ├── test-api-property.c
│   │   │   │   │   ├── test-api-set-and-clear-error-flag.c
│   │   │   │   │   ├── test-api-strings.c
│   │   │   │   │   ├── test-api-value-type.c
│   │   │   │   │   ├── test-api.c
│   │   │   │   │   ├── test-arraybuffer.c
│   │   │   │   │   ├── test-backtrace.c
│   │   │   │   │   ├── test-bigint.c
│   │   │   │   │   ├── test-common.h
│   │   │   │   │   ├── test-container.c
│   │   │   │   │   ├── test-context-data.c
│   │   │   │   │   ├── test-dataview.c
│   │   │   │   │   ├── test-date-helpers.c
│   │   │   │   │   ├── test-error-callback.c
│   │   │   │   │   ├── test-exec-stop.c
│   │   │   │   │   ├── test-external-string.c
│   │   │   │   │   ├── test-from-property-descriptor.c
│   │   │   │   │   ├── test-has-property.c
│   │   │   │   │   ├── test-internal-properties.c
│   │   │   │   │   ├── test-jmem.c
│   │   │   │   │   ├── test-json.c
│   │   │   │   │   ├── test-lit-char-helpers.c
│   │   │   │   │   ├── test-literal-storage.c
│   │   │   │   │   ├── test-mem-stats.c
│   │   │   │   │   ├── test-native-callback-nested.c
│   │   │   │   │   ├── test-native-instanceof.c
│   │   │   │   │   ├── test-newtarget.c
│   │   │   │   │   ├── test-number-converter.c
│   │   │   │   │   ├── test-number-to-int32.c
│   │   │   │   │   ├── test-number-to-string.c
│   │   │   │   │   ├── test-objects-foreach.c
│   │   │   │   │   ├── test-poolman.c
│   │   │   │   │   ├── test-promise.c
│   │   │   │   │   ├── test-proxy.c
│   │   │   │   │   ├── test-realm.c
│   │   │   │   │   ├── test-regexp-dotall-unicode.c
│   │   │   │   │   ├── test-regexp.c
│   │   │   │   │   ├── test-regression-3588.c
│   │   │   │   │   ├── test-resource-name.c
│   │   │   │   │   ├── test-snapshot.c
│   │   │   │   │   ├── test-string-to-number.c
│   │   │   │   │   ├── test-stringbuilder.c
│   │   │   │   │   ├── test-strings.c
│   │   │   │   │   ├── test-symbol.c
│   │   │   │   │   ├── test-to-integer.c
│   │   │   │   │   ├── test-to-length.c
│   │   │   │   │   ├── test-to-property-descriptor.c
│   │   │   │   │   ├── test-typedarray.c
│   │   │   │   │   └── test-unicode.c
│   │   │   │   ├── unit-doc/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── unit-ext/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── module/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── jerry-module-test.c
│   │   │   │   │   │   ├── my-broken-module.c
│   │   │   │   │   │   └── my-custom-module.c
│   │   │   │   │   ├── test-common.h
│   │   │   │   │   ├── test-ext-arg.c
│   │   │   │   │   ├── test-ext-autorelease.c
│   │   │   │   │   ├── test-ext-handle-scope-escape.c
│   │   │   │   │   ├── test-ext-handle-scope-handle-prelist-escape.c
│   │   │   │   │   ├── test-ext-handle-scope-handle-prelist.c
│   │   │   │   │   ├── test-ext-handle-scope-nested.c
│   │   │   │   │   ├── test-ext-handle-scope-remove.c
│   │   │   │   │   ├── test-ext-handle-scope-root.c
│   │   │   │   │   ├── test-ext-handle-scope.c
│   │   │   │   │   ├── test-ext-method-register.c
│   │   │   │   │   ├── test-ext-module-canonical.c
│   │   │   │   │   └── test-ext-module-empty.c
│   │   │   │   └── unit-math/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── test-math.c
│   │   │   │       └── test-math.inc.h
│   │   │   ├── third-party/
│   │   │   │   └── valgrind/
│   │   │   │       ├── memcheck.h
│   │   │   │       └── valgrind.h
│   │   │   └── tools/
│   │   │       ├── amalgam.py
│   │   │       ├── apt-get-install-deps.sh
│   │   │       ├── apt-get-install-qemu-arm.sh
│   │   │       ├── babel/
│   │   │       │   ├── .babelrc
│   │   │       │   ├── README.md
│   │   │       │   ├── package.json
│   │   │       │   └── scripts/
│   │   │       │       └── transpile.sh
│   │   │       ├── brew-install-deps.sh
│   │   │       ├── build.py
│   │   │       ├── check-cppcheck.sh
│   │   │       ├── check-doxygen.sh
│   │   │       ├── check-license.py
│   │   │       ├── check-magic-strings.sh
│   │   │       ├── check-pylint.sh
│   │   │       ├── check-signed-off.sh
│   │   │       ├── check-sonarqube.sh
│   │   │       ├── check-vera.sh
│   │   │       ├── cppcheck/
│   │   │       │   └── suppressions-list
│   │   │       ├── gen-doctest.py
│   │   │       ├── gen-magic-strings.py
│   │   │       ├── gen-test-math.sh
│   │   │       ├── gen-unicode.py
│   │   │       ├── gen_c_source.py
│   │   │       ├── heaplimit_measure.py
│   │   │       ├── js2c.py
│   │   │       ├── mem-stats-measure.sh
│   │   │       ├── perf.sh
│   │   │       ├── pylint/
│   │   │       │   └── pylintrc
│   │   │       ├── rss-measure.sh
│   │   │       ├── run-mem-stats-test.sh
│   │   │       ├── run-perf-test.sh
│   │   │       ├── run-tests.py
│   │   │       ├── runners/
│   │   │       │   ├── run-benchmarks.sh
│   │   │       │   ├── run-debugger-test.sh
│   │   │       │   ├── run-test-suite-test262.py
│   │   │       │   ├── run-test-suite.py
│   │   │       │   ├── run-unittests.py
│   │   │       │   ├── test262-harness.py
│   │   │       │   └── util.py
│   │   │       ├── settings.py
│   │   │       ├── unit-tests/
│   │   │       │   ├── Makefile
│   │   │       │   └── gen-test-math.c
│   │   │       ├── update-webpage.sh
│   │   │       ├── vera++/
│   │   │       │   ├── profiles/
│   │   │       │   │   └── jerry
│   │   │       │   └── scripts/
│   │   │       │       └── rules/
│   │   │       │           ├── jerry_always_curly.tcl
│   │   │       │           ├── jerry_braces_on_separate_line.tcl
│   │   │       │           ├── jerry_braces_same_line_or_column.tcl
│   │   │       │           ├── jerry_comment_function_end.tcl
│   │   │       │           ├── jerry_funcname_space_parentheses.tcl
│   │   │       │           ├── jerry_identifier_no_space_bracket.tcl
│   │   │       │           ├── jerry_indentation.tcl
│   │   │       │           ├── jerry_max_line_length.tcl
│   │   │       │           ├── jerry_no_consecutive_empty_lines.tcl
│   │   │       │           ├── jerry_no_leading_or_trailing_empty_line.tcl
│   │   │       │           ├── jerry_no_space_after_opening_parentheses.tcl
│   │   │       │           ├── jerry_no_space_before_closing_parentheses.tcl
│   │   │       │           ├── jerry_no_tabs.tcl
│   │   │       │           ├── jerry_no_trailing_spaces.tcl
│   │   │       │           ├── jerry_pointer_declarator_space.tcl
│   │   │       │           ├── jerry_switch_case.tcl
│   │   │       │           └── jerry_typecast_space_parentheses.tcl
│   │   │       └── version.py
│   │   ├── libpng/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── png.c
│   │   │   ├── png.h
│   │   │   ├── pngconf.h
│   │   │   ├── pngerror.c
│   │   │   ├── pnggccrd.c
│   │   │   ├── pngget.c
│   │   │   ├── pngmem.c
│   │   │   ├── pngpread.c
│   │   │   ├── pngread.c
│   │   │   ├── pngrio.c
│   │   │   ├── pngrtran.c
│   │   │   ├── pngrutil.c
│   │   │   ├── pngset.c
│   │   │   ├── pngtest.c
│   │   │   ├── pngtrans.c
│   │   │   ├── pngvcrd.c
│   │   │   ├── pngwio.c
│   │   │   ├── pngwrite.c
│   │   │   ├── pngwtran.c
│   │   │   └── pngwutil.c
│   │   ├── pthreads/
│   │   │   ├── ANNOUNCE
│   │   │   ├── BUGS
│   │   │   ├── Bmakefile
│   │   │   ├── CONTRIBUTORS
│   │   │   ├── COPYING
│   │   │   ├── ChangeLog
│   │   │   ├── FAQ
│   │   │   ├── GNUmakefile
│   │   │   ├── MAINTAINERS
│   │   │   ├── Makefile
│   │   │   ├── Makefile_copy
│   │   │   ├── NEWS
│   │   │   ├── Nmakefile
│   │   │   ├── Nmakefile.tests
│   │   │   ├── PROGRESS
│   │   │   ├── README
│   │   │   ├── README.Borland
│   │   │   ├── README.CV
│   │   │   ├── README.NONPORTABLE
│   │   │   ├── README.Watcom
│   │   │   ├── README.WinCE
│   │   │   ├── TODO
│   │   │   ├── WinCE-PORT
│   │   │   ├── attr.c
│   │   │   ├── barrier.c
│   │   │   ├── builddmc.bat
│   │   │   ├── cancel.c
│   │   │   ├── cleanup.c
│   │   │   ├── condvar.c
│   │   │   ├── config.h
│   │   │   ├── create.c
│   │   │   ├── dll.c
│   │   │   ├── errno.c
│   │   │   ├── exit.c
│   │   │   ├── fork.c
│   │   │   ├── global.c
│   │   │   ├── implement.h
│   │   │   ├── manual/
│   │   │   │   ├── ChangeLog
│   │   │   │   ├── PortabilityIssues.html
│   │   │   │   ├── index.html
│   │   │   │   ├── pthreadCancelableWait.html
│   │   │   │   ├── pthread_attr_init.html
│   │   │   │   ├── pthread_attr_setstackaddr.html
│   │   │   │   ├── pthread_attr_setstacksize.html
│   │   │   │   ├── pthread_barrier_init.html
│   │   │   │   ├── pthread_barrier_wait.html
│   │   │   │   ├── pthread_barrierattr_init.html
│   │   │   │   ├── pthread_barrierattr_setpshared.html
│   │   │   │   ├── pthread_cancel.html
│   │   │   │   ├── pthread_cleanup_push.html
│   │   │   │   ├── pthread_cond_init.html
│   │   │   │   ├── pthread_condattr_init.html
│   │   │   │   ├── pthread_condattr_setpshared.html
│   │   │   │   ├── pthread_create.html
│   │   │   │   ├── pthread_delay_np.html
│   │   │   │   ├── pthread_detach.html
│   │   │   │   ├── pthread_equal.html
│   │   │   │   ├── pthread_exit.html
│   │   │   │   ├── pthread_getw32threadhandle_np.html
│   │   │   │   ├── pthread_join.html
│   │   │   │   ├── pthread_key_create.html
│   │   │   │   ├── pthread_kill.html
│   │   │   │   ├── pthread_mutex_init.html
│   │   │   │   ├── pthread_mutexattr_init.html
│   │   │   │   ├── pthread_mutexattr_setpshared.html
│   │   │   │   ├── pthread_num_processors_np.html
│   │   │   │   ├── pthread_once.html
│   │   │   │   ├── pthread_rwlock_init.html
│   │   │   │   ├── pthread_rwlock_rdlock.html
│   │   │   │   ├── pthread_rwlock_timedrdlock.html
│   │   │   │   ├── pthread_rwlock_timedwrlock.html
│   │   │   │   ├── pthread_rwlock_unlock.html
│   │   │   │   ├── pthread_rwlock_wrlock.html
│   │   │   │   ├── pthread_rwlockattr_init.html
│   │   │   │   ├── pthread_rwlockattr_setpshared.html
│   │   │   │   ├── pthread_self.html
│   │   │   │   ├── pthread_setcancelstate.html
│   │   │   │   ├── pthread_setcanceltype.html
│   │   │   │   ├── pthread_setconcurrency.html
│   │   │   │   ├── pthread_setschedparam.html
│   │   │   │   ├── pthread_spin_init.html
│   │   │   │   ├── pthread_spin_lock.html
│   │   │   │   ├── pthread_spin_unlock.html
│   │   │   │   ├── pthread_timechange_handler_np.html
│   │   │   │   ├── pthread_win32_attach_detach_np.html
│   │   │   │   ├── pthread_win32_test_features_np.html
│   │   │   │   ├── sched_get_priority_max.html
│   │   │   │   ├── sched_getscheduler.html
│   │   │   │   ├── sched_setscheduler.html
│   │   │   │   ├── sched_yield.html
│   │   │   │   └── sem_init.html
│   │   │   ├── misc.c
│   │   │   ├── mutex.c
│   │   │   ├── need_errno.h
│   │   │   ├── nonportable.c
│   │   │   ├── private.c
│   │   │   ├── pthread.c
│   │   │   ├── pthread.dsp
│   │   │   ├── pthread.dsw
│   │   │   ├── pthread.h
│   │   │   ├── pthread.sln
│   │   │   ├── pthread.vcxproj
│   │   │   ├── pthread.vcxproj.filters
│   │   │   ├── pthreadVC2.lib
│   │   │   ├── pthread_attr_destroy.c
│   │   │   ├── pthread_attr_getdetachstate.c
│   │   │   ├── pthread_attr_getinheritsched.c
│   │   │   ├── pthread_attr_getschedparam.c
│   │   │   ├── pthread_attr_getschedpolicy.c
│   │   │   ├── pthread_attr_getscope.c
│   │   │   ├── pthread_attr_getstackaddr.c
│   │   │   ├── pthread_attr_getstacksize.c
│   │   │   ├── pthread_attr_init.c
│   │   │   ├── pthread_attr_setdetachstate.c
│   │   │   ├── pthread_attr_setinheritsched.c
│   │   │   ├── pthread_attr_setschedparam.c
│   │   │   ├── pthread_attr_setschedpolicy.c
│   │   │   ├── pthread_attr_setscope.c
│   │   │   ├── pthread_attr_setstackaddr.c
│   │   │   ├── pthread_attr_setstacksize.c
│   │   │   ├── pthread_barrier_destroy.c
│   │   │   ├── pthread_barrier_init.c
│   │   │   ├── pthread_barrier_wait.c
│   │   │   ├── pthread_barrierattr_destroy.c
│   │   │   ├── pthread_barrierattr_getpshared.c
│   │   │   ├── pthread_barrierattr_init.c
│   │   │   ├── pthread_barrierattr_setpshared.c
│   │   │   ├── pthread_cancel.c
│   │   │   ├── pthread_cond_destroy.c
│   │   │   ├── pthread_cond_init.c
│   │   │   ├── pthread_cond_signal.c
│   │   │   ├── pthread_cond_wait.c
│   │   │   ├── pthread_condattr_destroy.c
│   │   │   ├── pthread_condattr_getpshared.c
│   │   │   ├── pthread_condattr_init.c
│   │   │   ├── pthread_condattr_setpshared.c
│   │   │   ├── pthread_delay_np.c
│   │   │   ├── pthread_detach.c
│   │   │   ├── pthread_equal.c
│   │   │   ├── pthread_exit.c
│   │   │   ├── pthread_getconcurrency.c
│   │   │   ├── pthread_getschedparam.c
│   │   │   ├── pthread_getspecific.c
│   │   │   ├── pthread_getw32threadhandle_np.c
│   │   │   ├── pthread_join.c
│   │   │   ├── pthread_key_create.c
│   │   │   ├── pthread_key_delete.c
│   │   │   ├── pthread_kill.c
│   │   │   ├── pthread_mutex_destroy.c
│   │   │   ├── pthread_mutex_init.c
│   │   │   ├── pthread_mutex_lock.c
│   │   │   ├── pthread_mutex_timedlock.c
│   │   │   ├── pthread_mutex_trylock.c
│   │   │   ├── pthread_mutex_unlock.c
│   │   │   ├── pthread_mutexattr_destroy.c
│   │   │   ├── pthread_mutexattr_getkind_np.c
│   │   │   ├── pthread_mutexattr_getpshared.c
│   │   │   ├── pthread_mutexattr_gettype.c
│   │   │   ├── pthread_mutexattr_init.c
│   │   │   ├── pthread_mutexattr_setkind_np.c
│   │   │   ├── pthread_mutexattr_setpshared.c
│   │   │   ├── pthread_mutexattr_settype.c
│   │   │   ├── pthread_num_processors_np.c
│   │   │   ├── pthread_once.c
│   │   │   ├── pthread_once.x
│   │   │   ├── pthread_rwlock_destroy.c
│   │   │   ├── pthread_rwlock_init.c
│   │   │   ├── pthread_rwlock_rdlock.c
│   │   │   ├── pthread_rwlock_timedrdlock.c
│   │   │   ├── pthread_rwlock_timedwrlock.c
│   │   │   ├── pthread_rwlock_tryrdlock.c
│   │   │   ├── pthread_rwlock_trywrlock.c
│   │   │   ├── pthread_rwlock_unlock.c
│   │   │   ├── pthread_rwlock_wrlock.c
│   │   │   ├── pthread_rwlockattr_destroy.c
│   │   │   ├── pthread_rwlockattr_getpshared.c
│   │   │   ├── pthread_rwlockattr_init.c
│   │   │   ├── pthread_rwlockattr_setpshared.c
│   │   │   ├── pthread_self.c
│   │   │   ├── pthread_setcancelstate.c
│   │   │   ├── pthread_setcanceltype.c
│   │   │   ├── pthread_setconcurrency.c
│   │   │   ├── pthread_setschedparam.c
│   │   │   ├── pthread_setspecific.c
│   │   │   ├── pthread_spin_destroy.c
│   │   │   ├── pthread_spin_init.c
│   │   │   ├── pthread_spin_lock.c
│   │   │   ├── pthread_spin_trylock.c
│   │   │   ├── pthread_spin_unlock.c
│   │   │   ├── pthread_testcancel.c
│   │   │   ├── pthread_timechange_handler_np.c
│   │   │   ├── pthread_win32_attach_detach_np.c
│   │   │   ├── ptw32_InterlockedCompareExchange.c
│   │   │   ├── ptw32_MCS_lock.c
│   │   │   ├── ptw32_callUserDestroyRoutines.c
│   │   │   ├── ptw32_calloc.c
│   │   │   ├── ptw32_cond_check_need_init.c
│   │   │   ├── ptw32_getprocessors.c
│   │   │   ├── ptw32_is_attr.c
│   │   │   ├── ptw32_mutex_check_need_init.c
│   │   │   ├── ptw32_new.c
│   │   │   ├── ptw32_processInitialize.c
│   │   │   ├── ptw32_processTerminate.c
│   │   │   ├── ptw32_relmillisecs.c
│   │   │   ├── ptw32_reuse.c
│   │   │   ├── ptw32_rwlock_cancelwrwait.c
│   │   │   ├── ptw32_rwlock_check_need_init.c
│   │   │   ├── ptw32_semwait.c
│   │   │   ├── ptw32_spinlock_check_need_init.c
│   │   │   ├── ptw32_threadDestroy.c
│   │   │   ├── ptw32_threadStart.c
│   │   │   ├── ptw32_throw.c
│   │   │   ├── ptw32_timespec.c
│   │   │   ├── ptw32_tkAssocCreate.c
│   │   │   ├── ptw32_tkAssocDestroy.c
│   │   │   ├── rwlock.c
│   │   │   ├── sched.c
│   │   │   ├── sched.h
│   │   │   ├── sched_get_priority_max.c
│   │   │   ├── sched_get_priority_min.c
│   │   │   ├── sched_getscheduler.c
│   │   │   ├── sched_setscheduler.c
│   │   │   ├── sched_yield.c
│   │   │   ├── sem_close.c
│   │   │   ├── sem_destroy.c
│   │   │   ├── sem_getvalue.c
│   │   │   ├── sem_init.c
│   │   │   ├── sem_open.c
│   │   │   ├── sem_post.c
│   │   │   ├── sem_post_multiple.c
│   │   │   ├── sem_timedwait.c
│   │   │   ├── sem_trywait.c
│   │   │   ├── sem_unlink.c
│   │   │   ├── sem_wait.c
│   │   │   ├── semaphore.c
│   │   │   ├── semaphore.h
│   │   │   ├── signal.c
│   │   │   ├── spin.c
│   │   │   ├── sync.c
│   │   │   ├── tests/
│   │   │   │   ├── Bmakefile
│   │   │   │   ├── ChangeLog
│   │   │   │   ├── Debug.dsp
│   │   │   │   ├── Debug.dsw
│   │   │   │   ├── Debug.plg
│   │   │   │   ├── Debug.txt
│   │   │   │   ├── GNUmakefile
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.BENCHTESTS
│   │   │   │   ├── SIZES.VCE
│   │   │   │   ├── Wmakefile
│   │   │   │   ├── barrier1.c
│   │   │   │   ├── barrier2.c
│   │   │   │   ├── barrier3.c
│   │   │   │   ├── barrier4.c
│   │   │   │   ├── barrier5.c
│   │   │   │   ├── benchlib.c
│   │   │   │   ├── benchtest.h
│   │   │   │   ├── benchtest1.c
│   │   │   │   ├── benchtest2.c
│   │   │   │   ├── benchtest3.c
│   │   │   │   ├── benchtest4.c
│   │   │   │   ├── benchtest5.c
│   │   │   │   ├── cancel1.c
│   │   │   │   ├── cancel2.c
│   │   │   │   ├── cancel3.c
│   │   │   │   ├── cancel4.c
│   │   │   │   ├── cancel5.c
│   │   │   │   ├── cancel6a.c
│   │   │   │   ├── cancel6d.c
│   │   │   │   ├── cancel7.c
│   │   │   │   ├── cancel8.c
│   │   │   │   ├── cancel9.c
│   │   │   │   ├── cleanup0.c
│   │   │   │   ├── cleanup1.c
│   │   │   │   ├── cleanup2.c
│   │   │   │   ├── cleanup3.c
│   │   │   │   ├── condvar1.c
│   │   │   │   ├── condvar1_1.c
│   │   │   │   ├── condvar1_2.c
│   │   │   │   ├── condvar2.c
│   │   │   │   ├── condvar2_1.c
│   │   │   │   ├── condvar3.c
│   │   │   │   ├── condvar3_1.c
│   │   │   │   ├── condvar3_2.c
│   │   │   │   ├── condvar3_3.c
│   │   │   │   ├── condvar4.c
│   │   │   │   ├── condvar5.c
│   │   │   │   ├── condvar6.c
│   │   │   │   ├── condvar7.c
│   │   │   │   ├── condvar8.c
│   │   │   │   ├── condvar9.c
│   │   │   │   ├── context1.c
│   │   │   │   ├── count1.c
│   │   │   │   ├── create1.c
│   │   │   │   ├── create2.c
│   │   │   │   ├── create3.c
│   │   │   │   ├── delay1.c
│   │   │   │   ├── delay2.c
│   │   │   │   ├── detach1.c
│   │   │   │   ├── equal1.c
│   │   │   │   ├── errno1.c
│   │   │   │   ├── exception1.c
│   │   │   │   ├── exception2.c
│   │   │   │   ├── exception3.c
│   │   │   │   ├── exit1.c
│   │   │   │   ├── exit2.c
│   │   │   │   ├── exit3.c
│   │   │   │   ├── exit4.c
│   │   │   │   ├── exit5.c
│   │   │   │   ├── eyal1.c
│   │   │   │   ├── inherit1.c
│   │   │   │   ├── join0.c
│   │   │   │   ├── join1.c
│   │   │   │   ├── join2.c
│   │   │   │   ├── join3.c
│   │   │   │   ├── kill1.c
│   │   │   │   ├── loadfree.c
│   │   │   │   ├── multiPCcaBetter.c
│   │   │   │   ├── mutex1.c
│   │   │   │   ├── mutex1e.c
│   │   │   │   ├── mutex1n.c
│   │   │   │   ├── mutex1r.c
│   │   │   │   ├── mutex2.c
│   │   │   │   ├── mutex2e.c
│   │   │   │   ├── mutex2r.c
│   │   │   │   ├── mutex3.c
│   │   │   │   ├── mutex3e.c
│   │   │   │   ├── mutex3r.c
│   │   │   │   ├── mutex4.c
│   │   │   │   ├── mutex5.c
│   │   │   │   ├── mutex6.c
│   │   │   │   ├── mutex6e.c
│   │   │   │   ├── mutex6es.c
│   │   │   │   ├── mutex6n.c
│   │   │   │   ├── mutex6r.c
│   │   │   │   ├── mutex6rs.c
│   │   │   │   ├── mutex6s.c
│   │   │   │   ├── mutex7.c
│   │   │   │   ├── mutex7e.c
│   │   │   │   ├── mutex7n.c
│   │   │   │   ├── mutex7r.c
│   │   │   │   ├── mutex8.c
│   │   │   │   ├── mutex8e.c
│   │   │   │   ├── mutex8n.c
│   │   │   │   ├── mutex8r.c
│   │   │   │   ├── once1.c
│   │   │   │   ├── once2.c
│   │   │   │   ├── once3.c
│   │   │   │   ├── once4.c
│   │   │   │   ├── priority1.c
│   │   │   │   ├── priority2.c
│   │   │   │   ├── readme
│   │   │   │   ├── reuse1.c
│   │   │   │   ├── reuse2.c
│   │   │   │   ├── rwlock1.c
│   │   │   │   ├── rwlock2.c
│   │   │   │   ├── rwlock2_t.c
│   │   │   │   ├── rwlock3.c
│   │   │   │   ├── rwlock3_t.c
│   │   │   │   ├── rwlock4.c
│   │   │   │   ├── rwlock4_t.c
│   │   │   │   ├── rwlock5.c
│   │   │   │   ├── rwlock5_t.c
│   │   │   │   ├── rwlock6.c
│   │   │   │   ├── rwlock6_t.c
│   │   │   │   ├── rwlock6_t2.c
│   │   │   │   ├── rwlock7.c
│   │   │   │   ├── rwlock8.c
│   │   │   │   ├── self1.c
│   │   │   │   ├── self2.c
│   │   │   │   ├── semaphore1.c
│   │   │   │   ├── semaphore2.c
│   │   │   │   ├── semaphore3.c
│   │   │   │   ├── semaphore4.c
│   │   │   │   ├── semaphore4t.c
│   │   │   │   ├── semaphore5.c
│   │   │   │   ├── sizes.c
│   │   │   │   ├── sizes.gc
│   │   │   │   ├── sizes.gce
│   │   │   │   ├── sizes.vc
│   │   │   │   ├── sizes.vse
│   │   │   │   ├── spin1.c
│   │   │   │   ├── spin2.c
│   │   │   │   ├── spin3.c
│   │   │   │   ├── spin4.c
│   │   │   │   ├── stress1.c
│   │   │   │   ├── test.h
│   │   │   │   ├── tryentercs.c
│   │   │   │   ├── tryentercs2.c
│   │   │   │   ├── tsd1.c
│   │   │   │   ├── tsd2.c
│   │   │   │   ├── valid1.c
│   │   │   │   └── valid2.c
│   │   │   ├── tsd.c
│   │   │   ├── version.rc
│   │   │   ├── version.res
│   │   │   └── w32_CancelableWait.c
│   │   ├── pugixml/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── pugiconfig.hpp
│   │   │   ├── pugixml.cpp
│   │   │   └── pugixml.hpp
│   │   ├── rapidjson/
│   │   │   └── include/
│   │   │       └── rapidjson/
│   │   │           ├── allocators.h
│   │   │           ├── cursorstreamwrapper.h
│   │   │           ├── document.h
│   │   │           ├── encodedstream.h
│   │   │           ├── encodings.h
│   │   │           ├── error/
│   │   │           │   ├── en.h
│   │   │           │   └── error.h
│   │   │           ├── filereadstream.h
│   │   │           ├── filewritestream.h
│   │   │           ├── fwd.h
│   │   │           ├── internal/
│   │   │           │   ├── biginteger.h
│   │   │           │   ├── clzll.h
│   │   │           │   ├── diyfp.h
│   │   │           │   ├── dtoa.h
│   │   │           │   ├── ieee754.h
│   │   │           │   ├── itoa.h
│   │   │           │   ├── meta.h
│   │   │           │   ├── pow10.h
│   │   │           │   ├── regex.h
│   │   │           │   ├── stack.h
│   │   │           │   ├── strfunc.h
│   │   │           │   ├── strtod.h
│   │   │           │   └── swap.h
│   │   │           ├── istreamwrapper.h
│   │   │           ├── memorybuffer.h
│   │   │           ├── memorystream.h
│   │   │           ├── msinttypes/
│   │   │           │   ├── inttypes.h
│   │   │           │   └── stdint.h
│   │   │           ├── ostreamwrapper.h
│   │   │           ├── pointer.h
│   │   │           ├── prettywriter.h
│   │   │           ├── rapidjson.h
│   │   │           ├── reader.h
│   │   │           ├── schema.h
│   │   │           ├── stream.h
│   │   │           ├── stringbuffer.h
│   │   │           └── writer.h
│   │   ├── utf8cpp/
│   │   │   ├── utf8/
│   │   │   │   ├── checked.h
│   │   │   │   ├── core.h
│   │   │   │   ├── cpp11.h
│   │   │   │   └── unchecked.h
│   │   │   └── utf8.h
│   │   └── zlib/
│   │       ├── CMakeLists.txt
│   │       ├── adler32.c
│   │       ├── compress.c
│   │       ├── crc32.c
│   │       ├── crc32.h
│   │       ├── crypt.h
│   │       ├── deflate.c
│   │       ├── deflate.h
│   │       ├── gzio.c
│   │       ├── infback.c
│   │       ├── inffast.c
│   │       ├── inffast.h
│   │       ├── inffixed.h
│   │       ├── inflate.c
│   │       ├── inflate.h
│   │       ├── inftrees.c
│   │       ├── inftrees.h
│   │       ├── ioapi.c
│   │       ├── ioapi.h
│   │       ├── trees.c
│   │       ├── trees.h
│   │       ├── uncompr.c
│   │       ├── unzip.c
│   │       ├── unzip.h
│   │       ├── zconf.h
│   │       ├── zconf.in.h
│   │       ├── zip.c
│   │       ├── zip.h
│   │       ├── zlib.h
│   │       ├── zutil.c
│   │       └── zutil.h
│   ├── Assets/
│   │   ├── Scripts/
│   │   │   ├── Component.js
│   │   │   ├── Math.js
│   │   │   └── o2.js
│   │   └── Shaders/
│   │       ├── Default.fsh
│   │       ├── Default.fsh.metal
│   │       ├── Default.vsh
│   │       └── Default.vsh.metal
│   ├── Platforms/
│   │   ├── .lldbinit
│   │   ├── Windows/
│   │   │   └── Framework.natvis
│   │   └── o2_lldb_formatters.py
│   └── Sources/
│       └── o2/
│           ├── Animation/
│           │   ├── Animate.cpp
│           │   ├── Animate.h
│           │   ├── AnimationClip.cpp
│           │   ├── AnimationClip.h
│           │   ├── AnimationMask.cpp
│           │   ├── AnimationMask.h
│           │   ├── AnimationPlayer.cpp
│           │   ├── AnimationPlayer.h
│           │   ├── AnimationState.cpp
│           │   ├── AnimationState.h
│           │   ├── AnimationStateGraph.cpp
│           │   ├── AnimationStateGraph.h
│           │   ├── IAnimation.cpp
│           │   ├── IAnimation.h
│           │   └── Tracks/
│           │       ├── AnimationColor4Track.cpp
│           │       ├── AnimationColor4Track.h
│           │       ├── AnimationFloatTrack.cpp
│           │       ├── AnimationFloatTrack.h
│           │       ├── AnimationSubTrack.cpp
│           │       ├── AnimationSubTrack.h
│           │       ├── AnimationTrack.cpp
│           │       ├── AnimationTrack.h
│           │       ├── AnimationVec2FTrack.cpp
│           │       ├── AnimationVec2FTrack.h
│           │       ├── IAnimationTrack.cpp
│           │       └── IAnimationTrack.h
│           ├── Application/
│           │   ├── Android/
│           │   │   ├── AndroidPlatform.h
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Application.cpp
│           │   ├── Application.h
│           │   ├── Input.cpp
│           │   ├── Input.h
│           │   ├── Linux/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Mac/
│           │   │   ├── AppDelegate.h
│           │   │   ├── AppDelegate.mm
│           │   │   ├── ApplicationBase.h
│           │   │   ├── ApplicationImpl.mm
│           │   │   ├── ApplicationPlatformWrapper.h
│           │   │   ├── RendererView.h
│           │   │   └── RendererView.mm
│           │   ├── VKCodes.h
│           │   ├── WebAssembly/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Windows/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   └── iOS/
│           │       ├── AppDelegate.h
│           │       ├── AppDelegate.mm
│           │       ├── ApplicationBase.h
│           │       ├── ApplicationImpl.mm
│           │       ├── ApplicationPlatformWrapper.h
│           │       ├── RendererView.h
│           │       └── RendererView.mm
│           ├── Assets/
│           │   ├── Asset.cpp
│           │   ├── Asset.h
│           │   ├── AssetInfo.cpp
│           │   ├── AssetInfo.h
│           │   ├── AssetRef.cpp
│           │   ├── AssetRef.h
│           │   ├── Assets.cpp
│           │   ├── Assets.h
│           │   ├── AssetsTree.cpp
│           │   ├── AssetsTree.h
│           │   ├── Meta.cpp
│           │   ├── Meta.h
│           │   └── Types/
│           │       ├── ActorAsset.cpp
│           │       ├── ActorAsset.h
│           │       ├── AnimationAsset.cpp
│           │       ├── AnimationAsset.h
│           │       ├── AnimationStateGraphAsset.cpp
│           │       ├── AnimationStateGraphAsset.h
│           │       ├── AtlasAsset.cpp
│           │       ├── AtlasAsset.h
│           │       ├── BinaryAsset.cpp
│           │       ├── BinaryAsset.h
│           │       ├── BitmapFontAsset.cpp
│           │       ├── BitmapFontAsset.h
│           │       ├── DataAsset.cpp
│           │       ├── DataAsset.h
│           │       ├── FolderAsset.cpp
│           │       ├── FolderAsset.h
│           │       ├── FontAsset.cpp
│           │       ├── FontAsset.h
│           │       ├── FragmentShaderAsset.cpp
│           │       ├── FragmentShaderAsset.h
│           │       ├── ImageAsset.cpp
│           │       ├── ImageAsset.h
│           │       ├── JavaScriptAsset.cpp
│           │       ├── JavaScriptAsset.h
│           │       ├──

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp
*.sln    merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


================================================
FILE: .gitignore
================================================
/Framework/Platforms/Windows/Framework.vcxproj.user
/CodeTool/.vs
/Editor/Platforms/Windows/Editor.vcxproj.user
/Framework/Platforms/Windows/3rdPartyLibs.vcxproj.user
/CodeTool/x64
/CodeTool/build
/CodeTool/Bin/*.pdb
/CodeTool/Bin/*.iobj
/CodeTool/Bin/*.ipdb
/CodeTool/CodeTool.vcxproj.user
/Framework/Sources/o2/CodeToolCache.xml
/Editor/Sources/CodeToolCache.xml
*.DS_Store
Editor/Platforms/Mac/build
Framework/Platforms/Mac/build
Editor/Platforms/Mac/build
Framework/Platforms/Mac/3rdPartyLibs.xcodeproj/xcuserdata
Framework/Platforms/Mac/build
Editor/Sources/o2Editor/CodeToolCache.xml
CodeTool/Bin/o2CodeTool.exe
AssetsBuildTool/Sources/CodeToolCache.xml
Editor/Assets/Editor UI styles/rebuildDate.json
CodeTool/Bin
Framework/Platforms/__pycache__
Editor/Assets/Editor UI styles
.cache
build
Tests/Sources/CodeToolCache.xml


================================================
FILE: .gitmodules
================================================
[submodule "Framework/3rdPartyLibs/tracy"]
	path = Framework/3rdPartyLibs/tracy
	url = https://github.com/wolfpld/tracy
[submodule "Framework/3rdPartyLibs/boost/stacktrace"]
	path = Framework/3rdPartyLibs/boost/stacktrace
	url = https://github.com/boostorg/stacktrace.git
[submodule "Framework/3rdPartyLibs/boost/config"]
	path = Framework/3rdPartyLibs/boost/config
	url = https://github.com/boostorg/config.git
[submodule "Framework/3rdPartyLibs/boost/container_hash"]
	path = Framework/3rdPartyLibs/boost/container_hash
	url = https://github.com/boostorg/container_hash.git
[submodule "Framework/3rdPartyLibs/boost/core"]
	path = Framework/3rdPartyLibs/boost/core
	url = https://github.com/boostorg/core.git
[submodule "Framework/3rdPartyLibs/boost/predef"]
	path = Framework/3rdPartyLibs/boost/predef
	url = https://github.com/boostorg/predef.git
[submodule "Framework/3rdPartyLibs/boost/winapi"]
	path = Framework/3rdPartyLibs/boost/winapi
	url = https://github.com/boostorg/winapi.git
[submodule "Framework/3rdPartyLibs/boost/describe"]
	path = Framework/3rdPartyLibs/boost/describe
	url = https://github.com/boostorg/describe.git
[submodule "Framework/3rdPartyLibs/boost/mp11"]
	path = Framework/3rdPartyLibs/boost/mp11
	url = https://github.com/boostorg/mp11.git
[submodule "Framework/3rdPartyLibs/boost/assert"]
	path = Framework/3rdPartyLibs/boost/assert
	url = https://github.com/boostorg/assert.git
[submodule "Framework/3rdPartyLibs/boost/static_assert"]
	path = Framework/3rdPartyLibs/boost/static_assert
	url = https://github.com/boostorg/static_assert.git
[submodule "Framework/3rdPartyLibs/boost/throw_exception"]
	path = Framework/3rdPartyLibs/boost/throw_exception
	url = https://github.com/boostorg/throw_exception.git


================================================
FILE: AssetsBuildTool/CMakeLists.txt
================================================
add_library(o2AssetsBuilder STATIC)

add_compile_definitions(${O2_COMPILE_DEFINITIONS_EXPORT})

file(GLOB_RECURSE o2AssetsBuilder_SOURCES 
    "Sources/*.cpp" "Sources/*.h"
)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${o2AssetsBuilder_SOURCES})

target_include_directories(o2AssetsBuilder PUBLIC "Sources")
target_sources(o2AssetsBuilder PRIVATE ${o2AssetsBuilder_SOURCES})

target_link_libraries(o2AssetsBuilder 
    PUBLIC
    o2Framework
)

if(WIN32)
    add_custom_command(TARGET o2AssetsBuilder PRE_BUILD
                       COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../CodeTool/Bin/o2CodeTool 
                            -project AssetsBuildTool 
                            -sources "${CMAKE_CURRENT_SOURCE_DIR}/Sources" 
                            -parent_projects "${CMAKE_CURRENT_SOURCE_DIR}/../Framework/Sources/o2/CodeToolCache.xml"
                       COMMENT "Run CodeTool:"
                            "-project AssetsBuildTool "
                            "-sources \"${CMAKE_CURRENT_SOURCE_DIR}/Sources\" "
                            "-parent_projects \"${CMAKE_CURRENT_SOURCE_DIR}/../Framework/Sources/o2/CodeToolCache.xml\"")
endif()

add_dependencies(o2AssetsBuilder o2Framework)

if(MSVC)
    target_compile_options(o2AssetsBuilder PUBLIC ${O2_MSVC_MP_FLAG} "/Zc:__cplusplus")
elseif (UNIX)
    target_compile_options(o2AssetsBuilder PUBLIC ${DEMO_WARNING_OPTION} -Wno-pedantic)
endif()

================================================
FILE: AssetsBuildTool/Sources/AssetsBuildTool.cpp
================================================
extern void __RegisterClass__o2__AtlasAssetConverter();
extern void __RegisterClass__o2__AtlasAssetConverter__Image();
extern void __RegisterClass__o2__FolderAssetConverter();
extern void __RegisterClass__o2__IAssetConverter();
extern void __RegisterClass__o2__ImageAssetConverter();
extern void __RegisterClass__o2__StdAssetConverter();
extern void __RegisterClass__o2__ImageCompressor__Config();


extern void InitializeTypesAssetsBuildTool()
{
    __RegisterClass__o2__AtlasAssetConverter();
    __RegisterClass__o2__AtlasAssetConverter__Image();
    __RegisterClass__o2__FolderAssetConverter();
    __RegisterClass__o2__IAssetConverter();
    __RegisterClass__o2__ImageAssetConverter();
    __RegisterClass__o2__StdAssetConverter();
    __RegisterClass__o2__ImageCompressor__Config();
}

================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.cpp
================================================
#include "o2/stdafx.h"
#include "AssetsBuilder.h"

#include "o2/Assets/Assets.h"
#include "o2/Assets/Types/AtlasAsset.h"
#include "o2/Assets/Types/DataAsset.h"
#include "o2/Assets/Types/FolderAsset.h"
#include "o2/Assets/Types/SceneAsset.h"
#include "o2/Utils/Debug/Debug.h"
#include "o2/Utils/Debug/Log/LogStream.h"
#include "o2/Utils/FileSystem/FileSystem.h"
#include "o2/Utils/System/Time/Timer.h"
#include "o2AssetBuilder/ImageCompressor.h"

namespace o2
{
    AssetsBuilder::AssetsBuilder()
    {
        srand((UInt)time(NULL));

        mLog = mmake<LogStream>("Assets builder");
        o2Debug.GetLog()->BindStream(mLog);

        InitializeConverters();
    }

    AssetsBuilder::~AssetsBuilder()
    {
    }

    const Vector<UID>& AssetsBuilder::BuildAssets(Platform platform, const String& assetsPath, const String& builtAssetsPath,
                                                  const String& dataAssetsTreePath, const String& compressorConfig, bool forcible /*= false*/)
    {
        mPlatform = platform;
        mSourceAssetsPath = assetsPath;
        mBuiltAssetsPath = builtAssetsPath;
        mBuiltAssetsTreePath = dataAssetsTreePath;

        ImageCompressor::LoadConfig(compressorConfig);

        mLog->Out("Started assets building from: " + mSourceAssetsPath + " to: " + mBuiltAssetsPath);

        Timer timer;

        if (forcible)
            RemoveBuiltAssets();

        FolderInfo folderInfo = o2FileSystem.GetFolderInfo(mSourceAssetsPath);
        folderInfo.ClampPathNames();

        ProcessMissingMetasCreation(folderInfo);

        mSourceAssetsTree = mmake<AssetsTree>();
        mSourceAssetsTree->assetsPath = assetsPath;
        mSourceAssetsTree->log = mLog;
        mSourceAssetsTree->Build(folderInfo);

        DataDocument builtAssetsTreeDoc;
        builtAssetsTreeDoc.LoadFromFile(mBuiltAssetsTreePath);

        mBuiltAssetsTree = mmake<AssetsTree>();
        mBuiltAssetsTree->Deserialize(builtAssetsTreeDoc);

        mBuiltAssetsTree->log = mLog;

        ProcessRemovedAssets();
        ProcessNewAssets();
        ProcessModifiedAssets();
        ConvertersPostProcess();

        if (!mModifiedAssets.IsEmpty())
        {
            mBuiltAssetsTree->assetsPath = mSourceAssetsPath;
            mBuiltAssetsTree->builtAssetsPath = mBuiltAssetsPath;
            o2FileSystem.WriteFile(mBuiltAssetsTreePath, mBuiltAssetsTree->SerializeToString());
        }

        mLog->Out("Assets builder: Completed. Source: " + mSourceAssetsPath + ", Target: " + mBuiltAssetsPath + ", Time: " + (String)timer.GetDeltaTime() + " seconds");

        return mModifiedAssets;
    }

    const String& AssetsBuilder::GetSourceAssetsPath() const
    {
        return mSourceAssetsPath;
    }

    const String& AssetsBuilder::GetBuiltAssetsPath() const
    {
        return mBuiltAssetsPath;
    }

    Platform AssetsBuilder::GetPlatform() const
    {
        return mPlatform;
    }

    void AssetsBuilder::InitializeConverters()
    {
        auto converterTypes = TypeOf(IAssetConverter).GetDerivedTypes();
        for (auto converterType : converterTypes)
        {
            IAssetConverter* converter = (IAssetConverter*)converterType->CreateSample();
            converter->SetAssetsBuilder(this);
            auto availableAssetTypes = converter->GetProcessingAssetsTypes();
            for (auto tp : availableAssetTypes)
                mAssetConverters.Add(tp, converter);
        }

        mStdAssetConverter.SetAssetsBuilder(this);
    }

    void AssetsBuilder::RemoveBuiltAssets()
    {
        o2FileSystem.FileDelete(mBuiltAssetsTreePath);
        o2FileSystem.FolderRemove(mBuiltAssetsPath);
        o2FileSystem.FolderCreate(mBuiltAssetsPath);
    }

    void AssetsBuilder::ProcessMissingMetasCreation(FolderInfo& folder)
    {
        for (auto fileInfo : folder.files)
        {
            if (fileInfo.path.EndsWith(".meta"))
            {
                String metaFullPath = mSourceAssetsPath + fileInfo.path;
                String assetForMeta = o2FileSystem.GetFileNameWithoutExtension(metaFullPath);
                bool isExistAssetForMeta = o2FileSystem.IsFileExist(assetForMeta) || o2FileSystem.IsFolderExist(assetForMeta);
                if (!isExistAssetForMeta)
                {
                    mLog->Warning("Missing asset for meta: " + fileInfo.path + " - removing meta");
                    o2FileSystem.FileDelete(metaFullPath);
                }
            }
            else
            {
                String assetFullPath = mSourceAssetsPath + fileInfo.path;
                String metaFullPath = assetFullPath + ".meta";
                bool isExistMetaForAsset = o2FileSystem.IsFileExist(metaFullPath);
                if (!isExistMetaForAsset)
                {
                    auto assetType = Assets::GetAssetTypeByExtension(o2FileSystem.GetFileExtension(fileInfo.path));
                    GenerateMeta(*assetType, metaFullPath);
                }
            }
        }

        for (auto subFolder : folder.folders)
        {
            String subFolderPath = subFolder.path;
            subFolderPath.Erase(subFolderPath.Length() - 1);

            String folderFullPath = mSourceAssetsPath + subFolderPath;

            String metaFullPath = folderFullPath + ".meta";
            bool isExistMetaForFolder = o2FileSystem.IsFileExist(metaFullPath);
            if (!isExistMetaForFolder)
            {
                auto& assetType = TypeOf(FolderAsset);
                GenerateMeta(assetType, metaFullPath);
            }

            ProcessMissingMetasCreation(subFolder);
        }
    }

    void AssetsBuilder::ProcessRemovedAssets()
    {
        const Type* folderTypeId = &TypeOf(FolderAsset);

        mBuiltAssetsTree->SortAssetsInverse();

        // in first pass processing files, in second - folders
        for (int pass = 0; pass < 2; pass++)
        {
            for (auto builtAssetInfoIt = mBuiltAssetsTree->allAssets.Begin(); builtAssetInfoIt != mBuiltAssetsTree->allAssets.End(); )
            {
                auto builtAssetInfo = (*builtAssetInfoIt).Lock();
                bool isFolder = builtAssetInfo->meta->GetAssetType() == folderTypeId;
                bool skip = pass == 0 ? isFolder : !isFolder;
                if (skip)
                {
                    ++builtAssetInfoIt;
                    continue;
                }

                auto fnd = mSourceAssetsTree->allAssetsByUID.find(builtAssetInfo->meta->ID());
                bool needRemove = fnd == mSourceAssetsTree->allAssetsByUID.end();

                if (!needRemove)
                {
                    ++builtAssetInfoIt;
                    continue;
                }

                GetAssetConverter(builtAssetInfo->meta->GetAssetType())->RemoveAsset(*builtAssetInfo);

                mModifiedAssets.Add(builtAssetInfo->meta->ID());

                mLog->OutStr("Removed asset: " + builtAssetInfo->path);

                mBuiltAssetsTree->allAssetsByUID.Remove(builtAssetInfo->meta->ID());
                mBuiltAssetsTree->allAssetsByPath.Remove(builtAssetInfo->path);

                builtAssetInfoIt = mBuiltAssetsTree->allAssets.Remove(builtAssetInfoIt);

                if (builtAssetInfo->parent)
                    builtAssetInfo->parent.Lock()->RemoveChild(builtAssetInfo);
                else
                    mBuiltAssetsTree->rootAssets.Remove(builtAssetInfo);
            }
        }
    }

    void AssetsBuilder::ProcessModifiedAssets()
    {
        const Type* folderType = &TypeOf(FolderAsset);

        mSourceAssetsTree->SortAssets();

        // in first pass processing folders, in second - files
        for (int pass = 0; pass < 2; pass++)
        {
            for (auto sourceAssetInfoWeak : mSourceAssetsTree->allAssets)
            {
                auto sourceAssetInfo = sourceAssetInfoWeak.Lock();

                if (!sourceAssetInfo->meta)
                    continue;

                bool isFolder = sourceAssetInfo->meta->GetAssetType() == folderType;
                bool skip = pass == 0 ? !isFolder : isFolder;
                if (skip)
                    continue;

                WeakRef<AssetInfo> builtAssetInfoWeak;
                if (mBuiltAssetsTree->allAssetsByUID.TryGetValue(sourceAssetInfo->meta->ID(), builtAssetInfoWeak))
                {
                    auto builtAssetInfo = builtAssetInfoWeak.Lock();

                    if (sourceAssetInfo->path == builtAssetInfo->path)
                    {
                        if (sourceAssetInfo->editTime != builtAssetInfo->editTime ||
                            !sourceAssetInfo->meta->IsEqual(builtAssetInfo->meta.Get()))
                        {
                            GetAssetConverter(sourceAssetInfo->meta->GetAssetType())->ConvertAsset(*sourceAssetInfo);

                            mModifiedAssets.Add(sourceAssetInfo->meta->ID());

                            builtAssetInfo->editTime = sourceAssetInfo->editTime;
                            builtAssetInfo->meta = sourceAssetInfo->meta->CloneAsRef<AssetMeta>();

                            mLog->Out("Modified asset: " + sourceAssetInfo->path);
                        }
                    }
                    else
                    {
                        if (sourceAssetInfo->editTime != builtAssetInfo->editTime ||
                            !sourceAssetInfo->meta->IsEqual(builtAssetInfo->meta.Get()))
                        {
                            GetAssetConverter(builtAssetInfo->meta->GetAssetType())->RemoveAsset(*builtAssetInfo);

                            mBuiltAssetsTree->RemoveAsset(builtAssetInfo);

                            mLog->Out("Modified and moved to " + sourceAssetInfo->path + " asset: " + builtAssetInfo->path);

                            builtAssetInfo->path = sourceAssetInfo->path;
                            builtAssetInfo->editTime = sourceAssetInfo->editTime;

                            builtAssetInfo->meta = sourceAssetInfo->meta->CloneAsRef<AssetMeta>();

                            GetAssetConverter(sourceAssetInfo->meta->GetAssetType())->ConvertAsset(*sourceAssetInfo);

                            mModifiedAssets.Add(sourceAssetInfo->meta->ID());
                            mBuiltAssetsTree->AddAsset(builtAssetInfo);
                        }
                        else
                        {
                            GetAssetConverter(sourceAssetInfo->meta->GetAssetType())->MoveAsset(*builtAssetInfo, *sourceAssetInfo);
                            mLog->Out("Moved asset from " + builtAssetInfo->path + " to " + sourceAssetInfo->path);

                            mBuiltAssetsTree->RemoveAsset(builtAssetInfo);

                            builtAssetInfo->path = sourceAssetInfo->path;
                            builtAssetInfo->editTime = sourceAssetInfo->editTime;

                            builtAssetInfo->meta = sourceAssetInfo->meta->CloneAsRef<AssetMeta>();

                            mModifiedAssets.Add(sourceAssetInfo->meta->ID());
                            mBuiltAssetsTree->AddAsset(builtAssetInfo);
                        }
                    }
                }
            }
        }
    }

    void AssetsBuilder::ProcessNewAssets()
    {
        const Type* folderType = &TypeOf(FolderAsset);

        mSourceAssetsTree->SortAssets();

        // in first pass processing folders, in second - files
        for (int pass = 0; pass < 2; pass++)
        {
            for (auto sourceAssetInfoIt = mSourceAssetsTree->allAssets.Begin(); sourceAssetInfoIt != mSourceAssetsTree->allAssets.End(); ++sourceAssetInfoIt)
            {
                auto sourceAssetInfo = (*sourceAssetInfoIt).Lock();

                if (!sourceAssetInfo->meta)
                    continue;

                bool isFolder = sourceAssetInfo->meta->GetAssetType() == folderType;
                bool skip = pass == 0 ? !isFolder : isFolder;

                if (skip)
                    continue;

                auto fnd = mBuiltAssetsTree->allAssetsByUID.find(sourceAssetInfo->meta->ID());
                bool isNew = fnd == mBuiltAssetsTree->allAssetsByUID.end();

                if (!isNew)
                    continue;

                GetAssetConverter(sourceAssetInfo->meta->GetAssetType())->ConvertAsset(*sourceAssetInfo);

                mModifiedAssets.Add(sourceAssetInfo->meta->ID());

                mLog->Out("New asset: " + sourceAssetInfo->path);

                Ref<AssetInfo> newBuiltAsset = mmake<AssetInfo>();
                newBuiltAsset->path = sourceAssetInfo->path;
                newBuiltAsset->editTime = sourceAssetInfo->editTime;
                newBuiltAsset->meta = sourceAssetInfo->meta->CloneAsRef<AssetMeta>();

                mBuiltAssetsTree->AddAsset(newBuiltAsset);
            }
        }
    }

    void AssetsBuilder::ConvertersPostProcess()
    {
        for (auto it = mAssetConverters.Begin(); it != mAssetConverters.End(); ++it)
            mModifiedAssets.Add(it->second->AssetsPostProcess());

        mModifiedAssets.Add(mStdAssetConverter.AssetsPostProcess());
    }

    void AssetsBuilder::GenerateMeta(const Type& assetType, const String& metaFullPath)
    {
        auto assetTypeSample = (Asset*)assetType.CreateSample();
        auto assetTypeSampleMeta = assetTypeSample->GetMeta();

        DataDocument metaData;
        metaData = assetTypeSampleMeta;
        metaData["Value"]["mId"] = UID();

        metaData.SaveToFile(metaFullPath);

        delete assetTypeSample;
    }

    IAssetConverter* AssetsBuilder::GetAssetConverter(const Type* assetType)
    {
        if (mAssetConverters.ContainsKey(assetType))
            return mAssetConverters[assetType];

        return &mStdAssetConverter;
    }
}


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.h
================================================
#pragma once

#include "o2/Assets/Asset.h"
#include "o2/Assets/AssetInfo.h"
#include "o2/Assets/AssetsTree.h"
#include "o2/Utils/Types/String.h"
#include "o2AssetBuilder/Converters/StdAssetConverter.h"

namespace o2
{
    class FolderInfo;
    class IAssetConverter;

    // -------------
    // Asset builder
    // -------------
    class AssetsBuilder
    {
    public:
        // Default constructor
        AssetsBuilder();

        // Destructor
        ~AssetsBuilder();

        // Builds asset from assets path to dataAssetsPath. Removes all built assets if forcible is true
        const Vector<UID>& BuildAssets(Platform platform, const String& assetsPath, const String& dataAssetsPath, 
                                       const String& dataAssetsTreePath, const String& compressorConfig, bool forcible = false);

        // Returns source assets path in building
        const String& GetSourceAssetsPath() const;

        // Returns built assets path in building
        const String& GetBuiltAssetsPath() const;

        // Returns current platform
        Platform GetPlatform() const;

    protected:
        Ref<LogStream> mLog; // Asset builder log stream

        Platform mPlatform; // Current platform

        String          mSourceAssetsPath; // Source assets path
        Ref<AssetsTree> mSourceAssetsTree; // Source assets tree

        String          mBuiltAssetsPath;     // Built assets path
        String          mBuiltAssetsTreePath; // Built assets tree data path
        Ref<AssetsTree> mBuiltAssetsTree;     // Built assets tree

        Vector<UID> mModifiedAssets; // Modified assets infos

        Map<const Type*, IAssetConverter*> mAssetConverters;   // Assets converters by type
        StdAssetConverter                  mStdAssetConverter; // Standard assets converter

    protected:
        // Initializes converters
        void InitializeConverters();

        // Removes all built assets
        void RemoveBuiltAssets();

        // Searching and removing assets
        void ProcessRemovedAssets();

        // Searching modified and moved assets
        void ProcessModifiedAssets();

        // Searches new assets
        void ProcessNewAssets();

        // Launches converters post process
        void ConvertersPostProcess();
        
        // Processes folder for missing metas
        void ProcessMissingMetasCreation(FolderInfo& folder);
        
        // Generates meta information file for asset
        void GenerateMeta(const Type& assetType, const String& metaFullPath);

        // Returns assets converter by asset type
        IAssetConverter* GetAssetConverter(const Type* assetType);

        friend class AtlasAssetConverter;
    };
}


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilderRunner.cpp
================================================
#include "o2/O2.h"

#include "o2AssetBuilder/AssetsBuilder.h"
#include "o2/Utils/System/CommandLineOptions.h"

using namespace o2;

extern void InitializeTypesGameLib();
extern void InitializeTypesAssetsBuildTool();

int main(int argc, char* argv[])
{
    INITIALIZE_O2;
    InitializeTypesGameLib();
    InitializeTypesAssetsBuildTool();

    const auto platformKey = "-platform";
    const auto sourceDirKey = "-source";
    const auto targetDirKey = "-target";
    const auto targetAssetsTreeKey = "-target-tree";
    const auto compressorConfigPathKey = "-compressor-config";
    const auto forcibleKey = "-forcible";

    Map<String, String> options = CommandLineOptions::Parse(argc, argv);

    Platform platform = Platform::Windows;
    if (options.ContainsKey(platformKey))
        platform = Reflection::Instance().GetEnumValue<Platform>(options[platformKey]);
    else
    {
        std::cout << "Platform must be specified via " << platformKey << std::endl;
        return -1;
    }

    String sourceDir;
    if (options.ContainsKey(sourceDirKey))
        sourceDir = options[sourceDirKey];
    else
    {
        std::cout << "Source assets directory must be specified via " << sourceDirKey << std::endl;
        return -1;
    }

    String targetDir;
    if (options.ContainsKey(targetDirKey))
        targetDir = options[targetDirKey];
    else
    {
        std::cout << "Target built assets directory must be specified via " << targetDirKey << std::endl;
        return -1;
    }

    String targetTreeDir;
    if (options.ContainsKey(targetAssetsTreeKey))
        targetTreeDir = options[targetAssetsTreeKey];
    else
    {
        std::cout << "Target built assets tree path must be specified via " << targetAssetsTreeKey << std::endl;
        return -1;
    }

    String compressorConfigPath;
    if (options.ContainsKey(compressorConfigPathKey))
        compressorConfigPath = options[compressorConfigPathKey];
    else
    {
        std::cout << "Images compressor config path must be specified via " << compressorConfigPathKey << std::endl;
        return -1;
    }

    bool forcible = false;
    if (options.ContainsKey(forcibleKey))
        forcible = (bool)options[forcibleKey];

    AssetsBuilder builder;
    builder.BuildAssets(platform, sourceDir, targetDir, targetTreeDir, compressorConfigPath, forcible);

    return 0;
}


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.cpp
================================================
#include "o2/stdafx.h"
#include "AtlasAssetConverter.h"

#include "o2/Assets/Types/AtlasAsset.h"
#include "o2/Assets/Types/ImageAsset.h"
#include "o2/Assets/Assets.h"
#include "o2/Utils/Bitmap/Bitmap.h"
#include "o2/Utils/Debug/Log/LogStream.h"
#include "o2/Utils/FileSystem/FileSystem.h"
#include "o2AssetBuilder/ImageCompressor.h"

namespace o2
{
    Vector<const Type*> AtlasAssetConverter::GetProcessingAssetsTypes() const
    {
        Vector<const Type*> res;
        res.Add(&TypeOf(AtlasAsset));
        return res;
    }

    void AtlasAssetConverter::ConvertAsset(const AssetInfo& node)
    {
        String sourceAssetPath = mAssetsBuilder->GetSourceAssetsPath() + node.path;
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        if (!o2FileSystem.IsFileExist(buildedAssetPath))
            o2FileSystem.WriteFile(buildedAssetPath, "");
    }

    void AtlasAssetConverter::RemoveAsset(const AssetInfo& node)
    {
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        DataDocument atlasData;
        atlasData.LoadFromFile(buildedAssetPath);
        int pagesCount = atlasData["mPages"].GetMembersCount();

        for (int i = 0; i < pagesCount; i++)
            o2FileSystem.FileDelete(buildedAssetPath + (String)i + ".png");

        o2FileSystem.FileDelete(buildedAssetPath);
    }

    void AtlasAssetConverter::MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo)
    {
        String fullPathFrom = mAssetsBuilder->GetBuiltAssetsPath() + nodeFrom.path;
        String fullPathTo = mAssetsBuilder->GetBuiltAssetsPath() + nodeTo.path;

        DataDocument atlasData;
        atlasData.LoadFromFile(fullPathFrom);
        int pagesCount = atlasData["mPages"].GetMembersCount();

        for (int i = 0; i < pagesCount; i++)
            o2FileSystem.FileMove(fullPathFrom + (String)i + ".png", fullPathTo + (String)i + ".png");

        o2FileSystem.FileMove(fullPathFrom, fullPathTo);
    }

    Vector<UID> AtlasAssetConverter::AssetsPostProcess()
    {
        return CheckRebuildingAtlases();
    }

    void AtlasAssetConverter::Reset()
    {}

    Vector<UID> AtlasAssetConverter::CheckRebuildingAtlases()
    {
        Vector<UID> res;
        const Type* atlasAssetType = &TypeOf(AtlasAsset);

        for (auto& info : mAssetsBuilder->mBuiltAssetsTree->allAssets)
        {
            auto infoStrong = info.Lock();
            if (infoStrong->meta->GetAssetType() == atlasAssetType)
            {
                if (CheckAtlasRebuilding(infoStrong))
                    res.Add(infoStrong->meta->ID());
            }
        }

        return res;
    }

    bool AtlasAssetConverter::CheckAtlasRebuilding(const Ref<AssetInfo>& atlasInfo)
    {
        DataDocument atlasData;
        atlasData.LoadFromFile(mAssetsBuilder->mBuiltAssetsPath + atlasInfo->path);

        Vector<Image> lastImages;
        lastImages = atlasData["mImages"];

        Vector<Image> currentImages;
        const Type* imageType = &TypeOf(ImageAsset);
        const UID& atlasId = atlasInfo->meta->ID();
        for (auto& assetInfo : mAssetsBuilder->mBuiltAssetsTree->allAssets)
        {
            auto assetInfoStrong = assetInfo.Lock();
            if (assetInfoStrong->meta->GetAssetType() == imageType)
            {
                Ref<ImageAsset::Meta> imageMeta = DynamicCast<ImageAsset::Meta>(assetInfoStrong->meta);
                if (imageMeta->atlasId == atlasId)
                    currentImages.Add(Image(imageMeta->ID(), assetInfoStrong->editTime));
            }
        }

        bool isModified = mAssetsBuilder->mModifiedAssets.Contains(atlasInfo->meta->ID());
        if (isModified || ImagesListChanged(currentImages, lastImages))
        {
            RebuildAtlas(atlasInfo, currentImages);
            return true;
        }

        return false;
    }

    bool AtlasAssetConverter::ImagesListChanged(Vector<Image>& currentImages, Vector<Image>& lastImages)
    {
        if (currentImages.Count() != lastImages.Count())
            return true;

        for (auto lastImg : lastImages)
        {
            bool found = false;
            for (auto curImg : currentImages)
            {
                if (lastImg.id == curImg.id)
                {
                    if (lastImg.time != curImg.time)
                    {
                        return true;
                    }
                    else
                    {
                        found = true;
                        break;
                    }
                }
            }

            if (!found)
                return true;
        }

        for (auto curImg : currentImages)
        {
            if (mAssetsBuilder->mModifiedAssets.Contains(curImg.id))
                return true;
        }

        return false;
    }

    void AtlasAssetConverter::RebuildAtlas(const Ref<AssetInfo>& atlasInfo, Vector<Image>& images)
    {
        auto meta = DynamicCast<AtlasAsset::Meta>(atlasInfo->meta)->GetResultPlatformMeta(mAssetsBuilder->GetPlatform());

        RectsPacker packer(meta.maxSize);
        float imagesBorder = (float)meta.border;

        // Initialize pack images
        Vector<ImagePackDef> packImages;
        for (auto img : images)
        {
            // Find image info
            WeakRef<AssetInfo> imgInfo;
            mAssetsBuilder->mBuiltAssetsTree->allAssetsByUID.TryGetValue(img.id, imgInfo);
            if (!imgInfo)
            {
                mAssetsBuilder->mLog->Error("Can't find asset info by id: " + (String)img.id);
                continue;
            }

            auto imgInfoStong = imgInfo.Lock();

            String assetFullPath = mAssetsBuilder->GetSourceAssetsPath() + imgInfoStong->path;

            // Load bitmap
            auto bitmap = mmake<Bitmap>();
            if (!bitmap->Load(assetFullPath))
            {
                mAssetsBuilder->mLog->Error("Can't load bitmap for image asset: " + imgInfoStong->path);
                continue;
            }

            // Create packing rect
            auto packRect = packer.AddRect(bitmap->GetSize() + Vec2F(imagesBorder*2.0f, imagesBorder*2.0f));

            ImagePackDef imagePackDef;
            imagePackDef.assetInfo = imgInfoStong;
            imagePackDef.bitmap = bitmap;
            imagePackDef.packRect = packRect;

            packImages.Add(imagePackDef);
        }

        // Try to pack
        if (!packer.Pack())
        {
            mAssetsBuilder->mLog->Warning("Atlas " + atlasInfo->path + " packing failed");
            return;
        }
        else mAssetsBuilder->mLog->Out("Atlas " + atlasInfo->path + " successfully packed");

        // Initialize bitmaps and pages
        int pagesCount = packer.GetPagesCount();
        Vector<Ref<Bitmap>> resAtlasBitmaps;
        Vector<AtlasAsset::Page> resAtlasPages;
        for (int i = 0; i < pagesCount; i++)
        {
            AtlasAsset::Page atlasPage;
            atlasPage.mId = i;
            atlasPage.mSize = packer.GetMaxSize();
            resAtlasPages.Add(atlasPage);

            auto newBitmap = mmake<Bitmap>(PixelFormat::R8G8B8A8, packer.GetMaxSize());
            newBitmap->Fill(Color4(255, 255, 255, 0));

            resAtlasBitmaps.Add(newBitmap);
        }

        // Save image assets data and fill pages
        for (auto imgDef : packImages)
        {
            imgDef.packRect->rect.left += imagesBorder;
            imgDef.packRect->rect.right -= imagesBorder;
            imgDef.packRect->rect.top -= imagesBorder;
            imgDef.packRect->rect.bottom += imagesBorder;

            resAtlasBitmaps[imgDef.packRect->page]->CopyImage(*imgDef.bitmap,
                                                              imgDef.packRect->rect.LeftBottom());

            resAtlasPages[imgDef.packRect->page].mImagesRects.Add(imgDef.assetInfo.Lock()->meta->ID(),
                                                                  imgDef.packRect->rect);

            SaveImageAsset(imgDef);
        }

        // Save pages bitmaps
        for (int i = 0; i < pagesCount; i++)
        {
            String builtPath = mAssetsBuilder->GetBuiltAssetsPath() + atlasInfo->path + (String)i;
            resAtlasBitmaps[i]->Save(builtPath + ".png", Bitmap::ImageType::Png);

            ImageCompressor::CompressImage(builtPath + ".png", builtPath, meta.format, 100);
        }

        // Save atlas data
        String atlasFullPath = mAssetsBuilder->GetSourceAssetsPath() + atlasInfo->path;
        String atlasFullBuiltPath = mAssetsBuilder->GetBuiltAssetsPath() + atlasInfo->path;

        DataDocument atlasData;
        atlasData.LoadFromFile(atlasFullPath);
        atlasData["mPages"] = resAtlasPages;
        atlasData["mImages"] = images;

        atlasData.SaveToFile(atlasFullPath);
        atlasData.SaveToFile(atlasFullBuiltPath);

        atlasInfo->editTime = o2FileSystem.GetFileInfo(atlasFullPath).editDate;
    }

    void AtlasAssetConverter::SaveImageAsset(ImagePackDef& imgDef)
    {
        DataDocument imgData;
        imgData["mAtlasPage"] = imgDef.packRect->page;
        imgData["mSourceRect"] = (RectI)(imgDef.packRect->rect);
        String imageFullPath = mAssetsBuilder->GetBuiltAssetsPath() + imgDef.assetInfo.Lock()->path;
        imgData.SaveToFile(imageFullPath);

        DataDocument metaData;
        metaData = imgDef.assetInfo.Lock()->meta;
        metaData.SaveToFile(mAssetsBuilder->GetSourceAssetsPath() + imgDef.assetInfo.Lock()->path + ".meta");
    }

    AtlasAssetConverter::Image::Image(const UID& id, const TimeStamp& time):
        id(id), time(time)
    {}

    bool AtlasAssetConverter::Image::operator==(const Image& other) const
    {
        return id == other.id;
    }

    bool AtlasAssetConverter::ImagePackDef::operator==(const ImagePackDef& other) const
    {
        return assetInfo == other.assetInfo && bitmap == other.bitmap && packRect == other.packRect;
    }
}
// --- META ---

DECLARE_CLASS(o2::AtlasAssetConverter, o2__AtlasAssetConverter);

DECLARE_CLASS(o2::AtlasAssetConverter::Image, o2__AtlasAssetConverter__Image);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.h
================================================
#pragma once

#include "IAssetConverter.h"
#include "o2/Utils/Tools/RectPacker.h"
#include "o2AssetBuilder/AssetsBuilder.h"

namespace o2
{
    class Bitmap;

    // -----------------
    // Atlases converter
    // -----------------
    class AtlasAssetConverter : public IAssetConverter
    {
    public:
        // Returns vector of processing assets types
        Vector<const Type*> GetProcessingAssetsTypes() const override;

        // Converts atlas by path
        void ConvertAsset(const AssetInfo& node) override;

        // Removes atlas by path
        void RemoveAsset(const AssetInfo& node) override;

        // Moves atlas
        void MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo) override;

        // Post processing atlases. Here checking atlases for rebuild
        Vector<UID> AssetsPostProcess() override;

        // Resets converter
        void Reset() override;

        IOBJECT(AtlasAssetConverter);

    public:
        // ----------------
        // Atlas image info
        // ----------------
        struct Image : public ISerializable
        {
            UID       id;   // Image asset id @SERIALIZABLE
            TimeStamp time; // Image asset edited date @SERIALIZABLE

        public:
            // Default constructor
            Image() {}

            // Constructor
            Image(const UID& id, const TimeStamp& time);

            // Check equal operator
            bool operator==(const Image& other) const;

            SERIALIZABLE(Image);
        };

        // ------------------------
        // Image packing definition
        // ------------------------
        struct ImagePackDef
        {
            Ref<Bitmap>            bitmap;    // Image bitmap pointer
            Ref<RectsPacker::Rect> packRect;  // Image pack rectangle pointer

            WeakRef<AssetInfo> assetInfo; // Asset information

            // Check equal operator
            bool operator==(const ImagePackDef& other) const;
        };

    protected:
        // Checks atlases for rebuilding
        Vector<UID> CheckRebuildingAtlases();

        // Checks atlas for rebuilding
        bool CheckAtlasRebuilding(const Ref<AssetInfo>& atlasInfo);

        // Returns true if atlas needs to rebuild
        bool ImagesListChanged(Vector<Image>& currentImages, Vector<Image>& lastImages);

        // Rebuilds atlas
        void RebuildAtlas(const Ref<AssetInfo>& atlasInfo, Vector<Image>& images);

        // Saves image asset data
        void SaveImageAsset(ImagePackDef& imgDef);
    };
}
// --- META ---

CLASS_BASES_META(o2::AtlasAssetConverter)
{
    BASE_CLASS(o2::IAssetConverter);
}
END_META;
CLASS_FIELDS_META(o2::AtlasAssetConverter)
{
}
END_META;
CLASS_METHODS_META(o2::AtlasAssetConverter)
{

    FUNCTION().PUBLIC().SIGNATURE(Vector<const Type*>, GetProcessingAssetsTypes);
    FUNCTION().PUBLIC().SIGNATURE(void, ConvertAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, RemoveAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, MoveAsset, const AssetInfo&, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(Vector<UID>, AssetsPostProcess);
    FUNCTION().PUBLIC().SIGNATURE(void, Reset);
    FUNCTION().PROTECTED().SIGNATURE(Vector<UID>, CheckRebuildingAtlases);
    FUNCTION().PROTECTED().SIGNATURE(bool, CheckAtlasRebuilding, const Ref<AssetInfo>&);
    FUNCTION().PROTECTED().SIGNATURE(bool, ImagesListChanged, Vector<Image>&, Vector<Image>&);
    FUNCTION().PROTECTED().SIGNATURE(void, RebuildAtlas, const Ref<AssetInfo>&, Vector<Image>&);
    FUNCTION().PROTECTED().SIGNATURE(void, SaveImageAsset, ImagePackDef&);
}
END_META;

CLASS_BASES_META(o2::AtlasAssetConverter::Image)
{
    BASE_CLASS(o2::ISerializable);
}
END_META;
CLASS_FIELDS_META(o2::AtlasAssetConverter::Image)
{
    FIELD().PUBLIC().SERIALIZABLE_ATTRIBUTE().NAME(id);
    FIELD().PUBLIC().SERIALIZABLE_ATTRIBUTE().NAME(time);
}
END_META;
CLASS_METHODS_META(o2::AtlasAssetConverter::Image)
{

    FUNCTION().PUBLIC().CONSTRUCTOR();
    FUNCTION().PUBLIC().CONSTRUCTOR(const UID&, const TimeStamp&);
}
END_META;
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.cpp
================================================
#include "o2/stdafx.h"
#include "FolderAssetConverter.h"

#include "o2/Assets/Assets.h"
#include "o2/Assets/Types/BinaryAsset.h"
#include "o2/Assets/Types/FolderAsset.h"
#include "o2/Utils/FileSystem/FileSystem.h"
#include "o2AssetBuilder/AssetsBuilder.h"

namespace o2
{
    Vector<const Type*> FolderAssetConverter::GetProcessingAssetsTypes() const
    {
        Vector<const Type*> res;
        res.Add(&TypeOf(FolderAsset));
        return res;
    }

    void FolderAssetConverter::ConvertAsset(const AssetInfo& node)
    {
        String sourceAssetPath = mAssetsBuilder->GetSourceAssetsPath() + node.path;
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FolderCreate(buildedAssetPath);
    }

    void FolderAssetConverter::RemoveAsset(const AssetInfo& node)
    {
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FolderRemove(buildedAssetPath);
    }

    void FolderAssetConverter::MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo)
    {
        String fullPathFrom = mAssetsBuilder->GetBuiltAssetsPath() + nodeFrom.path;
        String fullPathTo = mAssetsBuilder->GetBuiltAssetsPath() + nodeTo.path;

        o2FileSystem.FolderCreate(fullPathTo);

        mRemovedFolders.Add(fullPathFrom);
        mRemovedFolders.Remove(fullPathTo);
    }

    Vector<UID> FolderAssetConverter::AssetsPostProcess()
    {
        for (auto fold : mRemovedFolders)
            o2FileSystem.FolderRemove(fold);

        return Vector<UID>();
    }

    void FolderAssetConverter::Reset()
    {
        mRemovedFolders.Clear();
    }
}
// --- META ---

DECLARE_CLASS(o2::FolderAssetConverter, o2__FolderAssetConverter);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.h
================================================
#pragma once

#include "IAssetConverter.h"

namespace o2
{
    // ----------------
    // Folder converter
    // ----------------
    class FolderAssetConverter: public IAssetConverter
    {
    public:
        // Returns vector of processing assets types
        Vector<const Type*> GetProcessingAssetsTypes() const override;

        // Converts folder by path
        void ConvertAsset(const AssetInfo& node) override;

        // Removes folder by path
        void RemoveAsset(const AssetInfo& node) override;

        // Moves folder to new path
        void MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo) override;

        // Post processing folders
        Vector<UID> AssetsPostProcess() override;

        // Resets converter
        void Reset() override;

        IOBJECT(FolderAssetConverter);

    protected:
        Vector<String> mRemovedFolders; // Removes folders
    };
}
// --- META ---

CLASS_BASES_META(o2::FolderAssetConverter)
{
    BASE_CLASS(o2::IAssetConverter);
}
END_META;
CLASS_FIELDS_META(o2::FolderAssetConverter)
{
    FIELD().PROTECTED().NAME(mRemovedFolders);
}
END_META;
CLASS_METHODS_META(o2::FolderAssetConverter)
{

    FUNCTION().PUBLIC().SIGNATURE(Vector<const Type*>, GetProcessingAssetsTypes);
    FUNCTION().PUBLIC().SIGNATURE(void, ConvertAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, RemoveAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, MoveAsset, const AssetInfo&, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(Vector<UID>, AssetsPostProcess);
    FUNCTION().PUBLIC().SIGNATURE(void, Reset);
}
END_META;
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.cpp
================================================
#include "o2/stdafx.h"
#include "IAssetConverter.h"

#include "o2AssetBuilder/AssetsBuilder.h"

namespace o2
{
    Vector<const Type*> IAssetConverter::GetProcessingAssetsTypes() const
    {
        return Vector<const Type*>();
    }

    void IAssetConverter::ConvertAsset(const AssetInfo& node)
    {}

    void IAssetConverter::RemoveAsset(const AssetInfo& node)
    {}

    void IAssetConverter::MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo)
    {}

    Vector<UID> IAssetConverter::AssetsPostProcess()
    {
        return Vector<UID>();
    }

    void IAssetConverter::Reset()
    {}

    void IAssetConverter::SetAssetsBuilder(AssetsBuilder* builder)
    {
        mAssetsBuilder = builder;
    }

}
// --- META ---

DECLARE_CLASS(o2::IAssetConverter, o2__IAssetConverter);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.h
================================================
#pragma once

#include "o2/Assets/AssetsTree.h"
#include "o2/Utils/Basic/IObject.h"
#include "o2/Utils/Memory/MemoryManager.h"

#include "o2/Utils/Reflection/Type.h"

namespace o2
{
    class AssetsBuilder;

    // --------------------------------------
    // Asset converter interface
    // Converts assets with specialized types
    //---------------------------------------
    class IAssetConverter: public IObject
    {
    public:
        // Virtual destructor
        virtual ~IAssetConverter() {}

        // Returns vector of processing assets types
        virtual Vector<const Type*> GetProcessingAssetsTypes() const;

        // Converts asset by path
        virtual void ConvertAsset(const AssetInfo& node);

        // Removes asset by path
        virtual void RemoveAsset(const AssetInfo& node);

        // Moves asset to new path
        virtual void MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo);

        // Post processing
        virtual Vector<UID> AssetsPostProcess();

        // Resets converter
        virtual void Reset();

        // Sets owner assets builder
        void SetAssetsBuilder(AssetsBuilder* builder);

        IOBJECT(IAssetConverter);

    protected:
        // Assets builder pointer
        AssetsBuilder* mAssetsBuilder = nullptr;
    };
}
// --- META ---

CLASS_BASES_META(o2::IAssetConverter)
{
    BASE_CLASS(o2::IObject);
}
END_META;
CLASS_FIELDS_META(o2::IAssetConverter)
{
    FIELD().PROTECTED().DEFAULT_VALUE(nullptr).NAME(mAssetsBuilder);
}
END_META;
CLASS_METHODS_META(o2::IAssetConverter)
{

    FUNCTION().PUBLIC().SIGNATURE(Vector<const Type*>, GetProcessingAssetsTypes);
    FUNCTION().PUBLIC().SIGNATURE(void, ConvertAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, RemoveAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, MoveAsset, const AssetInfo&, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(Vector<UID>, AssetsPostProcess);
    FUNCTION().PUBLIC().SIGNATURE(void, Reset);
    FUNCTION().PUBLIC().SIGNATURE(void, SetAssetsBuilder, AssetsBuilder*);
}
END_META;
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.cpp
================================================
#include "o2/stdafx.h"
#include "ImageAssetConverter.h"

#include "o2/Assets/Assets.h"
#include "o2/Assets/Types/ImageAsset.h"
#include "o2/Utils/FileSystem/FileSystem.h"
#include "o2AssetBuilder/AssetsBuilder.h"

namespace o2
{
    Vector<const Type*> ImageAssetConverter::GetProcessingAssetsTypes() const
    {
        Vector<const Type*> res;
        res.Add(&TypeOf(ImageAsset));
        return res;
    }

    void ImageAssetConverter::ConvertAsset(const AssetInfo& node)
    {
        String sourceAssetPath = mAssetsBuilder->GetSourceAssetsPath() + node.path;
        String builtAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FileCopy(sourceAssetPath, builtAssetPath);
    }

    void ImageAssetConverter::RemoveAsset(const AssetInfo& node)
    {
        String builtAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FileDelete(builtAssetPath);
    }

    void ImageAssetConverter::MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo)
    {
        String fullPathFrom = mAssetsBuilder->GetBuiltAssetsPath() + nodeFrom.path;
        String fullPathTo = mAssetsBuilder->GetBuiltAssetsPath() + nodeTo.path;

        o2FileSystem.FileMove(fullPathFrom, fullPathTo);
    }
}
// --- META ---

DECLARE_CLASS(o2::ImageAssetConverter, o2__ImageAssetConverter);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.h
================================================
#pragma once

#include "IAssetConverter.h"

namespace o2
{
    // ---------------------
    // Image asset converter
    // ---------------------
    class ImageAssetConverter: public IAssetConverter
    {
    public:
        // Returns vector of processing assets types
        Vector<const Type*> GetProcessingAssetsTypes() const override;

        // Converts image
        void ConvertAsset(const AssetInfo& node) override;

        // Removes image
        void RemoveAsset(const AssetInfo& node) override;

        // Moves image to new path
        void MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo) override;

        IOBJECT(ImageAssetConverter);
    };
}
// --- META ---

CLASS_BASES_META(o2::ImageAssetConverter)
{
    BASE_CLASS(o2::IAssetConverter);
}
END_META;
CLASS_FIELDS_META(o2::ImageAssetConverter)
{
}
END_META;
CLASS_METHODS_META(o2::ImageAssetConverter)
{

    FUNCTION().PUBLIC().SIGNATURE(Vector<const Type*>, GetProcessingAssetsTypes);
    FUNCTION().PUBLIC().SIGNATURE(void, ConvertAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, RemoveAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, MoveAsset, const AssetInfo&, const AssetInfo&);
}
END_META;
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.cpp
================================================
#include "o2/stdafx.h"
#include "StdAssetConverter.h"

#include "o2/Assets/Assets.h"
#include "o2/Assets/Types/BinaryAsset.h"
#include "o2/Assets/Types/FolderAsset.h"
#include "o2/Assets/Types/ImageAsset.h"
#include "o2/Utils/FileSystem/FileSystem.h"
#include "o2AssetBuilder/AssetsBuilder.h"

namespace o2
{
    Vector<const Type*> StdAssetConverter::GetProcessingAssetsTypes() const
    {
        Vector<const Type*> res;
        res.Add(&TypeOf(BinaryAsset));
        return res;
    }

    void StdAssetConverter::ConvertAsset(const AssetInfo& node)
    {
        String sourceAssetPath = mAssetsBuilder->GetSourceAssetsPath() + node.path;
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FileCopy(sourceAssetPath, buildedAssetPath);
    }

    void StdAssetConverter::RemoveAsset(const AssetInfo& node)
    {
        String buildedAssetPath = mAssetsBuilder->GetBuiltAssetsPath() + node.path;

        o2FileSystem.FileDelete(buildedAssetPath);
    }

    void StdAssetConverter::MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo)
    {
        String fullPathFrom = mAssetsBuilder->GetBuiltAssetsPath() + nodeFrom.path;
        String fullPathTo = mAssetsBuilder->GetBuiltAssetsPath() + nodeTo.path;

        o2FileSystem.FileMove(fullPathFrom, fullPathTo);
    }
}
// --- META ---

DECLARE_CLASS(o2::StdAssetConverter, o2__StdAssetConverter);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.h
================================================
#pragma once

#include "IAssetConverter.h"

namespace o2
{
    // -----------------------------------------------------------------
    // Standard assets converter. Copying file and meta without changing
    // -----------------------------------------------------------------
    class StdAssetConverter: public IAssetConverter
    {
    public:
        // Returns vector of processing assets types
        Vector<const Type*> GetProcessingAssetsTypes() const override;

        // Copies asset
        void ConvertAsset(const AssetInfo& node) override;

        // Removes asset
        void RemoveAsset(const AssetInfo& node) override;

        // Moves asset to new path
        void MoveAsset(const AssetInfo& nodeFrom, const AssetInfo& nodeTo) override;

        IOBJECT(StdAssetConverter);
    };
}
// --- META ---

CLASS_BASES_META(o2::StdAssetConverter)
{
    BASE_CLASS(o2::IAssetConverter);
}
END_META;
CLASS_FIELDS_META(o2::StdAssetConverter)
{
}
END_META;
CLASS_METHODS_META(o2::StdAssetConverter)
{

    FUNCTION().PUBLIC().SIGNATURE(Vector<const Type*>, GetProcessingAssetsTypes);
    FUNCTION().PUBLIC().SIGNATURE(void, ConvertAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, RemoveAsset, const AssetInfo&);
    FUNCTION().PUBLIC().SIGNATURE(void, MoveAsset, const AssetInfo&, const AssetInfo&);
}
END_META;
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.cpp
================================================
#include "o2/stdafx.h"
#include "ImageCompressor.h"

#include "o2/Utils/FileSystem/FileSystem.h"

namespace o2
{
    void ImageCompressor::CompressImage(const String& path, const String& outPath, TextureFormat format, int quality)
    {
        o2Debug.Log("Compress image from " + path + " to " + outPath + " format " + o2Reflection.GetEnumName(format));

        String command = mConfig.formatCommands[::GetEnginePlatform()][format];
        if (command.IsEmpty())
            return;

        if (::GetEnginePlatform() == Platform::Windows)
            command = "\"" + command + "\"";

        command.ReplaceAll("{quality}", String(quality));
        command.ReplaceAll("{input}", path);
        command.ReplaceAll("{output}", outPath);

        o2Debug.Log("Run compress command:" + command);
        int res = system(command.c_str());

        if (res != 0)
            o2Debug.Log("Something wrong, non-zero result");

        o2FileSystem.FileDelete(path);
    }

    void ImageCompressor::LoadConfig(const String& path)
    {
        DataDocument doc;
        o2Debug.Log("Load compressions config: " + path);
        doc.LoadFromFile(path);
        mConfig = doc;
    }

    void ImageCompressor::GenerateDefaultConfig()
    {
        mConfig.formatCommands =
        {
            { 
                Platform::Windows, 
                {
                    { TextureFormat::DXT5, "\"../../deps/o2/AssetsBuildTool/Bin/nvcompress.exe\" -nomips -bc3 -alpha \"{input}\" \"{output}.dds\"" }
                } 
            }
        };

        DataDocument doc;
        doc = mConfig;
        doc.SaveToFile(::GetProjectRootPath() + String("deps/o2/CompressToolsConfig.json"));
    }

    ImageCompressor::Config ImageCompressor::mConfig;
}
// --- META ---

DECLARE_CLASS(o2::ImageCompressor::Config, o2__ImageCompressor__Config);
// --- END META ---


================================================
FILE: AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.h
================================================
#pragma once
#include "o2/Utils/Serialization/Serializable.h"

namespace o2
{
    class ImageCompressor
    {
    public:
        // Compresses image
        static void CompressImage(const String& path, const String& outPath, TextureFormat format, int quality);

        // Loads config
        static void LoadConfig(const String& path);

        // Generates default config
        static void GenerateDefaultConfig();

    public:
        // -------------------------
        // Compressions tools config
        // -------------------------
        struct Config : public ISerializable
        {
            // The format is:
            // path/to/executable custom parameters {quality 0-100} {input} {output}

            Map<Platform, Map<TextureFormat, String>> formatCommands; // Texture formats compression commands @SERIALIZABLE

            SERIALIZABLE(Config);
        };

    public:
        static Config mConfig;
    };
}
// --- META ---

CLASS_BASES_META(o2::ImageCompressor::Config)
{
    BASE_CLASS(o2::ISerializable);
}
END_META;
CLASS_FIELDS_META(o2::ImageCompressor::Config)
{
    FIELD().PUBLIC().SERIALIZABLE_ATTRIBUTE().NAME(formatCommands);
}
END_META;
CLASS_METHODS_META(o2::ImageCompressor::Config)
{
}
END_META;
// --- END META ---


================================================
FILE: CMake/CMakeDetermineMetalCompiler.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

# CMakeDetermine(LANG)Compiler.cmake -> this should find the compiler for LANG and configure CMake(LANG)Compiler.cmake.in

include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)

if(NOT CMAKE_Metal_COMPILER_NAMES)
    set(CMAKE_Metal_COMPILER_NAMES metal)
endif()

if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
    set(CMAKE_Metal_COMPILER_XCODE_TYPE sourcecode.metal)

    execute_process(COMMAND xcrun --find metal
            OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_VARIABLE _xcrun_err RESULT_VARIABLE _xcrun_result
            )

    if(_xcrun_result EQUAL 0 AND EXISTS "${_xcrun_out}")
        set(CMAKE_Metal_COMPILER "${_xcrun_out}")
    else()
        _cmake_find_compiler_path(Metal)
    endif()
else()
    if(CMAKE_Metal_COMPILER)
        _cmake_find_compiler_path(Metal)
    else()
        set(CMAKE_Metal_COMPILER_INIT NOTFOUND)

        if(NOT $ENV{METALC} STREQUAL "")
            get_filename_component(CMAKE_Metal_COMPILER_INIT $ENV{METALC} PROGRAM PROGRAM_ARGS CMAKE_Metal_FLAGS_ENV_INIT)
            if(CMAKE_Metal_FLAGS_ENV_INIT)
                set(CMAKE_Metal_COMPILER_ARG1 "${CMAKE_Metal_FLAGS_ENV_INIT}" CACHE STRING "Arguments to the Metal compiler")
            endif()
            if(NOT EXISTS ${CMAKE_Metal_COMPILER_INIT})
                message(FATAL_ERROR "Could not find compiler set in environment variable METALC\n$ENV{METALC}.\n${CMAKE_Metal_COMPILER_INIT}")
            endif()
        endif()

        if(NOT CMAKE_Metal_COMPILER_INIT)
            set(CMAKE_Metal_COMPILER_LIST metal ${_CMAKE_TOOLCHAIN_PREFIX}metal)
        endif()

        _cmake_find_compiler(Metal)
    endif()

    mark_as_advanced(CMAKE_Metal_COMPILER)
endif()

# For Metal we need to explicitly query the version.
if(CMAKE_Metal_COMPILER AND NOT CMAKE_Metal_COMPILER_VERSION)
    execute_process(
            COMMAND "${CMAKE_Metal_COMPILER}" --version
            OUTPUT_VARIABLE output ERROR_VARIABLE output
            RESULT_VARIABLE result
            TIMEOUT 10
    )
    message(CONFIGURE_LOG
            "Running the Metal compiler: \"${CMAKE_Metal_COMPILER}\" --version\n"
            "${output}\n"
            )

    if(output MATCHES [[metal version ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
        set(CMAKE_Metal_COMPILER_VERSION "${CMAKE_MATCH_1}")
        if(NOT CMAKE_Metal_COMPILER_ID)
            set(CMAKE_Metal_COMPILER_ID "Apple")
        endif()
    endif()
endif()

if(NOT _CMAKE_TOOLCHAIN_LOCATION)
    get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Metal_COMPILER}" PATH)
endif ()

set(_CMAKE_PROCESSING_LANGUAGE "Metal")
include(CMakeFindBinUtils)
unset(_CMAKE_PROCESSING_LANGUAGE)

configure_file(
        ${CMAKE_CURRENT_LIST_DIR}/CMakeMetalCompiler.cmake.in
        ${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake
)

set(CMAKE_Metal_COMPILER_ENV_VAR "METALC")

================================================
FILE: CMake/CMakeMetalCompiler.cmake.in
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

# CMake(LANG)Compiler.cmake.in  -> used by CMakeDetermine(LANG)Compiler.cmake
# This file is used to store compiler information and is copied down into try
# compile directories so that try compiles do not need to re-determine and test
# the LANG

set(CMAKE_Metal_COMPILER "@CMAKE_Metal_COMPILER@")
set(CMAKE_Metal_COMPILER_ID "@CMAKE_Metal_COMPILER_ID@")
set(CMAKE_Metal_COMPILER_VERSION "@CMAKE_Metal_COMPILER_VERSION@")

set(CMAKE_Metal_COMPILER_LOADED 1)
set(CMAKE_Metal_COMPILER_WORKS "@CMAKE_Metal_COMPILER_WORKS@")

set(CMAKE_Metal_COMPILER_ENV_VAR "METALC")

set(CMAKE_Metal_COMPILER_ID_RUN "@CMAKE_Metal_COMPILER_ID_RUN@")
set(CMAKE_Metal_SOURCE_FILE_EXTENSIONS metal)
set(CMAKE_Metal_OUTPUT_EXTENSION ".air")
set(CMAKE_STATIC_LIBRARY_PREFIX_Metal "")
set(CMAKE_STATIC_LIBRARY_SUFFIX_Metal ".metal-ar")
set(CMAKE_SHARED_LIBRARY_PREFIX_Metal "")
set(CMAKE_SHARED_LIBRARY_SUFFIX_Metal ".metallib")
set(CMAKE_SHARED_MODULE_PREFIX_Metal "")
set(CMAKE_SHARED_MODULE_SUFFIX_Metal ".metallib")
set(CMAKE_EXECUTABLE_SUFFIX_Metal ".metallib")

================================================
FILE: CMake/CMakeMetalInformation.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

#  CMake(LANG)Information.cmake  -> set up rule variables for LANG :
#    CMAKE_(LANG)_CREATE_SHARED_LIBRARY
#    CMAKE_(LANG)_CREATE_SHARED_MODULE
#    CMAKE_(LANG)_CREATE_STATIC_LIBRARY
#    CMAKE_(LANG)_COMPILE_OBJECT
#    CMAKE_(LANG)_LINK_EXECUTABLE

include(CMakeCommonLanguageInclude)

set(CMAKE_Metal_FLAGS_INIT "-ffast-math")
set(CMAKE_Metal_FLAGS_DEBUG_INIT "-gline-tables-only -frecord-sources")
set(CMAKE_Metal_FLAGS_RELWITHDEBINFO_INIT "-gline-tables-only -frecord-sources")

cmake_initialize_per_config_variable(CMAKE_Metal_FLAGS "Flags used by the Metal compiler")

set(CMAKE_INCLUDE_FLAG_Metal "-I ")
set(CMAKE_Metal_COMPILER_ARG1 "")
set(CMAKE_Metal_DEFINE_FLAG -D)
set(CMAKE_Metal_FRAMEWORK_SEARCH_FLAG "-F ")
set(CMAKE_Metal_LIBRARY_PATH_FLAG "-L ")
set(CMAKE_Metal_SYSROOT_FLAG "-isysroot")
set(CMAKE_Metal_COMPILE_OPTIONS_TARGET "-target ")
set(CMAKE_DEPFILE_FLAGS_Metal "-MMD -MT dependencies -MF <DEP_FILE>")

if(CMAKE_GENERATOR MATCHES "Makefiles")
    set(CMAKE_Metal_DEPFILE_FORMAT gcc)
    set(CMAKE_Metal_DEPENDS_USE_COMPILER TRUE)
endif()

set(CMAKE_Metal_COMPILER_PREDEFINES_COMMAND "${CMAKE_Metal_COMPILER}")
if(CMAKE_Metal_COMPILER_TARGET)
    list(APPEND CMAKE_Metal_COMPILER_PREDEFINES_COMMAND "-target" "${CMAKE_Metal_COMPILER_TARGET}")
endif()

# now define the following rule variables

# CMAKE_Metal_CREATE_SHARED_LIBRARY
# CMAKE_Metal_CREATE_SHARED_MODULE
# CMAKE_Metal_COMPILE_OBJECT
# CMAKE_Metal_LINK_EXECUTABLE

# variables supplied by the generator at use time
# <TARGET>
# <TARGET_BASE> the target without the suffix
# <OBJECTS>
# <OBJECT>
# <LINK_LIBRARIES>
# <FLAGS>
# <LINK_FLAGS>

# Metal compiler information
# <CMAKE_Metal_COMPILER>
# <CMAKE_SHARED_LIBRARY_CREATE_Metal_FLAGS>
# <CMAKE_SHARED_MODULE_CREATE_Metal_FLAGS>
# <CMAKE_Metal_LINK_FLAGS>

if(NOT CMAKE_Metal_COMPILE_OBJECT)
    set(CMAKE_Metal_COMPILE_OBJECT
            "<CMAKE_Metal_COMPILER> -c <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>"
            )
endif()

if(NOT CMAKE_Metal_CREATE_SHARED_LIBRARY)
    set(CMAKE_Metal_CREATE_SHARED_LIBRARY
            "<CMAKE_Metal_COMPILER> <CMAKE_SHARED_LIBRARY_Metal_FLAGS> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Metal_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
            )
endif()

if(NOT CMAKE_Metal_CREATE_SHARED_MODULE)
    set(CMAKE_Metal_CREATE_SHARED_MODULE
            "${CMAKE_Metal_CREATE_SHARED_LIBRARY}"
            )
endif()

if(NOT CMAKE_Metal_LINK_EXECUTABLE)
    # Metal shaders don't really have "executables", but we need this for the try_compile to work properly, so we'll just have it output a metallib file
    set(CMAKE_Metal_LINK_EXECUTABLE
            "<CMAKE_Metal_COMPILER> <FLAGS> <CMAKE_Metal_LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
            )
endif()

set(CMAKE_Metal_INFORMATION_LOADED 1)

================================================
FILE: CMake/CMakeTestMetalCompiler.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

# CMakeTest(LANG)Compiler.cmake -> test the compiler and set:
#     SET(CMAKE_(LANG)_COMPILER_WORKS 1 CACHE INTERNAL "")

if(CMAKE_Metal_COMPILER_FORCED)
    # The compiler configuration was forced by the user.
    # Assume the user has configured all compiler information.
    set(CMAKE_Metal_COMPILER_WORKS TRUE)
    return()
endif()

include(CMakeTestCompilerCommon)

if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
    if(XCODE_VERSION VERSION_GREATER 7.0)
        set(CMAKE_Metal_COMPILER_WORKS 1)
    endif()
endif()

# This file is used by EnableLanguage in cmGlobalGenerator to
# determine that that selected Metal compiler can actually compile
# and link the most basic of programs.   If not, a fatal error
# is set and cmake stops processing commands and will not generate
# any makefiles or projects.
if(NOT CMAKE_Metal_COMPILER_WORKS)
    PrintTestCompilerStatus("Metal")
    __TestCompiler_setTryCompileTargetType()

    string(CONCAT __TestCompiler_testMetalCompilerSource
            "#ifndef __METAL_VERSION__\n"
            "# error \"The CMAKE_Metal_COMPILER is not a Metal compiler\"\n"
            "#endif\n"
            "#import <metal_stdlib>\n"
            "using namespace metal;\n"
            )

    # Clear result from normal variable.
    unset(CMAKE_Metal_COMPILER_WORKS)

    # Puts test result in cache variable.
    try_compile(CMAKE_Metal_COMPILER_WORKS
            SOURCE_FROM_VAR testMetalCompiler.metal __TestCompiler_testMetalCompilerSource
            OUTPUT_VARIABLE __CMAKE_Metal_COMPILER_OUTPUT
            )
    unset(__TestCompiler_testMetalCompilerSource)

    # Move result from cache to normal variable.
    set(CMAKE_Metal_COMPILER_WORKS ${CMAKE_Metal_COMPILER_WORKS})
    unset(CMAKE_Metal_COMPILER_WORKS CACHE)
    __TestCompiler_restoreTryCompileTargetType()
    set(METAL_TEST_WAS_RUN 1)
endif()

if(NOT CMAKE_Metal_COMPILER_WORKS)
    PrintTestCompilerResult(CHECK_FAIL "broken")
    string(REPLACE "\n" "\n  " _output "${__CMAKE_Metal_COMPILER_OUTPUT}")
    message(FATAL_ERROR "The Metal compiler\n  \"${CMAKE_Metal_COMPILER}\"\n"
            "is not able to compile a simple test program.\nIt fails "
            "with the following output:\n  ${_output}\n\n"
            "CMake will not be able to correctly generate this project."
            )
else()
    if(METAL_TEST_WAS_RUN)
        PrintTestCompilerResult(CHECK_PASS "works")
    endif()

    # Re-configure to save learned information.
    configure_file(
            ${CMAKE_CURRENT_LIST_DIR}/CMakeMetalCompiler.cmake.in
            ${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake
            @ONLY
    )
    include(${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake)
endif()

unset(__CMAKE_Metal_COMPILER_OUTPUT)

================================================
FILE: CMake/CheckLanguage.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
CheckLanguage
-------------

Check whether a language can be enabled by the :command:`enable_language`
or :command:`project` commands:

.. command:: check_language

  .. code-block:: cmake

    check_language(<lang>)

  Try enabling language ``<lang>`` in a test project and record results
  in the cache:

  :variable:`CMAKE_<LANG>_COMPILER`
    If the language can be enabled, this variable is set to the compiler
    that was found.  If the language cannot be enabled, this variable is
    set to ``NOTFOUND``.

    If this variable is already set, either explicitly or cached by
    a previous call, the check is skipped.

  :variable:`CMAKE_<LANG>_HOST_COMPILER`
    This variable is set when ``<lang>`` is ``CUDA`` or ``HIP``.

    If the check detects an explicit host compiler that is required for
    compilation, this variable will be set to that compiler.
    If the check detects that no explicit host compiler is needed,
    this variable will be cleared.

    If this variable is already set, its value is preserved only if
    :variable:`CMAKE_<LANG>_COMPILER` is also set.
    Otherwise, the check runs and overwrites
    :variable:`CMAKE_<LANG>_HOST_COMPILER` with a new result.
    Note that :variable:`CMAKE_<LANG>_HOST_COMPILER` documents it should
    not be set without also setting
    :variable:`CMAKE_<LANG>_COMPILER` to a NVCC compiler.

  :variable:`CMAKE_<LANG>_PLATFORM <CMAKE_HIP_PLATFORM>`
    This variable is set to the detected GPU platform when ``<lang>`` is ``HIP``.

    If the variable is already set its value is always preserved. Only compatible values
    will be considered for :variable:`CMAKE_<LANG>_COMPILER`.

For example:

.. code-block:: cmake

  check_language(Fortran)
  if(CMAKE_Fortran_COMPILER)
    enable_language(Fortran)
  else()
    message(STATUS "No Fortran support")
  endif()
#]=======================================================================]

# This file has been modified to take into account the CMAKE_MODULES path when trying to build the test project
# Ref https://gitlab.kitware.com/cmake/cmake/-/issues/26020
# This was merged in to CMake 3.30.0, so we only need this for older versions

if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.30)
    include(${CMAKE_ROOT}/Modules/CheckLanguage.cmake)
else()
    include_guard(GLOBAL)

    block(SCOPE_FOR POLICIES)
        cmake_policy(SET CMP0126 NEW)

        macro(check_language lang)
            if(NOT DEFINED CMAKE_${lang}_COMPILER)
                set(_desc "Looking for a ${lang} compiler")
                message(CHECK_START "${_desc}")
                file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})

                set(extra_compiler_variables)
                if("${lang}" MATCHES "^(CUDA|HIP)$" AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
                    set(extra_compiler_variables "set(CMAKE_${lang}_HOST_COMPILER \\\"\${CMAKE_${lang}_HOST_COMPILER}\\\")")
                endif()

                if("${lang}" STREQUAL "HIP")
                    list(APPEND extra_compiler_variables "set(CMAKE_${lang}_PLATFORM \\\"\${CMAKE_${lang}_PLATFORM}\\\")")
                endif()

                list(TRANSFORM extra_compiler_variables PREPEND "\"")
                list(TRANSFORM extra_compiler_variables APPEND "\\n\"")
                list(JOIN extra_compiler_variables "\n  " extra_compiler_variables)

                set(_cl_content
                        "cmake_minimum_required(VERSION ${CMAKE_VERSION})
    set(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\")
    project(Check${lang} ${lang})
    file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
      \"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\"
      ${extra_compiler_variables}
      )"
                )

                file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
                        "${_cl_content}")
                if(CMAKE_GENERATOR_INSTANCE)
                    set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
                else()
                    set(_D_CMAKE_GENERATOR_INSTANCE "")
                endif()
                if(CMAKE_GENERATOR MATCHES "^(Xcode$|Green Hills MULTI$|Visual Studio)")
                    set(_D_CMAKE_MAKE_PROGRAM "")
                else()
                    set(_D_CMAKE_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
                endif()
                if(CMAKE_TOOLCHAIN_FILE)
                    set(_D_CMAKE_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}")
                else()
                    set(_D_CMAKE_TOOLCHAIN_FILE "")
                endif()
                if(CMAKE_${lang}_PLATFORM)
                    set(_D_CMAKE_LANG_PLATFORM "-DCMAKE_${lang}_PLATFORM:STRING=${CMAKE_${lang}_PLATFORM}")
                else()
                    set(_D_CMAKE_LANG_PLATFORM "")
                endif()
                execute_process(
                        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}
                        COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
                        -A "${CMAKE_GENERATOR_PLATFORM}"
                        -T "${CMAKE_GENERATOR_TOOLSET}"
                        ${_D_CMAKE_GENERATOR_INSTANCE}
                        ${_D_CMAKE_MAKE_PROGRAM}
                        ${_D_CMAKE_TOOLCHAIN_FILE}
                        ${_D_CMAKE_LANG_PLATFORM}
                        OUTPUT_VARIABLE _cl_output
                        ERROR_VARIABLE _cl_output
                        RESULT_VARIABLE _cl_result
                )
                include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/result.cmake OPTIONAL)
                if(CMAKE_${lang}_COMPILER AND "${_cl_result}" STREQUAL "0")
                    message(CONFIGURE_LOG
                            "${_desc} passed with the following output:\n"
                            "${_cl_output}\n")
                    set(_CHECK_COMPILER_STATUS CHECK_PASS)
                else()
                    set(CMAKE_${lang}_COMPILER NOTFOUND)
                    set(_CHECK_COMPILER_STATUS CHECK_FAIL)
                    message(CONFIGURE_LOG
                            "${_desc} failed with the following output:\n"
                            "${_cl_output}\n")
                endif()
                message(${_CHECK_COMPILER_STATUS} "${CMAKE_${lang}_COMPILER}")
                set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
                mark_as_advanced(CMAKE_${lang}_COMPILER)

                if(CMAKE_${lang}_HOST_COMPILER)
                    message(STATUS "Looking for a ${lang} host compiler - ${CMAKE_${lang}_HOST_COMPILER}")
                    set(CMAKE_${lang}_HOST_COMPILER "${CMAKE_${lang}_HOST_COMPILER}" CACHE FILEPATH "${lang} host compiler")
                    mark_as_advanced(CMAKE_${lang}_HOST_COMPILER)
                endif()

                if(CMAKE_${lang}_PLATFORM)
                    set(CMAKE_${lang}_PLATFORM "${CMAKE_${lang}_PLATFORM}" CACHE STRING "${lang} platform")
                    mark_as_advanced(CMAKE_${lang}_PLATFORM)
                endif()
            endif()
        endmacro()

    endblock()
endif()

================================================
FILE: CMake/MetalShaderSupport.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENCE.txt or https://cmake.org/licensing for details.

function(add_metal_shader_library TARGET)
    cmake_parse_arguments(PARSE_ARGV 1 _amsl
            ""
            "STANDARD"
            ""
            )

    add_library(${TARGET} MODULE ${_amsl_UNPARSED_ARGUMENTS})

    set_target_properties(${TARGET} PROPERTIES
            DEBUG_POSTFIX ""
            XCODE_PRODUCT_TYPE com.apple.product-type.metal-library
            XCODE_ATTRIBUTE_MTL_FAST_MATH "YES"
            XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO[variant=Debug] "INCLUDE_SOURCE"
            XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO[variant=RelWithDebInfo] "INCLUDE_SOURCE"
            XCODE_ATTRIBUTE_MTL_HEADER_SEARCH_PATHS "$(HEADER_SEARCH_PATHS)"
            )

    if(_amsl_STANDARD AND _amsl_STANDARD MATCHES "metal([0-9]+)\.([0-9]+)")
        target_compile_options(${TARGET}
                PRIVATE "-std=${_amsl_STANDARD}"
                )

        set_target_properties(${TARGET} PROPERTIES
                XCODE_ATTRIBUTE_MTL_LANGUAGE_REVISION "Metal${CMAKE_MATCH_1}${CMAKE_MATCH_2}"
                )
    endif()
endfunction()

function(target_embed_metal_shader_libraries TARGET)
    cmake_parse_arguments(PARSE_ARGV 1 _temsl
            ""
            ""
            ""
            )

    if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.28 AND ${CMAKE_GENERATOR} STREQUAL "Xcode")
        set_target_properties(${TARGET} PROPERTIES
                XCODE_EMBED_RESOURCES "${_temsl_UNPARSED_ARGUMENTS}"
                )
    else()
        foreach(SHADERLIB IN LISTS _temsl_UNPARSED_ARGUMENTS)
            add_dependencies(${TARGET} ${SHADERLIB})
            add_custom_command(TARGET ${TARGET} POST_BUILD
                    COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${SHADERLIB}>" "$<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/Resources/$<TARGET_FILE_NAME:${SHADERLIB}>"
                    VERBATIM
                    )
        endforeach()
    endif()
endfunction()

function(target_metal_shader_libraries TARGET)
    cmake_parse_arguments(PARSE_ARGV 1 _temsl
            ""
            ""
            ""
    )

    foreach(SHADERLIB IN LISTS _temsl_UNPARSED_ARGUMENTS)
        add_dependencies(${TARGET} ${SHADERLIB})
        add_custom_command(TARGET ${TARGET} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${SHADERLIB}>" "${CMAKE_CURRENT_SOURCE_DIR}/Bin/${O2_PLATFORM}/$<TARGET_FILE_NAME:${SHADERLIB}>"
                VERBATIM
        )
    endforeach()
endfunction()

================================================
FILE: CMakeLists.txt
================================================
if(APPLE)
    project(o2 LANGUAGES C CXX OBJC OBJCXX)
else()
    project(o2 LANGUAGES C CXX)
endif()

set(CMAKE_CXX_STANDARD 20)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")

if(APPLE)
    include(CheckLanguage)
    include(MetalShaderSupport)
    check_language(Metal)
    
    if(CMAKE_Metal_COMPILER)
       enable_language(Metal)
    else ()
       message(FATAL_ERROR "Could not find compiler for metal")
    endif()
endif()

# Force off editor and tests for iOS
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
    set(O2_EDITOR OFF CACHE BOOL "" FORCE)
    set(O2_TESTS OFF CACHE BOOL "" FORCE)
endif()

# Force off editor and tests for WebAssembly / Emscripten
if(EMSCRIPTEN)
    set(O2_EDITOR OFF CACHE BOOL "" FORCE)
    set(O2_TESTS OFF CACHE BOOL "" FORCE)
endif()

# Force off editor and tests for Android
if(ANDROID)
    set(O2_EDITOR OFF CACHE BOOL "" FORCE)
    set(O2_TESTS OFF CACHE BOOL "" FORCE)
endif()

# Options
option(O2_SELFPROFILE "Enable profiling o2 benchmark." OFF)
option(O2_EDITOR "Enables o2 editor." ON)
option(O2_ASAN "Enables ASAN (address sanitizer)." OFF)
option(O2_TRACY "Enables Tracy profiling" OFF)
option(O2_MEMORY_ANALYZE "Enables memory analyzing (slows down)" OFF)
option(O2_PLATFORM_INITIALIZATION_ENABLED "Enables platform initialization" ON)
option(O2_ENABLE_LINK_ZLIB "Enables linking zlib library" ON)
option(O2_ENABLE_LINK_LIBPNG "Enables linking libpng library" ON)
option(O2_DISABLE_O2FRAMEWORK_PCH "Disables precompiled headers for o2Framework" OFF)

if(MSVC AND NOT DEFINED O2_MSVC_MP_FLAG)
    set(O2_MSVC_MP_COUNT "" CACHE STRING "MSVC /MP process count; empty uses compiler default, 0 disables /MP")

    if(O2_MSVC_MP_COUNT STREQUAL "0")
        set(O2_MSVC_MP_FLAG "")
    elseif(O2_MSVC_MP_COUNT STREQUAL "")
        set(O2_MSVC_MP_FLAG "/MP")
    else()
        set(O2_MSVC_MP_FLAG "/MP${O2_MSVC_MP_COUNT}")
    endif()
endif()

# Common definitions
set(O2_COMPILE_DEFINITIONS SCRIPTING_BACKEND_JERRYSCRIPT _CRT_SECURE_NO_WARNINGS)

if (EMSCRIPTEN)
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_WASM)
    list(APPEND O2_COMPILE_DEFINITIONS BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED)
elseif (ANDROID)
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_ANDROID)
    list(APPEND O2_COMPILE_DEFINITIONS BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED)
elseif (WIN32)
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_WINDOWS)
elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS")
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_IOS)
    list(APPEND O2_COMPILE_DEFINITIONS BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED)
elseif (APPLE)
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_MAC)
    list(APPEND O2_COMPILE_DEFINITIONS BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED)
elseif (UNIX)
    list(APPEND O2_COMPILE_DEFINITIONS PLATFORM_LINUX)
endif()

if (O2_IS_FILESYSTEM_EXPERIMENTAL)
    list(APPEND O2_COMPILE_DEFINITIONS O2_FILESYSTEM_EXPERIMENTAL)
endif()

if (O2_RENDER_API STREQUAL "gles2")
    list(APPEND O2_COMPILE_DEFINITIONS O2_RENDER_GLES2)
    list(APPEND O2_COMPILE_DEFINITIONS O2_DISABLE_PLATFORM)
endif()

if (O2_SELFPROFILE)
    list(APPEND O2_COMPILE_DEFINITIONS O2_PROFILE_STATS)
endif()

if (O2_EDITOR)
    list(APPEND O2_COMPILE_DEFINITIONS O2_EDITOR_ENABLED)
endif()

if (O2_TRACY)
    list(APPEND O2_COMPILE_DEFINITIONS TRACY_ENABLE)
endif()

if (O2_MEMORY_ANALYZE)
    list(APPEND O2_COMPILE_DEFINITIONS MEMORY_ANALYZE_ENABLE)
endif()

if (O2_PLATFORM_INITIALIZATION_ENABLED)
    list(APPEND O2_COMPILE_DEFINITIONS O2_PLATFORM_INITIALIZATION_ENABLED)
endif()

if (EMSCRIPTEN)
    set(O2_PLATFORM "WebAssembly")
    set(O2_PLATFORM "WebAssembly" PARENT_SCOPE)
elseif (ANDROID)
    set(O2_PLATFORM "Android")
    set(O2_PLATFORM "Android" PARENT_SCOPE)
elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS")
    set(O2_PLATFORM "iOS")
    set(O2_PLATFORM "iOS" PARENT_SCOPE)
elseif (APPLE)
    set(O2_PLATFORM "Mac")
    set(O2_PLATFORM "Mac" PARENT_SCOPE)
elseif (UNIX)
    set(O2_PLATFORM "Linux")
    set(O2_PLATFORM "Linux" PARENT_SCOPE)
elseif (WIN32)
    set(O2_PLATFORM "Windows")
    set(O2_PLATFORM "Windows" PARENT_SCOPE)
else()
    message(FATAL_ERROR "Unknown platform, please set O2_PLATFORM manually")
endif()

set(O2_COMPILE_DEFINITIONS_EXPORT ${O2_COMPILE_DEFINITIONS} PARENT_SCOPE)

# warings and errors
if (MSVC)
    add_compile_options(/W2)   

    if(O2_ASAN)
        add_compile_options(/fsanitize=address)
        add_compile_definitions(_DISABLE_STRING_ANNOTATION _DISABLE_VECTOR_ANNOTATION _DISABLE_ITERATOR_ANNOTATION)
    endif()
else()
    set(O2_C_FLAGS "-Wall -Werror")

    if (EMSCRIPTEN)
        # Emscripten's Clang vintage varies between local dev and CI; tolerate unknown
        # warning flags rather than erroring out, and silence diagnostics that older
        # 3rd-party code in this repo trips on.
        set(O2_C_FLAGS "${O2_C_FLAGS} -Wno-unknown-warning-option -Wno-error=misleading-indentation -Wno-error=enum-enum-conversion -Wno-error=unterminated-string-initialization")
    endif()

    if (ANDROID)
        # NDK 28 Clang rejects unknown -Werror= options entirely, so we keep the
        # list minimal and tolerate unknown warning flags rather than erroring out.
        set(O2_C_FLAGS "${O2_C_FLAGS} -Wno-error=misleading-indentation -Wno-error=enum-enum-conversion -Wno-unknown-warning-option")
    endif()
    
    set(O2_CXX_FLAGS "-Wall -Wno-error=format -Wno-error=format-extra-args -Wno-error=conversion \
                         -Wno-error=incompatible-pointer-types -Wno-error=sign-conversion -Wno-error=pointer-sign \
                         -Wno-error=deprecated -Wno-reorder -Wno-unused-variable -Wno-unused-local-typedef \
                         -Wno-undefined-var-template -Wno-overloaded-virtual -Wno-deprecated-declarations \
                         -Wno-delete-non-abstract-non-virtual-dtor -Wno-unused-but-set-variable \
                         -Wno-inconsistent-missing-override -Wno-shorten-64-to-32 -Wno-switch -Wno-delete-incomplete \
                         -Wno-potentially-evaluated-expression -Wno-deprecated-this-capture -Wno-invalid-offsetof")
    
    set(O2_OBJCXX_FLAGS "-Wall -Wno-error=format -Wno-error=format-extra-args -Wno-error=conversion \
                         -Wno-error=incompatible-pointer-types -Wno-error=sign-conversion -Wno-error=pointer-sign \
                         -Wno-error=deprecated -Wno-reorder -Wno-unused-variable -Wno-unused-local-typedef \
                         -Wno-undefined-var-template -Wno-overloaded-virtual -Wno-deprecated-declarations \
                         -Wno-delete-non-abstract-non-virtual-dtor -Wno-unused-but-set-variable \
                         -Wno-inconsistent-missing-override -Wno-shorten-64-to-32 -Wno-switch -Wno-delete-incomplete \
                         -Wno-potentially-evaluated-expression -Wno-deprecated-this-capture -Wno-invalid-offsetof")

    if (EMSCRIPTEN)
        set(O2_CXX_FLAGS "${O2_CXX_FLAGS} -Wno-unknown-warning-option -Wno-error=missing-template-arg-list-after-template-kw -Wno-error=deprecated-declarations -Wno-error=unused-command-line-argument")
    endif()

    if (ANDROID)
        set(O2_CXX_FLAGS "${O2_CXX_FLAGS} -Wno-error=deprecated-declarations -Wno-error=unused-command-line-argument -Wno-unknown-warning-option")
    endif()

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${O2_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${O2_CXX_FLAGS}")
    set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} ${O2_OBJCXX_FLAGS}")
    
    set(O2_C_FLAGS ${O2_C_FLAGS} PARENT_SCOPE)
    set(O2_CXX_FLAGS ${O2_CXX_FLAGS} PARENT_SCOPE)
    set(O2_OBJCXX_FLAGS ${O2_OBJCXX_FLAGS} PARENT_SCOPE)
endif()

# dependencies
add_subdirectory(Framework/3rdPartyLibs)

# code tool (native host-only — skip when cross-compiling to iOS / WebAssembly / Android)
if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" AND NOT EMSCRIPTEN AND NOT ANDROID)
    add_subdirectory(CodeTool)
endif()

# o2 copy builtin framework assets
add_custom_target(o2CopyBuiltinAssets
                  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/Framework/Assets" 
                                                             "${CMAKE_CURRENT_SOURCE_DIR}/../BuiltAssets/${O2_PLATFORM}/FrameworkData"
                  COMMENT "Copy o2 builtin assets from ${CMAKE_CURRENT_SOURCE_DIR}/Framework/Assets to ${CMAKE_CURRENT_SOURCE_DIR}/../BuiltAssets/${O2_PLATFORM}/FrameworkData"
)

# o2 Framework library
add_library(o2Framework STATIC)

set(o2Framework_SOURCES_DIRS "Framework/Sources/*.h" "Framework/Sources/*.cpp")
if (APPLE)
    list(APPEND o2Framework_SOURCES_DIRS "Framework/Sources/*.mm" "Framework/Sources/*.m")
endif()

file(GLOB_RECURSE o2Framework_SOURCES ${o2Framework_SOURCES_DIRS})

source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${o2Framework_SOURCES})

set(o2Framework_INCLUDES 
        "Framework/Sources"
        "Framework/3rdPartyLibs/rapidjson/include"
        "Framework/3rdPartyLibs/FreeType/include"
        "Framework/3rdPartyLibs/jerryscript/jerry-core/include"
        "Framework/3rdPartyLibs/jerryscript"
        "Framework/3rdPartyLibs/boost/stacktrace/include"
        "Framework/3rdPartyLibs/boost/config/include"
        "Framework/3rdPartyLibs/boost/predef/include"
        "Framework/3rdPartyLibs/boost/core/include"
        "Framework/3rdPartyLibs/boost/container_hash/include"
        "Framework/3rdPartyLibs/boost/winapi/include"
        "Framework/"
)

target_sources(o2Framework PRIVATE ${o2Framework_SOURCES})
target_include_directories(o2Framework PUBLIC ${o2Framework_INCLUDES})
if(NOT O2_DISABLE_O2FRAMEWORK_PCH)
    target_precompile_headers(o2Framework PUBLIC "Framework/Sources/o2/stdafx.h")
endif()
target_compile_definitions(o2Framework PUBLIC ${O2_COMPILE_DEFINITIONS})

target_link_libraries(o2Framework 
    PUBLIC 
        Box2D 
        FreeType 
        pugixml 
        jerry-core 
        jerry-ext 
        jerry-port-default
        spine-cpp
)

if (O2_ENABLE_LINK_LIBPNG)
    target_link_libraries(o2Framework PUBLIC libpng)
endif()

if (O2_ENABLE_LINK_ZLIB)
    target_link_libraries(o2Framework PUBLIC zlib)
endif()

if (O2_TRACY)
    list(APPEND o2Framework_INCLUDES "Framework/3rdPartyLibs/tracy/public")
    target_link_libraries(o2Framework PUBLIC Tracy::TracyClient)
endif()

if (O2_MEMORY_ANALYZE)
    target_link_libraries(o2Framework PUBLIC boost_stacktrace_basic)

    if(WIN32)
        target_link_libraries(o2Framework PUBLIC boost_stacktrace_windbg boost_stacktrace_noop)
    endif()
endif()

if (EMSCRIPTEN)
    target_compile_options(o2Framework PUBLIC "-sUSE_WEBGL2=1" "-sMIN_WEBGL_VERSION=2" "-sMAX_WEBGL_VERSION=2" "-sFULL_ES3=1")
    target_link_options(o2Framework PUBLIC "-sUSE_WEBGL2=1" "-sMIN_WEBGL_VERSION=2" "-sMAX_WEBGL_VERSION=2" "-sFULL_ES3=1")
elseif (ANDROID)
    find_library(ANDROID_EGL_LIB EGL)
    find_library(ANDROID_GLES2_LIB GLESv2)
    find_library(ANDROID_LOG_LIB log)
    find_library(ANDROID_LIB android)
    target_link_libraries(o2Framework
            PRIVATE
                ${ANDROID_EGL_LIB}
                ${ANDROID_GLES2_LIB}
                ${ANDROID_LOG_LIB}
                ${ANDROID_LIB}
    )
elseif (UNIX)
    if (NOT APPLE)
        find_package(X11 REQUIRED)
        target_link_libraries(o2Framework PUBLIC ${X11_LIBRARIES})
    endif()

    if (O2_RENDER_API STREQUAL "gles2")
        list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
        find_package(OpenGLES2 REQUIRED)
        target_link_libraries(o2Framework PRIVATE OpenGLES2::OpenGLES2)
    elseif(NOT APPLE)
        find_package(OpenGL REQUIRED COMPONENTS GLX)
        target_link_libraries(o2Framework PUBLIC OpenGL::GL OpenGL::GLX)
    elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
        find_library(METAL Metal)
        find_library(METALKIT MetalKit)
        find_library(FOUNDATION Foundation)
        find_library(OBJC objc)
        find_library(UIKIT UIKit)

        target_link_libraries(o2Framework
                PRIVATE
                    ${METAL}
                    ${FOUNDATION}
                    ${OBJC}
                    ${METALKIT}
                    ${UIKIT}
        )

        set(METAL_SHADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2/Render/iOS")
        add_subdirectory(${METAL_SHADERS_DIR})

        target_include_directories(o2Framework
                PRIVATE
                ${METAL_SHADERS_DIR}
        )
    else()
        find_library(CORE_GRAPHICS CoreGraphics)
        find_library(METAL Metal)
        find_library(APP_KIT AppKit)
        find_library(METALKIT MetalKit)
        find_library(FOUNDATION Foundation)
        find_library(OBJC objc)
        find_library(APPLICATION_SERVICES ApplicationServices)

        target_link_libraries(o2Framework
                PRIVATE
                    ${CORE_GRAPHICS}
                    ${METAL}
                    ${APP_KIT}
                    ${FOUNDATION}
                    ${OBJC}
                    ${METALKIT}
                    ${APPLICATION_SERVICES}
        )

        set(METAL_SHADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2/Render/Mac")
        add_subdirectory(${METAL_SHADERS_DIR})

        target_include_directories(o2Framework
                PRIVATE
                ${METAL_SHADERS_DIR}
        )
    endif()
endif()

if(WIN32)
    target_link_libraries(o2Framework PRIVATE Shlwapi.lib)
    target_link_libraries(o2Framework PRIVATE opengl32.lib)  
endif()

if (UNIX)
    target_compile_options(o2Framework PRIVATE -Wno-pedantic)
elseif(MSVC)
    target_compile_options(o2Framework PUBLIC ${O2_MSVC_MP_FLAG} "/Zc:__cplusplus" "/bigobj")
    target_sources(o2Framework PRIVATE "Framework/Platforms/Windows/Framework.natvis")
endif()

# Codegen (native host-only — skip under iOS / EMSCRIPTEN / Android; assume codegen was run during native build)
if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" AND NOT EMSCRIPTEN AND NOT ANDROID)
    add_custom_target(o2FrameworkCodegen
                      COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/CodeTool/Bin/o2CodeTool -project o2Framework -sources "${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2"
                      COMMENT "Run CodeTool: ${CMAKE_CURRENT_SOURCE_DIR}/CodeTool/Bin/o2CodeTool -project o2Framework -sources \"${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2\""
    )
    add_dependencies(o2FrameworkCodegen o2CodeTool)
endif()

# dependencies
add_dependencies(o2Framework Box2D jerry-core jerry-ext jerry-port-default FreeType)

if (O2_ENABLE_LINK_LIBPNG)
    add_dependencies(o2Framework libpng)
endif()

add_dependencies(o2Framework o2CopyBuiltinAssets)

if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" AND NOT EMSCRIPTEN AND NOT ANDROID)
    add_dependencies(o2Framework o2CodeTool)
    add_dependencies(o2Framework o2FrameworkCodegen)
endif()

# o2 Editor Library
if (O2_EDITOR)
    add_library(o2Editor STATIC)

    set(o2Editor_SOURCES_DIRS "Editor/Sources/*.cpp" "Editor/Sources/*.h")
    if (APPLE)
        list(APPEND o2Editor_SOURCES_DIRS "Editor/Sources/*.mm" "Editor/Sources/*.m")
    endif()

    file(GLOB_RECURSE o2Framework_SOURCES ${o2Editor_SOURCES_DIRS})

    source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${o2Framework_SOURCES})

    target_sources(o2Editor PRIVATE ${o2Framework_SOURCES})
    target_include_directories(o2Editor 
        PUBLIC 
            "Editor/Sources"
            ${o2Framework_INCLUDES}
    )

    target_precompile_headers(o2Editor PRIVATE "Editor/Sources/o2Editor/stdafx.h")
    target_compile_definitions(o2Editor PUBLIC ${O2_COMPILE_DEFINITIONS})
    target_link_libraries(o2Editor PUBLIC o2Framework)

    if(MSVC)
        target_compile_options(o2Editor PRIVATE ${O2_MSVC_MP_FLAG} "/Zc:__cplusplus" "/bigobj")
    endif()

    # Codegen
    add_custom_target(o2EditorCodegen
                      COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/CodeTool/Bin/o2CodeTool -project o2Editor -sources "${CMAKE_CURRENT_SOURCE_DIR}/Editor/Sources/o2Editor" -parent_projects "${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2/CodeToolCache.xml"
                      COMMENT "Run CodeTool: ${CMAKE_CURRENT_SOURCE_DIR}/CodeTool/Bin/o2CodeTool -project o2Editor -sources \"${CMAKE_CURRENT_SOURCE_DIR}/Editor/Sources/o2Editor\" -parent_projects \"${CMAKE_CURRENT_SOURCE_DIR}/Framework/Sources/o2/CodeToolCache.xml\""
    )
    add_dependencies(o2EditorCodegen o2CodeTool o2FrameworkCodegen)

    add_dependencies(o2Editor o2Framework)
    add_dependencies(o2Editor o2EditorCodegen)
    set_target_properties(o2Editor PROPERTIES FOLDER o2)
    set_target_properties(o2EditorCodegen PROPERTIES FOLDER o2/Codegen)
endif()

# assets build tool (native host-only — skip when cross-compiling to WebAssembly / Android)
if(NOT EMSCRIPTEN AND NOT ANDROID)
    add_subdirectory(AssetsBuildTool)
endif()

# tests
if(O2_TESTS)
    add_subdirectory(Tests)
endif()

# group in IDE
set_target_properties(o2Framework PROPERTIES FOLDER o2)
if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" AND NOT EMSCRIPTEN AND NOT ANDROID)
    set_target_properties(o2AssetsBuilder PROPERTIES FOLDER o2)
    set_target_properties(o2CopyBuiltinAssets PROPERTIES FOLDER o2)
    set_target_properties(o2FrameworkCodegen PROPERTIES FOLDER o2/Codegen)
    set_target_properties(o2CodeTool PROPERTIES FOLDER o2/Codegen)
endif()



================================================
FILE: CodeTool/CMakeLists.txt
================================================
file(GLOB_RECURSE o2CodeTool_SOURCES "Src/*.cpp" "Src/*.h")
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${o2CodeTool_SOURCES})

add_executable(o2CodeTool ${o2CodeTool_SOURCES} ${o2CodeTool_SOURCES})

if(MSVC)
    target_compile_options(o2CodeTool PUBLIC ${O2_MSVC_MP_FLAG} "/Zc:__cplusplus")
elseif (UNIX)
    target_compile_options(o2CodeTool PUBLIC ${DEMO_WARNING_OPTION} -Wno-pedantic)
endif()

set(O2CODE_TOOL_BIN_OUTPUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/Bin")

set_target_properties(o2CodeTool PROPERTIES 
    RUNTIME_OUTPUT_DIRECTORY ${O2CODE_TOOL_BIN_OUTPUTDIR}
    RUNTIME_OUTPUT_DIRECTORY_DEBUG ${O2CODE_TOOL_BIN_OUTPUTDIR}
    RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${O2CODE_TOOL_BIN_OUTPUTDIR}
    RUNTIME_OUTPUT_DIRECTORY_RELEASE ${O2CODE_TOOL_BIN_OUTPUTDIR}
    RUNTIME_OUTPUT_DIRECTORY_RELEASEWITHDEBUGINFO ${O2CODE_TOOL_BIN_OUTPUTDIR}
)       

if(MSVC)
  set_property(TARGET o2CodeTool PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:o2CodeTool>")
endif()

================================================
FILE: CodeTool/Src/CodeTool.cpp
================================================
#include "CodeToolApp.h"


int main(int nargs, char** agrs)
{

    CodeToolApplication app;
    app.SetArguments(agrs, nargs);
    app.Process();

    return 0;
}



================================================
FILE: CodeTool/Src/CodeToolApp.cpp
================================================
#include "CodeToolApp.h"

#include <algorithm>
#include <fstream>
#include <functional> 
#include <iostream>
#include <filesystem>
#include <cstdarg>
#include <cstring>

#undef GetClassName

Timer::Timer()
{
    Reset();
}

void Timer::Reset()
{
    mLastElapsedTime = std::chrono::steady_clock::now();
}

float Timer::GetTime() //TODO maybe unused
{
    using float_sec = std::chrono::duration<float, std::chrono::seconds::period>;
    mLastElapsedTime = std::chrono::steady_clock::now();
    auto res = std::chrono::time_point_cast<float_sec>(mLastElapsedTime);
    return res.time_since_epoch().count();
}

float Timer::GetDeltaTime()
{
    auto curTime = std::chrono::steady_clock::now();
    std::chrono::duration<float> res = curTime - mLastElapsedTime;
    mLastElapsedTime = curTime;
    return res.count();
}

CodeToolApplication::CodeToolApplication()
{}

CodeToolApplication::~CodeToolApplication()
{}

void CodeToolApplication::SetArguments(char** args, int nargs)
{
    auto argsMap = ParseArguments(args, nargs);

    mProjectName = argsMap["project"];
    mSourcesPath = argsMap["sources"];
    mMSVCProjectPath = argsMap["msvs_project"];
    mXCodeProjectPath = argsMap["xcode_project"];
    mNeedReset = argsMap.find("reset") != argsMap.end() || argsMap.find("r") != argsMap.end() || true;
    mVerbose = argsMap.find("verbose") != argsMap.end() || argsMap.find("v") != argsMap.end();

    mCache.parentProjects = Split(argsMap["parent_projects"], ' ');
}

void CodeToolApplication::Process()
{
    Timer t;

    LoadCache();
    UpdateCodeReflection();
    UpdateRegistratorsSource();
    SaveCache();

    UpdateProjectFilesFilter();

    Log("Code reflection generated for %.3f seconds", t.GetDeltaTime());
}

bool CodeToolApplication::mVerbose = true;

void CodeToolApplication::Log(const char* format, ...)
{
    va_list vlist;
    va_start(vlist, format);

    vprintf(format, vlist);

    va_end(vlist);
}

void CodeToolApplication::VerboseLog(const char* format, ...)
{
    if (!mVerbose)
        return;

    va_list vlist;
    va_start(vlist, format);

    vprintf(format, vlist);

    va_end(vlist);
}

map<string, TimeStamp> CodeToolApplication::GetFolderFiles(const string& path)
{
    map<string, TimeStamp> res;

    for (const auto& entry : filesystem::directory_iterator(path))
    {
        if (entry.is_directory())
        {
            auto subFolderFiles = GetFolderFiles(entry.path().string());
            for (const auto& x : subFolderFiles)
            {
                res[x.first] = x.second;
            }
        }
        else
        {
            const string filePath = entry.path().string();
            res[filePath] = GetFileEditedDate(filePath);
        }
    }

    return res;
}

time_t last_write_time_to_time_t(filesystem::file_time_type const& tp)
{
    auto sctp = chrono::time_point_cast<chrono::system_clock::duration>(tp - filesystem::file_time_type::clock::now()
                                                                        + chrono::system_clock::now());
    return chrono::system_clock::to_time_t(sctp);
}

TimeStamp CodeToolApplication::GetFileEditedDate(const string& path)
{
    const filesystem::directory_entry file{ path };

    if (!file.exists())
    {
        return TimeStamp();
    }

    auto const& lwTime = file.last_write_time();
    time_t cftime = last_write_time_to_time_t(lwTime);
    auto const& stLocal = std::localtime(&cftime);
    if (!stLocal)
    {
        return TimeStamp();
    }

    TimeStamp res(stLocal->tm_sec, stLocal->tm_min, stLocal->tm_hour, stLocal->tm_mday, stLocal->tm_mon, stLocal->tm_year);

    return res;
}

map<string, string> CodeToolApplication::ParseArguments(char** args, int nargs)
{
    map<string, string> res;
    string lastArgName = "unnamed";
    for (int i = 0; i < nargs; i++)
    {
        if (args[i][0] == '-')
        {
            lastArgName = args[i] + 1;
            res[lastArgName] = "";
        }
        else
        {
            if (res[lastArgName].empty())
                res[lastArgName] = args[i];
            else
                res[lastArgName] += string(" ") + args[i];
        }
    }

    return res;
}

void CodeToolApplication::WriteFile(const string& path, const string& data) const
{
    ofstream fout;
    fout.open(path.c_str());
    if (!fout.is_open())
        return;

    fout.write(data.c_str(), data.length());

    fout.close();
}

string CodeToolApplication::ReadFile(const string& path) const
{
    ifstream fin;
    fin.open(path.c_str());
    if (!fin.is_open())
        return string();

    string res = string((istreambuf_iterator<char>(fin)), istreambuf_iterator<char>());

    fin.close();

    return res;
}

bool CodeToolApplication::IsFileExist(const string& path) const
{
    filesystem::directory_entry entry{ path };
    if (entry.is_directory()) {
        return false;
    }

    return entry.exists();
}

string CodeToolApplication::GetPathWithoutDirectories(const string& path)
{
    filesystem::path p{ path };
    return p.filename().string();
}

string CodeToolApplication::GetParentPath(const string& path)
{
    filesystem::path p{ path };
    return p.parent_path().string();
}

string CodeToolApplication::GetRelativePath(const string& from, const string& to)
{
    return filesystem::relative(to, from).string();
}

void CodeToolApplication::LoadCache()
{
    if (mNeedReset)
    {
        for (auto& file : mCache.parentProjects)
            mCache.Load(file, false);

        return;
    }

    mCache.Load(mSourcesPath + "/" + mCachePath);
}

void CodeToolApplication::SaveCache()
{
    mCache.Save(mSourcesPath + "/" + mCachePath);
}


void CodeToolApplication::UpdateProjectFilesFilter()
{
    if (mMSVCProjectPath.empty())
        return;

    pugi::xml_document doc;
    doc.load_file((mMSVCProjectPath + ".filters").c_str());

    pugi::xml_node projectNode = doc.child("Project");
    if (!projectNode)
        return;

    string MSVCProjectDir = GetParentPath(mMSVCProjectPath);

    vector<string> filters;
    vector<string> files;
    for (auto file : mSourceFiles)
    {
        string filePath = file.first;

        if (!EndsWith(filePath, ".h") && !EndsWith(filePath, ".cpp"))
            continue;

        for (int i = 0; i < filePath.length(); i++)
        {
            if (filePath[i] == '/')
                filePath[i] = '\\';
        }

        string dir = GetRelativePath(MSVCProjectDir, GetParentPath(filePath));

        while (!dir.empty() && dir[0] == '.')
        {
            auto slashPos = std::min(dir.find('/'), dir.find('\\'));
            if (slashPos != string::npos)
                dir.erase(0, slashPos + 1);
            else
                break;
        }

        if (dir.find("OSX") != string::npos)
            continue;

        if (dir.find("Android") != string::npos)
            continue;

        while (!dir.empty() && find(filters.begin(), filters.end(), dir) == filters.end())
        {
            filters.push_back(dir);
            dir = GetParentPath(dir);
        }

        string relativePath = GetRelativePath(MSVCProjectDir, filePath);

        if (relativePath.length() > 1 && relativePath[0] == '.' && relativePath[1] == '\\')
            relativePath.erase(0, 2);

        files.push_back(relativePath);
    }

    vector<pugi::xml_node> oldFiltersNodes, ignoringGroups;
    vector<string> oldFilters, oldFiles, newFilters, newFiles;

    bool projectStructureChanged = false;
    for (auto groupNode : projectNode)
    {
        for (auto itemNode : groupNode)
        {
            if ((string)"Filter" == itemNode.name())
            {
                string filter = itemNode.attribute("Include").as_string();
                if (find(filters.begin(), filters.end(), filter) != filters.end())
                {
                    oldFiltersNodes.push_back(itemNode);
                    oldFilters.push_back(filter);
                }
                else
                {
                    VerboseLog("Project changed: %s - removed filter\n", filter.c_str());
                    projectStructureChanged = true;
                }
            }
            else if ((string)"ClInclude" == itemNode.name() || (string)"ClCompile" == itemNode.name())
            {
                string file = itemNode.attribute("Include").as_string();
                if (find(files.begin(), files.end(), file) != files.end())
                    oldFiles.push_back(file);
                else
                {
                    VerboseLog("Project changed: %s - removed file\n", file.c_str());
                    projectStructureChanged = true;
                }
            }
            else
            {
                ignoringGroups.push_back(groupNode);
                break;
            }
        }
    }

    for (auto& filter : filters)
        if (find(oldFilters.begin(), oldFilters.end(), filter) == oldFilters.end())
            newFilters.push_back(filter);

    for (auto& file : files)
        if (find(oldFiles.begin(), oldFiles.end(), file) == oldFiles.end())
            newFiles.push_back(file);

    projectStructureChanged = projectStructureChanged || !newFiles.empty() || !newFilters.empty() || mNeedReset;

    if (!projectStructureChanged)
    {
        VerboseLog("Project wasn't changed\n");
        return;
    }

    VerboseLog("Project changed. New files:%i, new filters:%i, need reset:%s\n", newFiles.size(), newFilters.size(),
               (mNeedReset ? "true" : "false"));

    // generate new filters file
    pugi::xml_document newDoc;
    pugi::xml_node newProjectNode = newDoc.append_child("Project");
    newProjectNode.append_attribute("ToolsVersion") = projectNode.attribute("ToolsVersion").as_string();
    newProjectNode.append_attribute("xmlns") = projectNode.attribute("xmlns").as_string();

    // filters
    pugi::xml_node filtersNode = newProjectNode.append_child("ItemGroup");
    for (auto& oldFilterNode : oldFiltersNodes)
        filtersNode.append_copy(oldFilterNode);

    for (auto& newFilter : newFilters)
        filtersNode.append_child("Filter").append_attribute("Include") = newFilter.c_str();

    // includes
    pugi::xml_node headersNode = newProjectNode.append_child("ItemGroup");
    for (auto& file : files)
    {
        if (EndsWith(file, ".h"))
        {
            auto node = headersNode.append_child("ClInclude");
            node.append_attribute("Include") = file.c_str();

            auto slashPos = file.find('\\');
            if (slashPos != string::npos)
            {
                while (file[slashPos + 1] == '.')
                    slashPos = file.find('\\', slashPos + 1);

                string filter = GetParentPath(file.substr(slashPos + 1));
                if (!filter.empty())
                    node.append_child("Filter").append_child(pugi::node_pcdata).set_value(filter.c_str());
            }
        }
    }

    // sources
    pugi::xml_node sourcesNode = newProjectNode.append_child("ItemGroup");
    for (auto& file : files)
    {
        if (EndsWith(file, ".cpp"))
        {
            auto node = sourcesNode.append_child("ClCompile");
            node.append_attribute("Include") = file.c_str();

            auto slashPos = file.find('\\');
            if (slashPos != string::npos)
            {
                while (file[slashPos + 1] == '.')
                    slashPos = file.find('\\', slashPos + 1);

                string filter = GetParentPath(file.substr(slashPos + 1));
                if (!filter.empty())
                    node.append_child("Filter").append_child(pugi::node_pcdata).set_value(filter.c_str());
            }
        }
    }

    // ignored
    for (auto& x : ignoringGroups)
        newProjectNode.append_copy(x);

    newDoc.save_file((mMSVCProjectPath + ".filters").c_str());

    //and update project
    pugi::xml_document projectDoc, newProjectDoc;
    projectDoc.load_file(mMSVCProjectPath.c_str());

    projectNode = projectDoc.child("Project");
    newProjectNode = newProjectDoc.append_child("Project");
    newProjectNode.append_attribute("DefaultTargets") = projectNode.attribute("DefaultTargets").as_string();
    newProjectNode.append_attribute("ToolsVersion") = projectNode.attribute("ToolsVersion").as_string();
    newProjectNode.append_attribute("xmlns") = projectNode.attribute("xmlns").as_string();

    for (auto node : projectNode)
    {
        if ((string)"ItemGroup" != node.name() || node.attribute("Label") || (!node.child("ClInclude") && !node.child("ClCompile")))
            newProjectNode.append_copy(node);
    }

    // headers
    pugi::xml_node newProjectHeadersGroup = newProjectNode.append_child("ItemGroup");
    for (auto& file : files)
    {
        if (EndsWith(file, ".h"))
            newProjectHeadersGroup.append_child("ClInclude").append_attribute("Include") = file.c_str();
    }

    // sources
    pugi::xml_node newProjectSourcesGroup = newProjectNode.append_child("ItemGroup");
    for (auto& file : files)
    {
        if (EndsWith(file, ".cpp"))
        {
            auto clCompile = newProjectSourcesGroup.append_child("ClCompile");
            clCompile.append_attribute("Include") = file.c_str();

            if (EndsWith(file, "stdafx.cpp"))
            {
                auto headerDebug = clCompile.append_child("PrecompiledHeader");
                headerDebug.append_child(pugi::node_pcdata).set_value("Create");

                auto headerRelease = clCompile.append_child("PrecompiledHeader");
                headerRelease.append_child(pugi::node_pcdata).set_value("Create");
            }
        }
    }

    newProjectDoc.save_file(mMSVCProjectPath.c_str());
}

void CodeToolApplication::UpdateCodeReflection()
{
    mParser = new CppSyntaxParser();

    // get all files in sources path
    mSourceFiles = GetFolderFiles(mSourcesPath);

    // parse all headers
    for (auto fileInfo : mSourceFiles)
    {
        if (!EndsWith(fileInfo.first, ".h"))
            continue;

        ParseSource(fileInfo.first, fileInfo.second);
    }

    // remove old sources from cache
    for (auto parseFileInfo = mCache.originalFiles.begin(); parseFileInfo != mCache.originalFiles.end();)
    {
        auto fnd = find_if(mSourceFiles.begin(), mSourceFiles.end(), [&](auto x) { return x.first == (*parseFileInfo)->GetPath(); });
        if (fnd == mSourceFiles.end())
        {
            delete* parseFileInfo;
            parseFileInfo = mCache.originalFiles.erase(parseFileInfo);
            mCache.files.erase(find(mCache.files.begin(), mCache.files.end(), *parseFileInfo));
        }
        else ++parseFileInfo;
    }

    mCache.UpdateGlobalNamespace();

    // update reflection
    for (auto file : mParsedFiles)
        UpdateSourceReflection(file);

    // collect enum registrator ids from all .cpp files, including hand-written
    // ENUM_META in @CODETOOLIGNORE sources that don't pass through the metas pipeline
    CollectEnumRegistrators();

    // collect template-class registrator ids from orphan .cpp files (no DECLARE_CLASS
    // in the same TU to anchor it against linker pruning)
    CollectTemplateClassManualRegistrators();

    delete mParser;
}

void CodeToolApplication::CollectEnumRegistrators()
{
    mEnumRegistratorsList.clear();

    for (auto& fileInfo : mSourceFiles)
    {
        const string& path = fileInfo.first;
        if (!EndsWith(path, ".cpp"))
            continue;

        string data = ReadFile(path);

        size_t pos = 0;
        while ((pos = data.find("ENUM_META(", pos)) != string::npos)
        {
            size_t start = pos + strlen("ENUM_META(");
            size_t end = data.find(')', start);
            if (end == string::npos)
                break;

            string args = data.substr(start, end - start);
            size_t comma = args.find(',');
            if (comma == string::npos)
            {
                pos = end + 1;
                continue;
            }

            string id = args.substr(comma + 1);
            // trim whitespace
            size_t first = id.find_first_not_of(" \t\n\r");
            size_t last = id.find_last_not_of(" \t\n\r");
            if (first == string::npos)
            {
                pos = end + 1;
                continue;
            }
            id = id.substr(first, last - first + 1);

            if (find(mEnumRegistratorsList.begin(), mEnumRegistratorsList.end(), id) == mEnumRegistratorsList.end())
                mEnumRegistratorsList.push_back(id);

            pos = end + 1;
        }
    }
}

void CodeToolApplication::CollectTemplateClassManualRegistrators()
{
    mTemplateClassManualRegistratorsList.clear();

    const string needle = "DECLARE_TEMPLATE_CLASS_MANUAL_ID(";

    for (auto& fileInfo : mSourceFiles)
    {
        const string& path = fileInfo.first;
        if (!EndsWith(path, ".cpp"))
            continue;

        string data = ReadFile(path);

        size_t pos = 0;
        while ((pos = data.find(needle, pos)) != string::npos)
        {
            size_t start = pos + needle.length();

            // scan forward tracking template-angle nesting to find the top-level comma
            int angle = 0;
            size_t commaPos = string::npos;
            size_t endPos = string::npos;
            for (size_t i = start; i < data.size(); ++i)
            {
                char c = data[i];
                if (c == '<') ++angle;
                else if (c == '>') --angle;
                else if (c == ',' && angle == 0)
                {
                    commaPos = i;
                }
                else if (c == ')' && angle == 0)
                {
                    endPos = i;
                    break;
                }
            }

            if (commaPos == string::npos || endPos == string::npos)
                break;

            string id = data.substr(commaPos + 1, endPos - commaPos - 1);
            size_t first = id.find_first_not_of(" \t\n\r");
            size_t last = id.find_last_not_of(" \t\n\r");
            if (first == string::npos)
            {
                pos = endPos + 1;
                continue;
            }
            id = id.substr(first, last - first + 1);

            if (find(mTemplateClassManualRegistratorsList.begin(), mTemplateClassManualRegistratorsList.end(), id) == mTemplateClassManualRegistratorsList.end())
                mTemplateClassManualRegistratorsList.push_back(id);

            pos = endPos + 1;
        }
    }
}

void CodeToolApplication::UpdateRegistratorsSource()
{
    string registratorSourceFileName = mProjectName + ".cpp";
    string registratorSourcePath = mSourcesPath + "/" + registratorSourceFileName;

    string fileData;

    for (auto& regi : mEnumRegistratorsList)
        fileData += "extern void __RegisterEnum__" + regi + "();\n";

    for (auto& regi : mTemplateClassManualRegistratorsList)
        fileData += "extern void __RegisterTemplateClass__" + regi + "();\n";

    for (auto& regi : mRegistatorsList)
        fileData += "extern void __RegisterClass__" + regi + "();\n";

    fileData += "\n\n";

    fileData += "extern void InitializeTypes" + mProjectName + "()\n{\n";

    for (auto& regi : mEnumRegistratorsList)
        fileData += "    __RegisterEnum__" + regi + "();\n";

    for (auto& regi : mTemplateClassManualRegistratorsList)
        fileData += "    __RegisterTemplateClass__" + regi + "();\n";

    for (auto& regi : mRegistatorsList)
        fileData += "    __RegisterClass__" + regi + "();\n";

    fileData += "}";

    string oldFileData = ReadFile(registratorSourcePath);

    if (oldFileData != fileData)
        WriteFile(registratorSourcePath, fileData);
}

void CodeToolApplication::ParseSource(const string& path, const TimeStamp& editDate)
{
    // check edit date
    for (auto cacheFile : mCache.originalFiles)
    {
        if (path == cacheFile->GetPath())
        {
            if (editDate == cacheFile->GetLastEditedDate())
                return;

            delete cacheFile;
            mCache.originalFiles.erase(find(mCache.originalFiles.begin(), mCache.originalFiles.end(), cacheFile));
            mCache.files.erase(find(mCache.files.begin(), mCache.files.end(), cacheFile));

            break;
        }
    }

    // parse source
    SyntaxFile* syntaxFile = new SyntaxFile();
    mParser->ParseFile(*syntaxFile, path, editDate);
    mParsedFiles.push_back(syntaxFile);

    mCache.originalFiles.push_back(syntaxFile);
    mCache.files.push_back(syntaxFile);

    VerboseLog("Parsed %s\n", path.c_str());
}

void CodeToolApplication::UpdateSourceReflection(SyntaxFile* file)
{
    string cppSource, cppSourceInitial;
    bool cppLoaded = false;

    string hSource = file->GetData();

    if (hSource.find("@CODETOOLIGNORE") != string::npos)
        return;

    bool hasHeaderMeta = false;
    bool hasSourceMeta = false;

    RemoveMetas(hSource, "META_TEMPLATES(", "END_META;");
    RemoveMetas(hSource, "CLASS_BASES_META(", "END_META;");
    RemoveMetas(hSource, "CLASS_FIELDS_META(", "END_META;");
    RemoveMetas(hSource, "CLASS_METHODS_META(", "END_META;");
    RemoveMetas(hSource, "DECLARE_CLASS(", ");", false);
    RemoveMetas(hSource, "PRE_ENUM_META(", ");", false);
    RemoveMetas(hSource, "// --- META ---", "// --- END META ---");

    string cppSourcePath = file->GetPath().substr(0, file->GetPath().rfind('.')) + ".cpp";

    SyntaxClass* baseObjectClass = (SyntaxClass*)(mCache.FindSection("o2::IObject"));

    auto checkCppLoad = [&]()
    {
        if (!cppLoaded)
        {
            if (IsFileExist(cppSourcePath))
            {
                cppSource = ReadFile(cppSourcePath);
                cppSourceInitial = cppSource;
                RemoveMetas(cppSource, "ENUM_META(", "END_ENUM_META;");
                RemoveMetas(cppSource, "ENUM_META_(", "END_ENUM_META;");
                RemoveMetas(cppSource, "CLASS_META(", "END_META;");
                RemoveMetas(cppSource, "CLASS_TEMPLATE_META(", "END_META;");
                RemoveMetas(cppSource, "CLASS_BASES_META(", "END_META;");
                RemoveMetas(cppSource, "CLASS_FIELDS_META(", "END_META;");
                RemoveMetas(cppSource, "CLASS_METHODS_META(", "END_META;");
                RemoveMetas(cppSource, "DECLARE_CLASS(", ");", false);
                RemoveMetas(cppSource, "PRE_ENUM_META(", ");", false);
                RemoveMetas(cppSource, "// --- META ---", "// --- END META ---");
            }
            else cppSource = "#include \"" + GetPathWithoutDirectories(file->GetPath()) + "\"\n\n";

            cppLoaded = true;
        }
    };

    // Enums
    SyntaxEnumsVec allEnums = file->GetGlobalNamespace()->GetAllEnums();
    SyntaxEnumsVec metaEnums;

    for (auto enm : allEnums)
    {
        auto owner = enm->GetOwnerSyntaxSection();
        if (owner && owner->IsClass() && ((SyntaxClass*)owner)->IsTemplate())
            continue;

        // Skip non-public enums inside classes (they can't be accessed from outside)
        if (owner && owner->IsClass() && enm->GetClassSection() != SyntaxProtectionSection::Public)
            continue;

        metaEnums.push_back(enm);
    }

    if (!metaEnums.empty())
        checkCppLoad();

    for (auto enm : metaEnums)
    {
        AddBeginMeta(hasSourceMeta, cppSource);
        cppSource += GetEnumMeta(enm);

        AddBeginMeta(hasHeaderMeta, hSource);
        hSource += GetEnumPreMeta(enm);

        VerboseLog("Generated meta for enum:%s\n", enm->GetFullName().c_str());
    }

    // Classes
    auto classes = file->GetGlobalNamespace()->GetAllClasses();

    for (auto cls : classes)
    {
        bool hasIObject = std::find_if(cls->GetFunctions().begin(), cls->GetFunctions().end(),
                                       [](SyntaxFunction* x) { return x->GetName() == "IOBJECT" || x->GetName() == "SERIALIZABLE" || x->GetName() == "ASSET_TYPE"; }) != cls->GetFunctions().end();

        if ((!mCache.IsClassBasedOn(cls, baseObjectClass) && !cls->IsMetaClass()) || !hasIObject || cls == baseObjectClass)
            continue;

        if (!cls->IsTemplate())
        {
            checkCppLoad();

            AddBeginMeta(hasSourceMeta, cppSource);
            cppSource += GetClassDeclaration(cls);
        }

        AddBeginMeta(hasHeaderMeta, hSource);
        hSource += GetClassMeta(cls);

        VerboseLog("Generated meta for class:%s\n", cls->GetFullName().c_str());
    }

    AddEndMeta(hasSourceMeta, cppSource);
    AddEndMeta(hasHeaderMeta, hSource);

    // Write
    if (cppLoaded && cppSource != cppSourceInitial)
        WriteFile(cppSourcePath, cppSource);

    if (hSource != file->GetData())
    {
        WriteFile(file->GetPath(), hSource);
        file->mLastEditedDate = GetFileEditedDate(file->GetPath());
    }

    VerboseLog("Reflection generated for %s\n", file->GetPath().c_str());
}

void CodeToolApplication::AddBeginMeta(bool& hasMeta, string& res)
{
    if (!hasMeta)
        res += "// --- META ---\n";

    hasMeta = true;
}

void CodeToolApplication::AddEndMeta(bool hasMeta, string& res)
{
    if (hasMeta)
        res += "// --- END META ---\n";
}

string CodeToolApplication::GetClassDeclaration(SyntaxClass* cls)
{
    string res = "\n";

    string nspace;
    int nspaceDelimer = (int)cls->GetFullName().rfind("::");
    if (nspaceDelimer != cls->GetFullName().npos)
        nspace = cls->GetFullName().substr(0, nspaceDelimer);

    if (cls->GetDefine())
        res += "#if " + cls->GetDefine()->GetDefinition() + "\n";

    string className = GetClassNormalizedTemplates(cls->GetFullName(), nspace);

    string classRegisterId = className;
    for (int i = 0; i < classRegisterId.length(); i++)
    {
        auto& c = classRegisterId[i];
        if (c == '<' || c == '>' || c == ':')
            c = '_';
    }

    mRegistatorsList.push_back(classRegisterId);

    res += "DECLARE_CLASS(" + className + ", " + classRegisterId + ");\n";

    if (cls->GetDefine())
        res += "#endif\n";

    return res;
}

string CodeToolApplication::GetClassMeta(SyntaxClass* cls)
{
    string res = "\n";
    res.reserve(cls->GetData().length() * 2);

    string nspace;
    int nspaceDelimer = (int)cls->GetFullName().rfind("::");
    if (nspaceDelimer != cls->GetFullName().npos)
        nspace = cls->GetFullName().substr(0, nspaceDelimer);

    string classDef;
    string templates;

    if (!cls->IsTemplate())
        classDef = GetClassNormalizedTemplates(cls->GetFullName(), nspace);
    else
        AggregateTemplates(cls, templates, classDef);

    // defines
    if (cls->GetDefine())
        res += "#if " + cls->GetDefine()->GetDefinition() + "\n";

    // base classes
    res += templates;
    res += "CLASS_BASES_META(" + classDef + ")\n{\n";

    int typedefs = 0;
    for (auto x : cls->GetBaseClasses())
    {
        auto classInfo = mCache.FindSection(x.GetClassName(), nspace, false);
        auto className = classInfo ? classInfo->GetFullName() : x.GetClassName();
        if (className.find(',') != string::npos)
        {
            typedefs++;
            auto newClassName = string("_tmp") + to_string(typedefs);
            res += string("    typedef ") + className + ' ' + newClassName + ";\n";
            className = newClassName;
        }

        res += string("    BASE_CLASS(") + className + +");\n";
    }
    res += "}\nEND_META;\n";

    // fields
    res += templates;
    res += "CLASS_FIELDS_META(" + classDef + ")\n{\n";

    SyntaxDefineIf* currentIf = nullptr;

    for (auto variable : cls->GetVariables())
    {
        if (variable->IsStatic() || variable->GetName().empty())
            continue;

        // try search comment
        SyntaxComment* synComment = cls->FindCommentNearLine(variable->GetLine());

        if (synComment) {
            string ignore{ "@IGNORE" };
            auto fnd = synComment->GetData().find(ignore);
            if (fnd != string::npos)
            {
                auto nextSymbol = synComment->GetData()[fnd + ignore.size()];
                if (nextSymbol == ' ' || nextSymbol == '\t' || nextSymbol == '\n' || nextSymbol == '\0')
                    continue;
            }
        }

        CheckIfDefines(variable, currentIf, res);

        res += "    FIELD()";

        if (variable->GetClassSection() == SyntaxProtectionSection::Public)
            res += ".PUBLIC()";
        else if (variable->GetClassSection() == SyntaxProtectionSection::Private)
            res += ".PRIVATE()";
        else if (variable->GetClassSection() == SyntaxProtectionSection::Protected)
            res += ".PROTECTED()";

        res += GetAttributes(cls, variable->GetLine(), synComment);

        if (!variable->GetDefaultValue().empty() && variable->GetDefaultValue().find("this") == string::npos)
            res += ".DEFAULT_VALUE(" + variable->GetDefaultValue() + ")";

        res += ".NAME(" + variable->GetName() + ");\n";

    }

    CompleteIfDefines(currentIf, res);
    res += "}\nEND_META;\n";

    // functions
    res += templates;
    res += "CLASS_METHODS_META(" + classDef + ")\n{\n";

    int supportingTypedefsPos = (int)res.length();
    vector<string> supportingTypedefs;

    bool firstFunction = true;
    for (auto function : cls->GetFunctions())
    {
        if (!IsFunctionReflectable(function, cls))
            continue;

        // try search comment
        SyntaxComment* synComment = cls->FindCommentNearLine(function->GetLine());

        if (IsIgnoreComment(synComment))
            continue;

        if (firstFunction)
        {
            firstFunction = false;
            res += "\n";
        }

        CheckIfDefines(function, currentIf, res);

        res += "    FUNCTION()";

        if (function->GetClassSection() == SyntaxProtectionSection::Public)
            res += ".PUBLIC()";
        else if (function->GetClassSection() == SyntaxProtectionSection::Private)
            res += ".PRIVATE()";
        else if (function->GetClassSection() == SyntaxProtectionSection::Protected)
            res += ".PROTECTED()";

        res += GetAttributes(cls, function->GetLine(), synComment);

        bool isConstructor = StartsWith(cls->GetName(), function->GetName());

        if (function->IsStatic())
            res += ".SIGNATURE_STATIC(";
        else if (isConstructor)
            res += ".CONSTRUCTOR(";
        else
            res += ".SIGNATURE(";

        if (!isConstructor)
        {
            auto returnTypeName = (function->GetReturnType().IsConstant() ? "const " : "") + function->GetReturnType().GetName();

            if (returnTypeName.find(',') != returnTypeName.npos)
            {
                supportingTypedefs.push_back(returnTypeName);
                returnTypeName = (string)"_tmp" + to_string((int)supportingTypedefs.size());
            }

            res += returnTypeName;
            res += string(", ") + function->GetName();
        }

        bool first = isConstructor;
        for (auto param : function->GetParameters())
        {
            string parameterName = (param->GetVariableType().IsConstant() ? "const " : "") + param->GetVariableType().GetName();

            if (parameterName.find(',') != parameterName.npos)
            {
                supportingTypedefs.push_back(parameterName);
                parameterName = string("_tmp") + to_string((int)supportingTypedefs.size());
            }

            if (!first)
                res += string(", ");
            else
                first = false;

            res += parameterName;
        }

        res += ");\n";
    }

    CompleteIfDefines(currentIf, res);

    // supporting typedefs
    if (!supportingTypedefs.empty())
    {
        string supportingTypedefsStr = "\n";
        for (int i = 0; i < supportingTypedefs.size(); i++)
            supportingTypedefsStr += (string)"    typedef " + supportingTypedefs[i] + " _tmp" + to_string(i + 1) + ";\n";

        res.insert(supportingTypedefsPos, supportingTypedefsStr);
    }

    res += "}\nEND_META;\n";

    if (cls->GetDefine())
        res += "#endif\n";

    return res;
}

bool CodeToolApplication::IsIgnoreComment(SyntaxComment* synComment)
{
    if (synComment) {
        auto fnd = synComment->GetData().find("@IGNORE");
        if (fnd != string::npos)
        {
            auto nextSymbol = synComment->GetData()[fnd + strlen("@IGNORE")];
            if (nextSymbol == ' ' || nextSymbol == '\t' || nextSymbol == '\n' || nextSymbol == '\0')
                return true;
        }
    }

    return false;
}

void CodeToolApplication::CheckIfDefines(ISyntaxExpression* item, SyntaxDefineIf*& prevDefine, string& data)
{
    if (item->GetDefine() != prevDefine)
    {
        if (prevDefine)
            data += "#endif\n";

        if (item->GetDefine())
            data += "#if " + item->GetDefine()->GetDefinition() + "\n";

        prevDefine = item->GetDefine();
    }
}

void CodeToolApplication::CompleteIfDefines(SyntaxDefineIf*& prevDefine, string& data)
{
    if (prevDefine)
        data += "#endif\n";

    prevDefine = nullptr;
}

string CodeToolApplication::GetAttributes(SyntaxClass* cls, int line, SyntaxComment* synComment)
{
    string attributes;

    SyntaxAttributes* synAttributes = nullptr;
    for (auto attr : cls->GetAttributes())
    {
        if (attr->GetLine() == line - 1)
        {
            synAttributes = attr;
            break;
        }
    }

    if (synAttributes)
    {
        for (auto& attributeEntry : synAttributes->GetAttributesList())
        {
            SyntaxClass* attributeClass = dynamic_cast<SyntaxClass*>(mCache.FindSection(attributeEntry, cls));
            if (attributeClass)
            {
                if (!attributeClass->GetAttributeShortDef().empty())
                    attributes += string(".") + attributeClass->GetAttributeShortDef();
                else
                    attributes += string(".ATTRIBUTE(") + attributeClass->GetFullName() + ")";
            }
            else attributes += string(".ATTRIBUTE(") + attributeEntry + ")";
        }
    }

    if (synComment)
    {
        for (auto attributeClass : mCache.attributes)
        {
            auto fnd = synComment->GetData().find(attributeClass->GetAttributeCommentDef());
            if (!attributeClass->GetAttributeCommentDef().empty() && fnd != string::npos)
            {
                auto nextSymbol = synComment->GetData()[fnd + attributeClass->GetAttributeCommentDef().length()];
                if ((nextSymbol == ' ' || nextSymbol == '\t' || nextSymbol == '\n' || nextSymbol == '\0' || nextSymbol == '(') && synComment->GetData()[fnd - 1] == '@')
                {
                    string parameters = "()";
                    auto parametersBegin = fnd + attributeClass->GetAttributeCommentDef().length();
                    if (synComment->GetData()[parametersBegin] == '(')
                    {
                        auto parametersEnd = synComment->GetData().find(')', parametersBegin) + 1;
                        parameters = synComment->GetData().substr(parametersBegin, parametersEnd - parametersBegin);
                    }

                    if (!attributeClass->GetAttributeShortDef().empty())
                        attributes += string(".") + attributeClass->GetAttributeShortDef() + parameters;
                    else
                        attributes += string(".ATTRIBUTE(") + attributeClass->GetFullName() + parameters + ")";
                }
            }
        }
    }

    return attributes;
}

string CodeToolApplication::GetEnumMeta(SyntaxEnum* enm)
{
    string res;
    res.reserve(enm->GetEntries().size() * 15);

    string enumFullName = enm->GetFullName();

    string enumRegisterId = enumFullName;
    for (int i = 0; i < enumRegisterId.length(); i++)
    {
        auto& c = enumRegisterId[i];
        if (c == '<' || c == '>' || c == ':')
            c = '_';
    }

    res += "\nENUM_META(" + enumFullName + ", " + enumRegisterId + ")\n{\n";

    for (auto e : enm->GetEntries())
    {
        if (!e.first.empty())  // Skip empty enum entry names
            res += "    ENUM_ENTRY(" + e.first + ");\n";
    }

    res += "}\nEND_ENUM_META;\n";

    return res;
}

string CodeToolApplication::GetEnumPreMeta(SyntaxEnum* enm)
{
    string res = "\nPRE_ENUM_META(" + enm->GetFullName() + ");\n";
    return res;
}

void RemoveSubstrs(string& s, string const& p)
{
    string::size_type n = p.length();
    for (string::size_type i = s.find(p); i != string::npos; i = s.find(p))
        s.erase(i, n);
}

void CodeToolApplication::AggregateTemplates(SyntaxSection* sec, string& templates, string& fullName)
{
    if (sec->GetParentSection())
        AggregateTemplates(sec->GetParentSection(), templates, fullName);

    if (fullName.empty())
        fullName = sec->GetName();
    else
        fullName += "::" + sec->GetName();

    if (sec->IsClass())
    {
        SyntaxClass* cls = dynamic_cast<SyntaxClass*>(sec);
        if (!cls->GetTemplateParameters().empty())
        {
            templates += "META_TEMPLATES(" + cls->GetTemplateParameters() + ")\n";

            string classTemplates = cls->GetTemplateParameters();
            RemoveSubstrs(classTemplates, (std::string)"typename ");

            fullName += "<" + classTemplates + ">";
        }
    }
}

string CodeToolApplication::GetClassNormalizedTemplates(const string& name, const string& nspace)
{
    string fullName;
    int nameLenght = (int)name.length();
    int fnd = 0;
    int lastFnd = fnd;
    while (fnd >= 0)
    {
        lastFnd = fnd;
        fnd = (int)name.find('<', fnd);

        if (fnd == name.npos)
            break;

        int begin = fnd + 1;
        int braces = 0, trBraces = 0, sqBraces = 0;
        for (bool stop = false; !stop && fnd < nameLenght; fnd++)
        {
            switch (name[fnd])
            {
            case '(': braces++; break;
            case ')': braces--; break;
            case '[': sqBraces++; break;
            case ']': sqBraces--; break;
            case '<': trBraces++; break;
            case '>':
            trBraces--;
            if (trBraces == 0 && braces == 0 && sqBraces == 0)
            {
                stop = true;
                fnd--;
            }
            break;
            }
        }

        string templateParamsStr = name.substr(begin, fnd - begin);
        vector<string> templateParams = Split(templateParamsStr, ',');

        fullName += name.substr(lastFnd, begin - lastFnd);
        bool firstParam = true;
        for (auto& templateParam : templateParams)
        {
            Trim(templateParam);
            string typename_str{ "typename " };
            if (StartsWith(templateParam, typename_str))
                templateParam.erase(0, typename_str.size());

            if (!firstParam)
                fullName += ", ";
            else
                firstParam = false;

            auto classInfo = mCache.FindSection(templateParam, nspace);
            fullName += classInfo ? classInfo->GetFullName() : templateParam;
        }
    }

    fullName += name.substr(lastFnd);
    return fullName;
}

void CodeToolApplication::RemoveMetas(string& data, const char* keyword, const char* endword,
                                      bool allowMultiline /*= true*/)
{
    auto isSkipingChar = [](char x) { return x == '\n' || x == '\r' || x == '\t' || x == '\0' || x == ' '; };

    auto caret = data.find(keyword);
    while (caret != string::npos)
    {
        auto end = data.find(endword, caret);
        if (end == string::npos)
            break;

        while (caret > 0 && isSkipingChar(data[caret - 1]))
            caret--;

        if (caret > 0 && isSkipingChar(data[caret]))
            caret--;

        if (!allowMultiline)
        {
            string keyword_str{ keyword };
            auto newLinePos = data.find("\n", caret + keyword_str.size());
            if (newLinePos != string::npos && newLinePos < end)
                return;
        }

        string endword_str{ endword };
        data.erase(caret + 1, end + endword_str.size() - caret - 1);
        caret = data.find(keyword);
    }

    caret = data.length();
    while (caret > 0 && isSkipingChar(data[caret - 1]))
        caret--;

    data.erase(caret);
    data += '\n';
}

bool CodeToolApplication::IsFunctionReflectable(SyntaxFunction* function, SyntaxSection* owner) const
{
    static vector<string> ignoringNames = { "SERIALIZABLE", "PROPERTY", "GETTER", "SETTER", "IOBJECT", "ASSET_TYPE",
        "ATTRIBUTE_COMMENT_DEFINITION", "ATTRIBUTE_SHORT_DEFINITION", "BASE_REF_IMPLEMETATION", "FRIEND_REF_MAKE", "CLONEABLE_REF", "REF_COUNTERABLE_IMPL" };

    return !StartsWith(function->GetName(), string("~") + owner->GetName()) &&
        function->GetName().find('~') == string::npos &&
        function->GetName().find("operator") == function->GetName().npos &&
        !function->IsTemplate() &&
        find(ignoringNames.begin(), ignoringNames.end(), function->GetName()) == ignoringNames.end();
}

void CodeToolCache::UpdateGlobalNamespace()
{
    for (auto file : files)
    {
        SyntaxSection* fileGlobalNamespace = file->GetGlobalNamespace();

        globalNamespace.mVariables.insert(globalNamespace.mVariables.end(),
                                          fileGlobalNamespace->mVariables.begin(),
                                          fileGlobalNamespace->mVariables.end());

        globalNamespace.mFunctions.insert(globalNamespace.mFunctions.end(),
                                          fileGlobalNamespace->mFunctions.begin(),
                                          fileGlobalNamespace->mFunctions.end());

        globalNamespace.mTypedefs.insert(globalNamespace.mTypedefs.end(),
                                         fileGlobalNamespace->mTypedefs.begin(),
                                         fileGlobalNamespace->mTypedefs.end());

        globalNamespace.mUsingNamespaces.insert(globalNamespace.mUsingNamespaces.end(),
                                                fileGlobalNamespace->mUsingNamespaces.begin(),
                                                fileGlobalNamespace->mUsingNamespaces.end());

        globalNamespace.mEnums.insert(globalNamespace.mEnums.end(),
                                      fileGlobalNamespace->mEnums.begin(),
                                      fileGlobalNamespace->mEnums.end());

        for (auto childSection : fileGlobalNamespace->mSections)
            AppendSection(&globalNamespace, childSection);
    }

    ResolveDependencies(&globalNamespace);
    ResolveBaseClassDependencies(&globalNamespace);

    SyntaxClass* attributeClass = dynamic_cast<SyntaxClass*>(FindSection("o2::IAttribute"));
    SearchAttributes(&globalNamespace, attributeClass);
}

bool CodeToolCache::IsClassBasedOn(SyntaxClass* _class, SyntaxClass* baseClass)
{
    if (!_class || !baseClass)
        return false;

    if (_class->mSourceClass)
        _class = _class->mSourceClass;

    if (_class == baseClass)
        return true;

    for (auto baseClassDef : _class->GetBaseClasses())
        if (IsClassBasedOn(baseClassDef.GetClass(), baseClass))
            return true;

    return false;
}

SyntaxSection* CodeToolCache::FindSection(const string& fullName, bool withTypedefs /*= true*/)
{
    return FindSection(fullName, &globalNamespace, withTypedefs);
}

SyntaxSection* CodeToolCache::FindSection(const string& what, const string& where, bool withTypedefs /*= true*/)
{
    return FindSection(what, FindSection(where), withTypedefs);
}

SyntaxSection* CodeToolCache::FindSection(const string& what, SyntaxSection* where, bool withTypedefs /*= true*/)
{
    SyntaxSectionsVec passed;
    return FindSection(what, where, passed, withTypedefs);
}

SyntaxSection* CodeToolCache::FindSection(const string& what, SyntaxSection* where, SyntaxSectionsVec& processedSections, bool withTypedefs /*= true*/)
{
    if (!where)
        return nullptr;

    if (find(processedSections.begin(), processedSections.end(), where) != processedSections.end())
        return nullptr;

    processedSections.push_back(where);

    int braces = 0, trBraces = 0, sqBraces = 0;
    int delPos = -1;

    int whatLength = (int)what.length();
    for (int i = 0; i < whatLength - 1; i++)
    {
        switch (what[i])
        {
        case '(': braces++; break;
        case ')': braces--; break;
        case '<': trBraces++; break;
        case '>': trBraces--; break;
        case '[': sqBraces++; break;
        case ']': sqBraces--; break;
        }

        if (what[i] == ':' && what[i + 1] == ':' && braces == 0 && trBraces == 0 && sqBraces == 0)
        {
            delPos = i;
            break;
        }
    }

    string searchName;
    if (delPos < 0)
        searchName = what;
    else
        searchName = what.substr(0, delPos);

    int templatesPos = (int)searchName.find('<');
    if (templatesPos != searchName.npos)
        searchName.erase(templatesPos);

    for (auto child : where->mSections)
    {
        if (child->mName != searchName)
            continue;

        if (delPos < 0)
        {
            if (templatesPos >= 0)
            {
                SyntaxClass* newSpecializedClass = new SyntaxClass();
                newSpecializedClass->mName = what;
                if (child->mParentSection)
                {
                    newSpecializedClass->mFullName = child->mParentSection->mFullName + "::" + what;
                    child->mParentSection->mSections.push_back(newSpecializedClass);
                }
                else
                    newSpecializedClass->mFullName = what;

                newSpecializedClass->mParentSection = child->mParentSection;
                newSpecializedClass->mSourceClass = (SyntaxClass*)child;

                return newSpecializedClass;
            }

            return child;
        }

        if (auto res = FindSection(what.substr(delPos + 2), child, processedSections))
            return res;
    }

    if (auto res = FindSection(what, where->mParentSection, processedSections))
        return res;

    if (where->IsClass())
    {
        SyntaxClass* whereClass = dynamic_cast<SyntaxClass*>(where);
        for (auto& baseClass : whereClass->mBaseClasses)
        {
            if (baseClass.GetClass())
            {
                if (auto res = FindSection(what, baseClass.GetClass(), processedSections))
                    return res;
            }
        }
    }

    if (withTypedefs)
    {
        for (auto tdef : where->mTypedefs)
        {
            if (tdef->GetNewDefName() != searchName)
                continue;

            if (delPos < 0)
                return tdef->GetWhat();

            if (auto res = FindSection(what.substr(delPos + 2), tdef->GetWhat(), processedSections))
                return res;
        }

        for (auto nspace : where->mUsingNamespaces)
        {
            if (auto res = FindSection(what, nspace->GetUsingNamespace(), processedSections))
                return res;
        }
    }

    return nullptr;
}

void CodeToolCache::SearchAttributes(SyntaxSection* section, SyntaxClass* attributeClass)
{
    for (auto childSection : section->mSections)
    {
        if (childSection->IsClass())
        {
            SyntaxClass* childClass = dynamic_cast<SyntaxClass*>(childSection);
            if (IsClassBasedOn(childClass, attributeClass))
                attributes.push_back(childClass);
        }

        SearchAttributes(childSection, attributeClass);
    }
}

void CodeToolCache::Save(const string& file) const
{
    pugi::xml_document doc;

    pugi::xml_node filesNode = doc.append_child("files");
    for (auto file : originalFiles) {
        auto file_node = filesNode.append_child("file");
        file->SaveTo(file_node);
    }

    pugi::xml_node parentProjsNode = doc.append_child("parentProjects");
    for (auto& proj : parentProjects)
        parentProjsNode.append_child("project").append_attribute("path") = proj.c_str();

    doc.save_file(file.c_str());
}

void CodeToolCache::Load(const string& file, bool original /*= true*/)
{
    pugi::xml_document doc;
    doc.load_file(file.c_str());

    pugi::xml_node filesNode = doc.child("files");
    for (auto x : filesNode)
    {
        SyntaxFile* newFile = new SyntaxFile();
        newFile->LoadFrom(x);
        files.push_back(newFile);

        if (original)
            originalFiles.push_back(newFile);
    }

    if (original)
    {
        for (auto x : parentProjects)
            Load(x, false);
    }
    else
    {
        pugi::xml_node parentProjsNode = doc.child("parentProjects");
        for (auto x : parentProjsNode)
        {
            string path = x.attribute("path").as_string();
            parentProjects.push_back(path);
            Load(path, false);
        }
    }
}

void CodeToolCache::AppendSection(SyntaxSection* currentSection, SyntaxSection* newSection)
{
    if (newSection->IsClass())
    {
        SyntaxClass* childClass = (SyntaxClass*)newSection;

        currentSection->mSections.push_back(childClass);
        childClass->mParentSection = currentSection;

        auto oldSections = newSection->mSections;
        newSection->mSections.clear();
        for (auto childSection : oldSections)
            AppendSection(childClass, childSection);
    }
    else
    {
        SyntaxSection* childNamespace = nullptr;

        auto fnd = find_if(currentSection->mSections.begin(), currentSection->mSections.end(),
                           [=](SyntaxSection* x) {
                               return !x->IsClass() && x->GetName() == newSection->GetName();
                           });

        if (fnd != currentSection->mSections.end())
            childNamespace = *fnd;

        if (!childNamespace)
        {
            childNamespace = new SyntaxNamespace();
            childNamespace->mName = newSection->mName;
            childNamespace->mFullName = newSection->mFullName;

            currentSection->mSections.push_back(childNamespace);
            childNamespace->mParentSection = currentSection;
        }


        childNamespace->mVariables.insert(childNamespace->mVariables.end(),
                                          newSection->mVariables.begin(),
                                          newSection->mVariables.end());

        childNamespace->mFunctions.insert(childNamespace->mFunctions.end(),
                                          newSection->mFunctions.begin(),
                                          newSection->mFunctions.end());

        childNamespace->mTypedefs.insert(childNamespace->mTypedefs.end(),
                                         newSection->mTypedefs.begin(),
                                         newSection->mTypedefs.end());

        childNamespace->mUsingNamespaces.insert(childNamespace->mUsingNamespaces.end(),
                                                newSection->mUsingNamespaces.begin(),
                                                newSection->mUsingNamespaces.end());

        childNamespace->mEnums.insert(childNamespace->mEnums.end(),
                                      newSection->mEnums.begin(),
                                      newSection->mEnums.end());

        for (auto childSection : newSection->mSections)
            AppendSection(childNamespace, childSection);
    }
}

void CodeToolCache::ResolveDependencies(SyntaxSection* section)
{
    for (auto tdef : section->mTypedefs)
    {
        tdef->mWhatSection = FindSection(tdef->mWhatName, section);

        if (!tdef->mWhatSection)
            CodeToolApplication::VerboseLog("Not found section for typedef: %s\n", tdef->mWhatName.c_str());
    }

    for (auto nspace : section->mUsingNamespaces)
    {
        nspace->mUsingNamespace = FindSection(nspace->mUsingNamespaceName);

        if (!nspace->mUsingNamespace)
            CodeToolApplication::VerboseLog("Not found section for using namespace: %s\n", nspace->mUsingNamespaceName.c_str());
    }

    auto sections = section->mSections;
    for (auto childSection : sections)
        ResolveDependencies(childSection);
}

void CodeToolCache::ResolveBaseClassDependencies(SyntaxSection* section)
{
    if (section->IsClass())
    {
        SyntaxClass* cls = (SyntaxClass*)section;
        for (auto& baseClass : cls->mBaseClasses)
        {
            baseClass.mClass = (SyntaxClass*)FindSection(baseClass.mClassName, section);

            if (!baseClass.mClass)
                CodeToolApplication::VerboseLog("Not found base class: %s\n", baseClass.mClassName.c_str());
        }
    }

    auto sections = section->mSections;
    for (auto childSection : sections)
        ResolveBaseClassDependencies(childSection);
}


================================================
FILE: CodeTool/Src/CodeToolApp.h
================================================
#pragma once

#include <chrono>
#include "CppSyntaxParser.h"

class Timer
{
public:
    // Default constructor
    Timer();

    // Resets time
    void Reset();

    // Returns time in seconds from last Reset() call
    float GetTime(); //TODO maybe unused

    // Returns time in seconds from last Reset() or GetElapsedTime() call
    float GetDeltaTime();

private:
    std::chrono::time_point<std::chrono::steady_clock> mLastElapsedTime;
};

class CodeToolCache
{
public:
    SyntaxFilesVec   files;           // All syntax files list, including parent projects
    SyntaxFilesVec   originalFiles;   // Original syntax files list
    SyntaxSection    globalNamespace; // Global syntax namespace
    SyntaxClassesVec attributes;      // Allattribute classes
    vector<string>   parentProjects;  // Parent projects code tool caches, that used in current project

    // Updates global namespace
    void UpdateGlobalNamespace();

    // Returns is class based on other class
    bool IsClassBasedOn(SyntaxClass* _class, SyntaxClass* baseClass);

    // Returns section by name in global space
    SyntaxSection* FindSection(const string& fullName, bool withTypedefs = true);

    // Returns section by name in where
    SyntaxSection* FindSection(const string& what, const string& where, bool withTypedefs = true);

    // Returns section by name in where
    SyntaxSection* FindSection(const string& what, SyntaxSection* where, bool withTypedefs = true);

    // Saves data to file
    void Save(const string& file) const;

    // Loads data from file
    void Load(const string& file, bool original = true);

protected:
    void AppendSection(SyntaxSection* currentSection, SyntaxSection* newSection);
    void ResolveDependencies(SyntaxSection* section);
    void ResolveBaseClassDependencies(SyntaxSection* section);
    SyntaxSection* FindSection(const string& what, SyntaxSection* where, SyntaxSectionsVec& processedSections, bool withTypedefs = true);
    void SearchAttributes(SyntaxSection* section, SyntaxClass* attributeClass);
};

// ---------------------
// Code tool application
// ---------------------
class CodeToolApplication
{
public:
    // Default constructor. Initializes all editor components
    CodeToolApplication();

    // Destructor
    ~CodeToolApplication();

    // Sets arguments from main()
    void SetArguments(char** args, int nargs);

    // Generates new reflection
    void Process();

    // Outs string to log
    static void Log(const char* format, ...);

    // Outs string to log if verbose move is enabled
    static void VerboseLog(const char* format, ...);

protected:
    string                 mCachePath = "CodeToolCache.xml";
                           
    string                 mProjectName;
    string                 mSourcesPath;
    string                 mMSVCProjectPath;
    string                 mXCodeProjectPath;
    bool                   mNeedReset = true;
    static bool            mVerbose;
                           
    CppSyntaxParser*       mParser;
    vector<SyntaxFile*>    mParsedFiles;
    CodeToolCache          mCache;
    map<string, TimeStamp> mSourceFiles;

    vector<string>         mRegistatorsList;
    vector<string>         mEnumRegistratorsList;
    vector<string>         mTemplateClassManualRegistratorsList;

protected:
    // Returns list of all files in path and in sub paths
    map<string, TimeStamp> GetFolderFiles(const string& path);

    // Returns last edited date for file
    TimeStamp GetFileEditedDate(const string& path);

    // Parses startup arguments and puts into map
    map<string, string> ParseArguments(char** args, int nargs);

    // Returns is file exist
    bool IsFileExist(const string& path) const;

    // Writes data to file
    void WriteFile(const string& path, const string& data) const;

    // Reads data from file
    string ReadFile(const string& path) const;

    // Returns path without parent directories
    string GetPathWithoutDirectories(const string& path);

    // Returns parent path
    string GetParentPath(const string& path);

    // Returns relative path
    string GetRelativePath(const string& from, const string& to);

    // Loads files parsing cache
    void LoadCache();

    // Saves files parsing cache
    void SaveCache();

    // Updates project files structure
    void UpdateProjectFilesFilter();

    // Updates code reflection
    void UpdateCodeReflection();

    // Scans all .cpp files for ENUM_META calls and collects REG_IDs
    void CollectEnumRegistrators();

    // Scans all .cpp files for DECLARE_TEMPLATE_CLASS_MANUAL_ID calls and collects REG_IDs
    void CollectTemplateClassManualRegistrators();

    // Generates classes registrators list source file
    void UpdateRegistratorsSource();

    // Parses source file
    void ParseSource(const string& path, const TimeStamp& editDate);

    // Updates reflection for classes in source
    void UpdateSourceReflection(SyntaxFile* file);

    // Adds meta comment begin section
    void AddBeginMeta(bool& hasMeta, string& res);

    // Adds meta comment end section
    void AddEndMeta(bool hasMeta, string& res);

    // Returns class declaration meta
    string GetClassDeclaration(SyntaxClass* cls);

    // Returns class reflection meta
    string GetClassMeta(SyntaxClass* cls);

    // Returns is comment ignoring
    bool IsIgnoreComment(SyntaxComment* synComment);

    // Adds #if if required
    void CheckIfDefines(ISyntaxExpression* item, SyntaxDefineIf*& prevDefine, string& data);

    // Adds #endif if required
    void CompleteIfDefines(SyntaxDefineIf*& prevDefine, string& data);

    // Returns class field attributes
    string GetAttributes(SyntaxClass* cls, int line, SyntaxComment* synComment);

    // Return enum reflection meta
    string GetEnumMeta(SyntaxEnum* enm);

    // Return enum reflection meta for header
    string GetEnumPreMeta(SyntaxEnum* enm);

    // Builds meta templates parameters for template classes
    void AggregateTemplates(SyntaxSection* sec, string& templates, string& fullName);

    // Returns class full name with template parameters in global space
    string GetClassNormalizedTemplates(const string& name, const string& nspace);

    // Removes class metas from source
    void RemoveMetas(string& data, const char* keyword, const char* endword, bool allowMultiline = true);

    // Returns is function reflectable
    bool IsFunctionReflectable(SyntaxFunction* function, SyntaxSection* owner) const;
};


================================================
FILE: CodeTool/Src/CppSyntaxParser.cpp
================================================
#include "CppSyntaxParser.h"

#include <algorithm>
#include <fstream>
#include <functional>
#include <locale>
#include <sstream>
#include <cstring>

string& TrimStart(string& str, const string& chars /*= " "*/)
{
    int l = (int)str.length();
    int i = 0;
    for (; i < l; i++)
    {
        if (chars.find(str[i]) == string::npos)
            break;
    }

    str.erase(0, i);

    return str;
}

string& TrimEnd(string& str, const string& chars /*= " "*/)
{
    int l = (int)str.length();
    int i = l - 1;
    for (; i >= 0; i--)
    {
        if (chars.find(str[i]) == string::npos)
            break;
    }

    str.erase(i + 1);

    return str;
}

string& Trim(string& str, const string& chars /*= " "*/)
{
    return TrimStart(TrimEnd(str, chars), chars);
}

bool StartsWith(const string& str, const string& starts)
{
    int l1 = (int)str.length(), l2 = (int)starts.length();

    if (l1 < l2)
        return false;

    for (int i = 0; i < l1 && i < l2; i++)
    {
        if (str[i] != starts[i])
            return false;
    }

    return true;
}

bool EndsWith(const string& str, const string& ends)
{
    int l1 = (int)str.length(), l2 = (int)ends.length();

    if (l1 < l2)
        return false;

    for (int i = 0; i < l1 && i < l2; i++)
    {
        if (str[l1 - i - 1] != ends[l2 - i - 1])
            return false;
    }

    return true;
}

void Split(const string& s, char delim, vector<string>& elems)
{
    stringstream ss;
    ss.str(s);
    string item;
    while (getline(ss, item, delim))
        elems.push_back(item);
}

vector<string> Split(const string& s, char delim)
{
    vector<string> elems;
    Split(s, delim, elems);
    return elems;
}

CppSyntaxParser::CppSyntaxParser()
{
    InitializeParsers();
}

CppSyntaxParser::~CppSyntaxParser()
{
    for (auto x : mParsers)
        delete x;
}

void CppSyntaxParser::InitializeParsers()
{
    mParsers.push_back(new ExpressionParser("namespace", &CppSyntaxParser::ParseNamespace, false, true));
    mParsers.push_back(new ExpressionParser("namespace", &CppSyntaxParser::ParseNamespace, true, true));
    mParsers.push_back(new ExpressionParser("//", &CppSyntaxParser::ParseComment, true, true));
    mParsers.push_back(new ExpressionParser("/*", &CppSyntaxParser::ParseMultilineComment, true, true));
    mParsers.push_back(new ExpressionParser("#pragma", &CppSyntaxParser::ParsePragma, false, true));
    mParsers.push_back(new ExpressionParser("#include", &CppSyntaxParser::ParseInclude, false, true));
    mParsers.push_back(new ExpressionParser("#define", &CppSyntaxParser::ParseDefine, true, true));
    mParsers.push_back(new ExpressionParser("#undef", &CppSyntaxParser::ParseDefine, true, true));
    mParsers.push_back(new ExpressionParser("#ifdef", &CppSyntaxParser::ParseIfdefMacros, true, true));
    mParsers.push_back(new ExpressionParser("#if", &CppSyntaxParser::ParseIfMacros, true, true));
    mParsers.push_back(new ExpressionParser("#endif", &CppSyntaxParser::ParseEndIfMacros, true, true));
    mParsers.push_back(new ExpressionParser("#else", &CppSyntaxParser::ParseElseMacros, true, true));
    mParsers.push_back(new ExpressionParser("#elif", &CppSyntaxParser::ParseElifMacros, true, true));
    mParsers.push_back(new ExpressionParser("meta class", &CppSyntaxParser::ParseMetaClass, true, true));
    mParsers.push_back(new ExpressionParser("class", &CppSyntaxParser::ParseClass, true, true));
    mParsers.push_back(new ExpressionParser("struct", &CppSyntaxParser::ParseStruct, true, true));
    mParsers.push_back(new ExpressionParser("template", &CppSyntaxParser::ParseTemplate, true, true));
    mParsers.push_back(new ExpressionParser("typedef", &CppSyntaxParser::ParseTypedef, true, true));
    mParsers.push_back(new ExpressionParser("enum", &CppSyntaxParser::ParseEnum, true, true));
    mParsers.push_back(new ExpressionParser("using", &CppSyntaxParser::ParseUsing, true, true));
    mParsers.push_back(new ExpressionParser("public:", &CppSyntaxParser::ParsePublicSection, true, false));
    mParsers.push_back(new ExpressionParser("private:", &CppSyntaxParser::ParsePrivateSection, true, false));
    mParsers.push_back(new ExpressionParser("protected:", &CppSyntaxParser::ParseProtectedSection, true, false));
    mParsers.push_back(new ExpressionParser("friend", &CppSyntaxParser::ParseFriend, true, false));
    mParsers.push_back(new ExpressionParser("ATTRIBUTE_COMMENT_DEFINITION", &CppSyntaxParser::ParseAttributeCommentDef, true, false));
    mParsers.push_back(new ExpressionParser("ATTRIBUTE_SHORT_DEFINITION", &CppSyntaxParser::ParseAttributeShortDef, true, false));
    mParsers.push_back(new ExpressionParser("ATTRIBUTES", &CppSyntaxParser::ParseAttributes, true, false));
    mParsers.push_back(new ExpressionParser("PROPERTIES", &CppSyntaxParser::ParseProperties, true, false));
    mParsers.push_back(new ExpressionParser("PROPERTY", &CppSyntaxParser::ParseProperty, true, false));
    mParsers.push_back(new ExpressionParser("GETTER", &CppSyntaxParser::ParseGetter, true, false));
    mParsers.push_back(new ExpressionParser("SETTER", &CppSyntaxParser::ParseSetter, true, false));
    mParsers.push_back(new ExpressionParser("ACCESSOR", &CppSyntaxParser::ParseAccessor, true, false));
}

void CppSyntaxParser::ParseFile(SyntaxFile& file, const string& filePath, const TimeStamp& fileEditDate)
{
    file.mPath = filePath;
    file.mLastEditedDate = fileEditDate;

    ifstream fin;
    fin.open(filePath.c_str());
    if (!fin.is_open())
        return;

    file.mData = string((std::istreambuf_iterator<char>(fin)), std::istreambuf_iterator<char>());

    fin.close();

    if (file.mData.find("@CODETOOLIGNORE") != string::npos)
        return;

    ParseSyntaxSection(*file.mGlobalNamespace, file.mData, file, SyntaxProtectionSection::Public);
}

void CppSyntaxParser::ParseSyntaxSection(SyntaxSection& section, const string& source, SyntaxFile& file,
                                         SyntaxProtectionSection protectionSection)
{
    section.mLength = (int)source.length();
    section.mData = source;
    section.mFile = &file;

    string skipSymbols = " \r\n\t;";

    int caret = 0;
    while (caret < section.mLength)
    {
        if (skipSymbols.find(source[caret]) != string::npos)
        {
            caret++;
            continue;
        }

        bool parsedByKeywork = false;
        for (auto parser : mParsers)
        {
            const char* keyWord = parser->keyWord;

            int i = 0;
            bool success = true;
            while (keyWord[i] != '\0')
            {
                if (source[i + caret] != keyWord[i])
                {
                    success = false;
                    break;
                }
                i++;
            }

            if (!success)
                continue;

            ParserDelegate pd = parser->parser;
            (this->*pd)(section, caret, protectionSection);
            parsedByKeywork = true;

            break;
        }

        if (parsedByKeywork)
            continue;

        int blockbegin = caret;
        string block = ReadBlock(section.mData, caret);
        Trim(block, " \r\t\n");
        if (block[0] == '{' && block[block.length() - 1] == '}')
        {
            block.erase(block.length() - 1, 1);
            block.erase(0, 1);
        }

        if (!block.empty())
            TryParseBlock(section, block, blockbegin, caret, protectionSection);
        else
            caret++;
    }
}

int CppSyntaxParser::GetLineNumber(const string& data, int caret)
{
    int res = 0;
    for (int i = 0; i < caret; i++)
        if (data[i] == '\n')
            res++;

    return res;
}

void CppSyntaxParser::TryParseBlock(SyntaxSection& section, const string& block, int blockBegin, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    if (IsFunction(block))
    {
        auto func = ParseFunction(block, protectionSection, blockBegin, caret);
        func->mFile = section.mFile;
        func->mLine = GetLineNumber(section.mData, caret);
        section.mFunctions.push_back(func);
    }
    else
    {
        auto var = ParseVariable(block, protectionSection, blockBegin, caret);
        var->mFile = section.mFile;
        var->mLine = GetLineNumber(section.mData, caret);
        section.mVariables.push_back(var);
    }
}

bool CppSyntaxParser::IsFunction(const string& data)
{
    int locCaret = 0;
    bool isFunction = false;

    string firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (firstWord.empty())
        return false;

    if (firstWord == "virtual")
        firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (firstWord == "static")
        firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (firstWord == "typename")
        firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (firstWord == "inline")
        firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (firstWord == "explicit")
        firstWord = ReadWord(data, locCaret, " \n\r(){}[]");

    if (GetNextSymbol(data, locCaret, " \n\r\t") == '(')
    {
        string braces = ReadBraces(data, locCaret);
        Trim(braces, " \n\t\r()");

        int tmpCaret = 0;
        string word = ReadWord(braces, tmpCaret);

        isFunction = GetNextSymbol(braces, tmpCaret, " \n\r\t") != ':';

        if (!isFunction && StartsWith(braces, "std"))
            isFunction = true;
    }
    else
    {
        if (firstWord == "const")
            ReadWord(data, locCaret, " \n\r(){}[]");

        if (firstWord == "operator")
            ReadWord(data, locCaret, " \n\r(){}[]");

        string thirdWord = ReadWord(data, locCaret, " \n\r(){}[]<>-");

        if (thirdWord == "operator")
            thirdWord = ReadWord(data, locCaret, " \n\r(){}", "\n\r", true, true, false);

        if (GetNextSymbol(data, locCaret, " \n\r\t") == '(')
            isFunction = true;
    }

    return isFunction;
}

SyntaxVariable* CppSyntaxParser::ParseVariable(const string& data, SyntaxProtectionSection& protectionSection,
                                               int begin, int end)
{
    SyntaxVariable* res = new SyntaxVariable();
    res->mBegin = begin;
    res->mLength = end - begin;
    res->mData = data;

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    int caret = 0;
    string typeWord = ReadWord(data, caret, " \n\r(){}[]");
    string typeDefinition = typeWord;

    if (typeWord == "static")
    {
        typeWord = ReadWord(data, caret, " \n\r(){}[]");
        typeDefinition += " " + typeWord;
        res->mIsStatic = true;
    }

    if (typeWord == "const")
    {
        typeWord = ReadWord(data, caret, " \n\r(){}[]");
        res->mType.mIsContant = true;

        typeDefinition += " " + typeWord;
    }

    if (typeWord == "mutable")
    {
        typeWord = ReadWord(data, caret, " \n\r(){}[]");
        res->mType.mIsMutable = true;

        typeDefinition += " " + typeWord;
    }

    if (!typeWord.empty() && typeWord[typeWord.length() - 1] == '&')
        res->mType.mIsReference = true;

    if (!typeWord.empty() && typeWord[typeWord.length() - 1] == '*')
        res->mType.mIsPointer = true;

    res->mType.mName = typeWord;

    res->mClassSection = protectionSection;

    if (GetNextSymbol(data, caret, " \n\r\t") == '(')
    {
        string bracesRaw = ReadBraces(data, caret);
        string braces = Trim(bracesRaw, " \r\t\t()");

        string nextBracesRaw = ReadBraces(data, caret);
        string nextBraces = Trim(nextBracesRaw, " \r\t\t()");

        int tmpCaret = 0;
        string bracesFirst = ReadWord(braces, tmpCaret);
        if (braces[tmpCaret] == '*')
        {
            tmpCaret += 3;
            res->mName = braces.substr(tmpCaret);

            res->mType.mName += " (" + bracesFirst + "*)(" + nextBraces + ")";
        }
    }
    else
    {
        string nextWord = ReadWord(data, caret, " (){}[]");
        if (nextWord == "const")
            res->mName = ReadWord(data, caret, " (){}[]");
        else
            res->mName = nextWord;

        nextWord = ReadWord(data, caret, " (){}[]");
        if (nextWord == "=")
            res->mDefaultValue = ReadWord(data, caret, ";");
    }

    return res;
}

SyntaxFunction* CppSyntaxParser::ParseFunction(const string& data, SyntaxProtectionSection& protectionSection,
                                               int begin, int end)
{
    SyntaxFunction* res = new SyntaxFunction();
    res->mBegin = begin;
    res->mLength = end - begin;
    res->mData = data;

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    res->mClassSection = protectionSection;

    int caret = 0;
    string typeWord = ReadWord(data, caret, " \n\r(){}[]");

    if (typeWord == "virtual")
    {
        res->mIsVirtual = true;
        typeWord = ReadWord(data, caret, " \n\r(){}[]");
    }

    if (typeWord == "static")
    {
        res->mIsStatic = true;
        typeWord = ReadWord(data, caret, " \n\r(){}[]");
    }

    if (typeWord == "inline")
        typeWord = ReadWord(data, caret, " \n\r(){}[]");

    if (typeWord == "typename")
        typeWord = ReadWord(data, caret, " \n\r(){}[]");

    if (typeWord == "explicit")
        typeWord = ReadWord(data, caret, " \n\r(){}[]");

    if (typeWord == "operator")
    {
        string nextWord = ReadWord(data, caret, " \n\r(){}[]");
        res->mName = typeWord + nextWord;
        res->mReturnType.mName = "void";
    }
    else
    {
        if (GetNextSymbol(data, caret, " \n\r\t") == '(')
        {
            res->mName = typeWord;
            res->mReturnType.mName = "void";
        }
        else
        {
            string typeDefinition = typeWord;

            if (typeWord == "const")
            {
                typeWord = ReadWord(data, caret, " \n\r(){}[]");
                res->mReturnType.mIsContant = true;

                typeDefinition += " " + typeWord;
            }

            if (!typeWord.empty() && typeWord[typeWord.length() - 1] == '&')
                res->mReturnType.mIsReference = true;

            if (!typeWord.empty() && typeWord[typeWord.length() - 1] == '*')
                res->mReturnType.mIsPointer = true;

            res->mReturnType.mName = typeWord;

            res->mName = ReadWord(data, caret, " \n\r(){}[]");

            if (res->mName == "operator")
                res->mName += " " + ReadWord(data, caret, " \n\r(){}");
        }
    }

    string braces = ReadBraces(data, caret);
    string paramsStr = Trim(braces, " \n\r\t");
    string afterParamWord = ReadWord(data, caret);

    if (afterParamWord == "const")
        res->mIsContstant = true;

    if (!paramsStr.empty())
    {
        auto paramsArr = Split(paramsStr, ',');
        for (auto& prm : paramsArr)
        {
            Trim(prm, " \r\n\t");
            SyntaxProtectionSection tempProtectSection = SyntaxProtectionSection::Public;
            res->mParameters.push_back(ParseVariable(prm, tempProtectSection, begin, end));
        }
    }

    return res;
}

void CppSyntaxParser::ParseNamespace(SyntaxSection& section, int& caret,
                                     SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("namespace");

    string namespaceName = ReadWord(section.mData, caret);
    string blockRaw = ReadBlock(section.mData, caret);
    string block = Trim(blockRaw, " \r\t\n");

    SyntaxNamespace* newNamespace = new SyntaxNamespace();
    newNamespace->mBegin = begin;
    newNamespace->mLength = caret - begin;
    newNamespace->mLine = GetLineNumber(section.mData, caret);

    string blockSubstr = block.substr(1, block.length() - 1);
    newNamespace->mData = Trim(blockSubstr, " \r\t\n");
    newNamespace->mName = namespaceName;
    newNamespace->mFullName = section.mFullName.empty() ? namespaceName : section.mFullName + "::" + namespaceName;
    newNamespace->mFile = section.mFile;
    newNamespace->mParentSection = &section;
    section.mSections.push_back(newNamespace);

    ParseSyntaxSection(*newNamespace, newNamespace->mData, *section.mFile, SyntaxProtectionSection::Public);
}

void CppSyntaxParser::ParseComment(SyntaxSection& section, int& caret,
                                   SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("//");

    SyntaxComment* comment = new SyntaxComment();

    int dataLength = (int)section.mData.length();
    string skipSymbols = " \r\t;";
    int tmpCaret = caret;
    bool first = true;
    int line = 0;
    do
    {
        caret = tmpCaret;

        if (!first)
        {
            caret += 2;
            comment->mData += '\n';
        }

        string buffRaw = ReadWord(section.mData, caret, "\n", "");
        string buff = Trim(buffRaw, " \r");
        comment->mData += buff;

        line = GetLineNumber(section.mData, caret);

        tmpCaret = caret + 1;
        for (; tmpCaret < dataLength; tmpCaret++)
        {
            if (skipSymbols.find(section.mData[tmpCaret]) == string::npos)
                break;
        }

        if (first)
            first = false;
    } while (tmpCaret < dataLength - 2 && section.mData[tmpCaret] == '/' && section.mData[tmpCaret + 1] == '/');

    caret = tmpCaret;

    comment->mBegin = begin;
    comment->mLength = caret - begin;
    comment->mFile = section.mFile;
    comment->mLine = line;

    section.mComments.push_back(comment);
}

void CppSyntaxParser::ParseMultilineComment(SyntaxSection& section, int& caret,
                                            SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("/*");
    int end = (int)section.mData.find("*/", caret);
    caret = end;

    SyntaxComment* comment = new SyntaxComment();
    string sub = section.mData.substr(begin + 2, end - 4 - begin);
    comment->mData = Trim(sub, " \r\t\n");
    comment->mBegin = begin;
    comment->mLength = caret - begin;
    comment->mFile = section.mFile;

    section.mComments.push_back(comment);
}

void CppSyntaxParser::ParsePragma(SyntaxSection& section, int& caret,
                                  SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#pragma");
    ReadWord(section.mData, caret, "\n", "");
}

void CppSyntaxParser::ParseInclude(SyntaxSection& section, int& caret,
                                   SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#include");
    ReadWord(section.mData, caret, "\n", "");
}

void CppSyntaxParser::ParseDefine(SyntaxSection& section, int& caret,
                                  SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#define");
    ReadWord(section.mData, caret, "\n", "");
}

void CppSyntaxParser::ParseUndef(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#undef");
    ReadWord(section.mData, caret, "\n", "");
}

void CppSyntaxParser::ParseIfdefMacros(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#ifdef");

    SyntaxDefineIf* newDefine = new SyntaxDefineIf();
    newDefine->mDefintion = "defined " + ReadWord(section.mData, caret, "\n", "");

    section.mDefines.push_back(newDefine);
    mCurrentDefine = newDefine;
}

void CppSyntaxParser::ParseIfMacros(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#if");

    SyntaxDefineIf* newDefine = new SyntaxDefineIf();
    newDefine->mDefintion = ReadWord(section.mData, caret, "\n", "");

    section.mDefines.push_back(newDefine);
    mCurrentDefine = newDefine;
}

void CppSyntaxParser::ParseEndIfMacros(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#endif");
    ReadWord(section.mData, caret, "\n", "");
    mCurrentDefine = nullptr;
}

void CppSyntaxParser::ParseElifMacros(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#elif");

    SyntaxDefineIf* newDefine = new SyntaxDefineIf();
    newDefine->mDefintion = ReadWord(section.mData, caret, "\n", "");

    section.mDefines.push_back(newDefine);
    mCurrentDefine = newDefine;
}

void CppSyntaxParser::ParseElseMacros(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("#else");
    ReadWord(section.mData, caret, "\n", "");

    if (mCurrentDefine)
    {
        SyntaxDefineIf* newDefine = new SyntaxDefineIf();
        newDefine->mDefintion = "!(" + mCurrentDefine->mDefintion + ")";

        section.mDefines.push_back(newDefine);
        mCurrentDefine = newDefine;
    }
}

void CppSyntaxParser::ParseMetaClass(SyntaxSection& section, int& caret,
                                     SyntaxProtectionSection& protectionSection)
{
    ParseClassOrStruct(section, caret, protectionSection, true, true, "");
}

void CppSyntaxParser::ParseClass(SyntaxSection& section, int& caret,
                                 SyntaxProtectionSection& protectionSection)
{
    ParseClassOrStruct(section, caret, protectionSection, true, false, "");
}

void CppSyntaxParser::ParseStruct(SyntaxSection& section, int& caret,
                                  SyntaxProtectionSection& protectionSection)
{
    ParseClassOrStruct(section, caret, protectionSection, false, false, "");
}

void CppSyntaxParser::ParseClassOrStruct(SyntaxSection& section, int& caret,
                                         SyntaxProtectionSection& protectionSection,
                                         bool isClass, bool isMeta, const string& templates)
{
    int begin = caret;

    if (isMeta)
        caret += (int)strlen("meta");

    if (isClass) caret += (int)strlen("class");
    else         caret += (int)strlen("struct");

    string className = ReadWord(section.mData, caret, " \n\t\r:;/");
    string afterNameRaw = ReadWord(section.mData, caret, ";{/");
    string afterName = Trim(afterNameRaw, " :\r\n\t");

    string shortClassName = className;
    className = section.mFullName.empty() ? className : section.mFullName + "::" + className;

    SyntaxClass* newClass = new SyntaxClass();

    newClass->mBegin = begin;
    newClass->mLength = caret - begin;
    newClass->mLine = GetLineNumber(section.mData, caret);
    newClass->mData = section.mData.substr(begin, caret - begin);
    newClass->mName = shortClassName;
    newClass->mFullName = className;
    newClass->mFile = section.mFile;
    newClass->mParentSection = &section;
    newClass->mClassSection = protectionSection;
    newClass->mTemplateParameters = templates;

    if (mCurrentDefine)
        newClass->mDefine = mCurrentDefine;

    if (!afterName.empty())
    {
        auto baseClasses = Split(afterName, ',');

        for (auto& baseClass : baseClasses)
        {
            Trim(baseClass);

            int spacePos = (int)baseClass.find(' ');
            if (spacePos == baseClass.npos)
                newClass->mBaseClasses.push_back(SyntaxClassInheritance(baseClass, SyntaxProtectionSection::Private));
            else
            {
                if (StartsWith(baseClass, "virtual"))
                {
                    baseClass.erase(0, strlen("virtual") + 1);
                    spacePos = (int)baseClass.find(' ');
                }

                string sectionTypeName = baseClass.substr(0, spacePos);
                string baseClassName = baseClass.substr(spacePos + 1);

                if (StartsWith(baseClassName, "virtual"))
                    baseClassName.erase(0, strlen("virtual") + 1);

                SyntaxProtectionSection sectionType = SyntaxProtectionSection::Private;

                if (sectionTypeName == "public")
                    sectionType = SyntaxProtectionSection::Public;
                else if (sectionTypeName == "protected")
                    sectionType = SyntaxProtectionSection::Protected;

                newClass->mBaseClasses.push_back(SyntaxClassInheritance(baseClassName, sectionType));
            }
        }
    }

    int dataLength = (int)section.mData.length();

    if (caret < dataLength && section.mData[caret] == '/')
    {
        string comment = ReadWord(section.mData, caret, "\n");
        ReadWord(section.mData, caret, ";{/");
    }

    if (caret < dataLength && section.mData[caret] == '{')
    {
        string block = ReadBlock(section.mData, caret);
        newClass->mData = Trim(block, "{} \n\r\t");

        section.mSections.push_back(newClass);

        // For class, default protection is Private; for struct, it's Public
        SyntaxProtectionSection initialProtection = isClass ? SyntaxProtectionSection::Private : SyntaxProtectionSection::Public;
        ParseSyntaxSection(*newClass, newClass->mData, *newClass->mFile, initialProtection);
    }
}

void CppSyntaxParser::ParseTemplate(SyntaxSection& section, int& caret,
                                    SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("template");

    int dataLen = (int)section.mData.length();

    for (; caret < dataLen; caret++)
        if (section.mData[caret] == '<')
            break;

    caret++;
    int braces = 1;
    int begin = caret;

    for (; caret < dataLen; caret++)
    {
        if (section.mData[caret] == '<')
            braces++;

        if (section.mData[caret] == '>')
        {
            braces--;

            if (braces == 0)
                break;
        }
    }

    string tempInside = section.mData.substr(begin, caret - begin);

    int tmpCaret = caret + 1;
    string blockRaw = ReadBlock(section.mData, tmpCaret);
    string block = Trim(blockRaw, " \n\r\t");

    if (StartsWith(block, "class"))
    {
        caret = (int)section.mData.find("class", caret + 1);
        ParseClassOrStruct(section, caret, protectionSection, true, false, tempInside);
    }
    else if (StartsWith(block, "struct"))
    {
        caret = (int)section.mData.find("struct", caret + 1);
        ParseClassOrStruct(section, caret, protectionSection, false, false, tempInside);
    }
    else if (StartsWith(block, "metaclass"))
    {
        caret = (int)section.mData.find("metaclass", caret + 1);
        ParseClassOrStruct(section, caret, protectionSection, true, true, tempInside);
    }
    else if (StartsWith(block, "friend"))
    {
        caret = (int)section.mData.find("friend", caret + 1);
        ParseFriend(section, caret, protectionSection);
    }
    else if (IsFunction(block))
    {
        auto func = ParseFunction(block, protectionSection, 0, (int)block.length());
        func->mTemplates = tempInside;
        func->mFile = section.mFile;
        func->mLine = GetLineNumber(section.mData, caret);
        section.mFunctions.push_back(func);

        caret = tmpCaret;
    }
    else caret = tmpCaret;
}

void CppSyntaxParser::ParseTypedef(SyntaxSection& section, int& caret,
                                   SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("typedef");
    string word = ReadWord(section.mData, caret, ";");
    string temp = Trim(word, " \r\n\t");

    int lastSpace = (int)temp.rfind(' ');

    string valueRaw = temp.substr(0, lastSpace);
    string value = Trim(valueRaw, " \r\t\n");

    string nameRaw = temp.substr(lastSpace + 1);
    string name = Trim(nameRaw, " \r\t\n;");

    if (StartsWith(value, "typename"))
        value.erase(0, strlen("typename "));

    SyntaxTypedef* synTypedef = new SyntaxTypedef();
    synTypedef->mBegin = begin;
    synTypedef->mLength = caret - begin;
    synTypedef->mLine = GetLineNumber(section.mData, caret);
    synTypedef->mData = section.mData.substr(begin, caret - begin);
    synTypedef->mWhatName = value;
    synTypedef->mNewDefName = name;

    section.mTypedefs.push_back(synTypedef);
}

void CppSyntaxParser::ParseEnum(SyntaxSection& section, int& caret,
                                SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("enum");

    string name = ReadWord(section.mData, caret);

    if (name == "class")
        name = ReadWord(section.mData, caret);

    string blockRaw = ReadBlock(section.mData, caret);
    string block = Trim(blockRaw, " {}\r\t\n");
    RemoveComments(block);
    auto content = Split(block, ',');

    SyntaxEnum* newEnum = new SyntaxEnum();
    newEnum->mBegin = begin;
    newEnum->mLength = caret - begin;
    newEnum->mLine = GetLineNumber(section.mData, caret);
    newEnum->mData = section.mData.substr(begin, caret - begin);
    newEnum->mName = name;
    newEnum->mFullName = section.GetFullName().empty() ? name : section.GetFullName() + "::" + name;
    newEnum->mFile = section.mFile;
    newEnum->mOwnerSection = &section;
    newEnum->mClassSection = protectionSection;

    for (auto& x : content)
    {
        Trim(x, " \n\t\r");

        string name, value;
        int valuePos = (int)x.find('=');

        if (valuePos != x.npos)
        {
            string sub = x.substr(0, valuePos);
            name = Trim(sub, " \n\t\r");

            string sub2 = x.substr(valuePos + 1);
            value = Trim(sub2, " \n\t\r");
        }
        else name = x;

        newEnum->mEntries[name] = value;
    }

    section.mEnums.push_back(newEnum);
}

void CppSyntaxParser::ParseUsing(SyntaxSection& section, int& caret,
                                 SyntaxProtectionSection& protectionSection)
{
    int begin = caret;
    caret += (int)strlen("using");

    int tmpCaret = caret;
    string allWord = ReadWord(section.mData, tmpCaret, ";");
    if (allWord.find(':') != string::npos)
    {
        caret = tmpCaret + 1;
        return;
    }

    ReadWord(section.mData, caret);
    string word = ReadWord(section.mData, caret);
    string name = Trim(word, " \r\n;");

    SyntaxUsingNamespace* newUsing = new SyntaxUsingNamespace();

    newUsing->mBegin = begin;
    newUsing->mLength = caret - begin;
    newUsing->mLine = GetLineNumber(section.mData, caret);
    newUsing->mData = section.mData.substr(begin, caret - caret);
    newUsing->mUsingNamespaceName = name;

    section.mUsingNamespaces.push_back(newUsing);
}

void CppSyntaxParser::ParsePublicSection(SyntaxSection& section, int& caret,
                                         SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("public:");
    protectionSection = SyntaxProtectionSection::Public;
}

void CppSyntaxParser::ParsePrivateSection(SyntaxSection& section, int& caret,
                                          SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("private:");
    protectionSection = SyntaxProtectionSection::Private;
}

void CppSyntaxParser::ParseProtectedSection(SyntaxSection& section, int& caret,
                                            SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("protected:");
    protectionSection = SyntaxProtectionSection::Protected;
}

void CppSyntaxParser::ParseFriend(SyntaxSection& section, int& caret,
                                  SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("friend");
    ReadWord(section.mData, caret, " \n\r\t");
    ReadWord(section.mData, caret, " \n\r\t");
}

void CppSyntaxParser::ParseAttributeCommentDef(SyntaxSection& section, int& caret,
                                               SyntaxProtectionSection& protectionSection)
{
    SyntaxClass* classSection = dynamic_cast<SyntaxClass*>(&section);

    caret += (int)strlen("ATTRIBUTE_COMMENT_DEFINITION");
    caret = (int)section.mData.find('"', caret) + 1;
    int begin = caret;
    caret = (int)section.mData.find('"', caret);

    classSection->mAttributeCommentDef = section.mData.substr(begin, caret - begin);

    caret = (int)section.mData.find(';', caret) + 1;
}

void CppSyntaxParser::ParseAttributeShortDef(SyntaxSection& section, int& caret,
                                             SyntaxProtectionSection& protectionSection)
{
    SyntaxClass* classSection = dynamic_cast<SyntaxClass*>(&section);

    caret += (int)strlen("ATTRIBUTE_SHORT_DEFINITION");
    caret = (int)section.mData.find('"', caret) + 1;
    int begin = caret;
    caret = (int)section.mData.find('"', caret);

    classSection->mAttributeShortDef = section.mData.substr(begin, caret - begin);

    caret = (int)section.mData.find(';', caret) + 1;
}

void CppSyntaxParser::ParseAttributes(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    int begin = caret;

    caret += (int)strlen("ATTRIBUTES");
    caret = (int)section.mData.find('(', caret) + 1;
    string bracesRaw = ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);

    vector<string> separated = Split(braces, ',');
    for (auto& x : separated)
        Trim(x, " \n\r\t,");

    SyntaxAttributes* attributes = new SyntaxAttributes();
    attributes->mBegin = begin;
    attributes->mLength = caret - begin;
    attributes->mLine = GetLineNumber(section.mData, caret);
    attributes->mData = section.mData.substr(begin, caret - caret);
    attributes->mAttributesList = separated;

    section.mAttributes.push_back(attributes);
}

void CppSyntaxParser::ParseProperties(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    caret += (int)strlen("PROPERTIES");
    caret = (int)section.mData.find('(', caret);
    string bracesRaw = ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);
}

void CppSyntaxParser::ParseProperty(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    int begin = caret;

    caret += (int)strlen("PROPERTY");
    caret = (int)section.mData.find('(', caret);
    string bracesRaw = ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);

    vector<string> separated = Split(braces, ',');
    for (auto& x : separated)
        Trim(x, " \n\r\t,");

    SyntaxVariable* res = new SyntaxVariable();
    res->mBegin = begin;
    res->mLength = caret - begin;
    res->mData = section.mData.substr(begin, caret - caret);
    res->mLine = GetLineNumber(section.mData, caret);
    res->mName = separated[1];
    res->mType.mName = separated[0];

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    section.mVariables.push_back(res);
}

void CppSyntaxParser::ParseGetter(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    int begin = caret;

    caret += (int)strlen("GETTER");
    caret = (int)section.mData.find('(', caret);
    string bracesRaw = ReadBraces(section.mData, caret); ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);

    vector<string> separated = Split(braces, ',');
    for (auto& x : separated)
        Trim(x, " \n\r\t,");

    SyntaxVariable* res = new SyntaxVariable();
    res->mBegin = begin;
    res->mLength = caret - begin;
    res->mData = section.mData.substr(begin, caret - caret);
    res->mLine = GetLineNumber(section.mData, caret);
    res->mName = separated[1];
    res->mType.mName = separated[0];

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    section.mVariables.push_back(res);
}

void CppSyntaxParser::ParseSetter(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    int begin = caret;

    caret += (int)strlen("SETTER");
    caret = (int)section.mData.find('(', caret);
    string bracesRaw = ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);

    vector<string> separated = Split(braces, ',');
    for (auto& x : separated)
        Trim(x, " \n\r\t,");

    SyntaxVariable* res = new SyntaxVariable();
    res->mBegin = begin;
    res->mLength = caret - begin;
    res->mData = section.mData.substr(begin, caret - caret);
    res->mLine = GetLineNumber(section.mData, caret);
    res->mName = separated[1];
    res->mType.mName = separated[0];

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    section.mVariables.push_back(res);
}

void CppSyntaxParser::ParseAccessor(SyntaxSection& section, int& caret, SyntaxProtectionSection& protectionSection)
{
    int begin = caret;

    caret += (int)strlen("ACCESSOR");
    caret = (int)section.mData.find('(', caret);
    string bracesRaw = ReadBraces(section.mData, caret);
    string braces = Trim(bracesRaw, " \n\r\t()");
    caret = (int)section.mData.find(';', caret);

    vector<string> separated = Split(braces, ',');
    for (auto& x : separated)
        Trim(x, " \n\r\t,");

    SyntaxVariable* res = new SyntaxVariable();
    res->mBegin = begin;
    res->mLength = caret - begin;
    res->mData = section.mData.substr(begin, caret - caret);
    res->mLine = GetLineNumber(section.mData, caret);
    res->mName = separated[1];
    res->mType.mName = separated[0];

    if (mCurrentDefine)
        res->mDefine = mCurrentDefine;

    section.mVariables.push_back(res);
}

string CppSyntaxParser::ReadWord(const string& data, int& caret,
                                 const char* breakSymbols /*= " \n\r(){}.,;+-* /=@!|&*:~\\"*/,
                                 const char* skipSymbols /*= " \n\r"*/,
                                 bool checkBraces /*= true*/, bool checkFgBraces /*= true*/, bool checkTrBraces /*= true*/)
{
    string res = "";
    int braces = 0, sqBraces = 0, trBraces = 0, fgBraces = 0;
    int dataLen = (int)data.length();

    for (; caret < dataLen; caret++)
    {
        int i = 0;
        bool stop = true;
        char s = data[caret];

        while (skipSymbols[i] != '\0')
        {
            if (skipSymbols[i] == s)
            {
                stop = false;
                break;
            }

            i++;
        }

        if (stop)
            break;
    }

    for (; caret < dataLen; caret++)
    {
        int i = 0;
        bool stop = false;
        char s = data[caret];

        if ((fgBraces == 0 || !checkFgBraces) && (braces == 0 || !checkBraces) && (trBraces == 0 || !checkTrBraces))
        {
            while (breakSymbols[i] != '\0')
            {
                if (breakSymbols[i] == s)
                {
                    stop = true;
                    break;
                }

                i++;
            }

            if (stop)
                break;
        }

        switch (s)
        {
        case '{': fgBraces++; break;
        case '}': fgBraces--; if (fgBraces < 0) fgBraces = 0; break;

        case ')': braces--; if (braces < 0) braces = 0; break;
        case '(': braces++; break;

        case '[': sqBraces++; break;
        case ']': sqBraces--; if (sqBraces < 0) sqBraces = 0; break;

        case '<': trBraces++; break;
        case '>': trBraces--; if (trBraces < 0) trBraces = 0; break;
        }

        res += s;
    }

    return res;
}

string CppSyntaxParser::ReadBlock(const string& data, int& caret)
{
    int begin = caret;
    int braces = 0, fgBraces = 0, sqBraces = 0, trBraces = 0;
    bool isInstring = false;
    int dataLen = (int)data.length();

    for (; caret < dataLen; caret++)
    {
        if (data[caret] == '{')
            break;

        if (data[caret] == ';')
            return data.substr(begin, caret - begin);
    }

    caret++;
    fgBraces++;

    bool complete = false;
    for (; caret < dataLen && !complete; caret++)
    {
        if (isInstring)
        {
            if (data[caret] == '"' && data[caret - 1] != '\\')
                isInstring = false;

            continue;
        }

        switch (data[caret])
        {
        case '{': fgBraces++; break;
        case '}':
            fgBraces--;
            if (fgBraces == 0 && braces == 0 && sqBraces == 0)
                complete = true;
            break;

        case ')': braces--; break;
        case '(': braces++; break;

        case '[': sqBraces++; break;
        case ']': sqBraces--; break;

        case '<': trBraces++; break;
        case '>': trBraces--; break;

        case '"':
            isInstring = true;
            break;
        }
    }

    return data.substr(begin, min(caret, dataLen - 1) - begin);
}

string CppSyntaxParser::ReadBraces(const string& data, int& caret)
{
    int begin = caret;
    int braces = 0, fgBraces = 0, sqBraces = 0, trBraces = 0;
    bool isInstring = false;
    int dataLen = (int)data.length();

    for (; caret < dataLen; caret++)
    {
        if (data[caret] == '(')
            break;

        if (data[caret] == ';')
            return data.substr(begin, caret - begin);
    }

    caret++;
    braces++;

    bool complete = false;
    for (; caret < dataLen && !complete; caret++)
    {
        if (isInstring)
        {
            if (data[caret] == '"' && data[caret - 1] != '\\')
                isInstring = false;

            continue;
        }

        switch (data[caret])
        {
        case '}': fgBraces--; break;
        case '{': fgBraces++; break;

        case '[': sqBraces++; break;
        case ']': sqBraces--; break;

        case '<': trBraces++; break;
        case '>': trBraces--; break;

        case '(': braces++; break;
        case ')':
            braces--;
            if (fgBraces == 0 && braces == 0 && sqBraces == 0 && trBraces == 0)
                complete = true;
            break;

        case '"':
            isInstring = true;
            break;
        }
    }

    string res = data.substr(begin, min(caret, dataLen) - begin);
    int resLen = (int)res.length();

    if (!res.empty() && res[resLen - 1] == ')')
        res.erase(resLen - 1, 1);

    if (!res.empty() && res[0] == '(')
        res.erase(0, 1);

    return res;
}

char CppSyntaxParser::GetNextSymbol(const string& data, int begin, const char* skipSymbols /*= " \n\r\t()[]{}"*/)
{
    int dataLen = (int)data.length();
    for (; begin < dataLen; begin++)
    {
        int i = 0;
        bool stop = true;
        char s = data[begin];

        while (skipSymbols[i] != '\0')
        {
            if (skipSymbols[i] == s)
            {
                stop = false;
                break;
            }

            i++;
        }

        if (stop)
            return s;
    }

    return '\0';
}

vector<string> CppSyntaxParser::Split(const string& data, char splitSymbol)
{
    vector<string> res;
    int braces = 0, sqBraces = 0, trBraces = 0, fgBraces = 0;
    int dataLen = (int)data.length();

    int lastSplit = 0;
    for (int i = 0; i < dataLen; i++)
    {
        switch (data[i])
        {
        case '{': fgBraces++; break;
        case '}': fgBraces--; break;

        case '(': braces++; break;
        case ')': braces--; break;

        case '<': trBraces++; break;
        case '>': trBraces--; break;

        case '[': sqBraces++; break;
        case ']': sqBraces--; break;
        }

        if (braces == 0 && sqBraces == 0 && trBraces == 0 && fgBraces == 0 && data[i] == splitSymbol)
        {
            res.push_back(data.substr(lastSplit, i - lastSplit));
            lastSplit = i + 1;
        }
    }

    res.push_back(data.substr(lastSplit));

    return res;
}

void CppSyntaxParser::RemoveComments(string& input)
{
    size_t p;
    do
    {
        p = input.find("/*");

        if (p == string::npos)
            break;

        size_t end = input.find("*/", p);

        if (end == string::npos)
            end = input.length();
        else
            end += 2;

        input.erase(p, end - p);
    } while (p != string::npos);

    do
    {
        p = input.find("//");

        if (p == string::npos)
            break;

        size_t end = input.find('\n', p);

        if (end == string::npos)
            end = input.length();
        else
            end++;

        input.erase(p, end - p);
    } while (p != string::npos);
}

CppSyntaxParser::ExpressionParser::ExpressionParser(const char* keyWord, ParserDelegate parser,
                                                 
Download .txt
Showing preview only (293K chars total). Download the full file or copy to clipboard to get everything.
gitextract_vp8reetq/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── AssetsBuildTool/
│   ├── CMakeLists.txt
│   └── Sources/
│       ├── AssetsBuildTool.cpp
│       └── o2AssetBuilder/
│           ├── AssetsBuilder.cpp
│           ├── AssetsBuilder.h
│           ├── AssetsBuilderRunner.cpp
│           ├── Converters/
│           │   ├── AtlasAssetConverter.cpp
│           │   ├── AtlasAssetConverter.h
│           │   ├── FolderAssetConverter.cpp
│           │   ├── FolderAssetConverter.h
│           │   ├── IAssetConverter.cpp
│           │   ├── IAssetConverter.h
│           │   ├── ImageAssetConverter.cpp
│           │   ├── ImageAssetConverter.h
│           │   ├── StdAssetConverter.cpp
│           │   └── StdAssetConverter.h
│           ├── ImageCompressor.cpp
│           └── ImageCompressor.h
├── CMake/
│   ├── CMakeDetermineMetalCompiler.cmake
│   ├── CMakeMetalCompiler.cmake.in
│   ├── CMakeMetalInformation.cmake
│   ├── CMakeTestMetalCompiler.cmake
│   ├── CheckLanguage.cmake
│   └── MetalShaderSupport.cmake
├── CMakeLists.txt
├── CodeTool/
│   ├── CMakeLists.txt
│   └── Src/
│       ├── CodeTool.cpp
│       ├── CodeToolApp.cpp
│       ├── CodeToolApp.h
│       ├── CppSyntaxParser.cpp
│       ├── CppSyntaxParser.h
│       ├── SyntaxTree.cpp
│       ├── SyntaxTree.h
│       └── pugixml/
│           ├── pugiconfig.hpp
│           ├── pugixml.cpp
│           └── pugixml.hpp
├── CompressToolsConfig.json
├── Docs/
│   ├── en/
│   │   ├── Architecture/
│   │   │   └── architecture.md
│   │   └── main.md
│   └── ru/
│       ├── Architecture/
│       │   ├── HighLevel/
│       │   │   ├── components.md
│       │   │   ├── scene.md
│       │   │   └── ui.md
│       │   ├── LowLevel/
│       │   │   ├── animations.md
│       │   │   ├── application.md
│       │   │   ├── assets.md
│       │   │   ├── input.md
│       │   │   ├── physics.md
│       │   │   ├── render.md
│       │   │   └── scripting.md
│       │   ├── Utils/
│       │   │   ├── containers.md
│       │   │   ├── debug.md
│       │   │   ├── filesystem.md
│       │   │   ├── function.md
│       │   │   ├── logging.md
│       │   │   ├── math.md
│       │   │   ├── memory.md
│       │   │   ├── properties.md
│       │   │   ├── reflection.md
│       │   │   ├── serialization.md
│       │   │   └── string.md
│       │   └── architecture.md
│       ├── Editor/
│       │   ├── Animation/
│       │   │   └── animation.md
│       │   ├── Assets/
│       │   │   └── assets.md
│       │   ├── Game/
│       │   │   └── game.md
│       │   ├── Log/
│       │   │   └── log.md
│       │   ├── Properties/
│       │   │   └── properties.md
│       │   ├── Scene/
│       │   │   └── scene.md
│       │   ├── Tree/
│       │   │   └── tree.md
│       │   └── editor.md
│       └── main.md
├── Editor/
│   ├── Assets/
│   │   ├── BasicAtlas.atlas
│   │   ├── BasicAtlas.atlas.meta
│   │   ├── Editor UI styles.meta
│   │   ├── SimulationDevicesList.json
│   │   ├── SimulationDevicesList.json.meta
│   │   ├── debugFont.ttf.meta
│   │   ├── stdFont.ttf.meta
│   │   ├── ui/
│   │   │   ├── .meta
│   │   │   ├── CurveHandle.png.meta
│   │   │   ├── CurveHandleHover.png.meta
│   │   │   ├── CurveHandlePressed.png.meta
│   │   │   ├── CurveHandleSelected.png.meta
│   │   │   ├── CurveSupportHandle.png.meta
│   │   │   ├── CurveSupportHandleHover.png.meta
│   │   │   ├── CurveSupportHandlePressed.png.meta
│   │   │   ├── CurveSupportHandleSelected.png.meta
│   │   │   ├── JSFileIcon.png.meta
│   │   │   ├── TopologyTool.png.meta
│   │   │   ├── UI2_accept_prefab.png.meta
│   │   │   ├── UI2_accept_prefab_pressed.png.meta
│   │   │   ├── UI2_accept_prefab_select.png.meta
│   │   │   ├── UI2_actor_icon.png.meta
│   │   │   ├── UI2_add_asset_icon.png.meta
│   │   │   ├── UI2_anim_file_icon.png.meta
│   │   │   ├── UI2_asset_icon_selection.png.meta
│   │   │   ├── UI2_big_file_icon.png.meta
│   │   │   ├── UI2_big_folder_icon.png.meta
│   │   │   ├── UI2_big_lock_close.png.meta
│   │   │   ├── UI2_big_lock_open.png.meta
│   │   │   ├── UI2_big_lock_unknown.png.meta
│   │   │   ├── UI2_big_text_file_icon.png.meta
│   │   │   ├── UI2_break_prefab.png.meta
│   │   │   ├── UI2_break_prefab_pressed.png.meta
│   │   │   ├── UI2_break_prefab_select.png.meta
│   │   │   ├── UI2_component_head.png.meta
│   │   │   ├── UI2_enable_dot_big.png.meta
│   │   │   ├── UI2_enable_dot_big_unknown.png.meta
│   │   │   ├── UI2_enable_toggle_big.png.meta
│   │   │   ├── UI2_enable_toggle_big_focused.png.meta
│   │   │   ├── UI2_enable_toggle_big_pressed.png.meta
│   │   │   ├── UI2_enable_toggle_big_select.png.meta
│   │   │   ├── UI2_eye_closed_icon.png.meta
│   │   │   ├── UI2_eye_opened_icon.png.meta
│   │   │   ├── UI2_filter_icon.png.meta
│   │   │   ├── UI2_folder_icon.png.meta
│   │   │   ├── UI2_gear_icon.png.meta
│   │   │   ├── UI2_gray_options.png.meta
│   │   │   ├── UI2_gray_options_pressed.png.meta
│   │   │   ├── UI2_gray_options_select.png.meta
│   │   │   ├── UI2_green_edit_box.png.meta
│   │   │   ├── UI2_handle_pressed.png.meta
│   │   │   ├── UI2_handle_regular.png.meta
│   │   │   ├── UI2_handle_select.png.meta
│   │   │   ├── UI2_handle_side_pressed.png.meta
│   │   │   ├── UI2_handle_side_regular.png.meta
│   │   │   ├── UI2_handle_side_select.png.meta
│   │   │   ├── UI2_image_asset_back.png.meta
│   │   │   ├── UI2_layer_big.png.meta
│   │   │   ├── UI2_layer_icon_t.png.meta
│   │   │   ├── UI2_link_icon.png.meta
│   │   │   ├── UI2_log_errors_icon.png.meta
│   │   │   ├── UI2_log_errors_inactive_icon.png.meta
│   │   │   ├── UI2_log_info_icon.png.meta
│   │   │   ├── UI2_log_info_inactive_icon.png.meta
│   │   │   ├── UI2_log_warnings_icon.png.meta
│   │   │   ├── UI2_log_warnings_inactive_icon.png.meta
│   │   │   ├── UI2_move_tool_center.png.meta
│   │   │   ├── UI2_move_tool_center_pressed.png.meta
│   │   │   ├── UI2_move_tool_center_select.png.meta
│   │   │   ├── UI2_pivot.png.meta
│   │   │   ├── UI2_pivot_icon.png.meta
│   │   │   ├── UI2_pivot_pressed.png.meta
│   │   │   ├── UI2_pivot_select.png.meta
│   │   │   ├── UI2_position_icon.png.meta
│   │   │   ├── UI2_prefab_link_big.png.meta
│   │   │   ├── UI2_red_edit_box.png.meta
│   │   │   ├── UI2_revert_prefab.png.meta
│   │   │   ├── UI2_revert_prefab_pressed.png.meta
│   │   │   ├── UI2_revert_prefab_select.png.meta
│   │   │   ├── UI2_right_move_arrow.png.meta
│   │   │   ├── UI2_right_move_arrow_pressed.png.meta
│   │   │   ├── UI2_right_move_arrow_select.png.meta
│   │   │   ├── UI2_right_scale_arrow.png.meta
│   │   │   ├── UI2_right_scale_arrow_pressed.png.meta
│   │   │   ├── UI2_right_scale_arrow_select.png.meta
│   │   │   ├── UI2_rotate_icon.png.meta
│   │   │   ├── UI2_round_field.png.meta
│   │   │   ├── UI2_round_field_focused.png.meta
│   │   │   ├── UI2_round_field_gray.png.meta
│   │   │   ├── UI2_round_field_gray_pressed.png.meta
│   │   │   ├── UI2_round_field_gray_select.png.meta
│   │   │   ├── UI2_round_field_pressed.png.meta
│   │   │   ├── UI2_round_field_select.png.meta
│   │   │   ├── UI2_save_gray copy 2.png.meta
│   │   │   ├── UI2_save_gray copy.png.meta
│   │   │   ├── UI2_save_gray.png.meta
│   │   │   ├── UI2_scale_both.png.meta
│   │   │   ├── UI2_scale_both_pressed.png.meta
│   │   │   ├── UI2_scale_both_select.png.meta
│   │   │   ├── UI2_scale_icon.png.meta
│   │   │   ├── UI2_scene_icon.png.meta
│   │   │   ├── UI2_small_panel_back.png.meta
│   │   │   ├── UI2_small_panel_down_back.png.meta
│   │   │   ├── UI2_small_trash_icon.png.meta
│   │   │   ├── UI2_tag_big.png.meta
│   │   │   ├── UI2_trach_icon.png.meta
│   │   │   ├── UI2_transform_icon.png.meta
│   │   │   ├── UI2_up_move_arrow.png.meta
│   │   │   ├── UI2_up_move_arrow_pressed.png.meta
│   │   │   ├── UI2_up_move_arrow_select.png.meta
│   │   │   ├── UI2_up_scale_arrow.png.meta
│   │   │   ├── UI2_up_scale_arrow_pressed.png.meta
│   │   │   ├── UI2_up_scale_arrow_select.png.meta
│   │   │   ├── UI3_add_btn.png.meta
│   │   │   ├── UI3_add_btn_hover.png.meta
│   │   │   ├── UI3_add_btn_pressed.png.meta
│   │   │   ├── UI3_anchor_hover.png.meta
│   │   │   ├── UI3_anchor_pressed.png.meta
│   │   │   ├── UI3_anchor_regular.png.meta
│   │   │   ├── UI3_anchors_hover.png.meta
│   │   │   ├── UI3_anchors_pressed.png.meta
│   │   │   ├── UI3_ch_arrows.png.meta
│   │   │   ├── UI3_icon_anchor.png.meta
│   │   │   ├── UI3_icon_max_size.png.meta
│   │   │   ├── UI3_icon_min_size.png.meta
│   │   │   ├── UI3_icon_offsets.png.meta
│   │   │   ├── UI3_icon_size.png.meta
│   │   │   ├── UI3_icon_weight.png.meta
│   │   │   ├── UI3_rotate_hover.png.meta
│   │   │   ├── UI3_rotate_pressed.png.meta
│   │   │   ├── UI3_rotate_regular.png.meta
│   │   │   ├── UI4_Background.png.meta
│   │   │   ├── UI4_Box_focus.png.meta
│   │   │   ├── UI4_Box_pressed.png.meta
│   │   │   ├── UI4_Box_regular.png.meta
│   │   │   ├── UI4_Box_select.png.meta
│   │   │   ├── UI4_Check_bk.png.meta
│   │   │   ├── UI4_Check_bk_focus.png.meta
│   │   │   ├── UI4_Check_bk_pressed.png.meta
│   │   │   ├── UI4_Check_bk_select.png.meta
│   │   │   ├── UI4_Check_unknown.png.meta
│   │   │   ├── UI4_Ckeck.png.meta
│   │   │   ├── UI4_Close_button_pressed.png.meta
│   │   │   ├── UI4_Close_button_regular.png.meta
│   │   │   ├── UI4_Close_button_select.png.meta
│   │   │   ├── UI4_Context_menu.png.meta
│   │   │   ├── UI4_Context_menu_select.png.meta
│   │   │   ├── UI4_Context_menu_white.png.meta
│   │   │   ├── UI4_Down_icn.png.meta
│   │   │   ├── UI4_Down_icn_pressed.png.meta
│   │   │   ├── UI4_Down_icn_select.png.meta
│   │   │   ├── UI4_Down_icn_white.png.meta
│   │   │   ├── UI4_Editbox_focus.png.meta
│   │   │   ├── UI4_Editbox_pressed.png.meta
│   │   │   ├── UI4_Editbox_regular.png.meta
│   │   │   ├── UI4_Editbox_select.png.meta
│   │   │   ├── UI4_Hor_scrollbar_bk.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_pressed.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_regular.png.meta
│   │   │   ├── UI4_Hor_scrollhandle_select.png.meta
│   │   │   ├── UI4_Options_button_pressed.png.meta
│   │   │   ├── UI4_Options_button_regular.png.meta
│   │   │   ├── UI4_Options_button_select.png.meta
│   │   │   ├── UI4_Radio.png.meta
│   │   │   ├── UI4_Radio_bk.png.meta
│   │   │   ├── UI4_Radio_bk_focus.png.meta
│   │   │   ├── UI4_Radio_bk_pressed.png.meta
│   │   │   ├── UI4_Radio_bk_select.png.meta
│   │   │   ├── UI4_Record_icon.png.meta
│   │   │   ├── UI4_Right_icn.png.meta
│   │   │   ├── UI4_Right_icn_pressed.png.meta
│   │   │   ├── UI4_Right_icn_select.png.meta
│   │   │   ├── UI4_Right_icn_white.png.meta
│   │   │   ├── UI4_Right_icn_white_pressed.png.meta
│   │   │   ├── UI4_Right_icn_white_select.png.meta
│   │   │   ├── UI4_Separator.png.meta
│   │   │   ├── UI4_ToolsPanel_bk.png.meta
│   │   │   ├── UI4_Up_Menu.png.meta
│   │   │   ├── UI4_Up_Menu_pressed.png.meta
│   │   │   ├── UI4_Up_Menu_select.png.meta
│   │   │   ├── UI4_Ver_scrollbar_bk.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_pressed.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_regular.png.meta
│   │   │   ├── UI4_Ver_scrollhandle_select.png.meta
│   │   │   ├── UI4_Ver_separator.png.meta
│   │   │   ├── UI4_Window_place.png.meta
│   │   │   ├── UI4_accept_prefab.png.meta
│   │   │   ├── UI4_accept_prefab_pressed.png.meta
│   │   │   ├── UI4_accept_prefab_select.png.meta
│   │   │   ├── UI4_actor_icon.png.meta
│   │   │   ├── UI4_add_asset_icon.png.meta
│   │   │   ├── UI4_add_btn.png.meta
│   │   │   ├── UI4_add_btn_hover.png.meta
│   │   │   ├── UI4_add_btn_pressed.png.meta
│   │   │   ├── UI4_add_key.png.meta
│   │   │   ├── UI4_add_key_hover.png.meta
│   │   │   ├── UI4_add_key_pressed.png.meta
│   │   │   ├── UI4_anchor_hover.png.meta
│   │   │   ├── UI4_anchor_pressed.png.meta
│   │   │   ├── UI4_anchor_regular.png.meta
│   │   │   ├── UI4_anchors_hover.png.meta
│   │   │   ├── UI4_anchors_pressed.png.meta
│   │   │   ├── UI4_anim_file_icon.png.meta
│   │   │   ├── UI4_anim_loop.png.meta
│   │   │   ├── UI4_anim_loop_hover.png.meta
│   │   │   ├── UI4_anim_loop_pressed.png.meta
│   │   │   ├── UI4_anim_loop_regular.png.meta
│   │   │   ├── UI4_anim_not_loop.png.meta
│   │   │   ├── UI4_anim_pause.png.meta
│   │   │   ├── UI4_anim_play.png.meta
│   │   │   ├── UI4_anim_properties_icon.png.meta
│   │   │   ├── UI4_anim_type.png.meta
│   │   │   ├── UI4_animation_bar.png.meta
│   │   │   ├── UI4_animation_component.png.meta
│   │   │   ├── UI4_animation_icon.png.meta
│   │   │   ├── UI4_animation_state_default.png.meta
│   │   │   ├── UI4_animation_state_frame.png.meta
│   │   │   ├── UI4_animation_state_hover.png.meta
│   │   │   ├── UI4_animation_state_pressed.png.meta
│   │   │   ├── UI4_animation_state_regular.png.meta
│   │   │   ├── UI4_animation_state_shadow.png.meta
│   │   │   ├── UI4_animation_wnd_icon.png.meta
│   │   │   ├── UI4_asset_icon_selection.png.meta
│   │   │   ├── UI4_big_file_icon.png.meta
│   │   │   ├── UI4_big_folder_icon.png.meta
│   │   │   ├── UI4_big_fragment_shader_icon.png.meta
│   │   │   ├── UI4_big_js_file_icon.png.meta
│   │   │   ├── UI4_big_lock_close.png.meta
│   │   │   ├── UI4_big_lock_open.png.meta
│   │   │   ├── UI4_big_lock_unknown.png.meta
│   │   │   ├── UI4_big_material_icon.png.meta
│   │   │   ├── UI4_big_text_file_icon.png.meta
│   │   │   ├── UI4_big_vertex_shader_icon.png.meta
│   │   │   ├── UI4_bones_tool.png.meta
│   │   │   ├── UI4_bool_type.png.meta
│   │   │   ├── UI4_break_prefab.png.meta
│   │   │   ├── UI4_break_prefab_pressed.png.meta
│   │   │   ├── UI4_break_prefab_select.png.meta
│   │   │   ├── UI4_brush_tool.png.meta
│   │   │   ├── UI4_button_focus.png.meta
│   │   │   ├── UI4_button_pressed-87.png.meta
│   │   │   ├── UI4_button_pressed-90.png.meta
│   │   │   ├── UI4_button_pressed.png.meta
│   │   │   ├── UI4_button_regular.png.meta
│   │   │   ├── UI4_button_select.png.meta
│   │   │   ├── UI4_camera_icn.png.meta
│   │   │   ├── UI4_ch_arrows.png.meta
│   │   │   ├── UI4_color_type.png.meta
│   │   │   ├── UI4_common_anim_track.png.meta
│   │   │   ├── UI4_component_head.png.meta
│   │   │   ├── UI4_component_icon.png.meta
│   │   │   ├── UI4_component_icon_dark.png.meta
│   │   │   ├── UI4_create_asset_instance.png.meta
│   │   │   ├── UI4_create_asset_instance_hover.png.meta
│   │   │   ├── UI4_create_asset_instance_pressed.png.meta
│   │   │   ├── UI4_curve_color.png.meta
│   │   │   ├── UI4_curves_mode.png.meta
│   │   │   ├── UI4_dopesheet_back.png.meta
│   │   │   ├── UI4_drag_handle.png.meta
│   │   │   ├── UI4_edit_anim_hover.png.meta
│   │   │   ├── UI4_edit_anim_pressed.png.meta
│   │   │   ├── UI4_edit_anim_regular.png.meta
│   │   │   ├── UI4_emitter_component.png.meta
│   │   │   ├── UI4_enable_dot_big.png.meta
│   │   │   ├── UI4_enable_dot_big_unknown.png.meta
│   │   │   ├── UI4_enable_toggle_big.png.meta
│   │   │   ├── UI4_enable_toggle_big_focused.png.meta
│   │   │   ├── UI4_enable_toggle_big_pressed.png.meta
│   │   │   ├── UI4_enable_toggle_big_select.png.meta
│   │   │   ├── UI4_eye_closed_icon.png.meta
│   │   │   ├── UI4_eye_opened_icon.png.meta
│   │   │   ├── UI4_filter_icon .png.meta
│   │   │   ├── UI4_filter_icon.png.meta
│   │   │   ├── UI4_float_type.png.meta
│   │   │   ├── UI4_folder_icn.png.meta
│   │   │   ├── UI4_folder_icon.png.meta
│   │   │   ├── UI4_folder_icon_dark.png.meta
│   │   │   ├── UI4_frame_tool.png.meta
│   │   │   ├── UI4_game_icon.png.meta
│   │   │   ├── UI4_gear_icon.png.meta
│   │   │   ├── UI4_graph_component.png.meta
│   │   │   ├── UI4_graph_icon.png.meta
│   │   │   ├── UI4_gray_options.png.meta
│   │   │   ├── UI4_gray_options_pressed.png.meta
│   │   │   ├── UI4_gray_options_select.png.meta
│   │   │   ├── UI4_green_edit_box.png.meta
│   │   │   ├── UI4_handles_mode.png.meta
│   │   │   ├── UI4_icon_anchor.png.meta
│   │   │   ├── UI4_icon_max_size.png.meta
│   │   │   ├── UI4_icon_min_size.png.meta
│   │   │   ├── UI4_icon_offsets.png.meta
│   │   │   ├── UI4_icon_size.png.meta
│   │   │   ├── UI4_icon_weight.png.meta
│   │   │   ├── UI4_image_asset_back.png.meta
│   │   │   ├── UI4_image_component.png.meta
│   │   │   ├── UI4_image_frame_tool.png.meta
│   │   │   ├── UI4_image_icn.png.meta
│   │   │   ├── UI4_key.png.meta
│   │   │   ├── UI4_key_hover.png.meta
│   │   │   ├── UI4_key_pressed.png.meta
│   │   │   ├── UI4_keys_select border.png.meta
│   │   │   ├── UI4_keys_select border_hover.png.meta
│   │   │   ├── UI4_keys_select border_pressed.png.meta
│   │   │   ├── UI4_keys_select.png.meta
│   │   │   ├── UI4_keys_select_hover.png.meta
│   │   │   ├── UI4_keys_select_pressed.png.meta
│   │   │   ├── UI4_layer_big.png.meta
│   │   │   ├── UI4_layer_icon_t.png.meta
│   │   │   ├── UI4_link_icon-143.png.meta
│   │   │   ├── UI4_link_icon.png.meta
│   │   │   ├── UI4_list_icon.png.meta
│   │   │   ├── UI4_lock_icon.png.meta
│   │   │   ├── UI4_log_errors_icon.png.meta
│   │   │   ├── UI4_log_errors_inactive_icon.png.meta
│   │   │   ├── UI4_log_icon.png.meta
│   │   │   ├── UI4_log_info_icon.png.meta
│   │   │   ├── UI4_log_info_inactive_icon.png.meta
│   │   │   ├── UI4_log_warnings_icon.png.meta
│   │   │   ├── UI4_log_warnings_inactive_icon.png.meta
│   │   │   ├── UI4_log_wnd_icon.png.meta
│   │   │   ├── UI4_map_key.png.meta
│   │   │   ├── UI4_map_key_hover.png.meta
│   │   │   ├── UI4_map_key_pressed.png.meta
│   │   │   ├── UI4_menu_new_asset.png.meta
│   │   │   ├── UI4_menu_open_asset.png.meta
│   │   │   ├── UI4_menu_revert_asset.png.meta
│   │   │   ├── UI4_menu_save_as_asset.png.meta
│   │   │   ├── UI4_menu_save_asset.png.meta
│   │   │   ├── UI4_menu_toggled.png.meta
│   │   │   ├── UI4_menu_toggled_hover.png.meta
│   │   │   ├── UI4_menu_toggled_pressed.png.meta
│   │   │   ├── UI4_minus_small_hover.png.meta
│   │   │   ├── UI4_minus_small_pressed.png.meta
│   │   │   ├── UI4_minus_small_regular.png.meta
│   │   │   ├── UI4_move_left.png.meta
│   │   │   ├── UI4_move_right.png.meta
│   │   │   ├── UI4_move_tool.png.meta
│   │   │   ├── UI4_non_loop_anim_hover.png.meta
│   │   │   ├── UI4_non_loop_anim_pressed.png.meta
│   │   │   ├── UI4_non_loop_anim_regular.png.meta
│   │   │   ├── UI4_o2_sign.png.meta
│   │   │   ├── UI4_off_dot.png.meta
│   │   │   ├── UI4_on_dot.png.meta
│   │   │   ├── UI4_on_off_dot.png.meta
│   │   │   ├── UI4_other_type.png.meta
│   │   │   ├── UI4_panel_button.png.meta
│   │   │   ├── UI4_panel_button_focus.png.meta
│   │   │   ├── UI4_panel_button_pressed.png.meta
│   │   │   ├── UI4_panel_button_select.png.meta
│   │   │   ├── UI4_panel_subpanel_bk.png.meta
│   │   │   ├── UI4_panel_subpanel_pressed.png.meta
│   │   │   ├── UI4_panel_subpanel_select.png.meta
│   │   │   ├── UI4_path_tool.png.meta
│   │   │   ├── UI4_pause_btn_inactive.png.meta
│   │   │   ├── UI4_pause_btn_pressed.png.meta
│   │   │   ├── UI4_pause_btn_regular.png.meta
│   │   │   ├── UI4_pause_btn_select .png.meta
│   │   │   ├── UI4_pause_btn_select.png.meta
│   │   │   ├── UI4_pause_green.png.meta
│   │   │   ├── UI4_pause_green_pressed.png.meta
│   │   │   ├── UI4_pause_green_selected.png.meta
│   │   │   ├── UI4_pencil_icon_green.png.meta
│   │   │   ├── UI4_pivot.png.meta
│   │   │   ├── UI4_pivot_icon.png.meta
│   │   │   ├── UI4_pivot_pressed.png.meta
│   │   │   ├── UI4_pivot_select.png.meta
│   │   │   ├── UI4_play_anim_hover.png.meta
│   │   │   ├── UI4_play_anim_pressed.png.meta
│   │   │   ├── UI4_play_anim_regular.png.meta
│   │   │   ├── UI4_play_btn_pressed.png.meta
│   │   │   ├── UI4_play_btn_regular.png.meta
│   │   │   ├── UI4_play_btn_select.png.meta
│   │   │   ├── UI4_play_green.png.meta
│   │   │   ├── UI4_play_green_pressed.png.meta
│   │   │   ├── UI4_play_green_selected.png.meta
│   │   │   ├── UI4_play_panel_bk.png.meta
│   │   │   ├── UI4_plus_small_hover.png.meta
│   │   │   ├── UI4_plus_small_pressed.png.meta
│   │   │   ├── UI4_plus_small_regular.png.meta
│   │   │   ├── UI4_position_icon.png.meta
│   │   │   ├── UI4_prefab_link_big.png.meta
│   │   │   ├── UI4_preview_anim.png.meta
│   │   │   ├── UI4_red_edit_box.png.meta
│   │   │   ├── UI4_remove_asset_instance.png.meta
│   │   │   ├── UI4_remove_asset_instance_hover.png.meta
│   │   │   ├── UI4_remove_asset_instance_pressed.png.meta
│   │   │   ├── UI4_revert.png.meta
│   │   │   ├── UI4_revert_prefab.png.meta
│   │   │   ├── UI4_revert_prefab_pressed.png.meta
│   │   │   ├── UI4_revert_prefab_select.png.meta
│   │   │   ├── UI4_rewind_left.png.meta
│   │   │   ├── UI4_rewind_right.png.meta
│   │   │   ├── UI4_rotate_hover.png.meta
│   │   │   ├── UI4_rotate_icon.png.meta
│   │   │   ├── UI4_rotate_pressed.png.meta
│   │   │   ├── UI4_rotate_regular.png.meta
│   │   │   ├── UI4_rotate_tool.png.meta
│   │   │   ├── UI4_round_field.png.meta
│   │   │   ├── UI4_round_field_focused.png.meta
│   │   │   ├── UI4_round_field_gray.png.meta
│   │   │   ├── UI4_round_field_gray_pressed.png.meta
│   │   │   ├── UI4_round_field_gray_select.png.meta
│   │   │   ├── UI4_round_field_pressed.png.meta
│   │   │   ├── UI4_round_field_select.png.meta
│   │   │   ├── UI4_save_asset_instance.png.meta
│   │   │   ├── UI4_save_asset_instance_hover.png.meta
│   │   │   ├── UI4_save_asset_instance_pressed.png.meta
│   │   │   ├── UI4_save_gray copy.png.meta
│   │   │   ├── UI4_save_gray.png.meta
│   │   │   ├── UI4_save_gray_pressed.png.meta
│   │   │   ├── UI4_scale_icon.png.meta
│   │   │   ├── UI4_scale_tool.png.meta
│   │   │   ├── UI4_scene_icon.png.meta
│   │   │   ├── UI4_search_pressed.png.meta
│   │   │   ├── UI4_search_regular.png.meta
│   │   │   ├── UI4_search_select.png.meta
│   │   │   ├── UI4_select_tool.png.meta
│   │   │   ├── UI4_selected_key.png.meta
│   │   │   ├── UI4_selected_key_hover.png.meta
│   │   │   ├── UI4_selected_key_pressed.png.meta
│   │   │   ├── UI4_selected_map_key.png.meta
│   │   │   ├── UI4_selected_map_key_hover.png.meta
│   │   │   ├── UI4_selected_map_key_pressed.png.meta
│   │   │   ├── UI4_selection_frame.png.meta
│   │   │   ├── UI4_shadow_separator.png.meta
│   │   │   ├── UI4_shear_icon.png.meta
│   │   │   ├── UI4_small_panel_back.png.meta
│   │   │   ├── UI4_small_panel_down_back.png.meta
│   │   │   ├── UI4_small_trash_icon.png.meta
│   │   │   ├── UI4_square_button.png.meta
│   │   │   ├── UI4_square_button_pressed.png.meta
│   │   │   ├── UI4_square_button_select.png.meta
│   │   │   ├── UI4_square_field.png.meta
│   │   │   ├── UI4_step_btn_pressed .png.meta
│   │   │   ├── UI4_step_btn_pressed.png.meta
│   │   │   ├── UI4_step_btn_regular .png.meta
│   │   │   ├── UI4_step_btn_regular.png.meta
│   │   │   ├── UI4_step_btn_select.png.meta
│   │   │   ├── UI4_stop_anim_hover.png.meta
│   │   │   ├── UI4_stop_anim_pressed.png.meta
│   │   │   ├── UI4_stop_anim_regular.png.meta
│   │   │   ├── UI4_stop_btn_pressed.png.meta
│   │   │   ├── UI4_stop_btn_regular.png.meta
│   │   │   ├── UI4_stop_btn_select.png.meta
│   │   │   ├── UI4_sub_track.png.meta
│   │   │   ├── UI4_tag_big.png.meta
│   │   │   ├── UI4_time_line.png.meta
│   │   │   ├── UI4_time_line_hover.png.meta
│   │   │   ├── UI4_time_line_left.png.meta
│   │   │   ├── UI4_time_line_pressed.png.meta
│   │   │   ├── UI4_time_line_right.png.meta
│   │   │   ├── UI4_time_line_right_hover.png.meta
│   │   │   ├── UI4_time_line_right_pressed.png.meta
│   │   │   ├── UI4_trach_icon.png.meta
│   │   │   ├── UI4_transform_icon.png.meta
│   │   │   ├── UI4_transform_icon_white.png.meta
│   │   │   ├── UI4_tree_icon-223.png.meta
│   │   │   ├── UI4_tree_icon-61.png.meta
│   │   │   ├── UI4_tree_icon.png.meta
│   │   │   ├── UI4_tree_wnd_icon.png.meta
│   │   │   ├── UI4_unlock_icon.png.meta
│   │   │   ├── UI4_vector_type.png.meta
│   │   │   ├── UI4_weight_tool.png.meta
│   │   │   ├── UI4_window_frame_docked.png.meta
│   │   │   ├── UI4_window_frame_docked_tab.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_active_back copy.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_back.png.meta
│   │   │   ├── UI4_window_frame_docked_tab_inactive.png.meta
│   │   │   ├── UI4_window_frame_regular.png.meta
│   │   │   ├── UI_Background.png.meta
│   │   │   ├── UI_Box_focus.png.meta
│   │   │   ├── UI_Box_pressed.png.meta
│   │   │   ├── UI_Box_regular.png.meta
│   │   │   ├── UI_Box_select.png.meta
│   │   │   ├── UI_Check_bk.png.meta
│   │   │   ├── UI_Check_bk_focus.png.meta
│   │   │   ├── UI_Check_bk_pressed.png.meta
│   │   │   ├── UI_Check_bk_select.png.meta
│   │   │   ├── UI_Check_unknown.png.meta
│   │   │   ├── UI_Ckeck.png.meta
│   │   │   ├── UI_Close_button_pressed.png.meta
│   │   │   ├── UI_Close_button_regular.png.meta
│   │   │   ├── UI_Close_button_select.png.meta
│   │   │   ├── UI_Context_menu.png.meta
│   │   │   ├── UI_Context_menu_select copy.png.meta
│   │   │   ├── UI_Context_menu_select.png.meta
│   │   │   ├── UI_Context_menu_white.png.meta
│   │   │   ├── UI_Down_icn.png.meta
│   │   │   ├── UI_Editbox_focus.png.meta
│   │   │   ├── UI_Editbox_pressed.png.meta
│   │   │   ├── UI_Editbox_regular.png.meta
│   │   │   ├── UI_Editbox_select.png.meta
│   │   │   ├── UI_Hor_scrollbar_bk.png.meta
│   │   │   ├── UI_Hor_scrollhandle_pressed.png.meta
│   │   │   ├── UI_Hor_scrollhandle_regular.png.meta
│   │   │   ├── UI_Hor_scrollhandle_select.png.meta
│   │   │   ├── UI_ListBox_selection_hover.png.meta
│   │   │   ├── UI_ListBox_selection_pressed.png.meta
│   │   │   ├── UI_ListBox_selection_regular.png.meta
│   │   │   ├── UI_Options_button_pressed.png.meta
│   │   │   ├── UI_Options_button_regular.png.meta
│   │   │   ├── UI_Options_button_select.png.meta
│   │   │   ├── UI_Radio.png.meta
│   │   │   ├── UI_Radio_bk.png.meta
│   │   │   ├── UI_Radio_bk_focus.png.meta
│   │   │   ├── UI_Radio_bk_pressed.png.meta
│   │   │   ├── UI_Radio_bk_select.png.meta
│   │   │   ├── UI_Right_icn.png.meta
│   │   │   ├── UI_Right_icn_pressed.png.meta
│   │   │   ├── UI_Right_icn_select.png.meta
│   │   │   ├── UI_Separator.png.meta
│   │   │   ├── UI_ToolsPanel_bk.png.meta
│   │   │   ├── UI_Up_Menu.png.meta
│   │   │   ├── UI_Up_Menu_pressed.png.meta
│   │   │   ├── UI_Up_Menu_select.png.meta
│   │   │   ├── UI_Ver_scrollbar_bk.png.meta
│   │   │   ├── UI_Ver_scrollhandle_pressed.png.meta
│   │   │   ├── UI_Ver_scrollhandle_regular.png.meta
│   │   │   ├── UI_Ver_scrollhandle_select.png.meta
│   │   │   ├── UI_Ver_separator.png.meta
│   │   │   ├── UI_Window_place.png.meta
│   │   │   ├── UI_brush_tool.png.meta
│   │   │   ├── UI_brush_tool_pressed.png.meta
│   │   │   ├── UI_brush_tool_select.png.meta
│   │   │   ├── UI_button_focus.png.meta
│   │   │   ├── UI_button_pressed.png.meta
│   │   │   ├── UI_button_regular.png.meta
│   │   │   ├── UI_button_select.png.meta
│   │   │   ├── UI_frame_tool.png.meta
│   │   │   ├── UI_frame_tool_pressed.png.meta
│   │   │   ├── UI_frame_tool_select.png.meta
│   │   │   ├── UI_link_icon.png.meta
│   │   │   ├── UI_list_icon.png.meta
│   │   │   ├── UI_lock_icon.png.meta
│   │   │   ├── UI_move_tool.png.meta
│   │   │   ├── UI_move_tool_pressed.png.meta
│   │   │   ├── UI_move_tool_select.png.meta
│   │   │   ├── UI_o2_sign.png.meta
│   │   │   ├── UI_off_dot.png.meta
│   │   │   ├── UI_on_dot.png.meta
│   │   │   ├── UI_on_off_dot.png.meta
│   │   │   ├── UI_panel_button.png.meta
│   │   │   ├── UI_panel_button_focus.png.meta
│   │   │   ├── UI_panel_button_pressed.png.meta
│   │   │   ├── UI_panel_button_select.png.meta
│   │   │   ├── UI_panel_subpanel_bk.png.meta
│   │   │   ├── UI_panel_subpanel_pressed.png.meta
│   │   │   ├── UI_panel_subpanel_select.png.meta
│   │   │   ├── UI_pause_btn_inactive.png.meta
│   │   │   ├── UI_pause_btn_pressed.png.meta
│   │   │   ├── UI_pause_btn_regular.png.meta
│   │   │   ├── UI_pause_btn_select.png.meta
│   │   │   ├── UI_play_btn_regular.png.meta
│   │   │   ├── UI_play_btn_select copy.png.meta
│   │   │   ├── UI_play_btn_select.png.meta
│   │   │   ├── UI_play_panel_bk.png.meta
│   │   │   ├── UI_rotate_tool.png.meta
│   │   │   ├── UI_rotate_tool_pressed.png.meta
│   │   │   ├── UI_rotate_tool_select.png.meta
│   │   │   ├── UI_scale_tool.png.meta
│   │   │   ├── UI_scale_tool_pressed.png.meta
│   │   │   ├── UI_scale_tool_select.png.meta
│   │   │   ├── UI_search_pressed.png.meta
│   │   │   ├── UI_search_regular.png.meta
│   │   │   ├── UI_search_select.png.meta
│   │   │   ├── UI_select_tool.png.meta
│   │   │   ├── UI_select_tool_pressed.png.meta
│   │   │   ├── UI_select_tool_select.png.meta
│   │   │   ├── UI_square_button.png.meta
│   │   │   ├── UI_square_button_pressed.png.meta
│   │   │   ├── UI_square_button_select.png.meta
│   │   │   ├── UI_square_field.png.meta
│   │   │   ├── UI_step_btn_pressed.png.meta
│   │   │   ├── UI_step_btn_regular.png.meta
│   │   │   ├── UI_step_btn_select.png.meta
│   │   │   ├── UI_stop_btn_pressed.png.meta
│   │   │   ├── UI_stop_btn_regular.png.meta
│   │   │   ├── UI_stop_btn_select.png.meta
│   │   │   ├── UI_tree_icon.png.meta
│   │   │   ├── UI_unlock_icon.png.meta
│   │   │   ├── UI_window_frame_docked.png.meta
│   │   │   ├── UI_window_frame_docked_tab.png.meta
│   │   │   ├── UI_window_frame_docked_tab_active_back copy.png.meta
│   │   │   ├── UI_window_frame_docked_tab_back.png.meta
│   │   │   ├── UI_window_frame_docked_tab_inactive.png.meta
│   │   │   ├── UI_window_frame_regular.png.meta
│   │   │   ├── circle_hole_handle.png.meta
│   │   │   ├── function_icon.png.meta
│   │   │   ├── hor_hole_handle.png.meta
│   │   │   ├── hor_slice_line.png.meta
│   │   │   ├── ver_hole_handle.png.meta
│   │   │   └── ver_slice_line.png.meta
│   │   └── ui.meta
│   ├── Platforms/
│   │   ├── Mac/
│   │   │   └── Editor.xcodeproj/
│   │   │       ├── project.pbxproj
│   │   │       └── xcuserdata/
│   │   │           └── playrix.xcuserdatad/
│   │   │               └── xcschemes/
│   │   │                   └── xcschememanagement.plist
│   │   └── Windows/
│   │       ├── Editor.vcxproj
│   │       ├── Editor.vcxproj.filters
│   │       └── resource.h
│   └── Sources/
│       └── o2Editor/
│           ├── Actions/
│           │   ├── ActionsList.cpp
│           │   ├── ActionsList.h
│           │   ├── Create.cpp
│           │   ├── Create.h
│           │   ├── Delete.cpp
│           │   ├── Delete.h
│           │   ├── Enable.cpp
│           │   ├── Enable.h
│           │   ├── IAction.cpp
│           │   ├── IAction.h
│           │   ├── Lock.cpp
│           │   ├── Lock.h
│           │   ├── PropertyChange.cpp
│           │   ├── PropertyChange.h
│           │   ├── Reparent.cpp
│           │   ├── Reparent.h
│           │   ├── Select.cpp
│           │   ├── Select.h
│           │   ├── Transform.cpp
│           │   └── Transform.h
│           ├── Dialogs/
│           │   ├── ColorPickerDlg.cpp
│           │   ├── ColorPickerDlg.h
│           │   ├── CurveEditorDlg.cpp
│           │   ├── CurveEditorDlg.h
│           │   ├── EditNameDlg.cpp
│           │   ├── EditNameDlg.h
│           │   ├── KeyEditDlg.cpp
│           │   ├── KeyEditDlg.h
│           │   ├── System/
│           │   │   ├── Linux/
│           │   │   │   └── OpenSaveDialog.cpp
│           │   │   ├── Mac/
│           │   │   │   └── OpenSaveDialog.mm
│           │   │   ├── OpenSaveDialog.h
│           │   │   └── Windows/
│           │   │       └── OpenSaveDialog.cpp
│           │   ├── YesNoCancelDlg.cpp
│           │   └── YesNoCancelDlg.h
│           ├── EditorApplication.cpp
│           ├── EditorApplication.h
│           ├── EditorConfig.cpp
│           ├── EditorConfig.h
│           ├── MenuPanel.cpp
│           ├── MenuPanel.h
│           ├── Properties/
│           │   ├── Basic/
│           │   │   ├── ActorProperty.cpp
│           │   │   ├── ActorProperty.h
│           │   │   ├── AssetProperty.cpp
│           │   │   ├── AssetProperty.h
│           │   │   ├── BooleanProperty.cpp
│           │   │   ├── BooleanProperty.h
│           │   │   ├── BorderFloatProperty.cpp
│           │   │   ├── BorderFloatProperty.h
│           │   │   ├── BorderIntProperty.cpp
│           │   │   ├── BorderIntProperty.h
│           │   │   ├── ColorGradientProperty.cpp
│           │   │   ├── ColorGradientProperty.h
│           │   │   ├── ColorProperty.cpp
│           │   │   ├── ColorProperty.h
│           │   │   ├── ComponentProperty.cpp
│           │   │   ├── ComponentProperty.h
│           │   │   ├── CurveProperty.cpp
│           │   │   ├── CurveProperty.h
│           │   │   ├── EnumMaskProperty.h
│           │   │   ├── EnumProperty.cpp
│           │   │   ├── EnumProperty.h
│           │   │   ├── FloatProperty.cpp
│           │   │   ├── FloatProperty.h
│           │   │   ├── FunctionProperty.cpp
│           │   │   ├── FunctionProperty.h
│           │   │   ├── IntegerProperty.cpp
│           │   │   ├── IntegerProperty.h
│           │   │   ├── ObjectProperty.cpp
│           │   │   ├── ObjectProperty.h
│           │   │   ├── ObjectPtrProperty.cpp
│           │   │   ├── ObjectPtrProperty.h
│           │   │   ├── RectangleFloatProperty.cpp
│           │   │   ├── RectangleFloatProperty.h
│           │   │   ├── RectangleIntProperty.cpp
│           │   │   ├── RectangleIntProperty.h
│           │   │   ├── SceneLayerRefProperty.cpp
│           │   │   ├── SceneLayerRefProperty.h
│           │   │   ├── SceneLayersListProperty.cpp
│           │   │   ├── SceneLayersListProperty.h
│           │   │   ├── ScriptValueProperty.cpp
│           │   │   ├── ScriptValueProperty.h
│           │   │   ├── StringProperty.cpp
│           │   │   ├── StringProperty.h
│           │   │   ├── TagProperty.cpp
│           │   │   ├── TagProperty.h
│           │   │   ├── Vector2FloatProperty.cpp
│           │   │   ├── Vector2FloatProperty.h
│           │   │   ├── Vector2IntProperty.cpp
│           │   │   ├── Vector2IntProperty.h
│           │   │   ├── VectorProperty.cpp
│           │   │   ├── VectorProperty.h
│           │   │   ├── WStringProperty.cpp
│           │   │   └── WStringProperty.h
│           │   ├── IObjectPropertiesViewer.cpp
│           │   ├── IObjectPropertiesViewer.h
│           │   ├── IPropertyField.cpp
│           │   ├── IPropertyField.h
│           │   ├── ObjectViewer.cpp
│           │   ├── ObjectViewer.h
│           │   ├── Objects/
│           │   │   ├── Actors/
│           │   │   │   ├── CameraActorViewer.cpp
│           │   │   │   └── CameraActorViewer.h
│           │   │   ├── Assets/
│           │   │   │   ├── ImageAssetViewer.cpp
│           │   │   │   ├── ImageAssetViewer.h
│           │   │   │   ├── VectorFontAssetViewer.cpp
│           │   │   │   └── VectorFontAssetViewer.h
│           │   │   ├── Components/
│           │   │   │   ├── AnimationStateViewer.cpp
│           │   │   │   ├── AnimationStateViewer.h
│           │   │   │   ├── MeshComponentViewer.cpp
│           │   │   │   ├── MeshComponentViewer.h
│           │   │   │   ├── ParticlesEmitterComponentViewer.cpp
│           │   │   │   ├── ParticlesEmitterComponentViewer.h
│           │   │   │   ├── SkinnedMesh/
│           │   │   │   │   ├── SkinningMeshBoneComponentViewer.cpp
│           │   │   │   │   ├── SkinningMeshBoneComponentViewer.h
│           │   │   │   │   ├── SkinningMeshComponentViewer.cpp
│           │   │   │   │   ├── SkinningMeshComponentViewer.h
│           │   │   │   │   ├── SkinningMeshEditorLayer.cpp
│           │   │   │   │   └── SkinningMeshEditorLayer.h
│           │   │   │   ├── SplineColliderViewer.cpp
│           │   │   │   └── SplineColliderViewer.h
│           │   │   ├── DefaultObjectPropertiesViewer.cpp
│           │   │   ├── DefaultObjectPropertiesViewer.h
│           │   │   ├── ParticlesSplineEffectViewer.cpp
│           │   │   ├── ParticlesSplineEffectViewer.h
│           │   │   ├── SpriteViewer.cpp
│           │   │   ├── SpriteViewer.h
│           │   │   ├── TextViewer.cpp
│           │   │   └── TextViewer.h
│           │   ├── Properties.cpp
│           │   ├── Properties.h
│           │   ├── PropertiesContext.cpp
│           │   └── PropertiesContext.h
│           ├── Tools/
│           │   ├── CustomFrameTool.cpp
│           │   ├── CustomFrameTool.h
│           │   ├── FrameTool.cpp
│           │   ├── FrameTool.h
│           │   ├── IEditorTool.cpp
│           │   ├── IEditorTool.h
│           │   ├── ITransformTool.cpp
│           │   ├── ITransformTool.h
│           │   ├── MeshTopologyTool.cpp
│           │   ├── MeshTopologyTool.h
│           │   ├── MeshWeightsTool.cpp
│           │   ├── MeshWeightsTool.h
│           │   ├── MoveTool.cpp
│           │   ├── MoveTool.h
│           │   ├── RotateTool.cpp
│           │   ├── RotateTool.h
│           │   ├── ScaleTool.cpp
│           │   ├── ScaleTool.h
│           │   ├── SelectionTool.cpp
│           │   ├── SelectionTool.h
│           │   ├── SkeletonTool.cpp
│           │   ├── SkeletonTool.h
│           │   ├── SplineTool.cpp
│           │   └── SplineTool.h
│           ├── ToolsPanel.cpp
│           ├── ToolsPanel.h
│           ├── UI/
│           │   ├── CurveEditor/
│           │   │   ├── CurveActions.cpp
│           │   │   ├── CurveActions.h
│           │   │   ├── CurvesEditor.cpp
│           │   │   └── CurvesEditor.h
│           │   ├── CurvePreview.cpp
│           │   ├── CurvePreview.h
│           │   ├── FrameScrollView.cpp
│           │   ├── FrameScrollView.h
│           │   ├── ImageSlicesEditorWidget.cpp
│           │   ├── ImageSlicesEditorWidget.h
│           │   ├── ScrollView.cpp
│           │   ├── ScrollView.h
│           │   ├── SplineEditor/
│           │   │   ├── SplineEditor.cpp
│           │   │   └── SplineEditor.h
│           │   ├── SpoilerWithHead.cpp
│           │   ├── SpoilerWithHead.h
│           │   ├── Style/
│           │   │   ├── BasicUIStyle.cpp
│           │   │   ├── BasicUIStyle.h
│           │   │   ├── EditorUIStyle.cpp
│           │   │   └── EditorUIStyle.h
│           │   ├── TexturePreview.cpp
│           │   └── TexturePreview.h
│           ├── UIRoot.cpp
│           ├── UIRoot.h
│           ├── Utils/
│           │   ├── CommonTextures.cpp
│           │   └── CommonTextures.h
│           ├── Windows/
│           │   ├── AnimationStateGraphWindow/
│           │   │   ├── AnimationGraphTransitionViewer.cpp
│           │   │   ├── AnimationGraphTransitionViewer.h
│           │   │   ├── AnimationStateGraphEditor.cpp
│           │   │   ├── AnimationStateGraphEditor.h
│           │   │   ├── AnimationStateGraphWindow.cpp
│           │   │   ├── AnimationStateGraphWindow.h
│           │   │   ├── GraphAnimationStateViewer.cpp
│           │   │   └── GraphAnimationStateViewer.h
│           │   ├── AnimationWindow/
│           │   │   ├── AnimationKeysActions.cpp
│           │   │   ├── AnimationKeysActions.h
│           │   │   ├── AnimationWindow.cpp
│           │   │   ├── AnimationWindow.h
│           │   │   ├── CurvesSheet.cpp
│           │   │   ├── CurvesSheet.h
│           │   │   ├── KeyHandlesSheet.cpp
│           │   │   ├── KeyHandlesSheet.h
│           │   │   ├── PropertiesListDlg.cpp
│           │   │   ├── PropertiesListDlg.h
│           │   │   ├── Timeline.cpp
│           │   │   ├── Timeline.h
│           │   │   ├── TrackControls/
│           │   │   │   ├── AnimationKeyDragHandle.cpp
│           │   │   │   ├── AnimationKeyDragHandle.h
│           │   │   │   ├── AnimationTrackWrapper.h
│           │   │   │   ├── ITrackControl.cpp
│           │   │   │   ├── ITrackControl.h
│           │   │   │   ├── KeyFramesTrackControl.cpp
│           │   │   │   ├── KeyFramesTrackControl.h
│           │   │   │   ├── MapKeyFramesTrackControl.cpp
│           │   │   │   ├── MapKeyFramesTrackControl.h
│           │   │   │   ├── SubTrackControl.cpp
│           │   │   │   ├── SubTrackControl.h
│           │   │   │   ├── Vec2KeyFramesTrackControl.cpp
│           │   │   │   └── Vec2KeyFramesTrackControl.h
│           │   │   ├── Tree.cpp
│           │   │   └── Tree.h
│           │   ├── AssetsWindow/
│           │   │   ├── AssetIcon.cpp
│           │   │   ├── AssetIcon.h
│           │   │   ├── AssetsIconsScroll.cpp
│           │   │   ├── AssetsIconsScroll.h
│           │   │   ├── AssetsWindow.cpp
│           │   │   ├── AssetsWindow.h
│           │   │   ├── FoldersTree.cpp
│           │   │   └── FoldersTree.h
│           │   ├── DockWindowPlace.cpp
│           │   ├── DockWindowPlace.h
│           │   ├── DockableWindow.cpp
│           │   ├── DockableWindow.h
│           │   ├── GameWindow/
│           │   │   ├── GameWindow.cpp
│           │   │   └── GameWindow.h
│           │   ├── IAssetEditorWindow.cpp
│           │   ├── IAssetEditorWindow.h
│           │   ├── IEditorWindow.cpp
│           │   ├── IEditorWindow.h
│           │   ├── LogWindow/
│           │   │   ├── LogWindow.cpp
│           │   │   └── LogWindow.h
│           │   ├── MemoryAnalyzerWindow/
│           │   │   ├── MemoryAnalyzerWindow.cpp
│           │   │   └── MemoryAnalyzerWindow.h
│           │   ├── PropertiesWindow/
│           │   │   ├── ActorsViewer/
│           │   │   │   ├── ActorViewer.cpp
│           │   │   │   ├── ActorViewer.h
│           │   │   │   ├── AddComponentPanel.cpp
│           │   │   │   ├── AddComponentPanel.h
│           │   │   │   ├── DefaultActorComponentViewer.cpp
│           │   │   │   ├── DefaultActorComponentViewer.h
│           │   │   │   ├── DefaultActorHeaderViewer.cpp
│           │   │   │   ├── DefaultActorHeaderViewer.h
│           │   │   │   ├── DefaultActorPropertiesViewer.cpp
│           │   │   │   ├── DefaultActorPropertiesViewer.h
│           │   │   │   ├── DefaultActorTransformViewer.cpp
│           │   │   │   ├── DefaultActorTransformViewer.h
│           │   │   │   ├── IActorComponentViewer.cpp
│           │   │   │   ├── IActorComponentViewer.h
│           │   │   │   ├── IActorHeaderViewer.cpp
│           │   │   │   ├── IActorHeaderViewer.h
│           │   │   │   ├── IActorPropertiesViewer.cpp
│           │   │   │   ├── IActorPropertiesViewer.h
│           │   │   │   ├── IActorTransformViewer.cpp
│           │   │   │   └── IActorTransformViewer.h
│           │   │   ├── AssetPropertiesViewer.cpp
│           │   │   ├── AssetPropertiesViewer.h
│           │   │   ├── DefaultPropertiesViewer.cpp
│           │   │   ├── DefaultPropertiesViewer.h
│           │   │   ├── IPropertiesViewer.cpp
│           │   │   ├── IPropertiesViewer.h
│           │   │   ├── PropertiesWindow.cpp
│           │   │   ├── PropertiesWindow.h
│           │   │   └── WidgetLayerViewer/
│           │   │       ├── DefaultWidgetLayerHeadViewer.cpp
│           │   │       ├── DefaultWidgetLayerHeadViewer.h
│           │   │       ├── DefaultWidgetLayerLayoutViewer.cpp
│           │   │       ├── DefaultWidgetLayerLayoutViewer.h
│           │   │       ├── DefaultWidgetLayerPropertiesViewer.cpp
│           │   │       ├── DefaultWidgetLayerPropertiesViewer.h
│           │   │       ├── IWidgetLayerHeadViewer.cpp
│           │   │       ├── IWidgetLayerHeadViewer.h
│           │   │       ├── IWidgetLayerLayoutViewer.cpp
│           │   │       ├── IWidgetLayerLayoutViewer.h
│           │   │       ├── IWidgetLayerPropertiesViewer.cpp
│           │   │       ├── IWidgetLayerPropertiesViewer.h
│           │   │       ├── WidgetLayerViewer.cpp
│           │   │       └── WidgetLayerViewer.h
│           │   ├── SceneWindow/
│           │   │   ├── LayersPopup.cpp
│           │   │   ├── LayersPopup.h
│           │   │   ├── SceneDragHandle.cpp
│           │   │   ├── SceneDragHandle.h
│           │   │   ├── SceneEditScreen.cpp
│           │   │   ├── SceneEditScreen.h
│           │   │   ├── SceneEditorLayer.h
│           │   │   ├── SceneWindow.cpp
│           │   │   └── SceneWindow.h
│           │   ├── TreeWindow/
│           │   │   ├── DrawOrderTree.cpp
│           │   │   ├── DrawOrderTree.h
│           │   │   ├── SceneHierarchyTree.cpp
│           │   │   ├── SceneHierarchyTree.h
│           │   │   ├── TreeWindow.cpp
│           │   │   └── TreeWindow.h
│           │   ├── WindowsLayout.cpp
│           │   ├── WindowsLayout.h
│           │   ├── WindowsManager.cpp
│           │   └── WindowsManager.h
│           ├── o2Editor.cpp
│           ├── stdafx.cpp
│           └── stdafx.h
├── FindOpenGLES2.cmake
├── Framework/
│   ├── 3rdPartyLibs/
│   │   ├── Box2D/
│   │   │   ├── Box2D.h
│   │   │   ├── Box2DConfig.cmake
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Collision/
│   │   │   │   ├── Shapes/
│   │   │   │   │   ├── b2ChainShape.cpp
│   │   │   │   │   ├── b2ChainShape.h
│   │   │   │   │   ├── b2CircleShape.cpp
│   │   │   │   │   ├── b2CircleShape.h
│   │   │   │   │   ├── b2EdgeShape.cpp
│   │   │   │   │   ├── b2EdgeShape.h
│   │   │   │   │   ├── b2PolygonShape.cpp
│   │   │   │   │   ├── b2PolygonShape.h
│   │   │   │   │   └── b2Shape.h
│   │   │   │   ├── b2BroadPhase.cpp
│   │   │   │   ├── b2BroadPhase.h
│   │   │   │   ├── b2CollideCircle.cpp
│   │   │   │   ├── b2CollideEdge.cpp
│   │   │   │   ├── b2CollidePolygon.cpp
│   │   │   │   ├── b2Collision.cpp
│   │   │   │   ├── b2Collision.h
│   │   │   │   ├── b2Distance.cpp
│   │   │   │   ├── b2Distance.h
│   │   │   │   ├── b2DynamicTree.cpp
│   │   │   │   ├── b2DynamicTree.h
│   │   │   │   ├── b2TimeOfImpact.cpp
│   │   │   │   └── b2TimeOfImpact.h
│   │   │   ├── Common/
│   │   │   │   ├── b2BlockAllocator.cpp
│   │   │   │   ├── b2BlockAllocator.h
│   │   │   │   ├── b2Draw.cpp
│   │   │   │   ├── b2Draw.h
│   │   │   │   ├── b2GrowableStack.h
│   │   │   │   ├── b2Math.cpp
│   │   │   │   ├── b2Math.h
│   │   │   │   ├── b2Settings.cpp
│   │   │   │   ├── b2Settings.h
│   │   │   │   ├── b2StackAllocator.cpp
│   │   │   │   ├── b2StackAllocator.h
│   │   │   │   ├── b2Timer.cpp
│   │   │   │   └── b2Timer.h
│   │   │   ├── Dynamics/
│   │   │   │   ├── Contacts/
│   │   │   │   │   ├── b2ChainAndCircleContact.cpp
│   │   │   │   │   ├── b2ChainAndCircleContact.h
│   │   │   │   │   ├── b2ChainAndPolygonContact.cpp
│   │   │   │   │   ├── b2ChainAndPolygonContact.h
│   │   │   │   │   ├── b2CircleContact.cpp
│   │   │   │   │   ├── b2CircleContact.h
│   │   │   │   │   ├── b2Contact.cpp
│   │   │   │   │   ├── b2Contact.h
│   │   │   │   │   ├── b2ContactSolver.cpp
│   │   │   │   │   ├── b2ContactSolver.h
│   │   │   │   │   ├── b2EdgeAndCircleContact.cpp
│   │   │   │   │   ├── b2EdgeAndCircleContact.h
│   │   │   │   │   ├── b2EdgeAndPolygonContact.cpp
│   │   │   │   │   ├── b2EdgeAndPolygonContact.h
│   │   │   │   │   ├── b2PolygonAndCircleContact.cpp
│   │   │   │   │   ├── b2PolygonAndCircleContact.h
│   │   │   │   │   ├── b2PolygonContact.cpp
│   │   │   │   │   └── b2PolygonContact.h
│   │   │   │   ├── Joints/
│   │   │   │   │   ├── b2DistanceJoint.cpp
│   │   │   │   │   ├── b2DistanceJoint.h
│   │   │   │   │   ├── b2FrictionJoint.cpp
│   │   │   │   │   ├── b2FrictionJoint.h
│   │   │   │   │   ├── b2GearJoint.cpp
│   │   │   │   │   ├── b2GearJoint.h
│   │   │   │   │   ├── b2Joint.cpp
│   │   │   │   │   ├── b2Joint.h
│   │   │   │   │   ├── b2MotorJoint.cpp
│   │   │   │   │   ├── b2MotorJoint.h
│   │   │   │   │   ├── b2MouseJoint.cpp
│   │   │   │   │   ├── b2MouseJoint.h
│   │   │   │   │   ├── b2PrismaticJoint.cpp
│   │   │   │   │   ├── b2PrismaticJoint.h
│   │   │   │   │   ├── b2PulleyJoint.cpp
│   │   │   │   │   ├── b2PulleyJoint.h
│   │   │   │   │   ├── b2RevoluteJoint.cpp
│   │   │   │   │   ├── b2RevoluteJoint.h
│   │   │   │   │   ├── b2RopeJoint.cpp
│   │   │   │   │   ├── b2RopeJoint.h
│   │   │   │   │   ├── b2WeldJoint.cpp
│   │   │   │   │   ├── b2WeldJoint.h
│   │   │   │   │   ├── b2WheelJoint.cpp
│   │   │   │   │   └── b2WheelJoint.h
│   │   │   │   ├── b2Body.cpp
│   │   │   │   ├── b2Body.h
│   │   │   │   ├── b2ContactManager.cpp
│   │   │   │   ├── b2ContactManager.h
│   │   │   │   ├── b2Fixture.cpp
│   │   │   │   ├── b2Fixture.h
│   │   │   │   ├── b2Island.cpp
│   │   │   │   ├── b2Island.h
│   │   │   │   ├── b2TimeStep.h
│   │   │   │   ├── b2World.cpp
│   │   │   │   ├── b2World.h
│   │   │   │   ├── b2WorldCallbacks.cpp
│   │   │   │   └── b2WorldCallbacks.h
│   │   │   └── Rope/
│   │   │       ├── b2Rope.cpp
│   │   │       └── b2Rope.h
│   │   ├── CDT/
│   │   │   ├── LICENSE
│   │   │   ├── extras/
│   │   │   │   ├── InitializeWithGrid.h
│   │   │   │   └── VerifyTopology.h
│   │   │   ├── include/
│   │   │   │   ├── CDT.h
│   │   │   │   ├── CDT.hpp
│   │   │   │   ├── CDTUtils.h
│   │   │   │   ├── CDTUtils.hpp
│   │   │   │   ├── KDTree.h
│   │   │   │   ├── LocatorKDTree.h
│   │   │   │   ├── predicates.h
│   │   │   │   └── remove_at.hpp
│   │   │   └── src/
│   │   │       └── CDT.cpp
│   │   ├── CMakeLists.txt
│   │   ├── CheckGCCVersion.cmake
│   │   ├── FreeType/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── devel/
│   │   │   │   ├── ft2build.h
│   │   │   │   └── ftoption.h
│   │   │   ├── freetype.cmake
│   │   │   ├── include/
│   │   │   │   ├── config/
│   │   │   │   │   ├── ftconfig.h
│   │   │   │   │   ├── ftheader.h
│   │   │   │   │   ├── ftmodule.h
│   │   │   │   │   ├── ftoption.h
│   │   │   │   │   └── ftstdlib.h
│   │   │   │   ├── freetype.h
│   │   │   │   ├── ft2build.h
│   │   │   │   ├── ftadvanc.h
│   │   │   │   ├── ftautoh.h
│   │   │   │   ├── ftbbox.h
│   │   │   │   ├── ftbdf.h
│   │   │   │   ├── ftbitmap.h
│   │   │   │   ├── ftbzip2.h
│   │   │   │   ├── ftcache.h
│   │   │   │   ├── ftcffdrv.h
│   │   │   │   ├── ftchapters.h
│   │   │   │   ├── ftcid.h
│   │   │   │   ├── fterrdef.h
│   │   │   │   ├── fterrors.h
│   │   │   │   ├── ftgasp.h
│   │   │   │   ├── ftglyph.h
│   │   │   │   ├── ftgxval.h
│   │   │   │   ├── ftgzip.h
│   │   │   │   ├── ftimage.h
│   │   │   │   ├── ftincrem.h
│   │   │   │   ├── ftlcdfil.h
│   │   │   │   ├── ftlist.h
│   │   │   │   ├── ftlzw.h
│   │   │   │   ├── ftmac.h
│   │   │   │   ├── ftmm.h
│   │   │   │   ├── ftmodapi.h
│   │   │   │   ├── ftmoderr.h
│   │   │   │   ├── ftotval.h
│   │   │   │   ├── ftoutln.h
│   │   │   │   ├── ftpfr.h
│   │   │   │   ├── ftrender.h
│   │   │   │   ├── ftsizes.h
│   │   │   │   ├── ftsnames.h
│   │   │   │   ├── ftstroke.h
│   │   │   │   ├── ftsynth.h
│   │   │   │   ├── ftsystem.h
│   │   │   │   ├── fttrigon.h
│   │   │   │   ├── ftttdrv.h
│   │   │   │   ├── fttypes.h
│   │   │   │   ├── ftwinfnt.h
│   │   │   │   ├── ftxf86.h
│   │   │   │   ├── internal/
│   │   │   │   │   ├── autohint.h
│   │   │   │   │   ├── ftcalc.h
│   │   │   │   │   ├── ftdebug.h
│   │   │   │   │   ├── ftdriver.h
│   │   │   │   │   ├── ftgloadr.h
│   │   │   │   │   ├── ftmemory.h
│   │   │   │   │   ├── ftobjs.h
│   │   │   │   │   ├── ftpic.h
│   │   │   │   │   ├── ftrfork.h
│   │   │   │   │   ├── ftserv.h
│   │   │   │   │   ├── ftstream.h
│   │   │   │   │   ├── fttrace.h
│   │   │   │   │   ├── ftvalid.h
│   │   │   │   │   ├── internal.h
│   │   │   │   │   ├── psaux.h
│   │   │   │   │   ├── pshints.h
│   │   │   │   │   ├── services/
│   │   │   │   │   │   ├── svbdf.h
│   │   │   │   │   │   ├── svcid.h
│   │   │   │   │   │   ├── svgldict.h
│   │   │   │   │   │   ├── svgxval.h
│   │   │   │   │   │   ├── svkern.h
│   │   │   │   │   │   ├── svmm.h
│   │   │   │   │   │   ├── svotval.h
│   │   │   │   │   │   ├── svpfr.h
│   │   │   │   │   │   ├── svpostnm.h
│   │   │   │   │   │   ├── svprop.h
│   │   │   │   │   │   ├── svpscmap.h
│   │   │   │   │   │   ├── svpsinfo.h
│   │   │   │   │   │   ├── svsfnt.h
│   │   │   │   │   │   ├── svttcmap.h
│   │   │   │   │   │   ├── svtteng.h
│   │   │   │   │   │   ├── svttglyf.h
│   │   │   │   │   │   ├── svwinfnt.h
│   │   │   │   │   │   └── svxf86nm.h
│   │   │   │   │   ├── sfnt.h
│   │   │   │   │   ├── t1types.h
│   │   │   │   │   └── tttypes.h
│   │   │   │   ├── t1tables.h
│   │   │   │   ├── ttnameid.h
│   │   │   │   ├── tttables.h
│   │   │   │   ├── tttags.h
│   │   │   │   └── ttunpat.h
│   │   │   └── src/
│   │   │       ├── autofit/
│   │   │       │   ├── afangles.c
│   │   │       │   ├── afangles.h
│   │   │       │   ├── afblue.c
│   │   │       │   ├── afblue.cin
│   │   │       │   ├── afblue.h
│   │   │       │   ├── afblue.hin
│   │   │       │   ├── afcjk.c
│   │   │       │   ├── afcjk.h
│   │   │       │   ├── afcover.h
│   │   │       │   ├── afdummy.c
│   │   │       │   ├── afdummy.h
│   │   │       │   ├── aferrors.h
│   │   │       │   ├── afglobal.c
│   │   │       │   ├── afglobal.h
│   │   │       │   ├── afhints.c
│   │   │       │   ├── afhints.h
│   │   │       │   ├── afindic.c
│   │   │       │   ├── afindic.h
│   │   │       │   ├── aflatin.c
│   │   │       │   ├── aflatin.h
│   │   │       │   ├── aflatin2.c
│   │   │       │   ├── aflatin2.h
│   │   │       │   ├── afloader.c
│   │   │       │   ├── afloader.h
│   │   │       │   ├── afmodule.c
│   │   │       │   ├── afmodule.h
│   │   │       │   ├── afpic.c
│   │   │       │   ├── afpic.h
│   │   │       │   ├── afranges.c
│   │   │       │   ├── afranges.h
│   │   │       │   ├── afscript.h
│   │   │       │   ├── afstyles.h
│   │   │       │   ├── aftypes.h
│   │   │       │   ├── afwarp.c
│   │   │       │   ├── afwarp.h
│   │   │       │   ├── afwrtsys.h
│   │   │       │   ├── autofit.c
│   │   │       │   ├── hbshim.c
│   │   │       │   └── hbshim.h
│   │   │       ├── base/
│   │   │       │   ├── basepic.c
│   │   │       │   ├── basepic.h
│   │   │       │   ├── ftadvanc.c
│   │   │       │   ├── ftapi.c
│   │   │       │   ├── ftbase.c
│   │   │       │   ├── ftbase.h
│   │   │       │   ├── ftbbox.c
│   │   │       │   ├── ftbdf.c
│   │   │       │   ├── ftbitmap.c
│   │   │       │   ├── ftcalc.c
│   │   │       │   ├── ftcid.c
│   │   │       │   ├── ftdbgmem.c
│   │   │       │   ├── ftdebug.c
│   │   │       │   ├── ftfstype.c
│   │   │       │   ├── ftgasp.c
│   │   │       │   ├── ftgloadr.c
│   │   │       │   ├── ftglyph.c
│   │   │       │   ├── ftgxval.c
│   │   │       │   ├── ftinit.c
│   │   │       │   ├── ftlcdfil.c
│   │   │       │   ├── ftmac.c
│   │   │       │   ├── ftmm.c
│   │   │       │   ├── ftobjs.c
│   │   │       │   ├── ftotval.c
│   │   │       │   ├── ftoutln.c
│   │   │       │   ├── ftpatent.c
│   │   │       │   ├── ftpfr.c
│   │   │       │   ├── ftpic.c
│   │   │       │   ├── ftrfork.c
│   │   │       │   ├── ftsnames.c
│   │   │       │   ├── ftstream.c
│   │   │       │   ├── ftstroke.c
│   │   │       │   ├── ftsynth.c
│   │   │       │   ├── ftsystem.c
│   │   │       │   ├── fttrigon.c
│   │   │       │   ├── fttype1.c
│   │   │       │   ├── ftutil.c
│   │   │       │   ├── ftwinfnt.c
│   │   │       │   ├── ftxf86.c
│   │   │       │   ├── md5.c
│   │   │       │   └── md5.h
│   │   │       ├── bdf/
│   │   │       │   ├── README
│   │   │       │   ├── bdf.c
│   │   │       │   ├── bdf.h
│   │   │       │   ├── bdfdrivr.c
│   │   │       │   ├── bdfdrivr.h
│   │   │       │   ├── bdferror.h
│   │   │       │   └── bdflib.c
│   │   │       ├── bzip2/
│   │   │       │   └── ftbzip2.c
│   │   │       ├── cache/
│   │   │       │   ├── ftcache.c
│   │   │       │   ├── ftcbasic.c
│   │   │       │   ├── ftccache.c
│   │   │       │   ├── ftccache.h
│   │   │       │   ├── ftccback.h
│   │   │       │   ├── ftccmap.c
│   │   │       │   ├── ftcerror.h
│   │   │       │   ├── ftcglyph.c
│   │   │       │   ├── ftcglyph.h
│   │   │       │   ├── ftcimage.c
│   │   │       │   ├── ftcimage.h
│   │   │       │   ├── ftcmanag.c
│   │   │       │   ├── ftcmanag.h
│   │   │       │   ├── ftcmru.c
│   │   │       │   ├── ftcmru.h
│   │   │       │   ├── ftcsbits.c
│   │   │       │   └── ftcsbits.h
│   │   │       ├── cff/
│   │   │       │   ├── cf2arrst.c
│   │   │       │   ├── cf2arrst.h
│   │   │       │   ├── cf2blues.c
│   │   │       │   ├── cf2blues.h
│   │   │       │   ├── cf2error.c
│   │   │       │   ├── cf2error.h
│   │   │       │   ├── cf2fixed.h
│   │   │       │   ├── cf2font.c
│   │   │       │   ├── cf2font.h
│   │   │       │   ├── cf2ft.c
│   │   │       │   ├── cf2ft.h
│   │   │       │   ├── cf2glue.h
│   │   │       │   ├── cf2hints.c
│   │   │       │   ├── cf2hints.h
│   │   │       │   ├── cf2intrp.c
│   │   │       │   ├── cf2intrp.h
│   │   │       │   ├── cf2read.c
│   │   │       │   ├── cf2read.h
│   │   │       │   ├── cf2stack.c
│   │   │       │   ├── cf2stack.h
│   │   │       │   ├── cf2types.h
│   │   │       │   ├── cff.c
│   │   │       │   ├── cffcmap.c
│   │   │       │   ├── cffcmap.h
│   │   │       │   ├── cffdrivr.c
│   │   │       │   ├── cffdrivr.h
│   │   │       │   ├── cfferrs.h
│   │   │       │   ├── cffgload.c
│   │   │       │   ├── cffgload.h
│   │   │       │   ├── cffload.c
│   │   │       │   ├── cffload.h
│   │   │       │   ├── cffobjs.c
│   │   │       │   ├── cffobjs.h
│   │   │       │   ├── cffparse.c
│   │   │       │   ├── cffparse.h
│   │   │       │   ├── cffpic.c
│   │   │       │   ├── cffpic.h
│   │   │       │   ├── cfftoken.h
│   │   │       │   └── cfftypes.h
│   │   │       ├── cid/
│   │   │       │   ├── ciderrs.h
│   │   │       │   ├── cidgload.c
│   │   │       │   ├── cidgload.h
│   │   │       │   ├── cidload.c
│   │   │       │   ├── cidload.h
│   │   │       │   ├── cidobjs.c
│   │   │       │   ├── cidobjs.h
│   │   │       │   ├── cidparse.c
│   │   │       │   ├── cidparse.h
│   │   │       │   ├── cidriver.c
│   │   │       │   ├── cidriver.h
│   │   │       │   ├── cidtoken.h
│   │   │       │   └── type1cid.c
│   │   │       ├── gxvalid/
│   │   │       │   ├── README
│   │   │       │   ├── gxvalid.c
│   │   │       │   ├── gxvalid.h
│   │   │       │   ├── gxvbsln.c
│   │   │       │   ├── gxvcommn.c
│   │   │       │   ├── gxvcommn.h
│   │   │       │   ├── gxverror.h
│   │   │       │   ├── gxvfeat.c
│   │   │       │   ├── gxvfeat.h
│   │   │       │   ├── gxvfgen.c
│   │   │       │   ├── gxvjust.c
│   │   │       │   ├── gxvkern.c
│   │   │       │   ├── gxvlcar.c
│   │   │       │   ├── gxvmod.c
│   │   │       │   ├── gxvmod.h
│   │   │       │   ├── gxvmort.c
│   │   │       │   ├── gxvmort.h
│   │   │       │   ├── gxvmort0.c
│   │   │       │   ├── gxvmort1.c
│   │   │       │   ├── gxvmort2.c
│   │   │       │   ├── gxvmort4.c
│   │   │       │   ├── gxvmort5.c
│   │   │       │   ├── gxvmorx.c
│   │   │       │   ├── gxvmorx.h
│   │   │       │   ├── gxvmorx0.c
│   │   │       │   ├── gxvmorx1.c
│   │   │       │   ├── gxvmorx2.c
│   │   │       │   ├── gxvmorx4.c
│   │   │       │   ├── gxvmorx5.c
│   │   │       │   ├── gxvopbd.c
│   │   │       │   ├── gxvprop.c
│   │   │       │   └── gxvtrak.c
│   │   │       ├── gzip/
│   │   │       │   ├── adler32.c
│   │   │       │   ├── ftgzip.c
│   │   │       │   ├── infblock.c
│   │   │       │   ├── infblock.h
│   │   │       │   ├── infcodes.c
│   │   │       │   ├── infcodes.h
│   │   │       │   ├── inffixed.h
│   │   │       │   ├── inflate.c
│   │   │       │   ├── inftrees.c
│   │   │       │   ├── inftrees.h
│   │   │       │   ├── infutil.c
│   │   │       │   ├── infutil.h
│   │   │       │   ├── zconf.h
│   │   │       │   ├── zlib.h
│   │   │       │   ├── zutil.c
│   │   │       │   └── zutil.h
│   │   │       ├── lzw/
│   │   │       │   ├── ftlzw.c
│   │   │       │   ├── ftzopen.c
│   │   │       │   └── ftzopen.h
│   │   │       ├── otvalid/
│   │   │       │   ├── otvalid.c
│   │   │       │   ├── otvalid.h
│   │   │       │   ├── otvbase.c
│   │   │       │   ├── otvcommn.c
│   │   │       │   ├── otvcommn.h
│   │   │       │   ├── otverror.h
│   │   │       │   ├── otvgdef.c
│   │   │       │   ├── otvgpos.c
│   │   │       │   ├── otvgpos.h
│   │   │       │   ├── otvgsub.c
│   │   │       │   ├── otvjstf.c
│   │   │       │   ├── otvmath.c
│   │   │       │   ├── otvmod.c
│   │   │       │   └── otvmod.h
│   │   │       ├── pcf/
│   │   │       │   ├── README
│   │   │       │   ├── pcf.c
│   │   │       │   ├── pcf.h
│   │   │       │   ├── pcfdrivr.c
│   │   │       │   ├── pcfdrivr.h
│   │   │       │   ├── pcferror.h
│   │   │       │   ├── pcfread.c
│   │   │       │   ├── pcfread.h
│   │   │       │   ├── pcfutil.c
│   │   │       │   └── pcfutil.h
│   │   │       ├── pfr/
│   │   │       │   ├── pfr.c
│   │   │       │   ├── pfrcmap.c
│   │   │       │   ├── pfrcmap.h
│   │   │       │   ├── pfrdrivr.c
│   │   │       │   ├── pfrdrivr.h
│   │   │       │   ├── pfrerror.h
│   │   │       │   ├── pfrgload.c
│   │   │       │   ├── pfrgload.h
│   │   │       │   ├── pfrload.c
│   │   │       │   ├── pfrload.h
│   │   │       │   ├── pfrobjs.c
│   │   │       │   ├── pfrobjs.h
│   │   │       │   ├── pfrsbit.c
│   │   │       │   ├── pfrsbit.h
│   │   │       │   └── pfrtypes.h
│   │   │       ├── psaux/
│   │   │       │   ├── afmparse.c
│   │   │       │   ├── afmparse.h
│   │   │       │   ├── psaux.c
│   │   │       │   ├── psauxerr.h
│   │   │       │   ├── psauxmod.c
│   │   │       │   ├── psauxmod.h
│   │   │       │   ├── psconv.c
│   │   │       │   ├── psconv.h
│   │   │       │   ├── psobjs.c
│   │   │       │   ├── psobjs.h
│   │   │       │   ├── t1cmap.c
│   │   │       │   ├── t1cmap.h
│   │   │       │   ├── t1decode.c
│   │   │       │   └── t1decode.h
│   │   │       ├── pshinter/
│   │   │       │   ├── pshalgo.c
│   │   │       │   ├── pshalgo.h
│   │   │       │   ├── pshglob.c
│   │   │       │   ├── pshglob.h
│   │   │       │   ├── pshinter.c
│   │   │       │   ├── pshmod.c
│   │   │       │   ├── pshmod.h
│   │   │       │   ├── pshnterr.h
│   │   │       │   ├── pshpic.c
│   │   │       │   ├── pshpic.h
│   │   │       │   ├── pshrec.c
│   │   │       │   └── pshrec.h
│   │   │       ├── psnames/
│   │   │       │   ├── psmodule.c
│   │   │       │   ├── psmodule.h
│   │   │       │   ├── psnamerr.h
│   │   │       │   ├── psnames.c
│   │   │       │   ├── pspic.c
│   │   │       │   ├── pspic.h
│   │   │       │   └── pstables.h
│   │   │       ├── raster/
│   │   │       │   ├── ftmisc.h
│   │   │       │   ├── ftraster.c
│   │   │       │   ├── ftraster.h
│   │   │       │   ├── ftrend1.c
│   │   │       │   ├── ftrend1.h
│   │   │       │   ├── raster.c
│   │   │       │   ├── rasterrs.h
│   │   │       │   ├── rastpic.c
│   │   │       │   └── rastpic.h
│   │   │       ├── sfnt/
│   │   │       │   ├── pngshim.c
│   │   │       │   ├── pngshim.h
│   │   │       │   ├── sfdriver.c
│   │   │       │   ├── sfdriver.h
│   │   │       │   ├── sferrors.h
│   │   │       │   ├── sfnt.c
│   │   │       │   ├── sfntpic.c
│   │   │       │   ├── sfntpic.h
│   │   │       │   ├── sfobjs.c
│   │   │       │   ├── sfobjs.h
│   │   │       │   ├── ttbdf.c
│   │   │       │   ├── ttbdf.h
│   │   │       │   ├── ttcmap.c
│   │   │       │   ├── ttcmap.h
│   │   │       │   ├── ttcmapc.h
│   │   │       │   ├── ttkern.c
│   │   │       │   ├── ttkern.h
│   │   │       │   ├── ttload.c
│   │   │       │   ├── ttload.h
│   │   │       │   ├── ttmtx.c
│   │   │       │   ├── ttmtx.h
│   │   │       │   ├── ttpost.c
│   │   │       │   ├── ttpost.h
│   │   │       │   ├── ttsbit.c
│   │   │       │   └── ttsbit.h
│   │   │       ├── smooth/
│   │   │       │   ├── ftgrays.c
│   │   │       │   ├── ftgrays.h
│   │   │       │   ├── ftsmerrs.h
│   │   │       │   ├── ftsmooth.c
│   │   │       │   ├── ftsmooth.h
│   │   │       │   ├── ftspic.c
│   │   │       │   ├── ftspic.h
│   │   │       │   └── smooth.c
│   │   │       ├── truetype/
│   │   │       │   ├── truetype.c
│   │   │       │   ├── ttdriver.c
│   │   │       │   ├── ttdriver.h
│   │   │       │   ├── tterrors.h
│   │   │       │   ├── ttgload.c
│   │   │       │   ├── ttgload.h
│   │   │       │   ├── ttgxvar.c
│   │   │       │   ├── ttgxvar.h
│   │   │       │   ├── ttinterp.c
│   │   │       │   ├── ttinterp.h
│   │   │       │   ├── ttobjs.c
│   │   │       │   ├── ttobjs.h
│   │   │       │   ├── ttpic.c
│   │   │       │   ├── ttpic.h
│   │   │       │   ├── ttpload.c
│   │   │       │   ├── ttpload.h
│   │   │       │   ├── ttsubpix.c
│   │   │       │   └── ttsubpix.h
│   │   │       ├── type1/
│   │   │       │   ├── t1afm.c
│   │   │       │   ├── t1afm.h
│   │   │       │   ├── t1driver.c
│   │   │       │   ├── t1driver.h
│   │   │       │   ├── t1errors.h
│   │   │       │   ├── t1gload.c
│   │   │       │   ├── t1gload.h
│   │   │       │   ├── t1load.c
│   │   │       │   ├── t1load.h
│   │   │       │   ├── t1objs.c
│   │   │       │   ├── t1objs.h
│   │   │       │   ├── t1parse.c
│   │   │       │   ├── t1parse.h
│   │   │       │   ├── t1tokens.h
│   │   │       │   └── type1.c
│   │   │       ├── type42/
│   │   │       │   ├── t42drivr.c
│   │   │       │   ├── t42drivr.h
│   │   │       │   ├── t42error.h
│   │   │       │   ├── t42objs.c
│   │   │       │   ├── t42objs.h
│   │   │       │   ├── t42parse.c
│   │   │       │   ├── t42parse.h
│   │   │       │   ├── t42types.h
│   │   │       │   └── type42.c
│   │   │       └── winfonts/
│   │   │           ├── fnterrs.h
│   │   │           ├── winfnt.c
│   │   │           └── winfnt.h
│   │   ├── OpenGL/
│   │   │   ├── glext.h
│   │   │   └── wglext.h
│   │   ├── Spine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── flags.cmake
│   │   │   └── spine-cpp/
│   │   │       ├── include/
│   │   │       │   └── spine/
│   │   │       │       ├── Animation.h
│   │   │       │       ├── AnimationState.h
│   │   │       │       ├── AnimationStateData.h
│   │   │       │       ├── Atlas.h
│   │   │       │       ├── AtlasAttachmentLoader.h
│   │   │       │       ├── Attachment.h
│   │   │       │       ├── AttachmentLoader.h
│   │   │       │       ├── AttachmentTimeline.h
│   │   │       │       ├── AttachmentType.h
│   │   │       │       ├── BlendMode.h
│   │   │       │       ├── BlockAllocator.h
│   │   │       │       ├── Bone.h
│   │   │       │       ├── BoneData.h
│   │   │       │       ├── BoundingBoxAttachment.h
│   │   │       │       ├── ClippingAttachment.h
│   │   │       │       ├── Color.h
│   │   │       │       ├── ColorTimeline.h
│   │   │       │       ├── ConstraintData.h
│   │   │       │       ├── ContainerUtil.h
│   │   │       │       ├── CurveTimeline.h
│   │   │       │       ├── Debug.h
│   │   │       │       ├── DeformTimeline.h
│   │   │       │       ├── DrawOrderTimeline.h
│   │   │       │       ├── Event.h
│   │   │       │       ├── EventData.h
│   │   │       │       ├── EventTimeline.h
│   │   │       │       ├── Extension.h
│   │   │       │       ├── HasRendererObject.h
│   │   │       │       ├── HashMap.h
│   │   │       │       ├── IkConstraint.h
│   │   │       │       ├── IkConstraintData.h
│   │   │       │       ├── IkConstraintTimeline.h
│   │   │       │       ├── Inherit.h
│   │   │       │       ├── InheritTimeline.h
│   │   │       │       ├── Json.h
│   │   │       │       ├── LinkedMesh.h
│   │   │       │       ├── Log.h
│   │   │       │       ├── MathUtil.h
│   │   │       │       ├── MeshAttachment.h
│   │   │       │       ├── MixBlend.h
│   │   │       │       ├── MixDirection.h
│   │   │       │       ├── PathAttachment.h
│   │   │       │       ├── PathConstraint.h
│   │   │       │       ├── PathConstraintData.h
│   │   │       │       ├── PathConstraintMixTimeline.h
│   │   │       │       ├── PathConstraintPositionTimeline.h
│   │   │       │       ├── PathConstraintSpacingTimeline.h
│   │   │       │       ├── Physics.h
│   │   │       │       ├── PhysicsConstraint.h
│   │   │       │       ├── PhysicsConstraintData.h
│   │   │       │       ├── PhysicsConstraintTimeline.h
│   │   │       │       ├── PointAttachment.h
│   │   │       │       ├── Pool.h
│   │   │       │       ├── PositionMode.h
│   │   │       │       ├── Property.h
│   │   │       │       ├── RTTI.h
│   │   │       │       ├── RegionAttachment.h
│   │   │       │       ├── RotateMode.h
│   │   │       │       ├── RotateTimeline.h
│   │   │       │       ├── ScaleTimeline.h
│   │   │       │       ├── Sequence.h
│   │   │       │       ├── SequenceTimeline.h
│   │   │       │       ├── ShearTimeline.h
│   │   │       │       ├── Skeleton.h
│   │   │       │       ├── SkeletonBinary.h
│   │   │       │       ├── SkeletonBounds.h
│   │   │       │       ├── SkeletonClipping.h
│   │   │       │       ├── SkeletonData.h
│   │   │       │       ├── SkeletonJson.h
│   │   │       │       ├── SkeletonRenderer.h
│   │   │       │       ├── Skin.h
│   │   │       │       ├── Slot.h
│   │   │       │       ├── SlotData.h
│   │   │       │       ├── SpacingMode.h
│   │   │       │       ├── SpineObject.h
│   │   │       │       ├── SpineString.h
│   │   │       │       ├── TextureLoader.h
│   │   │       │       ├── TextureRegion.h
│   │   │       │       ├── Timeline.h
│   │   │       │       ├── TransformConstraint.h
│   │   │       │       ├── TransformConstraintData.h
│   │   │       │       ├── TransformConstraintTimeline.h
│   │   │       │       ├── TranslateTimeline.h
│   │   │       │       ├── Triangulator.h
│   │   │       │       ├── Updatable.h
│   │   │       │       ├── Vector.h
│   │   │       │       ├── Version.h
│   │   │       │       ├── VertexAttachment.h
│   │   │       │       ├── Vertices.h
│   │   │       │       ├── dll.h
│   │   │       │       └── spine.h
│   │   │       └── src/
│   │   │           └── spine/
│   │   │               ├── Animation.cpp
│   │   │               ├── AnimationState.cpp
│   │   │               ├── AnimationStateData.cpp
│   │   │               ├── Atlas.cpp
│   │   │               ├── AtlasAttachmentLoader.cpp
│   │   │               ├── Attachment.cpp
│   │   │               ├── AttachmentLoader.cpp
│   │   │               ├── AttachmentTimeline.cpp
│   │   │               ├── Bone.cpp
│   │   │               ├── BoneData.cpp
│   │   │               ├── BoundingBoxAttachment.cpp
│   │   │               ├── ClippingAttachment.cpp
│   │   │               ├── ColorTimeline.cpp
│   │   │               ├── ConstraintData.cpp
│   │   │               ├── CurveTimeline.cpp
│   │   │               ├── DeformTimeline.cpp
│   │   │               ├── DrawOrderTimeline.cpp
│   │   │               ├── Event.cpp
│   │   │               ├── EventData.cpp
│   │   │               ├── EventTimeline.cpp
│   │   │               ├── Extension.cpp
│   │   │               ├── IkConstraint.cpp
│   │   │               ├── IkConstraintData.cpp
│   │   │               ├── IkConstraintTimeline.cpp
│   │   │               ├── InheritTimeline.cpp
│   │   │               ├── Json.cpp
│   │   │               ├── LinkedMesh.cpp
│   │   │               ├── Log.cpp
│   │   │               ├── MathUtil.cpp
│   │   │               ├── MeshAttachment.cpp
│   │   │               ├── PathAttachment.cpp
│   │   │               ├── PathConstraint.cpp
│   │   │               ├── PathConstraintData.cpp
│   │   │               ├── PathConstraintMixTimeline.cpp
│   │   │               ├── PathConstraintPositionTimeline.cpp
│   │   │               ├── PathConstraintSpacingTimeline.cpp
│   │   │               ├── PhysicsConstraint.cpp
│   │   │               ├── PhysicsConstraintData.cpp
│   │   │               ├── PhysicsConstraintTimeline.cpp
│   │   │               ├── PointAttachment.cpp
│   │   │               ├── RTTI.cpp
│   │   │               ├── RegionAttachment.cpp
│   │   │               ├── RotateTimeline.cpp
│   │   │               ├── ScaleTimeline.cpp
│   │   │               ├── Sequence.cpp
│   │   │               ├── SequenceTimeline.cpp
│   │   │               ├── ShearTimeline.cpp
│   │   │               ├── Skeleton.cpp
│   │   │               ├── SkeletonBinary.cpp
│   │   │               ├── SkeletonBounds.cpp
│   │   │               ├── SkeletonClipping.cpp
│   │   │               ├── SkeletonData.cpp
│   │   │               ├── SkeletonJson.cpp
│   │   │               ├── SkeletonRenderer.cpp
│   │   │               ├── Skin.cpp
│   │   │               ├── Slot.cpp
│   │   │               ├── SlotData.cpp
│   │   │               ├── SpineObject.cpp
│   │   │               ├── TextureLoader.cpp
│   │   │               ├── Timeline.cpp
│   │   │               ├── TransformConstraint.cpp
│   │   │               ├── TransformConstraintData.cpp
│   │   │               ├── TransformConstraintTimeline.cpp
│   │   │               ├── TranslateTimeline.cpp
│   │   │               ├── Triangulator.cpp
│   │   │               ├── Updatable.cpp
│   │   │               └── VertexAttachment.cpp
│   │   ├── boost/
│   │   │   └── CMakeLists.txt
│   │   ├── jerryscript/
│   │   │   ├── .github/
│   │   │   │   ├── ISSUE_TEMPLATE/
│   │   │   │   │   └── bug_report.md
│   │   │   │   ├── pull_request_template.md
│   │   │   │   └── workflows/
│   │   │   │       └── gh-actions.yml
│   │   │   ├── .gitignore
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── DCO.md
│   │   │   ├── Doxyfile
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── appveyor.yml
│   │   │   ├── cmake/
│   │   │   │   ├── toolchain-esp32.cmake
│   │   │   │   ├── toolchain_linux_aarch64.cmake
│   │   │   │   ├── toolchain_linux_armv7l-el.cmake
│   │   │   │   ├── toolchain_linux_armv7l.cmake
│   │   │   │   ├── toolchain_linux_i686.cmake
│   │   │   │   ├── toolchain_mcu_stm32f3.cmake
│   │   │   │   ├── toolchain_mcu_stm32f4.cmake
│   │   │   │   ├── toolchain_mcu_stm32f7.cmake
│   │   │   │   ├── toolchain_mcu_tim4f.cmake
│   │   │   │   ├── toolchain_openwrt_mips.cmake
│   │   │   │   └── toolchain_openwrt_mipsel.cmake
│   │   │   ├── docs/
│   │   │   │   ├── 00.GETTING-STARTED.md
│   │   │   │   ├── 01.CONFIGURATION.md
│   │   │   │   ├── 02.API-REFERENCE.md
│   │   │   │   ├── 03.API-EXAMPLE.md
│   │   │   │   ├── 04.INTERNALS.md
│   │   │   │   ├── 05.PORT-API.md
│   │   │   │   ├── 06.REFERENCE-COUNTING.md
│   │   │   │   ├── 07.DEBUGGER.md
│   │   │   │   ├── 08.CODING-STANDARDS.md
│   │   │   │   ├── 09.EXT-REFERENCE-ARG.md
│   │   │   │   ├── 10.EXT-REFERENCE-HANDLER.md
│   │   │   │   ├── 11.EXT-REFERENCE-AUTORELEASE.md
│   │   │   │   ├── 12.EXT-REFERENCE-MODULE.md
│   │   │   │   ├── 13.DEBUGGER-TRANSPORT.md
│   │   │   │   ├── 14.EXT-REFERENCE-HANDLE-SCOPE.md
│   │   │   │   ├── 15.MODULE-SYSTEM.md
│   │   │   │   └── 16.MIGRATION-GUIDE.md
│   │   │   ├── jerry-core/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── api/
│   │   │   │   │   ├── jerry-debugger-transport.c
│   │   │   │   │   ├── jerry-debugger.c
│   │   │   │   │   ├── jerry-snapshot.c
│   │   │   │   │   ├── jerry-snapshot.h
│   │   │   │   │   └── jerry.c
│   │   │   │   ├── config.h
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── debugger.c
│   │   │   │   │   └── debugger.h
│   │   │   │   ├── ecma/
│   │   │   │   │   ├── base/
│   │   │   │   │   │   ├── ecma-alloc.c
│   │   │   │   │   │   ├── ecma-alloc.h
│   │   │   │   │   │   ├── ecma-gc.c
│   │   │   │   │   │   ├── ecma-gc.h
│   │   │   │   │   │   ├── ecma-globals.h
│   │   │   │   │   │   ├── ecma-helpers-collection.c
│   │   │   │   │   │   ├── ecma-helpers-conversion.c
│   │   │   │   │   │   ├── ecma-helpers-errol.c
│   │   │   │   │   │   ├── ecma-helpers-external-pointers.c
│   │   │   │   │   │   ├── ecma-helpers-number.c
│   │   │   │   │   │   ├── ecma-helpers-string.c
│   │   │   │   │   │   ├── ecma-helpers-value.c
│   │   │   │   │   │   ├── ecma-helpers.c
│   │   │   │   │   │   ├── ecma-helpers.h
│   │   │   │   │   │   ├── ecma-init-finalize.c
│   │   │   │   │   │   ├── ecma-init-finalize.h
│   │   │   │   │   │   ├── ecma-lcache.c
│   │   │   │   │   │   ├── ecma-lcache.h
│   │   │   │   │   │   ├── ecma-literal-storage.c
│   │   │   │   │   │   ├── ecma-literal-storage.h
│   │   │   │   │   │   ├── ecma-module.c
│   │   │   │   │   │   ├── ecma-module.h
│   │   │   │   │   │   ├── ecma-property-hashmap.c
│   │   │   │   │   │   └── ecma-property-hashmap.h
│   │   │   │   │   ├── builtin-objects/
│   │   │   │   │   │   ├── ecma-builtin-array-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-array-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array-prototype-unscopables.c
│   │   │   │   │   │   ├── ecma-builtin-array-prototype-unscopables.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-array-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-array.c
│   │   │   │   │   │   ├── ecma-builtin-array.inc.h
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer.c
│   │   │   │   │   │   ├── ecma-builtin-arraybuffer.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-function-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-function-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-function.c
│   │   │   │   │   │   ├── ecma-builtin-async-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator-function.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-generator.c
│   │   │   │   │   │   ├── ecma-builtin-async-generator.inc.h
│   │   │   │   │   │   ├── ecma-builtin-async-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-async-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-bigint-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-bigint-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-bigint.c
│   │   │   │   │   │   ├── ecma-builtin-bigint.inc.h
│   │   │   │   │   │   ├── ecma-builtin-boolean-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-boolean-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-boolean.c
│   │   │   │   │   │   ├── ecma-builtin-boolean.inc.h
│   │   │   │   │   │   ├── ecma-builtin-dataview-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-dataview-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-dataview.c
│   │   │   │   │   │   ├── ecma-builtin-dataview.inc.h
│   │   │   │   │   │   ├── ecma-builtin-date-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-date-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-date.c
│   │   │   │   │   │   ├── ecma-builtin-date.inc.h
│   │   │   │   │   │   ├── ecma-builtin-error-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-error-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-error.c
│   │   │   │   │   │   ├── ecma-builtin-error.inc.h
│   │   │   │   │   │   ├── ecma-builtin-evalerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-evalerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-evalerror.c
│   │   │   │   │   │   ├── ecma-builtin-evalerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.h
│   │   │   │   │   │   ├── ecma-builtin-function-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-function.c
│   │   │   │   │   │   ├── ecma-builtin-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator-function.c
│   │   │   │   │   │   ├── ecma-builtin-generator-function.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-generator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-generator.c
│   │   │   │   │   │   ├── ecma-builtin-generator.inc.h
│   │   │   │   │   │   ├── ecma-builtin-global.c
│   │   │   │   │   │   ├── ecma-builtin-global.inc.h
│   │   │   │   │   │   ├── ecma-builtin-handlers.c
│   │   │   │   │   │   ├── ecma-builtin-handlers.h
│   │   │   │   │   │   ├── ecma-builtin-handlers.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-date.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-error.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-json.c
│   │   │   │   │   │   ├── ecma-builtin-helpers-macro-defines.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-macro-undefs.inc.h
│   │   │   │   │   │   ├── ecma-builtin-helpers-sort.c
│   │   │   │   │   │   ├── ecma-builtin-helpers.c
│   │   │   │   │   │   ├── ecma-builtin-helpers.h
│   │   │   │   │   │   ├── ecma-builtin-internal-routines-template.inc.h
│   │   │   │   │   │   ├── ecma-builtin-intrinsic.c
│   │   │   │   │   │   ├── ecma-builtin-intrinsic.inc.h
│   │   │   │   │   │   ├── ecma-builtin-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-json.c
│   │   │   │   │   │   ├── ecma-builtin-json.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-map-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-map-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-map.c
│   │   │   │   │   │   ├── ecma-builtin-map.inc.h
│   │   │   │   │   │   ├── ecma-builtin-math.c
│   │   │   │   │   │   ├── ecma-builtin-math.inc.h
│   │   │   │   │   │   ├── ecma-builtin-number-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-number-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-number.c
│   │   │   │   │   │   ├── ecma-builtin-number.inc.h
│   │   │   │   │   │   ├── ecma-builtin-object-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-object-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-object.c
│   │   │   │   │   │   ├── ecma-builtin-object.h
│   │   │   │   │   │   ├── ecma-builtin-object.inc.h
│   │   │   │   │   │   ├── ecma-builtin-promise-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-promise-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-promise.c
│   │   │   │   │   │   ├── ecma-builtin-promise.inc.h
│   │   │   │   │   │   ├── ecma-builtin-proxy.c
│   │   │   │   │   │   ├── ecma-builtin-proxy.inc.h
│   │   │   │   │   │   ├── ecma-builtin-rangeerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-rangeerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-rangeerror.c
│   │   │   │   │   │   ├── ecma-builtin-rangeerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-referenceerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-referenceerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-referenceerror.c
│   │   │   │   │   │   ├── ecma-builtin-referenceerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-reflect.c
│   │   │   │   │   │   ├── ecma-builtin-reflect.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-regexp-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp-string-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-regexp-string-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-regexp.c
│   │   │   │   │   │   ├── ecma-builtin-regexp.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-set-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-set-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-set.c
│   │   │   │   │   │   ├── ecma-builtin-set.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string-iterator-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-string-iterator-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-string-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-string.c
│   │   │   │   │   │   ├── ecma-builtin-string.inc.h
│   │   │   │   │   │   ├── ecma-builtin-symbol-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-symbol-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-symbol.c
│   │   │   │   │   │   ├── ecma-builtin-symbol.inc.h
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror.c
│   │   │   │   │   │   ├── ecma-builtin-syntaxerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-type-error-thrower.c
│   │   │   │   │   │   ├── ecma-builtin-type-error-thrower.inc.h
│   │   │   │   │   │   ├── ecma-builtin-typeerror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-typeerror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-typeerror.c
│   │   │   │   │   │   ├── ecma-builtin-typeerror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-urierror-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-urierror-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-urierror.c
│   │   │   │   │   │   ├── ecma-builtin-urierror.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakmap-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-weakmap-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakmap.c
│   │   │   │   │   │   ├── ecma-builtin-weakmap.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakset-prototype.c
│   │   │   │   │   │   ├── ecma-builtin-weakset-prototype.inc.h
│   │   │   │   │   │   ├── ecma-builtin-weakset.c
│   │   │   │   │   │   ├── ecma-builtin-weakset.inc.h
│   │   │   │   │   │   ├── ecma-builtins-internal.h
│   │   │   │   │   │   ├── ecma-builtins.c
│   │   │   │   │   │   ├── ecma-builtins.h
│   │   │   │   │   │   ├── ecma-builtins.inc.h
│   │   │   │   │   │   └── typedarray/
│   │   │   │   │   │       ├── ecma-builtin-bigint64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-bigint64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-bigint64array.c
│   │   │   │   │   │       ├── ecma-builtin-bigint64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-biguint64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-biguint64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-biguint64array.c
│   │   │   │   │   │       ├── ecma-builtin-biguint64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-float32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float32array.c
│   │   │   │   │   │       ├── ecma-builtin-float32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float64array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-float64array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-float64array.c
│   │   │   │   │   │       ├── ecma-builtin-float64array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int16array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int16array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int16array.c
│   │   │   │   │   │       ├── ecma-builtin-int16array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int32array.c
│   │   │   │   │   │       ├── ecma-builtin-int32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int8array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-int8array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-int8array.c
│   │   │   │   │   │       ├── ecma-builtin-int8array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-helpers.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray-helpers.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype-template.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray-template.inc.h
│   │   │   │   │   │       ├── ecma-builtin-typedarray.c
│   │   │   │   │   │       ├── ecma-builtin-typedarray.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint16array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint16array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint16array.c
│   │   │   │   │   │       ├── ecma-builtin-uint16array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint32array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint32array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint32array.c
│   │   │   │   │   │       ├── ecma-builtin-uint32array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8array-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint8array-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8array.c
│   │   │   │   │   │       ├── ecma-builtin-uint8array.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray-prototype.c
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray-prototype.inc.h
│   │   │   │   │   │       ├── ecma-builtin-uint8clampedarray.c
│   │   │   │   │   │       └── ecma-builtin-uint8clampedarray.inc.h
│   │   │   │   │   └── operations/
│   │   │   │   │       ├── ecma-arguments-object.c
│   │   │   │   │       ├── ecma-arguments-object.h
│   │   │   │   │       ├── ecma-array-object.c
│   │   │   │   │       ├── ecma-array-object.h
│   │   │   │   │       ├── ecma-arraybuffer-object.c
│   │   │   │   │       ├── ecma-arraybuffer-object.h
│   │   │   │   │       ├── ecma-async-generator-object.c
│   │   │   │   │       ├── ecma-async-generator-object.h
│   │   │   │   │       ├── ecma-big-uint.c
│   │   │   │   │       ├── ecma-big-uint.h
│   │   │   │   │       ├── ecma-bigint-object.c
│   │   │   │   │       ├── ecma-bigint-object.h
│   │   │   │   │       ├── ecma-bigint.c
│   │   │   │   │       ├── ecma-bigint.h
│   │   │   │   │       ├── ecma-boolean-object.c
│   │   │   │   │       ├── ecma-boolean-object.h
│   │   │   │   │       ├── ecma-comparison.c
│   │   │   │   │       ├── ecma-comparison.h
│   │   │   │   │       ├── ecma-container-object.c
│   │   │   │   │       ├── ecma-container-object.h
│   │   │   │   │       ├── ecma-conversion.c
│   │   │   │   │       ├── ecma-conversion.h
│   │   │   │   │       ├── ecma-dataview-object.c
│   │   │   │   │       ├── ecma-dataview-object.h
│   │   │   │   │       ├── ecma-eval.c
│   │   │   │   │       ├── ecma-eval.h
│   │   │   │   │       ├── ecma-exceptions.c
│   │   │   │   │       ├── ecma-exceptions.h
│   │   │   │   │       ├── ecma-function-object.c
│   │   │   │   │       ├── ecma-function-object.h
│   │   │   │   │       ├── ecma-get-put-value.c
│   │   │   │   │       ├── ecma-iterator-object.c
│   │   │   │   │       ├── ecma-iterator-object.h
│   │   │   │   │       ├── ecma-jobqueue.c
│   │   │   │   │       ├── ecma-jobqueue.h
│   │   │   │   │       ├── ecma-lex-env.c
│   │   │   │   │       ├── ecma-lex-env.h
│   │   │   │   │       ├── ecma-number-arithmetic.c
│   │   │   │   │       ├── ecma-number-arithmetic.h
│   │   │   │   │       ├── ecma-number-object.c
│   │   │   │   │       ├── ecma-number-object.h
│   │   │   │   │       ├── ecma-objects-general.c
│   │   │   │   │       ├── ecma-objects-general.h
│   │   │   │   │       ├── ecma-objects.c
│   │   │   │   │       ├── ecma-objects.h
│   │   │   │   │       ├── ecma-promise-object.c
│   │   │   │   │       ├── ecma-promise-object.h
│   │   │   │   │       ├── ecma-proxy-object.c
│   │   │   │   │       ├── ecma-proxy-object.h
│   │   │   │   │       ├── ecma-reference.c
│   │   │   │   │       ├── ecma-reference.h
│   │   │   │   │       ├── ecma-regexp-object.c
│   │   │   │   │       ├── ecma-regexp-object.h
│   │   │   │   │       ├── ecma-string-object.c
│   │   │   │   │       ├── ecma-string-object.h
│   │   │   │   │       ├── ecma-symbol-object.c
│   │   │   │   │       ├── ecma-symbol-object.h
│   │   │   │   │       ├── ecma-typedarray-object.c
│   │   │   │   │       └── ecma-typedarray-object.h
│   │   │   │   ├── include/
│   │   │   │   │   ├── jerryscript-compiler.h
│   │   │   │   │   ├── jerryscript-core.h
│   │   │   │   │   ├── jerryscript-debugger-transport.h
│   │   │   │   │   ├── jerryscript-debugger.h
│   │   │   │   │   ├── jerryscript-port.h
│   │   │   │   │   ├── jerryscript-snapshot.h
│   │   │   │   │   └── jerryscript.h
│   │   │   │   ├── jcontext/
│   │   │   │   │   ├── jcontext.c
│   │   │   │   │   └── jcontext.h
│   │   │   │   ├── jmem/
│   │   │   │   │   ├── jmem-allocator-internal.h
│   │   │   │   │   ├── jmem-allocator.c
│   │   │   │   │   ├── jmem-heap.c
│   │   │   │   │   ├── jmem-poolman.c
│   │   │   │   │   └── jmem.h
│   │   │   │   ├── jrt/
│   │   │   │   │   ├── jrt-bit-fields.h
│   │   │   │   │   ├── jrt-fatals.c
│   │   │   │   │   ├── jrt-libc-includes.h
│   │   │   │   │   ├── jrt-types.h
│   │   │   │   │   └── jrt.h
│   │   │   │   ├── libjerry-core.pc.in
│   │   │   │   ├── lit/
│   │   │   │   │   ├── lit-char-helpers.c
│   │   │   │   │   ├── lit-char-helpers.h
│   │   │   │   │   ├── lit-globals.h
│   │   │   │   │   ├── lit-magic-strings.c
│   │   │   │   │   ├── lit-magic-strings.h
│   │   │   │   │   ├── lit-magic-strings.inc.h
│   │   │   │   │   ├── lit-magic-strings.ini
│   │   │   │   │   ├── lit-strings.c
│   │   │   │   │   ├── lit-strings.h
│   │   │   │   │   ├── lit-unicode-conversions-sup.inc.h
│   │   │   │   │   ├── lit-unicode-conversions.inc.h
│   │   │   │   │   ├── lit-unicode-folding.inc.h
│   │   │   │   │   ├── lit-unicode-ranges-sup.inc.h
│   │   │   │   │   └── lit-unicode-ranges.inc.h
│   │   │   │   ├── parser/
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── byte-code.c
│   │   │   │   │   │   ├── byte-code.h
│   │   │   │   │   │   ├── common.c
│   │   │   │   │   │   ├── common.h
│   │   │   │   │   │   ├── js-lexer.c
│   │   │   │   │   │   ├── js-lexer.h
│   │   │   │   │   │   ├── js-parser-expr.c
│   │   │   │   │   │   ├── js-parser-internal.h
│   │   │   │   │   │   ├── js-parser-limits.h
│   │   │   │   │   │   ├── js-parser-mem.c
│   │   │   │   │   │   ├── js-parser-module.c
│   │   │   │   │   │   ├── js-parser-statm.c
│   │   │   │   │   │   ├── js-parser-tagged-template-literal.c
│   │   │   │   │   │   ├── js-parser-tagged-template-literal.h
│   │   │   │   │   │   ├── js-parser-util.c
│   │   │   │   │   │   ├── js-parser.c
│   │   │   │   │   │   ├── js-parser.h
│   │   │   │   │   │   ├── js-scanner-internal.h
│   │   │   │   │   │   ├── js-scanner-ops.c
│   │   │   │   │   │   ├── js-scanner-util.c
│   │   │   │   │   │   ├── js-scanner.c
│   │   │   │   │   │   └── js-scanner.h
│   │   │   │   │   └── regexp/
│   │   │   │   │       ├── re-bytecode.c
│   │   │   │   │       ├── re-bytecode.h
│   │   │   │   │       ├── re-compiler-context.h
│   │   │   │   │       ├── re-compiler.c
│   │   │   │   │       ├── re-compiler.h
│   │   │   │   │       ├── re-parser.c
│   │   │   │   │       ├── re-parser.h
│   │   │   │   │       └── re-token.h
│   │   │   │   ├── profiles/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── es.next.profile
│   │   │   │   │   ├── es2015-subset.profile
│   │   │   │   │   ├── es5.1.profile
│   │   │   │   │   └── minimal.profile
│   │   │   │   └── vm/
│   │   │   │       ├── opcodes-ecma-arithmetics.c
│   │   │   │       ├── opcodes-ecma-bitwise.c
│   │   │   │       ├── opcodes-ecma-relational-equality.c
│   │   │   │       ├── opcodes.c
│   │   │   │       ├── opcodes.h
│   │   │   │       ├── vm-defines.h
│   │   │   │       ├── vm-stack.c
│   │   │   │       ├── vm-stack.h
│   │   │   │       ├── vm-utils.c
│   │   │   │       ├── vm.c
│   │   │   │       └── vm.h
│   │   │   ├── jerry-debugger/
│   │   │   │   ├── README.md
│   │   │   │   ├── jerry_client.py
│   │   │   │   ├── jerry_client_main.py
│   │   │   │   ├── jerry_client_rawpacket.py
│   │   │   │   ├── jerry_client_serial.py
│   │   │   │   ├── jerry_client_tcp.py
│   │   │   │   └── jerry_client_websocket.py
│   │   │   ├── jerry-ext/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── arg/
│   │   │   │   │   ├── arg-internal.h
│   │   │   │   │   ├── arg-js-iterator-helper.c
│   │   │   │   │   ├── arg-transform-functions.c
│   │   │   │   │   └── arg.c
│   │   │   │   ├── common/
│   │   │   │   │   └── jext-common.h
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── debugger-common.c
│   │   │   │   │   ├── debugger-rp.c
│   │   │   │   │   ├── debugger-serial.c
│   │   │   │   │   ├── debugger-sha1.c
│   │   │   │   │   ├── debugger-sha1.h
│   │   │   │   │   ├── debugger-tcp.c
│   │   │   │   │   └── debugger-ws.c
│   │   │   │   ├── handle-scope/
│   │   │   │   │   ├── handle-scope-allocator.c
│   │   │   │   │   ├── handle-scope-internal.h
│   │   │   │   │   └── handle-scope.c
│   │   │   │   ├── handler/
│   │   │   │   │   ├── handler-assert.c
│   │   │   │   │   ├── handler-gc.c
│   │   │   │   │   ├── handler-print.c
│   │   │   │   │   ├── handler-register.c
│   │   │   │   │   └── handler-resource-name.c
│   │   │   │   ├── include/
│   │   │   │   │   └── jerryscript-ext/
│   │   │   │   │       ├── arg.h
│   │   │   │   │       ├── arg.impl.h
│   │   │   │   │       ├── autorelease.h
│   │   │   │   │       ├── autorelease.impl.h
│   │   │   │   │       ├── debugger.h
│   │   │   │   │       ├── handle-scope.h
│   │   │   │   │       ├── handler.h
│   │   │   │   │       └── module.h
│   │   │   │   ├── libjerry-ext.pc.in
│   │   │   │   └── module/
│   │   │   │       └── module.c
│   │   │   ├── jerry-main/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── benchmarking.c
│   │   │   │   ├── cli.c
│   │   │   │   ├── cli.h
│   │   │   │   ├── libfuzzer.c
│   │   │   │   ├── main-options.c
│   │   │   │   ├── main-options.h
│   │   │   │   ├── main-unix-snapshot.c
│   │   │   │   ├── main-unix-test.c
│   │   │   │   ├── main-unix.c
│   │   │   │   ├── main-utils.c
│   │   │   │   └── main-utils.h
│   │   │   ├── jerry-math/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── acos.c
│   │   │   │   ├── acosh.c
│   │   │   │   ├── asin.c
│   │   │   │   ├── asinh.c
│   │   │   │   ├── atan.c
│   │   │   │   ├── atan2.c
│   │   │   │   ├── atanh.c
│   │   │   │   ├── cbrt.c
│   │   │   │   ├── ceil.c
│   │   │   │   ├── copysign.c
│   │   │   │   ├── cosh.c
│   │   │   │   ├── exp.c
│   │   │   │   ├── expm1.c
│   │   │   │   ├── fabs.c
│   │   │   │   ├── floor.c
│   │   │   │   ├── fmod.c
│   │   │   │   ├── include/
│   │   │   │   │   └── math.h
│   │   │   │   ├── jerry-math-internal.h
│   │   │   │   ├── libjerry-math.pc.in
│   │   │   │   ├── log.c
│   │   │   │   ├── log10.c
│   │   │   │   ├── log1p.c
│   │   │   │   ├── log2.c
│   │   │   │   ├── nextafter.c
│   │   │   │   ├── pow.c
│   │   │   │   ├── scalbn.c
│   │   │   │   ├── sinh.c
│   │   │   │   ├── sqrt.c
│   │   │   │   ├── tanh.c
│   │   │   │   └── trig.c
│   │   │   ├── jerry-port/
│   │   │   │   └── default/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── default-date.c
│   │   │   │       ├── default-debugger.c
│   │   │   │       ├── default-external-context.c
│   │   │   │       ├── default-fatal.c
│   │   │   │       ├── default-io.c
│   │   │   │       ├── default-module.c
│   │   │   │       ├── default-promise.c
│   │   │   │       ├── include/
│   │   │   │       │   └── jerryscript-port-default.h
│   │   │   │       └── libjerry-port-default.pc.in
│   │   │   ├── sonar-project.properties
│   │   │   ├── targets/
│   │   │   │   ├── curie_bsp/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── inttypes.h
│   │   │   │   │   │   └── setjmp.h
│   │   │   │   │   ├── jerry_app/
│   │   │   │   │   │   ├── arc/
│   │   │   │   │   │   │   ├── defconfig
│   │   │   │   │   │   │   ├── main.c
│   │   │   │   │   │   │   └── memory_pool_list.def
│   │   │   │   │   │   ├── include/
│   │   │   │   │   │   │   └── project_mapping.h
│   │   │   │   │   │   └── quark/
│   │   │   │   │   │       ├── defconfig
│   │   │   │   │   │       ├── main.c
│   │   │   │   │   │       └── memory_pool_list.def
│   │   │   │   │   ├── setup.py
│   │   │   │   │   └── source/
│   │   │   │   │       ├── curie-bsp-port.c
│   │   │   │   │       └── setjmp.S
│   │   │   │   ├── esp-idf/
│   │   │   │   │   ├── CMakeLists.txt.example
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── date.c
│   │   │   │   │   ├── debugger.c
│   │   │   │   │   ├── external-context.c
│   │   │   │   │   ├── fatal.c
│   │   │   │   │   ├── io.c
│   │   │   │   │   ├── module.c
│   │   │   │   │   └── promise.c
│   │   │   │   ├── esp8266/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.esp8266
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── docs/
│   │   │   │   │   │   └── ESP-PREREQUISITES.md
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── jerry_extapi.h
│   │   │   │   │   │   ├── jerry_run.h
│   │   │   │   │   │   └── user_config.h
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── blink.js
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── ld/
│   │   │   │   │   │   └── eagle.app.v6.ld
│   │   │   │   │   ├── readme.md
│   │   │   │   │   └── user/
│   │   │   │   │       ├── Makefile
│   │   │   │   │       ├── jerry_extapi.c
│   │   │   │   │       ├── jerry_port.c
│   │   │   │   │       ├── jerry_run.c
│   │   │   │   │       └── user_main.c
│   │   │   │   ├── mbedos5/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── jerryscript-mbed/
│   │   │   │   │   │   ├── jerryscript-mbed-drivers/
│   │   │   │   │   │   │   ├── AnalogIn-js.h
│   │   │   │   │   │   │   ├── DigitalOut-js.h
│   │   │   │   │   │   │   ├── I2C-js.h
│   │   │   │   │   │   │   ├── InterruptIn-js.h
│   │   │   │   │   │   │   ├── PwmOut-js.h
│   │   │   │   │   │   │   ├── lib_drivers.h
│   │   │   │   │   │   │   ├── setInterval-js.h
│   │   │   │   │   │   │   ├── setTimeout-js.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       ├── AnalogIn-js.cpp
│   │   │   │   │   │   │       ├── DigitalOut-js.cpp
│   │   │   │   │   │   │       ├── I2C-js.cpp
│   │   │   │   │   │   │       ├── InterruptIn-js.cpp
│   │   │   │   │   │   │       ├── PwmOut-js.cpp
│   │   │   │   │   │   │       ├── setInterval-js.cpp
│   │   │   │   │   │   │       └── setTimeout-js.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-event-loop/
│   │   │   │   │   │   │   ├── BoundCallback.h
│   │   │   │   │   │   │   ├── EventLoop.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       └── EventLoop.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-launcher/
│   │   │   │   │   │   │   ├── launcher.h
│   │   │   │   │   │   │   ├── setup.h
│   │   │   │   │   │   │   └── source/
│   │   │   │   │   │   │       ├── launcher.cpp
│   │   │   │   │   │   │       └── setup.cpp
│   │   │   │   │   │   ├── jerryscript-mbed-library-registry/
│   │   │   │   │   │   │   ├── registry.h
│   │   │   │   │   │   │   ├── source/
│   │   │   │   │   │   │   │   ├── registry.cpp
│   │   │   │   │   │   │   │   └── wrap_tools.cpp
│   │   │   │   │   │   │   └── wrap_tools.h
│   │   │   │   │   │   └── jerryscript-mbed-util/
│   │   │   │   │   │       ├── js_source.h
│   │   │   │   │   │       ├── logging.h
│   │   │   │   │   │       └── wrappers.h
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── flash_leds.js
│   │   │   │   │   │   └── main.js
│   │   │   │   │   ├── mbed-os.lib
│   │   │   │   │   ├── mbed_app.json
│   │   │   │   │   ├── source/
│   │   │   │   │   │   └── jerry_port_mbed.c
│   │   │   │   │   ├── template-mbedignore.txt
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── check_pins.sh
│   │   │   │   │       ├── cmsis.h
│   │   │   │   │       ├── generate_pins.py
│   │   │   │   │       ├── jshint.conf
│   │   │   │   │       └── requirements.txt
│   │   │   │   ├── nuttx-stm32f4/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Kconfig
│   │   │   │   │   ├── Make.defs
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── jerry_main.c
│   │   │   │   │   ├── jerry_port.c
│   │   │   │   │   ├── setjmp.S
│   │   │   │   │   └── setjmp.h
│   │   │   │   ├── openwrt/
│   │   │   │   │   └── readme.md
│   │   │   │   ├── particle/
│   │   │   │   │   ├── Makefile.particle
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── source/
│   │   │   │   │       └── main.cpp
│   │   │   │   ├── riot-stm32f4/
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── Makefile.riot
│   │   │   │   │   ├── Makefile.travis
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── source/
│   │   │   │   │       └── main-riotos.c
│   │   │   │   └── zephyr/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── Makefile.travis
│   │   │   │       ├── Makefile.zephyr
│   │   │   │       ├── README.md
│   │   │   │       ├── prj.conf
│   │   │   │       └── src/
│   │   │   │           ├── Makefile
│   │   │   │           ├── getline-zephyr.c
│   │   │   │           ├── getline-zephyr.h
│   │   │   │           ├── jerry-port.c
│   │   │   │           └── main-zephyr.c
│   │   │   ├── tests/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── benchmarks/
│   │   │   │   │   └── jerry/
│   │   │   │   │       ├── fill-array-with-numbers-3-times-5000-elements.js
│   │   │   │   │       ├── function_loop.js
│   │   │   │   │       ├── gc.js
│   │   │   │   │       ├── loop_arithmetics_10kk.js
│   │   │   │   │       └── loop_arithmetics_1kk.js
│   │   │   │   ├── debugger/
│   │   │   │   │   ├── client_source.cmd
│   │   │   │   │   ├── client_source.expected
│   │   │   │   │   ├── client_source.js
│   │   │   │   │   ├── client_source_multiple.cmd
│   │   │   │   │   ├── client_source_multiple.expected
│   │   │   │   │   ├── client_source_multiple_1.js
│   │   │   │   │   ├── client_source_multiple_2.js
│   │   │   │   │   ├── do_abort.cmd
│   │   │   │   │   ├── do_abort.expected
│   │   │   │   │   ├── do_abort.js
│   │   │   │   │   ├── do_backtrace.cmd
│   │   │   │   │   ├── do_backtrace.expected
│   │   │   │   │   ├── do_backtrace.js
│   │   │   │   │   ├── do_break.cmd
│   │   │   │   │   ├── do_break.expected
│   │   │   │   │   ├── do_break.js
│   │   │   │   │   ├── do_continue.cmd
│   │   │   │   │   ├── do_continue.expected
│   │   │   │   │   ├── do_continue.js
│   │   │   │   │   ├── do_delete.cmd
│   │   │   │   │   ├── do_delete.expected
│   │   │   │   │   ├── do_delete.js
│   │   │   │   │   ├── do_delete_all.cmd
│   │   │   │   │   ├── do_delete_all.expected
│   │   │   │   │   ├── do_delete_all.js
│   │   │   │   │   ├── do_display.cmd
│   │   │   │   │   ├── do_display.expected
│   │   │   │   │   ├── do_display.js
│   │   │   │   │   ├── do_eval.cmd
│   │   │   │   │   ├── do_eval.expected
│   │   │   │   │   ├── do_eval.js
│   │   │   │   │   ├── do_eval_at.cmd
│   │   │   │   │   ├── do_eval_at.expected
│   │   │   │   │   ├── do_eval_at.js
│   │   │   │   │   ├── do_eval_syntax.cmd
│   │   │   │   │   ├── do_eval_syntax.expected
│   │   │   │   │   ├── do_eval_syntax.js
│   │   │   │   │   ├── do_exception.cmd
│   │   │   │   │   ├── do_exception.expected
│   │   │   │   │   ├── do_exception.js
│   │   │   │   │   ├── do_finish.cmd
│   │   │   │   │   ├── do_finish.expected
│   │   │   │   │   ├── do_finish.js
│   │   │   │   │   ├── do_help.cmd
│   │   │   │   │   ├── do_help.expected
│   │   │   │   │   ├── do_help.js
│   │   │   │   │   ├── do_list.cmd
│   │   │   │   │   ├── do_list.expected
│   │   │   │   │   ├── do_list.js
│   │   │   │   │   ├── do_next.cmd
│   │   │   │   │   ├── do_next.expected
│   │   │   │   │   ├── do_next.js
│   │   │   │   │   ├── do_pending_breakpoints.cmd
│   │   │   │   │   ├── do_pending_breakpoints.expected
│   │   │   │   │   ├── do_pending_breakpoints.js
│   │   │   │   │   ├── do_print.cmd
│   │   │   │   │   ├── do_print.expected
│   │   │   │   │   ├── do_print.js
│   │   │   │   │   ├── do_quit.cmd
│   │   │   │   │   ├── do_quit.expected
│   │   │   │   │   ├── do_quit.js
│   │   │   │   │   ├── do_restart.cmd
│   │   │   │   │   ├── do_restart.expected
│   │   │   │   │   ├── do_restart.js
│   │   │   │   │   ├── do_scope.cmd
│   │   │   │   │   ├── do_scope.expected
│   │   │   │   │   ├── do_scope.js
│   │   │   │   │   ├── do_src.cmd
│   │   │   │   │   ├── do_src.expected
│   │   │   │   │   ├── do_src.js
│   │   │   │   │   ├── do_step.cmd
│   │   │   │   │   ├── do_step.expected
│   │   │   │   │   ├── do_step.js
│   │   │   │   │   ├── do_throw.cmd
│   │   │   │   │   ├── do_throw.expected
│   │   │   │   │   ├── do_throw.js
│   │   │   │   │   ├── do_throw_adv.cmd
│   │   │   │   │   ├── do_throw_adv.expected
│   │   │   │   │   ├── do_throw_adv.js
│   │   │   │   │   ├── do_variables.cmd
│   │   │   │   │   ├── do_variables.expected
│   │   │   │   │   └── do_variables.js
│   │   │   │   ├── hello.js
│   │   │   │   ├── jerry/
│   │   │   │   │   ├── and-or.js
│   │   │   │   │   ├── arguments-parse.js
│   │   │   │   │   ├── arguments.js
│   │   │   │   │   ├── arithmetics-bignums.js
│   │   │   │   │   ├── arithmetics.js
│   │   │   │   │   ├── array-prototype-concat.js
│   │   │   │   │   ├── array-prototype-every.js
│   │   │   │   │   ├── array-prototype-filter.js
│   │   │   │   │   ├── array-prototype-foreach.js
│   │   │   │   │   ├── array-prototype-indexof.js
│   │   │   │   │   ├── array-prototype-join.js
│   │   │   │   │   ├── array-prototype-lastindexof.js
│   │   │   │   │   ├── array-prototype-map.js
│   │   │   │   │   ├── array-prototype-pop.js
│   │   │   │   │   ├── array-prototype-push.js
│   │   │   │   │   ├── array-prototype-reduce-right.js
│   │   │   │   │   ├── array-prototype-reduce.js
│   │   │   │   │   ├── array-prototype-reverse.js
│   │   │   │   │   ├── array-prototype-shift.js
│   │   │   │   │   ├── array-prototype-slice.js
│   │   │   │   │   ├── array-prototype-some.js
│   │   │   │   │   ├── array-prototype-sort.js
│   │   │   │   │   ├── array-prototype-splice.js
│   │   │   │   │   ├── array-prototype-tolocalestring.js
│   │   │   │   │   ├── array-prototype-tostring.js
│   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   ├── array.js
│   │   │   │   │   ├── assignments.js
│   │   │   │   │   ├── bitwise-logic.js
│   │   │   │   │   ├── break-continue-nested-to-try-with-blocks.js
│   │   │   │   │   ├── builtin-constructor-class.js
│   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   ├── date-annexb.js
│   │   │   │   │   ├── date-construct.js
│   │   │   │   │   ├── date-getters.js
│   │   │   │   │   ├── date-parse.js
│   │   │   │   │   ├── date-setters.js
│   │   │   │   │   ├── date-toisostring.js
│   │   │   │   │   ├── date-tojson.js
│   │   │   │   │   ├── date-tostring.js
│   │   │   │   │   ├── date-utc.js
│   │   │   │   │   ├── delete.js
│   │   │   │   │   ├── do-while.js
│   │   │   │   │   ├── empty-varg.js
│   │   │   │   │   ├── equality.js
│   │   │   │   │   ├── error.js
│   │   │   │   │   ├── es.next/
│   │   │   │   │   │   ├── argument-spread.js
│   │   │   │   │   │   ├── arguments-iterator.js
│   │   │   │   │   │   ├── arguments.js
│   │   │   │   │   │   ├── arithmetic-parse.js
│   │   │   │   │   │   ├── arithmetics-2.js
│   │   │   │   │   │   ├── arithmetics-3.js
│   │   │   │   │   │   ├── array-from.js
│   │   │   │   │   │   ├── array-isarray.js
│   │   │   │   │   │   ├── array-new-target-support.js
│   │   │   │   │   │   ├── array-of.js
│   │   │   │   │   │   ├── array-pattern.js
│   │   │   │   │   │   ├── array-prototype-copywithin.js
│   │   │   │   │   │   ├── array-prototype-entries.js
│   │   │   │   │   │   ├── array-prototype-fill.js
│   │   │   │   │   │   ├── array-prototype-find-index.js
│   │   │   │   │   │   ├── array-prototype-find.js
│   │   │   │   │   │   ├── array-prototype-flat-flatMap.js
│   │   │   │   │   │   ├── array-prototype-includes.js
│   │   │   │   │   │   ├── array-prototype-keys.js
│   │   │   │   │   │   ├── array-prototype-slice.js
│   │   │   │   │   │   ├── array-prototype-sort.js
│   │   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   │   ├── array-prototype-values.js
│   │   │   │   │   │   ├── array-species.js
│   │   │   │   │   │   ├── array-spread.js
│   │   │   │   │   │   ├── arraybuffer-isview.js
│   │   │   │   │   │   ├── arrow-assignment.js
│   │   │   │   │   │   ├── arrow-eval.js
│   │   │   │   │   │   ├── arrow-function.js
│   │   │   │   │   │   ├── arrow-this.js
│   │   │   │   │   │   ├── bigint-typedarray-prototype-filter.js
│   │   │   │   │   │   ├── bigint-typedarray-prototype-reduce.js
│   │   │   │   │   │   ├── bigint1.js
│   │   │   │   │   │   ├── bigint2.js
│   │   │   │   │   │   ├── bigint3.js
│   │   │   │   │   │   ├── bigint4.js
│   │   │   │   │   │   ├── bigint5.js
│   │   │   │   │   │   ├── bigint6.js
│   │   │   │   │   │   ├── bigint7.js
│   │   │   │   │   │   ├── bigint8.js
│   │   │   │   │   │   ├── bigint9.js
│   │   │   │   │   │   ├── binary-literal.js
│   │   │   │   │   │   ├── block-var-redecl.js
│   │   │   │   │   │   ├── builtin-objects-accessor-property-configurable.js
│   │   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   │   ├── class-fields1.js
│   │   │   │   │   │   ├── class-fields2.js
│   │   │   │   │   │   ├── class-fields3.js
│   │   │   │   │   │   ├── class-fields4.js
│   │   │   │   │   │   ├── class-fields5.js
│   │   │   │   │   │   ├── class-get-set-as-method.js
│   │   │   │   │   │   ├── class-inheritance-bound.js
│   │   │   │   │   │   ├── class-inheritance-builtin-array.js
│   │   │   │   │   │   ├── class-inheritance-builtin-typedarray.js
│   │   │   │   │   │   ├── class-inheritance-core-1.js
│   │   │   │   │   │   ├── class-inheritance-core-10.js
│   │   │   │   │   │   ├── class-inheritance-core-11.js
│   │   │   │   │   │   ├── class-inheritance-core-12.js
│   │   │   │   │   │   ├── class-inheritance-core-13.js
│   │   │   │   │   │   ├── class-inheritance-core-14.js
│   │   │   │   │   │   ├── class-inheritance-core-15.js
│   │   │   │   │   │   ├── class-inheritance-core-2.js
│   │   │   │   │   │   ├── class-inheritance-core-3.js
│   │   │   │   │   │   ├── class-inheritance-core-4.js
│   │   │   │   │   │   ├── class-inheritance-core-5.js
│   │   │   │   │   │   ├── class-inheritance-core-6.js
│   │   │   │   │   │   ├── class-inheritance-core-7.js
│   │   │   │   │   │   ├── class-inheritance-core-8.js
│   │   │   │   │   │   ├── class-inheritance-core-9.js
│   │   │   │   │   │   ├── class-inheritance-early-semantics.js
│   │   │   │   │   │   ├── class-inheritance-has-instance.js
│   │   │   │   │   │   ├── class-inheritance-inner-class.js
│   │   │   │   │   │   ├── class-inheritance-mixins-1.js
│   │   │   │   │   │   ├── class-inheritance-mixins-2.js
│   │   │   │   │   │   ├── class-super-access-direct.js
│   │   │   │   │   │   ├── class-super-access-indirect.js
│   │   │   │   │   │   ├── class-with.js
│   │   │   │   │   │   ├── class.js
│   │   │   │   │   │   ├── const1.js
│   │   │   │   │   │   ├── continue.js
│   │   │   │   │   │   ├── dataview.js
│   │   │   │   │   │   ├── date-construct.js
│   │   │   │   │   │   ├── date-prototype-toprimitive.js
│   │   │   │   │   │   ├── decimal-with-leading-zero.js
│   │   │   │   │   │   ├── directive.js
│   │   │   │   │   │   ├── error-names.js
│   │   │   │   │   │   ├── error.js
│   │   │   │   │   │   ├── exponentiation.js
│   │   │   │   │   │   ├── for-await-of-iterator-close.js
│   │   │   │   │   │   ├── for-await-of.js
│   │   │   │   │   │   ├── for-let-reference-error.js
│   │   │   │   │   │   ├── for-let.js
│   │   │   │   │   │   ├── for-of-iterator-close.js
│   │   │   │   │   │   ├── for-of.js
│   │   │   │   │   │   ├── for-pattern.js
│   │   │   │   │   │   ├── forin-header-strict.js
│   │   │   │   │   │   ├── function-accessor.js
│   │   │   │   │   │   ├── function-arguments-caller.js
│   │   │   │   │   │   ├── function-async-gen1.js
│   │   │   │   │   │   ├── function-async-gen2.js
│   │   │   │   │   │   ├── function-async-gen3.js
│   │   │   │   │   │   ├── function-async-gen4.js
│   │   │   │   │   │   ├── function-async1.js
│   │   │   │   │   │   ├── function-async2.js
│   │   │   │   │   │   ├── function-async3.js
│   │   │   │   │   │   ├── function-await1.js
│   │   │   │   │   │   ├── function-await2.js
│   │   │   │   │   │   ├── function-await3.js
│   │   │   │   │   │   ├── function-call.js
│   │   │   │   │   │   ├── function-decl.js
│   │   │   │   │   │   ├── function-if.js
│   │   │   │   │   │   ├── function-name.js
│   │   │   │   │   │   ├── function-new-target.js
│   │   │   │   │   │   ├── function-param-init.js
│   │   │   │   │   │   ├── function-param-init2.js
│   │   │   │   │   │   ├── function-param-init3.js
│   │   │   │   │   │   ├── function-param-init4.js
│   │   │   │   │   │   ├── function-pattern1.js
│   │   │   │   │   │   ├── function-pattern2.js
│   │   │   │   │   │   ├── function-properties.js
│   │   │   │   │   │   ├── function-prototype-bind.js
│   │   │   │   │   │   ├── function-prototype-hasinstance-class.js
│   │   │   │   │   │   ├── function-prototype-hasinstance.js
│   │   │   │   │   │   ├── function-rest-parameter.js
│   │   │   │   │   │   ├── function-scope.js
│   │   │   │   │   │   ├── function-scope2.js
│   │   │   │   │   │   ├── generator-function.js
│   │   │   │   │   │   ├── generator-initializer.js
│   │   │   │   │   │   ├── generator-return.js
│   │   │   │   │   │   ├── generator-throw.js
│   │   │   │   │   │   ├── generator-yield-iterator.js
│   │   │   │   │   │   ├── generator-yield.js
│   │   │   │   │   │   ├── generator.js
│   │   │   │   │   │   ├── global-this.js
│   │   │   │   │   │   ├── global-unescape.js
│   │   │   │   │   │   ├── identifier-escape.js
│   │   │   │   │   │   ├── instanceof-symbol-hasinstance-class.js
│   │   │   │   │   │   ├── instanceof-symbol-hasinstance.js
│   │   │   │   │   │   ├── intrinsic-properties.js
│   │   │   │   │   │   ├── iterator-prototype.js
│   │   │   │   │   │   ├── json-parse-proxy.js
│   │   │   │   │   │   ├── json-stringify.js
│   │   │   │   │   │   ├── json-superset.js
│   │   │   │   │   │   ├── length-property.js
│   │   │   │   │   │   ├── let1.js
│   │   │   │   │   │   ├── let10.js
│   │   │   │   │   │   ├── let11.js
│   │   │   │   │   │   ├── let12.js
│   │   │   │   │   │   ├── let13.js
│   │   │   │   │   │   ├── let14.js
│   │   │   │   │   │   ├── let15.js
│   │   │   │   │   │   ├── let2.js
│   │   │   │   │   │   ├── let3.js
│   │   │   │   │   │   ├── let4.js
│   │   │   │   │   │   ├── let5.js
│   │   │   │   │   │   ├── let6.js
│   │   │   │   │   │   ├── let7.js
│   │   │   │   │   │   ├── let8.js
│   │   │   │   │   │   ├── let9.js
│   │   │   │   │   │   ├── map-iterators.js
│   │   │   │   │   │   ├── map-prototype-foreach.js
│   │   │   │   │   │   ├── map.js
│   │   │   │   │   │   ├── math-acosh.js
│   │   │   │   │   │   ├── math-asinh.js
│   │   │   │   │   │   ├── math-atanh.js
│   │   │   │   │   │   ├── math-cbrt.js
│   │   │   │   │   │   ├── math-cosh.js
│   │   │   │   │   │   ├── math-expm1.js
│   │   │   │   │   │   ├── math-functions-tonumber-rule2.js
│   │   │   │   │   │   ├── math-log10.js
│   │   │   │   │   │   ├── math-log1p.js
│   │   │   │   │   │   ├── math-log2.js
│   │   │   │   │   │   ├── math-sign.js
│   │   │   │   │   │   ├── math-sinh.js
│   │   │   │   │   │   ├── math-tanh.js
│   │   │   │   │   │   ├── math-trunc.js
│   │   │   │   │   │   ├── module-export-01.mjs
│   │   │   │   │   │   ├── module-export-02.mjs
│   │   │   │   │   │   ├── module-export-03.mjs
│   │   │   │   │   │   ├── module-export-04.mjs
│   │   │   │   │   │   ├── module-export-05.mjs
│   │   │   │   │   │   ├── module-export-06.mjs
│   │   │   │   │   │   ├── module-export-07.mjs
│   │   │   │   │   │   ├── module-export-08.mjs
│   │   │   │   │   │   ├── module-export-default-1.mjs
│   │   │   │   │   │   ├── module-export-default-2.mjs
│   │   │   │   │   │   ├── module-export-default-3.mjs
│   │   │   │   │   │   ├── module-export-default-4.mjs
│   │   │   │   │   │   ├── module-export-default-5.mjs
│   │   │   │   │   │   ├── module-export-default-6.mjs
│   │   │   │   │   │   ├── module-export-default-7.mjs
│   │   │   │   │   │   ├── module-export-default-8.mjs
│   │   │   │   │   │   ├── module-export-default-9.mjs
│   │   │   │   │   │   ├── module-export-default-main.mjs
│   │   │   │   │   │   ├── module-export-fail-test.mjs
│   │   │   │   │   │   ├── module-import-01.mjs
│   │   │   │   │   │   ├── module-import-02.mjs
│   │   │   │   │   │   ├── module-import-03.mjs
│   │   │   │   │   │   ├── module-import-04.mjs
│   │   │   │   │   │   ├── module-import-05.mjs
│   │   │   │   │   │   ├── module-resource-name-export.mjs
│   │   │   │   │   │   ├── module-resource-name.mjs
│   │   │   │   │   │   ├── new-target-async.js
│   │   │   │   │   │   ├── new-target-class.js
│   │   │   │   │   │   ├── new-target-error.js
│   │   │   │   │   │   ├── new-target-for-boolean.js
│   │   │   │   │   │   ├── new-target-for-containers.js
│   │   │   │   │   │   ├── new-target-for-dataview.js
│   │   │   │   │   │   ├── new-target-for-date-object.js
│   │   │   │   │   │   ├── new-target-for-number.js
│   │   │   │   │   │   ├── new-target-for-string.js
│   │   │   │   │   │   ├── new-target-for-typedarray-and-arraybuffer.js
│   │   │   │   │   │   ├── new-target-generator.js
│   │   │   │   │   │   ├── new-target.js
│   │   │   │   │   │   ├── nullish-coalescing.js
│   │   │   │   │   │   ├── number-constants.js
│   │   │   │   │   │   ├── number-isfinite.js
│   │   │   │   │   │   ├── number-isinteger.js
│   │   │   │   │   │   ├── number-isnan.js
│   │   │   │   │   │   ├── number-issafeinteger.js
│   │   │   │   │   │   ├── number-methods.js
│   │   │   │   │   │   ├── numeric-separator.js
│   │   │   │   │   │   ├── object-assign.js
│   │   │   │   │   │   ├── object-computed-prescanner.js
│   │   │   │   │   │   ├── object-computed.js
│   │   │   │   │   │   ├── object-copy-data.js
│   │   │   │   │   │   ├── object-define-properties.js
│   │   │   │   │   │   ├── object-entries.js
│   │   │   │   │   │   ├── object-freeze-with-symbol.js
│   │   │   │   │   │   ├── object-fromEntries.js
│   │   │   │   │   │   ├── object-get-own-property-descriptors.js
│   │   │   │   │   │   ├── object-get-own-property-names.js
│   │   │   │   │   │   ├── object-get-own-property-symbols.js
│   │   │   │   │   │   ├── object-getprototypeof.js
│   │   │   │   │   │   ├── object-initializer.js
│   │   │   │   │   │   ├── object-is.js
│   │   │   │   │   │   ├── object-keys.js
│   │   │   │   │   │   ├── object-literal-super.js
│   │   │   │   │   │   ├── object-methods.js
│   │   │   │   │   │   ├── object-pattern.js
│   │   │   │   │   │   ├── object-pattern2.js
│   │   │   │   │   │   ├── object-property-redefiniton.js
│   │   │   │   │   │   ├── object-prototype-define-getter.js
│   │   │   │   │   │   ├── object-prototype-define-setter.js
│   │   │   │   │   │   ├── object-prototype-lookup-getter.js
│   │   │   │   │   │   ├── object-prototype-lookup-setter.js
│   │   │   │   │   │   ├── object-prototype-proto.js
│   │   │   │   │   │   ├── object-prototype-tostring.js
│   │   │   │   │   │   ├── object-seal-with-symbol.js
│   │   │   │   │   │   ├── object-values.js
│   │   │   │   │   │   ├── octal-literal.js
│   │   │   │   │   │   ├── parser-additive-op-assign.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-1.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-2.js
│   │   │   │   │   │   ├── parser-binary-bitwise-op-assign-3.js
│   │   │   │   │   │   ├── parser-binary-logical-op-assign.js
│   │   │   │   │   │   ├── parser-covered-parenthesized-exp-assign.js
│   │   │   │   │   │   ├── parser-delete-op-assign.js
│   │   │   │   │   │   ├── parser-equality-exp-assign-1.js
│   │   │   │   │   │   ├── parser-equality-exp-assign-2.js
│   │   │   │   │   │   ├── parser-mult-op-assign-1.js
│   │   │   │   │   │   ├── parser-mult-op-assign-2.js
│   │   │   │   │   │   ├── parser-mult-op-assign-3.js
│   │   │   │   │   │   ├── parser-not-op-assign.js
│   │   │   │   │   │   ├── parser-plus-negation-op-assign.js
│   │   │   │   │   │   ├── parser-postfix-exp-assign.js
│   │   │   │   │   │   ├── parser-prefix-exp-assign.js
│   │   │   │   │   │   ├── parser-rational-exp-assign-1.js
│   │   │   │   │   │   ├── parser-rational-exp-assign-2.js
│   │   │   │   │   │   ├── parser-shift-exp-assign.js
│   │   │   │   │   │   ├── parser-typeof-op-assign.js
│   │   │   │   │   │   ├── parser-void-op-assign.js
│   │   │   │   │   │   ├── promise-all-iterator.js
│   │   │   │   │   │   ├── promise-new-target.js
│   │   │   │   │   │   ├── promise-on-finally.js
│   │   │   │   │   │   ├── promise-race-iterator.js
│   │   │   │   │   │   ├── promise-species.js
│   │   │   │   │   │   ├── promise-thenable.js
│   │   │   │   │   │   ├── proxy-date-prototype-json.js
│   │   │   │   │   │   ├── proxy-extension.js
│   │   │   │   │   │   ├── proxy-for-in.js
│   │   │   │   │   │   ├── proxy_call.js
│   │   │   │   │   │   ├── proxy_construct.js
│   │   │   │   │   │   ├── proxy_create.js
│   │   │   │   │   │   ├── proxy_define_own_property.js
│   │   │   │   │   │   ├── proxy_delete.js
│   │   │   │   │   │   ├── proxy_flags.js
│   │   │   │   │   │   ├── proxy_get.js
│   │   │   │   │   │   ├── proxy_get_own_property_descriptor.js
│   │   │   │   │   │   ├── proxy_get_prototoype_of.js
│   │   │   │   │   │   ├── proxy_has.js
│   │   │   │   │   │   ├── proxy_is_extensible.js
│   │   │   │   │   │   ├── proxy_own_keys.js
│   │   │   │   │   │   ├── proxy_prevent_extensions.js
│   │   │   │   │   │   ├── proxy_revocable.js
│   │   │   │   │   │   ├── proxy_set.js
│   │   │   │   │   │   ├── proxy_set_apply_receiver.js
│   │   │   │   │   │   ├── proxy_set_prototoype_of.js
│   │   │   │   │   │   ├── realms1.js
│   │   │   │   │   │   ├── realms2.js
│   │   │   │   │   │   ├── realms3.js
│   │   │   │   │   │   ├── realms4.js
│   │   │   │   │   │   ├── reflect-apply.js
│   │   │   │   │   │   ├── reflect-construct.js
│   │   │   │   │   │   ├── reflect-define-Property.js
│   │   │   │   │   │   ├── reflect-deleteproperty.js
│   │   │   │   │   │   ├── reflect-get-own-property-description.js
│   │   │   │   │   │   ├── reflect-get.js
│   │   │   │   │   │   ├── reflect-getPrototypeOf.js
│   │   │   │   │   │   ├── reflect-has.js
│   │   │   │   │   │   ├── reflect-isextensible.js
│   │   │   │   │   │   ├── reflect-own-keys.js
│   │   │   │   │   │   ├── reflect-preventextensions.js
│   │   │   │   │   │   ├── reflect-set.js
│   │   │   │   │   │   ├── reflect-setPrototypeOf.js
│   │   │   │   │   │   ├── regexp-accessors-descriptors.js
│   │   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   │   ├── regexp-dotAll.js
│   │   │   │   │   │   ├── regexp-flags.js
│   │   │   │   │   │   ├── regexp-lastindex.js
│   │   │   │   │   │   ├── regexp-new-target.js
│   │   │   │   │   │   ├── regexp-prototype-match-all.js
│   │   │   │   │   │   ├── regexp-prototype-match.js
│   │   │   │   │   │   ├── regexp-prototype-source.js
│   │   │   │   │   │   ├── regexp-prototype-split.js
│   │   │   │   │   │   ├── regexp-prototype-test.js
│   │   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   │   ├── regexp-unicode.js
│   │   │   │   │   │   ├── regression-test-issue-1616.js
│   │   │   │   │   │   ├── regression-test-issue-1622.js
│   │   │   │   │   │   ├── regression-test-issue-1633.js
│   │   │   │   │   │   ├── regression-test-issue-1670.js
│   │   │   │   │   │   ├── regression-test-issue-1763.js
│   │   │   │   │   │   ├── regression-test-issue-1765.js
│   │   │   │   │   │   ├── regression-test-issue-1881.js
│   │   │   │   │   │   ├── regression-test-issue-1936.js
│   │   │   │   │   │   ├── regression-test-issue-1995.js
│   │   │   │   │   │   ├── regression-test-issue-1996.js
│   │   │   │   │   │   ├── regression-test-issue-1997.js
│   │   │   │   │   │   ├── regression-test-issue-2058.js
│   │   │   │   │   │   ├── regression-test-issue-2107.js
│   │   │   │   │   │   ├── regression-test-issue-2110.js
│   │   │   │   │   │   ├── regression-test-issue-2111.js
│   │   │   │   │   │   ├── regression-test-issue-2143.js
│   │   │   │   │   │   ├── regression-test-issue-2181.js
│   │   │   │   │   │   ├── regression-test-issue-2414.js
│   │   │   │   │   │   ├── regression-test-issue-2435.js
│   │   │   │   │   │   ├── regression-test-issue-2465.js
│   │   │   │   │   │   ├── regression-test-issue-2468.js
│   │   │   │   │   │   ├── regression-test-issue-2486.js
│   │   │   │   │   │   ├── regression-test-issue-2487.js
│   │   │   │   │   │   ├── regression-test-issue-2488.js
│   │   │   │   │   │   ├── regression-test-issue-2489-original.js
│   │   │   │   │   │   ├── regression-test-issue-2490.js
│   │   │   │   │   │   ├── regression-test-issue-2528.js
│   │   │   │   │   │   ├── regression-test-issue-2544.js
│   │   │   │   │   │   ├── regression-test-issue-2587.js
│   │   │   │   │   │   ├── regression-test-issue-2602.js
│   │   │   │   │   │   ├── regression-test-issue-2603.js
│   │   │   │   │   │   ├── regression-test-issue-2657.js
│   │   │   │   │   │   ├── regression-test-issue-2658.js
│   │   │   │   │   │   ├── regression-test-issue-2664.js
│   │   │   │   │   │   ├── regression-test-issue-2666.js
│   │   │   │   │   │   ├── regression-test-issue-2667.js
│   │   │   │   │   │   ├── regression-test-issue-2671.js
│   │   │   │   │   │   ├── regression-test-issue-2693.js
│   │   │   │   │   │   ├── regression-test-issue-2698.js
│   │   │   │   │   │   ├── regression-test-issue-2724.js
│   │   │   │   │   │   ├── regression-test-issue-2743.js
│   │   │   │   │   │   ├── regression-test-issue-2757.js
│   │   │   │   │   │   ├── regression-test-issue-2768.js
│   │   │   │   │   │   ├── regression-test-issue-2769.js
│   │   │   │   │   │   ├── regression-test-issue-2770.js
│   │   │   │   │   │   ├── regression-test-issue-2777.js
│   │   │   │   │   │   ├── regression-test-issue-2779.js
│   │   │   │   │   │   ├── regression-test-issue-2782.js
│   │   │   │   │   │   ├── regression-test-issue-2783.js
│   │   │   │   │   │   ├── regression-test-issue-2822.js
│   │   │   │   │   │   ├── regression-test-issue-2823.js
│   │   │   │   │   │   ├── regression-test-issue-2825.js
│   │   │   │   │   │   ├── regression-test-issue-2842.mjs
│   │   │   │   │   │   ├── regression-test-issue-2848.js
│   │   │   │   │   │   ├── regression-test-issue-2850.js
│   │   │   │   │   │   ├── regression-test-issue-2851.js
│   │   │   │   │   │   ├── regression-test-issue-2852.js
│   │   │   │   │   │   ├── regression-test-issue-2853.js
│   │   │   │   │   │   ├── regression-test-issue-2854.js
│   │   │   │   │   │   ├── regression-test-issue-2891.js
│   │   │   │   │   │   ├── regression-test-issue-2895.js
│   │   │   │   │   │   ├── regression-test-issue-2910.js
│   │   │   │   │   │   ├── regression-test-issue-2911.js
│   │   │   │   │   │   ├── regression-test-issue-2947.js
│   │   │   │   │   │   ├── regression-test-issue-2948.js
│   │   │   │   │   │   ├── regression-test-issue-2950.js
│   │   │   │   │   │   ├── regression-test-issue-2951.js
│   │   │   │   │   │   ├── regression-test-issue-2975.js
│   │   │   │   │   │   ├── regression-test-issue-2990.js
│   │   │   │   │   │   ├── regression-test-issue-3040.js
│   │   │   │   │   │   ├── regression-test-issue-3043-3046.js
│   │   │   │   │   │   ├── regression-test-issue-3045.js
│   │   │   │   │   │   ├── regression-test-issue-3049.js
│   │   │   │   │   │   ├── regression-test-issue-3050.js
│   │   │   │   │   │   ├── regression-test-issue-3062.js
│   │   │   │   │   │   ├── regression-test-issue-3063.js
│   │   │   │   │   │   ├── regression-test-issue-3067.js
│   │   │   │   │   │   ├── regression-test-issue-3070.js
│   │   │   │   │   │   ├── regression-test-issue-3072.js
│   │   │   │   │   │   ├── regression-test-issue-3078.js
│   │   │   │   │   │   ├── regression-test-issue-3079.js
│   │   │   │   │   │   ├── regression-test-issue-3084.js
│   │   │   │   │   │   ├── regression-test-issue-3095.js
│   │   │   │   │   │   ├── regression-test-issue-3097.js
│   │   │   │   │   │   ├── regression-test-issue-3105.js
│   │   │   │   │   │   ├── regression-test-issue-3106.js
│   │   │   │   │   │   ├── regression-test-issue-3107.js
│   │   │   │   │   │   ├── regression-test-issue-3109.js
│   │   │   │   │   │   ├── regression-test-issue-3129.js
│   │   │   │   │   │   ├── regression-test-issue-3162.js
│   │   │   │   │   │   ├── regression-test-issue-3204.js
│   │   │   │   │   │   ├── regression-test-issue-3222.js
│   │   │   │   │   │   ├── regression-test-issue-3237.js
│   │   │   │   │   │   ├── regression-test-issue-3243.js
│   │   │   │   │   │   ├── regression-test-issue-3250.js
│   │   │   │   │   │   ├── regression-test-issue-3252.js
│   │   │   │   │   │   ├── regression-test-issue-3262.js
│   │   │   │   │   │   ├── regression-test-issue-3267.js
│   │   │   │   │   │   ├── regression-test-issue-3298.js
│   │   │   │   │   │   ├── regression-test-issue-3302.js
│   │   │   │   │   │   ├── regression-test-issue-3306.js
│   │   │   │   │   │   ├── regression-test-issue-3348.js
│   │   │   │   │   │   ├── regression-test-issue-3355.js
│   │   │   │   │   │   ├── regression-test-issue-3356.js
│   │   │   │   │   │   ├── regression-test-issue-3360.js
│   │   │   │   │   │   ├── regression-test-issue-3361.js
│   │   │   │   │   │   ├── regression-test-issue-3363.js
│   │   │   │   │   │   ├── regression-test-issue-3364.js
│   │   │   │   │   │   ├── regression-test-issue-3376.js
│   │   │   │   │   │   ├── regression-test-issue-3381.js
│   │   │   │   │   │   ├── regression-test-issue-3383.js
│   │   │   │   │   │   ├── regression-test-issue-3390.js
│   │   │   │   │   │   ├── regression-test-issue-3395.js
│   │   │   │   │   │   ├── regression-test-issue-3396.js
│   │   │   │   │   │   ├── regression-test-issue-3408.js
│   │   │   │   │   │   ├── regression-test-issue-3409.js
│   │   │   │   │   │   ├── regression-test-issue-3411.js
│   │   │   │   │   │   ├── regression-test-issue-3419.js
│   │   │   │   │   │   ├── regression-test-issue-3420.js
│   │   │   │   │   │   ├── regression-test-issue-3421.js
│   │   │   │   │   │   ├── regression-test-issue-3422.js
│   │   │   │   │   │   ├── regression-test-issue-3431.js
│   │   │   │   │   │   ├── regression-test-issue-3434.js
│   │   │   │   │   │   ├── regression-test-issue-3437.js
│   │   │   │   │   │   ├── regression-test-issue-3454.js
│   │   │   │   │   │   ├── regression-test-issue-3455.js
│   │   │   │   │   │   ├── regression-test-issue-3458.js
│   │   │   │   │   │   ├── regression-test-issue-3459.js
│   │   │   │   │   │   ├── regression-test-issue-3478.js
│   │   │   │   │   │   ├── regression-test-issue-3479.js
│   │   │   │   │   │   ├── regression-test-issue-3483.js
│   │   │   │   │   │   ├── regression-test-issue-3485.js
│   │   │   │   │   │   ├── regression-test-issue-3519.js
│   │   │   │   │   │   ├── regression-test-issue-3527.js
│   │   │   │   │   │   ├── regression-test-issue-3534.js
│   │   │   │   │   │   ├── regression-test-issue-3536.js
│   │   │   │   │   │   ├── regression-test-issue-3580.js
│   │   │   │   │   │   ├── regression-test-issue-3588.js
│   │   │   │   │   │   ├── regression-test-issue-3589.js
│   │   │   │   │   │   ├── regression-test-issue-3595.js
│   │   │   │   │   │   ├── regression-test-issue-3606.js
│   │   │   │   │   │   ├── regression-test-issue-3611.js
│   │   │   │   │   │   ├── regression-test-issue-3625.js
│   │   │   │   │   │   ├── regression-test-issue-3628.js
│   │   │   │   │   │   ├── regression-test-issue-3630.js
│   │   │   │   │   │   ├── regression-test-issue-3636.js
│   │   │   │   │   │   ├── regression-test-issue-3637.js
│   │   │   │   │   │   ├── regression-test-issue-3640.js
│   │   │   │   │   │   ├── regression-test-issue-3641.js
│   │   │   │   │   │   ├── regression-test-issue-3647.js
│   │   │   │   │   │   ├── regression-test-issue-3655.js
│   │   │   │   │   │   ├── regression-test-issue-3656.js
│   │   │   │   │   │   ├── regression-test-issue-3658.js
│   │   │   │   │   │   ├── regression-test-issue-3665.js
│   │   │   │   │   │   ├── regression-test-issue-3671.js
│   │   │   │   │   │   ├── regression-test-issue-3713.js
│   │   │   │   │   │   ├── regression-test-issue-3715.js
│   │   │   │   │   │   ├── regression-test-issue-3727.js
│   │   │   │   │   │   ├── regression-test-issue-3751.js
│   │   │   │   │   │   ├── regression-test-issue-3760.js
│   │   │   │   │   │   ├── regression-test-issue-3784.js
│   │   │   │   │   │   ├── regression-test-issue-3785.js
│   │   │   │   │   │   ├── regression-test-issue-3787.js
│   │   │   │   │   │   ├── regression-test-issue-3812.js
│   │   │   │   │   │   ├── regression-test-issue-3814.js
│   │   │   │   │   │   ├── regression-test-issue-3815.js
│   │   │   │   │   │   ├── regression-test-issue-3817.js
│   │   │   │   │   │   ├── regression-test-issue-3819.js
│   │   │   │   │   │   ├── regression-test-issue-3820.js
│   │   │   │   │   │   ├── regression-test-issue-3822.js
│   │   │   │   │   │   ├── regression-test-issue-3823.js
│   │   │   │   │   │   ├── regression-test-issue-3824.js
│   │   │   │   │   │   ├── regression-test-issue-3825.js
│   │   │   │   │   │   ├── regression-test-issue-3836.js
│   │   │   │   │   │   ├── regression-test-issue-3837.js
│   │   │   │   │   │   ├── regression-test-issue-3841.js
│   │   │   │   │   │   ├── regression-test-issue-3842.js
│   │   │   │   │   │   ├── regression-test-issue-3845.js
│   │   │   │   │   │   ├── regression-test-issue-3849.js
│   │   │   │   │   │   ├── regression-test-issue-3856.js
│   │   │   │   │   │   ├── regression-test-issue-3857.js
│   │   │   │   │   │   ├── regression-test-issue-3860.js
│   │   │   │   │   │   ├── regression-test-issue-3861.js
│   │   │   │   │   │   ├── regression-test-issue-3862.js
│   │   │   │   │   │   ├── regression-test-issue-3866.js
│   │   │   │   │   │   ├── regression-test-issue-3868.js
│   │   │   │   │   │   ├── regression-test-issue-3869.js
│   │   │   │   │   │   ├── regression-test-issue-3870.js
│   │   │   │   │   │   ├── regression-test-issue-3871.js
│   │   │   │   │   │   ├── regression-test-issue-3880.js
│   │   │   │   │   │   ├── regression-test-issue-3888.js
│   │   │   │   │   │   ├── regression-test-issue-3893.js
│   │   │   │   │   │   ├── regression-test-issue-3908.js
│   │   │   │   │   │   ├── regression-test-issue-3935.js
│   │   │   │   │   │   ├── regression-test-issue-3945.js
│   │   │   │   │   │   ├── regression-test-issue-3950.js
│   │   │   │   │   │   ├── regression-test-issue-3975.js
│   │   │   │   │   │   ├── regression-test-issue-4013.js
│   │   │   │   │   │   ├── regression-test-issue-4016-4019.js
│   │   │   │   │   │   ├── regression-test-issue-4017.js
│   │   │   │   │   │   ├── regression-test-issue-4018.js
│   │   │   │   │   │   ├── regression-test-issue-4043.js
│   │   │   │   │   │   ├── regression-test-issue-4044.js
│   │   │   │   │   │   ├── regression-test-issue-4045.js
│   │   │   │   │   │   ├── regression-test-issue-4048.js
│   │   │   │   │   │   ├── regression-test-issue-4050.js
│   │   │   │   │   │   ├── regression-test-issue-4051.js
│   │   │   │   │   │   ├── regression-test-issue-4052.js
│   │   │   │   │   │   ├── regression-test-issue-4054.js
│   │   │   │   │   │   ├── regression-test-issue-4059.js
│   │   │   │   │   │   ├── regression-test-issue-4093.js
│   │   │   │   │   │   ├── regression-test-issue-4094.js
│   │   │   │   │   │   ├── regression-test-issue-4097.js
│   │   │   │   │   │   ├── regression-test-issue-4129.js
│   │   │   │   │   │   ├── regression-test-issue-4131.js
│   │   │   │   │   │   ├── regression-test-issue-4132.js
│   │   │   │   │   │   ├── regression-test-issue-4138.js
│   │   │   │   │   │   ├── regression-test-issue-4139.js
│   │   │   │   │   │   ├── regression-test-issue-4146.js
│   │   │   │   │   │   ├── regression-test-issue-4147.js
│   │   │   │   │   │   ├── regression-test-issue-4148.js
│   │   │   │   │   │   ├── regression-test-issue-4149.js
│   │   │   │   │   │   ├── regression-test-issue-4213.js
│   │   │   │   │   │   ├── regression-test-issue-4214.js
│   │   │   │   │   │   ├── regression-test-issue-4234.js
│   │   │   │   │   │   ├── regression-test-issue-4265.js
│   │   │   │   │   │   ├── regression-test-issue-4341.js
│   │   │   │   │   │   ├── regression-test-issue-4375.js
│   │   │   │   │   │   ├── regression-test-issue-4385.js
│   │   │   │   │   │   ├── regression-test-issue-4396.js
│   │   │   │   │   │   ├── regression-test-issue-4397.js
│   │   │   │   │   │   ├── regression-test-issue-4398.js
│   │   │   │   │   │   ├── regression-test-issue-4402.js
│   │   │   │   │   │   ├── regression-test-issue-4405.js
│   │   │   │   │   │   ├── regression-test-issue-4408.js
│   │   │   │   │   │   ├── regression-test-issue-4413.js
│   │   │   │   │   │   ├── regression-test-issue-4432.js
│   │   │   │   │   │   ├── regression-test-issue-4440.js
│   │   │   │   │   │   ├── regression-test-issue-4441.js
│   │   │   │   │   │   ├── regression-test-issue-4442.js
│   │   │   │   │   │   ├── regression-test-issue-4445.js
│   │   │   │   │   │   ├── regression-test-issue-4446.js
│   │   │   │   │   │   ├── regression-test-issue-4463.js
│   │   │   │   │   │   ├── regression-test-issue-4464.js
│   │   │   │   │   │   ├── regression-test-issue-4466.js
│   │   │   │   │   │   ├── regression-test-issue-4468.js
│   │   │   │   │   │   ├── regression-test-issue-4469.js
│   │   │   │   │   │   ├── regression-test-issue-612.js
│   │   │   │   │   │   ├── regression-test-issue-782.js
│   │   │   │   │   │   ├── restricted-properties.js
│   │   │   │   │   │   ├── set-iterators.js
│   │   │   │   │   │   ├── set.js
│   │   │   │   │   │   ├── string-fromcodepoint.js
│   │   │   │   │   │   ├── string-iterator.js
│   │   │   │   │   │   ├── string-prototype-codepointat.js
│   │   │   │   │   │   ├── string-prototype-endswith.js
│   │   │   │   │   │   ├── string-prototype-includes.js
│   │   │   │   │   │   ├── string-prototype-match-all.js
│   │   │   │   │   │   ├── string-prototype-match.js
│   │   │   │   │   │   ├── string-prototype-padding.js
│   │   │   │   │   │   ├── string-prototype-repeat.js
│   │   │   │   │   │   ├── string-prototype-replace-all.js
│   │   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   │   ├── string-prototype-startswith.js
│   │   │   │   │   │   ├── string-prototype-trim.js
│   │   │   │   │   │   ├── string-raw-crash-escaping-backslash.js
│   │   │   │   │   │   ├── string-raw.js
│   │   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   │   ├── super-assignment.js
│   │   │   │   │   │   ├── symbol-computed-object-literal.js
│   │   │   │   │   │   ├── symbol-exception.js
│   │   │   │   │   │   ├── symbol-in.js
│   │   │   │   │   │   ├── symbol-isconcatspreadable.js
│   │   │   │   │   │   ├── symbol-key-keyfor.js
│   │   │   │   │   │   ├── symbol-prototype-description.js
│   │   │   │   │   │   ├── symbol-prototype-symbol-toprimitive.js
│   │   │   │   │   │   ├── symbol-prototype-tostring.js
│   │   │   │   │   │   ├── symbol-prototype-valueof.js
│   │   │   │   │   │   ├── symbol-prototype.toprimitive.js
│   │   │   │   │   │   ├── symbol-replace.js
│   │   │   │   │   │   ├── symbol-search.js
│   │   │   │   │   │   ├── symbol-split.js
│   │   │   │   │   │   ├── symbol-unscopables.js
│   │   │   │   │   │   ├── symbol.js
│   │   │   │   │   │   ├── tagged-template-literal.js
│   │   │   │   │   │   ├── template_string.js
│   │   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   │   ├── test_suite_19.js
│   │   │   │   │   │   ├── test_suite_22.js
│   │   │   │   │   │   ├── test_suite_24.js
│   │   │   │   │   │   ├── test_suite_25.js
│   │   │   │   │   │   ├── to-length.js
│   │   │   │   │   │   ├── to-number-string.js
│   │   │   │   │   │   ├── to-property-key.js
│   │   │   │   │   │   ├── try-catch.js
│   │   │   │   │   │   ├── try-pattern.js
│   │   │   │   │   │   ├── typedArray-fill.js
│   │   │   │   │   │   ├── typedArray-find-index.js
│   │   │   │   │   │   ├── typedArray-find.js
│   │   │   │   │   │   ├── typedArray-join.js
│   │   │   │   │   │   ├── typedArray-set-with-typedArray.js
│   │   │   │   │   │   ├── typedArray-sort.js
│   │   │   │   │   │   ├── typedArray-stringify.js
│   │   │   │   │   │   ├── typedArray-subarray.js
│   │   │   │   │   │   ├── typedArray-tostring.js
│   │   │   │   │   │   ├── typedarray-from.js
│   │   │   │   │   │   ├── typedarray-of.js
│   │   │   │   │   │   ├── typedarray-offset-modulo.js
│   │   │   │   │   │   ├── typedarray-prototype-copy-within.js
│   │   │   │   │   │   ├── typedarray-prototype-entries.js
│   │   │   │   │   │   ├── typedarray-prototype-includes.js
│   │   │   │   │   │   ├── typedarray-prototype-indexof.js
│   │   │   │   │   │   ├── typedarray-prototype-keys.js
│   │   │   │   │   │   ├── typedarray-prototype-lastindexof.js
│   │   │   │   │   │   ├── typedarray-prototype-slice-ext-arraybuffer.js
│   │   │   │   │   │   ├── typedarray-prototype-slice.js
│   │   │   │   │   │   ├── typedarray-prototype-tolocalestring.js
│   │   │   │   │   │   ├── typedarray-prototype-values.js
│   │   │   │   │   │   ├── typedarray-symbol-properties.js
│   │   │   │   │   │   ├── unicode-escape-identifiers.js
│   │   │   │   │   │   ├── weakmap.js
│   │   │   │   │   │   └── weakset.js
│   │   │   │   │   ├── es5.1/
│   │   │   │   │   │   ├── arguments.js
│   │   │   │   │   │   ├── arithmetic-parse.js
│   │   │   │   │   │   ├── arithmetics.js
│   │   │   │   │   │   ├── array-prototype-push.js
│   │   │   │   │   │   ├── array-prototype-unshift.js
│   │   │   │   │   │   ├── builtin-prototypes.js
│   │   │   │   │   │   ├── date-utc.js
│   │   │   │   │   │   ├── func-decl.js
│   │   │   │   │   │   ├── func-length.js
│   │   │   │   │   │   ├── json-superset.js
│   │   │   │   │   │   ├── object-getprototypeof.js
│   │   │   │   │   │   ├── object-literal-fails.js
│   │   │   │   │   │   ├── object-methods.js
│   │   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   │   ├── regexp-lastindex.js
│   │   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   │   ├── regression-test-issue-1065.js
│   │   │   │   │   │   ├── regression-test-issue-1080.js
│   │   │   │   │   │   ├── regression-test-issue-116.js
│   │   │   │   │   │   ├── regression-test-issue-1546.js
│   │   │   │   │   │   ├── regression-test-issue-1641.js
│   │   │   │   │   │   ├── regression-test-issue-2058.js
│   │   │   │   │   │   ├── regression-test-issue-312.js
│   │   │   │   │   │   ├── regression-test-issue-3151-function.js
│   │   │   │   │   │   ├── regression-test-issue-3637.js
│   │   │   │   │   │   ├── regression-test-issue-3815.js
│   │   │   │   │   │   ├── regression-test-issue-787.js
│   │   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   │   ├── string-regexp-methods.js
│   │   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   │   └── try-catch.js
│   │   │   │   │   ├── escape-sequences.js
│   │   │   │   │   ├── eval-with.js
│   │   │   │   │   ├── eval.js
│   │   │   │   │   ├── fail/
│   │   │   │   │   │   ├── arguments-assignment-strict.js
│   │   │   │   │   │   ├── arguments-catch-strict.js
│   │   │   │   │   │   ├── arguments-in-prop-set-param-list-strict.js
│   │   │   │   │   │   ├── arguments-in-var-decl-strict.js
│   │   │   │   │   │   ├── arguments-param-strict.js
│   │   │   │   │   │   ├── arguments-postfix-strict.js
│   │   │   │   │   │   ├── arguments-prefix-strict.js
│   │   │   │   │   │   ├── delete-strict.js
│   │   │   │   │   │   ├── escape-sequences-invalid-hex.js
│   │   │   │   │   │   ├── escape-sequences-invalid-unicode.js
│   │   │   │   │   │   ├── escape-sequences-invalid-variable.js
│   │   │   │   │   │   ├── eval-assignment-strict.js
│   │   │   │   │   │   ├── eval-catch-strict.js
│   │   │   │   │   │   ├── eval-in-prop-set-param-list-strict.js
│   │   │   │   │   │   ├── eval-in-var-decl-strict.js
│   │   │   │   │   │   ├── eval-param-strict.js
│   │   │   │   │   │   ├── eval-postfix-strict.js
│   │   │   │   │   │   ├── eval-prefix-strict.js
│   │   │   │   │   │   ├── func-expr-strict.js
│   │   │   │   │   │   ├── labelled-statements-break-across-function.js
│   │   │   │   │   │   ├── labelled-statements-duplicate-label.js
│   │   │   │   │   │   ├── labelled-statements-no-label.js
│   │   │   │   │   │   ├── let-strict.js
│   │   │   │   │   │   ├── module-001.mjs
│   │   │   │   │   │   ├── module-002.mjs
│   │   │   │   │   │   ├── module-003.mjs
│   │   │   │   │   │   ├── module-004.mjs
│   │   │   │   │   │   ├── module-005.mjs
│   │   │   │   │   │   ├── module-006.mjs
│   │   │   │   │   │   ├── module-007.mjs
│   │   │   │   │   │   ├── module-008.mjs
│   │   │   │   │   │   ├── module-009.mjs
│   │   │   │   │   │   ├── module-010.mjs
│   │   │   │   │   │   ├── module-011.mjs
│   │   │   │   │   │   ├── module-012.mjs
│   │   │   │   │   │   ├── module-013.mjs
│   │   │   │   │   │   ├── module-014.mjs
│   │   │   │   │   │   ├── module-015.mjs
│   │   │   │   │   │   ├── module-016.mjs
│   │   │   │   │   │   ├── module-017.mjs
│   │   │   │   │   │   ├── module-018.mjs
│   │   │   │   │   │   ├── module-019.mjs
│   │   │   │   │   │   ├── module-020.mjs
│   │   │   │   │   │   ├── module-021.mjs
│   │   │   │   │   │   ├── module-022.mjs
│   │   │   │   │   │   ├── module-023.mjs
│   │   │   │   │   │   ├── module-024.mjs
│   │   │   │   │   │   ├── module-025.mjs
│   │   │   │   │   │   ├── module-026.mjs
│   │   │   │   │   │   ├── module-027.mjs
│   │   │   │   │   │   ├── module-028.mjs
│   │   │   │   │   │   ├── module-029.mjs
│   │   │   │   │   │   ├── module-030.mjs
│   │   │   │   │   │   ├── module-031.mjs
│   │   │   │   │   │   ├── module-032.mjs
│   │   │   │   │   │   ├── module-033.mjs
│   │   │   │   │   │   ├── module-034.mjs
│   │   │   │   │   │   ├── module-035.mjs
│   │   │   │   │   │   ├── module-036.mjs
│   │   │   │   │   │   ├── module-037.mjs
│   │   │   │   │   │   ├── module-await-001.mjs
│   │   │   │   │   │   ├── module-export-001.mjs
│   │   │   │   │   │   ├── module-export-default-arrow.mjs
│   │   │   │   │   │   ├── module-sideeffect.mjs
│   │   │   │   │   │   ├── octal-strict.js
│   │   │   │   │   │   ├── param-duplication-strict.js
│   │   │   │   │   │   ├── regression-test-issue-1387.js
│   │   │   │   │   │   ├── regression-test-issue-1549.js
│   │   │   │   │   │   ├── regression-test-issue-1550.js
│   │   │   │   │   │   ├── regression-test-issue-1597.js
│   │   │   │   │   │   ├── regression-test-issue-1598.js
│   │   │   │   │   │   ├── regression-test-issue-1615.js
│   │   │   │   │   │   ├── regression-test-issue-1624.js
│   │   │   │   │   │   ├── regression-test-issue-1671.js
│   │   │   │   │   │   ├── regression-test-issue-1831.js
│   │   │   │   │   │   ├── regression-test-issue-1871-1.js
│   │   │   │   │   │   ├── regression-test-issue-1871-2.js
│   │   │   │   │   │   ├── regression-test-issue-1873.js
│   │   │   │   │   │   ├── regression-test-issue-1918.js
│   │   │   │   │   │   ├── regression-test-issue-2039.js
│   │   │   │   │   │   ├── regression-test-issue-2069.js
│   │   │   │   │   │   ├── regression-test-issue-2094.js
│   │   │   │   │   │   ├── regression-test-issue-2095.js
│   │   │   │   │   │   ├── regression-test-issue-2106.js
│   │   │   │   │   │   ├── regression-test-issue-2180.js
│   │   │   │   │   │   ├── regression-test-issue-2192.js
│   │   │   │   │   │   ├── regression-test-issue-2344.js
│   │   │   │   │   │   ├── regression-test-issue-2489.js
│   │   │   │   │   │   ├── regression-test-issue-2654.js
│   │   │   │   │   │   ├── regression-test-issue-2659.js
│   │   │   │   │   │   ├── regression-test-issue-2719.js
│   │   │   │   │   │   ├── regression-test-issue-2774.js
│   │   │   │   │   │   ├── regression-test-issue-2775.js
│   │   │   │   │   │   ├── regression-test-issue-2819.js
│   │   │   │   │   │   ├── regression-test-issue-2846.js
│   │   │   │   │   │   ├── regression-test-issue-2885.js
│   │   │   │   │   │   ├── regression-test-issue-2894.js
│   │   │   │   │   │   ├── regression-test-issue-2896.js
│   │   │   │   │   │   ├── regression-test-issue-2897.js
│   │   │   │   │   │   ├── regression-test-issue-2901.js
│   │   │   │   │   │   ├── regression-test-issue-2902.js
│   │   │   │   │   │   ├── regression-test-issue-2908-1.js
│   │   │   │   │   │   ├── regression-test-issue-2908-2.js
│   │   │   │   │   │   ├── regression-test-issue-2908-3.js
│   │   │   │   │   │   ├── regression-test-issue-2908-4.js
│   │   │   │   │   │   ├── regression-test-issue-2993.js
│   │   │   │   │   │   ├── regression-test-issue-3094.js
│   │   │   │   │   │   ├── regression-test-issue-3096.js
│   │   │   │   │   │   ├── regression-test-issue-3101.js
│   │   │   │   │   │   ├── regression-test-issue-3102.js
│   │   │   │   │   │   ├── regression-test-issue-3112.js
│   │   │   │   │   │   ├── regression-test-issue-3117.js
│   │   │   │   │   │   ├── regression-test-issue-3119.js
│   │   │   │   │   │   ├── regression-test-issue-3121.js
│   │   │   │   │   │   ├── regression-test-issue-3123.js
│   │   │   │   │   │   ├── regression-test-issue-3131.js
│   │   │   │   │   │   ├── regression-test-issue-3140.js
│   │   │   │   │   │   ├── regression-test-issue-3145.js
│   │   │   │   │   │   ├── regression-test-issue-3152.js
│   │   │   │   │   │   ├── regression-test-issue-3173.js
│   │   │   │   │   │   ├── regression-test-issue-3174.js
│   │   │   │   │   │   ├── regression-test-issue-3214.js
│   │   │   │   │   │   ├── regression-test-issue-3253-1.js
│   │   │   │   │   │   ├── regression-test-issue-3253-2.js
│   │   │   │   │   │   ├── regression-test-issue-3275.js
│   │   │   │   │   │   ├── regression-test-issue-3276.js
│   │   │   │   │   │   ├── regression-test-issue-3297.js
│   │   │   │   │   │   ├── regression-test-issue-3299.js
│   │   │   │   │   │   ├── regression-test-issue-3300.js
│   │   │   │   │   │   ├── regression-test-issue-3394.js
│   │   │   │   │   │   ├── regression-test-issue-3398.js
│   │   │   │   │   │   ├── regression-test-issue-3410.js
│   │   │   │   │   │   ├── regression-test-issue-3554.js
│   │   │   │   │   │   ├── regression-test-issue-358.js
│   │   │   │   │   │   ├── regression-test-issue-3714.js
│   │   │   │   │   │   ├── regression-test-issue-3735.js
│   │   │   │   │   │   ├── regression-test-issue-384.js
│   │   │   │   │   │   ├── regression-test-issue-3882.js
│   │   │   │   │   │   ├── regression-test-issue-4403.js
│   │   │   │   │   │   ├── throw-error-object.js
│   │   │   │   │   │   ├── throw-number.js
│   │   │   │   │   │   ├── throw-string.js
│   │   │   │   │   │   └── with-strict.js
│   │   │   │   │   ├── for-in-parse.js
│   │   │   │   │   ├── for-in.js
│   │   │   │   │   ├── for-parse.js
│   │   │   │   │   ├── for.js
│   │   │   │   │   ├── func-decl.js
│   │   │   │   │   ├── function-args.js
│   │   │   │   │   ├── function-construct.js
│   │   │   │   │   ├── function-expr-named.js
│   │   │   │   │   ├── function-external.js
│   │   │   │   │   ├── function-prototype-apply.js
│   │   │   │   │   ├── function-prototype-bind.js
│   │   │   │   │   ├── function-prototype-tostring.js
│   │   │   │   │   ├── function-return.js
│   │   │   │   │   ├── function-scopes.js
│   │   │   │   │   ├── function.js
│   │   │   │   │   ├── function.prototype.js
│   │   │   │   │   ├── gc.js
│   │   │   │   │   ├── get-value.js
│   │   │   │   │   ├── getter-setter-this-value.js
│   │   │   │   │   ├── global-escaping.js
│   │   │   │   │   ├── global-parsefloat.js
│   │   │   │   │   ├── global-parseint.js
│   │   │   │   │   ├── global-uri-coding.js
│   │   │   │   │   ├── global.js
│   │   │   │   │   ├── hash.js
│   │   │   │   │   ├── if-else.js
│   │   │   │   │   ├── if_parser.js
│   │   │   │   │   ├── insert-semicolon.js
│   │   │   │   │   ├── json-parse.js
│   │   │   │   │   ├── json-stringify.js
│   │   │   │   │   ├── keyword.js
│   │   │   │   │   ├── labelled-statements.js
│   │   │   │   │   ├── large_literal.js
│   │   │   │   │   ├── logical.js
│   │   │   │   │   ├── math-abs.js
│   │   │   │   │   ├── math-exp.js
│   │   │   │   │   ├── math-functions-tonumber-rule.js
│   │   │   │   │   ├── math-log.js
│   │   │   │   │   ├── math-max.js
│   │   │   │   │   ├── math-min.js
│   │   │   │   │   ├── math-pow.js
│   │   │   │   │   ├── math-round.js
│   │   │   │   │   ├── math-trig.js
│   │   │   │   │   ├── nested-function.js
│   │   │   │   │   ├── new-line-in-literal.js
│   │   │   │   │   ├── number-prototype-to-exponential.js
│   │   │   │   │   ├── number-prototype-to-fixed.js
│   │   │   │   │   ├── number-prototype-to-precision.js
│   │   │   │   │   ├── number-prototype-to-string.js
│   │   │   │   │   ├── object-create.js
│   │   │   │   │   ├── object-define-properties.js
│   │   │   │   │   ├── object-defineproperty.js
│   │   │   │   │   ├── object-get-own-property-descriptor.js
│   │   │   │   │   ├── object-get-own-property-names.js
│   │   │   │   │   ├── object-is-extensible.js
│   │   │   │   │   ├── object-keys.js
│   │   │   │   │   ├── object-literal-2.js
│   │   │   │   │   ├── object-literal-prescanner.js
│   │   │   │   │   ├── object-literal.js
│   │   │   │   │   ├── object-prototype-hasownproperty.js
│   │   │   │   │   ├── object-prototype-isprototypeof.js
│   │   │   │   │   ├── object-prototype-propertyisenumerable.js
│   │   │   │   │   ├── object-prototype-tolocalestring.js
│   │   │   │   │   ├── object_freeze.js
│   │   │   │   │   ├── object_seal.js
│   │   │   │   │   ├── octal.js
│   │   │   │   │   ├── parser-oom.js
│   │   │   │   │   ├── parser-oom2.js
│   │   │   │   │   ├── prescanner.js
│   │   │   │   │   ├── regexp-alternatives.js
│   │   │   │   │   ├── regexp-assertions.js
│   │   │   │   │   ├── regexp-backreference.js
│   │   │   │   │   ├── regexp-backtrack.js
│   │   │   │   │   ├── regexp-capture-groups.js
│   │   │   │   │   ├── regexp-character-class.js
│   │   │   │   │   ├── regexp-construct.js
│   │   │   │   │   ├── regexp-literal.js
│   │   │   │   │   ├── regexp-non-capture-groups.js
│   │   │   │   │   ├── regexp-routines.js
│   │   │   │   │   ├── regexp-simple-atom-and-iterations.js
│   │   │   │   │   ├── regexp-web-compatibility.js
│   │   │   │   │   ├── regression-test-issue-1054.js
│   │   │   │   │   ├── regression-test-issue-1071.js
│   │   │   │   │   ├── regression-test-issue-1072.js
│   │   │   │   │   ├── regression-test-issue-1073.js
│   │   │   │   │   ├── regression-test-issue-1074.js
│   │   │   │   │   ├── regression-test-issue-1075.js
│   │   │   │   │   ├── regression-test-issue-1076.js
│   │   │   │   │   ├── regression-test-issue-1078.js
│   │   │   │   │   ├── regression-test-issue-1079.js
│   │   │   │   │   ├── regression-test-issue-1081.js
│   │   │   │   │   ├── regression-test-issue-1082.js
│   │   │   │   │   ├── regression-test-issue-1083.js
│   │   │   │   │   ├── regression-test-issue-112.js
│   │   │   │   │   ├── regression-test-issue-113.js
│   │   │   │   │   ├── regression-test-issue-114.js
│   │   │   │   │   ├── regression-test-issue-115.js
│   │   │   │   │   ├── regression-test-issue-117.js
│   │   │   │   │   ├── regression-test-issue-121.js
│   │   │   │   │   ├── regression-test-issue-122.js
│   │   │   │   │   ├── regression-test-issue-123.js
│   │   │   │   │   ├── regression-test-issue-128.js
│   │   │   │   │   ├── regression-test-issue-1282.js
│   │   │   │   │   ├── regression-test-issue-1284.js
│   │   │   │   │   ├── regression-test-issue-1286.js
│   │   │   │   │   ├── regression-test-issue-129.js
│   │   │   │   │   ├── regression-test-issue-1292.js
│   │   │   │   │   ├── regression-test-issue-130.js
│   │   │   │   │   ├── regression-test-issue-1300.js
│   │   │   │   │   ├── regression-test-issue-1309.js
│   │   │   │   │   ├── regression-test-issue-132.js
│   │   │   │   │   ├── regression-test-issue-1386.js
│   │   │   │   │   ├── regression-test-issue-1389.js
│   │   │   │   │   ├── regression-test-issue-1533.js
│   │   │   │   │   ├── regression-test-issue-1547.js
│   │   │   │   │   ├── regression-test-issue-1552.js
│   │   │   │   │   ├── regression-test-issue-1555.js
│   │   │   │   │   ├── regression-test-issue-1556.js
│   │   │   │   │   ├── regression-test-issue-156.js
│   │   │   │   │   ├── regression-test-issue-1621.js
│   │   │   │   │   ├── regression-test-issue-1636.js
│   │   │   │   │   ├── regression-test-issue-164.js
│   │   │   │   │   ├── regression-test-issue-1657.js
│   │   │   │   │   ├── regression-test-issue-1821.js
│   │   │   │   │   ├── regression-test-issue-1829.js
│   │   │   │   │   ├── regression-test-issue-1830.js
│   │   │   │   │   ├── regression-test-issue-1855.js
│   │   │   │   │   ├── regression-test-issue-1917.js
│   │   │   │   │   ├── regression-test-issue-1934.js
│   │   │   │   │   ├── regression-test-issue-1947.js
│   │   │   │   │   ├── regression-test-issue-195.js
│   │   │   │   │   ├── regression-test-issue-1970.js
│   │   │   │   │   ├── regression-test-issue-1972.js
│   │   │   │   │   ├── regression-test-issue-1973.js
│   │   │   │   │   ├── regression-test-issue-1974.js
│   │   │   │   │   ├── regression-test-issue-1990.js
│   │   │   │   │   ├── regression-test-issue-1993.js
│   │   │   │   │   ├── regression-test-issue-2008.js
│   │   │   │   │   ├── regression-test-issue-2073.js
│   │   │   │   │   ├── regression-test-issue-2105.js
│   │   │   │   │   ├── regression-test-issue-2108.js
│   │   │   │   │   ├── regression-test-issue-212.js
│   │   │   │   │   ├── regression-test-issue-2178.js
│   │   │   │   │   ├── regression-test-issue-2182.js
│   │   │   │   │   ├── regression-test-issue-2190.js
│   │   │   │   │   ├── regression-test-issue-2198.js
│   │   │   │   │   ├── regression-test-issue-2200.js
│   │   │   │   │   ├── regression-test-issue-2204.js
│   │   │   │   │   ├── regression-test-issue-2230.js
│   │   │   │   │   ├── regression-test-issue-2237.js
│   │   │   │   │   ├── regression-test-issue-2258-2963.js
│   │   │   │   │   ├── regression-test-issue-2272.js
│   │   │   │   │   ├── regression-test-issue-2384.js
│   │   │   │   │   ├── regression-test-issue-2386.js
│   │   │   │   │   ├── regression-test-issue-2398.js
│   │   │   │   │   ├── regression-test-issue-2400.js
│   │   │   │   │   ├── regression-test-issue-2409.js
│   │   │   │   │   ├── regression-test-issue-2448.js
│   │   │   │   │   ├── regression-test-issue-245.js
│   │   │   │   │   ├── regression-test-issue-2451.js
│   │   │   │   │   ├── regression-test-issue-2452.js
│   │   │   │   │   ├── regression-test-issue-2453.js
│   │   │   │   │   ├── regression-test-issue-2478.js
│   │   │   │   │   ├── regression-test-issue-2494.js
│   │   │   │   │   ├── regression-test-issue-255.js
│   │   │   │   │   ├── regression-test-issue-257.js
│   │   │   │   │   ├── regression-test-issue-260.js
│   │   │   │   │   ├── regression-test-issue-261.js
│   │   │   │   │   ├── regression-test-issue-2614.js
│   │   │   │   │   ├── regression-test-issue-262.js
│   │   │   │   │   ├── regression-test-issue-263.js
│   │   │   │   │   ├── regression-test-issue-264.js
│   │   │   │   │   ├── regression-test-issue-265.js
│   │   │   │   │   ├── regression-test-issue-2652-2653.js
│   │   │   │   │   ├── regression-test-issue-2656.js
│   │   │   │   │   ├── regression-test-issue-266.js
│   │   │   │   │   ├── regression-test-issue-2660.js
│   │   │   │   │   ├── regression-test-issue-267.js
│   │   │   │   │   ├── regression-test-issue-2699.js
│   │   │   │   │   ├── regression-test-issue-274.js
│   │   │   │   │   ├── regression-test-issue-2755.js
│   │   │   │   │   ├── regression-test-issue-276.js
│   │   │   │   │   ├── regression-test-issue-279.js
│   │   │   │   │   ├── regression-test-issue-280.js
│   │   │   │   │   ├── regression-test-issue-2802.js
│   │   │   │   │   ├── regression-test-issue-2805.js
│   │   │   │   │   ├── regression-test-issue-281.js
│   │   │   │   │   ├── regression-test-issue-285.js
│   │   │   │   │   ├── regression-test-issue-2905.js
│   │   │   │   │   ├── regression-test-issue-2914.js
│   │   │   │   │   ├── regression-test-issue-2936.js
│   │   │   │   │   ├── regression-test-issue-2937.js
│   │   │   │   │   ├── regression-test-issue-3039.js
│   │   │   │   │   ├── regression-test-issue-3048.js
│   │   │   │   │   ├── regression-test-issue-3055.js
│   │   │   │   │   ├── regression-test-issue-3060.js
│   │   │   │   │   ├── regression-test-issue-3068.js
│   │   │   │   │   ├── regression-test-issue-3072.js
│   │   │   │   │   ├── regression-test-issue-3082.js
│   │   │   │   │   ├── regression-test-issue-3114.js
│   │   │   │   │   ├── regression-test-issue-316.js
│   │   │   │   │   ├── regression-test-issue-3229.js
│   │   │   │   │   ├── regression-test-issue-3271.js
│   │   │   │   │   ├── regression-test-issue-3313.js
│   │   │   │   │   ├── regression-test-issue-3325.js
│   │   │   │   │   ├── regression-test-issue-339.js
│   │   │   │   │   ├── regression-test-issue-3397.js
│   │   │   │   │   ├── regression-test-issue-340.js
│   │   │   │   │   ├── regression-test-issue-341.js
│   │   │   │   │   ├── regression-test-issue-3467.js
│   │   │   │   │   ├── regression-test-issue-3477.js
│   │   │   │   │   ├── regression-test-issue-3523.js
│   │   │   │   │   ├── regression-test-issue-3532.js
│   │   │   │   │   ├── regression-test-issue-354.js
│   │   │   │   │   ├── regression-test-issue-3553.js
│   │   │   │   │   ├── regression-test-issue-359.js
│   │   │   │   │   ├── regression-test-issue-3608.js
│   │   │   │   │   ├── regression-test-issue-3648.js
│   │   │   │   │   ├── regression-test-issue-3650.js
│   │   │   │   │   ├── regression-test-issue-3711.js
│   │   │   │   │   ├── regression-test-issue-3748-3749.js
│   │   │   │   │   ├── regression-test-issue-3761.js
│   │   │   │   │   ├── regression-test-issue-3778.js
│   │   │   │   │   ├── regression-test-issue-3779.js
│   │   │   │   │   ├── regression-test-issue-380.js
│   │   │   │   │   ├── regression-test-issue-381.js
│   │   │   │   │   ├── regression-test-issue-3813.js
│   │   │   │   │   ├── regression-test-issue-3821.js
│   │   │   │   │   ├── regression-test-issue-3878.js
│   │   │   │   │   ├── regression-test-issue-3903.js
│   │   │   │   │   ├── regression-test-issue-3934.js
│   │   │   │   │   ├── regression-test-issue-3944.js
│   │   │   │   │   ├── regression-test-issue-4056.js
│   │   │   │   │   ├── regression-test-issue-4238.js
│   │   │   │   │   ├── regression-test-issue-429.js
│   │   │   │   │   ├── regression-test-issue-440.js
│   │   │   │   │   ├── regression-test-issue-447.js
│   │   │   │   │   ├── regression-test-issue-453.js
│   │   │   │   │   ├── regression-test-issue-541.js
│   │   │   │   │   ├── regression-test-issue-563.js
│   │   │   │   │   ├── regression-test-issue-566.js
│   │   │   │   │   ├── regression-test-issue-613.js
│   │   │   │   │   ├── regression-test-issue-614.js
│   │   │   │   │   ├── regression-test-issue-639.js
│   │   │   │   │   ├── regression-test-issue-640.js
│   │   │   │   │   ├── regression-test-issue-641.js
│   │   │   │   │   ├── regression-test-issue-642.js
│   │   │   │   │   ├── regression-test-issue-644.js
│   │   │   │   │   ├── regression-test-issue-646.js
│   │   │   │   │   ├── regression-test-issue-652.js
│   │   │   │   │   ├── regression-test-issue-653.js
│   │   │   │   │   ├── regression-test-issue-654.js
│   │   │   │   │   ├── regression-test-issue-655.js
│   │   │   │   │   ├── regression-test-issue-667.js
│   │   │   │   │   ├── regression-test-issue-669.js
│   │   │   │   │   ├── regression-test-issue-680.js
│   │   │   │   │   ├── regression-test-issue-686.js
│   │   │   │   │   ├── regression-test-issue-689.js
│   │   │   │   │   ├── regression-test-issue-703.js
│   │   │   │   │   ├── regression-test-issue-725.js
│   │   │   │   │   ├── regression-test-issue-736.js
│   │   │   │   │   ├── regression-test-issue-737.js
│   │   │   │   │   ├── regression-test-issue-738.js
│   │   │   │   │   ├── regression-test-issue-739.js
│   │   │   │   │   ├── regression-test-issue-741.js
│   │   │   │   │   ├── regression-test-issue-743.js
│   │   │   │   │   ├── regression-test-issue-745.js
│   │   │   │   │   ├── regression-test-issue-747.js
│   │   │   │   │   ├── regression-test-issue-781.js
│   │   │   │   │   ├── regression-test-issue-783.js
│   │   │   │   │   ├── regression-test-issue-785.js
│   │   │   │   │   ├── regression-test-issue-786.js
│   │   │   │   │   ├── regression-test-issue-798.js
│   │   │   │   │   ├── regression-test-issue-962.js
│   │   │   │   │   ├── regression-test-issues-43-183.js
│   │   │   │   │   ├── relational.js
│   │   │   │   │   ├── shift.js
│   │   │   │   │   ├── sqrt.js
│   │   │   │   │   ├── stack-limit.js
│   │   │   │   │   ├── strict.js
│   │   │   │   │   ├── strict2.js
│   │   │   │   │   ├── string-prototype-charat.js
│   │   │   │   │   ├── string-prototype-charcodeat.js
│   │   │   │   │   ├── string-prototype-concat.js
│   │   │   │   │   ├── string-prototype-indexof.js
│   │   │   │   │   ├── string-prototype-lastindexof.js
│   │   │   │   │   ├── string-prototype-localecompare.js
│   │   │   │   │   ├── string-prototype-match.js
│   │   │   │   │   ├── string-prototype-replace.js
│   │   │   │   │   ├── string-prototype-search.js
│   │   │   │   │   ├── string-prototype-slice.js
│   │   │   │   │   ├── string-prototype-split.js
│   │   │   │   │   ├── string-prototype-substr.js
│   │   │   │   │   ├── string-prototype-substring.js
│   │   │   │   │   ├── string-prototype-trim.js
│   │   │   │   │   ├── string-prototype.js
│   │   │   │   │   ├── string-surrogates-concat.js
│   │   │   │   │   ├── string-upper-lower-case-conversion.js
│   │   │   │   │   ├── string.js
│   │   │   │   │   ├── switch-case.js
│   │   │   │   │   ├── test-new-string.js
│   │   │   │   │   ├── test_suite_06.js
│   │   │   │   │   ├── test_suite_07.js
│   │   │   │   │   ├── test_suite_08.js
│   │   │   │   │   ├── test_suite_10.js
│   │   │   │   │   ├── test_suite_11.js
│   │   │   │   │   ├── test_suite_12.js
│   │   │   │   │   ├── test_suite_13.js
│   │   │   │   │   ├── test_suite_15.js
│   │   │   │   │   ├── this-arg.js
│   │   │   │   │   ├── try-catch-finally.js
│   │   │   │   │   ├── try-eval.js
│   │   │   │   │   ├── typeof.js
│   │   │   │   │   ├── unary-plus-minus.js
│   │   │   │   │   ├── unicode-format-control-characters.js
│   │   │   │   │   ├── unusual.js
│   │   │   │   │   ├── var-decl.js
│   │   │   │   │   ├── variables.js
│   │   │   │   │   ├── windows-line-ending.js
│   │   │   │   │   └── zero-character.js
│   │   │   │   ├── test262-es6-excludelist.xml
│   │   │   │   ├── test262-esnext-excludelist.xml
│   │   │   │   ├── unit-core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── test-abort.c
│   │   │   │   │   ├── test-api-binary-operations-arithmetics.c
│   │   │   │   │   ├── test-api-binary-operations-comparisons.c
│   │   │   │   │   ├── test-api-binary-operations-instanceof.c
│   │   │   │   │   ├── test-api-errortype.c
│   │   │   │   │   ├── test-api-functiontype.c
│   │   │   │   │   ├── test-api-iteratortype.c
│   │   │   │   │   ├── test-api-object-property-names.c
│   │   │   │   │   ├── test-api-objecttype.c
│   │   │   │   │   ├── test-api-promise.c
│   │   │   │   │   ├── test-api-property.c
│   │   │   │   │   ├── test-api-set-and-clear-error-flag.c
│   │   │   │   │   ├── test-api-strings.c
│   │   │   │   │   ├── test-api-value-type.c
│   │   │   │   │   ├── test-api.c
│   │   │   │   │   ├── test-arraybuffer.c
│   │   │   │   │   ├── test-backtrace.c
│   │   │   │   │   ├── test-bigint.c
│   │   │   │   │   ├── test-common.h
│   │   │   │   │   ├── test-container.c
│   │   │   │   │   ├── test-context-data.c
│   │   │   │   │   ├── test-dataview.c
│   │   │   │   │   ├── test-date-helpers.c
│   │   │   │   │   ├── test-error-callback.c
│   │   │   │   │   ├── test-exec-stop.c
│   │   │   │   │   ├── test-external-string.c
│   │   │   │   │   ├── test-from-property-descriptor.c
│   │   │   │   │   ├── test-has-property.c
│   │   │   │   │   ├── test-internal-properties.c
│   │   │   │   │   ├── test-jmem.c
│   │   │   │   │   ├── test-json.c
│   │   │   │   │   ├── test-lit-char-helpers.c
│   │   │   │   │   ├── test-literal-storage.c
│   │   │   │   │   ├── test-mem-stats.c
│   │   │   │   │   ├── test-native-callback-nested.c
│   │   │   │   │   ├── test-native-instanceof.c
│   │   │   │   │   ├── test-newtarget.c
│   │   │   │   │   ├── test-number-converter.c
│   │   │   │   │   ├── test-number-to-int32.c
│   │   │   │   │   ├── test-number-to-string.c
│   │   │   │   │   ├── test-objects-foreach.c
│   │   │   │   │   ├── test-poolman.c
│   │   │   │   │   ├── test-promise.c
│   │   │   │   │   ├── test-proxy.c
│   │   │   │   │   ├── test-realm.c
│   │   │   │   │   ├── test-regexp-dotall-unicode.c
│   │   │   │   │   ├── test-regexp.c
│   │   │   │   │   ├── test-regression-3588.c
│   │   │   │   │   ├── test-resource-name.c
│   │   │   │   │   ├── test-snapshot.c
│   │   │   │   │   ├── test-string-to-number.c
│   │   │   │   │   ├── test-stringbuilder.c
│   │   │   │   │   ├── test-strings.c
│   │   │   │   │   ├── test-symbol.c
│   │   │   │   │   ├── test-to-integer.c
│   │   │   │   │   ├── test-to-length.c
│   │   │   │   │   ├── test-to-property-descriptor.c
│   │   │   │   │   ├── test-typedarray.c
│   │   │   │   │   └── test-unicode.c
│   │   │   │   ├── unit-doc/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── unit-ext/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── module/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── jerry-module-test.c
│   │   │   │   │   │   ├── my-broken-module.c
│   │   │   │   │   │   └── my-custom-module.c
│   │   │   │   │   ├── test-common.h
│   │   │   │   │   ├── test-ext-arg.c
│   │   │   │   │   ├── test-ext-autorelease.c
│   │   │   │   │   ├── test-ext-handle-scope-escape.c
│   │   │   │   │   ├── test-ext-handle-scope-handle-prelist-escape.c
│   │   │   │   │   ├── test-ext-handle-scope-handle-prelist.c
│   │   │   │   │   ├── test-ext-handle-scope-nested.c
│   │   │   │   │   ├── test-ext-handle-scope-remove.c
│   │   │   │   │   ├── test-ext-handle-scope-root.c
│   │   │   │   │   ├── test-ext-handle-scope.c
│   │   │   │   │   ├── test-ext-method-register.c
│   │   │   │   │   ├── test-ext-module-canonical.c
│   │   │   │   │   └── test-ext-module-empty.c
│   │   │   │   └── unit-math/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── test-math.c
│   │   │   │       └── test-math.inc.h
│   │   │   ├── third-party/
│   │   │   │   └── valgrind/
│   │   │   │       ├── memcheck.h
│   │   │   │       └── valgrind.h
│   │   │   └── tools/
│   │   │       ├── amalgam.py
│   │   │       ├── apt-get-install-deps.sh
│   │   │       ├── apt-get-install-qemu-arm.sh
│   │   │       ├── babel/
│   │   │       │   ├── .babelrc
│   │   │       │   ├── README.md
│   │   │       │   ├── package.json
│   │   │       │   └── scripts/
│   │   │       │       └── transpile.sh
│   │   │       ├── brew-install-deps.sh
│   │   │       ├── build.py
│   │   │       ├── check-cppcheck.sh
│   │   │       ├── check-doxygen.sh
│   │   │       ├── check-license.py
│   │   │       ├── check-magic-strings.sh
│   │   │       ├── check-pylint.sh
│   │   │       ├── check-signed-off.sh
│   │   │       ├── check-sonarqube.sh
│   │   │       ├── check-vera.sh
│   │   │       ├── cppcheck/
│   │   │       │   └── suppressions-list
│   │   │       ├── gen-doctest.py
│   │   │       ├── gen-magic-strings.py
│   │   │       ├── gen-test-math.sh
│   │   │       ├── gen-unicode.py
│   │   │       ├── gen_c_source.py
│   │   │       ├── heaplimit_measure.py
│   │   │       ├── js2c.py
│   │   │       ├── mem-stats-measure.sh
│   │   │       ├── perf.sh
│   │   │       ├── pylint/
│   │   │       │   └── pylintrc
│   │   │       ├── rss-measure.sh
│   │   │       ├── run-mem-stats-test.sh
│   │   │       ├── run-perf-test.sh
│   │   │       ├── run-tests.py
│   │   │       ├── runners/
│   │   │       │   ├── run-benchmarks.sh
│   │   │       │   ├── run-debugger-test.sh
│   │   │       │   ├── run-test-suite-test262.py
│   │   │       │   ├── run-test-suite.py
│   │   │       │   ├── run-unittests.py
│   │   │       │   ├── test262-harness.py
│   │   │       │   └── util.py
│   │   │       ├── settings.py
│   │   │       ├── unit-tests/
│   │   │       │   ├── Makefile
│   │   │       │   └── gen-test-math.c
│   │   │       ├── update-webpage.sh
│   │   │       ├── vera++/
│   │   │       │   ├── profiles/
│   │   │       │   │   └── jerry
│   │   │       │   └── scripts/
│   │   │       │       └── rules/
│   │   │       │           ├── jerry_always_curly.tcl
│   │   │       │           ├── jerry_braces_on_separate_line.tcl
│   │   │       │           ├── jerry_braces_same_line_or_column.tcl
│   │   │       │           ├── jerry_comment_function_end.tcl
│   │   │       │           ├── jerry_funcname_space_parentheses.tcl
│   │   │       │           ├── jerry_identifier_no_space_bracket.tcl
│   │   │       │           ├── jerry_indentation.tcl
│   │   │       │           ├── jerry_max_line_length.tcl
│   │   │       │           ├── jerry_no_consecutive_empty_lines.tcl
│   │   │       │           ├── jerry_no_leading_or_trailing_empty_line.tcl
│   │   │       │           ├── jerry_no_space_after_opening_parentheses.tcl
│   │   │       │           ├── jerry_no_space_before_closing_parentheses.tcl
│   │   │       │           ├── jerry_no_tabs.tcl
│   │   │       │           ├── jerry_no_trailing_spaces.tcl
│   │   │       │           ├── jerry_pointer_declarator_space.tcl
│   │   │       │           ├── jerry_switch_case.tcl
│   │   │       │           └── jerry_typecast_space_parentheses.tcl
│   │   │       └── version.py
│   │   ├── libpng/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── png.c
│   │   │   ├── png.h
│   │   │   ├── pngconf.h
│   │   │   ├── pngerror.c
│   │   │   ├── pnggccrd.c
│   │   │   ├── pngget.c
│   │   │   ├── pngmem.c
│   │   │   ├── pngpread.c
│   │   │   ├── pngread.c
│   │   │   ├── pngrio.c
│   │   │   ├── pngrtran.c
│   │   │   ├── pngrutil.c
│   │   │   ├── pngset.c
│   │   │   ├── pngtest.c
│   │   │   ├── pngtrans.c
│   │   │   ├── pngvcrd.c
│   │   │   ├── pngwio.c
│   │   │   ├── pngwrite.c
│   │   │   ├── pngwtran.c
│   │   │   └── pngwutil.c
│   │   ├── pthreads/
│   │   │   ├── ANNOUNCE
│   │   │   ├── BUGS
│   │   │   ├── Bmakefile
│   │   │   ├── CONTRIBUTORS
│   │   │   ├── COPYING
│   │   │   ├── ChangeLog
│   │   │   ├── FAQ
│   │   │   ├── GNUmakefile
│   │   │   ├── MAINTAINERS
│   │   │   ├── Makefile
│   │   │   ├── Makefile_copy
│   │   │   ├── NEWS
│   │   │   ├── Nmakefile
│   │   │   ├── Nmakefile.tests
│   │   │   ├── PROGRESS
│   │   │   ├── README
│   │   │   ├── README.Borland
│   │   │   ├── README.CV
│   │   │   ├── README.NONPORTABLE
│   │   │   ├── README.Watcom
│   │   │   ├── README.WinCE
│   │   │   ├── TODO
│   │   │   ├── WinCE-PORT
│   │   │   ├── attr.c
│   │   │   ├── barrier.c
│   │   │   ├── builddmc.bat
│   │   │   ├── cancel.c
│   │   │   ├── cleanup.c
│   │   │   ├── condvar.c
│   │   │   ├── config.h
│   │   │   ├── create.c
│   │   │   ├── dll.c
│   │   │   ├── errno.c
│   │   │   ├── exit.c
│   │   │   ├── fork.c
│   │   │   ├── global.c
│   │   │   ├── implement.h
│   │   │   ├── manual/
│   │   │   │   ├── ChangeLog
│   │   │   │   ├── PortabilityIssues.html
│   │   │   │   ├── index.html
│   │   │   │   ├── pthreadCancelableWait.html
│   │   │   │   ├── pthread_attr_init.html
│   │   │   │   ├── pthread_attr_setstackaddr.html
│   │   │   │   ├── pthread_attr_setstacksize.html
│   │   │   │   ├── pthread_barrier_init.html
│   │   │   │   ├── pthread_barrier_wait.html
│   │   │   │   ├── pthread_barrierattr_init.html
│   │   │   │   ├── pthread_barrierattr_setpshared.html
│   │   │   │   ├── pthread_cancel.html
│   │   │   │   ├── pthread_cleanup_push.html
│   │   │   │   ├── pthread_cond_init.html
│   │   │   │   ├── pthread_condattr_init.html
│   │   │   │   ├── pthread_condattr_setpshared.html
│   │   │   │   ├── pthread_create.html
│   │   │   │   ├── pthread_delay_np.html
│   │   │   │   ├── pthread_detach.html
│   │   │   │   ├── pthread_equal.html
│   │   │   │   ├── pthread_exit.html
│   │   │   │   ├── pthread_getw32threadhandle_np.html
│   │   │   │   ├── pthread_join.html
│   │   │   │   ├── pthread_key_create.html
│   │   │   │   ├── pthread_kill.html
│   │   │   │   ├── pthread_mutex_init.html
│   │   │   │   ├── pthread_mutexattr_init.html
│   │   │   │   ├── pthread_mutexattr_setpshared.html
│   │   │   │   ├── pthread_num_processors_np.html
│   │   │   │   ├── pthread_once.html
│   │   │   │   ├── pthread_rwlock_init.html
│   │   │   │   ├── pthread_rwlock_rdlock.html
│   │   │   │   ├── pthread_rwlock_timedrdlock.html
│   │   │   │   ├── pthread_rwlock_timedwrlock.html
│   │   │   │   ├── pthread_rwlock_unlock.html
│   │   │   │   ├── pthread_rwlock_wrlock.html
│   │   │   │   ├── pthread_rwlockattr_init.html
│   │   │   │   ├── pthread_rwlockattr_setpshared.html
│   │   │   │   ├── pthread_self.html
│   │   │   │   ├── pthread_setcancelstate.html
│   │   │   │   ├── pthread_setcanceltype.html
│   │   │   │   ├── pthread_setconcurrency.html
│   │   │   │   ├── pthread_setschedparam.html
│   │   │   │   ├── pthread_spin_init.html
│   │   │   │   ├── pthread_spin_lock.html
│   │   │   │   ├── pthread_spin_unlock.html
│   │   │   │   ├── pthread_timechange_handler_np.html
│   │   │   │   ├── pthread_win32_attach_detach_np.html
│   │   │   │   ├── pthread_win32_test_features_np.html
│   │   │   │   ├── sched_get_priority_max.html
│   │   │   │   ├── sched_getscheduler.html
│   │   │   │   ├── sched_setscheduler.html
│   │   │   │   ├── sched_yield.html
│   │   │   │   └── sem_init.html
│   │   │   ├── misc.c
│   │   │   ├── mutex.c
│   │   │   ├── need_errno.h
│   │   │   ├── nonportable.c
│   │   │   ├── private.c
│   │   │   ├── pthread.c
│   │   │   ├── pthread.dsp
│   │   │   ├── pthread.dsw
│   │   │   ├── pthread.h
│   │   │   ├── pthread.sln
│   │   │   ├── pthread.vcxproj
│   │   │   ├── pthread.vcxproj.filters
│   │   │   ├── pthreadVC2.lib
│   │   │   ├── pthread_attr_destroy.c
│   │   │   ├── pthread_attr_getdetachstate.c
│   │   │   ├── pthread_attr_getinheritsched.c
│   │   │   ├── pthread_attr_getschedparam.c
│   │   │   ├── pthread_attr_getschedpolicy.c
│   │   │   ├── pthread_attr_getscope.c
│   │   │   ├── pthread_attr_getstackaddr.c
│   │   │   ├── pthread_attr_getstacksize.c
│   │   │   ├── pthread_attr_init.c
│   │   │   ├── pthread_attr_setdetachstate.c
│   │   │   ├── pthread_attr_setinheritsched.c
│   │   │   ├── pthread_attr_setschedparam.c
│   │   │   ├── pthread_attr_setschedpolicy.c
│   │   │   ├── pthread_attr_setscope.c
│   │   │   ├── pthread_attr_setstackaddr.c
│   │   │   ├── pthread_attr_setstacksize.c
│   │   │   ├── pthread_barrier_destroy.c
│   │   │   ├── pthread_barrier_init.c
│   │   │   ├── pthread_barrier_wait.c
│   │   │   ├── pthread_barrierattr_destroy.c
│   │   │   ├── pthread_barrierattr_getpshared.c
│   │   │   ├── pthread_barrierattr_init.c
│   │   │   ├── pthread_barrierattr_setpshared.c
│   │   │   ├── pthread_cancel.c
│   │   │   ├── pthread_cond_destroy.c
│   │   │   ├── pthread_cond_init.c
│   │   │   ├── pthread_cond_signal.c
│   │   │   ├── pthread_cond_wait.c
│   │   │   ├── pthread_condattr_destroy.c
│   │   │   ├── pthread_condattr_getpshared.c
│   │   │   ├── pthread_condattr_init.c
│   │   │   ├── pthread_condattr_setpshared.c
│   │   │   ├── pthread_delay_np.c
│   │   │   ├── pthread_detach.c
│   │   │   ├── pthread_equal.c
│   │   │   ├── pthread_exit.c
│   │   │   ├── pthread_getconcurrency.c
│   │   │   ├── pthread_getschedparam.c
│   │   │   ├── pthread_getspecific.c
│   │   │   ├── pthread_getw32threadhandle_np.c
│   │   │   ├── pthread_join.c
│   │   │   ├── pthread_key_create.c
│   │   │   ├── pthread_key_delete.c
│   │   │   ├── pthread_kill.c
│   │   │   ├── pthread_mutex_destroy.c
│   │   │   ├── pthread_mutex_init.c
│   │   │   ├── pthread_mutex_lock.c
│   │   │   ├── pthread_mutex_timedlock.c
│   │   │   ├── pthread_mutex_trylock.c
│   │   │   ├── pthread_mutex_unlock.c
│   │   │   ├── pthread_mutexattr_destroy.c
│   │   │   ├── pthread_mutexattr_getkind_np.c
│   │   │   ├── pthread_mutexattr_getpshared.c
│   │   │   ├── pthread_mutexattr_gettype.c
│   │   │   ├── pthread_mutexattr_init.c
│   │   │   ├── pthread_mutexattr_setkind_np.c
│   │   │   ├── pthread_mutexattr_setpshared.c
│   │   │   ├── pthread_mutexattr_settype.c
│   │   │   ├── pthread_num_processors_np.c
│   │   │   ├── pthread_once.c
│   │   │   ├── pthread_once.x
│   │   │   ├── pthread_rwlock_destroy.c
│   │   │   ├── pthread_rwlock_init.c
│   │   │   ├── pthread_rwlock_rdlock.c
│   │   │   ├── pthread_rwlock_timedrdlock.c
│   │   │   ├── pthread_rwlock_timedwrlock.c
│   │   │   ├── pthread_rwlock_tryrdlock.c
│   │   │   ├── pthread_rwlock_trywrlock.c
│   │   │   ├── pthread_rwlock_unlock.c
│   │   │   ├── pthread_rwlock_wrlock.c
│   │   │   ├── pthread_rwlockattr_destroy.c
│   │   │   ├── pthread_rwlockattr_getpshared.c
│   │   │   ├── pthread_rwlockattr_init.c
│   │   │   ├── pthread_rwlockattr_setpshared.c
│   │   │   ├── pthread_self.c
│   │   │   ├── pthread_setcancelstate.c
│   │   │   ├── pthread_setcanceltype.c
│   │   │   ├── pthread_setconcurrency.c
│   │   │   ├── pthread_setschedparam.c
│   │   │   ├── pthread_setspecific.c
│   │   │   ├── pthread_spin_destroy.c
│   │   │   ├── pthread_spin_init.c
│   │   │   ├── pthread_spin_lock.c
│   │   │   ├── pthread_spin_trylock.c
│   │   │   ├── pthread_spin_unlock.c
│   │   │   ├── pthread_testcancel.c
│   │   │   ├── pthread_timechange_handler_np.c
│   │   │   ├── pthread_win32_attach_detach_np.c
│   │   │   ├── ptw32_InterlockedCompareExchange.c
│   │   │   ├── ptw32_MCS_lock.c
│   │   │   ├── ptw32_callUserDestroyRoutines.c
│   │   │   ├── ptw32_calloc.c
│   │   │   ├── ptw32_cond_check_need_init.c
│   │   │   ├── ptw32_getprocessors.c
│   │   │   ├── ptw32_is_attr.c
│   │   │   ├── ptw32_mutex_check_need_init.c
│   │   │   ├── ptw32_new.c
│   │   │   ├── ptw32_processInitialize.c
│   │   │   ├── ptw32_processTerminate.c
│   │   │   ├── ptw32_relmillisecs.c
│   │   │   ├── ptw32_reuse.c
│   │   │   ├── ptw32_rwlock_cancelwrwait.c
│   │   │   ├── ptw32_rwlock_check_need_init.c
│   │   │   ├── ptw32_semwait.c
│   │   │   ├── ptw32_spinlock_check_need_init.c
│   │   │   ├── ptw32_threadDestroy.c
│   │   │   ├── ptw32_threadStart.c
│   │   │   ├── ptw32_throw.c
│   │   │   ├── ptw32_timespec.c
│   │   │   ├── ptw32_tkAssocCreate.c
│   │   │   ├── ptw32_tkAssocDestroy.c
│   │   │   ├── rwlock.c
│   │   │   ├── sched.c
│   │   │   ├── sched.h
│   │   │   ├── sched_get_priority_max.c
│   │   │   ├── sched_get_priority_min.c
│   │   │   ├── sched_getscheduler.c
│   │   │   ├── sched_setscheduler.c
│   │   │   ├── sched_yield.c
│   │   │   ├── sem_close.c
│   │   │   ├── sem_destroy.c
│   │   │   ├── sem_getvalue.c
│   │   │   ├── sem_init.c
│   │   │   ├── sem_open.c
│   │   │   ├── sem_post.c
│   │   │   ├── sem_post_multiple.c
│   │   │   ├── sem_timedwait.c
│   │   │   ├── sem_trywait.c
│   │   │   ├── sem_unlink.c
│   │   │   ├── sem_wait.c
│   │   │   ├── semaphore.c
│   │   │   ├── semaphore.h
│   │   │   ├── signal.c
│   │   │   ├── spin.c
│   │   │   ├── sync.c
│   │   │   ├── tests/
│   │   │   │   ├── Bmakefile
│   │   │   │   ├── ChangeLog
│   │   │   │   ├── Debug.dsp
│   │   │   │   ├── Debug.dsw
│   │   │   │   ├── Debug.plg
│   │   │   │   ├── Debug.txt
│   │   │   │   ├── GNUmakefile
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.BENCHTESTS
│   │   │   │   ├── SIZES.VCE
│   │   │   │   ├── Wmakefile
│   │   │   │   ├── barrier1.c
│   │   │   │   ├── barrier2.c
│   │   │   │   ├── barrier3.c
│   │   │   │   ├── barrier4.c
│   │   │   │   ├── barrier5.c
│   │   │   │   ├── benchlib.c
│   │   │   │   ├── benchtest.h
│   │   │   │   ├── benchtest1.c
│   │   │   │   ├── benchtest2.c
│   │   │   │   ├── benchtest3.c
│   │   │   │   ├── benchtest4.c
│   │   │   │   ├── benchtest5.c
│   │   │   │   ├── cancel1.c
│   │   │   │   ├── cancel2.c
│   │   │   │   ├── cancel3.c
│   │   │   │   ├── cancel4.c
│   │   │   │   ├── cancel5.c
│   │   │   │   ├── cancel6a.c
│   │   │   │   ├── cancel6d.c
│   │   │   │   ├── cancel7.c
│   │   │   │   ├── cancel8.c
│   │   │   │   ├── cancel9.c
│   │   │   │   ├── cleanup0.c
│   │   │   │   ├── cleanup1.c
│   │   │   │   ├── cleanup2.c
│   │   │   │   ├── cleanup3.c
│   │   │   │   ├── condvar1.c
│   │   │   │   ├── condvar1_1.c
│   │   │   │   ├── condvar1_2.c
│   │   │   │   ├── condvar2.c
│   │   │   │   ├── condvar2_1.c
│   │   │   │   ├── condvar3.c
│   │   │   │   ├── condvar3_1.c
│   │   │   │   ├── condvar3_2.c
│   │   │   │   ├── condvar3_3.c
│   │   │   │   ├── condvar4.c
│   │   │   │   ├── condvar5.c
│   │   │   │   ├── condvar6.c
│   │   │   │   ├── condvar7.c
│   │   │   │   ├── condvar8.c
│   │   │   │   ├── condvar9.c
│   │   │   │   ├── context1.c
│   │   │   │   ├── count1.c
│   │   │   │   ├── create1.c
│   │   │   │   ├── create2.c
│   │   │   │   ├── create3.c
│   │   │   │   ├── delay1.c
│   │   │   │   ├── delay2.c
│   │   │   │   ├── detach1.c
│   │   │   │   ├── equal1.c
│   │   │   │   ├── errno1.c
│   │   │   │   ├── exception1.c
│   │   │   │   ├── exception2.c
│   │   │   │   ├── exception3.c
│   │   │   │   ├── exit1.c
│   │   │   │   ├── exit2.c
│   │   │   │   ├── exit3.c
│   │   │   │   ├── exit4.c
│   │   │   │   ├── exit5.c
│   │   │   │   ├── eyal1.c
│   │   │   │   ├── inherit1.c
│   │   │   │   ├── join0.c
│   │   │   │   ├── join1.c
│   │   │   │   ├── join2.c
│   │   │   │   ├── join3.c
│   │   │   │   ├── kill1.c
│   │   │   │   ├── loadfree.c
│   │   │   │   ├── multiPCcaBetter.c
│   │   │   │   ├── mutex1.c
│   │   │   │   ├── mutex1e.c
│   │   │   │   ├── mutex1n.c
│   │   │   │   ├── mutex1r.c
│   │   │   │   ├── mutex2.c
│   │   │   │   ├── mutex2e.c
│   │   │   │   ├── mutex2r.c
│   │   │   │   ├── mutex3.c
│   │   │   │   ├── mutex3e.c
│   │   │   │   ├── mutex3r.c
│   │   │   │   ├── mutex4.c
│   │   │   │   ├── mutex5.c
│   │   │   │   ├── mutex6.c
│   │   │   │   ├── mutex6e.c
│   │   │   │   ├── mutex6es.c
│   │   │   │   ├── mutex6n.c
│   │   │   │   ├── mutex6r.c
│   │   │   │   ├── mutex6rs.c
│   │   │   │   ├── mutex6s.c
│   │   │   │   ├── mutex7.c
│   │   │   │   ├── mutex7e.c
│   │   │   │   ├── mutex7n.c
│   │   │   │   ├── mutex7r.c
│   │   │   │   ├── mutex8.c
│   │   │   │   ├── mutex8e.c
│   │   │   │   ├── mutex8n.c
│   │   │   │   ├── mutex8r.c
│   │   │   │   ├── once1.c
│   │   │   │   ├── once2.c
│   │   │   │   ├── once3.c
│   │   │   │   ├── once4.c
│   │   │   │   ├── priority1.c
│   │   │   │   ├── priority2.c
│   │   │   │   ├── readme
│   │   │   │   ├── reuse1.c
│   │   │   │   ├── reuse2.c
│   │   │   │   ├── rwlock1.c
│   │   │   │   ├── rwlock2.c
│   │   │   │   ├── rwlock2_t.c
│   │   │   │   ├── rwlock3.c
│   │   │   │   ├── rwlock3_t.c
│   │   │   │   ├── rwlock4.c
│   │   │   │   ├── rwlock4_t.c
│   │   │   │   ├── rwlock5.c
│   │   │   │   ├── rwlock5_t.c
│   │   │   │   ├── rwlock6.c
│   │   │   │   ├── rwlock6_t.c
│   │   │   │   ├── rwlock6_t2.c
│   │   │   │   ├── rwlock7.c
│   │   │   │   ├── rwlock8.c
│   │   │   │   ├── self1.c
│   │   │   │   ├── self2.c
│   │   │   │   ├── semaphore1.c
│   │   │   │   ├── semaphore2.c
│   │   │   │   ├── semaphore3.c
│   │   │   │   ├── semaphore4.c
│   │   │   │   ├── semaphore4t.c
│   │   │   │   ├── semaphore5.c
│   │   │   │   ├── sizes.c
│   │   │   │   ├── sizes.gc
│   │   │   │   ├── sizes.gce
│   │   │   │   ├── sizes.vc
│   │   │   │   ├── sizes.vse
│   │   │   │   ├── spin1.c
│   │   │   │   ├── spin2.c
│   │   │   │   ├── spin3.c
│   │   │   │   ├── spin4.c
│   │   │   │   ├── stress1.c
│   │   │   │   ├── test.h
│   │   │   │   ├── tryentercs.c
│   │   │   │   ├── tryentercs2.c
│   │   │   │   ├── tsd1.c
│   │   │   │   ├── tsd2.c
│   │   │   │   ├── valid1.c
│   │   │   │   └── valid2.c
│   │   │   ├── tsd.c
│   │   │   ├── version.rc
│   │   │   ├── version.res
│   │   │   └── w32_CancelableWait.c
│   │   ├── pugixml/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── pugiconfig.hpp
│   │   │   ├── pugixml.cpp
│   │   │   └── pugixml.hpp
│   │   ├── rapidjson/
│   │   │   └── include/
│   │   │       └── rapidjson/
│   │   │           ├── allocators.h
│   │   │           ├── cursorstreamwrapper.h
│   │   │           ├── document.h
│   │   │           ├── encodedstream.h
│   │   │           ├── encodings.h
│   │   │           ├── error/
│   │   │           │   ├── en.h
│   │   │           │   └── error.h
│   │   │           ├── filereadstream.h
│   │   │           ├── filewritestream.h
│   │   │           ├── fwd.h
│   │   │           ├── internal/
│   │   │           │   ├── biginteger.h
│   │   │           │   ├── clzll.h
│   │   │           │   ├── diyfp.h
│   │   │           │   ├── dtoa.h
│   │   │           │   ├── ieee754.h
│   │   │           │   ├── itoa.h
│   │   │           │   ├── meta.h
│   │   │           │   ├── pow10.h
│   │   │           │   ├── regex.h
│   │   │           │   ├── stack.h
│   │   │           │   ├── strfunc.h
│   │   │           │   ├── strtod.h
│   │   │           │   └── swap.h
│   │   │           ├── istreamwrapper.h
│   │   │           ├── memorybuffer.h
│   │   │           ├── memorystream.h
│   │   │           ├── msinttypes/
│   │   │           │   ├── inttypes.h
│   │   │           │   └── stdint.h
│   │   │           ├── ostreamwrapper.h
│   │   │           ├── pointer.h
│   │   │           ├── prettywriter.h
│   │   │           ├── rapidjson.h
│   │   │           ├── reader.h
│   │   │           ├── schema.h
│   │   │           ├── stream.h
│   │   │           ├── stringbuffer.h
│   │   │           └── writer.h
│   │   ├── utf8cpp/
│   │   │   ├── utf8/
│   │   │   │   ├── checked.h
│   │   │   │   ├── core.h
│   │   │   │   ├── cpp11.h
│   │   │   │   └── unchecked.h
│   │   │   └── utf8.h
│   │   └── zlib/
│   │       ├── CMakeLists.txt
│   │       ├── adler32.c
│   │       ├── compress.c
│   │       ├── crc32.c
│   │       ├── crc32.h
│   │       ├── crypt.h
│   │       ├── deflate.c
│   │       ├── deflate.h
│   │       ├── gzio.c
│   │       ├── infback.c
│   │       ├── inffast.c
│   │       ├── inffast.h
│   │       ├── inffixed.h
│   │       ├── inflate.c
│   │       ├── inflate.h
│   │       ├── inftrees.c
│   │       ├── inftrees.h
│   │       ├── ioapi.c
│   │       ├── ioapi.h
│   │       ├── trees.c
│   │       ├── trees.h
│   │       ├── uncompr.c
│   │       ├── unzip.c
│   │       ├── unzip.h
│   │       ├── zconf.h
│   │       ├── zconf.in.h
│   │       ├── zip.c
│   │       ├── zip.h
│   │       ├── zlib.h
│   │       ├── zutil.c
│   │       └── zutil.h
│   ├── Assets/
│   │   ├── Scripts/
│   │   │   ├── Component.js
│   │   │   ├── Math.js
│   │   │   └── o2.js
│   │   └── Shaders/
│   │       ├── Default.fsh
│   │       ├── Default.fsh.metal
│   │       ├── Default.vsh
│   │       └── Default.vsh.metal
│   ├── Platforms/
│   │   ├── .lldbinit
│   │   ├── Windows/
│   │   │   └── Framework.natvis
│   │   └── o2_lldb_formatters.py
│   └── Sources/
│       └── o2/
│           ├── Animation/
│           │   ├── Animate.cpp
│           │   ├── Animate.h
│           │   ├── AnimationClip.cpp
│           │   ├── AnimationClip.h
│           │   ├── AnimationMask.cpp
│           │   ├── AnimationMask.h
│           │   ├── AnimationPlayer.cpp
│           │   ├── AnimationPlayer.h
│           │   ├── AnimationState.cpp
│           │   ├── AnimationState.h
│           │   ├── AnimationStateGraph.cpp
│           │   ├── AnimationStateGraph.h
│           │   ├── IAnimation.cpp
│           │   ├── IAnimation.h
│           │   └── Tracks/
│           │       ├── AnimationColor4Track.cpp
│           │       ├── AnimationColor4Track.h
│           │       ├── AnimationFloatTrack.cpp
│           │       ├── AnimationFloatTrack.h
│           │       ├── AnimationSubTrack.cpp
│           │       ├── AnimationSubTrack.h
│           │       ├── AnimationTrack.cpp
│           │       ├── AnimationTrack.h
│           │       ├── AnimationVec2FTrack.cpp
│           │       ├── AnimationVec2FTrack.h
│           │       ├── IAnimationTrack.cpp
│           │       └── IAnimationTrack.h
│           ├── Application/
│           │   ├── Android/
│           │   │   ├── AndroidPlatform.h
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Application.cpp
│           │   ├── Application.h
│           │   ├── Input.cpp
│           │   ├── Input.h
│           │   ├── Linux/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Mac/
│           │   │   ├── AppDelegate.h
│           │   │   ├── AppDelegate.mm
│           │   │   ├── ApplicationBase.h
│           │   │   ├── ApplicationImpl.mm
│           │   │   ├── ApplicationPlatformWrapper.h
│           │   │   ├── RendererView.h
│           │   │   └── RendererView.mm
│           │   ├── VKCodes.h
│           │   ├── WebAssembly/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   ├── Windows/
│           │   │   ├── ApplicationBase.h
│           │   │   └── ApplicationImpl.cpp
│           │   └── iOS/
│           │       ├── AppDelegate.h
│           │       ├── AppDelegate.mm
│           │       ├── ApplicationBase.h
│           │       ├── ApplicationImpl.mm
│           │       ├── ApplicationPlatformWrapper.h
│           │       ├── RendererView.h
│           │       └── RendererView.mm
│           ├── Assets/
│           │   ├── Asset.cpp
│           │   ├── Asset.h
│           │   ├── AssetInfo.cpp
│           │   ├── AssetInfo.h
│           │   ├── AssetRef.cpp
│           │   ├── AssetRef.h
│           │   ├── Assets.cpp
│           │   ├── Assets.h
│           │   ├── AssetsTree.cpp
│           │   ├── AssetsTree.h
│           │   ├── Meta.cpp
│           │   ├── Meta.h
│           │   └── Types/
│           │       ├── ActorAsset.cpp
│           │       ├── ActorAsset.h
│           │       ├── AnimationAsset.cpp
│           │       ├── AnimationAsset.h
│           │       ├── AnimationStateGraphAsset.cpp
│           │       ├── AnimationStateGraphAsset.h
│           │       ├── AtlasAsset.cpp
│           │       ├── AtlasAsset.h
│           │       ├── BinaryAsset.cpp
│           │       ├── BinaryAsset.h
│           │       ├── BitmapFontAsset.cpp
│           │       ├── BitmapFontAsset.h
│           │       ├── DataAsset.cpp
│           │       ├── DataAsset.h
│           │       ├── FolderAsset.cpp
│           │       ├── FolderAsset.h
│           │       ├── FontAsset.cpp
│           │       ├── FontAsset.h
│           │       ├── FragmentShaderAsset.cpp
│           │       ├── FragmentShaderAsset.h
│           │       ├── ImageAsset.cpp
│           │       ├── ImageAsset.h
│           │       ├── JavaScriptAsset.cpp
│           │       ├── JavaScriptAsset.h
│           │       ├── MaterialAsset.cpp
│           │       ├── MaterialAsset.h
│           │       ├── SceneAsset.cpp
│           │    
Download .txt
Showing preview only (1,138K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14363 symbols across 2662 files)

FILE: AssetsBuildTool/Sources/AssetsBuildTool.cpp
  function InitializeTypesAssetsBuildTool (line 10) | extern void InitializeTypesAssetsBuildTool()

FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.cpp
  type o2 (line 15) | namespace o2
    function String (line 83) | const String& AssetsBuilder::GetSourceAssetsPath() const
    function String (line 88) | const String& AssetsBuilder::GetBuiltAssetsPath() const
    function Platform (line 93) | Platform AssetsBuilder::GetPlatform() const
    function IAssetConverter (line 364) | IAssetConverter* AssetsBuilder::GetAssetConverter(const Type* assetType)

FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.h
  function namespace (line 9) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilderRunner.cpp
  function main (line 11) | int main(int argc, char* argv[])

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.cpp
  type o2 (line 12) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.h
  function Reset (line 33) | void Reset() override;

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.cpp
  type o2 (line 10) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.h
  function Reset (line 29) | void Reset() override;

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.cpp
  type o2 (line 6) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.h
  function namespace (line 9) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.cpp
  type o2 (line 9) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.h
  function namespace (line 5) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.cpp
  type o2 (line 11) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.h
  function namespace (line 5) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.cpp
  type o2 (line 6) | namespace o2

FILE: AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.h
  function namespace (line 4) | namespace o2

FILE: CodeTool/Src/CodeTool.cpp
  function main (line 4) | int main(int nargs, char** agrs)

FILE: CodeTool/Src/CodeToolApp.cpp
  function time_t (line 122) | time_t last_write_time_to_time_t(filesystem::file_time_type const& tp)
  function TimeStamp (line 129) | TimeStamp CodeToolApplication::GetFileEditedDate(const string& path)
  function string (line 186) | string CodeToolApplication::ReadFile(const string& path) const
  function string (line 210) | string CodeToolApplication::GetPathWithoutDirectories(const string& path)
  function string (line 216) | string CodeToolApplication::GetParentPath(const string& path)
  function string (line 222) | string CodeToolApplication::GetRelativePath(const string& from, const st...
  function string (line 832) | string CodeToolApplication::GetClassDeclaration(SyntaxClass* cls)
  function string (line 864) | string CodeToolApplication::GetClassMeta(SyntaxClass* cls)
  function string (line 1095) | string CodeToolApplication::GetAttributes(SyntaxClass* cls, int line, Sy...
  function string (line 1155) | string CodeToolApplication::GetEnumMeta(SyntaxEnum* enm)
  function string (line 1183) | string CodeToolApplication::GetEnumPreMeta(SyntaxEnum* enm)
  function RemoveSubstrs (line 1189) | void RemoveSubstrs(string& s, string const& p)
  function string (line 1221) | string CodeToolApplication::GetClassNormalizedTemplates(const string& na...
  function SyntaxSection (line 1389) | SyntaxSection* CodeToolCache::FindSection(const string& fullName, bool w...
  function SyntaxSection (line 1394) | SyntaxSection* CodeToolCache::FindSection(const string& what, const stri...
  function SyntaxSection (line 1399) | SyntaxSection* CodeToolCache::FindSection(const string& what, SyntaxSect...
  function SyntaxSection (line 1405) | SyntaxSection* CodeToolCache::FindSection(const string& what, SyntaxSect...

FILE: CodeTool/Src/CodeToolApp.h
  function class (line 6) | class Timer
  function class (line 25) | class CodeToolCache
  function class (line 66) | class CodeToolApplication

FILE: CodeTool/Src/CppSyntaxParser.cpp
  function string (line 10) | string& TrimStart(string& str, const string& chars /*= " "*/)
  function string (line 25) | string& TrimEnd(string& str, const string& chars /*= " "*/)
  function string (line 40) | string& Trim(string& str, const string& chars /*= " "*/)
  function StartsWith (line 45) | bool StartsWith(const string& str, const string& starts)
  function EndsWith (line 61) | bool EndsWith(const string& str, const string& ends)
  function Split (line 77) | void Split(const string& s, char delim, vector<string>& elems)
  function Split (line 86) | vector<string> Split(const string& s, char delim)
  function SyntaxVariable (line 311) | SyntaxVariable* CppSyntaxParser::ParseVariable(const string& data, Synta...
  function SyntaxFunction (line 393) | SyntaxFunction* CppSyntaxParser::ParseFunction(const string& data, Synta...
  function string (line 1164) | string CppSyntaxParser::ReadWord(const string& data, int& caret,
  function string (line 1238) | string CppSyntaxParser::ReadBlock(const string& data, int& caret)
  function string (line 1295) | string CppSyntaxParser::ReadBraces(const string& data, int& caret)

FILE: CodeTool/Src/CppSyntaxParser.h
  function class (line 13) | class CppSyntaxParser

FILE: CodeTool/Src/SyntaxTree.cpp
  function string (line 14) | const string& SyntaxFile::GetPath() const
  function string (line 19) | const string& SyntaxFile::GetData() const
  function TimeStamp (line 24) | const TimeStamp& SyntaxFile::GetLastEditedDate() const
  function SyntaxNamespace (line 29) | SyntaxNamespace* SyntaxFile::GetGlobalNamespace() const
  function string (line 73) | const string& ISyntaxExpression::GetData() const
  function SyntaxFile (line 78) | SyntaxFile* ISyntaxExpression::GetOwnerFile() const
  function SyntaxDefineIf (line 83) | SyntaxDefineIf* ISyntaxExpression::GetDefine() const
  function SyntaxSection (line 118) | SyntaxSection* SyntaxSection::GetParentSection() const
  function string (line 123) | const string& SyntaxSection::GetName() const
  function string (line 128) | const string& SyntaxSection::GetFullName() const
  function SyntaxFunctionsVec (line 133) | const SyntaxFunctionsVec& SyntaxSection::GetFunctions() const
  function SyntaxVariablesVec (line 138) | const SyntaxVariablesVec& SyntaxSection::GetVariables() const
  function SyntaxSectionsVec (line 143) | const SyntaxSectionsVec& SyntaxSection::GetSections() const
  function SyntaxEnumsVec (line 148) | const SyntaxEnumsVec& SyntaxSection::GetEnums() const
  function SyntaxTypedefsVec (line 153) | const SyntaxTypedefsVec& SyntaxSection::GetTypedefs() const
  function SyntaxUsingNamespacesVec (line 158) | const SyntaxUsingNamespacesVec& SyntaxSection::GetUsingNamespaces() const
  function SyntaxCommentsVec (line 163) | const SyntaxCommentsVec& SyntaxSection::GetComments() const
  function SyntaxComment (line 168) | SyntaxComment* SyntaxSection::FindCommentNearLine(int line) const
  function SyntaxSectionsVec (line 205) | SyntaxSectionsVec SyntaxSection::GetAllSections() const
  function SyntaxClassesVec (line 218) | SyntaxClassesVec SyntaxSection::GetAllClasses() const
  function SyntaxEnumsVec (line 237) | SyntaxEnumsVec SyntaxSection::GetAllEnums() const
  function SyntaxAttributesVec (line 255) | const SyntaxAttributesVec& SyntaxSection::GetAttributes() const
  function SyntaxFunctionsVec (line 332) | const SyntaxFunctionsVec& SyntaxClass::GetFunctions() const
  function SyntaxVariablesVec (line 340) | const SyntaxVariablesVec& SyntaxClass::GetVariables() const
  function SyntaxSectionsVec (line 348) | const SyntaxSectionsVec& SyntaxClass::GetSections() const
  function SyntaxEnumsVec (line 356) | const SyntaxEnumsVec& SyntaxClass::GetEnums() const
  function SyntaxTypedefsVec (line 364) | const SyntaxTypedefsVec& SyntaxClass::GetTypedefs() const
  function SyntaxUsingNamespacesVec (line 372) | const SyntaxUsingNamespacesVec& SyntaxClass::GetUsingNamespaces() const
  function SyntaxSectionsVec (line 380) | SyntaxSectionsVec SyntaxClass::GetAllSections() const
  function SyntaxClassesVec (line 388) | SyntaxClassesVec SyntaxClass::GetAllClasses() const
  function SyntaxClassInheritancsVec (line 401) | const SyntaxClassInheritancsVec& SyntaxClass::GetBaseClasses() const
  function string (line 425) | const string& SyntaxClass::GetTemplateParameters() const
  function SyntaxProtectionSection (line 430) | SyntaxProtectionSection SyntaxClass::GetClassSection() const
  function string (line 435) | const string& SyntaxClass::GetAttributeCommentDef() const
  function string (line 440) | const string& SyntaxClass::GetAttributeShortDef() const
  function SyntaxAttributesVec (line 445) | const SyntaxAttributesVec& SyntaxClass::GetAttributes() const
  function string (line 490) | const string& SyntaxType::GetName() const
  function SyntaxType (line 510) | const SyntaxType& SyntaxVariable::GetVariableType() const
  function string (line 515) | const string& SyntaxVariable::GetName() const
  function SyntaxProtectionSection (line 525) | SyntaxProtectionSection SyntaxVariable::GetClassSection() const
  function SyntaxType (line 544) | const SyntaxType& SyntaxFunction::GetReturnType() const
  function string (line 549) | const string& SyntaxFunction::GetName() const
  function SyntaxVariablesVec (line 554) | const SyntaxVariablesVec& SyntaxFunction::GetParameters() const
  function SyntaxProtectionSection (line 559) | SyntaxProtectionSection SyntaxFunction::GetClassSection() const
  function string (line 569) | const string& SyntaxFunction::GetTemplates() const
  function string (line 579) | const string& SyntaxEnum::GetName() const
  function string (line 584) | const string& SyntaxEnum::GetFullName() const
  function StringStringDict (line 589) | const StringStringDict& SyntaxEnum::GetEntries() const
  function SyntaxProtectionSection (line 594) | SyntaxProtectionSection SyntaxEnum::GetClassSection() const
  function SyntaxSection (line 599) | SyntaxSection* SyntaxEnum::GetOwnerSyntaxSection() const
  function string (line 608) | const string& SyntaxClassInheritance::GetClassName() const
  function SyntaxClass (line 613) | SyntaxClass* SyntaxClassInheritance::GetClass()
  function SyntaxProtectionSection (line 618) | SyntaxProtectionSection SyntaxClassInheritance::GetInheritanceType() const
  function string (line 640) | const string& SyntaxUsingNamespace::GetUsingNamespaceName() const
  function SyntaxSection (line 645) | SyntaxSection* SyntaxUsingNamespace::GetUsingNamespace() const
  function string (line 660) | const string& SyntaxTypedef::GetWhatName() const
  function string (line 665) | const string& SyntaxTypedef::GetNewDefName() const
  function SyntaxSection (line 670) | SyntaxSection* SyntaxTypedef::GetWhat() const
  function SyntaxSection (line 675) | SyntaxSection* SyntaxTypedef::GetNewDef() const

FILE: CodeTool/Src/SyntaxTree.h
  type map (line 27) | typedef map<string, string>           StringStringDict;
  type vector (line 28) | typedef vector<SyntaxAttributes*>     SyntaxAttributesVec;
  type vector (line 29) | typedef vector<SyntaxClass*>          SyntaxClassesVec;
  type vector (line 30) | typedef vector<SyntaxComment*>        SyntaxCommentsVec;
  type vector (line 31) | typedef vector<SyntaxEnum*>           SyntaxEnumsVec;
  type vector (line 32) | typedef vector<SyntaxFile*>           SyntaxFilesVec;
  type vector (line 33) | typedef vector<SyntaxFunction*>       SyntaxFunctionsVec;
  type vector (line 34) | typedef vector<SyntaxSection*>        SyntaxSectionsVec;
  type vector (line 35) | typedef vector<SyntaxTypedef*>        SyntaxTypedefsVec;
  type vector (line 36) | typedef vector<SyntaxUsingNamespace*> SyntaxUsingNamespacesVec;
  type vector (line 37) | typedef vector<SyntaxVariable*>       SyntaxVariablesVec;
  type vector (line 38) | typedef vector<SyntaxDefineIf*>       SyntaxDefinesVec;
  type vector (line 39) | typedef vector<string>                StringsVec;
  type class (line 41) | enum class
  type TimeStamp (line 44) | struct TimeStamp
  function GetLength (line 108) | int GetLength() const;
  function class (line 145) | class SyntaxUsingNamespace: public ISyntaxExpression
  function virtual (line 213) | virtual const string& GetName() const;
  function SyntaxVariablesVec (line 339) | const SyntaxVariablesVec& GetVariables() const;
  function string (line 539) | const string& GetFullName() const;

FILE: CodeTool/Src/pugixml/pugixml.cpp
  function PUGI__NS_BEGIN (line 149) | PUGI__NS_BEGIN
  function PUGI__FN (line 155) | PUGI__FN void default_deallocate(void* ptr)
  type xml_memory_management_function_storage (line 161) | struct xml_memory_management_function_storage
  function PUGI__NS_END (line 173) | PUGI__NS_END
  function PUGI__FN (line 190) | PUGI__FN bool strequal(const char_t* src, const char_t* dst)
  function PUGI__FN (line 202) | PUGI__FN bool strequalrange(const char_t* lhs, const char_t* rhs, size_t...
  function PUGI__FN (line 212) | PUGI__FN size_t strlength_wide(const wchar_t* s)
  function PUGI__FN (line 227) | PUGI__FN void widen_ascii(wchar_t* dest, const char* source)
  function PUGI__NS_BEGIN (line 237) | PUGI__NS_BEGIN
  type xml_allocator (line 282) | struct xml_allocator
    method xml_allocator (line 316) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
    method xml_memory_page (line 320) | xml_memory_page* allocate_page(size_t data_size)
    method deallocate_page (line 344) | static void deallocate_page(xml_memory_page* page)
    method deallocate_memory (line 366) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
    method char_t (line 401) | char_t* allocate_string(size_t length)
    method deallocate_string (line 435) | void deallocate_string(char_t* string)
  type xml_memory_page (line 284) | struct xml_memory_page
    method xml_memory_page (line 286) | static xml_memory_page* construct(void* memory)
  type xml_memory_string_header (line 308) | struct xml_memory_string_header
  type xml_allocator (line 314) | struct xml_allocator
    method xml_allocator (line 316) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
    method xml_memory_page (line 320) | xml_memory_page* allocate_page(size_t data_size)
    method deallocate_page (line 344) | static void deallocate_page(xml_memory_page* page)
    method deallocate_memory (line 366) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
    method char_t (line 401) | char_t* allocate_string(size_t length)
    method deallocate_string (line 435) | void deallocate_string(char_t* string)
  function PUGI__FN_NO_INLINE (line 458) | PUGI__FN_NO_INLINE void* xml_allocator::allocate_memory_oob(size_t size,...
  function PUGI__NS_END (line 496) | PUGI__NS_END
  function PUGI__NS_BEGIN (line 542) | PUGI__NS_BEGIN
  type xml_document_struct (line 549) | struct xml_document_struct: public xml_node_struct, public xml_allocator
    method xml_document_struct (line 551) | xml_document_struct(xml_memory_page* page): xml_node_struct(page, node...
  function xml_allocator (line 560) | inline xml_allocator& get_allocator(const xml_node_struct* node)
    method xml_allocator (line 316) | xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->bu...
    method xml_memory_page (line 320) | xml_memory_page* allocate_page(size_t data_size)
    method deallocate_page (line 344) | static void deallocate_page(xml_memory_page* page)
    method deallocate_memory (line 366) | void deallocate_memory(void* ptr, size_t size, xml_memory_page* page)
    method char_t (line 401) | char_t* allocate_string(size_t length)
    method deallocate_string (line 435) | void deallocate_string(char_t* string)
  function xml_document_struct (line 567) | inline xml_document_struct& get_document(const Object* object)
    method xml_document_struct (line 551) | xml_document_struct(xml_memory_page* page): xml_node_struct(page, node...
  function PUGI__NS_END (line 573) | PUGI__NS_END
  function xml_node_struct (line 585) | inline xml_node_struct* allocate_node(xml_allocator& alloc, xml_node_typ...
  function destroy_attribute (line 593) | inline void destroy_attribute(xml_attribute_struct* a, xml_allocator& al...
  function destroy_node (line 603) | inline void destroy_node(xml_node_struct* n, xml_allocator& alloc)
  function append_node (line 631) | inline void append_node(xml_node_struct* child, xml_node_struct* node)
  function prepend_node (line 652) | inline void prepend_node(xml_node_struct* child, xml_node_struct* node)
  function insert_node_after (line 670) | inline void insert_node_after(xml_node_struct* child, xml_node_struct* n...
  function insert_node_before (line 687) | inline void insert_node_before(xml_node_struct* child, xml_node_struct* ...
  function remove_node (line 704) | inline void remove_node(xml_node_struct* node)
  function append_attribute (line 723) | inline void append_attribute(xml_attribute_struct* attr, xml_node_struct...
  function prepend_attribute (line 742) | inline void prepend_attribute(xml_attribute_struct* attr, xml_node_struc...
  function insert_attribute_after (line 758) | inline void insert_attribute_after(xml_attribute_struct* attr, xml_attri...
  function insert_attribute_before (line 770) | inline void insert_attribute_before(xml_attribute_struct* attr, xml_attr...
  function remove_attribute (line 782) | inline void remove_attribute(xml_attribute_struct* attr, xml_node_struct...
  function PUGI__FN_NO_INLINE (line 798) | PUGI__FN_NO_INLINE xml_node_struct* append_new_node(xml_node_struct* nod...
  function PUGI__FN_NO_INLINE (line 808) | PUGI__FN_NO_INLINE xml_attribute_struct* append_new_attribute(xml_node_s...
  function PUGI__NS_END (line 817) | PUGI__NS_END
  type opt_true (line 826) | struct opt_true
  function PUGI__NS_END (line 830) | PUGI__NS_END
  function endian_swap (line 839) | inline uint32_t endian_swap(uint32_t value)
  type utf8_counter (line 844) | struct utf8_counter
    method value_type (line 848) | static value_type low(value_type result, uint32_t ch)
    method value_type (line 858) | static value_type high(value_type result, uint32_t)
  type utf8_writer (line 865) | struct utf8_writer
    method value_type (line 869) | static value_type low(value_type result, uint32_t ch)
    method value_type (line 894) | static value_type high(value_type result, uint32_t ch)
    method value_type (line 904) | static value_type any(value_type result, uint32_t ch)
  type utf16_counter (line 910) | struct utf16_counter
    method value_type (line 914) | static value_type low(value_type result, uint32_t)
    method value_type (line 919) | static value_type high(value_type result, uint32_t)
  type utf16_writer (line 925) | struct utf16_writer
    method value_type (line 929) | static value_type low(value_type result, uint32_t ch)
    method value_type (line 936) | static value_type high(value_type result, uint32_t ch)
    method value_type (line 947) | static value_type any(value_type result, uint32_t ch)
  type utf32_counter (line 953) | struct utf32_counter
    method value_type (line 957) | static value_type low(value_type result, uint32_t)
    method value_type (line 962) | static value_type high(value_type result, uint32_t)
  type utf32_writer (line 968) | struct utf32_writer
    method value_type (line 972) | static value_type low(value_type result, uint32_t ch)
    method value_type (line 979) | static value_type high(value_type result, uint32_t ch)
    method value_type (line 986) | static value_type any(value_type result, uint32_t ch)
  type latin1_writer (line 994) | struct latin1_writer
    method value_type (line 998) | static value_type low(value_type result, uint32_t ch)
    method value_type (line 1005) | static value_type high(value_type result, uint32_t ch)
  type wchar_selector (line 1015) | struct wchar_selector
  type wchar_selector<2> (line 1017) | struct wchar_selector<2>
  type wchar_selector<4> (line 1024) | struct wchar_selector<4>
  type utf_decoder (line 1034) | struct utf_decoder
    method decode_utf8_block (line 1036) | static inline typename Traits::value_type decode_utf8_block(const uint...
    method decode_utf16_block (line 1098) | static inline typename Traits::value_type decode_utf16_block(const uin...
    method decode_utf32_block (line 1142) | static inline typename Traits::value_type decode_utf32_block(const uin...
    method decode_latin1_block (line 1167) | static inline typename Traits::value_type decode_latin1_block(const ui...
    method decode_wchar_block_impl (line 1177) | static inline typename Traits::value_type decode_wchar_block_impl(cons...
    method decode_wchar_block_impl (line 1182) | static inline typename Traits::value_type decode_wchar_block_impl(cons...
    method decode_wchar_block (line 1187) | static inline typename Traits::value_type decode_wchar_block(const wch...
  function PUGI__FN (line 1193) | PUGI__FN void convert_utf_endian_swap(T* result, const T* data, size_t l...
  function PUGI__FN (line 1199) | PUGI__FN void convert_wchar_endian_swap(wchar_t* result, const wchar_t* ...
  type chartypex_t (line 1240) | enum chartypex_t
  function PUGI__FN (line 1280) | PUGI__FN bool is_little_endian()
  function PUGI__FN (line 1287) | PUGI__FN xml_encoding get_wchar_encoding()
  function PUGI__FN (line 1297) | PUGI__FN xml_encoding guess_buffer_encoding(uint8_t d0, uint8_t d1, uint...
  function PUGI__FN (line 1321) | PUGI__FN xml_encoding get_buffer_encoding(xml_encoding encoding, const v...
  function PUGI__FN (line 1346) | PUGI__FN bool get_mutable_buffer(char_t*& out_buffer, size_t& out_length...
  function PUGI__FN (line 1375) | PUGI__FN bool need_endian_swap_utf(xml_encoding le, xml_encoding re)
  function PUGI__FN (line 1381) | PUGI__FN bool convert_buffer_endian_swap(char_t*& out_buffer, size_t& ou...
  function PUGI__FN (line 1410) | PUGI__FN bool convert_buffer_utf8(char_t*& out_buffer, size_t& out_lengt...
  function PUGI__FN (line 1435) | PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_leng...
  function PUGI__FN (line 1460) | PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_leng...
  function PUGI__FN (line 1485) | PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_len...
  function PUGI__FN (line 1510) | PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xm...
  function PUGI__FN (line 1551) | PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_leng...
  function PUGI__FN (line 1576) | PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_leng...
  function PUGI__FN (line 1601) | PUGI__FN size_t get_latin1_7bit_prefix_length(const uint8_t* data, size_...
  function PUGI__FN (line 1610) | PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_len...
  function PUGI__FN (line 1647) | PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xm...
  function PUGI__FN (line 1680) | PUGI__FN size_t as_utf8_begin(const wchar_t* str, size_t length)
  function PUGI__FN (line 1686) | PUGI__FN void as_utf8_end(char* buffer, size_t size, const wchar_t* str,...
  function PUGI__FN (line 1700) | PUGI__FN std::string as_utf8_impl(const wchar_t* str, size_t length)
  function PUGI__FN (line 1715) | PUGI__FN std::basic_string<wchar_t> as_wide_impl(const char* str, size_t...
  function strcpy_insitu_allow (line 1740) | inline bool strcpy_insitu_allow(size_t length, uintptr_t header, uintptr...
  function PUGI__FN (line 1756) | PUGI__FN bool strcpy_insitu(char_t*& dest, uintptr_t& header, uintptr_t ...
  type gap (line 1804) | struct gap
    method gap (line 1809) | gap(): end(0), size(0)
    method push (line 1815) | void push(char_t*& s, size_t count)
    method char_t (line 1832) | char_t* flush(char_t* s)
  function PUGI__FN (line 1846) | PUGI__FN char_t* strconv_escape(char_t* s, gap& g)
  function PUGI__FN (line 1999) | PUGI__FN char_t* strconv_comment(char_t* s, char_t endch)
  function PUGI__FN (line 2027) | PUGI__FN char_t* strconv_cdata(char_t* s, char_t endch)
  type strconv_pcdata_impl (line 2057) | struct strconv_pcdata_impl
    method char_t (line 2059) | static char_t* parse(char_t* s)
  function PUGI__FN (line 2108) | PUGI__FN strconv_pcdata_t get_strconv_pcdata(unsigned int optmask)
  type strconv_attribute_impl (line 2128) | struct strconv_attribute_impl
    method char_t (line 2130) | static char_t* parse_wnorm(char_t* s, char_t end_quote)
    method char_t (line 2182) | static char_t* parse_wconv(char_t* s, char_t end_quote)
    method char_t (line 2218) | static char_t* parse_eol(char_t* s, char_t end_quote)
    method char_t (line 2250) | static char_t* parse_simple(char_t* s, char_t end_quote)
  function PUGI__FN (line 2277) | PUGI__FN strconv_attribute_t get_strconv_attribute(unsigned int optmask)
  function xml_parse_result (line 2303) | inline xml_parse_result make_parse_result(xml_parse_status status, ptrdi...
  type xml_parser (line 2312) | struct xml_parser
    method xml_parser (line 2318) | xml_parser(const xml_allocator& alloc_): alloc(alloc_), error_offset(0...
    method char_t (line 2329) | char_t* parse_doctype_primitive(char_t* s)
    method char_t (line 2362) | char_t* parse_doctype_ignore(char_t* s)
    method char_t (line 2393) | char_t* parse_doctype_group(char_t* s, char_t endch)
    method char_t (line 2439) | char_t* parse_exclamation(char_t* s, xml_node_struct* cursor, unsigned...
    method char_t (line 2548) | char_t* parse_question(char_t* s, xml_node_struct*& ref_cursor, unsign...
    method char_t (line 2641) | char_t* parse_tree(char_t* s, xml_node_struct* root, unsigned int optm...
    method char_t (line 2870) | static char_t* parse_skip_bom(char_t* s)
    method char_t (line 2876) | static char_t* parse_skip_bom(char_t* s)
    method has_element_node_siblings (line 2882) | static bool has_element_node_siblings(xml_node_struct* node)
    method xml_parse_result (line 2894) | static xml_parse_result parse(char_t* buffer, size_t length, xml_docum...
  function PUGI__FN (line 2949) | PUGI__FN xml_encoding get_write_native_encoding()
  function PUGI__FN (line 2958) | PUGI__FN xml_encoding get_write_encoding(xml_encoding encoding)
  function PUGI__FN (line 2977) | PUGI__FN size_t get_valid_length(const char_t* data, size_t length)
  function PUGI__FN (line 2985) | PUGI__FN size_t convert_buffer_output(char_t* r_char, uint8_t* r_u8, uin...
  function PUGI__FN (line 3049) | PUGI__FN size_t get_valid_length(const char_t* data, size_t length)
  function PUGI__FN (line 3065) | PUGI__FN size_t convert_buffer_output(char_t* /* r_char */, uint8_t* r_u...
  class xml_buffered_writer (line 3110) | class xml_buffered_writer
    method xml_buffered_writer (line 3116) | xml_buffered_writer(xml_writer& writer_, xml_encoding user_encoding): ...
    method flush (line 3126) | size_t flush()
    method flush (line 3133) | void flush(const char_t* data, size_t size)
    method write_direct (line 3151) | void write_direct(const char_t* data, size_t length)
    method write_buffer (line 3190) | void write_buffer(const char_t* data, size_t length)
    method write_string (line 3205) | void write_string(const char_t* data)
    method write (line 3230) | void write(char_t d0)
    method write (line 3239) | void write(char_t d0, char_t d1)
    method write (line 3249) | void write(char_t d0, char_t d1, char_t d2)
    method write (line 3260) | void write(char_t d0, char_t d1, char_t d2, char_t d3)
    method write (line 3272) | void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4)
    method write (line 3285) | void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4, char...
  function PUGI__FN (line 3329) | PUGI__FN void text_output_escaped(xml_buffered_writer& writer, const cha...
  function PUGI__FN (line 3370) | PUGI__FN void text_output(xml_buffered_writer& writer, const char_t* s, ...
  function PUGI__FN (line 3378) | PUGI__FN void text_output_cdata(xml_buffered_writer& writer, const char_...
  function PUGI__FN (line 3400) | PUGI__FN void text_output_indent(xml_buffered_writer& writer, const char...
  function PUGI__FN (line 3440) | PUGI__FN void node_output_comment(xml_buffered_writer& writer, const cha...
  function PUGI__FN (line 3465) | PUGI__FN void node_output_pi_value(xml_buffered_writer& writer, const ch...
  function PUGI__FN (line 3486) | PUGI__FN void node_output_attributes(xml_buffered_writer& writer, xml_no...
  function PUGI__FN (line 3503) | PUGI__FN bool node_output_start(xml_buffered_writer& writer, xml_node_st...
  function PUGI__FN (line 3528) | PUGI__FN void node_output_end(xml_buffered_writer& writer, xml_node_stru...
  function PUGI__FN (line 3538) | PUGI__FN void node_output_simple(xml_buffered_writer& writer, xml_node_s...
  type indent_flags_t (line 3594) | enum indent_flags_t
  function PUGI__FN (line 3600) | PUGI__FN void node_output(xml_buffered_writer& writer, xml_node_struct* ...
  function PUGI__FN (line 3689) | PUGI__FN bool has_declaration(xml_node_struct* node)
  function PUGI__FN (line 3702) | PUGI__FN bool is_attribute_of(xml_attribute_struct* attr, xml_node_struc...
  function PUGI__FN (line 3711) | PUGI__FN bool allow_insert_attribute(xml_node_type parent)
  function PUGI__FN (line 3716) | PUGI__FN bool allow_insert_child(xml_node_type parent, xml_node_type child)
  function PUGI__FN (line 3725) | PUGI__FN bool allow_move(xml_node parent, xml_node child)
  function PUGI__FN (line 3749) | PUGI__FN void node_copy_string(char_t*& dest, uintptr_t& header, uintptr...
  function PUGI__FN (line 3768) | PUGI__FN void node_copy_contents(xml_node_struct* dn, xml_node_struct* s...
  function PUGI__FN (line 3785) | PUGI__FN void node_copy_tree(xml_node_struct* dn, xml_node_struct* sn)
  function is_text_node (line 3830) | inline bool is_text_node(xml_node_struct* node)
  function PUGI__FN (line 3838) | PUGI__FN int get_integer_base(const char_t* value)
  function PUGI__FN (line 3851) | PUGI__FN int get_value_int(const char_t* value, int def)
  function get_value_uint (line 3864) | PUGI__FN unsigned int get_value_uint(const char_t* value, unsigned int def)
  function PUGI__FN (line 3877) | PUGI__FN double get_value_double(const char_t* value, double def)
  function PUGI__FN (line 3888) | PUGI__FN float get_value_float(const char_t* value, float def)
  function PUGI__FN (line 3899) | PUGI__FN bool get_value_bool(const char_t* value, bool def)
  function get_value_llong (line 3911) | PUGI__FN long long get_value_llong(const char_t* value, long long def)
  function get_value_ullong (line 3932) | PUGI__FN unsigned long long get_value_ullong(const char_t* value, unsign...
  function PUGI__FN (line 3955) | PUGI__FN bool set_value_buffer(char_t*& dest, uintptr_t& header, uintptr...
  function PUGI__FN (line 3967) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 3975) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 3983) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 3991) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 3999) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 4005) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 4013) | PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintpt...
  function PUGI__FN (line 4023) | PUGI__FN xml_parse_status get_file_size(FILE* file, size_t& out_result)
  function PUGI__FN (line 4062) | PUGI__FN size_t zero_terminate_buffer(void* buffer, size_t size, xml_enc...
  function PUGI__FN (line 4086) | PUGI__FN xml_parse_result load_file_impl(xml_document& doc, FILE* file, ...
  type xml_stream_chunk (line 4127) | struct xml_stream_chunk
    method xml_stream_chunk (line 4129) | static xml_stream_chunk* create()
    method destroy (line 4136) | static void destroy(void* ptr)
    method xml_stream_chunk (line 4151) | xml_stream_chunk(): next(0), size(0)
  function PUGI__FN (line 4161) | PUGI__FN xml_parse_status load_stream_data_noseek(std::basic_istream<T>&...
  function PUGI__FN (line 4215) | PUGI__FN xml_parse_status load_stream_data_seek(std::basic_istream<T>& s...
  function PUGI__FN (line 4251) | PUGI__FN xml_parse_result load_stream_impl(xml_document& doc, std::basic...
  function PUGI__FN (line 4278) | PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode)
  function PUGI__FN (line 4283) | PUGI__FN char* convert_path_heap(const wchar_t* str)
  function PUGI__FN (line 4301) | PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode)
  function PUGI__FN (line 4321) | PUGI__FN bool save_file_impl(const xml_document& doc, FILE* file, const ...
  function PUGI__FN (line 4335) | PUGI__FN xml_parse_result load_buffer_impl(xml_document_struct* doc, xml...
  function PUGI__NS_END (line 4366) | PUGI__NS_END
  function PUGI__FN (line 5994) | PUGI__FN xml_document::~xml_document()
  function PUGI__FN (line 5999) | PUGI__FN void xml_document::reset()
  function PUGI__FN (line 6005) | PUGI__FN void xml_document::reset(const xml_document& proto)
  function PUGI__FN (line 6013) | PUGI__FN void xml_document::create()
  function PUGI__FN (line 6040) | PUGI__FN void xml_document::destroy()
  function PUGI__FN (line 6075) | PUGI__FN xml_parse_result xml_document::load(std::basic_istream<char, st...
  function PUGI__FN (line 6082) | PUGI__FN xml_parse_result xml_document::load(std::basic_istream<wchar_t,...
  function PUGI__FN (line 6090) | PUGI__FN xml_parse_result xml_document::load_string(const char_t* conten...
  function PUGI__FN (line 6102) | PUGI__FN xml_parse_result xml_document::load(const char_t* contents, uns...
  function PUGI__FN (line 6107) | PUGI__FN xml_parse_result xml_document::load_file(const char* path_, uns...
  function PUGI__FN (line 6116) | PUGI__FN xml_parse_result xml_document::load_file(const wchar_t* path_, ...
  function PUGI__FN (line 6125) | PUGI__FN xml_parse_result xml_document::load_buffer(const void* contents...
  function PUGI__FN (line 6132) | PUGI__FN xml_parse_result xml_document::load_buffer_inplace(void* conten...
  function PUGI__FN (line 6139) | PUGI__FN xml_parse_result xml_document::load_buffer_inplace_own(void* co...
  function PUGI__FN (line 6146) | PUGI__FN void xml_document::save(xml_writer& writer, const char_t* inden...
  function PUGI__FN (line 6173) | PUGI__FN void xml_document::save(std::basic_ostream<char, std::char_trai...
  function PUGI__FN (line 6180) | PUGI__FN void xml_document::save(std::basic_ostream<wchar_t, std::char_t...
  function PUGI__FN (line 6188) | PUGI__FN bool xml_document::save_file(const char* path_, const char_t* i...
  function PUGI__FN (line 6194) | PUGI__FN bool xml_document::save_file(const wchar_t* path_, const char_t...
  function PUGI__FN (line 6200) | PUGI__FN xml_node xml_document::document_element() const
  function PUGI__FN (line 6212) | PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t* str)
  function PUGI__FN (line 6219) | PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const std::basic_string<wc...
  function PUGI__FN (line 6224) | PUGI__FN std::basic_string<wchar_t> PUGIXML_FUNCTION as_wide(const char*...
  function PUGI__FN (line 6231) | PUGI__FN std::basic_string<wchar_t> PUGIXML_FUNCTION as_wide(const std::...
  function PUGI__FN (line 6237) | PUGI__FN void PUGIXML_FUNCTION set_memory_management_functions(allocatio...
  function PUGI__FN (line 6243) | PUGI__FN allocation_function PUGIXML_FUNCTION get_memory_allocation_func...
  function PUGI__FN (line 6248) | PUGI__FN deallocation_function PUGIXML_FUNCTION get_memory_deallocation_...
  type std (line 6255) | namespace std
    function PUGI__FN (line 6258) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_nod...
    function PUGI__FN (line 6263) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_att...
    function PUGI__FN (line 6268) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_nam...
    function PUGI__FN (line 6279) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
    function PUGI__FN (line 6284) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
    function PUGI__FN (line 6289) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
  type std (line 6276) | namespace std
    function PUGI__FN (line 6258) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_nod...
    function PUGI__FN (line 6263) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_att...
    function PUGI__FN (line 6268) | PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_nam...
    function PUGI__FN (line 6279) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
    function PUGI__FN (line 6284) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
    function PUGI__FN (line 6289) | PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pug...
  function PUGI__NS_BEGIN (line 6298) | PUGI__NS_BEGIN
  type not_equal_to (line 6307) | struct not_equal_to
  type less (line 6315) | struct less
  type less_equal (line 6323) | struct less_equal
  function swap (line 6331) | void swap(T& lhs, T& rhs)
  function I (line 6338) | I min_element(I begin, I end, const Pred& pred)
  function reverse (line 6349) | void reverse(I begin, I end)
  function I (line 6354) | I unique(I begin, I end)
  function copy_backwards (line 6377) | void copy_backwards(I begin, I end, I target)
  function insertion_sort (line 6382) | void insertion_sort(I begin, I end, const Pred& pred, T*)
  function partition (line 6414) | void partition(I begin, I middle, I end, const Pred& pred, I* out_eqbeg,...
  function median3 (line 6467) | void median3(I first, I middle, I last, const Pred& pred)
  function median (line 6474) | void median(I first, I middle, I last, const Pred& pred)
  function sort (line 6493) | void sort(I begin, I end, const Pred& pred)
  class xpath_allocator (line 6540) | class xpath_allocator
    method xpath_allocator (line 6550) | xpath_allocator(xpath_memory_block* root, size_t root_size = 0): _root...
    method revert (line 6652) | void revert(const xpath_allocator& state)
    method release (line 6671) | void release()
  type xpath_allocator_capture (line 6687) | struct xpath_allocator_capture
    method xpath_allocator_capture (line 6689) | xpath_allocator_capture(xpath_allocator* alloc): _target(alloc), _stat...
  type xpath_stack (line 6702) | struct xpath_stack
  type xpath_stack_data (line 6708) | struct xpath_stack_data
    method xpath_stack_data (line 6719) | xpath_stack_data(): result(blocks + 0), temp(blocks + 1)
  function PUGI__NS_END (line 6738) | PUGI__NS_END
  function xpath_string (line 6769) | static xpath_string from_heap_preallocated(const char_t* begin, const ch...
  function xpath_string (line 6776) | static xpath_string from_heap(const char_t* begin, const char_t* end, xp...
  function xpath_string (line 6785) | xpath_string(): _buffer(PUGIXML_TEXT("")), _uses_heap(false), _length_he...
  function append (line 6789) | void append(const xpath_string& o, xpath_allocator* alloc)
  function char_t (line 6824) | const char_t* c_str() const
  function length (line 6829) | size_t length() const
  function char_t (line 6834) | char_t* data(xpath_allocator* alloc)
  function empty (line 6849) | bool empty() const
  function uses_heap (line 6864) | bool uses_heap() const
  function PUGI__NS_END (line 6869) | PUGI__NS_END
  function PUGI__FN (line 6883) | PUGI__FN const char_t* find_char(const char_t* s, char_t c)
  function PUGI__FN (line 6892) | PUGI__FN const char_t* find_substring(const char_t* s, const char_t* p)
  function PUGI__FN (line 6903) | PUGI__FN char_t tolower_ascii(char_t ch)
  function PUGI__FN (line 6908) | PUGI__FN xpath_string string_value(const xpath_node& na, xpath_allocator...
  function PUGI__FN (line 6958) | PUGI__FN bool node_is_before_sibling(xml_node_struct* ln, xml_node_struc...
  function PUGI__FN (line 6982) | PUGI__FN bool node_is_before(xml_node_struct* ln, xml_node_struct* rn)
  function PUGI__FN (line 7025) | PUGI__FN bool node_is_ancestor(xml_node_struct* parent, xml_node_struct*...
  function PUGI__FN (line 7032) | PUGI__FN const void* document_buffer_order(const xpath_node& xnode)
  type document_order_comparator (line 7063) | struct document_order_comparator
  type duplicate_comparator (line 7117) | struct duplicate_comparator
  function PUGI__FN (line 7126) | PUGI__FN double gen_nan()
  function PUGI__FN (line 7139) | PUGI__FN bool is_nan(double value)
  function PUGI__FN (line 7152) | PUGI__FN const char_t* convert_number_to_string_special(double value)
  function PUGI__FN (line 7184) | PUGI__FN bool convert_number_to_boolean(double value)
  function PUGI__FN (line 7189) | PUGI__FN void truncate_zeros(char* begin, char* end)
  function PUGI__FN (line 7198) | PUGI__FN void convert_number_to_mantissa_exponent(double value, char* bu...
  function PUGI__FN (line 7212) | PUGI__FN void convert_number_to_mantissa_exponent(double value, char* bu...
  function PUGI__FN (line 7243) | PUGI__FN xpath_string convert_number_to_string(double value, xpath_alloc...
  function PUGI__FN (line 7310) | PUGI__FN bool check_string_to_number_format(const char_t* string)
  function PUGI__FN (line 7340) | PUGI__FN double convert_string_to_number(const char_t* string)
  function PUGI__FN (line 7353) | PUGI__FN bool convert_string_to_number_scratch(char_t (&buffer)[32], con...
  function PUGI__FN (line 7377) | PUGI__FN double round_nearest(double value)
  function PUGI__FN (line 7382) | PUGI__FN double round_nearest_nzero(double value)
  function PUGI__FN (line 7389) | PUGI__FN const char_t* qualified_name(const xpath_node& node)
  function PUGI__FN (line 7394) | PUGI__FN const char_t* local_name(const xpath_node& node)
  type namespace_uri_predicate (line 7402) | struct namespace_uri_predicate
    method namespace_uri_predicate (line 7407) | namespace_uri_predicate(const char_t* name)
  function PUGI__FN (line 7425) | PUGI__FN const char_t* namespace_uri(xml_node node)
  function PUGI__FN (line 7443) | PUGI__FN const char_t* namespace_uri(xml_attribute attr, xml_node parent)
  function PUGI__FN (line 7464) | PUGI__FN const char_t* namespace_uri(const xpath_node& node)
  function PUGI__FN (line 7469) | PUGI__FN char_t* normalize_space(char_t* buffer)
  function PUGI__FN (line 7497) | PUGI__FN char_t* translate(char_t* buffer, const char_t* from, const cha...
  function PUGI__FN (line 7553) | PUGI__FN char_t* translate_table(char_t* buffer, const unsigned char* ta...
  function is_xpath_attribute (line 7583) | inline bool is_xpath_attribute(const char_t* name)
  type xpath_variable_boolean (line 7588) | struct xpath_variable_boolean: xpath_variable
    method xpath_variable_boolean (line 7590) | xpath_variable_boolean(): value(false)
  type xpath_variable_number (line 7598) | struct xpath_variable_number: xpath_variable
    method xpath_variable_number (line 7600) | xpath_variable_number(): value(0)
  type xpath_variable_string (line 7608) | struct xpath_variable_string: xpath_variable
    method xpath_variable_string (line 7610) | xpath_variable_string(): value(0)
  type xpath_variable_node_set (line 7623) | struct xpath_variable_node_set: xpath_variable
  function hash_string (line 7631) | PUGI__FN unsigned int hash_string(const char_t* str)
  function PUGI__FN (line 7650) | PUGI__FN T* new_xpath_variable(const char_t* name)
  function PUGI__FN (line 7666) | PUGI__FN xpath_variable* new_xpath_variable(xpath_value_type type, const...
  function PUGI__FN (line 7687) | PUGI__FN void delete_xpath_variable(T* var)
  function PUGI__FN (line 7693) | PUGI__FN void delete_xpath_variable(xpath_value_type type, xpath_variabl...
  function PUGI__FN (line 7718) | PUGI__FN xpath_variable* get_variable_scratch(char_t (&buffer)[32], xpat...
  function PUGI__NS_END (line 7741) | PUGI__NS_END
  function PUGI__FN (line 7761) | PUGI__FN xpath_node_set::type_t xpath_sort(xpath_node* begin, xpath_node...
  function PUGI__FN (line 7784) | PUGI__FN xpath_node xpath_first(const xpath_node* begin, const xpath_nod...
  class xpath_node_set_raw (line 7805) | class xpath_node_set_raw
    method xpath_node_set_raw (line 7814) | xpath_node_set_raw(): _type(xpath_node_set::type_unsorted), _begin(0),...
    method xpath_node (line 7818) | xpath_node* begin() const
    method xpath_node (line 7823) | xpath_node* end() const
    method empty (line 7828) | bool empty() const
    method size (line 7833) | size_t size() const
    method xpath_node (line 7838) | xpath_node first() const
    method push_back (line 7845) | void push_back(const xpath_node& node, xpath_allocator* alloc)
    method append (line 7853) | void append(const xpath_node* begin_, const xpath_node* end_, xpath_al...
    method sort_do (line 7877) | void sort_do()
    method truncate (line 7882) | void truncate(xpath_node* pos)
    method remove_duplicates (line 7889) | void remove_duplicates()
    method type (line 7897) | xpath_node_set::type_t type() const
    method set_type (line 7902) | void set_type(xpath_node_set::type_t value)
  function PUGI__FN_NO_INLINE (line 7908) | PUGI__FN_NO_INLINE void xpath_node_set_raw::push_back_grow(const xpath_n...
  function PUGI__NS_END (line 7927) | PUGI__NS_END
  type lexeme_t (line 7940) | enum lexeme_t
  type xpath_lexer_string (line 7971) | struct xpath_lexer_string
    method xpath_lexer_string (line 7976) | xpath_lexer_string(): begin(0), end(0)
  class xpath_lexer (line 7988) | class xpath_lexer
    method xpath_lexer (line 7997) | explicit xpath_lexer(const char_t* query): _cur(query)
    method char_t (line 8002) | const char_t* state() const
    method next (line 8007) | void next()
    method lexeme_t (line 8276) | lexeme_t current() const
    method char_t (line 8281) | const char_t* current_pos() const
    method xpath_lexer_string (line 8286) | const xpath_lexer_string& contents() const
  type ast_type_t (line 8294) | enum ast_type_t
  type axis_t (line 8359) | enum axis_t
  type nodetest_t (line 8376) | enum nodetest_t
  type predicate_t (line 8389) | enum predicate_t
  type nodeset_eval_t (line 8397) | enum nodeset_eval_t
  type axis_to_type (line 8404) | struct axis_to_type
  class xpath_ast_node (line 8411) | class xpath_ast_node
    method compare_eq (line 8446) | static bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, const...
    method eval_once (line 8534) | static bool eval_once(xpath_node_set::type_t type, nodeset_eval_t eval)
    method compare_rel (line 8539) | static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, cons...
    method apply_predicate_boolean (line 8610) | static void apply_predicate_boolean(xpath_node_set_raw& ns, size_t fir...
    method apply_predicate_number (line 8636) | static void apply_predicate_number(xpath_node_set_raw& ns, size_t firs...
    method apply_predicate_number_const (line 8662) | static void apply_predicate_number_const(xpath_node_set_raw& ns, size_...
    method apply_predicate (line 8690) | void apply_predicate(xpath_node_set_raw& ns, size_t first, const xpath...
    method apply_predicates (line 8704) | void apply_predicates(xpath_node_set_raw& ns, size_t first, const xpat...
    method step_push (line 8714) | bool step_push(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_no...
    method step_push (line 8754) | bool step_push(xpath_node_set_raw& ns, xml_node_struct* n, xpath_alloc...
    method step_fill (line 8829) | void step_fill(xpath_node_set_raw& ns, xml_node_struct* n, xpath_alloc...
    method step_fill (line 9022) | void step_fill(xpath_node_set_raw& ns, xml_attribute_struct* a, xml_no...
    method step_fill (line 9103) | void step_fill(xpath_node_set_raw& ns, const xpath_node& xn, xpath_all...
    method xpath_node_set_raw (line 9114) | xpath_node_set_raw step_do(const xpath_context& c, const xpath_stack& ...
    method xpath_ast_node (line 9161) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, const char_...
    method xpath_ast_node (line 9168) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, double value):
    method xpath_ast_node (line 9175) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_varia...
    method xpath_ast_node (line 9182) | xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_n...
    method xpath_ast_node (line 9187) | xpath_ast_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nod...
    method xpath_ast_node (line 9194) | xpath_ast_node(ast_type_t type, xpath_ast_node* left, xpath_ast_node* ...
    method set_next (line 9200) | void set_next(xpath_ast_node* value)
    method set_right (line 9205) | void set_right(xpath_ast_node* value)
    method eval_boolean (line 9210) | bool eval_boolean(const xpath_context& c, const xpath_stack& stack)
    method eval_number (line 9348) | double eval_number(const xpath_context& c, const xpath_stack& stack)
    method xpath_string (line 9485) | xpath_string eval_string_concat(const xpath_context& c, const xpath_st...
    method xpath_string (line 9534) | xpath_string eval_string(const xpath_context& c, const xpath_stack& st...
    method xpath_node_set_raw (line 9767) | xpath_node_set_raw eval_node_set(const xpath_context& c, const xpath_s...
    method optimize (line 9895) | void optimize(xpath_allocator* alloc)
    method is_posinv_expr (line 9959) | bool is_posinv_expr() const
    method is_posinv_step (line 9990) | bool is_posinv_step() const
    method xpath_value_type (line 10005) | xpath_value_type rettype() const
  type xpath_parser (line 10011) | struct xpath_parser
    method throw_error (line 10027) | void throw_error(const char* message)
    method throw_error_oom (line 10039) | void throw_error_oom()
    method char_t (line 10057) | const char_t* alloc_string(const xpath_lexer_string& value)
    method xpath_ast_node (line 10075) | xpath_ast_node* parse_function_helper(ast_type_t type0, ast_type_t typ...
    method xpath_ast_node (line 10084) | xpath_ast_node* parse_function(const xpath_lexer_string& name, size_t ...
    method axis_t (line 10197) | axis_t parse_axis_name(const xpath_lexer_string& name, bool& specified)
    method nodetest_t (line 10265) | nodetest_t parse_node_test_type(const xpath_lexer_string& name)
    method xpath_ast_node (line 10301) | xpath_ast_node* parse_primary_expression()
    method xpath_ast_node (line 10406) | xpath_ast_node* parse_filter_expression()
    method xpath_ast_node (line 10434) | xpath_ast_node* parse_step(xpath_ast_node* set)
    method xpath_ast_node (line 10578) | xpath_ast_node* parse_relative_location_path(xpath_ast_node* set)
    method xpath_ast_node (line 10598) | xpath_ast_node* parse_location_path()
    method xpath_ast_node (line 10634) | xpath_ast_node* parse_path_or_unary_expression()
    type binary_op_t (line 10693) | struct binary_op_t
      method binary_op_t (line 10699) | binary_op_t(): asttype(ast_unknown), rettype(xpath_type_none), prece...
      method binary_op_t (line 10703) | binary_op_t(ast_type_t asttype_, xpath_value_type rettype_, int prec...
      method binary_op_t (line 10707) | static binary_op_t parse(xpath_lexer& lexer)
    method xpath_ast_node (line 10759) | xpath_ast_node* parse_expression_rec(xpath_ast_node* lhs, int limit)
    method xpath_ast_node (line 10807) | xpath_ast_node* parse_expression()
    method xpath_parser (line 10812) | xpath_parser(const char_t* query, xpath_variable_set* variables, xpath...
    method xpath_ast_node (line 10816) | xpath_ast_node* parse()
    method xpath_ast_node (line 10829) | static xpath_ast_node* parse(const char_t* query, xpath_variable_set* ...
  type xpath_query_impl (line 10843) | struct xpath_query_impl
    method xpath_query_impl (line 10845) | static xpath_query_impl* create()
    method destroy (line 10852) | static void destroy(void* ptr)
    method xpath_query_impl (line 10863) | xpath_query_impl(): root(0), alloc(&block)
  function PUGI__FN (line 10874) | PUGI__FN xpath_string evaluate_string_impl(xpath_query_impl* impl, const...
  function PUGI__FN (line 10887) | PUGI__FN impl::xpath_ast_node* evaluate_node_set_prepare(xpath_query_imp...
  function PUGI__NS_END (line 10905) | PUGI__NS_END
  function PUGI__FN (line 11333) | PUGI__FN xpath_query::~xpath_query()
  function PUGI__FN (line 11338) | PUGI__FN xpath_value_type xpath_query::return_type() const
  function PUGI__FN (line 11345) | PUGI__FN bool xpath_query::evaluate_boolean(const xpath_node& n) const
  function PUGI__FN (line 11359) | PUGI__FN double xpath_query::evaluate_number(const xpath_node& n) const
  function PUGI__FN (line 11374) | PUGI__FN string_t xpath_query::evaluate_string(const xpath_node& n) const
  function PUGI__FN (line 11384) | PUGI__FN size_t xpath_query::evaluate_string(char_t* buffer, size_t capa...
  function PUGI__FN (line 11404) | PUGI__FN xpath_node_set xpath_query::evaluate_node_set(const xpath_node&...
  function PUGI__FN (line 11421) | PUGI__FN xpath_node xpath_query::evaluate_node(const xpath_node& n) const
  function PUGI__FN (line 11438) | PUGI__FN const xpath_parse_result& xpath_query::result() const
  function PUGI__FN (line 11443) | PUGI__FN static void unspecified_bool_xpath_query(xpath_query***)
  function PUGI__FN (line 11447) | PUGI__FN xpath_query::operator xpath_query::unspecified_bool_type() const
  function PUGI__FN (line 11452) | PUGI__FN bool xpath_query::operator!() const
  function PUGI__FN (line 11457) | PUGI__FN xpath_node xml_node::select_node(const char_t* query, xpath_var...
  function PUGI__FN (line 11463) | PUGI__FN xpath_node xml_node::select_node(const xpath_query& query) const
  function PUGI__FN (line 11468) | PUGI__FN xpath_node_set xml_node::select_nodes(const char_t* query, xpat...
  function PUGI__FN (line 11474) | PUGI__FN xpath_node_set xml_node::select_nodes(const xpath_query& query)...
  function PUGI__FN (line 11479) | PUGI__FN xpath_node xml_node::select_single_node(const char_t* query, xp...
  function PUGI__FN (line 11485) | PUGI__FN xpath_node xml_node::select_single_node(const xpath_query& quer...

FILE: CodeTool/Src/pugixml/pugixml.hpp
  type pugi (line 84) | namespace pugi
    type xml_node_type (line 99) | enum xml_node_type
    type xml_encoding (line 172) | enum xml_encoding
    type xml_attribute_struct (line 211) | struct xml_attribute_struct
    type xml_node_struct (line 212) | struct xml_node_struct
    class xml_node_iterator (line 214) | class xml_node_iterator
    class xml_attribute_iterator (line 215) | class xml_attribute_iterator
    class xml_named_node_iterator (line 216) | class xml_named_node_iterator
    class xml_tree_walker (line 218) | class xml_tree_walker
    type xml_parse_result (line 220) | struct xml_parse_result
    class xml_node (line 222) | class xml_node
    class xml_text (line 224) | class xml_text
    class xpath_node (line 227) | class xpath_node
    class xpath_node_set (line 228) | class xpath_node_set
    class xpath_query (line 229) | class xpath_query
    class xpath_variable_set (line 230) | class xpath_variable_set
    class xml_object_range (line 234) | class xml_object_range
      method xml_object_range (line 240) | xml_object_range(It b, It e): _begin(b), _end(e)
      method It (line 244) | It begin() const { return _begin; }
      method It (line 245) | It end() const { return _end; }
    function xml_writer (line 252) | class PUGIXML_CLASS xml_writer
    function xml_writer_file (line 262) | class PUGIXML_CLASS xml_writer_file: public xml_writer
    function xml_writer_stream (line 276) | class PUGIXML_CLASS xml_writer_stream: public xml_writer
    function xml_attribute (line 292) | class PUGIXML_CLASS xml_attribute
    function xml_node (line 394) | class PUGIXML_CLASS xml_node
    function xml_text (line 646) | class PUGIXML_CLASS xml_text
    function xml_node_iterator (line 731) | class PUGIXML_CLASS xml_node_iterator
    function xml_attribute_iterator (line 773) | class PUGIXML_CLASS xml_attribute_iterator
    function xml_named_node_iterator (line 815) | class PUGIXML_CLASS xml_named_node_iterator
    function xml_tree_walker (line 858) | class PUGIXML_CLASS xml_tree_walker
    type xml_parse_status (line 884) | enum xml_parse_status
    function xml_parse_result (line 911) | struct PUGIXML_CLASS xml_parse_result
    function xml_document (line 933) | class PUGIXML_CLASS xml_document: public xml_node
    type xpath_value_type (line 1006) | enum xpath_value_type
    function xpath_parse_result (line 1016) | struct PUGIXML_CLASS xpath_parse_result
    function xpath_variable (line 1035) | class PUGIXML_CLASS xpath_variable
    function xpath_variable_set (line 1070) | class PUGIXML_CLASS xpath_variable_set
    function xpath_query (line 1101) | class PUGIXML_CLASS xpath_query
    class PUGIXML_CLASS (line 1167) | class PUGIXML_CLASS
    function xpath_node (line 1185) | class PUGIXML_CLASS xpath_node
    function xpath_node_set (line 1226) | class PUGIXML_CLASS xpath_node_set
  type pugi (line 96) | namespace pugi
    type xml_node_type (line 99) | enum xml_node_type
    type xml_encoding (line 172) | enum xml_encoding
    type xml_attribute_struct (line 211) | struct xml_attribute_struct
    type xml_node_struct (line 212) | struct xml_node_struct
    class xml_node_iterator (line 214) | class xml_node_iterator
    class xml_attribute_iterator (line 215) | class xml_attribute_iterator
    class xml_named_node_iterator (line 216) | class xml_named_node_iterator
    class xml_tree_walker (line 218) | class xml_tree_walker
    type xml_parse_result (line 220) | struct xml_parse_result
    class xml_node (line 222) | class xml_node
    class xml_text (line 224) | class xml_text
    class xpath_node (line 227) | class xpath_node
    class xpath_node_set (line 228) | class xpath_node_set
    class xpath_query (line 229) | class xpath_query
    class xpath_variable_set (line 230) | class xpath_variable_set
    class xml_object_range (line 234) | class xml_object_range
      method xml_object_range (line 240) | xml_object_range(It b, It e): _begin(b), _end(e)
      method It (line 244) | It begin() const { return _begin; }
      method It (line 245) | It end() const { return _end; }
    function xml_writer (line 252) | class PUGIXML_CLASS xml_writer
    function xml_writer_file (line 262) | class PUGIXML_CLASS xml_writer_file: public xml_writer
    function xml_writer_stream (line 276) | class PUGIXML_CLASS xml_writer_stream: public xml_writer
    function xml_attribute (line 292) | class PUGIXML_CLASS xml_attribute
    function xml_node (line 394) | class PUGIXML_CLASS xml_node
    function xml_text (line 646) | class PUGIXML_CLASS xml_text
    function xml_node_iterator (line 731) | class PUGIXML_CLASS xml_node_iterator
    function xml_attribute_iterator (line 773) | class PUGIXML_CLASS xml_attribute_iterator
    function xml_named_node_iterator (line 815) | class PUGIXML_CLASS xml_named_node_iterator
    function xml_tree_walker (line 858) | class PUGIXML_CLASS xml_tree_walker
    type xml_parse_status (line 884) | enum xml_parse_status
    function xml_parse_result (line 911) | struct PUGIXML_CLASS xml_parse_result
    function xml_document (line 933) | class PUGIXML_CLASS xml_document: public xml_node
    type xpath_value_type (line 1006) | enum xpath_value_type
    function xpath_parse_result (line 1016) | struct PUGIXML_CLASS xpath_parse_result
    function xpath_variable (line 1035) | class PUGIXML_CLASS xpath_variable
    function xpath_variable_set (line 1070) | class PUGIXML_CLASS xpath_variable_set
    function xpath_query (line 1101) | class PUGIXML_CLASS xpath_query
    class PUGIXML_CLASS (line 1167) | class PUGIXML_CLASS
    function xpath_node (line 1185) | class PUGIXML_CLASS xpath_node
    function xpath_node_set (line 1226) | class PUGIXML_CLASS xpath_node_set
  type std (line 1315) | namespace std
  type std (line 1325) | namespace std

FILE: Editor/Sources/o2Editor/Actions/ActionsList.cpp
  type Editor (line 7) | namespace Editor
    function String (line 31) | String ActionsList::GetLastActionName() const
    function String (line 39) | String ActionsList::GetNextForwardActionName() const

FILE: Editor/Sources/o2Editor/Actions/ActionsList.h
  function namespace (line 5) | namespace Editor

FILE: Editor/Sources/o2Editor/Actions/Create.cpp
  type Editor (line 9) | namespace Editor
    function String (line 25) | String CreateAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Create.h
  function namespace (line 8) | namespace o2
  function String (line 34) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/Delete.cpp
  type Editor (line 10) | namespace Editor
    function String (line 61) | String DeleteAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Delete.h
  function namespace (line 9) | namespace o2
  function String (line 46) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/Enable.cpp
  type Editor (line 7) | namespace Editor
    function String (line 18) | String EnableAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Enable.h
  function namespace (line 8) | namespace o2
  function String (line 32) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/IAction.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Actions/Lock.cpp
  type Editor (line 7) | namespace Editor
    function String (line 18) | String LockAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Lock.h
  function namespace (line 8) | namespace o2
  function String (line 32) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/PropertyChange.cpp
  type Editor (line 9) | namespace Editor
    function String (line 24) | String PropertyChangeAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/PropertyChange.h
  function namespace (line 7) | namespace o2
  function String (line 37) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/Reparent.cpp
  type Editor (line 9) | namespace Editor
    function String (line 49) | String ReparentAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Reparent.h
  function namespace (line 9) | namespace o2
  type ObjectInfo (line 25) | struct ObjectInfo
  function String (line 57) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/Select.cpp
  type Editor (line 7) | namespace Editor
    function String (line 19) | String SelectAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Select.h
  function namespace (line 8) | namespace o2
  function String (line 32) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Actions/Transform.cpp
  type Editor (line 7) | namespace Editor
    function String (line 23) | String TransformAction::GetName() const

FILE: Editor/Sources/o2Editor/Actions/Transform.h
  function namespace (line 9) | namespace o2
  type Transform (line 22) | struct Transform
  function String (line 45) | String GetName() const override;

FILE: Editor/Sources/o2Editor/Dialogs/ColorPickerDlg.cpp
  type Editor (line 21) | namespace Editor
  function ENUM_META (line 461) | ENUM_META(Editor::ColorPickerDlg::ParameterType, Editor__ColorPickerDlg_...

FILE: Editor/Sources/o2Editor/Dialogs/ColorPickerDlg.h
  function namespace (line 12) | namespace o2
  function namespace (line 26) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/CurveEditorDlg.cpp
  type Editor (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/CurveEditorDlg.h
  function namespace (line 11) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/EditNameDlg.cpp
  type Editor (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/EditNameDlg.h
  function namespace (line 10) | namespace o2
  function namespace (line 20) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/KeyEditDlg.cpp
  type Editor (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/KeyEditDlg.h
  function namespace (line 7) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/System/Linux/OpenSaveDialog.cpp
  type Editor (line 6) | namespace Editor
    function String (line 8) | String GetOpenFileNameDialog(const String& title, const Map<String, St...
    function String (line 13) | String GetSaveFileNameDialog(const String& title, const Map<String, St...

FILE: Editor/Sources/o2Editor/Dialogs/System/OpenSaveDialog.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/System/Windows/OpenSaveDialog.cpp
  type Editor (line 6) | namespace Editor
    function String (line 8) | String GetOpenFileNameDialog(const String& title, const Map<String, St...
    function String (line 57) | String GetSaveFileNameDialog(const String& title, const Map<String, St...

FILE: Editor/Sources/o2Editor/Dialogs/YesNoCancelDlg.cpp
  type Editor (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Dialogs/YesNoCancelDlg.h
  function namespace (line 10) | namespace o2
  function namespace (line 18) | namespace Editor

FILE: Editor/Sources/o2Editor/EditorApplication.cpp
  type Editor (line 42) | namespace Editor
    function String (line 51) | const String& EditorApplication::GetLoadedSceneName() const

FILE: Editor/Sources/o2Editor/EditorApplication.h
  function namespace (line 11) | namespace o2
  function String (line 47) | const String& GetLoadedSceneName() const;

FILE: Editor/Sources/o2Editor/EditorConfig.cpp
  type Editor (line 16) | namespace Editor
    function Vec2I (line 134) | Vec2I EditorConfig::ProjectConfig::GetWindowSize() const
    function Vec2I (line 147) | Vec2I EditorConfig::ProjectConfig::GetWindowPosition() const
    function WindowsLayout (line 173) | WindowsLayout EditorConfig::ProjectConfig::GetLayout() const
    function String (line 186) | String EditorConfig::ProjectConfig::GetLastLoadedScene() const
    function WindowsLayout (line 201) | WindowsLayout EditorConfig::GlobalConfig::GetDefaultLayout() const
    function EditorLayoutsMap (line 214) | EditorLayoutsMap EditorConfig::GlobalConfig::GetAvailableLayouts() const

FILE: Editor/Sources/o2Editor/EditorConfig.h
  function namespace (line 12) | namespace o2
  function Vec2I (line 85) | Vec2I GetWindowPosition() const;

FILE: Editor/Sources/o2Editor/MenuPanel.cpp
  type Editor (line 41) | namespace Editor

FILE: Editor/Sources/o2Editor/MenuPanel.h
  function namespace (line 11) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ActorProperty.cpp
  type Editor (line 15) | namespace Editor
    function ActorProperty (line 29) | ActorProperty& ActorProperty::operator=(const ActorProperty& other)
    function Type (line 62) | const Type* ActorProperty::GetValueType() const
    function Type (line 67) | const Type* ActorProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/ActorProperty.h
  function namespace (line 9) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/AssetProperty.cpp
  type Editor (line 11) | namespace Editor
    function Type (line 23) | const Type* AssetProperty::GetValueType() const
    function Type (line 28) | const Type* AssetProperty::GetValueTypeStatic()
    function AssetProperty (line 33) | AssetProperty& AssetProperty::operator=(const AssetProperty& other)
    function WString (line 205) | WString AssetProperty::GetCaption() const

FILE: Editor/Sources/o2Editor/Properties/Basic/AssetProperty.h
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/BooleanProperty.cpp
  type Editor (line 9) | namespace Editor
    function BooleanProperty (line 21) | BooleanProperty& BooleanProperty::operator=(const BooleanProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/BooleanProperty.h
  function namespace (line 8) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/BorderFloatProperty.cpp
  type Editor (line 6) | namespace Editor
    function BorderFProperty (line 18) | BorderFProperty& BorderFProperty::operator=(const BorderFProperty& other)
    function BorderF (line 169) | BorderF BorderFProperty::GetCommonValue() const
    function Type (line 181) | const Type* BorderFProperty::GetValueType() const
    function Type (line 186) | const Type* BorderFProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/BorderFloatProperty.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/BorderIntProperty.cpp
  type Editor (line 6) | namespace Editor
    function BorderIProperty (line 18) | BorderIProperty& BorderIProperty::operator=(const BorderIProperty& other)
    function BorderI (line 169) | BorderI BorderIProperty::GetCommonValue() const
    function Type (line 181) | const Type* BorderIProperty::GetValueType() const
    function Type (line 186) | const Type* BorderIProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/BorderIntProperty.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ColorGradientProperty.cpp
  type Editor (line 10) | namespace Editor
    function ColorGradientProperty (line 23) | ColorGradientProperty& ColorGradientProperty::operator=(const ColorGra...
    function UInt64 (line 148) | UInt64 ColorGradientProperty::FindSelectedHandle()
  function ENUM_META (line 337) | ENUM_META(Editor::ColorGradientProperty::HandleType, Editor__ColorGradie...

FILE: Editor/Sources/o2Editor/Properties/Basic/ColorGradientProperty.h
  function namespace (line 10) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ColorProperty.cpp
  type Editor (line 10) | namespace Editor
    function ColorProperty (line 22) | ColorProperty& ColorProperty::operator=(const ColorProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/ColorProperty.h
  function namespace (line 9) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ComponentProperty.cpp
  type Editor (line 17) | namespace Editor
    function ComponentProperty (line 30) | ComponentProperty& ComponentProperty::operator=(const ComponentPropert...
    function Type (line 64) | const Type* ComponentProperty::GetValueType() const
    function Type (line 69) | const Type* ComponentProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/ComponentProperty.h
  function namespace (line 8) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/CurveProperty.cpp
  type Editor (line 9) | namespace Editor
    function CurveProperty (line 21) | CurveProperty& CurveProperty::operator=(const CurveProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/CurveProperty.h
  function namespace (line 9) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/EnumProperty.cpp
  type Editor (line 6) | namespace Editor
    function EnumProperty (line 18) | EnumProperty& EnumProperty::operator=(const EnumProperty& other)
    function Type (line 35) | const Type* EnumProperty::GetValueType() const
    function Type (line 56) | const Type* EnumProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/EnumProperty.h
  function namespace (line 5) | namespace o2
  function namespace (line 10) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/FloatProperty.cpp
  type Editor (line 10) | namespace Editor
    function FloatProperty (line 57) | FloatProperty& FloatProperty::operator=(const FloatProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/FloatProperty.h
  function namespace (line 9) | namespace o2
  function Ref (line 32) | const Ref<EditBox>& GetEditBox() const;

FILE: Editor/Sources/o2Editor/Properties/Basic/FunctionProperty.cpp
  type Editor (line 17) | namespace Editor
    function FunctionProperty (line 31) | FunctionProperty& FunctionProperty::operator=(const FunctionProperty& ...
    function Type (line 424) | const Type* FunctionProperty::GetValueType() const
    function Type (line 429) | const Type* FunctionProperty::GetValueTypeStatic()
    function WString (line 457) | WString FunctionProperty::GetCaption() const

FILE: Editor/Sources/o2Editor/Properties/Basic/FunctionProperty.h
  function namespace (line 9) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/IntegerProperty.cpp
  type Editor (line 8) | namespace Editor
    function IntegerProperty (line 20) | IntegerProperty& IntegerProperty::operator=(const IntegerProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/IntegerProperty.h
  function namespace (line 9) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ObjectProperty.cpp
  type Editor (line 14) | namespace Editor
    function ObjectProperty (line 28) | ObjectProperty& ObjectProperty::operator=(const ObjectProperty& other)
    function Type (line 142) | const Type* ObjectProperty::GetValueType() const
    function Type (line 147) | const Type* ObjectProperty::GetValueTypeStatic()
    function WString (line 171) | WString ObjectProperty::GetCaption() const

FILE: Editor/Sources/o2Editor/Properties/Basic/ObjectProperty.h
  function namespace (line 9) | namespace o2
  function WString (line 52) | WString GetCaption() const override;

FILE: Editor/Sources/o2Editor/Properties/Basic/ObjectPtrProperty.cpp
  type Editor (line 19) | namespace Editor
    function ObjectPtrProperty (line 33) | ObjectPtrProperty& ObjectPtrProperty::operator=(const ObjectPtrPropert...
    function Type (line 187) | const Type* ObjectPtrProperty::GetValueType() const
    function Type (line 192) | const Type* ObjectPtrProperty::GetValueTypeStatic()
    function WString (line 216) | WString ObjectPtrProperty::GetCaption() const
    function IObject (line 384) | IObject* ObjectPtrProperty::GetProxy(const Ref<IAbstractValueProxy>& p...

FILE: Editor/Sources/o2Editor/Properties/Basic/ObjectPtrProperty.h
  function namespace (line 9) | namespace o2
  function WString (line 56) | WString GetCaption() const override;

FILE: Editor/Sources/o2Editor/Properties/Basic/RectangleFloatProperty.cpp
  type Editor (line 6) | namespace Editor
    function RectFProperty (line 18) | RectFProperty& RectFProperty::operator=(const RectFProperty& other)
    function RectF (line 169) | RectF RectFProperty::GetCommonValue() const
    function Type (line 181) | const Type* RectFProperty::GetValueType() const
    function Type (line 186) | const Type* RectFProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/RectangleFloatProperty.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/RectangleIntProperty.cpp
  type Editor (line 6) | namespace Editor
    function RectIProperty (line 18) | RectIProperty& RectIProperty::operator=(const RectIProperty& other)
    function RectI (line 169) | RectI RectIProperty::GetCommonValue() const
    function Type (line 181) | const Type* RectIProperty::GetValueType() const
    function Type (line 186) | const Type* RectIProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/RectangleIntProperty.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/SceneLayerRefProperty.cpp
  type Editor (line 7) | namespace Editor
    function SceneLayerRefProperty (line 46) | SceneLayerRefProperty& SceneLayerRefProperty::operator=(const SceneLay...

FILE: Editor/Sources/o2Editor/Properties/Basic/SceneLayerRefProperty.h
  function namespace (line 6) | namespace o2
  function IsSelectedInheritedValue (line 36) | bool IsSelectedInheritedValue() const;

FILE: Editor/Sources/o2Editor/Properties/Basic/SceneLayersListProperty.cpp
  type Editor (line 7) | namespace Editor
    function SceneLayersListProperty (line 19) | SceneLayersListProperty& SceneLayersListProperty::operator=(const Scen...

FILE: Editor/Sources/o2Editor/Properties/Basic/SceneLayersListProperty.h
  function namespace (line 6) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/ScriptValueProperty.cpp
  type Editor (line 15) | namespace Editor
    function ScriptValueProperty (line 29) | ScriptValueProperty& ScriptValueProperty::operator=(const ScriptValueP...
    function Type (line 408) | const Type* ScriptValueProperty::GetValueType() const
    function Type (line 413) | const Type* ScriptValueProperty::GetValueTypeStatic()
    function WString (line 434) | WString ScriptValueProperty::GetCaption() const

FILE: Editor/Sources/o2Editor/Properties/Basic/ScriptValueProperty.h
  function namespace (line 10) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/StringProperty.cpp
  type Editor (line 10) | namespace Editor
    function StringProperty (line 22) | StringProperty& StringProperty::operator=(const StringProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/StringProperty.h
  function namespace (line 7) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/TagProperty.cpp
  type Editor (line 8) | namespace Editor
    function TagsProperty (line 20) | TagsProperty& TagsProperty::operator=(const TagsProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/TagProperty.h
  function namespace (line 6) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/Vector2FloatProperty.cpp
  type Editor (line 6) | namespace Editor
    function Vec2FProperty (line 18) | Vec2FProperty& Vec2FProperty::operator=(const Vec2FProperty& other)
    function Vec2F (line 136) | Vec2F Vec2FProperty::GetCommonValue() const
    function Type (line 156) | const Type* Vec2FProperty::GetValueType() const
    function Type (line 161) | const Type* Vec2FProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/Vector2FloatProperty.h
  function namespace (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/Vector2IntProperty.cpp
  type Editor (line 6) | namespace Editor
    function Vec2I (line 136) | Vec2I Vec2IProperty::GetCommonValue() const
    function Type (line 146) | const Type* Vec2IProperty::GetValueType() const
    function Type (line 151) | const Type* Vec2IProperty::GetValueTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Basic/Vector2IntProperty.h
  function namespace (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Basic/VectorProperty.cpp
  type Editor (line 13) | namespace Editor
    function VectorProperty (line 27) | VectorProperty& VectorProperty::operator=(const VectorProperty& other)
    function Type (line 265) | const Type* VectorProperty::GetValueType() const
    function Type (line 296) | const Type* VectorProperty::GetSpecializedType() const
    function WString (line 314) | WString VectorProperty::GetCaption() const
    function String (line 479) | String VectorProperty::GetElementCaption(int idx, const Vector<Pair<Re...
    function String (line 504) | String VectorProperty::TryGetObjectName(void* object, const Type& type...

FILE: Editor/Sources/o2Editor/Properties/Basic/VectorProperty.h
  function namespace (line 9) | namespace o2
  function WString (line 51) | WString GetCaption() const override;
  type Vector (line 213) | typedef const Vector<Pair<Ref<IAbstractValueProxy>, Ref<IAbstractValuePr...

FILE: Editor/Sources/o2Editor/Properties/Basic/WStringProperty.cpp
  type Editor (line 6) | namespace Editor
    function WStringProperty (line 18) | WStringProperty& WStringProperty::operator=(const WStringProperty& other)

FILE: Editor/Sources/o2Editor/Properties/Basic/WStringProperty.h
  function namespace (line 8) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/IObjectPropertiesViewer.cpp
  type Editor (line 8) | namespace Editor
    function Type (line 72) | const Type* IObjectPropertiesViewer::GetViewingObjectType() const
    function Type (line 80) | const Type* IObjectPropertiesViewer::GetViewingObjectTypeStatic()
    function WString (line 121) | const WString& IObjectPropertiesViewer::GetCaption() const

FILE: Editor/Sources/o2Editor/Properties/IObjectPropertiesViewer.h
  function namespace (line 10) | namespace o2
  function namespace (line 15) | namespace Editor
  type Vector (line 201) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 202) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;
  type Vector (line 203) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp3;
  type Vector (line 204) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp4;
  function CLASS_BASES_META (line 233) | META_TEMPLATES(typename _object_type)
  function CLASS_FIELDS_META (line 239) | META_TEMPLATES(typename _object_type)
  function CLASS_METHODS_META (line 245) | META_TEMPLATES(typename _object_type)

FILE: Editor/Sources/o2Editor/Properties/IPropertyField.cpp
  type Editor (line 13) | namespace Editor
    function IPropertyField (line 30) | IPropertyField& IPropertyField::operator=(const IPropertyField& other)
    function WString (line 89) | WString IPropertyField::GetCaption() const
    function Type (line 130) | const Type* IPropertyField::GetValueType() const
    function Type (line 135) | const Type* IPropertyField::GetValueTypeStatic()
    function String (line 150) | const String& IPropertyField::GetValuePath() const
    function String (line 199) | String IPropertyField::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Properties/IPropertyField.h
  function namespace (line 12) | namespace o2
  function namespace (line 18) | namespace Editor
  function IPropertyField (line 422) | IPropertyField(refCounter)
  function CLASS_BASES_META (line 665) | META_TEMPLATES(typename _type)
  function CLASS_FIELDS_META (line 671) | META_TEMPLATES(typename _type)
  function CLASS_METHODS_META (line 678) | META_TEMPLATES(typename _type)

FILE: Editor/Sources/o2Editor/Properties/ObjectViewer.cpp
  type Editor (line 7) | namespace Editor
    function Type (line 70) | const Type* ObjectViewer::GetViewingObjectType() const
    function String (line 78) | String ObjectViewer::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Properties/ObjectViewer.h
  function namespace (line 6) | namespace Editor
  type Vector (line 84) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Properties/Objects/Actors/CameraActorViewer.cpp
  type Editor (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Objects/Actors/CameraActorViewer.h
  function namespace (line 8) | namespace o2
  function namespace (line 13) | namespace Editor
  type Vector (line 71) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Properties/Objects/Assets/ImageAssetViewer.cpp
  type Editor (line 17) | namespace Editor
    function Type (line 19) | const Type* ImageAssetViewer::GetViewingObjectType() const
    function Type (line 24) | const Type* ImageAssetViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Objects/Assets/ImageAssetViewer.h
  function namespace (line 8) | namespace o2
  function namespace (line 14) | namespace Editor
  type Vector (line 68) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 69) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/Assets/VectorFontAssetViewer.cpp
  type Editor (line 7) | namespace Editor
    function Type (line 9) | const Type* VectorFontAssetViewer::GetViewingObjectType() const
    function Type (line 14) | const Type* VectorFontAssetViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Objects/Assets/VectorFontAssetViewer.h
  function namespace (line 7) | namespace o2
  function namespace (line 12) | namespace Editor
  type Vector (line 56) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 57) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/AnimationStateViewer.cpp
  type Editor (line 9) | namespace Editor
    function Type (line 11) | const Type* AnimationStateViewer::GetViewingObjectType() const
    function Type (line 19) | const Type* AnimationStateViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/AnimationStateViewer.h
  function namespace (line 8) | namespace o2
  function OnFree (line 48) | void OnFree() override;
  type Vector (line 85) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/MeshComponentViewer.cpp
  type Editor (line 7) | namespace Editor
    function MeshComponentViewer (line 25) | MeshComponentViewer& MeshComponentViewer::operator=(const MeshComponen...
    function String (line 153) | const String& MeshComponentViewer::SceneLayer::GetName() const
    function String (line 159) | const String& MeshComponentViewer::SceneLayer::GetIconName() const

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/MeshComponentViewer.h
  function namespace (line 13) | namespace o2
  type SceneLayer (line 41) | struct SceneLayer
  function GetOrder (line 54) | int GetOrder() const override;
  type Vector (line 116) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 117) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/ParticlesEmitterComponentViewer.cpp
  type Editor (line 7) | namespace Editor
    function ParticlesEmitterComponentViewer (line 16) | ParticlesEmitterComponentViewer& ParticlesEmitterComponentViewer::oper...
    function String (line 197) | const String& ParticlesEmitterComponentViewer::SceneLayer::GetName() c...
    function String (line 203) | const String& ParticlesEmitterComponentViewer::SceneLayer::GetIconName...

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/ParticlesEmitterComponentViewer.h
  function namespace (line 9) | namespace o2
  type SceneLayer (line 37) | struct SceneLayer
  function GetOrder (line 49) | int GetOrder() const override;
  type Vector (line 117) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 118) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;
  type Vector (line 119) | typedef Vector<Pair<ParticlesEmitterComponent*, ParticlesEmitterComponen...

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshBoneComponentViewer.cpp
  type Editor (line 7) | namespace Editor
    function SkinningMeshBoneComponentViewer (line 20) | SkinningMeshBoneComponentViewer& SkinningMeshBoneComponentViewer::oper...

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshBoneComponentViewer.h
  function namespace (line 10) | namespace o2
  function OnPropertiesEnabled (line 49) | void OnPropertiesEnabled() override;
  type Vector (line 71) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 72) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshComponentViewer.cpp
  type Editor (line 9) | namespace Editor
    function SkinningMeshComponentViewer (line 28) | SkinningMeshComponentViewer& SkinningMeshComponentViewer::operator=(co...

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshComponentViewer.h
  function namespace (line 15) | namespace o2
  type SkeletonTool (line 25) | struct SkeletonTool
  function OnPropertiesEnabled (line 66) | void OnPropertiesEnabled() override;
  type Vector (line 107) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 108) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshEditorLayer.cpp
  type Editor (line 5) | namespace Editor
    function String (line 36) | const String& SkinningMeshEditorLayer::GetName() const
    function String (line 42) | const String& SkinningMeshEditorLayer::GetIconName() const

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SkinnedMesh/SkinningMeshEditorLayer.h
  function namespace (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SplineColliderViewer.cpp
  type Editor (line 8) | namespace Editor
    function SplineColliderViewer (line 21) | SplineColliderViewer& SplineColliderViewer::operator=(const SplineColl...

FILE: Editor/Sources/o2Editor/Properties/Objects/Components/SplineColliderViewer.h
  function OnPropertiesEnabled (line 43) | void OnPropertiesEnabled() override;
  type Vector (line 65) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 66) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/DefaultObjectPropertiesViewer.cpp
  type Editor (line 8) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Objects/DefaultObjectPropertiesViewer.h
  function namespace (line 5) | namespace Editor
  type Vector (line 40) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Properties/Objects/ParticlesSplineEffectViewer.cpp
  type Editor (line 12) | namespace Editor
    function Type (line 25) | const Type* ParticlesSplineEffectViewer::GetViewingObjectType() const
    function Type (line 30) | const Type* ParticlesSplineEffectViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Properties/Objects/ParticlesSplineEffectViewer.h
  function namespace (line 7) | namespace o2
  function OnPropertiesEnabled (line 48) | void OnPropertiesEnabled() override;
  type Vector (line 71) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 72) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/SpriteViewer.cpp
  type Editor (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Objects/SpriteViewer.h
  function namespace (line 9) | namespace o2
  function namespace (line 15) | namespace Editor
  type Vector (line 94) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 95) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Properties/Objects/TextViewer.cpp
  type Editor (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/Objects/TextViewer.h
  function namespace (line 9) | namespace o2
  function namespace (line 15) | namespace Editor
  type Vector (line 77) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Properties/Properties.cpp
  type Editor (line 28) | namespace Editor
    function Type (line 77) | const Type* Properties::GetClosesBasedTypeObjectViewer(const Type* typ...
    function Type (line 525) | const Type* Properties::GetFieldPropertyType(const Type* valueType) const

FILE: Editor/Sources/o2Editor/Properties/Properties.h
  function namespace (line 12) | namespace o2
  function namespace (line 21) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/PropertiesContext.cpp
  type Editor (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Properties/PropertiesContext.h
  function namespace (line 9) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Tools/CustomFrameTool.cpp
  type Editor (line 6) | namespace Editor
    function String (line 47) | const String& CustomFrameTool::SceneLayer::GetName() const
    function String (line 53) | const String& CustomFrameTool::SceneLayer::GetIconName() const
    function Basis (line 63) | const Basis& CustomFrameTool::GetFrame() const
    function String (line 74) | String CustomFrameTool::CustomFrameTool::GetPanelIcon() const

FILE: Editor/Sources/o2Editor/Tools/CustomFrameTool.h
  type CustomFrameTool (line 12) | struct CustomFrameTool
  type SceneLayer (line 17) | struct SceneLayer
  function GetOrder (line 29) | int GetOrder() const override;
  function Basis (line 61) | const Basis& GetFrame() const;

FILE: Editor/Sources/o2Editor/Tools/FrameTool.cpp
  type Editor (line 16) | namespace Editor
    function String (line 162) | String FrameTool::GetPanelIcon() const
    function ShortcutKeys (line 167) | ShortcutKeys FrameTool::GetShortcut() const
    function Basis (line 755) | Basis FrameTool::GetLeftTopHandleTransformed(const Vec2F& position)
    function Basis (line 793) | Basis FrameTool::GetLeftHandleTransformed(const Vec2F& position)
    function Basis (line 817) | Basis FrameTool::GetLeftBottomHandleTransformed(const Vec2F& position)
    function Basis (line 861) | Basis FrameTool::GetTopHandleTransformed(const Vec2F& position)
    function Basis (line 884) | Basis FrameTool::GetBottomHandleTransformed(const Vec2F& position)
    function Basis (line 908) | Basis FrameTool::GetRightTopHandleTransformed(const Vec2F& position)
    function Basis (line 939) | Basis FrameTool::GetRightHandleTransformed(const Vec2F& position)
    function Basis (line 962) | Basis FrameTool::GetRightBottomHandleTransformed(const Vec2F& position)
    function Basis (line 1000) | Basis FrameTool::GetLeftTopAnchorHandleTransformed(const Vec2F& position)
    function Basis (line 1022) | Basis FrameTool::GetLeftBottomAnchorHandleTransformed(const Vec2F& pos...
    function Basis (line 1044) | Basis FrameTool::GetRightTopAnchorHandleTransformed(const Vec2F& posit...
    function Basis (line 1065) | Basis FrameTool::GetRightBottomAnchorHandleTransformed(const Vec2F& po...
    function Basis (line 1087) | Basis FrameTool::GetAnchorsCenterHandleTransformed(const Vec2F& position)
    function Vec2F (line 1095) | Vec2F FrameTool::CheckFrameSnapping(const Vec2F& point, const Basis& f...
    function Vec2F (line 1143) | Vec2F FrameTool::CheckPivotSnapping(const Vec2F& point)
    function Vec2F (line 1148) | Vec2F FrameTool::CheckAnchorCenterSnapping(const Vec2F& point)
    function Vec2F (line 1158) | Vec2F FrameTool::CheckAnchorLeftTopSnapping(const Vec2F& point)
    function Vec2F (line 1177) | Vec2F FrameTool::CheckAnchorLeftBottomSnapping(const Vec2F& point)
    function Vec2F (line 1196) | Vec2F FrameTool::CheckAnchorRightTopSnapping(const Vec2F& point)
    function Vec2F (line 1215) | Vec2F FrameTool::CheckAnchorRightBottomSnapping(const Vec2F& point)
    function Vec2F (line 1234) | Vec2F FrameTool::CheckTopSnapping(const Vec2F& point)
    function Vec2F (line 1247) | Vec2F FrameTool::CheckBottomSnapping(const Vec2F& point)
    function Vec2F (line 1260) | Vec2F FrameTool::CheckLeftSnapping(const Vec2F& point)
    function Vec2F (line 1273) | Vec2F FrameTool::CheckRightSnapping(const Vec2F& point)
    function Vec2F (line 1286) | Vec2F FrameTool::CheckLeftTopSnapping(const Vec2F& point)
    function Vec2F (line 1299) | Vec2F FrameTool::CheckLeftBottomSnapping(const Vec2F& point)
    function Vec2F (line 1312) | Vec2F FrameTool::CheckRightTopSnapping(const Vec2F& point)
    function Vec2F (line 1325) | Vec2F FrameTool::CheckRightBottomSnapping(const Vec2F& point)
    function Basis (line 1439) | Basis FrameTool::GetObjectParentAnchorSnapBasis(const Ref<SceneEditabl...
    function Vec2F (line 1449) | Vec2F FrameTool::CalculateSnapOffset(const Vec2F& point, const Basis& ...

FILE: Editor/Sources/o2Editor/Tools/FrameTool.h
  function namespace (line 9) | namespace o2
  type SnapLine (line 38) | struct SnapLine
  function ShortcutKeys (line 103) | ShortcutKeys GetShortcut() const override;

FILE: Editor/Sources/o2Editor/Tools/IEditorTool.cpp
  type Editor (line 8) | namespace Editor
    function String (line 46) | String IEditTool::GetPanelIcon() const
    function ShortcutKeys (line 51) | ShortcutKeys IEditTool::GetShortcut() const

FILE: Editor/Sources/o2Editor/Tools/IEditorTool.h
  function namespace (line 10) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Tools/ITransformTool.cpp
  type Editor (line 4) | namespace Editor

FILE: Editor/Sources/o2Editor/Tools/ITransformTool.h
  function namespace (line 7) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Tools/MeshTopologyTool.cpp
  type Editor (line 6) | namespace Editor
    function String (line 60) | String MeshTopologyTool::GetPanelIcon() const
    function Vec2F (line 120) | Vec2F MeshTopologyTool::WorldToLocal(const Vec2F& point) const
    function Vec2F (line 126) | Vec2F MeshTopologyTool::LocalToWorld(const Vec2F& point) const
    function String (line 283) | const String& MeshTopologyTool::SceneLayer::GetName() const
    function String (line 289) | const String& MeshTopologyTool::SceneLayer::GetIconName() const

FILE: Editor/Sources/o2Editor/Tools/MeshTopologyTool.h
  function namespace (line 10) | namespace Editor

FILE: Editor/Sources/o2Editor/Tools/MeshWeightsTool.cpp
  type Editor (line 8) | namespace Editor
    function String (line 164) | const String& MeshWeightsTool::SceneLayer::GetName() const
    function String (line 170) | const String& MeshWeightsTool::SceneLayer::GetIconName() const
    function String (line 175) | String MeshWeightsTool::MeshWeightsTool::GetPanelIcon() const

FILE: Editor/Sources/o2Editor/Tools/MeshWeightsTool.h
  type MeshWeightsTool (line 13) | struct MeshWeightsTool
  type SceneLayer (line 18) | struct SceneLayer
  function GetOrder (line 36) | int GetOrder() const override;
  function String (line 63) | String GetPanelIcon() const override;

FILE: Editor/Sources/o2Editor/Tools/MoveTool.cpp
  type Editor (line 14) | namespace Editor
    function String (line 291) | String MoveTool::GetPanelIcon() const
    function ShortcutKeys (line 296) | ShortcutKeys MoveTool::GetShortcut() const

FILE: Editor/Sources/o2Editor/Tools/MoveTool.h
  function namespace (line 7) | namespace o2
  function ShortcutKeys (line 50) | ShortcutKeys GetShortcut() const override;

FILE: Editor/Sources/o2Editor/Tools/RotateTool.cpp
  type Editor (line 16) | namespace Editor
    function String (line 34) | String RotateTool::GetPanelIcon() const
    function ShortcutKeys (line 39) | ShortcutKeys RotateTool::GetShortcut() const

FILE: Editor/Sources/o2Editor/Tools/RotateTool.h
  function namespace (line 10) | namespace o2
  function ShortcutKeys (line 69) | ShortcutKeys GetShortcut() const override;

FILE: Editor/Sources/o2Editor/Tools/ScaleTool.cpp
  type Editor (line 15) | namespace Editor
    function String (line 54) | String ScaleTool::GetPanelIcon() const
    function ShortcutKeys (line 59) | ShortcutKeys ScaleTool::GetShortcut() const

FILE: Editor/Sources/o2Editor/Tools/ScaleTool.h
  function ShortcutKeys (line 49) | ShortcutKeys GetShortcut() const override;

FILE: Editor/Sources/o2Editor/Tools/SelectionTool.cpp
  type Editor (line 15) | namespace Editor
    function String (line 25) | String SelectionTool::GetPanelIcon() const
    function ShortcutKeys (line 30) | ShortcutKeys SelectionTool::GetShortcut() const

FILE: Editor/Sources/o2Editor/Tools/SelectionTool.h
  function namespace (line 7) | namespace o2
  function ShortcutKeys (line 43) | ShortcutKeys GetShortcut() const override;

FILE: Editor/Sources/o2Editor/Tools/SkeletonTool.cpp
  type Editor (line 7) | namespace Editor
    function String (line 91) | const String& SkeletonTool::SceneLayer::GetName() const
    function String (line 97) | const String& SkeletonTool::SceneLayer::GetIconName() const
    function String (line 102) | String SkeletonTool::SkeletonTool::GetPanelIcon() const

FILE: Editor/Sources/o2Editor/Tools/SkeletonTool.h
  type SkeletonTool (line 15) | struct SkeletonTool
  type SceneLayer (line 20) | struct SceneLayer
  function GetOrder (line 32) | int GetOrder() const override;

FILE: Editor/Sources/o2Editor/Tools/SplineTool.cpp
  type Editor (line 6) | namespace Editor
    function Vec2F (line 20) | Vec2F SplineTool::SplineWrapper::GetOrigin() const
    function Vec2F (line 25) | Vec2F SplineTool::SplineWrapper::WorldToLocal(const Vec2F& point) const
    function Vec2F (line 30) | Vec2F SplineTool::SplineWrapper::LocalToWorld(const Vec2F& point) const
    function Vec2F (line 56) | Vec2F SplineTool::SplineWrapper::GetPointPos(int idx) const
    function Vec2F (line 80) | Vec2F SplineTool::SplineWrapper::GetPointPrevSupportPos(int idx) const
    function Vec2F (line 93) | Vec2F SplineTool::SplineWrapper::GetPointNextSupportPos(int idx) const
    function ApproximationVec2F (line 106) | const ApproximationVec2F* SplineTool::SplineWrapper::GetPointApproxima...
    function ApproximationVec2F (line 111) | const ApproximationVec2F* SplineTool::SplineWrapper::GetPointApproxima...
    function String (line 146) | const String& SplineTool::SplineSceneLayer::GetName() const
    function String (line 152) | const String& SplineTool::SplineSceneLayer::GetIconName() const
    function String (line 167) | String SplineTool::SplineTool::GetPanelIcon() const

FILE: Editor/Sources/o2Editor/Tools/SplineTool.h
  type SplineTool (line 15) | struct SplineTool
  type SplineWrapper (line 20) | struct SplineWrapper
  function GetPointsCount (line 38) | int GetPointsCount() const override;
  function String (line 136) | String GetPanelIcon() const override;

FILE: Editor/Sources/o2Editor/ToolsPanel.cpp
  type Editor (line 26) | namespace Editor

FILE: Editor/Sources/o2Editor/ToolsPanel.h
  function namespace (line 9) | namespace o2
  function namespace (line 21) | namespace Editor

FILE: Editor/Sources/o2Editor/UI/CurveEditor/CurveActions.cpp
  type Editor (line 5) | namespace Editor
    function String (line 19) | String CurveAddKeysAction::GetName() const
    function String (line 99) | String CurveDeleteKeysAction::GetName() const
    function String (line 179) | String CurveKeysChangeAction::GetName() const

FILE: Editor/Sources/o2Editor/UI/CurveEditor/CurveActions.h
  function String (line 21) | String GetName() const override;

FILE: Editor/Sources/o2Editor/UI/CurveEditor/CurvesEditor.cpp
  type Editor (line 26) | namespace Editor
    function Vec2F (line 1151) | Vec2F CurvesEditor::CheckLeftSupportHandlePosition(const Ref<CurveInfo...
    function Vec2F (line 1167) | Vec2F CurvesEditor::CheckRightSupportHandlePosition(const Ref<CurveInf...
    function Vec2F (line 1183) | Vec2F CurvesEditor::CheckTopRangeHandlePosition(const Ref<CurveInfo>& ...
    function Vec2F (line 1190) | Vec2F CurvesEditor::CheckBottomRangeHandlePosition(const Ref<CurveInfo...
    function Vec2F (line 1802) | Vec2F CurvesEditor::CurveViewToLocal(const Vec2F& point, const Vec2F& ...
    function Vec2F (line 1807) | Vec2F CurvesEditor::LocalToCurveView(const Vec2F& point, const Vec2F& ...
    function Vec2F (line 2313) | Vec2F CurvesEditor::CurveHandle::GetLocalPosition() const
    function Vec2F (line 2318) | Vec2F CurvesEditor::CurveHandle::LocalToCurveView(const Vec2F& point) ...
    function Vec2F (line 2323) | Vec2F CurvesEditor::CurveHandle::CurveViewToLocal(const Vec2F& point) ...
    function Vec2F (line 2328) | Vec2F CurvesEditor::CurveHandle::ScreenToLocal(const Vec2F& point)
    function Vec2F (line 2333) | Vec2F CurvesEditor::CurveHandle::LocalToScreen(const Vec2F& point)

FILE: Editor/Sources/o2Editor/UI/CurveEditor/CurvesEditor.h
  function namespace (line 16) | namespace o2
  function Draw (line 47) | void Draw() override;
  type SelectedHandlesInfo (line 250) | struct SelectedHandlesInfo
  type CurveKeysInfo (line 263) | struct CurveKeysInfo
  function RedrawContent (line 330) | void RedrawContent() override;
  type Map (line 525) | typedef Map<String, Ref<Curve>> _tmp1;

FILE: Editor/Sources/o2Editor/UI/CurvePreview.cpp
  type Editor (line 11) | namespace Editor
    function CurvePreview (line 33) | CurvePreview& CurvePreview::operator=(const CurvePreview& other)
    function Color4 (line 76) | Color4 CurvePreview::GetBackColor() const
    function Color4 (line 87) | Color4 CurvePreview::GetCurveColor() const
    function String (line 92) | String CurvePreview::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/UI/CurvePreview.h
  function namespace (line 7) | namespace o2
  function Draw (line 34) | void Draw() override;

FILE: Editor/Sources/o2Editor/UI/FrameScrollView.cpp
  type Editor (line 8) | namespace Editor
    function FrameScrollView (line 48) | FrameScrollView& FrameScrollView::operator=(const FrameScrollView& other)
    function RectF (line 112) | RectF FrameScrollView::GetViewArea() const
    function String (line 117) | String FrameScrollView::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/UI/FrameScrollView.h
  function namespace (line 5) | namespace o2
  function Draw (line 35) | void Draw() override;

FILE: Editor/Sources/o2Editor/UI/ImageSlicesEditorWidget.cpp
  type Editor (line 7) | namespace Editor
    function ImageSlicesEditorWidget (line 21) | ImageSlicesEditorWidget& ImageSlicesEditorWidget::operator=(const Imag...
    function String (line 38) | String ImageSlicesEditorWidget::GetCreateMenuCategory()
    function String (line 228) | String ImageSlicesEditorWidget::PreviewImage::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/UI/ImageSlicesEditorWidget.h
  function namespace (line 8) | namespace o2
  function Draw (line 52) | void Draw() override;

FILE: Editor/Sources/o2Editor/UI/ScrollView.cpp
  type Editor (line 9) | namespace Editor
    function ScrollView (line 37) | ScrollView& ScrollView::operator=(const ScrollView& other)
    function String (line 109) | String ScrollView::GetCreateMenuCategory()
    function Basis (line 197) | Basis ScrollView::GetCameraScreenToLocalTransform(const Camera& camera...
    function Vec2F (line 214) | Vec2F ScrollView::ScreenToLocalPoint(const Vec2F& point)
    function Vec2F (line 219) | Vec2F ScrollView::LocalToScreenPoint(const Vec2F& point)
    function Basis (line 224) | const Basis& ScrollView::GetLocalToScreenTransform() const
    function Basis (line 229) | const Basis& ScrollView::GetScreenToLocalTransform() const
    function Vec2F (line 234) | Vec2F ScrollView::GetCameraScale() const
    function Camera (line 246) | const Camera& ScrollView::GetCamera() const

FILE: Editor/Sources/o2Editor/UI/ScrollView.h
  function namespace (line 10) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/UI/SplineEditor/SplineEditor.cpp
  type Editor (line 4) | namespace Editor
    function Vec2F (line 614) | Vec2F SplineEditor::GetRangeHandlePos(int i, const Ref<PointHandles>& ...
    function Vec2F (line 630) | Vec2F SplineEditor::GetRangeHandlesNormal(int i, const Ref<PointHandle...
    function Vec2F (line 643) | Vec2F SplineEditor::CheckRangeHandlePos(int i, const Ref<PointHandles>...
    function Vec2F (line 737) | Vec2F SplineEditor::ISplineWrapper::WorldToLocal(const Vec2F& point) c...
    function Vec2F (line 742) | Vec2F SplineEditor::ISplineWrapper::LocalToWorld(const Vec2F& point) c...

FILE: Editor/Sources/o2Editor/UI/SplineEditor/SplineEditor.h
  function namespace (line 10) | namespace Editor
  type PointHandles (line 125) | struct PointHandles

FILE: Editor/Sources/o2Editor/UI/SpoilerWithHead.cpp
  type Editor (line 6) | namespace Editor
    function SpoilerWithHead (line 20) | SpoilerWithHead& SpoilerWithHead::operator=(const SpoilerWithHead& other)
    function String (line 32) | String SpoilerWithHead::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/UI/SpoilerWithHead.h
  function namespace (line 7) | namespace o2
  function Ref (line 35) | const Ref<Image>& GetIcon() const;

FILE: Editor/Sources/o2Editor/UI/Style/BasicUIStyle.cpp
  type o2 (line 35) | namespace o2

FILE: Editor/Sources/o2Editor/UI/Style/BasicUIStyle.h
  function namespace (line 6) | namespace o2

FILE: Editor/Sources/o2Editor/UI/Style/EditorUIStyle.cpp
  type Editor (line 76) | namespace Editor

FILE: Editor/Sources/o2Editor/UI/Style/EditorUIStyle.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/UI/TexturePreview.cpp
  type Editor (line 8) | namespace Editor
    function TexturePreview (line 70) | TexturePreview& TexturePreview::operator=(const TexturePreview& other)

FILE: Editor/Sources/o2Editor/UI/TexturePreview.h
  function namespace (line 8) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/UIRoot.cpp
  type Editor (line 10) | namespace Editor

FILE: Editor/Sources/o2Editor/UIRoot.h
  function namespace (line 9) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Utils/CommonTextures.cpp
  type Editor (line 3) | namespace Editor

FILE: Editor/Sources/o2Editor/Utils/CommonTextures.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationGraphTransitionViewer.cpp
  type Editor (line 12) | namespace Editor
    function Type (line 14) | const Type* AnimationGraphTransitionViewer::GetViewingObjectType() const
    function Type (line 22) | const Type* AnimationGraphTransitionViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationGraphTransitionViewer.h
  function namespace (line 8) | namespace o2
  function namespace (line 15) | namespace Editor
  type Vector (line 111) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;
  type Vector (line 112) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp2;

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationStateGraphEditor.cpp
  type Editor (line 31) | namespace Editor
    function String (line 917) | const String& AnimationStateGraphEditor::StateAnimation::GetName() const
  function ENUM_META (line 1031) | ENUM_META(Editor::AnimationStateGraphEditor::StateTransition::Transition...
  function ENUM_META (line 1039) | ENUM_META(Editor::AnimationStateGraphEditor::StateWidget::TransitionStat...

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationStateGraphEditor.h
  function namespace (line 18) | namespace o2
  type StateWidget (line 71) | struct StateWidget
  type StateAnimation (line 77) | struct StateAnimation
  type StateTransition (line 111) | struct StateTransition
  type StateWidget (line 159) | struct StateWidget
  function TransitionState (line 161) | enum class TransitionState { None, Finished, Planned };
  function DrawInheritedDepthChildren (line 275) | void DrawInheritedDepthChildren() override;

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationStateGraphWindow.cpp
  type Editor (line 17) | namespace Editor
    function Type (line 19) | const Type& AnimationStateGraphWindow::GetAssetType() const
    function String (line 62) | String AnimationStateGraphWindow::GetWindowTitle() const

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/AnimationStateGraphWindow.h
  function Type (line 28) | const Type& GetAssetType() const override;

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/GraphAnimationStateViewer.cpp
  type Editor (line 17) | namespace Editor
    function Type (line 19) | const Type* GraphAnimationStateViewer::GetViewingObjectType() const
    function Type (line 27) | const Type* GraphAnimationStateViewer::GetViewingObjectTypeStatic()

FILE: Editor/Sources/o2Editor/Windows/AnimationStateGraphWindow/GraphAnimationStateViewer.h
  function namespace (line 6) | namespace o2
  function OnFree (line 48) | void OnFree() override;
  type Vector (line 91) | typedef const Vector<Pair<IObject*, IObject*>>& _tmp1;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/AnimationKeysActions.cpp
  type Editor (line 4) | namespace Editor
    function String (line 14) | String AnimationAddKeysAction::GetName() const
    function String (line 39) | String AnimationDeleteKeysAction::GetName() const
    function String (line 64) | String AnimationKeysChangeAction::GetName() const

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/AnimationKeysActions.h
  function String (line 14) | String GetName() const override;
  type Map (line 133) | typedef const Map<String, Vector<UInt64>>& _tmp1;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/AnimationWindow.cpp
  type Editor (line 24) | namespace Editor
    function Type (line 63) | const Type& AnimationWindow::GetAssetType() const
    function String (line 122) | String AnimationWindow::GetWindowTitle() const

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/AnimationWindow.h
  function namespace (line 9) | namespace o2
  function IsCurvesMode (line 46) | bool IsCurvesMode() const;
  type Variant (line 265) | typedef const Variant<float, int, Vec2F, Color4>& _tmp1;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/CurvesSheet.cpp
  type Editor (line 12) | namespace Editor
    function CurvesSheet (line 30) | CurvesSheet& CurvesSheet::operator=(const CurvesSheet& other)
    function String (line 143) | String CurvesSheet::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/CurvesSheet.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/KeyHandlesSheet.cpp
  type Editor (line 16) | namespace Editor
    function KeyHandlesSheet (line 39) | KeyHandlesSheet& KeyHandlesSheet::operator=(const KeyHandlesSheet& other)
    function String (line 208) | String KeyHandlesSheet::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/KeyHandlesSheet.h
  function namespace (line 7) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/PropertiesListDlg.cpp
  type Editor (line 17) | namespace Editor
    function AnimationPropertiesTree (line 83) | AnimationPropertiesTree& AnimationPropertiesTree::operator=(const Anim...
    function String (line 115) | String AnimationPropertiesTree::GetCreateMenuCategory()
    function String (line 260) | String AnimationPropertiesTree::GetObjectDebug(void* object)
    function AnimationPropertiesTreeNode (line 304) | AnimationPropertiesTreeNode& AnimationPropertiesTreeNode::operator=(co...
    function String (line 347) | String AnimationPropertiesTreeNode::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/PropertiesListDlg.h
  function namespace (line 6) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/Timeline.cpp
  type Editor (line 10) | namespace Editor
    function AnimationTimeline (line 52) | AnimationTimeline& AnimationTimeline::operator=(const AnimationTimelin...
    type Cfg (line 254) | struct Cfg
    function String (line 443) | String AnimationTimeline::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/Timeline.h
  function namespace (line 10) | namespace o2
  function Draw (line 41) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/AnimationKeyDragHandle.cpp
  type Editor (line 6) | namespace Editor
    function String (line 42) | String AnimationKeyDragHandle::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/AnimationKeyDragHandle.h
  function Draw (line 45) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/AnimationTrackWrapper.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/ITrackControl.cpp
  type Editor (line 7) | namespace Editor
    function UInt64 (line 58) | UInt64 ITrackControl::DeserializeKey(const DataValue& data, float rela...
    function String (line 66) | String ITrackControl::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/ITrackControl.h
  type KeyHandle (line 18) | struct KeyHandle
  function virtual (line 48) | virtual Vector<Ref<KeyHandle>> GetKeyHandles() const;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/KeyFramesTrackControl.cpp
  type Editor (line 13) | namespace Editor
    function DrawCurveInCoords (line 15) | void DrawCurveInCoords(const ApproximationValue* points, int pointsCou...
    function DrawCenterCurveInCoords (line 36) | void DrawCenterCurveInCoords(const Vec2F* points, int pointsCount, con...

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/KeyFramesTrackControl.h
  function namespace (line 18) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/MapKeyFramesTrackControl.cpp
  type Editor (line 8) | namespace Editor
    function MapKeyFramesTrackControl (line 21) | MapKeyFramesTrackControl& MapKeyFramesTrackControl::operator=(const Ma...

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/MapKeyFramesTrackControl.h
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/SubTrackControl.cpp
  type Editor (line 8) | namespace Editor
    function SubTrackControl (line 25) | SubTrackControl& SubTrackControl::operator=(const SubTrackControl& other)

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/SubTrackControl.h
  function Draw (line 40) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/Vec2KeyFramesTrackControl.cpp
  type Editor (line 7) | namespace Editor
    function Vec2KeyFramesTrackControl (line 53) | Vec2KeyFramesTrackControl& Vec2KeyFramesTrackControl::operator=(const ...

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/TrackControls/Vec2KeyFramesTrackControl.h
  function Draw (line 39) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/Tree.cpp
  type Editor (line 16) | namespace Editor
    function AnimationTree (line 39) | AnimationTree& AnimationTree::operator=(const AnimationTree& other)
    function String (line 129) | String AnimationTree::GetCreateMenuCategory()
    function String (line 276) | String AnimationTree::GetObjectDebug(void* object)
    function AnimationTreeNode (line 355) | AnimationTreeNode& AnimationTreeNode::operator=(const AnimationTreeNod...
    function String (line 406) | String AnimationTreeNode::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AnimationWindow/Tree.h
  function namespace (line 8) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetIcon.cpp
  type Editor (line 10) | namespace Editor
    function AssetIcon (line 32) | AssetIcon& AssetIcon::operator=(const AssetIcon& other)
    function WString (line 58) | WString AssetIcon::GetAssetName() const
    function String (line 83) | String AssetIcon::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetIcon.h
  function namespace (line 9) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetsIconsScroll.cpp
  type Editor (line 27) | namespace Editor
    function AssetsIconsScrollArea (line 69) | AssetsIconsScrollArea& AssetsIconsScrollArea::operator=(const AssetsIc...
    function String (line 163) | const String& AssetsIconsScrollArea::GetViewingPath() const
    function String (line 371) | String AssetsIconsScrollArea::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetsIconsScroll.h
  function namespace (line 14) | namespace o2
  function namespace (line 22) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetsWindow.cpp
  type Editor (line 30) | namespace Editor
    function String (line 264) | String AssetsWindow::GetOpenedFolderPath() const

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/AssetsWindow.h
  function namespace (line 11) | namespace o2
  function Vector (line 63) | const Vector<Ref<AssetInfo>>& GetSelectedAssets() const;

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/FoldersTree.cpp
  type Editor (line 19) | namespace Editor
    function String (line 61) | String AssetsFoldersTree::GetCreateMenuCategory()
    function AssetsFoldersTree (line 66) | AssetsFoldersTree& AssetsFoldersTree::operator=(const AssetsFoldersTre...
    function String (line 269) | String FoldersTree::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/AssetsWindow/FoldersTree.h
  function namespace (line 9) | namespace o2
  function namespace (line 14) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/DockWindowPlace.cpp
  type Editor (line 9) | namespace Editor
    function DockWindowPlace (line 31) | DockWindowPlace& DockWindowPlace::operator=(const DockWindowPlace& other)
    function TwoDirection (line 119) | TwoDirection DockWindowPlace::GetResizibleDir() const
    function String (line 197) | String DockWindowPlace::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/DockWindowPlace.h
  function Draw (line 34) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/DockableWindow.cpp
  type Editor (line 19) | namespace Editor
    function DockableWindow (line 50) | DockableWindow& DockableWindow::operator=(const DockableWindow& other)
    function Layout (line 208) | Layout DockableWindow::GetIconLayout() const
    function WString (line 242) | WString DockableWindow::GetCaption() const
    function String (line 307) | String DockableWindow::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/DockableWindow.h
  function Draw (line 33) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/GameWindow/GameWindow.cpp
  type Editor (line 10) | namespace Editor
    function String (line 202) | String GameWindow::GameView::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/GameWindow/GameWindow.h
  function namespace (line 6) | namespace o2
  function Draw (line 36) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/IAssetEditorWindow.cpp
  type Editor (line 12) | namespace Editor
    function Type (line 40) | const Type& IAssetEditorWindow::GetAssetType() const
    function String (line 353) | String IAssetEditorWindow::GetWindowTitle() const

FILE: Editor/Sources/o2Editor/Windows/IAssetEditorWindow.h
  function namespace (line 16) | namespace Editor
  type Map (line 229) | typedef Map<String, String> _tmp1;

FILE: Editor/Sources/o2Editor/Windows/IEditorWindow.cpp
  type Editor (line 10) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/IEditorWindow.h
  function namespace (line 8) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/LogWindow/LogWindow.cpp
  type Editor (line 15) | namespace Editor
  function ENUM_META (line 307) | ENUM_META(Editor::LogWindow::LogMessage::Type, Editor__LogWindow__LogMes...

FILE: Editor/Sources/o2Editor/Windows/LogWindow/LogWindow.h
  function namespace (line 8) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/MemoryAnalyzerWindow/MemoryAnalyzerWindow.cpp
  type Editor (line 18) | namespace Editor
    function String (line 189) | String GetNodeName(MemoryAnalyzer::MemoryNode* node)
    function String (line 212) | String GetNodeAddress(MemoryAnalyzer::MemoryNode* node)
    function String (line 217) | String GetNodeSize(MemoryAnalyzer::MemoryNode* node)
    function Color4 (line 232) | Color4 GetNodeColor(MemoryAnalyzer::MemoryNode* node)
    function MemoryAnalyzeTree (line 295) | MemoryAnalyzeTree& MemoryAnalyzeTree::operator=(const MemoryAnalyzeTre...
    function String (line 316) | String MemoryAnalyzeTree::GetCreateMenuCategory()
    function String (line 374) | String MemoryAnalyzeTree::GetObjectDebug(void* object)
    function MemoryAnalyzeTreeNode (line 402) | MemoryAnalyzeTreeNode& MemoryAnalyzeTreeNode::operator=(const MemoryAn...
    function String (line 421) | String MemoryAnalyzeTreeNode::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/MemoryAnalyzerWindow/MemoryAnalyzerWindow.h
  function namespace (line 9) | namespace o2
  function namespace (line 20) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/ActorViewer.cpp
  type Editor (line 22) | namespace Editor
    function Type (line 105) | const Type* ActorViewer::GetViewingObjectType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/ActorViewer.h
  function namespace (line 7) | namespace o2
  function Refresh (line 53) | void Refresh() override;
  type Vector (line 142) | typedef Vector<Pair<const Type*, Vector<Ref<Component>>>> _tmp1;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/AddComponentPanel.cpp
  type Editor (line 11) | namespace Editor
    function String (line 65) | String AddComponentPanel::GetCreateMenuCategory()
    function ComponentsTree (line 140) | ComponentsTree& ComponentsTree::operator=(const ComponentsTree& other)
    function String (line 225) | String ComponentsTree::GetCreateMenuCategory()
    function String (line 259) | String ComponentsTree::GetObjectDebug(void* object)
    function ComponentsTreeNode (line 290) | ComponentsTreeNode& ComponentsTreeNode::operator=(const ComponentsTree...
    function String (line 309) | String ComponentsTreeNode::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/AddComponentPanel.h
  function namespace (line 10) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorComponentViewer.cpp
  type Editor (line 10) | namespace Editor
    function Type (line 24) | const Type* DefaultActorComponentViewer::GetComponentType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorComponentViewer.h
  function namespace (line 7) | namespace Editor
  function CLASS_BASES_META (line 110) | META_TEMPLATES(typename _component_type)
  function CLASS_FIELDS_META (line 116) | META_TEMPLATES(typename _component_type)
  function CLASS_METHODS_META (line 122) | META_TEMPLATES(typename _component_type)

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorHeaderViewer.cpp
  type Editor (line 28) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorHeaderViewer.h
  function namespace (line 6) | namespace o2
  function Refresh (line 43) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorPropertiesViewer.cpp
  type Editor (line 11) | namespace Editor
    function Type (line 28) | const Type* DefaultActorPropertiesViewer::GetActorType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorPropertiesViewer.h
  function Refresh (line 33) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorTransformViewer.cpp
  type Editor (line 23) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/DefaultActorTransformViewer.h
  function Refresh (line 26) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorComponentViewer.cpp
  type Editor (line 22) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorComponentViewer.h
  function namespace (line 11) | namespace o2
  function namespace (line 20) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorHeaderViewer.cpp
  type Editor (line 6) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorHeaderViewer.h
  function namespace (line 10) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorPropertiesViewer.cpp
  type Editor (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorPropertiesViewer.h
  function namespace (line 11) | namespace o2
  function namespace (line 18) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorTransformViewer.cpp
  type Editor (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/ActorsViewer/IActorTransformViewer.h
  function namespace (line 11) | namespace o2
  function namespace (line 18) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/AssetPropertiesViewer.cpp
  type Editor (line 6) | namespace Editor
    function Type (line 32) | const Type* AssetPropertiesViewer::GetViewingObjectType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/AssetPropertiesViewer.h
  function namespace (line 7) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/DefaultPropertiesViewer.cpp
  type Editor (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/DefaultPropertiesViewer.h
  function Refresh (line 23) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/IPropertiesViewer.cpp
  type Editor (line 7) | namespace Editor
    function Type (line 19) | const Type* IPropertiesViewer::GetViewingObjectType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/IPropertiesViewer.h
  function namespace (line 10) | namespace o2
  function namespace (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/PropertiesWindow.cpp
  type Editor (line 15) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/PropertiesWindow.h
  function namespace (line 10) | namespace o2

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerHeadViewer.cpp
  type Editor (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerHeadViewer.h
  function namespace (line 5) | namespace o2
  function Refresh (line 38) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerLayoutViewer.cpp
  type Editor (line 20) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerLayoutViewer.h
  function Refresh (line 27) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerPropertiesViewer.cpp
  type Editor (line 14) | namespace Editor
    function Type (line 32) | const Type* DefaultWidgetLayerPropertiesViewer::GetDrawableType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/DefaultWidgetLayerPropertiesViewer.h
  function namespace (line 7) | namespace o2
  function Refresh (line 35) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerHeadViewer.cpp
  type Editor (line 6) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerHeadViewer.h
  function namespace (line 10) | namespace o2
  function namespace (line 16) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerLayoutViewer.cpp
  type Editor (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerLayoutViewer.h
  function namespace (line 11) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerPropertiesViewer.cpp
  type Editor (line 9) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/IWidgetLayerPropertiesViewer.h
  function namespace (line 11) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/WidgetLayerViewer.cpp
  type Editor (line 16) | namespace Editor
    function Type (line 64) | const Type* WidgetLayerViewer::GetViewingObjectType() const

FILE: Editor/Sources/o2Editor/Windows/PropertiesWindow/WidgetLayerViewer/WidgetLayerViewer.h
  function namespace (line 7) | namespace o2
  function Refresh (line 44) | void Refresh() override;

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/LayersPopup.cpp
  type Editor (line 13) | namespace Editor
    function String (line 38) | String LayersPopup::GetCreateMenuCategory()
    function Vec2F (line 48) | Vec2F LayersPopup::GetContentSize() const
    function LayerPopupItem (line 276) | LayerPopupItem& LayerPopupItem::operator=(const LayerPopupItem& other)
    function String (line 330) | String LayerPopupItem::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/LayersPopup.h
  function namespace (line 7) | namespace o2
  function Vec2F (line 61) | Vec2F GetContentSize() const override;

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneDragHandle.cpp
  type Editor (line 10) | namespace Editor
    function SceneDragHandle (line 49) | SceneDragHandle& SceneDragHandle::operator=(const SceneDragHandle& other)
    function Vec2F (line 55) | Vec2F SceneDragHandle::ScreenToLocal(const Vec2F& point)
    function Vec2F (line 60) | Vec2F SceneDragHandle::LocalToScreen(const Vec2F& point)

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneDragHandle.h
  function Draw (line 31) | void Draw() override;

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneEditScreen.cpp
  type Editor (line 37) | namespace Editor
    function Vec2F (line 103) | Vec2F SceneEditScreen::ScreenToScenePoint(const Vec2F& point)
    function Vec2F (line 108) | Vec2F SceneEditScreen::SceneToScreenPoint(const Vec2F& point)
    function Vec2F (line 113) | Vec2F SceneEditScreen::ScreenToSceneVector(const Vec2F& point)
    function Vec2F (line 118) | Vec2F SceneEditScreen::SceneToScreenVector(const Vec2F& point)
    function Color4 (line 398) | const Color4& SceneEditScreen::GetSingleObjectSelectionColor() const
    function Color4 (line 403) | const Color4& SceneEditScreen::GetManyObjectsSelectionColor() const

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneEditScreen.h
  function namespace (line 14) | namespace o2
  function namespace (line 25) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneEditorLayer.h
  function namespace (line 7) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneWindow.cpp
  type Editor (line 17) | namespace Editor
    function String (line 63) | String SceneWindow::GetWindowTitle() const
    function Type (line 73) | const Type& SceneWindow::GetAssetType() const

FILE: Editor/Sources/o2Editor/Windows/SceneWindow/SceneWindow.h
  function namespace (line 7) | namespace o2
  function Type (line 51) | const Type& GetAssetType() const override;

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/DrawOrderTree.cpp
  type Editor (line 33) | namespace Editor
    function DrawOrderTree (line 60) | DrawOrderTree& DrawOrderTree::operator=(const DrawOrderTree& other)
    function String (line 99) | String DrawOrderTree::GetCreateMenuCategory()
    function String (line 532) | String DrawOrderTreeNode::GetCreateMenuCategory()
  function ENUM_META (line 574) | ENUM_META(Editor::DrawOrderTree::OrderTreeNode::Type, Editor__DrawOrderT...

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/DrawOrderTree.h
  function namespace (line 5) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/SceneHierarchyTree.cpp
  type Editor (line 34) | namespace Editor
    function SceneHierarchyTree (line 63) | SceneHierarchyTree& SceneHierarchyTree::operator=(const SceneHierarchy...
    function String (line 158) | String SceneHierarchyTree::GetCreateMenuCategory()
    function String (line 236) | String SceneHierarchyTree::GetObjectDebug(void* object)
    function String (line 512) | String SceneHierarchyTreeNode::GetCreateMenuCategory()

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/SceneHierarchyTree.h
  function namespace (line 5) | namespace o2
  function namespace (line 17) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/TreeWindow.cpp
  type Editor (line 39) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/TreeWindow/TreeWindow.h
  function namespace (line 7) | namespace o2
  function namespace (line 22) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/WindowsLayout.cpp
  type Editor (line 12) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/WindowsLayout.h
  function namespace (line 8) | namespace o2
  function namespace (line 13) | namespace Editor

FILE: Editor/Sources/o2Editor/Windows/WindowsManager.cpp
  type Editor (line 22) | namespace Editor
    function ProcHierarchy (line 86) | void ProcHierarchy(String& hierarchy, const Ref<Widget>& widget, int l...
    function WindowsLayout (line 129) | WindowsLayout WindowsManager::GetWindowsLayout()

FILE: Editor/Sources/o2Editor/Windows/WindowsManager.h
  function namespace (line 11) | namespace o2
  function namespace (line 20) | namespace Editor
  function namespace (line 101) | namespace Editor

FILE: Editor/Sources/o2Editor/o2Editor.cpp
  function InitializeTypeso2Editor (line 170) | extern void InitializeTypeso2Editor()

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2ChainShape.cpp
  function b2Shape (line 88) | b2Shape* b2ChainShape::Clone(b2BlockAllocator* allocator) const
  function int32 (line 100) | int32 b2ChainShape::GetChildCount() const

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2ChainShape.h
  function int32 (line 62) | int32 GetChildCount() const;

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2CircleShape.cpp
  function b2Shape (line 22) | b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const
  function int32 (line 30) | int32 b2CircleShape::GetChildCount() const

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2CircleShape.h
  function int32 (line 34) | int32 GetChildCount() const;
  function int32 (line 72) | inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const
  function b2Vec2 (line 78) | inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const
  function b2Vec2 (line 84) | inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2EdgeShape.cpp
  function b2Shape (line 30) | b2Shape* b2EdgeShape::Clone(b2BlockAllocator* allocator) const
  function int32 (line 38) | int32 b2EdgeShape::GetChildCount() const

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2EdgeShape.h
  function int32 (line 39) | int32 GetChildCount() const;

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2PolygonShape.cpp
  function b2Shape (line 22) | b2Shape* b2PolygonShape::Clone(b2BlockAllocator* allocator) const
  function int32 (line 69) | int32 b2PolygonShape::GetChildCount() const
  function b2Vec2 (line 74) | static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count)

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2PolygonShape.h
  function Validate (line 79) | bool Validate() const;
  function b2Vec2 (line 95) | inline const b2Vec2& b2PolygonShape::GetVertex(int32 index) const

FILE: Framework/3rdPartyLibs/Box2D/Collision/Shapes/b2Shape.h
  type b2MassData (line 27) | struct b2MassData
  type Type (line 46) | enum Type
  function Type (line 62) | Type GetType() const;

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2BroadPhase.cpp
  function int32 (line 40) | int32 b2BroadPhase::CreateProxy(const b2AABB& aabb, void* userData)

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2BroadPhase.h
  type b2Pair (line 27) | struct b2Pair
  function int32 (line 94) | int32 GetTreeHeight() const;
  function TestOverlap (line 152) | inline bool b2BroadPhase::TestOverlap(int32 proxyIdA, int32 proxyIdB) const
  function b2AABB (line 159) | inline const b2AABB& b2BroadPhase::GetFatAABB(int32 proxyId) const
  function Query (line 241) | void b2BroadPhase::Query(T* callback, const b2AABB& aabb) const
  function RayCast (line 247) | void b2BroadPhase::RayCast(T* callback, const b2RayCastInput& input) const
  function ShiftOrigin (line 252) | inline void b2BroadPhase::ShiftOrigin(const b2Vec2& newOrigin)

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2CollideCircle.cpp
  function b2CollideCircles (line 23) | void b2CollideCircles(
  function b2CollidePolygonAndCircle (line 51) | void b2CollidePolygonAndCircle(

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2CollideEdge.cpp
  function b2CollideEdgeAndCircle (line 27) | void b2CollideEdgeAndCircle(b2Manifold* manifold,
  type b2EPAxis (line 155) | struct b2EPAxis
    type Type (line 157) | enum Type
  type b2TempPolygon (line 170) | struct b2TempPolygon
  type b2ReferenceFace (line 178) | struct b2ReferenceFace
  type b2EPCollider (line 194) | struct b2EPCollider
    type VertexType (line 201) | enum VertexType
  function b2EPAxis (line 620) | b2EPAxis b2EPCollider::ComputeEdgeSeparation()
    type Type (line 157) | enum Type
  function b2EPAxis (line 639) | b2EPAxis b2EPCollider::ComputePolygonSeparation()
    type Type (line 157) | enum Type
  function b2CollideEdgeAndPolygon (line 692) | void b2CollideEdgeAndPolygon(	b2Manifold* manifold,

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2CollidePolygon.cpp
  function float32 (line 23) | static float32 b2FindMaxSeparation(int32* edgeIndex,
  function b2FindIncidentEdge (line 64) | static void b2FindIncidentEdge(b2ClipVertex c[2],
  function b2CollidePolygons (line 116) | void b2CollidePolygons(b2Manifold* manifold,

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2Collision.cpp
  function b2GetPointStates (line 88) | void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2Point...
  function int32 (line 201) | int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2],
  function b2TestOverlap (line 233) | bool b2TestOverlap(	const b2Shape* shapeA, int32 indexA,

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2Collision.h
  type b2ContactFeature (line 38) | struct b2ContactFeature
  type b2ManifoldPoint (line 69) | struct b2ManifoldPoint
  type b2Manifold (line 93) | struct b2Manifold
  type b2WorldManifold (line 110) | struct b2WorldManifold
  type b2PointState (line 126) | enum b2PointState
  type b2ClipVertex (line 140) | struct b2ClipVertex
  type b2RayCastInput (line 147) | struct b2RayCastInput
  type b2RayCastOutput (line 155) | struct b2RayCastOutput
  type b2AABB (line 162) | struct b2AABB
  function float32 (line 180) | float32 GetPerimeter() const
  function Combine (line 195) | void Combine(const b2AABB& aabb1, const b2AABB& aabb2)
  function Contains (line 202) | bool Contains(const b2AABB& aabb) const
  function IsValid (line 254) | inline bool b2AABB::IsValid() const

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2Distance.cpp
  type b2SimplexVertex (line 86) | struct b2SimplexVertex
  type b2Simplex (line 96) | struct b2Simplex
    method ReadCache (line 98) | void ReadCache(	const b2SimplexCache* cache,
    method WriteCache (line 149) | void WriteCache(b2SimplexCache* cache) const
    method b2Vec2 (line 161) | b2Vec2 GetSearchDirection() const
    method b2Vec2 (line 190) | b2Vec2 GetClosestPoint() const
    method GetWitnessPoints (line 213) | void GetWitnessPoints(b2Vec2* pA, b2Vec2* pB) const
    method float32 (line 242) | float32 GetMetric() const
  function b2Distance (line 444) | void b2Distance(b2DistanceOutput* output,

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2Distance.h
  type b2DistanceProxy (line 29) | struct b2DistanceProxy

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2DynamicTree.cpp
  function int32 (line 53) | int32 b2DynamicTree::AllocateNode()
  function int32 (line 105) | int32 b2DynamicTree::CreateProxy(const b2AABB& aabb, void* userData)
  function int32 (line 377) | int32 b2DynamicTree::Balance(int32 iA)
  function int32 (line 520) | int32 b2DynamicTree::GetHeight() const
  function float32 (line 531) | float32 b2DynamicTree::GetAreaRatio() const
  function int32 (line 558) | int32 b2DynamicTree::ComputeHeight(int32 nodeId) const
  function int32 (line 573) | int32 b2DynamicTree::ComputeHeight() const
  function int32 (line 672) | int32 b2DynamicTree::GetMaxBalance() const

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2DynamicTree.h
  type b2TreeNode (line 28) | struct b2TreeNode
  function Validate (line 105) | void Validate() const;
  function b2AABB (line 162) | inline const b2AABB& b2DynamicTree::GetFatAABB(int32 proxyId) const
  function Query (line 169) | void b2DynamicTree::Query(T* callback, const b2AABB& aabb) const
  function RayCast (line 204) | void b2DynamicTree::RayCast(T* callback, const b2RayCastInput& input) const

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2TimeOfImpact.cpp
  type b2SeparationFunction (line 33) | struct b2SeparationFunction
    type Type (line 35) | enum Type
    method float32 (line 44) | float32 Initialize(const b2SimplexCache* cache,
    method float32 (line 125) | float32 FindMinSeparation(int32* indexA, int32* indexB, float32 t) const
    method float32 (line 194) | float32 Evaluate(int32 indexA, int32 indexB, float32 t) const
  function b2TimeOfImpact (line 254) | void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input)

FILE: Framework/3rdPartyLibs/Box2D/Collision/b2TimeOfImpact.h
  type b2TOIInput (line 26) | struct b2TOIInput
  type b2TOIOutput (line 36) | struct b2TOIOutput

FILE: Framework/3rdPartyLibs/Box2D/Common/b2BlockAllocator.cpp
  type b2Chunk (line 44) | struct b2Chunk
  type b2Block (line 50) | struct b2Block

FILE: Framework/3rdPartyLibs/Box2D/Common/b2BlockAllocator.h
  type b2Block (line 29) | struct b2Block
  type b2Chunk (line 30) | struct b2Chunk
  function class (line 35) | class b2BlockAllocator

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Draw.cpp
  function uint32 (line 31) | uint32 b2Draw::GetFlags() const

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Draw.h
  type b2Color (line 25) | struct b2Color
  function class (line 35) | class b2Draw

FILE: Framework/3rdPartyLibs/Box2D/Common/b2GrowableStack.h
  function Push (line 47) | void Push(const T& element)
  function T (line 65) | T Pop()
  function int32 (line 72) | int32 GetCount()

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Math.cpp
  function b2Vec3 (line 25) | b2Vec3 b2Mat33::Solve33(const b2Vec3& b) const
  function b2Vec2 (line 41) | b2Vec2 b2Mat33::Solve22(const b2Vec2& b) const

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Math.h
  function b2IsValid (line 26) | inline bool b2IsValid(float32 x)
  function float32 (line 33) | inline float32 b2InvSqrt(float32 x)
  function const (line 53) | struct b2Vec2
  function operator (line 83) | void operator += (const b2Vec2& v)
  function operator (line 89) | void operator -= (const b2Vec2& v)
  function operator (line 95) | void operator *= (float32 a)
  function float32 (line 114) | float32 Normalize()
  type b2Vec3 (line 144) | struct b2Vec3
  type b2Mat22 (line 183) | struct b2Mat22
  function SetZero (line 257) | struct b2Mat33
  function Set (line 299) | struct b2Rot
  function SetIdentity (line 320) | void SetIdentity()
  function Set (line 350) | struct b2Transform
  type b2Sweep (line 380) | struct b2Sweep
  function float32 (line 406) | inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b)
  function float32 (line 412) | inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b)
  function b2Vec2 (line 419) | inline b2Vec2 b2Cross(const b2Vec2& a, float32 s)
  function b2Vec2 (line 426) | inline b2Vec2 b2Cross(float32 s, const b2Vec2& a)
  function b2Vec2 (line 433) | inline b2Vec2 b2Mul(const b2Mat22& A, const b2Vec2& v)
  function b2Vec2 (line 440) | inline b2Vec2 b2MulT(const b2Mat22& A, const b2Vec2& v)
  function b2Vec2 (line 446) | inline b2Vec2 operator + (const b2Vec2& a, const b2Vec2& b)
  function b2Vec2 (line 452) | inline b2Vec2 operator - (const b2Vec2& a, const b2Vec2& b)
  function b2Vec2 (line 457) | inline b2Vec2 operator * (float32 s, const b2Vec2& a)
  function operator (line 462) | inline bool operator == (const b2Vec2& a, const b2Vec2& b)
  function float32 (line 467) | inline float32 b2Distance(const b2Vec2& a, const b2Vec2& b)
  function float32 (line 473) | inline float32 b2DistanceSquared(const b2Vec2& a, const b2Vec2& b)
  function b2Vec3 (line 479) | inline b2Vec3 operator * (float32 s, const b2Vec3& a)
  function b2Vec3 (line 485) | inline b2Vec3 operator + (const b2Vec3& a, const b2Vec3& b)
  function b2Vec3 (line 491) | inline b2Vec3 operator - (const b2Vec3& a, const b2Vec3& b)
  function float32 (line 497) | inline float32 b2Dot(const b2Vec3& a, const b2Vec3& b)
  function b2Vec3 (line 503) | inline b2Vec3 b2Cross(const b2Vec3& a, const b2Vec3& b)
  function b2Mat22 (line 508) | inline b2Mat22 operator + (const b2Mat22& A, const b2Mat22& B)
  function b2Mat22 (line 514) | inline b2Mat22 b2Mul(const b2Mat22& A, const b2Mat22& B)
  function b2Mat22 (line 520) | inline b2Mat22 b2MulT(const b2Mat22& A, const b2Mat22& B)
  function b2Vec3 (line 528) | inline b2Vec3 b2Mul(const b2Mat33& A, const b2Vec3& v)
  function b2Vec2 (line 534) | inline b2Vec2 b2Mul22(const b2Mat33& A, const b2Vec2& v)
  function b2Rot (line 540) | inline b2Rot b2Mul(const b2Rot& q, const b2Rot& r)
  function b2Rot (line 553) | inline b2Rot b2MulT(const b2Rot& q, const b2Rot& r)
  function b2Vec2 (line 566) | inline b2Vec2 b2Mul(const b2Rot& q, const b2Vec2& v)
  function b2Vec2 (line 572) | inline b2Vec2 b2MulT(const b2Rot& q, const b2Vec2& v)
  function b2Vec2 (line 577) | inline b2Vec2 b2Mul(const b2Transform& T, const b2Vec2& v)
  function b2Vec2 (line 585) | inline b2Vec2 b2MulT(const b2Transform& T, const b2Vec2& v)
  function b2Transform (line 597) | inline b2Transform b2Mul(const b2Transform& A, const b2Transform& B)
  function b2Transform (line 607) | inline b2Transform b2MulT(const b2Transform& A, const b2Transform& B)
  function T (line 616) | T b2Abs(T a)
  function b2Vec2 (line 621) | inline b2Vec2 b2Abs(const b2Vec2& a)
  function b2Mat22 (line 626) | inline b2Mat22 b2Abs(const b2Mat22& A)
  function T (line 632) | T b2Min(T a, T b)
  function b2Vec2 (line 637) | inline b2Vec2 b2Min(const b2Vec2& a, const b2Vec2& b)
  function T (line 643) | T b2Max(T a, T b)
  function b2Vec2 (line 648) | inline b2Vec2 b2Max(const b2Vec2& a, const b2Vec2& b)
  function T (line 654) | T b2Clamp(T a, T low, T high)
  function b2Vec2 (line 659) | inline b2Vec2 b2Clamp(const b2Vec2& a, const b2Vec2& low, const b2Vec2& ...
  function uint32 (line 676) | inline uint32 b2NextPowerOfTwo(uint32 x)
  function b2IsPowerOfTwo (line 686) | inline bool b2IsPowerOfTwo(uint32 x)
  function GetTransform (line 692) | inline void b2Sweep::GetTransform(b2Transform* xf, float32 beta) const
  function Advance (line 702) | inline void b2Sweep::Advance(float32 alpha)
  function Normalize (line 712) | inline void b2Sweep::Normalize()

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Settings.cpp
  function b2Free (line 32) | void b2Free(void* mem)
  function b2Log (line 38) | void b2Log(const char* string, ...)

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Settings.h
  type int8 (line 29) | typedef signed char	int8;
  type int16 (line 30) | typedef signed short int16;
  type int32 (line 31) | typedef signed int int32;
  type uint8 (line 32) | typedef unsigned char uint8;
  type uint16 (line 33) | typedef unsigned short uint16;
  type uint32 (line 34) | typedef unsigned int uint32;
  type float32 (line 35) | typedef float float32;
  type float64 (line 36) | typedef double float64;
  type b2Version (line 141) | struct b2Version

FILE: Framework/3rdPartyLibs/Box2D/Common/b2StackAllocator.cpp
  function int32 (line 80) | int32 b2StackAllocator::GetMaxAllocation() const

FILE: Framework/3rdPartyLibs/Box2D/Common/b2StackAllocator.h
  type b2StackEntry (line 27) | struct b2StackEntry
  function class (line 37) | class b2StackAllocator

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Timer.cpp
  function float32 (line 53) | float32 b2Timer::GetMilliseconds() const
  function float32 (line 79) | float32 b2Timer::GetMilliseconds() const
  function float32 (line 96) | float32 b2Timer::GetMilliseconds() const

FILE: Framework/3rdPartyLibs/Box2D/Common/b2Timer.h
  function class (line 26) | class b2Timer

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp
  function b2Contact (line 27) | b2Contact* b2ChainAndCircleContact::Create(b2Fixture* fixtureA, int32 in...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h
  function class (line 26) | class b2ChainAndCircleContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp
  function b2Contact (line 27) | b2Contact* b2ChainAndPolygonContact::Create(b2Fixture* fixtureA, int32 i...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h
  function class (line 26) | class b2ChainAndPolygonContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2CircleContact.cpp
  function b2Contact (line 28) | b2Contact* b2CircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2CircleContact.h
  function class (line 26) | class b2CircleContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2Contact.cpp
  function b2Contact (line 69) | b2Contact* b2Contact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixtur...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2Contact.h
  function float32 (line 37) | inline float32 b2MixFriction(float32 friction1, float32 friction2)
  function float32 (line 44) | inline float32 b2MixRestitution(float32 restitution1, float32 restitution2)
  type b2Contact (line 49) | typedef b2Contact* b2ContactCreateFcn(	b2Fixture* fixtureA, int32 indexA,
  type b2ContactRegister (line 54) | struct b2ContactRegister
  type b2ContactEdge (line 66) | struct b2ContactEdge
  function class (line 77) | class b2Contact
  function b2Manifold (line 222) | inline b2Manifold* b2Contact::GetManifold()
  function b2Manifold (line 227) | inline const b2Manifold* b2Contact::GetManifold() const
  function GetWorldManifold (line 232) | inline void b2Contact::GetWorldManifold(b2WorldManifold* worldManifold) ...
  function SetEnabled (line 242) | inline void b2Contact::SetEnabled(bool flag)
  function b2Contact (line 264) | inline b2Contact* b2Contact::GetNext()
  function b2Contact (line 269) | inline const b2Contact* b2Contact::GetNext() const
  function b2Fixture (line 274) | inline b2Fixture* b2Contact::GetFixtureA()
  function b2Fixture (line 279) | inline const b2Fixture* b2Contact::GetFixtureA() const
  function b2Fixture (line 284) | inline b2Fixture* b2Contact::GetFixtureB()
  function b2Fixture (line 294) | inline const b2Fixture* b2Contact::GetFixtureB() const
  function FlagForFiltering (line 304) | inline void b2Contact::FlagForFiltering()
  function SetFriction (line 309) | inline void b2Contact::SetFriction(float32 friction)
  function ResetFriction (line 319) | inline void b2Contact::ResetFriction()
  function SetRestitution (line 324) | inline void b2Contact::SetRestitution(float32 restitution)
  function ResetRestitution (line 334) | inline void b2Contact::ResetRestitution()
  function SetTangentSpeed (line 339) | inline void b2Contact::SetTangentSpeed(float32 speed)

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ContactSolver.cpp
  type b2ContactPositionConstraint (line 29) | struct b2ContactPositionConstraint
  type b2PositionSolverManifold (line 614) | struct b2PositionSolverManifold
    method Initialize (line 616) | void Initialize(b2ContactPositionConstraint* pc, const b2Transform& xf...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2ContactSolver.h
  type b2ContactPositionConstraint (line 29) | struct b2ContactPositionConstraint
  type b2VelocityConstraintPoint (line 31) | struct b2VelocityConstraintPoint
  type b2ContactVelocityConstraint (line 42) | struct b2ContactVelocityConstraint
  type b2ContactSolverDef (line 59) | struct b2ContactSolverDef
  function class (line 69) | class b2ContactSolver

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp
  function b2Contact (line 25) | b2Contact* b2EdgeAndCircleContact::Create(b2Fixture* fixtureA, int32, b2...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h
  function class (line 26) | class b2EdgeAndCircleContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp
  function b2Contact (line 25) | b2Contact* b2EdgeAndPolygonContact::Create(b2Fixture* fixtureA, int32, b...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h
  function class (line 26) | class b2EdgeAndPolygonContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp
  function b2Contact (line 25) | b2Contact* b2PolygonAndCircleContact::Create(b2Fixture* fixtureA, int32,...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h
  function class (line 26) | class b2PolygonAndCircleContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2PolygonContact.cpp
  function b2Contact (line 28) | b2Contact* b2PolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixtur...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Contacts/b2PolygonContact.h
  function class (line 26) | class b2PolygonContact : public b2Contact

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2DistanceJoint.cpp
  function b2Vec2 (line 223) | b2Vec2 b2DistanceJoint::GetAnchorA() const
  function b2Vec2 (line 228) | b2Vec2 b2DistanceJoint::GetAnchorB() const
  function b2Vec2 (line 233) | b2Vec2 b2DistanceJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 239) | float32 b2DistanceJoint::GetReactionTorque(float32 inv_dt) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2DistanceJoint.h
  function b2JointDef (line 30) | struct b2DistanceJointDef : public b2JointDef
  function class (line 67) | class b2DistanceJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2FrictionJoint.cpp
  function b2Vec2 (line 195) | b2Vec2 b2FrictionJoint::GetAnchorA() const
  function b2Vec2 (line 200) | b2Vec2 b2FrictionJoint::GetAnchorB() const
  function b2Vec2 (line 205) | b2Vec2 b2FrictionJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 210) | float32 b2FrictionJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 221) | float32 b2FrictionJoint::GetMaxForce() const
  function float32 (line 232) | float32 b2FrictionJoint::GetMaxTorque() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2FrictionJoint.h
  function b2JointDef (line 25) | struct b2FrictionJointDef : public b2JointDef
  function class (line 55) | class b2FrictionJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2GearJoint.cpp
  function b2Vec2 (line 370) | b2Vec2 b2GearJoint::GetAnchorA() const
  function b2Vec2 (line 375) | b2Vec2 b2GearJoint::GetAnchorB() const
  function b2Vec2 (line 380) | b2Vec2 b2GearJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 386) | float32 b2GearJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 398) | float32 b2GearJoint::GetRatio() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2GearJoint.h
  function b2JointDef (line 26) | struct b2GearJointDef : public b2JointDef
  function class (line 56) | class b2GearJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2Joint.cpp
  function b2Joint (line 37) | b2Joint* b2Joint::Create(const b2JointDef* def, b2BlockAllocator* alloca...

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2Joint.h
  type b2SolverData (line 26) | struct b2SolverData
  type b2JointType (line 29) | enum b2JointType
  type b2LimitState (line 45) | enum b2LimitState
  type b2Jacobian (line 53) | struct b2Jacobian
  type b2JointEdge (line 65) | struct b2JointEdge
  function class (line 103) | class b2Joint
  function b2Body (line 191) | inline b2Body* b2Joint::GetBodyA()
  function b2Body (line 196) | inline b2Body* b2Joint::GetBodyB()
  function b2Joint (line 201) | inline b2Joint* b2Joint::GetNext()
  function b2Joint (line 206) | inline const b2Joint* b2Joint::GetNext() const
  function SetUserData (line 216) | inline void b2Joint::SetUserData(void* data)

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2MotorJoint.cpp
  function b2Vec2 (line 206) | b2Vec2 b2MotorJoint::GetAnchorA() const
  function b2Vec2 (line 211) | b2Vec2 b2MotorJoint::GetAnchorB() const
  function b2Vec2 (line 216) | b2Vec2 b2MotorJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 221) | float32 b2MotorJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 232) | float32 b2MotorJoint::GetMaxForce() const
  function float32 (line 243) | float32 b2MotorJoint::GetMaxTorque() const
  function float32 (line 254) | float32 b2MotorJoint::GetCorrectionFactor() const
  function b2Vec2 (line 269) | const b2Vec2& b2MotorJoint::GetLinearOffset() const
  function float32 (line 284) | float32 b2MotorJoint::GetAngularOffset() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2MotorJoint.h
  function b2JointDef (line 25) | struct b2MotorJointDef : public b2JointDef
  function class (line 59) | class b2MotorJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2MouseJoint.cpp
  function b2Vec2 (line 61) | const b2Vec2& b2MouseJoint::GetTarget() const
  function float32 (line 71) | float32 b2MouseJoint::GetMaxForce() const
  function float32 (line 81) | float32 b2MouseJoint::GetFrequency() const
  function float32 (line 91) | float32 b2MouseJoint::GetDampingRatio() const
  function b2Vec2 (line 199) | b2Vec2 b2MouseJoint::GetAnchorA() const
  function b2Vec2 (line 204) | b2Vec2 b2MouseJoint::GetAnchorB() const
  function b2Vec2 (line 209) | b2Vec2 b2MouseJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 214) | float32 b2MouseJoint::GetReactionTorque(float32 inv_dt) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2MouseJoint.h
  function b2JointDef (line 26) | struct b2MouseJointDef : public b2JointDef
  function class (line 60) | class b2MouseJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp
  function b2Vec2 (line 484) | b2Vec2 b2PrismaticJoint::GetAnchorA() const
  function b2Vec2 (line 489) | b2Vec2 b2PrismaticJoint::GetAnchorB() const
  function b2Vec2 (line 494) | b2Vec2 b2PrismaticJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 499) | float32 b2PrismaticJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 504) | float32 b2PrismaticJoint::GetJointTranslation() const
  function float32 (line 515) | float32 b2PrismaticJoint::GetJointSpeed() const
  function float32 (line 552) | float32 b2PrismaticJoint::GetLowerLimit() const
  function float32 (line 557) | float32 b2PrismaticJoint::GetUpperLimit() const
  function float32 (line 601) | float32 b2PrismaticJoint::GetMotorForce(float32 inv_dt) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2PrismaticJoint.h
  function b2JointDef (line 30) | struct b2PrismaticJointDef : public b2JointDef
  function class (line 86) | class b2PrismaticJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2PulleyJoint.cpp
  function b2Vec2 (line 262) | b2Vec2 b2PulleyJoint::GetAnchorA() const
  function b2Vec2 (line 267) | b2Vec2 b2PulleyJoint::GetAnchorB() const
  function b2Vec2 (line 272) | b2Vec2 b2PulleyJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 278) | float32 b2PulleyJoint::GetReactionTorque(float32 inv_dt) const
  function b2Vec2 (line 284) | b2Vec2 b2PulleyJoint::GetGroundAnchorA() const
  function b2Vec2 (line 289) | b2Vec2 b2PulleyJoint::GetGroundAnchorB() const
  function float32 (line 294) | float32 b2PulleyJoint::GetLengthA() const
  function float32 (line 299) | float32 b2PulleyJoint::GetLengthB() const
  function float32 (line 304) | float32 b2PulleyJoint::GetRatio() const
  function float32 (line 309) | float32 b2PulleyJoint::GetCurrentLengthA() const
  function float32 (line 317) | float32 b2PulleyJoint::GetCurrentLengthB() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2PulleyJoint.h
  function b2JointDef (line 28) | struct b2PulleyJointDef : public b2JointDef
  function class (line 79) | class b2PulleyJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp
  function b2Vec2 (line 377) | b2Vec2 b2RevoluteJoint::GetAnchorA() const
  function b2Vec2 (line 382) | b2Vec2 b2RevoluteJoint::GetAnchorB() const
  function b2Vec2 (line 387) | b2Vec2 b2RevoluteJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 393) | float32 b2RevoluteJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 398) | float32 b2RevoluteJoint::GetJointAngle() const
  function float32 (line 405) | float32 b2RevoluteJoint::GetJointSpeed() const
  function float32 (line 424) | float32 b2RevoluteJoint::GetMotorTorque(float32 inv_dt) const
  function float32 (line 459) | float32 b2RevoluteJoint::GetLowerLimit() const
  function float32 (line 464) | float32 b2RevoluteJoint::GetUpperLimit() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2RevoluteJoint.h
  function b2JointDef (line 35) | struct b2RevoluteJointDef : public b2JointDef
  function class (line 90) | class b2RevoluteJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2RopeJoint.cpp
  function b2Vec2 (line 196) | b2Vec2 b2RopeJoint::GetAnchorA() const
  function b2Vec2 (line 201) | b2Vec2 b2RopeJoint::GetAnchorB() const
  function b2Vec2 (line 206) | b2Vec2 b2RopeJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 212) | float32 b2RopeJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 218) | float32 b2RopeJoint::GetMaxLength() const
  function b2LimitState (line 223) | b2LimitState b2RopeJoint::GetLimitState() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2RopeJoint.h
  function b2JointDef (line 28) | struct b2RopeJointDef : public b2JointDef
  function class (line 58) | class b2RopeJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2WeldJoint.cpp
  function b2Vec2 (line 292) | b2Vec2 b2WeldJoint::GetAnchorA() const
  function b2Vec2 (line 297) | b2Vec2 b2WeldJoint::GetAnchorB() const
  function b2Vec2 (line 302) | b2Vec2 b2WeldJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 308) | float32 b2WeldJoint::GetReactionTorque(float32 inv_dt) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2WeldJoint.h
  function b2JointDef (line 27) | struct b2WeldJointDef : public b2JointDef
  function class (line 62) | class b2WeldJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2WheelJoint.cpp
  function b2Vec2 (line 329) | b2Vec2 b2WheelJoint::GetAnchorA() const
  function b2Vec2 (line 334) | b2Vec2 b2WheelJoint::GetAnchorB() const
  function b2Vec2 (line 339) | b2Vec2 b2WheelJoint::GetReactionForce(float32 inv_dt) const
  function float32 (line 344) | float32 b2WheelJoint::GetReactionTorque(float32 inv_dt) const
  function float32 (line 349) | float32 b2WheelJoint::GetJointTranslation() const
  function float32 (line 363) | float32 b2WheelJoint::GetJointSpeed() const
  function float32 (line 396) | float32 b2WheelJoint::GetMotorTorque(float32 inv_dt) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/Joints/b2WheelJoint.h
  function b2JointDef (line 30) | struct b2WheelJointDef : public b2JointDef
  function class (line 79) | class b2WheelJoint : public b2Joint

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2Body.cpp
  function b2Fixture (line 166) | b2Fixture* b2Body::CreateFixture(const b2FixtureDef* def)
  function b2Fixture (line 205) | b2Fixture* b2Body::CreateFixture(const b2Shape* shape, float32 density)

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2Body.h
  type b2FixtureDef (line 31) | struct b2FixtureDef
  type b2JointEdge (line 32) | struct b2JointEdge
  type b2ContactEdge (line 33) | struct b2ContactEdge
  type b2BodyType (line 39) | enum b2BodyType
  function class (line 126) | class b2Body
  function SetAwake (line 633) | inline void b2Body::SetAwake(bool flag)
  function SetSleepingAllowed (line 669) | inline void b2Body::SetSleepingAllowed(bool flag)
  function b2Fixture (line 687) | inline b2Fixture* b2Body::GetFixtureList()
  function b2Fixture (line 692) | inline const b2Fixture* b2Body::GetFixtureList() const
  function b2JointEdge (line 697) | inline b2JointEdge* b2Body::GetJointList()
  function b2JointEdge (line 702) | inline const b2JointEdge* b2Body::GetJointList() const
  function b2ContactEdge (line 707) | inline b2ContactEdge* b2Body::GetContactList()
  function b2ContactEdge (line 712) | inline const b2ContactEdge* b2Body::GetContactList() const
  function b2Body (line 717) | inline b2Body* b2Body::GetNext()
  function b2Body (line 722) | inline const b2Body* b2Body::GetNext() const
  function SetUserData (line 727) | inline void b2Body::SetUserData(void* data)
  function ApplyForce (line 737) | inline void b2Body::ApplyForce(const b2Vec2& force, const b2Vec2& point,...
  function ApplyForceToCenter (line 757) | inline void b2Body::ApplyForceToCenter(const b2Vec2& force, bool wake)
  function ApplyTorque (line 776) | inline void b2Body::ApplyTorque(float32 torque, bool wake)
  function ApplyLinearImpulse (line 795) | inline void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Ve...
  function ApplyAngularImpulse (line 815) | inline void b2Body::ApplyAngularImpulse(float32 impulse, bool wake)
  function SynchronizeTransform (line 834) | inline void b2Body::SynchronizeTransform()
  function Advance (line 840) | inline void b2Body::Advance(float32 alpha)
  function b2World (line 850) | inline b2World* b2Body::GetWorld()
  function b2World (line 855) | inline const b2World* b2Body::GetWorld() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2ContactManager.h
  function class (line 30) | class b2ContactManager

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2Fixture.h
  type b2FixtureProxy (line 94) | struct b2FixtureProxy
  function IsSensor (line 125) | bool IsSensor() const;
  function b2Shape (line 243) | inline b2Shape* b2Fixture::GetShape()
  function b2Shape (line 248) | inline const b2Shape* b2Fixture::GetShape() const
  function SetUserData (line 268) | inline void b2Fixture::SetUserData(void* data)
  function b2Body (line 273) | inline b2Body* b2Fixture::GetBody()
  function b2Body (line 278) | inline const b2Body* b2Fixture::GetBody() const
  function b2Fixture (line 283) | inline b2Fixture* b2Fixture::GetNext()
  function b2Fixture (line 288) | inline const b2Fixture* b2Fixture::GetNext() const
  function SetDensity (line 293) | inline void b2Fixture::SetDensity(float32 density)
  function SetFriction (line 309) | inline void b2Fixture::SetFriction(float32 friction)
  function SetRestitution (line 319) | inline void b2Fixture::SetRestitution(float32 restitution)
  function TestPoint (line 324) | inline bool b2Fixture::TestPoint(const b2Vec2& p) const
  function RayCast (line 329) | inline bool b2Fixture::RayCast(b2RayCastOutput* output, const b2RayCastI...
  function GetMassData (line 334) | inline void b2Fixture::GetMassData(b2MassData* massData) const
  function b2AABB (line 339) | inline const b2AABB& b2Fixture::GetAABB(int32 childIndex) const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2Island.h
  type b2ContactVelocityConstraint (line 30) | struct b2ContactVelocityConstraint
  type b2Profile (line 31) | struct b2Profile
  function class (line 34) | class b2Island

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2TimeStep.h
  type b2Profile (line 25) | struct b2Profile
  type b2TimeStep (line 38) | struct b2TimeStep
  type b2Position (line 49) | struct b2Position
  type b2Velocity (line 56) | struct b2Velocity
  type b2SolverData (line 63) | struct b2SolverData

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2World.cpp
  function b2Body (line 107) | b2Body* b2World::CreateBody(const b2BodyDef* def)
  function b2Joint (line 212) | b2Joint* b2World::CreateJoint(const b2JointDef* def)
  type b2WorldQueryWrapper (line 974) | struct b2WorldQueryWrapper
    method QueryCallback (line 976) | bool QueryCallback(int32 proxyId)
  type b2WorldRayCastWrapper (line 994) | struct b2WorldRayCastWrapper
    method float32 (line 996) | float32 RayCastCallback(const b2RayCastInput& input, int32 proxyId)
  function int32 (line 1239) | int32 b2World::GetProxyCount() const
  function int32 (line 1244) | int32 b2World::GetTreeHeight() const
  function int32 (line 1249) | int32 b2World::GetTreeBalance() const
  function float32 (line 1254) | float32 b2World::GetTreeQuality() const

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2World.h
  type b2AABB (line 29) | struct b2AABB
  type b2BodyDef (line 30) | struct b2BodyDef
  type b2Color (line 31) | struct b2Color
  type b2JointDef (line 32) | struct b2JointDef
  function class (line 41) | class b2World
  function SetAutoClearForces (line 326) | inline void b2World::SetAutoClearForces(bool flag)

FILE: Framework/3rdPartyLibs/Box2D/Dynamics/b2WorldCallbacks.h
  type b2Vec2 (line 24) | struct b2Vec2
  type b2Transform (line 25) | struct b2Transform
  type b2ContactResult (line 30) | struct b2ContactResult
  type b2Manifold (line 31) | struct b2Manifold
  function class (line 36) | class b2DestructionListener
  function class (line 52) | class b2ContactFilter
  type b2ContactImpulse (line 65) | struct b2ContactImpulse
  function class (line 81) | class b2ContactListener
  function class (line 123) | class b2QueryCallback
  function class (line 135) | class b2RayCastCallback

FILE: Framework/3rdPartyLibs/Box2D/Rope/b2Rope.h
  function class (line 63) | class b2Rope

FILE: Framework/3rdPartyLibs/CDT/extras/InitializeWithGrid.h
  function namespace (line 24) | namespace CDT

FILE: Framework/3rdPartyLibs/CDT/extras/VerifyTopology.h
  function namespace (line 17) | namespace CDT

FILE: Framework/3rdPartyLibs/CDT/include/CDT.h
  function namespace (line 27) | namespace CDT
  function namespace (line 499) | namespace boost
  function namespace (line 517) | namespace CDT

FILE: Framework/3rdPartyLibs/CDT/include/CDT.hpp
  type CDT (line 17) | namespace CDT
    type detail (line 22) | namespace detail
      function arr3 (line 28) | array<T, 3> arr3(const T& v0, const T& v1, const T& v2)
    function TriIndUSet (line 197) | TriIndUSet Triangulation<T, TNearPointLocator>::growToBoundary(
    function TriInd (line 237) | TriInd Triangulation<T, TNearPointLocator>::addTriangle(const Triangle...
    function TriInd (line 251) | TriInd Triangulation<T, TNearPointLocator>::addTriangle()
    function TriInd (line 645) | TriInd Triangulation<T, TNearPointLocator>::walkTriangles(
    function splitPseudopolygon (line 816) | inline std::pair<std::vector<VertInd>, std::vector<VertInd> >
    function TriInd (line 829) | TriInd Triangulation<T, TNearPointLocator>::triangulatePseudopolygon(
    function VertInd (line 868) | VertInd Triangulation<T, TNearPointLocator>::findDelaunayPoint(
    function TriInd (line 891) | TriInd Triangulation<T, TNearPointLocator>::pseudopolyOuterTriangle(
    function DuplicatesInfo (line 913) | DuplicatesInfo RemoveDuplicates(std::vector<V2d<T> >& vertices)
    function CDT_INLINE_IF_HEADER_ONLY (line 921) | CDT_INLINE_IF_HEADER_ONLY void
    function DuplicatesInfo (line 931) | DuplicatesInfo RemoveDuplicatesAndRemapEdges(
    function CDT_INLINE_IF_HEADER_ONLY (line 939) | CDT_INLINE_IF_HEADER_ONLY
    function CDT_INLINE_IF_HEADER_ONLY (line 978) | CDT_INLINE_IF_HEADER_ONLY
    function CDT_INLINE_IF_HEADER_ONLY (line 1011) | CDT_INLINE_IF_HEADER_ONLY
    function CDT_INLINE_IF_HEADER_ONLY (line 1046) | CDT_INLINE_IF_HEADER_ONLY
    function CDT_INLINE_IF_HEADER_ONLY (line 1067) | CDT_INLINE_IF_HEADER_ONLY EdgeUSet

FILE: Framework/3rdPartyLibs/CDT/include/CDTUtils.h
  function namespace (line 61) | namespace CDT
  function namespace (line 79) | namespace CDT
  function namespace (line 91) | namespace CDT
  function Edge (line 190) | struct CDT_EXPORT Edge
  function namespace (line 374) | namespace boost

FILE: Framework/3rdPartyLibs/CDT/include/CDTUtils.hpp
  type CDT (line 18) | namespace CDT
    function envelopBox (line 35) | Box2d<T> envelopBox(const std::vector<V2d<T> >& vertices)
    function CDT_INLINE_IF_HEADER_ONLY (line 49) | CDT_INLINE_IF_HEADER_ONLY bool Edge::operator==(const Edge& other) const
    function CDT_INLINE_IF_HEADER_ONLY (line 54) | CDT_INLINE_IF_HEADER_ONLY VertInd Edge::v1() const
    function CDT_INLINE_IF_HEADER_ONLY (line 59) | CDT_INLINE_IF_HEADER_ONLY VertInd Edge::v2() const
    function CDT_INLINE_IF_HEADER_ONLY (line 64) | CDT_INLINE_IF_HEADER_ONLY const std::pair<VertInd, VertInd>& Edge::ver...
    function CDT_INLINE_IF_HEADER_ONLY (line 72) | CDT_INLINE_IF_HEADER_ONLY Index ccw(Index i)
    function CDT_INLINE_IF_HEADER_ONLY (line 77) | CDT_INLINE_IF_HEADER_ONLY Index cw(Index i)
    function CDT_INLINE_IF_HEADER_ONLY (line 82) | CDT_INLINE_IF_HEADER_ONLY bool isOnEdge(const PtTriLocation::Enum loca...
    function CDT_INLINE_IF_HEADER_ONLY (line 87) | CDT_INLINE_IF_HEADER_ONLY Index edgeNeighbor(const PtTriLocation::Enum...
    function locatePointLine (line 95) | PtLineLocation::Enum
    function locatePointTriangle (line 109) | PtTriLocation::Enum locatePointTriangle(
    function CDT_INLINE_IF_HEADER_ONLY (line 135) | CDT_INLINE_IF_HEADER_ONLY Index opoNbr(const Index vertIndex)
    function CDT_INLINE_IF_HEADER_ONLY (line 146) | CDT_INLINE_IF_HEADER_ONLY Index opoVrt(const Index neighborIndex)
    function CDT_INLINE_IF_HEADER_ONLY (line 157) | CDT_INLINE_IF_HEADER_ONLY Index
    function CDT_INLINE_IF_HEADER_ONLY (line 166) | CDT_INLINE_IF_HEADER_ONLY Index opposedTriangleInd(
    function CDT_INLINE_IF_HEADER_ONLY (line 180) | CDT_INLINE_IF_HEADER_ONLY Index
    function CDT_INLINE_IF_HEADER_ONLY (line 189) | CDT_INLINE_IF_HEADER_ONLY Index
    function CDT_INLINE_IF_HEADER_ONLY (line 198) | CDT_INLINE_IF_HEADER_ONLY Index vertexInd(const Triangle& tri, const V...
    function CDT_INLINE_IF_HEADER_ONLY (line 206) | CDT_INLINE_IF_HEADER_ONLY TriInd
    function CDT_INLINE_IF_HEADER_ONLY (line 212) | CDT_INLINE_IF_HEADER_ONLY VertInd
    function isInCircumcircle (line 219) | bool isInCircumcircle(
    function CDT_INLINE_IF_HEADER_ONLY (line 229) | CDT_INLINE_IF_HEADER_ONLY
    function T (line 239) | T distanceSquared(const T ax, const T ay, const T bx, const T by)
    function T (line 247) | T distance(const T ax, const T ay, const T bx, const T by)
    function T (line 253) | T distance(const V2d<T>& a, const V2d<T>& b)
    function T (line 259) | T distanceSquared(const V2d<T>& a, const V2d<T>& b)

FILE: Framework/3rdPartyLibs/CDT/include/KDTree.h
  function namespace (line 15) | namespace KDTree
  function insert (line 98) | void
  function value_type (line 166) | value_type nearest(
  function calcSplitInfo (line 254) | static void calcSplitInfo(
  function isInsideBox (line 283) | static bool isInsideBox(
  function extendTree (line 293) | void extendTree(const point_type& point)
  function initializeRootBox (line 322) | void initializeRootBox(const std::vector<point_type>& points)
  type NearestTask (line 347) | struct NearestTask

FILE: Framework/3rdPartyLibs/CDT/include/LocatorKDTree.h
  function namespace (line 16) | namespace CDT

FILE: Framework/3rdPartyLibs/CDT/include/predicates.h
  function namespace (line 38) | namespace  predicates {
  function namespace (line 194) | namespace  predicates {
  function ScaleExpansion (line 351) | static size_t ScaleExpansion(T const * const e, const size_t n, const T ...
  function T (line 383) | static inline T FastPlusTail(const T a, const T b, const T x) {
  function T (line 389) | static inline T MinusTail(const T a, const T b, const T x) {
  function T (line 406) | static inline T DekkersProduct(const T /*a*/, const std::pair<T, T> aSpl...
  function T (line 421) | static T MultTail(const T a, const T b, const T p) {return DekkersProduc...
  function T (line 422) | static T MultTailPreSplit(const T a, const T b, const std::pair<T, T> bS...
  function namespace (line 484) | namespace exact {

FILE: Framework/3rdPartyLibs/CDT/include/remove_at.hpp
  function ForwardIt (line 19) | inline ForwardIt remove_at(

FILE: Framework/3rdPartyLibs/CDT/src/CDT.cpp
  type CDT (line 21) | namespace CDT
    class Triangulation<float> (line 24) | class Triangulation<float>
    class Triangulation<double> (line 25) | class Triangulation<double>
    type V2d<float> (line 26) | struct V2d<float>
    type V2d<double> (line 27) | struct V2d<double>
    type Box2d<float> (line 28) | struct Box2d<float>
    type Box2d<double> (line 29) | struct Box2d<double>

FILE: Framework/3rdPartyLibs/FreeType/include/config/ftconfig.h
  type FT_Int16 (line 162) | typedef signed short  FT_Int16;
  type FT_UInt16 (line 173) | typedef unsigned short  FT_UInt16;
  type FT_Int32 (line 190) | typedef signed XXX  FT_Int32;
  type FT_UInt32 (line 201) | typedef unsigned XXX  FT_UInt32;
  type FT_Int64 (line 213) | typedef signed XXX  FT_Int64;
  type FT_UInt64 (line 225) | typedef unsigned XXX  FT_UInt64;
  type FT_Int32 (line 233) | typedef signed int      FT_Int32;
  type FT_UInt32 (line 234) | typedef unsigned int    FT_UInt32;
  type FT_Int32 (line 238) | typedef signed long     FT_Int32;
  type FT_UInt32 (line 239) | typedef unsigned long   FT_UInt32;
  type FT_Fast (line 249) | typedef int            FT_Fast;
  type FT_UFast (line 250) | typedef unsigned int   FT_UFast;
  type FT_Fast (line 254) | typedef long           FT_Fast;
  type FT_UFast (line 255) | typedef unsigned long  FT_UFast;
  type FT_INT64 (line 317) | typedef FT_INT64   FT_Int64;
  type FT_UINT64 (line 318) | typedef FT_UINT64  FT_UInt64;

FILE: Framework/3rdPartyLibs/FreeType/include/freetype.h
  type FT_Glyph_Metrics_ (line 309) | struct  FT_Glyph_Metrics_
  type FT_Bitmap_Size (line 363) | typedef struct  FT_Bitmap_Size_
  type FT_LibraryRec_ (line 406) | struct FT_LibraryRec_
  type FT_ModuleRec_ (line 426) | struct FT_ModuleRec_
  type FT_DriverRec_ (line 438) | struct FT_DriverRec_
  type FT_RendererRec_ (line 452) | struct FT_RendererRec_
  type FT_FaceRec_ (line 484) | struct FT_FaceRec_
  type FT_SizeRec_ (line 515) | struct FT_SizeRec_
  type FT_GlyphSlotRec_ (line 536) | struct FT_GlyphSlotRec_
  type FT_CharMapRec_ (line 568) | struct FT_CharMapRec_
  type FT_Encoding (line 742) | typedef enum  FT_Encoding_
  type FT_CharMapRec (line 816) | typedef struct  FT_CharMapRec_
  type FT_Face_InternalRec_ (line 847) | struct FT_Face_InternalRec_
  type FT_FaceRec (line 995) | typedef struct  FT_FaceRec_
  type FT_Size_InternalRec_ (line 1404) | struct FT_Size_InternalRec_
  type FT_Size_Metrics (line 1462) | typedef struct  FT_Size_Metrics_
  type FT_SizeRec (line 1497) | typedef struct  FT_SizeRec_
  type FT_SubGlyphRec_ (line 1523) | struct FT_SubGlyphRec_
  type FT_Slot_InternalRec_ (line 1535) | struct FT_Slot_InternalRec_
  type FT_GlyphSlotRec (line 1706) | typedef struct  FT_GlyphSlotRec_
  type FT_Parameter (line 1860) | typedef struct  FT_Parameter_
  type FT_Open_Args (line 1926) | typedef struct  FT_Open_Args_
  type FT_Size_Request_Type (line 2246) | typedef enum  FT_Size_Request_Type_
  type FT_Size_RequestRec (line 2286) | typedef struct  FT_Size_RequestRec_
  type FT_Size_RequestRec_ (line 2305) | struct FT_Size_RequestRec_
  type FT_Render_Mode (line 2850) | typedef enum  FT_Render_Mode_
  type FT_Kerning_Mode (line 2919) | typedef enum  FT_Kerning_Mode_

FILE: Framework/3rdPartyLibs/FreeType/include/ftautoh.h
  type FT_Prop_GlyphToScriptMap (line 248) | typedef struct  FT_Prop_GlyphToScriptMap_
  type FT_Prop_IncreaseXHeight (line 387) | typedef struct  FT_Prop_IncreaseXHeight_

FILE: Framework/3rdPartyLibs/FreeType/include/ftbdf.h
  type BDF_PropertyType_ (line 74) | enum  BDF_PropertyType_
  type BDF_PropertyRec_ (line 93) | struct BDF_PropertyRec_
  type BDF_PropertyRec (line 118) | typedef struct  BDF_PropertyRec_

FILE: Framework/3rdPartyLibs/FreeType/include/ftcache.h
  type FT_Error (line 209) | typedef FT_Error
  type FTC_ManagerRec_ (line 250) | struct FTC_ManagerRec_
  type FTC_NodeRec_ (line 270) | struct FTC_NodeRec_
  type FTC_ScalerRec (line 425) | typedef struct  FTC_ScalerRec_
  type FTC_ScalerRec_ (line 445) | struct FTC_ScalerRec_
  type FTC_CMapCacheRec_ (line 560) | struct FTC_CMapCacheRec_
  type FTC_ImageTypeRec (line 667) | typedef struct  FTC_ImageTypeRec_
  type FTC_ImageTypeRec_ (line 686) | struct FTC_ImageTypeRec_
  type FTC_ImageCacheRec_ (line 708) | struct FTC_ImageCacheRec_
  type FTC_SBitRec_ (line 849) | struct FTC_SBitRec_
  type FTC_SBitRec (line 887) | typedef struct  FTC_SBitRec_
  type FTC_SBitCacheRec_ (line 916) | struct FTC_SBitCacheRec_

FILE: Framework/3rdPartyLibs/FreeType/include/ftglyph.h
  type FT_Glyph_Class_ (line 69) | struct FT_Glyph_Class_
  type FT_GlyphRec_ (line 87) | struct FT_GlyphRec_
  type FT_GlyphRec (line 108) | typedef struct  FT_GlyphRec_
  type FT_BitmapGlyphRec_ (line 127) | struct FT_BitmapGlyphRec_
  type FT_BitmapGlyphRec (line 160) | typedef struct  FT_BitmapGlyphRec_
  type FT_OutlineGlyphRec_ (line 179) | struct FT_OutlineGlyphRec_
  type FT_OutlineGlyphRec (line 208) | typedef struct  FT_OutlineGlyphRec_
  type FT_Glyph_BBox_Mode (line 317) | typedef enum  FT_Glyph_BBox_Mode_

FILE: Framework/3rdPartyLibs/FreeType/include/ftimage.h
  type FT_Vector (line 74) | typedef struct  FT_Vector_
  type FT_BBox (line 115) | typedef struct  FT_BBox_
  type FT_Pixel_Mode (line 180) | typedef enum  FT_Pixel_Mode_
  type FT_Bitmap (line 266) | typedef struct  FT_Bitmap_
  type FT_Outline (line 339) | typedef struct  FT_Outline_
  type FT_Outline_Funcs (line 633) | typedef struct  FT_Outline_Funcs_
  type FT_Glyph_Format (line 720) | typedef enum  FT_Glyph_Format_
  type FT_RasterRec_ (line 805) | struct FT_RasterRec_
  type FT_Span (line 833) | typedef struct  FT_Span_
  type FT_Raster_Params (line 1012) | typedef struct  FT_Raster_Params_
  type FT_Raster_Funcs (line 1196) | typedef struct  FT_Raster_Funcs_

FILE: Framework/3rdPartyLibs/FreeType/include/ftincrem.h
  type FT_IncrementalRec_ (line 84) | struct FT_IncrementalRec_
  type FT_Incremental_MetricsRec (line 115) | typedef struct  FT_Incremental_MetricsRec_
  type FT_Incremental_MetricsRec_ (line 134) | struct FT_Incremental_MetricsRec_
  type FT_Error (line 178) | typedef FT_Error
  type FT_Error (line 240) | typedef FT_Error
  type FT_Incremental_FuncsRec (line 269) | typedef struct  FT_Incremental_FuncsRec_
  type FT_Incremental_InterfaceRec (line 314) | typedef struct  FT_Incremental_InterfaceRec_
  type FT_Incremental_InterfaceRec (line 331) | typedef FT_Incremental_InterfaceRec*   FT_Incremental_Interface;

FILE: Framework/3rdPartyLibs/FreeType/include/ftlcdfil.h
  type FT_LcdFilter_ (line 132) | enum  FT_LcdFilter_

FILE: Framework/3rdPartyLibs/FreeType/include/ftmm.h
  type FT_MM_Axis_ (line 73) | struct  FT_MM_Axis_
  type FT_Multi_Master (line 103) | typedef struct  FT_Multi_Master_
  type FT_Var_Axis (line 140) | typedef struct  FT_Var_Axis_
  type FT_Var_Named_Style (line 170) | typedef struct  FT_Var_Named_Style_
  type FT_MM_Var (line 210) | typedef struct  FT_MM_Var_

FILE: Framework/3rdPartyLibs/FreeType/include/ftmodapi.h
  type FT_Pointer (line 133) | typedef FT_Pointer  FT_Module_Interface;
  type FT_Error (line 147) | typedef FT_Error
  type FT_Module_Interface (line 179) | typedef FT_Module_Interface
  type FT_Module_Class (line 213) | typedef struct  FT_Module_Class_
  type FT_TrueTypeEngineType (line 627) | typedef enum  FT_TrueTypeEngineType_

FILE: Framework/3rdPartyLibs/FreeType/include/ftoutln.h
  function FT_BEGIN_HEADER (line 34) | FT_BEGIN_HEADER

FILE: Framework/3rdPartyLibs/FreeType/include/ftrender.h
  type FT_Error (line 57) | typedef FT_Error
  type FT_Error (line 61) | typedef FT_Error
  type FT_Glyph_Class_ (line 74) | struct  FT_Glyph_Class_
  type FT_Error (line 87) | typedef FT_Error
  type FT_Error (line 93) | typedef FT_Error
  type FT_Error (line 106) | typedef FT_Error
  type FT_Renderer_Class (line 144) | typedef struct  FT_Renderer_Class_

FILE: Framework/3rdPartyLibs/FreeType/include/ftsnames.h
  type FT_SfntName_ (line 98) | struct  FT_SfntName_

FILE: Framework/3rdPartyLibs/FreeType/include/ftstroke.h
  type FT_StrokerRec_ (line 92) | struct FT_StrokerRec_
  type FT_Stroker_LineJoin (line 141) | typedef enum  FT_Stroker_LineJoin_
  type FT_Stroker_LineCap (line 174) | typedef enum  FT_Stroker_LineCap_
  type FT_StrokerBorder (line 208) | typedef enum  FT_StrokerBorder_

FILE: Framework/3rdPartyLibs/FreeType/include/ftsystem.h
  type FT_MemoryRec_ (line 66) | struct FT_MemoryRec_
  type FT_MemoryRec_ (line 171) | struct  FT_MemoryRec_
  type FT_StreamRec_ (line 200) | struct FT_StreamRec_
  type FT_StreamDesc (line 213) | typedef union  FT_StreamDesc_
  type FT_StreamRec (line 330) | typedef struct  FT_StreamRec_

FILE: Framework/3rdPartyLibs/FreeType/include/fttypes.h
  type FT_FWord (line 120) | typedef signed short  FT_FWord;
  type FT_UFWord (line 132) | typedef unsigned short  FT_UFWord;
  type FT_Char (line 143) | typedef signed char  FT_Char;
  type FT_Byte (line 154) | typedef unsigned char  FT_Byte;
  type FT_Byte (line 165) | typedef const FT_Byte*  FT_Bytes;
  type FT_UInt32 (line 176) | typedef FT_UInt32  FT_Tag;
  type FT_String (line 187) | typedef char  FT_String;
  type FT_Short (line 198) | typedef signed short  FT_Short;
  type FT_UShort (line 209) | typedef unsigned short  FT_UShort;
  type FT_Int (line 220) | typedef signed int  FT_Int;
  type FT_UInt (line 231) | typedef unsigned int  FT_UInt;
  type FT_Long (line 242) | typedef signed long  FT_Long;
  type FT_ULong (line 253) | typedef unsigned long  FT_ULong;
  type FT_F2Dot14 (line 264) | typedef signed short  FT_F2Dot14;
  type FT_F26Dot6 (line 276) | typedef signed long  FT_F26Dot6;
  type FT_Fixed (line 288) | typedef signed long  FT_Fixed;
  type FT_Error (line 300) | typedef int  FT_Error;
  type FT_Offset (line 324) | typedef size_t  FT_Offset;
  type ft_ptrdiff_t (line 337) | typedef ft_ptrdiff_t  FT_PtrDist;
  type FT_UnitVector (line 354) | typedef struct  FT_UnitVector_
  type FT_Matrix (line 385) | typedef struct  FT_Matrix_
  type FT_Data (line 406) | typedef struct  FT_Data_
  type FT_Generic (line 459) | typedef struct  FT_Generic_
  type FT_ListNodeRec_ (line 515) | struct FT_ListNodeRec_
  type FT_ListRec_ (line 526) | struct FT_ListRec_
  type FT_ListNodeRec (line 544) | typedef struct  FT_ListNodeRec_
  type FT_ListRec (line 567) | typedef struct  FT_ListRec_

FILE: Framework/3rdPartyLibs/FreeType/include/ftwinfnt.h
  type FT_WinFNT_HeaderRec (line 184) | typedef struct  FT_WinFNT_HeaderRec_
  type FT_WinFNT_HeaderRec_ (line 234) | struct FT_WinFNT_HeaderRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/autohint.h
  type FT_AutoHinterRec_ (line 80) | struct FT_AutoHinterRec_
  type FT_Error (line 174) | typedef FT_Error
  type FT_AutoHinter_InterfaceRec (line 190) | typedef struct  FT_AutoHinter_InterfaceRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftcalc.h
  function FT_Int32 (line 79) | static __inline__ FT_Int32
  function FT_Int32 (line 115) | static __inline__ FT_Int32
  function FT_Int32 (line 184) | static __inline__ FT_Int32

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftdebug.h
  type FT_Trace (line 57) | typedef enum  FT_Trace_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftdriver.h
  type FT_Error (line 41) | typedef FT_Error
  type FT_Error (line 48) | typedef FT_Error
  type FT_Error (line 55) | typedef FT_Error
  type FT_Error (line 59) | typedef FT_Error
  type FT_Error (line 63) | typedef FT_Error
  type FT_UInt (line 70) | typedef FT_UInt
  type FT_Long (line 74) | typedef FT_Long
  type FT_Error (line 79) | typedef FT_Error
  type FT_Error (line 86) | typedef FT_Error
  type FT_Error (line 91) | typedef FT_Error
  type FT_Driver_ClassRec (line 166) | typedef struct  FT_Driver_ClassRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftgloadr.h
  type FT_GlyphLoaderRec_ (line 43) | struct FT_GlyphLoaderRec_
  type FT_SubGlyphRec (line 57) | typedef struct  FT_SubGlyphRec_
  type FT_GlyphLoadRec (line 68) | typedef struct  FT_GlyphLoadRec_
  type FT_GlyphLoaderRec (line 79) | typedef struct  FT_GlyphLoaderRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftmemory.h
  function T (line 69) | T*

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftobjs.h
  type FT_CMapRec_ (line 127) | struct FT_CMapRec_
  type FT_CMap_ClassRec_ (line 130) | struct FT_CMap_ClassRec_
  type FT_CMapRec (line 133) | typedef struct  FT_CMapRec_
  type FT_Error (line 151) | typedef FT_Error
  type FT_UInt (line 158) | typedef FT_UInt
  type FT_UInt (line 162) | typedef FT_UInt
  type FT_UInt (line 166) | typedef FT_UInt
  type FT_Bool (line 172) | typedef FT_Bool
  type FT_UInt32 (line 177) | typedef FT_UInt32 *
  type FT_UInt32 (line 181) | typedef FT_UInt32 *
  type FT_UInt32 (line 186) | typedef FT_UInt32 *
  type FT_CMap_ClassRec (line 192) | typedef struct  FT_CMap_ClassRec_
  type FT_Face_InternalRec (line 355) | typedef struct  FT_Face_InternalRec_
  type FT_GlyphSlot_InternalRec (line 409) | typedef struct  FT_Slot_InternalRec_
  type FT_Size_InternalRec (line 434) | typedef struct  FT_Size_InternalRec_
  type FT_ModuleRec (line 471) | typedef struct  FT_ModuleRec_
  type FT_RendererRec (line 690) | typedef struct  FT_RendererRec_
  type FT_DriverRec (line 747) | typedef struct  FT_DriverRec_
  type FT_LibraryRec (line 856) | typedef struct  FT_LibraryRec_
  type FT_Error (line 906) | typedef FT_Error
  type FT_UInt (line 912) | typedef FT_UInt
  type FT_Error (line 1344) | typedef FT_Error

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftpic.h
  type FT_PIC_Container (line 34) | typedef struct  FT_PIC_Container_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftrfork.h
  type FT_RFork_Ref (line 44) | typedef struct  FT_RFork_Ref_
  type FT_Error (line 52) | typedef FT_Error
  type FT_RFork_Rule (line 59) | typedef enum  FT_RFork_Rule_ {
  type ft_raccess_guess_rec (line 77) | typedef struct ft_raccess_guess_rec_ {

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftserv.h
  type FT_ServiceDescRec (line 150) | typedef struct  FT_ServiceDescRec_
  type FT_ServiceDescRec (line 157) | typedef const FT_ServiceDescRec*  FT_ServiceDesc;
  type FT_ServiceCacheRec (line 634) | typedef struct  FT_ServiceCacheRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftstream.h
  type FT_Frame_Op (line 57) | typedef enum  FT_Frame_Op_
  type FT_Frame_Field (line 86) | typedef struct  FT_Frame_Field_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/ftvalid.h
  type FT_ValidatorRec_ (line 42) | struct FT_ValidatorRec_
  type FT_ValidationLevel (line 70) | typedef enum  FT_ValidationLevel_
  type FT_ValidatorRec (line 88) | typedef struct  FT_ValidatorRec_

FILE: Framework/3rdPartyLibs/FreeType/include/internal/psaux.h
  type PS_TableRec_ (line 42) | struct PS_TableRec_
  type PS_Table_FuncsRec_ (line 43) | struct PS_Table_FuncsRec_
  type PS_Table_FuncsRec (line 63) | typedef struct  PS_Table_FuncsRec_
  type PS_TableRec (line 120) | typedef struct  PS_TableRec_
  type PS_ParserRec_ (line 146) | struct PS_ParserRec_
  type T1_TokenRec_ (line 148) | struct T1_TokenRec_
  type T1_FieldRec_ (line 150) | struct T1_FieldRec_
  type T1_TokenType (line 154) | typedef enum  T1_TokenType_
  type T1_TokenRec (line 169) | typedef struct  T1_TokenRec_
  type T1_FieldType (line 179) | typedef enum  T1_FieldType_
  type T1_FieldLocation (line 200) | typedef enum  T1_FieldLocation_
  type T1_FieldRec (line 224) | typedef struct  T1_FieldRec_
  type PS_Parser_FuncsRec_ (line 340) | struct PS_Parser_FuncsRec_
  type PS_Parser_FuncsRec (line 342) | typedef struct  PS_Parser_FuncsRec_
  type PS_ParserRec (line 428) | typedef struct  PS_ParserRec_
  type T1_BuilderRec_ (line 450) | struct T1_BuilderRec_
  type FT_Error (line 453) | typedef FT_Error
  type FT_Error (line 463) | typedef FT_Error
  type FT_Error (line 468) | typedef FT_Error
  type FT_Error (line 471) | typedef FT_Error
  type T1_Builder_FuncsRec_ (line 480) | struct T1_Builder_FuncsRec_
  type T1_Builder_FuncsRec (line 482) | typedef struct  T1_Builder_FuncsRec_
  type T1_ParseState (line 505) | typedef enum  T1_ParseState_
  type T1_BuilderRec (line 563) | typedef struct  T1_BuilderRec_
  type T1_Decoder_ZoneRec (line 621) | typedef struct  T1_Decoder_ZoneRec_
  type T1_DecoderRec_ (line 630) | struct T1_DecoderRec_
  type T1_Decoder_FuncsRec_ (line 631) | struct T1_Decoder_FuncsRec_
  type FT_Error (line 634) | typedef FT_Error
  type T1_Decoder_FuncsRec (line 639) | typedef struct  T1_Decoder_FuncsRec_
  type T1_DecoderRec (line 663) | typedef struct  T1_DecoderRec_
  type AFM_ParserRec_ (line 712) | struct AFM_ParserRec_
  type AFM_Parser_FuncsRec (line 714) | typedef struct  AFM_Parser_FuncsRec_
  type AFM_StreamRec_ (line 731) | struct AFM_StreamRec_
  type AFM_ParserRec (line 753) | typedef struct  AFM_ParserRec_
  type T1_CMap_ClassesRec_ (line 778) | struct T1_CMap_ClassesRec_
  type T1_CMap_ClassesRec (line 780) | typedef struct T1_CMap_ClassesRec_
  type PSAux_ServiceRec (line 798) | typedef struct  PSAux_ServiceRec_
  type PSAux_ServiceRec (line 819) | typedef PSAux_ServiceRec   PSAux_Interface;

FILE: Framework/3rdPartyLibs/FreeType/include/internal/pshints.h
  type PSH_GlobalsRec_ (line 41) | struct PSH_GlobalsRec_
  type FT_Error (line 43) | typedef FT_Error
  type PSH_Globals_FuncsRec (line 59) | typedef struct  PSH_Globals_FuncsRec_
  type T1_HintsRec_ (line 104) | struct T1_HintsRec_
  type T1_Hints_FuncsRec_ (line 117) | struct T1_Hints_FuncsRec_
  type FT_Error (line 265) | typedef FT_Error
  type FT_Error (line 304) | typedef FT_Error
  type T1_Hints_FuncsRec (line 342) | typedef struct  T1_Hints_FuncsRec_
  type T2_HintsRec_ (line 391) | struct T2_HintsRec_
  type T2_Hints_FuncsRec_ (line 404) | struct T2_Hints_FuncsRec_
  type FT_Error (line 579) | typedef FT_Error
  type FT_Error (line 618) | typedef FT_Error
  type T2_Hints_FuncsRec (line 656) | typedef struct  T2_Hints_FuncsRec_
  type PSHinter_Interface (line 672) | typedef struct  PSHinter_Interface_
  type PSHinter_Interface (line 680) | typedef PSHinter_Interface*  PSHinter_Service;

FILE: Framework/3rdPartyLibs/FreeType/include/internal/
Copy disabled (too large) Download .json
Condensed preview — 4848 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (37,236K chars).
[
  {
    "path": ".gitattributes",
    "chars": 483,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln"
  },
  {
    "path": ".gitignore",
    "chars": 829,
    "preview": "/Framework/Platforms/Windows/Framework.vcxproj.user\n/CodeTool/.vs\n/Editor/Platforms/Windows/Editor.vcxproj.user\n/Framewo"
  },
  {
    "path": ".gitmodules",
    "chars": 1738,
    "preview": "[submodule \"Framework/3rdPartyLibs/tracy\"]\n\tpath = Framework/3rdPartyLibs/tracy\n\turl = https://github.com/wolfpld/tracy\n"
  },
  {
    "path": "AssetsBuildTool/CMakeLists.txt",
    "chars": 1421,
    "preview": "add_library(o2AssetsBuilder STATIC)\n\nadd_compile_definitions(${O2_COMPILE_DEFINITIONS_EXPORT})\n\nfile(GLOB_RECURSE o2Asse"
  },
  {
    "path": "AssetsBuildTool/Sources/AssetsBuildTool.cpp",
    "chars": 790,
    "preview": "extern void __RegisterClass__o2__AtlasAssetConverter();\nextern void __RegisterClass__o2__AtlasAssetConverter__Image();\ne"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.cpp",
    "chars": 13783,
    "preview": "#include \"o2/stdafx.h\"\n#include \"AssetsBuilder.h\"\n\n#include \"o2/Assets/Assets.h\"\n#include \"o2/Assets/Types/AtlasAsset.h\""
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilder.h",
    "chars": 2716,
    "preview": "#pragma once\n\n#include \"o2/Assets/Asset.h\"\n#include \"o2/Assets/AssetInfo.h\"\n#include \"o2/Assets/AssetsTree.h\"\n#include \""
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/AssetsBuilderRunner.cpp",
    "chars": 2358,
    "preview": "#include \"o2/O2.h\"\n\n#include \"o2AssetBuilder/AssetsBuilder.h\"\n#include \"o2/Utils/System/CommandLineOptions.h\"\n\nusing nam"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.cpp",
    "chars": 10137,
    "preview": "#include \"o2/stdafx.h\"\n#include \"AtlasAssetConverter.h\"\n\n#include \"o2/Assets/Types/AtlasAsset.h\"\n#include \"o2/Assets/Typ"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/AtlasAssetConverter.h",
    "chars": 4104,
    "preview": "#pragma once\n\n#include \"IAssetConverter.h\"\n#include \"o2/Utils/Tools/RectPacker.h\"\n#include \"o2AssetBuilder/AssetsBuilder"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.cpp",
    "chars": 1760,
    "preview": "#include \"o2/stdafx.h\"\n#include \"FolderAssetConverter.h\"\n\n#include \"o2/Assets/Assets.h\"\n#include \"o2/Assets/Types/Binary"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/FolderAssetConverter.h",
    "chars": 1634,
    "preview": "#pragma once\n\n#include \"IAssetConverter.h\"\n\nnamespace o2\n{\n    // ----------------\n    // Folder converter\n    // ------"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.cpp",
    "chars": 819,
    "preview": "#include \"o2/stdafx.h\"\n#include \"IAssetConverter.h\"\n\n#include \"o2AssetBuilder/AssetsBuilder.h\"\n\nnamespace o2\n{\n    Vecto"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/IAssetConverter.h",
    "chars": 2107,
    "preview": "#pragma once\n\n#include \"o2/Assets/AssetsTree.h\"\n#include \"o2/Utils/Basic/IObject.h\"\n#include \"o2/Utils/Memory/MemoryMana"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.cpp",
    "chars": 1361,
    "preview": "#include \"o2/stdafx.h\"\n#include \"ImageAssetConverter.h\"\n\n#include \"o2/Assets/Assets.h\"\n#include \"o2/Assets/Types/ImageAs"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/ImageAssetConverter.h",
    "chars": 1242,
    "preview": "#pragma once\n\n#include \"IAssetConverter.h\"\n\nnamespace o2\n{\n    // ---------------------\n    // Image asset converter\n   "
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.cpp",
    "chars": 1438,
    "preview": "#include \"o2/stdafx.h\"\n#include \"StdAssetConverter.h\"\n\n#include \"o2/Assets/Assets.h\"\n#include \"o2/Assets/Types/BinaryAss"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/Converters/StdAssetConverter.h",
    "chars": 1362,
    "preview": "#pragma once\n\n#include \"IAssetConverter.h\"\n\nnamespace o2\n{\n    // ------------------------------------------------------"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.cpp",
    "chars": 1860,
    "preview": "#include \"o2/stdafx.h\"\n#include \"ImageCompressor.h\"\n\n#include \"o2/Utils/FileSystem/FileSystem.h\"\n\nnamespace o2\n{\n    voi"
  },
  {
    "path": "AssetsBuildTool/Sources/o2AssetBuilder/ImageCompressor.h",
    "chars": 1263,
    "preview": "#pragma once\n#include \"o2/Utils/Serialization/Serializable.h\"\n\nnamespace o2\n{\n    class ImageCompressor\n    {\n    public"
  },
  {
    "path": "CMake/CMakeDetermineMetalCompiler.cmake",
    "chars": 2984,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMake/CMakeMetalCompiler.cmake.in",
    "chars": 1183,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMake/CMakeMetalInformation.cmake",
    "chars": 2958,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMake/CMakeTestMetalCompiler.cmake",
    "chars": 2868,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMake/CheckLanguage.cmake",
    "chars": 7496,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMake/MetalShaderSupport.cmake",
    "chars": 2564,
    "preview": "# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n# file LICENCE.txt or https://cmake.org/lic"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 17186,
    "preview": "if(APPLE)\n    project(o2 LANGUAGES C CXX OBJC OBJCXX)\nelse()\n    project(o2 LANGUAGES C CXX)\nendif()\n\nset(CMAKE_CXX_STAN"
  },
  {
    "path": "CodeTool/CMakeLists.txt",
    "chars": 984,
    "preview": "file(GLOB_RECURSE o2CodeTool_SOURCES \"Src/*.cpp\" \"Src/*.h\")\nsource_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${o2Code"
  },
  {
    "path": "CodeTool/Src/CodeTool.cpp",
    "chars": 164,
    "preview": "#include \"CodeToolApp.h\"\n\n\nint main(int nargs, char** agrs)\n{\n\n    CodeToolApplication app;\n    app.SetArguments(agrs, n"
  },
  {
    "path": "CodeTool/Src/CodeToolApp.cpp",
    "chars": 52638,
    "preview": "#include \"CodeToolApp.h\"\n\n#include <algorithm>\n#include <fstream>\n#include <functional> \n#include <iostream>\n#include <f"
  },
  {
    "path": "CodeTool/Src/CodeToolApp.h",
    "chars": 6494,
    "preview": "#pragma once\n\n#include <chrono>\n#include \"CppSyntaxParser.h\"\n\nclass Timer\n{\npublic:\n    // Default constructor\n    Timer"
  },
  {
    "path": "CodeTool/Src/CppSyntaxParser.cpp",
    "chars": 44663,
    "preview": "#include \"CppSyntaxParser.h\"\n\n#include <algorithm>\n#include <fstream>\n#include <functional>\n#include <locale>\n#include <"
  },
  {
    "path": "CodeTool/Src/CppSyntaxParser.h",
    "chars": 6087,
    "preview": "#pragma once\n\n#include \"SyntaxTree.h\"\n\nbool EndsWith(const string& str, const string& ends);\nbool StartsWith(const strin"
  },
  {
    "path": "CodeTool/Src/SyntaxTree.cpp",
    "chars": 15795,
    "preview": "#include \"SyntaxTree.h\"\n\n#include <algorithm>\n\nSyntaxFile::SyntaxFile():\n    mGlobalNamespace(new SyntaxNamespace())\n{}\n"
  },
  {
    "path": "CodeTool/Src/SyntaxTree.h",
    "chars": 15587,
    "preview": "#pragma once\n\n#include <string>\n#include <vector>\n#include <map>\n#include \"pugixml/pugixml.hpp\"\n\n#undef GetClassName\n\nus"
  },
  {
    "path": "CodeTool/Src/pugixml/pugiconfig.hpp",
    "chars": 2718,
    "preview": "/*\n * pugixml parser - version 1.6\n * --------------------------------------------------------\n * Copyright (C) 2006-201"
  },
  {
    "path": "CodeTool/Src/pugixml/pugixml.cpp",
    "chars": 376373,
    "preview": "/*\n * pugixml parser - version 1.6\n * --------------------------------------------------------\n * Copyright (C) 2006-201"
  },
  {
    "path": "CodeTool/Src/pugixml/pugixml.hpp",
    "chars": 54005,
    "preview": "/*\n * pugixml parser - version 1.6\n * --------------------------------------------------------\n * Copyright (C) 2006-201"
  },
  {
    "path": "CompressToolsConfig.json",
    "chars": 631,
    "preview": "{\n    \"formatCommands\": [\n        {\n            \"Key\": \"Windows\",\n            \"Value\": [\n                {\n             "
  },
  {
    "path": "Docs/en/Architecture/architecture.md",
    "chars": 21660,
    "preview": "# Engine Architecture\n\nThe architecture is divided into three layers:\n\n- **High-level**: scene, actors, components, UI, "
  },
  {
    "path": "Docs/en/main.md",
    "chars": 4089,
    "preview": "## Motivation\n\nThe engine is designed as a professional tool for developing 2D mobile games. Its design is guided by two"
  },
  {
    "path": "Docs/ru/Architecture/HighLevel/components.md",
    "chars": 924,
    "preview": "## Базовые компоненты\nВ движке есть базовый набор компонент:\n\n- `o2::ImageComponent`  \nОбертка над `o2::Sprite` из ренде"
  },
  {
    "path": "Docs/ru/Architecture/HighLevel/scene.md",
    "chars": 4536,
    "preview": "## Сцена\nСцена является еще одной подсистемой движка, в которой используются низкоуровенвые системы.\n\nСцена состоит из и"
  },
  {
    "path": "Docs/ru/Architecture/HighLevel/ui.md",
    "chars": 2984,
    "preview": "## Система интерфейсов\nДля работы с пользовательским интерфейсом есть набор специальных акторов, которые могут рисовать "
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/animations.md",
    "chars": 3124,
    "preview": "## Анимации\nВсе анимации в движке наследуются от общего интерфейса `o2::IAnimation`. Он задает интерфейс сущности, котор"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/application.md",
    "chars": 1262,
    "preview": "## Application, обертка приложения\nЭтот класс - точка входа в движок, он отвечает за инициализацию всех подсистем, за иг"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/assets.md",
    "chars": 1854,
    "preview": "## Assets, система ассетов\nКаждый ресурс игры - это ассет. Они попадают в сыром виде в папку с ассетами, и перед запуско"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/input.md",
    "chars": 1954,
    "preview": "## Система ввода, o2::EventSystem и o2::Input\n`o2::EventSystem` занимается обработкой нажатия клавишь и мышки (или тачей"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/physics.md",
    "chars": 707,
    "preview": "## Физика\nВ движок интегрирован физический движок Box2D. Он интегрирован в сцену, и оперируется физическими телами (Rigi"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/render.md",
    "chars": 4146,
    "preview": "## Рендер\nЗа рендеринг отвечает отдельная подсистема Render, с макросом быстрого доступа o2Render.\n\nВ нем инициализирует"
  },
  {
    "path": "Docs/ru/Architecture/LowLevel/scripting.md",
    "chars": 2139,
    "preview": "## Скриптинг\nВ о2 встроен скриптовый движок, с имплементацией JS на jerryscript.\n\nСкриптовым движком управляет подсистем"
  },
  {
    "path": "Docs/ru/Architecture/Utils/containers.md",
    "chars": 2749,
    "preview": "# Контейнеры данных\nДля удобства работы в движке добавлены специальные контейнеры данных, которые являются обертками над"
  },
  {
    "path": "Docs/ru/Architecture/Utils/debug.md",
    "chars": 1355,
    "preview": "# Документация `Debug`\n\n## Описание\nСинглтон для вывода логов и отрисовки отладочных примитивов: линий, стрелок, окружно"
  },
  {
    "path": "Docs/ru/Architecture/Utils/filesystem.md",
    "chars": 2051,
    "preview": "# Документация `FileSystem`\n\n## Описание\n`FileSystem` — синглтон для работы с файловой системой. Позволяет получать инфо"
  },
  {
    "path": "Docs/ru/Architecture/Utils/function.md",
    "chars": 771,
    "preview": "## o2::Function<>\nДля удобной работы с подписками в движке есть свой тип делегатов, наподобие `std::function<>`.\n\nНо в о"
  },
  {
    "path": "Docs/ru/Architecture/Utils/logging.md",
    "chars": 419,
    "preview": "## Logging\nДля вывода лога используется иерархия каналов вывода в лог `o2::LogStream`. Каждый канал имеет свой строковый"
  },
  {
    "path": "Docs/ru/Architecture/Utils/math.md",
    "chars": 1958,
    "preview": "## Математика\nВ движке представлены базовые типы для 2D математики:\n- `Vec2F/I` - двумерный вектор\n- `RectF/I` - прямоуг"
  },
  {
    "path": "Docs/ru/Architecture/Utils/memory.md",
    "chars": 883,
    "preview": "## Менеджмент памяти\nСейчас используется ручной подход к памяти, с возможностью анализа количества аллокаций по месту их"
  },
  {
    "path": "Docs/ru/Architecture/Utils/properties.md",
    "chars": 1552,
    "preview": "## Properties\nДля удобной работы с сущностями движка и пользовательским кодом, в движке есть специальные обертки над set"
  },
  {
    "path": "Docs/ru/Architecture/Utils/reflection.md",
    "chars": 6659,
    "preview": "## Рефлексия\n\nВ движке используется собственная система типов. С помощью нее можно узнать параметры типа объекта в ранта"
  },
  {
    "path": "Docs/ru/Architecture/Utils/serialization.md",
    "chars": 1499,
    "preview": "## Сериализация\nС помощью сгенерированной мета-информации о классах происходит автоматическая сериализация и десериализа"
  },
  {
    "path": "Docs/ru/Architecture/Utils/string.md",
    "chars": 511,
    "preview": "## String\nДля удобства добавлена обертка над `std::string`, привносящая удобный функционал:\n\n- конвертация базовых типов"
  },
  {
    "path": "Docs/ru/Architecture/architecture.md",
    "chars": 22481,
    "preview": "# Архитектура движка\n\nАрхитектура делится на три слоя:\n\n- **верхний**: сцена, акторы, компоненты, UI, редактор\n- **низки"
  },
  {
    "path": "Docs/ru/Editor/Animation/animation.md",
    "chars": 2152,
    "preview": "## Animation. Окно анимации\n![animation](animation.png)\n\nВ этом окне редактируется ассет анимаций. Функционал аналогичен"
  },
  {
    "path": "Docs/ru/Editor/Assets/assets.md",
    "chars": 1831,
    "preview": "## Assets. Окно ассетов\n![assets](assets.png)\n\nВ этом окне можно увидеть ассеты, которые есть в игре, отредактировать их"
  },
  {
    "path": "Docs/ru/Editor/Game/game.md",
    "chars": 261,
    "preview": "## Game. Окно игры\n<img src=\"game.png\" width=\"30%\">\n\nВ этом окне отображается игра, как будто она запущена отдельным при"
  },
  {
    "path": "Docs/ru/Editor/Log/log.md",
    "chars": 366,
    "preview": "## Log. Окно логов\n![log](log.png)\n\nВ этом окне отображаются логи, выведенные через систему отладки движка. Логи разделе"
  },
  {
    "path": "Docs/ru/Editor/Properties/properties.md",
    "chars": 2074,
    "preview": "## Properties. Окно настроек\n<img src=\"properties.png\" width=\"30%\">\n\nВ этом окне происходит настройка выбранной сущности"
  },
  {
    "path": "Docs/ru/Editor/Scene/scene.md",
    "chars": 1030,
    "preview": "## Scene. Окно сцены\n<img src=\"scene.png\" width=\"50%\">\n\nВ этом окне отображаются акторы на сцене в порядке расположения "
  },
  {
    "path": "Docs/ru/Editor/Tree/tree.md",
    "chars": 2341,
    "preview": "\n## Tree. Окно иерахии\n\nОкно иерархии может работать в двух режимах: иерархия сцены и порядок отрисовки. режимы переключ"
  },
  {
    "path": "Docs/ru/Editor/editor.md",
    "chars": 1885,
    "preview": "## Редактор\n\nРедактор - это место, где верстается сцена и создается контент для игры. \n\nВ нем есть внутренние окна, кото"
  },
  {
    "path": "Docs/ru/main.md",
    "chars": 4144,
    "preview": "## Мотивация\n\nДвижок создается как профессиональный инструмент для разработки мобильных 2D игр. Его дизайн строится из д"
  },
  {
    "path": "Editor/Assets/BasicAtlas.atlas",
    "chars": 484847,
    "preview": "{\n    \"mPages\": [\n        {\n            \"mSize\": {\n                \"x\": 2048,\n                \"y\": 2048\n            },\n "
  },
  {
    "path": "Editor/Assets/BasicAtlas.atlas.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::AtlasAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6bd459187f2675966f8c67e46e525c59\",\n        \"common\""
  },
  {
    "path": "Editor/Assets/Editor UI styles.meta",
    "chars": 127,
    "preview": "{\n    \"Type\": \"o2::DefaultAssetMeta<o2::FolderAsset>\",\n    \"Value\": {\n        \"mId\": \"02481bc9676a33e752b64cab5a7d3f9e\"\n"
  },
  {
    "path": "Editor/Assets/SimulationDevicesList.json",
    "chars": 2222,
    "preview": "{\n\t\"list\": [\n\t{ \"deviceName\": \"iPhoneX Landscape\", \"resolution\": { \"x\": 2436, \"y\": 1125 } },\n\t{ \"deviceName\": \"iPhone6 P"
  },
  {
    "path": "Editor/Assets/SimulationDevicesList.json.meta",
    "chars": 127,
    "preview": "{\n    \"Type\": \"o2::DefaultAssetMeta<o2::BinaryAsset>\",\n    \"Value\": {\n        \"mId\": \"3c6f682b546e7ed940df2de21774600f\"\n"
  },
  {
    "path": "Editor/Assets/debugFont.ttf.meta",
    "chars": 141,
    "preview": "{\n    \"Type\": \"o2::VectorFontAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"204d443723d72f2c138401f153a97a97\",\n        \"mE"
  },
  {
    "path": "Editor/Assets/stdFont.ttf.meta",
    "chars": 141,
    "preview": "{\n    \"Type\": \"o2::VectorFontAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"28ea3885486a6d3e5658445b2de14465\",\n        \"mE"
  },
  {
    "path": "Editor/Assets/ui/.meta",
    "chars": 127,
    "preview": "{\n    \"Type\": \"o2::DefaultAssetMeta<o2::FolderAsset>\",\n    \"Value\": {\n        \"mId\": \"dbfaa7613bd42d6c31f1f52c53a2f873\"\n"
  },
  {
    "path": "Editor/Assets/ui/CurveHandle.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"31bc71d11e040f296289400255cd44e0\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveHandleHover.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"041862435ce94df953a73a501775426b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveHandlePressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"35d73d3060ef522f728d654c31bb3732\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveHandleSelected.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3b9f525e4be211da376e4f8e667b4e95\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveSupportHandle.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"065572d91dd10e4d6ac06cf049d44336\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveSupportHandleHover.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"531d00e7050764177538268b12226ef5\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveSupportHandlePressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"7b5d00142e125b0b2fcb6ab768015af3\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/CurveSupportHandleSelected.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"44b9252613bf763933ae3d0e36504f91\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/JSFileIcon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0a1b49284a84494d362b7baf1181176b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/TopologyTool.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6559699f7855266e0f686d614f992182\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_accept_prefab.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"07ac3a5f2251088947083bce123839b9\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_accept_prefab_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"72ed0fe553872449613d43ca0be545a3\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_accept_prefab_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"234425ff2d201c58768a5aad661228d2\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_actor_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"77d528f50f68274831a55392291b7727\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_add_asset_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6c06665158ed26e82d8306d04f9f73c4\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_anim_file_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"677c5cdb367c384b455a6201167a2109\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_asset_icon_selection.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0e1b4c9d732143c0649c77fd4cc95098\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_file_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"100946df482b0cda570110de23e93351\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_folder_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"79ab3e2b2d254269187d39fd7f766955\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_lock_close.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"03a5164927dd0e7d254555f3454f1205\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_lock_open.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"62dd34421c60266949cd2c982d905c03\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_lock_unknown.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"18770e601cfa5abd72cb7b061296152f\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_big_text_file_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"41d93c2b3a39274a7d35039540fe3aab\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_break_prefab.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"68a8066d52ea4321063e1de047a508d6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_break_prefab_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"52c8772f641a30933b5c46be47a80b53\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_break_prefab_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"525f69b859154d322a44304944642d03\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_component_head.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"15d21a945b6a61cd10eb51d973764806\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_dot_big.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"77c5378922e432762d8578080cbb35bd\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_dot_big_unknown.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"4f1e6fa245900e7f0e8954af1a505ec9\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_toggle_big.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3f02032807bd607762ab0ee748924b0c\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_toggle_big_focused.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"06d553a32bf63e3148df5308361e31a6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_toggle_big_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"523d73dc430978bd205b62ac43d108f8\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_enable_toggle_big_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"091e37dd7c032c6c589424ac64c816a4\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_eye_closed_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"1f9e44ef743150ce413f35206e607f8a\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_eye_opened_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"66222199071f48b65a517562683657cb\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_filter_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"594e45a71e9b723423ff1c0b5c2732c9\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_folder_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"72082a1f02b2369a6ebe44f326513324\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_gear_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"7575594d29b11a772b430135450f1abe\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_gray_options.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"44f97eb708244d9d3a82672828ff5ab6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_gray_options_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"2e3a772860da3b1d3db2226504fe236f\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_gray_options_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3b1d60a914de1949664603c71e29748a\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_green_edit_box.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"01c62a82737d79b045f411651bdd2ce6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"749b253c0a4659251eb1169857b81aa6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_regular.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"324112a175042fb832b233fb2d950b2b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"559c35ba2dc500b9146c6f654b925b14\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_side_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"45d262ce5cd66abb769443f0020c0644\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_side_regular.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"06470f6928c4378e7c1e31f413a137dc\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_handle_side_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"06a16251065b6c4308414f0b052c5a3b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_image_asset_back.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"72c5439208a9592b0e70560e6dcb2704\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_layer_big.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"02d76c7230fb29d76262371646dc3718\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_layer_icon_t.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"4b3d777c3edd7518080a277b3bfa1296\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_link_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0c9c7079001e4d00039e31d77b0340e1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_errors_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"03d8647120c94ede2993460304155899\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_errors_inactive_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3a1771ad7b2c33446e9e4918798b0fa0\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_info_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"54be57b767d45e0437b4256e70044b16\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_info_inactive_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"657107580d8d6e2e2a095a9f3e5b2f5c\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_warnings_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3a16329731654e127b140d834daf3014\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_log_warnings_inactive_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"2cd15cc006a9434340881834695b201e\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_move_tool_center.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"74086a597ee67e91405c1a0b0efe419b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_move_tool_center_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"7260312d19e92c0d40c307a13e7355ed\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_move_tool_center_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"06be084535be030858333acf49d92db4\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_pivot.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"5c4657e95eb356133d6102ad258b38d1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_pivot_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3a5d29a31f5522ff1742339438281665\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_pivot_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"54aa383b507022dd4d0b371f2a8b24d2\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_pivot_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"1b107fba691359fe56301c2537d311b8\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_position_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"09b44d6a4e8927f40a6826c07d5b69f9\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_prefab_link_big.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"78fd4fd32460578e71a660494ac229b5\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_red_edit_box.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6d8e26bf1c642edf1421275871e44c4d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_revert_prefab.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"684c733646a47f364a4c3fc716dd5c63\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_revert_prefab_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"365d6782616b35260cdd62af000c03d6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_revert_prefab_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"4126572b2947687f44c94e68660d1bca\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_move_arrow.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"5e4c46fb29056c521b45568c43bc3c9d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_move_arrow_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"1fb37cfa09b15ef049c673f426384df2\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_move_arrow_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"23801071629939ea6a0054b87cdd16a9\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_scale_arrow.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"641a79ea094a621145ea6c3369474ce4\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_scale_arrow_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0824232e6191377627b702fc0f552603\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_right_scale_arrow_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"328477442d7b256a29de46ec652366a7\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_rotate_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"525e72785d54327e07125b1e030e72b1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"731832515faa10846a4967e973b25d43\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_focused.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0c560598714a2c8b3eb82ae603ee78bd\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_gray.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"51ff7c566d413ee67fd406f012de66c1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_gray_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"043677d61cdb5b240952141e61df282e\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_gray_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3f603a9e07a6001867272fca648e2d28\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"4c237879436f27d225870c8c10c8650d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_round_field_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6f646670444357a320e9423f2eaa4e80\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_save_gray copy 2.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3a474acb2c6e301c56005dfa28900761\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_save_gray copy.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"5a320d131c7e7d0e31c272165b195cd1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_save_gray.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"68ca46120340458a6165262e65215b32\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_scale_both.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"3bf44fd06dc15be1225c471977c55e24\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_scale_both_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"35d45597574d6da4125d56f026622089\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_scale_both_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"14cf63ef797313a57f5c1d0e36954c80\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_scale_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"438b78a21bfe61f33790360a703b0b6d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_scene_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"28ed12b864fb77e1596d23be6d7115ee\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_small_panel_back.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"781a427a28b90ffe23a75d426a9443e6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_small_panel_down_back.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"0076397239c3101d45355ef116411c75\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_small_trash_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"7da75a6938e7194d2d4a3a62615565fc\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_tag_big.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"67924967653217e15b5c266e4eed361d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_trach_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"425b7bb56bf153692f200f30446701b8\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_transform_icon.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6e6747dd38b07eb6388b25ff595e2cee\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_move_arrow.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"785d75a7453d47d907d2717527b01b21\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_move_arrow_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"69204e1d69a568237d6a5d6a1b7a3ef1\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_move_arrow_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"15d62b872c3534251a074af843192a3f\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_scale_arrow.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"6fe3096f11792bb14ea020781f2a1e2d\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_scale_arrow_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"54ed149d6c4009d64c685983728a1b1b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI2_up_scale_arrow_select.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"5ed83b1a2d9554e654d616f1125770aa\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_add_btn.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"33cb3c3034c56e73099d2edc35ec4dbc\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_add_btn_hover.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"562938681f5f234d3cb33c9d46e75071\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_add_btn_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"7497418a192e3b84404d30cc3125162b\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_anchor_hover.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"32794f087da131ca780428ad6fd463fa\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_anchor_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"789c46ae7749792468c0759112c07c8f\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_anchor_regular.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"2bc876eb20e874f138c80aa13c010fcd\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_anchors_hover.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"39fb6a9f2c400a6b36e0614432c44b89\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_anchors_pressed.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"1d7a57f110e27e926320191b2c1f3c6e\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_ch_arrows.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"142469090bcb20c24bd227f674f20695\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_anchor.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"56130790077f636835d452e879313909\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_max_size.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"423a2e4971d01ef40b016611069c7e89\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_min_size.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"25803a3e06cc40b82fcf214a2d4e3db6\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_offsets.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"190819b830c0514328f239ab1fa67c72\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_size.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"52375c3f583904686b61698f023f6fdd\",\n        \"atlasId"
  },
  {
    "path": "Editor/Assets/ui/UI3_icon_weight.png.meta",
    "chars": 165,
    "preview": "{\n    \"Type\": \"o2::ImageAsset::Meta\",\n    \"Value\": {\n        \"mId\": \"72b3429c340349362c50008c3bf70c58\",\n        \"atlasId"
  }
]

// ... and 4648 more files (download for full content)

About this extraction

This page contains the full source code of the zenkovich/o2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4848 files (32.7 MB), approximately 8.9M tokens, and a symbol index with 14363 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!