CINXE.COM
imgui/imgui_tables.cpp at master · ocornut/imgui · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-aaa714e5674d.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-0a3c53b9d1c2.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_quote_reply_fix","copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","copilot_buffered_streaming","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","react_router_dispose_on_disconnect","codespaces_prebuild_region_target_update","turbo_app_id_restore","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-900d20148682.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-75968cfb5298.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-62d275b7ddd9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a90ac05d2469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-25113a65b77f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-a03ee12d659a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eb3147a21e96.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-768abe60b1f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-3e000c5d31a9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-87a4ae-4c160a67a3f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-e429cff6ceb1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-1f167e0c2aee.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-01e85cd1be94.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-26cce2010167.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-1c0aedc134b1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-602097a4b0db.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-0bc17999cb79.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-2df2f32ec596.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-9a233856b02c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-dd1d3ea6a436.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__Stack_js-node_modules_lodash-es__Uint8Array_js-node_modules_l-4faaa6-4a736fde5c2f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lodash-es__baseIsEqual_js-8929eb9718d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-intersection-observer_react-intersection-observer_modern_mjs-node_-b27033-ba82cef135e3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_focus-visible_dist_focus-visible_js-node_modules_fzy_js_index_js-node_mo-f2fece-29a0ceccb1f1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_history_history_ts-ui_packages_promise-with-re-01dc80-134579ff449f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-3adbcf6faa83.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7496afc3784d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-7094d4-b869a469ca5e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_diffs_diff-parts_ts-b05d9274ce63.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_app-uuid_app-uuid_ts-ui_packages_document-metadata_document-metadata_ts-ui_packag-4d8de9-e34d18d8cc94.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_hydro-analytics_hydro-analytics_ts-ui_packages_verified-fetch_verified-fetch_ts-u-4672d1-96a19eaeffb7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-d63960-3a5579c864b4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_blob-anchor_ts-ui_packages_code-nav_code-nav_ts-ui_packages_filter--8253c1-91468a3354f9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-code-view-45766ab73683.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-code-view.91744b0963019bd58290.module.css" /> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-57956eade845.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>imgui/imgui_tables.cpp at master · ocornut/imgui · GitHub</title> <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient> <meta name="route-controller" content="blob" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="C718:1ACE83:A47E7F:CC790E:67E83BFF" data-pjax-transient="true"/><meta name="html-safe-nonce" content="b6c4362477478dbddc70049088bab01c9b388fabeac1414cf765b581d7ea459c" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDNzE4OjFBQ0U4MzpBNDdFN0Y6Q0M3OTBFOjY3RTgzQkZGIiwidmlzaXRvcl9pZCI6IjQ2NTA2OTU3MTM0NzE2MDk4NTUiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="c8e6c6f4146cdf59e36c222b1c50839d598c6086730cbd28971c735978a03068" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:22067521" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="repo_source" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/<user-name>/<repo-name>/blob/show" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - imgui/imgui_tables.cpp at master · ocornut/imgui"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp" /> <meta name="twitter:image" content="https://repository-images.githubusercontent.com/22067521/01b5ff00-53d7-11ea-86fa-52aee7e335a2" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="imgui/imgui_tables.cpp at master · ocornut/imgui" /><meta name="twitter:description" content="Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imgui" /> <meta property="og:image" content="https://repository-images.githubusercontent.com/22067521/01b5ff00-53d7-11ea-86fa-52aee7e335a2" /><meta property="og:image:alt" content="Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imgui" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="imgui/imgui_tables.cpp at master · ocornut/imgui" /><meta property="og:url" content="https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp" /><meta property="og:description" content="Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imgui" /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="154e3ed6ec9e0d6fff5da6846be55e3cefb81f7aa557cdcfe2a45d929fc158d2" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="e26f9f0ba624ee85cc7ac057d8faa8618a4f25a85eab052c33d018ac0f6b1a46" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="159e03504eed5183f9787c72780a7d8c1460af30746ab09d728b048c41719efa" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="3ef84064f1c111becc704df35223db168ecae977ac2d9ec422601ed98490e586" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-cache-control" content="no-cache" data-turbo-transient> <meta data-hydrostats="publish"> <meta name="go-import" content="github.com/ocornut/imgui git https://github.com/ocornut/imgui.git"> <meta name="octolytics-dimension-user_id" content="8225057" /><meta name="octolytics-dimension-user_login" content="ocornut" /><meta name="octolytics-dimension-repository_id" content="22067521" /><meta name="octolytics-dimension-repository_nwo" content="ocornut/imgui" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="22067521" /><meta name="octolytics-dimension-repository_network_root_nwo" content="ocornut/imgui" /> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <meta name="release" content="e213ac9ad7b72bbb1aa585275822ca17f3608e7d"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-2ea4e93613c0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-79d6a754ebf9.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8157a56b30ae88a1b356.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-730dca81d0a2.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Focornut%2Fimgui%2Fblob%2Fmaster%2Fimgui_tables.cpp" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="f231233230d7a8257927bada4abaa1a3450486945faeb8c94bf0872b0491c30e" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"nonprofits","context":"solutions","tag":"link","label":"nonprofits_link_solutions_navbar"}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"events_amp_webinars","context":"resources","tag":"link","label":"events_amp_webinars_link_resources_navbar"}" href="https://resources.github.com"> Events & Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ebooks_amp_whitepapers","context":"resources","tag":"link","label":"ebooks_amp_whitepapers_link_resources_navbar"}" href="https://github.com/resources/whitepapers"> Ebooks & Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"executive_insights","context":"resources","tag":"link","label":"executive_insights_link_resources_navbar"}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"copilot_for_business","context":"enterprise","tag":"link","label":"copilot_for_business_link_enterprise_navbar"}" href="/features/copilot/copilot-business"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">Copilot for business</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:ocornut/imgui" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="7mZkxMzp2lpZLdGBWjHY3HGdGM_y0YSmS56D-Fkku3471g--DidObdkVJ4X2tQ77DzWhpjpZKRrFAF8s8hcjkA" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="ocornut/imgui" data-current-org="" data-current-owner="ocornut" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-22ff8e84-ab82-4099-b682-947289090cf2" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-22ff8e84-ab82-4099-b682-947289090cf2" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="BhhnLMstCrbBK7tF7LijO4/eF3Tospu8rESf+U+y/j/zVbx4oPAI8B+FhtAzSlnUm42D0vXIuBTA/u39f17U8Q==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="RBBrMnUuK6yL99fe1KO6cTMejxVOX9bl/FMKEtWTgKdkUACLCXi2rtZzpe90JPcC8lMgOp4WVTLyw9UqStCUJg==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="Yv2tFETrjcZq3bk5PsMq6ohmBffmmkN9TaodgjwK/SVj87IBZjlOsnlCG3/a8zyQiizFDgBbnMn/6xgSmIs+Mw==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Focornut%2Fimgui%2Fblob%2Fmaster%2Fimgui_tables.cpp" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="f231233230d7a8257927bada4abaa1a3450486945faeb8c94bf0872b0491c30e" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&source=header-repo&source_repo=ocornut%2Fimgui" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="f231233230d7a8257927bada4abaa1a3450486945faeb8c94bf0872b0491c30e" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-f955b752-f704-4794-885c-9e6871dbebd8" aria-labelledby="tooltip-b4a79781-6088-495a-8233-83738178975d" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-b4a79781-6088-495a-8233-83738178975d" for="icon-button-f955b752-f704-4794-885c-9e6871dbebd8" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/ocornut/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/ocornut"> ocornut </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/ocornut/imgui">imgui</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <include-fragment src="/ocornut/imgui/sponsor_button"></include-fragment> </li> <li> <a href="/login?return_to=%2Focornut%2Fimgui" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="6bd96cc6d0def3ccedbf1cd02941cbcc47b4ef0e82c5b6acfa3dd4d878e58101" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-a949ed03-5075-42c1-9806-e08c7e3a30d1" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Focornut%2Fimgui" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":22067521,"auth_type":"LOG_IN","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="ef060927563a72a4986bccf8c51de005754636e606ea9009ec04fa10b7ac018c" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="10,715" data-view-component="true" class="Counter">10.7k</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Focornut%2Fimgui" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":22067521,"auth_type":"LOG_IN","originating_url":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp","user_id":null}}" data-hydro-click-hmac="c096ad50447bf12030eec7aaee973b5238b28154721e7887e1248eb9ce474d27" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="64156 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="64,156" data-view-component="true" class="Counter js-social-count">64.2k</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/ocornut/imgui" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /ocornut/imgui" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Code","target":"UNDERLINE_NAV.TAB"}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab" href="/ocornut/imgui/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /ocornut/imgui/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Issues","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> <span data-content="Issues">Issues</span> <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="950" data-view-component="true" class="Counter">950</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/ocornut/imgui/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /ocornut/imgui/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Pull requests","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="153" data-view-component="true" class="Counter">153</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab" href="/ocornut/imgui/discussions" data-tab-item="i3discussions-tab" data-selected-links="repo_discussions /ocornut/imgui/discussions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g g" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Discussions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> <span data-content="Discussions">Discussions</span> <span id="discussions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/ocornut/imgui/actions" data-tab-item="i4actions-tab" data-selected-links="repo_actions /ocornut/imgui/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Actions","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="wiki-tab" href="/ocornut/imgui/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /ocornut/imgui/wiki" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g w" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Wiki","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> <span data-content="Wiki">Wiki</span> <span id="wiki-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/ocornut/imgui/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /ocornut/imgui/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Security","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/ocornut/imgui/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/ocornut/imgui/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /ocornut/imgui/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{"category":"Underline navbar","action":"Click tab","label":"Insights","target":"UNDERLINE_NAV.TAB"}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-button" popovertarget="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-overlay" aria-controls="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-list" aria-haspopup="true" aria-labelledby="tooltip-810b4492-2a86-4ca8-a45c-d8ad9b081e9d" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-810b4492-2a86-4ca8-a45c-d8ad9b081e9d" for="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position data-target="action-menu.overlay" id="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-overlay" anchor="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-button" id="action-menu-8d440467-683e-4334-99f0-c74bfbeb6dfb-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-b6840b7b-c0b6-473c-96b5-f9cd11dd2ef6" href="/ocornut/imgui" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-6ad3c34b-0e30-4dd2-9d1d-3df608649552" href="/ocornut/imgui/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Issues </span> </a> </li> <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-eb50109a-93ed-45e0-9a18-bc6da6247cfe" href="/ocornut/imgui/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i3discussions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-89f1bba3-c368-4981-a6b3-1627e6462a99" href="/ocornut/imgui/discussions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Discussions </span> </a> </li> <li hidden="hidden" data-menu-item="i4actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-c96df62a-9461-48f0-b5ba-c2136ebec3d9" href="/ocornut/imgui/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i5wiki-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-e2dc2d52-82da-49f6-8999-af174485685d" href="/ocornut/imgui/wiki" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Wiki </span> </a> </li> <li hidden="hidden" data-menu-item="i6security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-9b1eba9b-0e7a-4449-9942-cc1a79a457f0" href="/ocornut/imgui/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i7insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-e9d4c533-4a00-4634-8014-fe2f7dc005fb" href="/ocornut/imgui/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <react-app app-name="react-code-view" initial-path="/ocornut/imgui/blob/master/imgui_tables.cpp" style="display: block; min-height: calc(100vh - 64px);" data-attempted-ssr="true" data-ssr="true" data-lazy="false" data-alternate="false" data-data-router-enabled="false" > <script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"backends","path":"backends","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"misc","path":"misc","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"LICENSE.txt","path":"LICENSE.txt","contentType":"file"},{"name":"imconfig.h","path":"imconfig.h","contentType":"file"},{"name":"imgui.cpp","path":"imgui.cpp","contentType":"file"},{"name":"imgui.h","path":"imgui.h","contentType":"file"},{"name":"imgui_demo.cpp","path":"imgui_demo.cpp","contentType":"file"},{"name":"imgui_draw.cpp","path":"imgui_draw.cpp","contentType":"file"},{"name":"imgui_internal.h","path":"imgui_internal.h","contentType":"file"},{"name":"imgui_tables.cpp","path":"imgui_tables.cpp","contentType":"file"},{"name":"imgui_widgets.cpp","path":"imgui_widgets.cpp","contentType":"file"},{"name":"imstb_rectpack.h","path":"imstb_rectpack.h","contentType":"file"},{"name":"imstb_textedit.h","path":"imstb_textedit.h","contentType":"file"},{"name":"imstb_truetype.h","path":"imstb_truetype.h","contentType":"file"}],"totalCount":20}},"fileTreeProcessingTime":2.665044,"foldersToFetch":[],"repo":{"id":22067521,"defaultBranch":"master","name":"imgui","ownerLogin":"ocornut","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-07-21T14:29:47.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8225057?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1742389853.0","canEdit":false,"refType":"branch","currentOid":"7674cbc9b25668dcbcc0ffd35b126b094c978e89"},"path":"imgui_tables.cpp","currentUser":null,"blob":{"rawLines":["// dear imgui, v1.92.0 WIP","// (tables and columns code)","","/*","","Index of this file:","","// [SECTION] Commentary","// [SECTION] Header mess","// [SECTION] Tables: Main code","// [SECTION] Tables: Simple accessors","// [SECTION] Tables: Row changes","// [SECTION] Tables: Columns changes","// [SECTION] Tables: Columns width management","// [SECTION] Tables: Drawing","// [SECTION] Tables: Sorting","// [SECTION] Tables: Headers","// [SECTION] Tables: Context Menu","// [SECTION] Tables: Settings (.ini data)","// [SECTION] Tables: Garbage Collection","// [SECTION] Tables: Debugging","// [SECTION] Columns, BeginColumns, EndColumns, etc.","","*/","","// Navigating this file:","// - In Visual Studio: CTRL+comma (\"Edit.GoToAll\") can follow symbols inside comments, whereas CTRL+F12 (\"Edit.GoToImplementation\") cannot.","// - In Visual Studio w/ Visual Assist installed: ALT+G (\"VAssistX.GoToImplementation\") can also follow symbols inside comments.","// - In VS Code, CLion, etc.: CTRL+click can follow symbols inside comments.","","//-----------------------------------------------------------------------------","// [SECTION] Commentary","//-----------------------------------------------------------------------------","","//-----------------------------------------------------------------------------","// Typical tables call flow: (root level is generally public API):","//-----------------------------------------------------------------------------","// - BeginTable() user begin into a table","// | BeginChild() - (if ScrollX/ScrollY is set)","// | TableBeginInitMemory() - first time table is used","// | TableResetSettings() - on settings reset","// | TableLoadSettings() - on settings load","// | TableBeginApplyRequests() - apply queued resizing/reordering/hiding requests","// | - TableSetColumnWidth() - apply resizing width (for mouse resize, often requested by previous frame)","// | - TableUpdateColumnsWeightFromWidth()- recompute columns weights (of stretch columns) from their respective width","// - TableSetupColumn() user submit columns details (optional)","// - TableSetupScrollFreeze() user submit scroll freeze information (optional)","//-----------------------------------------------------------------------------","// - TableUpdateLayout() [Internal] followup to BeginTable(): setup everything: widths, columns positions, clipping rectangles. Automatically called by the FIRST call to TableNextRow() or TableHeadersRow().","// | TableSetupDrawChannels() - setup ImDrawList channels","// | TableUpdateBorders() - detect hovering columns for resize, ahead of contents submission","// | TableBeginContextMenuPopup()","// | - TableDrawDefaultContextMenu() - draw right-click context menu contents","//-----------------------------------------------------------------------------","// - TableHeadersRow() or TableHeader() user submit a headers row (optional)","// | TableSortSpecsClickColumn() - when left-clicked: alter sort order and sort direction","// | TableOpenContextMenu() - when right-clicked: trigger opening of the default context menu","// - TableGetSortSpecs() user queries updated sort specs (optional, generally after submitting headers)","// - TableNextRow() user begin into a new row (also automatically called by TableHeadersRow())","// | TableEndRow() - finish existing row","// | TableBeginRow() - add a new row","// - TableSetColumnIndex() / TableNextColumn() user begin into a cell","// | TableEndCell() - close existing column/cell","// | TableBeginCell() - enter into current column/cell","// - [...] user emit contents","//-----------------------------------------------------------------------------","// - EndTable() user ends the table","// | TableDrawBorders() - draw outer borders, inner vertical borders","// | TableMergeDrawChannels() - merge draw channels if clipping isn't required","// | EndChild() - (if ScrollX/ScrollY is set)","//-----------------------------------------------------------------------------","","//-----------------------------------------------------------------------------","// TABLE SIZING","//-----------------------------------------------------------------------------","// (Read carefully because this is subtle but it does make sense!)","//-----------------------------------------------------------------------------","// About 'outer_size':","// Its meaning needs to differ slightly depending on if we are using ScrollX/ScrollY flags.","// Default value is ImVec2(0.0f, 0.0f).","// X","// - outer_size.x \u003c= 0.0f -\u003e Right-align from window/work-rect right-most edge. With -FLT_MIN or 0.0f will align exactly on right-most edge.","// - outer_size.x \u003e 0.0f -\u003e Set Fixed width.","// Y with ScrollX/ScrollY disabled: we output table directly in current window","// - outer_size.y \u003c 0.0f -\u003e Bottom-align (but will auto extend, unless _NoHostExtendY is set). Not meaningful if parent window can vertically scroll.","// - outer_size.y = 0.0f -\u003e No minimum height (but will auto extend, unless _NoHostExtendY is set)","// - outer_size.y \u003e 0.0f -\u003e Set Minimum height (but will auto extend, unless _NoHostExtendY is set)","// Y with ScrollX/ScrollY enabled: using a child window for scrolling","// - outer_size.y \u003c 0.0f -\u003e Bottom-align. Not meaningful if parent window can vertically scroll.","// - outer_size.y = 0.0f -\u003e Bottom-align, consistent with BeginChild(). Not recommended unless table is last item in parent window.","// - outer_size.y \u003e 0.0f -\u003e Set Exact height. Recommended when using Scrolling on any axis.","//-----------------------------------------------------------------------------","// Outer size is also affected by the NoHostExtendX/NoHostExtendY flags.","// Important to note how the two flags have slightly different behaviors!","// - ImGuiTableFlags_NoHostExtendX -\u003e Make outer width auto-fit to columns (overriding outer_size.x value). Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.","// - ImGuiTableFlags_NoHostExtendY -\u003e Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY is disabled. Data below the limit will be clipped and not visible.","// In theory ImGuiTableFlags_NoHostExtendY could be the default and any non-scrolling tables with outer_size.y != 0.0f would use exact height.","// This would be consistent but perhaps less useful and more confusing (as vertically clipped items are not useful and not easily noticeable).","//-----------------------------------------------------------------------------","// About 'inner_width':","// With ScrollX disabled:","// - inner_width -\u003e *ignored*","// With ScrollX enabled:","// - inner_width \u003c 0.0f -\u003e *illegal* fit in known width (right align from outer_size.x) \u003c-- weird","// - inner_width = 0.0f -\u003e fit in outer_width: Fixed size columns will take space they need (if avail, otherwise shrink down), Stretch columns becomes Fixed columns.","// - inner_width \u003e 0.0f -\u003e override scrolling width, generally to be larger than outer_size.x. Fixed column take space they need (if avail, otherwise shrink down), Stretch columns share remaining space!","//-----------------------------------------------------------------------------","// Details:","// - If you want to use Stretch columns with ScrollX, you generally need to specify 'inner_width' otherwise the concept","// of \"available space\" doesn't make sense.","// - Even if not really useful, we allow 'inner_width \u003c outer_size.x' for consistency and to facilitate understanding","// of what the value does.","//-----------------------------------------------------------------------------","","//-----------------------------------------------------------------------------","// COLUMNS SIZING POLICIES","// (Reference: ImGuiTableFlags_SizingXXX flags and ImGuiTableColumnFlags_WidthXXX flags)","//-----------------------------------------------------------------------------","// About overriding column sizing policy and width/weight with TableSetupColumn():","// We use a default parameter of -1 for 'init_width'/'init_weight'.","// - with ImGuiTableColumnFlags_WidthFixed, init_width \u003c= 0 (default) --\u003e width is automatic","// - with ImGuiTableColumnFlags_WidthFixed, init_width \u003e 0 (explicit) --\u003e width is custom","// - with ImGuiTableColumnFlags_WidthStretch, init_weight \u003c= 0 (default) --\u003e weight is 1.0f","// - with ImGuiTableColumnFlags_WidthStretch, init_weight \u003e 0 (explicit) --\u003e weight is custom","// Widths are specified _without_ CellPadding. If you specify a width of 100.0f, the column will be cover (100.0f + Padding * 2.0f)","// and you can fit a 100.0f wide item in it without clipping and with padding honored.","//-----------------------------------------------------------------------------","// About default sizing policy (if you don't specify a ImGuiTableColumnFlags_WidthXXXX flag)","// - with Table policy ImGuiTableFlags_SizingFixedFit --\u003e default Column policy is ImGuiTableColumnFlags_WidthFixed, default Width is equal to contents width","// - with Table policy ImGuiTableFlags_SizingFixedSame --\u003e default Column policy is ImGuiTableColumnFlags_WidthFixed, default Width is max of all contents width","// - with Table policy ImGuiTableFlags_SizingStretchSame --\u003e default Column policy is ImGuiTableColumnFlags_WidthStretch, default Weight is 1.0f","// - with Table policy ImGuiTableFlags_SizingStretchWeight --\u003e default Column policy is ImGuiTableColumnFlags_WidthStretch, default Weight is proportional to contents","// Default Width and default Weight can be overridden when calling TableSetupColumn().","//-----------------------------------------------------------------------------","// About mixing Fixed/Auto and Stretch columns together:","// - the typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.","// - using mixed policies with ScrollX does not make much sense, as using Stretch columns with ScrollX does not make much sense in the first place!","// that is, unless 'inner_width' is passed to BeginTable() to explicitly provide a total width to layout columns in.","// - when using ImGuiTableFlags_SizingFixedSame with mixed columns, only the Fixed/Auto columns will match their widths to the width of the maximum contents.","// - when using ImGuiTableFlags_SizingStretchSame with mixed columns, only the Stretch columns will match their weights/widths.","//-----------------------------------------------------------------------------","// About using column width:","// If a column is manually resizable or has a width specified with TableSetupColumn():","// - you may use GetContentRegionAvail().x to query the width available in a given column.","// - right-side alignment features such as SetNextItemWidth(-x) or PushItemWidth(-x) will rely on this width.","// If the column is not resizable and has no width specified with TableSetupColumn():","// - its width will be automatic and be set to the max of items submitted.","// - therefore you generally cannot have ALL items of the columns use e.g. SetNextItemWidth(-FLT_MIN).","// - but if the column has one or more items of known/fixed size, this will become the reference width used by SetNextItemWidth(-FLT_MIN).","//-----------------------------------------------------------------------------","","","//-----------------------------------------------------------------------------","// TABLES CLIPPING/CULLING","//-----------------------------------------------------------------------------","// About clipping/culling of Rows in Tables:","// - For large numbers of rows, it is recommended you use ImGuiListClipper to submit only visible rows.","// ImGuiListClipper is reliant on the fact that rows are of equal height.","// See 'Demo-\u003eTables-\u003eVertical Scrolling' or 'Demo-\u003eTables-\u003eAdvanced' for a demo of using the clipper.","// - Note that auto-resizing columns don't play well with using the clipper.","// By default a table with _ScrollX but without _Resizable will have column auto-resize.","// So, if you want to use the clipper, make sure to either enable _Resizable, either setup columns width explicitly with _WidthFixed.","//-----------------------------------------------------------------------------","// About clipping/culling of Columns in Tables:","// - Both TableSetColumnIndex() and TableNextColumn() return true when the column is visible or performing","// width measurements. Otherwise, you may skip submitting the contents of a cell/column, BUT ONLY if you know","// it is not going to contribute to row height.","// In many situations, you may skip submitting contents for every column but one (e.g. the first one).","// - Case A: column is not hidden by user, and at least partially in sight (most common case).","// - Case B: column is clipped / out of sight (because of scrolling or parent ClipRect): TableNextColumn() return false as a hint but we still allow layout output.","// - Case C: column is hidden explicitly by the user (e.g. via the context menu, or _DefaultHide column flag, etc.).","//","// [A] [B] [C]","// TableNextColumn(): true false false -\u003e [userland] when TableNextColumn() / TableSetColumnIndex() returns false, user can skip submitting items but only if the column doesn't contribute to row height.","// SkipItems: false false true -\u003e [internal] when SkipItems is true, most widgets will early out if submitted, resulting is no layout output.","// ClipRect: normal zero-width zero-width -\u003e [internal] when ClipRect is zero, ItemAdd() will return false and most widgets will early out mid-way.","// ImDrawList output: normal dummy dummy -\u003e [internal] when using the dummy channel, ImDrawList submissions (if any) will be wasted (because cliprect is zero-width anyway).","//","// - We need to distinguish those cases because non-hidden columns that are clipped outside of scrolling bounds should still contribute their height to the row.","// However, in the majority of cases, the contribution to row height is the same for all columns, or the tallest cells are known by the programmer.","//-----------------------------------------------------------------------------","// About clipping/culling of whole Tables:","// - Scrolling tables with a known outer size can be clipped earlier as BeginTable() will return false.","//-----------------------------------------------------------------------------","","//-----------------------------------------------------------------------------","// [SECTION] Header mess","//-----------------------------------------------------------------------------","","#if defined(_MSC_VER) \u0026\u0026 !defined(_CRT_SECURE_NO_WARNINGS)","#define _CRT_SECURE_NO_WARNINGS","#endif","","#ifndef IMGUI_DEFINE_MATH_OPERATORS","#define IMGUI_DEFINE_MATH_OPERATORS","#endif","","#include \"imgui.h\"","#ifndef IMGUI_DISABLE","#include \"imgui_internal.h\"","","// System includes","#include \u003cstdint.h\u003e // intptr_t","","// Visual Studio warnings","#ifdef _MSC_VER","#pragma warning (disable: 4127) // condition expression is constant","#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen","#if defined(_MSC_VER) \u0026\u0026 _MSC_VER \u003e= 1922 // MSVC 2019 16.2 or later","#pragma warning (disable: 5054) // operator '|': deprecated between enumerations of different types","#endif","#pragma warning (disable: 26451) // [Static Analyzer] Arithmetic overflow : Using operator 'xxx' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator 'xxx' to avoid overflow(io.2).","#pragma warning (disable: 26812) // [Static Analyzer] The enum type 'xxx' is unscoped. Prefer 'enum class' over 'enum' (Enum.3).","#endif","","// Clang/GCC warnings with -Weverything","#if defined(__clang__)","#if __has_warning(\"-Wunknown-warning-option\")","#pragma clang diagnostic ignored \"-Wunknown-warning-option\" // warning: unknown warning group 'xxx' // not all warnings are known by all Clang versions and they tend to be rename-happy.. so ignoring warnings triggers new warnings on some configuration. Great!","#endif","#pragma clang diagnostic ignored \"-Wunknown-pragmas\" // warning: unknown warning group 'xxx'","#pragma clang diagnostic ignored \"-Wold-style-cast\" // warning: use of old-style cast // yes, they are more terse.","#pragma clang diagnostic ignored \"-Wfloat-equal\" // warning: comparing floating point with == or != is unsafe // storing and comparing against same constants (typically 0.0f) is ok.","#pragma clang diagnostic ignored \"-Wformat\" // warning: format specifies type 'int' but the argument has type 'unsigned int'","#pragma clang diagnostic ignored \"-Wformat-nonliteral\" // warning: format string is not a string literal // passing non-literal to vsnformat(). yes, user passing incorrect format strings can crash the code.","#pragma clang diagnostic ignored \"-Wsign-conversion\" // warning: implicit conversion changes signedness","#pragma clang diagnostic ignored \"-Wzero-as-null-pointer-constant\" // warning: zero as null pointer constant // some standard header variations use #define NULL 0","#pragma clang diagnostic ignored \"-Wdouble-promotion\" // warning: implicit conversion from 'float' to 'double' when passing argument to function // using printf() is a misery with this as C++ va_arg ellipsis changes float to double.","#pragma clang diagnostic ignored \"-Wenum-enum-conversion\" // warning: bitwise operation between different enumeration types ('XXXFlags_' and 'XXXFlagsPrivate_')","#pragma clang diagnostic ignored \"-Wdeprecated-enum-enum-conversion\"// warning: bitwise operation between different enumeration types ('XXXFlags_' and 'XXXFlagsPrivate_') is deprecated","#pragma clang diagnostic ignored \"-Wimplicit-int-float-conversion\" // warning: implicit conversion from 'xxx' to 'float' may lose precision","#pragma clang diagnostic ignored \"-Wunsafe-buffer-usage\" // warning: 'xxx' is an unsafe pointer used for buffer access","#pragma clang diagnostic ignored \"-Wnontrivial-memaccess\" // warning: first argument in call to 'memset' is a pointer to non-trivially copyable type","#pragma clang diagnostic ignored \"-Wswitch-default\" // warning: 'switch' missing 'default' label","#elif defined(__GNUC__)","#pragma GCC diagnostic ignored \"-Wpragmas\" // warning: unknown option after '#pragma GCC diagnostic' kind","#pragma GCC diagnostic ignored \"-Wfloat-equal\" // warning: comparing floating-point with '==' or '!=' is unsafe","#pragma GCC diagnostic ignored \"-Wformat-nonliteral\" // warning: format not a string literal, format string not checked","#pragma GCC diagnostic ignored \"-Wdouble-promotion\" // warning: implicit conversion from 'float' to 'double' when passing argument to function","#pragma GCC diagnostic ignored \"-Wformat\" // warning: format '%p' expects argument of type 'int'/'void*', but argument X has type 'unsigned int'/'ImGuiWindow*'","#pragma GCC diagnostic ignored \"-Wstrict-overflow\"","#pragma GCC diagnostic ignored \"-Wclass-memaccess\" // [__GNUC__ \u003e= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead","#endif","","//-----------------------------------------------------------------------------","// [SECTION] Tables: Main code","//-----------------------------------------------------------------------------","// - TableFixFlags() [Internal]","// - TableFindByID() [Internal]","// - BeginTable()","// - BeginTableEx() [Internal]","// - TableBeginInitMemory() [Internal]","// - TableBeginApplyRequests() [Internal]","// - TableSetupColumnFlags() [Internal]","// - TableUpdateLayout() [Internal]","// - TableUpdateBorders() [Internal]","// - EndTable()","// - TableSetupColumn()","// - TableSetupScrollFreeze()","//-----------------------------------------------------------------------------","","// Configuration","static const int TABLE_DRAW_CHANNEL_BG0 = 0;","static const int TABLE_DRAW_CHANNEL_BG2_FROZEN = 1;","static const int TABLE_DRAW_CHANNEL_NOCLIP = 2; // When using ImGuiTableFlags_NoClip (this becomes the last visible channel)","static const float TABLE_BORDER_SIZE = 1.0f; // FIXME-TABLE: Currently hard-coded because of clipping assumptions with outer borders rendering.","static const float TABLE_RESIZE_SEPARATOR_HALF_THICKNESS = 4.0f; // Extend outside inner borders.","static const float TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER = 0.06f; // Delay/timer before making the hover feedback (color+cursor) visible because tables/columns tends to be more cramped.","","// Helper","inline ImGuiTableFlags TableFixFlags(ImGuiTableFlags flags, ImGuiWindow* outer_window)","{"," // Adjust flags: set default sizing policy"," if ((flags \u0026 ImGuiTableFlags_SizingMask_) == 0)"," flags |= ((flags \u0026 ImGuiTableFlags_ScrollX) || (outer_window-\u003eFlags \u0026 ImGuiWindowFlags_AlwaysAutoResize)) ? ImGuiTableFlags_SizingFixedFit : ImGuiTableFlags_SizingStretchSame;",""," // Adjust flags: enable NoKeepColumnsVisible when using ImGuiTableFlags_SizingFixedSame"," if ((flags \u0026 ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedSame)"," flags |= ImGuiTableFlags_NoKeepColumnsVisible;",""," // Adjust flags: enforce borders when resizable"," if (flags \u0026 ImGuiTableFlags_Resizable)"," flags |= ImGuiTableFlags_BordersInnerV;",""," // Adjust flags: disable NoHostExtendX/NoHostExtendY if we have any scrolling going on"," if (flags \u0026 (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY))"," flags \u0026= ~(ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_NoHostExtendY);",""," // Adjust flags: NoBordersInBodyUntilResize takes priority over NoBordersInBody"," if (flags \u0026 ImGuiTableFlags_NoBordersInBodyUntilResize)"," flags \u0026= ~ImGuiTableFlags_NoBordersInBody;",""," // Adjust flags: disable saved settings if there's nothing to save"," if ((flags \u0026 (ImGuiTableFlags_Resizable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Sortable)) == 0)"," flags |= ImGuiTableFlags_NoSavedSettings;",""," // Inherit _NoSavedSettings from top-level window (child windows always have _NoSavedSettings set)"," if (outer_window-\u003eRootWindow-\u003eFlags \u0026 ImGuiWindowFlags_NoSavedSettings)"," flags |= ImGuiTableFlags_NoSavedSettings;",""," return flags;","}","","ImGuiTable* ImGui::TableFindByID(ImGuiID id)","{"," ImGuiContext\u0026 g = *GImGui;"," return g.Tables.GetByKey(id);","}","","// Read about \"TABLE SIZING\" at the top of this file.","bool ImGui::BeginTable(const char* str_id, int columns_count, ImGuiTableFlags flags, const ImVec2\u0026 outer_size, float inner_width)","{"," ImGuiID id = GetID(str_id);"," return BeginTableEx(str_id, id, columns_count, flags, outer_size, inner_width);","}","","bool ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImGuiTableFlags flags, const ImVec2\u0026 outer_size, float inner_width)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* outer_window = GetCurrentWindow();"," if (outer_window-\u003eSkipItems) // Consistent with other tables + beneficial side effect that assert on miscalling EndTable() will be more visible."," return false;",""," // Sanity checks"," IM_ASSERT(columns_count \u003e 0 \u0026\u0026 columns_count \u003c IMGUI_TABLE_MAX_COLUMNS);"," if (flags \u0026 ImGuiTableFlags_ScrollX)"," IM_ASSERT(inner_width \u003e= 0.0f);",""," // If an outer size is specified ahead we will be able to early out when not visible. Exact clipping criteria may evolve."," // FIXME: coarse clipping because access to table data causes two issues:"," // - instance numbers varying/unstable. may not be a direct problem for users, but could make outside access broken or confusing, e.g. TestEngine."," // - can't implement support for ImGuiChildFlags_ResizeY as we need to somehow pull the height data from somewhere. this also needs stable instance numbers."," // The side-effects of accessing table data on coarse clip would be:"," // - always reserving the pooled ImGuiTable data ahead for a fully clipped table (minor IMHO). Also the 'outer_window_is_measuring_size' criteria may already be defeating this in some situations."," // - always performing the GetOrAddByKey() O(log N) query in g.Tables.Map[]."," const bool use_child_window = (flags \u0026 (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY)) != 0;"," const ImVec2 avail_size = GetContentRegionAvail();"," const ImVec2 actual_outer_size = ImTrunc(CalcItemSize(outer_size, ImMax(avail_size.x, 1.0f), use_child_window ? ImMax(avail_size.y, 1.0f) : 0.0f));"," const ImRect outer_rect(outer_window-\u003eDC.CursorPos, outer_window-\u003eDC.CursorPos + actual_outer_size);"," const bool outer_window_is_measuring_size = (outer_window-\u003eAutoFitFramesX \u003e 0) || (outer_window-\u003eAutoFitFramesY \u003e 0); // Doesn't apply to AlwaysAutoResize windows!"," if (use_child_window \u0026\u0026 IsClippedEx(outer_rect, 0) \u0026\u0026 !outer_window_is_measuring_size)"," {"," ItemSize(outer_rect);"," ItemAdd(outer_rect, id);"," g.NextWindowData.ClearFlags();"," return false;"," }",""," // [DEBUG] Debug break requested by user"," if (g.DebugBreakInTable == id)"," IM_DEBUG_BREAK();",""," // Acquire storage for the table"," ImGuiTable* table = g.Tables.GetOrAddByKey(id);",""," // Acquire temporary buffers"," const int table_idx = g.Tables.GetIndex(table);"," if (++g.TablesTempDataStacked \u003e g.TablesTempData.Size)"," g.TablesTempData.resize(g.TablesTempDataStacked, ImGuiTableTempData());"," ImGuiTableTempData* temp_data = table-\u003eTempData = \u0026g.TablesTempData[g.TablesTempDataStacked - 1];"," temp_data-\u003eTableIndex = table_idx;"," table-\u003eDrawSplitter = \u0026table-\u003eTempData-\u003eDrawSplitter;"," table-\u003eDrawSplitter-\u003eClear();",""," // Fix flags"," table-\u003eIsDefaultSizingPolicy = (flags \u0026 ImGuiTableFlags_SizingMask_) == 0;"," flags = TableFixFlags(flags, outer_window);",""," // Initialize"," const int previous_frame_active = table-\u003eLastFrameActive;"," const int instance_no = (previous_frame_active != g.FrameCount) ? 0 : table-\u003eInstanceCurrent + 1;"," const ImGuiTableFlags previous_flags = table-\u003eFlags;"," table-\u003eID = id;"," table-\u003eFlags = flags;"," table-\u003eLastFrameActive = g.FrameCount;"," table-\u003eOuterWindow = table-\u003eInnerWindow = outer_window;"," table-\u003eColumnsCount = columns_count;"," table-\u003eIsLayoutLocked = false;"," table-\u003eInnerWidth = inner_width;"," table-\u003eNavLayer = (ImS8)outer_window-\u003eDC.NavLayerCurrent;"," temp_data-\u003eUserOuterSize = outer_size;",""," // Instance data (for instance 0, TableID == TableInstanceID)"," ImGuiID instance_id;"," table-\u003eInstanceCurrent = (ImS16)instance_no;"," if (instance_no \u003e 0)"," {"," IM_ASSERT(table-\u003eColumnsCount == columns_count \u0026\u0026 \"BeginTable(): Cannot change columns count mid-frame while preserving same ID\");"," if (table-\u003eInstanceDataExtra.Size \u003c instance_no)"," table-\u003eInstanceDataExtra.push_back(ImGuiTableInstanceData());"," instance_id = GetIDWithSeed(instance_no, GetIDWithSeed(\"##Instances\", NULL, id)); // Push \"##Instances\" followed by (int)instance_no in ID stack."," }"," else"," {"," instance_id = id;"," }"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," table_instance-\u003eTableInstanceID = instance_id;",""," // When not using a child window, WorkRect.Max will grow as we append contents."," if (use_child_window)"," {"," // Ensure no vertical scrollbar appears if we only want horizontal one, to make flag consistent"," // (we have no other way to disable vertical scrollbar of a window while keeping the horizontal one showing)"," ImVec2 override_content_size(FLT_MAX, FLT_MAX);"," if ((flags \u0026 ImGuiTableFlags_ScrollX) \u0026\u0026 !(flags \u0026 ImGuiTableFlags_ScrollY))"," override_content_size.y = FLT_MIN;",""," // Ensure specified width (when not specified, Stretched columns will act as if the width == OuterWidth and"," // never lead to any scrolling). We don't handle inner_width \u003c 0.0f, we could potentially use it to right-align"," // based on the right side of the child window work rect, which would require knowing ahead if we are going to"," // have decoration taking horizontal spaces (typically a vertical scrollbar)."," if ((flags \u0026 ImGuiTableFlags_ScrollX) \u0026\u0026 inner_width \u003e 0.0f)"," override_content_size.x = inner_width;",""," if (override_content_size.x != FLT_MAX || override_content_size.y != FLT_MAX)"," SetNextWindowContentSize(ImVec2(override_content_size.x != FLT_MAX ? override_content_size.x : 0.0f, override_content_size.y != FLT_MAX ? override_content_size.y : 0.0f));",""," // Reset scroll if we are reactivating it"," if ((previous_flags \u0026 (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY)) == 0)"," if ((g.NextWindowData.HasFlags \u0026 ImGuiNextWindowDataFlags_HasScroll) == 0)"," SetNextWindowScroll(ImVec2(0.0f, 0.0f));",""," // Create scrolling region (without border and zero window padding)"," ImGuiChildFlags child_child_flags = (g.NextWindowData.HasFlags \u0026 ImGuiNextWindowDataFlags_HasChildFlags) ? g.NextWindowData.ChildFlags : ImGuiChildFlags_None;"," ImGuiWindowFlags child_window_flags = (g.NextWindowData.HasFlags \u0026 ImGuiNextWindowDataFlags_HasWindowFlags) ? g.NextWindowData.WindowFlags : ImGuiWindowFlags_None;"," if (flags \u0026 ImGuiTableFlags_ScrollX)"," child_window_flags |= ImGuiWindowFlags_HorizontalScrollbar;"," BeginChildEx(name, instance_id, outer_rect.GetSize(), child_child_flags, child_window_flags);"," table-\u003eInnerWindow = g.CurrentWindow;"," table-\u003eWorkRect = table-\u003eInnerWindow-\u003eWorkRect;"," table-\u003eOuterRect = table-\u003eInnerWindow-\u003eRect();"," table-\u003eInnerRect = table-\u003eInnerWindow-\u003eInnerRect;"," IM_ASSERT(table-\u003eInnerWindow-\u003eWindowPadding.x == 0.0f \u0026\u0026 table-\u003eInnerWindow-\u003eWindowPadding.y == 0.0f \u0026\u0026 table-\u003eInnerWindow-\u003eWindowBorderSize == 0.0f);",""," // Allow submitting when host is measuring"," if (table-\u003eInnerWindow-\u003eSkipItems \u0026\u0026 outer_window_is_measuring_size)"," table-\u003eInnerWindow-\u003eSkipItems = false;",""," // When using multiple instances, ensure they have the same amount of horizontal decorations (aka vertical scrollbar) so stretched columns can be aligned)"," if (instance_no == 0)"," {"," table-\u003eHasScrollbarYPrev = table-\u003eHasScrollbarYCurr;"," table-\u003eHasScrollbarYCurr = false;"," }"," table-\u003eHasScrollbarYCurr |= table-\u003eInnerWindow-\u003eScrollbarY;"," }"," else"," {"," // For non-scrolling tables, WorkRect == OuterRect == InnerRect."," // But at this point we do NOT have a correct value for .Max.y (unless a height has been explicitly passed in). It will only be updated in EndTable()."," table-\u003eWorkRect = table-\u003eOuterRect = table-\u003eInnerRect = outer_rect;"," table-\u003eHasScrollbarYPrev = table-\u003eHasScrollbarYCurr = false;"," }",""," // Push a standardized ID for both child-using and not-child-using tables"," PushOverrideID(id);"," if (instance_no \u003e 0)"," PushOverrideID(instance_id); // FIXME: Somehow this is not resolved by stack-tool, even tho GetIDWithSeed() submitted the symbol.",""," // Backup a copy of host window members we will modify"," ImGuiWindow* inner_window = table-\u003eInnerWindow;"," table-\u003eHostIndentX = inner_window-\u003eDC.Indent.x;"," table-\u003eHostClipRect = inner_window-\u003eClipRect;"," table-\u003eHostSkipItems = inner_window-\u003eSkipItems;"," temp_data-\u003eHostBackupWorkRect = inner_window-\u003eWorkRect;"," temp_data-\u003eHostBackupParentWorkRect = inner_window-\u003eParentWorkRect;"," temp_data-\u003eHostBackupColumnsOffset = outer_window-\u003eDC.ColumnsOffset;"," temp_data-\u003eHostBackupPrevLineSize = inner_window-\u003eDC.PrevLineSize;"," temp_data-\u003eHostBackupCurrLineSize = inner_window-\u003eDC.CurrLineSize;"," temp_data-\u003eHostBackupCursorMaxPos = inner_window-\u003eDC.CursorMaxPos;"," temp_data-\u003eHostBackupItemWidth = outer_window-\u003eDC.ItemWidth;"," temp_data-\u003eHostBackupItemWidthStackSize = outer_window-\u003eDC.ItemWidthStack.Size;"," inner_window-\u003eDC.PrevLineSize = inner_window-\u003eDC.CurrLineSize = ImVec2(0.0f, 0.0f);",""," // Make borders not overlap our contents by offsetting HostClipRect (#6765, #7428, #3752)"," // (we normally shouldn't alter HostClipRect as we rely on TableMergeDrawChannels() expanding non-clipped column toward the"," // limits of that rectangle, in order for ImDrawListSplitter::Merge() to merge the draw commands. However since the overlap"," // problem only affect scrolling tables in this case we can get away with doing it without extra cost)."," if (inner_window != outer_window)"," {"," // FIXME: Because inner_window's Scrollbar doesn't know about border size, since it's not encoded in window-\u003eWindowBorderSize,"," // it already overlaps it and doesn't need an extra offset. Ideally we should be able to pass custom border size with"," // different x/y values to BeginChild()."," if (flags \u0026 ImGuiTableFlags_BordersOuterV)"," {"," table-\u003eHostClipRect.Min.x = ImMin(table-\u003eHostClipRect.Min.x + TABLE_BORDER_SIZE, table-\u003eHostClipRect.Max.x);"," if (inner_window-\u003eDecoOuterSizeX2 == 0.0f)"," table-\u003eHostClipRect.Max.x = ImMax(table-\u003eHostClipRect.Max.x - TABLE_BORDER_SIZE, table-\u003eHostClipRect.Min.x);"," }"," if (flags \u0026 ImGuiTableFlags_BordersOuterH)"," {"," table-\u003eHostClipRect.Min.y = ImMin(table-\u003eHostClipRect.Min.y + TABLE_BORDER_SIZE, table-\u003eHostClipRect.Max.y);"," if (inner_window-\u003eDecoOuterSizeY2 == 0.0f)"," table-\u003eHostClipRect.Max.y = ImMax(table-\u003eHostClipRect.Max.y - TABLE_BORDER_SIZE, table-\u003eHostClipRect.Min.y);"," }"," }",""," // Padding and Spacing"," // - None ........Content..... Pad .....Content........"," // - PadOuter | Pad ..Content..... Pad .....Content.. Pad |"," // - PadInner ........Content.. Pad | Pad ..Content........"," // - PadOuter+PadInner | Pad ..Content.. Pad | Pad ..Content.. Pad |"," const bool pad_outer_x = (flags \u0026 ImGuiTableFlags_NoPadOuterX) ? false : (flags \u0026 ImGuiTableFlags_PadOuterX) ? true : (flags \u0026 ImGuiTableFlags_BordersOuterV) != 0;"," const bool pad_inner_x = (flags \u0026 ImGuiTableFlags_NoPadInnerX) ? false : true;"," const float inner_spacing_for_border = (flags \u0026 ImGuiTableFlags_BordersInnerV) ? TABLE_BORDER_SIZE : 0.0f;"," const float inner_spacing_explicit = (pad_inner_x \u0026\u0026 (flags \u0026 ImGuiTableFlags_BordersInnerV) == 0) ? g.Style.CellPadding.x : 0.0f;"," const float inner_padding_explicit = (pad_inner_x \u0026\u0026 (flags \u0026 ImGuiTableFlags_BordersInnerV) != 0) ? g.Style.CellPadding.x : 0.0f;"," table-\u003eCellSpacingX1 = inner_spacing_explicit + inner_spacing_for_border;"," table-\u003eCellSpacingX2 = inner_spacing_explicit;"," table-\u003eCellPaddingX = inner_padding_explicit;",""," const float outer_padding_for_border = (flags \u0026 ImGuiTableFlags_BordersOuterV) ? TABLE_BORDER_SIZE : 0.0f;"," const float outer_padding_explicit = pad_outer_x ? g.Style.CellPadding.x : 0.0f;"," table-\u003eOuterPaddingX = (outer_padding_for_border + outer_padding_explicit) - table-\u003eCellPaddingX;",""," table-\u003eCurrentColumn = -1;"," table-\u003eCurrentRow = -1;"," table-\u003eRowBgColorCounter = 0;"," table-\u003eLastRowFlags = ImGuiTableRowFlags_None;"," table-\u003eInnerClipRect = (inner_window == outer_window) ? table-\u003eWorkRect : inner_window-\u003eClipRect;"," table-\u003eInnerClipRect.ClipWith(table-\u003eWorkRect); // We need this to honor inner_width"," table-\u003eInnerClipRect.ClipWithFull(table-\u003eHostClipRect);"," table-\u003eInnerClipRect.Max.y = (flags \u0026 ImGuiTableFlags_NoHostExtendY) ? ImMin(table-\u003eInnerClipRect.Max.y, inner_window-\u003eWorkRect.Max.y) : table-\u003eHostClipRect.Max.y;",""," table-\u003eRowPosY1 = table-\u003eRowPosY2 = table-\u003eWorkRect.Min.y; // This is needed somehow"," table-\u003eRowTextBaseline = 0.0f; // This will be cleared again by TableBeginRow()"," table-\u003eRowCellPaddingY = 0.0f;"," table-\u003eFreezeRowsRequest = table-\u003eFreezeRowsCount = 0; // This will be setup by TableSetupScrollFreeze(), if any"," table-\u003eFreezeColumnsRequest = table-\u003eFreezeColumnsCount = 0;"," table-\u003eIsUnfrozenRows = true;"," table-\u003eDeclColumnsCount = table-\u003eAngledHeadersCount = 0;"," if (previous_frame_active + 1 \u003c g.FrameCount)"," table-\u003eIsActiveIdInTable = false;"," table-\u003eAngledHeadersHeight = 0.0f;"," temp_data-\u003eAngledHeadersExtraWidth = 0.0f;",""," // Using opaque colors facilitate overlapping lines of the grid, otherwise we'd need to improve TableDrawBorders()"," table-\u003eBorderColorStrong = GetColorU32(ImGuiCol_TableBorderStrong);"," table-\u003eBorderColorLight = GetColorU32(ImGuiCol_TableBorderLight);",""," // Make table current"," g.CurrentTable = table;"," outer_window-\u003eDC.NavIsScrollPushableX = false; // Shortcut for NavUpdateCurrentWindowIsScrollPushableX();"," outer_window-\u003eDC.CurrentTableIdx = table_idx;"," if (inner_window != outer_window) // So EndChild() within the inner window can restore the table properly."," inner_window-\u003eDC.CurrentTableIdx = table_idx;",""," if ((previous_flags \u0026 ImGuiTableFlags_Reorderable) \u0026\u0026 (flags \u0026 ImGuiTableFlags_Reorderable) == 0)"," table-\u003eIsResetDisplayOrderRequest = true;",""," // Mark as used to avoid GC"," if (table_idx \u003e= g.TablesLastTimeActive.Size)"," g.TablesLastTimeActive.resize(table_idx + 1, -1.0f);"," g.TablesLastTimeActive[table_idx] = (float)g.Time;"," temp_data-\u003eLastTimeActive = (float)g.Time;"," table-\u003eMemoryCompacted = false;",""," // Setup memory buffer (clear data if columns count changed)"," ImGuiTableColumn* old_columns_to_preserve = NULL;"," void* old_columns_raw_data = NULL;"," const int old_columns_count = table-\u003eColumns.size();"," if (old_columns_count != 0 \u0026\u0026 old_columns_count != columns_count)"," {"," // Attempt to preserve width on column count change (#4046)"," old_columns_to_preserve = table-\u003eColumns.Data;"," old_columns_raw_data = table-\u003eRawData;"," table-\u003eRawData = NULL;"," }"," if (table-\u003eRawData == NULL)"," {"," TableBeginInitMemory(table, columns_count);"," table-\u003eIsInitializing = table-\u003eIsSettingsRequestLoad = true;"," }"," if (table-\u003eIsResetAllRequest)"," TableResetSettings(table);"," if (table-\u003eIsInitializing)"," {"," // Initialize"," table-\u003eSettingsOffset = -1;"," table-\u003eIsSortSpecsDirty = true;"," table-\u003eIsSettingsDirty = true; // Records itself into .ini file even when in default state (#7934)"," table-\u003eInstanceInteracted = -1;"," table-\u003eContextPopupColumn = -1;"," table-\u003eReorderColumn = table-\u003eResizedColumn = table-\u003eLastResizedColumn = -1;"," table-\u003eAutoFitSingleColumn = -1;"," table-\u003eHoveredColumnBody = table-\u003eHoveredColumnBorder = -1;"," for (int n = 0; n \u003c columns_count; n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[n];"," if (old_columns_to_preserve \u0026\u0026 n \u003c old_columns_count)"," {"," // FIXME: We don't attempt to preserve column order in this path."," *column = old_columns_to_preserve[n];"," }"," else"," {"," float width_auto = column-\u003eWidthAuto;"," *column = ImGuiTableColumn();"," column-\u003eWidthAuto = width_auto;"," column-\u003eIsPreserveWidthAuto = true; // Preserve WidthAuto when reinitializing a live table: not technically necessary but remove a visible flicker"," column-\u003eIsEnabled = column-\u003eIsUserEnabled = column-\u003eIsUserEnabledNextFrame = true;"," }"," column-\u003eDisplayOrder = table-\u003eDisplayOrderToIndex[n] = (ImGuiTableColumnIdx)n;"," }"," }"," if (old_columns_raw_data)"," IM_FREE(old_columns_raw_data);",""," // Load settings"," if (table-\u003eIsSettingsRequestLoad)"," TableLoadSettings(table);",""," // Handle DPI/font resize"," // This is designed to facilitate DPI changes with the assumption that e.g. style.CellPadding has been scaled as well."," // It will also react to changing fonts with mixed results. It doesn't need to be perfect but merely provide a decent transition."," // FIXME-DPI: Provide consistent standards for reference size. Perhaps using g.CurrentDpiScale would be more self explanatory."," // This is will lead us to non-rounded WidthRequest in columns, which should work but is a poorly tested path."," const float new_ref_scale_unit = g.FontSize; // g.Font-\u003eGetCharAdvance('A') ?"," if (table-\u003eRefScale != 0.0f \u0026\u0026 table-\u003eRefScale != new_ref_scale_unit)"," {"," const float scale_factor = new_ref_scale_unit / table-\u003eRefScale;"," //IMGUI_DEBUG_PRINT(\"[table] %08X RefScaleUnit %.3f -\u003e %.3f, scaling width by %.3f\\n\", table-\u003eID, table-\u003eRefScaleUnit, new_ref_scale_unit, scale_factor);"," for (int n = 0; n \u003c columns_count; n++)"," table-\u003eColumns[n].WidthRequest = table-\u003eColumns[n].WidthRequest * scale_factor;"," }"," table-\u003eRefScale = new_ref_scale_unit;",""," // Disable output until user calls TableNextRow() or TableNextColumn() leading to the TableUpdateLayout() call.."," // This is not strictly necessary but will reduce cases were \"out of table\" output will be misleading to the user."," // Because we cannot safely assert in EndTable() when no rows have been created, this seems like our best option."," inner_window-\u003eSkipItems = true;",""," // Clear names"," // At this point the -\u003eNameOffset field of each column will be invalid until TableUpdateLayout() or the first call to TableSetupColumn()"," if (table-\u003eColumnsNames.Buf.Size \u003e 0)"," table-\u003eColumnsNames.Buf.resize(0);",""," // Apply queued resizing/reordering/hiding requests"," TableBeginApplyRequests(table);",""," return true;","}","","// For reference, the average total _allocation count_ for a table is:","// + 0 (for ImGuiTable instance, we are pooling allocations in g.Tables[])","// + 1 (for table-\u003eRawData allocated below)","// + 1 (for table-\u003eColumnsNames, if names are used)","// Shared allocations for the maximum number of simultaneously nested tables (generally a very small number)","// + 1 (for table-\u003eSplitter._Channels)","// + 2 * active_channels_count (for ImDrawCmd and ImDrawIdx buffers inside channels)","// Where active_channels_count is variable but often == columns_count or == columns_count + 1, see TableSetupDrawChannels() for details.","// Unused channels don't perform their +2 allocations.","void ImGui::TableBeginInitMemory(ImGuiTable* table, int columns_count)","{"," // Allocate single buffer for our arrays"," const int columns_bit_array_size = (int)ImBitArrayGetStorageSizeInBytes(columns_count);"," ImSpanAllocator\u003c6\u003e span_allocator;"," span_allocator.Reserve(0, columns_count * sizeof(ImGuiTableColumn));"," span_allocator.Reserve(1, columns_count * sizeof(ImGuiTableColumnIdx));"," span_allocator.Reserve(2, columns_count * sizeof(ImGuiTableCellData), 4);"," for (int n = 3; n \u003c 6; n++)"," span_allocator.Reserve(n, columns_bit_array_size);"," table-\u003eRawData = IM_ALLOC(span_allocator.GetArenaSizeInBytes());"," memset(table-\u003eRawData, 0, span_allocator.GetArenaSizeInBytes());"," span_allocator.SetArenaBasePtr(table-\u003eRawData);"," span_allocator.GetSpan(0, \u0026table-\u003eColumns);"," span_allocator.GetSpan(1, \u0026table-\u003eDisplayOrderToIndex);"," span_allocator.GetSpan(2, \u0026table-\u003eRowCellData);"," table-\u003eEnabledMaskByDisplayOrder = (ImU32*)span_allocator.GetSpanPtrBegin(3);"," table-\u003eEnabledMaskByIndex = (ImU32*)span_allocator.GetSpanPtrBegin(4);"," table-\u003eVisibleMaskByIndex = (ImU32*)span_allocator.GetSpanPtrBegin(5);","}","","// Apply queued resizing/reordering/hiding requests","void ImGui::TableBeginApplyRequests(ImGuiTable* table)","{"," // Handle resizing request"," // (We process this in the TableBegin() of the first instance of each table)"," // FIXME-TABLE: Contains columns if our work area doesn't allow for scrolling?"," if (table-\u003eInstanceCurrent == 0)"," {"," if (table-\u003eResizedColumn != -1 \u0026\u0026 table-\u003eResizedColumnNextWidth != FLT_MAX)"," TableSetColumnWidth(table-\u003eResizedColumn, table-\u003eResizedColumnNextWidth);"," table-\u003eLastResizedColumn = table-\u003eResizedColumn;"," table-\u003eResizedColumnNextWidth = FLT_MAX;"," table-\u003eResizedColumn = -1;",""," // Process auto-fit for single column, which is a special case for stretch columns and fixed columns with FixedSame policy."," // FIXME-TABLE: Would be nice to redistribute available stretch space accordingly to other weights, instead of giving it all to siblings."," if (table-\u003eAutoFitSingleColumn != -1)"," {"," TableSetColumnWidth(table-\u003eAutoFitSingleColumn, table-\u003eColumns[table-\u003eAutoFitSingleColumn].WidthAuto);"," table-\u003eAutoFitSingleColumn = -1;"," }"," }",""," // Handle reordering request"," // Note: we don't clear ReorderColumn after handling the request."," if (table-\u003eInstanceCurrent == 0)"," {"," if (table-\u003eHeldHeaderColumn == -1 \u0026\u0026 table-\u003eReorderColumn != -1)"," table-\u003eReorderColumn = -1;"," table-\u003eHeldHeaderColumn = -1;"," if (table-\u003eReorderColumn != -1 \u0026\u0026 table-\u003eReorderColumnDir != 0)"," {"," // We need to handle reordering across hidden columns."," // In the configuration below, moving C to the right of E will lead to:"," // ... C [D] E ---\u003e ... [D] E C (Column name/index)"," // ... 2 3 4 ... 2 3 4 (Display order)"," const int reorder_dir = table-\u003eReorderColumnDir;"," IM_ASSERT(reorder_dir == -1 || reorder_dir == +1);"," IM_ASSERT(table-\u003eFlags \u0026 ImGuiTableFlags_Reorderable);"," ImGuiTableColumn* src_column = \u0026table-\u003eColumns[table-\u003eReorderColumn];"," ImGuiTableColumn* dst_column = \u0026table-\u003eColumns[(reorder_dir == -1) ? src_column-\u003ePrevEnabledColumn : src_column-\u003eNextEnabledColumn];"," IM_UNUSED(dst_column);"," const int src_order = src_column-\u003eDisplayOrder;"," const int dst_order = dst_column-\u003eDisplayOrder;"," src_column-\u003eDisplayOrder = (ImGuiTableColumnIdx)dst_order;"," for (int order_n = src_order + reorder_dir; order_n != dst_order + reorder_dir; order_n += reorder_dir)"," table-\u003eColumns[table-\u003eDisplayOrderToIndex[order_n]].DisplayOrder -= (ImGuiTableColumnIdx)reorder_dir;"," IM_ASSERT(dst_column-\u003eDisplayOrder == dst_order - reorder_dir);",""," // Display order is stored in both columns-\u003eIndexDisplayOrder and table-\u003eDisplayOrder[]. Rebuild later from the former."," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," table-\u003eDisplayOrderToIndex[table-\u003eColumns[column_n].DisplayOrder] = (ImGuiTableColumnIdx)column_n;"," table-\u003eReorderColumnDir = 0;"," table-\u003eIsSettingsDirty = true;"," }"," }",""," // Handle display order reset request"," if (table-\u003eIsResetDisplayOrderRequest)"," {"," for (int n = 0; n \u003c table-\u003eColumnsCount; n++)"," table-\u003eDisplayOrderToIndex[n] = table-\u003eColumns[n].DisplayOrder = (ImGuiTableColumnIdx)n;"," table-\u003eIsResetDisplayOrderRequest = false;"," table-\u003eIsSettingsDirty = true;"," }","}","","// Adjust flags: default width mode + stretch columns are not allowed when auto extending","static void TableSetupColumnFlags(ImGuiTable* table, ImGuiTableColumn* column, ImGuiTableColumnFlags flags_in)","{"," ImGuiTableColumnFlags flags = flags_in;",""," // Sizing Policy"," if ((flags \u0026 ImGuiTableColumnFlags_WidthMask_) == 0)"," {"," const ImGuiTableFlags table_sizing_policy = (table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_);"," if (table_sizing_policy == ImGuiTableFlags_SizingFixedFit || table_sizing_policy == ImGuiTableFlags_SizingFixedSame)"," flags |= ImGuiTableColumnFlags_WidthFixed;"," else"," flags |= ImGuiTableColumnFlags_WidthStretch;"," }"," else"," {"," IM_ASSERT(ImIsPowerOfTwo(flags \u0026 ImGuiTableColumnFlags_WidthMask_)); // Check that only 1 of each set is used."," }",""," // Resize"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_Resizable) == 0)"," flags |= ImGuiTableColumnFlags_NoResize;",""," // Sorting"," if ((flags \u0026 ImGuiTableColumnFlags_NoSortAscending) \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_NoSortDescending))"," flags |= ImGuiTableColumnFlags_NoSort;",""," // Indentation"," if ((flags \u0026 ImGuiTableColumnFlags_IndentMask_) == 0)"," flags |= (table-\u003eColumns.index_from_ptr(column) == 0) ? ImGuiTableColumnFlags_IndentEnable : ImGuiTableColumnFlags_IndentDisable;",""," // Alignment"," //if ((flags \u0026 ImGuiTableColumnFlags_AlignMask_) == 0)"," // flags |= ImGuiTableColumnFlags_AlignCenter;"," //IM_ASSERT(ImIsPowerOfTwo(flags \u0026 ImGuiTableColumnFlags_AlignMask_)); // Check that only 1 of each set is used.",""," // Preserve status flags"," column-\u003eFlags = flags | (column-\u003eFlags \u0026 ImGuiTableColumnFlags_StatusMask_);",""," // Build an ordered list of available sort directions"," column-\u003eSortDirectionsAvailCount = column-\u003eSortDirectionsAvailMask = column-\u003eSortDirectionsAvailList = 0;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_Sortable)"," {"," int count = 0, mask = 0, list = 0;"," if ((flags \u0026 ImGuiTableColumnFlags_PreferSortAscending) != 0 \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_NoSortAscending) == 0) { mask |= 1 \u003c\u003c ImGuiSortDirection_Ascending; list |= ImGuiSortDirection_Ascending \u003c\u003c (count \u003c\u003c 1); count++; }"," if ((flags \u0026 ImGuiTableColumnFlags_PreferSortDescending) != 0 \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_NoSortDescending) == 0) { mask |= 1 \u003c\u003c ImGuiSortDirection_Descending; list |= ImGuiSortDirection_Descending \u003c\u003c (count \u003c\u003c 1); count++; }"," if ((flags \u0026 ImGuiTableColumnFlags_PreferSortAscending) == 0 \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_NoSortAscending) == 0) { mask |= 1 \u003c\u003c ImGuiSortDirection_Ascending; list |= ImGuiSortDirection_Ascending \u003c\u003c (count \u003c\u003c 1); count++; }"," if ((flags \u0026 ImGuiTableColumnFlags_PreferSortDescending) == 0 \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_NoSortDescending) == 0) { mask |= 1 \u003c\u003c ImGuiSortDirection_Descending; list |= ImGuiSortDirection_Descending \u003c\u003c (count \u003c\u003c 1); count++; }"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_SortTristate) || count == 0) { mask |= 1 \u003c\u003c ImGuiSortDirection_None; count++; }"," column-\u003eSortDirectionsAvailList = (ImU8)list;"," column-\u003eSortDirectionsAvailMask = (ImU8)mask;"," column-\u003eSortDirectionsAvailCount = (ImU8)count;"," ImGui::TableFixColumnSortDirection(table, column);"," }","}","","// Layout columns for the frame. This is in essence the followup to BeginTable() and this is our largest function.","// Runs on the first call to TableNextRow(), to give a chance for TableSetupColumn() and other TableSetupXXXXX() functions to be called first.","// FIXME-TABLE: Our width (and therefore our WorkRect) will be minimal in the first frame for _WidthAuto columns.","// Increase feedback side-effect with widgets relying on WorkRect.Max.x... Maybe provide a default distribution for _WidthAuto columns?","void ImGui::TableUpdateLayout(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," IM_ASSERT(table-\u003eIsLayoutLocked == false);",""," const ImGuiTableFlags table_sizing_policy = (table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_);"," table-\u003eIsDefaultDisplayOrder = true;"," table-\u003eColumnsEnabledCount = 0;"," ImBitArrayClearAllBits(table-\u003eEnabledMaskByIndex, table-\u003eColumnsCount);"," ImBitArrayClearAllBits(table-\u003eEnabledMaskByDisplayOrder, table-\u003eColumnsCount);"," table-\u003eLeftMostEnabledColumn = -1;"," table-\u003eMinColumnWidth = ImMax(1.0f, g.Style.FramePadding.x * 1.0f); // g.Style.ColumnsMinSpacing; // FIXME-TABLE",""," // [Part 1] Apply/lock Enabled and Order states. Calculate auto/ideal width for columns. Count fixed/stretch columns."," // Process columns in their visible orders as we are building the Prev/Next indices."," int count_fixed = 0; // Number of columns that have fixed sizing policies"," int count_stretch = 0; // Number of columns that have stretch sizing policies"," int prev_visible_column_idx = -1;"," bool has_auto_fit_request = false;"," bool has_resizable = false;"," float stretch_sum_width_auto = 0.0f;"," float fixed_max_width_auto = 0.0f;"," for (int order_n = 0; order_n \u003c table-\u003eColumnsCount; order_n++)"," {"," const int column_n = table-\u003eDisplayOrderToIndex[order_n];"," if (column_n != order_n)"," table-\u003eIsDefaultDisplayOrder = false;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," // Clear column setup if not submitted by user. Currently we make it mandatory to call TableSetupColumn() every frame."," // It would easily work without but we're not ready to guarantee it since e.g. names need resubmission anyway."," // We take a slight shortcut but in theory we could be calling TableSetupColumn() here with dummy values, it should yield the same effect."," if (table-\u003eDeclColumnsCount \u003c= column_n)"," {"," TableSetupColumnFlags(table, column, ImGuiTableColumnFlags_None);"," column-\u003eNameOffset = -1;"," column-\u003eUserID = 0;"," column-\u003eInitStretchWeightOrWidth = -1.0f;"," }",""," // Update Enabled state, mark settings and sort specs dirty"," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_Hideable) || (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoHide))"," column-\u003eIsUserEnabledNextFrame = true;"," if (column-\u003eIsUserEnabled != column-\u003eIsUserEnabledNextFrame)"," {"," column-\u003eIsUserEnabled = column-\u003eIsUserEnabledNextFrame;"," table-\u003eIsSettingsDirty = true;"," }"," column-\u003eIsEnabled = column-\u003eIsUserEnabled \u0026\u0026 (column-\u003eFlags \u0026 ImGuiTableColumnFlags_Disabled) == 0;",""," if (column-\u003eSortOrder != -1 \u0026\u0026 !column-\u003eIsEnabled)"," table-\u003eIsSortSpecsDirty = true;"," if (column-\u003eSortOrder \u003e 0 \u0026\u0026 !(table-\u003eFlags \u0026 ImGuiTableFlags_SortMulti))"," table-\u003eIsSortSpecsDirty = true;",""," // Auto-fit unsized columns"," const bool start_auto_fit = (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) ? (column-\u003eWidthRequest \u003c 0.0f) : (column-\u003eStretchWeight \u003c 0.0f);"," if (start_auto_fit)"," column-\u003eAutoFitQueue = column-\u003eCannotSkipItemsQueue = (1 \u003c\u003c 3) - 1; // Fit for three frames",""," if (!column-\u003eIsEnabled)"," {"," column-\u003eIndexWithinEnabledSet = -1;"," continue;"," }",""," // Mark as enabled and link to previous/next enabled column"," column-\u003ePrevEnabledColumn = (ImGuiTableColumnIdx)prev_visible_column_idx;"," column-\u003eNextEnabledColumn = -1;"," if (prev_visible_column_idx != -1)"," table-\u003eColumns[prev_visible_column_idx].NextEnabledColumn = (ImGuiTableColumnIdx)column_n;"," else"," table-\u003eLeftMostEnabledColumn = (ImGuiTableColumnIdx)column_n;"," column-\u003eIndexWithinEnabledSet = table-\u003eColumnsEnabledCount++;"," ImBitArraySetBit(table-\u003eEnabledMaskByIndex, column_n);"," ImBitArraySetBit(table-\u003eEnabledMaskByDisplayOrder, column-\u003eDisplayOrder);"," prev_visible_column_idx = column_n;"," IM_ASSERT(column-\u003eIndexWithinEnabledSet \u003c= column-\u003eDisplayOrder);",""," // Calculate ideal/auto column width (that's the width required for all contents to be visible without clipping)"," // Combine width from regular rows + width from headers unless requested not to."," if (!column-\u003eIsPreserveWidthAuto \u0026\u0026 table-\u003eInstanceCurrent == 0)"," column-\u003eWidthAuto = TableGetColumnWidthAuto(table, column);",""," // Non-resizable columns keep their requested width (apply user value regardless of IsPreserveWidthAuto)"," const bool column_is_resizable = (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize) == 0;"," if (column_is_resizable)"," has_resizable = true;"," if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) \u0026\u0026 column-\u003eInitStretchWeightOrWidth \u003e 0.0f \u0026\u0026 !column_is_resizable)"," column-\u003eWidthAuto = column-\u003eInitStretchWeightOrWidth;",""," if (column-\u003eAutoFitQueue != 0x00)"," has_auto_fit_request = true;"," if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch)"," {"," stretch_sum_width_auto += column-\u003eWidthAuto;"," count_stretch++;"," }"," else"," {"," fixed_max_width_auto = ImMax(fixed_max_width_auto, column-\u003eWidthAuto);"," count_fixed++;"," }"," }"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_Sortable) \u0026\u0026 table-\u003eSortSpecsCount == 0 \u0026\u0026 !(table-\u003eFlags \u0026 ImGuiTableFlags_SortTristate))"," table-\u003eIsSortSpecsDirty = true;"," table-\u003eRightMostEnabledColumn = (ImGuiTableColumnIdx)prev_visible_column_idx;"," IM_ASSERT(table-\u003eLeftMostEnabledColumn \u003e= 0 \u0026\u0026 table-\u003eRightMostEnabledColumn \u003e= 0);",""," // [Part 2] Disable child window clipping while fitting columns. This is not strictly necessary but makes it possible to avoid"," // the column fitting having to wait until the first visible frame of the child container (may or not be a good thing). Also see #6510."," // FIXME-TABLE: for always auto-resizing columns may not want to do that all the time."," if (has_auto_fit_request \u0026\u0026 table-\u003eOuterWindow != table-\u003eInnerWindow)"," table-\u003eInnerWindow-\u003eSkipItems = false;"," if (has_auto_fit_request)"," table-\u003eIsSettingsDirty = true;",""," // [Part 3] Fix column flags and record a few extra information."," float sum_width_requests = 0.0f; // Sum of all width for fixed and auto-resize columns, excluding width contributed by Stretch columns but including spacing/padding."," float stretch_sum_weights = 0.0f; // Sum of all weights for stretch columns."," table-\u003eLeftMostStretchedColumn = table-\u003eRightMostStretchedColumn = -1;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByIndex, column_n))"," continue;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," const bool column_is_resizable = (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize) == 0;"," if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed)"," {"," // Apply same widths policy"," float width_auto = column-\u003eWidthAuto;"," if (table_sizing_policy == ImGuiTableFlags_SizingFixedSame \u0026\u0026 (column-\u003eAutoFitQueue != 0x00 || !column_is_resizable))"," width_auto = fixed_max_width_auto;",""," // Apply automatic width"," // Latch initial size for fixed columns and update it constantly for auto-resizing column (unless clipped!)"," if (column-\u003eAutoFitQueue != 0x00)"," column-\u003eWidthRequest = width_auto;"," else if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) \u0026\u0026 !column_is_resizable \u0026\u0026 column-\u003eIsRequestOutput)"," column-\u003eWidthRequest = width_auto;",""," // FIXME-TABLE: Increase minimum size during init frame to avoid biasing auto-fitting widgets"," // (e.g. TextWrapped) too much. Otherwise what tends to happen is that TextWrapped would output a very"," // large height (= first frame scrollbar display very off + clipper would skip lots of items)."," // This is merely making the side-effect less extreme, but doesn't properly fixes it."," // FIXME: Move this to -\u003eWidthGiven to avoid temporary lossyless?"," // FIXME: This break IsPreserveWidthAuto from not flickering if the stored WidthAuto was smaller."," if (column-\u003eAutoFitQueue \u003e 0x01 \u0026\u0026 table-\u003eIsInitializing \u0026\u0026 !column-\u003eIsPreserveWidthAuto)"," column-\u003eWidthRequest = ImMax(column-\u003eWidthRequest, table-\u003eMinColumnWidth * 4.0f); // FIXME-TABLE: Another constant/scale?"," sum_width_requests += column-\u003eWidthRequest;"," }"," else"," {"," // Initialize stretch weight"," if (column-\u003eAutoFitQueue != 0x00 || column-\u003eStretchWeight \u003c 0.0f || !column_is_resizable)"," {"," if (column-\u003eInitStretchWeightOrWidth \u003e 0.0f)"," column-\u003eStretchWeight = column-\u003eInitStretchWeightOrWidth;"," else if (table_sizing_policy == ImGuiTableFlags_SizingStretchProp)"," column-\u003eStretchWeight = (column-\u003eWidthAuto / stretch_sum_width_auto) * count_stretch;"," else"," column-\u003eStretchWeight = 1.0f;"," }",""," stretch_sum_weights += column-\u003eStretchWeight;"," if (table-\u003eLeftMostStretchedColumn == -1 || table-\u003eColumns[table-\u003eLeftMostStretchedColumn].DisplayOrder \u003e column-\u003eDisplayOrder)"," table-\u003eLeftMostStretchedColumn = (ImGuiTableColumnIdx)column_n;"," if (table-\u003eRightMostStretchedColumn == -1 || table-\u003eColumns[table-\u003eRightMostStretchedColumn].DisplayOrder \u003c column-\u003eDisplayOrder)"," table-\u003eRightMostStretchedColumn = (ImGuiTableColumnIdx)column_n;"," }"," column-\u003eIsPreserveWidthAuto = false;"," sum_width_requests += table-\u003eCellPaddingX * 2.0f;"," }"," table-\u003eColumnsEnabledFixedCount = (ImGuiTableColumnIdx)count_fixed;"," table-\u003eColumnsStretchSumWeights = stretch_sum_weights;",""," // [Part 4] Apply final widths based on requested widths"," const ImRect work_rect = table-\u003eWorkRect;"," const float width_spacings = (table-\u003eOuterPaddingX * 2.0f) + (table-\u003eCellSpacingX1 + table-\u003eCellSpacingX2) * (table-\u003eColumnsEnabledCount - 1);"," const float width_removed = (table-\u003eHasScrollbarYPrev \u0026\u0026 !table-\u003eInnerWindow-\u003eScrollbarY) ? g.Style.ScrollbarSize : 0.0f; // To synchronize decoration width of synced tables with mismatching scrollbar state (#5920)"," const float width_avail = ImMax(1.0f, (((table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX) \u0026\u0026 table-\u003eInnerWidth == 0.0f) ? table-\u003eInnerClipRect.GetWidth() : work_rect.GetWidth()) - width_removed);"," const float width_avail_for_stretched_columns = width_avail - width_spacings - sum_width_requests;"," float width_remaining_for_stretched_columns = width_avail_for_stretched_columns;"," table-\u003eColumnsGivenWidth = width_spacings + (table-\u003eCellPaddingX * 2.0f) * table-\u003eColumnsEnabledCount;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByIndex, column_n))"," continue;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," // Allocate width for stretched/weighted columns (StretchWeight gets converted into WidthRequest)"," if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch)"," {"," float weight_ratio = column-\u003eStretchWeight / stretch_sum_weights;"," column-\u003eWidthRequest = IM_TRUNC(ImMax(width_avail_for_stretched_columns * weight_ratio, table-\u003eMinColumnWidth) + 0.01f);"," width_remaining_for_stretched_columns -= column-\u003eWidthRequest;"," }",""," // [Resize Rule 1] The right-most Visible column is not resizable if there is at least one Stretch column"," // See additional comments in TableSetColumnWidth()."," if (column-\u003eNextEnabledColumn == -1 \u0026\u0026 table-\u003eLeftMostStretchedColumn != -1)"," column-\u003eFlags |= ImGuiTableColumnFlags_NoDirectResize_;",""," // Assign final width, record width in case we will need to shrink"," column-\u003eWidthGiven = ImTrunc(ImMax(column-\u003eWidthRequest, table-\u003eMinColumnWidth));"," table-\u003eColumnsGivenWidth += column-\u003eWidthGiven;"," }",""," // [Part 5] Redistribute stretch remainder width due to rounding (remainder width is \u003c 1.0f * number of Stretch column)."," // Using right-to-left distribution (more likely to match resizing cursor)."," if (width_remaining_for_stretched_columns \u003e= 1.0f \u0026\u0026 !(table-\u003eFlags \u0026 ImGuiTableFlags_PreciseWidths))"," for (int order_n = table-\u003eColumnsCount - 1; stretch_sum_weights \u003e 0.0f \u0026\u0026 width_remaining_for_stretched_columns \u003e= 1.0f \u0026\u0026 order_n \u003e= 0; order_n--)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByDisplayOrder, order_n))"," continue;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eDisplayOrderToIndex[order_n]];"," if (!(column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch))"," continue;"," column-\u003eWidthRequest += 1.0f;"," column-\u003eWidthGiven += 1.0f;"," width_remaining_for_stretched_columns -= 1.0f;"," }",""," // Determine if table is hovered which will be used to flag columns as hovered."," // - In principle we'd like to use the equivalent of IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem),"," // but because our item is partially submitted at this point we use ItemHoverable() and a workaround (temporarily"," // clear ActiveId, which is equivalent to the change provided by _AllowWhenBLockedByActiveItem)."," // - This allows columns to be marked as hovered when e.g. clicking a button inside the column, or using drag and drop."," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," table_instance-\u003eHoveredRowLast = table_instance-\u003eHoveredRowNext;"," table_instance-\u003eHoveredRowNext = -1;"," table-\u003eHoveredColumnBody = table-\u003eHoveredColumnBorder = -1;"," const ImRect mouse_hit_rect(table-\u003eOuterRect.Min.x, table-\u003eOuterRect.Min.y, table-\u003eOuterRect.Max.x, ImMax(table-\u003eOuterRect.Max.y, table-\u003eOuterRect.Min.y + table_instance-\u003eLastOuterHeight));"," const ImGuiID backup_active_id = g.ActiveId;"," g.ActiveId = 0;"," const bool is_hovering_table = ItemHoverable(mouse_hit_rect, 0, ImGuiItemFlags_None);"," g.ActiveId = backup_active_id;",""," // Determine skewed MousePos.x to support angled headers."," float mouse_skewed_x = g.IO.MousePos.x;"," if (table-\u003eAngledHeadersHeight \u003e 0.0f)"," if (g.IO.MousePos.y \u003e= table-\u003eOuterRect.Min.y \u0026\u0026 g.IO.MousePos.y \u003c= table-\u003eOuterRect.Min.y + table-\u003eAngledHeadersHeight)"," mouse_skewed_x += ImTrunc((table-\u003eOuterRect.Min.y + table-\u003eAngledHeadersHeight - g.IO.MousePos.y) * table-\u003eAngledHeadersSlope);",""," // [Part 6] Setup final position, offset, skip/clip states and clipping rectangles, detect hovered column"," // Process columns in their visible orders as we are comparing the visible order and adjusting host_clip_rect while looping."," int visible_n = 0;"," bool has_at_least_one_column_requesting_output = false;"," bool offset_x_frozen = (table-\u003eFreezeColumnsCount \u003e 0);"," float offset_x = ((table-\u003eFreezeColumnsCount \u003e 0) ? table-\u003eOuterRect.Min.x : work_rect.Min.x) + table-\u003eOuterPaddingX - table-\u003eCellSpacingX1;"," ImRect host_clip_rect = table-\u003eInnerClipRect;"," //host_clip_rect.Max.x += table-\u003eCellPaddingX + table-\u003eCellSpacingX2;"," ImBitArrayClearAllBits(table-\u003eVisibleMaskByIndex, table-\u003eColumnsCount);"," for (int order_n = 0; order_n \u003c table-\u003eColumnsCount; order_n++)"," {"," const int column_n = table-\u003eDisplayOrderToIndex[order_n];"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," // Initial nav layer: using FreezeRowsCount, NOT FreezeRowsRequest, so Header line changes layer when frozen"," column-\u003eNavLayerCurrent = (ImS8)(table-\u003eFreezeRowsCount \u003e 0 ? ImGuiNavLayer_Menu : (ImGuiNavLayer)table-\u003eNavLayer);",""," if (offset_x_frozen \u0026\u0026 table-\u003eFreezeColumnsCount == visible_n)"," {"," offset_x += work_rect.Min.x - table-\u003eOuterRect.Min.x;"," offset_x_frozen = false;"," }",""," // Clear status flags"," column-\u003eFlags \u0026= ~ImGuiTableColumnFlags_StatusMask_;",""," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByDisplayOrder, order_n))"," {"," // Hidden column: clear a few fields and we are done with it for the remainder of the function."," // We set a zero-width clip rect but set Min.y/Max.y properly to not interfere with the clipper."," column-\u003eMinX = column-\u003eMaxX = column-\u003eWorkMinX = column-\u003eClipRect.Min.x = column-\u003eClipRect.Max.x = offset_x;"," column-\u003eWidthGiven = 0.0f;"," column-\u003eClipRect.Min.y = work_rect.Min.y;"," column-\u003eClipRect.Max.y = FLT_MAX;"," column-\u003eClipRect.ClipWithFull(host_clip_rect);"," column-\u003eIsVisibleX = column-\u003eIsVisibleY = column-\u003eIsRequestOutput = false;"," column-\u003eIsSkipItems = true;"," column-\u003eItemWidth = 1.0f;"," continue;"," }",""," // Lock start position"," column-\u003eMinX = offset_x;",""," // Lock width based on start position and minimum/maximum width for this position"," column-\u003eWidthMax = TableCalcMaxColumnWidth(table, column_n);"," column-\u003eWidthGiven = ImMin(column-\u003eWidthGiven, column-\u003eWidthMax);"," column-\u003eWidthGiven = ImMax(column-\u003eWidthGiven, ImMin(column-\u003eWidthRequest, table-\u003eMinColumnWidth));"," column-\u003eMaxX = offset_x + column-\u003eWidthGiven + table-\u003eCellSpacingX1 + table-\u003eCellSpacingX2 + table-\u003eCellPaddingX * 2.0f;",""," // Lock other positions"," // - ClipRect.Min.x: Because merging draw commands doesn't compare min boundaries, we make ClipRect.Min.x match left bounds to be consistent regardless of merging."," // - ClipRect.Max.x: using WorkMaxX instead of MaxX (aka including padding) makes things more consistent when resizing down, tho slightly detrimental to visibility in very-small column."," // - ClipRect.Max.x: using MaxX makes it easier for header to receive hover highlight with no discontinuity and display sorting arrow."," // - FIXME-TABLE: We want equal width columns to have equal (ClipRect.Max.x - WorkMinX) width, which means ClipRect.max.x cannot stray off host_clip_rect.Max.x else right-most column may appear shorter."," const float previous_instance_work_min_x = column-\u003eWorkMinX;"," column-\u003eWorkMinX = column-\u003eMinX + table-\u003eCellPaddingX + table-\u003eCellSpacingX1;"," column-\u003eWorkMaxX = column-\u003eMaxX - table-\u003eCellPaddingX - table-\u003eCellSpacingX2; // Expected max"," column-\u003eItemWidth = ImTrunc(column-\u003eWidthGiven * 0.65f);"," column-\u003eClipRect.Min.x = column-\u003eMinX;"," column-\u003eClipRect.Min.y = work_rect.Min.y;"," column-\u003eClipRect.Max.x = column-\u003eMaxX; //column-\u003eWorkMaxX;"," column-\u003eClipRect.Max.y = FLT_MAX;"," column-\u003eClipRect.ClipWithFull(host_clip_rect);",""," // Mark column as Clipped (not in sight)"," // Note that scrolling tables (where inner_window != outer_window) handle Y clipped earlier in BeginTable() so IsVisibleY really only applies to non-scrolling tables."," // FIXME-TABLE: Because InnerClipRect.Max.y is conservatively ==outer_window-\u003eClipRect.Max.y, we never can mark columns _Above_ the scroll line as not IsVisibleY."," // Taking advantage of LastOuterHeight would yield good results there..."," // FIXME-TABLE: Y clipping is disabled because it effectively means not submitting will reduce contents width which is fed to outer_window-\u003eDC.CursorMaxPos.x,"," // and this may be used (e.g. typically by outer_window using AlwaysAutoResize or outer_window's horizontal scrollbar, but could be something else)."," // Possible solution to preserve last known content width for clipped column. Test 'table_reported_size' fails when enabling Y clipping and window is resized small."," column-\u003eIsVisibleX = (column-\u003eClipRect.Max.x \u003e column-\u003eClipRect.Min.x);"," column-\u003eIsVisibleY = true; // (column-\u003eClipRect.Max.y \u003e column-\u003eClipRect.Min.y);"," const bool is_visible = column-\u003eIsVisibleX; //\u0026\u0026 column-\u003eIsVisibleY;"," if (is_visible)"," ImBitArraySetBit(table-\u003eVisibleMaskByIndex, column_n);",""," // Mark column as requesting output from user. Note that fixed + non-resizable sets are auto-fitting at all times and therefore always request output."," column-\u003eIsRequestOutput = is_visible || column-\u003eAutoFitQueue != 0 || column-\u003eCannotSkipItemsQueue != 0;",""," // Mark column as SkipItems (ignoring all items/layout)"," // (table-\u003eHostSkipItems is a copy of inner_window-\u003eSkipItems before we cleared it above in Part 2)"," column-\u003eIsSkipItems = !column-\u003eIsEnabled || table-\u003eHostSkipItems;"," if (column-\u003eIsSkipItems)"," IM_ASSERT(!is_visible);"," if (column-\u003eIsRequestOutput \u0026\u0026 !column-\u003eIsSkipItems)"," has_at_least_one_column_requesting_output = true;",""," // Update status flags"," column-\u003eFlags |= ImGuiTableColumnFlags_IsEnabled;"," if (is_visible)"," column-\u003eFlags |= ImGuiTableColumnFlags_IsVisible;"," if (column-\u003eSortOrder != -1)"," column-\u003eFlags |= ImGuiTableColumnFlags_IsSorted;",""," // Detect hovered column"," if (is_hovering_table \u0026\u0026 mouse_skewed_x \u003e= column-\u003eClipRect.Min.x \u0026\u0026 mouse_skewed_x \u003c column-\u003eClipRect.Max.x)"," {"," column-\u003eFlags |= ImGuiTableColumnFlags_IsHovered;"," table-\u003eHoveredColumnBody = (ImGuiTableColumnIdx)column_n;"," }",""," // Alignment"," // FIXME-TABLE: This align based on the whole column width, not per-cell, and therefore isn't useful in"," // many cases (to be able to honor this we might be able to store a log of cells width, per row, for"," // visible rows, but nav/programmatic scroll would have visible artifacts.)"," //if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_AlignRight)"," // column-\u003eWorkMinX = ImMax(column-\u003eWorkMinX, column-\u003eMaxX - column-\u003eContentWidthRowsUnfrozen);"," //else if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_AlignCenter)"," // column-\u003eWorkMinX = ImLerp(column-\u003eWorkMinX, ImMax(column-\u003eStartX, column-\u003eMaxX - column-\u003eContentWidthRowsUnfrozen), 0.5f);",""," // Reset content width variables"," if (table-\u003eInstanceCurrent == 0)"," {"," column-\u003eContentMaxXFrozen = column-\u003eWorkMinX;"," column-\u003eContentMaxXUnfrozen = column-\u003eWorkMinX;"," column-\u003eContentMaxXHeadersUsed = column-\u003eWorkMinX;"," column-\u003eContentMaxXHeadersIdeal = column-\u003eWorkMinX;"," }"," else"," {"," // As we store an absolute value to make per-cell updates faster, we need to offset values used for width computation."," const float offset_from_previous_instance = column-\u003eWorkMinX - previous_instance_work_min_x;"," column-\u003eContentMaxXFrozen += offset_from_previous_instance;"," column-\u003eContentMaxXUnfrozen += offset_from_previous_instance;"," column-\u003eContentMaxXHeadersUsed += offset_from_previous_instance;"," column-\u003eContentMaxXHeadersIdeal += offset_from_previous_instance;"," }",""," // Don't decrement auto-fit counters until container window got a chance to submit its items"," if (table-\u003eHostSkipItems == false \u0026\u0026 table-\u003eInstanceCurrent == 0)"," {"," column-\u003eAutoFitQueue \u003e\u003e= 1;"," column-\u003eCannotSkipItemsQueue \u003e\u003e= 1;"," }",""," if (visible_n \u003c table-\u003eFreezeColumnsCount)"," host_clip_rect.Min.x = ImClamp(column-\u003eMaxX + TABLE_BORDER_SIZE, host_clip_rect.Min.x, host_clip_rect.Max.x);",""," offset_x += column-\u003eWidthGiven + table-\u003eCellSpacingX1 + table-\u003eCellSpacingX2 + table-\u003eCellPaddingX * 2.0f;"," visible_n++;"," }",""," // In case the table is visible (e.g. decorations) but all columns clipped, we keep a column visible."," // Else if give no chance to a clipper-savy user to submit rows and therefore total contents height used by scrollbar."," if (has_at_least_one_column_requesting_output == false)"," {"," table-\u003eColumns[table-\u003eLeftMostEnabledColumn].IsRequestOutput = true;"," table-\u003eColumns[table-\u003eLeftMostEnabledColumn].IsSkipItems = false;"," }",""," // [Part 7] Detect/store when we are hovering the unused space after the right-most column (so e.g. context menus can react on it)"," // Clear Resizable flag if none of our column are actually resizable (either via an explicit _NoResize flag, either"," // because of using _WidthAuto/_WidthStretch). This will hide the resizing option from the context menu."," const float unused_x1 = ImMax(table-\u003eWorkRect.Min.x, table-\u003eColumns[table-\u003eRightMostEnabledColumn].ClipRect.Max.x);"," if (is_hovering_table \u0026\u0026 table-\u003eHoveredColumnBody == -1)"," if (mouse_skewed_x \u003e= unused_x1)"," table-\u003eHoveredColumnBody = (ImGuiTableColumnIdx)table-\u003eColumnsCount;"," if (has_resizable == false \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_Resizable))"," table-\u003eFlags \u0026= ~ImGuiTableFlags_Resizable;",""," table-\u003eIsActiveIdAliveBeforeTable = (g.ActiveIdIsAlive != 0);",""," // [Part 8] Lock actual OuterRect/WorkRect right-most position."," // This is done late to handle the case of fixed-columns tables not claiming more widths that they need."," // Because of this we are careful with uses of WorkRect and InnerClipRect before this point."," if (table-\u003eRightMostStretchedColumn != -1)"," table-\u003eFlags \u0026= ~ImGuiTableFlags_NoHostExtendX;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoHostExtendX)"," {"," table-\u003eOuterRect.Max.x = table-\u003eWorkRect.Max.x = unused_x1;"," table-\u003eInnerClipRect.Max.x = ImMin(table-\u003eInnerClipRect.Max.x, unused_x1);"," }"," table-\u003eInnerWindow-\u003eParentWorkRect = table-\u003eWorkRect;"," table-\u003eBorderX1 = table-\u003eInnerClipRect.Min.x;"," table-\u003eBorderX2 = table-\u003eInnerClipRect.Max.x;",""," // Setup window's WorkRect.Max.y for GetContentRegionAvail(). Other values will be updated in each TableBeginCell() call."," float window_content_max_y;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoHostExtendY)"," window_content_max_y = table-\u003eOuterRect.Max.y;"," else"," window_content_max_y = ImMax(table-\u003eInnerWindow-\u003eContentRegionRect.Max.y, (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollY) ? 0.0f : table-\u003eOuterRect.Max.y);"," table-\u003eInnerWindow-\u003eWorkRect.Max.y = ImClamp(window_content_max_y - g.Style.CellPadding.y, table-\u003eInnerWindow-\u003eWorkRect.Min.y, table-\u003eInnerWindow-\u003eWorkRect.Max.y);",""," // [Part 9] Allocate draw channels and setup background cliprect"," TableSetupDrawChannels(table);",""," // [Part 10] Hit testing on borders"," if (table-\u003eFlags \u0026 ImGuiTableFlags_Resizable)"," TableUpdateBorders(table);"," table_instance-\u003eLastTopHeadersRowHeight = 0.0f;"," table-\u003eIsLayoutLocked = true;"," table-\u003eIsUsingHeaders = false;",""," // Highlight header"," table-\u003eHighlightColumnHeader = -1;"," if (table-\u003eIsContextPopupOpen \u0026\u0026 table-\u003eContextPopupColumn != -1 \u0026\u0026 table-\u003eInstanceInteracted == table-\u003eInstanceCurrent)"," table-\u003eHighlightColumnHeader = table-\u003eContextPopupColumn;"," else if ((table-\u003eFlags \u0026 ImGuiTableFlags_HighlightHoveredColumn) \u0026\u0026 table-\u003eHoveredColumnBody != -1 \u0026\u0026 table-\u003eHoveredColumnBody != table-\u003eColumnsCount \u0026\u0026 table-\u003eHoveredColumnBorder == -1)"," if (g.ActiveId == 0 || (table-\u003eIsActiveIdInTable || g.DragDropActive))"," table-\u003eHighlightColumnHeader = table-\u003eHoveredColumnBody;",""," // [Part 11] Default context menu"," // - To append to this menu: you can call TableBeginContextMenuPopup()/.../EndPopup()."," // - To modify or replace this: set table-\u003eIsContextPopupNoDefaultContents = true, then call TableBeginContextMenuPopup()/.../EndPopup()."," // - You may call TableDrawDefaultContextMenu() with selected flags to display specific sections of the default menu,"," // e.g. TableDrawDefaultContextMenu(table, table-\u003eFlags \u0026 ~ImGuiTableFlags_Hideable) will display everything EXCEPT columns visibility options."," if (table-\u003eDisableDefaultContextMenu == false \u0026\u0026 TableBeginContextMenuPopup(table))"," {"," TableDrawDefaultContextMenu(table, table-\u003eFlags);"," EndPopup();"," }",""," // [Part 12] Sanitize and build sort specs before we have a chance to use them for display."," // This path will only be exercised when sort specs are modified before header rows (e.g. init or visibility change)"," if (table-\u003eIsSortSpecsDirty \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_Sortable))"," TableSortSpecsBuild(table);",""," // [Part 13] Setup inner window decoration size (for scrolling / nav tracking to properly take account of frozen rows/columns)"," if (table-\u003eFreezeColumnsRequest \u003e 0)"," table-\u003eInnerWindow-\u003eDecoInnerSizeX1 = table-\u003eColumns[table-\u003eDisplayOrderToIndex[table-\u003eFreezeColumnsRequest - 1]].MaxX - table-\u003eOuterRect.Min.x;"," if (table-\u003eFreezeRowsRequest \u003e 0)"," table-\u003eInnerWindow-\u003eDecoInnerSizeY1 = table_instance-\u003eLastFrozenHeight;"," table_instance-\u003eLastFrozenHeight = 0.0f;",""," // Initial state"," ImGuiWindow* inner_window = table-\u003eInnerWindow;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoClip)"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(inner_window-\u003eDrawList, TABLE_DRAW_CHANNEL_NOCLIP);"," else"," inner_window-\u003eDrawList-\u003ePushClipRect(inner_window-\u003eInnerClipRect.Min, inner_window-\u003eInnerClipRect.Max, false); // FIXME: use table-\u003eInnerClipRect?","}","","// Process hit-testing on resizing borders. Actual size change will be applied in EndTable()","// - Set table-\u003eHoveredColumnBorder with a short delay/timer to reduce visual feedback noise.","void ImGui::TableUpdateBorders(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," IM_ASSERT(table-\u003eFlags \u0026 ImGuiTableFlags_Resizable);",""," // At this point OuterRect height may be zero or under actual final height, so we rely on temporal coherency and"," // use the final height from last frame. Because this is only affecting _interaction_ with columns, it is not"," // really problematic (whereas the actual visual will be displayed in EndTable() and using the current frame height)."," // Actual columns highlight/render will be performed in EndTable() and not be affected."," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," const float hit_half_width = ImTrunc(TABLE_RESIZE_SEPARATOR_HALF_THICKNESS * g.CurrentDpiScale);"," const float hit_y1 = (table-\u003eFreezeRowsCount \u003e= 1 ? table-\u003eOuterRect.Min.y : table-\u003eWorkRect.Min.y) + table-\u003eAngledHeadersHeight;"," const float hit_y2_body = ImMax(table-\u003eOuterRect.Max.y, hit_y1 + table_instance-\u003eLastOuterHeight - table-\u003eAngledHeadersHeight);"," const float hit_y2_head = hit_y1 + table_instance-\u003eLastTopHeadersRowHeight;",""," for (int order_n = 0; order_n \u003c table-\u003eColumnsCount; order_n++)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByDisplayOrder, order_n))"," continue;",""," const int column_n = table-\u003eDisplayOrderToIndex[order_n];"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eFlags \u0026 (ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_NoDirectResize_))"," continue;",""," // ImGuiTableFlags_NoBordersInBodyUntilResize will be honored in TableDrawBorders()"," const float border_y2_hit = (table-\u003eFlags \u0026 ImGuiTableFlags_NoBordersInBody) ? hit_y2_head : hit_y2_body;"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_NoBordersInBody) \u0026\u0026 table-\u003eIsUsingHeaders == false)"," continue;",""," if (!column-\u003eIsVisibleX \u0026\u0026 table-\u003eLastResizedColumn != column_n)"," continue;",""," ImGuiID column_id = TableGetColumnResizeID(table, column_n, table-\u003eInstanceCurrent);"," ImRect hit_rect(column-\u003eMaxX - hit_half_width, hit_y1, column-\u003eMaxX + hit_half_width, border_y2_hit);"," ItemAdd(hit_rect, column_id, NULL, ImGuiItemFlags_NoNav);"," //GetForegroundDrawList()-\u003eAddRect(hit_rect.Min, hit_rect.Max, IM_COL32(255, 0, 0, 100));",""," bool hovered = false, held = false;"," bool pressed = ButtonBehavior(hit_rect, column_id, \u0026hovered, \u0026held, ImGuiButtonFlags_FlattenChildren | ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnDoubleClick | ImGuiButtonFlags_NoNavFocus);"," if (pressed \u0026\u0026 IsMouseDoubleClicked(0))"," {"," TableSetColumnWidthAutoSingle(table, column_n);"," ClearActiveID();"," held = false;"," }"," if (held)"," {"," if (table-\u003eLastResizedColumn == -1)"," table-\u003eResizeLockMinContentsX2 = table-\u003eRightMostEnabledColumn != -1 ? table-\u003eColumns[table-\u003eRightMostEnabledColumn].MaxX : -FLT_MAX;"," table-\u003eResizedColumn = (ImGuiTableColumnIdx)column_n;"," table-\u003eInstanceInteracted = table-\u003eInstanceCurrent;"," }"," if ((hovered \u0026\u0026 g.HoveredIdTimer \u003e TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER) || held)"," {"," table-\u003eHoveredColumnBorder = (ImGuiTableColumnIdx)column_n;"," SetMouseCursor(ImGuiMouseCursor_ResizeEW);"," }"," }","}","","void ImGui::EndTable()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"EndTable() call should only be done while in BeginTable() scope!\");"," return;"," }",""," // This assert would be very useful to catch a common error... unfortunately it would probably trigger in some"," // cases, and for consistency user may sometimes output empty tables (and still benefit from e.g. outer border)"," //IM_ASSERT(table-\u003eIsLayoutLocked \u0026\u0026 \"Table unused: never called TableNextRow(), is that the intent?\");",""," // If the user never got to call TableNextRow() or TableNextColumn(), we call layout ourselves to ensure all our"," // code paths are consistent (instead of just hoping that TableBegin/TableEnd will work), get borders drawn, etc."," if (!table-\u003eIsLayoutLocked)"," TableUpdateLayout(table);",""," const ImGuiTableFlags flags = table-\u003eFlags;"," ImGuiWindow* inner_window = table-\u003eInnerWindow;"," ImGuiWindow* outer_window = table-\u003eOuterWindow;"," ImGuiTableTempData* temp_data = table-\u003eTempData;"," IM_ASSERT(inner_window == g.CurrentWindow);"," IM_ASSERT(outer_window == inner_window || outer_window == inner_window-\u003eParentWindow);",""," if (table-\u003eIsInsideRow)"," TableEndRow(table);",""," // Context menu in columns body"," if (flags \u0026 ImGuiTableFlags_ContextMenuInBody)"," if (table-\u003eHoveredColumnBody != -1 \u0026\u0026 !IsAnyItemHovered() \u0026\u0026 IsMouseReleased(ImGuiMouseButton_Right))"," TableOpenContextMenu((int)table-\u003eHoveredColumnBody);",""," // Finalize table height"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," inner_window-\u003eDC.PrevLineSize = temp_data-\u003eHostBackupPrevLineSize;"," inner_window-\u003eDC.CurrLineSize = temp_data-\u003eHostBackupCurrLineSize;"," inner_window-\u003eDC.CursorMaxPos = temp_data-\u003eHostBackupCursorMaxPos;"," const float inner_content_max_y = table-\u003eRowPosY2;"," IM_ASSERT(table-\u003eRowPosY2 == inner_window-\u003eDC.CursorPos.y);"," if (inner_window != outer_window)"," inner_window-\u003eDC.CursorMaxPos.y = inner_content_max_y;"," else if (!(flags \u0026 ImGuiTableFlags_NoHostExtendY))"," table-\u003eOuterRect.Max.y = table-\u003eInnerRect.Max.y = ImMax(table-\u003eOuterRect.Max.y, inner_content_max_y); // Patch OuterRect/InnerRect height"," table-\u003eWorkRect.Max.y = ImMax(table-\u003eWorkRect.Max.y, table-\u003eOuterRect.Max.y);"," table_instance-\u003eLastOuterHeight = table-\u003eOuterRect.GetHeight();",""," // Setup inner scrolling range"," // FIXME: This ideally should be done earlier, in BeginTable() SetNextWindowContentSize call, just like writing to inner_window-\u003eDC.CursorMaxPos.y,"," // but since the later is likely to be impossible to do we'd rather update both axes together."," if (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX)"," {"," const float outer_padding_for_border = (table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuterV) ? TABLE_BORDER_SIZE : 0.0f;"," float max_pos_x = table-\u003eInnerWindow-\u003eDC.CursorMaxPos.x;"," if (table-\u003eRightMostEnabledColumn != -1)"," max_pos_x = ImMax(max_pos_x, table-\u003eColumns[table-\u003eRightMostEnabledColumn].WorkMaxX + table-\u003eCellPaddingX + table-\u003eOuterPaddingX - outer_padding_for_border);"," if (table-\u003eResizedColumn != -1)"," max_pos_x = ImMax(max_pos_x, table-\u003eResizeLockMinContentsX2);"," table-\u003eInnerWindow-\u003eDC.CursorMaxPos.x = max_pos_x + table-\u003eTempData-\u003eAngledHeadersExtraWidth;"," }",""," // Pop clipping rect"," if (!(flags \u0026 ImGuiTableFlags_NoClip))"," inner_window-\u003eDrawList-\u003ePopClipRect();"," inner_window-\u003eClipRect = inner_window-\u003eDrawList-\u003e_ClipRectStack.back();",""," // Draw borders"," if ((flags \u0026 ImGuiTableFlags_Borders) != 0)"," TableDrawBorders(table);","","#if 0"," // Strip out dummy channel draw calls"," // We have no way to prevent user submitting direct ImDrawList calls into a hidden column (but ImGui:: calls will be clipped out)"," // Pros: remove draw calls which will have no effect. since they'll have zero-size cliprect they may be early out anyway."," // Cons: making it harder for users watching metrics/debugger to spot the wasted vertices."," if (table-\u003eDummyDrawChannel != (ImGuiTableColumnIdx)-1)"," {"," ImDrawChannel* dummy_channel = \u0026table-\u003eDrawSplitter._Channels[table-\u003eDummyDrawChannel];"," dummy_channel-\u003e_CmdBuffer.resize(0);"," dummy_channel-\u003e_IdxBuffer.resize(0);"," }","#endif",""," // Flatten channels and merge draw calls"," ImDrawListSplitter* splitter = table-\u003eDrawSplitter;"," splitter-\u003eSetCurrentChannel(inner_window-\u003eDrawList, 0);"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_NoClip) == 0)"," TableMergeDrawChannels(table);"," splitter-\u003eMerge(inner_window-\u003eDrawList);",""," // Update ColumnsAutoFitWidth to get us ahead for host using our size to auto-resize without waiting for next BeginTable()"," float auto_fit_width_for_fixed = 0.0f;"," float auto_fit_width_for_stretched = 0.0f;"," float auto_fit_width_for_stretched_min = 0.0f;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," if (IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByIndex, column_n))"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," float column_width_request = ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize)) ? column-\u003eWidthRequest : TableGetColumnWidthAuto(table, column);"," if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed)"," auto_fit_width_for_fixed += column_width_request;"," else"," auto_fit_width_for_stretched += column_width_request;"," if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch) \u0026\u0026 (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize) != 0)"," auto_fit_width_for_stretched_min = ImMax(auto_fit_width_for_stretched_min, column_width_request / (column-\u003eStretchWeight / table-\u003eColumnsStretchSumWeights));"," }"," const float width_spacings = (table-\u003eOuterPaddingX * 2.0f) + (table-\u003eCellSpacingX1 + table-\u003eCellSpacingX2) * (table-\u003eColumnsEnabledCount - 1);"," table-\u003eColumnsAutoFitWidth = width_spacings + (table-\u003eCellPaddingX * 2.0f) * table-\u003eColumnsEnabledCount + auto_fit_width_for_fixed + ImMax(auto_fit_width_for_stretched, auto_fit_width_for_stretched_min);",""," // Update scroll"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX) == 0 \u0026\u0026 inner_window != outer_window)"," {"," inner_window-\u003eScroll.x = 0.0f;"," }"," else if (table-\u003eLastResizedColumn != -1 \u0026\u0026 table-\u003eResizedColumn == -1 \u0026\u0026 inner_window-\u003eScrollbarX \u0026\u0026 table-\u003eInstanceInteracted == table-\u003eInstanceCurrent)"," {"," // When releasing a column being resized, scroll to keep the resulting column in sight"," const float neighbor_width_to_keep_visible = table-\u003eMinColumnWidth + table-\u003eCellPaddingX * 2.0f;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eLastResizedColumn];"," if (column-\u003eMaxX \u003c table-\u003eInnerClipRect.Min.x)"," SetScrollFromPosX(inner_window, column-\u003eMaxX - inner_window-\u003ePos.x - neighbor_width_to_keep_visible, 1.0f);"," else if (column-\u003eMaxX \u003e table-\u003eInnerClipRect.Max.x)"," SetScrollFromPosX(inner_window, column-\u003eMaxX - inner_window-\u003ePos.x + neighbor_width_to_keep_visible, 1.0f);"," }",""," // Apply resizing/dragging at the end of the frame"," if (table-\u003eResizedColumn != -1 \u0026\u0026 table-\u003eInstanceCurrent == table-\u003eInstanceInteracted)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eResizedColumn];"," const float new_x2 = (g.IO.MousePos.x - g.ActiveIdClickOffset.x + ImTrunc(TABLE_RESIZE_SEPARATOR_HALF_THICKNESS * g.CurrentDpiScale));"," const float new_width = ImTrunc(new_x2 - column-\u003eMinX - table-\u003eCellSpacingX1 - table-\u003eCellPaddingX * 2.0f);"," table-\u003eResizedColumnNextWidth = new_width;"," }",""," table-\u003eIsActiveIdInTable = (g.ActiveIdIsAlive != 0 \u0026\u0026 table-\u003eIsActiveIdAliveBeforeTable == false);",""," // Pop from id stack"," IM_ASSERT_USER_ERROR(inner_window-\u003eIDStack.back() == table_instance-\u003eTableInstanceID, \"Mismatching PushID/PopID!\");"," IM_ASSERT_USER_ERROR(outer_window-\u003eDC.ItemWidthStack.Size \u003e= temp_data-\u003eHostBackupItemWidthStackSize, \"Too many PopItemWidth!\");"," if (table-\u003eInstanceCurrent \u003e 0)"," PopID();"," PopID();",""," // Restore window data that we modified"," const ImVec2 backup_outer_max_pos = outer_window-\u003eDC.CursorMaxPos;"," inner_window-\u003eWorkRect = temp_data-\u003eHostBackupWorkRect;"," inner_window-\u003eParentWorkRect = temp_data-\u003eHostBackupParentWorkRect;"," inner_window-\u003eSkipItems = table-\u003eHostSkipItems;"," outer_window-\u003eDC.CursorPos = table-\u003eOuterRect.Min;"," outer_window-\u003eDC.ItemWidth = temp_data-\u003eHostBackupItemWidth;"," outer_window-\u003eDC.ItemWidthStack.Size = temp_data-\u003eHostBackupItemWidthStackSize;"," outer_window-\u003eDC.ColumnsOffset = temp_data-\u003eHostBackupColumnsOffset;",""," // Layout in outer window"," // (FIXME: To allow auto-fit and allow desirable effect of SameLine() we dissociate 'used' vs 'ideal' size by overriding"," // CursorPosPrevLine and CursorMaxPos manually. That should be a more general layout feature, see same problem e.g. #3414)"," if (inner_window != outer_window)"," {"," short backup_nav_layers_active_mask = inner_window-\u003eDC.NavLayersActiveMask;"," inner_window-\u003eDC.NavLayersActiveMask |= 1 \u003c\u003c table-\u003eNavLayer; // So empty table don't appear to navigate differently."," g.CurrentTable = NULL; // To avoid error recovery recursing"," EndChild();"," g.CurrentTable = table;"," inner_window-\u003eDC.NavLayersActiveMask = backup_nav_layers_active_mask;"," }"," else"," {"," ItemSize(table-\u003eOuterRect.GetSize());"," ItemAdd(table-\u003eOuterRect, 0);"," }",""," // Override declared contents width/height to enable auto-resize while not needlessly adding a scrollbar"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoHostExtendX)"," {"," // FIXME-TABLE: Could we remove this section?"," // ColumnsAutoFitWidth may be one frame ahead here since for Fixed+NoResize is calculated from latest contents"," IM_ASSERT((table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX) == 0);"," outer_window-\u003eDC.CursorMaxPos.x = ImMax(backup_outer_max_pos.x, table-\u003eOuterRect.Min.x + table-\u003eColumnsAutoFitWidth);"," }"," else if (temp_data-\u003eUserOuterSize.x \u003c= 0.0f)"," {"," // Some references for this: #7651 + tests \"table_reported_size\", \"table_reported_size_outer\" equivalent Y block"," // - Checking for ImGuiTableFlags_ScrollX/ScrollY flag makes us a frame ahead when disabling those flags."," // - FIXME-TABLE: Would make sense to pre-compute expected scrollbar visibility/sizes to generally save a frame of feedback."," const float inner_content_max_x = table-\u003eOuterRect.Min.x + table-\u003eColumnsAutoFitWidth; // Slightly misleading name but used for code symmetry with inner_content_max_y"," const float decoration_size = table-\u003eTempData-\u003eAngledHeadersExtraWidth + ((table-\u003eFlags \u0026 ImGuiTableFlags_ScrollY) ? inner_window-\u003eScrollbarSizes.x : 0.0f);"," outer_window-\u003eDC.IdealMaxPos.x = ImMax(outer_window-\u003eDC.IdealMaxPos.x, inner_content_max_x + decoration_size - temp_data-\u003eUserOuterSize.x);"," outer_window-\u003eDC.CursorMaxPos.x = ImMax(backup_outer_max_pos.x, ImMin(table-\u003eOuterRect.Max.x, inner_content_max_x + decoration_size));"," }"," else"," {"," outer_window-\u003eDC.CursorMaxPos.x = ImMax(backup_outer_max_pos.x, table-\u003eOuterRect.Max.x);"," }"," if (temp_data-\u003eUserOuterSize.y \u003c= 0.0f)"," {"," const float decoration_size = (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX) ? inner_window-\u003eScrollbarSizes.y : 0.0f;"," outer_window-\u003eDC.IdealMaxPos.y = ImMax(outer_window-\u003eDC.IdealMaxPos.y, inner_content_max_y + decoration_size - temp_data-\u003eUserOuterSize.y);"," outer_window-\u003eDC.CursorMaxPos.y = ImMax(backup_outer_max_pos.y, ImMin(table-\u003eOuterRect.Max.y, inner_content_max_y + decoration_size));"," }"," else"," {"," // OuterRect.Max.y may already have been pushed downward from the initial value (unless ImGuiTableFlags_NoHostExtendY is set)"," outer_window-\u003eDC.CursorMaxPos.y = ImMax(backup_outer_max_pos.y, table-\u003eOuterRect.Max.y);"," }",""," // Save settings"," if (table-\u003eIsSettingsDirty)"," TableSaveSettings(table);"," table-\u003eIsInitializing = false;",""," // Clear or restore current table, if any"," IM_ASSERT(g.CurrentWindow == outer_window \u0026\u0026 g.CurrentTable == table);"," IM_ASSERT(g.TablesTempDataStacked \u003e 0);"," temp_data = (--g.TablesTempDataStacked \u003e 0) ? \u0026g.TablesTempData[g.TablesTempDataStacked - 1] : NULL;"," g.CurrentTable = temp_data ? g.Tables.GetByIndex(temp_data-\u003eTableIndex) : NULL;"," if (g.CurrentTable)"," {"," g.CurrentTable-\u003eTempData = temp_data;"," g.CurrentTable-\u003eDrawSplitter = \u0026temp_data-\u003eDrawSplitter;"," }"," outer_window-\u003eDC.CurrentTableIdx = g.CurrentTable ? g.Tables.GetIndex(g.CurrentTable) : -1;"," NavUpdateCurrentWindowIsScrollPushableX();","}","","// Called in TableSetupColumn() when initializing and in TableLoadSettings() for defaults before applying stored settings.","// 'init_mask' specify which fields to initialize.","static void TableInitColumnDefaults(ImGuiTable* table, ImGuiTableColumn* column, ImGuiTableColumnFlags init_mask)","{"," ImGuiTableColumnFlags flags = column-\u003eFlags;"," if (init_mask \u0026 ImGuiTableFlags_Resizable)"," {"," float init_width_or_weight = column-\u003eInitStretchWeightOrWidth;"," column-\u003eWidthRequest = ((flags \u0026 ImGuiTableColumnFlags_WidthFixed) \u0026\u0026 init_width_or_weight \u003e 0.0f) ? init_width_or_weight : -1.0f;"," column-\u003eStretchWeight = (init_width_or_weight \u003e 0.0f \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_WidthStretch)) ? init_width_or_weight : -1.0f;"," if (init_width_or_weight \u003e 0.0f) // Disable auto-fit if an explicit width/weight has been specified"," column-\u003eAutoFitQueue = 0x00;"," }"," if (init_mask \u0026 ImGuiTableFlags_Reorderable)"," column-\u003eDisplayOrder = (ImGuiTableColumnIdx)table-\u003eColumns.index_from_ptr(column);"," if (init_mask \u0026 ImGuiTableFlags_Hideable)"," column-\u003eIsUserEnabled = column-\u003eIsUserEnabledNextFrame = (flags \u0026 ImGuiTableColumnFlags_DefaultHide) ? 0 : 1;"," if (init_mask \u0026 ImGuiTableFlags_Sortable)"," {"," // Multiple columns using _DefaultSort will be reassigned unique SortOrder values when building the sort specs."," column-\u003eSortOrder = (flags \u0026 ImGuiTableColumnFlags_DefaultSort) ? 0 : -1;"," column-\u003eSortDirection = (flags \u0026 ImGuiTableColumnFlags_DefaultSort) ? ((flags \u0026 ImGuiTableColumnFlags_PreferSortDescending) ? (ImS8)ImGuiSortDirection_Descending : (ImU8)(ImGuiSortDirection_Ascending)) : (ImS8)ImGuiSortDirection_None;"," }","}","","// See \"COLUMNS SIZING POLICIES\" comments at the top of this file","// If (init_width_or_weight \u003c= 0.0f) it is ignored","void ImGui::TableSetupColumn(const char* label, ImGuiTableColumnFlags flags, float init_width_or_weight, ImGuiID user_id)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }"," IM_ASSERT(table-\u003eIsLayoutLocked == false \u0026\u0026 \"Need to call TableSetupColumn() before first row!\");"," IM_ASSERT((flags \u0026 ImGuiTableColumnFlags_StatusMask_) == 0 \u0026\u0026 \"Illegal to pass StatusMask values to TableSetupColumn()\");"," if (table-\u003eDeclColumnsCount \u003e= table-\u003eColumnsCount)"," {"," IM_ASSERT_USER_ERROR(table-\u003eDeclColumnsCount \u003c table-\u003eColumnsCount, \"Called TableSetupColumn() too many times!\");"," return;"," }",""," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eDeclColumnsCount];"," table-\u003eDeclColumnsCount++;",""," // Assert when passing a width or weight if policy is entirely left to default, to avoid storing width into weight and vice-versa."," // Give a grace to users of ImGuiTableFlags_ScrollX."," if (table-\u003eIsDefaultSizingPolicy \u0026\u0026 (flags \u0026 ImGuiTableColumnFlags_WidthMask_) == 0 \u0026\u0026 (flags \u0026 ImGuiTableFlags_ScrollX) == 0)"," IM_ASSERT(init_width_or_weight \u003c= 0.0f \u0026\u0026 \"Can only specify width/weight if sizing policy is set explicitly in either Table or Column.\");",""," // When passing a width automatically enforce WidthFixed policy"," // (whereas TableSetupColumnFlags would default to WidthAuto if table is not resizable)"," if ((flags \u0026 ImGuiTableColumnFlags_WidthMask_) == 0 \u0026\u0026 init_width_or_weight \u003e 0.0f)"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedFit || (table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedSame)"," flags |= ImGuiTableColumnFlags_WidthFixed;"," if (flags \u0026 ImGuiTableColumnFlags_AngledHeader)"," {"," flags |= ImGuiTableColumnFlags_NoHeaderLabel;"," table-\u003eAngledHeadersCount++;"," }",""," TableSetupColumnFlags(table, column, flags);"," column-\u003eUserID = user_id;"," flags = column-\u003eFlags;",""," // Initialize defaults"," column-\u003eInitStretchWeightOrWidth = init_width_or_weight;"," if (table-\u003eIsInitializing)"," {"," ImGuiTableFlags init_flags = ~table-\u003eSettingsLoadedFlags;"," if (column-\u003eWidthRequest \u003c 0.0f \u0026\u0026 column-\u003eStretchWeight \u003c 0.0f)"," init_flags |= ImGuiTableFlags_Resizable;"," TableInitColumnDefaults(table, column, init_flags);"," }",""," // Store name (append with zero-terminator in contiguous buffer)"," // FIXME: If we recorded the number of \\n in names we could compute header row height"," column-\u003eNameOffset = -1;"," if (label != NULL \u0026\u0026 label[0] != 0)"," {"," column-\u003eNameOffset = (ImS16)table-\u003eColumnsNames.size();"," table-\u003eColumnsNames.append(label, label + ImStrlen(label) + 1);"," }","}","","// [Public]","void ImGui::TableSetupScrollFreeze(int columns, int rows)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }"," IM_ASSERT(table-\u003eIsLayoutLocked == false \u0026\u0026 \"Need to call TableSetupColumn() before first row!\");"," IM_ASSERT(columns \u003e= 0 \u0026\u0026 columns \u003c IMGUI_TABLE_MAX_COLUMNS);"," IM_ASSERT(rows \u003e= 0 \u0026\u0026 rows \u003c 128); // Arbitrary limit",""," table-\u003eFreezeColumnsRequest = (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX) ? (ImGuiTableColumnIdx)ImMin(columns, table-\u003eColumnsCount) : 0;"," table-\u003eFreezeColumnsCount = (table-\u003eInnerWindow-\u003eScroll.x != 0.0f) ? table-\u003eFreezeColumnsRequest : 0;"," table-\u003eFreezeRowsRequest = (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollY) ? (ImGuiTableColumnIdx)rows : 0;"," table-\u003eFreezeRowsCount = (table-\u003eInnerWindow-\u003eScroll.y != 0.0f) ? table-\u003eFreezeRowsRequest : 0;"," table-\u003eIsUnfrozenRows = (table-\u003eFreezeRowsCount == 0); // Make sure this is set before TableUpdateLayout() so ImGuiListClipper can benefit from it.b",""," // Ensure frozen columns are ordered in their section. We still allow multiple frozen columns to be reordered."," // FIXME-TABLE: This work for preserving 2143 into 21|43. How about 4321 turning into 21|43? (preserve relative order in each section)"," for (int column_n = 0; column_n \u003c table-\u003eFreezeColumnsRequest; column_n++)"," {"," int order_n = table-\u003eDisplayOrderToIndex[column_n];"," if (order_n != column_n \u0026\u0026 order_n \u003e= table-\u003eFreezeColumnsRequest)"," {"," ImSwap(table-\u003eColumns[table-\u003eDisplayOrderToIndex[order_n]].DisplayOrder, table-\u003eColumns[table-\u003eDisplayOrderToIndex[column_n]].DisplayOrder);"," ImSwap(table-\u003eDisplayOrderToIndex[order_n], table-\u003eDisplayOrderToIndex[column_n]);"," }"," }","}","","//-----------------------------------------------------------------------------","// [SECTION] Tables: Simple accessors","//-----------------------------------------------------------------------------","// - TableGetColumnCount()","// - TableGetColumnName()","// - TableGetColumnName() [Internal]","// - TableSetColumnEnabled()","// - TableGetColumnFlags()","// - TableGetCellBgRect() [Internal]","// - TableGetColumnResizeID() [Internal]","// - TableGetHoveredColumn() [Internal]","// - TableGetHoveredRow() [Internal]","// - TableSetBgColor()","//-----------------------------------------------------------------------------","","int ImGui::TableGetColumnCount()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," return table ? table-\u003eColumnsCount : 0;","}","","const char* ImGui::TableGetColumnName(int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return NULL;"," if (column_n \u003c 0)"," column_n = table-\u003eCurrentColumn;"," return TableGetColumnName(table, column_n);","}","","const char* ImGui::TableGetColumnName(const ImGuiTable* table, int column_n)","{"," if (table-\u003eIsLayoutLocked == false \u0026\u0026 column_n \u003e= table-\u003eDeclColumnsCount)"," return \"\"; // NameOffset is invalid at this point"," const ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eNameOffset == -1)"," return \"\";"," return \u0026table-\u003eColumnsNames.Buf[column-\u003eNameOffset];","}","","// Change user accessible enabled/disabled state of a column (often perceived as \"showing/hiding\" from users point of view)","// Note that end-user can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody)","// - Require table to have the ImGuiTableFlags_Hideable flag because we are manipulating user accessible state.","// - Request will be applied during next layout, which happens on the first call to TableNextRow() after BeginTable().","// - For the getter you can test (TableGetColumnFlags() \u0026 ImGuiTableColumnFlags_IsEnabled) != 0.","// - Alternative: the ImGuiTableColumnFlags_Disabled is an overriding/master disable flag which will also hide the column from context menu.","void ImGui::TableSetColumnEnabled(int column_n, bool enabled)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }"," IM_ASSERT(table-\u003eFlags \u0026 ImGuiTableFlags_Hideable); // See comments above"," if (column_n \u003c 0)"," column_n = table-\u003eCurrentColumn;"," IM_ASSERT(column_n \u003e= 0 \u0026\u0026 column_n \u003c table-\u003eColumnsCount);"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," column-\u003eIsUserEnabledNextFrame = enabled;","}","","// We allow querying for an extra column in order to poll the IsHovered state of the right-most section","ImGuiTableColumnFlags ImGui::TableGetColumnFlags(int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return ImGuiTableColumnFlags_None;"," if (column_n \u003c 0)"," column_n = table-\u003eCurrentColumn;"," if (column_n == table-\u003eColumnsCount)"," return (table-\u003eHoveredColumnBody == column_n) ? ImGuiTableColumnFlags_IsHovered : ImGuiTableColumnFlags_None;"," return table-\u003eColumns[column_n].Flags;","}","","// Return the cell rectangle based on currently known height.","// - Important: we generally don't know our row height until the end of the row, so Max.y will be incorrect in many situations.","// The only case where this is correct is if we provided a min_row_height to TableNextRow() and don't go below it, or in TableEndRow() when we locked that height.","// - Important: if ImGuiTableFlags_PadOuterX is set but ImGuiTableFlags_PadInnerX is not set, the outer-most left and right","// columns report a small offset so their CellBgRect can extend up to the outer border.","// FIXME: But the rendering code in TableEndRow() nullifies that with clamping required for scrolling.","ImRect ImGui::TableGetCellBgRect(const ImGuiTable* table, int column_n)","{"," const ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," float x1 = column-\u003eMinX;"," float x2 = column-\u003eMaxX;"," //if (column-\u003ePrevEnabledColumn == -1)"," // x1 -= table-\u003eOuterPaddingX;"," //if (column-\u003eNextEnabledColumn == -1)"," // x2 += table-\u003eOuterPaddingX;"," x1 = ImMax(x1, table-\u003eWorkRect.Min.x);"," x2 = ImMin(x2, table-\u003eWorkRect.Max.x);"," return ImRect(x1, table-\u003eRowPosY1, x2, table-\u003eRowPosY2);","}","","// Return the resizing ID for the right-side of the given column.","ImGuiID ImGui::TableGetColumnResizeID(ImGuiTable* table, int column_n, int instance_no)","{"," IM_ASSERT(column_n \u003e= 0 \u0026\u0026 column_n \u003c table-\u003eColumnsCount);"," ImGuiID instance_id = TableGetInstanceID(table, instance_no);"," return instance_id + 1 + column_n; // FIXME: #6140: still not ideal","}","","// Return -1 when table is not hovered. return columns_count if hovering the unused space at the right of the right-most visible column.","int ImGui::TableGetHoveredColumn()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return -1;"," return (int)table-\u003eHoveredColumnBody;","}","","// Return -1 when table is not hovered. Return maxrow+1 if in table but below last submitted row.","// *IMPORTANT* Unlike TableGetHoveredColumn(), this has a one frame latency in updating the value.","// This difference with is the reason why this is not public yet.","int ImGui::TableGetHoveredRow()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return -1;"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," return (int)table_instance-\u003eHoveredRowLast;","}","","void ImGui::TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," IM_ASSERT(target != ImGuiTableBgTarget_None);",""," if (color == IM_COL32_DISABLE)"," color = 0;",""," // We cannot draw neither the cell or row background immediately as we don't know the row height at this point in time."," switch (target)"," {"," case ImGuiTableBgTarget_CellBg:"," {"," if (table-\u003eRowPosY1 \u003e table-\u003eInnerClipRect.Max.y) // Discard"," return;"," if (column_n == -1)"," column_n = table-\u003eCurrentColumn;"," if (!IM_BITARRAY_TESTBIT(table-\u003eVisibleMaskByIndex, column_n))"," return;"," if (table-\u003eRowCellDataCurrent \u003c 0 || table-\u003eRowCellData[table-\u003eRowCellDataCurrent].Column != column_n)"," table-\u003eRowCellDataCurrent++;"," ImGuiTableCellData* cell_data = \u0026table-\u003eRowCellData[table-\u003eRowCellDataCurrent];"," cell_data-\u003eBgColor = color;"," cell_data-\u003eColumn = (ImGuiTableColumnIdx)column_n;"," break;"," }"," case ImGuiTableBgTarget_RowBg0:"," case ImGuiTableBgTarget_RowBg1:"," {"," if (table-\u003eRowPosY1 \u003e table-\u003eInnerClipRect.Max.y) // Discard"," return;"," IM_ASSERT(column_n == -1);"," int bg_idx = (target == ImGuiTableBgTarget_RowBg1) ? 1 : 0;"," table-\u003eRowBgColor[bg_idx] = color;"," break;"," }"," default:"," IM_ASSERT(0);"," }","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Row changes","//-------------------------------------------------------------------------","// - TableGetRowIndex()","// - TableNextRow()","// - TableBeginRow() [Internal]","// - TableEndRow() [Internal]","//-------------------------------------------------------------------------","","// [Public] Note: for row coloring we use -\u003eRowBgColorCounter which is the same value without counting header rows","int ImGui::TableGetRowIndex()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return 0;"," return table-\u003eCurrentRow;","}","","// [Public] Starts into the first cell of a new row","void ImGui::TableNextRow(ImGuiTableRowFlags row_flags, float row_min_height)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;",""," if (!table-\u003eIsLayoutLocked)"," TableUpdateLayout(table);"," if (table-\u003eIsInsideRow)"," TableEndRow(table);",""," table-\u003eLastRowFlags = table-\u003eRowFlags;"," table-\u003eRowFlags = row_flags;"," table-\u003eRowCellPaddingY = g.Style.CellPadding.y;"," table-\u003eRowMinHeight = row_min_height;"," TableBeginRow(table);",""," // We honor min_row_height requested by user, but cannot guarantee per-row maximum height,"," // because that would essentially require a unique clipping rectangle per-cell."," table-\u003eRowPosY2 += table-\u003eRowCellPaddingY * 2.0f;"," table-\u003eRowPosY2 = ImMax(table-\u003eRowPosY2, table-\u003eRowPosY1 + row_min_height);",""," // Disable output until user calls TableNextColumn()"," table-\u003eInnerWindow-\u003eSkipItems = true;","}","","// [Internal] Only called by TableNextRow()","void ImGui::TableBeginRow(ImGuiTable* table)","{"," ImGuiWindow* window = table-\u003eInnerWindow;"," IM_ASSERT(!table-\u003eIsInsideRow);",""," // New row"," table-\u003eCurrentRow++;"," table-\u003eCurrentColumn = -1;"," table-\u003eRowBgColor[0] = table-\u003eRowBgColor[1] = IM_COL32_DISABLE;"," table-\u003eRowCellDataCurrent = -1;"," table-\u003eIsInsideRow = true;",""," // Begin frozen rows"," float next_y1 = table-\u003eRowPosY2;"," if (table-\u003eCurrentRow == 0 \u0026\u0026 table-\u003eFreezeRowsCount \u003e 0)"," next_y1 = window-\u003eDC.CursorPos.y = table-\u003eOuterRect.Min.y;",""," table-\u003eRowPosY1 = table-\u003eRowPosY2 = next_y1;"," table-\u003eRowTextBaseline = 0.0f;"," table-\u003eRowIndentOffsetX = window-\u003eDC.Indent.x - table-\u003eHostIndentX; // Lock indent",""," window-\u003eDC.PrevLineTextBaseOffset = 0.0f;"," window-\u003eDC.CursorPosPrevLine = ImVec2(window-\u003eDC.CursorPos.x, window-\u003eDC.CursorPos.y + table-\u003eRowCellPaddingY); // This allows users to call SameLine() to share LineSize between columns."," window-\u003eDC.PrevLineSize = window-\u003eDC.CurrLineSize = ImVec2(0.0f, 0.0f); // This allows users to call SameLine() to share LineSize between columns, and to call it from first column too."," window-\u003eDC.IsSameLine = window-\u003eDC.IsSetPos = false;"," window-\u003eDC.CursorMaxPos.y = next_y1;",""," // Making the header BG color non-transparent will allow us to overlay it multiple times when handling smooth dragging."," if (table-\u003eRowFlags \u0026 ImGuiTableRowFlags_Headers)"," {"," TableSetBgColor(ImGuiTableBgTarget_RowBg0, GetColorU32(ImGuiCol_TableHeaderBg));"," if (table-\u003eCurrentRow == 0)"," table-\u003eIsUsingHeaders = true;"," }","}","","// [Internal] Called by TableNextRow()","void ImGui::TableEndRow(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," IM_ASSERT(window == table-\u003eInnerWindow);"," IM_ASSERT(table-\u003eIsInsideRow);",""," if (table-\u003eCurrentColumn != -1)"," TableEndCell(table);",""," // Logging"," if (g.LogEnabled)"," LogRenderedText(NULL, \"|\");",""," // Position cursor at the bottom of our row so it can be used for e.g. clipping calculation. However it is"," // likely that the next call to TableBeginCell() will reposition the cursor to take account of vertical padding."," window-\u003eDC.CursorPos.y = table-\u003eRowPosY2;",""," // Row background fill"," const float bg_y1 = table-\u003eRowPosY1;"," const float bg_y2 = table-\u003eRowPosY2;"," const bool unfreeze_rows_actual = (table-\u003eCurrentRow + 1 == table-\u003eFreezeRowsCount);"," const bool unfreeze_rows_request = (table-\u003eCurrentRow + 1 == table-\u003eFreezeRowsRequest);"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," if ((table-\u003eRowFlags \u0026 ImGuiTableRowFlags_Headers) \u0026\u0026 (table-\u003eCurrentRow == 0 || (table-\u003eLastRowFlags \u0026 ImGuiTableRowFlags_Headers)))"," table_instance-\u003eLastTopHeadersRowHeight += bg_y2 - bg_y1;",""," const bool is_visible = (bg_y2 \u003e= table-\u003eInnerClipRect.Min.y \u0026\u0026 bg_y1 \u003c= table-\u003eInnerClipRect.Max.y);"," if (is_visible)"," {"," // Update data for TableGetHoveredRow()"," if (table-\u003eHoveredColumnBody != -1 \u0026\u0026 g.IO.MousePos.y \u003e= bg_y1 \u0026\u0026 g.IO.MousePos.y \u003c bg_y2 \u0026\u0026 table_instance-\u003eHoveredRowNext \u003c 0)"," table_instance-\u003eHoveredRowNext = table-\u003eCurrentRow;",""," // Decide of background color for the row"," ImU32 bg_col0 = 0;"," ImU32 bg_col1 = 0;"," if (table-\u003eRowBgColor[0] != IM_COL32_DISABLE)"," bg_col0 = table-\u003eRowBgColor[0];"," else if (table-\u003eFlags \u0026 ImGuiTableFlags_RowBg)"," bg_col0 = GetColorU32((table-\u003eRowBgColorCounter \u0026 1) ? ImGuiCol_TableRowBgAlt : ImGuiCol_TableRowBg);"," if (table-\u003eRowBgColor[1] != IM_COL32_DISABLE)"," bg_col1 = table-\u003eRowBgColor[1];",""," // Decide of top border color"," ImU32 top_border_col = 0;"," const float border_size = TABLE_BORDER_SIZE;"," if (table-\u003eCurrentRow \u003e 0 \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_BordersInnerH))"," top_border_col = (table-\u003eLastRowFlags \u0026 ImGuiTableRowFlags_Headers) ? table-\u003eBorderColorStrong : table-\u003eBorderColorLight;",""," const bool draw_cell_bg_color = table-\u003eRowCellDataCurrent \u003e= 0;"," const bool draw_strong_bottom_border = unfreeze_rows_actual;"," if ((bg_col0 | bg_col1 | top_border_col) != 0 || draw_strong_bottom_border || draw_cell_bg_color)"," {"," // In theory we could call SetWindowClipRectBeforeSetChannel() but since we know TableEndRow() is"," // always followed by a change of clipping rectangle we perform the smallest overwrite possible here."," if ((table-\u003eFlags \u0026 ImGuiTableFlags_NoClip) == 0)"," window-\u003eDrawList-\u003e_CmdHeader.ClipRect = table-\u003eBg0ClipRectForDrawCmd.ToVec4();"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, TABLE_DRAW_CHANNEL_BG0);"," }",""," // Draw row background"," // We soft/cpu clip this so all backgrounds and borders can share the same clipping rectangle"," if (bg_col0 || bg_col1)"," {"," ImRect row_rect(table-\u003eWorkRect.Min.x, bg_y1, table-\u003eWorkRect.Max.x, bg_y2);"," row_rect.ClipWith(table-\u003eBgClipRect);"," if (bg_col0 != 0 \u0026\u0026 row_rect.Min.y \u003c row_rect.Max.y)"," window-\u003eDrawList-\u003eAddRectFilled(row_rect.Min, row_rect.Max, bg_col0);"," if (bg_col1 != 0 \u0026\u0026 row_rect.Min.y \u003c row_rect.Max.y)"," window-\u003eDrawList-\u003eAddRectFilled(row_rect.Min, row_rect.Max, bg_col1);"," }",""," // Draw cell background color"," if (draw_cell_bg_color)"," {"," ImGuiTableCellData* cell_data_end = \u0026table-\u003eRowCellData[table-\u003eRowCellDataCurrent];"," for (ImGuiTableCellData* cell_data = \u0026table-\u003eRowCellData[0]; cell_data \u003c= cell_data_end; cell_data++)"," {"," // As we render the BG here we need to clip things (for layout we would not)"," // FIXME: This cancels the OuterPadding addition done by TableGetCellBgRect(), need to keep it while rendering correctly while scrolling."," const ImGuiTableColumn* column = \u0026table-\u003eColumns[cell_data-\u003eColumn];"," ImRect cell_bg_rect = TableGetCellBgRect(table, cell_data-\u003eColumn);"," cell_bg_rect.ClipWith(table-\u003eBgClipRect);"," cell_bg_rect.Min.x = ImMax(cell_bg_rect.Min.x, column-\u003eClipRect.Min.x); // So that first column after frozen one gets clipped when scrolling"," cell_bg_rect.Max.x = ImMin(cell_bg_rect.Max.x, column-\u003eMaxX);"," if (cell_bg_rect.Min.y \u003c cell_bg_rect.Max.y)"," window-\u003eDrawList-\u003eAddRectFilled(cell_bg_rect.Min, cell_bg_rect.Max, cell_data-\u003eBgColor);"," }"," }",""," // Draw top border"," if (top_border_col \u0026\u0026 bg_y1 \u003e= table-\u003eBgClipRect.Min.y \u0026\u0026 bg_y1 \u003c table-\u003eBgClipRect.Max.y)"," window-\u003eDrawList-\u003eAddLine(ImVec2(table-\u003eBorderX1, bg_y1), ImVec2(table-\u003eBorderX2, bg_y1), top_border_col, border_size);",""," // Draw bottom border at the row unfreezing mark (always strong)"," if (draw_strong_bottom_border \u0026\u0026 bg_y2 \u003e= table-\u003eBgClipRect.Min.y \u0026\u0026 bg_y2 \u003c table-\u003eBgClipRect.Max.y)"," window-\u003eDrawList-\u003eAddLine(ImVec2(table-\u003eBorderX1, bg_y2), ImVec2(table-\u003eBorderX2, bg_y2), table-\u003eBorderColorStrong, border_size);"," }",""," // End frozen rows (when we are past the last frozen row line, teleport cursor and alter clipping rectangle)"," // We need to do that in TableEndRow() instead of TableBeginRow() so the list clipper can mark end of row and"," // get the new cursor position."," if (unfreeze_rows_request)"," {"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," table-\u003eColumns[column_n].NavLayerCurrent = table-\u003eNavLayer;"," const float y0 = ImMax(table-\u003eRowPosY2 + 1, table-\u003eInnerClipRect.Min.y);"," table_instance-\u003eLastFrozenHeight = y0 - table-\u003eOuterRect.Min.y;",""," if (unfreeze_rows_actual)"," {"," IM_ASSERT(table-\u003eIsUnfrozenRows == false);"," table-\u003eIsUnfrozenRows = true;",""," // BgClipRect starts as table-\u003eInnerClipRect, reduce it now and make BgClipRectForDrawCmd == BgClipRect"," table-\u003eBgClipRect.Min.y = table-\u003eBg2ClipRectForDrawCmd.Min.y = ImMin(y0, table-\u003eInnerClipRect.Max.y);"," table-\u003eBgClipRect.Max.y = table-\u003eBg2ClipRectForDrawCmd.Max.y = table-\u003eInnerClipRect.Max.y;"," table-\u003eBg2DrawChannelCurrent = table-\u003eBg2DrawChannelUnfrozen;"," IM_ASSERT(table-\u003eBg2ClipRectForDrawCmd.Min.y \u003c= table-\u003eBg2ClipRectForDrawCmd.Max.y);",""," float row_height = table-\u003eRowPosY2 - table-\u003eRowPosY1;"," table-\u003eRowPosY2 = window-\u003eDC.CursorPos.y = table-\u003eWorkRect.Min.y + table-\u003eRowPosY2 - table-\u003eOuterRect.Min.y;"," table-\u003eRowPosY1 = table-\u003eRowPosY2 - row_height;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," column-\u003eDrawChannelCurrent = column-\u003eDrawChannelUnfrozen;"," column-\u003eClipRect.Min.y = table-\u003eBg2ClipRectForDrawCmd.Min.y;"," }",""," // Update cliprect ahead of TableBeginCell() so clipper can access to new ClipRect-\u003eMin.y"," SetWindowClipRectBeforeSetChannel(window, table-\u003eColumns[0].ClipRect);"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, table-\u003eColumns[0].DrawChannelCurrent);"," }"," }",""," if (!(table-\u003eRowFlags \u0026 ImGuiTableRowFlags_Headers))"," table-\u003eRowBgColorCounter++;"," table-\u003eIsInsideRow = false;","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Columns changes","//-------------------------------------------------------------------------","// - TableGetColumnIndex()","// - TableSetColumnIndex()","// - TableNextColumn()","// - TableBeginCell() [Internal]","// - TableEndCell() [Internal]","//-------------------------------------------------------------------------","","int ImGui::TableGetColumnIndex()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return 0;"," return table-\u003eCurrentColumn;","}","","// [Public] Append into a specific column","bool ImGui::TableSetColumnIndex(int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return false;",""," if (table-\u003eCurrentColumn != column_n)"," {"," if (table-\u003eCurrentColumn != -1)"," TableEndCell(table);"," if ((column_n \u003e= 0 \u0026\u0026 column_n \u003c table-\u003eColumnsCount) == false)"," {"," IM_ASSERT_USER_ERROR(column_n \u003e= 0 \u0026\u0026 column_n \u003c table-\u003eColumnsCount, \"TableSetColumnIndex() invalid column index!\");"," return false;"," }"," TableBeginCell(table, column_n);"," }",""," // Return whether the column is visible. User may choose to skip submitting items based on this return value,"," // however they shouldn't skip submitting for columns that may have the tallest contribution to row height."," return table-\u003eColumns[column_n].IsRequestOutput;","}","","// [Public] Append into the next column, wrap and create a new row when already on last column","bool ImGui::TableNextColumn()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (!table)"," return false;",""," if (table-\u003eIsInsideRow \u0026\u0026 table-\u003eCurrentColumn + 1 \u003c table-\u003eColumnsCount)"," {"," if (table-\u003eCurrentColumn != -1)"," TableEndCell(table);"," TableBeginCell(table, table-\u003eCurrentColumn + 1);"," }"," else"," {"," TableNextRow();"," TableBeginCell(table, 0);"," }",""," // Return whether the column is visible. User may choose to skip submitting items based on this return value,"," // however they shouldn't skip submitting for columns that may have the tallest contribution to row height."," return table-\u003eColumns[table-\u003eCurrentColumn].IsRequestOutput;","}","","","// [Internal] Called by TableSetColumnIndex()/TableNextColumn()","// This is called very frequently, so we need to be mindful of unnecessary overhead.","// FIXME-TABLE FIXME-OPT: Could probably shortcut some things for non-active or clipped columns.","void ImGui::TableBeginCell(ImGuiTable* table, int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," ImGuiWindow* window = table-\u003eInnerWindow;"," table-\u003eCurrentColumn = column_n;",""," // Start position is roughly ~~ CellRect.Min + CellPadding + Indent"," float start_x = column-\u003eWorkMinX;"," if (column-\u003eFlags \u0026 ImGuiTableColumnFlags_IndentEnable)"," start_x += table-\u003eRowIndentOffsetX; // ~~ += window.DC.Indent.x - table-\u003eHostIndentX, except we locked it for the row.",""," window-\u003eDC.CursorPos.x = start_x;"," window-\u003eDC.CursorPos.y = table-\u003eRowPosY1 + table-\u003eRowCellPaddingY;"," window-\u003eDC.CursorMaxPos.x = window-\u003eDC.CursorPos.x;"," window-\u003eDC.ColumnsOffset.x = start_x - window-\u003ePos.x - window-\u003eDC.Indent.x; // FIXME-WORKRECT"," window-\u003eDC.CursorPosPrevLine.x = window-\u003eDC.CursorPos.x; // PrevLine.y is preserved. This allows users to call SameLine() to share LineSize between columns."," window-\u003eDC.CurrLineTextBaseOffset = table-\u003eRowTextBaseline;"," window-\u003eDC.NavLayerCurrent = (ImGuiNavLayer)column-\u003eNavLayerCurrent;",""," // Note how WorkRect.Max.y is only set once during layout"," window-\u003eWorkRect.Min.y = window-\u003eDC.CursorPos.y;"," window-\u003eWorkRect.Min.x = column-\u003eWorkMinX;"," window-\u003eWorkRect.Max.x = column-\u003eWorkMaxX;"," window-\u003eDC.ItemWidth = column-\u003eItemWidth;",""," window-\u003eSkipItems = column-\u003eIsSkipItems;"," if (column-\u003eIsSkipItems)"," {"," g.LastItemData.ID = 0;"," g.LastItemData.StatusFlags = 0;"," }",""," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoClip)"," {"," // FIXME: if we end up drawing all borders/bg in EndTable, could remove this and just assert that channel hasn't changed."," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, TABLE_DRAW_CHANNEL_NOCLIP);"," //IM_ASSERT(table-\u003eDrawSplitter._Current == TABLE_DRAW_CHANNEL_NOCLIP);"," }"," else"," {"," // FIXME-TABLE: Could avoid this if draw channel is dummy channel?"," SetWindowClipRectBeforeSetChannel(window, column-\u003eClipRect);"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, column-\u003eDrawChannelCurrent);"," }",""," // Logging"," if (g.LogEnabled \u0026\u0026 !column-\u003eIsSkipItems)"," {"," LogRenderedText(\u0026window-\u003eDC.CursorPos, \"|\");"," g.LogLinePosY = FLT_MAX;"," }","}","","// [Internal] Called by TableNextRow()/TableSetColumnIndex()/TableNextColumn()","void ImGui::TableEndCell(ImGuiTable* table)","{"," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eCurrentColumn];"," ImGuiWindow* window = table-\u003eInnerWindow;",""," if (window-\u003eDC.IsSetPos)"," ErrorCheckUsingSetCursorPosToExtendParentBoundaries();",""," // Report maximum position so we can infer content size per column."," float* p_max_pos_x;"," if (table-\u003eRowFlags \u0026 ImGuiTableRowFlags_Headers)"," p_max_pos_x = \u0026column-\u003eContentMaxXHeadersUsed; // Useful in case user submit contents in header row that is not a TableHeader() call"," else"," p_max_pos_x = table-\u003eIsUnfrozenRows ? \u0026column-\u003eContentMaxXUnfrozen : \u0026column-\u003eContentMaxXFrozen;"," *p_max_pos_x = ImMax(*p_max_pos_x, window-\u003eDC.CursorMaxPos.x);"," if (column-\u003eIsEnabled)"," table-\u003eRowPosY2 = ImMax(table-\u003eRowPosY2, window-\u003eDC.CursorMaxPos.y + table-\u003eRowCellPaddingY);"," column-\u003eItemWidth = window-\u003eDC.ItemWidth;",""," // Propagate text baseline for the entire row"," // FIXME-TABLE: Here we propagate text baseline from the last line of the cell.. instead of the first one."," table-\u003eRowTextBaseline = ImMax(table-\u003eRowTextBaseline, window-\u003eDC.PrevLineTextBaseOffset);","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Columns width management","//-------------------------------------------------------------------------","// - TableGetMaxColumnWidth() [Internal]","// - TableGetColumnWidthAuto() [Internal]","// - TableSetColumnWidth()","// - TableSetColumnWidthAutoSingle() [Internal]","// - TableSetColumnWidthAutoAll() [Internal]","// - TableUpdateColumnsWeightFromWidth() [Internal]","//-------------------------------------------------------------------------","// Note that actual columns widths are computed in TableUpdateLayout().","//-------------------------------------------------------------------------","","// Maximum column content width given current layout. Use column-\u003eMinX so this value differs on a per-column basis.","float ImGui::TableCalcMaxColumnWidth(const ImGuiTable* table, int column_n)","{"," const ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," float max_width = FLT_MAX;"," const float min_column_distance = table-\u003eMinColumnWidth + table-\u003eCellPaddingX * 2.0f + table-\u003eCellSpacingX1 + table-\u003eCellSpacingX2;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_ScrollX)"," {"," // Frozen columns can't reach beyond visible width else scrolling will naturally break."," // (we use DisplayOrder as within a set of multiple frozen column reordering is possible)"," if (column-\u003eDisplayOrder \u003c table-\u003eFreezeColumnsRequest)"," {"," max_width = (table-\u003eInnerClipRect.Max.x - (table-\u003eFreezeColumnsRequest - column-\u003eDisplayOrder) * min_column_distance) - column-\u003eMinX;"," max_width = max_width - table-\u003eOuterPaddingX - table-\u003eCellPaddingX - table-\u003eCellSpacingX2;"," }"," }"," else if ((table-\u003eFlags \u0026 ImGuiTableFlags_NoKeepColumnsVisible) == 0)"," {"," // If horizontal scrolling if disabled, we apply a final lossless shrinking of columns in order to make"," // sure they are all visible. Because of this we also know that all of the columns will always fit in"," // table-\u003eWorkRect and therefore in table-\u003eInnerRect (because ScrollX is off)"," // FIXME-TABLE: This is solved incorrectly but also quite a difficult problem to fix as we also want ClipRect width to match."," // See \"table_width_distrib\" and \"table_width_keep_visible\" tests"," max_width = table-\u003eWorkRect.Max.x - (table-\u003eColumnsEnabledCount - column-\u003eIndexWithinEnabledSet - 1) * min_column_distance - column-\u003eMinX;"," //max_width -= table-\u003eCellSpacingX1;"," max_width -= table-\u003eCellSpacingX2;"," max_width -= table-\u003eCellPaddingX * 2.0f;"," max_width -= table-\u003eOuterPaddingX;"," }"," return max_width;","}","","// Note this is meant to be stored in column-\u003eWidthAuto, please generally use the WidthAuto field","float ImGui::TableGetColumnWidthAuto(ImGuiTable* table, ImGuiTableColumn* column)","{"," const float content_width_body = ImMax(column-\u003eContentMaxXFrozen, column-\u003eContentMaxXUnfrozen) - column-\u003eWorkMinX;"," const float content_width_headers = column-\u003eContentMaxXHeadersIdeal - column-\u003eWorkMinX;"," float width_auto = content_width_body;"," if (!(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoHeaderWidth))"," width_auto = ImMax(width_auto, content_width_headers);",""," // Non-resizable fixed columns preserve their requested width"," if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) \u0026\u0026 column-\u003eInitStretchWeightOrWidth \u003e 0.0f)"," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_Resizable) || (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize))"," width_auto = column-\u003eInitStretchWeightOrWidth;",""," return ImMax(width_auto, table-\u003eMinColumnWidth);","}","","// 'width' = inner column width, without padding","void ImGui::TableSetColumnWidth(int column_n, float width)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," IM_ASSERT(table != NULL \u0026\u0026 table-\u003eIsLayoutLocked == false);"," IM_ASSERT(column_n \u003e= 0 \u0026\u0026 column_n \u003c table-\u003eColumnsCount);"," ImGuiTableColumn* column_0 = \u0026table-\u003eColumns[column_n];"," float column_0_width = width;",""," // Apply constraints early"," // Compare both requested and actual given width to avoid overwriting requested width when column is stuck (minimum size, bounded)"," IM_ASSERT(table-\u003eMinColumnWidth \u003e 0.0f);"," const float min_width = table-\u003eMinColumnWidth;"," const float max_width = ImMax(min_width, column_0-\u003eWidthMax); // Don't use TableCalcMaxColumnWidth() here as it would rely on MinX from last instance (#7933)"," column_0_width = ImClamp(column_0_width, min_width, max_width);"," if (column_0-\u003eWidthGiven == column_0_width || column_0-\u003eWidthRequest == column_0_width)"," return;",""," //IMGUI_DEBUG_PRINT(\"TableSetColumnWidth(%d, %.1f-\u003e%.1f)\\n\", column_0_idx, column_0-\u003eWidthGiven, column_0_width);"," ImGuiTableColumn* column_1 = (column_0-\u003eNextEnabledColumn != -1) ? \u0026table-\u003eColumns[column_0-\u003eNextEnabledColumn] : NULL;",""," // In this surprisingly not simple because of how we support mixing Fixed and multiple Stretch columns."," // - All fixed: easy."," // - All stretch: easy."," // - One or more fixed + one stretch: easy."," // - One or more fixed + more than one stretch: tricky."," // Qt when manual resize is enabled only supports a single _trailing_ stretch column, we support more cases here.",""," // When forwarding resize from Wn| to Fn+1| we need to be considerate of the _NoResize flag on Fn+1."," // FIXME-TABLE: Find a way to rewrite all of this so interactions feel more consistent for the user."," // Scenarios:"," // - F1 F2 F3 resize from F1| or F2| --\u003e ok: alter -\u003eWidthRequested of Fixed column. Subsequent columns will be offset."," // - F1 F2 F3 resize from F3| --\u003e ok: alter -\u003eWidthRequested of Fixed column. If active, ScrollX extent can be altered."," // - F1 F2 W3 resize from F1| or F2| --\u003e ok: alter -\u003eWidthRequested of Fixed column. If active, ScrollX extent can be altered, but it doesn't make much sense as the Stretch column will always be minimal size."," // - F1 F2 W3 resize from W3| --\u003e ok: no-op (disabled by Resize Rule 1)"," // - W1 W2 W3 resize from W1| or W2| --\u003e ok"," // - W1 W2 W3 resize from W3| --\u003e ok: no-op (disabled by Resize Rule 1)"," // - W1 F2 F3 resize from F3| --\u003e ok: no-op (disabled by Resize Rule 1)"," // - W1 F2 resize from F2| --\u003e ok: no-op (disabled by Resize Rule 1)"," // - W1 W2 F3 resize from W1| or W2| --\u003e ok"," // - W1 F2 W3 resize from W1| or F2| --\u003e ok"," // - F1 W2 F3 resize from W2| --\u003e ok"," // - F1 W3 F2 resize from W3| --\u003e ok"," // - W1 F2 F3 resize from W1| --\u003e ok: equivalent to resizing |F2. F3 will not move."," // - W1 F2 F3 resize from F2| --\u003e ok"," // All resizes from a Wx columns are locking other columns.",""," // Possible improvements:"," // - W1 W2 W3 resize W1| --\u003e to not be stuck, both W2 and W3 would stretch down. Seems possible to fix. Would be most beneficial to simplify resize of all-weighted columns."," // - W3 F1 F2 resize W3| --\u003e to not be stuck past F1|, both F1 and F2 would need to stretch down, which would be lossy or ambiguous. Seems hard to fix.",""," // [Resize Rule 1] Can't resize from right of right-most visible column if there is any Stretch column. Implemented in TableUpdateLayout().",""," // If we have all Fixed columns OR resizing a Fixed column that doesn't come after a Stretch one, we can do an offsetting resize."," // This is the preferred resize path"," if (column_0-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed)"," if (!column_1 || table-\u003eLeftMostStretchedColumn == -1 || table-\u003eColumns[table-\u003eLeftMostStretchedColumn].DisplayOrder \u003e= column_0-\u003eDisplayOrder)"," {"," column_0-\u003eWidthRequest = column_0_width;"," table-\u003eIsSettingsDirty = true;"," return;"," }",""," // We can also use previous column if there's no next one (this is used when doing an auto-fit on the right-most stretch column)"," if (column_1 == NULL)"," column_1 = (column_0-\u003ePrevEnabledColumn != -1) ? \u0026table-\u003eColumns[column_0-\u003ePrevEnabledColumn] : NULL;"," if (column_1 == NULL)"," return;",""," // Resizing from right-side of a Stretch column before a Fixed column forward sizing to left-side of fixed column."," // (old_a + old_b == new_a + new_b) --\u003e (new_a == old_a + old_b - new_b)"," float column_1_width = ImMax(column_1-\u003eWidthRequest - (column_0_width - column_0-\u003eWidthRequest), min_width);"," column_0_width = column_0-\u003eWidthRequest + column_1-\u003eWidthRequest - column_1_width;"," IM_ASSERT(column_0_width \u003e 0.0f \u0026\u0026 column_1_width \u003e 0.0f);"," column_0-\u003eWidthRequest = column_0_width;"," column_1-\u003eWidthRequest = column_1_width;"," if ((column_0-\u003eFlags | column_1-\u003eFlags) \u0026 ImGuiTableColumnFlags_WidthStretch)"," TableUpdateColumnsWeightFromWidth(table);"," table-\u003eIsSettingsDirty = true;","}","","// Disable clipping then auto-fit, will take 2 frames","// (we don't take a shortcut for unclipped columns to reduce inconsistencies when e.g. resizing multiple columns)","void ImGui::TableSetColumnWidthAutoSingle(ImGuiTable* table, int column_n)","{"," // Single auto width uses auto-fit"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (!column-\u003eIsEnabled)"," return;"," column-\u003eCannotSkipItemsQueue = (1 \u003c\u003c 0);"," table-\u003eAutoFitSingleColumn = (ImGuiTableColumnIdx)column_n;","}","","void ImGui::TableSetColumnWidthAutoAll(ImGuiTable* table)","{"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (!column-\u003eIsEnabled \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch)) // Cannot reset weight of hidden stretch column"," continue;"," column-\u003eCannotSkipItemsQueue = (1 \u003c\u003c 0);"," column-\u003eAutoFitQueue = (1 \u003c\u003c 1);"," }","}","","void ImGui::TableUpdateColumnsWeightFromWidth(ImGuiTable* table)","{"," IM_ASSERT(table-\u003eLeftMostStretchedColumn != -1 \u0026\u0026 table-\u003eRightMostStretchedColumn != -1);",""," // Measure existing quantities"," float visible_weight = 0.0f;"," float visible_width = 0.0f;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (!column-\u003eIsEnabled || !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch))"," continue;"," IM_ASSERT(column-\u003eStretchWeight \u003e 0.0f);"," visible_weight += column-\u003eStretchWeight;"," visible_width += column-\u003eWidthRequest;"," }"," IM_ASSERT(visible_weight \u003e 0.0f \u0026\u0026 visible_width \u003e 0.0f);",""," // Apply new weights"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (!column-\u003eIsEnabled || !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch))"," continue;"," column-\u003eStretchWeight = (column-\u003eWidthRequest / visible_width) * visible_weight;"," IM_ASSERT(column-\u003eStretchWeight \u003e 0.0f);"," }","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Drawing","//-------------------------------------------------------------------------","// - TablePushBackgroundChannel() [Internal]","// - TablePopBackgroundChannel() [Internal]","// - TableSetupDrawChannels() [Internal]","// - TableMergeDrawChannels() [Internal]","// - TableGetColumnBorderCol() [Internal]","// - TableDrawBorders() [Internal]","//-------------------------------------------------------------------------","","// Bg2 is used by Selectable (and possibly other widgets) to render to the background.","// Unlike our Bg0/1 channel which we uses for RowBg/CellBg/Borders and where we guarantee all shapes to be CPU-clipped, the Bg2 channel being widgets-facing will rely on regular ClipRect.","void ImGui::TablePushBackgroundChannel()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," ImGuiTable* table = g.CurrentTable;",""," // Optimization: avoid SetCurrentChannel() + PushClipRect()"," table-\u003eHostBackupInnerClipRect = window-\u003eClipRect;"," SetWindowClipRectBeforeSetChannel(window, table-\u003eBg2ClipRectForDrawCmd);"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, table-\u003eBg2DrawChannelCurrent);","}","","void ImGui::TablePopBackgroundChannel()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," ImGuiTable* table = g.CurrentTable;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[table-\u003eCurrentColumn];",""," // Optimization: avoid PopClipRect() + SetCurrentChannel()"," SetWindowClipRectBeforeSetChannel(window, table-\u003eHostBackupInnerClipRect);"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(window-\u003eDrawList, column-\u003eDrawChannelCurrent);","}","","// Allocate draw channels. Called by TableUpdateLayout()","// - We allocate them following storage order instead of display order so reordering columns won't needlessly","// increase overall dormant memory cost.","// - We isolate headers draw commands in their own channels instead of just altering clip rects.","// This is in order to facilitate merging of draw commands.","// - After crossing FreezeRowsCount, all columns see their current draw channel changed to a second set of channels.","// - We only use the dummy draw channel so we can push a null clipping rectangle into it without affecting other","// channels, while simplifying per-row/per-cell overhead. It will be empty and discarded when merged.","// - We allocate 1 or 2 background draw channels. This is because we know TablePushBackgroundChannel() is only used for","// horizontal spanning. If we allowed vertical spanning we'd need one background draw channel per merge group (1-4).","// Draw channel allocation (before merging):","// - NoClip --\u003e 2+D+1 channels: bg0/1 + bg2 + foreground (same clip rect == always 1 draw call)","// - Clip --\u003e 2+D+N channels","// - FreezeRows --\u003e 2+D+N*2 (unless scrolling value is zero)","// - FreezeRows || FreezeColunns --\u003e 3+D+N*2 (unless scrolling value is zero)","// Where D is 1 if any column is clipped or hidden (dummy channel) otherwise 0.","void ImGui::TableSetupDrawChannels(ImGuiTable* table)","{"," const int freeze_row_multiplier = (table-\u003eFreezeRowsCount \u003e 0) ? 2 : 1;"," const int channels_for_row = (table-\u003eFlags \u0026 ImGuiTableFlags_NoClip) ? 1 : table-\u003eColumnsEnabledCount;"," const int channels_for_bg = 1 + 1 * freeze_row_multiplier;"," const int channels_for_dummy = (table-\u003eColumnsEnabledCount \u003c table-\u003eColumnsCount || (memcmp(table-\u003eVisibleMaskByIndex, table-\u003eEnabledMaskByIndex, ImBitArrayGetStorageSizeInBytes(table-\u003eColumnsCount)) != 0)) ? +1 : 0;"," const int channels_total = channels_for_bg + (channels_for_row * freeze_row_multiplier) + channels_for_dummy;"," table-\u003eDrawSplitter-\u003eSplit(table-\u003eInnerWindow-\u003eDrawList, channels_total);"," table-\u003eDummyDrawChannel = (ImGuiTableDrawChannelIdx)((channels_for_dummy \u003e 0) ? channels_total - 1 : -1);"," table-\u003eBg2DrawChannelCurrent = TABLE_DRAW_CHANNEL_BG2_FROZEN;"," table-\u003eBg2DrawChannelUnfrozen = (ImGuiTableDrawChannelIdx)((table-\u003eFreezeRowsCount \u003e 0) ? 2 + channels_for_row : TABLE_DRAW_CHANNEL_BG2_FROZEN);",""," int draw_channel_current = 2;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eIsVisibleX \u0026\u0026 column-\u003eIsVisibleY)"," {"," column-\u003eDrawChannelFrozen = (ImGuiTableDrawChannelIdx)(draw_channel_current);"," column-\u003eDrawChannelUnfrozen = (ImGuiTableDrawChannelIdx)(draw_channel_current + (table-\u003eFreezeRowsCount \u003e 0 ? channels_for_row + 1 : 0));"," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_NoClip))"," draw_channel_current++;"," }"," else"," {"," column-\u003eDrawChannelFrozen = column-\u003eDrawChannelUnfrozen = table-\u003eDummyDrawChannel;"," }"," column-\u003eDrawChannelCurrent = column-\u003eDrawChannelFrozen;"," }",""," // Initial draw cmd starts with a BgClipRect that matches the one of its host, to facilitate merge draw commands by default."," // All our cell highlight are manually clipped with BgClipRect. When unfreezing it will be made smaller to fit scrolling rect."," // (This technically isn't part of setting up draw channels, but is reasonably related to be done here)"," table-\u003eBgClipRect = table-\u003eInnerClipRect;"," table-\u003eBg0ClipRectForDrawCmd = table-\u003eOuterWindow-\u003eClipRect;"," table-\u003eBg2ClipRectForDrawCmd = table-\u003eHostClipRect;"," IM_ASSERT(table-\u003eBgClipRect.Min.y \u003c= table-\u003eBgClipRect.Max.y);","}","","// This function reorder draw channels based on matching clip rectangle, to facilitate merging them. Called by EndTable().","// For simplicity we call it TableMergeDrawChannels() but in fact it only reorder channels + overwrite ClipRect,","// actual merging is done by table-\u003eDrawSplitter.Merge() which is called right after TableMergeDrawChannels().","//","// Columns where the contents didn't stray off their local clip rectangle can be merged. To achieve","// this we merge their clip rect and make them contiguous in the channel list, so they can be merged","// by the call to DrawSplitter.Merge() following to the call to this function.","// We reorder draw commands by arranging them into a maximum of 4 distinct groups:","//","// 1 group: 2 groups: 2 groups: 4 groups:","// [ 0. ] no freeze [ 0. ] row freeze [ 01 ] col freeze [ 01 ] row+col freeze","// [ .. ] or no scroll [ 2. ] and v-scroll [ .. ] and h-scroll [ 23 ] and v+h-scroll","//","// Each column itself can use 1 channel (row freeze disabled) or 2 channels (row freeze enabled).","// When the contents of a column didn't stray off its limit, we move its channels into the corresponding group","// based on its position (within frozen rows/columns groups or not).","// At the end of the operation our 1-4 groups will each have a ImDrawCmd using the same ClipRect.","// This function assume that each column are pointing to a distinct draw channel,","// otherwise merge_group-\u003eChannelsCount will not match set bit count of merge_group-\u003eChannelsMask.","//","// Column channels will not be merged into one of the 1-4 groups in the following cases:","// - The contents stray off its clipping rectangle (we only compare the MaxX value, not the MinX value).","// Direct ImDrawList calls won't be taken into account by default, if you use them make sure the ImGui:: bounds","// matches, by e.g. calling SetCursorScreenPos().","// - The channel uses more than one draw command itself. We drop all our attempt at merging stuff here..","// we could do better but it's going to be rare and probably not worth the hassle.","// Columns for which the draw channel(s) haven't been merged with other will use their own ImDrawCmd.","//","// This function is particularly tricky to understand.. take a breath.","void ImGui::TableMergeDrawChannels(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," ImDrawListSplitter* splitter = table-\u003eDrawSplitter;"," const bool has_freeze_v = (table-\u003eFreezeRowsCount \u003e 0);"," const bool has_freeze_h = (table-\u003eFreezeColumnsCount \u003e 0);"," IM_ASSERT(splitter-\u003e_Current == 0);",""," // Track which groups we are going to attempt to merge, and which channels goes into each group."," struct MergeGroup"," {"," ImRect ClipRect;"," int ChannelsCount = 0;"," ImBitArrayPtr ChannelsMask = NULL;"," };"," int merge_group_mask = 0x00;"," MergeGroup merge_groups[4];",""," // Use a reusable temp buffer for the merge masks as they are dynamically sized."," const int max_draw_channels = (4 + table-\u003eColumnsCount * 2);"," const int size_for_masks_bitarrays_one = (int)ImBitArrayGetStorageSizeInBytes(max_draw_channels);"," g.TempBuffer.reserve(size_for_masks_bitarrays_one * 5);"," memset(g.TempBuffer.Data, 0, size_for_masks_bitarrays_one * 5);"," for (int n = 0; n \u003c IM_ARRAYSIZE(merge_groups); n++)"," merge_groups[n].ChannelsMask = (ImBitArrayPtr)(void*)(g.TempBuffer.Data + (size_for_masks_bitarrays_one * n));"," ImBitArrayPtr remaining_mask = (ImBitArrayPtr)(void*)(g.TempBuffer.Data + (size_for_masks_bitarrays_one * 4));",""," // 1. Scan channels and take note of those which can be merged"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eVisibleMaskByIndex, column_n))"," continue;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," const int merge_group_sub_count = has_freeze_v ? 2 : 1;"," for (int merge_group_sub_n = 0; merge_group_sub_n \u003c merge_group_sub_count; merge_group_sub_n++)"," {"," const int channel_no = (merge_group_sub_n == 0) ? column-\u003eDrawChannelFrozen : column-\u003eDrawChannelUnfrozen;",""," // Don't attempt to merge if there are multiple draw calls within the column"," ImDrawChannel* src_channel = \u0026splitter-\u003e_Channels[channel_no];"," if (src_channel-\u003e_CmdBuffer.Size \u003e 0 \u0026\u0026 src_channel-\u003e_CmdBuffer.back().ElemCount == 0 \u0026\u0026 src_channel-\u003e_CmdBuffer.back().UserCallback == NULL) // Equivalent of PopUnusedDrawCmd()"," src_channel-\u003e_CmdBuffer.pop_back();"," if (src_channel-\u003e_CmdBuffer.Size != 1)"," continue;",""," // Find out the width of this merge group and check if it will fit in our column"," // (note that we assume that rendering didn't stray on the left direction. we should need a CursorMinPos to detect it)"," if (!(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoClip))"," {"," float content_max_x;"," if (!has_freeze_v)"," content_max_x = ImMax(column-\u003eContentMaxXUnfrozen, column-\u003eContentMaxXHeadersUsed); // No row freeze"," else if (merge_group_sub_n == 0)"," content_max_x = ImMax(column-\u003eContentMaxXFrozen, column-\u003eContentMaxXHeadersUsed); // Row freeze: use width before freeze"," else"," content_max_x = column-\u003eContentMaxXUnfrozen; // Row freeze: use width after freeze"," if (content_max_x \u003e column-\u003eClipRect.Max.x)"," continue;"," }",""," const int merge_group_n = (has_freeze_h \u0026\u0026 column_n \u003c table-\u003eFreezeColumnsCount ? 0 : 1) + (has_freeze_v \u0026\u0026 merge_group_sub_n == 0 ? 0 : 2);"," IM_ASSERT(channel_no \u003c max_draw_channels);"," MergeGroup* merge_group = \u0026merge_groups[merge_group_n];"," if (merge_group-\u003eChannelsCount == 0)"," merge_group-\u003eClipRect = ImRect(+FLT_MAX, +FLT_MAX, -FLT_MAX, -FLT_MAX);"," ImBitArraySetBit(merge_group-\u003eChannelsMask, channel_no);"," merge_group-\u003eChannelsCount++;"," merge_group-\u003eClipRect.Add(src_channel-\u003e_CmdBuffer[0].ClipRect);"," merge_group_mask |= (1 \u003c\u003c merge_group_n);"," }",""," // Invalidate current draw channel"," // (we don't clear DrawChannelFrozen/DrawChannelUnfrozen solely to facilitate debugging/later inspection of data)"," column-\u003eDrawChannelCurrent = (ImGuiTableDrawChannelIdx)-1;"," }",""," // [DEBUG] Display merge groups","#if 0"," if (g.IO.KeyShift)"," for (int merge_group_n = 0; merge_group_n \u003c IM_ARRAYSIZE(merge_groups); merge_group_n++)"," {"," MergeGroup* merge_group = \u0026merge_groups[merge_group_n];"," if (merge_group-\u003eChannelsCount == 0)"," continue;"," char buf[32];"," ImFormatString(buf, 32, \"MG%d:%d\", merge_group_n, merge_group-\u003eChannelsCount);"," ImVec2 text_pos = merge_group-\u003eClipRect.Min + ImVec2(4, 4);"," ImVec2 text_size = CalcTextSize(buf, NULL);"," GetForegroundDrawList()-\u003eAddRectFilled(text_pos, text_pos + text_size, IM_COL32(0, 0, 0, 255));"," GetForegroundDrawList()-\u003eAddText(text_pos, IM_COL32(255, 255, 0, 255), buf, NULL);"," GetForegroundDrawList()-\u003eAddRect(merge_group-\u003eClipRect.Min, merge_group-\u003eClipRect.Max, IM_COL32(255, 255, 0, 255));"," }","#endif",""," // 2. Rewrite channel list in our preferred order"," if (merge_group_mask != 0)"," {"," // We skip channel 0 (Bg0/Bg1) and 1 (Bg2 frozen) from the shuffling since they won't move - see channels allocation in TableSetupDrawChannels()."," const int LEADING_DRAW_CHANNELS = 2;"," g.DrawChannelsTempMergeBuffer.resize(splitter-\u003e_Count - LEADING_DRAW_CHANNELS); // Use shared temporary storage so the allocation gets amortized"," ImDrawChannel* dst_tmp = g.DrawChannelsTempMergeBuffer.Data;"," ImBitArraySetBitRange(remaining_mask, LEADING_DRAW_CHANNELS, splitter-\u003e_Count);"," ImBitArrayClearBit(remaining_mask, table-\u003eBg2DrawChannelUnfrozen);"," IM_ASSERT(has_freeze_v == false || table-\u003eBg2DrawChannelUnfrozen != TABLE_DRAW_CHANNEL_BG2_FROZEN);"," int remaining_count = splitter-\u003e_Count - (has_freeze_v ? LEADING_DRAW_CHANNELS + 1 : LEADING_DRAW_CHANNELS);"," //ImRect host_rect = (table-\u003eInnerWindow == table-\u003eOuterWindow) ? table-\u003eInnerClipRect : table-\u003eHostClipRect;"," ImRect host_rect = table-\u003eHostClipRect;"," for (int merge_group_n = 0; merge_group_n \u003c IM_ARRAYSIZE(merge_groups); merge_group_n++)"," {"," if (int merge_channels_count = merge_groups[merge_group_n].ChannelsCount)"," {"," MergeGroup* merge_group = \u0026merge_groups[merge_group_n];"," ImRect merge_clip_rect = merge_group-\u003eClipRect;",""," // Extend outer-most clip limits to match those of host, so draw calls can be merged even if"," // outer-most columns have some outer padding offsetting them from their parent ClipRect."," // The principal cases this is dealing with are:"," // - On a same-window table (not scrolling = single group), all fitting columns ClipRect -\u003e will extend and match host ClipRect -\u003e will merge"," // - Columns can use padding and have left-most ClipRect.Min.x and right-most ClipRect.Max.x != from host ClipRect -\u003e will extend and match host ClipRect -\u003e will merge"," // FIXME-TABLE FIXME-WORKRECT: We are wasting a merge opportunity on tables without scrolling if column doesn't fit"," // within host clip rect, solely because of the half-padding difference between window-\u003eWorkRect and window-\u003eInnerClipRect."," if ((merge_group_n \u0026 1) == 0 || !has_freeze_h)"," merge_clip_rect.Min.x = ImMin(merge_clip_rect.Min.x, host_rect.Min.x);"," if ((merge_group_n \u0026 2) == 0 || !has_freeze_v)"," merge_clip_rect.Min.y = ImMin(merge_clip_rect.Min.y, host_rect.Min.y);"," if ((merge_group_n \u0026 1) != 0)"," merge_clip_rect.Max.x = ImMax(merge_clip_rect.Max.x, host_rect.Max.x);"," if ((merge_group_n \u0026 2) != 0 \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_NoHostExtendY) == 0)"," merge_clip_rect.Max.y = ImMax(merge_clip_rect.Max.y, host_rect.Max.y);"," //GetForegroundDrawList()-\u003eAddRect(merge_group-\u003eClipRect.Min, merge_group-\u003eClipRect.Max, IM_COL32(255, 0, 0, 200), 0.0f, 0, 1.0f); // [DEBUG]"," //GetForegroundDrawList()-\u003eAddLine(merge_group-\u003eClipRect.Min, merge_clip_rect.Min, IM_COL32(255, 100, 0, 200));"," //GetForegroundDrawList()-\u003eAddLine(merge_group-\u003eClipRect.Max, merge_clip_rect.Max, IM_COL32(255, 100, 0, 200));"," remaining_count -= merge_group-\u003eChannelsCount;"," for (int n = 0; n \u003c (size_for_masks_bitarrays_one \u003e\u003e 2); n++)"," remaining_mask[n] \u0026= ~merge_group-\u003eChannelsMask[n];"," for (int n = 0; n \u003c splitter-\u003e_Count \u0026\u0026 merge_channels_count != 0; n++)"," {"," // Copy + overwrite new clip rect"," if (!IM_BITARRAY_TESTBIT(merge_group-\u003eChannelsMask, n))"," continue;"," IM_BITARRAY_CLEARBIT(merge_group-\u003eChannelsMask, n);"," merge_channels_count--;",""," ImDrawChannel* channel = \u0026splitter-\u003e_Channels[n];"," IM_ASSERT(channel-\u003e_CmdBuffer.Size == 1 \u0026\u0026 merge_clip_rect.Contains(ImRect(channel-\u003e_CmdBuffer[0].ClipRect)));"," channel-\u003e_CmdBuffer[0].ClipRect = merge_clip_rect.ToVec4();"," memcpy(dst_tmp++, channel, sizeof(ImDrawChannel));"," }"," }",""," // Make sure Bg2DrawChannelUnfrozen appears in the middle of our groups (whereas Bg0/Bg1 and Bg2 frozen are fixed to 0 and 1)"," if (merge_group_n == 1 \u0026\u0026 has_freeze_v)"," memcpy(dst_tmp++, \u0026splitter-\u003e_Channels[table-\u003eBg2DrawChannelUnfrozen], sizeof(ImDrawChannel));"," }",""," // Append unmergeable channels that we didn't reorder at the end of the list"," for (int n = 0; n \u003c splitter-\u003e_Count \u0026\u0026 remaining_count != 0; n++)"," {"," if (!IM_BITARRAY_TESTBIT(remaining_mask, n))"," continue;"," ImDrawChannel* channel = \u0026splitter-\u003e_Channels[n];"," memcpy(dst_tmp++, channel, sizeof(ImDrawChannel));"," remaining_count--;"," }"," IM_ASSERT(dst_tmp == g.DrawChannelsTempMergeBuffer.Data + g.DrawChannelsTempMergeBuffer.Size);"," memcpy(splitter-\u003e_Channels.Data + LEADING_DRAW_CHANNELS, g.DrawChannelsTempMergeBuffer.Data, (splitter-\u003e_Count - LEADING_DRAW_CHANNELS) * sizeof(ImDrawChannel));"," }","}","","static ImU32 TableGetColumnBorderCol(ImGuiTable* table, int order_n, int column_n)","{"," const bool is_hovered = (table-\u003eHoveredColumnBorder == column_n);"," const bool is_resized = (table-\u003eResizedColumn == column_n) \u0026\u0026 (table-\u003eInstanceInteracted == table-\u003eInstanceCurrent);"," const bool is_frozen_separator = (table-\u003eFreezeColumnsCount == order_n + 1);"," if (is_resized || is_hovered)"," return ImGui::GetColorU32(is_resized ? ImGuiCol_SeparatorActive : ImGuiCol_SeparatorHovered);"," if (is_frozen_separator || (table-\u003eFlags \u0026 (ImGuiTableFlags_NoBordersInBody | ImGuiTableFlags_NoBordersInBodyUntilResize)))"," return table-\u003eBorderColorStrong;"," return table-\u003eBorderColorLight;","}","","// FIXME-TABLE: This is a mess, need to redesign how we render borders (as some are also done in TableEndRow)","void ImGui::TableDrawBorders(ImGuiTable* table)","{"," ImGuiWindow* inner_window = table-\u003eInnerWindow;"," if (!table-\u003eOuterWindow-\u003eClipRect.Overlaps(table-\u003eOuterRect))"," return;",""," ImDrawList* inner_drawlist = inner_window-\u003eDrawList;"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(inner_drawlist, TABLE_DRAW_CHANNEL_BG0);"," inner_drawlist-\u003ePushClipRect(table-\u003eBg0ClipRectForDrawCmd.Min, table-\u003eBg0ClipRectForDrawCmd.Max, false);",""," // Draw inner border and resizing feedback"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," const float border_size = TABLE_BORDER_SIZE;"," const float draw_y1 = ImMax(table-\u003eInnerRect.Min.y, (table-\u003eFreezeRowsCount \u003e= 1 ? table-\u003eInnerRect.Min.y : table-\u003eWorkRect.Min.y) + table-\u003eAngledHeadersHeight) + ((table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuterH) ? 1.0f : 0.0f);"," const float draw_y2_body = table-\u003eInnerRect.Max.y;"," const float draw_y2_head = table-\u003eIsUsingHeaders ? ImMin(table-\u003eInnerRect.Max.y, (table-\u003eFreezeRowsCount \u003e= 1 ? table-\u003eInnerRect.Min.y : table-\u003eWorkRect.Min.y) + table_instance-\u003eLastTopHeadersRowHeight) : draw_y1;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_BordersInnerV)"," {"," for (int order_n = 0; order_n \u003c table-\u003eColumnsCount; order_n++)"," {"," if (!IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByDisplayOrder, order_n))"," continue;",""," const int column_n = table-\u003eDisplayOrderToIndex[order_n];"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," const bool is_hovered = (table-\u003eHoveredColumnBorder == column_n);"," const bool is_resized = (table-\u003eResizedColumn == column_n) \u0026\u0026 (table-\u003eInstanceInteracted == table-\u003eInstanceCurrent);"," const bool is_resizable = (column-\u003eFlags \u0026 (ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_NoDirectResize_)) == 0;"," const bool is_frozen_separator = (table-\u003eFreezeColumnsCount == order_n + 1);"," if (column-\u003eMaxX \u003e table-\u003eInnerClipRect.Max.x \u0026\u0026 !is_resized)"," continue;",""," // Decide whether right-most column is visible"," if (column-\u003eNextEnabledColumn == -1 \u0026\u0026 !is_resizable)"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_) != ImGuiTableFlags_SizingFixedSame || (table-\u003eFlags \u0026 ImGuiTableFlags_NoHostExtendX))"," continue;"," if (column-\u003eMaxX \u003c= column-\u003eClipRect.Min.x) // FIXME-TABLE FIXME-STYLE: Assume BorderSize==1, this is problematic if we want to increase the border size.."," continue;",""," // Draw in outer window so right-most column won't be clipped"," // Always draw full height border when being resized/hovered, or on the delimitation of frozen column scrolling."," float draw_y2 = (is_hovered || is_resized || is_frozen_separator || (table-\u003eFlags \u0026 (ImGuiTableFlags_NoBordersInBody | ImGuiTableFlags_NoBordersInBodyUntilResize)) == 0) ? draw_y2_body : draw_y2_head;"," if (draw_y2 \u003e draw_y1)"," inner_drawlist-\u003eAddLine(ImVec2(column-\u003eMaxX, draw_y1), ImVec2(column-\u003eMaxX, draw_y2), TableGetColumnBorderCol(table, order_n, column_n), border_size);"," }"," }",""," // Draw outer border"," // FIXME: could use AddRect or explicit VLine/HLine helper?"," if (table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuter)"," {"," // Display outer border offset by 1 which is a simple way to display it without adding an extra draw call"," // (Without the offset, in outer_window it would be rendered behind cells, because child windows are above their"," // parent. In inner_window, it won't reach out over scrollbars. Another weird solution would be to display part"," // of it in inner window, and the part that's over scrollbars in the outer window..)"," // Either solution currently won't allow us to use a larger border size: the border would clipped."," const ImRect outer_border = table-\u003eOuterRect;"," const ImU32 outer_col = table-\u003eBorderColorStrong;"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuter) == ImGuiTableFlags_BordersOuter)"," {"," inner_drawlist-\u003eAddRect(outer_border.Min, outer_border.Max, outer_col, 0.0f, 0, border_size);"," }"," else if (table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuterV)"," {"," inner_drawlist-\u003eAddLine(outer_border.Min, ImVec2(outer_border.Min.x, outer_border.Max.y), outer_col, border_size);"," inner_drawlist-\u003eAddLine(ImVec2(outer_border.Max.x, outer_border.Min.y), outer_border.Max, outer_col, border_size);"," }"," else if (table-\u003eFlags \u0026 ImGuiTableFlags_BordersOuterH)"," {"," inner_drawlist-\u003eAddLine(outer_border.Min, ImVec2(outer_border.Max.x, outer_border.Min.y), outer_col, border_size);"," inner_drawlist-\u003eAddLine(ImVec2(outer_border.Min.x, outer_border.Max.y), outer_border.Max, outer_col, border_size);"," }"," }"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_BordersInnerH) \u0026\u0026 table-\u003eRowPosY2 \u003c table-\u003eOuterRect.Max.y)"," {"," // Draw bottom-most row border between it is above outer border."," const float border_y = table-\u003eRowPosY2;"," if (border_y \u003e= table-\u003eBgClipRect.Min.y \u0026\u0026 border_y \u003c table-\u003eBgClipRect.Max.y)"," inner_drawlist-\u003eAddLine(ImVec2(table-\u003eBorderX1, border_y), ImVec2(table-\u003eBorderX2, border_y), table-\u003eBorderColorLight, border_size);"," }",""," inner_drawlist-\u003ePopClipRect();","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Sorting","//-------------------------------------------------------------------------","// - TableGetSortSpecs()","// - TableFixColumnSortDirection() [Internal]","// - TableGetColumnNextSortDirection() [Internal]","// - TableSetColumnSortDirection() [Internal]","// - TableSortSpecsSanitize() [Internal]","// - TableSortSpecsBuild() [Internal]","//-------------------------------------------------------------------------","","// Return NULL if no sort specs (most often when ImGuiTableFlags_Sortable is not set)","// When 'sort_specs-\u003eSpecsDirty == true' you should sort your data. It will be true when sorting specs have","// changed since last call, or the first time. Make sure to set 'SpecsDirty = false' after sorting,","// else you may wastefully sort your data every frame!","// Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable()!","ImGuiTableSortSpecs* ImGui::TableGetSortSpecs()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," IM_ASSERT(table != NULL);",""," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_Sortable))"," return NULL;",""," // Require layout (in case TableHeadersRow() hasn't been called) as it may alter IsSortSpecsDirty in some paths."," if (!table-\u003eIsLayoutLocked)"," TableUpdateLayout(table);",""," TableSortSpecsBuild(table);"," return \u0026table-\u003eSortSpecs;","}","","static inline ImGuiSortDirection TableGetColumnAvailSortDirection(ImGuiTableColumn* column, int n)","{"," IM_ASSERT(n \u003c column-\u003eSortDirectionsAvailCount);"," return (ImGuiSortDirection)((column-\u003eSortDirectionsAvailList \u003e\u003e (n \u003c\u003c 1)) \u0026 0x03);","}","","// Fix sort direction if currently set on a value which is unavailable (e.g. activating NoSortAscending/NoSortDescending)","void ImGui::TableFixColumnSortDirection(ImGuiTable* table, ImGuiTableColumn* column)","{"," if (column-\u003eSortOrder == -1 || (column-\u003eSortDirectionsAvailMask \u0026 (1 \u003c\u003c column-\u003eSortDirection)) != 0)"," return;"," column-\u003eSortDirection = (ImU8)TableGetColumnAvailSortDirection(column, 0);"," table-\u003eIsSortSpecsDirty = true;","}","","// Calculate next sort direction that would be set after clicking the column","// - If the PreferSortDescending flag is set, we will default to a Descending direction on the first click.","// - Note that the PreferSortAscending flag is never checked, it is essentially the default and therefore a no-op.","IM_STATIC_ASSERT(ImGuiSortDirection_None == 0 \u0026\u0026 ImGuiSortDirection_Ascending == 1 \u0026\u0026 ImGuiSortDirection_Descending == 2);","ImGuiSortDirection ImGui::TableGetColumnNextSortDirection(ImGuiTableColumn* column)","{"," IM_ASSERT(column-\u003eSortDirectionsAvailCount \u003e 0);"," if (column-\u003eSortOrder == -1)"," return TableGetColumnAvailSortDirection(column, 0);"," for (int n = 0; n \u003c 3; n++)"," if (column-\u003eSortDirection == TableGetColumnAvailSortDirection(column, n))"," return TableGetColumnAvailSortDirection(column, (n + 1) % column-\u003eSortDirectionsAvailCount);"," IM_ASSERT(0);"," return ImGuiSortDirection_None;","}","","// Note that the NoSortAscending/NoSortDescending flags are processed in TableSortSpecsSanitize(), and they may change/revert","// the value of SortDirection. We could technically also do it here but it would be unnecessary and duplicate code.","void ImGui::TableSetColumnSortDirection(int column_n, ImGuiSortDirection sort_direction, bool append_to_sort_specs)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;",""," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_SortMulti))"," append_to_sort_specs = false;"," if (!(table-\u003eFlags \u0026 ImGuiTableFlags_SortTristate))"," IM_ASSERT(sort_direction != ImGuiSortDirection_None);",""," ImGuiTableColumnIdx sort_order_max = 0;"," if (append_to_sort_specs)"," for (int other_column_n = 0; other_column_n \u003c table-\u003eColumnsCount; other_column_n++)"," sort_order_max = ImMax(sort_order_max, table-\u003eColumns[other_column_n].SortOrder);",""," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," column-\u003eSortDirection = (ImU8)sort_direction;"," if (column-\u003eSortDirection == ImGuiSortDirection_None)"," column-\u003eSortOrder = -1;"," else if (column-\u003eSortOrder == -1 || !append_to_sort_specs)"," column-\u003eSortOrder = append_to_sort_specs ? sort_order_max + 1 : 0;",""," for (int other_column_n = 0; other_column_n \u003c table-\u003eColumnsCount; other_column_n++)"," {"," ImGuiTableColumn* other_column = \u0026table-\u003eColumns[other_column_n];"," if (other_column != column \u0026\u0026 !append_to_sort_specs)"," other_column-\u003eSortOrder = -1;"," TableFixColumnSortDirection(table, other_column);"," }"," table-\u003eIsSettingsDirty = true;"," table-\u003eIsSortSpecsDirty = true;","}","","void ImGui::TableSortSpecsSanitize(ImGuiTable* table)","{"," IM_ASSERT(table-\u003eFlags \u0026 ImGuiTableFlags_Sortable);",""," // Clear SortOrder from hidden column and verify that there's no gap or duplicate."," int sort_order_count = 0;"," ImU64 sort_order_mask = 0x00;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eSortOrder != -1 \u0026\u0026 !column-\u003eIsEnabled)"," column-\u003eSortOrder = -1;"," if (column-\u003eSortOrder == -1)"," continue;"," sort_order_count++;"," sort_order_mask |= ((ImU64)1 \u003c\u003c column-\u003eSortOrder);"," IM_ASSERT(sort_order_count \u003c (int)sizeof(sort_order_mask) * 8);"," }",""," const bool need_fix_linearize = ((ImU64)1 \u003c\u003c sort_order_count) != (sort_order_mask + 1);"," const bool need_fix_single_sort_order = (sort_order_count \u003e 1) \u0026\u0026 !(table-\u003eFlags \u0026 ImGuiTableFlags_SortMulti);"," if (need_fix_linearize || need_fix_single_sort_order)"," {"," ImU64 fixed_mask = 0x00;"," for (int sort_n = 0; sort_n \u003c sort_order_count; sort_n++)"," {"," // Fix: Rewrite sort order fields if needed so they have no gap or duplicate."," // (e.g. SortOrder 0 disappeared, SortOrder 1..2 exists --\u003e rewrite then as SortOrder 0..1)"," int column_with_smallest_sort_order = -1;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," if ((fixed_mask \u0026 ((ImU64)1 \u003c\u003c (ImU64)column_n)) == 0 \u0026\u0026 table-\u003eColumns[column_n].SortOrder != -1)"," if (column_with_smallest_sort_order == -1 || table-\u003eColumns[column_n].SortOrder \u003c table-\u003eColumns[column_with_smallest_sort_order].SortOrder)"," column_with_smallest_sort_order = column_n;"," IM_ASSERT(column_with_smallest_sort_order != -1);"," fixed_mask |= ((ImU64)1 \u003c\u003c column_with_smallest_sort_order);"," table-\u003eColumns[column_with_smallest_sort_order].SortOrder = (ImGuiTableColumnIdx)sort_n;",""," // Fix: Make sure only one column has a SortOrder if ImGuiTableFlags_MultiSortable is not set."," if (need_fix_single_sort_order)"," {"," sort_order_count = 1;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," if (column_n != column_with_smallest_sort_order)"," table-\u003eColumns[column_n].SortOrder = -1;"," break;"," }"," }"," }",""," // Fallback default sort order (if no column with the ImGuiTableColumnFlags_DefaultSort flag)"," if (sort_order_count == 0 \u0026\u0026 !(table-\u003eFlags \u0026 ImGuiTableFlags_SortTristate))"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eIsEnabled \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSort))"," {"," sort_order_count = 1;"," column-\u003eSortOrder = 0;"," column-\u003eSortDirection = (ImU8)TableGetColumnAvailSortDirection(column, 0);"," break;"," }"," }",""," table-\u003eSortSpecsCount = (ImGuiTableColumnIdx)sort_order_count;","}","","void ImGui::TableSortSpecsBuild(ImGuiTable* table)","{"," bool dirty = table-\u003eIsSortSpecsDirty;"," if (dirty)"," {"," TableSortSpecsSanitize(table);"," table-\u003eSortSpecsMulti.resize(table-\u003eSortSpecsCount \u003c= 1 ? 0 : table-\u003eSortSpecsCount);"," table-\u003eSortSpecs.SpecsDirty = true; // Mark as dirty for user"," table-\u003eIsSortSpecsDirty = false; // Mark as not dirty for us"," }",""," // Write output"," // May be able to move all SortSpecs data from table (48 bytes) to ImGuiTableTempData if we decide to write it back on every BeginTable()"," ImGuiTableColumnSortSpecs* sort_specs = (table-\u003eSortSpecsCount == 0) ? NULL : (table-\u003eSortSpecsCount == 1) ? \u0026table-\u003eSortSpecsSingle : table-\u003eSortSpecsMulti.Data;"," if (dirty \u0026\u0026 sort_specs != NULL)"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (column-\u003eSortOrder == -1)"," continue;"," IM_ASSERT(column-\u003eSortOrder \u003c table-\u003eSortSpecsCount);"," ImGuiTableColumnSortSpecs* sort_spec = \u0026sort_specs[column-\u003eSortOrder];"," sort_spec-\u003eColumnUserID = column-\u003eUserID;"," sort_spec-\u003eColumnIndex = (ImGuiTableColumnIdx)column_n;"," sort_spec-\u003eSortOrder = (ImGuiTableColumnIdx)column-\u003eSortOrder;"," sort_spec-\u003eSortDirection = (ImGuiSortDirection)column-\u003eSortDirection;"," }",""," table-\u003eSortSpecs.Specs = sort_specs;"," table-\u003eSortSpecs.SpecsCount = table-\u003eSortSpecsCount;","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Headers","//-------------------------------------------------------------------------","// - TableGetHeaderRowHeight() [Internal]","// - TableGetHeaderAngledMaxLabelWidth() [Internal]","// - TableHeadersRow()","// - TableHeader()","// - TableAngledHeadersRow()","// - TableAngledHeadersRowEx() [Internal]","//-------------------------------------------------------------------------","","float ImGui::TableGetHeaderRowHeight()","{"," // Caring for a minor edge case:"," // Calculate row height, for the unlikely case that some labels may be taller than others."," // If we didn't do that, uneven header height would highlight but smaller one before the tallest wouldn't catch input for all height."," // In your custom header row you may omit this all together and just call TableNextRow() without a height..."," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," float row_height = g.FontSize;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," if (IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByIndex, column_n))"," if ((table-\u003eColumns[column_n].Flags \u0026 ImGuiTableColumnFlags_NoHeaderLabel) == 0)"," row_height = ImMax(row_height, CalcTextSize(TableGetColumnName(table, column_n)).y);"," return row_height + g.Style.CellPadding.y * 2.0f;","}","","float ImGui::TableGetHeaderAngledMaxLabelWidth()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," float width = 0.0f;"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," if (IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByIndex, column_n))"," if (table-\u003eColumns[column_n].Flags \u0026 ImGuiTableColumnFlags_AngledHeader)"," width = ImMax(width, CalcTextSize(TableGetColumnName(table, column_n), NULL, true).x);"," return width + g.Style.CellPadding.y * 2.0f; // Swap padding","}","","// [Public] This is a helper to output TableHeader() calls based on the column names declared in TableSetupColumn().","// The intent is that advanced users willing to create customized headers would not need to use this helper","// and can create their own! For example: TableHeader() may be preceded by Checkbox() or other custom widgets.","// See 'Demo-\u003eTables-\u003eCustom headers' for a demonstration of implementing a custom version of this.","// This code is intentionally written to not make much use of internal functions, to give you better direction","// if you need to write your own.","// FIXME-TABLE: TableOpenContextMenu() and TableGetHeaderRowHeight() are not public.","void ImGui::TableHeadersRow()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }",""," // Call layout if not already done. This is automatically done by TableNextRow: we do it here _only_ to make"," // it easier to debug-step in TableUpdateLayout(). Your own version of this function doesn't need this."," if (!table-\u003eIsLayoutLocked)"," TableUpdateLayout(table);",""," // Open row"," const float row_height = TableGetHeaderRowHeight();"," TableNextRow(ImGuiTableRowFlags_Headers, row_height);"," const float row_y1 = GetCursorScreenPos().y;"," if (table-\u003eHostSkipItems) // Merely an optimization, you may skip in your own code."," return;",""," const int columns_count = TableGetColumnCount();"," for (int column_n = 0; column_n \u003c columns_count; column_n++)"," {"," if (!TableSetColumnIndex(column_n))"," continue;",""," // Push an id to allow empty/unnamed headers. This is also idiomatic as it ensure there is a consistent ID path to access columns (for e.g. automation)"," const char* name = (TableGetColumnFlags(column_n) \u0026 ImGuiTableColumnFlags_NoHeaderLabel) ? \"\" : TableGetColumnName(column_n);"," PushID(column_n);"," TableHeader(name);"," PopID();"," }",""," // Allow opening popup from the right-most section after the last column."," ImVec2 mouse_pos = ImGui::GetMousePos();"," if (IsMouseReleased(1) \u0026\u0026 TableGetHoveredColumn() == columns_count)"," if (mouse_pos.y \u003e= row_y1 \u0026\u0026 mouse_pos.y \u003c row_y1 + row_height)"," TableOpenContextMenu(columns_count); // Will open a non-column-specific popup.","}","","// Emit a column header (text + optional sort order)","// We cpu-clip text here so that all columns headers can be merged into a same draw call.","// Note that because of how we cpu-clip and display sorting indicators, you _cannot_ use SameLine() after a TableHeader()","void ImGui::TableHeader(const char* label)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," if (window-\u003eSkipItems)"," return;",""," ImGuiTable* table = g.CurrentTable;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }",""," IM_ASSERT(table-\u003eCurrentColumn != -1);"," const int column_n = table-\u003eCurrentColumn;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," // Label"," if (label == NULL)"," label = \"\";"," const char* label_end = FindRenderedTextEnd(label);"," ImVec2 label_size = CalcTextSize(label, label_end, true);"," ImVec2 label_pos = window-\u003eDC.CursorPos;",""," // If we already got a row height, there's use that."," // FIXME-TABLE: Padding problem if the correct outer-padding CellBgRect strays off our ClipRect?"," ImRect cell_r = TableGetCellBgRect(table, column_n);"," float label_height = ImMax(label_size.y, table-\u003eRowMinHeight - table-\u003eRowCellPaddingY * 2.0f);",""," // Calculate ideal size for sort order arrow"," float w_arrow = 0.0f;"," float w_sort_text = 0.0f;"," bool sort_arrow = false;"," char sort_order_suf[4] = \"\";"," const float ARROW_SCALE = 0.65f;"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_Sortable) \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSort))"," {"," w_arrow = ImTrunc(g.FontSize * ARROW_SCALE + g.Style.FramePadding.x);"," if (column-\u003eSortOrder != -1)"," sort_arrow = true;"," if (column-\u003eSortOrder \u003e 0)"," {"," ImFormatString(sort_order_suf, IM_ARRAYSIZE(sort_order_suf), \"%d\", column-\u003eSortOrder + 1);"," w_sort_text = g.Style.ItemInnerSpacing.x + CalcTextSize(sort_order_suf).x;"," }"," }",""," // We feed our unclipped width to the column without writing on CursorMaxPos, so that column is still considered for merging."," float max_pos_x = label_pos.x + label_size.x + w_sort_text + w_arrow;"," column-\u003eContentMaxXHeadersUsed = ImMax(column-\u003eContentMaxXHeadersUsed, sort_arrow ? cell_r.Max.x : ImMin(max_pos_x, cell_r.Max.x));"," column-\u003eContentMaxXHeadersIdeal = ImMax(column-\u003eContentMaxXHeadersIdeal, max_pos_x);",""," // Keep header highlighted when context menu is open."," ImGuiID id = window-\u003eGetID(label);"," ImRect bb(cell_r.Min.x, cell_r.Min.y, cell_r.Max.x, ImMax(cell_r.Max.y, cell_r.Min.y + label_height + g.Style.CellPadding.y * 2.0f));"," ItemSize(ImVec2(0.0f, label_height)); // Don't declare unclipped width, it'll be fed ContentMaxPosHeadersIdeal"," if (!ItemAdd(bb, id))"," return;",""," //GetForegroundDrawList()-\u003eAddRect(cell_r.Min, cell_r.Max, IM_COL32(255, 0, 0, 255)); // [DEBUG]"," //GetForegroundDrawList()-\u003eAddRect(bb.Min, bb.Max, IM_COL32(255, 0, 0, 255)); // [DEBUG]",""," // Using AllowOverlap mode because we cover the whole cell, and we want user to be able to submit subsequent items."," const bool highlight = (table-\u003eHighlightColumnHeader == column_n);"," bool hovered, held;"," bool pressed = ButtonBehavior(bb, id, \u0026hovered, \u0026held, ImGuiButtonFlags_AllowOverlap);"," if (held || hovered || highlight)"," {"," const ImU32 col = GetColorU32(held ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header);"," //RenderFrame(bb.Min, bb.Max, col, false, 0.0f);"," TableSetBgColor(ImGuiTableBgTarget_CellBg, col, table-\u003eCurrentColumn);"," }"," else"," {"," // Submit single cell bg color in the case we didn't submit a full header row"," if ((table-\u003eRowFlags \u0026 ImGuiTableRowFlags_Headers) == 0)"," TableSetBgColor(ImGuiTableBgTarget_CellBg, GetColorU32(ImGuiCol_TableHeaderBg), table-\u003eCurrentColumn);"," }"," RenderNavCursor(bb, id, ImGuiNavRenderCursorFlags_Compact | ImGuiNavRenderCursorFlags_NoRounding);"," if (held)"," table-\u003eHeldHeaderColumn = (ImGuiTableColumnIdx)column_n;"," window-\u003eDC.CursorPos.y -= g.Style.ItemSpacing.y * 0.5f;",""," // Drag and drop to re-order columns."," // FIXME-TABLE: Scroll request while reordering a column and it lands out of the scrolling zone."," if (held \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_Reorderable) \u0026\u0026 IsMouseDragging(0) \u0026\u0026 !g.DragDropActive)"," {"," // While moving a column it will jump on the other side of the mouse, so we also test for MouseDelta.x"," table-\u003eReorderColumn = (ImGuiTableColumnIdx)column_n;"," table-\u003eInstanceInteracted = table-\u003eInstanceCurrent;",""," // We don't reorder: through the frozen\u003c\u003eunfrozen line, or through a column that is marked with ImGuiTableColumnFlags_NoReorder."," if (g.IO.MouseDelta.x \u003c 0.0f \u0026\u0026 g.IO.MousePos.x \u003c cell_r.Min.x)"," if (ImGuiTableColumn* prev_column = (column-\u003ePrevEnabledColumn != -1) ? \u0026table-\u003eColumns[column-\u003ePrevEnabledColumn] : NULL)"," if (!((column-\u003eFlags | prev_column-\u003eFlags) \u0026 ImGuiTableColumnFlags_NoReorder))"," if ((column-\u003eIndexWithinEnabledSet \u003c table-\u003eFreezeColumnsRequest) == (prev_column-\u003eIndexWithinEnabledSet \u003c table-\u003eFreezeColumnsRequest))"," table-\u003eReorderColumnDir = -1;"," if (g.IO.MouseDelta.x \u003e 0.0f \u0026\u0026 g.IO.MousePos.x \u003e cell_r.Max.x)"," if (ImGuiTableColumn* next_column = (column-\u003eNextEnabledColumn != -1) ? \u0026table-\u003eColumns[column-\u003eNextEnabledColumn] : NULL)"," if (!((column-\u003eFlags | next_column-\u003eFlags) \u0026 ImGuiTableColumnFlags_NoReorder))"," if ((column-\u003eIndexWithinEnabledSet \u003c table-\u003eFreezeColumnsRequest) == (next_column-\u003eIndexWithinEnabledSet \u003c table-\u003eFreezeColumnsRequest))"," table-\u003eReorderColumnDir = +1;"," }",""," // Sort order arrow"," const float ellipsis_max = ImMax(cell_r.Max.x - w_arrow - w_sort_text, label_pos.x);"," if ((table-\u003eFlags \u0026 ImGuiTableFlags_Sortable) \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSort))"," {"," if (column-\u003eSortOrder != -1)"," {"," float x = ImMax(cell_r.Min.x, cell_r.Max.x - w_arrow - w_sort_text);"," float y = label_pos.y;"," if (column-\u003eSortOrder \u003e 0)"," {"," PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_Text, 0.70f));"," RenderText(ImVec2(x + g.Style.ItemInnerSpacing.x, y), sort_order_suf);"," PopStyleColor();"," x += w_sort_text;"," }"," RenderArrow(window-\u003eDrawList, ImVec2(x, y), GetColorU32(ImGuiCol_Text), column-\u003eSortDirection == ImGuiSortDirection_Ascending ? ImGuiDir_Up : ImGuiDir_Down, ARROW_SCALE);"," }",""," // Handle clicking on column header to adjust Sort Order"," if (pressed \u0026\u0026 table-\u003eReorderColumn != column_n)"," {"," ImGuiSortDirection sort_direction = TableGetColumnNextSortDirection(column);"," TableSetColumnSortDirection(column_n, sort_direction, g.IO.KeyShift);"," }"," }",""," // Render clipped label. Clipping here ensure that in the majority of situations, all our header cells will"," // be merged into a single draw call."," //window-\u003eDrawList-\u003eAddCircleFilled(ImVec2(ellipsis_max, label_pos.y), 40, IM_COL32_WHITE);"," RenderTextEllipsis(window-\u003eDrawList, label_pos, ImVec2(ellipsis_max, label_pos.y + label_height + g.Style.FramePadding.y), ellipsis_max, ellipsis_max, label, label_end, \u0026label_size);",""," const bool text_clipped = label_size.x \u003e (ellipsis_max - label_pos.x);"," if (text_clipped \u0026\u0026 hovered \u0026\u0026 g.ActiveId == 0)"," SetItemTooltip(\"%.*s\", (int)(label_end - label), label);",""," // We don't use BeginPopupContextItem() because we want the popup to stay up even after the column is hidden"," if (IsMouseReleased(1) \u0026\u0026 IsItemHovered())"," TableOpenContextMenu(column_n);","}","","// Unlike TableHeadersRow() it is not expected that you can reimplement or customize this with custom widgets.","// FIXME: No hit-testing/button on the angled header.","void ImGui::TableAngledHeadersRow()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," ImGuiTableTempData* temp_data = table-\u003eTempData;"," temp_data-\u003eAngledHeadersRequests.resize(0);"," temp_data-\u003eAngledHeadersRequests.reserve(table-\u003eColumnsEnabledCount);",""," // Which column needs highlight?"," const ImGuiID row_id = GetID(\"##AngledHeaders\");"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table-\u003eInstanceCurrent);"," int highlight_column_n = table-\u003eHighlightColumnHeader;"," if (highlight_column_n == -1 \u0026\u0026 table-\u003eHoveredColumnBody != -1)"," if (table_instance-\u003eHoveredRowLast == 0 \u0026\u0026 table-\u003eHoveredColumnBorder == -1 \u0026\u0026 (g.ActiveId == 0 || g.ActiveId == row_id || (table-\u003eIsActiveIdInTable || g.DragDropActive)))"," highlight_column_n = table-\u003eHoveredColumnBody;",""," // Build up request"," ImU32 col_header_bg = GetColorU32(ImGuiCol_TableHeaderBg);"," ImU32 col_text = GetColorU32(ImGuiCol_Text);"," for (int order_n = 0; order_n \u003c table-\u003eColumnsCount; order_n++)"," if (IM_BITARRAY_TESTBIT(table-\u003eEnabledMaskByDisplayOrder, order_n))"," {"," const int column_n = table-\u003eDisplayOrderToIndex[order_n];"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_AngledHeader) == 0) // Note: can't rely on ImGuiTableColumnFlags_IsVisible test here."," continue;"," ImGuiTableHeaderData request = { (ImGuiTableColumnIdx)column_n, col_text, col_header_bg, (column_n == highlight_column_n) ? GetColorU32(ImGuiCol_Header) : 0 };"," temp_data-\u003eAngledHeadersRequests.push_back(request);"," }",""," // Render row"," TableAngledHeadersRowEx(row_id, g.Style.TableAngledHeadersAngle, 0.0f, temp_data-\u003eAngledHeadersRequests.Data, temp_data-\u003eAngledHeadersRequests.Size);","}","","// Important: data must be fed left to right","void ImGui::TableAngledHeadersRowEx(ImGuiID row_id, float angle, float max_label_width, const ImGuiTableHeaderData* data, int data_count)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," ImGuiWindow* window = g.CurrentWindow;"," ImDrawList* draw_list = window-\u003eDrawList;"," if (table == NULL)"," {"," IM_ASSERT_USER_ERROR(table != NULL, \"Call should only be done while in BeginTable() scope!\");"," return;"," }"," IM_ASSERT(table-\u003eCurrentRow == -1 \u0026\u0026 \"Must be first row\");",""," if (max_label_width == 0.0f)"," max_label_width = TableGetHeaderAngledMaxLabelWidth();",""," // Angle argument expressed in (-IM_PI/2 .. +IM_PI/2) as it is easier to think about for user."," const bool flip_label = (angle \u003c 0.0f);"," angle -= IM_PI * 0.5f;"," const float cos_a = ImCos(angle);"," const float sin_a = ImSin(angle);"," const float label_cos_a = flip_label ? ImCos(angle + IM_PI) : cos_a;"," const float label_sin_a = flip_label ? ImSin(angle + IM_PI) : sin_a;"," const ImVec2 unit_right = ImVec2(cos_a, sin_a);",""," // Calculate our base metrics and set angled headers data _before_ the first call to TableNextRow()"," // FIXME-STYLE: Would it be better for user to submit 'max_label_width' or 'row_height' ? One can be derived from the other."," const float header_height = g.FontSize + g.Style.CellPadding.x * 2.0f;"," const float row_height = ImTrunc(ImFabs(ImRotate(ImVec2(max_label_width, flip_label ? +header_height : -header_height), cos_a, sin_a).y));"," table-\u003eAngledHeadersHeight = row_height;"," table-\u003eAngledHeadersSlope = (sin_a != 0.0f) ? (cos_a / sin_a) : 0.0f;"," const ImVec2 header_angled_vector = unit_right * (row_height / -sin_a); // vector from bottom-left to top-left, and from bottom-right to top-right",""," // Declare row, override and draw our own background"," TableNextRow(ImGuiTableRowFlags_Headers, row_height);"," TableNextColumn();"," const ImRect row_r(table-\u003eWorkRect.Min.x, table-\u003eBgClipRect.Min.y, table-\u003eWorkRect.Max.x, table-\u003eRowPosY2);"," table-\u003eDrawSplitter-\u003eSetCurrentChannel(draw_list, TABLE_DRAW_CHANNEL_BG0);"," float clip_rect_min_x = table-\u003eBgClipRect.Min.x;"," if (table-\u003eFreezeColumnsCount \u003e 0)"," clip_rect_min_x = ImMax(clip_rect_min_x, table-\u003eColumns[table-\u003eFreezeColumnsCount - 1].MaxX);"," TableSetBgColor(ImGuiTableBgTarget_RowBg0, 0); // Cancel"," PushClipRect(table-\u003eBgClipRect.Min, table-\u003eBgClipRect.Max, false); // Span all columns"," draw_list-\u003eAddRectFilled(ImVec2(table-\u003eBgClipRect.Min.x, row_r.Min.y), ImVec2(table-\u003eBgClipRect.Max.x, row_r.Max.y), GetColorU32(ImGuiCol_TableHeaderBg, 0.25f)); // FIXME-STYLE: Change row background with an arbitrary color."," PushClipRect(ImVec2(clip_rect_min_x, table-\u003eBgClipRect.Min.y), table-\u003eBgClipRect.Max, true); // Span all columns",""," ButtonBehavior(row_r, row_id, NULL, NULL);"," KeepAliveID(row_id);",""," const float ascent_scaled = g.Font-\u003eAscent * g.FontScale; // FIXME: Standardize those scaling factors better"," const float line_off_for_ascent_x = (ImMax((g.FontSize - ascent_scaled) * 0.5f, 0.0f) / -sin_a) * (flip_label ? -1.0f : 1.0f);"," const ImVec2 padding = g.Style.CellPadding; // We will always use swapped component"," const ImVec2 align = g.Style.TableAngledHeadersTextAlign;",""," // Draw background and labels in first pass, then all borders."," float max_x = -FLT_MAX;"," for (int pass = 0; pass \u003c 2; pass++)"," for (int order_n = 0; order_n \u003c data_count; order_n++)"," {"," const ImGuiTableHeaderData* request = \u0026data[order_n];"," const int column_n = request-\u003eIndex;"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];",""," ImVec2 bg_shape[4];"," bg_shape[0] = ImVec2(column-\u003eMaxX, row_r.Max.y);"," bg_shape[1] = ImVec2(column-\u003eMinX, row_r.Max.y);"," bg_shape[2] = bg_shape[1] + header_angled_vector;"," bg_shape[3] = bg_shape[0] + header_angled_vector;"," if (pass == 0)"," {"," // Draw shape"," draw_list-\u003eAddQuadFilled(bg_shape[0], bg_shape[1], bg_shape[2], bg_shape[3], request-\u003eBgColor0);"," draw_list-\u003eAddQuadFilled(bg_shape[0], bg_shape[1], bg_shape[2], bg_shape[3], request-\u003eBgColor1); // Optional highlight"," max_x = ImMax(max_x, bg_shape[3].x);",""," // Draw label"," // - First draw at an offset where RenderTextXXX() function won't meddle with applying current ClipRect, then transform to final offset."," // - Handle multiple lines manually, as we want each lines to follow on the horizontal border, rather than see a whole block rotated."," const char* label_name = TableGetColumnName(table, column_n);"," const char* label_name_end = FindRenderedTextEnd(label_name);"," const float line_off_step_x = (g.FontSize / -sin_a);"," const int label_lines = ImTextCountLines(label_name, label_name_end);",""," // Left\u003c\u003eRight alignment"," float line_off_curr_x = flip_label ? (label_lines - 1) * line_off_step_x : 0.0f;"," float line_off_for_align_x = ImMax((((column-\u003eMaxX - column-\u003eMinX) - padding.x * 2.0f) - (label_lines * line_off_step_x)), 0.0f) * align.x;"," line_off_curr_x += line_off_for_align_x - line_off_for_ascent_x;",""," // Register header width"," column-\u003eContentMaxXHeadersUsed = column-\u003eContentMaxXHeadersIdeal = column-\u003eWorkMinX + ImCeil(label_lines * line_off_step_x - line_off_for_align_x);",""," while (label_name \u003c label_name_end)"," {"," const char* label_name_eol = strchr(label_name, '\\n');"," if (label_name_eol == NULL)"," label_name_eol = label_name_end;",""," // FIXME: Individual line clipping for right-most column is broken for negative angles."," ImVec2 label_size = CalcTextSize(label_name, label_name_eol);"," float clip_width = max_label_width - padding.y; // Using padding.y*2.0f would be symmetrical but hide more text."," float clip_height = ImMin(label_size.y, column-\u003eClipRect.Max.x - column-\u003eWorkMinX - line_off_curr_x);"," ImRect clip_r(window-\u003eClipRect.Min, window-\u003eClipRect.Min + ImVec2(clip_width, clip_height));"," int vtx_idx_begin = draw_list-\u003e_VtxCurrentIdx;"," PushStyleColor(ImGuiCol_Text, request-\u003eTextColor);"," RenderTextEllipsis(draw_list, clip_r.Min, clip_r.Max, clip_r.Max.x, clip_r.Max.x, label_name, label_name_eol, \u0026label_size);"," PopStyleColor();"," int vtx_idx_end = draw_list-\u003e_VtxCurrentIdx;",""," // Up\u003c\u003eDown alignment"," const float available_space = ImMax(clip_width - label_size.x + ImAbs(padding.x * cos_a) * 2.0f - ImAbs(padding.y * sin_a) * 2.0f, 0.0f);"," const float vertical_offset = available_space * align.y * (flip_label ? -1.0f : 1.0f);",""," // Rotate and offset label"," ImVec2 pivot_in = ImVec2(window-\u003eClipRect.Min.x - vertical_offset, window-\u003eClipRect.Min.y + label_size.y);"," ImVec2 pivot_out = ImVec2(column-\u003eWorkMinX, row_r.Max.y);"," line_off_curr_x += flip_label ? -line_off_step_x : line_off_step_x;"," pivot_out += unit_right * padding.y;"," if (flip_label)"," pivot_out += unit_right * (clip_width - ImMax(0.0f, clip_width - label_size.x));"," pivot_out.x += flip_label ? line_off_curr_x + line_off_step_x : line_off_curr_x;"," ShadeVertsTransformPos(draw_list, vtx_idx_begin, vtx_idx_end, pivot_in, label_cos_a, label_sin_a, pivot_out); // Rotate and offset"," //if (g.IO.KeyShift) { ImDrawList* fg_dl = GetForegroundDrawList(); vtx_idx_begin = fg_dl-\u003e_VtxCurrentIdx; fg_dl-\u003eAddRect(clip_r.Min, clip_r.Max, IM_COL32(0, 255, 0, 255), 0.0f, 0, 1.0f); ShadeVertsTransformPos(fg_dl, vtx_idx_begin, fg_dl-\u003e_VtxCurrentIdx, pivot_in, label_cos_a, label_sin_a, pivot_out); }",""," label_name = label_name_eol + 1;"," }"," }"," if (pass == 1)"," {"," // Draw border"," draw_list-\u003eAddLine(bg_shape[0], bg_shape[3], TableGetColumnBorderCol(table, order_n, column_n));"," }"," }"," PopClipRect();"," PopClipRect();"," table-\u003eTempData-\u003eAngledHeadersExtraWidth = ImMax(0.0f, max_x - table-\u003eColumns[table-\u003eRightMostEnabledColumn].MaxX);","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Context Menu","//-------------------------------------------------------------------------","// - TableOpenContextMenu() [Internal]","// - TableBeginContextMenuPopup() [Internal]","// - TableDrawDefaultContextMenu() [Internal]","//-------------------------------------------------------------------------","","// Use -1 to open menu not specific to a given column.","void ImGui::TableOpenContextMenu(int column_n)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTable* table = g.CurrentTable;"," if (column_n == -1 \u0026\u0026 table-\u003eCurrentColumn != -1) // When called within a column automatically use this one (for consistency)"," column_n = table-\u003eCurrentColumn;"," if (column_n == table-\u003eColumnsCount) // To facilitate using with TableGetHoveredColumn()"," column_n = -1;"," IM_ASSERT(column_n \u003e= -1 \u0026\u0026 column_n \u003c table-\u003eColumnsCount);"," if (table-\u003eFlags \u0026 (ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable))"," {"," table-\u003eIsContextPopupOpen = true;"," table-\u003eContextPopupColumn = (ImGuiTableColumnIdx)column_n;"," table-\u003eInstanceInteracted = table-\u003eInstanceCurrent;"," const ImGuiID context_menu_id = ImHashStr(\"##ContextMenu\", 0, table-\u003eID);"," OpenPopupEx(context_menu_id, ImGuiPopupFlags_None);"," }","}","","bool ImGui::TableBeginContextMenuPopup(ImGuiTable* table)","{"," if (!table-\u003eIsContextPopupOpen || table-\u003eInstanceCurrent != table-\u003eInstanceInteracted)"," return false;"," const ImGuiID context_menu_id = ImHashStr(\"##ContextMenu\", 0, table-\u003eID);"," if (BeginPopupEx(context_menu_id, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings))"," return true;"," table-\u003eIsContextPopupOpen = false;"," return false;","}","","// Output context menu into current window (generally a popup)","// FIXME-TABLE: Ideally this should be writable by the user. Full programmatic access to that data?","// Sections to display are pulled from 'flags_for_section_to_display', which is typically == table-\u003eFlags.","// - ImGuiTableFlags_Resizable -\u003e display Sizing menu items","// - ImGuiTableFlags_Reorderable -\u003e display \"Reset Order\"","////- ImGuiTableFlags_Sortable -\u003e display sorting options (disabled)","// - ImGuiTableFlags_Hideable -\u003e display columns visibility menu items","// It means if you have a custom context menus you can call this section and omit some sections, and add your own.","void ImGui::TableDrawDefaultContextMenu(ImGuiTable* table, ImGuiTableFlags flags_for_section_to_display)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," if (window-\u003eSkipItems)"," return;",""," bool want_separator = false;"," const int column_n = (table-\u003eContextPopupColumn \u003e= 0 \u0026\u0026 table-\u003eContextPopupColumn \u003c table-\u003eColumnsCount) ? table-\u003eContextPopupColumn : -1;"," ImGuiTableColumn* column = (column_n != -1) ? \u0026table-\u003eColumns[column_n] : NULL;",""," // Sizing"," if (flags_for_section_to_display \u0026 ImGuiTableFlags_Resizable)"," {"," if (column != NULL)"," {"," const bool can_resize = !(column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize) \u0026\u0026 column-\u003eIsEnabled;"," if (MenuItem(LocalizeGetMsg(ImGuiLocKey_TableSizeOne), NULL, false, can_resize)) // \"###SizeOne\""," TableSetColumnWidthAutoSingle(table, column_n);"," }",""," const char* size_all_desc;"," if (table-\u003eColumnsEnabledFixedCount == table-\u003eColumnsEnabledCount \u0026\u0026 (table-\u003eFlags \u0026 ImGuiTableFlags_SizingMask_) != ImGuiTableFlags_SizingFixedSame)"," size_all_desc = LocalizeGetMsg(ImGuiLocKey_TableSizeAllFit); // \"###SizeAll\" All fixed"," else"," size_all_desc = LocalizeGetMsg(ImGuiLocKey_TableSizeAllDefault); // \"###SizeAll\" All stretch or mixed"," if (MenuItem(size_all_desc, NULL))"," TableSetColumnWidthAutoAll(table);"," want_separator = true;"," }",""," // Ordering"," if (flags_for_section_to_display \u0026 ImGuiTableFlags_Reorderable)"," {"," if (MenuItem(LocalizeGetMsg(ImGuiLocKey_TableResetOrder), NULL, false, !table-\u003eIsDefaultDisplayOrder))"," table-\u003eIsResetDisplayOrderRequest = true;"," want_separator = true;"," }",""," // Reset all (should work but seems unnecessary/noisy to expose?)"," //if (MenuItem(\"Reset all\"))"," // table-\u003eIsResetAllRequest = true;",""," // Sorting"," // (modify TableOpenContextMenu() to add _Sortable flag if enabling this)","#if 0"," if ((flags_for_section_to_display \u0026 ImGuiTableFlags_Sortable) \u0026\u0026 column != NULL \u0026\u0026 (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSort) == 0)"," {"," if (want_separator)"," Separator();"," want_separator = true;",""," bool append_to_sort_specs = g.IO.KeyShift;"," if (MenuItem(\"Sort in Ascending Order\", NULL, column-\u003eSortOrder != -1 \u0026\u0026 column-\u003eSortDirection == ImGuiSortDirection_Ascending, (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSortAscending) == 0))"," TableSetColumnSortDirection(table, column_n, ImGuiSortDirection_Ascending, append_to_sort_specs);"," if (MenuItem(\"Sort in Descending Order\", NULL, column-\u003eSortOrder != -1 \u0026\u0026 column-\u003eSortDirection == ImGuiSortDirection_Descending, (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoSortDescending) == 0))"," TableSetColumnSortDirection(table, column_n, ImGuiSortDirection_Descending, append_to_sort_specs);"," }","#endif",""," // Hiding / Visibility"," if (flags_for_section_to_display \u0026 ImGuiTableFlags_Hideable)"," {"," if (want_separator)"," Separator();"," want_separator = true;",""," PushItemFlag(ImGuiItemFlags_AutoClosePopups, false);"," for (int other_column_n = 0; other_column_n \u003c table-\u003eColumnsCount; other_column_n++)"," {"," ImGuiTableColumn* other_column = \u0026table-\u003eColumns[other_column_n];"," if (other_column-\u003eFlags \u0026 ImGuiTableColumnFlags_Disabled)"," continue;",""," const char* name = TableGetColumnName(table, other_column_n);"," if (name == NULL || name[0] == 0)"," name = \"\u003cUnknown\u003e\";",""," // Make sure we can't hide the last active column"," bool menu_item_active = (other_column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoHide) ? false : true;"," if (other_column-\u003eIsUserEnabled \u0026\u0026 table-\u003eColumnsEnabledCount \u003c= 1)"," menu_item_active = false;"," if (MenuItem(name, NULL, other_column-\u003eIsUserEnabled, menu_item_active))"," other_column-\u003eIsUserEnabledNextFrame = !other_column-\u003eIsUserEnabled;"," }"," PopItemFlag();"," }","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Settings (.ini data)","//-------------------------------------------------------------------------","// FIXME: The binding/finding/creating flow are too confusing.","//-------------------------------------------------------------------------","// - TableSettingsInit() [Internal]","// - TableSettingsCalcChunkSize() [Internal]","// - TableSettingsCreate() [Internal]","// - TableSettingsFindByID() [Internal]","// - TableGetBoundSettings() [Internal]","// - TableResetSettings()","// - TableSaveSettings() [Internal]","// - TableLoadSettings() [Internal]","// - TableSettingsHandler_ClearAll() [Internal]","// - TableSettingsHandler_ApplyAll() [Internal]","// - TableSettingsHandler_ReadOpen() [Internal]","// - TableSettingsHandler_ReadLine() [Internal]","// - TableSettingsHandler_WriteAll() [Internal]","// - TableSettingsInstallHandler() [Internal]","//-------------------------------------------------------------------------","// [Init] 1: TableSettingsHandler_ReadXXXX() Load and parse .ini file into TableSettings.","// [Main] 2: TableLoadSettings() When table is created, bind Table to TableSettings, serialize TableSettings data into Table.","// [Main] 3: TableSaveSettings() When table properties are modified, serialize Table data into bound or new TableSettings, mark .ini as dirty.","// [Main] 4: TableSettingsHandler_WriteAll() When .ini file is dirty (which can come from other source), save TableSettings into .ini file.","//-------------------------------------------------------------------------","","// Clear and initialize empty settings instance","static void TableSettingsInit(ImGuiTableSettings* settings, ImGuiID id, int columns_count, int columns_count_max)","{"," IM_PLACEMENT_NEW(settings) ImGuiTableSettings();"," ImGuiTableColumnSettings* settings_column = settings-\u003eGetColumnSettings();"," for (int n = 0; n \u003c columns_count_max; n++, settings_column++)"," IM_PLACEMENT_NEW(settings_column) ImGuiTableColumnSettings();"," settings-\u003eID = id;"," settings-\u003eColumnsCount = (ImGuiTableColumnIdx)columns_count;"," settings-\u003eColumnsCountMax = (ImGuiTableColumnIdx)columns_count_max;"," settings-\u003eWantApply = true;","}","","static size_t TableSettingsCalcChunkSize(int columns_count)","{"," return sizeof(ImGuiTableSettings) + (size_t)columns_count * sizeof(ImGuiTableColumnSettings);","}","","ImGuiTableSettings* ImGui::TableSettingsCreate(ImGuiID id, int columns_count)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTableSettings* settings = g.SettingsTables.alloc_chunk(TableSettingsCalcChunkSize(columns_count));"," TableSettingsInit(settings, id, columns_count, columns_count);"," return settings;","}","","// Find existing settings","ImGuiTableSettings* ImGui::TableSettingsFindByID(ImGuiID id)","{"," // FIXME-OPT: Might want to store a lookup map for this?"," ImGuiContext\u0026 g = *GImGui;"," for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings))"," if (settings-\u003eID == id)"," return settings;"," return NULL;","}","","// Get settings for a given table, NULL if none","ImGuiTableSettings* ImGui::TableGetBoundSettings(ImGuiTable* table)","{"," if (table-\u003eSettingsOffset != -1)"," {"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTableSettings* settings = g.SettingsTables.ptr_from_offset(table-\u003eSettingsOffset);"," IM_ASSERT(settings-\u003eID == table-\u003eID);"," if (settings-\u003eColumnsCountMax \u003e= table-\u003eColumnsCount)"," return settings; // OK"," settings-\u003eID = 0; // Invalidate storage, we won't fit because of a count change"," }"," return NULL;","}","","// Restore initial state of table (with or without saved settings)","void ImGui::TableResetSettings(ImGuiTable* table)","{"," table-\u003eIsInitializing = table-\u003eIsSettingsDirty = true;"," table-\u003eIsResetAllRequest = false;"," table-\u003eIsSettingsRequestLoad = false; // Don't reload from ini"," table-\u003eSettingsLoadedFlags = ImGuiTableFlags_None; // Mark as nothing loaded so our initialized data becomes authoritative","}","","void ImGui::TableSaveSettings(ImGuiTable* table)","{"," table-\u003eIsSettingsDirty = false;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoSavedSettings)"," return;",""," // Bind or create settings data"," ImGuiContext\u0026 g = *GImGui;"," ImGuiTableSettings* settings = TableGetBoundSettings(table);"," if (settings == NULL)"," {"," settings = TableSettingsCreate(table-\u003eID, table-\u003eColumnsCount);"," table-\u003eSettingsOffset = g.SettingsTables.offset_from_ptr(settings);"," }"," settings-\u003eColumnsCount = (ImGuiTableColumnIdx)table-\u003eColumnsCount;",""," // Serialize ImGuiTable/ImGuiTableColumn into ImGuiTableSettings/ImGuiTableColumnSettings"," IM_ASSERT(settings-\u003eID == table-\u003eID);"," IM_ASSERT(settings-\u003eColumnsCount == table-\u003eColumnsCount \u0026\u0026 settings-\u003eColumnsCountMax \u003e= settings-\u003eColumnsCount);"," ImGuiTableColumn* column = table-\u003eColumns.Data;"," ImGuiTableColumnSettings* column_settings = settings-\u003eGetColumnSettings();",""," bool save_ref_scale = false;"," settings-\u003eSaveFlags = ImGuiTableFlags_None;"," for (int n = 0; n \u003c table-\u003eColumnsCount; n++, column++, column_settings++)"," {"," const float width_or_weight = (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch) ? column-\u003eStretchWeight : column-\u003eWidthRequest;"," column_settings-\u003eWidthOrWeight = width_or_weight;"," column_settings-\u003eIndex = (ImGuiTableColumnIdx)n;"," column_settings-\u003eDisplayOrder = column-\u003eDisplayOrder;"," column_settings-\u003eSortOrder = column-\u003eSortOrder;"," column_settings-\u003eSortDirection = column-\u003eSortDirection;"," column_settings-\u003eIsEnabled = column-\u003eIsUserEnabled;"," column_settings-\u003eIsStretch = (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch) ? 1 : 0;"," if ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch) == 0)"," save_ref_scale = true;",""," // We skip saving some data in the .ini file when they are unnecessary to restore our state."," // Note that fixed width where initial width was derived from auto-fit will always be saved as InitStretchWeightOrWidth will be 0.0f."," // FIXME-TABLE: We don't have logic to easily compare SortOrder to DefaultSortOrder yet so it's always saved when present."," if (width_or_weight != column-\u003eInitStretchWeightOrWidth)"," settings-\u003eSaveFlags |= ImGuiTableFlags_Resizable;"," if (column-\u003eDisplayOrder != n)"," settings-\u003eSaveFlags |= ImGuiTableFlags_Reorderable;"," if (column-\u003eSortOrder != -1)"," settings-\u003eSaveFlags |= ImGuiTableFlags_Sortable;"," if (column-\u003eIsUserEnabled != ((column-\u003eFlags \u0026 ImGuiTableColumnFlags_DefaultHide) == 0))"," settings-\u003eSaveFlags |= ImGuiTableFlags_Hideable;"," }"," settings-\u003eSaveFlags \u0026= table-\u003eFlags;"," settings-\u003eRefScale = save_ref_scale ? table-\u003eRefScale : 0.0f;",""," MarkIniSettingsDirty();","}","","void ImGui::TableLoadSettings(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," table-\u003eIsSettingsRequestLoad = false;"," if (table-\u003eFlags \u0026 ImGuiTableFlags_NoSavedSettings)"," return;",""," // Bind settings"," ImGuiTableSettings* settings;"," if (table-\u003eSettingsOffset == -1)"," {"," settings = TableSettingsFindByID(table-\u003eID);"," if (settings == NULL)"," return;"," if (settings-\u003eColumnsCount != table-\u003eColumnsCount) // Allow settings if columns count changed. We could otherwise decide to return..."," table-\u003eIsSettingsDirty = true;"," table-\u003eSettingsOffset = g.SettingsTables.offset_from_ptr(settings);"," }"," else"," {"," settings = TableGetBoundSettings(table);"," }",""," table-\u003eSettingsLoadedFlags = settings-\u003eSaveFlags;"," table-\u003eRefScale = settings-\u003eRefScale;",""," // Initialize default columns settings"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," TableInitColumnDefaults(table, column, ~0);"," column-\u003eAutoFitQueue = 0x00;"," }",""," // Serialize ImGuiTableSettings/ImGuiTableColumnSettings into ImGuiTable/ImGuiTableColumn"," ImGuiTableColumnSettings* column_settings = settings-\u003eGetColumnSettings();"," ImU64 display_order_mask = 0;"," for (int data_n = 0; data_n \u003c settings-\u003eColumnsCount; data_n++, column_settings++)"," {"," int column_n = column_settings-\u003eIndex;"," if (column_n \u003c 0 || column_n \u003e= table-\u003eColumnsCount)"," continue;",""," ImGuiTableColumn* column = \u0026table-\u003eColumns[column_n];"," if (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Resizable)"," {"," if (column_settings-\u003eIsStretch)"," column-\u003eStretchWeight = column_settings-\u003eWidthOrWeight;"," else"," column-\u003eWidthRequest = column_settings-\u003eWidthOrWeight;"," }"," if (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Reorderable)"," column-\u003eDisplayOrder = column_settings-\u003eDisplayOrder;"," display_order_mask |= (ImU64)1 \u003c\u003c column-\u003eDisplayOrder;"," if ((settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Hideable) \u0026\u0026 column_settings-\u003eIsEnabled != -1)"," column-\u003eIsUserEnabled = column-\u003eIsUserEnabledNextFrame = column_settings-\u003eIsEnabled == 1;"," column-\u003eSortOrder = column_settings-\u003eSortOrder;"," column-\u003eSortDirection = column_settings-\u003eSortDirection;"," }",""," // Validate and fix invalid display order data"," const ImU64 expected_display_order_mask = (settings-\u003eColumnsCount == 64) ? ~0 : ((ImU64)1 \u003c\u003c settings-\u003eColumnsCount) - 1;"," if (display_order_mask != expected_display_order_mask)"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," table-\u003eColumns[column_n].DisplayOrder = (ImGuiTableColumnIdx)column_n;",""," // Rebuild index"," for (int column_n = 0; column_n \u003c table-\u003eColumnsCount; column_n++)"," table-\u003eDisplayOrderToIndex[table-\u003eColumns[column_n].DisplayOrder] = (ImGuiTableColumnIdx)column_n;","}","","static void TableSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSettingsHandler*)","{"," ImGuiContext\u0026 g = *ctx;"," for (int i = 0; i != g.Tables.GetMapSize(); i++)"," if (ImGuiTable* table = g.Tables.TryGetMapData(i))"," table-\u003eSettingsOffset = -1;"," g.SettingsTables.clear();","}","","// Apply to existing windows (if any)","static void TableSettingsHandler_ApplyAll(ImGuiContext* ctx, ImGuiSettingsHandler*)","{"," ImGuiContext\u0026 g = *ctx;"," for (int i = 0; i != g.Tables.GetMapSize(); i++)"," if (ImGuiTable* table = g.Tables.TryGetMapData(i))"," {"," table-\u003eIsSettingsRequestLoad = true;"," table-\u003eSettingsOffset = -1;"," }","}","","static void* TableSettingsHandler_ReadOpen(ImGuiContext*, ImGuiSettingsHandler*, const char* name)","{"," ImGuiID id = 0;"," int columns_count = 0;"," if (sscanf(name, \"0x%08X,%d\", \u0026id, \u0026columns_count) \u003c 2)"," return NULL;",""," if (ImGuiTableSettings* settings = ImGui::TableSettingsFindByID(id))"," {"," if (settings-\u003eColumnsCountMax \u003e= columns_count)"," {"," TableSettingsInit(settings, id, columns_count, settings-\u003eColumnsCountMax); // Recycle"," return settings;"," }"," settings-\u003eID = 0; // Invalidate storage, we won't fit because of a count change"," }"," return ImGui::TableSettingsCreate(id, columns_count);","}","","static void TableSettingsHandler_ReadLine(ImGuiContext*, ImGuiSettingsHandler*, void* entry, const char* line)","{"," // \"Column 0 UserID=0x42AD2D21 Width=100 Visible=1 Order=0 Sort=0v\""," ImGuiTableSettings* settings = (ImGuiTableSettings*)entry;"," float f = 0.0f;"," int column_n = 0, r = 0, n = 0;",""," if (sscanf(line, \"RefScale=%f\", \u0026f) == 1) { settings-\u003eRefScale = f; return; }",""," if (sscanf(line, \"Column %d%n\", \u0026column_n, \u0026r) == 1)"," {"," if (column_n \u003c 0 || column_n \u003e= settings-\u003eColumnsCount)"," return;"," line = ImStrSkipBlank(line + r);"," char c = 0;"," ImGuiTableColumnSettings* column = settings-\u003eGetColumnSettings() + column_n;"," column-\u003eIndex = (ImGuiTableColumnIdx)column_n;"," if (sscanf(line, \"UserID=0x%08X%n\", (ImU32*)\u0026n, \u0026r)==1) { line = ImStrSkipBlank(line + r); column-\u003eUserID = (ImGuiID)n; }"," if (sscanf(line, \"Width=%d%n\", \u0026n, \u0026r) == 1) { line = ImStrSkipBlank(line + r); column-\u003eWidthOrWeight = (float)n; column-\u003eIsStretch = 0; settings-\u003eSaveFlags |= ImGuiTableFlags_Resizable; }"," if (sscanf(line, \"Weight=%f%n\", \u0026f, \u0026r) == 1) { line = ImStrSkipBlank(line + r); column-\u003eWidthOrWeight = f; column-\u003eIsStretch = 1; settings-\u003eSaveFlags |= ImGuiTableFlags_Resizable; }"," if (sscanf(line, \"Visible=%d%n\", \u0026n, \u0026r) == 1) { line = ImStrSkipBlank(line + r); column-\u003eIsEnabled = (ImU8)n; settings-\u003eSaveFlags |= ImGuiTableFlags_Hideable; }"," if (sscanf(line, \"Order=%d%n\", \u0026n, \u0026r) == 1) { line = ImStrSkipBlank(line + r); column-\u003eDisplayOrder = (ImGuiTableColumnIdx)n; settings-\u003eSaveFlags |= ImGuiTableFlags_Reorderable; }"," if (sscanf(line, \"Sort=%d%c%n\", \u0026n, \u0026c, \u0026r) == 2) { line = ImStrSkipBlank(line + r); column-\u003eSortOrder = (ImGuiTableColumnIdx)n; column-\u003eSortDirection = (c == '^') ? ImGuiSortDirection_Descending : ImGuiSortDirection_Ascending; settings-\u003eSaveFlags |= ImGuiTableFlags_Sortable; }"," }","}","","static void TableSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandler* handler, ImGuiTextBuffer* buf)","{"," ImGuiContext\u0026 g = *ctx;"," for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings))"," {"," if (settings-\u003eID == 0) // Skip ditched settings"," continue;",""," // TableSaveSettings() may clear some of those flags when we establish that the data can be stripped"," // (e.g. Order was unchanged)"," const bool save_size = (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Resizable) != 0;"," const bool save_visible = (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Hideable) != 0;"," const bool save_order = (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Reorderable) != 0;"," const bool save_sort = (settings-\u003eSaveFlags \u0026 ImGuiTableFlags_Sortable) != 0;"," // We need to save the [Table] entry even if all the bools are false, since this records a table with \"default settings\".",""," buf-\u003ereserve(buf-\u003esize() + 30 + settings-\u003eColumnsCount * 50); // ballpark reserve"," buf-\u003eappendf(\"[%s][0x%08X,%d]\\n\", handler-\u003eTypeName, settings-\u003eID, settings-\u003eColumnsCount);"," if (settings-\u003eRefScale != 0.0f)"," buf-\u003eappendf(\"RefScale=%g\\n\", settings-\u003eRefScale);"," ImGuiTableColumnSettings* column = settings-\u003eGetColumnSettings();"," for (int column_n = 0; column_n \u003c settings-\u003eColumnsCount; column_n++, column++)"," {"," // \"Column 0 UserID=0x42AD2D21 Width=100 Visible=1 Order=0 Sort=0v\""," bool save_column = column-\u003eUserID != 0 || save_size || save_visible || save_order || (save_sort \u0026\u0026 column-\u003eSortOrder != -1);"," if (!save_column)"," continue;"," buf-\u003eappendf(\"Column %-2d\", column_n);"," if (column-\u003eUserID != 0) { buf-\u003eappendf(\" UserID=%08X\", column-\u003eUserID); }"," if (save_size \u0026\u0026 column-\u003eIsStretch) { buf-\u003eappendf(\" Weight=%.4f\", column-\u003eWidthOrWeight); }"," if (save_size \u0026\u0026 !column-\u003eIsStretch) { buf-\u003eappendf(\" Width=%d\", (int)column-\u003eWidthOrWeight); }"," if (save_visible) { buf-\u003eappendf(\" Visible=%d\", column-\u003eIsEnabled); }"," if (save_order) { buf-\u003eappendf(\" Order=%d\", column-\u003eDisplayOrder); }"," if (save_sort \u0026\u0026 column-\u003eSortOrder != -1) { buf-\u003eappendf(\" Sort=%d%c\", column-\u003eSortOrder, (column-\u003eSortDirection == ImGuiSortDirection_Ascending) ? 'v' : '^'); }"," buf-\u003eappend(\"\\n\");"," }"," buf-\u003eappend(\"\\n\");"," }","}","","void ImGui::TableSettingsAddSettingsHandler()","{"," ImGuiSettingsHandler ini_handler;"," ini_handler.TypeName = \"Table\";"," ini_handler.TypeHash = ImHashStr(\"Table\");"," ini_handler.ClearAllFn = TableSettingsHandler_ClearAll;"," ini_handler.ReadOpenFn = TableSettingsHandler_ReadOpen;"," ini_handler.ReadLineFn = TableSettingsHandler_ReadLine;"," ini_handler.ApplyAllFn = TableSettingsHandler_ApplyAll;"," ini_handler.WriteAllFn = TableSettingsHandler_WriteAll;"," AddSettingsHandler(\u0026ini_handler);","}","","//-------------------------------------------------------------------------","// [SECTION] Tables: Garbage Collection","//-------------------------------------------------------------------------","// - TableRemove() [Internal]","// - TableGcCompactTransientBuffers() [Internal]","// - TableGcCompactSettings() [Internal]","//-------------------------------------------------------------------------","","// Remove Table (currently only used by TestEngine)","void ImGui::TableRemove(ImGuiTable* table)","{"," //IMGUI_DEBUG_PRINT(\"TableRemove() id=0x%08X\\n\", table-\u003eID);"," ImGuiContext\u0026 g = *GImGui;"," int table_idx = g.Tables.GetIndex(table);"," //memset(table-\u003eRawData.Data, 0, table-\u003eRawData.size_in_bytes());"," //memset(table, 0, sizeof(ImGuiTable));"," g.Tables.Remove(table-\u003eID, table);"," g.TablesLastTimeActive[table_idx] = -1.0f;","}","","// Free up/compact internal Table buffers for when it gets unused","void ImGui::TableGcCompactTransientBuffers(ImGuiTable* table)","{"," //IMGUI_DEBUG_PRINT(\"TableGcCompactTransientBuffers() id=0x%08X\\n\", table-\u003eID);"," ImGuiContext\u0026 g = *GImGui;"," IM_ASSERT(table-\u003eMemoryCompacted == false);"," table-\u003eSortSpecs.Specs = NULL;"," table-\u003eSortSpecsMulti.clear();"," table-\u003eIsSortSpecsDirty = true; // FIXME: In theory shouldn't have to leak into user performing a sort on resume."," table-\u003eColumnsNames.clear();"," table-\u003eMemoryCompacted = true;"," for (int n = 0; n \u003c table-\u003eColumnsCount; n++)"," table-\u003eColumns[n].NameOffset = -1;"," g.TablesLastTimeActive[g.Tables.GetIndex(table)] = -1.0f;","}","","void ImGui::TableGcCompactTransientBuffers(ImGuiTableTempData* temp_data)","{"," temp_data-\u003eDrawSplitter.ClearFreeMemory();"," temp_data-\u003eLastTimeActive = -1.0f;","}","","// Compact and remove unused settings data (currently only used by TestEngine)","void ImGui::TableGcCompactSettings()","{"," ImGuiContext\u0026 g = *GImGui;"," int required_memory = 0;"," for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings))"," if (settings-\u003eID != 0)"," required_memory += (int)TableSettingsCalcChunkSize(settings-\u003eColumnsCount);"," if (required_memory == g.SettingsTables.Buf.Size)"," return;"," ImChunkStream\u003cImGuiTableSettings\u003e new_chunk_stream;"," new_chunk_stream.Buf.reserve(required_memory);"," for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings))"," if (settings-\u003eID != 0)"," memcpy(new_chunk_stream.alloc_chunk(TableSettingsCalcChunkSize(settings-\u003eColumnsCount)), settings, TableSettingsCalcChunkSize(settings-\u003eColumnsCount));"," g.SettingsTables.swap(new_chunk_stream);","}","","","//-------------------------------------------------------------------------","// [SECTION] Tables: Debugging","//-------------------------------------------------------------------------","// - DebugNodeTable() [Internal]","//-------------------------------------------------------------------------","","#ifndef IMGUI_DISABLE_DEBUG_TOOLS","","static const char* DebugNodeTableGetSizingPolicyDesc(ImGuiTableFlags sizing_policy)","{"," sizing_policy \u0026= ImGuiTableFlags_SizingMask_;"," if (sizing_policy == ImGuiTableFlags_SizingFixedFit) { return \"FixedFit\"; }"," if (sizing_policy == ImGuiTableFlags_SizingFixedSame) { return \"FixedSame\"; }"," if (sizing_policy == ImGuiTableFlags_SizingStretchProp) { return \"StretchProp\"; }"," if (sizing_policy == ImGuiTableFlags_SizingStretchSame) { return \"StretchSame\"; }"," return \"N/A\";","}","","void ImGui::DebugNodeTable(ImGuiTable* table)","{"," ImGuiContext\u0026 g = *GImGui;"," const bool is_active = (table-\u003eLastFrameActive \u003e= g.FrameCount - 2); // Note that fully clipped early out scrolling tables will appear as inactive here."," if (!is_active) { PushStyleColor(ImGuiCol_Text, GetStyleColorVec4(ImGuiCol_TextDisabled)); }"," bool open = TreeNode(table, \"Table 0x%08X (%d columns, in '%s')%s\", table-\u003eID, table-\u003eColumnsCount, table-\u003eOuterWindow-\u003eName, is_active ? \"\" : \" *Inactive*\");"," if (!is_active) { PopStyleColor(); }"," if (IsItemHovered())"," GetForegroundDrawList()-\u003eAddRect(table-\u003eOuterRect.Min, table-\u003eOuterRect.Max, IM_COL32(255, 255, 0, 255));"," if (IsItemVisible() \u0026\u0026 table-\u003eHoveredColumnBody != -1)"," GetForegroundDrawList()-\u003eAddRect(GetItemRectMin(), GetItemRectMax(), IM_COL32(255, 255, 0, 255));"," if (!open)"," return;"," if (table-\u003eInstanceCurrent \u003e 0)"," Text(\"** %d instances of same table! Some data below will refer to last instance.\", table-\u003eInstanceCurrent + 1);"," if (g.IO.ConfigDebugIsDebuggerPresent)"," {"," if (DebugBreakButton(\"**DebugBreak**\", \"in BeginTable()\"))"," g.DebugBreakInTable = table-\u003eID;"," SameLine();"," }",""," bool clear_settings = SmallButton(\"Clear settings\");"," BulletText(\"OuterRect: Pos: (%.1f,%.1f) Size: (%.1f,%.1f) Sizing: '%s'\", table-\u003eOuterRect.Min.x, table-\u003eOuterRect.Min.y, table-\u003eOuterRect.GetWidth(), table-\u003eOuterRect.GetHeight(), DebugNodeTableGetSizingPolicyDesc(table-\u003eFlags));"," BulletText(\"ColumnsGivenWidth: %.1f, ColumnsAutoFitWidth: %.1f, InnerWidth: %.1f%s\", table-\u003eColumnsGivenWidth, table-\u003eColumnsAutoFitWidth, table-\u003eInnerWidth, table-\u003eInnerWidth == 0.0f ? \" (auto)\" : \"\");"," BulletText(\"CellPaddingX: %.1f, CellSpacingX: %.1f/%.1f, OuterPaddingX: %.1f\", table-\u003eCellPaddingX, table-\u003eCellSpacingX1, table-\u003eCellSpacingX2, table-\u003eOuterPaddingX);"," BulletText(\"HoveredColumnBody: %d, HoveredColumnBorder: %d\", table-\u003eHoveredColumnBody, table-\u003eHoveredColumnBorder);"," BulletText(\"ResizedColumn: %d, ReorderColumn: %d, HeldHeaderColumn: %d\", table-\u003eResizedColumn, table-\u003eReorderColumn, table-\u003eHeldHeaderColumn);"," for (int n = 0; n \u003c table-\u003eInstanceCurrent + 1; n++)"," {"," ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, n);"," BulletText(\"Instance %d: HoveredRow: %d, LastOuterHeight: %.2f\", n, table_instance-\u003eHoveredRowLast, table_instance-\u003eLastOuterHeight);"," }"," //BulletText(\"BgDrawChannels: %d/%d\", 0, table-\u003eBgDrawChannelUnfrozen);"," float sum_weights = 0.0f;"," for (int n = 0; n \u003c table-\u003eColumnsCount; n++)"," if (table-\u003eColumns[n].Flags \u0026 ImGuiTableColumnFlags_WidthStretch)"," sum_weights += table-\u003eColumns[n].StretchWeight;"," for (int n = 0; n \u003c table-\u003eColumnsCount; n++)"," {"," ImGuiTableColumn* column = \u0026table-\u003eColumns[n];"," const char* name = TableGetColumnName(table, n);"," char buf[512];"," ImFormatString(buf, IM_ARRAYSIZE(buf),"," \"Column %d order %d '%s': offset %+.2f to %+.2f%s\\n\""," \"Enabled: %d, VisibleX/Y: %d/%d, RequestOutput: %d, SkipItems: %d, DrawChannels: %d,%d\\n\""," \"WidthGiven: %.1f, Request/Auto: %.1f/%.1f, StretchWeight: %.3f (%.1f%%)\\n\""," \"MinX: %.1f, MaxX: %.1f (%+.1f), ClipRect: %.1f to %.1f (+%.1f)\\n\""," \"ContentWidth: %.1f,%.1f, HeadersUsed/Ideal %.1f/%.1f\\n\""," \"Sort: %d%s, UserID: 0x%08X, Flags: 0x%04X: %s%s%s..\","," n, column-\u003eDisplayOrder, name, column-\u003eMinX - table-\u003eWorkRect.Min.x, column-\u003eMaxX - table-\u003eWorkRect.Min.x, (n \u003c table-\u003eFreezeColumnsRequest) ? \" (Frozen)\" : \"\","," column-\u003eIsEnabled, column-\u003eIsVisibleX, column-\u003eIsVisibleY, column-\u003eIsRequestOutput, column-\u003eIsSkipItems, column-\u003eDrawChannelFrozen, column-\u003eDrawChannelUnfrozen,"," column-\u003eWidthGiven, column-\u003eWidthRequest, column-\u003eWidthAuto, column-\u003eStretchWeight, column-\u003eStretchWeight \u003e 0.0f ? (column-\u003eStretchWeight / sum_weights) * 100.0f : 0.0f,"," column-\u003eMinX, column-\u003eMaxX, column-\u003eMaxX - column-\u003eMinX, column-\u003eClipRect.Min.x, column-\u003eClipRect.Max.x, column-\u003eClipRect.Max.x - column-\u003eClipRect.Min.x,"," column-\u003eContentMaxXFrozen - column-\u003eWorkMinX, column-\u003eContentMaxXUnfrozen - column-\u003eWorkMinX, column-\u003eContentMaxXHeadersUsed - column-\u003eWorkMinX, column-\u003eContentMaxXHeadersIdeal - column-\u003eWorkMinX,"," column-\u003eSortOrder, (column-\u003eSortDirection == ImGuiSortDirection_Ascending) ? \" (Asc)\" : (column-\u003eSortDirection == ImGuiSortDirection_Descending) ? \" (Des)\" : \"\", column-\u003eUserID, column-\u003eFlags,"," (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthStretch) ? \"WidthStretch \" : \"\","," (column-\u003eFlags \u0026 ImGuiTableColumnFlags_WidthFixed) ? \"WidthFixed \" : \"\","," (column-\u003eFlags \u0026 ImGuiTableColumnFlags_NoResize) ? \"NoResize \" : \"\");"," Bullet();"," Selectable(buf);"," if (IsItemHovered())"," {"," ImRect r(column-\u003eMinX, table-\u003eOuterRect.Min.y, column-\u003eMaxX, table-\u003eOuterRect.Max.y);"," GetForegroundDrawList()-\u003eAddRect(r.Min, r.Max, IM_COL32(255, 255, 0, 255));"," }"," }"," if (ImGuiTableSettings* settings = TableGetBoundSettings(table))"," DebugNodeTableSettings(settings);"," if (clear_settings)"," table-\u003eIsResetAllRequest = true;"," TreePop();","}","","void ImGui::DebugNodeTableSettings(ImGuiTableSettings* settings)","{"," if (!TreeNode((void*)(intptr_t)settings-\u003eID, \"Settings 0x%08X (%d columns)\", settings-\u003eID, settings-\u003eColumnsCount))"," return;"," BulletText(\"SaveFlags: 0x%08X\", settings-\u003eSaveFlags);"," BulletText(\"ColumnsCount: %d (max %d)\", settings-\u003eColumnsCount, settings-\u003eColumnsCountMax);"," for (int n = 0; n \u003c settings-\u003eColumnsCount; n++)"," {"," ImGuiTableColumnSettings* column_settings = \u0026settings-\u003eGetColumnSettings()[n];"," ImGuiSortDirection sort_dir = (column_settings-\u003eSortOrder != -1) ? (ImGuiSortDirection)column_settings-\u003eSortDirection : ImGuiSortDirection_None;"," BulletText(\"Column %d Order %d SortOrder %d %s Vis %d %s %7.3f UserID 0x%08X\","," n, column_settings-\u003eDisplayOrder, column_settings-\u003eSortOrder,"," (sort_dir == ImGuiSortDirection_Ascending) ? \"Asc\" : (sort_dir == ImGuiSortDirection_Descending) ? \"Des\" : \"---\","," column_settings-\u003eIsEnabled, column_settings-\u003eIsStretch ? \"Weight\" : \"Width \", column_settings-\u003eWidthOrWeight, column_settings-\u003eUserID);"," }"," TreePop();","}","","#else // #ifndef IMGUI_DISABLE_DEBUG_TOOLS","","void ImGui::DebugNodeTable(ImGuiTable*) {}","void ImGui::DebugNodeTableSettings(ImGuiTableSettings*) {}","","#endif","","","//-------------------------------------------------------------------------","// [SECTION] Columns, BeginColumns, EndColumns, etc.","// (This is a legacy API, prefer using BeginTable/EndTable!)","//-------------------------------------------------------------------------","// FIXME: sizing is lossy when columns width is very small (default width may turn negative etc.)","//-------------------------------------------------------------------------","// - SetWindowClipRectBeforeSetChannel() [Internal]","// - GetColumnIndex()","// - GetColumnsCount()","// - GetColumnOffset()","// - GetColumnWidth()","// - SetColumnOffset()","// - SetColumnWidth()","// - PushColumnClipRect() [Internal]","// - PushColumnsBackground() [Internal]","// - PopColumnsBackground() [Internal]","// - FindOrCreateColumns() [Internal]","// - GetColumnsID() [Internal]","// - BeginColumns()","// - NextColumn()","// - EndColumns()","// - Columns()","//-------------------------------------------------------------------------","","// [Internal] Small optimization to avoid calls to PopClipRect/SetCurrentChannel/PushClipRect in sequences,","// they would meddle many times with the underlying ImDrawCmd.","// Instead, we do a preemptive overwrite of clipping rectangle _without_ altering the command-buffer and let","// the subsequent single call to SetCurrentChannel() does it things once.","void ImGui::SetWindowClipRectBeforeSetChannel(ImGuiWindow* window, const ImRect\u0026 clip_rect)","{"," ImVec4 clip_rect_vec4 = clip_rect.ToVec4();"," window-\u003eClipRect = clip_rect;"," window-\u003eDrawList-\u003e_CmdHeader.ClipRect = clip_rect_vec4;"," window-\u003eDrawList-\u003e_ClipRectStack.Data[window-\u003eDrawList-\u003e_ClipRectStack.Size - 1] = clip_rect_vec4;","}","","int ImGui::GetColumnIndex()","{"," ImGuiWindow* window = GetCurrentWindowRead();"," return window-\u003eDC.CurrentColumns ? window-\u003eDC.CurrentColumns-\u003eCurrent : 0;","}","","int ImGui::GetColumnsCount()","{"," ImGuiWindow* window = GetCurrentWindowRead();"," return window-\u003eDC.CurrentColumns ? window-\u003eDC.CurrentColumns-\u003eCount : 1;","}","","float ImGui::GetColumnOffsetFromNorm(const ImGuiOldColumns* columns, float offset_norm)","{"," return offset_norm * (columns-\u003eOffMaxX - columns-\u003eOffMinX);","}","","float ImGui::GetColumnNormFromOffset(const ImGuiOldColumns* columns, float offset)","{"," return offset / (columns-\u003eOffMaxX - columns-\u003eOffMinX);","}","","static const float COLUMNS_HIT_RECT_HALF_THICKNESS = 4.0f;","","static float GetDraggedColumnOffset(ImGuiOldColumns* columns, int column_index)","{"," // Active (dragged) column always follow mouse. The reason we need this is that dragging a column to the right edge of an auto-resizing"," // window creates a feedback loop because we store normalized positions. So while dragging we enforce absolute positioning."," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," IM_ASSERT(column_index \u003e 0); // We are not supposed to drag column 0."," IM_ASSERT(g.ActiveId == columns-\u003eID + ImGuiID(column_index));",""," float x = g.IO.MousePos.x - g.ActiveIdClickOffset.x + ImTrunc(COLUMNS_HIT_RECT_HALF_THICKNESS * g.CurrentDpiScale) - window-\u003ePos.x;"," x = ImMax(x, ImGui::GetColumnOffset(column_index - 1) + g.Style.ColumnsMinSpacing);"," if ((columns-\u003eFlags \u0026 ImGuiOldColumnFlags_NoPreserveWidths))"," x = ImMin(x, ImGui::GetColumnOffset(column_index + 1) - g.Style.ColumnsMinSpacing);",""," return x;","}","","float ImGui::GetColumnOffset(int column_index)","{"," ImGuiWindow* window = GetCurrentWindowRead();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (columns == NULL)"," return 0.0f;",""," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;"," IM_ASSERT(column_index \u003c columns-\u003eColumns.Size);",""," const float t = columns-\u003eColumns[column_index].OffsetNorm;"," const float x_offset = ImLerp(columns-\u003eOffMinX, columns-\u003eOffMaxX, t);"," return x_offset;","}","","static float GetColumnWidthEx(ImGuiOldColumns* columns, int column_index, bool before_resize = false)","{"," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;",""," float offset_norm;"," if (before_resize)"," offset_norm = columns-\u003eColumns[column_index + 1].OffsetNormBeforeResize - columns-\u003eColumns[column_index].OffsetNormBeforeResize;"," else"," offset_norm = columns-\u003eColumns[column_index + 1].OffsetNorm - columns-\u003eColumns[column_index].OffsetNorm;"," return ImGui::GetColumnOffsetFromNorm(columns, offset_norm);","}","","float ImGui::GetColumnWidth(int column_index)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (columns == NULL)"," return GetContentRegionAvail().x;",""," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;"," return GetColumnOffsetFromNorm(columns, columns-\u003eColumns[column_index + 1].OffsetNorm - columns-\u003eColumns[column_index].OffsetNorm);","}","","void ImGui::SetColumnOffset(int column_index, float offset)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = g.CurrentWindow;"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," IM_ASSERT(columns != NULL);",""," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;"," IM_ASSERT(column_index \u003c columns-\u003eColumns.Size);",""," const bool preserve_width = !(columns-\u003eFlags \u0026 ImGuiOldColumnFlags_NoPreserveWidths) \u0026\u0026 (column_index \u003c columns-\u003eCount - 1);"," const float width = preserve_width ? GetColumnWidthEx(columns, column_index, columns-\u003eIsBeingResized) : 0.0f;",""," if (!(columns-\u003eFlags \u0026 ImGuiOldColumnFlags_NoForceWithinWindow))"," offset = ImMin(offset, columns-\u003eOffMaxX - g.Style.ColumnsMinSpacing * (columns-\u003eCount - column_index));"," columns-\u003eColumns[column_index].OffsetNorm = GetColumnNormFromOffset(columns, offset - columns-\u003eOffMinX);",""," if (preserve_width)"," SetColumnOffset(column_index + 1, offset + ImMax(g.Style.ColumnsMinSpacing, width));","}","","void ImGui::SetColumnWidth(int column_index, float width)","{"," ImGuiWindow* window = GetCurrentWindowRead();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," IM_ASSERT(columns != NULL);",""," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;"," SetColumnOffset(column_index + 1, GetColumnOffset(column_index) + width);","}","","void ImGui::PushColumnClipRect(int column_index)","{"," ImGuiWindow* window = GetCurrentWindowRead();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (column_index \u003c 0)"," column_index = columns-\u003eCurrent;",""," ImGuiOldColumnData* column = \u0026columns-\u003eColumns[column_index];"," PushClipRect(column-\u003eClipRect.Min, column-\u003eClipRect.Max, false);","}","","// Get into the columns background draw command (which is generally the same draw command as before we called BeginColumns)","void ImGui::PushColumnsBackground()","{"," ImGuiWindow* window = GetCurrentWindowRead();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (columns-\u003eCount == 1)"," return;",""," // Optimization: avoid SetCurrentChannel() + PushClipRect()"," columns-\u003eHostBackupClipRect = window-\u003eClipRect;"," SetWindowClipRectBeforeSetChannel(window, columns-\u003eHostInitialClipRect);"," columns-\u003eSplitter.SetCurrentChannel(window-\u003eDrawList, 0);","}","","void ImGui::PopColumnsBackground()","{"," ImGuiWindow* window = GetCurrentWindowRead();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (columns-\u003eCount == 1)"," return;",""," // Optimization: avoid PopClipRect() + SetCurrentChannel()"," SetWindowClipRectBeforeSetChannel(window, columns-\u003eHostBackupClipRect);"," columns-\u003eSplitter.SetCurrentChannel(window-\u003eDrawList, columns-\u003eCurrent + 1);","}","","ImGuiOldColumns* ImGui::FindOrCreateColumns(ImGuiWindow* window, ImGuiID id)","{"," // We have few columns per window so for now we don't need bother much with turning this into a faster lookup."," for (int n = 0; n \u003c window-\u003eColumnsStorage.Size; n++)"," if (window-\u003eColumnsStorage[n].ID == id)"," return \u0026window-\u003eColumnsStorage[n];",""," window-\u003eColumnsStorage.push_back(ImGuiOldColumns());"," ImGuiOldColumns* columns = \u0026window-\u003eColumnsStorage.back();"," columns-\u003eID = id;"," return columns;","}","","ImGuiID ImGui::GetColumnsID(const char* str_id, int columns_count)","{"," ImGuiWindow* window = GetCurrentWindow();",""," // Differentiate column ID with an arbitrary prefix for cases where users name their columns set the same as another widget."," // In addition, when an identifier isn't explicitly provided we include the number of columns in the hash to make it uniquer."," PushID(0x11223347 + (str_id ? 0 : columns_count));"," ImGuiID id = window-\u003eGetID(str_id ? str_id : \"columns\");"," PopID();",""," return id;","}","","void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiOldColumnFlags flags)","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = GetCurrentWindow();",""," IM_ASSERT(columns_count \u003e= 1);"," IM_ASSERT(window-\u003eDC.CurrentColumns == NULL); // Nested columns are currently not supported",""," // Acquire storage for the columns set"," ImGuiID id = GetColumnsID(str_id, columns_count);"," ImGuiOldColumns* columns = FindOrCreateColumns(window, id);"," IM_ASSERT(columns-\u003eID == id);"," columns-\u003eCurrent = 0;"," columns-\u003eCount = columns_count;"," columns-\u003eFlags = flags;"," window-\u003eDC.CurrentColumns = columns;"," window-\u003eDC.NavIsScrollPushableX = false; // Shortcut for NavUpdateCurrentWindowIsScrollPushableX();",""," columns-\u003eHostCursorPosY = window-\u003eDC.CursorPos.y;"," columns-\u003eHostCursorMaxPosX = window-\u003eDC.CursorMaxPos.x;"," columns-\u003eHostInitialClipRect = window-\u003eClipRect;"," columns-\u003eHostBackupParentWorkRect = window-\u003eParentWorkRect;"," window-\u003eParentWorkRect = window-\u003eWorkRect;",""," // Set state for first column"," // We aim so that the right-most column will have the same clipping width as other after being clipped by parent ClipRect"," const float column_padding = g.Style.ItemSpacing.x;"," const float half_clip_extend_x = ImTrunc(ImMax(window-\u003eWindowPadding.x * 0.5f, window-\u003eWindowBorderSize));"," const float max_1 = window-\u003eWorkRect.Max.x + column_padding - ImMax(column_padding - window-\u003eWindowPadding.x, 0.0f);"," const float max_2 = window-\u003eWorkRect.Max.x + half_clip_extend_x;"," columns-\u003eOffMinX = window-\u003eDC.Indent.x - column_padding + ImMax(column_padding - window-\u003eWindowPadding.x, 0.0f);"," columns-\u003eOffMaxX = ImMax(ImMin(max_1, max_2) - window-\u003ePos.x, columns-\u003eOffMinX + 1.0f);"," columns-\u003eLineMinY = columns-\u003eLineMaxY = window-\u003eDC.CursorPos.y;",""," // Clear data if columns count changed"," if (columns-\u003eColumns.Size != 0 \u0026\u0026 columns-\u003eColumns.Size != columns_count + 1)"," columns-\u003eColumns.resize(0);",""," // Initialize default widths"," columns-\u003eIsFirstFrame = (columns-\u003eColumns.Size == 0);"," if (columns-\u003eColumns.Size == 0)"," {"," columns-\u003eColumns.reserve(columns_count + 1);"," for (int n = 0; n \u003c columns_count + 1; n++)"," {"," ImGuiOldColumnData column;"," column.OffsetNorm = n / (float)columns_count;"," columns-\u003eColumns.push_back(column);"," }"," }",""," for (int n = 0; n \u003c columns_count; n++)"," {"," // Compute clipping rectangle"," ImGuiOldColumnData* column = \u0026columns-\u003eColumns[n];"," float clip_x1 = IM_ROUND(window-\u003ePos.x + GetColumnOffset(n));"," float clip_x2 = IM_ROUND(window-\u003ePos.x + GetColumnOffset(n + 1) - 1.0f);"," column-\u003eClipRect = ImRect(clip_x1, -FLT_MAX, clip_x2, +FLT_MAX);"," column-\u003eClipRect.ClipWithFull(window-\u003eClipRect);"," }",""," if (columns-\u003eCount \u003e 1)"," {"," columns-\u003eSplitter.Split(window-\u003eDrawList, 1 + columns-\u003eCount);"," columns-\u003eSplitter.SetCurrentChannel(window-\u003eDrawList, 1);"," PushColumnClipRect(0);"," }",""," // We don't generally store Indent.x inside ColumnsOffset because it may be manipulated by the user."," float offset_0 = GetColumnOffset(columns-\u003eCurrent);"," float offset_1 = GetColumnOffset(columns-\u003eCurrent + 1);"," float width = offset_1 - offset_0;"," PushItemWidth(width * 0.65f);"," window-\u003eDC.ColumnsOffset.x = ImMax(column_padding - window-\u003eWindowPadding.x, 0.0f);"," window-\u003eDC.CursorPos.x = IM_TRUNC(window-\u003ePos.x + window-\u003eDC.Indent.x + window-\u003eDC.ColumnsOffset.x);"," window-\u003eWorkRect.Max.x = window-\u003ePos.x + offset_1 - column_padding;"," window-\u003eWorkRect.Max.y = window-\u003eContentRegionRect.Max.y;","}","","void ImGui::NextColumn()","{"," ImGuiWindow* window = GetCurrentWindow();"," if (window-\u003eSkipItems || window-\u003eDC.CurrentColumns == NULL)"," return;",""," ImGuiContext\u0026 g = *GImGui;"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;",""," if (columns-\u003eCount == 1)"," {"," window-\u003eDC.CursorPos.x = IM_TRUNC(window-\u003ePos.x + window-\u003eDC.Indent.x + window-\u003eDC.ColumnsOffset.x);"," IM_ASSERT(columns-\u003eCurrent == 0);"," return;"," }",""," // Next column"," if (++columns-\u003eCurrent == columns-\u003eCount)"," columns-\u003eCurrent = 0;",""," PopItemWidth();",""," // Optimization: avoid PopClipRect() + SetCurrentChannel() + PushClipRect()"," // (which would needlessly attempt to update commands in the wrong channel, then pop or overwrite them),"," ImGuiOldColumnData* column = \u0026columns-\u003eColumns[columns-\u003eCurrent];"," SetWindowClipRectBeforeSetChannel(window, column-\u003eClipRect);"," columns-\u003eSplitter.SetCurrentChannel(window-\u003eDrawList, columns-\u003eCurrent + 1);",""," const float column_padding = g.Style.ItemSpacing.x;"," columns-\u003eLineMaxY = ImMax(columns-\u003eLineMaxY, window-\u003eDC.CursorPos.y);"," if (columns-\u003eCurrent \u003e 0)"," {"," // Columns 1+ ignore IndentX (by canceling it out)"," // FIXME-COLUMNS: Unnecessary, could be locked?"," window-\u003eDC.ColumnsOffset.x = GetColumnOffset(columns-\u003eCurrent) - window-\u003eDC.Indent.x + column_padding;"," }"," else"," {"," // New row/line: column 0 honor IndentX."," window-\u003eDC.ColumnsOffset.x = ImMax(column_padding - window-\u003eWindowPadding.x, 0.0f);"," window-\u003eDC.IsSameLine = false;"," columns-\u003eLineMinY = columns-\u003eLineMaxY;"," }"," window-\u003eDC.CursorPos.x = IM_TRUNC(window-\u003ePos.x + window-\u003eDC.Indent.x + window-\u003eDC.ColumnsOffset.x);"," window-\u003eDC.CursorPos.y = columns-\u003eLineMinY;"," window-\u003eDC.CurrLineSize = ImVec2(0.0f, 0.0f);"," window-\u003eDC.CurrLineTextBaseOffset = 0.0f;",""," // FIXME-COLUMNS: Share code with BeginColumns() - move code on columns setup."," float offset_0 = GetColumnOffset(columns-\u003eCurrent);"," float offset_1 = GetColumnOffset(columns-\u003eCurrent + 1);"," float width = offset_1 - offset_0;"," PushItemWidth(width * 0.65f);"," window-\u003eWorkRect.Max.x = window-\u003ePos.x + offset_1 - column_padding;","}","","void ImGui::EndColumns()","{"," ImGuiContext\u0026 g = *GImGui;"," ImGuiWindow* window = GetCurrentWindow();"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," IM_ASSERT(columns != NULL);",""," PopItemWidth();"," if (columns-\u003eCount \u003e 1)"," {"," PopClipRect();"," columns-\u003eSplitter.Merge(window-\u003eDrawList);"," }",""," const ImGuiOldColumnFlags flags = columns-\u003eFlags;"," columns-\u003eLineMaxY = ImMax(columns-\u003eLineMaxY, window-\u003eDC.CursorPos.y);"," window-\u003eDC.CursorPos.y = columns-\u003eLineMaxY;"," if (!(flags \u0026 ImGuiOldColumnFlags_GrowParentContentsSize))"," window-\u003eDC.CursorMaxPos.x = columns-\u003eHostCursorMaxPosX; // Restore cursor max pos, as columns don't grow parent",""," // Draw columns borders and handle resize"," // The IsBeingResized flag ensure we preserve pre-resize columns width so back-and-forth are not lossy"," bool is_being_resized = false;"," if (!(flags \u0026 ImGuiOldColumnFlags_NoBorder) \u0026\u0026 !window-\u003eSkipItems)"," {"," // We clip Y boundaries CPU side because very long triangles are mishandled by some GPU drivers."," const float y1 = ImMax(columns-\u003eHostCursorPosY, window-\u003eClipRect.Min.y);"," const float y2 = ImMin(window-\u003eDC.CursorPos.y, window-\u003eClipRect.Max.y);"," int dragging_column = -1;"," for (int n = 1; n \u003c columns-\u003eCount; n++)"," {"," ImGuiOldColumnData* column = \u0026columns-\u003eColumns[n];"," float x = window-\u003ePos.x + GetColumnOffset(n);"," const ImGuiID column_id = columns-\u003eID + ImGuiID(n);"," const float column_hit_hw = ImTrunc(COLUMNS_HIT_RECT_HALF_THICKNESS * g.CurrentDpiScale);"," const ImRect column_hit_rect(ImVec2(x - column_hit_hw, y1), ImVec2(x + column_hit_hw, y2));"," if (!ItemAdd(column_hit_rect, column_id, NULL, ImGuiItemFlags_NoNav))"," continue;",""," bool hovered = false, held = false;"," if (!(flags \u0026 ImGuiOldColumnFlags_NoResize))"," {"," ButtonBehavior(column_hit_rect, column_id, \u0026hovered, \u0026held);"," if (hovered || held)"," SetMouseCursor(ImGuiMouseCursor_ResizeEW);"," if (held \u0026\u0026 !(column-\u003eFlags \u0026 ImGuiOldColumnFlags_NoResize))"," dragging_column = n;"," }",""," // Draw column"," const ImU32 col = GetColorU32(held ? ImGuiCol_SeparatorActive : hovered ? ImGuiCol_SeparatorHovered : ImGuiCol_Separator);"," const float xi = IM_TRUNC(x);"," window-\u003eDrawList-\u003eAddLine(ImVec2(xi, y1 + 1.0f), ImVec2(xi, y2), col);"," }",""," // Apply dragging after drawing the column lines, so our rendered lines are in sync with how items were displayed during the frame."," if (dragging_column != -1)"," {"," if (!columns-\u003eIsBeingResized)"," for (int n = 0; n \u003c columns-\u003eCount + 1; n++)"," columns-\u003eColumns[n].OffsetNormBeforeResize = columns-\u003eColumns[n].OffsetNorm;"," columns-\u003eIsBeingResized = is_being_resized = true;"," float x = GetDraggedColumnOffset(columns, dragging_column);"," SetColumnOffset(dragging_column, x);"," }"," }"," columns-\u003eIsBeingResized = is_being_resized;",""," window-\u003eWorkRect = window-\u003eParentWorkRect;"," window-\u003eParentWorkRect = columns-\u003eHostBackupParentWorkRect;"," window-\u003eDC.CurrentColumns = NULL;"," window-\u003eDC.ColumnsOffset.x = 0.0f;"," window-\u003eDC.CursorPos.x = IM_TRUNC(window-\u003ePos.x + window-\u003eDC.Indent.x + window-\u003eDC.ColumnsOffset.x);"," NavUpdateCurrentWindowIsScrollPushableX();","}","","void ImGui::Columns(int columns_count, const char* id, bool borders)","{"," ImGuiWindow* window = GetCurrentWindow();"," IM_ASSERT(columns_count \u003e= 1);",""," ImGuiOldColumnFlags flags = (borders ? 0 : ImGuiOldColumnFlags_NoBorder);"," //flags |= ImGuiOldColumnFlags_NoPreserveWidths; // NB: Legacy behavior"," ImGuiOldColumns* columns = window-\u003eDC.CurrentColumns;"," if (columns != NULL \u0026\u0026 columns-\u003eCount == columns_count \u0026\u0026 columns-\u003eFlags == flags)"," return;",""," if (columns != NULL)"," EndColumns();",""," if (columns_count != 1)"," BeginColumns(id, columns_count, flags);","}","","//-------------------------------------------------------------------------","","#endif // #ifndef IMGUI_DISABLE"],"stylingDirectives":[[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,0,"pl-c"]],[[0,19,"pl-c"]],[[0,0,"pl-c"]],[[0,23,"pl-c"]],[[0,24,"pl-c"]],[[0,30,"pl-c"]],[[0,37,"pl-c"]],[[0,32,"pl-c"]],[[0,36,"pl-c"]],[[0,45,"pl-c"]],[[0,28,"pl-c"]],[[0,28,"pl-c"]],[[0,28,"pl-c"]],[[0,33,"pl-c"]],[[0,41,"pl-c"]],[[0,39,"pl-c"]],[[0,30,"pl-c"]],[[0,52,"pl-c"]],[[0,0,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[],[[0,24,"pl-c"],[0,2,"pl-c"]],[[0,139,"pl-c"],[0,2,"pl-c"]],[[0,128,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,23,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,71,"pl-c"],[0,2,"pl-c"]],[[0,77,"pl-c"],[0,2,"pl-c"]],[[0,74,"pl-c"],[0,2,"pl-c"]],[[0,67,"pl-c"],[0,2,"pl-c"]],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,98,"pl-c"],[0,2,"pl-c"]],[[0,124,"pl-c"],[0,2,"pl-c"]],[[0,124,"pl-c"],[0,2,"pl-c"]],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,218,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,88,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,113,"pl-c"],[0,2,"pl-c"]],[[0,126,"pl-c"],[0,2,"pl-c"]],[[0,122,"pl-c"],[0,2,"pl-c"]],[[0,69,"pl-c"],[0,2,"pl-c"]],[[0,63,"pl-c"],[0,2,"pl-c"]],[[0,70,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,80,"pl-c"],[0,2,"pl-c"]],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,67,"pl-c"],[0,2,"pl-c"]],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,77,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,15,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,91,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-c"],[0,2,"pl-c"]],[[0,144,"pl-c"],[0,2,"pl-c"]],[[0,49,"pl-c"],[0,2,"pl-c"]],[[0,80,"pl-c"],[0,2,"pl-c"]],[[0,154,"pl-c"],[0,2,"pl-c"]],[[0,103,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,71,"pl-c"],[0,2,"pl-c"]],[[0,101,"pl-c"],[0,2,"pl-c"]],[[0,136,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,72,"pl-c"],[0,2,"pl-c"]],[[0,73,"pl-c"],[0,2,"pl-c"]],[[0,192,"pl-c"],[0,2,"pl-c"]],[[0,236,"pl-c"],[0,2,"pl-c"]],[[0,142,"pl-c"],[0,2,"pl-c"]],[[0,142,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,23,"pl-c"],[0,2,"pl-c"]],[[0,27,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,102,"pl-c"],[0,2,"pl-c"]],[[0,170,"pl-c"],[0,2,"pl-c"]],[[0,207,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,11,"pl-c"],[0,2,"pl-c"]],[[0,119,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,117,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,88,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,82,"pl-c"],[0,2,"pl-c"]],[[0,67,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,95,"pl-c"],[0,2,"pl-c"]],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,131,"pl-c"],[0,2,"pl-c"]],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,164,"pl-c"],[0,2,"pl-c"]],[[0,166,"pl-c"],[0,2,"pl-c"]],[[0,148,"pl-c"],[0,2,"pl-c"]],[[0,168,"pl-c"],[0,2,"pl-c"]],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,56,"pl-c"],[0,2,"pl-c"]],[[0,138,"pl-c"],[0,2,"pl-c"]],[[0,149,"pl-c"],[0,2,"pl-c"]],[[0,120,"pl-c"],[0,2,"pl-c"]],[[0,159,"pl-c"],[0,2,"pl-c"]],[[0,129,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,111,"pl-c"],[0,2,"pl-c"]],[[0,85,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,140,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,103,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,90,"pl-c"],[0,2,"pl-c"]],[[0,135,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,106,"pl-c"],[0,2,"pl-c"]],[[0,111,"pl-c"],[0,2,"pl-c"]],[[0,49,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,94,"pl-c"],[0,2,"pl-c"]],[[0,163,"pl-c"],[0,2,"pl-c"]],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,54,"pl-c"],[0,2,"pl-c"]],[[0,226,"pl-c"],[0,2,"pl-c"]],[[0,173,"pl-c"],[0,2,"pl-c"]],[[0,168,"pl-c"],[0,2,"pl-c"]],[[0,194,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,160,"pl-c"],[0,2,"pl-c"]],[[0,149,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,42,"pl-c"],[0,2,"pl-c"]],[[0,103,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,24,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[1,3,"pl-k"]],[[1,7,"pl-k"],[8,31,"pl-en"]],[[1,6,"pl-k"]],[],[[1,7,"pl-k"]],[[1,7,"pl-k"],[8,35,"pl-en"]],[[1,6,"pl-k"]],[],[[1,8,"pl-k"],[9,18,"pl-s"],[9,10,"pl-pds"],[17,18,"pl-pds"]],[[1,7,"pl-k"]],[[1,8,"pl-k"],[9,27,"pl-s"],[9,10,"pl-pds"],[26,27,"pl-pds"]],[],[[0,18,"pl-c"],[0,2,"pl-c"]],[[1,8,"pl-k"],[9,19,"pl-s"],[9,10,"pl-pds"],[18,19,"pl-pds"],[24,35,"pl-c"],[24,26,"pl-c"]],[],[[0,25,"pl-c"],[0,2,"pl-c"]],[[1,6,"pl-k"]],[[1,7,"pl-k"],[36,71,"pl-c"],[36,38,"pl-c"]],[[1,7,"pl-k"],[36,131,"pl-c"],[36,38,"pl-c"]],[[1,3,"pl-k"],[42,68,"pl-c"],[42,44,"pl-c"]],[[1,7,"pl-k"],[36,103,"pl-c"],[36,38,"pl-c"]],[[1,6,"pl-k"]],[[1,7,"pl-k"],[36,252,"pl-c"],[36,38,"pl-c"]],[[1,7,"pl-k"],[36,131,"pl-c"],[36,38,"pl-c"]],[[1,6,"pl-k"]],[],[[0,39,"pl-c"],[0,2,"pl-c"]],[[1,3,"pl-k"]],[[1,3,"pl-k"]],[[1,7,"pl-k"],[68,288,"pl-c"],[68,70,"pl-c"]],[[1,6,"pl-k"]],[[1,7,"pl-k"],[68,107,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,157,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,200,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,148,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,230,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,118,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,182,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,247,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,170,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,184,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,140,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,129,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,158,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,112,"pl-c"],[68,70,"pl-c"]],[[1,5,"pl-k"]],[[1,7,"pl-k"],[68,130,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,132,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,134,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,158,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"],[68,185,"pl-c"],[68,70,"pl-c"]],[[1,7,"pl-k"]],[[1,7,"pl-k"],[68,233,"pl-c"],[68,70,"pl-c"]],[[1,6,"pl-k"]],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,30,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,31,"pl-c"],[0,2,"pl-c"]],[[0,31,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c"],[0,2,"pl-c"]],[[0,30,"pl-c"],[0,2,"pl-c"]],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,35,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,15,"pl-c"],[0,2,"pl-c"]],[[0,23,"pl-c"],[0,2,"pl-c"]],[[0,29,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,16,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,16,"pl-k"],[42,43,"pl-c1"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,16,"pl-k"],[49,50,"pl-c1"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,16,"pl-k"],[45,46,"pl-c1"],[68,144,"pl-c"],[68,70,"pl-c"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,18,"pl-k"],[59,60,"pl-c1"],[61,63,"pl-c1"],[68,166,"pl-c"],[68,70,"pl-c"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,18,"pl-k"],[59,60,"pl-c1"],[61,63,"pl-c1"],[68,100,"pl-c"],[68,70,"pl-c"]],[[0,6,"pl-k"],[7,12,"pl-k"],[13,18,"pl-k"],[59,60,"pl-c1"],[61,64,"pl-c1"],[68,187,"pl-c"],[68,70,"pl-c"]],[],[[0,9,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[23,36,"pl-en"]],[],[[4,46,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[49,50,"pl-c1"]],[[70,75,"pl-smi"]],[],[[4,91,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[],[[4,51,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[],[[4,90,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[],[[4,83,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[],[[4,70,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[133,134,"pl-c1"]],[],[],[[4,102,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[22,32,"pl-smi"],[34,39,"pl-smi"]],[],[],[[4,10,"pl-k"]],[],[],[[12,32,"pl-en"]],[],[],[[4,10,"pl-k"],[13,19,"pl-smi"],[20,28,"pl-c1"]],[],[],[[0,53,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[8,25,"pl-en"],[26,31,"pl-k"],[32,36,"pl-k"],[46,49,"pl-k"],[88,93,"pl-k"],[114,119,"pl-k"]],[],[[17,22,"pl-c1"]],[[4,10,"pl-k"],[11,23,"pl-c1"]],[],[],[[0,4,"pl-k"],[8,27,"pl-en"],[28,33,"pl-k"],[34,38,"pl-k"],[58,61,"pl-k"],[100,105,"pl-k"],[126,131,"pl-k"]],[],[],[[32,48,"pl-c1"]],[[4,6,"pl-k"],[22,31,"pl-smi"],[33,148,"pl-c"],[33,35,"pl-c"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,13,"pl-c1"],[30,31,"pl-c1"]],[[4,6,"pl-k"]],[[8,17,"pl-c1"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[],[[4,125,"pl-c"],[4,6,"pl-c"]],[[4,77,"pl-c"],[4,6,"pl-c"]],[[4,150,"pl-c"],[4,6,"pl-c"]],[[4,160,"pl-c"],[4,6,"pl-c"]],[[4,72,"pl-c"],[4,6,"pl-c"]],[[4,199,"pl-c"],[4,6,"pl-c"]],[[4,80,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,14,"pl-k"],[99,100,"pl-c1"]],[[4,9,"pl-k"],[30,51,"pl-c1"]],[[4,9,"pl-k"],[37,44,"pl-c1"],[45,57,"pl-c1"],[70,75,"pl-c1"],[87,88,"pl-smi"],[90,91,"pl-c1"],[92,94,"pl-c1"],[116,121,"pl-c1"],[133,134,"pl-smi"],[136,137,"pl-c1"],[138,140,"pl-c1"],[144,145,"pl-c1"],[146,148,"pl-c1"]],[[4,9,"pl-k"],[17,27,"pl-smi"],[42,44,"pl-smi"],[45,54,"pl-smi"],[70,72,"pl-smi"],[73,82,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[63,77,"pl-smi"],[80,81,"pl-c1"],[101,115,"pl-smi"],[118,119,"pl-c1"],[122,167,"pl-c"],[122,124,"pl-c"]],[[4,6,"pl-k"],[28,39,"pl-c1"],[52,53,"pl-c1"]],[],[[8,16,"pl-c1"]],[[8,15,"pl-c1"]],[[10,24,"pl-smi"],[25,35,"pl-c1"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[],[],[[4,44,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[10,27,"pl-smi"]],[[8,22,"pl-c1"]],[],[[4,36,"pl-c"],[4,6,"pl-c"]],[[26,32,"pl-smi"],[33,46,"pl-c1"]],[],[[4,32,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,13,"pl-k"],[28,34,"pl-smi"],[35,43,"pl-c1"]],[[4,6,"pl-k"],[12,33,"pl-smi"],[38,52,"pl-smi"],[53,57,"pl-smi"]],[[10,24,"pl-smi"],[25,31,"pl-c1"],[34,55,"pl-smi"],[57,75,"pl-c1"]],[[43,51,"pl-smi"],[57,71,"pl-smi"],[74,95,"pl-smi"],[98,99,"pl-c1"]],[[15,25,"pl-smi"]],[[11,23,"pl-smi"],[34,42,"pl-smi"],[44,56,"pl-smi"]],[[11,23,"pl-smi"],[25,30,"pl-c1"]],[],[[4,16,"pl-c"],[4,6,"pl-c"]],[[11,32,"pl-smi"],[76,77,"pl-c1"]],[[12,25,"pl-c1"]],[],[[4,17,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,13,"pl-k"],[45,60,"pl-smi"]],[[4,9,"pl-k"],[10,13,"pl-k"],[56,66,"pl-smi"],[70,71,"pl-c1"],[81,96,"pl-smi"],[99,100,"pl-c1"]],[[4,9,"pl-k"],[50,55,"pl-smi"]],[[11,13,"pl-smi"]],[[11,16,"pl-smi"]],[[11,26,"pl-smi"],[31,41,"pl-smi"]],[[11,22,"pl-smi"],[32,43,"pl-smi"]],[[11,23,"pl-smi"]],[[11,25,"pl-smi"],[28,33,"pl-c1"]],[[11,21,"pl-smi"]],[[11,19,"pl-smi"],[42,44,"pl-smi"],[45,60,"pl-smi"]],[[15,28,"pl-smi"]],[],[[4,65,"pl-c"],[4,6,"pl-c"]],[],[[11,26,"pl-smi"]],[[4,6,"pl-k"],[22,23,"pl-c1"]],[],[[8,17,"pl-c1"],[25,37,"pl-smi"],[58,136,"pl-s"],[58,59,"pl-pds"],[135,136,"pl-pds"]],[[8,10,"pl-k"],[19,36,"pl-smi"],[37,41,"pl-smi"]],[[19,36,"pl-smi"],[37,46,"pl-c1"],[47,69,"pl-c1"]],[[22,35,"pl-c1"],[49,62,"pl-c1"],[63,76,"pl-s"],[63,64,"pl-pds"],[75,76,"pl-pds"],[78,82,"pl-c1"],[90,153,"pl-c"],[90,92,"pl-c"]],[],[[4,8,"pl-k"]],[],[],[],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[20,35,"pl-smi"]],[],[[4,83,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,103,"pl-c"],[8,10,"pl-c"]],[[8,116,"pl-c"],[8,10,"pl-c"]],[[15,36,"pl-smi"]],[[8,10,"pl-k"]],[[34,35,"pl-smi"]],[],[[8,115,"pl-c"],[8,10,"pl-c"]],[[8,119,"pl-c"],[8,10,"pl-c"]],[[8,118,"pl-c"],[8,10,"pl-c"]],[[8,85,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[63,64,"pl-c1"],[65,67,"pl-c1"]],[[34,35,"pl-smi"]],[],[[8,10,"pl-k"],[34,35,"pl-smi"],[72,73,"pl-smi"]],[[12,36,"pl-c1"],[37,43,"pl-c1"],[66,67,"pl-smi"],[103,104,"pl-smi"],[107,108,"pl-c1"],[109,111,"pl-c1"],[135,136,"pl-smi"],[172,173,"pl-smi"],[176,177,"pl-c1"],[178,180,"pl-c1"]],[],[[8,49,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[86,87,"pl-c1"]],[[12,14,"pl-k"],[19,33,"pl-smi"],[34,42,"pl-smi"],[84,85,"pl-c1"]],[[16,35,"pl-c1"],[36,42,"pl-c1"],[43,44,"pl-c1"],[45,47,"pl-c1"],[49,50,"pl-c1"],[51,53,"pl-c1"]],[],[[8,75,"pl-c"],[8,10,"pl-c"]],[[47,61,"pl-smi"],[62,70,"pl-smi"],[117,131,"pl-smi"],[132,142,"pl-smi"]],[[49,63,"pl-smi"],[64,72,"pl-smi"],[120,134,"pl-smi"],[135,146,"pl-smi"]],[[8,10,"pl-k"]],[],[[8,20,"pl-c1"],[51,58,"pl-c1"]],[[15,26,"pl-smi"],[31,44,"pl-smi"]],[[15,23,"pl-smi"],[33,44,"pl-smi"],[46,54,"pl-smi"]],[[15,24,"pl-smi"],[34,45,"pl-smi"],[47,51,"pl-c1"]],[[15,24,"pl-smi"],[34,45,"pl-smi"],[47,56,"pl-smi"]],[[8,17,"pl-c1"],[25,36,"pl-smi"],[38,51,"pl-smi"],[52,53,"pl-smi"],[57,58,"pl-c1"],[59,61,"pl-c1"],[72,83,"pl-smi"],[85,98,"pl-smi"],[99,100,"pl-smi"],[104,105,"pl-c1"],[106,108,"pl-c1"],[119,130,"pl-smi"],[132,148,"pl-smi"],[152,153,"pl-c1"],[154,156,"pl-c1"]],[],[[8,50,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,30,"pl-smi"],[32,41,"pl-smi"]],[[19,30,"pl-smi"],[32,41,"pl-smi"],[44,49,"pl-c1"]],[],[[8,162,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[27,28,"pl-c1"]],[],[[19,36,"pl-smi"],[46,63,"pl-smi"]],[[19,36,"pl-smi"],[39,44,"pl-c1"]],[],[[15,32,"pl-smi"],[43,54,"pl-smi"],[56,66,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[8,72,"pl-c"],[8,10,"pl-c"]],[[8,158,"pl-c"],[8,10,"pl-c"]],[[15,23,"pl-smi"],[33,42,"pl-smi"],[52,61,"pl-smi"]],[[15,32,"pl-smi"],[42,59,"pl-smi"],[62,67,"pl-c1"]],[],[],[[4,77,"pl-c"],[4,6,"pl-c"]],[[4,18,"pl-c1"]],[[4,6,"pl-k"],[22,23,"pl-c1"]],[[8,22,"pl-c1"],[37,137,"pl-c"],[37,39,"pl-c"]],[],[[4,58,"pl-c"],[4,6,"pl-c"]],[[39,50,"pl-smi"]],[[11,22,"pl-smi"],[39,41,"pl-smi"],[42,48,"pl-smi"],[49,50,"pl-smi"]],[[11,23,"pl-smi"],[40,48,"pl-smi"]],[[11,24,"pl-smi"],[41,50,"pl-smi"]],[[15,33,"pl-smi"],[50,58,"pl-smi"]],[[15,39,"pl-smi"],[56,70,"pl-smi"]],[[15,38,"pl-smi"],[55,57,"pl-smi"],[58,71,"pl-smi"]],[[15,37,"pl-smi"],[54,56,"pl-smi"],[57,69,"pl-smi"]],[[15,37,"pl-smi"],[54,56,"pl-smi"],[57,69,"pl-smi"]],[[15,37,"pl-smi"],[54,56,"pl-smi"],[57,69,"pl-smi"]],[[15,34,"pl-smi"],[51,53,"pl-smi"],[54,63,"pl-smi"]],[[15,43,"pl-smi"],[60,62,"pl-smi"],[63,77,"pl-smi"],[78,82,"pl-smi"]],[[18,20,"pl-smi"],[21,33,"pl-smi"],[50,52,"pl-smi"],[53,65,"pl-smi"],[68,74,"pl-c1"],[75,76,"pl-c1"],[77,79,"pl-c1"],[81,82,"pl-c1"],[83,85,"pl-c1"]],[],[[4,93,"pl-c"],[4,6,"pl-c"]],[[4,127,"pl-c"],[4,6,"pl-c"]],[[4,127,"pl-c"],[4,6,"pl-c"]],[[4,107,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,134,"pl-c"],[8,10,"pl-c"]],[[8,125,"pl-c"],[8,10,"pl-c"]],[[8,48,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"]],[],[[19,31,"pl-smi"],[32,35,"pl-smi"],[36,37,"pl-smi"],[40,45,"pl-c1"],[53,65,"pl-smi"],[66,69,"pl-smi"],[70,71,"pl-smi"],[100,112,"pl-smi"],[113,116,"pl-smi"],[117,118,"pl-smi"]],[[12,14,"pl-k"],[30,45,"pl-smi"],[49,50,"pl-c1"],[51,53,"pl-c1"]],[[23,35,"pl-smi"],[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[57,69,"pl-smi"],[70,73,"pl-smi"],[74,75,"pl-smi"],[104,116,"pl-smi"],[117,120,"pl-smi"],[121,122,"pl-smi"]],[],[[8,10,"pl-k"]],[],[[19,31,"pl-smi"],[32,35,"pl-smi"],[36,37,"pl-smi"],[40,45,"pl-c1"],[53,65,"pl-smi"],[66,69,"pl-smi"],[70,71,"pl-smi"],[100,112,"pl-smi"],[113,116,"pl-smi"],[117,118,"pl-smi"]],[[12,14,"pl-k"],[30,45,"pl-smi"],[49,50,"pl-c1"],[51,53,"pl-c1"]],[[23,35,"pl-smi"],[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[57,69,"pl-smi"],[70,73,"pl-smi"],[74,75,"pl-smi"],[104,116,"pl-smi"],[117,120,"pl-smi"],[121,122,"pl-smi"]],[],[],[],[[4,26,"pl-c"],[4,6,"pl-c"]],[[4,73,"pl-c"],[4,6,"pl-c"]],[[4,73,"pl-c"],[4,6,"pl-c"]],[[4,73,"pl-c"],[4,6,"pl-c"]],[[4,73,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,14,"pl-k"],[69,74,"pl-c1"],[115,119,"pl-c1"],[165,166,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[69,74,"pl-c1"],[77,81,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[105,106,"pl-c1"],[107,109,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[100,101,"pl-c1"],[107,112,"pl-smi"],[113,124,"pl-smi"],[125,126,"pl-smi"],[129,130,"pl-c1"],[131,133,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[100,101,"pl-c1"],[107,112,"pl-smi"],[113,124,"pl-smi"],[125,126,"pl-smi"],[129,130,"pl-c1"],[131,133,"pl-c1"]],[[11,24,"pl-smi"]],[[11,24,"pl-smi"]],[[11,23,"pl-smi"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[105,106,"pl-c1"],[107,109,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[57,62,"pl-smi"],[63,74,"pl-smi"],[75,76,"pl-smi"],[79,80,"pl-c1"],[81,83,"pl-c1"]],[[11,24,"pl-smi"],[88,100,"pl-smi"]],[],[[11,24,"pl-smi"],[28,29,"pl-c1"]],[[11,21,"pl-smi"],[25,26,"pl-c1"]],[[11,28,"pl-smi"],[31,32,"pl-c1"]],[[11,23,"pl-smi"]],[[11,24,"pl-smi"],[67,75,"pl-smi"],[92,100,"pl-smi"]],[[11,24,"pl-smi"],[25,33,"pl-c1"],[41,49,"pl-smi"],[56,92,"pl-c"],[56,58,"pl-c"]],[[11,24,"pl-smi"],[25,37,"pl-c1"],[45,57,"pl-smi"]],[[11,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[75,80,"pl-c1"],[88,101,"pl-smi"],[102,105,"pl-smi"],[106,107,"pl-smi"],[123,131,"pl-smi"],[132,135,"pl-smi"],[136,137,"pl-smi"],[148,160,"pl-smi"],[161,164,"pl-smi"],[165,166,"pl-smi"]],[],[[11,19,"pl-smi"],[29,37,"pl-smi"],[47,55,"pl-smi"],[56,59,"pl-smi"],[60,61,"pl-smi"],[63,88,"pl-c"],[63,65,"pl-c"]],[[11,26,"pl-smi"],[29,30,"pl-c1"],[31,33,"pl-c1"],[35,83,"pl-c"],[35,37,"pl-c"]],[[11,26,"pl-smi"],[29,30,"pl-c1"],[31,33,"pl-c1"]],[[11,28,"pl-smi"],[38,53,"pl-smi"],[56,57,"pl-c1"],[59,116,"pl-c"],[59,61,"pl-c"]],[[11,31,"pl-smi"],[41,59,"pl-smi"],[62,63,"pl-c1"]],[[11,25,"pl-smi"],[28,32,"pl-c1"]],[[11,27,"pl-smi"],[37,55,"pl-smi"],[58,59,"pl-c1"]],[[4,6,"pl-k"],[32,33,"pl-c1"],[38,48,"pl-smi"]],[[15,32,"pl-smi"],[35,40,"pl-c1"]],[[11,30,"pl-smi"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[[15,38,"pl-smi"],[41,42,"pl-c1"],[43,45,"pl-c1"]],[],[[4,118,"pl-c"],[4,6,"pl-c"]],[[11,28,"pl-smi"],[31,42,"pl-c1"]],[[11,27,"pl-smi"],[30,41,"pl-c1"]],[],[[4,25,"pl-c"],[4,6,"pl-c"]],[[6,18,"pl-smi"]],[[18,20,"pl-smi"],[21,41,"pl-smi"],[44,49,"pl-c1"],[51,109,"pl-c"],[51,53,"pl-c"]],[[18,20,"pl-smi"],[21,36,"pl-smi"]],[[4,6,"pl-k"],[38,110,"pl-c"],[38,40,"pl-c"]],[[22,24,"pl-smi"],[25,40,"pl-smi"]],[],[[4,6,"pl-k"],[99,100,"pl-c1"]],[[15,41,"pl-smi"],[44,48,"pl-c1"]],[],[[4,31,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[23,43,"pl-smi"],[44,48,"pl-smi"]],[[10,30,"pl-smi"],[31,37,"pl-c1"],[50,51,"pl-c1"],[54,55,"pl-c1"],[56,58,"pl-c1"]],[[6,26,"pl-smi"],[41,46,"pl-k"],[49,53,"pl-smi"]],[[15,29,"pl-smi"],[33,38,"pl-k"],[41,45,"pl-smi"]],[[11,26,"pl-smi"],[29,34,"pl-c1"]],[],[[4,64,"pl-c"],[4,6,"pl-c"]],[[48,52,"pl-c1"]],[[4,8,"pl-k"],[33,37,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[41,48,"pl-smi"],[49,53,"pl-c1"]],[[4,6,"pl-k"],[29,30,"pl-c1"]],[],[[8,67,"pl-c"],[8,10,"pl-c"]],[[41,48,"pl-smi"],[49,53,"pl-smi"]],[[38,45,"pl-smi"]],[[15,22,"pl-smi"],[25,29,"pl-c1"]],[],[[4,6,"pl-k"],[15,22,"pl-smi"],[26,30,"pl-c1"]],[],[[8,28,"pl-c1"]],[[15,29,"pl-smi"],[39,60,"pl-smi"],[63,67,"pl-c1"]],[],[[4,6,"pl-k"],[15,32,"pl-smi"]],[[8,26,"pl-c1"]],[[4,6,"pl-k"],[15,29,"pl-smi"]],[],[[8,21,"pl-c"],[8,10,"pl-c"]],[[15,29,"pl-smi"],[33,34,"pl-c1"]],[[15,31,"pl-smi"],[34,38,"pl-c1"]],[[15,30,"pl-smi"],[33,37,"pl-c1"],[39,106,"pl-c"],[39,41,"pl-c"]],[[15,33,"pl-smi"],[37,38,"pl-c1"]],[[15,33,"pl-smi"],[37,38,"pl-c1"]],[[15,28,"pl-smi"],[38,51,"pl-smi"],[61,78,"pl-smi"],[82,83,"pl-c1"]],[[15,34,"pl-smi"],[38,39,"pl-c1"]],[[15,32,"pl-smi"],[42,61,"pl-smi"],[65,66,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"]],[],[[47,54,"pl-smi"]],[[12,14,"pl-k"]],[],[[16,81,"pl-c"],[16,18,"pl-c"]],[],[],[[12,16,"pl-k"]],[],[[16,21,"pl-k"],[43,52,"pl-smi"]],[[26,42,"pl-c1"]],[[24,33,"pl-smi"]],[[24,43,"pl-smi"],[46,50,"pl-c1"],[52,162,"pl-c"],[52,54,"pl-c"]],[[24,33,"pl-smi"],[44,57,"pl-smi"],[68,90,"pl-smi"],[93,97,"pl-c1"]],[],[[20,32,"pl-smi"],[42,61,"pl-smi"]],[],[],[[4,6,"pl-k"]],[[8,15,"pl-c1"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,36,"pl-smi"]],[[8,25,"pl-c1"]],[],[[4,29,"pl-c"],[4,6,"pl-c"]],[[4,122,"pl-c"],[4,6,"pl-c"]],[[4,133,"pl-c"],[4,6,"pl-c"]],[[4,130,"pl-c"],[4,6,"pl-c"]],[[4,114,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[39,47,"pl-smi"],[49,81,"pl-c"],[49,51,"pl-c"]],[[4,6,"pl-k"],[15,23,"pl-smi"],[27,28,"pl-c1"],[29,31,"pl-c1"],[42,50,"pl-smi"]],[],[[8,13,"pl-k"],[14,19,"pl-k"],[63,71,"pl-smi"]],[[8,161,"pl-c"],[8,10,"pl-c"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"]],[[19,26,"pl-smi"],[30,42,"pl-smi"],[52,59,"pl-smi"],[63,75,"pl-smi"]],[],[[11,19,"pl-smi"]],[],[[4,116,"pl-c"],[4,6,"pl-c"]],[[4,118,"pl-c"],[4,6,"pl-c"]],[[4,117,"pl-c"],[4,6,"pl-c"]],[[18,27,"pl-smi"],[30,34,"pl-c1"]],[],[[4,18,"pl-c"],[4,6,"pl-c"]],[[4,140,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,27,"pl-smi"],[28,31,"pl-smi"],[32,36,"pl-smi"],[39,40,"pl-c1"]],[[15,27,"pl-smi"],[28,31,"pl-smi"],[32,38,"pl-c1"],[39,40,"pl-c1"]],[],[[4,55,"pl-c"],[4,6,"pl-c"]],[[4,27,"pl-c1"]],[],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,70,"pl-c"],[0,2,"pl-c"]],[[0,74,"pl-c"],[0,2,"pl-c"]],[[0,43,"pl-c"],[0,2,"pl-c"]],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,108,"pl-c"],[0,2,"pl-c"]],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,136,"pl-c"],[0,2,"pl-c"]],[[0,54,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,32,"pl-en"],[52,55,"pl-k"]],[],[[4,44,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,13,"pl-k"],[40,43,"pl-k"],[44,75,"pl-c1"]],[[20,21,"pl-c1"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[46,52,"pl-k"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[46,52,"pl-k"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[46,52,"pl-k"],[74,75,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[24,25,"pl-c1"]],[[23,30,"pl-c1"]],[[11,18,"pl-smi"],[21,29,"pl-c1"],[45,64,"pl-c1"]],[[4,10,"pl-c1"],[18,25,"pl-smi"],[27,28,"pl-c1"],[45,64,"pl-c1"]],[[19,34,"pl-c1"],[42,49,"pl-smi"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[38,45,"pl-smi"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[38,57,"pl-smi"]],[[19,26,"pl-c1"],[27,28,"pl-c1"],[38,49,"pl-smi"]],[[11,36,"pl-smi"],[62,77,"pl-c1"],[78,79,"pl-c1"]],[[11,29,"pl-smi"],[55,70,"pl-c1"],[71,72,"pl-c1"]],[[11,29,"pl-smi"],[55,70,"pl-c1"],[71,72,"pl-c1"]],[],[],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,35,"pl-en"]],[],[[4,30,"pl-c"],[4,6,"pl-c"]],[[4,80,"pl-c"],[4,6,"pl-c"]],[[4,82,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,30,"pl-smi"],[34,35,"pl-c1"]],[],[[8,10,"pl-k"],[19,32,"pl-smi"],[37,38,"pl-c1"],[49,71,"pl-smi"]],[[12,31,"pl-c1"],[39,52,"pl-smi"],[61,83,"pl-smi"]],[[15,32,"pl-smi"],[42,55,"pl-smi"]],[[15,37,"pl-smi"]],[[15,28,"pl-smi"],[32,33,"pl-c1"]],[],[[8,131,"pl-c"],[8,10,"pl-c"]],[[8,145,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,38,"pl-smi"],[43,44,"pl-c1"]],[],[[12,31,"pl-c1"],[39,58,"pl-smi"],[67,74,"pl-smi"],[82,101,"pl-smi"],[103,112,"pl-smi"]],[[19,38,"pl-smi"],[42,43,"pl-c1"]],[],[],[],[[4,32,"pl-c"],[4,6,"pl-c"]],[[4,69,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,30,"pl-smi"],[34,35,"pl-c1"]],[],[[8,10,"pl-k"],[19,35,"pl-smi"],[40,41,"pl-c1"],[52,65,"pl-smi"],[70,71,"pl-c1"]],[[19,32,"pl-smi"],[36,37,"pl-c1"]],[[15,31,"pl-smi"],[35,36,"pl-c1"]],[[8,10,"pl-k"],[19,32,"pl-smi"],[37,38,"pl-c1"],[49,65,"pl-smi"],[69,70,"pl-c1"]],[],[[12,66,"pl-c"],[12,14,"pl-c"]],[[12,83,"pl-c"],[12,14,"pl-c"]],[[12,71,"pl-c"],[12,14,"pl-c"]],[[12,67,"pl-c"],[12,14,"pl-c"]],[[12,17,"pl-k"],[18,21,"pl-k"],[43,59,"pl-smi"]],[[12,21,"pl-c1"],[38,39,"pl-c1"],[59,60,"pl-c1"]],[[12,21,"pl-c1"],[29,34,"pl-smi"]],[[51,58,"pl-smi"],[66,79,"pl-smi"]],[[51,58,"pl-smi"],[76,77,"pl-c1"],[93,110,"pl-smi"],[125,142,"pl-smi"]],[[12,21,"pl-c1"]],[[12,17,"pl-k"],[18,21,"pl-k"],[46,58,"pl-smi"]],[[12,17,"pl-k"],[18,21,"pl-k"],[46,58,"pl-smi"]],[[24,36,"pl-smi"]],[[12,15,"pl-k"],[17,20,"pl-k"]],[[23,30,"pl-smi"],[38,57,"pl-smi"],[68,80,"pl-smi"]],[[12,21,"pl-c1"],[34,46,"pl-smi"]],[],[[12,131,"pl-c"],[12,14,"pl-c"]],[[12,15,"pl-k"],[17,20,"pl-k"],[32,33,"pl-c1"],[53,65,"pl-smi"]],[[23,42,"pl-smi"],[50,57,"pl-smi"],[68,80,"pl-smi"]],[[19,35,"pl-smi"],[38,39,"pl-c1"]],[[19,34,"pl-smi"],[37,41,"pl-c1"]],[],[],[],[[4,41,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,41,"pl-smi"]],[],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"],[35,47,"pl-smi"]],[[19,38,"pl-smi"],[51,58,"pl-smi"],[62,74,"pl-smi"]],[[15,41,"pl-smi"],[44,49,"pl-c1"]],[[15,30,"pl-smi"],[33,37,"pl-c1"]],[],[],[],[[0,89,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[7,11,"pl-k"],[12,33,"pl-en"]],[],[],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[54,55,"pl-c1"]],[],[[8,13,"pl-k"],[60,65,"pl-smi"]],[[8,10,"pl-k"]],[],[[8,12,"pl-k"]],[],[],[[4,8,"pl-k"]],[],[[8,17,"pl-c1"],[18,32,"pl-c1"],[77,118,"pl-c"],[77,79,"pl-c"]],[],[],[[4,13,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[16,21,"pl-smi"],[54,55,"pl-c1"]],[],[],[[4,14,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[],[[4,18,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[55,56,"pl-c1"]],[[25,32,"pl-smi"],[33,47,"pl-c1"],[59,60,"pl-c1"]],[],[[4,16,"pl-c"],[4,6,"pl-c"]],[[4,58,"pl-c"],[4,6,"pl-c"]],[[4,53,"pl-c"],[4,6,"pl-c"]],[[4,116,"pl-c"],[4,6,"pl-c"]],[],[[4,28,"pl-c"],[4,6,"pl-c"]],[[12,17,"pl-smi"],[37,42,"pl-smi"]],[],[[4,57,"pl-c"],[4,6,"pl-c"]],[[12,36,"pl-smi"],[47,70,"pl-smi"],[81,104,"pl-smi"],[107,108,"pl-c1"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,11,"pl-k"],[20,21,"pl-c1"],[30,31,"pl-c1"],[40,41,"pl-c1"]],[[8,10,"pl-k"],[68,69,"pl-c1"],[125,126,"pl-c1"],[138,139,"pl-c1"],[225,226,"pl-c1"]],[[8,10,"pl-k"],[68,69,"pl-c1"],[125,126,"pl-c1"],[138,139,"pl-c1"],[225,226,"pl-c1"]],[[8,10,"pl-k"],[68,69,"pl-c1"],[125,126,"pl-c1"],[138,139,"pl-c1"],[225,226,"pl-c1"]],[[8,10,"pl-k"],[68,69,"pl-c1"],[125,126,"pl-c1"],[138,139,"pl-c1"],[225,226,"pl-c1"]],[[8,10,"pl-k"],[20,25,"pl-smi"],[70,71,"pl-c1"],[83,84,"pl-c1"]],[[16,39,"pl-smi"]],[[16,39,"pl-smi"]],[[16,40,"pl-smi"]],[[8,42,"pl-c1"]],[],[],[],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,142,"pl-c"],[0,2,"pl-c"]],[[0,113,"pl-c"],[0,2,"pl-c"]],[[0,135,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[],[[4,13,"pl-c1"],[21,35,"pl-smi"],[39,44,"pl-c1"]],[],[[4,9,"pl-k"],[56,61,"pl-smi"]],[[11,32,"pl-smi"],[35,39,"pl-c1"]],[[11,30,"pl-smi"],[33,34,"pl-c1"]],[[4,26,"pl-c1"],[34,52,"pl-smi"],[61,73,"pl-smi"]],[[4,26,"pl-c1"],[34,59,"pl-smi"],[68,80,"pl-smi"]],[[11,32,"pl-smi"],[36,37,"pl-c1"]],[[11,25,"pl-smi"],[28,33,"pl-c1"],[34,35,"pl-c1"],[36,38,"pl-c1"],[42,47,"pl-smi"],[48,60,"pl-smi"],[61,62,"pl-smi"],[65,66,"pl-c1"],[67,69,"pl-c1"],[72,116,"pl-c"],[72,74,"pl-c"]],[],[[4,121,"pl-c"],[4,6,"pl-c"]],[[4,88,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[22,23,"pl-c1"],[40,92,"pl-c"],[40,42,"pl-c"]],[[4,7,"pl-k"],[24,25,"pl-c1"],[40,94,"pl-c"],[40,42,"pl-c"]],[[4,7,"pl-k"],[35,36,"pl-c1"]],[[4,8,"pl-k"],[32,37,"pl-c1"]],[[4,8,"pl-k"],[25,30,"pl-c1"]],[[4,9,"pl-k"],[35,36,"pl-c1"],[37,39,"pl-c1"]],[[4,9,"pl-k"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[23,24,"pl-c1"],[43,55,"pl-smi"]],[],[[8,13,"pl-k"],[14,17,"pl-k"],[36,55,"pl-smi"]],[[8,10,"pl-k"]],[[19,40,"pl-smi"],[43,48,"pl-c1"]],[[43,50,"pl-smi"]],[],[[8,126,"pl-c"],[8,10,"pl-c"]],[[8,118,"pl-c"],[8,10,"pl-c"]],[[8,146,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,35,"pl-smi"]],[],[[12,33,"pl-c1"]],[[20,30,"pl-smi"],[34,35,"pl-c1"]],[[20,26,"pl-smi"],[29,30,"pl-c1"]],[[20,44,"pl-smi"],[48,49,"pl-c1"],[50,52,"pl-c1"]],[],[],[[8,67,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[21,26,"pl-smi"],[67,72,"pl-smi"]],[[20,42,"pl-smi"],[45,49,"pl-c1"]],[[8,10,"pl-k"],[20,33,"pl-smi"],[45,67,"pl-smi"]],[],[[20,33,"pl-smi"],[44,66,"pl-smi"]],[[19,34,"pl-smi"],[37,41,"pl-c1"]],[],[[16,25,"pl-smi"],[36,49,"pl-smi"],[62,67,"pl-smi"],[105,106,"pl-c1"]],[],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"],[48,57,"pl-smi"]],[[19,35,"pl-smi"],[38,42,"pl-c1"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[32,33,"pl-c1"],[46,51,"pl-smi"]],[[19,35,"pl-smi"],[38,42,"pl-c1"]],[],[[8,35,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,18,"pl-k"],[45,50,"pl-smi"],[98,110,"pl-smi"],[113,114,"pl-c1"],[115,117,"pl-c1"],[130,143,"pl-smi"],[146,147,"pl-c1"],[148,150,"pl-c1"]],[[8,10,"pl-k"]],[[20,32,"pl-smi"],[43,63,"pl-smi"],[67,68,"pl-c1"],[72,73,"pl-c1"],[77,78,"pl-c1"],[80,103,"pl-c"],[80,82,"pl-c"]],[],[[8,10,"pl-k"],[21,30,"pl-smi"]],[],[[20,41,"pl-smi"],[45,46,"pl-c1"]],[[12,20,"pl-k"]],[],[],[[8,67,"pl-c"],[8,10,"pl-c"]],[[16,33,"pl-smi"]],[[16,33,"pl-smi"],[37,38,"pl-c1"]],[[8,10,"pl-k"],[40,41,"pl-c1"]],[[19,26,"pl-smi"],[52,69,"pl-smi"]],[[8,12,"pl-k"]],[[19,40,"pl-smi"]],[[16,37,"pl-smi"],[47,66,"pl-smi"]],[[8,24,"pl-c1"],[32,50,"pl-smi"]],[[8,24,"pl-c1"],[32,57,"pl-smi"],[67,79,"pl-smi"]],[],[[8,17,"pl-c1"],[26,47,"pl-smi"],[59,71,"pl-smi"]],[],[[8,120,"pl-c"],[8,10,"pl-c"]],[[8,88,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[21,40,"pl-smi"],[51,66,"pl-smi"],[70,71,"pl-c1"]],[[20,29,"pl-smi"],[32,55,"pl-c1"]],[],[[8,112,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,18,"pl-k"],[50,55,"pl-smi"],[93,94,"pl-c1"]],[[8,10,"pl-k"]],[[28,32,"pl-c1"]],[[8,10,"pl-k"],[21,26,"pl-smi"],[74,98,"pl-smi"],[101,102,"pl-c1"],[103,105,"pl-c1"]],[[20,29,"pl-smi"],[40,64,"pl-smi"]],[],[[8,10,"pl-k"],[20,32,"pl-smi"],[36,40,"pl-c1"]],[[35,39,"pl-c1"]],[[8,10,"pl-k"],[20,25,"pl-smi"]],[],[[46,55,"pl-smi"]],[],[],[[8,12,"pl-k"]],[],[[35,40,"pl-c1"],[71,80,"pl-smi"]],[],[],[],[[4,6,"pl-k"],[16,21,"pl-smi"],[60,74,"pl-smi"],[78,79,"pl-c1"],[92,97,"pl-smi"]],[[15,31,"pl-smi"],[34,38,"pl-c1"]],[[11,33,"pl-smi"]],[[4,13,"pl-c1"],[21,42,"pl-smi"],[46,47,"pl-c1"],[58,80,"pl-smi"],[84,85,"pl-c1"]],[],[[4,130,"pl-c"],[4,6,"pl-c"]],[[4,139,"pl-c"],[4,6,"pl-c"]],[[4,90,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[39,50,"pl-smi"],[61,72,"pl-smi"]],[[15,26,"pl-smi"],[28,37,"pl-smi"],[40,45,"pl-c1"]],[[4,6,"pl-k"]],[[15,30,"pl-smi"],[33,37,"pl-c1"]],[],[[4,68,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[31,32,"pl-c1"],[33,35,"pl-c1"],[40,172,"pl-c"],[40,42,"pl-c"]],[[4,9,"pl-k"],[32,33,"pl-c1"],[34,36,"pl-c1"],[40,82,"pl-c"],[40,42,"pl-c"]],[[11,34,"pl-smi"],[44,68,"pl-smi"],[72,73,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,58,"pl-smi"]],[[12,20,"pl-k"]],[[43,50,"pl-smi"]],[],[[8,13,"pl-k"],[14,18,"pl-k"],[50,55,"pl-smi"],[93,94,"pl-c1"]],[[8,10,"pl-k"],[20,25,"pl-smi"]],[],[[12,39,"pl-c"],[12,14,"pl-c"]],[[12,17,"pl-k"],[39,48,"pl-smi"]],[[12,14,"pl-k"],[83,95,"pl-smi"],[99,103,"pl-c1"]],[],[],[[12,36,"pl-c"],[12,14,"pl-c"]],[[12,119,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[24,36,"pl-smi"],[40,44,"pl-c1"]],[[24,36,"pl-smi"]],[[12,16,"pl-k"],[17,19,"pl-k"],[30,35,"pl-smi"],[107,122,"pl-smi"]],[[24,36,"pl-smi"]],[],[[12,105,"pl-c"],[12,14,"pl-c"]],[[12,114,"pl-c"],[12,14,"pl-c"]],[[12,106,"pl-c"],[12,14,"pl-c"]],[[12,97,"pl-c"],[12,14,"pl-c"]],[[12,77,"pl-c"],[12,14,"pl-c"]],[[12,109,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[24,36,"pl-smi"],[39,43,"pl-c1"],[54,68,"pl-smi"],[81,100,"pl-smi"]],[[24,36,"pl-smi"],[39,44,"pl-c1"],[53,65,"pl-smi"],[74,88,"pl-smi"],[91,92,"pl-c1"],[93,95,"pl-c1"],[98,137,"pl-c"],[98,100,"pl-c"]],[[42,54,"pl-smi"]],[],[[8,12,"pl-k"]],[],[[12,40,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[24,36,"pl-smi"],[40,44,"pl-c1"],[56,69,"pl-smi"],[72,73,"pl-c1"],[74,76,"pl-c1"]],[],[[16,18,"pl-k"],[28,52,"pl-smi"],[55,56,"pl-c1"],[57,59,"pl-c1"]],[[28,41,"pl-smi"],[52,76,"pl-smi"]],[[16,20,"pl-k"],[21,23,"pl-k"]],[[28,41,"pl-smi"],[53,62,"pl-smi"]],[[16,20,"pl-k"]],[[28,41,"pl-smi"],[44,45,"pl-c1"],[46,48,"pl-c1"]],[],[],[[43,56,"pl-smi"]],[[12,14,"pl-k"],[23,46,"pl-smi"],[51,52,"pl-c1"],[63,70,"pl-smi"],[78,101,"pl-smi"],[103,115,"pl-smi"],[126,138,"pl-smi"]],[[23,46,"pl-smi"]],[[12,14,"pl-k"],[23,47,"pl-smi"],[52,53,"pl-c1"],[64,71,"pl-smi"],[79,103,"pl-smi"],[105,117,"pl-smi"],[128,140,"pl-smi"]],[[23,47,"pl-smi"]],[],[[16,35,"pl-smi"],[38,43,"pl-c1"]],[[37,49,"pl-smi"],[52,53,"pl-c1"],[54,56,"pl-c1"]],[],[[11,35,"pl-smi"]],[[11,35,"pl-smi"]],[],[[4,60,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[36,44,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[41,54,"pl-smi"],[57,58,"pl-c1"],[59,61,"pl-c1"],[73,86,"pl-smi"],[96,109,"pl-smi"],[121,140,"pl-smi"],[143,144,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[40,57,"pl-smi"],[69,80,"pl-smi"],[82,92,"pl-smi"],[98,103,"pl-smi"],[104,117,"pl-smi"],[120,121,"pl-c1"],[122,124,"pl-c1"],[126,218,"pl-c"],[126,128,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[30,35,"pl-c1"],[36,37,"pl-c1"],[38,40,"pl-c1"],[52,57,"pl-smi"],[95,105,"pl-smi"],[109,110,"pl-c1"],[111,113,"pl-c1"],[124,137,"pl-smi"],[138,146,"pl-c1"],[161,169,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"]],[[4,9,"pl-k"]],[[11,28,"pl-smi"],[56,68,"pl-smi"],[71,72,"pl-c1"],[73,75,"pl-c1"],[86,105,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,58,"pl-smi"]],[[12,20,"pl-k"]],[[43,50,"pl-smi"]],[],[[8,105,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[20,25,"pl-smi"]],[],[[12,17,"pl-k"],[41,54,"pl-smi"]],[[20,32,"pl-smi"],[35,43,"pl-c1"],[44,49,"pl-c1"],[107,121,"pl-smi"],[125,126,"pl-c1"],[127,130,"pl-c1"]],[[61,73,"pl-smi"]],[],[],[[8,113,"pl-c"],[8,10,"pl-c"]],[[8,60,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[20,37,"pl-smi"],[42,43,"pl-c1"],[54,77,"pl-smi"],[82,83,"pl-c1"]],[[20,25,"pl-smi"]],[],[[8,74,"pl-c"],[8,10,"pl-c"]],[[16,26,"pl-smi"],[29,36,"pl-c1"],[37,42,"pl-c1"],[51,63,"pl-smi"],[72,86,"pl-smi"]],[[15,32,"pl-smi"],[44,54,"pl-smi"]],[],[],[[4,124,"pl-c"],[4,6,"pl-c"]],[[4,79,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[49,50,"pl-c1"],[51,53,"pl-c1"],[66,71,"pl-smi"]],[[8,11,"pl-k"],[13,16,"pl-k"],[34,46,"pl-smi"],[49,50,"pl-c1"],[74,75,"pl-c1"],[76,78,"pl-c1"],[123,124,"pl-c1"],[125,127,"pl-c1"],[142,143,"pl-c1"]],[],[[12,14,"pl-k"],[17,36,"pl-c1"],[44,69,"pl-smi"]],[[16,24,"pl-k"]],[[47,54,"pl-smi"],[62,81,"pl-smi"]],[[12,14,"pl-k"],[26,31,"pl-smi"]],[[16,24,"pl-k"]],[[20,32,"pl-smi"],[36,37,"pl-c1"],[38,40,"pl-c1"]],[[20,30,"pl-smi"],[34,35,"pl-c1"],[36,38,"pl-c1"]],[[53,54,"pl-c1"],[55,57,"pl-c1"]],[],[],[[4,83,"pl-c"],[4,6,"pl-c"]],[[4,119,"pl-c"],[4,6,"pl-c"]],[[4,119,"pl-c"],[4,6,"pl-c"]],[[4,102,"pl-c"],[4,6,"pl-c"]],[[4,123,"pl-c"],[4,6,"pl-c"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[20,34,"pl-smi"],[53,67,"pl-smi"]],[[20,34,"pl-smi"],[38,39,"pl-c1"]],[[11,28,"pl-smi"],[38,57,"pl-smi"],[61,62,"pl-c1"]],[[4,9,"pl-k"],[17,31,"pl-smi"],[39,48,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"],[63,72,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"],[87,96,"pl-smi"],[97,100,"pl-smi"],[101,102,"pl-smi"],[104,109,"pl-c1"],[117,126,"pl-smi"],[127,130,"pl-smi"],[131,132,"pl-smi"],[141,150,"pl-smi"],[151,154,"pl-smi"],[155,156,"pl-smi"],[175,190,"pl-smi"]],[[4,9,"pl-k"],[39,47,"pl-smi"]],[[6,14,"pl-smi"],[17,18,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[35,48,"pl-c1"],[65,66,"pl-c1"]],[[6,14,"pl-smi"]],[],[[4,61,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[29,31,"pl-smi"],[32,40,"pl-smi"],[41,42,"pl-smi"]],[[4,6,"pl-k"],[15,34,"pl-smi"],[37,38,"pl-c1"],[39,41,"pl-c1"]],[[8,10,"pl-k"],[14,16,"pl-smi"],[17,25,"pl-smi"],[26,27,"pl-smi"],[38,47,"pl-smi"],[48,51,"pl-smi"],[52,53,"pl-smi"],[59,61,"pl-smi"],[62,70,"pl-smi"],[71,72,"pl-smi"],[83,92,"pl-smi"],[93,96,"pl-smi"],[97,98,"pl-smi"],[108,127,"pl-smi"]],[[30,37,"pl-c1"],[46,55,"pl-smi"],[56,59,"pl-smi"],[60,61,"pl-smi"],[71,90,"pl-smi"],[95,97,"pl-smi"],[98,106,"pl-smi"],[107,108,"pl-smi"],[119,137,"pl-smi"]],[],[[4,109,"pl-c"],[4,6,"pl-c"]],[[4,128,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[20,21,"pl-c1"]],[[4,8,"pl-k"],[53,58,"pl-c1"]],[[4,8,"pl-k"],[35,53,"pl-smi"],[56,57,"pl-c1"]],[[4,9,"pl-k"],[30,48,"pl-smi"],[51,52,"pl-c1"],[63,72,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"],[91,94,"pl-smi"],[95,96,"pl-smi"],[107,120,"pl-smi"],[130,143,"pl-smi"]],[[35,48,"pl-smi"]],[[4,73,"pl-c"],[4,6,"pl-c"]],[[4,26,"pl-c1"],[34,52,"pl-smi"],[61,73,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[23,24,"pl-c1"],[43,55,"pl-smi"]],[],[[8,13,"pl-k"],[14,17,"pl-k"],[36,55,"pl-smi"]],[[43,50,"pl-smi"]],[],[[8,116,"pl-c"],[8,10,"pl-c"]],[[16,31,"pl-smi"],[48,63,"pl-smi"],[66,67,"pl-c1"],[113,121,"pl-smi"]],[],[[8,10,"pl-k"],[38,56,"pl-smi"]],[],[[34,37,"pl-smi"],[38,39,"pl-smi"],[49,58,"pl-smi"],[59,62,"pl-smi"],[63,64,"pl-smi"]],[[30,35,"pl-c1"]],[],[],[[8,29,"pl-c"],[8,10,"pl-c"]],[[16,21,"pl-smi"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,65,"pl-smi"]],[],[[12,107,"pl-c"],[12,14,"pl-c"]],[[12,108,"pl-c"],[12,14,"pl-c"]],[[20,24,"pl-smi"],[35,39,"pl-smi"],[50,58,"pl-smi"],[69,77,"pl-smi"],[78,81,"pl-smi"],[82,83,"pl-smi"],[94,102,"pl-smi"],[103,106,"pl-smi"],[107,108,"pl-smi"]],[[20,30,"pl-smi"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[[20,28,"pl-smi"],[29,32,"pl-smi"],[33,34,"pl-smi"],[47,50,"pl-smi"],[51,52,"pl-smi"]],[[20,28,"pl-smi"],[29,32,"pl-smi"],[33,34,"pl-smi"]],[[20,28,"pl-smi"],[29,41,"pl-c1"]],[[20,30,"pl-smi"],[41,51,"pl-smi"],[62,77,"pl-smi"],[80,85,"pl-c1"]],[[20,31,"pl-smi"],[34,38,"pl-c1"]],[[20,29,"pl-smi"],[32,33,"pl-c1"],[34,36,"pl-c1"]],[[12,20,"pl-k"]],[],[],[[8,30,"pl-c"],[8,10,"pl-c"]],[[16,20,"pl-smi"]],[],[[8,89,"pl-c"],[8,10,"pl-c"]],[[16,24,"pl-smi"],[27,50,"pl-c1"]],[[16,26,"pl-smi"],[29,34,"pl-c1"],[43,53,"pl-smi"],[63,71,"pl-smi"]],[[16,26,"pl-smi"],[29,34,"pl-c1"],[43,53,"pl-smi"],[55,60,"pl-c1"],[69,81,"pl-smi"],[90,104,"pl-smi"]],[[16,20,"pl-smi"],[42,52,"pl-smi"],[62,75,"pl-smi"],[85,98,"pl-smi"],[108,120,"pl-smi"],[123,124,"pl-c1"],[125,127,"pl-c1"]],[],[[8,31,"pl-c"],[8,10,"pl-c"]],[[8,171,"pl-c"],[8,10,"pl-c"]],[[8,193,"pl-c"],[8,10,"pl-c"]],[[8,142,"pl-c"],[8,10,"pl-c"]],[[8,210,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[59,67,"pl-smi"]],[[16,24,"pl-smi"],[35,39,"pl-smi"],[49,61,"pl-smi"],[71,84,"pl-smi"]],[[16,24,"pl-smi"],[35,39,"pl-smi"],[49,61,"pl-smi"],[71,84,"pl-smi"],[86,101,"pl-c"],[86,88,"pl-c"]],[[16,25,"pl-smi"],[28,35,"pl-c1"],[44,54,"pl-smi"],[57,58,"pl-c1"],[59,62,"pl-c1"]],[[16,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[41,45,"pl-smi"]],[[16,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[43,46,"pl-smi"],[47,48,"pl-smi"]],[[16,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[41,45,"pl-smi"],[47,66,"pl-c"],[47,49,"pl-c"]],[[16,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"]],[[16,24,"pl-smi"],[25,37,"pl-c1"]],[],[[8,48,"pl-c"],[8,10,"pl-c"]],[[8,174,"pl-c"],[8,10,"pl-c"]],[[8,170,"pl-c"],[8,10,"pl-c"]],[[8,80,"pl-c"],[8,10,"pl-c"]],[[8,166,"pl-c"],[8,10,"pl-c"]],[[8,156,"pl-c"],[8,10,"pl-c"]],[[8,172,"pl-c"],[8,10,"pl-c"]],[[16,26,"pl-smi"],[38,46,"pl-smi"],[47,50,"pl-smi"],[51,52,"pl-smi"],[63,71,"pl-smi"],[72,75,"pl-smi"],[76,77,"pl-smi"]],[[16,26,"pl-smi"],[29,33,"pl-c1"],[35,88,"pl-c"],[35,37,"pl-c"]],[[8,13,"pl-k"],[14,18,"pl-k"],[40,50,"pl-smi"],[52,76,"pl-c"],[52,54,"pl-c"]],[[8,10,"pl-k"]],[[12,28,"pl-c1"],[36,54,"pl-smi"]],[],[[8,158,"pl-c"],[8,10,"pl-c"]],[[16,31,"pl-smi"],[56,68,"pl-smi"],[72,73,"pl-c1"],[85,105,"pl-smi"],[109,110,"pl-c1"]],[],[[8,63,"pl-c"],[8,10,"pl-c"]],[[8,107,"pl-c"],[8,10,"pl-c"]],[[16,27,"pl-smi"],[39,48,"pl-smi"],[59,72,"pl-smi"]],[[8,10,"pl-k"],[20,31,"pl-smi"]],[[12,21,"pl-c1"]],[[8,10,"pl-k"],[20,35,"pl-smi"],[48,59,"pl-smi"]],[[56,60,"pl-c1"]],[],[[8,30,"pl-c"],[8,10,"pl-c"]],[[16,21,"pl-smi"]],[[8,10,"pl-k"]],[[20,25,"pl-smi"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"]],[[20,25,"pl-smi"]],[],[[8,32,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[59,67,"pl-smi"],[68,71,"pl-smi"],[72,73,"pl-smi"],[102,110,"pl-smi"],[111,114,"pl-smi"],[115,116,"pl-smi"]],[],[[20,25,"pl-smi"]],[[19,36,"pl-smi"]],[],[],[[8,20,"pl-c"],[8,10,"pl-c"]],[[8,111,"pl-c"],[8,10,"pl-c"]],[[8,108,"pl-c"],[8,10,"pl-c"]],[[8,83,"pl-c"],[8,10,"pl-c"]],[[8,63,"pl-c"],[8,10,"pl-c"]],[[8,106,"pl-c"],[8,10,"pl-c"]],[[8,69,"pl-c"],[8,10,"pl-c"]],[[8,136,"pl-c"],[8,10,"pl-c"]],[],[[8,40,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,34,"pl-smi"],[38,39,"pl-c1"]],[],[[20,37,"pl-smi"],[48,56,"pl-smi"]],[[20,39,"pl-smi"],[50,58,"pl-smi"]],[[20,42,"pl-smi"],[53,61,"pl-smi"]],[[20,43,"pl-smi"],[54,62,"pl-smi"]],[],[[8,12,"pl-k"]],[],[[12,130,"pl-c"],[12,14,"pl-c"]],[[12,17,"pl-k"],[18,23,"pl-k"],[64,72,"pl-smi"]],[[20,37,"pl-smi"]],[[20,39,"pl-smi"]],[[20,42,"pl-smi"]],[[20,43,"pl-smi"]],[],[],[[8,100,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,32,"pl-smi"],[36,41,"pl-c1"],[52,67,"pl-smi"],[71,72,"pl-c1"]],[],[[20,32,"pl-smi"],[37,38,"pl-c1"]],[[20,40,"pl-smi"],[45,46,"pl-c1"]],[],[],[[8,10,"pl-k"],[31,49,"pl-smi"]],[[27,30,"pl-smi"],[31,32,"pl-smi"],[35,42,"pl-c1"],[51,55,"pl-smi"],[92,95,"pl-smi"],[96,97,"pl-smi"],[114,117,"pl-smi"],[118,119,"pl-smi"]],[],[[28,38,"pl-smi"],[48,61,"pl-smi"],[71,84,"pl-smi"],[94,106,"pl-smi"],[109,110,"pl-c1"],[111,113,"pl-c1"]],[],[],[],[[4,105,"pl-c"],[4,6,"pl-c"]],[[4,122,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[53,58,"pl-c1"]],[],[[15,22,"pl-smi"],[30,51,"pl-smi"],[53,68,"pl-smi"],[71,75,"pl-c1"]],[[15,22,"pl-smi"],[30,51,"pl-smi"],[53,64,"pl-smi"],[67,72,"pl-c1"]],[],[],[[4,134,"pl-c"],[4,6,"pl-c"]],[[4,119,"pl-c"],[4,6,"pl-c"]],[[4,108,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[28,33,"pl-c1"],[41,49,"pl-smi"],[50,53,"pl-smi"],[54,55,"pl-smi"],[64,71,"pl-smi"],[79,101,"pl-smi"],[103,111,"pl-smi"],[112,115,"pl-smi"],[116,117,"pl-smi"]],[[4,6,"pl-k"],[36,53,"pl-smi"],[58,59,"pl-c1"]],[[8,10,"pl-k"]],[[19,36,"pl-smi"],[67,79,"pl-smi"]],[[4,6,"pl-k"],[25,30,"pl-c1"],[42,47,"pl-smi"]],[[15,20,"pl-smi"]],[],[[11,37,"pl-smi"],[43,58,"pl-smi"],[62,63,"pl-c1"]],[],[[4,67,"pl-c"],[4,6,"pl-c"]],[[4,108,"pl-c"],[4,6,"pl-c"]],[[4,96,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,39,"pl-smi"],[44,45,"pl-c1"]],[[15,20,"pl-smi"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[15,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[40,48,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"]],[[15,28,"pl-smi"],[29,32,"pl-smi"],[33,34,"pl-smi"],[37,42,"pl-c1"],[50,63,"pl-smi"],[64,67,"pl-smi"],[68,69,"pl-smi"]],[],[[11,22,"pl-smi"],[24,38,"pl-smi"],[48,56,"pl-smi"]],[[11,19,"pl-smi"],[29,42,"pl-smi"],[43,46,"pl-smi"],[47,48,"pl-smi"]],[[11,19,"pl-smi"],[29,42,"pl-smi"],[43,46,"pl-smi"],[47,48,"pl-smi"]],[],[[4,125,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[[38,47,"pl-smi"],[48,51,"pl-smi"],[52,53,"pl-smi"]],[[4,8,"pl-k"]],[[31,36,"pl-c1"],[44,55,"pl-smi"],[57,74,"pl-smi"],[75,78,"pl-smi"],[79,80,"pl-smi"],[90,95,"pl-smi"],[125,126,"pl-c1"],[127,129,"pl-c1"],[139,148,"pl-smi"],[149,152,"pl-smi"],[153,154,"pl-smi"]],[[11,22,"pl-smi"],[24,32,"pl-smi"],[33,36,"pl-smi"],[37,38,"pl-smi"],[41,48,"pl-c1"],[74,79,"pl-smi"],[80,91,"pl-smi"],[92,93,"pl-smi"],[102,113,"pl-smi"],[115,123,"pl-smi"],[124,127,"pl-smi"],[128,129,"pl-smi"],[138,149,"pl-smi"],[151,159,"pl-smi"],[160,163,"pl-smi"],[164,165,"pl-smi"]],[],[[4,68,"pl-c"],[4,6,"pl-c"]],[[4,26,"pl-c1"]],[],[[4,39,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[[8,26,"pl-c1"]],[[20,43,"pl-smi"],[46,47,"pl-c1"],[48,50,"pl-c1"]],[[11,25,"pl-smi"],[28,32,"pl-c1"]],[[11,25,"pl-smi"],[28,33,"pl-c1"]],[],[[4,23,"pl-c"],[4,6,"pl-c"]],[[11,32,"pl-smi"],[36,37,"pl-c1"]],[[4,6,"pl-k"],[15,33,"pl-smi"],[44,62,"pl-smi"],[67,68,"pl-c1"],[79,97,"pl-smi"],[108,123,"pl-smi"]],[[15,36,"pl-smi"],[46,64,"pl-smi"]],[[4,8,"pl-k"],[9,11,"pl-k"],[21,26,"pl-smi"],[79,96,"pl-smi"],[101,102,"pl-c1"],[113,130,"pl-smi"],[141,153,"pl-smi"],[164,183,"pl-smi"],[188,189,"pl-c1"]],[[8,10,"pl-k"],[14,22,"pl-smi"],[26,27,"pl-c1"],[39,56,"pl-smi"],[62,76,"pl-smi"]],[[19,40,"pl-smi"],[50,67,"pl-smi"]],[],[[4,37,"pl-c"],[4,6,"pl-c"]],[[4,90,"pl-c"],[4,6,"pl-c"]],[[4,141,"pl-c"],[4,6,"pl-c"]],[[4,121,"pl-c"],[4,6,"pl-c"]],[[4,149,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,40,"pl-smi"],[44,49,"pl-c1"],[53,79,"pl-c1"]],[],[[8,35,"pl-c1"],[50,55,"pl-smi"]],[[8,16,"pl-c1"]],[],[],[[4,95,"pl-c"],[4,6,"pl-c"]],[[4,120,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,31,"pl-smi"],[43,48,"pl-smi"]],[[8,27,"pl-c1"]],[],[[4,130,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,35,"pl-smi"],[38,39,"pl-c1"]],[[15,26,"pl-smi"],[28,43,"pl-smi"],[53,60,"pl-smi"],[68,87,"pl-smi"],[95,115,"pl-smi"],[118,119,"pl-c1"],[122,126,"pl-smi"],[136,145,"pl-smi"],[146,149,"pl-smi"],[150,151,"pl-smi"]],[[4,6,"pl-k"],[15,32,"pl-smi"],[35,36,"pl-c1"]],[[15,26,"pl-smi"],[28,43,"pl-smi"],[62,78,"pl-smi"]],[[20,36,"pl-smi"],[39,40,"pl-c1"],[41,43,"pl-c1"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[39,50,"pl-smi"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[[15,27,"pl-smi"],[29,46,"pl-c1"],[61,69,"pl-smi"]],[[4,8,"pl-k"]],[[22,30,"pl-smi"],[32,44,"pl-c1"],[59,72,"pl-smi"],[73,76,"pl-smi"],[92,105,"pl-smi"],[106,109,"pl-smi"],[111,116,"pl-c1"],[119,154,"pl-c"],[119,121,"pl-c"]],[],[],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,93,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,30,"pl-en"]],[],[],[[4,13,"pl-c1"],[21,26,"pl-smi"]],[],[[4,116,"pl-c"],[4,6,"pl-c"]],[[4,113,"pl-c"],[4,6,"pl-c"]],[[4,121,"pl-c"],[4,6,"pl-c"]],[[4,91,"pl-c"],[4,6,"pl-c"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[33,40,"pl-c1"],[83,98,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[33,48,"pl-smi"],[52,53,"pl-c1"],[63,72,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"],[88,96,"pl-smi"],[97,100,"pl-smi"],[101,102,"pl-smi"],[113,132,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[30,35,"pl-c1"],[43,52,"pl-smi"],[53,56,"pl-smi"],[57,58,"pl-smi"],[85,100,"pl-smi"],[110,129,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[55,78,"pl-smi"]],[],[[4,7,"pl-k"],[9,12,"pl-k"],[23,24,"pl-c1"],[43,55,"pl-smi"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,65,"pl-smi"]],[[12,20,"pl-k"]],[],[[8,13,"pl-k"],[14,17,"pl-k"],[36,55,"pl-smi"]],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[20,25,"pl-smi"]],[[12,20,"pl-k"]],[],[[8,91,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[44,49,"pl-smi"]],[[8,10,"pl-k"],[20,25,"pl-smi"],[71,85,"pl-smi"],[89,94,"pl-c1"]],[[12,20,"pl-k"]],[],[[8,10,"pl-k"],[21,31,"pl-smi"],[42,59,"pl-smi"]],[[12,20,"pl-k"]],[],[[28,50,"pl-c1"],[75,90,"pl-smi"]],[[15,23,"pl-smi"],[32,36,"pl-smi"],[71,75,"pl-smi"]],[[8,15,"pl-c1"],[37,41,"pl-c1"]],[[8,97,"pl-c"],[8,10,"pl-c"]],[],[[8,12,"pl-k"],[23,28,"pl-c1"],[37,42,"pl-c1"]],[[8,12,"pl-k"],[23,37,"pl-c1"]],[[8,10,"pl-k"],[23,43,"pl-c1"],[44,45,"pl-c1"]],[],[[12,41,"pl-c1"]],[[12,25,"pl-c1"]],[[19,24,"pl-c1"]],[],[[8,10,"pl-k"]],[],[[12,14,"pl-k"],[23,40,"pl-smi"],[45,46,"pl-c1"]],[[23,46,"pl-smi"],[56,78,"pl-smi"],[83,84,"pl-c1"],[94,101,"pl-smi"],[109,131,"pl-smi"],[133,137,"pl-smi"]],[[19,32,"pl-smi"]],[[19,37,"pl-smi"],[47,62,"pl-smi"]],[],[[8,10,"pl-k"],[26,40,"pl-smi"]],[],[[19,38,"pl-smi"]],[[12,26,"pl-c1"]],[],[],[],[],[[0,4,"pl-k"],[8,23,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,110,"pl-s"],[44,45,"pl-pds"],[109,110,"pl-pds"]],[[8,14,"pl-k"]],[],[],[[4,114,"pl-c"],[4,6,"pl-c"]],[[4,115,"pl-c"],[4,6,"pl-c"]],[[4,107,"pl-c"],[4,6,"pl-c"]],[],[[4,116,"pl-c"],[4,6,"pl-c"]],[[4,117,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[16,30,"pl-smi"]],[[8,25,"pl-c1"]],[],[[4,9,"pl-k"],[41,46,"pl-smi"]],[[39,50,"pl-smi"]],[[39,50,"pl-smi"]],[[43,51,"pl-smi"]],[[4,13,"pl-c1"],[32,45,"pl-smi"]],[[4,13,"pl-c1"],[76,88,"pl-smi"]],[],[[4,6,"pl-k"],[15,26,"pl-smi"]],[[8,19,"pl-c1"]],[],[[4,35,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[[8,10,"pl-k"],[19,36,"pl-smi"],[41,42,"pl-c1"],[47,63,"pl-c1"],[69,84,"pl-c1"]],[[12,32,"pl-c1"],[34,37,"pl-k"],[45,62,"pl-smi"]],[],[[4,28,"pl-c"],[4,6,"pl-c"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[18,20,"pl-smi"],[21,33,"pl-smi"],[47,69,"pl-smi"]],[[18,20,"pl-smi"],[21,33,"pl-smi"],[47,69,"pl-smi"]],[[18,20,"pl-smi"],[21,33,"pl-smi"],[47,69,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[45,53,"pl-smi"]],[[4,13,"pl-c1"],[21,29,"pl-smi"],[47,49,"pl-smi"],[50,59,"pl-smi"],[60,61,"pl-smi"]],[[4,6,"pl-k"]],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"]],[[4,8,"pl-k"],[9,11,"pl-k"]],[[15,24,"pl-smi"],[25,28,"pl-smi"],[29,30,"pl-smi"],[40,49,"pl-smi"],[50,53,"pl-smi"],[54,55,"pl-smi"],[58,63,"pl-c1"],[71,80,"pl-smi"],[81,84,"pl-smi"],[85,86,"pl-smi"],[110,145,"pl-c"],[110,112,"pl-c"]],[[11,19,"pl-smi"],[20,23,"pl-smi"],[24,25,"pl-smi"],[28,33,"pl-c1"],[41,49,"pl-smi"],[50,53,"pl-smi"],[54,55,"pl-smi"],[64,73,"pl-smi"],[74,77,"pl-smi"],[78,79,"pl-smi"]],[[20,35,"pl-smi"],[45,54,"pl-smi"],[55,64,"pl-c1"]],[],[[4,34,"pl-c"],[4,6,"pl-c"]],[[4,151,"pl-c"],[4,6,"pl-c"]],[[4,98,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,13,"pl-k"],[14,19,"pl-k"],[55,60,"pl-smi"],[116,117,"pl-c1"],[118,120,"pl-c1"]],[[8,13,"pl-k"],[33,44,"pl-smi"],[46,48,"pl-smi"],[49,61,"pl-smi"],[62,63,"pl-smi"]],[[8,10,"pl-k"],[19,41,"pl-smi"],[46,47,"pl-c1"]],[[24,29,"pl-c1"],[48,55,"pl-smi"],[63,85,"pl-smi"],[87,95,"pl-smi"],[105,117,"pl-smi"],[127,140,"pl-smi"]],[[8,10,"pl-k"],[19,32,"pl-smi"],[37,38,"pl-c1"]],[[24,29,"pl-c1"],[48,71,"pl-smi"]],[[15,26,"pl-smi"],[28,30,"pl-smi"],[31,43,"pl-smi"],[44,45,"pl-smi"],[67,75,"pl-smi"],[77,100,"pl-smi"]],[],[],[[4,24,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[[22,30,"pl-smi"],[32,43,"pl-c1"]],[[18,26,"pl-smi"],[43,51,"pl-smi"],[53,67,"pl-smi"],[68,72,"pl-c1"]],[],[[4,19,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[45,46,"pl-c1"]],[[8,24,"pl-c1"]],[],[[1,3,"pl-k"],[4,5,"pl-c1"]],[],[],[],[],[],[],[],[],[],[],[[1,6,"pl-k"]],[],[[4,44,"pl-c"],[4,6,"pl-c"]],[[42,54,"pl-smi"]],[[14,31,"pl-c1"],[46,54,"pl-smi"],[56,57,"pl-c1"]],[[4,6,"pl-k"],[16,21,"pl-smi"],[51,52,"pl-c1"]],[[8,30,"pl-c1"]],[[14,19,"pl-c1"],[34,42,"pl-smi"]],[],[[4,126,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[37,38,"pl-c1"],[39,41,"pl-c1"]],[[4,9,"pl-k"],[41,42,"pl-c1"],[43,45,"pl-c1"]],[[4,9,"pl-k"],[45,46,"pl-c1"],[47,49,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[[8,10,"pl-k"],[12,31,"pl-c1"],[39,57,"pl-smi"]],[],[[47,54,"pl-smi"]],[[12,17,"pl-k"],[51,56,"pl-smi"],[106,111,"pl-smi"],[157,169,"pl-smi"],[172,195,"pl-c1"]],[[12,14,"pl-k"],[24,29,"pl-smi"]],[],[[12,16,"pl-k"]],[],[[12,14,"pl-k"],[25,30,"pl-smi"],[81,86,"pl-smi"],[124,125,"pl-c1"]],[[51,56,"pl-c1"],[123,136,"pl-smi"],[146,170,"pl-smi"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[41,54,"pl-smi"],[57,58,"pl-c1"],[59,61,"pl-c1"],[73,86,"pl-smi"],[96,109,"pl-smi"],[121,140,"pl-smi"],[143,144,"pl-c1"]],[[11,30,"pl-smi"],[58,70,"pl-smi"],[73,74,"pl-c1"],[75,77,"pl-c1"],[88,107,"pl-smi"],[137,142,"pl-c1"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[16,21,"pl-smi"],[52,53,"pl-c1"]],[],[[22,28,"pl-smi"],[29,30,"pl-smi"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[],[[4,8,"pl-k"],[9,11,"pl-k"],[20,37,"pl-smi"],[42,43,"pl-c1"],[54,67,"pl-smi"],[72,73,"pl-c1"],[91,101,"pl-smi"],[112,130,"pl-smi"],[141,156,"pl-smi"]],[],[[8,94,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[60,74,"pl-smi"],[84,96,"pl-smi"],[99,100,"pl-c1"],[101,103,"pl-c1"]],[[43,50,"pl-smi"],[58,75,"pl-smi"]],[[8,10,"pl-k"],[20,24,"pl-smi"],[34,47,"pl-smi"],[48,51,"pl-smi"],[52,53,"pl-smi"]],[[12,29,"pl-c1"],[52,56,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"],[113,114,"pl-c1"],[115,117,"pl-c1"]],[[8,12,"pl-k"],[13,15,"pl-k"],[25,29,"pl-smi"],[39,52,"pl-smi"],[53,56,"pl-smi"],[57,58,"pl-smi"]],[[12,29,"pl-c1"],[52,56,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"],[113,114,"pl-c1"],[115,117,"pl-c1"]],[],[],[[4,54,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,28,"pl-smi"],[33,34,"pl-c1"],[45,60,"pl-smi"],[71,89,"pl-smi"]],[],[[43,50,"pl-smi"],[58,71,"pl-smi"]],[[8,13,"pl-k"],[14,19,"pl-k"],[32,34,"pl-smi"],[35,43,"pl-smi"],[44,45,"pl-smi"],[50,69,"pl-smi"],[70,71,"pl-smi"],[74,81,"pl-c1"],[124,139,"pl-smi"]],[[8,13,"pl-k"],[14,19,"pl-k"],[32,39,"pl-c1"],[57,61,"pl-smi"],[71,84,"pl-smi"],[94,106,"pl-smi"],[109,110,"pl-c1"],[111,113,"pl-c1"]],[[15,37,"pl-smi"]],[],[],[[11,28,"pl-smi"],[34,49,"pl-smi"],[53,54,"pl-c1"],[65,91,"pl-smi"],[95,100,"pl-c1"]],[],[[4,24,"pl-c"],[4,6,"pl-c"]],[[4,24,"pl-c1"],[39,46,"pl-smi"],[47,51,"pl-c1"],[73,88,"pl-smi"],[90,117,"pl-s"],[90,91,"pl-pds"],[116,117,"pl-pds"]],[[4,24,"pl-c1"],[39,41,"pl-smi"],[42,56,"pl-smi"],[57,61,"pl-smi"],[76,104,"pl-smi"],[106,130,"pl-s"],[106,107,"pl-pds"],[129,130,"pl-pds"]],[[4,6,"pl-k"],[15,30,"pl-smi"],[33,34,"pl-c1"]],[[8,13,"pl-c1"]],[[4,9,"pl-c1"]],[],[[4,43,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[54,56,"pl-smi"],[57,69,"pl-smi"]],[[18,26,"pl-smi"],[40,58,"pl-smi"]],[[18,32,"pl-smi"],[46,70,"pl-smi"]],[[18,27,"pl-smi"],[37,50,"pl-smi"]],[[18,20,"pl-smi"],[21,30,"pl-smi"],[40,49,"pl-smi"],[50,53,"pl-smi"]],[[18,20,"pl-smi"],[21,30,"pl-smi"],[44,63,"pl-smi"]],[[18,20,"pl-smi"],[21,35,"pl-smi"],[36,40,"pl-smi"],[54,82,"pl-smi"]],[[18,20,"pl-smi"],[21,34,"pl-smi"],[48,71,"pl-smi"]],[],[[4,29,"pl-c"],[4,6,"pl-c"]],[[4,124,"pl-c"],[4,6,"pl-c"]],[[4,126,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,13,"pl-k"],[60,62,"pl-smi"],[63,82,"pl-smi"]],[[22,24,"pl-smi"],[25,44,"pl-smi"],[48,49,"pl-c1"],[60,68,"pl-smi"],[70,125,"pl-c"],[70,72,"pl-c"]],[[10,22,"pl-smi"],[25,29,"pl-c1"],[31,67,"pl-c"],[31,33,"pl-c"]],[[8,16,"pl-c1"]],[[10,22,"pl-smi"]],[[22,24,"pl-smi"],[25,44,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[8,16,"pl-c1"],[24,33,"pl-smi"],[34,41,"pl-c1"]],[[8,15,"pl-c1"],[23,32,"pl-smi"],[34,35,"pl-c1"]],[],[],[[4,108,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,53,"pl-c"],[8,10,"pl-c"]],[[8,118,"pl-c"],[8,10,"pl-c"]],[[8,17,"pl-c1"],[26,31,"pl-smi"],[62,63,"pl-c1"]],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"],[42,47,"pl-c1"],[69,70,"pl-smi"],[79,88,"pl-smi"],[89,92,"pl-smi"],[93,94,"pl-smi"],[104,123,"pl-smi"]],[],[[4,8,"pl-k"],[9,11,"pl-k"],[24,37,"pl-smi"],[38,39,"pl-smi"],[43,44,"pl-c1"],[45,47,"pl-c1"]],[],[[8,120,"pl-c"],[8,10,"pl-c"]],[[8,113,"pl-c"],[8,10,"pl-c"]],[[8,132,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[49,58,"pl-smi"],[59,62,"pl-smi"],[63,64,"pl-smi"],[74,93,"pl-smi"],[95,174,"pl-c"],[95,97,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[45,53,"pl-smi"],[55,78,"pl-smi"],[90,95,"pl-smi"],[139,153,"pl-smi"],[154,155,"pl-smi"],[158,159,"pl-c1"],[160,162,"pl-c1"]],[[22,24,"pl-smi"],[25,36,"pl-smi"],[37,38,"pl-smi"],[41,46,"pl-c1"],[61,63,"pl-smi"],[64,75,"pl-smi"],[76,77,"pl-smi"],[130,143,"pl-smi"],[144,145,"pl-smi"]],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"],[42,47,"pl-c1"],[69,70,"pl-smi"],[72,77,"pl-c1"],[85,94,"pl-smi"],[95,98,"pl-smi"],[99,100,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"],[42,47,"pl-c1"],[69,70,"pl-smi"],[79,88,"pl-smi"],[89,92,"pl-smi"],[93,94,"pl-smi"]],[],[[4,6,"pl-k"],[19,32,"pl-smi"],[33,34,"pl-smi"],[38,39,"pl-c1"],[40,42,"pl-c1"]],[],[[8,13,"pl-k"],[14,19,"pl-k"],[46,51,"pl-smi"],[95,109,"pl-smi"],[110,111,"pl-smi"],[114,115,"pl-c1"],[116,118,"pl-c1"]],[[22,24,"pl-smi"],[25,36,"pl-smi"],[37,38,"pl-smi"],[41,46,"pl-c1"],[61,63,"pl-smi"],[64,75,"pl-smi"],[76,77,"pl-smi"],[130,143,"pl-smi"],[144,145,"pl-smi"]],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"],[42,47,"pl-c1"],[69,70,"pl-smi"],[72,77,"pl-c1"],[85,94,"pl-smi"],[95,98,"pl-smi"],[99,100,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[8,133,"pl-c"],[8,10,"pl-c"]],[[22,24,"pl-smi"],[25,37,"pl-smi"],[38,39,"pl-smi"],[42,47,"pl-c1"],[69,70,"pl-smi"],[79,88,"pl-smi"],[89,92,"pl-smi"],[93,94,"pl-smi"]],[],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,30,"pl-smi"]],[[8,25,"pl-c1"]],[[11,25,"pl-smi"],[28,33,"pl-c1"]],[],[[4,45,"pl-c"],[4,6,"pl-c"]],[[4,13,"pl-c1"],[16,29,"pl-smi"],[51,63,"pl-smi"]],[[4,13,"pl-c1"],[16,37,"pl-smi"],[40,41,"pl-c1"]],[[21,42,"pl-smi"],[45,46,"pl-c1"],[53,67,"pl-smi"],[70,91,"pl-smi"],[94,95,"pl-c1"],[99,103,"pl-c1"]],[[6,18,"pl-smi"],[35,41,"pl-smi"],[42,52,"pl-c1"],[64,74,"pl-smi"],[78,82,"pl-c1"]],[[4,6,"pl-k"],[10,22,"pl-smi"]],[],[[10,22,"pl-smi"],[24,32,"pl-smi"]],[[10,22,"pl-smi"],[24,36,"pl-smi"],[51,63,"pl-smi"]],[],[[18,20,"pl-smi"],[21,36,"pl-smi"],[41,53,"pl-smi"],[58,64,"pl-smi"],[65,73,"pl-c1"],[76,88,"pl-smi"],[93,94,"pl-c1"]],[[4,43,"pl-c1"]],[],[],[[0,122,"pl-c"],[0,2,"pl-c"]],[[0,50,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[7,11,"pl-k"],[12,35,"pl-en"]],[],[[42,47,"pl-smi"]],[[4,6,"pl-k"]],[],[[8,13,"pl-k"],[45,69,"pl-smi"]],[[16,28,"pl-smi"],[101,102,"pl-c1"],[103,105,"pl-c1"],[133,134,"pl-c1"],[135,137,"pl-c1"]],[[16,29,"pl-smi"],[56,57,"pl-c1"],[58,60,"pl-c1"],[136,137,"pl-c1"],[138,140,"pl-c1"]],[[8,10,"pl-k"],[35,36,"pl-c1"],[37,39,"pl-c1"],[41,107,"pl-c"],[41,43,"pl-c"]],[[20,32,"pl-smi"],[35,39,"pl-c1"]],[],[[4,6,"pl-k"]],[[16,28,"pl-smi"],[59,66,"pl-smi"],[67,81,"pl-c1"]],[[4,6,"pl-k"]],[[16,29,"pl-smi"],[40,62,"pl-smi"],[111,112,"pl-c1"],[115,116,"pl-c1"]],[[4,6,"pl-k"]],[],[[8,119,"pl-c"],[8,10,"pl-c"]],[[16,25,"pl-smi"],[74,75,"pl-c1"],[79,80,"pl-c1"]],[[16,29,"pl-smi"]],[],[],[],[[0,65,"pl-c"],[0,2,"pl-c"]],[[0,50,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,28,"pl-en"],[29,34,"pl-k"],[35,39,"pl-k"],[77,82,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[[4,13,"pl-c1"],[21,35,"pl-smi"],[39,44,"pl-c1"],[48,99,"pl-s"],[48,49,"pl-pds"],[98,99,"pl-pds"]],[[4,13,"pl-c1"],[61,62,"pl-c1"],[66,123,"pl-s"],[66,67,"pl-pds"],[122,123,"pl-pds"]],[[4,6,"pl-k"],[15,31,"pl-smi"],[42,54,"pl-smi"]],[],[[8,28,"pl-c1"],[36,52,"pl-smi"],[62,74,"pl-smi"],[76,119,"pl-s"],[76,77,"pl-pds"],[118,119,"pl-pds"]],[[8,14,"pl-k"]],[],[],[[39,46,"pl-smi"],[54,70,"pl-smi"]],[[11,27,"pl-smi"]],[],[[4,134,"pl-c"],[4,6,"pl-c"]],[[4,56,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,36,"pl-smi"],[86,87,"pl-c1"],[128,129,"pl-c1"]],[[8,17,"pl-c1"],[42,43,"pl-c1"],[44,46,"pl-c1"],[50,143,"pl-s"],[50,51,"pl-pds"],[142,143,"pl-pds"]],[],[[4,67,"pl-c"],[4,6,"pl-c"]],[[4,91,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[54,55,"pl-c1"],[82,83,"pl-c1"],[84,86,"pl-c1"]],[[8,10,"pl-k"],[20,25,"pl-smi"],[102,107,"pl-smi"]],[],[[4,6,"pl-k"]],[],[],[[15,33,"pl-smi"]],[],[],[[4,25,"pl-c1"]],[[12,18,"pl-smi"]],[[20,25,"pl-smi"]],[],[[4,26,"pl-c"],[4,6,"pl-c"]],[[12,36,"pl-smi"]],[[4,6,"pl-k"],[15,29,"pl-smi"]],[],[[45,64,"pl-smi"]],[[8,10,"pl-k"],[20,32,"pl-smi"],[35,36,"pl-c1"],[37,39,"pl-c1"],[51,64,"pl-smi"],[67,68,"pl-c1"],[69,71,"pl-c1"]],[],[[8,31,"pl-c1"]],[],[],[[4,68,"pl-c"],[4,6,"pl-c"]],[[4,89,"pl-c"],[4,6,"pl-c"]],[[12,22,"pl-smi"],[26,27,"pl-c1"]],[[4,6,"pl-k"],[17,21,"pl-c1"],[31,32,"pl-c1"],[37,38,"pl-c1"]],[],[[16,26,"pl-smi"],[43,55,"pl-smi"],[56,60,"pl-c1"]],[[15,27,"pl-smi"],[28,34,"pl-c1"],[50,58,"pl-c1"],[68,69,"pl-c1"]],[],[],[],[[0,11,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,34,"pl-en"],[35,38,"pl-k"],[48,51,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[[4,13,"pl-c1"],[21,35,"pl-smi"],[39,44,"pl-c1"],[48,99,"pl-s"],[48,49,"pl-pds"],[98,99,"pl-pds"]],[[4,13,"pl-c1"],[25,26,"pl-c1"]],[[4,13,"pl-c1"],[22,23,"pl-c1"],[34,37,"pl-c1"],[40,58,"pl-c"],[40,42,"pl-c"]],[],[[11,31,"pl-smi"],[42,47,"pl-smi"],[98,103,"pl-c1"],[120,132,"pl-smi"],[136,137,"pl-c1"]],[[11,29,"pl-smi"],[40,51,"pl-smi"],[53,59,"pl-smi"],[60,61,"pl-smi"],[65,66,"pl-c1"],[67,69,"pl-c1"],[80,100,"pl-smi"],[103,104,"pl-c1"]],[[11,28,"pl-smi"],[39,44,"pl-smi"],[102,103,"pl-c1"]],[[11,26,"pl-smi"],[37,48,"pl-smi"],[50,56,"pl-smi"],[57,58,"pl-smi"],[62,63,"pl-c1"],[64,66,"pl-c1"],[77,94,"pl-smi"],[97,98,"pl-c1"]],[[11,25,"pl-smi"],[36,51,"pl-smi"],[55,56,"pl-c1"],[59,152,"pl-c"],[59,61,"pl-c"]],[],[[4,114,"pl-c"],[4,6,"pl-c"]],[[4,138,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,65,"pl-smi"]],[],[[8,11,"pl-k"],[29,48,"pl-smi"]],[[8,10,"pl-k"],[53,73,"pl-smi"]],[],[[12,18,"pl-c1"],[26,33,"pl-smi"],[41,60,"pl-smi"],[71,83,"pl-smi"],[92,99,"pl-smi"],[107,126,"pl-smi"],[138,150,"pl-smi"]],[[12,18,"pl-c1"],[26,45,"pl-smi"],[63,82,"pl-smi"]],[],[],[],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,37,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,25,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[],[[0,3,"pl-k"],[4,30,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,10,"pl-k"],[26,38,"pl-smi"],[41,42,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,37,"pl-en"],[38,41,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,19,"pl-c1"]],[[4,6,"pl-k"],[19,20,"pl-c1"]],[[26,39,"pl-smi"]],[[4,10,"pl-k"],[11,29,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,37,"pl-en"],[38,43,"pl-k"],[63,66,"pl-k"]],[],[[4,6,"pl-k"],[15,29,"pl-smi"],[33,38,"pl-c1"],[61,77,"pl-smi"]],[[8,14,"pl-k"],[15,17,"pl-s"],[15,16,"pl-pds"],[16,17,"pl-pds"],[19,57,"pl-c"],[19,21,"pl-c"]],[[4,9,"pl-k"],[45,52,"pl-smi"]],[[4,6,"pl-k"],[16,26,"pl-smi"],[31,32,"pl-c1"]],[[8,14,"pl-k"],[15,17,"pl-s"],[15,16,"pl-pds"],[16,17,"pl-pds"]],[[4,10,"pl-k"],[19,31,"pl-smi"],[32,35,"pl-smi"],[44,54,"pl-smi"]],[],[],[[0,123,"pl-c"],[0,2,"pl-c"]],[[0,168,"pl-c"],[0,2,"pl-c"]],[[0,111,"pl-c"],[0,2,"pl-c"]],[[0,118,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,140,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,33,"pl-en"],[34,37,"pl-k"],[48,52,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[[4,13,"pl-c1"],[21,26,"pl-smi"],[56,77,"pl-c"],[56,58,"pl-c"]],[[4,6,"pl-k"],[19,20,"pl-c1"]],[[26,39,"pl-smi"]],[[4,13,"pl-c1"],[26,27,"pl-c1"],[49,61,"pl-smi"]],[[39,46,"pl-smi"]],[[12,34,"pl-smi"]],[],[],[[0,103,"pl-c"],[0,2,"pl-c"]],[[22,48,"pl-en"],[49,52,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"]],[[4,6,"pl-k"],[19,20,"pl-c1"]],[[26,39,"pl-smi"]],[[4,6,"pl-k"],[27,39,"pl-smi"]],[[8,14,"pl-k"],[23,40,"pl-smi"]],[[4,10,"pl-k"],[18,25,"pl-smi"],[36,41,"pl-smi"]],[],[],[[0,61,"pl-c"],[0,2,"pl-c"]],[[0,127,"pl-c"],[0,2,"pl-c"]],[[0,164,"pl-c"],[0,2,"pl-c"]],[[0,123,"pl-c"],[0,2,"pl-c"]],[[0,89,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[7,32,"pl-en"],[33,38,"pl-k"],[58,61,"pl-k"]],[],[[4,9,"pl-k"],[45,52,"pl-smi"]],[[4,9,"pl-k"],[23,27,"pl-smi"]],[[4,9,"pl-k"],[23,27,"pl-smi"]],[[4,42,"pl-c"],[4,6,"pl-c"]],[[4,37,"pl-c"],[4,6,"pl-c"]],[[4,42,"pl-c"],[4,6,"pl-c"]],[[4,37,"pl-c"],[4,6,"pl-c"]],[[9,14,"pl-c1"],[26,34,"pl-smi"],[35,38,"pl-smi"],[39,40,"pl-smi"]],[[9,14,"pl-c1"],[26,34,"pl-smi"],[35,38,"pl-smi"],[39,40,"pl-smi"]],[[4,10,"pl-k"],[11,17,"pl-c1"],[29,37,"pl-smi"],[50,58,"pl-smi"]],[],[],[[0,65,"pl-c"],[0,2,"pl-c"]],[[8,37,"pl-en"],[57,60,"pl-k"],[71,74,"pl-k"]],[],[[4,13,"pl-c1"],[26,27,"pl-c1"],[49,61,"pl-smi"]],[[26,44,"pl-c1"]],[[4,10,"pl-k"],[25,26,"pl-c1"],[39,71,"pl-c"],[39,41,"pl-c"]],[],[],[[0,136,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,32,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[16,17,"pl-c1"]],[[4,10,"pl-k"],[12,15,"pl-k"],[23,40,"pl-smi"]],[],[],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,98,"pl-c"],[0,2,"pl-c"]],[[0,65,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,29,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[16,17,"pl-c1"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[4,10,"pl-k"],[12,15,"pl-k"],[32,46,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,27,"pl-en"],[68,71,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,13,"pl-c1"]],[],[[4,6,"pl-k"]],[[16,17,"pl-c1"]],[],[[4,123,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"]],[],[[4,8,"pl-k"]],[],[[8,10,"pl-k"],[19,27,"pl-smi"],[37,50,"pl-smi"],[51,54,"pl-smi"],[55,56,"pl-smi"],[58,68,"pl-c"],[58,60,"pl-c"]],[[12,18,"pl-k"]],[[8,10,"pl-k"],[25,26,"pl-c1"]],[[30,43,"pl-smi"]],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,58,"pl-smi"]],[[12,18,"pl-k"]],[[8,10,"pl-k"],[19,37,"pl-smi"],[40,41,"pl-c1"],[52,63,"pl-smi"],[71,89,"pl-smi"],[91,97,"pl-smi"]],[[19,37,"pl-smi"]],[[48,59,"pl-smi"],[67,85,"pl-smi"]],[[19,26,"pl-smi"]],[[19,25,"pl-smi"]],[[8,13,"pl-k"]],[],[[4,8,"pl-k"]],[[4,8,"pl-k"]],[],[[8,10,"pl-k"],[19,27,"pl-smi"],[37,50,"pl-smi"],[51,54,"pl-smi"],[55,56,"pl-smi"],[58,68,"pl-c"],[58,60,"pl-c"]],[[12,18,"pl-k"]],[[8,17,"pl-c1"],[31,32,"pl-c1"]],[[8,11,"pl-k"],[61,62,"pl-c1"],[65,66,"pl-c1"]],[[15,25,"pl-smi"]],[[8,13,"pl-k"]],[],[[4,11,"pl-k"]],[[8,17,"pl-c1"],[18,19,"pl-c1"]],[],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,32,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,23,"pl-c"],[0,2,"pl-c"]],[[0,19,"pl-c"],[0,2,"pl-c"]],[[0,31,"pl-c"],[0,2,"pl-c"]],[[0,29,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,27,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,16,"pl-c1"]],[[4,10,"pl-k"],[18,28,"pl-smi"]],[],[],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,24,"pl-en"],[55,60,"pl-k"]],[],[],[[26,38,"pl-smi"]],[],[[4,6,"pl-k"],[16,30,"pl-smi"]],[[8,25,"pl-c1"]],[[4,6,"pl-k"],[15,26,"pl-smi"]],[[8,19,"pl-c1"]],[],[[11,23,"pl-smi"],[33,41,"pl-smi"]],[[11,19,"pl-smi"]],[[11,26,"pl-smi"],[31,36,"pl-smi"],[37,48,"pl-smi"],[49,50,"pl-smi"]],[[11,23,"pl-smi"]],[[4,17,"pl-c1"]],[],[[4,94,"pl-c"],[4,6,"pl-c"]],[[4,83,"pl-c"],[4,6,"pl-c"]],[[11,19,"pl-smi"],[30,45,"pl-smi"],[48,49,"pl-c1"],[50,52,"pl-c1"]],[[11,19,"pl-smi"],[22,27,"pl-c1"],[35,43,"pl-smi"],[52,60,"pl-smi"]],[],[[4,56,"pl-c"],[4,6,"pl-c"]],[[11,22,"pl-smi"],[24,33,"pl-smi"],[36,40,"pl-c1"]],[],[],[[0,43,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,25,"pl-en"]],[],[[33,44,"pl-smi"]],[[4,13,"pl-c1"],[22,33,"pl-smi"]],[],[[4,14,"pl-c"],[4,6,"pl-c"]],[[11,21,"pl-smi"]],[[11,24,"pl-smi"],[28,29,"pl-c1"]],[[11,21,"pl-smi"],[22,23,"pl-c1"],[34,44,"pl-smi"],[45,46,"pl-c1"]],[[11,29,"pl-smi"],[33,34,"pl-c1"]],[[11,22,"pl-smi"],[25,29,"pl-c1"]],[],[[4,24,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[27,35,"pl-smi"]],[[4,6,"pl-k"],[15,25,"pl-smi"],[29,30,"pl-c1"],[41,56,"pl-smi"],[59,60,"pl-c1"]],[[26,28,"pl-smi"],[29,38,"pl-smi"],[39,40,"pl-smi"],[50,59,"pl-smi"],[60,63,"pl-smi"],[64,65,"pl-smi"]],[],[[11,19,"pl-smi"],[29,37,"pl-smi"]],[[11,26,"pl-smi"],[29,30,"pl-c1"],[31,33,"pl-c1"]],[[11,27,"pl-smi"],[38,40,"pl-smi"],[41,47,"pl-smi"],[48,49,"pl-smi"],[59,70,"pl-smi"],[72,86,"pl-c"],[72,74,"pl-c"]],[],[[12,14,"pl-smi"],[15,37,"pl-smi"],[40,41,"pl-c1"],[42,44,"pl-c1"]],[[12,14,"pl-smi"],[15,32,"pl-smi"],[35,41,"pl-c1"],[50,52,"pl-smi"],[53,62,"pl-smi"],[63,64,"pl-smi"],[74,76,"pl-smi"],[77,86,"pl-smi"],[87,88,"pl-smi"],[98,113,"pl-smi"],[116,190,"pl-c"],[116,118,"pl-c"]],[[12,14,"pl-smi"],[15,27,"pl-smi"],[38,40,"pl-smi"],[41,53,"pl-smi"],[56,62,"pl-c1"],[63,64,"pl-c1"],[65,67,"pl-c1"],[69,70,"pl-c1"],[71,73,"pl-c1"],[76,188,"pl-c"],[76,78,"pl-c"]],[[12,14,"pl-smi"],[15,25,"pl-smi"],[36,38,"pl-smi"],[39,47,"pl-smi"],[50,55,"pl-c1"]],[[12,14,"pl-smi"],[15,27,"pl-smi"],[28,29,"pl-smi"]],[],[[4,123,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,23,"pl-smi"]],[],[[8,23,"pl-c1"],[51,62,"pl-c1"]],[[8,10,"pl-k"],[19,29,"pl-smi"],[33,34,"pl-c1"]],[[19,33,"pl-smi"],[36,40,"pl-c1"]],[],[],[],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,23,"pl-en"]],[],[],[[28,41,"pl-smi"]],[[4,13,"pl-c1"],[31,42,"pl-smi"]],[[4,13,"pl-c1"],[21,32,"pl-smi"]],[],[[4,6,"pl-k"],[15,28,"pl-smi"],[33,34,"pl-c1"]],[[8,20,"pl-c1"]],[],[[4,14,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[10,20,"pl-smi"]],[[8,23,"pl-c1"],[24,28,"pl-c1"],[30,33,"pl-s"],[30,31,"pl-pds"],[32,33,"pl-pds"]],[],[[4,110,"pl-c"],[4,6,"pl-c"]],[[4,116,"pl-c"],[4,6,"pl-c"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[36,44,"pl-smi"]],[],[[4,26,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[31,39,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[31,39,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[46,56,"pl-smi"],[59,60,"pl-c1"],[71,86,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[47,57,"pl-smi"],[60,61,"pl-c1"],[72,89,"pl-smi"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[4,6,"pl-k"],[16,24,"pl-smi"],[66,76,"pl-smi"],[80,81,"pl-c1"],[93,105,"pl-smi"]],[[24,47,"pl-smi"]],[],[[4,9,"pl-k"],[10,14,"pl-k"],[45,58,"pl-smi"],[59,62,"pl-smi"],[63,64,"pl-smi"],[84,97,"pl-smi"],[98,101,"pl-smi"],[102,103,"pl-smi"]],[[4,6,"pl-k"]],[],[[8,47,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[19,36,"pl-smi"],[41,42,"pl-c1"],[48,50,"pl-smi"],[51,59,"pl-smi"],[60,61,"pl-smi"],[76,78,"pl-smi"],[79,87,"pl-smi"],[88,89,"pl-smi"],[117,131,"pl-smi"],[134,135,"pl-c1"]],[[28,42,"pl-smi"],[52,62,"pl-smi"]],[],[[8,49,"pl-c"],[8,10,"pl-c"]],[[24,25,"pl-c1"]],[[24,25,"pl-c1"]],[[8,10,"pl-k"],[19,29,"pl-smi"],[30,31,"pl-c1"]],[[29,39,"pl-smi"],[40,41,"pl-c1"]],[[8,12,"pl-k"],[13,15,"pl-k"],[24,29,"pl-smi"]],[[22,33,"pl-c1"],[42,59,"pl-smi"],[62,63,"pl-c1"]],[[8,10,"pl-k"],[19,29,"pl-smi"],[30,31,"pl-c1"]],[[29,39,"pl-smi"],[40,41,"pl-c1"]],[],[[8,37,"pl-c"],[8,10,"pl-c"]],[[31,32,"pl-c1"]],[[8,13,"pl-k"],[14,19,"pl-k"]],[[8,10,"pl-k"],[19,29,"pl-smi"],[32,33,"pl-c1"],[45,50,"pl-smi"]],[[37,49,"pl-smi"],[89,106,"pl-smi"],[116,132,"pl-smi"]],[],[[8,13,"pl-k"],[14,18,"pl-k"],[47,65,"pl-smi"],[69,70,"pl-c1"]],[[8,13,"pl-k"],[14,18,"pl-k"]],[[8,10,"pl-k"],[52,53,"pl-c1"]],[],[[12,109,"pl-c"],[12,14,"pl-c"]],[[12,113,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[24,29,"pl-smi"],[59,60,"pl-c1"]],[[24,32,"pl-smi"],[34,44,"pl-smi"],[45,53,"pl-smi"],[63,84,"pl-smi"],[85,91,"pl-c1"]],[[19,31,"pl-smi"],[33,50,"pl-c1"],[59,67,"pl-smi"]],[],[],[[8,30,"pl-c"],[8,10,"pl-c"]],[[8,101,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"]],[],[[19,27,"pl-smi"],[35,43,"pl-smi"],[44,47,"pl-smi"],[48,49,"pl-smi"],[65,73,"pl-smi"],[74,77,"pl-smi"],[78,79,"pl-smi"]],[[21,29,"pl-c1"],[37,47,"pl-smi"]],[[12,14,"pl-k"],[27,28,"pl-c1"],[41,44,"pl-smi"],[45,46,"pl-smi"],[58,61,"pl-smi"],[62,63,"pl-smi"]],[[24,32,"pl-smi"],[34,47,"pl-c1"],[57,60,"pl-smi"],[71,74,"pl-smi"]],[[12,14,"pl-k"],[27,28,"pl-c1"],[41,44,"pl-smi"],[45,46,"pl-smi"],[58,61,"pl-smi"],[62,63,"pl-smi"]],[[24,32,"pl-smi"],[34,47,"pl-c1"],[57,60,"pl-smi"],[71,74,"pl-smi"]],[],[],[[8,37,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"]],[],[[56,67,"pl-smi"],[75,93,"pl-smi"]],[[12,15,"pl-k"],[57,68,"pl-smi"],[69,70,"pl-c1"]],[],[[16,92,"pl-c"],[16,18,"pl-c"]],[[16,153,"pl-c"],[16,18,"pl-c"]],[[16,21,"pl-k"],[57,64,"pl-smi"],[76,82,"pl-smi"]],[[38,56,"pl-c1"],[75,81,"pl-smi"]],[[29,37,"pl-c1"],[45,55,"pl-smi"]],[[29,32,"pl-smi"],[33,34,"pl-smi"],[37,42,"pl-c1"],[56,59,"pl-smi"],[60,61,"pl-smi"],[71,79,"pl-smi"],[80,83,"pl-smi"],[84,85,"pl-smi"],[92,160,"pl-c"],[92,94,"pl-c"]],[[29,32,"pl-smi"],[33,34,"pl-smi"],[37,42,"pl-c1"],[56,59,"pl-smi"],[60,61,"pl-smi"],[71,75,"pl-smi"]],[[16,18,"pl-k"],[33,36,"pl-smi"],[37,38,"pl-smi"],[54,57,"pl-smi"],[58,59,"pl-smi"]],[[28,36,"pl-smi"],[38,51,"pl-c1"],[65,68,"pl-smi"],[83,86,"pl-smi"],[99,106,"pl-smi"]],[],[],[],[[8,26,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[46,56,"pl-smi"],[57,60,"pl-smi"],[61,62,"pl-smi"],[81,91,"pl-smi"],[92,95,"pl-smi"],[96,97,"pl-smi"]],[[20,28,"pl-smi"],[30,37,"pl-c1"],[38,44,"pl-c1"],[52,60,"pl-smi"],[70,76,"pl-c1"],[84,92,"pl-smi"]],[],[[8,72,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[57,67,"pl-smi"],[68,71,"pl-smi"],[72,73,"pl-smi"],[92,102,"pl-smi"],[103,106,"pl-smi"],[107,108,"pl-smi"]],[[20,28,"pl-smi"],[30,37,"pl-c1"],[38,44,"pl-c1"],[52,60,"pl-smi"],[70,76,"pl-c1"],[84,92,"pl-smi"],[109,126,"pl-smi"]],[],[],[[4,112,"pl-c"],[4,6,"pl-c"]],[[4,113,"pl-c"],[4,6,"pl-c"]],[[4,35,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,11,"pl-k"],[13,16,"pl-k"],[28,29,"pl-c1"],[49,61,"pl-smi"]],[[19,26,"pl-smi"],[37,52,"pl-smi"],[62,70,"pl-smi"]],[[8,13,"pl-k"],[14,19,"pl-k"],[20,22,"pl-c1"],[25,30,"pl-c1"],[38,46,"pl-smi"],[49,50,"pl-c1"],[59,72,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"]],[[24,40,"pl-smi"],[43,45,"pl-c1"],[55,64,"pl-smi"],[65,68,"pl-smi"],[69,70,"pl-smi"]],[],[[8,10,"pl-k"]],[],[[12,21,"pl-c1"],[29,43,"pl-smi"],[47,52,"pl-c1"]],[[19,33,"pl-smi"],[36,40,"pl-c1"]],[],[[12,115,"pl-c"],[12,14,"pl-c"]],[[19,29,"pl-smi"],[30,33,"pl-smi"],[34,35,"pl-smi"],[45,66,"pl-smi"],[67,70,"pl-smi"],[71,72,"pl-smi"],[75,80,"pl-c1"],[81,83,"pl-c1"],[92,105,"pl-smi"],[106,109,"pl-smi"],[110,111,"pl-smi"]],[[19,29,"pl-smi"],[30,33,"pl-smi"],[34,35,"pl-smi"],[45,66,"pl-smi"],[67,70,"pl-smi"],[71,72,"pl-smi"],[82,95,"pl-smi"],[96,99,"pl-smi"],[100,101,"pl-smi"]],[[19,40,"pl-smi"],[50,72,"pl-smi"]],[[12,21,"pl-c1"],[29,50,"pl-smi"],[51,54,"pl-smi"],[55,56,"pl-smi"],[67,88,"pl-smi"],[89,92,"pl-smi"],[93,94,"pl-smi"]],[],[[12,17,"pl-k"],[38,46,"pl-smi"],[56,64,"pl-smi"]],[[19,27,"pl-smi"],[38,40,"pl-smi"],[41,50,"pl-smi"],[51,52,"pl-smi"],[62,70,"pl-smi"],[71,74,"pl-smi"],[75,76,"pl-smi"],[86,94,"pl-smi"],[104,113,"pl-smi"],[114,117,"pl-smi"],[118,119,"pl-smi"]],[[19,27,"pl-smi"],[37,45,"pl-smi"]],[[12,15,"pl-k"],[17,20,"pl-k"],[32,33,"pl-c1"],[53,65,"pl-smi"]],[],[[51,58,"pl-smi"]],[[24,42,"pl-smi"],[53,72,"pl-smi"]],[[24,32,"pl-smi"],[33,36,"pl-smi"],[37,38,"pl-smi"],[48,69,"pl-smi"],[70,73,"pl-smi"],[74,75,"pl-smi"]],[],[],[[12,101,"pl-c"],[12,14,"pl-c"]],[[12,45,"pl-c1"],[61,68,"pl-smi"],[69,70,"pl-c1"],[72,80,"pl-smi"]],[[19,31,"pl-smi"],[33,50,"pl-c1"],[59,67,"pl-smi"],[76,83,"pl-smi"],[84,85,"pl-c1"],[87,105,"pl-smi"]],[],[],[],[[4,6,"pl-k"],[17,25,"pl-smi"]],[[15,32,"pl-smi"]],[[11,22,"pl-smi"],[25,30,"pl-c1"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,32,"pl-c"],[0,2,"pl-c"]],[[0,30,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,3,"pl-k"],[4,30,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,16,"pl-c1"]],[[4,10,"pl-k"],[18,31,"pl-smi"]],[],[],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,31,"pl-en"],[32,35,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[],[[4,6,"pl-k"],[15,28,"pl-smi"]],[],[[8,10,"pl-k"],[19,32,"pl-smi"],[37,38,"pl-c1"]],[[12,24,"pl-c1"]],[[8,10,"pl-k"],[25,26,"pl-c1"],[48,60,"pl-smi"],[65,70,"pl-c1"]],[],[[12,32,"pl-c1"],[45,46,"pl-c1"],[68,80,"pl-smi"],[82,127,"pl-s"],[82,83,"pl-pds"],[126,127,"pl-pds"]],[[12,18,"pl-k"],[19,24,"pl-c1"]],[],[[8,22,"pl-c1"]],[],[],[[4,113,"pl-c"],[4,6,"pl-c"]],[[4,111,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[18,25,"pl-smi"],[36,51,"pl-smi"]],[],[],[[0,94,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,27,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[],[[4,6,"pl-k"],[15,26,"pl-smi"],[37,50,"pl-smi"],[53,54,"pl-c1"],[64,76,"pl-smi"]],[],[[8,10,"pl-k"],[19,32,"pl-smi"],[37,38,"pl-c1"]],[[12,24,"pl-c1"]],[[8,22,"pl-c1"],[37,50,"pl-smi"],[53,54,"pl-c1"]],[],[[4,8,"pl-k"]],[],[[8,20,"pl-c1"]],[[8,22,"pl-c1"],[30,31,"pl-c1"]],[],[],[[4,113,"pl-c"],[4,6,"pl-c"]],[[4,111,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[18,25,"pl-smi"],[33,46,"pl-smi"],[48,63,"pl-smi"]],[],[],[],[[0,63,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,26,"pl-en"],[46,49,"pl-k"]],[],[],[[39,46,"pl-smi"]],[[33,44,"pl-smi"]],[[11,24,"pl-smi"]],[],[[4,71,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[28,36,"pl-smi"]],[[4,6,"pl-k"],[16,21,"pl-smi"]],[[26,42,"pl-smi"],[44,126,"pl-c"],[44,46,"pl-c"]],[],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[36,44,"pl-smi"],[54,69,"pl-smi"]],[[12,14,"pl-smi"],[15,27,"pl-smi"],[28,29,"pl-smi"],[40,42,"pl-smi"],[43,52,"pl-smi"],[53,54,"pl-smi"]],[[12,14,"pl-smi"],[15,28,"pl-smi"],[29,30,"pl-smi"],[51,54,"pl-smi"],[55,56,"pl-smi"],[67,69,"pl-smi"],[70,76,"pl-smi"],[77,78,"pl-smi"],[80,97,"pl-c"],[80,82,"pl-c"]],[[12,14,"pl-smi"],[15,32,"pl-smi"],[33,34,"pl-smi"],[45,47,"pl-smi"],[48,57,"pl-smi"],[58,59,"pl-smi"],[61,160,"pl-c"],[61,63,"pl-c"]],[[12,14,"pl-smi"],[15,37,"pl-smi"],[47,62,"pl-smi"]],[[12,14,"pl-smi"],[15,30,"pl-smi"],[56,71,"pl-smi"]],[],[[4,61,"pl-c"],[4,6,"pl-c"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,39,"pl-smi"],[40,49,"pl-smi"],[50,51,"pl-smi"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,45,"pl-smi"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,45,"pl-smi"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[35,44,"pl-smi"]],[],[[12,21,"pl-smi"],[32,43,"pl-smi"]],[[4,6,"pl-k"],[16,27,"pl-smi"]],[],[[10,22,"pl-smi"],[23,25,"pl-smi"],[28,29,"pl-c1"]],[[10,22,"pl-smi"],[23,34,"pl-smi"],[37,38,"pl-c1"]],[],[],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,129,"pl-c"],[8,10,"pl-c"]],[[15,27,"pl-smi"],[29,46,"pl-c1"],[55,63,"pl-smi"]],[[8,79,"pl-c"],[8,10,"pl-c"]],[],[[4,8,"pl-k"]],[],[[8,74,"pl-c"],[8,10,"pl-c"]],[[8,41,"pl-c1"],[58,66,"pl-smi"]],[[15,27,"pl-smi"],[29,46,"pl-c1"],[55,63,"pl-smi"],[73,91,"pl-smi"]],[],[],[[4,14,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[10,20,"pl-smi"],[33,44,"pl-smi"]],[],[[8,23,"pl-c1"],[33,35,"pl-smi"],[36,45,"pl-smi"],[47,50,"pl-s"],[47,48,"pl-pds"],[49,50,"pl-pds"]],[[10,21,"pl-smi"]],[],[],[],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,24,"pl-en"]],[],[[39,46,"pl-smi"],[54,67,"pl-smi"]],[[33,44,"pl-smi"]],[],[[4,6,"pl-k"],[16,18,"pl-smi"],[19,27,"pl-smi"]],[[8,59,"pl-c1"]],[],[[4,71,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"]],[[4,6,"pl-k"],[15,23,"pl-smi"]],[[31,53,"pl-smi"],[56,141,"pl-c"],[56,58,"pl-c"]],[[4,8,"pl-k"]],[[29,43,"pl-smi"],[55,74,"pl-smi"],[86,103,"pl-smi"]],[[19,24,"pl-c1"],[47,49,"pl-smi"],[50,62,"pl-smi"],[63,64,"pl-smi"]],[[4,6,"pl-k"],[16,25,"pl-smi"]],[[15,23,"pl-smi"],[26,31,"pl-c1"],[39,47,"pl-smi"],[57,59,"pl-smi"],[60,72,"pl-smi"],[73,74,"pl-smi"],[84,99,"pl-smi"]],[[12,21,"pl-smi"],[32,34,"pl-smi"],[35,44,"pl-smi"]],[],[[4,49,"pl-c"],[4,6,"pl-c"]],[[4,110,"pl-c"],[4,6,"pl-c"]],[[11,26,"pl-smi"],[29,34,"pl-c1"],[42,57,"pl-smi"],[67,69,"pl-smi"],[70,92,"pl-smi"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,26,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,71,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,115,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,36,"pl-en"],[37,42,"pl-k"],[62,65,"pl-k"]],[],[[4,9,"pl-k"],[45,52,"pl-smi"]],[[4,9,"pl-k"]],[[4,9,"pl-k"],[10,15,"pl-k"],[45,59,"pl-smi"],[69,81,"pl-smi"],[84,85,"pl-c1"],[86,88,"pl-c1"],[98,111,"pl-smi"],[121,134,"pl-smi"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,95,"pl-c"],[8,10,"pl-c"]],[[8,97,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[20,32,"pl-smi"],[42,62,"pl-smi"]],[],[[32,45,"pl-smi"],[46,49,"pl-smi"],[50,51,"pl-smi"],[62,82,"pl-smi"],[93,105,"pl-smi"],[140,144,"pl-smi"]],[[43,56,"pl-smi"],[66,78,"pl-smi"],[88,101,"pl-smi"]],[],[],[[4,8,"pl-k"],[9,11,"pl-k"],[21,26,"pl-smi"],[70,71,"pl-c1"]],[],[[8,111,"pl-c"],[8,10,"pl-c"]],[[8,109,"pl-c"],[8,10,"pl-c"]],[[8,85,"pl-c"],[8,10,"pl-c"]],[[8,133,"pl-c"],[8,10,"pl-c"]],[[8,73,"pl-c"],[8,10,"pl-c"]],[[27,35,"pl-smi"],[36,39,"pl-smi"],[40,41,"pl-smi"],[52,71,"pl-smi"],[82,103,"pl-smi"],[106,107,"pl-c1"],[141,145,"pl-smi"]],[[8,44,"pl-c"],[8,10,"pl-c"]],[[28,41,"pl-smi"]],[[28,40,"pl-smi"],[43,44,"pl-c1"],[45,47,"pl-c1"]],[[28,41,"pl-smi"]],[],[[4,10,"pl-k"]],[],[],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,36,"pl-en"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[37,42,"pl-c1"],[51,68,"pl-smi"],[78,97,"pl-smi"],[109,117,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[48,71,"pl-smi"],[82,90,"pl-smi"]],[[4,9,"pl-k"]],[[4,6,"pl-k"],[18,23,"pl-smi"]],[[21,26,"pl-c1"]],[],[[4,65,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[17,22,"pl-smi"],[70,94,"pl-smi"],[97,98,"pl-c1"],[99,101,"pl-c1"]],[[8,10,"pl-k"],[21,26,"pl-smi"],[68,73,"pl-smi"]],[[33,57,"pl-smi"]],[],[[4,10,"pl-k"],[11,16,"pl-c1"],[36,50,"pl-smi"]],[],[],[[0,48,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,31,"pl-en"],[32,35,"pl-k"],[46,51,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,13,"pl-c1"],[23,27,"pl-c1"],[38,52,"pl-smi"],[56,61,"pl-c1"]],[[4,13,"pl-c1"],[26,27,"pl-c1"],[49,61,"pl-smi"]],[[41,48,"pl-smi"]],[[4,9,"pl-k"]],[],[[4,30,"pl-c"],[4,6,"pl-c"]],[[4,134,"pl-c"],[4,6,"pl-c"]],[[4,13,"pl-c1"],[21,35,"pl-smi"],[38,39,"pl-c1"],[40,42,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[35,49,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[28,33,"pl-c1"],[55,63,"pl-smi"],[66,161,"pl-c"],[66,68,"pl-c"]],[[21,28,"pl-c1"]],[[4,6,"pl-k"],[18,28,"pl-smi"],[60,72,"pl-smi"]],[[8,14,"pl-k"]],[],[[4,117,"pl-c"],[4,6,"pl-c"]],[[44,61,"pl-smi"],[66,67,"pl-c1"],[79,86,"pl-smi"],[97,114,"pl-smi"],[118,122,"pl-c1"]],[],[[4,107,"pl-c"],[4,6,"pl-c"]],[[4,25,"pl-c"],[4,6,"pl-c"]],[[4,27,"pl-c"],[4,6,"pl-c"]],[[4,47,"pl-c"],[4,6,"pl-c"]],[[4,59,"pl-c"],[4,6,"pl-c"]],[[4,117,"pl-c"],[4,6,"pl-c"]],[],[[4,104,"pl-c"],[4,6,"pl-c"]],[[4,104,"pl-c"],[4,6,"pl-c"]],[[4,17,"pl-c"],[4,6,"pl-c"]],[[4,126,"pl-c"],[4,6,"pl-c"]],[[4,133,"pl-c"],[4,6,"pl-c"]],[[4,215,"pl-c"],[4,6,"pl-c"]],[[4,85,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,85,"pl-c"],[4,6,"pl-c"]],[[4,85,"pl-c"],[4,6,"pl-c"]],[[4,85,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,97,"pl-c"],[4,6,"pl-c"]],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,63,"pl-c"],[4,6,"pl-c"]],[],[[4,29,"pl-c"],[4,6,"pl-c"]],[[4,191,"pl-c"],[4,6,"pl-c"]],[[4,170,"pl-c"],[4,6,"pl-c"]],[],[[4,143,"pl-c"],[4,6,"pl-c"]],[],[[4,133,"pl-c"],[4,6,"pl-c"]],[[4,40,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[18,23,"pl-smi"]],[[8,10,"pl-k"],[32,55,"pl-smi"],[60,61,"pl-c1"],[72,79,"pl-smi"],[87,110,"pl-smi"],[112,124,"pl-smi"],[138,150,"pl-smi"]],[],[[22,34,"pl-smi"]],[[19,34,"pl-smi"],[37,41,"pl-c1"]],[[12,18,"pl-k"]],[],[],[[4,132,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[20,24,"pl-c1"]],[[30,47,"pl-smi"],[52,53,"pl-c1"],[65,72,"pl-smi"],[83,100,"pl-smi"],[104,108,"pl-c1"]],[[4,6,"pl-k"],[20,24,"pl-c1"]],[[8,14,"pl-k"]],[],[[4,118,"pl-c"],[4,6,"pl-c"]],[[4,76,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[27,32,"pl-c1"],[43,55,"pl-smi"],[86,98,"pl-smi"]],[[31,43,"pl-smi"],[56,68,"pl-smi"]],[[4,13,"pl-c1"],[31,32,"pl-c1"],[33,35,"pl-c1"],[56,57,"pl-c1"],[58,60,"pl-c1"]],[[14,26,"pl-smi"]],[[14,26,"pl-smi"]],[[4,6,"pl-k"],[19,24,"pl-smi"],[37,42,"pl-smi"]],[[8,41,"pl-c1"]],[[11,26,"pl-smi"],[29,33,"pl-c1"]],[],[],[[0,53,"pl-c"],[0,2,"pl-c"]],[[0,113,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,41,"pl-en"],[61,64,"pl-k"]],[],[[4,38,"pl-c"],[4,6,"pl-c"]],[[39,46,"pl-smi"]],[[4,6,"pl-k"],[17,26,"pl-smi"]],[[8,14,"pl-k"]],[[12,32,"pl-smi"],[36,37,"pl-c1"],[41,42,"pl-c1"]],[[11,30,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,38,"pl-en"]],[],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[21,30,"pl-smi"],[44,49,"pl-smi"],[89,136,"pl-c"],[89,91,"pl-c"]],[[12,20,"pl-k"]],[[16,36,"pl-smi"],[40,41,"pl-c1"],[45,46,"pl-c1"]],[[16,28,"pl-smi"],[32,33,"pl-c1"],[37,38,"pl-c1"]],[],[],[],[[0,4,"pl-k"],[5,45,"pl-en"]],[],[[4,13,"pl-c1"],[21,44,"pl-smi"],[49,50,"pl-c1"],[61,85,"pl-smi"],[90,91,"pl-c1"]],[],[[4,34,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[27,28,"pl-c1"],[29,31,"pl-c1"]],[[4,9,"pl-k"],[26,27,"pl-c1"],[28,30,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[21,30,"pl-smi"],[44,49,"pl-smi"]],[[12,20,"pl-k"]],[[8,17,"pl-c1"],[26,39,"pl-smi"],[42,43,"pl-c1"],[44,46,"pl-c1"]],[[34,47,"pl-smi"]],[[33,45,"pl-smi"]],[],[[4,13,"pl-c1"],[31,32,"pl-c1"],[33,35,"pl-c1"],[55,56,"pl-c1"],[57,59,"pl-c1"]],[],[[4,24,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[21,30,"pl-smi"],[44,49,"pl-smi"]],[[12,20,"pl-k"]],[[16,29,"pl-smi"],[41,53,"pl-smi"]],[[8,17,"pl-c1"],[26,39,"pl-smi"],[42,43,"pl-c1"],[44,46,"pl-c1"]],[],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,43,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,34,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,187,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,38,"pl-en"]],[],[],[[28,41,"pl-smi"]],[[26,38,"pl-smi"]],[],[[4,63,"pl-c"],[4,6,"pl-c"]],[[11,34,"pl-smi"],[45,53,"pl-smi"]],[[4,37,"pl-c1"],[53,74,"pl-smi"]],[[11,23,"pl-smi"],[25,42,"pl-c1"],[51,59,"pl-smi"],[68,89,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,37,"pl-en"]],[],[],[[28,41,"pl-smi"]],[[26,38,"pl-smi"]],[[39,46,"pl-smi"],[54,67,"pl-smi"]],[],[[4,62,"pl-c"],[4,6,"pl-c"]],[[4,37,"pl-c1"],[53,76,"pl-smi"]],[[11,23,"pl-smi"],[25,42,"pl-c1"],[51,59,"pl-smi"],[69,87,"pl-smi"]],[],[],[[0,56,"pl-c"],[0,2,"pl-c"]],[[0,109,"pl-c"],[0,2,"pl-c"]],[[0,42,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,61,"pl-c"],[0,2,"pl-c"]],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,112,"pl-c"],[0,2,"pl-c"]],[[0,103,"pl-c"],[0,2,"pl-c"]],[[0,119,"pl-c"],[0,2,"pl-c"]],[[0,118,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,117,"pl-c"],[0,2,"pl-c"]],[[0,52,"pl-c"],[0,2,"pl-c"]],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[[4,9,"pl-k"],[10,13,"pl-k"],[46,61,"pl-smi"],[64,65,"pl-c1"],[69,70,"pl-c1"],[73,74,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[41,46,"pl-smi"],[75,76,"pl-c1"],[86,105,"pl-smi"]],[[4,9,"pl-k"],[10,13,"pl-k"],[32,33,"pl-c1"],[36,37,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[43,62,"pl-smi"],[72,84,"pl-smi"],[89,95,"pl-c1"],[103,121,"pl-smi"],[130,148,"pl-smi"],[150,181,"pl-c1"],[189,201,"pl-smi"],[207,208,"pl-c1"],[214,215,"pl-c1"],[218,219,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"]],[[11,23,"pl-smi"],[25,30,"pl-c1"],[38,49,"pl-smi"],[51,59,"pl-smi"]],[[11,27,"pl-smi"],[79,80,"pl-c1"],[101,102,"pl-c1"],[106,107,"pl-c1"]],[[11,32,"pl-smi"]],[[11,33,"pl-smi"],[71,86,"pl-smi"],[89,90,"pl-c1"],[94,95,"pl-c1"]],[],[[4,7,"pl-k"],[31,32,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[20,30,"pl-smi"],[42,52,"pl-smi"]],[],[[20,37,"pl-smi"]],[[20,39,"pl-smi"],[100,115,"pl-smi"],[118,119,"pl-c1"],[141,142,"pl-c1"],[145,146,"pl-c1"]],[[12,14,"pl-k"],[25,30,"pl-smi"]],[],[],[[8,12,"pl-k"]],[],[[20,37,"pl-smi"],[48,67,"pl-smi"],[77,93,"pl-smi"]],[],[[16,34,"pl-smi"],[45,62,"pl-smi"]],[],[],[[4,128,"pl-c"],[4,6,"pl-c"]],[[4,130,"pl-c"],[4,6,"pl-c"]],[[4,107,"pl-c"],[4,6,"pl-c"]],[[11,21,"pl-smi"],[31,44,"pl-smi"]],[[11,32,"pl-smi"],[42,53,"pl-smi"],[55,63,"pl-smi"]],[[11,32,"pl-smi"],[42,54,"pl-smi"]],[[4,13,"pl-c1"],[21,31,"pl-smi"],[32,35,"pl-smi"],[36,37,"pl-smi"],[48,58,"pl-smi"],[59,62,"pl-smi"],[63,64,"pl-smi"]],[],[],[[0,122,"pl-c"],[0,2,"pl-c"]],[[0,112,"pl-c"],[0,2,"pl-c"]],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,100,"pl-c"],[0,2,"pl-c"]],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,82,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,83,"pl-c"],[0,2,"pl-c"]],[[0,95,"pl-c"],[0,2,"pl-c"]],[[0,96,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,68,"pl-c"],[0,2,"pl-c"]],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,81,"pl-c"],[0,2,"pl-c"]],[[0,98,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,88,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,113,"pl-c"],[0,2,"pl-c"]],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,101,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,70,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[],[[42,54,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[38,53,"pl-smi"],[56,57,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[38,56,"pl-smi"],[59,60,"pl-c1"]],[[4,13,"pl-c1"],[24,32,"pl-smi"],[36,37,"pl-c1"]],[],[[4,100,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,21,"pl-en"]],[],[],[[8,11,"pl-k"],[40,41,"pl-c1"]],[[39,43,"pl-c1"]],[],[[4,7,"pl-k"],[27,31,"pl-c1"]],[[28,29,"pl-c1"]],[],[[4,84,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,13,"pl-k"],[35,36,"pl-c1"],[46,58,"pl-smi"],[61,62,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[46,49,"pl-k"],[50,81,"pl-c1"]],[[6,16,"pl-smi"],[17,24,"pl-c1"],[56,57,"pl-c1"]],[[4,10,"pl-c1"],[13,23,"pl-smi"],[24,28,"pl-smi"],[30,31,"pl-c1"],[64,65,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[24,36,"pl-c1"]],[[24,36,"pl-smi"],[55,59,"pl-k"],[64,74,"pl-smi"],[75,79,"pl-smi"]],[[51,55,"pl-k"],[60,70,"pl-smi"],[71,75,"pl-smi"],[110,111,"pl-c1"]],[],[[4,66,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"],[40,58,"pl-smi"]],[[12,20,"pl-k"]],[[43,50,"pl-smi"]],[],[[8,13,"pl-k"],[14,17,"pl-k"],[57,58,"pl-c1"],[61,62,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[37,38,"pl-c1"]],[],[[12,17,"pl-k"],[18,21,"pl-k"],[57,58,"pl-c1"],[70,87,"pl-smi"],[98,117,"pl-smi"]],[],[[12,88,"pl-c"],[12,14,"pl-c"]],[[52,61,"pl-smi"]],[[12,14,"pl-k"],[29,39,"pl-smi"],[40,44,"pl-smi"],[47,48,"pl-c1"],[65,75,"pl-smi"],[76,80,"pl-c1"],[83,92,"pl-smi"],[96,97,"pl-c1"],[114,124,"pl-smi"],[125,129,"pl-c1"],[132,144,"pl-smi"],[148,152,"pl-c1"],[154,189,"pl-c"],[154,156,"pl-c"]],[[29,39,"pl-smi"],[40,48,"pl-c1"]],[[12,14,"pl-k"],[29,39,"pl-smi"],[40,44,"pl-smi"],[48,49,"pl-c1"]],[[16,24,"pl-k"]],[],[[12,92,"pl-c"],[12,14,"pl-c"]],[[12,130,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[26,31,"pl-smi"]],[],[[16,21,"pl-k"]],[[16,18,"pl-k"]],[[36,41,"pl-c1"],[50,69,"pl-smi"],[79,101,"pl-smi"],[104,120,"pl-c"],[104,106,"pl-c"]],[[16,20,"pl-k"],[21,23,"pl-k"],[46,47,"pl-c1"]],[[36,41,"pl-c1"],[50,67,"pl-smi"],[77,99,"pl-smi"],[104,142,"pl-c"],[104,106,"pl-c"]],[[16,20,"pl-k"]],[[44,63,"pl-smi"],[104,141,"pl-c"],[104,106,"pl-c"]],[[16,18,"pl-k"],[44,52,"pl-smi"],[53,56,"pl-smi"],[57,58,"pl-smi"]],[[20,28,"pl-k"]],[],[],[[12,17,"pl-k"],[18,21,"pl-k"],[73,91,"pl-smi"],[94,95,"pl-c1"],[98,99,"pl-c1"],[141,142,"pl-c1"],[145,146,"pl-c1"],[149,150,"pl-c1"]],[[12,21,"pl-c1"]],[],[[12,14,"pl-k"],[29,42,"pl-smi"],[46,47,"pl-c1"]],[[29,37,"pl-smi"],[40,46,"pl-c1"]],[[12,28,"pl-c1"],[42,54,"pl-smi"]],[[25,38,"pl-smi"]],[[25,33,"pl-smi"],[34,37,"pl-c1"],[51,61,"pl-smi"],[62,63,"pl-c1"],[65,73,"pl-smi"]],[[33,34,"pl-c1"]],[],[],[[8,42,"pl-c"],[8,10,"pl-c"]],[[8,121,"pl-c"],[8,10,"pl-c"]],[[16,34,"pl-smi"],[64,65,"pl-c1"]],[],[],[[4,35,"pl-c"],[4,6,"pl-c"]],[[1,3,"pl-k"],[4,5,"pl-c1"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[1,6,"pl-k"]],[],[[4,53,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[28,29,"pl-c1"]],[],[[8,153,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,17,"pl-k"],[42,43,"pl-c1"]],[[10,37,"pl-smi"],[38,44,"pl-c1"],[55,61,"pl-smi"],[88,152,"pl-c"],[88,90,"pl-c"]],[[35,62,"pl-smi"],[63,67,"pl-smi"]],[[8,29,"pl-c1"],[79,85,"pl-smi"]],[[8,26,"pl-c1"],[50,72,"pl-smi"]],[[8,17,"pl-c1"],[34,39,"pl-c1"],[50,72,"pl-smi"]],[[8,11,"pl-k"],[40,46,"pl-smi"],[89,90,"pl-c1"]],[[8,117,"pl-c"],[8,10,"pl-c"]],[[34,46,"pl-smi"]],[[8,11,"pl-k"],[13,16,"pl-k"],[33,34,"pl-c1"],[52,64,"pl-c1"]],[],[[12,14,"pl-k"],[16,19,"pl-k"],[71,84,"pl-smi"]],[],[],[[54,62,"pl-smi"]],[],[[16,108,"pl-c"],[16,18,"pl-c"]],[[16,105,"pl-c"],[16,18,"pl-c"]],[[16,64,"pl-c"],[16,18,"pl-c"]],[[16,157,"pl-c"],[16,18,"pl-c"]],[[16,183,"pl-c"],[16,18,"pl-c"]],[[16,131,"pl-c"],[16,18,"pl-c"]],[[16,139,"pl-c"],[16,18,"pl-c"]],[[16,18,"pl-k"],[37,38,"pl-c1"],[43,44,"pl-c1"]],[[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[66,69,"pl-smi"],[70,71,"pl-smi"],[83,86,"pl-smi"],[87,88,"pl-smi"]],[[16,18,"pl-k"],[37,38,"pl-c1"],[43,44,"pl-c1"]],[[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[66,69,"pl-smi"],[70,71,"pl-smi"],[83,86,"pl-smi"],[87,88,"pl-smi"]],[[16,18,"pl-k"],[37,38,"pl-c1"],[43,44,"pl-c1"]],[[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[66,69,"pl-smi"],[70,71,"pl-smi"],[83,86,"pl-smi"],[87,88,"pl-smi"]],[[16,18,"pl-k"],[37,38,"pl-c1"],[43,44,"pl-c1"],[56,61,"pl-smi"],[98,99,"pl-c1"]],[[36,39,"pl-smi"],[40,41,"pl-smi"],[44,49,"pl-c1"],[66,69,"pl-smi"],[70,71,"pl-smi"],[83,86,"pl-smi"],[87,88,"pl-smi"]],[[16,157,"pl-c"],[16,18,"pl-c"]],[[16,127,"pl-c"],[16,18,"pl-c"]],[[16,127,"pl-c"],[16,18,"pl-c"]],[[48,61,"pl-smi"]],[[16,19,"pl-k"],[21,24,"pl-k"],[29,30,"pl-c1"],[69,70,"pl-c1"]],[[55,67,"pl-smi"]],[[16,19,"pl-k"],[21,24,"pl-k"],[29,30,"pl-c1"],[46,52,"pl-smi"],[80,81,"pl-c1"]],[],[[20,53,"pl-c"],[20,22,"pl-c"]],[[20,22,"pl-k"],[25,44,"pl-c1"],[58,70,"pl-smi"]],[[24,32,"pl-k"]],[[20,40,"pl-c1"],[54,66,"pl-smi"]],[],[],[[56,65,"pl-smi"]],[[20,29,"pl-c1"],[39,49,"pl-smi"],[50,54,"pl-smi"],[58,59,"pl-c1"],[79,87,"pl-c1"],[88,94,"pl-c1"],[104,114,"pl-smi"],[115,116,"pl-c1"],[118,126,"pl-smi"]],[[29,39,"pl-smi"],[40,41,"pl-c1"],[43,51,"pl-smi"],[70,76,"pl-c1"]],[[20,26,"pl-c1"],[47,53,"pl-k"]],[],[],[],[[12,137,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[33,34,"pl-c1"]],[[16,22,"pl-c1"],[45,54,"pl-smi"],[62,84,"pl-smi"],[87,93,"pl-k"]],[],[],[[8,84,"pl-c"],[8,10,"pl-c"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"],[38,44,"pl-smi"],[67,68,"pl-c1"]],[],[[12,14,"pl-k"],[17,36,"pl-c1"]],[[16,24,"pl-k"]],[[48,57,"pl-smi"]],[[12,18,"pl-c1"],[39,45,"pl-k"]],[],[],[[8,17,"pl-c1"],[31,58,"pl-smi"],[59,63,"pl-smi"],[68,95,"pl-smi"],[96,100,"pl-smi"]],[[8,14,"pl-c1"],[25,34,"pl-smi"],[35,39,"pl-smi"],[67,94,"pl-smi"],[95,99,"pl-smi"],[112,118,"pl-smi"],[146,152,"pl-k"]],[],[],[],[[0,6,"pl-k"],[13,36,"pl-en"],[56,59,"pl-k"],[69,72,"pl-k"]],[],[[4,9,"pl-k"],[10,14,"pl-k"],[36,55,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[36,49,"pl-smi"],[74,92,"pl-smi"],[103,118,"pl-smi"]],[[4,9,"pl-k"],[10,14,"pl-k"],[45,63,"pl-smi"],[77,78,"pl-c1"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,33,"pl-c1"]],[[4,6,"pl-k"],[39,44,"pl-smi"]],[[8,14,"pl-k"],[22,39,"pl-smi"]],[[4,10,"pl-k"],[18,34,"pl-smi"]],[],[],[[0,109,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,28,"pl-en"]],[],[[39,50,"pl-smi"]],[[4,6,"pl-k"],[16,27,"pl-smi"],[29,37,"pl-smi"],[38,46,"pl-c1"],[54,63,"pl-smi"]],[[8,14,"pl-k"]],[],[[47,55,"pl-smi"]],[[11,23,"pl-smi"],[25,42,"pl-c1"]],[[20,32,"pl-c1"],[40,61,"pl-smi"],[62,65,"pl-smi"],[74,95,"pl-smi"],[96,99,"pl-smi"],[101,106,"pl-c1"]],[],[[4,46,"pl-c"],[4,6,"pl-c"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"]],[[4,9,"pl-k"],[10,15,"pl-k"],[26,31,"pl-c1"],[39,48,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"],[64,79,"pl-smi"],[83,84,"pl-c1"],[94,103,"pl-smi"],[104,107,"pl-smi"],[108,109,"pl-smi"],[119,127,"pl-smi"],[128,131,"pl-smi"],[132,133,"pl-smi"],[144,163,"pl-smi"],[176,181,"pl-smi"],[217,218,"pl-c1"],[219,221,"pl-c1"],[224,225,"pl-c1"],[226,228,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[38,47,"pl-smi"],[48,51,"pl-smi"],[52,53,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[38,52,"pl-smi"],[55,60,"pl-c1"],[68,77,"pl-smi"],[78,81,"pl-smi"],[82,83,"pl-smi"],[93,108,"pl-smi"],[112,113,"pl-c1"],[123,132,"pl-smi"],[133,136,"pl-smi"],[137,138,"pl-smi"],[148,156,"pl-smi"],[157,160,"pl-smi"],[161,162,"pl-smi"],[182,205,"pl-smi"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,11,"pl-k"],[13,16,"pl-k"],[27,28,"pl-c1"],[47,59,"pl-smi"]],[],[[12,14,"pl-k"],[17,36,"pl-c1"],[44,69,"pl-smi"]],[[16,24,"pl-k"]],[],[[12,17,"pl-k"],[18,21,"pl-k"],[40,59,"pl-smi"]],[[47,54,"pl-smi"]],[[12,17,"pl-k"],[18,22,"pl-k"],[44,63,"pl-smi"]],[[12,17,"pl-k"],[18,22,"pl-k"],[44,57,"pl-smi"],[82,100,"pl-smi"],[111,126,"pl-smi"]],[[12,17,"pl-k"],[18,22,"pl-k"],[47,52,"pl-smi"],[132,133,"pl-c1"]],[[12,17,"pl-k"],[18,22,"pl-k"],[53,71,"pl-smi"],[85,86,"pl-c1"]],[[12,14,"pl-k"],[24,28,"pl-smi"],[38,51,"pl-smi"],[52,55,"pl-smi"],[56,57,"pl-smi"]],[[16,24,"pl-k"]],[],[[12,58,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[24,41,"pl-smi"],[46,47,"pl-c1"]],[[16,18,"pl-k"],[28,33,"pl-smi"],[111,116,"pl-smi"]],[[20,28,"pl-k"]],[[12,14,"pl-k"],[24,28,"pl-smi"],[40,48,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"],[56,166,"pl-c"],[56,58,"pl-c"]],[[16,24,"pl-k"]],[],[[12,73,"pl-c"],[12,14,"pl-c"]],[[12,124,"pl-c"],[12,14,"pl-c"]],[[12,17,"pl-k"],[88,93,"pl-smi"],[179,180,"pl-c1"]],[[12,14,"pl-k"]],[[32,39,"pl-c1"],[40,46,"pl-c1"],[55,59,"pl-smi"],[71,77,"pl-c1"],[86,90,"pl-smi"],[102,125,"pl-c1"]],[],[],[],[[4,24,"pl-c"],[4,6,"pl-c"]],[[4,63,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[8,113,"pl-c"],[8,10,"pl-c"]],[[8,120,"pl-c"],[8,10,"pl-c"]],[[8,119,"pl-c"],[8,10,"pl-c"]],[[8,92,"pl-c"],[8,10,"pl-c"]],[[8,106,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[43,52,"pl-smi"]],[[8,13,"pl-k"],[39,56,"pl-smi"]],[[8,10,"pl-k"],[20,25,"pl-smi"]],[],[[28,35,"pl-c1"],[49,52,"pl-smi"],[67,70,"pl-smi"],[83,84,"pl-c1"],[85,87,"pl-c1"],[89,90,"pl-c1"]],[],[[8,12,"pl-k"],[13,15,"pl-k"],[24,29,"pl-smi"]],[],[[28,35,"pl-c1"],[49,52,"pl-smi"],[54,60,"pl-c1"],[74,77,"pl-smi"],[78,79,"pl-smi"],[94,97,"pl-smi"],[98,99,"pl-smi"]],[[28,35,"pl-c1"],[36,42,"pl-c1"],[56,59,"pl-smi"],[60,61,"pl-smi"],[76,79,"pl-smi"],[80,81,"pl-smi"],[97,100,"pl-smi"]],[],[[8,12,"pl-k"],[13,15,"pl-k"],[24,29,"pl-smi"]],[],[[28,35,"pl-c1"],[49,52,"pl-smi"],[54,60,"pl-c1"],[74,77,"pl-smi"],[78,79,"pl-smi"],[94,97,"pl-smi"],[98,99,"pl-smi"]],[[28,35,"pl-c1"],[36,42,"pl-c1"],[56,59,"pl-smi"],[60,61,"pl-smi"],[76,79,"pl-smi"],[80,81,"pl-smi"],[97,100,"pl-smi"]],[],[],[[4,6,"pl-k"],[16,21,"pl-smi"],[65,73,"pl-smi"],[83,92,"pl-smi"],[93,96,"pl-smi"],[97,98,"pl-smi"]],[],[[8,72,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[38,46,"pl-smi"]],[[8,10,"pl-k"],[31,41,"pl-smi"],[42,45,"pl-smi"],[46,47,"pl-smi"],[69,79,"pl-smi"],[80,83,"pl-smi"],[84,85,"pl-smi"]],[[28,35,"pl-c1"],[36,42,"pl-c1"],[50,58,"pl-smi"],[71,77,"pl-c1"],[85,93,"pl-smi"],[113,129,"pl-smi"]],[],[],[[20,31,"pl-c1"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,24,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,49,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,37,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,85,"pl-c"],[0,2,"pl-c"]],[[0,107,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,54,"pl-c"],[0,2,"pl-c"]],[[0,105,"pl-c"],[0,2,"pl-c"]],[[21,45,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,13,"pl-c1"],[23,27,"pl-c1"]],[],[[4,6,"pl-k"],[17,22,"pl-smi"]],[[8,14,"pl-k"],[15,19,"pl-c1"]],[],[[4,116,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[16,30,"pl-smi"]],[[8,25,"pl-c1"]],[],[[4,23,"pl-c1"]],[[4,10,"pl-k"],[19,28,"pl-smi"]],[],[],[[0,6,"pl-k"],[7,13,"pl-k"],[33,65,"pl-en"],[92,95,"pl-k"]],[],[[4,13,"pl-c1"],[26,50,"pl-smi"]],[[4,10,"pl-k"],[41,64,"pl-smi"],[74,75,"pl-c1"],[80,84,"pl-c1"]],[],[],[[0,121,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,39,"pl-en"]],[],[[4,6,"pl-k"],[16,25,"pl-smi"],[30,31,"pl-c1"],[44,67,"pl-smi"],[71,72,"pl-c1"],[84,97,"pl-smi"],[103,104,"pl-c1"]],[[8,14,"pl-k"]],[[12,25,"pl-smi"],[34,66,"pl-c1"],[75,76,"pl-c1"]],[[11,27,"pl-smi"],[30,34,"pl-c1"]],[],[],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,107,"pl-c"],[0,2,"pl-c"]],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,16,"pl-en"],[44,45,"pl-c1"],[81,82,"pl-c1"],[119,120,"pl-c1"]],[[19,57,"pl-en"]],[],[[4,13,"pl-c1"],[22,46,"pl-smi"],[49,50,"pl-c1"]],[[4,6,"pl-k"],[16,25,"pl-smi"],[30,31,"pl-c1"]],[[8,14,"pl-k"],[15,47,"pl-c1"],[56,57,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[24,25,"pl-c1"]],[[8,10,"pl-k"],[20,33,"pl-smi"],[37,69,"pl-c1"]],[[12,18,"pl-k"],[19,51,"pl-c1"],[65,66,"pl-c1"],[78,102,"pl-smi"]],[[4,13,"pl-c1"],[14,15,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,125,"pl-c"],[0,2,"pl-c"]],[[0,115,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,39,"pl-en"],[40,43,"pl-k"],[89,93,"pl-k"]],[],[],[[26,38,"pl-smi"]],[],[[4,6,"pl-k"],[17,22,"pl-smi"]],[[31,36,"pl-c1"]],[[4,6,"pl-k"],[17,22,"pl-smi"]],[[8,17,"pl-c1"]],[],[[41,42,"pl-c1"]],[[4,6,"pl-k"]],[[8,11,"pl-k"],[13,16,"pl-k"],[34,35,"pl-c1"],[61,73,"pl-smi"]],[[29,34,"pl-c1"],[58,65,"pl-smi"],[82,91,"pl-smi"]],[],[[39,46,"pl-smi"]],[[12,25,"pl-smi"]],[[4,6,"pl-k"],[16,29,"pl-smi"]],[[16,25,"pl-smi"],[29,30,"pl-c1"]],[[4,8,"pl-k"],[9,11,"pl-k"],[21,30,"pl-smi"],[35,36,"pl-c1"]],[[16,25,"pl-smi"],[68,69,"pl-c1"],[72,73,"pl-c1"]],[],[[4,7,"pl-k"],[9,12,"pl-k"],[30,31,"pl-c1"],[57,69,"pl-smi"]],[],[[49,56,"pl-smi"]],[[8,10,"pl-k"]],[[26,35,"pl-smi"],[39,40,"pl-c1"]],[[8,35,"pl-c1"]],[],[[11,26,"pl-smi"],[29,33,"pl-c1"]],[[11,27,"pl-smi"],[30,34,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[[4,13,"pl-c1"],[21,26,"pl-smi"]],[],[[4,86,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[27,28,"pl-c1"]],[[28,32,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"],[48,57,"pl-smi"]],[[20,29,"pl-smi"],[33,34,"pl-c1"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"]],[[12,20,"pl-k"]],[],[[35,36,"pl-c1"],[48,57,"pl-smi"]],[[8,17,"pl-c1"],[38,41,"pl-k"],[42,48,"pl-k"],[68,69,"pl-c1"]],[],[],[[4,9,"pl-k"],[10,14,"pl-k"],[44,45,"pl-c1"],[89,90,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[64,65,"pl-c1"],[79,84,"pl-smi"]],[[4,6,"pl-k"]],[],[[27,31,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[26,27,"pl-c1"]],[],[[12,89,"pl-c"],[12,14,"pl-c"]],[[12,103,"pl-c"],[12,14,"pl-c"]],[[12,15,"pl-k"],[51,52,"pl-c1"]],[[12,15,"pl-k"],[17,20,"pl-k"],[32,33,"pl-c1"],[53,65,"pl-smi"]],[[16,18,"pl-k"],[42,43,"pl-c1"],[68,69,"pl-c1"],[80,87,"pl-smi"],[98,107,"pl-smi"],[112,113,"pl-c1"]],[[20,22,"pl-k"],[60,61,"pl-c1"],[72,79,"pl-smi"],[90,99,"pl-smi"],[109,116,"pl-smi"],[150,159,"pl-smi"]],[],[[12,21,"pl-c1"],[58,59,"pl-c1"]],[[34,35,"pl-c1"]],[[19,26,"pl-smi"],[60,69,"pl-smi"]],[],[[12,106,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"]],[],[[35,36,"pl-c1"]],[[16,19,"pl-k"],[21,24,"pl-k"],[36,37,"pl-c1"],[57,69,"pl-smi"]],[[20,22,"pl-k"]],[[31,38,"pl-smi"],[49,58,"pl-smi"],[62,63,"pl-c1"]],[[16,21,"pl-k"]],[],[],[],[],[[4,97,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[28,29,"pl-c1"],[42,47,"pl-smi"]],[[8,11,"pl-k"],[13,16,"pl-k"],[28,29,"pl-c1"],[49,61,"pl-smi"]],[],[[47,54,"pl-smi"]],[[12,14,"pl-k"],[24,33,"pl-smi"],[47,52,"pl-smi"]],[],[[35,36,"pl-c1"]],[[24,33,"pl-smi"],[36,37,"pl-c1"]],[[24,37,"pl-smi"],[46,78,"pl-c1"],[87,88,"pl-c1"]],[[16,21,"pl-k"]],[],[],[],[[11,25,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,31,"pl-en"]],[],[[4,8,"pl-k"],[24,40,"pl-smi"]],[[4,6,"pl-k"]],[],[[8,30,"pl-c1"]],[[15,29,"pl-smi"],[30,36,"pl-c1"],[44,58,"pl-smi"],[62,63,"pl-c1"],[66,67,"pl-c1"],[77,91,"pl-smi"]],[[15,24,"pl-smi"],[25,35,"pl-smi"],[38,42,"pl-c1"],[44,69,"pl-c"],[44,46,"pl-c"]],[[15,31,"pl-smi"],[34,39,"pl-c1"],[41,68,"pl-c"],[41,43,"pl-c"]],[],[],[[4,19,"pl-c"],[4,6,"pl-c"]],[[4,141,"pl-c"],[4,6,"pl-c"]],[[52,66,"pl-smi"],[70,71,"pl-c1"],[75,79,"pl-c1"],[90,104,"pl-smi"],[108,109,"pl-c1"],[121,136,"pl-smi"],[146,160,"pl-smi"],[161,165,"pl-smi"]],[[4,6,"pl-k"],[31,35,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[28,29,"pl-c1"],[49,61,"pl-smi"]],[],[[47,54,"pl-smi"]],[[12,14,"pl-k"],[24,33,"pl-smi"],[38,39,"pl-c1"]],[[16,24,"pl-k"]],[[12,21,"pl-c1"],[30,39,"pl-smi"],[49,63,"pl-smi"]],[[71,80,"pl-smi"]],[[23,35,"pl-smi"],[46,52,"pl-smi"]],[[23,34,"pl-smi"]],[[23,32,"pl-smi"],[64,73,"pl-smi"]],[[23,36,"pl-smi"],[67,80,"pl-smi"]],[],[],[[11,20,"pl-smi"],[21,26,"pl-smi"]],[[11,20,"pl-smi"],[21,31,"pl-smi"],[41,55,"pl-smi"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,18,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,5,"pl-k"],[6,36,"pl-en"]],[],[[4,36,"pl-c"],[4,6,"pl-c"]],[[4,94,"pl-c"],[4,6,"pl-c"]],[[4,137,"pl-c"],[4,6,"pl-c"]],[[4,112,"pl-c"],[4,6,"pl-c"]],[],[[26,38,"pl-smi"]],[[4,9,"pl-k"],[25,33,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[[8,10,"pl-k"],[12,31,"pl-c1"],[39,57,"pl-smi"]],[[12,14,"pl-k"],[24,31,"pl-smi"],[42,47,"pl-smi"],[90,91,"pl-c1"]],[[29,34,"pl-c1"],[47,59,"pl-c1"],[60,78,"pl-c1"],[97,98,"pl-smi"]],[[4,10,"pl-k"],[26,31,"pl-smi"],[32,43,"pl-smi"],[44,45,"pl-smi"],[48,49,"pl-c1"],[50,52,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,46,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,9,"pl-k"],[18,19,"pl-c1"],[20,22,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[[8,10,"pl-k"],[12,31,"pl-c1"],[39,57,"pl-smi"]],[[12,14,"pl-k"],[23,30,"pl-smi"],[41,46,"pl-smi"]],[[24,29,"pl-c1"],[37,49,"pl-c1"],[50,68,"pl-c1"],[87,91,"pl-c1"],[93,97,"pl-c1"],[99,100,"pl-smi"]],[[4,10,"pl-k"],[21,26,"pl-smi"],[27,38,"pl-smi"],[39,40,"pl-smi"],[43,44,"pl-c1"],[45,47,"pl-c1"],[49,64,"pl-c"],[49,51,"pl-c"]],[],[],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,107,"pl-c"],[0,2,"pl-c"]],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,33,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,27,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[],[[4,112,"pl-c"],[4,6,"pl-c"]],[[4,107,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[16,30,"pl-smi"]],[[8,25,"pl-c1"]],[],[[4,15,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[29,52,"pl-c1"]],[[4,16,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[25,43,"pl-c1"],[46,47,"pl-smi"]],[[4,6,"pl-k"],[15,28,"pl-smi"],[30,87,"pl-c"],[30,32,"pl-c"]],[[8,14,"pl-k"]],[],[[4,9,"pl-k"],[10,13,"pl-k"],[30,49,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"]],[],[[8,10,"pl-k"],[13,32,"pl-c1"]],[[12,20,"pl-k"]],[],[[8,159,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,18,"pl-k"],[28,47,"pl-c1"],[99,101,"pl-s"],[99,100,"pl-pds"],[100,101,"pl-pds"],[104,122,"pl-c1"]],[[8,14,"pl-c1"]],[[8,19,"pl-c1"]],[[8,13,"pl-c1"]],[],[],[[4,77,"pl-c"],[4,6,"pl-c"]],[[23,41,"pl-c1"]],[[4,6,"pl-k"],[8,23,"pl-c1"],[24,25,"pl-c1"],[30,51,"pl-c1"]],[[8,10,"pl-k"],[22,23,"pl-smi"],[47,48,"pl-smi"]],[[12,32,"pl-c1"],[49,90,"pl-c"],[49,51,"pl-c"]],[],[],[[0,52,"pl-c"],[0,2,"pl-c"]],[[0,89,"pl-c"],[0,2,"pl-c"]],[[0,121,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,23,"pl-en"],[24,29,"pl-k"],[30,34,"pl-k"]],[],[],[[28,41,"pl-smi"]],[[4,6,"pl-k"],[16,25,"pl-smi"]],[[8,14,"pl-k"]],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[],[[4,13,"pl-c1"],[21,34,"pl-smi"],[39,40,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[32,45,"pl-smi"]],[[39,46,"pl-smi"]],[],[[4,12,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[[16,18,"pl-s"],[16,17,"pl-pds"],[17,18,"pl-pds"]],[[4,9,"pl-k"],[10,14,"pl-k"],[28,47,"pl-c1"]],[[24,36,"pl-c1"],[55,59,"pl-c1"]],[[31,33,"pl-smi"],[34,43,"pl-smi"]],[],[[4,56,"pl-c"],[4,6,"pl-c"]],[[4,100,"pl-c"],[4,6,"pl-c"]],[[20,38,"pl-c1"]],[[4,9,"pl-k"],[25,30,"pl-c1"],[42,43,"pl-smi"],[52,64,"pl-smi"],[74,89,"pl-smi"],[92,93,"pl-c1"],[94,96,"pl-c1"]],[],[[4,48,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[20,21,"pl-c1"],[22,24,"pl-c1"]],[[4,9,"pl-k"],[24,25,"pl-c1"],[26,28,"pl-c1"]],[[4,8,"pl-k"],[22,27,"pl-c1"]],[[4,8,"pl-k"],[24,25,"pl-c1"],[29,31,"pl-s"],[29,30,"pl-pds"],[30,31,"pl-pds"]],[[4,9,"pl-k"],[10,15,"pl-k"],[30,31,"pl-c1"],[32,35,"pl-c1"]],[[4,6,"pl-k"],[16,21,"pl-smi"],[63,68,"pl-smi"]],[],[[18,25,"pl-c1"],[28,36,"pl-smi"],[55,60,"pl-smi"],[61,73,"pl-smi"],[74,75,"pl-smi"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"]],[[25,29,"pl-c1"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[32,33,"pl-c1"]],[],[[12,26,"pl-c1"],[43,55,"pl-c1"],[73,77,"pl-s"],[73,74,"pl-pds"],[76,77,"pl-pds"],[87,96,"pl-smi"],[99,100,"pl-c1"]],[[28,33,"pl-smi"],[34,50,"pl-smi"],[51,52,"pl-smi"],[55,67,"pl-c1"],[84,85,"pl-smi"]],[],[],[],[[4,129,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[32,33,"pl-smi"],[47,48,"pl-smi"]],[[12,34,"pl-smi"],[37,42,"pl-c1"],[51,73,"pl-smi"],[95,98,"pl-smi"],[99,100,"pl-smi"],[103,108,"pl-c1"],[127,130,"pl-smi"],[131,132,"pl-smi"]],[[12,35,"pl-smi"],[38,43,"pl-c1"],[52,75,"pl-smi"]],[],[[4,57,"pl-c"],[4,6,"pl-c"]],[[25,30,"pl-c1"]],[[11,13,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[35,38,"pl-smi"],[39,40,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"],[56,61,"pl-c1"],[69,72,"pl-smi"],[73,74,"pl-smi"],[83,86,"pl-smi"],[87,88,"pl-smi"],[108,113,"pl-smi"],[114,125,"pl-smi"],[126,127,"pl-smi"],[130,131,"pl-c1"],[132,134,"pl-c1"]],[[4,12,"pl-c1"],[13,19,"pl-c1"],[20,21,"pl-c1"],[22,24,"pl-c1"],[42,114,"pl-c"],[42,44,"pl-c"]],[[4,6,"pl-k"],[9,16,"pl-c1"]],[[8,14,"pl-k"]],[],[[4,100,"pl-c"],[4,6,"pl-c"]],[[4,92,"pl-c"],[4,6,"pl-c"]],[],[[4,119,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,14,"pl-k"],[35,56,"pl-smi"]],[[4,8,"pl-k"]],[[4,8,"pl-k"],[19,33,"pl-c1"]],[[4,6,"pl-k"]],[],[[8,13,"pl-k"],[26,37,"pl-c1"]],[[8,56,"pl-c"],[8,10,"pl-c"]],[[8,23,"pl-c1"],[63,76,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[8,85,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[20,28,"pl-smi"],[62,63,"pl-c1"]],[[12,27,"pl-c1"],[55,66,"pl-c1"],[99,112,"pl-smi"]],[],[[4,19,"pl-c1"]],[[4,6,"pl-k"]],[[15,31,"pl-smi"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[32,37,"pl-smi"],[38,49,"pl-smi"],[50,51,"pl-smi"],[54,55,"pl-c1"],[56,58,"pl-c1"]],[],[[4,41,"pl-c"],[4,6,"pl-c"]],[[4,100,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[24,29,"pl-smi"],[64,79,"pl-c1"],[80,81,"pl-c1"],[89,103,"pl-smi"]],[],[[8,110,"pl-c"],[8,10,"pl-c"]],[[15,28,"pl-smi"]],[[15,33,"pl-smi"],[43,58,"pl-smi"]],[],[[8,136,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[14,16,"pl-smi"],[17,27,"pl-smi"],[28,29,"pl-smi"],[32,33,"pl-c1"],[34,36,"pl-c1"],[42,44,"pl-smi"],[45,53,"pl-smi"],[54,55,"pl-smi"],[65,68,"pl-smi"],[69,70,"pl-smi"]],[[12,14,"pl-k"],[57,74,"pl-smi"],[79,80,"pl-c1"],[92,99,"pl-smi"],[108,125,"pl-smi"],[129,133,"pl-c1"]],[[16,18,"pl-k"],[31,36,"pl-smi"],[52,57,"pl-smi"]],[[20,22,"pl-k"],[33,54,"pl-smi"],[64,84,"pl-smi"],[103,124,"pl-smi"],[134,154,"pl-smi"]],[[31,47,"pl-smi"],[51,52,"pl-c1"]],[[8,10,"pl-k"],[14,16,"pl-smi"],[17,27,"pl-smi"],[28,29,"pl-smi"],[32,33,"pl-c1"],[34,36,"pl-c1"],[42,44,"pl-smi"],[45,53,"pl-smi"],[54,55,"pl-smi"],[65,68,"pl-smi"],[69,70,"pl-smi"]],[[12,14,"pl-k"],[57,74,"pl-smi"],[79,80,"pl-c1"],[92,99,"pl-smi"],[108,125,"pl-smi"],[129,133,"pl-c1"]],[[16,18,"pl-k"],[31,36,"pl-smi"],[52,57,"pl-smi"]],[[20,22,"pl-k"],[33,54,"pl-smi"],[64,84,"pl-smi"],[103,124,"pl-smi"],[134,154,"pl-smi"]],[[31,47,"pl-smi"],[51,52,"pl-c1"]],[],[],[[4,23,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[31,36,"pl-c1"],[44,47,"pl-smi"],[48,49,"pl-smi"],[85,86,"pl-smi"]],[[4,6,"pl-k"],[16,21,"pl-smi"],[63,68,"pl-smi"]],[],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"]],[],[[12,17,"pl-k"],[22,27,"pl-c1"],[35,38,"pl-smi"],[39,40,"pl-smi"],[49,52,"pl-smi"],[53,54,"pl-smi"]],[[12,17,"pl-k"],[32,33,"pl-smi"]],[[12,14,"pl-k"],[24,33,"pl-smi"],[36,37,"pl-c1"]],[],[[16,30,"pl-c1"],[46,57,"pl-c1"],[73,74,"pl-c1"],[75,78,"pl-c1"]],[[16,26,"pl-c1"],[27,33,"pl-c1"],[40,45,"pl-smi"],[46,62,"pl-smi"],[63,64,"pl-smi"]],[[16,29,"pl-c1"]],[],[],[[12,23,"pl-c1"],[32,40,"pl-smi"],[42,48,"pl-c1"],[56,67,"pl-c1"],[92,105,"pl-smi"]],[],[],[[8,64,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[30,43,"pl-smi"]],[],[[48,79,"pl-c1"]],[[12,39,"pl-c1"],[68,70,"pl-smi"],[71,79,"pl-smi"]],[],[],[],[[4,111,"pl-c"],[4,6,"pl-c"]],[[4,41,"pl-c"],[4,6,"pl-c"]],[[4,95,"pl-c"],[4,6,"pl-c"]],[[4,22,"pl-c1"],[31,39,"pl-smi"],[52,58,"pl-c1"],[83,84,"pl-smi"],[104,109,"pl-smi"],[110,122,"pl-smi"],[123,124,"pl-smi"]],[],[[4,9,"pl-k"],[10,14,"pl-k"],[41,42,"pl-smi"],[71,72,"pl-smi"]],[[4,6,"pl-k"],[37,45,"pl-smi"],[49,50,"pl-c1"]],[[8,22,"pl-c1"],[23,29,"pl-s"],[23,24,"pl-pds"],[28,29,"pl-pds"],[32,35,"pl-k"]],[],[[4,112,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[8,23,"pl-c1"],[24,25,"pl-c1"],[30,43,"pl-c1"]],[[8,28,"pl-c1"]],[],[],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,53,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,33,"pl-en"]],[],[],[[26,38,"pl-smi"]],[[43,51,"pl-smi"]],[[15,36,"pl-smi"],[37,43,"pl-c1"],[44,45,"pl-c1"]],[[15,36,"pl-smi"],[37,44,"pl-c1"],[52,71,"pl-smi"]],[],[[4,36,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[27,32,"pl-c1"],[33,50,"pl-s"],[33,34,"pl-pds"],[49,50,"pl-pds"]],[[45,65,"pl-c1"],[80,95,"pl-smi"]],[[4,7,"pl-k"],[36,57,"pl-smi"]],[[4,6,"pl-k"],[31,32,"pl-c1"],[43,60,"pl-smi"],[65,66,"pl-c1"]],[[8,10,"pl-k"],[28,42,"pl-smi"],[46,47,"pl-c1"],[58,77,"pl-smi"],[82,83,"pl-c1"],[90,98,"pl-smi"],[102,103,"pl-c1"],[109,117,"pl-smi"],[139,156,"pl-smi"],[162,176,"pl-smi"]],[[40,57,"pl-smi"]],[],[[4,23,"pl-c"],[4,6,"pl-c"]],[[26,37,"pl-c1"]],[[21,32,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[23,24,"pl-c1"],[43,55,"pl-smi"]],[[8,10,"pl-k"],[12,31,"pl-c1"],[39,64,"pl-smi"]],[],[[12,17,"pl-k"],[18,21,"pl-k"],[40,59,"pl-smi"]],[[47,54,"pl-smi"]],[[12,14,"pl-k"],[25,30,"pl-smi"],[72,73,"pl-c1"],[75,140,"pl-c"],[75,77,"pl-c"]],[[16,24,"pl-k"]],[[136,147,"pl-c1"],[167,168,"pl-c1"]],[[23,44,"pl-smi"],[45,54,"pl-c1"]],[],[],[[4,17,"pl-c"],[4,6,"pl-c"]],[[4,27,"pl-c1"],[38,43,"pl-smi"],[44,67,"pl-smi"],[69,70,"pl-c1"],[71,73,"pl-c1"],[86,107,"pl-smi"],[108,112,"pl-smi"],[125,146,"pl-smi"],[147,151,"pl-smi"]],[],[],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,35,"pl-en"],[52,57,"pl-k"],[65,70,"pl-k"],[88,93,"pl-k"],[122,125,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[28,41,"pl-smi"]],[[36,44,"pl-smi"]],[[4,6,"pl-k"],[17,21,"pl-c1"]],[],[[8,28,"pl-c1"],[38,42,"pl-c1"],[44,99,"pl-s"],[44,45,"pl-pds"],[98,99,"pl-pds"]],[[8,14,"pl-k"]],[],[[4,13,"pl-c1"],[21,31,"pl-smi"],[36,37,"pl-c1"],[41,60,"pl-s"],[41,42,"pl-pds"],[59,60,"pl-pds"]],[],[[4,6,"pl-k"],[27,28,"pl-c1"],[29,31,"pl-c1"]],[[26,59,"pl-c1"]],[],[[4,98,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,14,"pl-k"],[37,38,"pl-c1"],[39,41,"pl-c1"]],[[21,22,"pl-c1"],[23,25,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[24,29,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[24,29,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[43,48,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[43,48,"pl-c1"]],[[4,9,"pl-k"],[30,36,"pl-c1"]],[],[[4,103,"pl-c"],[4,6,"pl-c"]],[[4,128,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[34,42,"pl-smi"],[47,52,"pl-smi"],[53,64,"pl-smi"],[65,66,"pl-smi"],[69,70,"pl-c1"],[71,73,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[29,36,"pl-c1"],[37,43,"pl-c1"],[44,52,"pl-c1"],[53,59,"pl-c1"],[138,139,"pl-smi"]],[[11,30,"pl-smi"]],[[11,29,"pl-smi"],[42,43,"pl-c1"],[44,46,"pl-c1"],[68,69,"pl-c1"],[70,72,"pl-c1"]],[[4,9,"pl-k"],[76,150,"pl-c"],[76,78,"pl-c"]],[],[[4,56,"pl-c"],[4,6,"pl-c"]],[[4,16,"pl-c1"]],[[4,19,"pl-c1"]],[[4,9,"pl-k"],[17,22,"pl-smi"],[30,38,"pl-smi"],[39,42,"pl-smi"],[43,44,"pl-smi"],[53,63,"pl-smi"],[64,67,"pl-smi"],[68,69,"pl-smi"],[78,86,"pl-smi"],[87,90,"pl-smi"],[91,92,"pl-smi"],[101,109,"pl-smi"]],[[11,23,"pl-smi"],[25,42,"pl-c1"]],[[4,9,"pl-k"],[35,45,"pl-smi"],[46,49,"pl-smi"],[50,51,"pl-smi"]],[[4,6,"pl-k"],[15,33,"pl-smi"],[36,37,"pl-c1"]],[[26,31,"pl-c1"],[56,63,"pl-smi"],[71,89,"pl-smi"],[92,93,"pl-c1"],[95,99,"pl-smi"]],[[4,19,"pl-c1"],[47,48,"pl-c1"],[51,60,"pl-c"],[51,53,"pl-c"]],[[4,16,"pl-c1"],[24,34,"pl-smi"],[35,38,"pl-smi"],[47,57,"pl-smi"],[58,61,"pl-smi"],[63,68,"pl-c1"],[71,90,"pl-c"],[71,73,"pl-c"]],[[15,28,"pl-c1"],[29,35,"pl-c1"],[43,53,"pl-smi"],[54,57,"pl-smi"],[58,59,"pl-smi"],[67,70,"pl-smi"],[71,72,"pl-smi"],[75,81,"pl-c1"],[89,99,"pl-smi"],[100,103,"pl-smi"],[104,105,"pl-smi"],[113,116,"pl-smi"],[117,118,"pl-smi"],[121,132,"pl-c1"],[157,158,"pl-c1"],[159,162,"pl-c1"],[166,228,"pl-c"],[166,168,"pl-c"]],[[4,16,"pl-c1"],[17,23,"pl-c1"],[48,58,"pl-smi"],[59,62,"pl-smi"],[63,64,"pl-smi"],[74,84,"pl-smi"],[85,88,"pl-smi"],[90,94,"pl-c1"],[97,116,"pl-c"],[97,99,"pl-c"]],[],[[4,18,"pl-c1"],[34,38,"pl-c1"],[40,44,"pl-c1"]],[[4,15,"pl-c1"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[34,38,"pl-smi"],[40,46,"pl-smi"],[51,60,"pl-smi"],[62,112,"pl-c"],[62,64,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[41,46,"pl-c1"],[50,58,"pl-smi"],[78,79,"pl-c1"],[80,82,"pl-c1"],[84,85,"pl-c1"],[86,88,"pl-c1"],[117,118,"pl-c1"],[119,121,"pl-c1"],[124,125,"pl-c1"],[126,128,"pl-c1"]],[[4,9,"pl-k"],[29,34,"pl-smi"],[35,46,"pl-smi"],[48,87,"pl-c"],[48,50,"pl-c"]],[[4,9,"pl-k"],[27,32,"pl-smi"],[33,60,"pl-smi"]],[],[[4,66,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"]],[[4,7,"pl-k"],[9,12,"pl-k"],[20,21,"pl-c1"],[30,31,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[27,28,"pl-c1"]],[],[[12,17,"pl-k"]],[[12,17,"pl-k"],[18,21,"pl-k"],[42,47,"pl-smi"]],[[47,54,"pl-smi"]],[],[[28,29,"pl-c1"]],[[21,22,"pl-c1"],[26,32,"pl-c1"],[41,45,"pl-smi"],[53,56,"pl-smi"],[57,58,"pl-smi"]],[[21,22,"pl-c1"],[26,32,"pl-c1"],[41,45,"pl-smi"],[53,56,"pl-smi"],[57,58,"pl-smi"]],[[21,22,"pl-c1"],[35,36,"pl-c1"]],[[21,22,"pl-c1"],[35,36,"pl-c1"]],[[12,14,"pl-k"],[24,25,"pl-c1"]],[],[[16,29,"pl-c"],[16,18,"pl-c"]],[[27,40,"pl-c1"],[50,51,"pl-c1"],[63,64,"pl-c1"],[76,77,"pl-c1"],[89,90,"pl-c1"],[102,110,"pl-smi"]],[[27,40,"pl-c1"],[50,51,"pl-c1"],[63,64,"pl-c1"],[76,77,"pl-c1"],[89,90,"pl-c1"],[102,110,"pl-smi"],[113,134,"pl-c"],[113,115,"pl-c"]],[[24,29,"pl-c1"],[46,47,"pl-c1"],[49,50,"pl-smi"]],[],[[16,29,"pl-c"],[16,18,"pl-c"]],[[16,152,"pl-c"],[16,18,"pl-c"]],[[16,149,"pl-c"],[16,18,"pl-c"]],[[16,21,"pl-k"],[22,26,"pl-k"],[41,59,"pl-c1"]],[[16,21,"pl-k"],[22,26,"pl-k"],[45,64,"pl-c1"]],[[16,21,"pl-k"],[22,27,"pl-k"],[49,57,"pl-smi"]],[[16,21,"pl-k"],[22,25,"pl-k"],[40,56,"pl-c1"]],[],[[16,40,"pl-c"],[16,18,"pl-c"]],[[16,21,"pl-k"],[68,69,"pl-c1"],[91,92,"pl-c1"],[93,95,"pl-c1"]],[[16,21,"pl-k"],[45,50,"pl-c1"],[62,66,"pl-smi"],[77,81,"pl-smi"],[93,94,"pl-smi"],[97,98,"pl-c1"],[99,101,"pl-c1"],[139,140,"pl-c1"],[141,143,"pl-c1"],[153,154,"pl-smi"]],[],[],[[16,40,"pl-c"],[16,18,"pl-c"]],[[24,46,"pl-smi"],[57,80,"pl-smi"],[91,99,"pl-smi"],[102,108,"pl-c1"]],[],[[16,21,"pl-k"]],[],[[20,25,"pl-k"],[26,30,"pl-k"],[49,55,"pl-c1"],[68,72,"pl-s"],[68,69,"pl-pds"],[69,71,"pl-cce"],[71,72,"pl-pds"]],[[20,22,"pl-k"],[42,46,"pl-c1"]],[],[],[[20,107,"pl-c"],[20,22,"pl-c"]],[[40,52,"pl-c1"]],[[20,25,"pl-k"],[65,66,"pl-smi"],[68,132,"pl-c"],[68,70,"pl-c"]],[[20,25,"pl-k"],[40,45,"pl-c1"],[57,58,"pl-smi"],[68,76,"pl-smi"],[77,80,"pl-smi"],[81,82,"pl-smi"],[93,101,"pl-smi"]],[[27,33,"pl-smi"],[42,50,"pl-smi"],[51,54,"pl-smi"],[64,72,"pl-smi"],[73,76,"pl-smi"],[79,85,"pl-c1"]],[[20,23,"pl-k"],[51,65,"pl-smi"]],[[20,34,"pl-c1"],[59,68,"pl-smi"]],[[20,38,"pl-c1"],[57,60,"pl-smi"],[69,72,"pl-smi"],[81,84,"pl-smi"],[85,86,"pl-smi"],[95,98,"pl-smi"],[99,100,"pl-smi"]],[[20,33,"pl-c1"]],[[20,23,"pl-k"],[49,63,"pl-smi"]],[],[[20,41,"pl-c"],[20,22,"pl-c"]],[[20,25,"pl-k"],[26,31,"pl-k"],[50,55,"pl-c1"],[80,81,"pl-smi"],[84,89,"pl-c1"],[98,99,"pl-smi"],[111,112,"pl-c1"],[113,115,"pl-c1"],[118,123,"pl-c1"],[132,133,"pl-smi"],[145,146,"pl-c1"],[147,149,"pl-c1"],[151,152,"pl-c1"],[153,155,"pl-c1"]],[[20,25,"pl-k"],[26,31,"pl-k"],[74,75,"pl-smi"],[93,94,"pl-c1"],[95,97,"pl-c1"],[100,101,"pl-c1"],[102,104,"pl-c1"]],[],[[20,46,"pl-c"],[20,22,"pl-c"]],[[38,44,"pl-c1"],[53,61,"pl-smi"],[62,65,"pl-smi"],[66,67,"pl-smi"],[95,103,"pl-smi"],[104,107,"pl-smi"],[108,109,"pl-smi"],[123,124,"pl-smi"]],[[39,45,"pl-c1"],[54,62,"pl-smi"],[70,73,"pl-smi"],[74,75,"pl-smi"]],[],[[54,55,"pl-smi"]],[[20,22,"pl-k"]],[[64,69,"pl-c1"],[70,71,"pl-c1"],[72,74,"pl-c1"],[100,101,"pl-smi"]],[[30,31,"pl-smi"]],[[20,42,"pl-c1"],[130,150,"pl-c"],[130,132,"pl-c"]],[[20,325,"pl-c"],[20,22,"pl-c"]],[],[[50,51,"pl-c1"]],[],[],[[12,14,"pl-k"],[24,25,"pl-c1"]],[],[[16,30,"pl-c"],[16,18,"pl-c"]],[[27,34,"pl-c1"],[44,45,"pl-c1"],[57,58,"pl-c1"],[61,84,"pl-c1"]],[],[],[[4,15,"pl-c1"]],[[4,15,"pl-c1"]],[[11,19,"pl-smi"],[21,44,"pl-smi"],[47,52,"pl-c1"],[53,54,"pl-c1"],[55,57,"pl-c1"],[74,81,"pl-smi"],[89,111,"pl-smi"],[113,117,"pl-smi"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,33,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,54,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,32,"pl-en"],[33,36,"pl-k"]],[],[],[[26,38,"pl-smi"]],[[4,6,"pl-k"],[21,22,"pl-c1"],[33,46,"pl-smi"],[51,52,"pl-c1"],[56,131,"pl-c"],[56,58,"pl-c"]],[[26,39,"pl-smi"]],[[4,6,"pl-k"],[27,39,"pl-smi"],[56,107,"pl-c"],[56,58,"pl-c"]],[[20,21,"pl-c1"]],[[4,13,"pl-c1"],[27,28,"pl-c1"],[50,62,"pl-smi"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[],[[15,33,"pl-smi"],[36,40,"pl-c1"]],[[15,33,"pl-smi"]],[[15,33,"pl-smi"],[43,58,"pl-smi"]],[[8,13,"pl-k"],[40,49,"pl-c1"],[50,65,"pl-s"],[50,51,"pl-pds"],[64,65,"pl-pds"],[67,68,"pl-c1"],[77,79,"pl-smi"]],[[8,19,"pl-c1"]],[],[],[],[[0,4,"pl-k"],[5,38,"pl-en"]],[],[[4,6,"pl-k"],[16,34,"pl-smi"],[45,60,"pl-smi"],[71,89,"pl-smi"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[[4,9,"pl-k"],[36,45,"pl-c1"],[46,61,"pl-s"],[46,47,"pl-pds"],[60,61,"pl-pds"],[63,64,"pl-c1"],[73,75,"pl-smi"]],[[4,6,"pl-k"],[8,20,"pl-c1"]],[[8,14,"pl-k"],[15,19,"pl-c1"]],[[11,29,"pl-smi"],[32,37,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,62,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,106,"pl-c"],[0,2,"pl-c"]],[[0,61,"pl-c"],[0,2,"pl-c"]],[[0,57,"pl-c"],[0,2,"pl-c"]],[[0,70,"pl-c"],[0,2,"pl-c"]],[[0,73,"pl-c"],[0,2,"pl-c"]],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,39,"pl-en"]],[],[],[[28,41,"pl-smi"]],[[4,6,"pl-k"],[16,25,"pl-smi"]],[[8,14,"pl-k"]],[],[[4,8,"pl-k"],[26,31,"pl-c1"]],[[4,9,"pl-k"],[10,13,"pl-k"],[33,51,"pl-smi"],[55,56,"pl-c1"],[67,85,"pl-smi"],[95,107,"pl-smi"],[118,136,"pl-smi"],[140,141,"pl-c1"]],[[45,46,"pl-c1"],[58,65,"pl-smi"],[78,82,"pl-c1"]],[],[[4,13,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,10,"pl-k"],[22,26,"pl-c1"]],[],[[12,17,"pl-k"],[18,22,"pl-k"],[46,51,"pl-smi"],[97,106,"pl-smi"]],[[12,14,"pl-k"],[16,24,"pl-c1"],[25,39,"pl-c1"],[67,71,"pl-c1"],[73,78,"pl-c1"],[93,108,"pl-c"],[93,95,"pl-c"]],[[16,45,"pl-c1"]],[],[],[[8,13,"pl-k"],[14,18,"pl-k"]],[[8,10,"pl-k"],[19,43,"pl-smi"],[54,73,"pl-smi"],[85,90,"pl-smi"]],[[28,42,"pl-c1"],[80,105,"pl-c"],[80,82,"pl-c"]],[[8,12,"pl-k"]],[[28,42,"pl-c1"],[80,116,"pl-c"],[80,82,"pl-c"]],[[8,10,"pl-k"],[12,20,"pl-c1"],[36,40,"pl-c1"]],[[12,38,"pl-c1"]],[[25,29,"pl-c1"]],[],[],[[4,15,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,10,"pl-k"],[12,20,"pl-c1"],[21,35,"pl-c1"],[66,70,"pl-c1"],[72,77,"pl-c1"],[87,108,"pl-smi"]],[[19,45,"pl-smi"],[48,52,"pl-c1"]],[[25,29,"pl-c1"]],[],[],[[4,69,"pl-c"],[4,6,"pl-c"]],[[4,32,"pl-c"],[4,6,"pl-c"]],[[4,42,"pl-c"],[4,6,"pl-c"]],[],[[4,14,"pl-c"],[4,6,"pl-c"]],[[4,77,"pl-c"],[4,6,"pl-c"]],[[1,3,"pl-k"],[4,5,"pl-c1"]],[],[],[],[],[],[],[],[],[],[],[],[],[[1,6,"pl-k"]],[],[[4,26,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"]],[],[[8,10,"pl-k"]],[[12,21,"pl-c1"]],[[25,29,"pl-c1"]],[],[[8,20,"pl-c1"],[53,58,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[34,35,"pl-c1"],[61,73,"pl-smi"]],[],[[53,60,"pl-smi"]],[[12,14,"pl-k"],[30,35,"pl-smi"]],[[16,24,"pl-k"]],[],[[12,17,"pl-k"],[18,22,"pl-k"],[31,49,"pl-c1"]],[[12,14,"pl-k"],[24,28,"pl-c1"],[37,38,"pl-c1"],[43,44,"pl-c1"]],[[23,34,"pl-s"],[23,24,"pl-pds"],[33,34,"pl-pds"]],[],[[12,61,"pl-c"],[12,14,"pl-c"]],[[12,16,"pl-k"],[51,56,"pl-smi"],[91,96,"pl-c1"],[99,103,"pl-c1"]],[[12,14,"pl-k"],[30,43,"pl-smi"],[54,73,"pl-smi"],[77,78,"pl-c1"]],[[35,40,"pl-c1"]],[[12,14,"pl-k"],[16,24,"pl-c1"],[31,35,"pl-c1"],[51,64,"pl-smi"]],[[30,52,"pl-smi"],[70,83,"pl-smi"]],[],[[8,19,"pl-c1"]],[],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,62,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,35,"pl-c"],[0,2,"pl-c"]],[[0,44,"pl-c"],[0,2,"pl-c"]],[[0,37,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,25,"pl-c"],[0,2,"pl-c"]],[[0,35,"pl-c"],[0,2,"pl-c"]],[[0,35,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,91,"pl-c"],[0,2,"pl-c"]],[[0,139,"pl-c"],[0,2,"pl-c"]],[[0,156,"pl-c"],[0,2,"pl-c"]],[[0,141,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[7,11,"pl-k"],[12,29,"pl-en"],[72,75,"pl-k"],[91,94,"pl-k"]],[],[[4,20,"pl-c1"],[31,49,"pl-c1"]],[[58,75,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"]],[[8,24,"pl-c1"],[42,66,"pl-c1"]],[[14,16,"pl-smi"]],[[14,26,"pl-smi"]],[[14,29,"pl-smi"]],[[14,23,"pl-smi"],[26,30,"pl-c1"]],[],[],[[0,6,"pl-k"],[7,13,"pl-c1"],[14,40,"pl-en"],[41,44,"pl-k"]],[],[[4,10,"pl-k"],[11,17,"pl-k"],[41,47,"pl-c1"],[64,70,"pl-k"]],[],[],[[20,46,"pl-en"],[59,62,"pl-k"]],[],[],[[37,51,"pl-smi"],[52,63,"pl-c1"],[64,90,"pl-c1"]],[[4,21,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,25,"pl-c"],[0,2,"pl-c"]],[[20,48,"pl-en"]],[],[[4,60,"pl-c"],[4,6,"pl-c"]],[],[[4,7,"pl-k"],[42,56,"pl-smi"],[57,62,"pl-c1"],[78,82,"pl-c1"],[97,111,"pl-smi"],[112,122,"pl-c1"]],[[8,10,"pl-k"],[22,24,"pl-smi"]],[[12,18,"pl-k"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,47,"pl-c"],[0,2,"pl-c"]],[[20,48,"pl-en"]],[],[[4,6,"pl-k"],[15,29,"pl-smi"],[34,35,"pl-c1"]],[],[],[[41,55,"pl-smi"],[56,71,"pl-c1"],[79,93,"pl-smi"]],[[8,17,"pl-c1"],[28,30,"pl-smi"],[41,43,"pl-smi"]],[[8,10,"pl-k"],[22,37,"pl-smi"],[48,60,"pl-smi"]],[[12,18,"pl-k"],[29,34,"pl-c"],[29,31,"pl-c"]],[[18,20,"pl-smi"],[23,24,"pl-c1"],[26,87,"pl-c"],[26,28,"pl-c"]],[],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,30,"pl-en"]],[],[[11,25,"pl-smi"],[35,50,"pl-smi"],[53,57,"pl-c1"]],[[11,28,"pl-smi"],[31,36,"pl-c1"]],[[11,32,"pl-smi"],[35,40,"pl-c1"],[60,84,"pl-c"],[60,62,"pl-c"]],[[11,30,"pl-smi"],[60,131,"pl-c"],[60,62,"pl-c"]],[],[],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[[11,26,"pl-smi"],[29,34,"pl-c1"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[[8,14,"pl-k"]],[],[[4,35,"pl-c"],[4,6,"pl-c"]],[],[[35,56,"pl-c1"]],[[4,6,"pl-k"],[20,24,"pl-c1"]],[],[[19,38,"pl-c1"],[46,48,"pl-smi"],[57,69,"pl-smi"]],[[15,29,"pl-smi"],[34,48,"pl-smi"],[49,64,"pl-c1"]],[],[[14,26,"pl-smi"],[57,69,"pl-smi"]],[],[[4,93,"pl-c"],[4,6,"pl-c"]],[[4,13,"pl-c1"],[24,26,"pl-smi"],[37,39,"pl-smi"]],[[4,13,"pl-c1"],[24,36,"pl-smi"],[47,59,"pl-smi"],[73,88,"pl-smi"],[102,114,"pl-smi"]],[[38,45,"pl-smi"],[46,50,"pl-smi"]],[[58,75,"pl-c1"]],[],[[4,8,"pl-k"],[26,31,"pl-c1"]],[[14,23,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[31,43,"pl-smi"]],[],[[8,13,"pl-k"],[14,19,"pl-k"],[47,52,"pl-smi"],[101,114,"pl-smi"],[125,137,"pl-smi"]],[[25,38,"pl-smi"]],[[25,30,"pl-smi"]],[[25,37,"pl-smi"],[48,60,"pl-smi"]],[[25,34,"pl-smi"],[45,54,"pl-smi"]],[[25,38,"pl-smi"],[49,62,"pl-smi"]],[[25,34,"pl-smi"],[45,58,"pl-smi"]],[[25,34,"pl-smi"],[46,51,"pl-smi"],[92,93,"pl-c1"],[96,97,"pl-c1"]],[[8,10,"pl-k"],[21,26,"pl-smi"],[68,69,"pl-c1"]],[[29,33,"pl-c1"]],[],[[8,100,"pl-c"],[8,10,"pl-c"]],[[8,141,"pl-c"],[8,10,"pl-c"]],[[8,130,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[39,63,"pl-smi"]],[[22,31,"pl-smi"]],[[8,10,"pl-k"],[20,32,"pl-smi"]],[[22,31,"pl-smi"]],[[8,10,"pl-k"],[20,29,"pl-smi"],[34,35,"pl-c1"]],[[22,31,"pl-smi"]],[[8,10,"pl-k"],[20,33,"pl-smi"],[47,52,"pl-smi"],[93,94,"pl-c1"]],[[22,31,"pl-smi"]],[],[[14,23,"pl-smi"],[34,39,"pl-smi"]],[[14,22,"pl-smi"],[49,57,"pl-smi"],[60,61,"pl-c1"],[62,64,"pl-c1"]],[],[[4,24,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[],[[11,32,"pl-smi"],[35,40,"pl-c1"]],[[4,6,"pl-k"],[15,20,"pl-smi"]],[[8,14,"pl-k"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[],[[4,6,"pl-k"],[15,29,"pl-smi"],[34,35,"pl-c1"]],[],[[19,40,"pl-c1"],[48,50,"pl-smi"]],[[8,10,"pl-k"],[24,28,"pl-c1"]],[[12,18,"pl-k"]],[[8,10,"pl-k"],[22,34,"pl-smi"],[45,57,"pl-smi"],[59,141,"pl-c"],[59,61,"pl-c"]],[[19,34,"pl-smi"],[37,41,"pl-c1"]],[[15,29,"pl-smi"],[34,48,"pl-smi"],[49,64,"pl-c1"]],[],[[4,8,"pl-k"]],[],[[19,40,"pl-c1"]],[],[],[[11,30,"pl-smi"],[43,52,"pl-smi"]],[[11,19,"pl-smi"],[32,40,"pl-smi"]],[],[[4,42,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,31,"pl-c1"],[48,49,"pl-c1"]],[[16,28,"pl-smi"],[31,35,"pl-c1"]],[],[],[[4,93,"pl-c"],[4,6,"pl-c"]],[[58,75,"pl-c1"]],[[31,32,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[22,23,"pl-c1"],[44,56,"pl-smi"]],[],[[8,11,"pl-k"],[40,45,"pl-smi"]],[[8,10,"pl-k"],[23,24,"pl-c1"],[47,59,"pl-smi"]],[[12,20,"pl-k"]],[],[[43,50,"pl-smi"]],[[8,10,"pl-k"],[22,31,"pl-smi"]],[],[[12,14,"pl-k"],[33,42,"pl-smi"]],[[24,37,"pl-smi"],[57,70,"pl-smi"]],[[12,16,"pl-k"]],[[24,36,"pl-smi"],[56,69,"pl-smi"]],[],[[8,10,"pl-k"],[22,31,"pl-smi"]],[[20,32,"pl-smi"],[52,64,"pl-smi"]],[[37,38,"pl-c1"],[50,62,"pl-smi"]],[[8,10,"pl-k"],[23,32,"pl-smi"],[81,90,"pl-smi"],[95,96,"pl-c1"]],[[20,33,"pl-smi"],[44,66,"pl-smi"],[86,95,"pl-smi"],[99,100,"pl-c1"]],[[16,25,"pl-smi"],[45,54,"pl-smi"]],[[16,29,"pl-smi"],[49,62,"pl-smi"]],[],[],[[4,50,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[57,69,"pl-smi"],[73,75,"pl-c1"],[80,81,"pl-c1"],[92,93,"pl-c1"],[107,119,"pl-smi"],[123,124,"pl-c1"]],[[4,6,"pl-k"]],[[8,11,"pl-k"],[13,16,"pl-k"],[28,29,"pl-c1"],[49,61,"pl-smi"]],[[19,26,"pl-smi"],[37,49,"pl-smi"]],[],[[4,20,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[24,25,"pl-c1"],[45,57,"pl-smi"]],[[15,34,"pl-smi"],[42,49,"pl-smi"],[60,72,"pl-smi"]],[],[],[[0,6,"pl-k"],[7,11,"pl-k"],[12,41,"pl-en"]],[],[],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[27,33,"pl-smi"],[34,44,"pl-c1"]],[[8,10,"pl-k"],[34,40,"pl-smi"],[41,54,"pl-c1"]],[[19,33,"pl-smi"],[37,38,"pl-c1"]],[[6,20,"pl-smi"],[21,26,"pl-c1"]],[],[],[[0,37,"pl-c"],[0,2,"pl-c"]],[[0,6,"pl-k"],[7,11,"pl-k"],[12,41,"pl-en"]],[],[],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[27,33,"pl-smi"],[34,44,"pl-c1"]],[[8,10,"pl-k"],[34,40,"pl-smi"],[41,54,"pl-c1"]],[],[[19,40,"pl-smi"],[43,47,"pl-c1"]],[[19,33,"pl-smi"],[37,38,"pl-c1"]],[],[],[],[[0,6,"pl-k"],[7,11,"pl-k"],[13,42,"pl-en"],[81,86,"pl-k"],[87,91,"pl-k"]],[],[[17,18,"pl-c1"]],[[4,7,"pl-k"],[24,25,"pl-c1"]],[[4,6,"pl-k"],[8,14,"pl-c1"],[21,32,"pl-s"],[21,22,"pl-pds"],[31,32,"pl-pds"],[57,58,"pl-c1"]],[[8,14,"pl-k"],[15,19,"pl-c1"]],[],[[4,6,"pl-k"],[39,67,"pl-c1"]],[],[[8,10,"pl-k"],[22,37,"pl-smi"]],[],[[12,29,"pl-c1"],[69,84,"pl-smi"],[87,97,"pl-c"],[87,89,"pl-c"]],[[12,18,"pl-k"]],[],[[18,20,"pl-smi"],[23,24,"pl-c1"],[26,87,"pl-c"],[26,28,"pl-c"]],[],[[4,10,"pl-k"],[11,37,"pl-c1"]],[],[],[[0,6,"pl-k"],[7,11,"pl-k"],[12,41,"pl-en"],[80,84,"pl-k"],[93,98,"pl-k"],[99,103,"pl-k"]],[],[[4,72,"pl-c"],[4,6,"pl-c"]],[],[[4,9,"pl-k"],[14,15,"pl-c1"],[16,18,"pl-c1"]],[[4,7,"pl-k"],[19,20,"pl-c1"],[26,27,"pl-c1"],[33,34,"pl-c1"]],[],[[4,6,"pl-k"],[8,14,"pl-c1"],[21,34,"pl-s"],[21,22,"pl-pds"],[33,34,"pl-pds"],[43,44,"pl-c1"],[58,66,"pl-smi"],[72,78,"pl-k"]],[],[[4,6,"pl-k"],[8,14,"pl-c1"],[21,34,"pl-s"],[21,22,"pl-pds"],[33,34,"pl-pds"],[54,55,"pl-c1"]],[],[[8,10,"pl-k"],[23,24,"pl-c1"],[50,62,"pl-smi"]],[[12,18,"pl-k"]],[[15,29,"pl-c1"]],[[8,12,"pl-k"],[17,18,"pl-c1"]],[[53,70,"pl-c1"]],[[16,21,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,42,"pl-s"],[25,26,"pl-pds"],[41,42,"pl-pds"],[61,62,"pl-c1"],[73,87,"pl-c1"],[107,113,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,37,"pl-s"],[25,26,"pl-pds"],[36,37,"pl-pds"],[50,51,"pl-c1"],[73,87,"pl-c1"],[107,120,"pl-smi"],[124,129,"pl-k"],[141,150,"pl-smi"],[153,154,"pl-c1"],[166,175,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,38,"pl-s"],[25,26,"pl-pds"],[37,38,"pl-pds"],[51,52,"pl-c1"],[73,87,"pl-c1"],[107,120,"pl-smi"],[134,143,"pl-smi"],[146,147,"pl-c1"],[159,168,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,39,"pl-s"],[25,26,"pl-pds"],[38,39,"pl-pds"],[52,53,"pl-c1"],[73,87,"pl-c1"],[107,116,"pl-smi"],[138,147,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,37,"pl-s"],[25,26,"pl-pds"],[36,37,"pl-pds"],[50,51,"pl-c1"],[73,87,"pl-c1"],[107,119,"pl-smi"],[156,165,"pl-smi"]],[[8,10,"pl-k"],[12,18,"pl-c1"],[25,38,"pl-s"],[25,26,"pl-pds"],[37,38,"pl-pds"],[55,56,"pl-c1"],[73,87,"pl-c1"],[107,116,"pl-smi"],[151,164,"pl-smi"],[173,176,"pl-s"],[173,174,"pl-pds"],[175,176,"pl-pds"],[252,261,"pl-smi"]],[],[],[],[[0,6,"pl-k"],[7,11,"pl-k"],[12,41,"pl-en"]],[],[],[[4,7,"pl-k"],[42,56,"pl-smi"],[57,62,"pl-c1"],[78,82,"pl-c1"],[97,111,"pl-smi"],[112,122,"pl-c1"]],[],[[8,10,"pl-k"],[22,24,"pl-smi"],[28,29,"pl-c1"],[31,55,"pl-c"],[31,33,"pl-c"]],[[12,20,"pl-k"]],[],[[8,108,"pl-c"],[8,10,"pl-c"]],[[8,37,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,18,"pl-k"],[45,54,"pl-smi"],[87,88,"pl-c1"]],[[8,13,"pl-k"],[14,18,"pl-k"],[45,54,"pl-smi"],[86,87,"pl-c1"]],[[8,13,"pl-k"],[14,18,"pl-k"],[45,54,"pl-smi"],[89,90,"pl-c1"]],[[8,13,"pl-k"],[14,18,"pl-k"],[45,54,"pl-smi"],[86,87,"pl-c1"]],[[8,129,"pl-c"],[8,10,"pl-c"]],[],[[13,20,"pl-c1"],[26,30,"pl-c1"],[35,37,"pl-c1"],[50,62,"pl-smi"],[65,67,"pl-c1"],[70,89,"pl-c"],[70,72,"pl-c"]],[[13,20,"pl-c1"],[21,40,"pl-s"],[21,22,"pl-pds"],[37,39,"pl-cce"],[39,40,"pl-pds"],[51,59,"pl-smi"],[71,73,"pl-smi"],[85,97,"pl-smi"]],[[8,10,"pl-k"],[22,30,"pl-smi"],[34,35,"pl-c1"],[36,38,"pl-c1"]],[[17,24,"pl-c1"],[25,40,"pl-s"],[25,26,"pl-pds"],[37,39,"pl-cce"],[39,40,"pl-pds"],[52,60,"pl-smi"]],[[53,70,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[28,29,"pl-c1"],[52,64,"pl-smi"]],[],[[12,80,"pl-c"],[12,14,"pl-c"]],[[12,16,"pl-k"],[39,45,"pl-smi"],[49,50,"pl-c1"],[119,128,"pl-smi"],[133,134,"pl-c1"]],[[12,14,"pl-k"]],[[16,24,"pl-k"]],[[17,24,"pl-c1"],[25,38,"pl-s"],[25,26,"pl-pds"],[37,38,"pl-pds"]],[[12,14,"pl-k"],[24,30,"pl-smi"],[34,35,"pl-c1"],[63,70,"pl-c1"],[71,85,"pl-s"],[71,72,"pl-pds"],[84,85,"pl-pds"],[95,101,"pl-smi"]],[[12,14,"pl-k"],[37,46,"pl-smi"],[63,70,"pl-c1"],[71,85,"pl-s"],[71,72,"pl-pds"],[84,85,"pl-pds"],[95,108,"pl-smi"]],[[12,14,"pl-k"],[38,47,"pl-smi"],[63,70,"pl-c1"],[71,82,"pl-s"],[71,72,"pl-pds"],[81,82,"pl-pds"],[85,88,"pl-k"],[97,110,"pl-smi"]],[[12,14,"pl-k"],[63,70,"pl-c1"],[71,84,"pl-s"],[71,72,"pl-pds"],[83,84,"pl-pds"],[94,103,"pl-smi"]],[[12,14,"pl-k"],[63,70,"pl-c1"],[71,82,"pl-s"],[71,72,"pl-pds"],[81,82,"pl-pds"],[92,104,"pl-smi"]],[[12,14,"pl-k"],[37,46,"pl-smi"],[51,52,"pl-c1"],[63,70,"pl-c1"],[71,83,"pl-s"],[71,72,"pl-pds"],[82,83,"pl-pds"],[93,102,"pl-smi"],[113,126,"pl-smi"],[162,165,"pl-s"],[162,163,"pl-pds"],[164,165,"pl-pds"],[168,171,"pl-s"],[168,169,"pl-pds"],[170,171,"pl-pds"]],[[17,23,"pl-c1"],[24,28,"pl-s"],[24,25,"pl-pds"],[25,27,"pl-cce"],[27,28,"pl-pds"]],[],[[13,19,"pl-c1"],[20,24,"pl-s"],[20,21,"pl-pds"],[21,23,"pl-cce"],[23,24,"pl-pds"]],[],[],[],[[0,4,"pl-k"],[5,43,"pl-en"]],[],[],[[16,24,"pl-smi"],[27,34,"pl-s"],[27,28,"pl-pds"],[33,34,"pl-pds"]],[[16,24,"pl-smi"],[27,36,"pl-c1"],[37,44,"pl-s"],[37,38,"pl-pds"],[43,44,"pl-pds"]],[[16,26,"pl-smi"]],[[16,26,"pl-smi"]],[[16,26,"pl-smi"]],[[16,26,"pl-smi"]],[[16,26,"pl-smi"]],[[4,22,"pl-c1"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,29,"pl-c"],[0,2,"pl-c"]],[[0,48,"pl-c"],[0,2,"pl-c"]],[[0,40,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,23,"pl-en"]],[],[[4,64,"pl-c"],[4,6,"pl-c"]],[],[[4,7,"pl-k"],[22,28,"pl-smi"],[29,37,"pl-c1"]],[[4,69,"pl-c"],[4,6,"pl-c"]],[[4,43,"pl-c"],[4,6,"pl-c"]],[[6,12,"pl-smi"],[13,19,"pl-c1"],[27,29,"pl-smi"]],[[6,26,"pl-smi"],[41,42,"pl-c1"],[43,45,"pl-c1"]],[],[],[[0,65,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,42,"pl-en"]],[],[[4,83,"pl-c"],[4,6,"pl-c"]],[],[[4,13,"pl-c1"],[21,36,"pl-smi"],[40,45,"pl-c1"]],[[11,20,"pl-smi"],[21,26,"pl-smi"],[29,33,"pl-c1"]],[[11,25,"pl-smi"],[26,31,"pl-c1"]],[[11,27,"pl-smi"],[30,34,"pl-c1"],[36,117,"pl-c"],[36,38,"pl-c"]],[[11,23,"pl-smi"],[24,29,"pl-c1"]],[[11,26,"pl-smi"],[29,33,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[31,43,"pl-smi"]],[[15,22,"pl-smi"],[26,36,"pl-smi"],[40,41,"pl-c1"]],[[6,26,"pl-smi"],[29,35,"pl-smi"],[36,44,"pl-c1"],[56,57,"pl-c1"],[58,60,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,42,"pl-en"]],[],[[15,27,"pl-smi"],[28,43,"pl-c1"]],[[15,29,"pl-smi"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[],[],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[],[[4,7,"pl-k"],[26,27,"pl-c1"]],[[4,7,"pl-k"],[42,56,"pl-smi"],[57,62,"pl-c1"],[78,82,"pl-c1"],[97,111,"pl-smi"],[112,122,"pl-c1"]],[[8,10,"pl-k"],[22,24,"pl-smi"],[28,29,"pl-c1"]],[[32,35,"pl-k"],[36,62,"pl-c1"],[73,85,"pl-smi"]],[[4,6,"pl-k"],[29,43,"pl-smi"],[44,47,"pl-smi"],[48,52,"pl-smi"]],[[8,14,"pl-k"]],[],[[21,24,"pl-smi"],[25,32,"pl-c1"]],[[4,7,"pl-k"],[42,56,"pl-smi"],[57,62,"pl-c1"],[78,82,"pl-c1"],[97,111,"pl-smi"],[112,122,"pl-c1"]],[[8,10,"pl-k"],[22,24,"pl-smi"],[28,29,"pl-c1"]],[[12,18,"pl-c1"],[36,47,"pl-c1"],[48,74,"pl-c1"],[85,97,"pl-smi"],[111,137,"pl-c1"],[148,160,"pl-smi"]],[[6,20,"pl-smi"],[21,25,"pl-c1"]],[],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,30,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,32,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[1,7,"pl-k"]],[],[[0,6,"pl-k"],[7,12,"pl-k"],[13,17,"pl-k"],[19,52,"pl-en"]],[],[],[[4,6,"pl-k"],[62,68,"pl-k"],[69,79,"pl-s"],[69,70,"pl-pds"],[78,79,"pl-pds"]],[[4,6,"pl-k"],[62,68,"pl-k"],[69,80,"pl-s"],[69,70,"pl-pds"],[79,80,"pl-pds"]],[[4,6,"pl-k"],[62,68,"pl-k"],[69,82,"pl-s"],[69,70,"pl-pds"],[81,82,"pl-pds"]],[[4,6,"pl-k"],[62,68,"pl-k"],[69,82,"pl-s"],[69,70,"pl-pds"],[81,82,"pl-pds"]],[[4,10,"pl-k"],[11,16,"pl-s"],[11,12,"pl-pds"],[15,16,"pl-pds"]],[],[],[[0,4,"pl-k"],[5,26,"pl-en"]],[],[],[[4,9,"pl-k"],[10,14,"pl-k"],[35,50,"pl-smi"],[56,66,"pl-smi"],[69,70,"pl-c1"],[73,156,"pl-c"],[73,75,"pl-c"]],[[4,6,"pl-k"],[22,36,"pl-c1"],[52,69,"pl-c1"]],[[4,8,"pl-k"],[9,13,"pl-c1"],[16,24,"pl-c1"],[32,70,"pl-s"],[32,33,"pl-pds"],[69,70,"pl-pds"],[79,81,"pl-smi"],[90,102,"pl-smi"],[111,122,"pl-smi"],[124,128,"pl-smi"],[142,144,"pl-s"],[142,143,"pl-pds"],[143,144,"pl-pds"],[147,160,"pl-s"],[147,148,"pl-pds"],[159,160,"pl-pds"]],[[4,6,"pl-k"],[22,35,"pl-c1"]],[[4,6,"pl-k"],[8,21,"pl-c1"]],[[8,29,"pl-c1"],[33,40,"pl-c1"],[48,57,"pl-smi"],[58,61,"pl-smi"],[70,79,"pl-smi"],[80,83,"pl-smi"],[85,93,"pl-c1"],[94,97,"pl-c1"],[99,102,"pl-c1"],[104,105,"pl-c1"],[107,110,"pl-c1"]],[[4,6,"pl-k"],[8,21,"pl-c1"],[34,51,"pl-smi"],[56,57,"pl-c1"]],[[8,29,"pl-c1"],[33,40,"pl-c1"],[41,55,"pl-c1"],[59,73,"pl-c1"],[77,85,"pl-c1"],[86,89,"pl-c1"],[91,94,"pl-c1"],[96,97,"pl-c1"],[99,102,"pl-c1"]],[[4,6,"pl-k"],[9,13,"pl-c1"]],[[8,14,"pl-k"]],[[4,6,"pl-k"],[15,30,"pl-smi"],[33,34,"pl-c1"]],[[8,12,"pl-c1"],[13,90,"pl-s"],[13,14,"pl-pds"],[89,90,"pl-pds"],[99,114,"pl-smi"],[117,118,"pl-c1"]],[[4,6,"pl-k"],[10,12,"pl-smi"],[13,41,"pl-smi"]],[],[[8,10,"pl-k"],[12,28,"pl-c1"],[29,45,"pl-s"],[29,30,"pl-pds"],[44,45,"pl-pds"],[47,64,"pl-s"],[47,48,"pl-pds"],[63,64,"pl-pds"]],[[14,31,"pl-smi"],[41,43,"pl-smi"]],[[8,16,"pl-c1"]],[],[],[[4,8,"pl-k"],[26,37,"pl-c1"],[38,54,"pl-s"],[38,39,"pl-pds"],[53,54,"pl-pds"]],[[4,14,"pl-c1"],[15,75,"pl-s"],[15,16,"pl-pds"],[74,75,"pl-pds"],[84,93,"pl-smi"],[94,97,"pl-smi"],[98,99,"pl-smi"],[108,117,"pl-smi"],[118,121,"pl-smi"],[122,123,"pl-smi"],[132,141,"pl-smi"],[142,150,"pl-c1"],[161,170,"pl-smi"],[171,180,"pl-c1"],[184,217,"pl-c1"],[225,230,"pl-smi"]],[[4,14,"pl-c1"],[15,87,"pl-s"],[15,16,"pl-pds"],[86,87,"pl-pds"],[96,113,"pl-smi"],[122,141,"pl-smi"],[150,160,"pl-smi"],[169,179,"pl-smi"],[183,184,"pl-c1"],[185,187,"pl-c1"],[190,199,"pl-s"],[190,191,"pl-pds"],[198,199,"pl-pds"],[202,204,"pl-s"],[202,203,"pl-pds"],[203,204,"pl-pds"]],[[4,14,"pl-c1"],[15,81,"pl-s"],[15,16,"pl-pds"],[80,81,"pl-pds"],[90,102,"pl-smi"],[111,124,"pl-smi"],[133,146,"pl-smi"],[155,168,"pl-smi"]],[[4,14,"pl-c1"],[15,63,"pl-s"],[15,16,"pl-pds"],[62,63,"pl-pds"],[72,89,"pl-smi"],[98,117,"pl-smi"]],[[4,14,"pl-c1"],[15,75,"pl-s"],[15,16,"pl-pds"],[74,75,"pl-pds"],[84,97,"pl-smi"],[106,119,"pl-smi"],[128,144,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[31,46,"pl-smi"],[49,50,"pl-c1"]],[],[[49,69,"pl-c1"]],[[8,18,"pl-c1"],[19,71,"pl-s"],[19,20,"pl-pds"],[70,71,"pl-pds"],[92,106,"pl-smi"],[124,139,"pl-smi"]],[],[[4,75,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[24,25,"pl-c1"],[26,28,"pl-c1"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[31,43,"pl-smi"]],[[8,10,"pl-k"],[19,26,"pl-smi"],[30,35,"pl-smi"]],[[34,41,"pl-smi"],[45,58,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[31,43,"pl-smi"]],[],[[43,50,"pl-smi"]],[[8,13,"pl-k"],[14,18,"pl-k"],[27,45,"pl-c1"]],[[8,12,"pl-k"],[17,20,"pl-c1"]],[[8,22,"pl-c1"],[28,40,"pl-c1"]],[[12,64,"pl-s"],[12,13,"pl-pds"],[61,63,"pl-cce"],[63,64,"pl-pds"]],[[12,101,"pl-s"],[12,13,"pl-pds"],[98,100,"pl-cce"],[100,101,"pl-pds"]],[[12,87,"pl-s"],[12,13,"pl-pds"],[84,86,"pl-cce"],[86,87,"pl-pds"]],[[12,78,"pl-s"],[12,13,"pl-pds"],[75,77,"pl-cce"],[77,78,"pl-pds"]],[[12,68,"pl-s"],[12,13,"pl-pds"],[65,67,"pl-cce"],[67,68,"pl-pds"]],[[12,65,"pl-s"],[12,13,"pl-pds"],[64,65,"pl-pds"]],[[23,35,"pl-smi"],[51,55,"pl-smi"],[65,73,"pl-smi"],[74,77,"pl-smi"],[78,79,"pl-smi"],[89,93,"pl-smi"],[103,111,"pl-smi"],[112,115,"pl-smi"],[116,117,"pl-smi"],[131,151,"pl-smi"],[155,166,"pl-s"],[155,156,"pl-pds"],[165,166,"pl-pds"],[169,171,"pl-s"],[169,170,"pl-pds"],[170,171,"pl-pds"]],[[20,29,"pl-smi"],[39,49,"pl-smi"],[59,69,"pl-smi"],[79,94,"pl-smi"],[104,115,"pl-smi"],[125,142,"pl-smi"],[152,171,"pl-smi"]],[[20,30,"pl-smi"],[40,52,"pl-smi"],[62,71,"pl-smi"],[81,94,"pl-smi"],[104,117,"pl-smi"],[120,121,"pl-c1"],[122,124,"pl-c1"],[136,149,"pl-smi"],[167,170,"pl-c1"],[171,173,"pl-c1"],[176,177,"pl-c1"],[178,180,"pl-c1"]],[[20,24,"pl-smi"],[34,38,"pl-smi"],[48,52,"pl-smi"],[63,67,"pl-smi"],[77,85,"pl-smi"],[86,89,"pl-smi"],[90,91,"pl-smi"],[101,109,"pl-smi"],[110,113,"pl-smi"],[114,115,"pl-smi"],[125,133,"pl-smi"],[134,137,"pl-smi"],[138,139,"pl-smi"],[150,158,"pl-smi"],[159,162,"pl-smi"],[163,164,"pl-smi"]],[[20,37,"pl-smi"],[48,56,"pl-smi"],[66,85,"pl-smi"],[96,104,"pl-smi"],[114,136,"pl-smi"],[147,155,"pl-smi"],[165,188,"pl-smi"],[199,207,"pl-smi"]],[[20,29,"pl-smi"],[40,53,"pl-smi"],[89,97,"pl-s"],[89,90,"pl-pds"],[96,97,"pl-pds"],[109,122,"pl-smi"],[159,167,"pl-s"],[159,160,"pl-pds"],[166,167,"pl-pds"],[170,172,"pl-s"],[170,171,"pl-pds"],[171,172,"pl-pds"],[182,188,"pl-smi"],[198,203,"pl-smi"]],[[21,26,"pl-smi"],[67,82,"pl-s"],[67,68,"pl-pds"],[81,82,"pl-pds"],[85,87,"pl-s"],[85,86,"pl-pds"],[86,87,"pl-pds"]],[[21,26,"pl-smi"],[65,78,"pl-s"],[65,66,"pl-pds"],[77,78,"pl-pds"],[81,83,"pl-s"],[81,82,"pl-pds"],[82,83,"pl-pds"]],[[21,26,"pl-smi"],[63,74,"pl-s"],[63,64,"pl-pds"],[73,74,"pl-pds"],[77,79,"pl-s"],[77,78,"pl-pds"],[78,79,"pl-pds"]],[[8,14,"pl-c1"]],[[8,18,"pl-c1"]],[[8,10,"pl-k"],[12,25,"pl-c1"]],[],[[19,20,"pl-smi"],[29,33,"pl-smi"],[42,51,"pl-smi"],[52,55,"pl-smi"],[56,57,"pl-smi"],[67,71,"pl-smi"],[80,89,"pl-smi"],[90,93,"pl-smi"],[94,95,"pl-smi"]],[[12,33,"pl-c1"],[37,44,"pl-c1"],[47,50,"pl-smi"],[54,57,"pl-smi"],[59,67,"pl-c1"],[68,71,"pl-c1"],[73,76,"pl-c1"],[78,79,"pl-c1"],[81,84,"pl-c1"]],[],[],[[4,6,"pl-k"],[39,60,"pl-c1"]],[[8,30,"pl-c1"]],[[4,6,"pl-k"]],[[15,32,"pl-smi"],[35,39,"pl-c1"]],[[4,11,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[[4,6,"pl-k"],[9,17,"pl-c1"],[19,23,"pl-k"],[26,34,"pl-c1"],[45,47,"pl-smi"],[49,79,"pl-s"],[49,50,"pl-pds"],[78,79,"pl-pds"],[91,93,"pl-smi"],[105,117,"pl-smi"]],[[8,14,"pl-k"]],[[4,14,"pl-c1"],[15,34,"pl-s"],[15,16,"pl-pds"],[33,34,"pl-pds"],[46,55,"pl-smi"]],[[4,14,"pl-c1"],[15,42,"pl-s"],[15,16,"pl-pds"],[41,42,"pl-pds"],[54,66,"pl-smi"],[78,93,"pl-smi"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[34,46,"pl-smi"]],[],[[63,80,"pl-c1"]],[[56,65,"pl-smi"],[70,71,"pl-c1"],[112,125,"pl-smi"]],[[8,18,"pl-c1"],[19,85,"pl-s"],[19,20,"pl-pds"],[84,85,"pl-pds"]],[[32,44,"pl-smi"],[63,72,"pl-smi"]],[[57,62,"pl-s"],[57,58,"pl-pds"],[61,62,"pl-pds"],[111,116,"pl-s"],[111,112,"pl-pds"],[115,116,"pl-pds"],[119,124,"pl-s"],[119,120,"pl-pds"],[123,124,"pl-pds"]],[[29,38,"pl-smi"],[57,66,"pl-smi"],[69,77,"pl-s"],[69,70,"pl-pds"],[76,77,"pl-pds"],[80,88,"pl-s"],[80,81,"pl-pds"],[87,88,"pl-pds"],[107,120,"pl-smi"],[139,145,"pl-smi"]],[],[[4,11,"pl-c1"]],[],[],[[1,5,"pl-k"],[6,42,"pl-c"],[6,8,"pl-c"]],[],[[0,4,"pl-k"],[5,26,"pl-en"]],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[[1,6,"pl-k"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,52,"pl-c"],[0,2,"pl-c"]],[[0,60,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,97,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,21,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,21,"pl-c"],[0,2,"pl-c"]],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,21,"pl-c"],[0,2,"pl-c"]],[[0,36,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,37,"pl-c"],[0,2,"pl-c"]],[[0,30,"pl-c"],[0,2,"pl-c"]],[[0,19,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c"],[0,2,"pl-c"]],[[0,14,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[0,107,"pl-c"],[0,2,"pl-c"]],[[0,62,"pl-c"],[0,2,"pl-c"]],[[0,108,"pl-c"],[0,2,"pl-c"]],[[0,73,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,45,"pl-en"],[67,72,"pl-k"]],[],[[38,44,"pl-c1"]],[[12,20,"pl-smi"]],[[12,20,"pl-smi"],[22,32,"pl-smi"],[33,41,"pl-smi"]],[[12,20,"pl-smi"],[22,36,"pl-smi"],[37,41,"pl-smi"],[50,58,"pl-smi"],[60,74,"pl-smi"],[75,79,"pl-smi"],[82,83,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,25,"pl-en"]],[],[[26,46,"pl-c1"]],[[4,10,"pl-k"],[19,21,"pl-smi"],[22,36,"pl-smi"],[47,49,"pl-smi"],[50,64,"pl-smi"],[66,73,"pl-smi"],[76,77,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,26,"pl-en"]],[],[[26,46,"pl-c1"]],[[4,10,"pl-k"],[19,21,"pl-smi"],[22,36,"pl-smi"],[47,49,"pl-smi"],[50,64,"pl-smi"],[66,71,"pl-smi"],[74,75,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,36,"pl-en"],[37,42,"pl-k"],[69,74,"pl-k"]],[],[[4,10,"pl-k"],[35,42,"pl-smi"],[54,61,"pl-smi"]],[],[],[[0,5,"pl-k"],[6,36,"pl-en"],[37,42,"pl-k"],[69,74,"pl-k"]],[],[[4,10,"pl-k"],[30,37,"pl-smi"],[49,56,"pl-smi"]],[],[],[[0,6,"pl-k"],[7,12,"pl-k"],[13,18,"pl-k"],[53,54,"pl-c1"],[55,57,"pl-c1"]],[],[[0,6,"pl-k"],[7,12,"pl-k"],[13,35,"pl-en"],[62,65,"pl-k"]],[],[[4,139,"pl-c"],[4,6,"pl-c"]],[[4,127,"pl-c"],[4,6,"pl-c"]],[],[[28,41,"pl-smi"]],[[4,13,"pl-c1"],[29,30,"pl-c1"],[33,73,"pl-c"],[33,35,"pl-c"]],[[4,13,"pl-c1"],[16,24,"pl-smi"],[37,39,"pl-smi"],[42,49,"pl-c1"]],[],[[4,9,"pl-k"],[16,18,"pl-smi"],[19,27,"pl-smi"],[28,29,"pl-smi"],[34,53,"pl-smi"],[54,55,"pl-smi"],[58,65,"pl-c1"],[102,117,"pl-smi"],[129,132,"pl-smi"],[133,134,"pl-smi"]],[[8,13,"pl-c1"],[17,39,"pl-c1"],[55,56,"pl-c1"],[62,67,"pl-smi"],[68,85,"pl-smi"]],[[4,6,"pl-k"],[18,23,"pl-smi"]],[[12,17,"pl-c1"],[21,43,"pl-c1"],[59,60,"pl-c1"],[66,71,"pl-smi"],[72,89,"pl-smi"]],[],[[4,10,"pl-k"]],[],[],[[0,5,"pl-k"],[6,28,"pl-en"],[29,32,"pl-k"]],[],[[26,46,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[19,23,"pl-c1"]],[[8,14,"pl-k"],[15,16,"pl-c1"],[17,19,"pl-c1"]],[],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[[4,13,"pl-c1"],[38,45,"pl-smi"],[46,50,"pl-smi"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[29,36,"pl-smi"],[51,61,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[27,33,"pl-c1"],[43,50,"pl-smi"],[61,68,"pl-smi"]],[[4,10,"pl-k"]],[],[],[[0,6,"pl-k"],[7,12,"pl-k"],[13,29,"pl-en"],[56,59,"pl-k"],[74,78,"pl-k"],[95,100,"pl-c1"]],[],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[],[[4,9,"pl-k"]],[[4,6,"pl-k"]],[[31,38,"pl-smi"],[54,55,"pl-c1"],[57,79,"pl-smi"],[91,98,"pl-smi"],[113,135,"pl-smi"]],[[4,8,"pl-k"]],[[31,38,"pl-smi"],[54,55,"pl-c1"],[57,67,"pl-smi"],[79,86,"pl-smi"],[101,111,"pl-smi"]],[[4,10,"pl-k"],[11,41,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,27,"pl-en"],[28,31,"pl-k"]],[],[],[[28,41,"pl-smi"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[19,23,"pl-c1"]],[[8,14,"pl-k"],[15,36,"pl-c1"],[39,40,"pl-smi"]],[],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[[4,10,"pl-k"],[11,34,"pl-c1"],[53,60,"pl-smi"],[76,77,"pl-c1"],[79,89,"pl-smi"],[101,108,"pl-smi"],[123,133,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,27,"pl-en"],[28,31,"pl-k"],[46,51,"pl-k"]],[],[],[[28,41,"pl-smi"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,13,"pl-c1"],[25,29,"pl-c1"]],[],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[[4,13,"pl-c1"],[38,45,"pl-smi"],[46,50,"pl-smi"]],[],[[4,9,"pl-k"],[10,14,"pl-k"],[43,48,"pl-smi"],[117,122,"pl-smi"],[125,126,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[41,57,"pl-c1"],[90,104,"pl-smi"],[108,109,"pl-c1"],[110,112,"pl-c1"]],[],[[4,6,"pl-k"],[19,24,"pl-smi"]],[[17,22,"pl-c1"],[40,47,"pl-smi"],[52,57,"pl-smi"],[58,75,"pl-smi"],[88,93,"pl-smi"]],[[13,20,"pl-smi"],[35,45,"pl-smi"],[48,71,"pl-c1"],[99,106,"pl-smi"]],[],[[4,6,"pl-k"]],[[8,23,"pl-c1"],[39,40,"pl-c1"],[51,56,"pl-c1"],[59,64,"pl-smi"],[65,82,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,26,"pl-en"],[27,30,"pl-k"],[45,50,"pl-k"]],[],[[26,46,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,13,"pl-c1"],[25,29,"pl-c1"]],[],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[[4,19,"pl-c1"],[35,36,"pl-c1"],[38,53,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,30,"pl-en"],[31,34,"pl-k"]],[],[[26,46,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[23,24,"pl-c1"]],[[32,39,"pl-smi"]],[],[[43,50,"pl-smi"]],[[4,16,"pl-c1"],[25,33,"pl-smi"],[34,37,"pl-smi"],[47,55,"pl-smi"],[56,59,"pl-smi"],[61,66,"pl-c1"]],[],[],[[0,123,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,33,"pl-en"]],[],[[26,46,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[17,22,"pl-smi"],[26,27,"pl-c1"]],[[8,14,"pl-k"]],[],[[4,63,"pl-c"],[4,6,"pl-c"]],[[13,31,"pl-smi"],[42,50,"pl-smi"]],[[4,37,"pl-c1"],[55,74,"pl-smi"]],[[13,21,"pl-smi"],[22,39,"pl-c1"],[48,56,"pl-smi"],[58,59,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,32,"pl-en"]],[],[[26,46,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[17,22,"pl-smi"],[26,27,"pl-c1"]],[[8,14,"pl-k"]],[],[[4,62,"pl-c"],[4,6,"pl-c"]],[[4,37,"pl-c1"],[55,73,"pl-smi"]],[[13,21,"pl-smi"],[22,39,"pl-c1"],[48,56,"pl-smi"],[67,74,"pl-smi"],[77,78,"pl-c1"]],[],[],[[17,43,"pl-en"]],[],[[4,114,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"],[32,46,"pl-smi"],[47,51,"pl-smi"]],[[8,10,"pl-k"],[20,34,"pl-smi"],[38,40,"pl-smi"]],[[12,18,"pl-k"],[28,42,"pl-smi"]],[],[[12,26,"pl-smi"],[27,36,"pl-c1"],[37,52,"pl-c1"]],[[40,54,"pl-smi"],[55,59,"pl-c1"]],[[13,15,"pl-smi"]],[[4,10,"pl-k"]],[],[],[[8,27,"pl-en"],[28,33,"pl-k"],[34,38,"pl-k"],[48,51,"pl-k"]],[],[[26,42,"pl-c1"]],[],[[4,128,"pl-c"],[4,6,"pl-c"]],[[4,129,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-c1"],[11,21,"pl-c1"],[34,35,"pl-c1"]],[[25,30,"pl-c1"],[49,58,"pl-s"],[49,50,"pl-pds"],[57,58,"pl-pds"]],[[4,9,"pl-c1"]],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,24,"pl-en"],[25,30,"pl-k"],[31,35,"pl-k"],[45,48,"pl-k"]],[],[],[[26,42,"pl-c1"]],[],[[4,13,"pl-c1"],[31,32,"pl-c1"]],[[4,13,"pl-c1"],[22,24,"pl-smi"],[25,39,"pl-smi"],[43,47,"pl-c1"],[52,97,"pl-c"],[52,54,"pl-c"]],[],[[4,42,"pl-c"],[4,6,"pl-c"]],[[17,29,"pl-c1"]],[[31,50,"pl-c1"]],[[4,13,"pl-c1"],[23,25,"pl-smi"]],[[13,20,"pl-smi"],[23,24,"pl-c1"]],[[13,18,"pl-smi"]],[[13,18,"pl-smi"]],[[12,14,"pl-smi"],[15,29,"pl-smi"]],[[12,14,"pl-smi"],[15,35,"pl-smi"],[38,43,"pl-c1"],[45,103,"pl-c"],[45,47,"pl-c"]],[],[[13,27,"pl-smi"],[38,40,"pl-smi"],[41,50,"pl-smi"],[51,52,"pl-smi"]],[[13,30,"pl-smi"],[41,43,"pl-smi"],[44,56,"pl-smi"],[57,58,"pl-smi"]],[[13,32,"pl-smi"],[43,51,"pl-smi"]],[[13,37,"pl-smi"],[48,62,"pl-smi"]],[[12,26,"pl-smi"],[37,45,"pl-smi"]],[],[[4,33,"pl-c"],[4,6,"pl-c"]],[[4,125,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[10,15,"pl-k"],[35,40,"pl-smi"],[41,52,"pl-smi"],[53,54,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[37,44,"pl-c1"],[45,50,"pl-c1"],[59,72,"pl-smi"],[73,74,"pl-smi"],[77,78,"pl-c1"],[79,81,"pl-c1"],[91,107,"pl-smi"]],[[4,9,"pl-k"],[10,15,"pl-k"],[32,40,"pl-smi"],[41,44,"pl-smi"],[45,46,"pl-smi"],[66,71,"pl-c1"],[97,110,"pl-smi"],[111,112,"pl-smi"],[114,115,"pl-c1"],[116,118,"pl-c1"]],[[4,9,"pl-k"],[10,15,"pl-k"],[32,40,"pl-smi"],[41,44,"pl-smi"],[45,46,"pl-smi"]],[[13,20,"pl-smi"],[31,33,"pl-smi"],[34,40,"pl-smi"],[41,42,"pl-smi"],[62,67,"pl-c1"],[93,106,"pl-smi"],[107,108,"pl-smi"],[110,111,"pl-c1"],[112,114,"pl-c1"]],[[13,20,"pl-smi"],[23,28,"pl-c1"],[29,34,"pl-c1"],[59,62,"pl-smi"],[63,64,"pl-smi"],[75,82,"pl-smi"],[85,86,"pl-c1"],[87,89,"pl-c1"]],[[13,21,"pl-smi"],[33,41,"pl-smi"],[52,54,"pl-smi"],[55,64,"pl-smi"],[65,66,"pl-smi"]],[],[[4,42,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[17,24,"pl-smi"],[25,29,"pl-smi"],[33,34,"pl-c1"],[47,54,"pl-smi"],[55,59,"pl-smi"],[79,80,"pl-c1"]],[[17,24,"pl-smi"],[25,31,"pl-c1"],[32,33,"pl-c1"]],[],[[4,32,"pl-c"],[4,6,"pl-c"]],[[13,25,"pl-smi"],[38,45,"pl-smi"],[46,50,"pl-smi"],[54,55,"pl-c1"]],[[4,6,"pl-k"],[17,24,"pl-smi"],[25,29,"pl-smi"],[33,34,"pl-c1"]],[],[[17,24,"pl-smi"],[25,32,"pl-c1"],[49,50,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"],[44,45,"pl-c1"]],[],[],[[19,29,"pl-smi"],[37,42,"pl-k"]],[[21,28,"pl-smi"],[29,38,"pl-c1"]],[],[],[],[[4,7,"pl-k"],[9,12,"pl-k"],[17,18,"pl-c1"]],[],[[8,37,"pl-c"],[8,10,"pl-c"]],[[47,54,"pl-smi"]],[[8,13,"pl-k"],[24,32,"pl-c1"],[41,44,"pl-smi"],[45,46,"pl-smi"],[49,64,"pl-c1"]],[[8,13,"pl-k"],[24,32,"pl-c1"],[41,44,"pl-smi"],[45,46,"pl-smi"],[49,64,"pl-c1"],[69,70,"pl-c1"],[74,75,"pl-c1"],[76,78,"pl-c1"]],[[16,24,"pl-smi"],[27,33,"pl-c1"]],[[16,24,"pl-smi"],[25,37,"pl-c1"],[46,54,"pl-smi"]],[],[],[[4,6,"pl-k"],[17,22,"pl-smi"],[25,26,"pl-c1"]],[],[[17,25,"pl-smi"],[26,31,"pl-c1"],[40,48,"pl-smi"],[50,51,"pl-c1"],[63,68,"pl-smi"]],[[17,25,"pl-smi"],[26,43,"pl-c1"],[52,60,"pl-smi"],[62,63,"pl-c1"]],[[8,26,"pl-c1"],[27,28,"pl-c1"]],[],[],[[4,104,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[21,36,"pl-c1"],[46,53,"pl-smi"]],[[4,9,"pl-k"],[21,36,"pl-c1"],[46,53,"pl-smi"],[56,57,"pl-c1"]],[[4,9,"pl-k"]],[[4,17,"pl-c1"],[26,27,"pl-c1"],[28,31,"pl-c1"]],[[12,14,"pl-smi"],[15,28,"pl-smi"],[29,30,"pl-smi"],[33,38,"pl-c1"],[64,77,"pl-smi"],[78,79,"pl-smi"],[81,82,"pl-c1"],[83,85,"pl-c1"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[29,37,"pl-c1"],[46,49,"pl-smi"],[50,51,"pl-smi"],[62,64,"pl-smi"],[65,71,"pl-smi"],[72,73,"pl-smi"],[84,86,"pl-smi"],[87,100,"pl-smi"],[101,102,"pl-smi"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,40,"pl-smi"],[41,42,"pl-smi"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,54,"pl-smi"],[55,58,"pl-smi"],[59,60,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,22,"pl-en"]],[],[[26,42,"pl-c1"]],[[4,6,"pl-k"],[16,25,"pl-smi"],[37,39,"pl-smi"],[40,54,"pl-smi"],[58,62,"pl-c1"]],[[8,14,"pl-k"]],[],[],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[],[[4,6,"pl-k"],[17,22,"pl-smi"],[26,27,"pl-c1"]],[],[[16,18,"pl-smi"],[19,28,"pl-smi"],[29,30,"pl-smi"],[33,41,"pl-c1"],[50,53,"pl-smi"],[54,55,"pl-smi"],[66,68,"pl-smi"],[69,75,"pl-smi"],[76,77,"pl-smi"],[88,90,"pl-smi"],[91,104,"pl-smi"],[105,106,"pl-smi"]],[[8,17,"pl-c1"],[27,34,"pl-smi"],[38,39,"pl-c1"]],[[8,14,"pl-k"]],[],[],[[4,18,"pl-c"],[4,6,"pl-c"]],[[4,6,"pl-k"],[19,26,"pl-smi"],[39,44,"pl-smi"]],[[17,24,"pl-smi"],[27,28,"pl-c1"]],[],[[4,16,"pl-c1"]],[],[[4,79,"pl-c"],[4,6,"pl-c"]],[[4,108,"pl-c"],[4,6,"pl-c"]],[[43,50,"pl-smi"],[60,67,"pl-smi"]],[[4,37,"pl-c1"],[54,62,"pl-smi"]],[[13,21,"pl-smi"],[22,39,"pl-c1"],[48,56,"pl-smi"],[67,74,"pl-smi"],[77,78,"pl-c1"]],[],[[4,9,"pl-k"],[10,15,"pl-k"],[35,40,"pl-smi"],[41,52,"pl-smi"],[53,54,"pl-smi"]],[[13,21,"pl-smi"],[24,29,"pl-c1"],[39,47,"pl-smi"],[57,59,"pl-smi"],[60,69,"pl-smi"],[70,71,"pl-smi"]],[[4,6,"pl-k"],[17,24,"pl-smi"],[27,28,"pl-c1"]],[],[[8,58,"pl-c"],[8,10,"pl-c"]],[[8,55,"pl-c"],[8,10,"pl-c"]],[[16,18,"pl-smi"],[19,32,"pl-smi"],[33,34,"pl-smi"],[37,52,"pl-c1"],[62,69,"pl-smi"],[81,83,"pl-smi"],[84,90,"pl-smi"],[91,92,"pl-smi"]],[],[[4,8,"pl-k"]],[],[[8,48,"pl-c"],[8,10,"pl-c"]],[[16,18,"pl-smi"],[19,32,"pl-smi"],[33,34,"pl-smi"],[37,42,"pl-c1"],[68,81,"pl-smi"],[82,83,"pl-smi"],[85,86,"pl-c1"],[87,89,"pl-c1"]],[[16,18,"pl-smi"],[19,29,"pl-smi"],[32,37,"pl-c1"]],[[17,25,"pl-smi"],[37,45,"pl-smi"]],[],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[29,37,"pl-c1"],[46,49,"pl-smi"],[50,51,"pl-smi"],[62,64,"pl-smi"],[65,71,"pl-smi"],[72,73,"pl-smi"],[84,86,"pl-smi"],[87,100,"pl-smi"],[101,102,"pl-smi"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[38,46,"pl-smi"]],[[12,14,"pl-smi"],[15,27,"pl-smi"],[30,36,"pl-c1"],[37,38,"pl-c1"],[39,41,"pl-c1"],[43,44,"pl-c1"],[45,47,"pl-c1"]],[[12,14,"pl-smi"],[15,37,"pl-smi"],[40,41,"pl-c1"],[42,44,"pl-c1"]],[],[[4,82,"pl-c"],[4,6,"pl-c"]],[[4,9,"pl-k"],[21,36,"pl-c1"],[46,53,"pl-smi"]],[[4,9,"pl-k"],[21,36,"pl-c1"],[46,53,"pl-smi"],[56,57,"pl-c1"]],[[4,9,"pl-k"]],[[4,17,"pl-c1"],[26,27,"pl-c1"],[28,31,"pl-c1"]],[[12,20,"pl-smi"],[21,24,"pl-smi"],[25,26,"pl-smi"],[37,40,"pl-smi"],[41,42,"pl-smi"]],[],[],[[0,4,"pl-k"],[5,22,"pl-en"]],[],[],[[26,42,"pl-c1"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,13,"pl-c1"],[25,29,"pl-c1"]],[],[[4,16,"pl-c1"]],[[4,6,"pl-k"],[17,22,"pl-smi"],[25,26,"pl-c1"]],[],[[8,19,"pl-c1"]],[[17,25,"pl-smi"],[26,31,"pl-c1"],[40,48,"pl-smi"]],[],[],[[4,9,"pl-k"],[47,52,"pl-smi"]],[[13,21,"pl-smi"],[24,29,"pl-c1"],[39,47,"pl-smi"],[57,59,"pl-smi"],[60,69,"pl-smi"],[70,71,"pl-smi"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[38,46,"pl-smi"]],[[4,6,"pl-k"]],[[16,18,"pl-smi"],[19,31,"pl-smi"],[32,33,"pl-smi"],[45,62,"pl-smi"],[65,120,"pl-c"],[65,67,"pl-c"]],[],[[4,45,"pl-c"],[4,6,"pl-c"]],[[4,106,"pl-c"],[4,6,"pl-c"]],[[4,8,"pl-k"],[28,33,"pl-c1"]],[[4,6,"pl-k"],[60,69,"pl-smi"]],[],[[8,104,"pl-c"],[8,10,"pl-c"]],[[8,13,"pl-k"],[14,19,"pl-k"],[20,22,"pl-c1"],[25,30,"pl-c1"],[40,54,"pl-smi"],[64,72,"pl-smi"],[73,76,"pl-smi"],[77,78,"pl-smi"]],[[8,13,"pl-k"],[14,19,"pl-k"],[25,30,"pl-c1"],[39,41,"pl-smi"],[42,51,"pl-smi"],[52,53,"pl-smi"],[63,71,"pl-smi"],[72,75,"pl-smi"],[76,77,"pl-smi"]],[[8,11,"pl-k"],[31,32,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"],[37,42,"pl-smi"]],[],[[51,58,"pl-smi"]],[[12,17,"pl-k"],[30,33,"pl-smi"],[34,35,"pl-smi"],[38,53,"pl-c1"]],[[12,17,"pl-k"],[47,49,"pl-smi"],[52,59,"pl-c1"]],[[12,17,"pl-k"],[18,23,"pl-k"],[40,47,"pl-c1"],[84,99,"pl-smi"]],[[12,17,"pl-k"],[25,40,"pl-smi"],[41,47,"pl-c1"],[67,69,"pl-c1"],[72,78,"pl-c1"]],[[12,14,"pl-k"],[17,24,"pl-c1"],[53,57,"pl-c1"]],[[16,24,"pl-k"]],[],[[12,16,"pl-k"],[27,32,"pl-c1"],[41,46,"pl-c1"]],[[12,14,"pl-k"]],[],[[16,30,"pl-c1"]],[[16,18,"pl-k"]],[[20,34,"pl-c1"]],[[16,18,"pl-k"],[38,43,"pl-smi"]],[],[],[],[[12,26,"pl-c"],[12,14,"pl-c"]],[[12,17,"pl-k"],[30,41,"pl-c1"]],[[12,17,"pl-k"],[18,23,"pl-k"],[29,37,"pl-c1"]],[[20,28,"pl-smi"],[30,37,"pl-c1"],[38,44,"pl-c1"],[49,51,"pl-c1"],[54,55,"pl-c1"],[56,58,"pl-c1"],[61,67,"pl-c1"]],[],[],[[8,139,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"],[32,33,"pl-c1"]],[],[[12,14,"pl-k"],[26,40,"pl-smi"]],[[16,19,"pl-k"],[21,24,"pl-k"],[29,30,"pl-c1"],[45,50,"pl-smi"],[53,54,"pl-c1"]],[[29,36,"pl-smi"],[40,62,"pl-smi"],[74,81,"pl-smi"],[85,95,"pl-smi"]],[[21,35,"pl-smi"],[57,61,"pl-c1"]],[[12,17,"pl-k"],[22,44,"pl-c1"]],[[12,27,"pl-c1"]],[],[],[[13,27,"pl-smi"]],[],[[12,20,"pl-smi"],[31,45,"pl-smi"]],[[12,26,"pl-smi"],[38,62,"pl-smi"]],[[12,14,"pl-smi"],[15,29,"pl-smi"],[32,36,"pl-c1"]],[[12,14,"pl-smi"],[15,28,"pl-smi"],[29,30,"pl-smi"],[33,34,"pl-c1"],[35,37,"pl-c1"]],[[12,14,"pl-smi"],[15,24,"pl-smi"],[25,26,"pl-smi"],[29,37,"pl-c1"],[46,49,"pl-smi"],[50,51,"pl-smi"],[62,64,"pl-smi"],[65,71,"pl-smi"],[72,73,"pl-smi"],[84,86,"pl-smi"],[87,100,"pl-smi"],[101,102,"pl-smi"]],[[4,43,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,19,"pl-en"],[20,23,"pl-k"],[39,44,"pl-k"],[45,49,"pl-k"],[55,59,"pl-k"]],[],[[26,42,"pl-c1"]],[[4,13,"pl-c1"],[31,32,"pl-c1"]],[],[[43,44,"pl-c1"]],[[4,75,"pl-c"],[4,6,"pl-c"]],[[39,41,"pl-smi"],[42,56,"pl-smi"]],[[4,6,"pl-k"],[19,23,"pl-c1"],[36,41,"pl-smi"],[71,76,"pl-smi"]],[[8,14,"pl-k"]],[],[[4,6,"pl-k"],[19,23,"pl-c1"]],[[8,18,"pl-c1"]],[],[[4,6,"pl-k"],[25,26,"pl-c1"]],[[8,20,"pl-c1"]],[],[],[[0,75,"pl-c"],[0,2,"pl-c"]],[],[[1,6,"pl-k"],[7,31,"pl-c"],[7,9,"pl-c"]]],"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/ocornut/imgui/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"imgui_tables.cpp","displayUrl":"https://github.com/ocornut/imgui/blob/master/imgui_tables.cpp?raw=true","headerInfo":{"blobSize":"242 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"0954784","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Focornut%2Fimgui%2Fblob%2Fmaster%2Fimgui_tables.cpp","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"4525","truncatedSloc":"4035"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"C++","languageID":43,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/ocornut/imgui/blob/master/imgui_tables.cpp","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/ocornut/imgui/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/ocornut/imgui/raw/refs/heads/master/imgui_tables.cpp","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":true,"not_analyzed":false,"symbols":[{"name":"TableFixFlags","kind":"function","ident_start":21397,"ident_end":21410,"extent_start":21374,"extent_end":23068,"fully_qualified_name":"TableFixFlags","ident_utf16":{"start":{"line_number":270,"utf16_col":23},"end":{"line_number":270,"utf16_col":36}},"extent_utf16":{"start":{"line_number":270,"utf16_col":0},"end":{"line_number":301,"utf16_col":1}}},{"name":"BeginTable","kind":"method","ident_start":23254,"ident_end":23264,"extent_start":23239,"extent_end":23491,"fully_qualified_name":"ImGui::BeginTable","ident_utf16":{"start":{"line_number":310,"utf16_col":15},"end":{"line_number":310,"utf16_col":25}},"extent_utf16":{"start":{"line_number":310,"utf16_col":0},"end":{"line_number":314,"utf16_col":1}}},{"name":"BeginTableEx","kind":"method","ident_start":23508,"ident_end":23520,"extent_start":23493,"extent_end":42270,"fully_qualified_name":"ImGui::BeginTableEx","ident_utf16":{"start":{"line_number":316,"utf16_col":15},"end":{"line_number":316,"utf16_col":27}},"extent_utf16":{"start":{"line_number":316,"utf16_col":0},"end":{"line_number":642,"utf16_col":1}}},{"name":"TableBeginInitMemory","kind":"method","ident_start":42951,"ident_end":42971,"extent_start":42939,"extent_end":44089,"fully_qualified_name":"ImGui::TableBeginInitMemory","ident_utf16":{"start":{"line_number":653,"utf16_col":12},"end":{"line_number":653,"utf16_col":32}},"extent_utf16":{"start":{"line_number":653,"utf16_col":0},"end":{"line_number":672,"utf16_col":1}}},{"name":"TableBeginApplyRequests","kind":"method","ident_start":44155,"ident_end":44178,"extent_start":44143,"extent_end":47655,"fully_qualified_name":"ImGui::TableBeginApplyRequests","ident_utf16":{"start":{"line_number":675,"utf16_col":12},"end":{"line_number":675,"utf16_col":35}},"extent_utf16":{"start":{"line_number":675,"utf16_col":0},"end":{"line_number":739,"utf16_col":1}}},{"name":"TableSetupColumnFlags","kind":"function","ident_start":47759,"ident_end":47780,"extent_start":47747,"extent_end":50932,"fully_qualified_name":"TableSetupColumnFlags","ident_utf16":{"start":{"line_number":742,"utf16_col":12},"end":{"line_number":742,"utf16_col":33}},"extent_utf16":{"start":{"line_number":742,"utf16_col":0},"end":{"line_number":795,"utf16_col":1}}},{"name":"TableUpdateLayout","kind":"method","ident_start":51454,"ident_end":51471,"extent_start":51442,"extent_end":80764,"fully_qualified_name":"ImGui::TableUpdateLayout","ident_utf16":{"start":{"line_number":801,"utf16_col":12},"end":{"line_number":801,"utf16_col":29}},"extent_utf16":{"start":{"line_number":801,"utf16_col":0},"end":{"line_number":1279,"utf16_col":1}}},{"name":"TableUpdateBorders","kind":"method","ident_start":80965,"ident_end":80983,"extent_start":80953,"extent_end":84354,"fully_qualified_name":"ImGui::TableUpdateBorders","ident_utf16":{"start":{"line_number":1283,"utf16_col":12},"end":{"line_number":1283,"utf16_col":30}},"extent_utf16":{"start":{"line_number":1283,"utf16_col":0},"end":{"line_number":1342,"utf16_col":1}}},{"name":"EndTable","kind":"method","ident_start":84371,"ident_end":84379,"extent_start":84356,"extent_end":97238,"fully_qualified_name":"ImGui::EndTable","ident_utf16":{"start":{"line_number":1344,"utf16_col":15},"end":{"line_number":1344,"utf16_col":23}},"extent_utf16":{"start":{"line_number":1344,"utf16_col":0},"end":{"line_number":1567,"utf16_col":1}}},{"name":"TableInitColumnDefaults","kind":"function","ident_start":97426,"ident_end":97449,"extent_start":97414,"extent_end":98947,"fully_qualified_name":"TableInitColumnDefaults","ident_utf16":{"start":{"line_number":1571,"utf16_col":12},"end":{"line_number":1571,"utf16_col":35}},"extent_utf16":{"start":{"line_number":1571,"utf16_col":0},"end":{"line_number":1592,"utf16_col":1}}},{"name":"TableSetupColumn","kind":"method","ident_start":99078,"ident_end":99094,"extent_start":99066,"extent_end":101926,"fully_qualified_name":"ImGui::TableSetupColumn","ident_utf16":{"start":{"line_number":1596,"utf16_col":12},"end":{"line_number":1596,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1596,"utf16_col":0},"end":{"line_number":1654,"utf16_col":1}}},{"name":"TableSetupScrollFreeze","kind":"method","ident_start":101952,"ident_end":101974,"extent_start":101940,"extent_end":103805,"fully_qualified_name":"ImGui::TableSetupScrollFreeze","ident_utf16":{"start":{"line_number":1657,"utf16_col":12},"end":{"line_number":1657,"utf16_col":34}},"extent_utf16":{"start":{"line_number":1657,"utf16_col":0},"end":{"line_number":1687,"utf16_col":1}}},{"name":"TableGetColumnCount","kind":"method","ident_start":104421,"ident_end":104440,"extent_start":104410,"extent_end":104561,"fully_qualified_name":"ImGui::TableGetColumnCount","ident_utf16":{"start":{"line_number":1704,"utf16_col":11},"end":{"line_number":1704,"utf16_col":30}},"extent_utf16":{"start":{"line_number":1704,"utf16_col":0},"end":{"line_number":1709,"utf16_col":1}}},{"name":"TableSetColumnEnabled","kind":"method","ident_start":106006,"ident_end":106027,"extent_start":105994,"extent_end":106592,"fully_qualified_name":"ImGui::TableSetColumnEnabled","ident_utf16":{"start":{"line_number":1738,"utf16_col":12},"end":{"line_number":1738,"utf16_col":33}},"extent_utf16":{"start":{"line_number":1738,"utf16_col":0},"end":{"line_number":1753,"utf16_col":1}}},{"name":"TableGetColumnFlags","kind":"method","ident_start":106727,"ident_end":106746,"extent_start":106698,"extent_end":107159,"fully_qualified_name":"ImGui::TableGetColumnFlags","ident_utf16":{"start":{"line_number":1756,"utf16_col":29},"end":{"line_number":1756,"utf16_col":48}},"extent_utf16":{"start":{"line_number":1756,"utf16_col":0},"end":{"line_number":1767,"utf16_col":1}}},{"name":"TableGetCellBgRect","kind":"method","ident_start":107849,"ident_end":107867,"extent_start":107835,"extent_end":108341,"fully_qualified_name":"ImGui::TableGetCellBgRect","ident_utf16":{"start":{"line_number":1775,"utf16_col":14},"end":{"line_number":1775,"utf16_col":32}},"extent_utf16":{"start":{"line_number":1775,"utf16_col":0},"end":{"line_number":1787,"utf16_col":1}}},{"name":"TableGetColumnResizeID","kind":"method","ident_start":108424,"ident_end":108446,"extent_start":108409,"extent_end":108702,"fully_qualified_name":"ImGui::TableGetColumnResizeID","ident_utf16":{"start":{"line_number":1790,"utf16_col":15},"end":{"line_number":1790,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1790,"utf16_col":0},"end":{"line_number":1795,"utf16_col":1}}},{"name":"TableGetHoveredColumn","kind":"method","ident_start":108852,"ident_end":108873,"extent_start":108841,"extent_end":109027,"fully_qualified_name":"ImGui::TableGetHoveredColumn","ident_utf16":{"start":{"line_number":1798,"utf16_col":11},"end":{"line_number":1798,"utf16_col":32}},"extent_utf16":{"start":{"line_number":1798,"utf16_col":0},"end":{"line_number":1805,"utf16_col":1}}},{"name":"TableGetHoveredRow","kind":"method","ident_start":109303,"ident_end":109321,"extent_start":109292,"extent_end":109579,"fully_qualified_name":"ImGui::TableGetHoveredRow","ident_utf16":{"start":{"line_number":1810,"utf16_col":11},"end":{"line_number":1810,"utf16_col":29}},"extent_utf16":{"start":{"line_number":1810,"utf16_col":0},"end":{"line_number":1818,"utf16_col":1}}},{"name":"TableSetBgColor","kind":"method","ident_start":109593,"ident_end":109608,"extent_start":109581,"extent_end":111019,"fully_qualified_name":"ImGui::TableSetBgColor","ident_utf16":{"start":{"line_number":1820,"utf16_col":12},"end":{"line_number":1820,"utf16_col":27}},"extent_utf16":{"start":{"line_number":1820,"utf16_col":0},"end":{"line_number":1860,"utf16_col":1}}},{"name":"TableGetRowIndex","kind":"method","ident_start":111515,"ident_end":111531,"extent_start":111504,"extent_end":111672,"fully_qualified_name":"ImGui::TableGetRowIndex","ident_utf16":{"start":{"line_number":1872,"utf16_col":11},"end":{"line_number":1872,"utf16_col":27}},"extent_utf16":{"start":{"line_number":1872,"utf16_col":0},"end":{"line_number":1879,"utf16_col":1}}},{"name":"TableNextRow","kind":"method","ident_start":111738,"ident_end":111750,"extent_start":111726,"extent_end":112611,"fully_qualified_name":"ImGui::TableNextRow","ident_utf16":{"start":{"line_number":1882,"utf16_col":12},"end":{"line_number":1882,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1882,"utf16_col":0},"end":{"line_number":1905,"utf16_col":1}}},{"name":"TableBeginRow","kind":"method","ident_start":112669,"ident_end":112682,"extent_start":112657,"extent_end":114241,"fully_qualified_name":"ImGui::TableBeginRow","ident_utf16":{"start":{"line_number":1908,"utf16_col":12},"end":{"line_number":1908,"utf16_col":25}},"extent_utf16":{"start":{"line_number":1908,"utf16_col":0},"end":{"line_number":1942,"utf16_col":1}}},{"name":"TableEndRow","kind":"method","ident_start":114294,"ident_end":114305,"extent_start":114282,"extent_end":122120,"fully_qualified_name":"ImGui::TableEndRow","ident_utf16":{"start":{"line_number":1945,"utf16_col":12},"end":{"line_number":1945,"utf16_col":23}},"extent_utf16":{"start":{"line_number":1945,"utf16_col":0},"end":{"line_number":2085,"utf16_col":1}}},{"name":"TableGetColumnIndex","kind":"method","ident_start":122540,"ident_end":122559,"extent_start":122529,"extent_end":122703,"fully_qualified_name":"ImGui::TableGetColumnIndex","ident_utf16":{"start":{"line_number":2097,"utf16_col":11},"end":{"line_number":2097,"utf16_col":30}},"extent_utf16":{"start":{"line_number":2097,"utf16_col":0},"end":{"line_number":2104,"utf16_col":1}}},{"name":"TableSetColumnIndex","kind":"method","ident_start":122759,"ident_end":122778,"extent_start":122747,"extent_end":123602,"fully_qualified_name":"ImGui::TableSetColumnIndex","ident_utf16":{"start":{"line_number":2107,"utf16_col":12},"end":{"line_number":2107,"utf16_col":31}},"extent_utf16":{"start":{"line_number":2107,"utf16_col":0},"end":{"line_number":2129,"utf16_col":1}}},{"name":"TableNextColumn","kind":"method","ident_start":123711,"ident_end":123726,"extent_start":123699,"extent_end":124433,"fully_qualified_name":"ImGui::TableNextColumn","ident_utf16":{"start":{"line_number":2132,"utf16_col":12},"end":{"line_number":2132,"utf16_col":27}},"extent_utf16":{"start":{"line_number":2132,"utf16_col":0},"end":{"line_number":2154,"utf16_col":1}}},{"name":"TableBeginCell","kind":"method","ident_start":124694,"ident_end":124708,"extent_start":124682,"extent_end":126973,"fully_qualified_name":"ImGui::TableBeginCell","ident_utf16":{"start":{"line_number":2160,"utf16_col":12},"end":{"line_number":2160,"utf16_col":26}},"extent_utf16":{"start":{"line_number":2160,"utf16_col":0},"end":{"line_number":2212,"utf16_col":1}}},{"name":"TableEndCell","kind":"method","ident_start":127066,"ident_end":127078,"extent_start":127054,"extent_end":128216,"fully_qualified_name":"ImGui::TableEndCell","ident_utf16":{"start":{"line_number":2215,"utf16_col":12},"end":{"line_number":2215,"utf16_col":24}},"extent_utf16":{"start":{"line_number":2215,"utf16_col":0},"end":{"line_number":2237,"utf16_col":1}}},{"name":"TableCalcMaxColumnWidth","kind":"method","ident_start":129025,"ident_end":129048,"extent_start":129012,"extent_end":130859,"fully_qualified_name":"ImGui::TableCalcMaxColumnWidth","ident_utf16":{"start":{"line_number":2253,"utf16_col":13},"end":{"line_number":2253,"utf16_col":36}},"extent_utf16":{"start":{"line_number":2253,"utf16_col":0},"end":{"line_number":2282,"utf16_col":1}}},{"name":"TableGetColumnWidthAuto","kind":"method","ident_start":130972,"ident_end":130995,"extent_start":130959,"extent_end":131817,"fully_qualified_name":"ImGui::TableGetColumnWidthAuto","ident_utf16":{"start":{"line_number":2285,"utf16_col":13},"end":{"line_number":2285,"utf16_col":36}},"extent_utf16":{"start":{"line_number":2285,"utf16_col":0},"end":{"line_number":2299,"utf16_col":1}}},{"name":"TableSetColumnWidth","kind":"method","ident_start":131880,"ident_end":131899,"extent_start":131868,"extent_end":137066,"fully_qualified_name":"ImGui::TableSetColumnWidth","ident_utf16":{"start":{"line_number":2302,"utf16_col":12},"end":{"line_number":2302,"utf16_col":31}},"extent_utf16":{"start":{"line_number":2302,"utf16_col":0},"end":{"line_number":2381,"utf16_col":1}}},{"name":"TableSetColumnWidthAutoSingle","kind":"method","ident_start":137248,"ident_end":137277,"extent_start":137236,"extent_end":137564,"fully_qualified_name":"ImGui::TableSetColumnWidthAutoSingle","ident_utf16":{"start":{"line_number":2385,"utf16_col":12},"end":{"line_number":2385,"utf16_col":41}},"extent_utf16":{"start":{"line_number":2385,"utf16_col":0},"end":{"line_number":2393,"utf16_col":1}}},{"name":"TableSetColumnWidthAutoAll","kind":"method","ident_start":137578,"ident_end":137604,"extent_start":137566,"extent_end":138021,"fully_qualified_name":"ImGui::TableSetColumnWidthAutoAll","ident_utf16":{"start":{"line_number":2395,"utf16_col":12},"end":{"line_number":2395,"utf16_col":38}},"extent_utf16":{"start":{"line_number":2395,"utf16_col":0},"end":{"line_number":2405,"utf16_col":1}}},{"name":"TableUpdateColumnsWeightFromWidth","kind":"method","ident_start":138035,"ident_end":138068,"extent_start":138023,"extent_end":139169,"fully_qualified_name":"ImGui::TableUpdateColumnsWeightFromWidth","ident_utf16":{"start":{"line_number":2407,"utf16_col":12},"end":{"line_number":2407,"utf16_col":45}},"extent_utf16":{"start":{"line_number":2407,"utf16_col":0},"end":{"line_number":2434,"utf16_col":1}}},{"name":"TablePushBackgroundChannel","kind":"method","ident_start":139964,"ident_end":139990,"extent_start":139952,"extent_end":140399,"fully_qualified_name":"ImGui::TablePushBackgroundChannel","ident_utf16":{"start":{"line_number":2449,"utf16_col":12},"end":{"line_number":2449,"utf16_col":38}},"extent_utf16":{"start":{"line_number":2449,"utf16_col":0},"end":{"line_number":2459,"utf16_col":1}}},{"name":"TablePopBackgroundChannel","kind":"method","ident_start":140413,"ident_end":140438,"extent_start":140401,"extent_end":140861,"fully_qualified_name":"ImGui::TablePopBackgroundChannel","ident_utf16":{"start":{"line_number":2461,"utf16_col":12},"end":{"line_number":2461,"utf16_col":37}},"extent_utf16":{"start":{"line_number":2461,"utf16_col":0},"end":{"line_number":2471,"utf16_col":1}}},{"name":"TableSetupDrawChannels","kind":"method","ident_start":142271,"ident_end":142293,"extent_start":142259,"extent_end":144687,"fully_qualified_name":"ImGui::TableSetupDrawChannels","ident_utf16":{"start":{"line_number":2489,"utf16_col":12},"end":{"line_number":2489,"utf16_col":34}},"extent_utf16":{"start":{"line_number":2489,"utf16_col":0},"end":{"line_number":2526,"utf16_col":1}}},{"name":"TableMergeDrawChannels","kind":"method","ident_start":146983,"ident_end":147005,"extent_start":146971,"extent_end":157476,"fully_qualified_name":"ImGui::TableMergeDrawChannels","ident_utf16":{"start":{"line_number":2557,"utf16_col":12},"end":{"line_number":2557,"utf16_col":34}},"extent_utf16":{"start":{"line_number":2557,"utf16_col":0},"end":{"line_number":2725,"utf16_col":1}}},{"name":"MergeGroup","kind":"class","ident_start":147390,"ident_end":147400,"extent_start":147383,"extent_end":147534,"fully_qualified_name":"MergeGroup","ident_utf16":{"start":{"line_number":2566,"utf16_col":11},"end":{"line_number":2566,"utf16_col":21}},"extent_utf16":{"start":{"line_number":2566,"utf16_col":4},"end":{"line_number":2571,"utf16_col":5}}},{"name":"TableGetColumnBorderCol","kind":"function","ident_start":157491,"ident_end":157514,"extent_start":157478,"extent_end":158177,"fully_qualified_name":"TableGetColumnBorderCol","ident_utf16":{"start":{"line_number":2727,"utf16_col":13},"end":{"line_number":2727,"utf16_col":36}},"extent_utf16":{"start":{"line_number":2727,"utf16_col":0},"end":{"line_number":2737,"utf16_col":1}}},{"name":"TableDrawBorders","kind":"method","ident_start":158301,"ident_end":158317,"extent_start":158289,"extent_end":163686,"fully_qualified_name":"ImGui::TableDrawBorders","ident_utf16":{"start":{"line_number":2740,"utf16_col":12},"end":{"line_number":2740,"utf16_col":28}},"extent_utf16":{"start":{"line_number":2740,"utf16_col":0},"end":{"line_number":2822,"utf16_col":1}}},{"name":"TableGetColumnAvailSortDirection","kind":"function","ident_start":165155,"ident_end":165187,"extent_start":165122,"extent_end":165364,"fully_qualified_name":"TableGetColumnAvailSortDirection","ident_utf16":{"start":{"line_number":2857,"utf16_col":33},"end":{"line_number":2857,"utf16_col":65}},"extent_utf16":{"start":{"line_number":2857,"utf16_col":0},"end":{"line_number":2861,"utf16_col":1}}},{"name":"TableFixColumnSortDirection","kind":"method","ident_start":165500,"ident_end":165527,"extent_start":165488,"extent_end":165813,"fully_qualified_name":"ImGui::TableFixColumnSortDirection","ident_utf16":{"start":{"line_number":2864,"utf16_col":12},"end":{"line_number":2864,"utf16_col":39}},"extent_utf16":{"start":{"line_number":2864,"utf16_col":0},"end":{"line_number":2870,"utf16_col":1}}},{"name":"TableGetColumnNextSortDirection","kind":"method","ident_start":166264,"ident_end":166295,"extent_start":166238,"extent_end":166744,"fully_qualified_name":"ImGui::TableGetColumnNextSortDirection","ident_utf16":{"start":{"line_number":2876,"utf16_col":26},"end":{"line_number":2876,"utf16_col":57}},"extent_utf16":{"start":{"line_number":2876,"utf16_col":0},"end":{"line_number":2886,"utf16_col":1}}},{"name":"TableSetColumnSortDirection","kind":"method","ident_start":167000,"ident_end":167027,"extent_start":166988,"extent_end":168395,"fully_qualified_name":"ImGui::TableSetColumnSortDirection","ident_utf16":{"start":{"line_number":2890,"utf16_col":12},"end":{"line_number":2890,"utf16_col":39}},"extent_utf16":{"start":{"line_number":2890,"utf16_col":0},"end":{"line_number":2921,"utf16_col":1}}},{"name":"TableSortSpecsSanitize","kind":"method","ident_start":168409,"ident_end":168431,"extent_start":168397,"extent_end":171598,"fully_qualified_name":"ImGui::TableSortSpecsSanitize","ident_utf16":{"start":{"line_number":2923,"utf16_col":12},"end":{"line_number":2923,"utf16_col":34}},"extent_utf16":{"start":{"line_number":2923,"utf16_col":0},"end":{"line_number":2987,"utf16_col":1}}},{"name":"TableSortSpecsBuild","kind":"method","ident_start":171612,"ident_end":171631,"extent_start":171600,"extent_end":173117,"fully_qualified_name":"ImGui::TableSortSpecsBuild","ident_utf16":{"start":{"line_number":2989,"utf16_col":12},"end":{"line_number":2989,"utf16_col":31}},"extent_utf16":{"start":{"line_number":2989,"utf16_col":0},"end":{"line_number":3019,"utf16_col":1}}},{"name":"TableGetHeaderRowHeight","kind":"method","ident_start":173597,"ident_end":173620,"extent_start":173584,"extent_end":174504,"fully_qualified_name":"ImGui::TableGetHeaderRowHeight","ident_utf16":{"start":{"line_number":3032,"utf16_col":13},"end":{"line_number":3032,"utf16_col":36}},"extent_utf16":{"start":{"line_number":3032,"utf16_col":0},"end":{"line_number":3046,"utf16_col":1}}},{"name":"TableGetHeaderAngledMaxLabelWidth","kind":"method","ident_start":174519,"ident_end":174552,"extent_start":174506,"extent_end":175047,"fully_qualified_name":"ImGui::TableGetHeaderAngledMaxLabelWidth","ident_utf16":{"start":{"line_number":3048,"utf16_col":13},"end":{"line_number":3048,"utf16_col":46}},"extent_utf16":{"start":{"line_number":3048,"utf16_col":0},"end":{"line_number":3058,"utf16_col":1}}},{"name":"TableHeadersRow","kind":"method","ident_start":175727,"ident_end":175742,"extent_start":175715,"extent_end":177465,"fully_qualified_name":"ImGui::TableHeadersRow","ident_utf16":{"start":{"line_number":3067,"utf16_col":12},"end":{"line_number":3067,"utf16_col":27}},"extent_utf16":{"start":{"line_number":3067,"utf16_col":0},"end":{"line_number":3107,"utf16_col":1}}},{"name":"TableHeader","kind":"method","ident_start":177744,"ident_end":177755,"extent_start":177732,"extent_end":185336,"fully_qualified_name":"ImGui::TableHeader","ident_utf16":{"start":{"line_number":3112,"utf16_col":12},"end":{"line_number":3112,"utf16_col":23}},"extent_utf16":{"start":{"line_number":3112,"utf16_col":0},"end":{"line_number":3255,"utf16_col":1}}},{"name":"TableAngledHeadersRow","kind":"method","ident_start":185515,"ident_end":185536,"extent_start":185503,"extent_end":187357,"fully_qualified_name":"ImGui::TableAngledHeadersRow","ident_utf16":{"start":{"line_number":3259,"utf16_col":12},"end":{"line_number":3259,"utf16_col":33}},"extent_utf16":{"start":{"line_number":3259,"utf16_col":0},"end":{"line_number":3291,"utf16_col":1}}},{"name":"TableAngledHeadersRowEx","kind":"method","ident_start":187416,"ident_end":187439,"extent_start":187404,"extent_end":196016,"fully_qualified_name":"ImGui::TableAngledHeadersRowEx","ident_utf16":{"start":{"line_number":3294,"utf16_col":12},"end":{"line_number":3294,"utf16_col":35}},"extent_utf16":{"start":{"line_number":3294,"utf16_col":0},"end":{"line_number":3429,"utf16_col":1}}},{"name":"TableOpenContextMenu","kind":"method","ident_start":196478,"ident_end":196498,"extent_start":196466,"extent_end":197388,"fully_qualified_name":"ImGui::TableOpenContextMenu","ident_utf16":{"start":{"line_number":3440,"utf16_col":12},"end":{"line_number":3440,"utf16_col":32}},"extent_utf16":{"start":{"line_number":3440,"utf16_col":0},"end":{"line_number":3457,"utf16_col":1}}},{"name":"TableBeginContextMenuPopup","kind":"method","ident_start":197402,"ident_end":197428,"extent_start":197390,"extent_end":197859,"fully_qualified_name":"ImGui::TableBeginContextMenuPopup","ident_utf16":{"start":{"line_number":3459,"utf16_col":12},"end":{"line_number":3459,"utf16_col":38}},"extent_utf16":{"start":{"line_number":3459,"utf16_col":0},"end":{"line_number":3468,"utf16_col":1}}},{"name":"TableDrawDefaultContextMenu","kind":"method","ident_start":198523,"ident_end":198550,"extent_start":198511,"extent_end":202605,"fully_qualified_name":"ImGui::TableDrawDefaultContextMenu","ident_utf16":{"start":{"line_number":3478,"utf16_col":12},"end":{"line_number":3478,"utf16_col":39}},"extent_utf16":{"start":{"line_number":3478,"utf16_col":0},"end":{"line_number":3565,"utf16_col":1}}},{"name":"TableSettingsInit","kind":"function","ident_start":204267,"ident_end":204284,"extent_start":204255,"extent_end":204833,"fully_qualified_name":"TableSettingsInit","ident_utf16":{"start":{"line_number":3594,"utf16_col":12},"end":{"line_number":3594,"utf16_col":29}},"extent_utf16":{"start":{"line_number":3594,"utf16_col":0},"end":{"line_number":3604,"utf16_col":1}}},{"name":"TableSettingsCalcChunkSize","kind":"function","ident_start":204849,"ident_end":204875,"extent_start":204835,"extent_end":204996,"fully_qualified_name":"TableSettingsCalcChunkSize","ident_utf16":{"start":{"line_number":3606,"utf16_col":14},"end":{"line_number":3606,"utf16_col":40}},"extent_utf16":{"start":{"line_number":3606,"utf16_col":0},"end":{"line_number":3609,"utf16_col":1}}},{"name":"TableResetSettings","kind":"method","ident_start":206332,"ident_end":206350,"extent_start":206320,"extent_end":206687,"fully_qualified_name":"ImGui::TableResetSettings","ident_utf16":{"start":{"line_number":3646,"utf16_col":12},"end":{"line_number":3646,"utf16_col":30}},"extent_utf16":{"start":{"line_number":3646,"utf16_col":0},"end":{"line_number":3652,"utf16_col":1}}},{"name":"TableSaveSettings","kind":"method","ident_start":206701,"ident_end":206718,"extent_start":206689,"extent_end":209495,"fully_qualified_name":"ImGui::TableSaveSettings","ident_utf16":{"start":{"line_number":3654,"utf16_col":12},"end":{"line_number":3654,"utf16_col":29}},"extent_utf16":{"start":{"line_number":3654,"utf16_col":0},"end":{"line_number":3707,"utf16_col":1}}},{"name":"TableLoadSettings","kind":"method","ident_start":209509,"ident_end":209526,"extent_start":209497,"extent_end":212501,"fully_qualified_name":"ImGui::TableLoadSettings","ident_utf16":{"start":{"line_number":3709,"utf16_col":12},"end":{"line_number":3709,"utf16_col":29}},"extent_utf16":{"start":{"line_number":3709,"utf16_col":0},"end":{"line_number":3778,"utf16_col":1}}},{"name":"TableSettingsHandler_ClearAll","kind":"function","ident_start":212515,"ident_end":212544,"extent_start":212503,"extent_end":212800,"fully_qualified_name":"TableSettingsHandler_ClearAll","ident_utf16":{"start":{"line_number":3780,"utf16_col":12},"end":{"line_number":3780,"utf16_col":41}},"extent_utf16":{"start":{"line_number":3780,"utf16_col":0},"end":{"line_number":3787,"utf16_col":1}}},{"name":"TableSettingsHandler_ApplyAll","kind":"function","ident_start":212852,"ident_end":212881,"extent_start":212840,"extent_end":213176,"fully_qualified_name":"TableSettingsHandler_ApplyAll","ident_utf16":{"start":{"line_number":3790,"utf16_col":12},"end":{"line_number":3790,"utf16_col":41}},"extent_utf16":{"start":{"line_number":3790,"utf16_col":0},"end":{"line_number":3799,"utf16_col":1}}},{"name":"TableSettingsHandler_ReadLine","kind":"function","ident_start":213857,"ident_end":213886,"extent_start":213845,"extent_end":215800,"fully_qualified_name":"TableSettingsHandler_ReadLine","ident_utf16":{"start":{"line_number":3820,"utf16_col":12},"end":{"line_number":3820,"utf16_col":41}},"extent_utf16":{"start":{"line_number":3820,"utf16_col":0},"end":{"line_number":3844,"utf16_col":1}}},{"name":"TableSettingsHandler_WriteAll","kind":"function","ident_start":215814,"ident_end":215843,"extent_start":215802,"extent_end":218395,"fully_qualified_name":"TableSettingsHandler_WriteAll","ident_utf16":{"start":{"line_number":3846,"utf16_col":12},"end":{"line_number":3846,"utf16_col":41}},"extent_utf16":{"start":{"line_number":3846,"utf16_col":0},"end":{"line_number":3884,"utf16_col":1}}},{"name":"TableSettingsAddSettingsHandler","kind":"method","ident_start":218409,"ident_end":218440,"extent_start":218397,"extent_end":218905,"fully_qualified_name":"ImGui::TableSettingsAddSettingsHandler","ident_utf16":{"start":{"line_number":3886,"utf16_col":12},"end":{"line_number":3886,"utf16_col":43}},"extent_utf16":{"start":{"line_number":3886,"utf16_col":0},"end":{"line_number":3897,"utf16_col":1}}},{"name":"TableRemove","kind":"method","ident_start":219360,"ident_end":219371,"extent_start":219348,"extent_end":219736,"fully_qualified_name":"ImGui::TableRemove","ident_utf16":{"start":{"line_number":3908,"utf16_col":12},"end":{"line_number":3908,"utf16_col":23}},"extent_utf16":{"start":{"line_number":3908,"utf16_col":0},"end":{"line_number":3917,"utf16_col":1}}},{"name":"TableGcCompactTransientBuffers","kind":"method","ident_start":219816,"ident_end":219846,"extent_start":219804,"extent_end":220443,"fully_qualified_name":"ImGui::TableGcCompactTransientBuffers","ident_utf16":{"start":{"line_number":3920,"utf16_col":12},"end":{"line_number":3920,"utf16_col":42}},"extent_utf16":{"start":{"line_number":3920,"utf16_col":0},"end":{"line_number":3933,"utf16_col":1}}},{"name":"TableGcCompactTransientBuffers","kind":"method","ident_start":220457,"ident_end":220487,"extent_start":220445,"extent_end":220608,"fully_qualified_name":"ImGui::TableGcCompactTransientBuffers","ident_utf16":{"start":{"line_number":3935,"utf16_col":12},"end":{"line_number":3935,"utf16_col":42}},"extent_utf16":{"start":{"line_number":3935,"utf16_col":0},"end":{"line_number":3939,"utf16_col":1}}},{"name":"TableGcCompactSettings","kind":"method","ident_start":220701,"ident_end":220723,"extent_start":220689,"extent_end":221593,"fully_qualified_name":"ImGui::TableGcCompactSettings","ident_utf16":{"start":{"line_number":3942,"utf16_col":12},"end":{"line_number":3942,"utf16_col":34}},"extent_utf16":{"start":{"line_number":3942,"utf16_col":0},"end":{"line_number":3957,"utf16_col":1}}},{"name":"DebugNodeTable","kind":"method","ident_start":222432,"ident_end":222446,"extent_start":222420,"extent_end":227703,"fully_qualified_name":"ImGui::DebugNodeTable","ident_utf16":{"start":{"line_number":3978,"utf16_col":12},"end":{"line_number":3978,"utf16_col":26}},"extent_utf16":{"start":{"line_number":3978,"utf16_col":0},"end":{"line_number":4050,"utf16_col":1}}},{"name":"DebugNodeTableSettings","kind":"method","ident_start":227717,"ident_end":227739,"extent_start":227705,"extent_end":228818,"fully_qualified_name":"ImGui::DebugNodeTableSettings","ident_utf16":{"start":{"line_number":4052,"utf16_col":12},"end":{"line_number":4052,"utf16_col":34}},"extent_utf16":{"start":{"line_number":4052,"utf16_col":0},"end":{"line_number":4068,"utf16_col":1}}},{"name":"DebugNodeTable","kind":"method","ident_start":228876,"ident_end":228890,"extent_start":228864,"extent_end":228906,"fully_qualified_name":"ImGui::DebugNodeTable","ident_utf16":{"start":{"line_number":4072,"utf16_col":12},"end":{"line_number":4072,"utf16_col":26}},"extent_utf16":{"start":{"line_number":4072,"utf16_col":0},"end":{"line_number":4072,"utf16_col":42}}},{"name":"DebugNodeTableSettings","kind":"method","ident_start":228919,"ident_end":228941,"extent_start":228907,"extent_end":228965,"fully_qualified_name":"ImGui::DebugNodeTableSettings","ident_utf16":{"start":{"line_number":4073,"utf16_col":12},"end":{"line_number":4073,"utf16_col":34}},"extent_utf16":{"start":{"line_number":4073,"utf16_col":0},"end":{"line_number":4073,"utf16_col":58}}},{"name":"SetWindowClipRectBeforeSetChannel","kind":"method","ident_start":230302,"ident_end":230335,"extent_start":230290,"extent_end":230630,"fully_qualified_name":"ImGui::SetWindowClipRectBeforeSetChannel","ident_utf16":{"start":{"line_number":4106,"utf16_col":12},"end":{"line_number":4106,"utf16_col":45}},"extent_utf16":{"start":{"line_number":4106,"utf16_col":0},"end":{"line_number":4112,"utf16_col":1}}},{"name":"GetColumnIndex","kind":"method","ident_start":230643,"ident_end":230657,"extent_start":230632,"extent_end":230792,"fully_qualified_name":"ImGui::GetColumnIndex","ident_utf16":{"start":{"line_number":4114,"utf16_col":11},"end":{"line_number":4114,"utf16_col":25}},"extent_utf16":{"start":{"line_number":4114,"utf16_col":0},"end":{"line_number":4118,"utf16_col":1}}},{"name":"GetColumnsCount","kind":"method","ident_start":230805,"ident_end":230820,"extent_start":230794,"extent_end":230953,"fully_qualified_name":"ImGui::GetColumnsCount","ident_utf16":{"start":{"line_number":4120,"utf16_col":11},"end":{"line_number":4120,"utf16_col":26}},"extent_utf16":{"start":{"line_number":4120,"utf16_col":0},"end":{"line_number":4124,"utf16_col":1}}},{"name":"GetColumnOffsetFromNorm","kind":"method","ident_start":230968,"ident_end":230991,"extent_start":230955,"extent_end":231110,"fully_qualified_name":"ImGui::GetColumnOffsetFromNorm","ident_utf16":{"start":{"line_number":4126,"utf16_col":13},"end":{"line_number":4126,"utf16_col":36}},"extent_utf16":{"start":{"line_number":4126,"utf16_col":0},"end":{"line_number":4129,"utf16_col":1}}},{"name":"GetColumnNormFromOffset","kind":"method","ident_start":231125,"ident_end":231148,"extent_start":231112,"extent_end":231257,"fully_qualified_name":"ImGui::GetColumnNormFromOffset","ident_utf16":{"start":{"line_number":4131,"utf16_col":13},"end":{"line_number":4131,"utf16_col":36}},"extent_utf16":{"start":{"line_number":4131,"utf16_col":0},"end":{"line_number":4134,"utf16_col":1}}},{"name":"GetDraggedColumnOffset","kind":"function","ident_start":231332,"ident_end":231354,"extent_start":231319,"extent_end":232281,"fully_qualified_name":"GetDraggedColumnOffset","ident_utf16":{"start":{"line_number":4138,"utf16_col":13},"end":{"line_number":4138,"utf16_col":35}},"extent_utf16":{"start":{"line_number":4138,"utf16_col":0},"end":{"line_number":4153,"utf16_col":1}}},{"name":"GetColumnOffset","kind":"method","ident_start":232296,"ident_end":232311,"extent_start":232283,"extent_end":232767,"fully_qualified_name":"ImGui::GetColumnOffset","ident_utf16":{"start":{"line_number":4155,"utf16_col":13},"end":{"line_number":4155,"utf16_col":28}},"extent_utf16":{"start":{"line_number":4155,"utf16_col":0},"end":{"line_number":4169,"utf16_col":1}}},{"name":"GetColumnWidthEx","kind":"function","ident_start":232782,"ident_end":232798,"extent_start":232769,"extent_end":233312,"fully_qualified_name":"GetColumnWidthEx","ident_utf16":{"start":{"line_number":4171,"utf16_col":13},"end":{"line_number":4171,"utf16_col":29}},"extent_utf16":{"start":{"line_number":4171,"utf16_col":0},"end":{"line_number":4182,"utf16_col":1}}},{"name":"GetColumnWidth","kind":"method","ident_start":233327,"ident_end":233341,"extent_start":233314,"extent_end":233766,"fully_qualified_name":"ImGui::GetColumnWidth","ident_utf16":{"start":{"line_number":4184,"utf16_col":13},"end":{"line_number":4184,"utf16_col":27}},"extent_utf16":{"start":{"line_number":4184,"utf16_col":0},"end":{"line_number":4195,"utf16_col":1}}},{"name":"SetColumnOffset","kind":"method","ident_start":233780,"ident_end":233795,"extent_start":233768,"extent_end":234769,"fully_qualified_name":"ImGui::SetColumnOffset","ident_utf16":{"start":{"line_number":4197,"utf16_col":12},"end":{"line_number":4197,"utf16_col":27}},"extent_utf16":{"start":{"line_number":4197,"utf16_col":0},"end":{"line_number":4217,"utf16_col":1}}},{"name":"SetColumnWidth","kind":"method","ident_start":234783,"ident_end":234797,"extent_start":234771,"extent_end":235118,"fully_qualified_name":"ImGui::SetColumnWidth","ident_utf16":{"start":{"line_number":4219,"utf16_col":12},"end":{"line_number":4219,"utf16_col":26}},"extent_utf16":{"start":{"line_number":4219,"utf16_col":0},"end":{"line_number":4228,"utf16_col":1}}},{"name":"PushColumnClipRect","kind":"method","ident_start":235132,"ident_end":235150,"extent_start":235120,"extent_end":235483,"fully_qualified_name":"ImGui::PushColumnClipRect","ident_utf16":{"start":{"line_number":4230,"utf16_col":12},"end":{"line_number":4230,"utf16_col":30}},"extent_utf16":{"start":{"line_number":4230,"utf16_col":0},"end":{"line_number":4239,"utf16_col":1}}},{"name":"PushColumnsBackground","kind":"method","ident_start":235621,"ident_end":235642,"extent_start":235609,"extent_end":236057,"fully_qualified_name":"ImGui::PushColumnsBackground","ident_utf16":{"start":{"line_number":4242,"utf16_col":12},"end":{"line_number":4242,"utf16_col":33}},"extent_utf16":{"start":{"line_number":4242,"utf16_col":0},"end":{"line_number":4253,"utf16_col":1}}},{"name":"PopColumnsBackground","kind":"method","ident_start":236071,"ident_end":236091,"extent_start":236059,"extent_end":236471,"fully_qualified_name":"ImGui::PopColumnsBackground","ident_utf16":{"start":{"line_number":4255,"utf16_col":12},"end":{"line_number":4255,"utf16_col":32}},"extent_utf16":{"start":{"line_number":4255,"utf16_col":0},"end":{"line_number":4265,"utf16_col":1}}},{"name":"GetColumnsID","kind":"method","ident_start":237001,"ident_end":237013,"extent_start":236986,"extent_end":237507,"fully_qualified_name":"ImGui::GetColumnsID","ident_utf16":{"start":{"line_number":4280,"utf16_col":15},"end":{"line_number":4280,"utf16_col":27}},"extent_utf16":{"start":{"line_number":4280,"utf16_col":0},"end":{"line_number":4291,"utf16_col":1}}},{"name":"BeginColumns","kind":"method","ident_start":237521,"ident_end":237533,"extent_start":237509,"extent_end":241157,"fully_qualified_name":"ImGui::BeginColumns","ident_utf16":{"start":{"line_number":4293,"utf16_col":12},"end":{"line_number":4293,"utf16_col":24}},"extent_utf16":{"start":{"line_number":4293,"utf16_col":0},"end":{"line_number":4370,"utf16_col":1}}},{"name":"NextColumn","kind":"method","ident_start":241171,"ident_end":241181,"extent_start":241159,"extent_end":243376,"fully_qualified_name":"ImGui::NextColumn","ident_utf16":{"start":{"line_number":4372,"utf16_col":12},"end":{"line_number":4372,"utf16_col":22}},"extent_utf16":{"start":{"line_number":4372,"utf16_col":0},"end":{"line_number":4426,"utf16_col":1}}},{"name":"EndColumns","kind":"method","ident_start":243390,"ident_end":243400,"extent_start":243378,"extent_end":246895,"fully_qualified_name":"ImGui::EndColumns","ident_utf16":{"start":{"line_number":4428,"utf16_col":12},"end":{"line_number":4428,"utf16_col":22}},"extent_utf16":{"start":{"line_number":4428,"utf16_col":0},"end":{"line_number":4502,"utf16_col":1}}},{"name":"Columns","kind":"method","ident_start":246909,"ident_end":246916,"extent_start":246897,"extent_end":247491,"fully_qualified_name":"ImGui::Columns","ident_utf16":{"start":{"line_number":4504,"utf16_col":12},"end":{"line_number":4504,"utf16_col":19}},"extent_utf16":{"start":{"line_number":4504,"utf16_col":0},"end":{"line_number":4520,"utf16_col":1}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/ocornut/imgui/branches":{"post":"hCDRAVHJnskZP9CZ2sjY9SsLhPyKZMuIVocThN5zbkYIZMDez7cwYqo6oiHhGXTE-dmTGZ9rHXD-TAgN9KyYEA"},"/repos/preferences":{"post":"eswO_9ZP_lAaB5R0LBw0PdtSxAW1DGT_R3mRlWxIb57zISve4eZLEGaFQ_sl7OztUsLKIW459NF4-wC_j4G7Zw"}}},"title":"imgui/imgui_tables.cpp at master · ocornut/imgui","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-96e76d5fdb2c.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"overview_shared_code_dropdown_button":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}</script> <div data-target="react-app.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.gISSDQ{width:100%;}/*!sc*/ @media screen and (min-width:544px){.gISSDQ{width:100%;}}/*!sc*/ @media screen and (min-width:768px){.gISSDQ{width:auto;}}/*!sc*/ .bHLmSv{position:absolute;inset:0 -2px;cursor:col-resize;background-color:transparent;-webkit-transition-delay:0.1s;transition-delay:0.1s;}/*!sc*/ .bHLmSv:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/ .leYMvG{margin-left:auto;margin-right:auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:40px;max-width:100%;margin-top:0;}/*!sc*/ .KMPzq{display:inherit;}/*!sc*/ .hfKjHv{width:100%;}/*!sc*/ .gZWyZE{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}/*!sc*/ .dwYKDk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:8px;}/*!sc*/ .ibcGmb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;min-width:0;}/*!sc*/ .hKaEJF{display:block;margin-right:8px;}/*!sc*/ @media screen and (min-width:1360px){.hKaEJF{display:block;}}/*!sc*/ .XosP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;}/*!sc*/ .bCKfWo[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:8px;padding-right:8px;display:none;}/*!sc*/ @media screen and (max-width:768px){.bCKfWo[data-size="medium"]{display:block;}}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .dmxRgG[data-size="medium"]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .dmxRgG[data-size="medium"] svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dmxRgG[data-size="medium"] > span{width:inherit;}/*!sc*/ .bZBlpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/ .lhTYNA{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dbrgmi{font-size:14px;min-width:0;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .bmcJak{min-width:0;}/*!sc*/ .dHJiml{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;padding-right:8px;min-width:0;}/*!sc*/ .cEytCf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:16px;min-width:0;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .fzFXnm{max-width:100%;}/*!sc*/ .iMnkmv{max-width:100%;list-style:none;display:inline-block;}/*!sc*/ .ghzDag{display:inline-block;max-width:100%;}/*!sc*/ .kHuKdh{font-weight:600;}/*!sc*/ .hzJBof{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:16px;}/*!sc*/ .jGhzSQ{font-weight:600;display:inline-block;max-width:100%;font-size:16px;}/*!sc*/ .faNtbn{min-height:32px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;}/*!sc*/ .fmQaBv{margin-left:4px;margin-right:4px;}/*!sc*/ .vcvyP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .dwNhzn[data-size="medium"][data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;display:none;}/*!sc*/ .fGwBZA[data-size="medium"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dJxjrT{margin-left:16px;margin-right:16px;}/*!sc*/ .eFxKDQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .dzCJzi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:273px;padding:8px;}/*!sc*/ @media screen and (min-width:544px){.dzCJzi{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .ldRxiI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}/*!sc*/ .fVkfyA{width:100%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;min-width:0;margin-right:0;}/*!sc*/ .gNAmSV{height:40px;padding-left:4px;padding-bottom:16px;}/*!sc*/ .jNEwzY{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .bsDwxw{font-size:12px;-webkit-flex:auto;-ms-flex:auto;flex:auto;padding-right:16px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));min-width:0;}/*!sc*/ .jdLMhu{top:0px;z-index:4;background:var(--bgColor-default,var(--color-canvas-default));position:-webkit-sticky;position:sticky;}/*!sc*/ .tOISc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;position:absolute;}/*!sc*/ .hqwSEx{display:none;min-width:0;padding-top:8px;padding-bottom:8px;}/*!sc*/ .bDVoEr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-left:8px;margin-right:8px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;}/*!sc*/ .kYLlPM{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .gYjEmn{margin-left:4px;margin-right:8px;}/*!sc*/ .kGqOLL{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .fHind{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:14px;min-width:0;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .oDtgN{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:14px;}/*!sc*/ .dnZoUW{font-weight:600;display:inline-block;max-width:100%;font-size:14px;}/*!sc*/ .jRZWlf[data-size="small"]{color:var(--fgColor-default,var(--color-fg-default,#1F2328));margin-left:8px;}/*!sc*/ .kTvpNk{padding-left:8px;padding-top:8px;padding-bottom:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));border:1px solid var(--borderColor-default,var(--color-border-default));border-radius:6px 6px 0px 0px;}/*!sc*/ .iNMjfP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0;}/*!sc*/ .gtTaSn{font-size:14px;}/*!sc*/ .dXYHoy{--separator-color:transparent;}/*!sc*/ .jBWIdY{--separator-color:var(--borderColor-default,var(--color-border-default,#d0d7de));}/*!sc*/ .kcLCKF{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-right:8px;}/*!sc*/ .kVWtTz{gap:8px;}/*!sc*/ .gWqxTd{padding-left:8px;padding-right:8px;}/*!sc*/ .gWqxTd linkButtonSx:hover:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gWqxTd linkButtonSx:focus:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gWqxTd linkButtonSx:active:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .ivobqY[data-size="small"][data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;}/*!sc*/ .heuRGy[data-size="small"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));position:relative;}/*!sc*/ .ffkqe[data-size="small"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hGyMdv{border:1px solid;border-top:none;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:0px 0px 6px 6px;min-width:273px;}/*!sc*/ .dceWRL{background-color:var(--bgColor-default,var(--color-canvas-default));border:0px;border-width:0;border-radius:0px 0px 6px 6px;padding:0;min-width:0;margin-top:46px;}/*!sc*/ .dGXHv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;padding-top:8px;padding-bottom:8px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;min-width:0;position:relative;}/*!sc*/ .bpDFns{position:relative;}/*!sc*/ .iJOeCH{-webkit-flex:1;-ms-flex:1;flex:1;position:relative;min-width:0;}/*!sc*/ .glDApP{tab-size:4;isolation:isolate;position:relative;overflow:auto;max-width:unset;}/*!sc*/ .cJGaMs{margin:1px 8px;position:absolute;z-index:1;}/*!sc*/ .iGLarr{position:absolute;}/*!sc*/ .gkZUDI{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .cCoXib{position:fixed;top:0;right:0;height:100%;width:15px;-webkit-transition:-webkit-transform 0.3s;-webkit-transition:transform 0.3s;transition:transform 0.3s;z-index:1;}/*!sc*/ .cCoXib:hover{-webkit-transform:scaleX(1.5);-ms-transform:scaleX(1.5);transform:scaleX(1.5);}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"gISSDQ,bHLmSv,leYMvG,KMPzq,hfKjHv,gZWyZE,dwYKDk,ibcGmb,hKaEJF,XosP,bCKfWo,gUkoLg,dmxRgG,bZBlpz,lhTYNA,dbrgmi,bmcJak,dHJiml,cEytCf,fzFXnm,iMnkmv,ghzDag,kHuKdh,hzJBof,jGhzSQ,faNtbn,fmQaBv,vcvyP,dwNhzn,fGwBZA,dJxjrT,eFxKDQ,dzCJzi,ldRxiI,fVkfyA,gNAmSV,jNEwzY,bsDwxw,jdLMhu,tOISc,hqwSEx,bDVoEr,kYLlPM,gYjEmn,kGqOLL,fHind,oDtgN,dnZoUW,jRZWlf,kTvpNk,iNMjfP,gtTaSn,dXYHoy,jBWIdY,kcLCKF,kVWtTz,gWqxTd,ivobqY,heuRGy,ffkqe,hGyMdv,dceWRL,dGXHv,bpDFns,iJOeCH,glDApP,cJGaMs,iGLarr,gkZUDI,cCoXib,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g16[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .eAtkQz{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;max-width:100%;}/*!sc*/ data-styled.g18[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"eAtkQz,"}/*!sc*/ </style><meta data-hydrostats="publish"/> <!-- --> <!-- --> <button hidden="" data-testid="header-permalink-button" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><div><div style="--sticky-pane-height:100vh;--spacing:var(--spacing-none)" class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutRoot-1zlEO"><div class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutWrapper-s2ao4" data-width="full"><div class="Box-sc-g0xbh4-0 prc-PageLayout-PageLayoutContent-jzDMn"><div tabindex="0" class="Box-sc-g0xbh4-0 gISSDQ"><div class="Box-sc-g0xbh4-0 prc-PageLayout-PaneWrapper-nGO0U ReposFileTreePane-module__Pane--wS7IV ReposFileTreePane-module__HideTree--zU_Nd ReposFileTreePane-module__HidePane--Gj4XZ" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="Box-sc-g0xbh4-0 prc-PageLayout-HorizontalDivider-CYLp5 prc-PageLayout-PaneHorizontalDivider-4exOb" data-variant="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-Pane-Vl5LI" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-VerticalDivider-4A4Qm prc-PageLayout-PaneVerticalDivider-1c9vy" data-variant="none" data-position="start" style="--spacing:var(--spacing-none)"><div role="slider" aria-label="Draggable pane splitter" aria-valuemin="0" aria-valuemax="0" aria-valuenow="0" aria-valuetext="Pane width 0 pixels" tabindex="0" class="Box-sc-g0xbh4-0 bHLmSv"></div></div></div></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-ContentWrapper-b-QRo CodeView-module__SplitPageLayout_Content--qxR1C" data-is-hidden="false"><div class="Box-sc-g0xbh4-0"></div><div class="Box-sc-g0xbh4-0 prc-PageLayout-Content--F7-I" data-width="full" style="--spacing:var(--spacing-none)"><div data-selector="repos-split-pane-content" tabindex="0" class="Box-sc-g0xbh4-0 leYMvG"><div class="Box-sc-g0xbh4-0 KMPzq"><div class="Box-sc-g0xbh4-0 hfKjHv container"><div class="px-3 pt-3 pb-0" id="StickyHeader"><div class="Box-sc-g0xbh4-0 gZWyZE"><div class="Box-sc-g0xbh4-0 dwYKDk"><div class="Box-sc-g0xbh4-0 ibcGmb react-code-view-header-wrap--narrow"><div class="Box-sc-g0xbh4-0 hKaEJF"><h2 class="Box-sc-g0xbh4-0 XosP prc-Heading-Heading-6CmGO"><button style="--button-color:fg.muted" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="Box-sc-g0xbh4-0 bCKfWo prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rld9lab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Files</span></span></button><span role="tooltip" aria-label="Expand file tree" id="expand-button-file-tree-button" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-se"><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-c50BI position-relative ExpandFileTreeButton-module__expandButton--gL4is ExpandFileTreeButton-module__filesButtonBreakpoint--WfX9t fgColor-muted prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":R35d9lab:-loading-announcement" aria-labelledby="expand-button-file-tree-button"><svg aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button></span><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="master branch" data-testid="anchor-button" class="Box-sc-g0xbh4-0 dmxRgG prc-Button-ButtonBase-c50BI ref-selector-class" data-loading="false" data-size="medium" data-variant="default" aria-describedby="branch-picker-repos-header-ref-selector-wide-loading-announcement" id="branch-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 bZBlpz"><div class="Box-sc-g0xbh4-0 lhTYNA"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 dbrgmi ref-selector-button-text-container"><span class="Box-sc-g0xbh4-0 bmcJak prc-Text-Text-0ima0"> <!-- -->master</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><button hidden="" data-hotkey-scope="read-only-cursor-text-area"></button></div><div class="Box-sc-g0xbh4-0 dHJiml react-code-view-header-mb--narrow"><div class="Box-sc-g0xbh4-0 cEytCf"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Box-sc-g0xbh4-0 fzFXnm"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Box-sc-g0xbh4-0 iMnkmv"><li class="Box-sc-g0xbh4-0 ghzDag"><a class="Box-sc-g0xbh4-0 kHuKdh prc-Link-Link-85e08" sx="[object Object]" data-testid="breadcrumbs-repo-link" href="/ocornut/imgui/tree/master">imgui</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Box-sc-g0xbh4-0 ghzDag"><span class="Box-sc-g0xbh4-0 hzJBof prc-Text-Text-0ima0" aria-hidden="true">/</span><h1 class="Box-sc-g0xbh4-0 jGhzSQ prc-Heading-Heading-6CmGO" tabindex="-1" id="file-name-id">imgui_tables.cpp</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-c50BI ml-2 prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rftd9lab:-loading-announcement" aria-labelledby=":R1td9lab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardButton-module__tooltip--Dq1IB prc-TooltipV2-Tooltip-cYMVY" data-direction="nw" aria-label="Copy path" aria-hidden="true" id=":R1td9lab:">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="Box-sc-g0xbh4-0 faNtbn"><div class="d-flex gap-2"> <div><div class="Box-sc-g0xbh4-0 fmQaBv"><span class="Box-sc-g0xbh4-0 vcvyP TextInput-wrapper prc-components-TextInputWrapper-i1ofR prc-components-TextInputBaseWrapper-ueK9q" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id=":Rb66d9lab:" aria-hidden="true"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellcheck="false" placeholder="Go to file" aria-describedby=":Rb66d9lab: :Rb66d9labH1:" data-component="input" class="prc-components-Input-Ic-y8" value=""/><span class="TextInput-icon" id=":Rb66d9labH1:" aria-hidden="true"></span></span></div><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button></div><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><button type="button" class="Box-sc-g0xbh4-0 dwNhzn prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R5a6d9lab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Blame</span></span></button><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button data-component="IconButton" type="button" aria-label="More file actions" title="More file actions" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI js-blob-dropdown-click prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R2a6d9lab:-loading-announcement" id=":R2a6d9lab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button> </div></div></div><div class="react-code-view-header-element--narrow"><div class="Box-sc-g0xbh4-0 faNtbn"><div class="d-flex gap-2"> <button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><button type="button" class="Box-sc-g0xbh4-0 dwNhzn prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R5a7d9lab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Blame</span></span></button><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button data-component="IconButton" type="button" aria-label="More file actions" title="More file actions" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI js-blob-dropdown-click prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R2a7d9lab:-loading-announcement" id=":R2a7d9lab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button> </div></div></div></div></div></div></div></div><div class="Box-sc-g0xbh4-0 dJxjrT react-code-view-bottom-padding"> <div class="Box-sc-g0xbh4-0 eFxKDQ"></div> <!-- --> <!-- --> </div><div class="Box-sc-g0xbh4-0 dJxjrT"> <!-- --> <!-- --> <button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button><div class="d-flex flex-column border rounded-2 mb-3 pl-1"><div class="Box-sc-g0xbh4-0 dzCJzi"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">History</h2><a href="/ocornut/imgui/commits/master/imgui_tables.cpp" class="prc-Button-ButtonBase-c50BI d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":R5dlal9lab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><span role="tooltip" aria-label="History" id="history-icon-button-tooltip" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-n"><a href="/ocornut/imgui/commits/master/imgui_tables.cpp" class="prc-Button-ButtonBase-c50BI LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":Rpdlal9lab:-loading-announcement history-icon-button-tooltip"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a></span></div></div></div></div></div><div class="Box-sc-g0xbh4-0 ldRxiI"><div class="Box-sc-g0xbh4-0 fVkfyA container"><div class="Box-sc-g0xbh4-0 gNAmSV react-code-size-details-banner"><div class="Box-sc-g0xbh4-0 jNEwzY react-code-size-details-banner"><div class="Box-sc-g0xbh4-0 bsDwxw text-mono"><div title="242 KB" data-testid="blob-size" class="Truncate__StyledTruncate-sc-23o1d2-0 eAtkQz"><span>4525 lines (4035 loc) · 242 KB</span></div></div></div></div><div class="Box-sc-g0xbh4-0 jdLMhu react-blob-view-header-sticky" id="repos-sticky-header"><div class="Box-sc-g0xbh4-0 tOISc"><div class="react-blob-sticky-header"><div class="Box-sc-g0xbh4-0 hqwSEx"><div class="Box-sc-g0xbh4-0 bDVoEr"><div class="Box-sc-g0xbh4-0 kYLlPM"><div class="Box-sc-g0xbh4-0 gYjEmn"><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="master branch" data-testid="anchor-button" class="Box-sc-g0xbh4-0 dmxRgG prc-Button-ButtonBase-c50BI ref-selector-class" data-loading="false" data-size="medium" data-variant="default" aria-describedby="branch-picker-repos-header-ref-selector-loading-announcement" id="branch-picker-repos-header-ref-selector"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 bZBlpz"><div class="Box-sc-g0xbh4-0 lhTYNA"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 dbrgmi ref-selector-button-text-container"><span class="Box-sc-g0xbh4-0 bmcJak prc-Text-Text-0ima0"> <!-- -->master</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><button hidden="" data-hotkey-scope="read-only-cursor-text-area"></button></div><div class="Box-sc-g0xbh4-0 kGqOLL"><div class="Box-sc-g0xbh4-0 fHind"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Box-sc-g0xbh4-0 fzFXnm"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Box-sc-g0xbh4-0 iMnkmv"><li class="Box-sc-g0xbh4-0 ghzDag"><a class="Box-sc-g0xbh4-0 kHuKdh prc-Link-Link-85e08" sx="[object Object]" data-testid="breadcrumbs-repo-link" href="/ocornut/imgui/tree/master">imgui</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Box-sc-g0xbh4-0 ghzDag"><span class="Box-sc-g0xbh4-0 oDtgN prc-Text-Text-0ima0" aria-hidden="true">/</span><h1 class="Box-sc-g0xbh4-0 dnZoUW prc-Heading-Heading-6CmGO" tabindex="-1" id="sticky-file-name-id">imgui_tables.cpp</h1></div></div></div></div><button style="--button-color:fg.default" type="button" class="Box-sc-g0xbh4-0 jRZWlf prc-Button-ButtonBase-c50BI" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":Riptal9lab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Top</span></span></button></div></div></div><div class="Box-sc-g0xbh4-0 kTvpNk"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">File metadata and controls</h2><div class="Box-sc-g0xbh4-0 iNMjfP"><ul aria-label="File view" class="Box-sc-g0xbh4-0 gtTaSn prc-SegmentedControl-SegmentedControl-e7570" data-size="small"><li class="Box-sc-g0xbh4-0 dXYHoy prc-SegmentedControl-Item-7Aq6h" data-selected="true"><button aria-current="true" class="prc-SegmentedControl-Button-ojWXD" type="button"><span class="prc-SegmentedControl-Content-gnQ4n"><div class="Box-sc-g0xbh4-0 prc-SegmentedControl-Text-c5gSh" data-text="Code">Code</div></span></button></li><li class="Box-sc-g0xbh4-0 jBWIdY prc-SegmentedControl-Item-7Aq6h"><button aria-current="false" class="prc-SegmentedControl-Button-ojWXD" type="button"><span class="prc-SegmentedControl-Content-gnQ4n"><div class="Box-sc-g0xbh4-0 prc-SegmentedControl-Text-c5gSh" data-text="Blame">Blame</div></span></button></li></ul><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><div class="Box-sc-g0xbh4-0 jNEwzY react-code-size-details-in-header"><div class="Box-sc-g0xbh4-0 bsDwxw text-mono"><div title="242 KB" data-testid="blob-size" class="Truncate__StyledTruncate-sc-23o1d2-0 eAtkQz"><span>4525 lines (4035 loc) · 242 KB</span></div></div></div></div><div class="Box-sc-g0xbh4-0 kcLCKF"><div class="Box-sc-g0xbh4-0 kVWtTz react-blob-header-edit-and-raw-actions"><div class="Box-sc-g0xbh4-0 prc-ButtonGroup-ButtonGroup-vcMeG"><div><a href="https://github.com/ocornut/imgui/raw/refs/heads/master/imgui_tables.cpp" data-testid="raw-button" class="Box-sc-g0xbh4-0 gWqxTd prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-describedby=":R5csptal9lab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Raw</span></span></a></div><div><button data-component="IconButton" type="button" aria-label="Copy raw content" data-testid="copy-raw-button" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-describedby=":Rpcsptal9lab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button></div><div><span role="tooltip" aria-label="Download raw file" id=":Rdcsptal9lab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-n"><button data-component="IconButton" type="button" aria-label="Download raw content" data-testid="download-raw-button" class="Box-sc-g0xbh4-0 ivobqY prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-describedby=":Rtcsptal9lab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button></span></div></div><button hidden="" data-testid="raw-button-shortcut" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden="" data-testid="copy-raw-button-shortcut" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden="" data-testid="download-raw-button-shortcut" data-hotkey-scope="read-only-cursor-text-area"></button></div><span role="tooltip" aria-label="Open symbols panel" id=":R5sptal9lab:" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-nw"><button data-component="IconButton" type="button" aria-label="Symbols" aria-pressed="false" aria-expanded="false" aria-controls="symbols-pane" data-testid="symbols-button" class="Box-sc-g0xbh4-0 heuRGy prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby="symbols-button-loading-announcement" id="symbols-button"><svg aria-hidden="true" focusable="false" class="octicon octicon-code-square" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg></button></span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" aria-label="Edit and raw actions" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 ffkqe prc-Button-ButtonBase-c50BI js-blob-dropdown-click prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-describedby=":Rnsptal9lab:-loading-announcement" id=":Rnsptal9lab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div></div></div></div><div></div></div><div class="Box-sc-g0xbh4-0 hGyMdv"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="Box-sc-g0xbh4-0 dceWRL"><div class="Box-sc-g0xbh4-0 dGXHv"><div id="highlighted-line-menu-positioner" class="position-relative"><div id="copilot-button-positioner" class="Box-sc-g0xbh4-0 bpDFns"><div class="Box-sc-g0xbh4-0 iJOeCH"><div class="Box-sc-g0xbh4-0 glDApP react-code-file-contents" role="presentation" aria-hidden="true" data-tab-size="4" data-paste-markdown-skip="true" data-hpc="true"><div class="react-line-numbers" style="pointer-events:auto"><div data-line-number="1" class="react-line-number react-code-text" style="padding-right:16px">1</div><div data-line-number="2" class="react-line-number react-code-text" style="padding-right:16px">2</div><div data-line-number="3" class="react-line-number react-code-text" style="padding-right:16px">3</div><div data-line-number="4" class="react-line-number react-code-text" style="padding-right:16px">4</div><div data-line-number="5" class="react-line-number react-code-text" style="padding-right:16px">5</div><div data-line-number="6" class="react-line-number react-code-text" style="padding-right:16px">6</div><div data-line-number="7" class="react-line-number react-code-text" style="padding-right:16px">7</div><div data-line-number="8" class="react-line-number react-code-text" style="padding-right:16px">8</div><div data-line-number="9" class="react-line-number react-code-text" style="padding-right:16px">9</div><div data-line-number="10" class="react-line-number react-code-text" style="padding-right:16px">10</div><div data-line-number="11" class="react-line-number react-code-text" style="padding-right:16px">11</div><div data-line-number="12" class="react-line-number react-code-text" style="padding-right:16px">12</div><div data-line-number="13" class="react-line-number react-code-text" style="padding-right:16px">13</div><div data-line-number="14" class="react-line-number react-code-text" style="padding-right:16px">14</div><div data-line-number="15" class="react-line-number react-code-text" style="padding-right:16px">15</div><div data-line-number="16" class="react-line-number react-code-text" style="padding-right:16px">16</div><div data-line-number="17" class="react-line-number react-code-text" style="padding-right:16px">17</div><div data-line-number="18" class="react-line-number react-code-text" style="padding-right:16px">18</div><div data-line-number="19" class="react-line-number react-code-text" style="padding-right:16px">19</div><div data-line-number="20" class="react-line-number react-code-text" style="padding-right:16px">20</div><div data-line-number="21" class="react-line-number react-code-text" style="padding-right:16px">21</div><div data-line-number="22" class="react-line-number react-code-text" style="padding-right:16px">22</div><div data-line-number="23" class="react-line-number react-code-text" style="padding-right:16px">23</div><div data-line-number="24" class="react-line-number react-code-text" style="padding-right:16px">24</div><div data-line-number="25" class="react-line-number react-code-text" style="padding-right:16px">25</div><div data-line-number="26" class="react-line-number react-code-text" style="padding-right:16px">26</div><div data-line-number="27" class="react-line-number react-code-text" style="padding-right:16px">27</div><div data-line-number="28" class="react-line-number react-code-text" style="padding-right:16px">28</div><div data-line-number="29" class="react-line-number react-code-text" style="padding-right:16px">29</div><div data-line-number="30" class="react-line-number react-code-text" style="padding-right:16px">30</div><div data-line-number="31" class="react-line-number react-code-text" style="padding-right:16px">31</div><div data-line-number="32" class="react-line-number react-code-text" style="padding-right:16px">32</div><div data-line-number="33" class="react-line-number react-code-text" style="padding-right:16px">33</div><div data-line-number="34" class="react-line-number react-code-text" style="padding-right:16px">34</div><div data-line-number="35" class="react-line-number react-code-text" style="padding-right:16px">35</div><div data-line-number="36" class="react-line-number react-code-text" style="padding-right:16px">36</div><div data-line-number="37" class="react-line-number react-code-text" style="padding-right:16px">37</div><div data-line-number="38" class="react-line-number react-code-text" style="padding-right:16px">38</div><div data-line-number="39" class="react-line-number react-code-text" style="padding-right:16px">39</div><div data-line-number="40" class="react-line-number react-code-text" style="padding-right:16px">40</div><div data-line-number="41" class="react-line-number react-code-text" style="padding-right:16px">41</div><div data-line-number="42" class="react-line-number react-code-text" style="padding-right:16px">42</div><div data-line-number="43" class="react-line-number react-code-text" style="padding-right:16px">43</div><div data-line-number="44" class="react-line-number react-code-text" style="padding-right:16px">44</div><div data-line-number="45" class="react-line-number react-code-text" style="padding-right:16px">45</div><div data-line-number="46" class="react-line-number react-code-text" style="padding-right:16px">46</div><div data-line-number="47" class="react-line-number react-code-text" style="padding-right:16px">47</div><div data-line-number="48" class="react-line-number react-code-text" style="padding-right:16px">48</div><div data-line-number="49" class="react-line-number react-code-text" style="padding-right:16px">49</div><div data-line-number="50" class="react-line-number react-code-text" style="padding-right:16px">50</div><div data-line-number="51" class="react-line-number react-code-text" style="padding-right:16px">51</div><div data-line-number="52" class="react-line-number react-code-text" style="padding-right:16px">52</div><div data-line-number="53" class="react-line-number react-code-text" style="padding-right:16px">53</div><div data-line-number="54" class="react-line-number react-code-text" style="padding-right:16px">54</div><div data-line-number="55" class="react-line-number react-code-text" style="padding-right:16px">55</div><div data-line-number="56" class="react-line-number react-code-text" style="padding-right:16px">56</div><div data-line-number="57" class="react-line-number react-code-text" style="padding-right:16px">57</div><div data-line-number="58" class="react-line-number react-code-text" style="padding-right:16px">58</div><div data-line-number="59" class="react-line-number react-code-text" style="padding-right:16px">59</div><div data-line-number="60" class="react-line-number react-code-text" style="padding-right:16px">60</div><div data-line-number="61" class="react-line-number react-code-text" style="padding-right:16px">61</div><div data-line-number="62" class="react-line-number react-code-text" style="padding-right:16px">62</div><div data-line-number="63" class="react-line-number react-code-text" style="padding-right:16px">63</div><div data-line-number="64" class="react-line-number react-code-text" style="padding-right:16px">64</div><div data-line-number="65" class="react-line-number react-code-text" style="padding-right:16px">65</div><div data-line-number="66" class="react-line-number react-code-text" style="padding-right:16px">66</div><div data-line-number="67" class="react-line-number react-code-text" style="padding-right:16px">67</div><div data-line-number="68" class="react-line-number react-code-text" style="padding-right:16px">68</div><div data-line-number="69" class="react-line-number react-code-text" style="padding-right:16px">69</div><div data-line-number="70" class="react-line-number react-code-text" style="padding-right:16px">70</div><div data-line-number="71" class="react-line-number react-code-text" style="padding-right:16px">71</div><div data-line-number="72" class="react-line-number react-code-text" style="padding-right:16px">72</div><div data-line-number="73" class="react-line-number react-code-text" style="padding-right:16px">73</div><div data-line-number="74" class="react-line-number react-code-text" style="padding-right:16px">74</div><div data-line-number="75" class="react-line-number react-code-text" style="padding-right:16px">75</div><div data-line-number="76" class="react-line-number react-code-text" style="padding-right:16px">76</div><div data-line-number="77" class="react-line-number react-code-text" style="padding-right:16px">77</div><div data-line-number="78" class="react-line-number react-code-text" style="padding-right:16px">78</div><div data-line-number="79" class="react-line-number react-code-text" style="padding-right:16px">79</div><div data-line-number="80" class="react-line-number react-code-text" style="padding-right:16px">80</div><div data-line-number="81" class="react-line-number react-code-text" style="padding-right:16px">81</div><div data-line-number="82" class="react-line-number react-code-text" style="padding-right:16px">82</div><div data-line-number="83" class="react-line-number react-code-text" style="padding-right:16px">83</div><div data-line-number="84" class="react-line-number react-code-text" style="padding-right:16px">84</div><div data-line-number="85" class="react-line-number react-code-text" style="padding-right:16px">85</div><div data-line-number="86" class="react-line-number react-code-text" style="padding-right:16px">86</div><div data-line-number="87" class="react-line-number react-code-text" style="padding-right:16px">87</div><div data-line-number="88" class="react-line-number react-code-text" style="padding-right:16px">88</div><div data-line-number="89" class="react-line-number react-code-text" style="padding-right:16px">89</div><div data-line-number="90" class="react-line-number react-code-text" style="padding-right:16px">90</div><div data-line-number="91" class="react-line-number react-code-text" style="padding-right:16px">91</div><div data-line-number="92" class="react-line-number react-code-text" style="padding-right:16px">92</div><div data-line-number="93" class="react-line-number react-code-text" style="padding-right:16px">93</div><div data-line-number="94" class="react-line-number react-code-text" style="padding-right:16px">94</div><div data-line-number="95" class="react-line-number react-code-text" style="padding-right:16px">95</div><div data-line-number="96" class="react-line-number react-code-text" style="padding-right:16px">96</div><div data-line-number="97" class="react-line-number react-code-text" style="padding-right:16px">97</div><div data-line-number="98" class="react-line-number react-code-text" style="padding-right:16px">98</div><div data-line-number="99" class="react-line-number react-code-text" style="padding-right:16px">99</div><div data-line-number="100" class="react-line-number react-code-text" style="padding-right:16px">100</div><div data-line-number="101" class="react-line-number react-code-text" style="padding-right:16px">101</div><div data-line-number="102" class="react-line-number react-code-text" style="padding-right:16px">102</div><div data-line-number="103" class="react-line-number react-code-text" style="padding-right:16px">103</div><div data-line-number="104" class="react-line-number react-code-text" style="padding-right:16px">104</div><div data-line-number="105" class="react-line-number react-code-text" style="padding-right:16px">105</div><div data-line-number="106" class="react-line-number react-code-text" style="padding-right:16px">106</div><div data-line-number="107" class="react-line-number react-code-text" style="padding-right:16px">107</div><div data-line-number="108" class="react-line-number react-code-text" style="padding-right:16px">108</div><div data-line-number="109" class="react-line-number react-code-text" style="padding-right:16px">109</div><div data-line-number="110" class="react-line-number react-code-text" style="padding-right:16px">110</div><div data-line-number="111" class="react-line-number react-code-text" style="padding-right:16px">111</div><div data-line-number="112" class="react-line-number react-code-text" style="padding-right:16px">112</div><div data-line-number="113" class="react-line-number react-code-text" style="padding-right:16px">113</div><div data-line-number="114" class="react-line-number react-code-text" style="padding-right:16px">114</div><div data-line-number="115" class="react-line-number react-code-text" style="padding-right:16px">115</div><div data-line-number="116" class="react-line-number react-code-text" style="padding-right:16px">116</div><div data-line-number="117" class="react-line-number react-code-text" style="padding-right:16px">117</div><div data-line-number="118" class="react-line-number react-code-text" style="padding-right:16px">118</div><div data-line-number="119" class="react-line-number react-code-text" style="padding-right:16px">119</div><div data-line-number="120" class="react-line-number react-code-text" style="padding-right:16px">120</div><div data-line-number="121" class="react-line-number react-code-text" style="padding-right:16px">121</div><div data-line-number="122" class="react-line-number react-code-text" style="padding-right:16px">122</div><div data-line-number="123" class="react-line-number react-code-text" style="padding-right:16px">123</div><div data-line-number="124" class="react-line-number react-code-text" style="padding-right:16px">124</div><div data-line-number="125" class="react-line-number react-code-text" style="padding-right:16px">125</div><div data-line-number="126" class="react-line-number react-code-text" style="padding-right:16px">126</div><div data-line-number="127" class="react-line-number react-code-text" style="padding-right:16px">127</div><div data-line-number="128" class="react-line-number react-code-text" style="padding-right:16px">128</div><div data-line-number="129" class="react-line-number react-code-text" style="padding-right:16px">129</div><div data-line-number="130" class="react-line-number react-code-text" style="padding-right:16px">130</div><div data-line-number="131" class="react-line-number react-code-text" style="padding-right:16px">131</div><div data-line-number="132" class="react-line-number react-code-text" style="padding-right:16px">132</div><div data-line-number="133" class="react-line-number react-code-text" style="padding-right:16px">133</div><div data-line-number="134" class="react-line-number react-code-text" style="padding-right:16px">134</div><div data-line-number="135" class="react-line-number react-code-text" style="padding-right:16px">135</div><div data-line-number="136" class="react-line-number react-code-text" style="padding-right:16px">136</div><div data-line-number="137" class="react-line-number react-code-text" style="padding-right:16px">137</div><div data-line-number="138" class="react-line-number react-code-text" style="padding-right:16px">138</div><div data-line-number="139" class="react-line-number react-code-text" style="padding-right:16px">139</div><div data-line-number="140" class="react-line-number react-code-text" style="padding-right:16px">140</div><div data-line-number="141" class="react-line-number react-code-text" style="padding-right:16px">141</div><div data-line-number="142" class="react-line-number react-code-text" style="padding-right:16px">142</div><div data-line-number="143" class="react-line-number react-code-text" style="padding-right:16px">143</div><div data-line-number="144" class="react-line-number react-code-text" style="padding-right:16px">144</div><div data-line-number="145" class="react-line-number react-code-text" style="padding-right:16px">145</div><div data-line-number="146" class="react-line-number react-code-text" style="padding-right:16px">146</div><div data-line-number="147" class="react-line-number react-code-text" style="padding-right:16px">147</div><div data-line-number="148" class="react-line-number react-code-text" style="padding-right:16px">148</div><div data-line-number="149" class="react-line-number react-code-text" style="padding-right:16px">149</div><div data-line-number="150" class="react-line-number react-code-text" style="padding-right:16px">150</div><div data-line-number="151" class="react-line-number react-code-text" style="padding-right:16px">151</div><div data-line-number="152" class="react-line-number react-code-text" style="padding-right:16px">152</div><div data-line-number="153" class="react-line-number react-code-text" style="padding-right:16px">153</div><div data-line-number="154" class="react-line-number react-code-text" style="padding-right:16px">154</div><div data-line-number="155" class="react-line-number react-code-text" style="padding-right:16px">155</div><div data-line-number="156" class="react-line-number react-code-text" style="padding-right:16px">156</div><div data-line-number="157" class="react-line-number react-code-text" style="padding-right:16px">157</div><div data-line-number="158" class="react-line-number react-code-text" style="padding-right:16px">158</div><div data-line-number="159" class="react-line-number react-code-text" style="padding-right:16px">159</div><div data-line-number="160" class="react-line-number react-code-text" style="padding-right:16px">160</div><div data-line-number="161" class="react-line-number react-code-text" style="padding-right:16px">161</div><div data-line-number="162" class="react-line-number react-code-text" style="padding-right:16px">162</div><div data-line-number="163" class="react-line-number react-code-text" style="padding-right:16px">163</div><div data-line-number="164" class="react-line-number react-code-text" style="padding-right:16px">164</div><div data-line-number="165" class="react-line-number react-code-text" style="padding-right:16px">165</div><div data-line-number="166" class="react-line-number react-code-text" style="padding-right:16px">166</div><div data-line-number="167" class="react-line-number react-code-text" style="padding-right:16px">167</div><div data-line-number="168" class="react-line-number react-code-text" style="padding-right:16px">168</div><div data-line-number="169" class="react-line-number react-code-text" style="padding-right:16px">169</div><div data-line-number="170" class="react-line-number react-code-text" style="padding-right:16px">170</div><div data-line-number="171" class="react-line-number react-code-text" style="padding-right:16px">171</div><div data-line-number="172" class="react-line-number react-code-text" style="padding-right:16px">172</div><div data-line-number="173" class="react-line-number react-code-text" style="padding-right:16px">173</div><div data-line-number="174" class="react-line-number react-code-text" style="padding-right:16px">174</div><div data-line-number="175" class="react-line-number react-code-text" style="padding-right:16px">175</div><div data-line-number="176" class="react-line-number react-code-text" style="padding-right:16px">176</div><div data-line-number="177" class="react-line-number react-code-text" style="padding-right:16px">177</div><div data-line-number="178" class="react-line-number react-code-text" style="padding-right:16px">178</div><div data-line-number="179" class="react-line-number react-code-text" style="padding-right:16px">179</div><div data-line-number="180" class="react-line-number react-code-text" style="padding-right:16px">180</div><div data-line-number="181" class="react-line-number react-code-text" style="padding-right:16px">181</div><div data-line-number="182" class="react-line-number react-code-text" style="padding-right:16px">182</div><div data-line-number="183" class="react-line-number react-code-text" style="padding-right:16px">183</div><div data-line-number="184" class="react-line-number react-code-text" style="padding-right:16px">184</div><div data-line-number="185" class="react-line-number react-code-text" style="padding-right:16px">185</div><div data-line-number="186" class="react-line-number react-code-text" style="padding-right:16px">186</div><div data-line-number="187" class="react-line-number react-code-text" style="padding-right:16px">187</div><div data-line-number="188" class="react-line-number react-code-text" style="padding-right:16px">188</div><div data-line-number="189" class="react-line-number react-code-text" style="padding-right:16px">189</div><div data-line-number="190" class="react-line-number react-code-text" style="padding-right:16px">190</div><div data-line-number="191" class="react-line-number react-code-text" style="padding-right:16px">191</div><div data-line-number="192" class="react-line-number react-code-text" style="padding-right:16px">192</div><div data-line-number="193" class="react-line-number react-code-text" style="padding-right:16px">193</div><div data-line-number="194" class="react-line-number react-code-text" style="padding-right:16px">194</div><div data-line-number="195" class="react-line-number react-code-text" style="padding-right:16px">195</div><div data-line-number="196" class="react-line-number react-code-text" style="padding-right:16px">196</div><div data-line-number="197" class="react-line-number react-code-text" style="padding-right:16px">197</div><div data-line-number="198" class="react-line-number react-code-text" style="padding-right:16px">198</div><div data-line-number="199" class="react-line-number react-code-text" style="padding-right:16px">199</div><div data-line-number="200" class="react-line-number react-code-text" style="padding-right:16px">200</div><div data-line-number="201" class="react-line-number react-code-text" style="padding-right:16px">201</div><div data-line-number="202" class="react-line-number react-code-text" style="padding-right:16px">202</div><div data-line-number="203" class="react-line-number react-code-text" style="padding-right:16px">203</div><div data-line-number="204" class="react-line-number react-code-text" style="padding-right:16px">204</div><div data-line-number="205" class="react-line-number react-code-text" style="padding-right:16px">205</div><div data-line-number="206" class="react-line-number react-code-text" style="padding-right:16px">206</div><div data-line-number="207" class="react-line-number react-code-text" style="padding-right:16px">207</div><div data-line-number="208" class="react-line-number react-code-text" style="padding-right:16px">208</div><div data-line-number="209" class="react-line-number react-code-text" style="padding-right:16px">209</div><div data-line-number="210" class="react-line-number react-code-text" style="padding-right:16px">210</div><div data-line-number="211" class="react-line-number react-code-text" style="padding-right:16px">211</div><div data-line-number="212" class="react-line-number react-code-text" style="padding-right:16px">212</div><div data-line-number="213" class="react-line-number react-code-text" style="padding-right:16px">213</div><div data-line-number="214" class="react-line-number react-code-text" style="padding-right:16px">214</div><div data-line-number="215" class="react-line-number react-code-text" style="padding-right:16px">215</div><div data-line-number="216" class="react-line-number react-code-text" style="padding-right:16px">216</div><div data-line-number="217" class="react-line-number react-code-text" style="padding-right:16px">217</div><div data-line-number="218" class="react-line-number react-code-text" style="padding-right:16px">218</div><div data-line-number="219" class="react-line-number react-code-text" style="padding-right:16px">219</div><div data-line-number="220" class="react-line-number react-code-text" style="padding-right:16px">220</div><div data-line-number="221" class="react-line-number react-code-text" style="padding-right:16px">221</div><div data-line-number="222" class="react-line-number react-code-text" style="padding-right:16px">222</div><div data-line-number="223" class="react-line-number react-code-text" style="padding-right:16px">223</div><div data-line-number="224" class="react-line-number react-code-text" style="padding-right:16px">224</div><div data-line-number="225" class="react-line-number react-code-text" style="padding-right:16px">225</div><div data-line-number="226" class="react-line-number react-code-text" style="padding-right:16px">226</div><div data-line-number="227" class="react-line-number react-code-text" style="padding-right:16px">227</div><div data-line-number="228" class="react-line-number react-code-text" style="padding-right:16px">228</div><div data-line-number="229" class="react-line-number react-code-text" style="padding-right:16px">229</div><div data-line-number="230" class="react-line-number react-code-text" style="padding-right:16px">230</div><div data-line-number="231" class="react-line-number react-code-text" style="padding-right:16px">231</div><div data-line-number="232" class="react-line-number react-code-text" style="padding-right:16px">232</div><div data-line-number="233" class="react-line-number react-code-text" style="padding-right:16px">233</div><div data-line-number="234" class="react-line-number react-code-text" style="padding-right:16px">234</div><div data-line-number="235" class="react-line-number react-code-text" style="padding-right:16px">235</div><div data-line-number="236" class="react-line-number react-code-text" style="padding-right:16px">236</div><div data-line-number="237" class="react-line-number react-code-text" style="padding-right:16px">237</div><div data-line-number="238" class="react-line-number react-code-text" style="padding-right:16px">238</div><div data-line-number="239" class="react-line-number react-code-text" style="padding-right:16px">239</div><div data-line-number="240" class="react-line-number react-code-text" style="padding-right:16px">240</div><div data-line-number="241" class="react-line-number react-code-text" style="padding-right:16px">241</div><div data-line-number="242" class="react-line-number react-code-text" style="padding-right:16px">242</div><div data-line-number="243" class="react-line-number react-code-text" style="padding-right:16px">243</div><div data-line-number="244" class="react-line-number react-code-text" style="padding-right:16px">244</div><div data-line-number="245" class="react-line-number react-code-text" style="padding-right:16px">245</div><div data-line-number="246" class="react-line-number react-code-text" style="padding-right:16px">246</div><div data-line-number="247" class="react-line-number react-code-text" style="padding-right:16px">247</div><div data-line-number="248" class="react-line-number react-code-text" style="padding-right:16px">248</div><div data-line-number="249" class="react-line-number react-code-text" style="padding-right:16px">249</div><div data-line-number="250" class="react-line-number react-code-text" style="padding-right:16px">250</div><div data-line-number="251" class="react-line-number react-code-text" style="padding-right:16px">251</div><div data-line-number="252" class="react-line-number react-code-text" style="padding-right:16px">252</div><div data-line-number="253" class="react-line-number react-code-text" style="padding-right:16px">253</div><div data-line-number="254" class="react-line-number react-code-text" style="padding-right:16px">254</div><div data-line-number="255" class="react-line-number react-code-text" style="padding-right:16px">255</div><div data-line-number="256" class="react-line-number react-code-text" style="padding-right:16px">256</div><div data-line-number="257" class="react-line-number react-code-text" style="padding-right:16px">257</div><div data-line-number="258" class="react-line-number react-code-text" style="padding-right:16px">258</div><div data-line-number="259" class="react-line-number react-code-text" style="padding-right:16px">259</div><div data-line-number="260" class="react-line-number react-code-text" style="padding-right:16px">260</div><div data-line-number="261" class="react-line-number react-code-text" style="padding-right:16px">261</div><div data-line-number="262" class="react-line-number react-code-text" style="padding-right:16px">262</div><div data-line-number="263" class="react-line-number react-code-text" style="padding-right:16px">263</div><div data-line-number="264" class="react-line-number react-code-text" style="padding-right:16px">264</div><div data-line-number="265" class="react-line-number react-code-text" style="padding-right:16px">265</div><div data-line-number="266" class="react-line-number react-code-text" style="padding-right:16px">266</div><div data-line-number="267" class="react-line-number react-code-text" style="padding-right:16px">267</div><div data-line-number="268" class="react-line-number react-code-text" style="padding-right:16px">268</div><div data-line-number="269" class="react-line-number react-code-text" style="padding-right:16px">269</div><div data-line-number="270" class="react-line-number react-code-text" style="padding-right:16px">270</div><div data-line-number="271" class="react-line-number react-code-text" style="padding-right:16px">271<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="272" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">272</div><div data-line-number="273" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">273</div><div data-line-number="274" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">274</div><div data-line-number="275" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">275</div><div data-line-number="276" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">276</div><div data-line-number="277" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">277</div><div data-line-number="278" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">278</div><div data-line-number="279" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">279</div><div data-line-number="280" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">280</div><div data-line-number="281" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">281</div><div data-line-number="282" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">282</div><div data-line-number="283" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">283</div><div data-line-number="284" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">284</div><div data-line-number="285" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">285</div><div data-line-number="286" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">286</div><div data-line-number="287" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">287</div><div data-line-number="288" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">288</div><div data-line-number="289" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">289</div><div data-line-number="290" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">290</div><div data-line-number="291" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">291</div><div data-line-number="292" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">292</div><div data-line-number="293" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">293</div><div data-line-number="294" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">294</div><div data-line-number="295" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">295</div><div data-line-number="296" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">296</div><div data-line-number="297" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">297</div><div data-line-number="298" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">298</div><div data-line-number="299" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">299</div><div data-line-number="300" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">300</div><div data-line-number="301" class="child-of-line-270 react-line-number react-code-text" style="padding-right:16px">301</div><div data-line-number="302" class="react-line-number react-code-text" style="padding-right:16px">302</div><div data-line-number="303" class="react-line-number react-code-text" style="padding-right:16px">303</div><div data-line-number="304" class="react-line-number react-code-text" style="padding-right:16px">304</div><div data-line-number="305" class="react-line-number react-code-text" style="padding-right:16px">305</div><div data-line-number="306" class="react-line-number react-code-text" style="padding-right:16px">306</div><div data-line-number="307" class="react-line-number react-code-text" style="padding-right:16px">307</div><div data-line-number="308" class="react-line-number react-code-text" style="padding-right:16px">308</div><div data-line-number="309" class="react-line-number react-code-text" style="padding-right:16px">309</div><div data-line-number="310" class="react-line-number react-code-text" style="padding-right:16px">310</div><div data-line-number="311" class="react-line-number react-code-text" style="padding-right:16px">311<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="312" class="child-of-line-310 react-line-number react-code-text" style="padding-right:16px">312</div><div data-line-number="313" class="child-of-line-310 react-line-number react-code-text" style="padding-right:16px">313</div><div data-line-number="314" class="child-of-line-310 react-line-number react-code-text" style="padding-right:16px">314</div><div data-line-number="315" class="react-line-number react-code-text" style="padding-right:16px">315</div><div data-line-number="316" class="react-line-number react-code-text" style="padding-right:16px">316</div><div data-line-number="317" class="react-line-number react-code-text" style="padding-right:16px">317<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="318" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">318</div><div data-line-number="319" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">319</div><div data-line-number="320" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">320</div><div data-line-number="321" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">321</div><div data-line-number="322" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">322</div><div data-line-number="323" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">323</div><div data-line-number="324" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">324</div><div data-line-number="325" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">325</div><div data-line-number="326" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">326</div><div data-line-number="327" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">327</div><div data-line-number="328" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">328</div><div data-line-number="329" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">329</div><div data-line-number="330" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">330</div><div data-line-number="331" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">331</div><div data-line-number="332" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">332</div><div data-line-number="333" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">333</div><div data-line-number="334" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">334</div><div data-line-number="335" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">335</div><div data-line-number="336" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">336</div><div data-line-number="337" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">337</div><div data-line-number="338" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">338</div><div data-line-number="339" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">339</div><div data-line-number="340" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">340</div><div data-line-number="341" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">341</div><div data-line-number="342" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">342</div><div data-line-number="343" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">343</div><div data-line-number="344" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">344</div><div data-line-number="345" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">345</div><div data-line-number="346" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">346</div><div data-line-number="347" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">347</div><div data-line-number="348" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">348</div><div data-line-number="349" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">349</div><div data-line-number="350" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">350</div><div data-line-number="351" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">351</div><div data-line-number="352" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">352</div><div data-line-number="353" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">353</div><div data-line-number="354" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">354</div><div data-line-number="355" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">355</div><div data-line-number="356" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">356</div><div data-line-number="357" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">357</div><div data-line-number="358" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">358</div><div data-line-number="359" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">359</div><div data-line-number="360" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">360</div><div data-line-number="361" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">361</div><div data-line-number="362" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">362</div><div data-line-number="363" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">363</div><div data-line-number="364" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">364</div><div data-line-number="365" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">365</div><div data-line-number="366" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">366</div><div data-line-number="367" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">367</div><div data-line-number="368" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">368</div><div data-line-number="369" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">369</div><div data-line-number="370" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">370</div><div data-line-number="371" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">371</div><div data-line-number="372" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">372</div><div data-line-number="373" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">373</div><div data-line-number="374" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">374</div><div data-line-number="375" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">375</div><div data-line-number="376" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">376</div><div data-line-number="377" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">377</div><div data-line-number="378" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">378</div><div data-line-number="379" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">379</div><div data-line-number="380" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">380</div><div data-line-number="381" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">381</div><div data-line-number="382" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">382</div><div data-line-number="383" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">383</div><div data-line-number="384" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">384</div><div data-line-number="385" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">385</div><div data-line-number="386" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">386</div><div data-line-number="387" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">387</div><div data-line-number="388" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">388</div><div data-line-number="389" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">389</div><div data-line-number="390" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">390</div><div data-line-number="391" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">391</div><div data-line-number="392" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">392</div><div data-line-number="393" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">393</div><div data-line-number="394" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">394</div><div data-line-number="395" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">395</div><div data-line-number="396" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">396</div><div data-line-number="397" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">397</div><div data-line-number="398" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">398</div><div data-line-number="399" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">399</div><div data-line-number="400" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">400</div><div data-line-number="401" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">401</div><div data-line-number="402" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">402</div><div data-line-number="403" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">403</div><div data-line-number="404" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">404</div><div data-line-number="405" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">405</div><div data-line-number="406" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">406</div><div data-line-number="407" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">407</div><div data-line-number="408" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">408</div><div data-line-number="409" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">409</div><div data-line-number="410" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">410</div><div data-line-number="411" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">411</div><div data-line-number="412" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">412</div><div data-line-number="413" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">413</div><div data-line-number="414" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">414</div><div data-line-number="415" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">415</div><div data-line-number="416" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">416</div><div data-line-number="417" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">417</div><div data-line-number="418" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">418</div><div data-line-number="419" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">419</div><div data-line-number="420" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">420</div><div data-line-number="421" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">421</div><div data-line-number="422" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">422</div><div data-line-number="423" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">423</div><div data-line-number="424" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">424</div><div data-line-number="425" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">425</div><div data-line-number="426" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">426</div><div data-line-number="427" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">427</div><div data-line-number="428" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">428</div><div data-line-number="429" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">429</div><div data-line-number="430" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">430</div><div data-line-number="431" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">431</div><div data-line-number="432" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">432</div><div data-line-number="433" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">433</div><div data-line-number="434" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">434</div><div data-line-number="435" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">435</div><div data-line-number="436" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">436</div><div data-line-number="437" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">437</div><div data-line-number="438" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">438</div><div data-line-number="439" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">439</div><div data-line-number="440" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">440</div><div data-line-number="441" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">441</div><div data-line-number="442" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">442</div><div data-line-number="443" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">443</div><div data-line-number="444" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">444</div><div data-line-number="445" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">445</div><div data-line-number="446" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">446</div><div data-line-number="447" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">447</div><div data-line-number="448" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">448</div><div data-line-number="449" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">449</div><div data-line-number="450" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">450</div><div data-line-number="451" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">451</div><div data-line-number="452" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">452</div><div data-line-number="453" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">453</div><div data-line-number="454" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">454</div><div data-line-number="455" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">455</div><div data-line-number="456" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">456</div><div data-line-number="457" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">457</div><div data-line-number="458" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">458</div><div data-line-number="459" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">459</div><div data-line-number="460" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">460</div><div data-line-number="461" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">461</div><div data-line-number="462" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">462</div><div data-line-number="463" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">463</div><div data-line-number="464" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">464</div><div data-line-number="465" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">465</div><div data-line-number="466" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">466</div><div data-line-number="467" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">467</div><div data-line-number="468" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">468</div><div data-line-number="469" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">469</div><div data-line-number="470" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">470</div><div data-line-number="471" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">471</div><div data-line-number="472" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">472</div><div data-line-number="473" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">473</div><div data-line-number="474" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">474</div><div data-line-number="475" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">475</div><div data-line-number="476" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">476</div><div data-line-number="477" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">477</div><div data-line-number="478" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">478</div><div data-line-number="479" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">479</div><div data-line-number="480" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">480</div><div data-line-number="481" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">481</div><div data-line-number="482" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">482</div><div data-line-number="483" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">483</div><div data-line-number="484" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">484</div><div data-line-number="485" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">485</div><div data-line-number="486" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">486</div><div data-line-number="487" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">487</div><div data-line-number="488" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">488</div><div data-line-number="489" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">489</div><div data-line-number="490" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">490</div><div data-line-number="491" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">491</div><div data-line-number="492" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">492</div><div data-line-number="493" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">493</div><div data-line-number="494" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">494</div><div data-line-number="495" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">495</div><div data-line-number="496" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">496</div><div data-line-number="497" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">497</div><div data-line-number="498" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">498</div><div data-line-number="499" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">499</div><div data-line-number="500" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">500</div><div data-line-number="501" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">501</div><div data-line-number="502" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">502</div><div data-line-number="503" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">503</div><div data-line-number="504" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">504</div><div data-line-number="505" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">505</div><div data-line-number="506" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">506</div><div data-line-number="507" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">507</div><div data-line-number="508" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">508</div><div data-line-number="509" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">509</div><div data-line-number="510" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">510</div><div data-line-number="511" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">511</div><div data-line-number="512" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">512</div><div data-line-number="513" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">513</div><div data-line-number="514" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">514</div><div data-line-number="515" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">515</div><div data-line-number="516" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">516</div><div data-line-number="517" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">517</div><div data-line-number="518" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">518</div><div data-line-number="519" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">519</div><div data-line-number="520" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">520</div><div data-line-number="521" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">521</div><div data-line-number="522" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">522</div><div data-line-number="523" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">523</div><div data-line-number="524" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">524</div><div data-line-number="525" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">525</div><div data-line-number="526" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">526</div><div data-line-number="527" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">527</div><div data-line-number="528" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">528</div><div data-line-number="529" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">529</div><div data-line-number="530" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">530</div><div data-line-number="531" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">531</div><div data-line-number="532" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">532</div><div data-line-number="533" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">533</div><div data-line-number="534" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">534</div><div data-line-number="535" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">535</div><div data-line-number="536" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">536</div><div data-line-number="537" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">537</div><div data-line-number="538" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">538</div><div data-line-number="539" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">539</div><div data-line-number="540" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">540</div><div data-line-number="541" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">541</div><div data-line-number="542" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">542</div><div data-line-number="543" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">543</div><div data-line-number="544" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">544</div><div data-line-number="545" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">545</div><div data-line-number="546" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">546</div><div data-line-number="547" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">547</div><div data-line-number="548" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">548</div><div data-line-number="549" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">549</div><div data-line-number="550" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">550</div><div data-line-number="551" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">551</div><div data-line-number="552" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">552</div><div data-line-number="553" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">553</div><div data-line-number="554" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">554</div><div data-line-number="555" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">555</div><div data-line-number="556" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">556</div><div data-line-number="557" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">557</div><div data-line-number="558" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">558</div><div data-line-number="559" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">559</div><div data-line-number="560" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">560</div><div data-line-number="561" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">561</div><div data-line-number="562" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">562</div><div data-line-number="563" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">563</div><div data-line-number="564" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">564</div><div data-line-number="565" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">565</div><div data-line-number="566" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">566</div><div data-line-number="567" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">567</div><div data-line-number="568" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">568</div><div data-line-number="569" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">569</div><div data-line-number="570" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">570</div><div data-line-number="571" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">571</div><div data-line-number="572" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">572</div><div data-line-number="573" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">573</div><div data-line-number="574" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">574</div><div data-line-number="575" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">575</div><div data-line-number="576" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">576</div><div data-line-number="577" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">577</div><div data-line-number="578" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">578</div><div data-line-number="579" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">579</div><div data-line-number="580" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">580</div><div data-line-number="581" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">581</div><div data-line-number="582" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">582</div><div data-line-number="583" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">583</div><div data-line-number="584" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">584</div><div data-line-number="585" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">585</div><div data-line-number="586" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">586</div><div data-line-number="587" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">587</div><div data-line-number="588" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">588</div><div data-line-number="589" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">589</div><div data-line-number="590" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">590</div><div data-line-number="591" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">591</div><div data-line-number="592" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">592</div><div data-line-number="593" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">593</div><div data-line-number="594" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">594</div><div data-line-number="595" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">595</div><div data-line-number="596" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">596</div><div data-line-number="597" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">597</div><div data-line-number="598" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">598</div><div data-line-number="599" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">599</div><div data-line-number="600" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">600</div><div data-line-number="601" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">601</div><div data-line-number="602" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">602</div><div data-line-number="603" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">603</div><div data-line-number="604" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">604</div><div data-line-number="605" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">605</div><div data-line-number="606" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">606</div><div data-line-number="607" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">607</div><div data-line-number="608" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">608</div><div data-line-number="609" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">609</div><div data-line-number="610" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">610</div><div data-line-number="611" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">611</div><div data-line-number="612" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">612</div><div data-line-number="613" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">613</div><div data-line-number="614" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">614</div><div data-line-number="615" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">615</div><div data-line-number="616" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">616</div><div data-line-number="617" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">617</div><div data-line-number="618" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">618</div><div data-line-number="619" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">619</div><div data-line-number="620" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">620</div><div data-line-number="621" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">621</div><div data-line-number="622" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">622</div><div data-line-number="623" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">623</div><div data-line-number="624" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">624</div><div data-line-number="625" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">625</div><div data-line-number="626" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">626</div><div data-line-number="627" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">627</div><div data-line-number="628" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">628</div><div data-line-number="629" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">629</div><div data-line-number="630" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">630</div><div data-line-number="631" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">631</div><div data-line-number="632" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">632</div><div data-line-number="633" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">633</div><div data-line-number="634" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">634</div><div data-line-number="635" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">635</div><div data-line-number="636" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">636</div><div data-line-number="637" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">637</div><div data-line-number="638" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">638</div><div data-line-number="639" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">639</div><div data-line-number="640" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">640</div><div data-line-number="641" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">641</div><div data-line-number="642" class="child-of-line-316 react-line-number react-code-text" style="padding-right:16px">642</div><div data-line-number="643" class="react-line-number react-code-text" style="padding-right:16px">643</div><div data-line-number="644" class="react-line-number react-code-text" style="padding-right:16px">644</div><div data-line-number="645" class="react-line-number react-code-text" style="padding-right:16px">645</div><div data-line-number="646" class="react-line-number react-code-text" style="padding-right:16px">646</div><div data-line-number="647" class="react-line-number react-code-text" style="padding-right:16px">647</div><div data-line-number="648" class="react-line-number react-code-text" style="padding-right:16px">648</div><div data-line-number="649" class="react-line-number react-code-text" style="padding-right:16px">649</div><div data-line-number="650" class="react-line-number react-code-text" style="padding-right:16px">650</div><div data-line-number="651" class="react-line-number react-code-text" style="padding-right:16px">651</div><div data-line-number="652" class="react-line-number react-code-text" style="padding-right:16px">652</div><div data-line-number="653" class="react-line-number react-code-text" style="padding-right:16px">653</div><div data-line-number="654" class="react-line-number react-code-text" style="padding-right:16px">654<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="655" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">655</div><div data-line-number="656" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">656</div><div data-line-number="657" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">657</div><div data-line-number="658" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">658</div><div data-line-number="659" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">659</div><div data-line-number="660" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">660</div><div data-line-number="661" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">661</div><div data-line-number="662" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">662</div><div data-line-number="663" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">663</div><div data-line-number="664" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">664</div><div data-line-number="665" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">665</div><div data-line-number="666" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">666</div><div data-line-number="667" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">667</div><div data-line-number="668" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">668</div><div data-line-number="669" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">669</div><div data-line-number="670" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">670</div><div data-line-number="671" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">671</div><div data-line-number="672" class="child-of-line-653 react-line-number react-code-text" style="padding-right:16px">672</div><div data-line-number="673" class="react-line-number react-code-text" style="padding-right:16px">673</div><div data-line-number="674" class="react-line-number react-code-text" style="padding-right:16px">674</div><div data-line-number="675" class="react-line-number react-code-text" style="padding-right:16px">675</div><div data-line-number="676" class="react-line-number react-code-text" style="padding-right:16px">676<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="677" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">677</div><div data-line-number="678" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">678</div><div data-line-number="679" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">679</div><div data-line-number="680" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">680</div><div data-line-number="681" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">681</div><div data-line-number="682" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">682</div><div data-line-number="683" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">683</div><div data-line-number="684" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">684</div><div data-line-number="685" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">685</div><div data-line-number="686" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">686</div><div data-line-number="687" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">687</div><div data-line-number="688" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">688</div><div data-line-number="689" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">689</div><div data-line-number="690" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">690</div><div data-line-number="691" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">691</div><div data-line-number="692" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">692</div><div data-line-number="693" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">693</div><div data-line-number="694" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">694</div><div data-line-number="695" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">695</div><div data-line-number="696" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">696</div><div data-line-number="697" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">697</div><div data-line-number="698" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">698</div><div data-line-number="699" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">699</div><div data-line-number="700" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">700</div><div data-line-number="701" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">701</div><div data-line-number="702" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">702</div><div data-line-number="703" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">703</div><div data-line-number="704" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">704</div><div data-line-number="705" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">705</div><div data-line-number="706" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">706</div><div data-line-number="707" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">707</div><div data-line-number="708" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">708</div><div data-line-number="709" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">709</div><div data-line-number="710" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">710</div><div data-line-number="711" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">711</div><div data-line-number="712" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">712</div><div data-line-number="713" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">713</div><div data-line-number="714" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">714</div><div data-line-number="715" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">715</div><div data-line-number="716" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">716</div><div data-line-number="717" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">717</div><div data-line-number="718" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">718</div><div data-line-number="719" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">719</div><div data-line-number="720" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">720</div><div data-line-number="721" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">721</div><div data-line-number="722" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">722</div><div data-line-number="723" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">723</div><div data-line-number="724" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">724</div><div data-line-number="725" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">725</div><div data-line-number="726" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">726</div><div data-line-number="727" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">727</div><div data-line-number="728" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">728</div><div data-line-number="729" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">729</div><div data-line-number="730" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">730</div><div data-line-number="731" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">731</div><div data-line-number="732" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">732</div><div data-line-number="733" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">733</div><div data-line-number="734" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">734</div><div data-line-number="735" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">735</div><div data-line-number="736" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">736</div><div data-line-number="737" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">737</div><div data-line-number="738" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">738</div><div data-line-number="739" class="child-of-line-675 react-line-number react-code-text" style="padding-right:16px">739</div><div data-line-number="740" class="react-line-number react-code-text" style="padding-right:16px">740</div><div data-line-number="741" class="react-line-number react-code-text" style="padding-right:16px">741</div><div data-line-number="742" class="react-line-number react-code-text" style="padding-right:16px">742</div><div data-line-number="743" class="react-line-number react-code-text" style="padding-right:16px">743<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="744" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">744</div><div data-line-number="745" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">745</div><div data-line-number="746" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">746</div><div data-line-number="747" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">747</div><div data-line-number="748" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">748</div><div data-line-number="749" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">749</div><div data-line-number="750" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">750</div><div data-line-number="751" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">751</div><div data-line-number="752" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">752</div><div data-line-number="753" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">753</div><div data-line-number="754" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">754</div><div data-line-number="755" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">755</div><div data-line-number="756" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">756</div><div data-line-number="757" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">757</div><div data-line-number="758" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">758</div><div data-line-number="759" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">759</div><div data-line-number="760" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">760</div><div data-line-number="761" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">761</div><div data-line-number="762" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">762</div><div data-line-number="763" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">763</div><div data-line-number="764" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">764</div><div data-line-number="765" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">765</div><div data-line-number="766" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">766</div><div data-line-number="767" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">767</div><div data-line-number="768" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">768</div><div data-line-number="769" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">769</div><div data-line-number="770" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">770</div><div data-line-number="771" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">771</div><div data-line-number="772" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">772</div><div data-line-number="773" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">773</div><div data-line-number="774" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">774</div><div data-line-number="775" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">775</div><div data-line-number="776" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">776</div><div data-line-number="777" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">777</div><div data-line-number="778" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">778</div><div data-line-number="779" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">779</div><div data-line-number="780" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">780</div><div data-line-number="781" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">781</div><div data-line-number="782" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">782</div><div data-line-number="783" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">783</div><div data-line-number="784" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">784</div><div data-line-number="785" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">785</div><div data-line-number="786" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">786</div><div data-line-number="787" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">787</div><div data-line-number="788" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">788</div><div data-line-number="789" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">789</div><div data-line-number="790" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">790</div><div data-line-number="791" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">791</div><div data-line-number="792" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">792</div><div data-line-number="793" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">793</div><div data-line-number="794" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">794</div><div data-line-number="795" class="child-of-line-742 react-line-number react-code-text" style="padding-right:16px">795</div><div data-line-number="796" class="react-line-number react-code-text" style="padding-right:16px">796</div><div data-line-number="797" class="react-line-number react-code-text" style="padding-right:16px">797</div><div data-line-number="798" class="react-line-number react-code-text" style="padding-right:16px">798</div><div data-line-number="799" class="react-line-number react-code-text" style="padding-right:16px">799</div><div data-line-number="800" class="react-line-number react-code-text" style="padding-right:16px">800</div><div data-line-number="801" class="react-line-number react-code-text" style="padding-right:16px">801</div><div data-line-number="802" class="react-line-number react-code-text" style="padding-right:16px">802<span class="Box-sc-g0xbh4-0 cJGaMs"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 iGLarr"><svg aria-hidden="true" focusable="false" class="octicon octicon-chevron-down Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></div></span></div><div data-line-number="803" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">803</div><div data-line-number="804" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">804</div><div data-line-number="805" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">805</div><div data-line-number="806" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">806</div><div data-line-number="807" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">807</div><div data-line-number="808" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">808</div><div data-line-number="809" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">809</div><div data-line-number="810" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">810</div><div data-line-number="811" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">811</div><div data-line-number="812" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">812</div><div data-line-number="813" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">813</div><div data-line-number="814" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">814</div><div data-line-number="815" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">815</div><div data-line-number="816" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">816</div><div data-line-number="817" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">817</div><div data-line-number="818" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">818</div><div data-line-number="819" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">819</div><div data-line-number="820" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">820</div><div data-line-number="821" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">821</div><div data-line-number="822" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">822</div><div data-line-number="823" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">823</div><div data-line-number="824" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">824</div><div data-line-number="825" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">825</div><div data-line-number="826" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">826</div><div data-line-number="827" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">827</div><div data-line-number="828" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">828</div><div data-line-number="829" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">829</div><div data-line-number="830" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">830</div><div data-line-number="831" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">831</div><div data-line-number="832" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">832</div><div data-line-number="833" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">833</div><div data-line-number="834" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">834</div><div data-line-number="835" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">835</div><div data-line-number="836" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">836</div><div data-line-number="837" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">837</div><div data-line-number="838" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">838</div><div data-line-number="839" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">839</div><div data-line-number="840" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">840</div><div data-line-number="841" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">841</div><div data-line-number="842" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">842</div><div data-line-number="843" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">843</div><div data-line-number="844" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">844</div><div data-line-number="845" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">845</div><div data-line-number="846" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">846</div><div data-line-number="847" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">847</div><div data-line-number="848" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">848</div><div data-line-number="849" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">849</div><div data-line-number="850" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">850</div><div data-line-number="851" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">851</div><div data-line-number="852" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">852</div><div data-line-number="853" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">853</div><div data-line-number="854" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">854</div><div data-line-number="855" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">855</div><div data-line-number="856" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">856</div><div data-line-number="857" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">857</div><div data-line-number="858" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">858</div><div data-line-number="859" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">859</div><div data-line-number="860" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">860</div><div data-line-number="861" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">861</div><div data-line-number="862" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">862</div><div data-line-number="863" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">863</div><div data-line-number="864" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">864</div><div data-line-number="865" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">865</div><div data-line-number="866" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">866</div><div data-line-number="867" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">867</div><div data-line-number="868" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">868</div><div data-line-number="869" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">869</div><div data-line-number="870" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">870</div><div data-line-number="871" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">871</div><div data-line-number="872" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">872</div><div data-line-number="873" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">873</div><div data-line-number="874" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">874</div><div data-line-number="875" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">875</div><div data-line-number="876" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">876</div><div data-line-number="877" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">877</div><div data-line-number="878" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">878</div><div data-line-number="879" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">879</div><div data-line-number="880" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">880</div><div data-line-number="881" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">881</div><div data-line-number="882" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">882</div><div data-line-number="883" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">883</div><div data-line-number="884" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">884</div><div data-line-number="885" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">885</div><div data-line-number="886" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">886</div><div data-line-number="887" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">887</div><div data-line-number="888" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">888</div><div data-line-number="889" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">889</div><div data-line-number="890" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">890</div><div data-line-number="891" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">891</div><div data-line-number="892" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">892</div><div data-line-number="893" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">893</div><div data-line-number="894" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">894</div><div data-line-number="895" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">895</div><div data-line-number="896" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">896</div><div data-line-number="897" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">897</div><div data-line-number="898" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">898</div><div data-line-number="899" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">899</div><div data-line-number="900" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">900</div><div data-line-number="901" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">901</div><div data-line-number="902" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">902</div><div data-line-number="903" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">903</div><div data-line-number="904" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">904</div><div data-line-number="905" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">905</div><div data-line-number="906" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">906</div><div data-line-number="907" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">907</div><div data-line-number="908" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">908</div><div data-line-number="909" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">909</div><div data-line-number="910" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">910</div><div data-line-number="911" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">911</div><div data-line-number="912" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">912</div><div data-line-number="913" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">913</div><div data-line-number="914" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">914</div><div data-line-number="915" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">915</div><div data-line-number="916" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">916</div><div data-line-number="917" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">917</div><div data-line-number="918" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">918</div><div data-line-number="919" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">919</div><div data-line-number="920" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">920</div><div data-line-number="921" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">921</div><div data-line-number="922" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">922</div><div data-line-number="923" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">923</div><div data-line-number="924" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">924</div><div data-line-number="925" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">925</div><div data-line-number="926" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">926</div><div data-line-number="927" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">927</div><div data-line-number="928" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">928</div><div data-line-number="929" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">929</div><div data-line-number="930" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">930</div><div data-line-number="931" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">931</div><div data-line-number="932" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">932</div><div data-line-number="933" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">933</div><div data-line-number="934" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">934</div><div data-line-number="935" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">935</div><div data-line-number="936" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">936</div><div data-line-number="937" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">937</div><div data-line-number="938" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">938</div><div data-line-number="939" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">939</div><div data-line-number="940" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">940</div><div data-line-number="941" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">941</div><div data-line-number="942" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">942</div><div data-line-number="943" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">943</div><div data-line-number="944" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">944</div><div data-line-number="945" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">945</div><div data-line-number="946" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">946</div><div data-line-number="947" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">947</div><div data-line-number="948" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">948</div><div data-line-number="949" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">949</div><div data-line-number="950" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">950</div><div data-line-number="951" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">951</div><div data-line-number="952" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">952</div><div data-line-number="953" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">953</div><div data-line-number="954" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">954</div><div data-line-number="955" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">955</div><div data-line-number="956" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">956</div><div data-line-number="957" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">957</div><div data-line-number="958" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">958</div><div data-line-number="959" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">959</div><div data-line-number="960" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">960</div><div data-line-number="961" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">961</div><div data-line-number="962" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">962</div><div data-line-number="963" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">963</div><div data-line-number="964" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">964</div><div data-line-number="965" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">965</div><div data-line-number="966" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">966</div><div data-line-number="967" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">967</div><div data-line-number="968" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">968</div><div data-line-number="969" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">969</div><div data-line-number="970" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">970</div><div data-line-number="971" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">971</div><div data-line-number="972" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">972</div><div data-line-number="973" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">973</div><div data-line-number="974" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">974</div><div data-line-number="975" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">975</div><div data-line-number="976" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">976</div><div data-line-number="977" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">977</div><div data-line-number="978" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">978</div><div data-line-number="979" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">979</div><div data-line-number="980" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">980</div><div data-line-number="981" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">981</div><div data-line-number="982" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">982</div><div data-line-number="983" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">983</div><div data-line-number="984" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">984</div><div data-line-number="985" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">985</div><div data-line-number="986" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">986</div><div data-line-number="987" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">987</div><div data-line-number="988" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">988</div><div data-line-number="989" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">989</div><div data-line-number="990" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">990</div><div data-line-number="991" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">991</div><div data-line-number="992" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">992</div><div data-line-number="993" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">993</div><div data-line-number="994" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">994</div><div data-line-number="995" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">995</div><div data-line-number="996" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">996</div><div data-line-number="997" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">997</div><div data-line-number="998" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">998</div><div data-line-number="999" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">999</div><div data-line-number="1000" class="child-of-line-801 react-line-number react-code-text" style="padding-right:16px">1000</div></div><div class="react-code-lines"><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC1" class="react-file-line html-div" data-testid="code-cell" data-line-number="1" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> dear imgui, v1.92.0 WIP</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC2" class="react-file-line html-div" data-testid="code-cell" data-line-number="2" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> (tables and columns code)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC3" class="react-file-line html-div" data-testid="code-cell" data-line-number="3" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC4" class="react-file-line html-div" data-testid="code-cell" data-line-number="4" style="position:relative"><span class="pl-c"><span class="pl-c">/*</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC5" class="react-file-line html-div" data-testid="code-cell" data-line-number="5" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC6" class="react-file-line html-div" data-testid="code-cell" data-line-number="6" style="position:relative"><span class="pl-c">Index of this file:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC7" class="react-file-line html-div" data-testid="code-cell" data-line-number="7" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC8" class="react-file-line html-div" data-testid="code-cell" data-line-number="8" style="position:relative"><span class="pl-c">// [SECTION] Commentary</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC9" class="react-file-line html-div" data-testid="code-cell" data-line-number="9" style="position:relative"><span class="pl-c">// [SECTION] Header mess</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC10" class="react-file-line html-div" data-testid="code-cell" data-line-number="10" style="position:relative"><span class="pl-c">// [SECTION] Tables: Main code</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC11" class="react-file-line html-div" data-testid="code-cell" data-line-number="11" style="position:relative"><span class="pl-c">// [SECTION] Tables: Simple accessors</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC12" class="react-file-line html-div" data-testid="code-cell" data-line-number="12" style="position:relative"><span class="pl-c">// [SECTION] Tables: Row changes</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC13" class="react-file-line html-div" data-testid="code-cell" data-line-number="13" style="position:relative"><span class="pl-c">// [SECTION] Tables: Columns changes</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC14" class="react-file-line html-div" data-testid="code-cell" data-line-number="14" style="position:relative"><span class="pl-c">// [SECTION] Tables: Columns width management</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC15" class="react-file-line html-div" data-testid="code-cell" data-line-number="15" style="position:relative"><span class="pl-c">// [SECTION] Tables: Drawing</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC16" class="react-file-line html-div" data-testid="code-cell" data-line-number="16" style="position:relative"><span class="pl-c">// [SECTION] Tables: Sorting</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC17" class="react-file-line html-div" data-testid="code-cell" data-line-number="17" style="position:relative"><span class="pl-c">// [SECTION] Tables: Headers</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC18" class="react-file-line html-div" data-testid="code-cell" data-line-number="18" style="position:relative"><span class="pl-c">// [SECTION] Tables: Context Menu</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC19" class="react-file-line html-div" data-testid="code-cell" data-line-number="19" style="position:relative"><span class="pl-c">// [SECTION] Tables: Settings (.ini data)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC20" class="react-file-line html-div" data-testid="code-cell" data-line-number="20" style="position:relative"><span class="pl-c">// [SECTION] Tables: Garbage Collection</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC21" class="react-file-line html-div" data-testid="code-cell" data-line-number="21" style="position:relative"><span class="pl-c">// [SECTION] Tables: Debugging</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC22" class="react-file-line html-div" data-testid="code-cell" data-line-number="22" style="position:relative"><span class="pl-c">// [SECTION] Columns, BeginColumns, EndColumns, etc.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC23" class="react-file-line html-div" data-testid="code-cell" data-line-number="23" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC24" class="react-file-line html-div" data-testid="code-cell" data-line-number="24" style="position:relative"><span class="pl-c"><span class="pl-c">*/</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC25" class="react-file-line html-div" data-testid="code-cell" data-line-number="25" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC26" class="react-file-line html-div" data-testid="code-cell" data-line-number="26" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Navigating this file:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC27" class="react-file-line html-div" data-testid="code-cell" data-line-number="27" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - In Visual Studio: CTRL+comma ("Edit.GoToAll") can follow symbols inside comments, whereas CTRL+F12 ("Edit.GoToImplementation") cannot.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC28" class="react-file-line html-div" data-testid="code-cell" data-line-number="28" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - In Visual Studio w/ Visual Assist installed: ALT+G ("VAssistX.GoToImplementation") can also follow symbols inside comments.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC29" class="react-file-line html-div" data-testid="code-cell" data-line-number="29" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - In VS Code, CLion, etc.: CTRL+click can follow symbols inside comments.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC30" class="react-file-line html-div" data-testid="code-cell" data-line-number="30" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC31" class="react-file-line html-div" data-testid="code-cell" data-line-number="31" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC32" class="react-file-line html-div" data-testid="code-cell" data-line-number="32" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> [SECTION] Commentary</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC33" class="react-file-line html-div" data-testid="code-cell" data-line-number="33" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC34" class="react-file-line html-div" data-testid="code-cell" data-line-number="34" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC35" class="react-file-line html-div" data-testid="code-cell" data-line-number="35" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC36" class="react-file-line html-div" data-testid="code-cell" data-line-number="36" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Typical tables call flow: (root level is generally public API):</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC37" class="react-file-line html-div" data-testid="code-cell" data-line-number="37" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC38" class="react-file-line html-div" data-testid="code-cell" data-line-number="38" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - BeginTable() user begin into a table</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC39" class="react-file-line html-div" data-testid="code-cell" data-line-number="39" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | BeginChild() - (if ScrollX/ScrollY is set)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC40" class="react-file-line html-div" data-testid="code-cell" data-line-number="40" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableBeginInitMemory() - first time table is used</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC41" class="react-file-line html-div" data-testid="code-cell" data-line-number="41" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableResetSettings() - on settings reset</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC42" class="react-file-line html-div" data-testid="code-cell" data-line-number="42" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableLoadSettings() - on settings load</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC43" class="react-file-line html-div" data-testid="code-cell" data-line-number="43" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableBeginApplyRequests() - apply queued resizing/reordering/hiding requests</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC44" class="react-file-line html-div" data-testid="code-cell" data-line-number="44" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | - TableSetColumnWidth() - apply resizing width (for mouse resize, often requested by previous frame)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC45" class="react-file-line html-div" data-testid="code-cell" data-line-number="45" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | - TableUpdateColumnsWeightFromWidth()- recompute columns weights (of stretch columns) from their respective width</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC46" class="react-file-line html-div" data-testid="code-cell" data-line-number="46" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetupColumn() user submit columns details (optional)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC47" class="react-file-line html-div" data-testid="code-cell" data-line-number="47" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetupScrollFreeze() user submit scroll freeze information (optional)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC48" class="react-file-line html-div" data-testid="code-cell" data-line-number="48" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC49" class="react-file-line html-div" data-testid="code-cell" data-line-number="49" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableUpdateLayout() [Internal] followup to BeginTable(): setup everything: widths, columns positions, clipping rectangles. Automatically called by the FIRST call to TableNextRow() or TableHeadersRow().</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC50" class="react-file-line html-div" data-testid="code-cell" data-line-number="50" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableSetupDrawChannels() - setup ImDrawList channels</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC51" class="react-file-line html-div" data-testid="code-cell" data-line-number="51" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableUpdateBorders() - detect hovering columns for resize, ahead of contents submission</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC52" class="react-file-line html-div" data-testid="code-cell" data-line-number="52" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableBeginContextMenuPopup()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC53" class="react-file-line html-div" data-testid="code-cell" data-line-number="53" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | - TableDrawDefaultContextMenu() - draw right-click context menu contents</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC54" class="react-file-line html-div" data-testid="code-cell" data-line-number="54" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC55" class="react-file-line html-div" data-testid="code-cell" data-line-number="55" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableHeadersRow() or TableHeader() user submit a headers row (optional)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC56" class="react-file-line html-div" data-testid="code-cell" data-line-number="56" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableSortSpecsClickColumn() - when left-clicked: alter sort order and sort direction</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC57" class="react-file-line html-div" data-testid="code-cell" data-line-number="57" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableOpenContextMenu() - when right-clicked: trigger opening of the default context menu</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC58" class="react-file-line html-div" data-testid="code-cell" data-line-number="58" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableGetSortSpecs() user queries updated sort specs (optional, generally after submitting headers)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC59" class="react-file-line html-div" data-testid="code-cell" data-line-number="59" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableNextRow() user begin into a new row (also automatically called by TableHeadersRow())</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC60" class="react-file-line html-div" data-testid="code-cell" data-line-number="60" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableEndRow() - finish existing row</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC61" class="react-file-line html-div" data-testid="code-cell" data-line-number="61" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableBeginRow() - add a new row</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC62" class="react-file-line html-div" data-testid="code-cell" data-line-number="62" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetColumnIndex() / TableNextColumn() user begin into a cell</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC63" class="react-file-line html-div" data-testid="code-cell" data-line-number="63" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableEndCell() - close existing column/cell</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC64" class="react-file-line html-div" data-testid="code-cell" data-line-number="64" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableBeginCell() - enter into current column/cell</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC65" class="react-file-line html-div" data-testid="code-cell" data-line-number="65" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - [...] user emit contents</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC66" class="react-file-line html-div" data-testid="code-cell" data-line-number="66" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC67" class="react-file-line html-div" data-testid="code-cell" data-line-number="67" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - EndTable() user ends the table</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC68" class="react-file-line html-div" data-testid="code-cell" data-line-number="68" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableDrawBorders() - draw outer borders, inner vertical borders</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC69" class="react-file-line html-div" data-testid="code-cell" data-line-number="69" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | TableMergeDrawChannels() - merge draw channels if clipping isn't required</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC70" class="react-file-line html-div" data-testid="code-cell" data-line-number="70" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> | EndChild() - (if ScrollX/ScrollY is set)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC71" class="react-file-line html-div" data-testid="code-cell" data-line-number="71" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC72" class="react-file-line html-div" data-testid="code-cell" data-line-number="72" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC73" class="react-file-line html-div" data-testid="code-cell" data-line-number="73" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC74" class="react-file-line html-div" data-testid="code-cell" data-line-number="74" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> TABLE SIZING</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC75" class="react-file-line html-div" data-testid="code-cell" data-line-number="75" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC76" class="react-file-line html-div" data-testid="code-cell" data-line-number="76" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> (Read carefully because this is subtle but it does make sense!)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC77" class="react-file-line html-div" data-testid="code-cell" data-line-number="77" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC78" class="react-file-line html-div" data-testid="code-cell" data-line-number="78" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About 'outer_size':</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC79" class="react-file-line html-div" data-testid="code-cell" data-line-number="79" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Its meaning needs to differ slightly depending on if we are using ScrollX/ScrollY flags.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC80" class="react-file-line html-div" data-testid="code-cell" data-line-number="80" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Default value is ImVec2(0.0f, 0.0f).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC81" class="react-file-line html-div" data-testid="code-cell" data-line-number="81" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> X</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC82" class="react-file-line html-div" data-testid="code-cell" data-line-number="82" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.x <= 0.0f -> Right-align from window/work-rect right-most edge. With -FLT_MIN or 0.0f will align exactly on right-most edge.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC83" class="react-file-line html-div" data-testid="code-cell" data-line-number="83" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.x > 0.0f -> Set Fixed width.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC84" class="react-file-line html-div" data-testid="code-cell" data-line-number="84" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Y with ScrollX/ScrollY disabled: we output table directly in current window</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC85" class="react-file-line html-div" data-testid="code-cell" data-line-number="85" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y < 0.0f -> Bottom-align (but will auto extend, unless _NoHostExtendY is set). Not meaningful if parent window can vertically scroll.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC86" class="react-file-line html-div" data-testid="code-cell" data-line-number="86" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y = 0.0f -> No minimum height (but will auto extend, unless _NoHostExtendY is set)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC87" class="react-file-line html-div" data-testid="code-cell" data-line-number="87" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y > 0.0f -> Set Minimum height (but will auto extend, unless _NoHostExtendY is set)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC88" class="react-file-line html-div" data-testid="code-cell" data-line-number="88" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Y with ScrollX/ScrollY enabled: using a child window for scrolling</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC89" class="react-file-line html-div" data-testid="code-cell" data-line-number="89" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y < 0.0f -> Bottom-align. Not meaningful if parent window can vertically scroll.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC90" class="react-file-line html-div" data-testid="code-cell" data-line-number="90" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y = 0.0f -> Bottom-align, consistent with BeginChild(). Not recommended unless table is last item in parent window.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC91" class="react-file-line html-div" data-testid="code-cell" data-line-number="91" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - outer_size.y > 0.0f -> Set Exact height. Recommended when using Scrolling on any axis.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC92" class="react-file-line html-div" data-testid="code-cell" data-line-number="92" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC93" class="react-file-line html-div" data-testid="code-cell" data-line-number="93" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Outer size is also affected by the NoHostExtendX/NoHostExtendY flags.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC94" class="react-file-line html-div" data-testid="code-cell" data-line-number="94" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Important to note how the two flags have slightly different behaviors!</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC95" class="react-file-line html-div" data-testid="code-cell" data-line-number="95" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - ImGuiTableFlags_NoHostExtendX -> Make outer width auto-fit to columns (overriding outer_size.x value). Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC96" class="react-file-line html-div" data-testid="code-cell" data-line-number="96" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - ImGuiTableFlags_NoHostExtendY -> Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY is disabled. Data below the limit will be clipped and not visible.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC97" class="react-file-line html-div" data-testid="code-cell" data-line-number="97" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> In theory ImGuiTableFlags_NoHostExtendY could be the default and any non-scrolling tables with outer_size.y != 0.0f would use exact height.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC98" class="react-file-line html-div" data-testid="code-cell" data-line-number="98" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> This would be consistent but perhaps less useful and more confusing (as vertically clipped items are not useful and not easily noticeable).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC99" class="react-file-line html-div" data-testid="code-cell" data-line-number="99" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC100" class="react-file-line html-div" data-testid="code-cell" data-line-number="100" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About 'inner_width':</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC101" class="react-file-line html-div" data-testid="code-cell" data-line-number="101" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> With ScrollX disabled:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC102" class="react-file-line html-div" data-testid="code-cell" data-line-number="102" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - inner_width -> *ignored*</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC103" class="react-file-line html-div" data-testid="code-cell" data-line-number="103" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> With ScrollX enabled:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC104" class="react-file-line html-div" data-testid="code-cell" data-line-number="104" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - inner_width < 0.0f -> *illegal* fit in known width (right align from outer_size.x) <-- weird</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC105" class="react-file-line html-div" data-testid="code-cell" data-line-number="105" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - inner_width = 0.0f -> fit in outer_width: Fixed size columns will take space they need (if avail, otherwise shrink down), Stretch columns becomes Fixed columns.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC106" class="react-file-line html-div" data-testid="code-cell" data-line-number="106" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - inner_width > 0.0f -> override scrolling width, generally to be larger than outer_size.x. Fixed column take space they need (if avail, otherwise shrink down), Stretch columns share remaining space!</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC107" class="react-file-line html-div" data-testid="code-cell" data-line-number="107" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC108" class="react-file-line html-div" data-testid="code-cell" data-line-number="108" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Details:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC109" class="react-file-line html-div" data-testid="code-cell" data-line-number="109" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - If you want to use Stretch columns with ScrollX, you generally need to specify 'inner_width' otherwise the concept</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC110" class="react-file-line html-div" data-testid="code-cell" data-line-number="110" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> of "available space" doesn't make sense.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC111" class="react-file-line html-div" data-testid="code-cell" data-line-number="111" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Even if not really useful, we allow 'inner_width < outer_size.x' for consistency and to facilitate understanding</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC112" class="react-file-line html-div" data-testid="code-cell" data-line-number="112" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> of what the value does.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC113" class="react-file-line html-div" data-testid="code-cell" data-line-number="113" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC114" class="react-file-line html-div" data-testid="code-cell" data-line-number="114" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC115" class="react-file-line html-div" data-testid="code-cell" data-line-number="115" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC116" class="react-file-line html-div" data-testid="code-cell" data-line-number="116" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> COLUMNS SIZING POLICIES</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC117" class="react-file-line html-div" data-testid="code-cell" data-line-number="117" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> (Reference: ImGuiTableFlags_SizingXXX flags and ImGuiTableColumnFlags_WidthXXX flags)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC118" class="react-file-line html-div" data-testid="code-cell" data-line-number="118" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC119" class="react-file-line html-div" data-testid="code-cell" data-line-number="119" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About overriding column sizing policy and width/weight with TableSetupColumn():</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC120" class="react-file-line html-div" data-testid="code-cell" data-line-number="120" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> We use a default parameter of -1 for 'init_width'/'init_weight'.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC121" class="react-file-line html-div" data-testid="code-cell" data-line-number="121" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with ImGuiTableColumnFlags_WidthFixed, init_width <= 0 (default) --> width is automatic</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC122" class="react-file-line html-div" data-testid="code-cell" data-line-number="122" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with ImGuiTableColumnFlags_WidthFixed, init_width > 0 (explicit) --> width is custom</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC123" class="react-file-line html-div" data-testid="code-cell" data-line-number="123" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with ImGuiTableColumnFlags_WidthStretch, init_weight <= 0 (default) --> weight is 1.0f</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC124" class="react-file-line html-div" data-testid="code-cell" data-line-number="124" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with ImGuiTableColumnFlags_WidthStretch, init_weight > 0 (explicit) --> weight is custom</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC125" class="react-file-line html-div" data-testid="code-cell" data-line-number="125" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Widths are specified _without_ CellPadding. If you specify a width of 100.0f, the column will be cover (100.0f + Padding * 2.0f)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC126" class="react-file-line html-div" data-testid="code-cell" data-line-number="126" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> and you can fit a 100.0f wide item in it without clipping and with padding honored.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC127" class="react-file-line html-div" data-testid="code-cell" data-line-number="127" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC128" class="react-file-line html-div" data-testid="code-cell" data-line-number="128" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About default sizing policy (if you don't specify a ImGuiTableColumnFlags_WidthXXXX flag)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC129" class="react-file-line html-div" data-testid="code-cell" data-line-number="129" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with Table policy ImGuiTableFlags_SizingFixedFit --> default Column policy is ImGuiTableColumnFlags_WidthFixed, default Width is equal to contents width</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC130" class="react-file-line html-div" data-testid="code-cell" data-line-number="130" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with Table policy ImGuiTableFlags_SizingFixedSame --> default Column policy is ImGuiTableColumnFlags_WidthFixed, default Width is max of all contents width</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC131" class="react-file-line html-div" data-testid="code-cell" data-line-number="131" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with Table policy ImGuiTableFlags_SizingStretchSame --> default Column policy is ImGuiTableColumnFlags_WidthStretch, default Weight is 1.0f</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC132" class="react-file-line html-div" data-testid="code-cell" data-line-number="132" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - with Table policy ImGuiTableFlags_SizingStretchWeight --> default Column policy is ImGuiTableColumnFlags_WidthStretch, default Weight is proportional to contents</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC133" class="react-file-line html-div" data-testid="code-cell" data-line-number="133" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Default Width and default Weight can be overridden when calling TableSetupColumn().</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC134" class="react-file-line html-div" data-testid="code-cell" data-line-number="134" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC135" class="react-file-line html-div" data-testid="code-cell" data-line-number="135" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About mixing Fixed/Auto and Stretch columns together:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC136" class="react-file-line html-div" data-testid="code-cell" data-line-number="136" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - the typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC137" class="react-file-line html-div" data-testid="code-cell" data-line-number="137" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - using mixed policies with ScrollX does not make much sense, as using Stretch columns with ScrollX does not make much sense in the first place!</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC138" class="react-file-line html-div" data-testid="code-cell" data-line-number="138" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> that is, unless 'inner_width' is passed to BeginTable() to explicitly provide a total width to layout columns in.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC139" class="react-file-line html-div" data-testid="code-cell" data-line-number="139" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - when using ImGuiTableFlags_SizingFixedSame with mixed columns, only the Fixed/Auto columns will match their widths to the width of the maximum contents.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC140" class="react-file-line html-div" data-testid="code-cell" data-line-number="140" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - when using ImGuiTableFlags_SizingStretchSame with mixed columns, only the Stretch columns will match their weights/widths.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC141" class="react-file-line html-div" data-testid="code-cell" data-line-number="141" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC142" class="react-file-line html-div" data-testid="code-cell" data-line-number="142" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About using column width:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC143" class="react-file-line html-div" data-testid="code-cell" data-line-number="143" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> If a column is manually resizable or has a width specified with TableSetupColumn():</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC144" class="react-file-line html-div" data-testid="code-cell" data-line-number="144" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - you may use GetContentRegionAvail().x to query the width available in a given column.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC145" class="react-file-line html-div" data-testid="code-cell" data-line-number="145" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - right-side alignment features such as SetNextItemWidth(-x) or PushItemWidth(-x) will rely on this width.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC146" class="react-file-line html-div" data-testid="code-cell" data-line-number="146" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> If the column is not resizable and has no width specified with TableSetupColumn():</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC147" class="react-file-line html-div" data-testid="code-cell" data-line-number="147" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - its width will be automatic and be set to the max of items submitted.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC148" class="react-file-line html-div" data-testid="code-cell" data-line-number="148" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - therefore you generally cannot have ALL items of the columns use e.g. SetNextItemWidth(-FLT_MIN).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC149" class="react-file-line html-div" data-testid="code-cell" data-line-number="149" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - but if the column has one or more items of known/fixed size, this will become the reference width used by SetNextItemWidth(-FLT_MIN).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC150" class="react-file-line html-div" data-testid="code-cell" data-line-number="150" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC151" class="react-file-line html-div" data-testid="code-cell" data-line-number="151" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC152" class="react-file-line html-div" data-testid="code-cell" data-line-number="152" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC153" class="react-file-line html-div" data-testid="code-cell" data-line-number="153" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC154" class="react-file-line html-div" data-testid="code-cell" data-line-number="154" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> TABLES CLIPPING/CULLING</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC155" class="react-file-line html-div" data-testid="code-cell" data-line-number="155" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC156" class="react-file-line html-div" data-testid="code-cell" data-line-number="156" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About clipping/culling of Rows in Tables:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC157" class="react-file-line html-div" data-testid="code-cell" data-line-number="157" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - For large numbers of rows, it is recommended you use ImGuiListClipper to submit only visible rows.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC158" class="react-file-line html-div" data-testid="code-cell" data-line-number="158" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> ImGuiListClipper is reliant on the fact that rows are of equal height.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC159" class="react-file-line html-div" data-testid="code-cell" data-line-number="159" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> See 'Demo->Tables->Vertical Scrolling' or 'Demo->Tables->Advanced' for a demo of using the clipper.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC160" class="react-file-line html-div" data-testid="code-cell" data-line-number="160" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Note that auto-resizing columns don't play well with using the clipper.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC161" class="react-file-line html-div" data-testid="code-cell" data-line-number="161" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> By default a table with _ScrollX but without _Resizable will have column auto-resize.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC162" class="react-file-line html-div" data-testid="code-cell" data-line-number="162" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> So, if you want to use the clipper, make sure to either enable _Resizable, either setup columns width explicitly with _WidthFixed.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC163" class="react-file-line html-div" data-testid="code-cell" data-line-number="163" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC164" class="react-file-line html-div" data-testid="code-cell" data-line-number="164" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About clipping/culling of Columns in Tables:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC165" class="react-file-line html-div" data-testid="code-cell" data-line-number="165" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Both TableSetColumnIndex() and TableNextColumn() return true when the column is visible or performing</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC166" class="react-file-line html-div" data-testid="code-cell" data-line-number="166" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> width measurements. Otherwise, you may skip submitting the contents of a cell/column, BUT ONLY if you know</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC167" class="react-file-line html-div" data-testid="code-cell" data-line-number="167" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> it is not going to contribute to row height.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC168" class="react-file-line html-div" data-testid="code-cell" data-line-number="168" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> In many situations, you may skip submitting contents for every column but one (e.g. the first one).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC169" class="react-file-line html-div" data-testid="code-cell" data-line-number="169" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Case A: column is not hidden by user, and at least partially in sight (most common case).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC170" class="react-file-line html-div" data-testid="code-cell" data-line-number="170" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Case B: column is clipped / out of sight (because of scrolling or parent ClipRect): TableNextColumn() return false as a hint but we still allow layout output.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC171" class="react-file-line html-div" data-testid="code-cell" data-line-number="171" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Case C: column is hidden explicitly by the user (e.g. via the context menu, or _DefaultHide column flag, etc.).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC172" class="react-file-line html-div" data-testid="code-cell" data-line-number="172" style="position:relative"><span class="pl-c"><span class="pl-c">//</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC173" class="react-file-line html-div" data-testid="code-cell" data-line-number="173" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> [A] [B] [C]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC174" class="react-file-line html-div" data-testid="code-cell" data-line-number="174" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> TableNextColumn(): true false false -> [userland] when TableNextColumn() / TableSetColumnIndex() returns false, user can skip submitting items but only if the column doesn't contribute to row height.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC175" class="react-file-line html-div" data-testid="code-cell" data-line-number="175" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> SkipItems: false false true -> [internal] when SkipItems is true, most widgets will early out if submitted, resulting is no layout output.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC176" class="react-file-line html-div" data-testid="code-cell" data-line-number="176" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> ClipRect: normal zero-width zero-width -> [internal] when ClipRect is zero, ItemAdd() will return false and most widgets will early out mid-way.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC177" class="react-file-line html-div" data-testid="code-cell" data-line-number="177" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> ImDrawList output: normal dummy dummy -> [internal] when using the dummy channel, ImDrawList submissions (if any) will be wasted (because cliprect is zero-width anyway).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC178" class="react-file-line html-div" data-testid="code-cell" data-line-number="178" style="position:relative"><span class="pl-c"><span class="pl-c">//</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC179" class="react-file-line html-div" data-testid="code-cell" data-line-number="179" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - We need to distinguish those cases because non-hidden columns that are clipped outside of scrolling bounds should still contribute their height to the row.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC180" class="react-file-line html-div" data-testid="code-cell" data-line-number="180" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> However, in the majority of cases, the contribution to row height is the same for all columns, or the tallest cells are known by the programmer.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC181" class="react-file-line html-div" data-testid="code-cell" data-line-number="181" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC182" class="react-file-line html-div" data-testid="code-cell" data-line-number="182" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> About clipping/culling of whole Tables:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC183" class="react-file-line html-div" data-testid="code-cell" data-line-number="183" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - Scrolling tables with a known outer size can be clipped earlier as BeginTable() will return false.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC184" class="react-file-line html-div" data-testid="code-cell" data-line-number="184" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC185" class="react-file-line html-div" data-testid="code-cell" data-line-number="185" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC186" class="react-file-line html-div" data-testid="code-cell" data-line-number="186" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC187" class="react-file-line html-div" data-testid="code-cell" data-line-number="187" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> [SECTION] Header mess</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC188" class="react-file-line html-div" data-testid="code-cell" data-line-number="188" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC189" class="react-file-line html-div" data-testid="code-cell" data-line-number="189" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC190" class="react-file-line html-div" data-testid="code-cell" data-line-number="190" style="position:relative">#<span class="pl-k">if</span> defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC191" class="react-file-line html-div" data-testid="code-cell" data-line-number="191" style="position:relative">#<span class="pl-k">define</span> <span class="pl-en">_CRT_SECURE_NO_WARNINGS</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC192" class="react-file-line html-div" data-testid="code-cell" data-line-number="192" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC193" class="react-file-line html-div" data-testid="code-cell" data-line-number="193" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC194" class="react-file-line html-div" data-testid="code-cell" data-line-number="194" style="position:relative">#<span class="pl-k">ifndef</span> IMGUI_DEFINE_MATH_OPERATORS</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC195" class="react-file-line html-div" data-testid="code-cell" data-line-number="195" style="position:relative">#<span class="pl-k">define</span> <span class="pl-en">IMGUI_DEFINE_MATH_OPERATORS</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC196" class="react-file-line html-div" data-testid="code-cell" data-line-number="196" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC197" class="react-file-line html-div" data-testid="code-cell" data-line-number="197" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC198" class="react-file-line html-div" data-testid="code-cell" data-line-number="198" style="position:relative">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>imgui.h<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC199" class="react-file-line html-div" data-testid="code-cell" data-line-number="199" style="position:relative">#<span class="pl-k">ifndef</span> IMGUI_DISABLE</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC200" class="react-file-line html-div" data-testid="code-cell" data-line-number="200" style="position:relative">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>imgui_internal.h<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC201" class="react-file-line html-div" data-testid="code-cell" data-line-number="201" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC202" class="react-file-line html-div" data-testid="code-cell" data-line-number="202" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> System includes</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC203" class="react-file-line html-div" data-testid="code-cell" data-line-number="203" style="position:relative">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>stdint.h<span class="pl-pds">></span></span> <span class="pl-c"><span class="pl-c">//</span> intptr_t</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC204" class="react-file-line html-div" data-testid="code-cell" data-line-number="204" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC205" class="react-file-line html-div" data-testid="code-cell" data-line-number="205" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Visual Studio warnings</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC206" class="react-file-line html-div" data-testid="code-cell" data-line-number="206" style="position:relative">#<span class="pl-k">ifdef</span> _MSC_VER</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC207" class="react-file-line html-div" data-testid="code-cell" data-line-number="207" style="position:relative">#<span class="pl-k">pragma</span> warning (disable: 4127) <span class="pl-c"><span class="pl-c">//</span> condition expression is constant</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC208" class="react-file-line html-div" data-testid="code-cell" data-line-number="208" style="position:relative">#<span class="pl-k">pragma</span> warning (disable: 4996) <span class="pl-c"><span class="pl-c">//</span> 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC209" class="react-file-line html-div" data-testid="code-cell" data-line-number="209" style="position:relative">#<span class="pl-k">if</span> defined(_MSC_VER) && _MSC_VER >= 1922 <span class="pl-c"><span class="pl-c">//</span> MSVC 2019 16.2 or later</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC210" class="react-file-line html-div" data-testid="code-cell" data-line-number="210" style="position:relative">#<span class="pl-k">pragma</span> warning (disable: 5054) <span class="pl-c"><span class="pl-c">//</span> operator '|': deprecated between enumerations of different types</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC211" class="react-file-line html-div" data-testid="code-cell" data-line-number="211" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC212" class="react-file-line html-div" data-testid="code-cell" data-line-number="212" style="position:relative">#<span class="pl-k">pragma</span> warning (disable: 26451) <span class="pl-c"><span class="pl-c">//</span> [Static Analyzer] Arithmetic overflow : Using operator 'xxx' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator 'xxx' to avoid overflow(io.2).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC213" class="react-file-line html-div" data-testid="code-cell" data-line-number="213" style="position:relative">#<span class="pl-k">pragma</span> warning (disable: 26812) <span class="pl-c"><span class="pl-c">//</span> [Static Analyzer] The enum type 'xxx' is unscoped. Prefer 'enum class' over 'enum' (Enum.3).</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC214" class="react-file-line html-div" data-testid="code-cell" data-line-number="214" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC215" class="react-file-line html-div" data-testid="code-cell" data-line-number="215" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC216" class="react-file-line html-div" data-testid="code-cell" data-line-number="216" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Clang/GCC warnings with -Weverything</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC217" class="react-file-line html-div" data-testid="code-cell" data-line-number="217" style="position:relative">#<span class="pl-k">if</span> defined(__clang__)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC218" class="react-file-line html-div" data-testid="code-cell" data-line-number="218" style="position:relative">#<span class="pl-k">if</span> __has_warning("-Wunknown-warning-option")</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC219" class="react-file-line html-div" data-testid="code-cell" data-line-number="219" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wunknown-warning-option" <span class="pl-c"><span class="pl-c">//</span> warning: unknown warning group 'xxx' // not all warnings are known by all Clang versions and they tend to be rename-happy.. so ignoring warnings triggers new warnings on some configuration. Great!</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC220" class="react-file-line html-div" data-testid="code-cell" data-line-number="220" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC221" class="react-file-line html-div" data-testid="code-cell" data-line-number="221" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wunknown-pragmas" <span class="pl-c"><span class="pl-c">//</span> warning: unknown warning group 'xxx'</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC222" class="react-file-line html-div" data-testid="code-cell" data-line-number="222" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wold-style-cast" <span class="pl-c"><span class="pl-c">//</span> warning: use of old-style cast // yes, they are more terse.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC223" class="react-file-line html-div" data-testid="code-cell" data-line-number="223" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wfloat-equal" <span class="pl-c"><span class="pl-c">//</span> warning: comparing floating point with == or != is unsafe // storing and comparing against same constants (typically 0.0f) is ok.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC224" class="react-file-line html-div" data-testid="code-cell" data-line-number="224" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wformat" <span class="pl-c"><span class="pl-c">//</span> warning: format specifies type 'int' but the argument has type 'unsigned int'</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC225" class="react-file-line html-div" data-testid="code-cell" data-line-number="225" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wformat-nonliteral" <span class="pl-c"><span class="pl-c">//</span> warning: format string is not a string literal // passing non-literal to vsnformat(). yes, user passing incorrect format strings can crash the code.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC226" class="react-file-line html-div" data-testid="code-cell" data-line-number="226" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wsign-conversion" <span class="pl-c"><span class="pl-c">//</span> warning: implicit conversion changes signedness</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC227" class="react-file-line html-div" data-testid="code-cell" data-line-number="227" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wzero-as-null-pointer-constant" <span class="pl-c"><span class="pl-c">//</span> warning: zero as null pointer constant // some standard header variations use #define NULL 0</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC228" class="react-file-line html-div" data-testid="code-cell" data-line-number="228" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wdouble-promotion" <span class="pl-c"><span class="pl-c">//</span> warning: implicit conversion from 'float' to 'double' when passing argument to function // using printf() is a misery with this as C++ va_arg ellipsis changes float to double.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC229" class="react-file-line html-div" data-testid="code-cell" data-line-number="229" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wenum-enum-conversion" <span class="pl-c"><span class="pl-c">//</span> warning: bitwise operation between different enumeration types ('XXXFlags_' and 'XXXFlagsPrivate_')</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC230" class="react-file-line html-div" data-testid="code-cell" data-line-number="230" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wdeprecated-enum-enum-conversion"<span class="pl-c"><span class="pl-c">//</span> warning: bitwise operation between different enumeration types ('XXXFlags_' and 'XXXFlagsPrivate_') is deprecated</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC231" class="react-file-line html-div" data-testid="code-cell" data-line-number="231" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wimplicit-int-float-conversion" <span class="pl-c"><span class="pl-c">//</span> warning: implicit conversion from 'xxx' to 'float' may lose precision</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC232" class="react-file-line html-div" data-testid="code-cell" data-line-number="232" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wunsafe-buffer-usage" <span class="pl-c"><span class="pl-c">//</span> warning: 'xxx' is an unsafe pointer used for buffer access</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC233" class="react-file-line html-div" data-testid="code-cell" data-line-number="233" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wnontrivial-memaccess" <span class="pl-c"><span class="pl-c">//</span> warning: first argument in call to 'memset' is a pointer to non-trivially copyable type</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC234" class="react-file-line html-div" data-testid="code-cell" data-line-number="234" style="position:relative">#<span class="pl-k">pragma</span> clang diagnostic ignored "-Wswitch-default" <span class="pl-c"><span class="pl-c">//</span> warning: 'switch' missing 'default' label</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC235" class="react-file-line html-div" data-testid="code-cell" data-line-number="235" style="position:relative">#<span class="pl-k">elif</span> defined(__GNUC__)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC236" class="react-file-line html-div" data-testid="code-cell" data-line-number="236" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wpragmas" <span class="pl-c"><span class="pl-c">//</span> warning: unknown option after '#pragma GCC diagnostic' kind</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC237" class="react-file-line html-div" data-testid="code-cell" data-line-number="237" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wfloat-equal" <span class="pl-c"><span class="pl-c">//</span> warning: comparing floating-point with '==' or '!=' is unsafe</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC238" class="react-file-line html-div" data-testid="code-cell" data-line-number="238" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wformat-nonliteral" <span class="pl-c"><span class="pl-c">//</span> warning: format not a string literal, format string not checked</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC239" class="react-file-line html-div" data-testid="code-cell" data-line-number="239" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wdouble-promotion" <span class="pl-c"><span class="pl-c">//</span> warning: implicit conversion from 'float' to 'double' when passing argument to function</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC240" class="react-file-line html-div" data-testid="code-cell" data-line-number="240" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wformat" <span class="pl-c"><span class="pl-c">//</span> warning: format '%p' expects argument of type 'int'/'void*', but argument X has type 'unsigned int'/'ImGuiWindow*'</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC241" class="react-file-line html-div" data-testid="code-cell" data-line-number="241" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wstrict-overflow"</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC242" class="react-file-line html-div" data-testid="code-cell" data-line-number="242" style="position:relative">#<span class="pl-k">pragma</span> GCC diagnostic ignored "-Wclass-memaccess" <span class="pl-c"><span class="pl-c">//</span> [__GNUC__ >= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC243" class="react-file-line html-div" data-testid="code-cell" data-line-number="243" style="position:relative">#<span class="pl-k">endif</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC244" class="react-file-line html-div" data-testid="code-cell" data-line-number="244" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC245" class="react-file-line html-div" data-testid="code-cell" data-line-number="245" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC246" class="react-file-line html-div" data-testid="code-cell" data-line-number="246" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> [SECTION] Tables: Main code</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC247" class="react-file-line html-div" data-testid="code-cell" data-line-number="247" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC248" class="react-file-line html-div" data-testid="code-cell" data-line-number="248" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableFixFlags() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC249" class="react-file-line html-div" data-testid="code-cell" data-line-number="249" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableFindByID() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC250" class="react-file-line html-div" data-testid="code-cell" data-line-number="250" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - BeginTable()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC251" class="react-file-line html-div" data-testid="code-cell" data-line-number="251" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - BeginTableEx() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC252" class="react-file-line html-div" data-testid="code-cell" data-line-number="252" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableBeginInitMemory() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC253" class="react-file-line html-div" data-testid="code-cell" data-line-number="253" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableBeginApplyRequests() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC254" class="react-file-line html-div" data-testid="code-cell" data-line-number="254" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetupColumnFlags() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC255" class="react-file-line html-div" data-testid="code-cell" data-line-number="255" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableUpdateLayout() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC256" class="react-file-line html-div" data-testid="code-cell" data-line-number="256" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableUpdateBorders() [Internal]</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC257" class="react-file-line html-div" data-testid="code-cell" data-line-number="257" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - EndTable()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC258" class="react-file-line html-div" data-testid="code-cell" data-line-number="258" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetupColumn()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC259" class="react-file-line html-div" data-testid="code-cell" data-line-number="259" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - TableSetupScrollFreeze()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC260" class="react-file-line html-div" data-testid="code-cell" data-line-number="260" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>-----------------------------------------------------------------------------</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC261" class="react-file-line html-div" data-testid="code-cell" data-line-number="261" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC262" class="react-file-line html-div" data-testid="code-cell" data-line-number="262" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Configuration</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC263" class="react-file-line html-div" data-testid="code-cell" data-line-number="263" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">int</span> TABLE_DRAW_CHANNEL_BG0 = <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC264" class="react-file-line html-div" data-testid="code-cell" data-line-number="264" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">int</span> TABLE_DRAW_CHANNEL_BG2_FROZEN = <span class="pl-c1">1</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC265" class="react-file-line html-div" data-testid="code-cell" data-line-number="265" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">int</span> TABLE_DRAW_CHANNEL_NOCLIP = <span class="pl-c1">2</span>; <span class="pl-c"><span class="pl-c">//</span> When using ImGuiTableFlags_NoClip (this becomes the last visible channel)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC266" class="react-file-line html-div" data-testid="code-cell" data-line-number="266" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">float</span> TABLE_BORDER_SIZE = <span class="pl-c1">1</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Currently hard-coded because of clipping assumptions with outer borders rendering.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC267" class="react-file-line html-div" data-testid="code-cell" data-line-number="267" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">float</span> TABLE_RESIZE_SEPARATOR_HALF_THICKNESS = <span class="pl-c1">4</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> Extend outside inner borders.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC268" class="react-file-line html-div" data-testid="code-cell" data-line-number="268" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">const</span> <span class="pl-k">float</span> TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER = <span class="pl-c1">0</span>.<span class="pl-c1">06f</span>; <span class="pl-c"><span class="pl-c">//</span> Delay/timer before making the hover feedback (color+cursor) visible because tables/columns tends to be more cramped.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC269" class="react-file-line html-div" data-testid="code-cell" data-line-number="269" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC270" class="react-file-line html-div" data-testid="code-cell" data-line-number="270" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Helper</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC271" class="react-file-line html-div" data-testid="code-cell" data-line-number="271" style="position:relative"><span class="pl-k">inline</span> ImGuiTableFlags <span class="pl-en">TableFixFlags</span>(ImGuiTableFlags flags, ImGuiWindow* outer_window)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC272" class="react-file-line html-div" data-testid="code-cell" data-line-number="272" style="position:relative">{</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC273" class="react-file-line html-div" data-testid="code-cell" data-line-number="273" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: set default sizing policy</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC274" class="react-file-line html-div" data-testid="code-cell" data-line-number="274" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableFlags_SizingMask_) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC275" class="react-file-line html-div" data-testid="code-cell" data-line-number="275" style="position:relative"> flags |= ((flags & ImGuiTableFlags_ScrollX) || (outer_window-><span class="pl-smi">Flags</span> & ImGuiWindowFlags_AlwaysAutoResize)) ? ImGuiTableFlags_SizingFixedFit : ImGuiTableFlags_SizingStretchSame;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC276" class="react-file-line html-div" data-testid="code-cell" data-line-number="276" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC277" class="react-file-line html-div" data-testid="code-cell" data-line-number="277" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: enable NoKeepColumnsVisible when using ImGuiTableFlags_SizingFixedSame</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC278" class="react-file-line html-div" data-testid="code-cell" data-line-number="278" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedSame)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC279" class="react-file-line html-div" data-testid="code-cell" data-line-number="279" style="position:relative"> flags |= ImGuiTableFlags_NoKeepColumnsVisible;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC280" class="react-file-line html-div" data-testid="code-cell" data-line-number="280" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC281" class="react-file-line html-div" data-testid="code-cell" data-line-number="281" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: enforce borders when resizable</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC282" class="react-file-line html-div" data-testid="code-cell" data-line-number="282" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_Resizable)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC283" class="react-file-line html-div" data-testid="code-cell" data-line-number="283" style="position:relative"> flags |= ImGuiTableFlags_BordersInnerV;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC284" class="react-file-line html-div" data-testid="code-cell" data-line-number="284" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC285" class="react-file-line html-div" data-testid="code-cell" data-line-number="285" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: disable NoHostExtendX/NoHostExtendY if we have any scrolling going on</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC286" class="react-file-line html-div" data-testid="code-cell" data-line-number="286" style="position:relative"> <span class="pl-k">if</span> (flags & (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY))</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC287" class="react-file-line html-div" data-testid="code-cell" data-line-number="287" style="position:relative"> flags &= ~(ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_NoHostExtendY);</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC288" class="react-file-line html-div" data-testid="code-cell" data-line-number="288" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC289" class="react-file-line html-div" data-testid="code-cell" data-line-number="289" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: NoBordersInBodyUntilResize takes priority over NoBordersInBody</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC290" class="react-file-line html-div" data-testid="code-cell" data-line-number="290" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_NoBordersInBodyUntilResize)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC291" class="react-file-line html-div" data-testid="code-cell" data-line-number="291" style="position:relative"> flags &= ~ImGuiTableFlags_NoBordersInBody;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC292" class="react-file-line html-div" data-testid="code-cell" data-line-number="292" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC293" class="react-file-line html-div" data-testid="code-cell" data-line-number="293" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Adjust flags: disable saved settings if there's nothing to save</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC294" class="react-file-line html-div" data-testid="code-cell" data-line-number="294" style="position:relative"> <span class="pl-k">if</span> ((flags & (ImGuiTableFlags_Resizable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Sortable)) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC295" class="react-file-line html-div" data-testid="code-cell" data-line-number="295" style="position:relative"> flags |= ImGuiTableFlags_NoSavedSettings;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC296" class="react-file-line html-div" data-testid="code-cell" data-line-number="296" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC297" class="react-file-line html-div" data-testid="code-cell" data-line-number="297" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Inherit _NoSavedSettings from top-level window (child windows always have _NoSavedSettings set)</span></div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC298" class="react-file-line html-div" data-testid="code-cell" data-line-number="298" style="position:relative"> <span class="pl-k">if</span> (outer_window-><span class="pl-smi">RootWindow</span>-><span class="pl-smi">Flags</span> & ImGuiWindowFlags_NoSavedSettings)</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC299" class="react-file-line html-div" data-testid="code-cell" data-line-number="299" style="position:relative"> flags |= ImGuiTableFlags_NoSavedSettings;</div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC300" class="react-file-line html-div" data-testid="code-cell" data-line-number="300" style="position:relative"> </div></div></div><div class="child-of-line-270 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC301" class="react-file-line html-div" data-testid="code-cell" data-line-number="301" style="position:relative"> <span class="pl-k">return</span> flags;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC302" class="react-file-line html-div" data-testid="code-cell" data-line-number="302" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC303" class="react-file-line html-div" data-testid="code-cell" data-line-number="303" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC304" class="react-file-line html-div" data-testid="code-cell" data-line-number="304" style="position:relative">ImGuiTable* <span class="pl-en">ImGui::TableFindByID</span>(ImGuiID id)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC305" class="react-file-line html-div" data-testid="code-cell" data-line-number="305" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC306" class="react-file-line html-div" data-testid="code-cell" data-line-number="306" style="position:relative"> ImGuiContext& g = *GImGui;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC307" class="react-file-line html-div" data-testid="code-cell" data-line-number="307" style="position:relative"> <span class="pl-k">return</span> g.<span class="pl-smi">Tables</span>.<span class="pl-c1">GetByKey</span>(id);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC308" class="react-file-line html-div" data-testid="code-cell" data-line-number="308" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC309" class="react-file-line html-div" data-testid="code-cell" data-line-number="309" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC310" class="react-file-line html-div" data-testid="code-cell" data-line-number="310" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Read about "TABLE SIZING" at the top of this file.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC311" class="react-file-line html-div" data-testid="code-cell" data-line-number="311" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">ImGui::BeginTable</span>(<span class="pl-k">const</span> <span class="pl-k">char</span>* str_id, <span class="pl-k">int</span> columns_count, ImGuiTableFlags flags, <span class="pl-k">const</span> ImVec2& outer_size, <span class="pl-k">float</span> inner_width)</div></div></div><div class="child-of-line-310 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC312" class="react-file-line html-div" data-testid="code-cell" data-line-number="312" style="position:relative">{</div></div></div><div class="child-of-line-310 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC313" class="react-file-line html-div" data-testid="code-cell" data-line-number="313" style="position:relative"> ImGuiID id = <span class="pl-c1">GetID</span>(str_id);</div></div></div><div class="child-of-line-310 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC314" class="react-file-line html-div" data-testid="code-cell" data-line-number="314" style="position:relative"> <span class="pl-k">return</span> <span class="pl-c1">BeginTableEx</span>(str_id, id, columns_count, flags, outer_size, inner_width);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC315" class="react-file-line html-div" data-testid="code-cell" data-line-number="315" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC316" class="react-file-line html-div" data-testid="code-cell" data-line-number="316" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC317" class="react-file-line html-div" data-testid="code-cell" data-line-number="317" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">ImGui::BeginTableEx</span>(<span class="pl-k">const</span> <span class="pl-k">char</span>* name, ImGuiID id, <span class="pl-k">int</span> columns_count, ImGuiTableFlags flags, <span class="pl-k">const</span> ImVec2& outer_size, <span class="pl-k">float</span> inner_width)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC318" class="react-file-line html-div" data-testid="code-cell" data-line-number="318" style="position:relative">{</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC319" class="react-file-line html-div" data-testid="code-cell" data-line-number="319" style="position:relative"> ImGuiContext& g = *GImGui;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC320" class="react-file-line html-div" data-testid="code-cell" data-line-number="320" style="position:relative"> ImGuiWindow* outer_window = <span class="pl-c1">GetCurrentWindow</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC321" class="react-file-line html-div" data-testid="code-cell" data-line-number="321" style="position:relative"> <span class="pl-k">if</span> (outer_window-><span class="pl-smi">SkipItems</span>) <span class="pl-c"><span class="pl-c">//</span> Consistent with other tables + beneficial side effect that assert on miscalling EndTable() will be more visible.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC322" class="react-file-line html-div" data-testid="code-cell" data-line-number="322" style="position:relative"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC323" class="react-file-line html-div" data-testid="code-cell" data-line-number="323" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC324" class="react-file-line html-div" data-testid="code-cell" data-line-number="324" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Sanity checks</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC325" class="react-file-line html-div" data-testid="code-cell" data-line-number="325" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(columns_count > <span class="pl-c1">0</span> && columns_count < IMGUI_TABLE_MAX_COLUMNS);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC326" class="react-file-line html-div" data-testid="code-cell" data-line-number="326" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_ScrollX)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC327" class="react-file-line html-div" data-testid="code-cell" data-line-number="327" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(inner_width >= <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC328" class="react-file-line html-div" data-testid="code-cell" data-line-number="328" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC329" class="react-file-line html-div" data-testid="code-cell" data-line-number="329" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> If an outer size is specified ahead we will be able to early out when not visible. Exact clipping criteria may evolve.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC330" class="react-file-line html-div" data-testid="code-cell" data-line-number="330" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME: coarse clipping because access to table data causes two issues:</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC331" class="react-file-line html-div" data-testid="code-cell" data-line-number="331" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - instance numbers varying/unstable. may not be a direct problem for users, but could make outside access broken or confusing, e.g. TestEngine.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC332" class="react-file-line html-div" data-testid="code-cell" data-line-number="332" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - can't implement support for ImGuiChildFlags_ResizeY as we need to somehow pull the height data from somewhere. this also needs stable instance numbers.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC333" class="react-file-line html-div" data-testid="code-cell" data-line-number="333" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> The side-effects of accessing table data on coarse clip would be:</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC334" class="react-file-line html-div" data-testid="code-cell" data-line-number="334" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - always reserving the pooled ImGuiTable data ahead for a fully clipped table (minor IMHO). Also the 'outer_window_is_measuring_size' criteria may already be defeating this in some situations.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC335" class="react-file-line html-div" data-testid="code-cell" data-line-number="335" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - always performing the GetOrAddByKey() O(log N) query in g.Tables.Map[].</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC336" class="react-file-line html-div" data-testid="code-cell" data-line-number="336" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> use_child_window = (flags & (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY)) != <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC337" class="react-file-line html-div" data-testid="code-cell" data-line-number="337" style="position:relative"> <span class="pl-k">const</span> ImVec2 avail_size = <span class="pl-c1">GetContentRegionAvail</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC338" class="react-file-line html-div" data-testid="code-cell" data-line-number="338" style="position:relative"> <span class="pl-k">const</span> ImVec2 actual_outer_size = <span class="pl-c1">ImTrunc</span>(<span class="pl-c1">CalcItemSize</span>(outer_size, <span class="pl-c1">ImMax</span>(avail_size.<span class="pl-smi">x</span>, <span class="pl-c1">1</span>.<span class="pl-c1">0f</span>), use_child_window ? <span class="pl-c1">ImMax</span>(avail_size.<span class="pl-smi">y</span>, <span class="pl-c1">1</span>.<span class="pl-c1">0f</span>) : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>));</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC339" class="react-file-line html-div" data-testid="code-cell" data-line-number="339" style="position:relative"> <span class="pl-k">const</span> ImRect <span class="pl-smi">outer_rect</span>(outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CursorPos</span>, outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CursorPos</span> + actual_outer_size);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC340" class="react-file-line html-div" data-testid="code-cell" data-line-number="340" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> outer_window_is_measuring_size = (outer_window-><span class="pl-smi">AutoFitFramesX</span> > <span class="pl-c1">0</span>) || (outer_window-><span class="pl-smi">AutoFitFramesY</span> > <span class="pl-c1">0</span>); <span class="pl-c"><span class="pl-c">//</span> Doesn't apply to AlwaysAutoResize windows!</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC341" class="react-file-line html-div" data-testid="code-cell" data-line-number="341" style="position:relative"> <span class="pl-k">if</span> (use_child_window && <span class="pl-c1">IsClippedEx</span>(outer_rect, <span class="pl-c1">0</span>) && !outer_window_is_measuring_size)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC342" class="react-file-line html-div" data-testid="code-cell" data-line-number="342" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC343" class="react-file-line html-div" data-testid="code-cell" data-line-number="343" style="position:relative"> <span class="pl-c1">ItemSize</span>(outer_rect);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC344" class="react-file-line html-div" data-testid="code-cell" data-line-number="344" style="position:relative"> <span class="pl-c1">ItemAdd</span>(outer_rect, id);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC345" class="react-file-line html-div" data-testid="code-cell" data-line-number="345" style="position:relative"> g.<span class="pl-smi">NextWindowData</span>.<span class="pl-c1">ClearFlags</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC346" class="react-file-line html-div" data-testid="code-cell" data-line-number="346" style="position:relative"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC347" class="react-file-line html-div" data-testid="code-cell" data-line-number="347" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC348" class="react-file-line html-div" data-testid="code-cell" data-line-number="348" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC349" class="react-file-line html-div" data-testid="code-cell" data-line-number="349" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> [DEBUG] Debug break requested by user</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC350" class="react-file-line html-div" data-testid="code-cell" data-line-number="350" style="position:relative"> <span class="pl-k">if</span> (g.<span class="pl-smi">DebugBreakInTable</span> == id)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC351" class="react-file-line html-div" data-testid="code-cell" data-line-number="351" style="position:relative"> <span class="pl-c1">IM_DEBUG_BREAK</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC352" class="react-file-line html-div" data-testid="code-cell" data-line-number="352" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC353" class="react-file-line html-div" data-testid="code-cell" data-line-number="353" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Acquire storage for the table</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC354" class="react-file-line html-div" data-testid="code-cell" data-line-number="354" style="position:relative"> ImGuiTable* table = g.<span class="pl-smi">Tables</span>.<span class="pl-c1">GetOrAddByKey</span>(id);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC355" class="react-file-line html-div" data-testid="code-cell" data-line-number="355" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC356" class="react-file-line html-div" data-testid="code-cell" data-line-number="356" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Acquire temporary buffers</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC357" class="react-file-line html-div" data-testid="code-cell" data-line-number="357" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> table_idx = g.<span class="pl-smi">Tables</span>.<span class="pl-c1">GetIndex</span>(table);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC358" class="react-file-line html-div" data-testid="code-cell" data-line-number="358" style="position:relative"> <span class="pl-k">if</span> (++g.<span class="pl-smi">TablesTempDataStacked</span> > g.<span class="pl-smi">TablesTempData</span>.<span class="pl-smi">Size</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC359" class="react-file-line html-div" data-testid="code-cell" data-line-number="359" style="position:relative"> g.<span class="pl-smi">TablesTempData</span>.<span class="pl-c1">resize</span>(g.<span class="pl-smi">TablesTempDataStacked</span>, <span class="pl-c1">ImGuiTableTempData</span>());</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC360" class="react-file-line html-div" data-testid="code-cell" data-line-number="360" style="position:relative"> ImGuiTableTempData* temp_data = table-><span class="pl-smi">TempData</span> = &g.<span class="pl-smi">TablesTempData</span>[g.<span class="pl-smi">TablesTempDataStacked</span> - <span class="pl-c1">1</span>];</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC361" class="react-file-line html-div" data-testid="code-cell" data-line-number="361" style="position:relative"> temp_data-><span class="pl-smi">TableIndex</span> = table_idx;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC362" class="react-file-line html-div" data-testid="code-cell" data-line-number="362" style="position:relative"> table-><span class="pl-smi">DrawSplitter</span> = &table-><span class="pl-smi">TempData</span>-><span class="pl-smi">DrawSplitter</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC363" class="react-file-line html-div" data-testid="code-cell" data-line-number="363" style="position:relative"> table-><span class="pl-smi">DrawSplitter</span>-><span class="pl-c1">Clear</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC364" class="react-file-line html-div" data-testid="code-cell" data-line-number="364" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC365" class="react-file-line html-div" data-testid="code-cell" data-line-number="365" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Fix flags</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC366" class="react-file-line html-div" data-testid="code-cell" data-line-number="366" style="position:relative"> table-><span class="pl-smi">IsDefaultSizingPolicy</span> = (flags & ImGuiTableFlags_SizingMask_) == <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC367" class="react-file-line html-div" data-testid="code-cell" data-line-number="367" style="position:relative"> flags = <span class="pl-c1">TableFixFlags</span>(flags, outer_window);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC368" class="react-file-line html-div" data-testid="code-cell" data-line-number="368" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC369" class="react-file-line html-div" data-testid="code-cell" data-line-number="369" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Initialize</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC370" class="react-file-line html-div" data-testid="code-cell" data-line-number="370" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> previous_frame_active = table-><span class="pl-smi">LastFrameActive</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC371" class="react-file-line html-div" data-testid="code-cell" data-line-number="371" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> instance_no = (previous_frame_active != g.<span class="pl-smi">FrameCount</span>) ? <span class="pl-c1">0</span> : table-><span class="pl-smi">InstanceCurrent</span> + <span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC372" class="react-file-line html-div" data-testid="code-cell" data-line-number="372" style="position:relative"> <span class="pl-k">const</span> ImGuiTableFlags previous_flags = table-><span class="pl-smi">Flags</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC373" class="react-file-line html-div" data-testid="code-cell" data-line-number="373" style="position:relative"> table-><span class="pl-smi">ID</span> = id;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC374" class="react-file-line html-div" data-testid="code-cell" data-line-number="374" style="position:relative"> table-><span class="pl-smi">Flags</span> = flags;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC375" class="react-file-line html-div" data-testid="code-cell" data-line-number="375" style="position:relative"> table-><span class="pl-smi">LastFrameActive</span> = g.<span class="pl-smi">FrameCount</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC376" class="react-file-line html-div" data-testid="code-cell" data-line-number="376" style="position:relative"> table-><span class="pl-smi">OuterWindow</span> = table-><span class="pl-smi">InnerWindow</span> = outer_window;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC377" class="react-file-line html-div" data-testid="code-cell" data-line-number="377" style="position:relative"> table-><span class="pl-smi">ColumnsCount</span> = columns_count;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC378" class="react-file-line html-div" data-testid="code-cell" data-line-number="378" style="position:relative"> table-><span class="pl-smi">IsLayoutLocked</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC379" class="react-file-line html-div" data-testid="code-cell" data-line-number="379" style="position:relative"> table-><span class="pl-smi">InnerWidth</span> = inner_width;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC380" class="react-file-line html-div" data-testid="code-cell" data-line-number="380" style="position:relative"> table-><span class="pl-smi">NavLayer</span> = (ImS8)outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">NavLayerCurrent</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC381" class="react-file-line html-div" data-testid="code-cell" data-line-number="381" style="position:relative"> temp_data-><span class="pl-smi">UserOuterSize</span> = outer_size;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC382" class="react-file-line html-div" data-testid="code-cell" data-line-number="382" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC383" class="react-file-line html-div" data-testid="code-cell" data-line-number="383" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Instance data (for instance 0, TableID == TableInstanceID)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC384" class="react-file-line html-div" data-testid="code-cell" data-line-number="384" style="position:relative"> ImGuiID instance_id;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC385" class="react-file-line html-div" data-testid="code-cell" data-line-number="385" style="position:relative"> table-><span class="pl-smi">InstanceCurrent</span> = (ImS16)instance_no;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC386" class="react-file-line html-div" data-testid="code-cell" data-line-number="386" style="position:relative"> <span class="pl-k">if</span> (instance_no > <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC387" class="react-file-line html-div" data-testid="code-cell" data-line-number="387" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC388" class="react-file-line html-div" data-testid="code-cell" data-line-number="388" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(table-><span class="pl-smi">ColumnsCount</span> == columns_count && <span class="pl-s"><span class="pl-pds">"</span>BeginTable(): Cannot change columns count mid-frame while preserving same ID<span class="pl-pds">"</span></span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC389" class="react-file-line html-div" data-testid="code-cell" data-line-number="389" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">InstanceDataExtra</span>.<span class="pl-smi">Size</span> < instance_no)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC390" class="react-file-line html-div" data-testid="code-cell" data-line-number="390" style="position:relative"> table-><span class="pl-smi">InstanceDataExtra</span>.<span class="pl-c1">push_back</span>(<span class="pl-c1">ImGuiTableInstanceData</span>());</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC391" class="react-file-line html-div" data-testid="code-cell" data-line-number="391" style="position:relative"> instance_id = <span class="pl-c1">GetIDWithSeed</span>(instance_no, <span class="pl-c1">GetIDWithSeed</span>(<span class="pl-s"><span class="pl-pds">"</span>##Instances<span class="pl-pds">"</span></span>, <span class="pl-c1">NULL</span>, id)); <span class="pl-c"><span class="pl-c">//</span> Push "##Instances" followed by (int)instance_no in ID stack.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC392" class="react-file-line html-div" data-testid="code-cell" data-line-number="392" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC393" class="react-file-line html-div" data-testid="code-cell" data-line-number="393" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC394" class="react-file-line html-div" data-testid="code-cell" data-line-number="394" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC395" class="react-file-line html-div" data-testid="code-cell" data-line-number="395" style="position:relative"> instance_id = id;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC396" class="react-file-line html-div" data-testid="code-cell" data-line-number="396" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC397" class="react-file-line html-div" data-testid="code-cell" data-line-number="397" style="position:relative"> ImGuiTableInstanceData* table_instance = <span class="pl-c1">TableGetInstanceData</span>(table, table-><span class="pl-smi">InstanceCurrent</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC398" class="react-file-line html-div" data-testid="code-cell" data-line-number="398" style="position:relative"> table_instance-><span class="pl-smi">TableInstanceID</span> = instance_id;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC399" class="react-file-line html-div" data-testid="code-cell" data-line-number="399" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC400" class="react-file-line html-div" data-testid="code-cell" data-line-number="400" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> When not using a child window, WorkRect.Max will grow as we append contents.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC401" class="react-file-line html-div" data-testid="code-cell" data-line-number="401" style="position:relative"> <span class="pl-k">if</span> (use_child_window)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC402" class="react-file-line html-div" data-testid="code-cell" data-line-number="402" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC403" class="react-file-line html-div" data-testid="code-cell" data-line-number="403" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Ensure no vertical scrollbar appears if we only want horizontal one, to make flag consistent</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC404" class="react-file-line html-div" data-testid="code-cell" data-line-number="404" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> (we have no other way to disable vertical scrollbar of a window while keeping the horizontal one showing)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC405" class="react-file-line html-div" data-testid="code-cell" data-line-number="405" style="position:relative"> ImVec2 <span class="pl-smi">override_content_size</span>(FLT_MAX, FLT_MAX);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC406" class="react-file-line html-div" data-testid="code-cell" data-line-number="406" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableFlags_ScrollX) && !(flags & ImGuiTableFlags_ScrollY))</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC407" class="react-file-line html-div" data-testid="code-cell" data-line-number="407" style="position:relative"> override_content_size.<span class="pl-smi">y</span> = FLT_MIN;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC408" class="react-file-line html-div" data-testid="code-cell" data-line-number="408" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC409" class="react-file-line html-div" data-testid="code-cell" data-line-number="409" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Ensure specified width (when not specified, Stretched columns will act as if the width == OuterWidth and</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC410" class="react-file-line html-div" data-testid="code-cell" data-line-number="410" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> never lead to any scrolling). We don't handle inner_width < 0.0f, we could potentially use it to right-align</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC411" class="react-file-line html-div" data-testid="code-cell" data-line-number="411" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> based on the right side of the child window work rect, which would require knowing ahead if we are going to</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC412" class="react-file-line html-div" data-testid="code-cell" data-line-number="412" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> have decoration taking horizontal spaces (typically a vertical scrollbar).</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC413" class="react-file-line html-div" data-testid="code-cell" data-line-number="413" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableFlags_ScrollX) && inner_width > <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC414" class="react-file-line html-div" data-testid="code-cell" data-line-number="414" style="position:relative"> override_content_size.<span class="pl-smi">x</span> = inner_width;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC415" class="react-file-line html-div" data-testid="code-cell" data-line-number="415" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC416" class="react-file-line html-div" data-testid="code-cell" data-line-number="416" style="position:relative"> <span class="pl-k">if</span> (override_content_size.<span class="pl-smi">x</span> != FLT_MAX || override_content_size.<span class="pl-smi">y</span> != FLT_MAX)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC417" class="react-file-line html-div" data-testid="code-cell" data-line-number="417" style="position:relative"> <span class="pl-c1">SetNextWindowContentSize</span>(<span class="pl-c1">ImVec2</span>(override_content_size.<span class="pl-smi">x</span> != FLT_MAX ? override_content_size.<span class="pl-smi">x</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>, override_content_size.<span class="pl-smi">y</span> != FLT_MAX ? override_content_size.<span class="pl-smi">y</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>));</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC418" class="react-file-line html-div" data-testid="code-cell" data-line-number="418" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC419" class="react-file-line html-div" data-testid="code-cell" data-line-number="419" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Reset scroll if we are reactivating it</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC420" class="react-file-line html-div" data-testid="code-cell" data-line-number="420" style="position:relative"> <span class="pl-k">if</span> ((previous_flags & (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY)) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC421" class="react-file-line html-div" data-testid="code-cell" data-line-number="421" style="position:relative"> <span class="pl-k">if</span> ((g.<span class="pl-smi">NextWindowData</span>.<span class="pl-smi">HasFlags</span> & ImGuiNextWindowDataFlags_HasScroll) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC422" class="react-file-line html-div" data-testid="code-cell" data-line-number="422" style="position:relative"> <span class="pl-c1">SetNextWindowScroll</span>(<span class="pl-c1">ImVec2</span>(<span class="pl-c1">0</span>.<span class="pl-c1">0f</span>, <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>));</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC423" class="react-file-line html-div" data-testid="code-cell" data-line-number="423" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC424" class="react-file-line html-div" data-testid="code-cell" data-line-number="424" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Create scrolling region (without border and zero window padding)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC425" class="react-file-line html-div" data-testid="code-cell" data-line-number="425" style="position:relative"> ImGuiChildFlags child_child_flags = (g.<span class="pl-smi">NextWindowData</span>.<span class="pl-smi">HasFlags</span> & ImGuiNextWindowDataFlags_HasChildFlags) ? g.<span class="pl-smi">NextWindowData</span>.<span class="pl-smi">ChildFlags</span> : ImGuiChildFlags_None;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC426" class="react-file-line html-div" data-testid="code-cell" data-line-number="426" style="position:relative"> ImGuiWindowFlags child_window_flags = (g.<span class="pl-smi">NextWindowData</span>.<span class="pl-smi">HasFlags</span> & ImGuiNextWindowDataFlags_HasWindowFlags) ? g.<span class="pl-smi">NextWindowData</span>.<span class="pl-smi">WindowFlags</span> : ImGuiWindowFlags_None;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC427" class="react-file-line html-div" data-testid="code-cell" data-line-number="427" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_ScrollX)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC428" class="react-file-line html-div" data-testid="code-cell" data-line-number="428" style="position:relative"> child_window_flags |= ImGuiWindowFlags_HorizontalScrollbar;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC429" class="react-file-line html-div" data-testid="code-cell" data-line-number="429" style="position:relative"> <span class="pl-c1">BeginChildEx</span>(name, instance_id, outer_rect.<span class="pl-c1">GetSize</span>(), child_child_flags, child_window_flags);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC430" class="react-file-line html-div" data-testid="code-cell" data-line-number="430" style="position:relative"> table-><span class="pl-smi">InnerWindow</span> = g.<span class="pl-smi">CurrentWindow</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC431" class="react-file-line html-div" data-testid="code-cell" data-line-number="431" style="position:relative"> table-><span class="pl-smi">WorkRect</span> = table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">WorkRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC432" class="react-file-line html-div" data-testid="code-cell" data-line-number="432" style="position:relative"> table-><span class="pl-smi">OuterRect</span> = table-><span class="pl-smi">InnerWindow</span>-><span class="pl-c1">Rect</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC433" class="react-file-line html-div" data-testid="code-cell" data-line-number="433" style="position:relative"> table-><span class="pl-smi">InnerRect</span> = table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">InnerRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC434" class="react-file-line html-div" data-testid="code-cell" data-line-number="434" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">WindowPadding</span>.<span class="pl-smi">x</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span> && table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">WindowPadding</span>.<span class="pl-smi">y</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span> && table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">WindowBorderSize</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC435" class="react-file-line html-div" data-testid="code-cell" data-line-number="435" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC436" class="react-file-line html-div" data-testid="code-cell" data-line-number="436" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Allow submitting when host is measuring</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC437" class="react-file-line html-div" data-testid="code-cell" data-line-number="437" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">SkipItems</span> && outer_window_is_measuring_size)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC438" class="react-file-line html-div" data-testid="code-cell" data-line-number="438" style="position:relative"> table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">SkipItems</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC439" class="react-file-line html-div" data-testid="code-cell" data-line-number="439" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC440" class="react-file-line html-div" data-testid="code-cell" data-line-number="440" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> When using multiple instances, ensure they have the same amount of horizontal decorations (aka vertical scrollbar) so stretched columns can be aligned)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC441" class="react-file-line html-div" data-testid="code-cell" data-line-number="441" style="position:relative"> <span class="pl-k">if</span> (instance_no == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC442" class="react-file-line html-div" data-testid="code-cell" data-line-number="442" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC443" class="react-file-line html-div" data-testid="code-cell" data-line-number="443" style="position:relative"> table-><span class="pl-smi">HasScrollbarYPrev</span> = table-><span class="pl-smi">HasScrollbarYCurr</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC444" class="react-file-line html-div" data-testid="code-cell" data-line-number="444" style="position:relative"> table-><span class="pl-smi">HasScrollbarYCurr</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC445" class="react-file-line html-div" data-testid="code-cell" data-line-number="445" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC446" class="react-file-line html-div" data-testid="code-cell" data-line-number="446" style="position:relative"> table-><span class="pl-smi">HasScrollbarYCurr</span> |= table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">ScrollbarY</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC447" class="react-file-line html-div" data-testid="code-cell" data-line-number="447" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC448" class="react-file-line html-div" data-testid="code-cell" data-line-number="448" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC449" class="react-file-line html-div" data-testid="code-cell" data-line-number="449" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC450" class="react-file-line html-div" data-testid="code-cell" data-line-number="450" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> For non-scrolling tables, WorkRect == OuterRect == InnerRect.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC451" class="react-file-line html-div" data-testid="code-cell" data-line-number="451" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> But at this point we do NOT have a correct value for .Max.y (unless a height has been explicitly passed in). It will only be updated in EndTable().</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC452" class="react-file-line html-div" data-testid="code-cell" data-line-number="452" style="position:relative"> table-><span class="pl-smi">WorkRect</span> = table-><span class="pl-smi">OuterRect</span> = table-><span class="pl-smi">InnerRect</span> = outer_rect;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC453" class="react-file-line html-div" data-testid="code-cell" data-line-number="453" style="position:relative"> table-><span class="pl-smi">HasScrollbarYPrev</span> = table-><span class="pl-smi">HasScrollbarYCurr</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC454" class="react-file-line html-div" data-testid="code-cell" data-line-number="454" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC455" class="react-file-line html-div" data-testid="code-cell" data-line-number="455" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC456" class="react-file-line html-div" data-testid="code-cell" data-line-number="456" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Push a standardized ID for both child-using and not-child-using tables</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC457" class="react-file-line html-div" data-testid="code-cell" data-line-number="457" style="position:relative"> <span class="pl-c1">PushOverrideID</span>(id);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC458" class="react-file-line html-div" data-testid="code-cell" data-line-number="458" style="position:relative"> <span class="pl-k">if</span> (instance_no > <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC459" class="react-file-line html-div" data-testid="code-cell" data-line-number="459" style="position:relative"> <span class="pl-c1">PushOverrideID</span>(instance_id); <span class="pl-c"><span class="pl-c">//</span> FIXME: Somehow this is not resolved by stack-tool, even tho GetIDWithSeed() submitted the symbol.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC460" class="react-file-line html-div" data-testid="code-cell" data-line-number="460" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC461" class="react-file-line html-div" data-testid="code-cell" data-line-number="461" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Backup a copy of host window members we will modify</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC462" class="react-file-line html-div" data-testid="code-cell" data-line-number="462" style="position:relative"> ImGuiWindow* inner_window = table-><span class="pl-smi">InnerWindow</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC463" class="react-file-line html-div" data-testid="code-cell" data-line-number="463" style="position:relative"> table-><span class="pl-smi">HostIndentX</span> = inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">Indent</span>.<span class="pl-smi">x</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC464" class="react-file-line html-div" data-testid="code-cell" data-line-number="464" style="position:relative"> table-><span class="pl-smi">HostClipRect</span> = inner_window-><span class="pl-smi">ClipRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC465" class="react-file-line html-div" data-testid="code-cell" data-line-number="465" style="position:relative"> table-><span class="pl-smi">HostSkipItems</span> = inner_window-><span class="pl-smi">SkipItems</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC466" class="react-file-line html-div" data-testid="code-cell" data-line-number="466" style="position:relative"> temp_data-><span class="pl-smi">HostBackupWorkRect</span> = inner_window-><span class="pl-smi">WorkRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC467" class="react-file-line html-div" data-testid="code-cell" data-line-number="467" style="position:relative"> temp_data-><span class="pl-smi">HostBackupParentWorkRect</span> = inner_window-><span class="pl-smi">ParentWorkRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC468" class="react-file-line html-div" data-testid="code-cell" data-line-number="468" style="position:relative"> temp_data-><span class="pl-smi">HostBackupColumnsOffset</span> = outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">ColumnsOffset</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC469" class="react-file-line html-div" data-testid="code-cell" data-line-number="469" style="position:relative"> temp_data-><span class="pl-smi">HostBackupPrevLineSize</span> = inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">PrevLineSize</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC470" class="react-file-line html-div" data-testid="code-cell" data-line-number="470" style="position:relative"> temp_data-><span class="pl-smi">HostBackupCurrLineSize</span> = inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CurrLineSize</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC471" class="react-file-line html-div" data-testid="code-cell" data-line-number="471" style="position:relative"> temp_data-><span class="pl-smi">HostBackupCursorMaxPos</span> = inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CursorMaxPos</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC472" class="react-file-line html-div" data-testid="code-cell" data-line-number="472" style="position:relative"> temp_data-><span class="pl-smi">HostBackupItemWidth</span> = outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">ItemWidth</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC473" class="react-file-line html-div" data-testid="code-cell" data-line-number="473" style="position:relative"> temp_data-><span class="pl-smi">HostBackupItemWidthStackSize</span> = outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">ItemWidthStack</span>.<span class="pl-smi">Size</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC474" class="react-file-line html-div" data-testid="code-cell" data-line-number="474" style="position:relative"> inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">PrevLineSize</span> = inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CurrLineSize</span> = <span class="pl-c1">ImVec2</span>(<span class="pl-c1">0</span>.<span class="pl-c1">0f</span>, <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC475" class="react-file-line html-div" data-testid="code-cell" data-line-number="475" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC476" class="react-file-line html-div" data-testid="code-cell" data-line-number="476" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Make borders not overlap our contents by offsetting HostClipRect (#6765, #7428, #3752)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC477" class="react-file-line html-div" data-testid="code-cell" data-line-number="477" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> (we normally shouldn't alter HostClipRect as we rely on TableMergeDrawChannels() expanding non-clipped column toward the</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC478" class="react-file-line html-div" data-testid="code-cell" data-line-number="478" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> limits of that rectangle, in order for ImDrawListSplitter::Merge() to merge the draw commands. However since the overlap</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC479" class="react-file-line html-div" data-testid="code-cell" data-line-number="479" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> problem only affect scrolling tables in this case we can get away with doing it without extra cost).</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC480" class="react-file-line html-div" data-testid="code-cell" data-line-number="480" style="position:relative"> <span class="pl-k">if</span> (inner_window != outer_window)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC481" class="react-file-line html-div" data-testid="code-cell" data-line-number="481" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC482" class="react-file-line html-div" data-testid="code-cell" data-line-number="482" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME: Because inner_window's Scrollbar doesn't know about border size, since it's not encoded in window->WindowBorderSize,</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC483" class="react-file-line html-div" data-testid="code-cell" data-line-number="483" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> it already overlaps it and doesn't need an extra offset. Ideally we should be able to pass custom border size with</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC484" class="react-file-line html-div" data-testid="code-cell" data-line-number="484" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> different x/y values to BeginChild().</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC485" class="react-file-line html-div" data-testid="code-cell" data-line-number="485" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_BordersOuterV)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC486" class="react-file-line html-div" data-testid="code-cell" data-line-number="486" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC487" class="react-file-line html-div" data-testid="code-cell" data-line-number="487" style="position:relative"> table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">x</span> = <span class="pl-c1">ImMin</span>(table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">x</span> + TABLE_BORDER_SIZE, table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">x</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC488" class="react-file-line html-div" data-testid="code-cell" data-line-number="488" style="position:relative"> <span class="pl-k">if</span> (inner_window-><span class="pl-smi">DecoOuterSizeX2</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC489" class="react-file-line html-div" data-testid="code-cell" data-line-number="489" style="position:relative"> table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">x</span> = <span class="pl-c1">ImMax</span>(table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">x</span> - TABLE_BORDER_SIZE, table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">x</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC490" class="react-file-line html-div" data-testid="code-cell" data-line-number="490" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC491" class="react-file-line html-div" data-testid="code-cell" data-line-number="491" style="position:relative"> <span class="pl-k">if</span> (flags & ImGuiTableFlags_BordersOuterH)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC492" class="react-file-line html-div" data-testid="code-cell" data-line-number="492" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC493" class="react-file-line html-div" data-testid="code-cell" data-line-number="493" style="position:relative"> table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">y</span> = <span class="pl-c1">ImMin</span>(table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">y</span> + TABLE_BORDER_SIZE, table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC494" class="react-file-line html-div" data-testid="code-cell" data-line-number="494" style="position:relative"> <span class="pl-k">if</span> (inner_window-><span class="pl-smi">DecoOuterSizeY2</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC495" class="react-file-line html-div" data-testid="code-cell" data-line-number="495" style="position:relative"> table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span> = <span class="pl-c1">ImMax</span>(table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span> - TABLE_BORDER_SIZE, table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">y</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC496" class="react-file-line html-div" data-testid="code-cell" data-line-number="496" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC497" class="react-file-line html-div" data-testid="code-cell" data-line-number="497" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC498" class="react-file-line html-div" data-testid="code-cell" data-line-number="498" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC499" class="react-file-line html-div" data-testid="code-cell" data-line-number="499" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Padding and Spacing</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC500" class="react-file-line html-div" data-testid="code-cell" data-line-number="500" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - None ........Content..... Pad .....Content........</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC501" class="react-file-line html-div" data-testid="code-cell" data-line-number="501" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - PadOuter | Pad ..Content..... Pad .....Content.. Pad |</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC502" class="react-file-line html-div" data-testid="code-cell" data-line-number="502" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - PadInner ........Content.. Pad | Pad ..Content........</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC503" class="react-file-line html-div" data-testid="code-cell" data-line-number="503" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> - PadOuter+PadInner | Pad ..Content.. Pad | Pad ..Content.. Pad |</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC504" class="react-file-line html-div" data-testid="code-cell" data-line-number="504" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> pad_outer_x = (flags & ImGuiTableFlags_NoPadOuterX) ? <span class="pl-c1">false</span> : (flags & ImGuiTableFlags_PadOuterX) ? <span class="pl-c1">true</span> : (flags & ImGuiTableFlags_BordersOuterV) != <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC505" class="react-file-line html-div" data-testid="code-cell" data-line-number="505" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> pad_inner_x = (flags & ImGuiTableFlags_NoPadInnerX) ? <span class="pl-c1">false</span> : <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC506" class="react-file-line html-div" data-testid="code-cell" data-line-number="506" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> inner_spacing_for_border = (flags & ImGuiTableFlags_BordersInnerV) ? TABLE_BORDER_SIZE : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC507" class="react-file-line html-div" data-testid="code-cell" data-line-number="507" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> inner_spacing_explicit = (pad_inner_x && (flags & ImGuiTableFlags_BordersInnerV) == <span class="pl-c1">0</span>) ? g.<span class="pl-smi">Style</span>.<span class="pl-smi">CellPadding</span>.<span class="pl-smi">x</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC508" class="react-file-line html-div" data-testid="code-cell" data-line-number="508" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> inner_padding_explicit = (pad_inner_x && (flags & ImGuiTableFlags_BordersInnerV) != <span class="pl-c1">0</span>) ? g.<span class="pl-smi">Style</span>.<span class="pl-smi">CellPadding</span>.<span class="pl-smi">x</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC509" class="react-file-line html-div" data-testid="code-cell" data-line-number="509" style="position:relative"> table-><span class="pl-smi">CellSpacingX1</span> = inner_spacing_explicit + inner_spacing_for_border;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC510" class="react-file-line html-div" data-testid="code-cell" data-line-number="510" style="position:relative"> table-><span class="pl-smi">CellSpacingX2</span> = inner_spacing_explicit;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC511" class="react-file-line html-div" data-testid="code-cell" data-line-number="511" style="position:relative"> table-><span class="pl-smi">CellPaddingX</span> = inner_padding_explicit;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC512" class="react-file-line html-div" data-testid="code-cell" data-line-number="512" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC513" class="react-file-line html-div" data-testid="code-cell" data-line-number="513" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> outer_padding_for_border = (flags & ImGuiTableFlags_BordersOuterV) ? TABLE_BORDER_SIZE : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC514" class="react-file-line html-div" data-testid="code-cell" data-line-number="514" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> outer_padding_explicit = pad_outer_x ? g.<span class="pl-smi">Style</span>.<span class="pl-smi">CellPadding</span>.<span class="pl-smi">x</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC515" class="react-file-line html-div" data-testid="code-cell" data-line-number="515" style="position:relative"> table-><span class="pl-smi">OuterPaddingX</span> = (outer_padding_for_border + outer_padding_explicit) - table-><span class="pl-smi">CellPaddingX</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC516" class="react-file-line html-div" data-testid="code-cell" data-line-number="516" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC517" class="react-file-line html-div" data-testid="code-cell" data-line-number="517" style="position:relative"> table-><span class="pl-smi">CurrentColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC518" class="react-file-line html-div" data-testid="code-cell" data-line-number="518" style="position:relative"> table-><span class="pl-smi">CurrentRow</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC519" class="react-file-line html-div" data-testid="code-cell" data-line-number="519" style="position:relative"> table-><span class="pl-smi">RowBgColorCounter</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC520" class="react-file-line html-div" data-testid="code-cell" data-line-number="520" style="position:relative"> table-><span class="pl-smi">LastRowFlags</span> = ImGuiTableRowFlags_None;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC521" class="react-file-line html-div" data-testid="code-cell" data-line-number="521" style="position:relative"> table-><span class="pl-smi">InnerClipRect</span> = (inner_window == outer_window) ? table-><span class="pl-smi">WorkRect</span> : inner_window-><span class="pl-smi">ClipRect</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC522" class="react-file-line html-div" data-testid="code-cell" data-line-number="522" style="position:relative"> table-><span class="pl-smi">InnerClipRect</span>.<span class="pl-c1">ClipWith</span>(table-><span class="pl-smi">WorkRect</span>); <span class="pl-c"><span class="pl-c">//</span> We need this to honor inner_width</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC523" class="react-file-line html-div" data-testid="code-cell" data-line-number="523" style="position:relative"> table-><span class="pl-smi">InnerClipRect</span>.<span class="pl-c1">ClipWithFull</span>(table-><span class="pl-smi">HostClipRect</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC524" class="react-file-line html-div" data-testid="code-cell" data-line-number="524" style="position:relative"> table-><span class="pl-smi">InnerClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span> = (flags & ImGuiTableFlags_NoHostExtendY) ? <span class="pl-c1">ImMin</span>(table-><span class="pl-smi">InnerClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span>, inner_window-><span class="pl-smi">WorkRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span>) : table-><span class="pl-smi">HostClipRect</span>.<span class="pl-smi">Max</span>.<span class="pl-smi">y</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC525" class="react-file-line html-div" data-testid="code-cell" data-line-number="525" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC526" class="react-file-line html-div" data-testid="code-cell" data-line-number="526" style="position:relative"> table-><span class="pl-smi">RowPosY1</span> = table-><span class="pl-smi">RowPosY2</span> = table-><span class="pl-smi">WorkRect</span>.<span class="pl-smi">Min</span>.<span class="pl-smi">y</span>; <span class="pl-c"><span class="pl-c">//</span> This is needed somehow</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC527" class="react-file-line html-div" data-testid="code-cell" data-line-number="527" style="position:relative"> table-><span class="pl-smi">RowTextBaseline</span> = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> This will be cleared again by TableBeginRow()</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC528" class="react-file-line html-div" data-testid="code-cell" data-line-number="528" style="position:relative"> table-><span class="pl-smi">RowCellPaddingY</span> = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC529" class="react-file-line html-div" data-testid="code-cell" data-line-number="529" style="position:relative"> table-><span class="pl-smi">FreezeRowsRequest</span> = table-><span class="pl-smi">FreezeRowsCount</span> = <span class="pl-c1">0</span>; <span class="pl-c"><span class="pl-c">//</span> This will be setup by TableSetupScrollFreeze(), if any</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC530" class="react-file-line html-div" data-testid="code-cell" data-line-number="530" style="position:relative"> table-><span class="pl-smi">FreezeColumnsRequest</span> = table-><span class="pl-smi">FreezeColumnsCount</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC531" class="react-file-line html-div" data-testid="code-cell" data-line-number="531" style="position:relative"> table-><span class="pl-smi">IsUnfrozenRows</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC532" class="react-file-line html-div" data-testid="code-cell" data-line-number="532" style="position:relative"> table-><span class="pl-smi">DeclColumnsCount</span> = table-><span class="pl-smi">AngledHeadersCount</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC533" class="react-file-line html-div" data-testid="code-cell" data-line-number="533" style="position:relative"> <span class="pl-k">if</span> (previous_frame_active + <span class="pl-c1">1</span> < g.<span class="pl-smi">FrameCount</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC534" class="react-file-line html-div" data-testid="code-cell" data-line-number="534" style="position:relative"> table-><span class="pl-smi">IsActiveIdInTable</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC535" class="react-file-line html-div" data-testid="code-cell" data-line-number="535" style="position:relative"> table-><span class="pl-smi">AngledHeadersHeight</span> = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC536" class="react-file-line html-div" data-testid="code-cell" data-line-number="536" style="position:relative"> temp_data-><span class="pl-smi">AngledHeadersExtraWidth</span> = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC537" class="react-file-line html-div" data-testid="code-cell" data-line-number="537" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC538" class="react-file-line html-div" data-testid="code-cell" data-line-number="538" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Using opaque colors facilitate overlapping lines of the grid, otherwise we'd need to improve TableDrawBorders()</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC539" class="react-file-line html-div" data-testid="code-cell" data-line-number="539" style="position:relative"> table-><span class="pl-smi">BorderColorStrong</span> = <span class="pl-c1">GetColorU32</span>(ImGuiCol_TableBorderStrong);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC540" class="react-file-line html-div" data-testid="code-cell" data-line-number="540" style="position:relative"> table-><span class="pl-smi">BorderColorLight</span> = <span class="pl-c1">GetColorU32</span>(ImGuiCol_TableBorderLight);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC541" class="react-file-line html-div" data-testid="code-cell" data-line-number="541" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC542" class="react-file-line html-div" data-testid="code-cell" data-line-number="542" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Make table current</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC543" class="react-file-line html-div" data-testid="code-cell" data-line-number="543" style="position:relative"> g.<span class="pl-smi">CurrentTable</span> = table;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC544" class="react-file-line html-div" data-testid="code-cell" data-line-number="544" style="position:relative"> outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">NavIsScrollPushableX</span> = <span class="pl-c1">false</span>; <span class="pl-c"><span class="pl-c">//</span> Shortcut for NavUpdateCurrentWindowIsScrollPushableX();</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC545" class="react-file-line html-div" data-testid="code-cell" data-line-number="545" style="position:relative"> outer_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CurrentTableIdx</span> = table_idx;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC546" class="react-file-line html-div" data-testid="code-cell" data-line-number="546" style="position:relative"> <span class="pl-k">if</span> (inner_window != outer_window) <span class="pl-c"><span class="pl-c">//</span> So EndChild() within the inner window can restore the table properly.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC547" class="react-file-line html-div" data-testid="code-cell" data-line-number="547" style="position:relative"> inner_window-><span class="pl-smi">DC</span>.<span class="pl-smi">CurrentTableIdx</span> = table_idx;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC548" class="react-file-line html-div" data-testid="code-cell" data-line-number="548" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC549" class="react-file-line html-div" data-testid="code-cell" data-line-number="549" style="position:relative"> <span class="pl-k">if</span> ((previous_flags & ImGuiTableFlags_Reorderable) && (flags & ImGuiTableFlags_Reorderable) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC550" class="react-file-line html-div" data-testid="code-cell" data-line-number="550" style="position:relative"> table-><span class="pl-smi">IsResetDisplayOrderRequest</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC551" class="react-file-line html-div" data-testid="code-cell" data-line-number="551" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC552" class="react-file-line html-div" data-testid="code-cell" data-line-number="552" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Mark as used to avoid GC</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC553" class="react-file-line html-div" data-testid="code-cell" data-line-number="553" style="position:relative"> <span class="pl-k">if</span> (table_idx >= g.<span class="pl-smi">TablesLastTimeActive</span>.<span class="pl-smi">Size</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC554" class="react-file-line html-div" data-testid="code-cell" data-line-number="554" style="position:relative"> g.<span class="pl-smi">TablesLastTimeActive</span>.<span class="pl-c1">resize</span>(table_idx + <span class="pl-c1">1</span>, -<span class="pl-c1">1</span>.<span class="pl-c1">0f</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC555" class="react-file-line html-div" data-testid="code-cell" data-line-number="555" style="position:relative"> g.<span class="pl-smi">TablesLastTimeActive</span>[table_idx] = (<span class="pl-k">float</span>)g.<span class="pl-smi">Time</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC556" class="react-file-line html-div" data-testid="code-cell" data-line-number="556" style="position:relative"> temp_data-><span class="pl-smi">LastTimeActive</span> = (<span class="pl-k">float</span>)g.<span class="pl-smi">Time</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC557" class="react-file-line html-div" data-testid="code-cell" data-line-number="557" style="position:relative"> table-><span class="pl-smi">MemoryCompacted</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC558" class="react-file-line html-div" data-testid="code-cell" data-line-number="558" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC559" class="react-file-line html-div" data-testid="code-cell" data-line-number="559" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Setup memory buffer (clear data if columns count changed)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC560" class="react-file-line html-div" data-testid="code-cell" data-line-number="560" style="position:relative"> ImGuiTableColumn* old_columns_to_preserve = <span class="pl-c1">NULL</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC561" class="react-file-line html-div" data-testid="code-cell" data-line-number="561" style="position:relative"> <span class="pl-k">void</span>* old_columns_raw_data = <span class="pl-c1">NULL</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC562" class="react-file-line html-div" data-testid="code-cell" data-line-number="562" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> old_columns_count = table-><span class="pl-smi">Columns</span>.<span class="pl-c1">size</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC563" class="react-file-line html-div" data-testid="code-cell" data-line-number="563" style="position:relative"> <span class="pl-k">if</span> (old_columns_count != <span class="pl-c1">0</span> && old_columns_count != columns_count)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC564" class="react-file-line html-div" data-testid="code-cell" data-line-number="564" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC565" class="react-file-line html-div" data-testid="code-cell" data-line-number="565" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Attempt to preserve width on column count change (#4046)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC566" class="react-file-line html-div" data-testid="code-cell" data-line-number="566" style="position:relative"> old_columns_to_preserve = table-><span class="pl-smi">Columns</span>.<span class="pl-smi">Data</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC567" class="react-file-line html-div" data-testid="code-cell" data-line-number="567" style="position:relative"> old_columns_raw_data = table-><span class="pl-smi">RawData</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC568" class="react-file-line html-div" data-testid="code-cell" data-line-number="568" style="position:relative"> table-><span class="pl-smi">RawData</span> = <span class="pl-c1">NULL</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC569" class="react-file-line html-div" data-testid="code-cell" data-line-number="569" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC570" class="react-file-line html-div" data-testid="code-cell" data-line-number="570" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">RawData</span> == <span class="pl-c1">NULL</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC571" class="react-file-line html-div" data-testid="code-cell" data-line-number="571" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC572" class="react-file-line html-div" data-testid="code-cell" data-line-number="572" style="position:relative"> <span class="pl-c1">TableBeginInitMemory</span>(table, columns_count);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC573" class="react-file-line html-div" data-testid="code-cell" data-line-number="573" style="position:relative"> table-><span class="pl-smi">IsInitializing</span> = table-><span class="pl-smi">IsSettingsRequestLoad</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC574" class="react-file-line html-div" data-testid="code-cell" data-line-number="574" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC575" class="react-file-line html-div" data-testid="code-cell" data-line-number="575" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">IsResetAllRequest</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC576" class="react-file-line html-div" data-testid="code-cell" data-line-number="576" style="position:relative"> <span class="pl-c1">TableResetSettings</span>(table);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC577" class="react-file-line html-div" data-testid="code-cell" data-line-number="577" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">IsInitializing</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC578" class="react-file-line html-div" data-testid="code-cell" data-line-number="578" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC579" class="react-file-line html-div" data-testid="code-cell" data-line-number="579" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Initialize</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC580" class="react-file-line html-div" data-testid="code-cell" data-line-number="580" style="position:relative"> table-><span class="pl-smi">SettingsOffset</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC581" class="react-file-line html-div" data-testid="code-cell" data-line-number="581" style="position:relative"> table-><span class="pl-smi">IsSortSpecsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC582" class="react-file-line html-div" data-testid="code-cell" data-line-number="582" style="position:relative"> table-><span class="pl-smi">IsSettingsDirty</span> = <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> Records itself into .ini file even when in default state (#7934)</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC583" class="react-file-line html-div" data-testid="code-cell" data-line-number="583" style="position:relative"> table-><span class="pl-smi">InstanceInteracted</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC584" class="react-file-line html-div" data-testid="code-cell" data-line-number="584" style="position:relative"> table-><span class="pl-smi">ContextPopupColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC585" class="react-file-line html-div" data-testid="code-cell" data-line-number="585" style="position:relative"> table-><span class="pl-smi">ReorderColumn</span> = table-><span class="pl-smi">ResizedColumn</span> = table-><span class="pl-smi">LastResizedColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC586" class="react-file-line html-div" data-testid="code-cell" data-line-number="586" style="position:relative"> table-><span class="pl-smi">AutoFitSingleColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC587" class="react-file-line html-div" data-testid="code-cell" data-line-number="587" style="position:relative"> table-><span class="pl-smi">HoveredColumnBody</span> = table-><span class="pl-smi">HoveredColumnBorder</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC588" class="react-file-line html-div" data-testid="code-cell" data-line-number="588" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> n = <span class="pl-c1">0</span>; n < columns_count; n++)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC589" class="react-file-line html-div" data-testid="code-cell" data-line-number="589" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC590" class="react-file-line html-div" data-testid="code-cell" data-line-number="590" style="position:relative"> ImGuiTableColumn* column = &table-><span class="pl-smi">Columns</span>[n];</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC591" class="react-file-line html-div" data-testid="code-cell" data-line-number="591" style="position:relative"> <span class="pl-k">if</span> (old_columns_to_preserve && n < old_columns_count)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC592" class="react-file-line html-div" data-testid="code-cell" data-line-number="592" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC593" class="react-file-line html-div" data-testid="code-cell" data-line-number="593" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME: We don't attempt to preserve column order in this path.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC594" class="react-file-line html-div" data-testid="code-cell" data-line-number="594" style="position:relative"> *column = old_columns_to_preserve[n];</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC595" class="react-file-line html-div" data-testid="code-cell" data-line-number="595" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC596" class="react-file-line html-div" data-testid="code-cell" data-line-number="596" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC597" class="react-file-line html-div" data-testid="code-cell" data-line-number="597" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC598" class="react-file-line html-div" data-testid="code-cell" data-line-number="598" style="position:relative"> <span class="pl-k">float</span> width_auto = column-><span class="pl-smi">WidthAuto</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC599" class="react-file-line html-div" data-testid="code-cell" data-line-number="599" style="position:relative"> *column = <span class="pl-c1">ImGuiTableColumn</span>();</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC600" class="react-file-line html-div" data-testid="code-cell" data-line-number="600" style="position:relative"> column-><span class="pl-smi">WidthAuto</span> = width_auto;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC601" class="react-file-line html-div" data-testid="code-cell" data-line-number="601" style="position:relative"> column-><span class="pl-smi">IsPreserveWidthAuto</span> = <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> Preserve WidthAuto when reinitializing a live table: not technically necessary but remove a visible flicker</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC602" class="react-file-line html-div" data-testid="code-cell" data-line-number="602" style="position:relative"> column-><span class="pl-smi">IsEnabled</span> = column-><span class="pl-smi">IsUserEnabled</span> = column-><span class="pl-smi">IsUserEnabledNextFrame</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC603" class="react-file-line html-div" data-testid="code-cell" data-line-number="603" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC604" class="react-file-line html-div" data-testid="code-cell" data-line-number="604" style="position:relative"> column-><span class="pl-smi">DisplayOrder</span> = table-><span class="pl-smi">DisplayOrderToIndex</span>[n] = (ImGuiTableColumnIdx)n;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC605" class="react-file-line html-div" data-testid="code-cell" data-line-number="605" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC606" class="react-file-line html-div" data-testid="code-cell" data-line-number="606" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC607" class="react-file-line html-div" data-testid="code-cell" data-line-number="607" style="position:relative"> <span class="pl-k">if</span> (old_columns_raw_data)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC608" class="react-file-line html-div" data-testid="code-cell" data-line-number="608" style="position:relative"> <span class="pl-c1">IM_FREE</span>(old_columns_raw_data);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC609" class="react-file-line html-div" data-testid="code-cell" data-line-number="609" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC610" class="react-file-line html-div" data-testid="code-cell" data-line-number="610" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Load settings</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC611" class="react-file-line html-div" data-testid="code-cell" data-line-number="611" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">IsSettingsRequestLoad</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC612" class="react-file-line html-div" data-testid="code-cell" data-line-number="612" style="position:relative"> <span class="pl-c1">TableLoadSettings</span>(table);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC613" class="react-file-line html-div" data-testid="code-cell" data-line-number="613" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC614" class="react-file-line html-div" data-testid="code-cell" data-line-number="614" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Handle DPI/font resize</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC615" class="react-file-line html-div" data-testid="code-cell" data-line-number="615" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> This is designed to facilitate DPI changes with the assumption that e.g. style.CellPadding has been scaled as well.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC616" class="react-file-line html-div" data-testid="code-cell" data-line-number="616" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> It will also react to changing fonts with mixed results. It doesn't need to be perfect but merely provide a decent transition.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC617" class="react-file-line html-div" data-testid="code-cell" data-line-number="617" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME-DPI: Provide consistent standards for reference size. Perhaps using g.CurrentDpiScale would be more self explanatory.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC618" class="react-file-line html-div" data-testid="code-cell" data-line-number="618" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> This is will lead us to non-rounded WidthRequest in columns, which should work but is a poorly tested path.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC619" class="react-file-line html-div" data-testid="code-cell" data-line-number="619" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> new_ref_scale_unit = g.<span class="pl-smi">FontSize</span>; <span class="pl-c"><span class="pl-c">//</span> g.Font->GetCharAdvance('A') ?</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC620" class="react-file-line html-div" data-testid="code-cell" data-line-number="620" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">RefScale</span> != <span class="pl-c1">0</span>.<span class="pl-c1">0f</span> && table-><span class="pl-smi">RefScale</span> != new_ref_scale_unit)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC621" class="react-file-line html-div" data-testid="code-cell" data-line-number="621" style="position:relative"> {</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC622" class="react-file-line html-div" data-testid="code-cell" data-line-number="622" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> scale_factor = new_ref_scale_unit / table-><span class="pl-smi">RefScale</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC623" class="react-file-line html-div" data-testid="code-cell" data-line-number="623" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span>IMGUI_DEBUG_PRINT("[table] %08X RefScaleUnit %.3f -> %.3f, scaling width by %.3f\n", table->ID, table->RefScaleUnit, new_ref_scale_unit, scale_factor);</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC624" class="react-file-line html-div" data-testid="code-cell" data-line-number="624" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> n = <span class="pl-c1">0</span>; n < columns_count; n++)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC625" class="react-file-line html-div" data-testid="code-cell" data-line-number="625" style="position:relative"> table-><span class="pl-smi">Columns</span>[n].<span class="pl-smi">WidthRequest</span> = table-><span class="pl-smi">Columns</span>[n].<span class="pl-smi">WidthRequest</span> * scale_factor;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC626" class="react-file-line html-div" data-testid="code-cell" data-line-number="626" style="position:relative"> }</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC627" class="react-file-line html-div" data-testid="code-cell" data-line-number="627" style="position:relative"> table-><span class="pl-smi">RefScale</span> = new_ref_scale_unit;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC628" class="react-file-line html-div" data-testid="code-cell" data-line-number="628" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC629" class="react-file-line html-div" data-testid="code-cell" data-line-number="629" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Disable output until user calls TableNextRow() or TableNextColumn() leading to the TableUpdateLayout() call..</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC630" class="react-file-line html-div" data-testid="code-cell" data-line-number="630" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> This is not strictly necessary but will reduce cases were "out of table" output will be misleading to the user.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC631" class="react-file-line html-div" data-testid="code-cell" data-line-number="631" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Because we cannot safely assert in EndTable() when no rows have been created, this seems like our best option.</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC632" class="react-file-line html-div" data-testid="code-cell" data-line-number="632" style="position:relative"> inner_window-><span class="pl-smi">SkipItems</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC633" class="react-file-line html-div" data-testid="code-cell" data-line-number="633" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC634" class="react-file-line html-div" data-testid="code-cell" data-line-number="634" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Clear names</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC635" class="react-file-line html-div" data-testid="code-cell" data-line-number="635" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> At this point the ->NameOffset field of each column will be invalid until TableUpdateLayout() or the first call to TableSetupColumn()</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC636" class="react-file-line html-div" data-testid="code-cell" data-line-number="636" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">ColumnsNames</span>.<span class="pl-smi">Buf</span>.<span class="pl-smi">Size</span> > <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC637" class="react-file-line html-div" data-testid="code-cell" data-line-number="637" style="position:relative"> table-><span class="pl-smi">ColumnsNames</span>.<span class="pl-smi">Buf</span>.<span class="pl-c1">resize</span>(<span class="pl-c1">0</span>);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC638" class="react-file-line html-div" data-testid="code-cell" data-line-number="638" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC639" class="react-file-line html-div" data-testid="code-cell" data-line-number="639" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Apply queued resizing/reordering/hiding requests</span></div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC640" class="react-file-line html-div" data-testid="code-cell" data-line-number="640" style="position:relative"> <span class="pl-c1">TableBeginApplyRequests</span>(table);</div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC641" class="react-file-line html-div" data-testid="code-cell" data-line-number="641" style="position:relative"> </div></div></div><div class="child-of-line-316 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC642" class="react-file-line html-div" data-testid="code-cell" data-line-number="642" style="position:relative"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC643" class="react-file-line html-div" data-testid="code-cell" data-line-number="643" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC644" class="react-file-line html-div" data-testid="code-cell" data-line-number="644" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC645" class="react-file-line html-div" data-testid="code-cell" data-line-number="645" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> For reference, the average total _allocation count_ for a table is:</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC646" class="react-file-line html-div" data-testid="code-cell" data-line-number="646" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> + 0 (for ImGuiTable instance, we are pooling allocations in g.Tables[])</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC647" class="react-file-line html-div" data-testid="code-cell" data-line-number="647" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> + 1 (for table->RawData allocated below)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC648" class="react-file-line html-div" data-testid="code-cell" data-line-number="648" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> + 1 (for table->ColumnsNames, if names are used)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC649" class="react-file-line html-div" data-testid="code-cell" data-line-number="649" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Shared allocations for the maximum number of simultaneously nested tables (generally a very small number)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC650" class="react-file-line html-div" data-testid="code-cell" data-line-number="650" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> + 1 (for table->Splitter._Channels)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC651" class="react-file-line html-div" data-testid="code-cell" data-line-number="651" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> + 2 * active_channels_count (for ImDrawCmd and ImDrawIdx buffers inside channels)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC652" class="react-file-line html-div" data-testid="code-cell" data-line-number="652" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Where active_channels_count is variable but often == columns_count or == columns_count + 1, see TableSetupDrawChannels() for details.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC653" class="react-file-line html-div" data-testid="code-cell" data-line-number="653" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Unused channels don't perform their +2 allocations.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC654" class="react-file-line html-div" data-testid="code-cell" data-line-number="654" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">ImGui::TableBeginInitMemory</span>(ImGuiTable* table, <span class="pl-k">int</span> columns_count)</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC655" class="react-file-line html-div" data-testid="code-cell" data-line-number="655" style="position:relative">{</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC656" class="react-file-line html-div" data-testid="code-cell" data-line-number="656" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Allocate single buffer for our arrays</span></div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC657" class="react-file-line html-div" data-testid="code-cell" data-line-number="657" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> columns_bit_array_size = (<span class="pl-k">int</span>)<span class="pl-c1">ImBitArrayGetStorageSizeInBytes</span>(columns_count);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC658" class="react-file-line html-div" data-testid="code-cell" data-line-number="658" style="position:relative"> ImSpanAllocator<<span class="pl-c1">6</span>> span_allocator;</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC659" class="react-file-line html-div" data-testid="code-cell" data-line-number="659" style="position:relative"> span_allocator.<span class="pl-c1">Reserve</span>(<span class="pl-c1">0</span>, columns_count * <span class="pl-k">sizeof</span>(ImGuiTableColumn));</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC660" class="react-file-line html-div" data-testid="code-cell" data-line-number="660" style="position:relative"> span_allocator.<span class="pl-c1">Reserve</span>(<span class="pl-c1">1</span>, columns_count * <span class="pl-k">sizeof</span>(ImGuiTableColumnIdx));</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC661" class="react-file-line html-div" data-testid="code-cell" data-line-number="661" style="position:relative"> span_allocator.<span class="pl-c1">Reserve</span>(<span class="pl-c1">2</span>, columns_count * <span class="pl-k">sizeof</span>(ImGuiTableCellData), <span class="pl-c1">4</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC662" class="react-file-line html-div" data-testid="code-cell" data-line-number="662" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> n = <span class="pl-c1">3</span>; n < <span class="pl-c1">6</span>; n++)</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC663" class="react-file-line html-div" data-testid="code-cell" data-line-number="663" style="position:relative"> span_allocator.<span class="pl-c1">Reserve</span>(n, columns_bit_array_size);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC664" class="react-file-line html-div" data-testid="code-cell" data-line-number="664" style="position:relative"> table-><span class="pl-smi">RawData</span> = <span class="pl-c1">IM_ALLOC</span>(span_allocator.<span class="pl-c1">GetArenaSizeInBytes</span>());</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC665" class="react-file-line html-div" data-testid="code-cell" data-line-number="665" style="position:relative"> <span class="pl-c1">memset</span>(table-><span class="pl-smi">RawData</span>, <span class="pl-c1">0</span>, span_allocator.<span class="pl-c1">GetArenaSizeInBytes</span>());</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC666" class="react-file-line html-div" data-testid="code-cell" data-line-number="666" style="position:relative"> span_allocator.<span class="pl-c1">SetArenaBasePtr</span>(table-><span class="pl-smi">RawData</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC667" class="react-file-line html-div" data-testid="code-cell" data-line-number="667" style="position:relative"> span_allocator.<span class="pl-c1">GetSpan</span>(<span class="pl-c1">0</span>, &table-><span class="pl-smi">Columns</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC668" class="react-file-line html-div" data-testid="code-cell" data-line-number="668" style="position:relative"> span_allocator.<span class="pl-c1">GetSpan</span>(<span class="pl-c1">1</span>, &table-><span class="pl-smi">DisplayOrderToIndex</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC669" class="react-file-line html-div" data-testid="code-cell" data-line-number="669" style="position:relative"> span_allocator.<span class="pl-c1">GetSpan</span>(<span class="pl-c1">2</span>, &table-><span class="pl-smi">RowCellData</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC670" class="react-file-line html-div" data-testid="code-cell" data-line-number="670" style="position:relative"> table-><span class="pl-smi">EnabledMaskByDisplayOrder</span> = (ImU32*)span_allocator.<span class="pl-c1">GetSpanPtrBegin</span>(<span class="pl-c1">3</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC671" class="react-file-line html-div" data-testid="code-cell" data-line-number="671" style="position:relative"> table-><span class="pl-smi">EnabledMaskByIndex</span> = (ImU32*)span_allocator.<span class="pl-c1">GetSpanPtrBegin</span>(<span class="pl-c1">4</span>);</div></div></div><div class="child-of-line-653 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC672" class="react-file-line html-div" data-testid="code-cell" data-line-number="672" style="position:relative"> table-><span class="pl-smi">VisibleMaskByIndex</span> = (ImU32*)span_allocator.<span class="pl-c1">GetSpanPtrBegin</span>(<span class="pl-c1">5</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC673" class="react-file-line html-div" data-testid="code-cell" data-line-number="673" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC674" class="react-file-line html-div" data-testid="code-cell" data-line-number="674" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC675" class="react-file-line html-div" data-testid="code-cell" data-line-number="675" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Apply queued resizing/reordering/hiding requests</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC676" class="react-file-line html-div" data-testid="code-cell" data-line-number="676" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">ImGui::TableBeginApplyRequests</span>(ImGuiTable* table)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC677" class="react-file-line html-div" data-testid="code-cell" data-line-number="677" style="position:relative">{</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC678" class="react-file-line html-div" data-testid="code-cell" data-line-number="678" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Handle resizing request</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC679" class="react-file-line html-div" data-testid="code-cell" data-line-number="679" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> (We process this in the TableBegin() of the first instance of each table)</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC680" class="react-file-line html-div" data-testid="code-cell" data-line-number="680" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Contains columns if our work area doesn't allow for scrolling?</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC681" class="react-file-line html-div" data-testid="code-cell" data-line-number="681" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">InstanceCurrent</span> == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC682" class="react-file-line html-div" data-testid="code-cell" data-line-number="682" style="position:relative"> {</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC683" class="react-file-line html-div" data-testid="code-cell" data-line-number="683" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">ResizedColumn</span> != -<span class="pl-c1">1</span> && table-><span class="pl-smi">ResizedColumnNextWidth</span> != FLT_MAX)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC684" class="react-file-line html-div" data-testid="code-cell" data-line-number="684" style="position:relative"> <span class="pl-c1">TableSetColumnWidth</span>(table-><span class="pl-smi">ResizedColumn</span>, table-><span class="pl-smi">ResizedColumnNextWidth</span>);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC685" class="react-file-line html-div" data-testid="code-cell" data-line-number="685" style="position:relative"> table-><span class="pl-smi">LastResizedColumn</span> = table-><span class="pl-smi">ResizedColumn</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC686" class="react-file-line html-div" data-testid="code-cell" data-line-number="686" style="position:relative"> table-><span class="pl-smi">ResizedColumnNextWidth</span> = FLT_MAX;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC687" class="react-file-line html-div" data-testid="code-cell" data-line-number="687" style="position:relative"> table-><span class="pl-smi">ResizedColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC688" class="react-file-line html-div" data-testid="code-cell" data-line-number="688" style="position:relative"> </div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC689" class="react-file-line html-div" data-testid="code-cell" data-line-number="689" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Process auto-fit for single column, which is a special case for stretch columns and fixed columns with FixedSame policy.</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC690" class="react-file-line html-div" data-testid="code-cell" data-line-number="690" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Would be nice to redistribute available stretch space accordingly to other weights, instead of giving it all to siblings.</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC691" class="react-file-line html-div" data-testid="code-cell" data-line-number="691" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">AutoFitSingleColumn</span> != -<span class="pl-c1">1</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC692" class="react-file-line html-div" data-testid="code-cell" data-line-number="692" style="position:relative"> {</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC693" class="react-file-line html-div" data-testid="code-cell" data-line-number="693" style="position:relative"> <span class="pl-c1">TableSetColumnWidth</span>(table-><span class="pl-smi">AutoFitSingleColumn</span>, table-><span class="pl-smi">Columns</span>[table-><span class="pl-smi">AutoFitSingleColumn</span>].<span class="pl-smi">WidthAuto</span>);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC694" class="react-file-line html-div" data-testid="code-cell" data-line-number="694" style="position:relative"> table-><span class="pl-smi">AutoFitSingleColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC695" class="react-file-line html-div" data-testid="code-cell" data-line-number="695" style="position:relative"> }</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC696" class="react-file-line html-div" data-testid="code-cell" data-line-number="696" style="position:relative"> }</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC697" class="react-file-line html-div" data-testid="code-cell" data-line-number="697" style="position:relative"> </div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC698" class="react-file-line html-div" data-testid="code-cell" data-line-number="698" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Handle reordering request</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC699" class="react-file-line html-div" data-testid="code-cell" data-line-number="699" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Note: we don't clear ReorderColumn after handling the request.</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC700" class="react-file-line html-div" data-testid="code-cell" data-line-number="700" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">InstanceCurrent</span> == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC701" class="react-file-line html-div" data-testid="code-cell" data-line-number="701" style="position:relative"> {</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC702" class="react-file-line html-div" data-testid="code-cell" data-line-number="702" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">HeldHeaderColumn</span> == -<span class="pl-c1">1</span> && table-><span class="pl-smi">ReorderColumn</span> != -<span class="pl-c1">1</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC703" class="react-file-line html-div" data-testid="code-cell" data-line-number="703" style="position:relative"> table-><span class="pl-smi">ReorderColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC704" class="react-file-line html-div" data-testid="code-cell" data-line-number="704" style="position:relative"> table-><span class="pl-smi">HeldHeaderColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC705" class="react-file-line html-div" data-testid="code-cell" data-line-number="705" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">ReorderColumn</span> != -<span class="pl-c1">1</span> && table-><span class="pl-smi">ReorderColumnDir</span> != <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC706" class="react-file-line html-div" data-testid="code-cell" data-line-number="706" style="position:relative"> {</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC707" class="react-file-line html-div" data-testid="code-cell" data-line-number="707" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> We need to handle reordering across hidden columns.</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC708" class="react-file-line html-div" data-testid="code-cell" data-line-number="708" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> In the configuration below, moving C to the right of E will lead to:</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC709" class="react-file-line html-div" data-testid="code-cell" data-line-number="709" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> ... C [D] E ---> ... [D] E C (Column name/index)</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC710" class="react-file-line html-div" data-testid="code-cell" data-line-number="710" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> ... 2 3 4 ... 2 3 4 (Display order)</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC711" class="react-file-line html-div" data-testid="code-cell" data-line-number="711" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> reorder_dir = table-><span class="pl-smi">ReorderColumnDir</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC712" class="react-file-line html-div" data-testid="code-cell" data-line-number="712" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(reorder_dir == -<span class="pl-c1">1</span> || reorder_dir == +<span class="pl-c1">1</span>);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC713" class="react-file-line html-div" data-testid="code-cell" data-line-number="713" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_Reorderable);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC714" class="react-file-line html-div" data-testid="code-cell" data-line-number="714" style="position:relative"> ImGuiTableColumn* src_column = &table-><span class="pl-smi">Columns</span>[table-><span class="pl-smi">ReorderColumn</span>];</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC715" class="react-file-line html-div" data-testid="code-cell" data-line-number="715" style="position:relative"> ImGuiTableColumn* dst_column = &table-><span class="pl-smi">Columns</span>[(reorder_dir == -<span class="pl-c1">1</span>) ? src_column-><span class="pl-smi">PrevEnabledColumn</span> : src_column-><span class="pl-smi">NextEnabledColumn</span>];</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC716" class="react-file-line html-div" data-testid="code-cell" data-line-number="716" style="position:relative"> <span class="pl-c1">IM_UNUSED</span>(dst_column);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC717" class="react-file-line html-div" data-testid="code-cell" data-line-number="717" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> src_order = src_column-><span class="pl-smi">DisplayOrder</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC718" class="react-file-line html-div" data-testid="code-cell" data-line-number="718" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> dst_order = dst_column-><span class="pl-smi">DisplayOrder</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC719" class="react-file-line html-div" data-testid="code-cell" data-line-number="719" style="position:relative"> src_column-><span class="pl-smi">DisplayOrder</span> = (ImGuiTableColumnIdx)dst_order;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC720" class="react-file-line html-div" data-testid="code-cell" data-line-number="720" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> order_n = src_order + reorder_dir; order_n != dst_order + reorder_dir; order_n += reorder_dir)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC721" class="react-file-line html-div" data-testid="code-cell" data-line-number="721" style="position:relative"> table-><span class="pl-smi">Columns</span>[table-><span class="pl-smi">DisplayOrderToIndex</span>[order_n]].<span class="pl-smi">DisplayOrder</span> -= (ImGuiTableColumnIdx)reorder_dir;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC722" class="react-file-line html-div" data-testid="code-cell" data-line-number="722" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(dst_column-><span class="pl-smi">DisplayOrder</span> == dst_order - reorder_dir);</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC723" class="react-file-line html-div" data-testid="code-cell" data-line-number="723" style="position:relative"> </div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC724" class="react-file-line html-div" data-testid="code-cell" data-line-number="724" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Display order is stored in both columns->IndexDisplayOrder and table->DisplayOrder[]. Rebuild later from the former.</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC725" class="react-file-line html-div" data-testid="code-cell" data-line-number="725" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> column_n = <span class="pl-c1">0</span>; column_n < table-><span class="pl-smi">ColumnsCount</span>; column_n++)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC726" class="react-file-line html-div" data-testid="code-cell" data-line-number="726" style="position:relative"> table-><span class="pl-smi">DisplayOrderToIndex</span>[table-><span class="pl-smi">Columns</span>[column_n].<span class="pl-smi">DisplayOrder</span>] = (ImGuiTableColumnIdx)column_n;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC727" class="react-file-line html-div" data-testid="code-cell" data-line-number="727" style="position:relative"> table-><span class="pl-smi">ReorderColumnDir</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC728" class="react-file-line html-div" data-testid="code-cell" data-line-number="728" style="position:relative"> table-><span class="pl-smi">IsSettingsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC729" class="react-file-line html-div" data-testid="code-cell" data-line-number="729" style="position:relative"> }</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC730" class="react-file-line html-div" data-testid="code-cell" data-line-number="730" style="position:relative"> }</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC731" class="react-file-line html-div" data-testid="code-cell" data-line-number="731" style="position:relative"> </div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC732" class="react-file-line html-div" data-testid="code-cell" data-line-number="732" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Handle display order reset request</span></div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC733" class="react-file-line html-div" data-testid="code-cell" data-line-number="733" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">IsResetDisplayOrderRequest</span>)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC734" class="react-file-line html-div" data-testid="code-cell" data-line-number="734" style="position:relative"> {</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC735" class="react-file-line html-div" data-testid="code-cell" data-line-number="735" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> n = <span class="pl-c1">0</span>; n < table-><span class="pl-smi">ColumnsCount</span>; n++)</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC736" class="react-file-line html-div" data-testid="code-cell" data-line-number="736" style="position:relative"> table-><span class="pl-smi">DisplayOrderToIndex</span>[n] = table-><span class="pl-smi">Columns</span>[n].<span class="pl-smi">DisplayOrder</span> = (ImGuiTableColumnIdx)n;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC737" class="react-file-line html-div" data-testid="code-cell" data-line-number="737" style="position:relative"> table-><span class="pl-smi">IsResetDisplayOrderRequest</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC738" class="react-file-line html-div" data-testid="code-cell" data-line-number="738" style="position:relative"> table-><span class="pl-smi">IsSettingsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-675 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC739" class="react-file-line html-div" data-testid="code-cell" data-line-number="739" style="position:relative"> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC740" class="react-file-line html-div" data-testid="code-cell" data-line-number="740" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC741" class="react-file-line html-div" data-testid="code-cell" data-line-number="741" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC742" class="react-file-line html-div" data-testid="code-cell" data-line-number="742" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Adjust flags: default width mode + stretch columns are not allowed when auto extending</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC743" class="react-file-line html-div" data-testid="code-cell" data-line-number="743" style="position:relative"><span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">TableSetupColumnFlags</span>(ImGuiTable* table, ImGuiTableColumn* column, ImGuiTableColumnFlags flags_in)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC744" class="react-file-line html-div" data-testid="code-cell" data-line-number="744" style="position:relative">{</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC745" class="react-file-line html-div" data-testid="code-cell" data-line-number="745" style="position:relative"> ImGuiTableColumnFlags flags = flags_in;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC746" class="react-file-line html-div" data-testid="code-cell" data-line-number="746" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC747" class="react-file-line html-div" data-testid="code-cell" data-line-number="747" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Sizing Policy</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC748" class="react-file-line html-div" data-testid="code-cell" data-line-number="748" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_WidthMask_) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC749" class="react-file-line html-div" data-testid="code-cell" data-line-number="749" style="position:relative"> {</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC750" class="react-file-line html-div" data-testid="code-cell" data-line-number="750" style="position:relative"> <span class="pl-k">const</span> ImGuiTableFlags table_sizing_policy = (table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_SizingMask_);</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC751" class="react-file-line html-div" data-testid="code-cell" data-line-number="751" style="position:relative"> <span class="pl-k">if</span> (table_sizing_policy == ImGuiTableFlags_SizingFixedFit || table_sizing_policy == ImGuiTableFlags_SizingFixedSame)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC752" class="react-file-line html-div" data-testid="code-cell" data-line-number="752" style="position:relative"> flags |= ImGuiTableColumnFlags_WidthFixed;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC753" class="react-file-line html-div" data-testid="code-cell" data-line-number="753" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC754" class="react-file-line html-div" data-testid="code-cell" data-line-number="754" style="position:relative"> flags |= ImGuiTableColumnFlags_WidthStretch;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC755" class="react-file-line html-div" data-testid="code-cell" data-line-number="755" style="position:relative"> }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC756" class="react-file-line html-div" data-testid="code-cell" data-line-number="756" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC757" class="react-file-line html-div" data-testid="code-cell" data-line-number="757" style="position:relative"> {</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC758" class="react-file-line html-div" data-testid="code-cell" data-line-number="758" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(<span class="pl-c1">ImIsPowerOfTwo</span>(flags & ImGuiTableColumnFlags_WidthMask_)); <span class="pl-c"><span class="pl-c">//</span> Check that only 1 of each set is used.</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC759" class="react-file-line html-div" data-testid="code-cell" data-line-number="759" style="position:relative"> }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC760" class="react-file-line html-div" data-testid="code-cell" data-line-number="760" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC761" class="react-file-line html-div" data-testid="code-cell" data-line-number="761" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Resize</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC762" class="react-file-line html-div" data-testid="code-cell" data-line-number="762" style="position:relative"> <span class="pl-k">if</span> ((table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_Resizable) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC763" class="react-file-line html-div" data-testid="code-cell" data-line-number="763" style="position:relative"> flags |= ImGuiTableColumnFlags_NoResize;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC764" class="react-file-line html-div" data-testid="code-cell" data-line-number="764" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC765" class="react-file-line html-div" data-testid="code-cell" data-line-number="765" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Sorting</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC766" class="react-file-line html-div" data-testid="code-cell" data-line-number="766" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_NoSortAscending) && (flags & ImGuiTableColumnFlags_NoSortDescending))</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC767" class="react-file-line html-div" data-testid="code-cell" data-line-number="767" style="position:relative"> flags |= ImGuiTableColumnFlags_NoSort;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC768" class="react-file-line html-div" data-testid="code-cell" data-line-number="768" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC769" class="react-file-line html-div" data-testid="code-cell" data-line-number="769" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Indentation</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC770" class="react-file-line html-div" data-testid="code-cell" data-line-number="770" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_IndentMask_) == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC771" class="react-file-line html-div" data-testid="code-cell" data-line-number="771" style="position:relative"> flags |= (table-><span class="pl-smi">Columns</span>.<span class="pl-c1">index_from_ptr</span>(column) == <span class="pl-c1">0</span>) ? ImGuiTableColumnFlags_IndentEnable : ImGuiTableColumnFlags_IndentDisable;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC772" class="react-file-line html-div" data-testid="code-cell" data-line-number="772" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC773" class="react-file-line html-div" data-testid="code-cell" data-line-number="773" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Alignment</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC774" class="react-file-line html-div" data-testid="code-cell" data-line-number="774" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span>if ((flags & ImGuiTableColumnFlags_AlignMask_) == 0)</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC775" class="react-file-line html-div" data-testid="code-cell" data-line-number="775" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> flags |= ImGuiTableColumnFlags_AlignCenter;</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC776" class="react-file-line html-div" data-testid="code-cell" data-line-number="776" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span>IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiTableColumnFlags_AlignMask_)); // Check that only 1 of each set is used.</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC777" class="react-file-line html-div" data-testid="code-cell" data-line-number="777" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC778" class="react-file-line html-div" data-testid="code-cell" data-line-number="778" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Preserve status flags</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC779" class="react-file-line html-div" data-testid="code-cell" data-line-number="779" style="position:relative"> column-><span class="pl-smi">Flags</span> = flags | (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_StatusMask_);</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC780" class="react-file-line html-div" data-testid="code-cell" data-line-number="780" style="position:relative"> </div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC781" class="react-file-line html-div" data-testid="code-cell" data-line-number="781" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Build an ordered list of available sort directions</span></div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC782" class="react-file-line html-div" data-testid="code-cell" data-line-number="782" style="position:relative"> column-><span class="pl-smi">SortDirectionsAvailCount</span> = column-><span class="pl-smi">SortDirectionsAvailMask</span> = column-><span class="pl-smi">SortDirectionsAvailList</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC783" class="react-file-line html-div" data-testid="code-cell" data-line-number="783" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_Sortable)</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC784" class="react-file-line html-div" data-testid="code-cell" data-line-number="784" style="position:relative"> {</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC785" class="react-file-line html-div" data-testid="code-cell" data-line-number="785" style="position:relative"> <span class="pl-k">int</span> count = <span class="pl-c1">0</span>, mask = <span class="pl-c1">0</span>, list = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC786" class="react-file-line html-div" data-testid="code-cell" data-line-number="786" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_PreferSortAscending) != <span class="pl-c1">0</span> && (flags & ImGuiTableColumnFlags_NoSortAscending) == <span class="pl-c1">0</span>) { mask |= <span class="pl-c1">1</span> << ImGuiSortDirection_Ascending; list |= ImGuiSortDirection_Ascending << (count << <span class="pl-c1">1</span>); count++; }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC787" class="react-file-line html-div" data-testid="code-cell" data-line-number="787" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_PreferSortDescending) != <span class="pl-c1">0</span> && (flags & ImGuiTableColumnFlags_NoSortDescending) == <span class="pl-c1">0</span>) { mask |= <span class="pl-c1">1</span> << ImGuiSortDirection_Descending; list |= ImGuiSortDirection_Descending << (count << <span class="pl-c1">1</span>); count++; }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC788" class="react-file-line html-div" data-testid="code-cell" data-line-number="788" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_PreferSortAscending) == <span class="pl-c1">0</span> && (flags & ImGuiTableColumnFlags_NoSortAscending) == <span class="pl-c1">0</span>) { mask |= <span class="pl-c1">1</span> << ImGuiSortDirection_Ascending; list |= ImGuiSortDirection_Ascending << (count << <span class="pl-c1">1</span>); count++; }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC789" class="react-file-line html-div" data-testid="code-cell" data-line-number="789" style="position:relative"> <span class="pl-k">if</span> ((flags & ImGuiTableColumnFlags_PreferSortDescending) == <span class="pl-c1">0</span> && (flags & ImGuiTableColumnFlags_NoSortDescending) == <span class="pl-c1">0</span>) { mask |= <span class="pl-c1">1</span> << ImGuiSortDirection_Descending; list |= ImGuiSortDirection_Descending << (count << <span class="pl-c1">1</span>); count++; }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC790" class="react-file-line html-div" data-testid="code-cell" data-line-number="790" style="position:relative"> <span class="pl-k">if</span> ((table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_SortTristate) || count == <span class="pl-c1">0</span>) { mask |= <span class="pl-c1">1</span> << ImGuiSortDirection_None; count++; }</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC791" class="react-file-line html-div" data-testid="code-cell" data-line-number="791" style="position:relative"> column-><span class="pl-smi">SortDirectionsAvailList</span> = (ImU8)list;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC792" class="react-file-line html-div" data-testid="code-cell" data-line-number="792" style="position:relative"> column-><span class="pl-smi">SortDirectionsAvailMask</span> = (ImU8)mask;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC793" class="react-file-line html-div" data-testid="code-cell" data-line-number="793" style="position:relative"> column-><span class="pl-smi">SortDirectionsAvailCount</span> = (ImU8)count;</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC794" class="react-file-line html-div" data-testid="code-cell" data-line-number="794" style="position:relative"> <span class="pl-c1">ImGui::TableFixColumnSortDirection</span>(table, column);</div></div></div><div class="child-of-line-742 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC795" class="react-file-line html-div" data-testid="code-cell" data-line-number="795" style="position:relative"> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC796" class="react-file-line html-div" data-testid="code-cell" data-line-number="796" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC797" class="react-file-line html-div" data-testid="code-cell" data-line-number="797" style="position:relative"> </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC798" class="react-file-line html-div" data-testid="code-cell" data-line-number="798" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Layout columns for the frame. This is in essence the followup to BeginTable() and this is our largest function.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC799" class="react-file-line html-div" data-testid="code-cell" data-line-number="799" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Runs on the first call to TableNextRow(), to give a chance for TableSetupColumn() and other TableSetupXXXXX() functions to be called first.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC800" class="react-file-line html-div" data-testid="code-cell" data-line-number="800" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Our width (and therefore our WorkRect) will be minimal in the first frame for _WidthAuto columns.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC801" class="react-file-line html-div" data-testid="code-cell" data-line-number="801" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Increase feedback side-effect with widgets relying on WorkRect.Max.x... Maybe provide a default distribution for _WidthAuto columns?</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC802" class="react-file-line html-div" data-testid="code-cell" data-line-number="802" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">ImGui::TableUpdateLayout</span>(ImGuiTable* table)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC803" class="react-file-line html-div" data-testid="code-cell" data-line-number="803" style="position:relative">{</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC804" class="react-file-line html-div" data-testid="code-cell" data-line-number="804" style="position:relative"> ImGuiContext& g = *GImGui;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC805" class="react-file-line html-div" data-testid="code-cell" data-line-number="805" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(table-><span class="pl-smi">IsLayoutLocked</span> == <span class="pl-c1">false</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC806" class="react-file-line html-div" data-testid="code-cell" data-line-number="806" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC807" class="react-file-line html-div" data-testid="code-cell" data-line-number="807" style="position:relative"> <span class="pl-k">const</span> ImGuiTableFlags table_sizing_policy = (table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_SizingMask_);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC808" class="react-file-line html-div" data-testid="code-cell" data-line-number="808" style="position:relative"> table-><span class="pl-smi">IsDefaultDisplayOrder</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC809" class="react-file-line html-div" data-testid="code-cell" data-line-number="809" style="position:relative"> table-><span class="pl-smi">ColumnsEnabledCount</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC810" class="react-file-line html-div" data-testid="code-cell" data-line-number="810" style="position:relative"> <span class="pl-c1">ImBitArrayClearAllBits</span>(table-><span class="pl-smi">EnabledMaskByIndex</span>, table-><span class="pl-smi">ColumnsCount</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC811" class="react-file-line html-div" data-testid="code-cell" data-line-number="811" style="position:relative"> <span class="pl-c1">ImBitArrayClearAllBits</span>(table-><span class="pl-smi">EnabledMaskByDisplayOrder</span>, table-><span class="pl-smi">ColumnsCount</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC812" class="react-file-line html-div" data-testid="code-cell" data-line-number="812" style="position:relative"> table-><span class="pl-smi">LeftMostEnabledColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC813" class="react-file-line html-div" data-testid="code-cell" data-line-number="813" style="position:relative"> table-><span class="pl-smi">MinColumnWidth</span> = <span class="pl-c1">ImMax</span>(<span class="pl-c1">1</span>.<span class="pl-c1">0f</span>, g.<span class="pl-smi">Style</span>.<span class="pl-smi">FramePadding</span>.<span class="pl-smi">x</span> * <span class="pl-c1">1</span>.<span class="pl-c1">0f</span>); <span class="pl-c"><span class="pl-c">//</span> g.Style.ColumnsMinSpacing; // FIXME-TABLE</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC814" class="react-file-line html-div" data-testid="code-cell" data-line-number="814" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC815" class="react-file-line html-div" data-testid="code-cell" data-line-number="815" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> [Part 1] Apply/lock Enabled and Order states. Calculate auto/ideal width for columns. Count fixed/stretch columns.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC816" class="react-file-line html-div" data-testid="code-cell" data-line-number="816" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Process columns in their visible orders as we are building the Prev/Next indices.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC817" class="react-file-line html-div" data-testid="code-cell" data-line-number="817" style="position:relative"> <span class="pl-k">int</span> count_fixed = <span class="pl-c1">0</span>; <span class="pl-c"><span class="pl-c">//</span> Number of columns that have fixed sizing policies</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC818" class="react-file-line html-div" data-testid="code-cell" data-line-number="818" style="position:relative"> <span class="pl-k">int</span> count_stretch = <span class="pl-c1">0</span>; <span class="pl-c"><span class="pl-c">//</span> Number of columns that have stretch sizing policies</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC819" class="react-file-line html-div" data-testid="code-cell" data-line-number="819" style="position:relative"> <span class="pl-k">int</span> prev_visible_column_idx = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC820" class="react-file-line html-div" data-testid="code-cell" data-line-number="820" style="position:relative"> <span class="pl-k">bool</span> has_auto_fit_request = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC821" class="react-file-line html-div" data-testid="code-cell" data-line-number="821" style="position:relative"> <span class="pl-k">bool</span> has_resizable = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC822" class="react-file-line html-div" data-testid="code-cell" data-line-number="822" style="position:relative"> <span class="pl-k">float</span> stretch_sum_width_auto = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC823" class="react-file-line html-div" data-testid="code-cell" data-line-number="823" style="position:relative"> <span class="pl-k">float</span> fixed_max_width_auto = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC824" class="react-file-line html-div" data-testid="code-cell" data-line-number="824" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> order_n = <span class="pl-c1">0</span>; order_n < table-><span class="pl-smi">ColumnsCount</span>; order_n++)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC825" class="react-file-line html-div" data-testid="code-cell" data-line-number="825" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC826" class="react-file-line html-div" data-testid="code-cell" data-line-number="826" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">int</span> column_n = table-><span class="pl-smi">DisplayOrderToIndex</span>[order_n];</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC827" class="react-file-line html-div" data-testid="code-cell" data-line-number="827" style="position:relative"> <span class="pl-k">if</span> (column_n != order_n)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC828" class="react-file-line html-div" data-testid="code-cell" data-line-number="828" style="position:relative"> table-><span class="pl-smi">IsDefaultDisplayOrder</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC829" class="react-file-line html-div" data-testid="code-cell" data-line-number="829" style="position:relative"> ImGuiTableColumn* column = &table-><span class="pl-smi">Columns</span>[column_n];</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC830" class="react-file-line html-div" data-testid="code-cell" data-line-number="830" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC831" class="react-file-line html-div" data-testid="code-cell" data-line-number="831" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Clear column setup if not submitted by user. Currently we make it mandatory to call TableSetupColumn() every frame.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC832" class="react-file-line html-div" data-testid="code-cell" data-line-number="832" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> It would easily work without but we're not ready to guarantee it since e.g. names need resubmission anyway.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC833" class="react-file-line html-div" data-testid="code-cell" data-line-number="833" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> We take a slight shortcut but in theory we could be calling TableSetupColumn() here with dummy values, it should yield the same effect.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC834" class="react-file-line html-div" data-testid="code-cell" data-line-number="834" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">DeclColumnsCount</span> <= column_n)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC835" class="react-file-line html-div" data-testid="code-cell" data-line-number="835" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC836" class="react-file-line html-div" data-testid="code-cell" data-line-number="836" style="position:relative"> <span class="pl-c1">TableSetupColumnFlags</span>(table, column, ImGuiTableColumnFlags_None);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC837" class="react-file-line html-div" data-testid="code-cell" data-line-number="837" style="position:relative"> column-><span class="pl-smi">NameOffset</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC838" class="react-file-line html-div" data-testid="code-cell" data-line-number="838" style="position:relative"> column-><span class="pl-smi">UserID</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC839" class="react-file-line html-div" data-testid="code-cell" data-line-number="839" style="position:relative"> column-><span class="pl-smi">InitStretchWeightOrWidth</span> = -<span class="pl-c1">1</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC840" class="react-file-line html-div" data-testid="code-cell" data-line-number="840" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC841" class="react-file-line html-div" data-testid="code-cell" data-line-number="841" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC842" class="react-file-line html-div" data-testid="code-cell" data-line-number="842" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Update Enabled state, mark settings and sort specs dirty</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC843" class="react-file-line html-div" data-testid="code-cell" data-line-number="843" style="position:relative"> <span class="pl-k">if</span> (!(table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_Hideable) || (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_NoHide))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC844" class="react-file-line html-div" data-testid="code-cell" data-line-number="844" style="position:relative"> column-><span class="pl-smi">IsUserEnabledNextFrame</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC845" class="react-file-line html-div" data-testid="code-cell" data-line-number="845" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">IsUserEnabled</span> != column-><span class="pl-smi">IsUserEnabledNextFrame</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC846" class="react-file-line html-div" data-testid="code-cell" data-line-number="846" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC847" class="react-file-line html-div" data-testid="code-cell" data-line-number="847" style="position:relative"> column-><span class="pl-smi">IsUserEnabled</span> = column-><span class="pl-smi">IsUserEnabledNextFrame</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC848" class="react-file-line html-div" data-testid="code-cell" data-line-number="848" style="position:relative"> table-><span class="pl-smi">IsSettingsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC849" class="react-file-line html-div" data-testid="code-cell" data-line-number="849" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC850" class="react-file-line html-div" data-testid="code-cell" data-line-number="850" style="position:relative"> column-><span class="pl-smi">IsEnabled</span> = column-><span class="pl-smi">IsUserEnabled</span> && (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_Disabled) == <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC851" class="react-file-line html-div" data-testid="code-cell" data-line-number="851" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC852" class="react-file-line html-div" data-testid="code-cell" data-line-number="852" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">SortOrder</span> != -<span class="pl-c1">1</span> && !column-><span class="pl-smi">IsEnabled</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC853" class="react-file-line html-div" data-testid="code-cell" data-line-number="853" style="position:relative"> table-><span class="pl-smi">IsSortSpecsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC854" class="react-file-line html-div" data-testid="code-cell" data-line-number="854" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">SortOrder</span> > <span class="pl-c1">0</span> && !(table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_SortMulti))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC855" class="react-file-line html-div" data-testid="code-cell" data-line-number="855" style="position:relative"> table-><span class="pl-smi">IsSortSpecsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC856" class="react-file-line html-div" data-testid="code-cell" data-line-number="856" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC857" class="react-file-line html-div" data-testid="code-cell" data-line-number="857" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Auto-fit unsized columns</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC858" class="react-file-line html-div" data-testid="code-cell" data-line-number="858" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> start_auto_fit = (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthFixed) ? (column-><span class="pl-smi">WidthRequest</span> < <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>) : (column-><span class="pl-smi">StretchWeight</span> < <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC859" class="react-file-line html-div" data-testid="code-cell" data-line-number="859" style="position:relative"> <span class="pl-k">if</span> (start_auto_fit)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC860" class="react-file-line html-div" data-testid="code-cell" data-line-number="860" style="position:relative"> column-><span class="pl-smi">AutoFitQueue</span> = column-><span class="pl-smi">CannotSkipItemsQueue</span> = (<span class="pl-c1">1</span> << <span class="pl-c1">3</span>) - <span class="pl-c1">1</span>; <span class="pl-c"><span class="pl-c">//</span> Fit for three frames</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC861" class="react-file-line html-div" data-testid="code-cell" data-line-number="861" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC862" class="react-file-line html-div" data-testid="code-cell" data-line-number="862" style="position:relative"> <span class="pl-k">if</span> (!column-><span class="pl-smi">IsEnabled</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC863" class="react-file-line html-div" data-testid="code-cell" data-line-number="863" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC864" class="react-file-line html-div" data-testid="code-cell" data-line-number="864" style="position:relative"> column-><span class="pl-smi">IndexWithinEnabledSet</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC865" class="react-file-line html-div" data-testid="code-cell" data-line-number="865" style="position:relative"> <span class="pl-k">continue</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC866" class="react-file-line html-div" data-testid="code-cell" data-line-number="866" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC867" class="react-file-line html-div" data-testid="code-cell" data-line-number="867" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC868" class="react-file-line html-div" data-testid="code-cell" data-line-number="868" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Mark as enabled and link to previous/next enabled column</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC869" class="react-file-line html-div" data-testid="code-cell" data-line-number="869" style="position:relative"> column-><span class="pl-smi">PrevEnabledColumn</span> = (ImGuiTableColumnIdx)prev_visible_column_idx;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC870" class="react-file-line html-div" data-testid="code-cell" data-line-number="870" style="position:relative"> column-><span class="pl-smi">NextEnabledColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC871" class="react-file-line html-div" data-testid="code-cell" data-line-number="871" style="position:relative"> <span class="pl-k">if</span> (prev_visible_column_idx != -<span class="pl-c1">1</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC872" class="react-file-line html-div" data-testid="code-cell" data-line-number="872" style="position:relative"> table-><span class="pl-smi">Columns</span>[prev_visible_column_idx].<span class="pl-smi">NextEnabledColumn</span> = (ImGuiTableColumnIdx)column_n;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC873" class="react-file-line html-div" data-testid="code-cell" data-line-number="873" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC874" class="react-file-line html-div" data-testid="code-cell" data-line-number="874" style="position:relative"> table-><span class="pl-smi">LeftMostEnabledColumn</span> = (ImGuiTableColumnIdx)column_n;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC875" class="react-file-line html-div" data-testid="code-cell" data-line-number="875" style="position:relative"> column-><span class="pl-smi">IndexWithinEnabledSet</span> = table-><span class="pl-smi">ColumnsEnabledCount</span>++;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC876" class="react-file-line html-div" data-testid="code-cell" data-line-number="876" style="position:relative"> <span class="pl-c1">ImBitArraySetBit</span>(table-><span class="pl-smi">EnabledMaskByIndex</span>, column_n);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC877" class="react-file-line html-div" data-testid="code-cell" data-line-number="877" style="position:relative"> <span class="pl-c1">ImBitArraySetBit</span>(table-><span class="pl-smi">EnabledMaskByDisplayOrder</span>, column-><span class="pl-smi">DisplayOrder</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC878" class="react-file-line html-div" data-testid="code-cell" data-line-number="878" style="position:relative"> prev_visible_column_idx = column_n;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC879" class="react-file-line html-div" data-testid="code-cell" data-line-number="879" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(column-><span class="pl-smi">IndexWithinEnabledSet</span> <= column-><span class="pl-smi">DisplayOrder</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC880" class="react-file-line html-div" data-testid="code-cell" data-line-number="880" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC881" class="react-file-line html-div" data-testid="code-cell" data-line-number="881" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Calculate ideal/auto column width (that's the width required for all contents to be visible without clipping)</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC882" class="react-file-line html-div" data-testid="code-cell" data-line-number="882" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Combine width from regular rows + width from headers unless requested not to.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC883" class="react-file-line html-div" data-testid="code-cell" data-line-number="883" style="position:relative"> <span class="pl-k">if</span> (!column-><span class="pl-smi">IsPreserveWidthAuto</span> && table-><span class="pl-smi">InstanceCurrent</span> == <span class="pl-c1">0</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC884" class="react-file-line html-div" data-testid="code-cell" data-line-number="884" style="position:relative"> column-><span class="pl-smi">WidthAuto</span> = <span class="pl-c1">TableGetColumnWidthAuto</span>(table, column);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC885" class="react-file-line html-div" data-testid="code-cell" data-line-number="885" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC886" class="react-file-line html-div" data-testid="code-cell" data-line-number="886" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Non-resizable columns keep their requested width (apply user value regardless of IsPreserveWidthAuto)</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC887" class="react-file-line html-div" data-testid="code-cell" data-line-number="887" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> column_is_resizable = (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_NoResize) == <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC888" class="react-file-line html-div" data-testid="code-cell" data-line-number="888" style="position:relative"> <span class="pl-k">if</span> (column_is_resizable)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC889" class="react-file-line html-div" data-testid="code-cell" data-line-number="889" style="position:relative"> has_resizable = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC890" class="react-file-line html-div" data-testid="code-cell" data-line-number="890" style="position:relative"> <span class="pl-k">if</span> ((column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthFixed) && column-><span class="pl-smi">InitStretchWeightOrWidth</span> > <span class="pl-c1">0</span>.<span class="pl-c1">0f</span> && !column_is_resizable)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC891" class="react-file-line html-div" data-testid="code-cell" data-line-number="891" style="position:relative"> column-><span class="pl-smi">WidthAuto</span> = column-><span class="pl-smi">InitStretchWeightOrWidth</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC892" class="react-file-line html-div" data-testid="code-cell" data-line-number="892" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC893" class="react-file-line html-div" data-testid="code-cell" data-line-number="893" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">AutoFitQueue</span> != <span class="pl-c1">0x00</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC894" class="react-file-line html-div" data-testid="code-cell" data-line-number="894" style="position:relative"> has_auto_fit_request = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC895" class="react-file-line html-div" data-testid="code-cell" data-line-number="895" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthStretch)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC896" class="react-file-line html-div" data-testid="code-cell" data-line-number="896" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC897" class="react-file-line html-div" data-testid="code-cell" data-line-number="897" style="position:relative"> stretch_sum_width_auto += column-><span class="pl-smi">WidthAuto</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC898" class="react-file-line html-div" data-testid="code-cell" data-line-number="898" style="position:relative"> count_stretch++;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC899" class="react-file-line html-div" data-testid="code-cell" data-line-number="899" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC900" class="react-file-line html-div" data-testid="code-cell" data-line-number="900" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC901" class="react-file-line html-div" data-testid="code-cell" data-line-number="901" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC902" class="react-file-line html-div" data-testid="code-cell" data-line-number="902" style="position:relative"> fixed_max_width_auto = <span class="pl-c1">ImMax</span>(fixed_max_width_auto, column-><span class="pl-smi">WidthAuto</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC903" class="react-file-line html-div" data-testid="code-cell" data-line-number="903" style="position:relative"> count_fixed++;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC904" class="react-file-line html-div" data-testid="code-cell" data-line-number="904" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC905" class="react-file-line html-div" data-testid="code-cell" data-line-number="905" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC906" class="react-file-line html-div" data-testid="code-cell" data-line-number="906" style="position:relative"> <span class="pl-k">if</span> ((table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_Sortable) && table-><span class="pl-smi">SortSpecsCount</span> == <span class="pl-c1">0</span> && !(table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_SortTristate))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC907" class="react-file-line html-div" data-testid="code-cell" data-line-number="907" style="position:relative"> table-><span class="pl-smi">IsSortSpecsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC908" class="react-file-line html-div" data-testid="code-cell" data-line-number="908" style="position:relative"> table-><span class="pl-smi">RightMostEnabledColumn</span> = (ImGuiTableColumnIdx)prev_visible_column_idx;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC909" class="react-file-line html-div" data-testid="code-cell" data-line-number="909" style="position:relative"> <span class="pl-c1">IM_ASSERT</span>(table-><span class="pl-smi">LeftMostEnabledColumn</span> >= <span class="pl-c1">0</span> && table-><span class="pl-smi">RightMostEnabledColumn</span> >= <span class="pl-c1">0</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC910" class="react-file-line html-div" data-testid="code-cell" data-line-number="910" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC911" class="react-file-line html-div" data-testid="code-cell" data-line-number="911" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> [Part 2] Disable child window clipping while fitting columns. This is not strictly necessary but makes it possible to avoid</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC912" class="react-file-line html-div" data-testid="code-cell" data-line-number="912" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> the column fitting having to wait until the first visible frame of the child container (may or not be a good thing). Also see #6510.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC913" class="react-file-line html-div" data-testid="code-cell" data-line-number="913" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: for always auto-resizing columns may not want to do that all the time.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC914" class="react-file-line html-div" data-testid="code-cell" data-line-number="914" style="position:relative"> <span class="pl-k">if</span> (has_auto_fit_request && table-><span class="pl-smi">OuterWindow</span> != table-><span class="pl-smi">InnerWindow</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC915" class="react-file-line html-div" data-testid="code-cell" data-line-number="915" style="position:relative"> table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">SkipItems</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC916" class="react-file-line html-div" data-testid="code-cell" data-line-number="916" style="position:relative"> <span class="pl-k">if</span> (has_auto_fit_request)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC917" class="react-file-line html-div" data-testid="code-cell" data-line-number="917" style="position:relative"> table-><span class="pl-smi">IsSettingsDirty</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC918" class="react-file-line html-div" data-testid="code-cell" data-line-number="918" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC919" class="react-file-line html-div" data-testid="code-cell" data-line-number="919" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> [Part 3] Fix column flags and record a few extra information.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC920" class="react-file-line html-div" data-testid="code-cell" data-line-number="920" style="position:relative"> <span class="pl-k">float</span> sum_width_requests = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> Sum of all width for fixed and auto-resize columns, excluding width contributed by Stretch columns but including spacing/padding.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC921" class="react-file-line html-div" data-testid="code-cell" data-line-number="921" style="position:relative"> <span class="pl-k">float</span> stretch_sum_weights = <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> Sum of all weights for stretch columns.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC922" class="react-file-line html-div" data-testid="code-cell" data-line-number="922" style="position:relative"> table-><span class="pl-smi">LeftMostStretchedColumn</span> = table-><span class="pl-smi">RightMostStretchedColumn</span> = -<span class="pl-c1">1</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC923" class="react-file-line html-div" data-testid="code-cell" data-line-number="923" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> column_n = <span class="pl-c1">0</span>; column_n < table-><span class="pl-smi">ColumnsCount</span>; column_n++)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC924" class="react-file-line html-div" data-testid="code-cell" data-line-number="924" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC925" class="react-file-line html-div" data-testid="code-cell" data-line-number="925" style="position:relative"> <span class="pl-k">if</span> (!<span class="pl-c1">IM_BITARRAY_TESTBIT</span>(table-><span class="pl-smi">EnabledMaskByIndex</span>, column_n))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC926" class="react-file-line html-div" data-testid="code-cell" data-line-number="926" style="position:relative"> <span class="pl-k">continue</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC927" class="react-file-line html-div" data-testid="code-cell" data-line-number="927" style="position:relative"> ImGuiTableColumn* column = &table-><span class="pl-smi">Columns</span>[column_n];</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC928" class="react-file-line html-div" data-testid="code-cell" data-line-number="928" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC929" class="react-file-line html-div" data-testid="code-cell" data-line-number="929" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">bool</span> column_is_resizable = (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_NoResize) == <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC930" class="react-file-line html-div" data-testid="code-cell" data-line-number="930" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthFixed)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC931" class="react-file-line html-div" data-testid="code-cell" data-line-number="931" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC932" class="react-file-line html-div" data-testid="code-cell" data-line-number="932" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Apply same widths policy</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC933" class="react-file-line html-div" data-testid="code-cell" data-line-number="933" style="position:relative"> <span class="pl-k">float</span> width_auto = column-><span class="pl-smi">WidthAuto</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC934" class="react-file-line html-div" data-testid="code-cell" data-line-number="934" style="position:relative"> <span class="pl-k">if</span> (table_sizing_policy == ImGuiTableFlags_SizingFixedSame && (column-><span class="pl-smi">AutoFitQueue</span> != <span class="pl-c1">0x00</span> || !column_is_resizable))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC935" class="react-file-line html-div" data-testid="code-cell" data-line-number="935" style="position:relative"> width_auto = fixed_max_width_auto;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC936" class="react-file-line html-div" data-testid="code-cell" data-line-number="936" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC937" class="react-file-line html-div" data-testid="code-cell" data-line-number="937" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Apply automatic width</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC938" class="react-file-line html-div" data-testid="code-cell" data-line-number="938" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Latch initial size for fixed columns and update it constantly for auto-resizing column (unless clipped!)</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC939" class="react-file-line html-div" data-testid="code-cell" data-line-number="939" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">AutoFitQueue</span> != <span class="pl-c1">0x00</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC940" class="react-file-line html-div" data-testid="code-cell" data-line-number="940" style="position:relative"> column-><span class="pl-smi">WidthRequest</span> = width_auto;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC941" class="react-file-line html-div" data-testid="code-cell" data-line-number="941" style="position:relative"> <span class="pl-k">else</span> <span class="pl-k">if</span> ((column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthFixed) && !column_is_resizable && column-><span class="pl-smi">IsRequestOutput</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC942" class="react-file-line html-div" data-testid="code-cell" data-line-number="942" style="position:relative"> column-><span class="pl-smi">WidthRequest</span> = width_auto;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC943" class="react-file-line html-div" data-testid="code-cell" data-line-number="943" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC944" class="react-file-line html-div" data-testid="code-cell" data-line-number="944" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Increase minimum size during init frame to avoid biasing auto-fitting widgets</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC945" class="react-file-line html-div" data-testid="code-cell" data-line-number="945" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> (e.g. TextWrapped) too much. Otherwise what tends to happen is that TextWrapped would output a very</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC946" class="react-file-line html-div" data-testid="code-cell" data-line-number="946" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> large height (= first frame scrollbar display very off + clipper would skip lots of items).</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC947" class="react-file-line html-div" data-testid="code-cell" data-line-number="947" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> This is merely making the side-effect less extreme, but doesn't properly fixes it.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC948" class="react-file-line html-div" data-testid="code-cell" data-line-number="948" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME: Move this to ->WidthGiven to avoid temporary lossyless?</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC949" class="react-file-line html-div" data-testid="code-cell" data-line-number="949" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> FIXME: This break IsPreserveWidthAuto from not flickering if the stored WidthAuto was smaller.</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC950" class="react-file-line html-div" data-testid="code-cell" data-line-number="950" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">AutoFitQueue</span> > <span class="pl-c1">0x01</span> && table-><span class="pl-smi">IsInitializing</span> && !column-><span class="pl-smi">IsPreserveWidthAuto</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC951" class="react-file-line html-div" data-testid="code-cell" data-line-number="951" style="position:relative"> column-><span class="pl-smi">WidthRequest</span> = <span class="pl-c1">ImMax</span>(column-><span class="pl-smi">WidthRequest</span>, table-><span class="pl-smi">MinColumnWidth</span> * <span class="pl-c1">4</span>.<span class="pl-c1">0f</span>); <span class="pl-c"><span class="pl-c">//</span> FIXME-TABLE: Another constant/scale?</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC952" class="react-file-line html-div" data-testid="code-cell" data-line-number="952" style="position:relative"> sum_width_requests += column-><span class="pl-smi">WidthRequest</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC953" class="react-file-line html-div" data-testid="code-cell" data-line-number="953" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC954" class="react-file-line html-div" data-testid="code-cell" data-line-number="954" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC955" class="react-file-line html-div" data-testid="code-cell" data-line-number="955" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC956" class="react-file-line html-div" data-testid="code-cell" data-line-number="956" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Initialize stretch weight</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC957" class="react-file-line html-div" data-testid="code-cell" data-line-number="957" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">AutoFitQueue</span> != <span class="pl-c1">0x00</span> || column-><span class="pl-smi">StretchWeight</span> < <span class="pl-c1">0</span>.<span class="pl-c1">0f</span> || !column_is_resizable)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC958" class="react-file-line html-div" data-testid="code-cell" data-line-number="958" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC959" class="react-file-line html-div" data-testid="code-cell" data-line-number="959" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">InitStretchWeightOrWidth</span> > <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC960" class="react-file-line html-div" data-testid="code-cell" data-line-number="960" style="position:relative"> column-><span class="pl-smi">StretchWeight</span> = column-><span class="pl-smi">InitStretchWeightOrWidth</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC961" class="react-file-line html-div" data-testid="code-cell" data-line-number="961" style="position:relative"> <span class="pl-k">else</span> <span class="pl-k">if</span> (table_sizing_policy == ImGuiTableFlags_SizingStretchProp)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC962" class="react-file-line html-div" data-testid="code-cell" data-line-number="962" style="position:relative"> column-><span class="pl-smi">StretchWeight</span> = (column-><span class="pl-smi">WidthAuto</span> / stretch_sum_width_auto) * count_stretch;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC963" class="react-file-line html-div" data-testid="code-cell" data-line-number="963" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC964" class="react-file-line html-div" data-testid="code-cell" data-line-number="964" style="position:relative"> column-><span class="pl-smi">StretchWeight</span> = <span class="pl-c1">1</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC965" class="react-file-line html-div" data-testid="code-cell" data-line-number="965" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC966" class="react-file-line html-div" data-testid="code-cell" data-line-number="966" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC967" class="react-file-line html-div" data-testid="code-cell" data-line-number="967" style="position:relative"> stretch_sum_weights += column-><span class="pl-smi">StretchWeight</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC968" class="react-file-line html-div" data-testid="code-cell" data-line-number="968" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">LeftMostStretchedColumn</span> == -<span class="pl-c1">1</span> || table-><span class="pl-smi">Columns</span>[table-><span class="pl-smi">LeftMostStretchedColumn</span>].<span class="pl-smi">DisplayOrder</span> > column-><span class="pl-smi">DisplayOrder</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC969" class="react-file-line html-div" data-testid="code-cell" data-line-number="969" style="position:relative"> table-><span class="pl-smi">LeftMostStretchedColumn</span> = (ImGuiTableColumnIdx)column_n;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC970" class="react-file-line html-div" data-testid="code-cell" data-line-number="970" style="position:relative"> <span class="pl-k">if</span> (table-><span class="pl-smi">RightMostStretchedColumn</span> == -<span class="pl-c1">1</span> || table-><span class="pl-smi">Columns</span>[table-><span class="pl-smi">RightMostStretchedColumn</span>].<span class="pl-smi">DisplayOrder</span> < column-><span class="pl-smi">DisplayOrder</span>)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC971" class="react-file-line html-div" data-testid="code-cell" data-line-number="971" style="position:relative"> table-><span class="pl-smi">RightMostStretchedColumn</span> = (ImGuiTableColumnIdx)column_n;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC972" class="react-file-line html-div" data-testid="code-cell" data-line-number="972" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC973" class="react-file-line html-div" data-testid="code-cell" data-line-number="973" style="position:relative"> column-><span class="pl-smi">IsPreserveWidthAuto</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC974" class="react-file-line html-div" data-testid="code-cell" data-line-number="974" style="position:relative"> sum_width_requests += table-><span class="pl-smi">CellPaddingX</span> * <span class="pl-c1">2</span>.<span class="pl-c1">0f</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC975" class="react-file-line html-div" data-testid="code-cell" data-line-number="975" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC976" class="react-file-line html-div" data-testid="code-cell" data-line-number="976" style="position:relative"> table-><span class="pl-smi">ColumnsEnabledFixedCount</span> = (ImGuiTableColumnIdx)count_fixed;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC977" class="react-file-line html-div" data-testid="code-cell" data-line-number="977" style="position:relative"> table-><span class="pl-smi">ColumnsStretchSumWeights</span> = stretch_sum_weights;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC978" class="react-file-line html-div" data-testid="code-cell" data-line-number="978" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC979" class="react-file-line html-div" data-testid="code-cell" data-line-number="979" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> [Part 4] Apply final widths based on requested widths</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC980" class="react-file-line html-div" data-testid="code-cell" data-line-number="980" style="position:relative"> <span class="pl-k">const</span> ImRect work_rect = table-><span class="pl-smi">WorkRect</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC981" class="react-file-line html-div" data-testid="code-cell" data-line-number="981" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> width_spacings = (table-><span class="pl-smi">OuterPaddingX</span> * <span class="pl-c1">2</span>.<span class="pl-c1">0f</span>) + (table-><span class="pl-smi">CellSpacingX1</span> + table-><span class="pl-smi">CellSpacingX2</span>) * (table-><span class="pl-smi">ColumnsEnabledCount</span> - <span class="pl-c1">1</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC982" class="react-file-line html-div" data-testid="code-cell" data-line-number="982" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> width_removed = (table-><span class="pl-smi">HasScrollbarYPrev</span> && !table-><span class="pl-smi">InnerWindow</span>-><span class="pl-smi">ScrollbarY</span>) ? g.<span class="pl-smi">Style</span>.<span class="pl-smi">ScrollbarSize</span> : <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>; <span class="pl-c"><span class="pl-c">//</span> To synchronize decoration width of synced tables with mismatching scrollbar state (#5920)</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC983" class="react-file-line html-div" data-testid="code-cell" data-line-number="983" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> width_avail = <span class="pl-c1">ImMax</span>(<span class="pl-c1">1</span>.<span class="pl-c1">0f</span>, (((table-><span class="pl-smi">Flags</span> & ImGuiTableFlags_ScrollX) && table-><span class="pl-smi">InnerWidth</span> == <span class="pl-c1">0</span>.<span class="pl-c1">0f</span>) ? table-><span class="pl-smi">InnerClipRect</span>.<span class="pl-c1">GetWidth</span>() : work_rect.<span class="pl-c1">GetWidth</span>()) - width_removed);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC984" class="react-file-line html-div" data-testid="code-cell" data-line-number="984" style="position:relative"> <span class="pl-k">const</span> <span class="pl-k">float</span> width_avail_for_stretched_columns = width_avail - width_spacings - sum_width_requests;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC985" class="react-file-line html-div" data-testid="code-cell" data-line-number="985" style="position:relative"> <span class="pl-k">float</span> width_remaining_for_stretched_columns = width_avail_for_stretched_columns;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC986" class="react-file-line html-div" data-testid="code-cell" data-line-number="986" style="position:relative"> table-><span class="pl-smi">ColumnsGivenWidth</span> = width_spacings + (table-><span class="pl-smi">CellPaddingX</span> * <span class="pl-c1">2</span>.<span class="pl-c1">0f</span>) * table-><span class="pl-smi">ColumnsEnabledCount</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC987" class="react-file-line html-div" data-testid="code-cell" data-line-number="987" style="position:relative"> <span class="pl-k">for</span> (<span class="pl-k">int</span> column_n = <span class="pl-c1">0</span>; column_n < table-><span class="pl-smi">ColumnsCount</span>; column_n++)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC988" class="react-file-line html-div" data-testid="code-cell" data-line-number="988" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC989" class="react-file-line html-div" data-testid="code-cell" data-line-number="989" style="position:relative"> <span class="pl-k">if</span> (!<span class="pl-c1">IM_BITARRAY_TESTBIT</span>(table-><span class="pl-smi">EnabledMaskByIndex</span>, column_n))</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC990" class="react-file-line html-div" data-testid="code-cell" data-line-number="990" style="position:relative"> <span class="pl-k">continue</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC991" class="react-file-line html-div" data-testid="code-cell" data-line-number="991" style="position:relative"> ImGuiTableColumn* column = &table-><span class="pl-smi">Columns</span>[column_n];</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC992" class="react-file-line html-div" data-testid="code-cell" data-line-number="992" style="position:relative"> </div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC993" class="react-file-line html-div" data-testid="code-cell" data-line-number="993" style="position:relative"> <span class="pl-c"><span class="pl-c">//</span> Allocate width for stretched/weighted columns (StretchWeight gets converted into WidthRequest)</span></div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC994" class="react-file-line html-div" data-testid="code-cell" data-line-number="994" style="position:relative"> <span class="pl-k">if</span> (column-><span class="pl-smi">Flags</span> & ImGuiTableColumnFlags_WidthStretch)</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC995" class="react-file-line html-div" data-testid="code-cell" data-line-number="995" style="position:relative"> {</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC996" class="react-file-line html-div" data-testid="code-cell" data-line-number="996" style="position:relative"> <span class="pl-k">float</span> weight_ratio = column-><span class="pl-smi">StretchWeight</span> / stretch_sum_weights;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC997" class="react-file-line html-div" data-testid="code-cell" data-line-number="997" style="position:relative"> column-><span class="pl-smi">WidthRequest</span> = <span class="pl-c1">IM_TRUNC</span>(<span class="pl-c1">ImMax</span>(width_avail_for_stretched_columns * weight_ratio, table-><span class="pl-smi">MinColumnWidth</span>) + <span class="pl-c1">0</span>.<span class="pl-c1">01f</span>);</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC998" class="react-file-line html-div" data-testid="code-cell" data-line-number="998" style="position:relative"> width_remaining_for_stretched_columns -= column-><span class="pl-smi">WidthRequest</span>;</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC999" class="react-file-line html-div" data-testid="code-cell" data-line-number="999" style="position:relative"> }</div></div></div><div class="child-of-line-801 react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC1000" class="react-file-line html-div" data-testid="code-cell" data-line-number="1000" style="position:relative"> </div></div></div></div></div><div class="Box-sc-g0xbh4-0 gkZUDI"><a class="prc-Link-Link-85e08" href="https://github.com/ocornut/imgui/raw/refs/heads/master/imgui_tables.cpp">View remainder of file in raw view</a></div></div><div id="copilot-button-container"></div></div><div id="highlighted-line-menu-container"></div></div></div><button hidden="" data-testid="hotkey-button" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button></section></div></div></div> <!-- --> <!-- --> </div></div></div><div class="Box-sc-g0xbh4-0"></div></div></div></div></div><div id="find-result-marks-container" class="Box-sc-g0xbh4-0 cCoXib"></div><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button></div> <!-- --> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-app> </turbo-frame> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> © 2025 GitHub, Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>