<!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-f552bab6ce72.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-4589f64a2275.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-a7246d2d6733.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-f2ef05cef2f1.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-daa1fe317131.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-1ab6fcc64845.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-46de871e876c.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-c9754fef2a31.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-dba748981a29.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cbeaa0795ef.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-fa3434a1ba0a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-545513c45073.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-f1af66156f94.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-2e900f0ac288.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-33498bbbf39d.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["code_vulnerability_scanning","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_followup_to_agent","copilot_smell_icebreaker_ux","copilot_implicit_context","copilot_stop_response","copilot_updated_function_buttons","failbot_handle_non_errors","geojson_azure_maps","image_metric_tracking","marketing_forms_api_integration_contact_request","marketing_pages_search_explore_provider","turbo_experiment_risky","sample_network_conn_type","no_character_key_shortcuts_in_inputs","react_start_transition_for_navigations","custom_inp","remove_child_patch","kb_source_repos"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-e6b3826e3283.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-810e4b1b9abd.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-4ac41d0a76fd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_smoothscroll-polyfill_dist_smoothscroll_js-node_modules_stacktrace-parse-a448e4-f17a27f30529.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-2168885ea2b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_focus-zone_js-c7679f99a1f3.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-9f960d9b217c.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-c76945c5961a.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_-392fe4-1327b94f3269.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-b2135edb5ced.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-b7d8f4-6e6f83bcc978.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_delegated-events_dist_in-b63d41-209f14258c8d.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-c238a4-c6bbd5d2c027.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_onfocus_ts-ui_packages_trusted-types-policies_policy_ts-ui_packages-6fe316-ae5060590d17.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-d00866eeec16.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-a9d225a6d5cd.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-fd5530-4007dac5c26f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-cc7cb714ead5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_morphdom_dist_morphdom-esm_js-node_modules_github_memoize_dist_esm_index_js-8d7117d67c36.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-1cea0f5eff45.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-880ac2bbb719.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_github_hotkey-1a1d91-1bb71f3f93c2.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-cdd1e82b3795.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_dimensions_js-node_modules_github_jtml_lib_index_js-b1947a1d4855.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_session-resume_dist_index_js-node_modules_primer_behaviors_dist_e-da6ec6-77ce2f267f4e.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_textarea-autosi-9e0349-704599a61056.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_updatable-content_ts-4d91e80fb877.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_onfocus_ts-app_ass-421cec-d3af2356fb47.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-3dc342dedcb0.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-467754-2363a1c8ed46.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-5276a3faf037.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-dea72fb5100b.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-06ff531-2ea61fcc9a71.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-0409f6303340.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_repositories_get-repo-element_ts-e21ae6671295.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-67595c3a6d0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-dc88c1a68b28.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_octicons-react_dist_index_esm_js-node_modules_primer_react_lib-es-541a38-c63b7a3484dd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Box_Box_js-8f8c5e2a2cbf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FeatureFlags_FeatureFlags_js-node_modules_github_ca-9009bd-47065f21e9ac.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Button_Button_js-97ed51d4f278.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_TooltipV2_Tooltip_js-334106258bdb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_node_modules_primer_octicons-react_dist_index_esm_mjs-dc98a76c65d6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionList_index_js-9e50e37cd494.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_TextInput_TextInput_js-15046fb40abc.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_AnchoredOverlay_AnchoredOverlay_js-4c761b535add.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_FormControl_FormControl_js-68c35c819dad.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ActionMenu_ActionMenu_js-3936ca1bc46c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_react-router-dom_dist_index_js-2b1dbeadb6d4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_ConfirmationDialog_ConfirmationDialog_js-e77978dd27f4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Heading_Heading_js-node_modules_primer_react_lib-es-38c617-2ae956a800e7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_PageLayout_PageLayout_js-node_modules_github_hydro--f8521d-0253212e1803.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_AvatarStack_AvatarStack_js-node_modules_primer_reac-6dc608-960f8b6d9f42.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_react_lib-esm_Avatar_Avatar_js-node_modules_primer_react_lib-esm_-f960e8-4c279840ce74.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_react-core_create-browser-history_ts-ui_packages_safe-storage_safe-storage_ts-ui_-682c2c-44ed51a2083d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_react-core_register-app_ts-cdec9cf45205.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-4045d4f4a6fb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-e5f899e1c55d.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-59a8e3-6e5455ef73f2.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_react-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_ho-68a691-69b343881d3d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_blob-anchor_ts-app_assets_modules_github_filter-sort_ts-app_assets_-e50ab6-06193ffb3fd6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-code-view-6956503e2fd4.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-code-view.98a0f4bdacd6223a0b70.module.css" /> <title>xillinux-kernel/drivers/media/i2c/ov7670.c at master · xillybus/xillinux-kernel · 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="82c569b93da5c18ed649ebd4c2c79437db4611a6a1373e805a3cb001c64130b7"> <meta name="request-id" content="98C1:2F6DDD:1B4BBCF:1E66BC1:665BD490" data-pjax-transient="true"/><meta name="html-safe-nonce" content="f0681a079d438b80a60ec0cb8953b78511bc737216a5bcca6c15f0ed817be181" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5OEMxOjJGNkRERDoxQjRCQkNGOjFFNjZCQzE6NjY1QkQ0OTAiLCJ2aXNpdG9yX2lkIjoiNjE2NjE3MDQyMjcxMTg2MjcxNCIsInJlZ2lvbl9lZGdlIjoic291dGhlYXN0YXNpYSIsInJlZ2lvbl9yZW5kZXIiOiJzb3V0aGVhc3Rhc2lhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="73524e6e051132f1205ee73251ca6395f1bb47da70330dce6ed79523448dea39" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:112866512" 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="Linux Repository for Xillinux distribution. Contribute to xillybus/xillinux-kernel development by creating an account on GitHub."> <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/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c" /> <meta name="twitter:image:src" content="https://opengraph.githubassets.com/83738bc10b71d9153a62990b8f93360d02d24afe85e8b0647f0dc131ef616415/xillybus/xillinux-kernel" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="xillinux-kernel/drivers/media/i2c/ov7670.c at master · xillybus/xillinux-kernel" /><meta name="twitter:description" content="Linux Repository for Xillinux distribution. Contribute to xillybus/xillinux-kernel development by creating an account on GitHub." /> <meta property="og:image" content="https://opengraph.githubassets.com/83738bc10b71d9153a62990b8f93360d02d24afe85e8b0647f0dc131ef616415/xillybus/xillinux-kernel" /><meta property="og:image:alt" content="Linux Repository for Xillinux distribution. Contribute to xillybus/xillinux-kernel development by creating an account on GitHub." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="xillinux-kernel/drivers/media/i2c/ov7670.c at master · xillybus/xillinux-kernel" /><meta property="og:url" content="https://github.com/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c" /><meta property="og:description" content="Linux Repository for Xillinux distribution. Contribute to xillybus/xillinux-kernel development by creating an account on GitHub." /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="f884a49a2e7d8390598366a744facbab910f452e943a0be64a81502bf17334a4" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="38c639a245e1dd04786881fae1060fbd72d3ed419b2f0d38d6082dc9d67876c3" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="f37eaf27fe12b105c6661d303537787959eeb4bf52c6937d9165fd6b569faf30" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="6fb6788bb0a26e70542917256586776a9507f7ac1bdf9ee113bf54dff9a14ec9" 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/xillybus/xillinux-kernel git https://github.com/xillybus/xillinux-kernel.git"> <meta name="octolytics-dimension-user_id" content="34191320" /><meta name="octolytics-dimension-user_login" content="xillybus" /><meta name="octolytics-dimension-repository_id" content="112866512" /><meta name="octolytics-dimension-repository_nwo" content="xillybus/xillinux-kernel" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="true" /><meta name="octolytics-dimension-repository_parent_id" content="4525311" /><meta name="octolytics-dimension-repository_parent_nwo" content="Digilent/linux-digilent" /><meta name="octolytics-dimension-repository_network_root_id" content="4525311" /><meta name="octolytics-dimension-repository_network_root_nwo" content="Digilent/linux-digilent" /> <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"> <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"> <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 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/vendors-node_modules_primer_react_lib-esm_Button_IconButton_js-node_modules_primer_react_lib--1cd808-6070bc6b2c67.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-5cf59981c8b2.js"></script> <react-partial partial-name="keyboard-shortcuts-dialog" data-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-8743f7dc256e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-458fee042571.js"></script> <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-3" role="banner" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="Header-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 p-responsive height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <a class="mr-lg-3 color-fg-inherit flex-order-2" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark"> <svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path> </svg> </a> <div class="flex-1"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fxillybus%2Fxillinux-kernel%2Fblob%2Fmaster%2Fdrivers%2Fmedia%2Fi2c%2Fov7670.c" class="d-inline-block d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit" 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/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="d967079a78793488df157026e6640b2cce2750bdd633db6bb917e760a0338567" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in"> Sign in </a> </div> <div class="flex-1 flex-order-2 text-right"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target 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> </div> <div class="HeaderMenu--logged-out p-responsive height-fit position-lg-relative d-lg-flex flex-column flex-auto pt-7 pb-4 top-0"> <div class="header-menu-wrapper d-flex flex-column flex-self-end flex-lg-row flex-justify-between flex-auto p-3 p-lg-0 rounded rounded-lg-0 mt-3 mt-lg-0"> <nav class="mt-0 px-3 px-lg-0 mb-3 mb-lg-0" 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-3 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 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex dropdown-menu-wide"> <div class="px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Actions","label":"ref_cta:Actions;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Packages","label":"ref_cta:Packages;"}" href="https://github.com/features/packages"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-package color-fg-subtle mr-3"> <path d="M12.876.64V.639l8.25 4.763c.541.313.875.89.875 1.515v9.525a1.75 1.75 0 0 1-.875 1.516l-8.25 4.762a1.748 1.748 0 0 1-1.75 0l-8.25-4.763a1.75 1.75 0 0 1-.875-1.515V6.917c0-.625.334-1.202.875-1.515L11.126.64a1.748 1.748 0 0 1 1.75 0Zm-1 1.298L4.251 6.34l7.75 4.474 7.75-4.474-7.625-4.402a.248.248 0 0 0-.25 0Zm.875 19.123 7.625-4.402a.25.25 0 0 0 .125-.216V7.639l-7.75 4.474ZM3.501 7.64v8.803c0 .09.048.172.125.216l7.625 4.402v-8.947Z"></path> </svg> <div> <div class="color-fg-default h4">Packages</div> Host and manage packages </div> </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Security","label":"ref_cta:Security;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Codespaces","label":"ref_cta:Codespaces;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Copilot","label":"ref_cta:Copilot;"}" 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">Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Code review","label":"ref_cta:Code review;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Issues","label":"ref_cta:Issues;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Discussions","label":"ref_cta:Discussions;"}" 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> </ul> </div> <div class="px-lg-4"> <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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to All features","label":"ref_cta:All features;"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Documentation","label":"ref_cta:Documentation;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to GitHub Skills","label":"ref_cta:GitHub Skills;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Product","action":"click to go to Blog","label":"ref_cta:Blog;"}" 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> </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-3 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 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4"> <div class="border-bottom pb-3 mb-3"> <span class="d-block h4 color-fg-default my-1" id="solutions-for-heading">For</span> <ul class="list-style-none f5" aria-labelledby="solutions-for-heading"> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Enterprise","label":"ref_cta:Enterprise;"}" href="https://github.com/enterprise"> Enterprise </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Teams","label":"ref_cta:Teams;"}" href="https://github.com/team"> Teams </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Startups","label":"ref_cta:Startups;"}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Education","label":"ref_cta:Education;"}" href="https://education.github.com"> Education <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 class="border-bottom pb-3 mb-3"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-solution-heading">By Solution</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-solution-heading"> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to CI/CD &amp; Automation","label":"ref_cta:CI/CD &amp; Automation;"}" href="https://github.com/solutions/ci-cd"> CI/CD & Automation </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to DevOps","label":"ref_cta:DevOps;"}" href="https://github.com/solutions/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to DevSecOps","label":"ref_cta:DevSecOps;"}" href="https://resources.github.com/devops/fundamentals/devsecops"> DevSecOps <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 class=""> <span class="d-block h4 color-fg-default my-1" id="solutions-resources-heading">Resources</span> <ul class="list-style-none f5" aria-labelledby="solutions-resources-heading"> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Learning Pathways","label":"ref_cta:Learning Pathways;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to White papers, Ebooks, Webinars","label":"ref_cta:White papers, Ebooks, Webinars;"}" href="https://resources.github.com"> White papers, Ebooks, 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Customer Stories","label":"ref_cta:Customer Stories;"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{"category":"Header dropdown (logged out), Solutions","action":"click to go to Partners","label":"ref_cta:Partners;"}" 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> </ul> </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-3 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 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4"> <div class="border-bottom pb-3 mb-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{"category":"Header dropdown (logged out), Open Source","action":"click to go to GitHub Sponsors","label":"ref_cta:GitHub Sponsors;"}" 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 mb-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{"category":"Header dropdown (logged out), Open Source","action":"click to go to The ReadME Project","label":"ref_cta:The ReadME Project;"}" 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=""> <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 lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Open Source","action":"click to go to Topics","label":"ref_cta:Topics;"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Open Source","action":"click to go to Trending","label":"ref_cta:Trending;"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"category":"Header dropdown (logged out), Open Source","action":"click to go to Collections","label":"ref_cta:Collections;"}" href="https://github.com/collections"> Collections </a></li> </ul> </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-3 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 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4"> <div class="border-bottom pb-3 mb-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{"category":"Header dropdown (logged out), Enterprise","action":"click to go to Enterprise platform","label":"ref_cta:Enterprise platform;"}" 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=""> <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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Enterprise","action":"click to go to Advanced Security","label":"ref_cta:Advanced Security;"}" 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 lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{"category":"Header dropdown (logged out), Enterprise","action":"click to go to Copilot Enterprise","label":"ref_cta:Copilot Enterprise;"}" href="/features/copilot#enterprise"> <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 Enterprise</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{"category":"Header dropdown (logged out), Enterprise","action":"click to go to Premium Support","label":"ref_cta:Premium Support;"}" 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> </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="{"category":"Header menu top item (logged out)","action":"click to go to Pricing","label":"ref_cta:Pricing;"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-lg-flex flex-items-center mb-3 mb-lg-0 text-center text-lg-left ml-3" style=""> <qbsearch-input class="search-input" data-scope="repo:xillybus/xillinux-kernel" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="6lR6VjWaBgtOBktTt-rhNmmPJ3EukLrJNtrpucZTE0qtNy9XWxq2W1i-5PpstO4_tt0FYmlGuMeRMn9xOy9uWw" 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="xillybus/xillinux-kernel" data-current-org="" data-current-owner="xillybus" data-logged-in="false" data-copilot-chat-enabled="false" data-blackbird-indexed-repo-csrf="<esi:include src="/_esi/rails_csrf_token_form_hidden?r=O7dOt5AQVfOyN4jPNLBCdd3sgd7zX1wHhmKF%2Fq4FzEDuriA1y%2Fi3uZgPAkU21%2BvFYqR2lXEvGANov%2BaqtEtBL5FC8GYz6D3BtN30p6xCkLKrLqL2Z2PQy6PJ1b2qN%2FgYQwGcD3ArE9D9zqJb4YQlTfylkZSGS5vtohzlB44CSVFkur7udDSY1XE0hRZi47VUpuPHpF3WtDt2JKCvkeQT8WRyztIULF2ossNtVYDiFFk4MMqtzrP5fZite7ix16zi9%2BUex2crfH6weXseoFk17VK019UO%2FwmIxvvZxusz5TwTWjpmTyFeQS0HMBjKNAOY2wRWWKaa0VRkJiG90VCpZKAOjeXYgX3TU%2BuvyXmKho4GyZPT6etOm6XvcO%2FOMz%2FX9vQD5zBW2CmI56XrdjZySN%2B6KLVr4yA%2BjyNEfBtQbdQZEY0FrFhucqlPXR4%2BJyFC3cHlmzyhj9OZ9sSBe0JKEfzq9EyFQtb2Akm9p8NqkuolLZ6PqP8SuK9Fr30m2G15BjWd3ieCXQrZdMfjEGa0NWywknc07poGodFPl5KNZltGTAf8XYSwPHD4gOTxWrrkQ6Usu0AOSXH7Y0HELyDcWoWaOVLAj2mK6cg%3D--gjU4HgL600uwu91o--KOZvH0t%2BhvDHUc4WYynizA%3D%3D" />"> <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" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" 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-a2f7bc94-2e15-4666-9cf6-5b53d3b88f4e" 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="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-a2f7bc94-2e15-4666-9cf6-5b53d3b88f4e" 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"> <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="lF0nhEpub265ozHOwYHA5pRZsJ7rf25q1sUMnM687YD55VD0SM3adDVdlPIAHI+w5oiZQnEA9945D26ttsP86w==" /> <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"> <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="dw8PgxdXkbRQC9bCm58vCPPfYljful4jwkTk0tytaurHqVD0KjsIm7hk6LdE5mEhHhCps4e65FxredGdR22pzA==" /> <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> <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="syQEall0RE6kaS04E1rGw5TP+8ZzVGqQ+15ITrPswYNxLzCy//zBWjbjyhQq11lzgcrX1Ik0EqewvHBmHuSDKw==" /> </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><input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="KgRIHHSTba+MIQAIcqRnQAHu4fwbaw/yRgn0s8pGrQNZCU5gvUj0lVdRLqdJiqfDu4FxnqixJMvZvBcFwIOoCw==" /> <div class="position-relative mr-lg-3 d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fxillybus%2Fxillinux-kernel%2Fblob%2Fmaster%2Fdrivers%2Fmedia%2Fi2c%2Fov7670.c" class="HeaderMenu-link HeaderMenu-link--sign-in flex-shrink-0 no-underline d-block d-lg-inline-block border border-lg-0 rounded rounded-lg-0 p-2 p-lg-0" 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/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="d967079a78793488df157026e6640b2cce2750bdd633db6bb917e760a0338567" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in"> 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=xillybus%2Fxillinux-kernel" class="HeaderMenu-link HeaderMenu-link--sign-up flex-shrink-0 d-none d-lg-inline-block 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/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="d967079a78793488df157026e6640b2cce2750bdd633db6bb917e760a0338567" 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> </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 mb-3"> <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-97bd1081-6205-431d-8ad7-1f1009013206" aria-labelledby="tooltip-c8b921d2-79b4-4dc2-90a7-e4a485fc5a5f" 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-c8b921d2-79b4-4dc2-90a7-e4a485fc5a5f" for="icon-button-97bd1081-6205-431d-8ad7-1f1009013206" 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> <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-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-wrap flex-justify-end mb-3 px-3 px-md-4 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit mr-3"> <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-forked color-fg-muted 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> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/xillybus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/xillybus"> xillybus </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="/xillybus/xillinux-kernel">xillinux-kernel</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> <span class="text-small lh-condensed-ultra no-wrap mt-1" data-repository-hovercards-enabled> forked from <a data-hovercard-type="repository" data-hovercard-url="/Digilent/linux-digilent/hovercard" class="Link--inTextBlock" href="/Digilent/linux-digilent">Digilent/linux-digilent</a> </span> </div> <div id="repository-details-container" data-turbo-replace> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2Fxillybus%2Fxillinux-kernel" 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/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="dae0ec1597eef7be362e7b3ae7cf1f99c33496dd0f9326128f15e9d5b7b048a2" 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-f30368bc-c682-4e32-babe-335fda2145b6" 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=%2Fxillybus%2Fxillinux-kernel" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":112866512,"auth_type":"LOG_IN","originating_url":"https://github.com/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="811a36b6a37959bc2cb2b9cbaa8d1c291f6e2bcaf4063bd60ca6a87dad81e6bd" 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="3" data-view-component="true" class="Counter">3</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fxillybus%2Fxillinux-kernel" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":112866512,"auth_type":"LOG_IN","originating_url":"https://github.com/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","user_id":null}}" data-hydro-click-hmac="9cd894a6dd16997647df15eb7e9d787345990914c08fd1dded3c53b389c7dd18" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn BtnGroup-item"> <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="2 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="2" data-view-component="true" class="Counter js-social-count">2</span> </a> <button aria-label="You must be signed in to add this repository to a list" type="button" disabled="disabled" data-view-component="true" class="btn-sm btn BtnGroup-item px-2"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down"> <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> </button></div> </li> <li> </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="/xillybus/xillinux-kernel" 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 /xillybus/xillinux-kernel" 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="pull-requests-tab" href="/xillybus/xillinux-kernel/pulls" data-tab-item="i1pull-requests-tab" data-selected-links="repo_pulls checks /xillybus/xillinux-kernel/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="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/xillybus/xillinux-kernel/actions" data-tab-item="i2actions-tab" data-selected-links="repo_actions /xillybus/xillinux-kernel/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="security-tab" href="/xillybus/xillinux-kernel/security" data-tab-item="i3security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /xillybus/xillinux-kernel/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="/xillybus/xillinux-kernel/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="/xillybus/xillinux-kernel/pulse" data-tab-item="i4insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /xillybus/xillinux-kernel/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-edbfb9df-2cfe-489b-b284-109a5cfb731e-button" popovertarget="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-overlay" aria-controls="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-list" aria-haspopup="true" aria-labelledby="tooltip-ab6e8d6b-0819-49fc-9f62-f8a535e3b16e" 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-ab6e8d6b-0819-49fc-9f62-f8a535e3b16e" for="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-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 id="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-overlay" anchor="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-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-edbfb9df-2cfe-489b-b284-109a5cfb731e-button" id="action-menu-edbfb9df-2cfe-489b-b284-109a5cfb731e-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-f717bba6-fe20-428a-9e4c-42319e44eef2" href="/xillybus/xillinux-kernel" 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="i1pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-6e8f3a8f-657a-4a0b-a32f-86057bedd757" href="/xillybus/xillinux-kernel/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="i2actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-5a1e51c0-c739-498e-8099-fa842945ce21" href="/xillybus/xillinux-kernel/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="i3security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-a217080d-6a14-4971-bed3-c3cb3faa8e83" href="/xillybus/xillinux-kernel/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="i4insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-21ed141b-8221-4d6f-88e3-35cf9650ba4d" href="/xillybus/xillinux-kernel/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="/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c" style="display: block; min-height: calc(100vh - 64px)" data-ssr="true" data-lazy="false" data-alternate="false" > <script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"fileTree":{"drivers/media/i2c":{"items":[{"name":"cx25840","path":"drivers/media/i2c/cx25840","contentType":"directory"},{"name":"m5mols","path":"drivers/media/i2c/m5mols","contentType":"directory"},{"name":"s5c73m3","path":"drivers/media/i2c/s5c73m3","contentType":"directory"},{"name":"smiapp","path":"drivers/media/i2c/smiapp","contentType":"directory"},{"name":"soc_camera","path":"drivers/media/i2c/soc_camera","contentType":"directory"},{"name":"Kconfig","path":"drivers/media/i2c/Kconfig","contentType":"file"},{"name":"Makefile","path":"drivers/media/i2c/Makefile","contentType":"file"},{"name":"ad9389b.c","path":"drivers/media/i2c/ad9389b.c","contentType":"file"},{"name":"adp1653.c","path":"drivers/media/i2c/adp1653.c","contentType":"file"},{"name":"adv7170.c","path":"drivers/media/i2c/adv7170.c","contentType":"file"},{"name":"adv7175.c","path":"drivers/media/i2c/adv7175.c","contentType":"file"},{"name":"adv7180.c","path":"drivers/media/i2c/adv7180.c","contentType":"file"},{"name":"adv7183.c","path":"drivers/media/i2c/adv7183.c","contentType":"file"},{"name":"adv7183_regs.h","path":"drivers/media/i2c/adv7183_regs.h","contentType":"file"},{"name":"adv7343.c","path":"drivers/media/i2c/adv7343.c","contentType":"file"},{"name":"adv7343_regs.h","path":"drivers/media/i2c/adv7343_regs.h","contentType":"file"},{"name":"adv7393.c","path":"drivers/media/i2c/adv7393.c","contentType":"file"},{"name":"adv7393_regs.h","path":"drivers/media/i2c/adv7393_regs.h","contentType":"file"},{"name":"adv7511.c","path":"drivers/media/i2c/adv7511.c","contentType":"file"},{"name":"adv7604.c","path":"drivers/media/i2c/adv7604.c","contentType":"file"},{"name":"adv7842.c","path":"drivers/media/i2c/adv7842.c","contentType":"file"},{"name":"ak881x.c","path":"drivers/media/i2c/ak881x.c","contentType":"file"},{"name":"aptina-pll.c","path":"drivers/media/i2c/aptina-pll.c","contentType":"file"},{"name":"aptina-pll.h","path":"drivers/media/i2c/aptina-pll.h","contentType":"file"},{"name":"as3645a.c","path":"drivers/media/i2c/as3645a.c","contentType":"file"},{"name":"bt819.c","path":"drivers/media/i2c/bt819.c","contentType":"file"},{"name":"bt856.c","path":"drivers/media/i2c/bt856.c","contentType":"file"},{"name":"bt866.c","path":"drivers/media/i2c/bt866.c","contentType":"file"},{"name":"cs5345.c","path":"drivers/media/i2c/cs5345.c","contentType":"file"},{"name":"cs53l32a.c","path":"drivers/media/i2c/cs53l32a.c","contentType":"file"},{"name":"ir-kbd-i2c.c","path":"drivers/media/i2c/ir-kbd-i2c.c","contentType":"file"},{"name":"ks0127.c","path":"drivers/media/i2c/ks0127.c","contentType":"file"},{"name":"ks0127.h","path":"drivers/media/i2c/ks0127.h","contentType":"file"},{"name":"lm3560.c","path":"drivers/media/i2c/lm3560.c","contentType":"file"},{"name":"lm3646.c","path":"drivers/media/i2c/lm3646.c","contentType":"file"},{"name":"m52790.c","path":"drivers/media/i2c/m52790.c","contentType":"file"},{"name":"ml86v7667.c","path":"drivers/media/i2c/ml86v7667.c","contentType":"file"},{"name":"msp3400-driver.c","path":"drivers/media/i2c/msp3400-driver.c","contentType":"file"},{"name":"msp3400-driver.h","path":"drivers/media/i2c/msp3400-driver.h","contentType":"file"},{"name":"msp3400-kthreads.c","path":"drivers/media/i2c/msp3400-kthreads.c","contentType":"file"},{"name":"mt9m032.c","path":"drivers/media/i2c/mt9m032.c","contentType":"file"},{"name":"mt9p031.c","path":"drivers/media/i2c/mt9p031.c","contentType":"file"},{"name":"mt9t001.c","path":"drivers/media/i2c/mt9t001.c","contentType":"file"},{"name":"mt9v011.c","path":"drivers/media/i2c/mt9v011.c","contentType":"file"},{"name":"mt9v032.c","path":"drivers/media/i2c/mt9v032.c","contentType":"file"},{"name":"noon010pc30.c","path":"drivers/media/i2c/noon010pc30.c","contentType":"file"},{"name":"ov2659.c","path":"drivers/media/i2c/ov2659.c","contentType":"file"},{"name":"ov7640.c","path":"drivers/media/i2c/ov7640.c","contentType":"file"},{"name":"ov7670.c","path":"drivers/media/i2c/ov7670.c","contentType":"file"},{"name":"ov9650.c","path":"drivers/media/i2c/ov9650.c","contentType":"file"},{"name":"s5k4ecgx.c","path":"drivers/media/i2c/s5k4ecgx.c","contentType":"file"},{"name":"s5k5baf.c","path":"drivers/media/i2c/s5k5baf.c","contentType":"file"},{"name":"s5k6a3.c","path":"drivers/media/i2c/s5k6a3.c","contentType":"file"},{"name":"s5k6aa.c","path":"drivers/media/i2c/s5k6aa.c","contentType":"file"},{"name":"saa6588.c","path":"drivers/media/i2c/saa6588.c","contentType":"file"},{"name":"saa6752hs.c","path":"drivers/media/i2c/saa6752hs.c","contentType":"file"},{"name":"saa7110.c","path":"drivers/media/i2c/saa7110.c","contentType":"file"},{"name":"saa7115.c","path":"drivers/media/i2c/saa7115.c","contentType":"file"},{"name":"saa711x_regs.h","path":"drivers/media/i2c/saa711x_regs.h","contentType":"file"},{"name":"saa7127.c","path":"drivers/media/i2c/saa7127.c","contentType":"file"},{"name":"saa717x.c","path":"drivers/media/i2c/saa717x.c","contentType":"file"},{"name":"saa7185.c","path":"drivers/media/i2c/saa7185.c","contentType":"file"},{"name":"smiapp-pll.c","path":"drivers/media/i2c/smiapp-pll.c","contentType":"file"},{"name":"smiapp-pll.h","path":"drivers/media/i2c/smiapp-pll.h","contentType":"file"},{"name":"sony-btf-mpx.c","path":"drivers/media/i2c/sony-btf-mpx.c","contentType":"file"},{"name":"sr030pc30.c","path":"drivers/media/i2c/sr030pc30.c","contentType":"file"},{"name":"tc358743.c","path":"drivers/media/i2c/tc358743.c","contentType":"file"},{"name":"tc358743_regs.h","path":"drivers/media/i2c/tc358743_regs.h","contentType":"file"},{"name":"tda7432.c","path":"drivers/media/i2c/tda7432.c","contentType":"file"},{"name":"tda9840.c","path":"drivers/media/i2c/tda9840.c","contentType":"file"},{"name":"tea6415c.c","path":"drivers/media/i2c/tea6415c.c","contentType":"file"},{"name":"tea6415c.h","path":"drivers/media/i2c/tea6415c.h","contentType":"file"},{"name":"tea6420.c","path":"drivers/media/i2c/tea6420.c","contentType":"file"},{"name":"tea6420.h","path":"drivers/media/i2c/tea6420.h","contentType":"file"},{"name":"ths7303.c","path":"drivers/media/i2c/ths7303.c","contentType":"file"},{"name":"ths8200.c","path":"drivers/media/i2c/ths8200.c","contentType":"file"},{"name":"ths8200_regs.h","path":"drivers/media/i2c/ths8200_regs.h","contentType":"file"},{"name":"tlv320aic23b.c","path":"drivers/media/i2c/tlv320aic23b.c","contentType":"file"},{"name":"tvaudio.c","path":"drivers/media/i2c/tvaudio.c","contentType":"file"},{"name":"tvp514x.c","path":"drivers/media/i2c/tvp514x.c","contentType":"file"},{"name":"tvp514x_regs.h","path":"drivers/media/i2c/tvp514x_regs.h","contentType":"file"},{"name":"tvp5150.c","path":"drivers/media/i2c/tvp5150.c","contentType":"file"},{"name":"tvp5150_reg.h","path":"drivers/media/i2c/tvp5150_reg.h","contentType":"file"},{"name":"tvp7002.c","path":"drivers/media/i2c/tvp7002.c","contentType":"file"},{"name":"tvp7002_reg.h","path":"drivers/media/i2c/tvp7002_reg.h","contentType":"file"},{"name":"tw2804.c","path":"drivers/media/i2c/tw2804.c","contentType":"file"},{"name":"tw9903.c","path":"drivers/media/i2c/tw9903.c","contentType":"file"},{"name":"tw9906.c","path":"drivers/media/i2c/tw9906.c","contentType":"file"},{"name":"uda1342.c","path":"drivers/media/i2c/uda1342.c","contentType":"file"},{"name":"upd64031a.c","path":"drivers/media/i2c/upd64031a.c","contentType":"file"},{"name":"upd64083.c","path":"drivers/media/i2c/upd64083.c","contentType":"file"},{"name":"vp27smpx.c","path":"drivers/media/i2c/vp27smpx.c","contentType":"file"},{"name":"vpx3220.c","path":"drivers/media/i2c/vpx3220.c","contentType":"file"},{"name":"vs6624.c","path":"drivers/media/i2c/vs6624.c","contentType":"file"},{"name":"vs6624_regs.h","path":"drivers/media/i2c/vs6624_regs.h","contentType":"file"},{"name":"wm8739.c","path":"drivers/media/i2c/wm8739.c","contentType":"file"},{"name":"wm8775.c","path":"drivers/media/i2c/wm8775.c","contentType":"file"}],"totalCount":97},"drivers/media":{"items":[{"name":"common","path":"drivers/media/common","contentType":"directory"},{"name":"dvb-core","path":"drivers/media/dvb-core","contentType":"directory"},{"name":"dvb-frontends","path":"drivers/media/dvb-frontends","contentType":"directory"},{"name":"firewire","path":"drivers/media/firewire","contentType":"directory"},{"name":"i2c","path":"drivers/media/i2c","contentType":"directory"},{"name":"mmc","path":"drivers/media/mmc","contentType":"directory"},{"name":"pci","path":"drivers/media/pci","contentType":"directory"},{"name":"platform","path":"drivers/media/platform","contentType":"directory"},{"name":"radio","path":"drivers/media/radio","contentType":"directory"},{"name":"rc","path":"drivers/media/rc","contentType":"directory"},{"name":"tuners","path":"drivers/media/tuners","contentType":"directory"},{"name":"usb","path":"drivers/media/usb","contentType":"directory"},{"name":"v4l2-core","path":"drivers/media/v4l2-core","contentType":"directory"},{"name":"Kconfig","path":"drivers/media/Kconfig","contentType":"file"},{"name":"Makefile","path":"drivers/media/Makefile","contentType":"file"},{"name":"media-device.c","path":"drivers/media/media-device.c","contentType":"file"},{"name":"media-devnode.c","path":"drivers/media/media-devnode.c","contentType":"file"},{"name":"media-entity.c","path":"drivers/media/media-entity.c","contentType":"file"}],"totalCount":18},"drivers":{"items":[{"name":"accessibility","path":"drivers/accessibility","contentType":"directory"},{"name":"acpi","path":"drivers/acpi","contentType":"directory"},{"name":"amba","path":"drivers/amba","contentType":"directory"},{"name":"android","path":"drivers/android","contentType":"directory"},{"name":"ata","path":"drivers/ata","contentType":"directory"},{"name":"atm","path":"drivers/atm","contentType":"directory"},{"name":"auxdisplay","path":"drivers/auxdisplay","contentType":"directory"},{"name":"base","path":"drivers/base","contentType":"directory"},{"name":"bcma","path":"drivers/bcma","contentType":"directory"},{"name":"block","path":"drivers/block","contentType":"directory"},{"name":"bluetooth","path":"drivers/bluetooth","contentType":"directory"},{"name":"bus","path":"drivers/bus","contentType":"directory"},{"name":"cdrom","path":"drivers/cdrom","contentType":"directory"},{"name":"char","path":"drivers/char","contentType":"directory"},{"name":"clk","path":"drivers/clk","contentType":"directory"},{"name":"clocksource","path":"drivers/clocksource","contentType":"directory"},{"name":"connector","path":"drivers/connector","contentType":"directory"},{"name":"cpufreq","path":"drivers/cpufreq","contentType":"directory"},{"name":"cpuidle","path":"drivers/cpuidle","contentType":"directory"},{"name":"crypto","path":"drivers/crypto","contentType":"directory"},{"name":"dca","path":"drivers/dca","contentType":"directory"},{"name":"devfreq","path":"drivers/devfreq","contentType":"directory"},{"name":"dio","path":"drivers/dio","contentType":"directory"},{"name":"dma-buf","path":"drivers/dma-buf","contentType":"directory"},{"name":"dma","path":"drivers/dma","contentType":"directory"},{"name":"edac","path":"drivers/edac","contentType":"directory"},{"name":"eisa","path":"drivers/eisa","contentType":"directory"},{"name":"extcon","path":"drivers/extcon","contentType":"directory"},{"name":"firewire","path":"drivers/firewire","contentType":"directory"},{"name":"firmware","path":"drivers/firmware","contentType":"directory"},{"name":"fmc","path":"drivers/fmc","contentType":"directory"},{"name":"fpga","path":"drivers/fpga","contentType":"directory"},{"name":"gpio","path":"drivers/gpio","contentType":"directory"},{"name":"gpu","path":"drivers/gpu","contentType":"directory"},{"name":"hid","path":"drivers/hid","contentType":"directory"},{"name":"hsi","path":"drivers/hsi","contentType":"directory"},{"name":"hv","path":"drivers/hv","contentType":"directory"},{"name":"hwmon","path":"drivers/hwmon","contentType":"directory"},{"name":"hwspinlock","path":"drivers/hwspinlock","contentType":"directory"},{"name":"hwtracing","path":"drivers/hwtracing","contentType":"directory"},{"name":"i2c","path":"drivers/i2c","contentType":"directory"},{"name":"ide","path":"drivers/ide","contentType":"directory"},{"name":"idle","path":"drivers/idle","contentType":"directory"},{"name":"iio","path":"drivers/iio","contentType":"directory"},{"name":"infiniband","path":"drivers/infiniband","contentType":"directory"},{"name":"input","path":"drivers/input","contentType":"directory"},{"name":"iommu","path":"drivers/iommu","contentType":"directory"},{"name":"ipack","path":"drivers/ipack","contentType":"directory"},{"name":"irqchip","path":"drivers/irqchip","contentType":"directory"},{"name":"isdn","path":"drivers/isdn","contentType":"directory"},{"name":"leds","path":"drivers/leds","contentType":"directory"},{"name":"lguest","path":"drivers/lguest","contentType":"directory"},{"name":"lightnvm","path":"drivers/lightnvm","contentType":"directory"},{"name":"macintosh","path":"drivers/macintosh","contentType":"directory"},{"name":"mailbox","path":"drivers/mailbox","contentType":"directory"},{"name":"mcb","path":"drivers/mcb","contentType":"directory"},{"name":"md","path":"drivers/md","contentType":"directory"},{"name":"media","path":"drivers/media","contentType":"directory"},{"name":"memory","path":"drivers/memory","contentType":"directory"},{"name":"memstick","path":"drivers/memstick","contentType":"directory"},{"name":"message","path":"drivers/message","contentType":"directory"},{"name":"mfd","path":"drivers/mfd","contentType":"directory"},{"name":"misc","path":"drivers/misc","contentType":"directory"},{"name":"mmc","path":"drivers/mmc","contentType":"directory"},{"name":"mtd","path":"drivers/mtd","contentType":"directory"},{"name":"net","path":"drivers/net","contentType":"directory"},{"name":"nfc","path":"drivers/nfc","contentType":"directory"},{"name":"ntb","path":"drivers/ntb","contentType":"directory"},{"name":"nubus","path":"drivers/nubus","contentType":"directory"},{"name":"nvdimm","path":"drivers/nvdimm","contentType":"directory"},{"name":"nvme","path":"drivers/nvme","contentType":"directory"},{"name":"nvmem","path":"drivers/nvmem","contentType":"directory"},{"name":"of","path":"drivers/of","contentType":"directory"},{"name":"oprofile","path":"drivers/oprofile","contentType":"directory"},{"name":"parisc","path":"drivers/parisc","contentType":"directory"},{"name":"parport","path":"drivers/parport","contentType":"directory"},{"name":"pci","path":"drivers/pci","contentType":"directory"},{"name":"pcmcia","path":"drivers/pcmcia","contentType":"directory"},{"name":"perf","path":"drivers/perf","contentType":"directory"},{"name":"phy","path":"drivers/phy","contentType":"directory"},{"name":"pinctrl","path":"drivers/pinctrl","contentType":"directory"},{"name":"platform","path":"drivers/platform","contentType":"directory"},{"name":"pnp","path":"drivers/pnp","contentType":"directory"},{"name":"power","path":"drivers/power","contentType":"directory"},{"name":"powercap","path":"drivers/powercap","contentType":"directory"},{"name":"pps","path":"drivers/pps","contentType":"directory"},{"name":"ps3","path":"drivers/ps3","contentType":"directory"},{"name":"ptp","path":"drivers/ptp","contentType":"directory"},{"name":"pwm","path":"drivers/pwm","contentType":"directory"},{"name":"rapidio","path":"drivers/rapidio","contentType":"directory"},{"name":"ras","path":"drivers/ras","contentType":"directory"},{"name":"regulator","path":"drivers/regulator","contentType":"directory"},{"name":"remoteproc","path":"drivers/remoteproc","contentType":"directory"},{"name":"reset","path":"drivers/reset","contentType":"directory"},{"name":"rpmsg","path":"drivers/rpmsg","contentType":"directory"},{"name":"rtc","path":"drivers/rtc","contentType":"directory"},{"name":"s390","path":"drivers/s390","contentType":"directory"},{"name":"sbus","path":"drivers/sbus","contentType":"directory"},{"name":"scsi","path":"drivers/scsi","contentType":"directory"},{"name":"sfi","path":"drivers/sfi","contentType":"directory"},{"name":"sh","path":"drivers/sh","contentType":"directory"},{"name":"sn","path":"drivers/sn","contentType":"directory"},{"name":"soc","path":"drivers/soc","contentType":"directory"},{"name":"spi","path":"drivers/spi","contentType":"directory"},{"name":"spmi","path":"drivers/spmi","contentType":"directory"},{"name":"ssb","path":"drivers/ssb","contentType":"directory"},{"name":"staging","path":"drivers/staging","contentType":"directory"},{"name":"target","path":"drivers/target","contentType":"directory"},{"name":"tc","path":"drivers/tc","contentType":"directory"},{"name":"thermal","path":"drivers/thermal","contentType":"directory"},{"name":"thunderbolt","path":"drivers/thunderbolt","contentType":"directory"},{"name":"tty","path":"drivers/tty","contentType":"directory"},{"name":"uio","path":"drivers/uio","contentType":"directory"},{"name":"usb","path":"drivers/usb","contentType":"directory"},{"name":"uwb","path":"drivers/uwb","contentType":"directory"},{"name":"vfio","path":"drivers/vfio","contentType":"directory"},{"name":"vhost","path":"drivers/vhost","contentType":"directory"},{"name":"video","path":"drivers/video","contentType":"directory"},{"name":"virt","path":"drivers/virt","contentType":"directory"},{"name":"virtio","path":"drivers/virtio","contentType":"directory"},{"name":"vlynq","path":"drivers/vlynq","contentType":"directory"},{"name":"vme","path":"drivers/vme","contentType":"directory"},{"name":"w1","path":"drivers/w1","contentType":"directory"},{"name":"watchdog","path":"drivers/watchdog","contentType":"directory"},{"name":"xen","path":"drivers/xen","contentType":"directory"},{"name":"zorro","path":"drivers/zorro","contentType":"directory"},{"name":"Kconfig","path":"drivers/Kconfig","contentType":"file"},{"name":"Makefile","path":"drivers/Makefile","contentType":"file"}],"totalCount":128},"":{"items":[{"name":"Documentation","path":"Documentation","contentType":"directory"},{"name":"arch","path":"arch","contentType":"directory"},{"name":"block","path":"block","contentType":"directory"},{"name":"certs","path":"certs","contentType":"directory"},{"name":"crypto","path":"crypto","contentType":"directory"},{"name":"debian.master","path":"debian.master","contentType":"directory"},{"name":"debian","path":"debian","contentType":"directory"},{"name":"drivers","path":"drivers","contentType":"directory"},{"name":"firmware","path":"firmware","contentType":"directory"},{"name":"fs","path":"fs","contentType":"directory"},{"name":"include","path":"include","contentType":"directory"},{"name":"init","path":"init","contentType":"directory"},{"name":"ipc","path":"ipc","contentType":"directory"},{"name":"kernel","path":"kernel","contentType":"directory"},{"name":"lib","path":"lib","contentType":"directory"},{"name":"mm","path":"mm","contentType":"directory"},{"name":"net","path":"net","contentType":"directory"},{"name":"samples","path":"samples","contentType":"directory"},{"name":"scripts","path":"scripts","contentType":"directory"},{"name":"security","path":"security","contentType":"directory"},{"name":"sound","path":"sound","contentType":"directory"},{"name":"spl","path":"spl","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":"ubuntu","path":"ubuntu","contentType":"directory"},{"name":"usr","path":"usr","contentType":"directory"},{"name":"virt","path":"virt","contentType":"directory"},{"name":"zfs","path":"zfs","contentType":"directory"},{"name":".get_maintainer.ignore","path":".get_maintainer.ignore","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".mailmap","path":".mailmap","contentType":"file"},{"name":"COPYING","path":"COPYING","contentType":"file"},{"name":"CREDITS","path":"CREDITS","contentType":"file"},{"name":"Kbuild","path":"Kbuild","contentType":"file"},{"name":"Kconfig","path":"Kconfig","contentType":"file"},{"name":"MAINTAINERS","path":"MAINTAINERS","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README","path":"README","contentType":"file"},{"name":"REPORTING-BUGS","path":"REPORTING-BUGS","contentType":"file"},{"name":"dropped.txt","path":"dropped.txt","contentType":"file"},{"name":"snapcraft.yaml","path":"snapcraft.yaml","contentType":"file"}],"totalCount":40}},"fileTreeProcessingTime":37.437061,"foldersToFetch":[],"repo":{"id":112866512,"defaultBranch":"master","name":"xillinux-kernel","ownerLogin":"xillybus","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2017-12-02T18:30:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/34191320?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1694763392.0","canEdit":false,"refType":"branch","currentOid":"fd2337966a4e0ce6ec74b5f5ba89ffa8d084888c"},"path":"drivers/media/i2c/ov7670.c","currentUser":null,"blob":{"rawLines":["/*"," * A V4L2 driver for OmniVision OV7670 cameras."," *"," * Copyright 2006 One Laptop Per Child Association, Inc. Written"," * by Jonathan Corbet with substantial inspiration from Mark"," * McClelland's ovcamchip code."," *"," * Copyright 2006-7 Jonathan Corbet \u003ccorbet@lwn.net\u003e"," *"," * This file may be distributed under the terms of the GNU General"," * Public License, version 2."," */","#include \u003clinux/init.h\u003e","#include \u003clinux/module.h\u003e","#include \u003clinux/slab.h\u003e","#include \u003clinux/i2c.h\u003e","#include \u003clinux/delay.h\u003e","#include \u003clinux/videodev2.h\u003e","#include \u003cmedia/v4l2-device.h\u003e","#include \u003cmedia/v4l2-ctrls.h\u003e","#include \u003cmedia/v4l2-mediabus.h\u003e","#include \u003cmedia/v4l2-image-sizes.h\u003e","#include \u003cmedia/ov7670.h\u003e","","MODULE_AUTHOR(\"Jonathan Corbet \u003ccorbet@lwn.net\u003e\");","MODULE_DESCRIPTION(\"A low-level driver for OmniVision ov7670 sensors\");","MODULE_LICENSE(\"GPL\");","","static bool debug;","module_param(debug, bool, 0644);","MODULE_PARM_DESC(debug, \"Debug level (0-1)\");","","/*"," * The 7670 sits on i2c with ID 0x42"," */","#define OV7670_I2C_ADDR 0x42","","#define PLL_FACTOR\t4","","/* Registers */","#define REG_GAIN\t0x00\t/* Gain lower 8 bits (rest in vref) */","#define REG_BLUE\t0x01\t/* blue gain */","#define REG_RED\t\t0x02\t/* red gain */","#define REG_VREF\t0x03\t/* Pieces of GAIN, VSTART, VSTOP */","#define REG_COM1\t0x04\t/* Control 1 */","#define COM1_CCIR656\t 0x40 /* CCIR656 enable */","#define REG_BAVE\t0x05\t/* U/B Average level */","#define REG_GbAVE\t0x06\t/* Y/Gb Average level */","#define REG_AECHH\t0x07\t/* AEC MS 5 bits */","#define REG_RAVE\t0x08\t/* V/R Average level */","#define REG_COM2\t0x09\t/* Control 2 */","#define COM2_SSLEEP\t 0x10\t/* Soft sleep mode */","#define REG_PID\t\t0x0a\t/* Product ID MSB */","#define REG_VER\t\t0x0b\t/* Product ID LSB */","#define REG_COM3\t0x0c\t/* Control 3 */","#define COM3_SWAP\t 0x40\t /* Byte swap */","#define COM3_SCALEEN\t 0x08\t /* Enable scaling */","#define COM3_DCWEN\t 0x04\t /* Enable downsamp/crop/window */","#define REG_COM4\t0x0d\t/* Control 4 */","#define REG_COM5\t0x0e\t/* All \"reserved\" */","#define REG_COM6\t0x0f\t/* Control 6 */","#define REG_AECH\t0x10\t/* More bits of AEC value */","#define REG_CLKRC\t0x11\t/* Clocl control */","#define CLK_EXT\t 0x40\t /* Use external clock directly */","#define CLK_SCALE\t 0x3f\t /* Mask for internal clock scale */","#define REG_COM7\t0x12\t/* Control 7 */","#define COM7_RESET\t 0x80\t /* Register reset */","#define COM7_FMT_MASK\t 0x38","#define COM7_FMT_VGA\t 0x00","#define\t COM7_FMT_CIF\t 0x20\t /* CIF format */","#define COM7_FMT_QVGA\t 0x10\t /* QVGA format */","#define COM7_FMT_QCIF\t 0x08\t /* QCIF format */","#define\t COM7_RGB\t 0x04\t /* bits 0 and 2 - RGB format */","#define\t COM7_YUV\t 0x00\t /* YUV */","#define\t COM7_BAYER\t 0x01\t /* Bayer format */","#define\t COM7_PBAYER\t 0x05\t /* \"Processed bayer\" */","#define REG_COM8\t0x13\t/* Control 8 */","#define COM8_FASTAEC\t 0x80\t /* Enable fast AGC/AEC */","#define COM8_AECSTEP\t 0x40\t /* Unlimited AEC step size */","#define COM8_BFILT\t 0x20\t /* Band filter enable */","#define COM8_AGC\t 0x04\t /* Auto gain enable */","#define COM8_AWB\t 0x02\t /* White balance enable */","#define COM8_AEC\t 0x01\t /* Auto exposure enable */","#define REG_COM9\t0x14\t/* Control 9 - gain ceiling */","#define REG_COM10\t0x15\t/* Control 10 */","#define COM10_HSYNC\t 0x40\t /* HSYNC instead of HREF */","#define COM10_PCLK_HB\t 0x20\t /* Suppress PCLK on horiz blank */","#define COM10_HREF_REV 0x08\t /* Reverse HREF */","#define COM10_VS_LEAD\t 0x04\t /* VSYNC on clock leading edge */","#define COM10_VS_NEG\t 0x02\t /* VSYNC negative */","#define COM10_HS_NEG\t 0x01\t /* HSYNC negative */","#define REG_HSTART\t0x17\t/* Horiz start high bits */","#define REG_HSTOP\t0x18\t/* Horiz stop high bits */","#define REG_VSTART\t0x19\t/* Vert start high bits */","#define REG_VSTOP\t0x1a\t/* Vert stop high bits */","#define REG_PSHFT\t0x1b\t/* Pixel delay after HREF */","#define REG_MIDH\t0x1c\t/* Manuf. ID high */","#define REG_MIDL\t0x1d\t/* Manuf. ID low */","#define REG_MVFP\t0x1e\t/* Mirror / vflip */","#define MVFP_MIRROR\t 0x20\t /* Mirror image */","#define MVFP_FLIP\t 0x10\t /* Vertical flip */","","#define REG_AEW\t\t0x24\t/* AGC upper limit */","#define REG_AEB\t\t0x25\t/* AGC lower limit */","#define REG_VPT\t\t0x26\t/* AGC/AEC fast mode op region */","#define REG_HSYST\t0x30\t/* HSYNC rising edge delay */","#define REG_HSYEN\t0x31\t/* HSYNC falling edge delay */","#define REG_HREF\t0x32\t/* HREF pieces */","#define REG_TSLB\t0x3a\t/* lots of stuff */","#define TSLB_YLAST\t 0x04\t /* UYVY or VYUY - see com13 */","#define REG_COM11\t0x3b\t/* Control 11 */","#define COM11_NIGHT\t 0x80\t /* NIght mode enable */","#define COM11_NMFR\t 0x60\t /* Two bit NM frame rate */","#define COM11_HZAUTO\t 0x10\t /* Auto detect 50/60 Hz */","#define\t COM11_50HZ\t 0x08\t /* Manual 50Hz select */","#define COM11_EXP\t 0x02","#define REG_COM12\t0x3c\t/* Control 12 */","#define COM12_HREF\t 0x80\t /* HREF always */","#define REG_COM13\t0x3d\t/* Control 13 */","#define COM13_GAMMA\t 0x80\t /* Gamma enable */","#define\t COM13_UVSAT\t 0x40\t /* UV saturation auto adjustment */","#define COM13_UVSWAP\t 0x01\t /* V before U - w/TSLB */","#define REG_COM14\t0x3e\t/* Control 14 */","#define COM14_DCWEN\t 0x10\t /* DCW/PCLK-scale enable */","#define REG_EDGE\t0x3f\t/* Edge enhancement factor */","#define REG_COM15\t0x40\t/* Control 15 */","#define COM15_R10F0\t 0x00\t /* Data range 10 to F0 */","#define\t COM15_R01FE\t 0x80\t /* 01 to FE */","#define COM15_R00FF\t 0xc0\t /* 00 to FF */","#define COM15_RGB565\t 0x10\t /* RGB565 output */","#define COM15_RGB555\t 0x30\t /* RGB555 output */","#define REG_COM16\t0x41\t/* Control 16 */","#define COM16_AWBGAIN 0x08\t /* AWB gain enable */","#define REG_COM17\t0x42\t/* Control 17 */","#define COM17_AECWIN\t 0xc0\t /* AEC window - must match COM4 */","#define COM17_CBAR\t 0x08\t /* DSP Color bar */","","/*"," * This matrix defines how the colors are generated, must be"," * tweaked to adjust hue and saturation."," *"," * Order: v-red, v-green, v-blue, u-red, u-green, u-blue"," *"," * They are nine-bit signed quantities, with the sign bit"," * stored in 0x58. Sign for v-red is bit 0, and up from there."," */","#define\tREG_CMATRIX_BASE 0x4f","#define CMATRIX_LEN 6","#define REG_CMATRIX_SIGN 0x58","","","#define REG_BRIGHT\t0x55\t/* Brightness */","#define REG_CONTRAS\t0x56\t/* Contrast control */","","#define REG_GFIX\t0x69\t/* Fix gain control */","","#define REG_DBLV\t0x6b\t/* PLL control an debugging */","#define DBLV_BYPASS\t 0x00\t /* Bypass PLL */","#define DBLV_X4\t 0x01\t /* clock x4 */","#define DBLV_X6\t 0x10\t /* clock x6 */","#define DBLV_X8\t 0x11\t /* clock x8 */","","#define REG_REG76\t0x76\t/* OV's name */","#define R76_BLKPCOR\t 0x80\t /* Black pixel correction enable */","#define R76_WHTPCOR\t 0x40\t /* White pixel correction enable */","","#define REG_RGB444\t0x8c\t/* RGB 444 control */","#define R444_ENABLE\t 0x02\t /* Turn on RGB444, overrides 5x5 */","#define R444_RGBX\t 0x01\t /* Empty nibble at end */","","#define REG_HAECC1\t0x9f\t/* Hist AEC/AGC control 1 */","#define REG_HAECC2\t0xa0\t/* Hist AEC/AGC control 2 */","","#define REG_BD50MAX\t0xa5\t/* 50hz banding step limit */","#define REG_HAECC3\t0xa6\t/* Hist AEC/AGC control 3 */","#define REG_HAECC4\t0xa7\t/* Hist AEC/AGC control 4 */","#define REG_HAECC5\t0xa8\t/* Hist AEC/AGC control 5 */","#define REG_HAECC6\t0xa9\t/* Hist AEC/AGC control 6 */","#define REG_HAECC7\t0xaa\t/* Hist AEC/AGC control 7 */","#define REG_BD60MAX\t0xab\t/* 60hz banding step limit */","","enum ov7670_model {","\tMODEL_OV7670 = 0,","\tMODEL_OV7675,","};","","struct ov7670_win_size {","\tint\twidth;","\tint\theight;","\tunsigned char com7_bit;","\tint\thstart;\t\t/* Start/stop values for the camera. Note */","\tint\thstop;\t\t/* that they do not always make complete */","\tint\tvstart;\t\t/* sense to humans, but evidently the sensor */","\tint\tvstop;\t\t/* will do the right thing... */","\tstruct regval_list *regs; /* Regs to tweak */","};","","struct ov7670_devtype {","\t/* formats supported for each model */","\tstruct ov7670_win_size *win_sizes;","\tunsigned int n_win_sizes;","\t/* callbacks for frame rate control */","\tint (*set_framerate)(struct v4l2_subdev *, struct v4l2_fract *);","\tvoid (*get_framerate)(struct v4l2_subdev *, struct v4l2_fract *);","};","","/*"," * Information we maintain about a known sensor."," */","struct ov7670_format_struct; /* coming later */","struct ov7670_info {","\tstruct v4l2_subdev sd;","\tstruct v4l2_ctrl_handler hdl;","\tstruct {","\t\t/* gain cluster */","\t\tstruct v4l2_ctrl *auto_gain;","\t\tstruct v4l2_ctrl *gain;","\t};","\tstruct {","\t\t/* exposure cluster */","\t\tstruct v4l2_ctrl *auto_exposure;","\t\tstruct v4l2_ctrl *exposure;","\t};","\tstruct {","\t\t/* saturation/hue cluster */","\t\tstruct v4l2_ctrl *saturation;","\t\tstruct v4l2_ctrl *hue;","\t};","\tstruct ov7670_format_struct *fmt; /* Current format */","\tint min_width;\t\t\t/* Filter out smaller sizes */","\tint min_height;\t\t\t/* Filter out smaller sizes */","\tint clock_speed;\t\t/* External clock speed (MHz) */","\tu8 clkrc;\t\t\t/* Clock divider value */","\tbool use_smbus;\t\t\t/* Use smbus I/O instead of I2C */","\tbool pll_bypass;","\tbool pclk_hb_disable;","\tconst struct ov7670_devtype *devtype; /* Device specifics */","};","","static inline struct ov7670_info *to_state(struct v4l2_subdev *sd)","{","\treturn container_of(sd, struct ov7670_info, sd);","}","","static inline struct v4l2_subdev *to_sd(struct v4l2_ctrl *ctrl)","{","\treturn \u0026container_of(ctrl-\u003ehandler, struct ov7670_info, hdl)-\u003esd;","}","","","","/*"," * The default register settings, as obtained from OmniVision. There"," * is really no making sense of most of these - lots of \"reserved\" values"," * and such."," *"," * These settings give VGA YUYV."," */","","struct regval_list {","\tunsigned char reg_num;","\tunsigned char value;","};","","static struct regval_list ov7670_default_regs[] = {","\t{ REG_COM7, COM7_RESET },","/*"," * Clock scale: 3 = 15fps"," * 2 = 20fps"," * 1 = 30fps"," */","\t{ REG_CLKRC, 0x1 },\t/* OV: clock scale (30 fps) */","\t{ REG_TSLB, 0x04 },\t/* OV */","\t{ REG_COM7, 0 },\t/* VGA */","\t/*","\t * Set the hardware window. These values from OV don't entirely","\t * make sense - hstop is less than hstart. But they work...","\t */","\t{ REG_HSTART, 0x13 },\t{ REG_HSTOP, 0x01 },","\t{ REG_HREF, 0xb6 },\t{ REG_VSTART, 0x02 },","\t{ REG_VSTOP, 0x7a },\t{ REG_VREF, 0x0a },","","\t{ REG_COM3, 0 },\t{ REG_COM14, 0 },","\t/* Mystery scaling numbers */","\t{ 0x70, 0x3a },\t\t{ 0x71, 0x35 },","\t{ 0x72, 0x11 },\t\t{ 0x73, 0xf0 },","\t{ 0xa2, 0x02 },\t\t{ REG_COM10, 0x0 },","","\t/* Gamma curve values */","\t{ 0x7a, 0x20 },\t\t{ 0x7b, 0x10 },","\t{ 0x7c, 0x1e },\t\t{ 0x7d, 0x35 },","\t{ 0x7e, 0x5a },\t\t{ 0x7f, 0x69 },","\t{ 0x80, 0x76 },\t\t{ 0x81, 0x80 },","\t{ 0x82, 0x88 },\t\t{ 0x83, 0x8f },","\t{ 0x84, 0x96 },\t\t{ 0x85, 0xa3 },","\t{ 0x86, 0xaf },\t\t{ 0x87, 0xc4 },","\t{ 0x88, 0xd7 },\t\t{ 0x89, 0xe8 },","","\t/* AGC and AEC parameters. Note we start by disabling those features,","\t then turn them only after tweaking the values. */","\t{ REG_COM8, COM8_FASTAEC | COM8_AECSTEP | COM8_BFILT },","\t{ REG_GAIN, 0 },\t{ REG_AECH, 0 },","\t{ REG_COM4, 0x40 }, /* magic reserved bit */","\t{ REG_COM9, 0x18 }, /* 4x gain + magic rsvd bit */","\t{ REG_BD50MAX, 0x05 },\t{ REG_BD60MAX, 0x07 },","\t{ REG_AEW, 0x95 },\t{ REG_AEB, 0x33 },","\t{ REG_VPT, 0xe3 },\t{ REG_HAECC1, 0x78 },","\t{ REG_HAECC2, 0x68 },\t{ 0xa1, 0x03 }, /* magic */","\t{ REG_HAECC3, 0xd8 },\t{ REG_HAECC4, 0xd8 },","\t{ REG_HAECC5, 0xf0 },\t{ REG_HAECC6, 0x90 },","\t{ REG_HAECC7, 0x94 },","\t{ REG_COM8, COM8_FASTAEC|COM8_AECSTEP|COM8_BFILT|COM8_AGC|COM8_AEC },","","\t/* Almost all of these are magic \"reserved\" values. */","\t{ REG_COM5, 0x61 },\t{ REG_COM6, 0x4b },","\t{ 0x16, 0x02 },\t\t{ REG_MVFP, 0x07 },","\t{ 0x21, 0x02 },\t\t{ 0x22, 0x91 },","\t{ 0x29, 0x07 },\t\t{ 0x33, 0x0b },","\t{ 0x35, 0x0b },\t\t{ 0x37, 0x1d },","\t{ 0x38, 0x71 },\t\t{ 0x39, 0x2a },","\t{ REG_COM12, 0x78 },\t{ 0x4d, 0x40 },","\t{ 0x4e, 0x20 },\t\t{ REG_GFIX, 0 },","\t{ 0x6b, 0x4a },\t\t{ 0x74, 0x10 },","\t{ 0x8d, 0x4f },\t\t{ 0x8e, 0 },","\t{ 0x8f, 0 },\t\t{ 0x90, 0 },","\t{ 0x91, 0 },\t\t{ 0x96, 0 },","\t{ 0x9a, 0 },\t\t{ 0xb0, 0x84 },","\t{ 0xb1, 0x0c },\t\t{ 0xb2, 0x0e },","\t{ 0xb3, 0x82 },\t\t{ 0xb8, 0x0a },","","\t/* More reserved magic, some of which tweaks white balance */","\t{ 0x43, 0x0a },\t\t{ 0x44, 0xf0 },","\t{ 0x45, 0x34 },\t\t{ 0x46, 0x58 },","\t{ 0x47, 0x28 },\t\t{ 0x48, 0x3a },","\t{ 0x59, 0x88 },\t\t{ 0x5a, 0x88 },","\t{ 0x5b, 0x44 },\t\t{ 0x5c, 0x67 },","\t{ 0x5d, 0x49 },\t\t{ 0x5e, 0x0e },","\t{ 0x6c, 0x0a },\t\t{ 0x6d, 0x55 },","\t{ 0x6e, 0x11 },\t\t{ 0x6f, 0x9f }, /* \"9e for advance AWB\" */","\t{ 0x6a, 0x40 },\t\t{ REG_BLUE, 0x40 },","\t{ REG_RED, 0x60 },","\t{ REG_COM8, COM8_FASTAEC|COM8_AECSTEP|COM8_BFILT|COM8_AGC|COM8_AEC|COM8_AWB },","","\t/* Matrix coefficients */","\t{ 0x4f, 0x80 },\t\t{ 0x50, 0x80 },","\t{ 0x51, 0 },\t\t{ 0x52, 0x22 },","\t{ 0x53, 0x5e },\t\t{ 0x54, 0x80 },","\t{ 0x58, 0x9e },","","\t{ REG_COM16, COM16_AWBGAIN },\t{ REG_EDGE, 0 },","\t{ 0x75, 0x05 },\t\t{ 0x76, 0xe1 },","\t{ 0x4c, 0 },\t\t{ 0x77, 0x01 },","\t{ REG_COM13, 0xc3 },\t{ 0x4b, 0x09 },","\t{ 0xc9, 0x60 },\t\t{ REG_COM16, 0x38 },","\t{ 0x56, 0x40 },","","\t{ 0x34, 0x11 },\t\t{ REG_COM11, COM11_EXP|COM11_HZAUTO },","\t{ 0xa4, 0x88 },\t\t{ 0x96, 0 },","\t{ 0x97, 0x30 },\t\t{ 0x98, 0x20 },","\t{ 0x99, 0x30 },\t\t{ 0x9a, 0x84 },","\t{ 0x9b, 0x29 },\t\t{ 0x9c, 0x03 },","\t{ 0x9d, 0x4c },\t\t{ 0x9e, 0x3f },","\t{ 0x78, 0x04 },","","\t/* Extra-weird stuff. Some sort of multiplexor register */","\t{ 0x79, 0x01 },\t\t{ 0xc8, 0xf0 },","\t{ 0x79, 0x0f },\t\t{ 0xc8, 0x00 },","\t{ 0x79, 0x10 },\t\t{ 0xc8, 0x7e },","\t{ 0x79, 0x0a },\t\t{ 0xc8, 0x80 },","\t{ 0x79, 0x0b },\t\t{ 0xc8, 0x01 },","\t{ 0x79, 0x0c },\t\t{ 0xc8, 0x0f },","\t{ 0x79, 0x0d },\t\t{ 0xc8, 0x20 },","\t{ 0x79, 0x09 },\t\t{ 0xc8, 0x80 },","\t{ 0x79, 0x02 },\t\t{ 0xc8, 0xc0 },","\t{ 0x79, 0x03 },\t\t{ 0xc8, 0x40 },","\t{ 0x79, 0x05 },\t\t{ 0xc8, 0x30 },","\t{ 0x79, 0x26 },","","\t{ 0xff, 0xff },\t/* END MARKER */","};","","","/*"," * Here we'll try to encapsulate the changes for just the output"," * video format."," *"," * RGB656 and YUV422 come from OV; RGB444 is homebrewed."," *"," * IMPORTANT RULE: the first entry must be for COM7, see ov7670_s_fmt for why."," */","","","static struct regval_list ov7670_fmt_yuv422[] = {","\t{ REG_COM7, 0x0 }, /* Selects YUV mode */","\t{ REG_RGB444, 0 },\t/* No RGB444 please */","\t{ REG_COM1, 0 },\t/* CCIR601 */","\t{ REG_COM15, COM15_R00FF },","\t{ REG_COM9, 0x48 }, /* 32x gain ceiling; 0x8 is reserved bit */","\t{ 0x4f, 0x80 }, \t/* \"matrix coefficient 1\" */","\t{ 0x50, 0x80 }, \t/* \"matrix coefficient 2\" */","\t{ 0x51, 0 },\t\t/* vb */","\t{ 0x52, 0x22 }, \t/* \"matrix coefficient 4\" */","\t{ 0x53, 0x5e }, \t/* \"matrix coefficient 5\" */","\t{ 0x54, 0x80 }, \t/* \"matrix coefficient 6\" */","\t{ REG_COM13, COM13_GAMMA|COM13_UVSAT },","\t{ 0xff, 0xff },","};","","static struct regval_list ov7670_fmt_rgb565[] = {","\t{ REG_COM7, COM7_RGB },\t/* Selects RGB mode */","\t{ REG_RGB444, 0 },\t/* No RGB444 please */","\t{ REG_COM1, 0x0 },\t/* CCIR601 */","\t{ REG_COM15, COM15_RGB565 },","\t{ REG_COM9, 0x38 }, \t/* 16x gain ceiling; 0x8 is reserved bit */","\t{ 0x4f, 0xb3 }, \t/* \"matrix coefficient 1\" */","\t{ 0x50, 0xb3 }, \t/* \"matrix coefficient 2\" */","\t{ 0x51, 0 },\t\t/* vb */","\t{ 0x52, 0x3d }, \t/* \"matrix coefficient 4\" */","\t{ 0x53, 0xa7 }, \t/* \"matrix coefficient 5\" */","\t{ 0x54, 0xe4 }, \t/* \"matrix coefficient 6\" */","\t{ REG_COM13, COM13_GAMMA|COM13_UVSAT },","\t{ 0xff, 0xff },","};","","static struct regval_list ov7670_fmt_rgb444[] = {","\t{ REG_COM7, COM7_RGB },\t/* Selects RGB mode */","\t{ REG_RGB444, R444_ENABLE },\t/* Enable xxxxrrrr ggggbbbb */","\t{ REG_COM1, 0x0 },\t/* CCIR601 */","\t{ REG_COM15, COM15_R01FE|COM15_RGB565 }, /* Data range needed? */","\t{ REG_COM9, 0x38 }, \t/* 16x gain ceiling; 0x8 is reserved bit */","\t{ 0x4f, 0xb3 }, \t/* \"matrix coefficient 1\" */","\t{ 0x50, 0xb3 }, \t/* \"matrix coefficient 2\" */","\t{ 0x51, 0 },\t\t/* vb */","\t{ 0x52, 0x3d }, \t/* \"matrix coefficient 4\" */","\t{ 0x53, 0xa7 }, \t/* \"matrix coefficient 5\" */","\t{ 0x54, 0xe4 }, \t/* \"matrix coefficient 6\" */","\t{ REG_COM13, COM13_GAMMA|COM13_UVSAT|0x2 }, /* Magic rsvd bit */","\t{ 0xff, 0xff },","};","","static struct regval_list ov7670_fmt_raw[] = {","\t{ REG_COM7, COM7_BAYER },","\t{ REG_COM13, 0x08 }, /* No gamma, magic rsvd bit */","\t{ REG_COM16, 0x3d }, /* Edge enhancement, denoise */","\t{ REG_REG76, 0xe1 }, /* Pix correction, magic rsvd */","\t{ 0xff, 0xff },","};","","","","/*"," * Low-level register I/O."," *"," * Note that there are two versions of these. On the XO 1, the"," * i2c controller only does SMBUS, so that's what we use. The"," * ov7670 is not really an SMBUS device, though, so the communication"," * is not always entirely reliable."," */","static int ov7670_read_smbus(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char *value)","{","\tstruct i2c_client *client = v4l2_get_subdevdata(sd);","\tint ret;","","\tret = i2c_smbus_read_byte_data(client, reg);","\tif (ret \u003e= 0) {","\t\t*value = (unsigned char)ret;","\t\tret = 0;","\t}","\treturn ret;","}","","","static int ov7670_write_smbus(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char value)","{","\tstruct i2c_client *client = v4l2_get_subdevdata(sd);","\tint ret = i2c_smbus_write_byte_data(client, reg, value);","","\tif (reg == REG_COM7 \u0026\u0026 (value \u0026 COM7_RESET))","\t\tmsleep(5); /* Wait for reset to run */","\treturn ret;","}","","/*"," * On most platforms, we'd rather do straight i2c I/O."," */","static int ov7670_read_i2c(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char *value)","{","\tstruct i2c_client *client = v4l2_get_subdevdata(sd);","\tu8 data = reg;","\tstruct i2c_msg msg;","\tint ret;","","\t/*","\t * Send out the register address...","\t */","\tmsg.addr = client-\u003eaddr;","\tmsg.flags = 0;","\tmsg.len = 1;","\tmsg.buf = \u0026data;","\tret = i2c_transfer(client-\u003eadapter, \u0026msg, 1);","\tif (ret \u003c 0) {","\t\tprintk(KERN_ERR \"Error %d on register write\\n\", ret);","\t\treturn ret;","\t}","\t/*","\t * ...then read back the result.","\t */","\tmsg.flags = I2C_M_RD;","\tret = i2c_transfer(client-\u003eadapter, \u0026msg, 1);","\tif (ret \u003e= 0) {","\t\t*value = data;","\t\tret = 0;","\t}","\treturn ret;","}","","","static int ov7670_write_i2c(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char value)","{","\tstruct i2c_client *client = v4l2_get_subdevdata(sd);","\tstruct i2c_msg msg;","\tunsigned char data[2] = { reg, value };","\tint ret;","","\tmsg.addr = client-\u003eaddr;","\tmsg.flags = 0;","\tmsg.len = 2;","\tmsg.buf = data;","\tret = i2c_transfer(client-\u003eadapter, \u0026msg, 1);","\tif (ret \u003e 0)","\t\tret = 0;","\tif (reg == REG_COM7 \u0026\u0026 (value \u0026 COM7_RESET))","\t\tmsleep(5); /* Wait for reset to run */","\treturn ret;","}","","static int ov7670_read(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char *value)","{","\tstruct ov7670_info *info = to_state(sd);","\tif (info-\u003euse_smbus)","\t\treturn ov7670_read_smbus(sd, reg, value);","\telse","\t\treturn ov7670_read_i2c(sd, reg, value);","}","","static int ov7670_write(struct v4l2_subdev *sd, unsigned char reg,","\t\tunsigned char value)","{","\tstruct ov7670_info *info = to_state(sd);","\tif (info-\u003euse_smbus)","\t\treturn ov7670_write_smbus(sd, reg, value);","\telse","\t\treturn ov7670_write_i2c(sd, reg, value);","}","","/*"," * Write a list of register settings; ff/ff stops the process."," */","static int ov7670_write_array(struct v4l2_subdev *sd, struct regval_list *vals)","{","\twhile (vals-\u003ereg_num != 0xff || vals-\u003evalue != 0xff) {","\t\tint ret = ov7670_write(sd, vals-\u003ereg_num, vals-\u003evalue);","\t\tif (ret \u003c 0)","\t\t\treturn ret;","\t\tvals++;","\t}","\treturn 0;","}","","","/*"," * Stuff that knows about the sensor."," */","static int ov7670_reset(struct v4l2_subdev *sd, u32 val)","{","\tov7670_write(sd, REG_COM7, COM7_RESET);","\tmsleep(1);","\treturn 0;","}","","","static int ov7670_init(struct v4l2_subdev *sd, u32 val)","{","\treturn ov7670_write_array(sd, ov7670_default_regs);","}","","","","static int ov7670_detect(struct v4l2_subdev *sd)","{","\tunsigned char v;","\tint ret;","","\tret = ov7670_init(sd, 0);","\tif (ret \u003c 0)","\t\treturn ret;","\tret = ov7670_read(sd, REG_MIDH, \u0026v);","\tif (ret \u003c 0)","\t\treturn ret;","\tif (v != 0x7f) /* OV manuf. id. */","\t\treturn -ENODEV;","\tret = ov7670_read(sd, REG_MIDL, \u0026v);","\tif (ret \u003c 0)","\t\treturn ret;","\tif (v != 0xa2)","\t\treturn -ENODEV;","\t/*","\t * OK, we know we have an OmniVision chip...but which one?","\t */","\tret = ov7670_read(sd, REG_PID, \u0026v);","\tif (ret \u003c 0)","\t\treturn ret;","\tif (v != 0x76) /* PID + VER = 0x76 / 0x73 */","\t\treturn -ENODEV;","\tret = ov7670_read(sd, REG_VER, \u0026v);","\tif (ret \u003c 0)","\t\treturn ret;","\tif (v != 0x73) /* PID + VER = 0x76 / 0x73 */","\t\treturn -ENODEV;","\treturn 0;","}","","","/*"," * Store information about the video data format. The color matrix"," * is deeply tied into the format, so keep the relevant values here."," * The magic matrix numbers come from OmniVision."," */","static struct ov7670_format_struct {","\tu32 mbus_code;","\tenum v4l2_colorspace colorspace;","\tstruct regval_list *regs;","\tint cmatrix[CMATRIX_LEN];","} ov7670_formats[] = {","\t{","\t\t.mbus_code\t= MEDIA_BUS_FMT_YUYV8_2X8,","\t\t.colorspace\t= V4L2_COLORSPACE_SRGB,","\t\t.regs \t\t= ov7670_fmt_yuv422,","\t\t.cmatrix\t= { 128, -128, 0, -34, -94, 128 },","\t},","\t{","\t\t.mbus_code\t= MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE,","\t\t.colorspace\t= V4L2_COLORSPACE_SRGB,","\t\t.regs\t\t= ov7670_fmt_rgb444,","\t\t.cmatrix\t= { 179, -179, 0, -61, -176, 228 },","\t},","\t{","\t\t.mbus_code\t= MEDIA_BUS_FMT_RGB565_2X8_LE,","\t\t.colorspace\t= V4L2_COLORSPACE_SRGB,","\t\t.regs\t\t= ov7670_fmt_rgb565,","\t\t.cmatrix\t= { 179, -179, 0, -61, -176, 228 },","\t},","\t{","\t\t.mbus_code\t= MEDIA_BUS_FMT_SBGGR8_1X8,","\t\t.colorspace\t= V4L2_COLORSPACE_SRGB,","\t\t.regs \t\t= ov7670_fmt_raw,","\t\t.cmatrix\t= { 0, 0, 0, 0, 0, 0 },","\t},","};","#define N_OV7670_FMTS ARRAY_SIZE(ov7670_formats)","","","/*"," * Then there is the issue of window sizes. Try to capture the info here."," */","","/*"," * QCIF mode is done (by OV) in a very strange way - it actually looks like"," * VGA with weird scaling options - they do *not* use the canned QCIF mode"," * which is allegedly provided by the sensor. So here's the weird register"," * settings."," */","static struct regval_list ov7670_qcif_regs[] = {","\t{ REG_COM3, COM3_SCALEEN|COM3_DCWEN },","\t{ REG_COM3, COM3_DCWEN },","\t{ REG_COM14, COM14_DCWEN | 0x01},","\t{ 0x73, 0xf1 },","\t{ 0xa2, 0x52 },","\t{ 0x7b, 0x1c },","\t{ 0x7c, 0x28 },","\t{ 0x7d, 0x3c },","\t{ 0x7f, 0x69 },","\t{ REG_COM9, 0x38 },","\t{ 0xa1, 0x0b },","\t{ 0x74, 0x19 },","\t{ 0x9a, 0x80 },","\t{ 0x43, 0x14 },","\t{ REG_COM13, 0xc0 },","\t{ 0xff, 0xff },","};","","static struct ov7670_win_size ov7670_win_sizes[] = {","\t/* VGA */","\t{","\t\t.width\t\t= VGA_WIDTH,","\t\t.height\t\t= VGA_HEIGHT,","\t\t.com7_bit\t= COM7_FMT_VGA,","\t\t.hstart\t\t= 158,\t/* These values from */","\t\t.hstop\t\t= 14,\t/* Omnivision */","\t\t.vstart\t\t= 10,","\t\t.vstop\t\t= 490,","\t\t.regs\t\t= NULL,","\t},","\t/* CIF */","\t{","\t\t.width\t\t= CIF_WIDTH,","\t\t.height\t\t= CIF_HEIGHT,","\t\t.com7_bit\t= COM7_FMT_CIF,","\t\t.hstart\t\t= 170,\t/* Empirically determined */","\t\t.hstop\t\t= 90,","\t\t.vstart\t\t= 14,","\t\t.vstop\t\t= 494,","\t\t.regs\t\t= NULL,","\t},","\t/* QVGA */","\t{","\t\t.width\t\t= QVGA_WIDTH,","\t\t.height\t\t= QVGA_HEIGHT,","\t\t.com7_bit\t= COM7_FMT_QVGA,","\t\t.hstart\t\t= 168,\t/* Empirically determined */","\t\t.hstop\t\t= 24,","\t\t.vstart\t\t= 12,","\t\t.vstop\t\t= 492,","\t\t.regs\t\t= NULL,","\t},","\t/* QCIF */","\t{","\t\t.width\t\t= QCIF_WIDTH,","\t\t.height\t\t= QCIF_HEIGHT,","\t\t.com7_bit\t= COM7_FMT_VGA, /* see comment above */","\t\t.hstart\t\t= 456,\t/* Empirically determined */","\t\t.hstop\t\t= 24,","\t\t.vstart\t\t= 14,","\t\t.vstop\t\t= 494,","\t\t.regs\t\t= ov7670_qcif_regs,","\t}","};","","static struct ov7670_win_size ov7675_win_sizes[] = {","\t/*","\t * Currently, only VGA is supported. Theoretically it could be possible","\t * to support CIF, QVGA and QCIF too. Taking values for ov7670 as a","\t * base and tweak them empirically could be required.","\t */","\t{","\t\t.width\t\t= VGA_WIDTH,","\t\t.height\t\t= VGA_HEIGHT,","\t\t.com7_bit\t= COM7_FMT_VGA,","\t\t.hstart\t\t= 158,\t/* These values from */","\t\t.hstop\t\t= 14,\t/* Omnivision */","\t\t.vstart\t\t= 14, /* Empirically determined */","\t\t.vstop\t\t= 494,","\t\t.regs\t\t= NULL,","\t}","};","","static void ov7675_get_framerate(struct v4l2_subdev *sd,","\t\t\t\t struct v4l2_fract *tpf)","{","\tstruct ov7670_info *info = to_state(sd);","\tu32 clkrc = info-\u003eclkrc;","\tint pll_factor;","","\tif (info-\u003epll_bypass)","\t\tpll_factor = 1;","\telse","\t\tpll_factor = PLL_FACTOR;","","\tclkrc++;","\tif (info-\u003efmt-\u003embus_code == MEDIA_BUS_FMT_SBGGR8_1X8)","\t\tclkrc = (clkrc \u003e\u003e 1);","","\ttpf-\u003enumerator = 1;","\ttpf-\u003edenominator = (5 * pll_factor * info-\u003eclock_speed) /","\t\t\t(4 * clkrc);","}","","static int ov7675_set_framerate(struct v4l2_subdev *sd,","\t\t\t\t struct v4l2_fract *tpf)","{","\tstruct ov7670_info *info = to_state(sd);","\tu32 clkrc;","\tint pll_factor;","\tint ret;","","\t/*","\t * The formula is fps = 5/4*pixclk for YUV/RGB and","\t * fps = 5/2*pixclk for RAW.","\t *","\t * pixclk = clock_speed / (clkrc + 1) * PLLfactor","\t *","\t */","\tif (info-\u003epll_bypass) {","\t\tpll_factor = 1;","\t\tret = ov7670_write(sd, REG_DBLV, DBLV_BYPASS);","\t} else {","\t\tpll_factor = PLL_FACTOR;","\t\tret = ov7670_write(sd, REG_DBLV, DBLV_X4);","\t}","\tif (ret \u003c 0)","\t\treturn ret;","","\tif (tpf-\u003enumerator == 0 || tpf-\u003edenominator == 0) {","\t\tclkrc = 0;","\t} else {","\t\tclkrc = (5 * pll_factor * info-\u003eclock_speed * tpf-\u003enumerator) /","\t\t\t(4 * tpf-\u003edenominator);","\t\tif (info-\u003efmt-\u003embus_code == MEDIA_BUS_FMT_SBGGR8_1X8)","\t\t\tclkrc = (clkrc \u003c\u003c 1);","\t\tclkrc--;","\t}","","\t/*","\t * The datasheet claims that clkrc = 0 will divide the input clock by 1","\t * but we've checked with an oscilloscope that it divides by 2 instead.","\t * So, if clkrc = 0 just bypass the divider.","\t */","\tif (clkrc \u003c= 0)","\t\tclkrc = CLK_EXT;","\telse if (clkrc \u003e CLK_SCALE)","\t\tclkrc = CLK_SCALE;","\tinfo-\u003eclkrc = clkrc;","","\t/* Recalculate frame rate */","\tov7675_get_framerate(sd, tpf);","","\tret = ov7670_write(sd, REG_CLKRC, info-\u003eclkrc);","\tif (ret \u003c 0)","\t\treturn ret;","","\treturn ov7670_write(sd, REG_DBLV, DBLV_X4);","}","","static void ov7670_get_framerate_legacy(struct v4l2_subdev *sd,","\t\t\t\t struct v4l2_fract *tpf)","{","\tstruct ov7670_info *info = to_state(sd);","","\ttpf-\u003enumerator = 1;","\ttpf-\u003edenominator = info-\u003eclock_speed;","\tif ((info-\u003eclkrc \u0026 CLK_EXT) == 0 \u0026\u0026 (info-\u003eclkrc \u0026 CLK_SCALE) \u003e 1)","\t\ttpf-\u003edenominator /= (info-\u003eclkrc \u0026 CLK_SCALE);","}","","static int ov7670_set_framerate_legacy(struct v4l2_subdev *sd,","\t\t\t\t\tstruct v4l2_fract *tpf)","{","\tstruct ov7670_info *info = to_state(sd);","\tint div;","","\tif (tpf-\u003enumerator == 0 || tpf-\u003edenominator == 0)","\t\tdiv = 1; /* Reset to full rate */","\telse","\t\tdiv = (tpf-\u003enumerator * info-\u003eclock_speed) / tpf-\u003edenominator;","\tif (div == 0)","\t\tdiv = 1;","\telse if (div \u003e CLK_SCALE)","\t\tdiv = CLK_SCALE;","\tinfo-\u003eclkrc = (info-\u003eclkrc \u0026 0x80) | div;","\ttpf-\u003enumerator = 1;","\ttpf-\u003edenominator = info-\u003eclock_speed / div;","\treturn ov7670_write(sd, REG_CLKRC, info-\u003eclkrc);","}","","/*"," * Store a set of start/stop values into the camera."," */","static int ov7670_set_hw(struct v4l2_subdev *sd, int hstart, int hstop,","\t\tint vstart, int vstop)","{","\tint ret;","\tunsigned char v;","/*"," * Horizontal: 11 bits, top 8 live in hstart and hstop. Bottom 3 of"," * hstart are in href[2:0], bottom 3 of hstop in href[5:3]. There is"," * a mystery \"edge offset\" value in the top two bits of href."," */","\tret = ov7670_write(sd, REG_HSTART, (hstart \u003e\u003e 3) \u0026 0xff);","\tret += ov7670_write(sd, REG_HSTOP, (hstop \u003e\u003e 3) \u0026 0xff);","\tret += ov7670_read(sd, REG_HREF, \u0026v);","\tv = (v \u0026 0xc0) | ((hstop \u0026 0x7) \u003c\u003c 3) | (hstart \u0026 0x7);","\tmsleep(10);","\tret += ov7670_write(sd, REG_HREF, v);","/*"," * Vertical: similar arrangement, but only 10 bits."," */","\tret += ov7670_write(sd, REG_VSTART, (vstart \u003e\u003e 2) \u0026 0xff);","\tret += ov7670_write(sd, REG_VSTOP, (vstop \u003e\u003e 2) \u0026 0xff);","\tret += ov7670_read(sd, REG_VREF, \u0026v);","\tv = (v \u0026 0xf0) | ((vstop \u0026 0x3) \u003c\u003c 2) | (vstart \u0026 0x3);","\tmsleep(10);","\tret += ov7670_write(sd, REG_VREF, v);","\treturn ret;","}","","","static int ov7670_enum_mbus_code(struct v4l2_subdev *sd,","\t\tstruct v4l2_subdev_pad_config *cfg,","\t\tstruct v4l2_subdev_mbus_code_enum *code)","{","\tif (code-\u003epad || code-\u003eindex \u003e= N_OV7670_FMTS)","\t\treturn -EINVAL;","","\tcode-\u003ecode = ov7670_formats[code-\u003eindex].mbus_code;","\treturn 0;","}","","static int ov7670_try_fmt_internal(struct v4l2_subdev *sd,","\t\tstruct v4l2_mbus_framefmt *fmt,","\t\tstruct ov7670_format_struct **ret_fmt,","\t\tstruct ov7670_win_size **ret_wsize)","{","\tint index, i;","\tstruct ov7670_win_size *wsize;","\tstruct ov7670_info *info = to_state(sd);","\tunsigned int n_win_sizes = info-\u003edevtype-\u003en_win_sizes;","\tunsigned int win_sizes_limit = n_win_sizes;","","\tfor (index = 0; index \u003c N_OV7670_FMTS; index++)","\t\tif (ov7670_formats[index].mbus_code == fmt-\u003ecode)","\t\t\tbreak;","\tif (index \u003e= N_OV7670_FMTS) {","\t\t/* default to first format */","\t\tindex = 0;","\t\tfmt-\u003ecode = ov7670_formats[0].mbus_code;","\t}","\tif (ret_fmt != NULL)","\t\t*ret_fmt = ov7670_formats + index;","\t/*","\t * Fields: the OV devices claim to be progressive.","\t */","\tfmt-\u003efield = V4L2_FIELD_NONE;","","\t/*","\t * Don't consider values that don't match min_height and min_width","\t * constraints.","\t */","\tif (info-\u003emin_width || info-\u003emin_height)","\t\tfor (i = 0; i \u003c n_win_sizes; i++) {","\t\t\twsize = info-\u003edevtype-\u003ewin_sizes + i;","","\t\t\tif (wsize-\u003ewidth \u003c info-\u003emin_width ||","\t\t\t\twsize-\u003eheight \u003c info-\u003emin_height) {","\t\t\t\twin_sizes_limit = i;","\t\t\t\tbreak;","\t\t\t}","\t\t}","\t/*","\t * Round requested image size down to the nearest","\t * we support, but not below the smallest.","\t */","\tfor (wsize = info-\u003edevtype-\u003ewin_sizes;","\t wsize \u003c info-\u003edevtype-\u003ewin_sizes + win_sizes_limit; wsize++)","\t\tif (fmt-\u003ewidth \u003e= wsize-\u003ewidth \u0026\u0026 fmt-\u003eheight \u003e= wsize-\u003eheight)","\t\t\tbreak;","\tif (wsize \u003e= info-\u003edevtype-\u003ewin_sizes + win_sizes_limit)","\t\twsize--; /* Take the smallest one */","\tif (ret_wsize != NULL)","\t\t*ret_wsize = wsize;","\t/*","\t * Note the size we'll actually handle.","\t */","\tfmt-\u003ewidth = wsize-\u003ewidth;","\tfmt-\u003eheight = wsize-\u003eheight;","\tfmt-\u003ecolorspace = ov7670_formats[index].colorspace;","\treturn 0;","}","","/*"," * Set a format."," */","static int ov7670_set_fmt(struct v4l2_subdev *sd,","\t\tstruct v4l2_subdev_pad_config *cfg,","\t\tstruct v4l2_subdev_format *format)","{","\tstruct ov7670_format_struct *ovfmt;","\tstruct ov7670_win_size *wsize;","\tstruct ov7670_info *info = to_state(sd);","\tunsigned char com7;","\tint ret;","","\tif (format-\u003epad)","\t\treturn -EINVAL;","","\tif (format-\u003ewhich == V4L2_SUBDEV_FORMAT_TRY) {","\t\tret = ov7670_try_fmt_internal(sd, \u0026format-\u003eformat, NULL, NULL);","\t\tif (ret)","\t\t\treturn ret;","\t\tcfg-\u003etry_fmt = format-\u003eformat;","\t\treturn 0;","\t}","","\tret = ov7670_try_fmt_internal(sd, \u0026format-\u003eformat, \u0026ovfmt, \u0026wsize);","","\tif (ret)","\t\treturn ret;","\t/*","\t * COM7 is a pain in the ass, it doesn't like to be read then","\t * quickly written afterward. But we have everything we need","\t * to set it absolutely here, as long as the format-specific","\t * register sets list it first.","\t */","\tcom7 = ovfmt-\u003eregs[0].value;","\tcom7 |= wsize-\u003ecom7_bit;","\tov7670_write(sd, REG_COM7, com7);","\t/*","\t * Now write the rest of the array. Also store start/stops","\t */","\tov7670_write_array(sd, ovfmt-\u003eregs + 1);","\tov7670_set_hw(sd, wsize-\u003ehstart, wsize-\u003ehstop, wsize-\u003evstart,","\t\t\twsize-\u003evstop);","\tret = 0;","\tif (wsize-\u003eregs)","\t\tret = ov7670_write_array(sd, wsize-\u003eregs);","\tinfo-\u003efmt = ovfmt;","","\t/*","\t * If we're running RGB565, we must rewrite clkrc after setting","\t * the other parameters or the image looks poor. If we're *not*","\t * doing RGB565, we must not rewrite clkrc or the image looks","\t * *really* poor.","\t *","\t * (Update) Now that we retain clkrc state, we should be able","\t * to write it unconditionally, and that will make the frame","\t * rate persistent too.","\t */","\tif (ret == 0)","\t\tret = ov7670_write(sd, REG_CLKRC, info-\u003eclkrc);","\treturn 0;","}","","/*"," * Implement G/S_PARM. There is a \"high quality\" mode we could try"," * to do someday; for now, we just do the frame rate tweak."," */","static int ov7670_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *parms)","{","\tstruct v4l2_captureparm *cp = \u0026parms-\u003eparm.capture;","\tstruct ov7670_info *info = to_state(sd);","","\tif (parms-\u003etype != V4L2_BUF_TYPE_VIDEO_CAPTURE)","\t\treturn -EINVAL;","","\tmemset(cp, 0, sizeof(struct v4l2_captureparm));","\tcp-\u003ecapability = V4L2_CAP_TIMEPERFRAME;","\tinfo-\u003edevtype-\u003eget_framerate(sd, \u0026cp-\u003etimeperframe);","","\treturn 0;","}","","static int ov7670_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *parms)","{","\tstruct v4l2_captureparm *cp = \u0026parms-\u003eparm.capture;","\tstruct v4l2_fract *tpf = \u0026cp-\u003etimeperframe;","\tstruct ov7670_info *info = to_state(sd);","","\tif (parms-\u003etype != V4L2_BUF_TYPE_VIDEO_CAPTURE)","\t\treturn -EINVAL;","\tif (cp-\u003eextendedmode != 0)","\t\treturn -EINVAL;","","\treturn info-\u003edevtype-\u003eset_framerate(sd, tpf);","}","","","/*"," * Frame intervals. Since frame rates are controlled with the clock"," * divider, we can only do 30/n for integer n values. So no continuous"," * or stepwise options. Here we just pick a handful of logical values."," */","","static int ov7670_frame_rates[] = { 30, 15, 10, 5, 1 };","","static int ov7670_enum_frame_interval(struct v4l2_subdev *sd,","\t\t\t\t struct v4l2_subdev_pad_config *cfg,","\t\t\t\t struct v4l2_subdev_frame_interval_enum *fie)","{","\tstruct ov7670_info *info = to_state(sd);","\tunsigned int n_win_sizes = info-\u003edevtype-\u003en_win_sizes;","\tint i;","","\tif (fie-\u003epad)","\t\treturn -EINVAL;","\tif (fie-\u003eindex \u003e= ARRAY_SIZE(ov7670_frame_rates))","\t\treturn -EINVAL;","","\t/*","\t * Check if the width/height is valid.","\t *","\t * If a minimum width/height was requested, filter out the capture","\t * windows that fall outside that.","\t */","\tfor (i = 0; i \u003c n_win_sizes; i++) {","\t\tstruct ov7670_win_size *win = \u0026info-\u003edevtype-\u003ewin_sizes[i];","","\t\tif (info-\u003emin_width \u0026\u0026 win-\u003ewidth \u003c info-\u003emin_width)","\t\t\tcontinue;","\t\tif (info-\u003emin_height \u0026\u0026 win-\u003eheight \u003c info-\u003emin_height)","\t\t\tcontinue;","\t\tif (fie-\u003ewidth == win-\u003ewidth \u0026\u0026 fie-\u003eheight == win-\u003eheight)","\t\t\tbreak;","\t}","\tif (i == n_win_sizes)","\t\treturn -EINVAL;","\tfie-\u003einterval.numerator = 1;","\tfie-\u003einterval.denominator = ov7670_frame_rates[fie-\u003eindex];","\treturn 0;","}","","/*"," * Frame size enumeration"," */","static int ov7670_enum_frame_size(struct v4l2_subdev *sd,","\t\t\t\t struct v4l2_subdev_pad_config *cfg,","\t\t\t\t struct v4l2_subdev_frame_size_enum *fse)","{","\tstruct ov7670_info *info = to_state(sd);","\tint i;","\tint num_valid = -1;","\t__u32 index = fse-\u003eindex;","\tunsigned int n_win_sizes = info-\u003edevtype-\u003en_win_sizes;","","\tif (fse-\u003epad)","\t\treturn -EINVAL;","","\t/*","\t * If a minimum width/height was requested, filter out the capture","\t * windows that fall outside that.","\t */","\tfor (i = 0; i \u003c n_win_sizes; i++) {","\t\tstruct ov7670_win_size *win = \u0026info-\u003edevtype-\u003ewin_sizes[i];","\t\tif (info-\u003emin_width \u0026\u0026 win-\u003ewidth \u003c info-\u003emin_width)","\t\t\tcontinue;","\t\tif (info-\u003emin_height \u0026\u0026 win-\u003eheight \u003c info-\u003emin_height)","\t\t\tcontinue;","\t\tif (index == ++num_valid) {","\t\t\tfse-\u003emin_width = fse-\u003emax_width = win-\u003ewidth;","\t\t\tfse-\u003emin_height = fse-\u003emax_height = win-\u003eheight;","\t\t\treturn 0;","\t\t}","\t}","","\treturn -EINVAL;","}","","/*"," * Code for dealing with controls."," */","","static int ov7670_store_cmatrix(struct v4l2_subdev *sd,","\t\tint matrix[CMATRIX_LEN])","{","\tint i, ret;","\tunsigned char signbits = 0;","","\t/*","\t * Weird crap seems to exist in the upper part of","\t * the sign bits register, so let's preserve it.","\t */","\tret = ov7670_read(sd, REG_CMATRIX_SIGN, \u0026signbits);","\tsignbits \u0026= 0xc0;","","\tfor (i = 0; i \u003c CMATRIX_LEN; i++) {","\t\tunsigned char raw;","","\t\tif (matrix[i] \u003c 0) {","\t\t\tsignbits |= (1 \u003c\u003c i);","\t\t\tif (matrix[i] \u003c -255)","\t\t\t\traw = 0xff;","\t\t\telse","\t\t\t\traw = (-1 * matrix[i]) \u0026 0xff;","\t\t}","\t\telse {","\t\t\tif (matrix[i] \u003e 255)","\t\t\t\traw = 0xff;","\t\t\telse","\t\t\t\traw = matrix[i] \u0026 0xff;","\t\t}","\t\tret += ov7670_write(sd, REG_CMATRIX_BASE + i, raw);","\t}","\tret += ov7670_write(sd, REG_CMATRIX_SIGN, signbits);","\treturn ret;","}","","","/*"," * Hue also requires messing with the color matrix. It also requires"," * trig functions, which tend not to be well supported in the kernel."," * So here is a simple table of sine values, 0-90 degrees, in steps"," * of five degrees. Values are multiplied by 1000."," *"," * The following naive approximate trig functions require an argument"," * carefully limited to -180 \u003c= theta \u003c= 180."," */","#define SIN_STEP 5","static const int ov7670_sin_table[] = {","\t 0,\t 87, 173, 258, 342, 422,","\t 499,\t573, 642, 707, 766, 819,","\t 866,\t906, 939, 965, 984, 996,","\t1000","};","","static int ov7670_sine(int theta)","{","\tint chs = 1;","\tint sine;","","\tif (theta \u003c 0) {","\t\ttheta = -theta;","\t\tchs = -1;","\t}","\tif (theta \u003c= 90)","\t\tsine = ov7670_sin_table[theta/SIN_STEP];","\telse {","\t\ttheta -= 90;","\t\tsine = 1000 - ov7670_sin_table[theta/SIN_STEP];","\t}","\treturn sine*chs;","}","","static int ov7670_cosine(int theta)","{","\ttheta = 90 - theta;","\tif (theta \u003e 180)","\t\ttheta -= 360;","\telse if (theta \u003c -180)","\t\ttheta += 360;","\treturn ov7670_sine(theta);","}","","","","","static void ov7670_calc_cmatrix(struct ov7670_info *info,","\t\tint matrix[CMATRIX_LEN], int sat, int hue)","{","\tint i;","\t/*","\t * Apply the current saturation setting first.","\t */","\tfor (i = 0; i \u003c CMATRIX_LEN; i++)","\t\tmatrix[i] = (info-\u003efmt-\u003ecmatrix[i] * sat) \u003e\u003e 7;","\t/*","\t * Then, if need be, rotate the hue value.","\t */","\tif (hue != 0) {","\t\tint sinth, costh, tmpmatrix[CMATRIX_LEN];","","\t\tmemcpy(tmpmatrix, matrix, CMATRIX_LEN*sizeof(int));","\t\tsinth = ov7670_sine(hue);","\t\tcosth = ov7670_cosine(hue);","","\t\tmatrix[0] = (matrix[3]*sinth + matrix[0]*costh)/1000;","\t\tmatrix[1] = (matrix[4]*sinth + matrix[1]*costh)/1000;","\t\tmatrix[2] = (matrix[5]*sinth + matrix[2]*costh)/1000;","\t\tmatrix[3] = (matrix[3]*costh - matrix[0]*sinth)/1000;","\t\tmatrix[4] = (matrix[4]*costh - matrix[1]*sinth)/1000;","\t\tmatrix[5] = (matrix[5]*costh - matrix[2]*sinth)/1000;","\t}","}","","","","static int ov7670_s_sat_hue(struct v4l2_subdev *sd, int sat, int hue)","{","\tstruct ov7670_info *info = to_state(sd);","\tint matrix[CMATRIX_LEN];","\tint ret;","","\tov7670_calc_cmatrix(info, matrix, sat, hue);","\tret = ov7670_store_cmatrix(sd, matrix);","\treturn ret;","}","","","/*"," * Some weird registers seem to store values in a sign/magnitude format!"," */","","static unsigned char ov7670_abs_to_sm(unsigned char v)","{","\tif (v \u003e 127)","\t\treturn v \u0026 0x7f;","\treturn (128 - v) | 0x80;","}","","static int ov7670_s_brightness(struct v4l2_subdev *sd, int value)","{","\tunsigned char com8 = 0, v;","\tint ret;","","\tov7670_read(sd, REG_COM8, \u0026com8);","\tcom8 \u0026= ~COM8_AEC;","\tov7670_write(sd, REG_COM8, com8);","\tv = ov7670_abs_to_sm(value);","\tret = ov7670_write(sd, REG_BRIGHT, v);","\treturn ret;","}","","static int ov7670_s_contrast(struct v4l2_subdev *sd, int value)","{","\treturn ov7670_write(sd, REG_CONTRAS, (unsigned char) value);","}","","static int ov7670_s_hflip(struct v4l2_subdev *sd, int value)","{","\tunsigned char v = 0;","\tint ret;","","\tret = ov7670_read(sd, REG_MVFP, \u0026v);","\tif (value)","\t\tv |= MVFP_MIRROR;","\telse","\t\tv \u0026= ~MVFP_MIRROR;","\tmsleep(10); /* FIXME */","\tret += ov7670_write(sd, REG_MVFP, v);","\treturn ret;","}","","static int ov7670_s_vflip(struct v4l2_subdev *sd, int value)","{","\tunsigned char v = 0;","\tint ret;","","\tret = ov7670_read(sd, REG_MVFP, \u0026v);","\tif (value)","\t\tv |= MVFP_FLIP;","\telse","\t\tv \u0026= ~MVFP_FLIP;","\tmsleep(10); /* FIXME */","\tret += ov7670_write(sd, REG_MVFP, v);","\treturn ret;","}","","/*"," * GAIN is split between REG_GAIN and REG_VREF[7:6]. If one believes"," * the data sheet, the VREF parts should be the most significant, but"," * experience shows otherwise. There seems to be little value in"," * messing with the VREF bits, so we leave them alone."," */","static int ov7670_g_gain(struct v4l2_subdev *sd, __s32 *value)","{","\tint ret;","\tunsigned char gain;","","\tret = ov7670_read(sd, REG_GAIN, \u0026gain);","\t*value = gain;","\treturn ret;","}","","static int ov7670_s_gain(struct v4l2_subdev *sd, int value)","{","\tint ret;","\tunsigned char com8;","","\tret = ov7670_write(sd, REG_GAIN, value \u0026 0xff);","\t/* Have to turn off AGC as well */","\tif (ret == 0) {","\t\tret = ov7670_read(sd, REG_COM8, \u0026com8);","\t\tret = ov7670_write(sd, REG_COM8, com8 \u0026 ~COM8_AGC);","\t}","\treturn ret;","}","","/*"," * Tweak autogain."," */","static int ov7670_s_autogain(struct v4l2_subdev *sd, int value)","{","\tint ret;","\tunsigned char com8;","","\tret = ov7670_read(sd, REG_COM8, \u0026com8);","\tif (ret == 0) {","\t\tif (value)","\t\t\tcom8 |= COM8_AGC;","\t\telse","\t\t\tcom8 \u0026= ~COM8_AGC;","\t\tret = ov7670_write(sd, REG_COM8, com8);","\t}","\treturn ret;","}","","static int ov7670_s_exp(struct v4l2_subdev *sd, int value)","{","\tint ret;","\tunsigned char com1, com8, aech, aechh;","","\tret = ov7670_read(sd, REG_COM1, \u0026com1) +","\t\tov7670_read(sd, REG_COM8, \u0026com8) +","\t\tov7670_read(sd, REG_AECHH, \u0026aechh);","\tif (ret)","\t\treturn ret;","","\tcom1 = (com1 \u0026 0xfc) | (value \u0026 0x03);","\taech = (value \u003e\u003e 2) \u0026 0xff;","\taechh = (aechh \u0026 0xc0) | ((value \u003e\u003e 10) \u0026 0x3f);","\tret = ov7670_write(sd, REG_COM1, com1) +","\t\tov7670_write(sd, REG_AECH, aech) +","\t\tov7670_write(sd, REG_AECHH, aechh);","\t/* Have to turn off AEC as well */","\tif (ret == 0)","\t\tret = ov7670_write(sd, REG_COM8, com8 \u0026 ~COM8_AEC);","\treturn ret;","}","","/*"," * Tweak autoexposure."," */","static int ov7670_s_autoexp(struct v4l2_subdev *sd,","\t\tenum v4l2_exposure_auto_type value)","{","\tint ret;","\tunsigned char com8;","","\tret = ov7670_read(sd, REG_COM8, \u0026com8);","\tif (ret == 0) {","\t\tif (value == V4L2_EXPOSURE_AUTO)","\t\t\tcom8 |= COM8_AEC;","\t\telse","\t\t\tcom8 \u0026= ~COM8_AEC;","\t\tret = ov7670_write(sd, REG_COM8, com8);","\t}","\treturn ret;","}","","","static int ov7670_g_volatile_ctrl(struct v4l2_ctrl *ctrl)","{","\tstruct v4l2_subdev *sd = to_sd(ctrl);","\tstruct ov7670_info *info = to_state(sd);","","\tswitch (ctrl-\u003eid) {","\tcase V4L2_CID_AUTOGAIN:","\t\treturn ov7670_g_gain(sd, \u0026info-\u003egain-\u003eval);","\t}","\treturn -EINVAL;","}","","static int ov7670_s_ctrl(struct v4l2_ctrl *ctrl)","{","\tstruct v4l2_subdev *sd = to_sd(ctrl);","\tstruct ov7670_info *info = to_state(sd);","","\tswitch (ctrl-\u003eid) {","\tcase V4L2_CID_BRIGHTNESS:","\t\treturn ov7670_s_brightness(sd, ctrl-\u003eval);","\tcase V4L2_CID_CONTRAST:","\t\treturn ov7670_s_contrast(sd, ctrl-\u003eval);","\tcase V4L2_CID_SATURATION:","\t\treturn ov7670_s_sat_hue(sd,","\t\t\t\tinfo-\u003esaturation-\u003eval, info-\u003ehue-\u003eval);","\tcase V4L2_CID_VFLIP:","\t\treturn ov7670_s_vflip(sd, ctrl-\u003eval);","\tcase V4L2_CID_HFLIP:","\t\treturn ov7670_s_hflip(sd, ctrl-\u003eval);","\tcase V4L2_CID_AUTOGAIN:","\t\t/* Only set manual gain if auto gain is not explicitly","\t\t turned on. */","\t\tif (!ctrl-\u003eval) {","\t\t\t/* ov7670_s_gain turns off auto gain */","\t\t\treturn ov7670_s_gain(sd, info-\u003egain-\u003eval);","\t\t}","\t\treturn ov7670_s_autogain(sd, ctrl-\u003eval);","\tcase V4L2_CID_EXPOSURE_AUTO:","\t\t/* Only set manual exposure if auto exposure is not explicitly","\t\t turned on. */","\t\tif (ctrl-\u003eval == V4L2_EXPOSURE_MANUAL) {","\t\t\t/* ov7670_s_exp turns off auto exposure */","\t\t\treturn ov7670_s_exp(sd, info-\u003eexposure-\u003eval);","\t\t}","\t\treturn ov7670_s_autoexp(sd, ctrl-\u003eval);","\t}","\treturn -EINVAL;","}","","static const struct v4l2_ctrl_ops ov7670_ctrl_ops = {","\t.s_ctrl = ov7670_s_ctrl,","\t.g_volatile_ctrl = ov7670_g_volatile_ctrl,","};","","#ifdef CONFIG_VIDEO_ADV_DEBUG","static int ov7670_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg)","{","\tunsigned char val = 0;","\tint ret;","","\tret = ov7670_read(sd, reg-\u003ereg \u0026 0xff, \u0026val);","\treg-\u003eval = val;","\treg-\u003esize = 1;","\treturn ret;","}","","static int ov7670_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg)","{","\tov7670_write(sd, reg-\u003ereg \u0026 0xff, reg-\u003eval \u0026 0xff);","\treturn 0;","}","#endif","","/* ----------------------------------------------------------------------- */","","static const struct v4l2_subdev_core_ops ov7670_core_ops = {","\t.reset = ov7670_reset,","\t.init = ov7670_init,","#ifdef CONFIG_VIDEO_ADV_DEBUG","\t.g_register = ov7670_g_register,","\t.s_register = ov7670_s_register,","#endif","};","","static const struct v4l2_subdev_video_ops ov7670_video_ops = {","\t.s_parm = ov7670_s_parm,","\t.g_parm = ov7670_g_parm,","};","","static const struct v4l2_subdev_pad_ops ov7670_pad_ops = {","\t.enum_frame_interval = ov7670_enum_frame_interval,","\t.enum_frame_size = ov7670_enum_frame_size,","\t.enum_mbus_code = ov7670_enum_mbus_code,","\t.set_fmt = ov7670_set_fmt,","};","","static const struct v4l2_subdev_ops ov7670_ops = {","\t.core = \u0026ov7670_core_ops,","\t.video = \u0026ov7670_video_ops,","\t.pad = \u0026ov7670_pad_ops,","};","","/* ----------------------------------------------------------------------- */","","static const struct ov7670_devtype ov7670_devdata[] = {","\t[MODEL_OV7670] = {","\t\t.win_sizes = ov7670_win_sizes,","\t\t.n_win_sizes = ARRAY_SIZE(ov7670_win_sizes),","\t\t.set_framerate = ov7670_set_framerate_legacy,","\t\t.get_framerate = ov7670_get_framerate_legacy,","\t},","\t[MODEL_OV7675] = {","\t\t.win_sizes = ov7675_win_sizes,","\t\t.n_win_sizes = ARRAY_SIZE(ov7675_win_sizes),","\t\t.set_framerate = ov7675_set_framerate,","\t\t.get_framerate = ov7675_get_framerate,","\t},","};","","static int ov7670_probe(struct i2c_client *client,","\t\t\tconst struct i2c_device_id *id)","{","\tstruct v4l2_fract tpf;","\tstruct v4l2_subdev *sd;","\tstruct ov7670_info *info;","\tint ret;","","\tinfo = devm_kzalloc(\u0026client-\u003edev, sizeof(*info), GFP_KERNEL);","\tif (info == NULL)","\t\treturn -ENOMEM;","\tsd = \u0026info-\u003esd;","\tv4l2_i2c_subdev_init(sd, client, \u0026ov7670_ops);","","\tinfo-\u003eclock_speed = 30; /* default: a guess */","\tif (client-\u003edev.platform_data) {","\t\tstruct ov7670_config *config = client-\u003edev.platform_data;","","\t\t/*","\t\t * Must apply configuration before initializing device, because it","\t\t * selects I/O method.","\t\t */","\t\tinfo-\u003emin_width = config-\u003emin_width;","\t\tinfo-\u003emin_height = config-\u003emin_height;","\t\tinfo-\u003euse_smbus = config-\u003euse_smbus;","","\t\tif (config-\u003eclock_speed)","\t\t\tinfo-\u003eclock_speed = config-\u003eclock_speed;","","\t\t/*","\t\t * It should be allowed for ov7670 too when it is migrated to","\t\t * the new frame rate formula.","\t\t */","\t\tif (config-\u003epll_bypass \u0026\u0026 id-\u003edriver_data != MODEL_OV7670)","\t\t\tinfo-\u003epll_bypass = true;","","\t\tif (config-\u003epclk_hb_disable)","\t\t\tinfo-\u003epclk_hb_disable = true;","\t}","","\t/* Make sure it's an ov7670 */","\tret = ov7670_detect(sd);","\tif (ret) {","\t\tv4l_dbg(1, debug, client,","\t\t\t\"chip found @ 0x%x (%s) is not an ov7670 chip.\\n\",","\t\t\tclient-\u003eaddr \u003c\u003c 1, client-\u003eadapter-\u003ename);","\t\treturn ret;","\t}","\tv4l_info(client, \"chip found @ 0x%02x (%s)\\n\",","\t\t\tclient-\u003eaddr \u003c\u003c 1, client-\u003eadapter-\u003ename);","","\tinfo-\u003edevtype = \u0026ov7670_devdata[id-\u003edriver_data];","\tinfo-\u003efmt = \u0026ov7670_formats[0];","\tinfo-\u003eclkrc = 0;","","\t/* Set default frame rate to 30 fps */","\ttpf.numerator = 1;","\ttpf.denominator = 30;","\tinfo-\u003edevtype-\u003eset_framerate(sd, \u0026tpf);","","\tif (info-\u003epclk_hb_disable)","\t\tov7670_write(sd, REG_COM10, COM10_PCLK_HB);","","\tv4l2_ctrl_handler_init(\u0026info-\u003ehdl, 10);","\tv4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_BRIGHTNESS, 0, 255, 1, 128);","\tv4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_CONTRAST, 0, 127, 1, 64);","\tv4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_VFLIP, 0, 1, 1, 0);","\tv4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_HFLIP, 0, 1, 1, 0);","\tinfo-\u003esaturation = v4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_SATURATION, 0, 256, 1, 128);","\tinfo-\u003ehue = v4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_HUE, -180, 180, 5, 0);","\tinfo-\u003egain = v4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_GAIN, 0, 255, 1, 128);","\tinfo-\u003eauto_gain = v4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_AUTOGAIN, 0, 1, 1, 1);","\tinfo-\u003eexposure = v4l2_ctrl_new_std(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_EXPOSURE, 0, 65535, 1, 500);","\tinfo-\u003eauto_exposure = v4l2_ctrl_new_std_menu(\u0026info-\u003ehdl, \u0026ov7670_ctrl_ops,","\t\t\tV4L2_CID_EXPOSURE_AUTO, V4L2_EXPOSURE_MANUAL, 0,","\t\t\tV4L2_EXPOSURE_AUTO);","\tsd-\u003ectrl_handler = \u0026info-\u003ehdl;","\tif (info-\u003ehdl.error) {","\t\tint err = info-\u003ehdl.error;","","\t\tv4l2_ctrl_handler_free(\u0026info-\u003ehdl);","\t\treturn err;","\t}","\t/*","\t * We have checked empirically that hw allows to read back the gain","\t * value chosen by auto gain but that's not the case for auto exposure.","\t */","\tv4l2_ctrl_auto_cluster(2, \u0026info-\u003eauto_gain, 0, true);","\tv4l2_ctrl_auto_cluster(2, \u0026info-\u003eauto_exposure,","\t\t\t V4L2_EXPOSURE_MANUAL, false);","\tv4l2_ctrl_cluster(2, \u0026info-\u003esaturation);","\tv4l2_ctrl_handler_setup(\u0026info-\u003ehdl);","","\treturn 0;","}","","","static int ov7670_remove(struct i2c_client *client)","{","\tstruct v4l2_subdev *sd = i2c_get_clientdata(client);","\tstruct ov7670_info *info = to_state(sd);","","\tv4l2_device_unregister_subdev(sd);","\tv4l2_ctrl_handler_free(\u0026info-\u003ehdl);","\treturn 0;","}","","static const struct i2c_device_id ov7670_id[] = {","\t{ \"ov7670\", MODEL_OV7670 },","\t{ \"ov7675\", MODEL_OV7675 },","\t{ }","};","MODULE_DEVICE_TABLE(i2c, ov7670_id);","","static struct i2c_driver ov7670_driver = {","\t.driver = {","\t\t.name\t= \"ov7670\",","\t},","\t.probe\t\t= ov7670_probe,","\t.remove\t\t= ov7670_remove,","\t.id_table\t= ov7670_id,","};","","module_i2c_driver(ov7670_driver);"],"stylingDirectives":[[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":47,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":65,"c":"pl-c"}],[{"s":0,"e":60,"c":"pl-c"}],[{"s":0,"e":31,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":52,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":66,"c":"pl-c"}],[{"s":0,"e":29,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":23,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":25,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":23,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":22,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":24,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":28,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":30,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":29,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":32,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":35,"c":"pl-s"}],[{"s":0,"e":8,"c":"pl-k"},{"s":9,"e":25,"c":"pl-s"}],[],[{"s":0,"e":13,"c":"pl-en"},{"s":14,"e":48,"c":"pl-s"}],[{"s":0,"e":18,"c":"pl-en"},{"s":19,"e":69,"c":"pl-s"}],[{"s":0,"e":14,"c":"pl-en"},{"s":15,"e":20,"c":"pl-s"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":11,"c":"pl-smi"},{"s":12,"e":17,"c":"pl-s1"}],[{"s":0,"e":12,"c":"pl-en"},{"s":13,"e":18,"c":"pl-s1"},{"s":20,"e":24,"c":"pl-s1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":0,"e":16,"c":"pl-en"},{"s":17,"e":22,"c":"pl-s1"},{"s":24,"e":43,"c":"pl-s"}],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":36,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":23,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[],[{"s":0,"e":15,"c":"pl-c"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":9,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-s1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":9,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":9,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":9,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":9,"e":19,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":19,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":24,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":19,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":19,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":23,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":22,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":20,"c":"pl-c1"}],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":60,"c":"pl-c"}],[{"s":0,"e":40,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":56,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":57,"c":"pl-c"}],[{"s":0,"e":63,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":24,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":24,"c":"pl-c1"}],[],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":17,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":21,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":10,"e":19,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-c1"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-c1"}],[],[{"s":0,"e":4,"c":"pl-k"},{"s":5,"e":17,"c":"pl-smi"}],[{"s":1,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":22,"c":"pl-smi"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":11,"c":"pl-c1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":23,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":11,"c":"pl-c1"},{"s":14,"e":59,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-c1"},{"s":13,"e":56,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":11,"c":"pl-c1"},{"s":14,"e":61,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-c1"},{"s":13,"e":45,"c":"pl-c"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-c1"},{"s":27,"e":46,"c":"pl-c"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":21,"c":"pl-smi"}],[{"s":1,"e":39,"c":"pl-c"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":23,"c":"pl-smi"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":34,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-smi"},{"s":10,"e":13,"c":"pl-smi"},{"s":14,"e":25,"c":"pl-c1"}],[{"s":1,"e":39,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":6,"e":7,"c":"pl-c1"},{"s":7,"e":20,"c":"pl-c1"},{"s":22,"e":28,"c":"pl-k"},{"s":29,"e":40,"c":"pl-smi"},{"s":41,"e":42,"c":"pl-c1"},{"s":44,"e":50,"c":"pl-k"},{"s":51,"e":61,"c":"pl-smi"},{"s":62,"e":63,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-smi"},{"s":7,"e":8,"c":"pl-c1"},{"s":8,"e":21,"c":"pl-c1"},{"s":23,"e":29,"c":"pl-k"},{"s":30,"e":41,"c":"pl-smi"},{"s":42,"e":43,"c":"pl-c1"},{"s":45,"e":51,"c":"pl-k"},{"s":52,"e":62,"c":"pl-smi"},{"s":63,"e":64,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":48,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":27,"c":"pl-smi"},{"s":30,"e":48,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":18,"c":"pl-smi"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":22,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":25,"c":"pl-smi"},{"s":26,"e":29,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"}],[{"s":2,"e":20,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":29,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"}],[{"s":2,"e":24,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":33,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":28,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"}],[{"s":2,"e":30,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":30,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":23,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":28,"c":"pl-smi"},{"s":29,"e":30,"c":"pl-c1"},{"s":30,"e":33,"c":"pl-c1"},{"s":36,"e":56,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":14,"c":"pl-c1"},{"s":18,"e":48,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":15,"c":"pl-c1"},{"s":19,"e":49,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":16,"c":"pl-c1"},{"s":19,"e":51,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-smi"},{"s":4,"e":9,"c":"pl-c1"},{"s":13,"e":38,"c":"pl-c"}],[{"s":1,"e":5,"c":"pl-smi"},{"s":6,"e":15,"c":"pl-c1"},{"s":19,"e":53,"c":"pl-c"}],[{"s":1,"e":5,"c":"pl-smi"},{"s":6,"e":16,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-smi"},{"s":6,"e":21,"c":"pl-c1"}],[{"s":1,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":28,"c":"pl-smi"},{"s":29,"e":30,"c":"pl-c1"},{"s":30,"e":37,"c":"pl-c1"},{"s":39,"e":61,"c":"pl-c"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":20,"c":"pl-k"},{"s":21,"e":32,"c":"pl-smi"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":42,"c":"pl-en"},{"s":43,"e":49,"c":"pl-k"},{"s":50,"e":61,"c":"pl-smi"},{"s":62,"e":63,"c":"pl-c1"},{"s":63,"e":65,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":31,"c":"pl-s1"},{"s":32,"e":43,"c":"pl-s1"},{"s":45,"e":47,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":20,"c":"pl-k"},{"s":21,"e":32,"c":"pl-smi"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":39,"c":"pl-en"},{"s":40,"e":46,"c":"pl-k"},{"s":47,"e":56,"c":"pl-smi"},{"s":57,"e":58,"c":"pl-c1"},{"s":58,"e":62,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"},{"s":9,"e":21,"c":"pl-en"},{"s":22,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":35,"c":"pl-c1"},{"s":37,"e":43,"c":"pl-s1"},{"s":44,"e":55,"c":"pl-s1"},{"s":57,"e":60,"c":"pl-s1"},{"s":61,"e":63,"c":"pl-c1"},{"s":63,"e":65,"c":"pl-c1"}],[],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":73,"c":"pl-c"}],[{"s":0,"e":12,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":32,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":18,"c":"pl-smi"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":22,"c":"pl-c1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":20,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":45,"c":"pl-s1"},{"s":48,"e":49,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":25,"c":"pl-c"}],[{"s":0,"e":25,"c":"pl-c"}],[{"s":0,"e":25,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":17,"c":"pl-c1"},{"s":21,"e":51,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":22,"e":30,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":18,"e":27,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":65,"c":"pl-c"}],[{"s":0,"e":61,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"},{"s":25,"e":34,"c":"pl-c1"},{"s":36,"e":40,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":23,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"}],[],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":20,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"}],[{"s":1,"e":30,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":29,"c":"pl-c1"},{"s":31,"e":34,"c":"pl-c1"}],[],[{"s":1,"e":25,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[],[{"s":1,"e":71,"c":"pl-c"}],[{"s":0,"e":53,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":25,"c":"pl-c1"},{"s":28,"e":40,"c":"pl-c1"},{"s":43,"e":53,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":20,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":21,"e":45,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":21,"e":51,"c":"pl-c"}],[{"s":3,"e":14,"c":"pl-c1"},{"s":16,"e":20,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-c1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"},{"s":22,"e":29,"c":"pl-c1"},{"s":31,"e":35,"c":"pl-c1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"},{"s":22,"e":32,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"},{"s":25,"e":29,"c":"pl-c1"},{"s":31,"e":35,"c":"pl-c1"},{"s":39,"e":50,"c":"pl-c"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"},{"s":25,"e":35,"c":"pl-c1"},{"s":37,"e":41,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"},{"s":25,"e":35,"c":"pl-c1"},{"s":37,"e":41,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":25,"c":"pl-c1"},{"s":26,"e":38,"c":"pl-c1"},{"s":39,"e":49,"c":"pl-c1"},{"s":50,"e":58,"c":"pl-c1"},{"s":59,"e":67,"c":"pl-c1"}],[],[{"s":1,"e":56,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":28,"c":"pl-c1"},{"s":30,"e":34,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":24,"e":28,"c":"pl-c1"},{"s":30,"e":34,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[],[{"s":1,"e":62,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"},{"s":34,"e":60,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":28,"c":"pl-c1"},{"s":30,"e":34,"c":"pl-c1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":25,"c":"pl-c1"},{"s":26,"e":38,"c":"pl-c1"},{"s":39,"e":49,"c":"pl-c1"},{"s":50,"e":58,"c":"pl-c1"},{"s":59,"e":67,"c":"pl-c1"},{"s":68,"e":76,"c":"pl-c1"}],[],[{"s":1,"e":26,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":27,"c":"pl-c1"},{"s":33,"e":41,"c":"pl-c1"},{"s":43,"e":44,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":24,"e":28,"c":"pl-c1"},{"s":30,"e":34,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":29,"c":"pl-c1"},{"s":31,"e":35,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":29,"c":"pl-c1"},{"s":31,"e":40,"c":"pl-c1"},{"s":41,"e":53,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[{"s":1,"e":60,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":17,"e":33,"c":"pl-c"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":64,"c":"pl-c"}],[{"s":0,"e":16,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":56,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":78,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":43,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":21,"e":43,"c":"pl-c"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":20,"e":42,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":18,"e":31,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":21,"e":64,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":18,"e":26,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":43,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":21,"c":"pl-c1"},{"s":25,"e":47,"c":"pl-c"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":20,"e":42,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":20,"e":33,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":26,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":22,"e":65,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":18,"e":26,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":43,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":21,"c":"pl-c1"},{"s":25,"e":47,"c":"pl-c"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":15,"e":26,"c":"pl-c1"},{"s":30,"e":60,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":20,"e":33,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"},{"s":26,"e":38,"c":"pl-c1"},{"s":42,"e":66,"c":"pl-c"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"},{"s":22,"e":65,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":18,"e":26,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-c1"},{"s":46,"e":66,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":40,"c":"pl-s1"},{"s":43,"e":44,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":22,"e":52,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":22,"e":53,"c":"pl-c"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"},{"s":22,"e":54,"c":"pl-c"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":26,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":63,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":35,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":28,"c":"pl-en"},{"s":29,"e":35,"c":"pl-k"},{"s":36,"e":47,"c":"pl-smi"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":51,"c":"pl-s1"},{"s":53,"e":66,"c":"pl-smi"},{"s":62,"e":66,"c":"pl-smi"},{"s":67,"e":70,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":17,"c":"pl-c1"},{"s":17,"e":22,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":48,"c":"pl-en"},{"s":49,"e":51,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":31,"c":"pl-en"},{"s":32,"e":38,"c":"pl-s1"},{"s":40,"e":43,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":3,"c":"pl-c1"},{"s":3,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":25,"c":"pl-smi"},{"s":21,"e":25,"c":"pl-smi"},{"s":26,"e":29,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":29,"c":"pl-en"},{"s":30,"e":36,"c":"pl-k"},{"s":37,"e":48,"c":"pl-smi"},{"s":49,"e":50,"c":"pl-c1"},{"s":50,"e":52,"c":"pl-s1"},{"s":54,"e":67,"c":"pl-smi"},{"s":63,"e":67,"c":"pl-smi"},{"s":68,"e":71,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":21,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":48,"c":"pl-en"},{"s":49,"e":51,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":36,"c":"pl-en"},{"s":37,"e":43,"c":"pl-s1"},{"s":45,"e":48,"c":"pl-s1"},{"s":50,"e":55,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":20,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":43,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-en"},{"s":9,"e":10,"c":"pl-c1"},{"s":14,"e":41,"c":"pl-c"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":54,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":26,"c":"pl-en"},{"s":27,"e":33,"c":"pl-k"},{"s":34,"e":45,"c":"pl-smi"},{"s":46,"e":47,"c":"pl-c1"},{"s":47,"e":49,"c":"pl-s1"},{"s":51,"e":64,"c":"pl-smi"},{"s":60,"e":64,"c":"pl-smi"},{"s":65,"e":68,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":17,"c":"pl-c1"},{"s":17,"e":22,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":48,"c":"pl-en"},{"s":49,"e":51,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-smi"},{"s":4,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-smi"},{"s":16,"e":19,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":36,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":35,"c":"pl-c1"},{"s":37,"e":38,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-s1"},{"s":43,"e":44,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":17,"c":"pl-c1"},{"s":18,"e":48,"c":"pl-s"},{"s":50,"e":53,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":33,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":21,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":35,"c":"pl-c1"},{"s":37,"e":38,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-s1"},{"s":43,"e":44,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":3,"c":"pl-c1"},{"s":3,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":27,"c":"pl-en"},{"s":28,"e":34,"c":"pl-k"},{"s":35,"e":46,"c":"pl-smi"},{"s":47,"e":48,"c":"pl-c1"},{"s":48,"e":50,"c":"pl-s1"},{"s":52,"e":65,"c":"pl-smi"},{"s":61,"e":65,"c":"pl-smi"},{"s":66,"e":69,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":21,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":48,"c":"pl-en"},{"s":49,"e":51,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":15,"c":"pl-smi"},{"s":16,"e":19,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"},{"s":20,"e":21,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"},{"s":27,"e":30,"c":"pl-s1"},{"s":32,"e":37,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":35,"c":"pl-c1"},{"s":37,"e":38,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-s1"},{"s":43,"e":44,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":20,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":43,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-en"},{"s":9,"e":10,"c":"pl-c1"},{"s":14,"e":41,"c":"pl-c"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":22,"c":"pl-en"},{"s":23,"e":29,"c":"pl-k"},{"s":30,"e":41,"c":"pl-smi"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":45,"c":"pl-s1"},{"s":47,"e":60,"c":"pl-smi"},{"s":56,"e":60,"c":"pl-smi"},{"s":61,"e":64,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":17,"c":"pl-c1"},{"s":17,"e":22,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":20,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":26,"c":"pl-en"},{"s":27,"e":29,"c":"pl-s1"},{"s":31,"e":34,"c":"pl-s1"},{"s":36,"e":41,"c":"pl-s1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":24,"c":"pl-en"},{"s":25,"e":27,"c":"pl-s1"},{"s":29,"e":32,"c":"pl-s1"},{"s":34,"e":39,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":23,"c":"pl-en"},{"s":24,"e":30,"c":"pl-k"},{"s":31,"e":42,"c":"pl-smi"},{"s":43,"e":44,"c":"pl-c1"},{"s":44,"e":46,"c":"pl-s1"},{"s":48,"e":61,"c":"pl-smi"},{"s":57,"e":61,"c":"pl-smi"},{"s":62,"e":65,"c":"pl-s1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":21,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":20,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":27,"c":"pl-en"},{"s":28,"e":30,"c":"pl-s1"},{"s":32,"e":35,"c":"pl-s1"},{"s":37,"e":42,"c":"pl-s1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":25,"c":"pl-en"},{"s":26,"e":28,"c":"pl-s1"},{"s":30,"e":33,"c":"pl-s1"},{"s":35,"e":40,"c":"pl-s1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":29,"c":"pl-en"},{"s":30,"e":36,"c":"pl-k"},{"s":37,"e":48,"c":"pl-smi"},{"s":49,"e":50,"c":"pl-c1"},{"s":50,"e":52,"c":"pl-s1"},{"s":54,"e":60,"c":"pl-k"},{"s":61,"e":72,"c":"pl-smi"},{"s":73,"e":74,"c":"pl-c1"},{"s":74,"e":78,"c":"pl-s1"}],[],[{"s":1,"e":6,"c":"pl-k"},{"s":8,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":21,"c":"pl-c1"},{"s":22,"e":24,"c":"pl-c1"},{"s":25,"e":29,"c":"pl-c1"},{"s":30,"e":32,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":44,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-c1"},{"s":48,"e":52,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":9,"c":"pl-s1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":24,"c":"pl-en"},{"s":25,"e":27,"c":"pl-s1"},{"s":29,"e":33,"c":"pl-s1"},{"s":33,"e":35,"c":"pl-c1"},{"s":35,"e":42,"c":"pl-c1"},{"s":44,"e":48,"c":"pl-s1"},{"s":48,"e":50,"c":"pl-c1"},{"s":50,"e":55,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":9,"c":"pl-s1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-k"},{"s":10,"e":13,"c":"pl-s1"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":37,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":23,"c":"pl-en"},{"s":24,"e":30,"c":"pl-k"},{"s":31,"e":42,"c":"pl-smi"},{"s":43,"e":44,"c":"pl-c1"},{"s":44,"e":46,"c":"pl-s1"},{"s":48,"e":51,"c":"pl-smi"},{"s":52,"e":55,"c":"pl-s1"}],[],[{"s":1,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":26,"c":"pl-c1"},{"s":28,"e":38,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":9,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":22,"c":"pl-en"},{"s":23,"e":29,"c":"pl-k"},{"s":30,"e":41,"c":"pl-smi"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":45,"c":"pl-s1"},{"s":47,"e":50,"c":"pl-smi"},{"s":51,"e":54,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":26,"c":"pl-en"},{"s":27,"e":29,"c":"pl-s1"},{"s":31,"e":50,"c":"pl-s1"}],[],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"}],[],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":16,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":24,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"},{"s":16,"e":35,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":59,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":30,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"},{"s":17,"e":46,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":30,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"},{"s":17,"e":46,"c":"pl-c"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":49,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":34,"c":"pl-smi"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":14,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":21,"c":"pl-smi"},{"s":22,"e":32,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":12,"c":"pl-c1"},{"s":13,"e":24,"c":"pl-c1"}],[{"s":2,"e":16,"c":"pl-s1"},{"s":19,"e":20,"c":"pl-c1"}],[],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":38,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":36,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":29,"c":"pl-s1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":15,"e":18,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":29,"e":32,"c":"pl-c1"},{"s":34,"e":37,"c":"pl-c1"},{"s":39,"e":42,"c":"pl-c1"}],[],[],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":48,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":36,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":28,"c":"pl-s1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":15,"e":18,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":29,"e":32,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-c1"}],[],[],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":42,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":36,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":28,"c":"pl-s1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":15,"e":18,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":29,"e":32,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-c1"}],[],[],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":39,"c":"pl-c1"}],[{"s":3,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":36,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":26,"c":"pl-s1"}],[{"s":3,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-c1"}],[],[],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":21,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":74,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":75,"c":"pl-c"}],[{"s":0,"e":74,"c":"pl-c"}],[{"s":0,"e":75,"c":"pl-c"}],[{"s":0,"e":12,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":25,"c":"pl-smi"},{"s":26,"e":42,"c":"pl-s1"},{"s":45,"e":46,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":25,"c":"pl-c1"},{"s":26,"e":36,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":29,"c":"pl-smi"},{"s":30,"e":46,"c":"pl-s1"},{"s":49,"e":50,"c":"pl-c1"}],[{"s":1,"e":10,"c":"pl-c"}],[],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":21,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":26,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":18,"e":41,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"},{"s":17,"e":33,"c":"pl-c"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"}],[],[{"s":1,"e":10,"c":"pl-c"}],[],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":21,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":26,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"}],[],[{"s":1,"e":11,"c":"pl-c"}],[],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":22,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":24,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":27,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"}],[],[{"s":1,"e":11,"c":"pl-c"}],[],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":22,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":24,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":26,"c":"pl-c1"},{"s":28,"e":51,"c":"pl-c"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":18,"e":46,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":27,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":29,"c":"pl-smi"},{"s":30,"e":46,"c":"pl-s1"},{"s":49,"e":50,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":72,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":54,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":21,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":23,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":26,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":18,"e":41,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"},{"s":17,"e":33,"c":"pl-c"}],[{"s":3,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"},{"s":19,"e":47,"c":"pl-c"}],[{"s":3,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":11,"c":"pl-smi"},{"s":12,"e":32,"c":"pl-en"},{"s":33,"e":39,"c":"pl-k"},{"s":40,"e":51,"c":"pl-smi"},{"s":52,"e":53,"c":"pl-c1"},{"s":53,"e":55,"c":"pl-s1"}],[{"s":5,"e":11,"c":"pl-k"},{"s":12,"e":22,"c":"pl-smi"},{"s":23,"e":24,"c":"pl-c1"},{"s":24,"e":27,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-s1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-s1"},{"s":17,"e":19,"c":"pl-c1"},{"s":19,"e":24,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":15,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":21,"c":"pl-c1"}],[{"s":2,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":25,"c":"pl-c1"}],[],[{"s":1,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"},{"s":16,"e":25,"c":"pl-c1"},{"s":26,"e":28,"c":"pl-c1"},{"s":29,"e":53,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":11,"e":16,"c":"pl-s1"},{"s":20,"e":21,"c":"pl-c1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"},{"s":25,"e":35,"c":"pl-s1"},{"s":36,"e":37,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":55,"c":"pl-c1"}],[{"s":4,"e":5,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":13,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":31,"c":"pl-en"},{"s":32,"e":38,"c":"pl-k"},{"s":39,"e":50,"c":"pl-smi"},{"s":51,"e":52,"c":"pl-c1"},{"s":52,"e":54,"c":"pl-s1"}],[{"s":5,"e":11,"c":"pl-k"},{"s":12,"e":22,"c":"pl-smi"},{"s":23,"e":24,"c":"pl-c1"},{"s":24,"e":27,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":15,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":51,"c":"pl-c"}],[{"s":0,"e":29,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":50,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":21,"c":"pl-c1"}],[{"s":2,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":46,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-k"}],[{"s":2,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":25,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":42,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":19,"c":"pl-c1"},{"s":20,"e":22,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"},{"s":25,"e":27,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"},{"s":33,"e":44,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-c1"},{"s":48,"e":49,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-k"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":45,"c":"pl-c1"},{"s":46,"e":47,"c":"pl-c1"},{"s":48,"e":51,"c":"pl-s1"},{"s":51,"e":53,"c":"pl-c1"},{"s":53,"e":62,"c":"pl-c1"}],[{"s":4,"e":5,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":24,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"},{"s":15,"e":17,"c":"pl-c1"},{"s":17,"e":26,"c":"pl-c1"},{"s":27,"e":29,"c":"pl-c1"},{"s":30,"e":54,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":17,"c":"pl-s1"},{"s":21,"e":22,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"}],[],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":72,"c":"pl-c"}],[{"s":0,"e":72,"c":"pl-c"}],[{"s":0,"e":45,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":14,"e":15,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":17,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":8,"c":"pl-k"},{"s":10,"e":15,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":27,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":19,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":20,"c":"pl-s1"}],[],[{"s":1,"e":29,"c":"pl-c"}],[{"s":1,"e":21,"c":"pl-en"},{"s":22,"e":24,"c":"pl-s1"},{"s":26,"e":29,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"},{"s":39,"e":41,"c":"pl-c1"},{"s":41,"e":46,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":42,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":11,"c":"pl-smi"},{"s":12,"e":39,"c":"pl-en"},{"s":40,"e":46,"c":"pl-k"},{"s":47,"e":58,"c":"pl-smi"},{"s":59,"e":60,"c":"pl-c1"},{"s":60,"e":62,"c":"pl-s1"}],[{"s":5,"e":11,"c":"pl-k"},{"s":12,"e":22,"c":"pl-smi"},{"s":23,"e":24,"c":"pl-c1"},{"s":24,"e":27,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":27,"c":"pl-c1"},{"s":29,"e":31,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":34,"e":36,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":49,"c":"pl-c1"},{"s":50,"e":51,"c":"pl-c1"},{"s":52,"e":61,"c":"pl-c1"},{"s":63,"e":64,"c":"pl-c1"},{"s":65,"e":66,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-s1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":34,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-c1"},{"s":37,"e":46,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":38,"c":"pl-en"},{"s":39,"e":45,"c":"pl-k"},{"s":46,"e":57,"c":"pl-smi"},{"s":58,"e":59,"c":"pl-c1"},{"s":59,"e":61,"c":"pl-s1"}],[{"s":5,"e":11,"c":"pl-k"},{"s":12,"e":22,"c":"pl-smi"},{"s":23,"e":24,"c":"pl-c1"},{"s":24,"e":27,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":19,"c":"pl-c1"},{"s":20,"e":22,"c":"pl-c1"},{"s":23,"e":24,"c":"pl-c1"},{"s":25,"e":27,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"},{"s":33,"e":44,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-c1"},{"s":48,"e":49,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"},{"s":12,"e":36,"c":"pl-c"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":9,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-s1"},{"s":30,"e":32,"c":"pl-c1"},{"s":32,"e":43,"c":"pl-c1"},{"s":47,"e":50,"c":"pl-s1"},{"s":50,"e":52,"c":"pl-c1"},{"s":52,"e":63,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":8,"c":"pl-k"},{"s":10,"e":13,"c":"pl-s1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":25,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":16,"e":20,"c":"pl-s1"},{"s":20,"e":22,"c":"pl-c1"},{"s":22,"e":27,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"},{"s":30,"e":34,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":37,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":34,"c":"pl-c1"},{"s":36,"e":40,"c":"pl-s1"},{"s":40,"e":42,"c":"pl-c1"},{"s":42,"e":47,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":52,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"},{"s":49,"e":52,"c":"pl-smi"},{"s":53,"e":59,"c":"pl-s1"},{"s":61,"e":64,"c":"pl-smi"},{"s":65,"e":70,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":12,"c":"pl-s1"},{"s":14,"e":17,"c":"pl-smi"},{"s":18,"e":23,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":16,"c":"pl-s1"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":61,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":35,"c":"pl-c1"},{"s":38,"e":44,"c":"pl-s1"},{"s":48,"e":49,"c":"pl-c1"},{"s":51,"e":52,"c":"pl-c1"},{"s":53,"e":57,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":34,"c":"pl-c1"},{"s":37,"e":42,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"},{"s":49,"e":50,"c":"pl-c1"},{"s":51,"e":55,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":1,"e":2,"c":"pl-s1"},{"s":3,"e":4,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"},{"s":20,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":42,"e":48,"c":"pl-s1"},{"s":49,"e":50,"c":"pl-c1"},{"s":51,"e":54,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":10,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":51,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":35,"c":"pl-c1"},{"s":38,"e":44,"c":"pl-s1"},{"s":48,"e":49,"c":"pl-c1"},{"s":51,"e":52,"c":"pl-c1"},{"s":53,"e":57,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":34,"c":"pl-c1"},{"s":37,"e":42,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"},{"s":49,"e":50,"c":"pl-c1"},{"s":51,"e":55,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":1,"e":2,"c":"pl-s1"},{"s":3,"e":4,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"},{"s":20,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":42,"e":48,"c":"pl-s1"},{"s":49,"e":50,"c":"pl-c1"},{"s":51,"e":54,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":10,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":32,"c":"pl-en"},{"s":33,"e":39,"c":"pl-k"},{"s":40,"e":51,"c":"pl-smi"},{"s":52,"e":53,"c":"pl-c1"},{"s":53,"e":55,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":31,"c":"pl-smi"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":36,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":35,"c":"pl-smi"},{"s":36,"e":37,"c":"pl-c1"},{"s":37,"e":41,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-c1"},{"s":15,"e":17,"c":"pl-c1"},{"s":18,"e":22,"c":"pl-s1"},{"s":22,"e":24,"c":"pl-c1"},{"s":24,"e":29,"c":"pl-c1"},{"s":33,"e":46,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":28,"c":"pl-s1"},{"s":29,"e":33,"c":"pl-s1"},{"s":33,"e":35,"c":"pl-c1"},{"s":35,"e":40,"c":"pl-c1"},{"s":42,"e":51,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":34,"c":"pl-en"},{"s":35,"e":41,"c":"pl-k"},{"s":42,"e":53,"c":"pl-smi"},{"s":54,"e":55,"c":"pl-c1"},{"s":55,"e":57,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":27,"c":"pl-smi"},{"s":28,"e":29,"c":"pl-c1"},{"s":29,"e":32,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":29,"c":"pl-smi"},{"s":30,"e":31,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":39,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":24,"c":"pl-smi"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":27,"e":36,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":10,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":23,"c":"pl-smi"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":13,"c":"pl-smi"},{"s":10,"e":13,"c":"pl-smi"},{"s":14,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":41,"c":"pl-c1"},{"s":41,"e":43,"c":"pl-c1"},{"s":43,"e":54,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-smi"},{"s":10,"e":13,"c":"pl-smi"},{"s":14,"e":29,"c":"pl-s1"},{"s":30,"e":31,"c":"pl-c1"},{"s":32,"e":43,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":11,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":17,"e":22,"c":"pl-s1"},{"s":23,"e":24,"c":"pl-c1"},{"s":25,"e":38,"c":"pl-c1"},{"s":40,"e":45,"c":"pl-s1"},{"s":45,"e":47,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":20,"c":"pl-s1"},{"s":21,"e":26,"c":"pl-s1"},{"s":28,"e":37,"c":"pl-c1"},{"s":38,"e":40,"c":"pl-c1"},{"s":41,"e":44,"c":"pl-s1"},{"s":44,"e":46,"c":"pl-c1"},{"s":46,"e":50,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-k"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":14,"e":27,"c":"pl-c1"}],[{"s":2,"e":31,"c":"pl-c"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":28,"c":"pl-s1"},{"s":29,"e":30,"c":"pl-c1"},{"s":32,"e":41,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":12,"c":"pl-s1"},{"s":13,"e":15,"c":"pl-c1"},{"s":16,"e":20,"c":"pl-c1"}],[{"s":2,"e":3,"c":"pl-c1"},{"s":3,"e":10,"c":"pl-s1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":27,"c":"pl-s1"},{"s":28,"e":29,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":51,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":29,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":16,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":20,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-c1"},{"s":24,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":40,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-k"},{"s":7,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":29,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-s1"},{"s":15,"e":17,"c":"pl-c1"},{"s":17,"e":24,"c":"pl-c1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":35,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":38,"e":39,"c":"pl-s1"}],[],[{"s":3,"e":5,"c":"pl-k"},{"s":7,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":19,"c":"pl-c1"},{"s":20,"e":21,"c":"pl-c1"},{"s":22,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":37,"c":"pl-c1"},{"s":38,"e":40,"c":"pl-c1"}],[{"s":4,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":36,"c":"pl-c1"}],[{"s":4,"e":19,"c":"pl-s1"},{"s":20,"e":21,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-s1"}],[{"s":4,"e":9,"c":"pl-k"}],[],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":50,"c":"pl-c"}],[{"s":0,"e":43,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":11,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":27,"c":"pl-c1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":38,"c":"pl-c1"}],[{"s":6,"e":11,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":27,"c":"pl-c1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":38,"c":"pl-c1"},{"s":39,"e":40,"c":"pl-c1"},{"s":41,"e":56,"c":"pl-s1"},{"s":58,"e":63,"c":"pl-s1"},{"s":63,"e":65,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":16,"c":"pl-c1"},{"s":20,"e":25,"c":"pl-s1"},{"s":25,"e":27,"c":"pl-c1"},{"s":27,"e":32,"c":"pl-c1"},{"s":33,"e":35,"c":"pl-c1"},{"s":36,"e":39,"c":"pl-s1"},{"s":39,"e":41,"c":"pl-c1"},{"s":41,"e":47,"c":"pl-c1"},{"s":51,"e":56,"c":"pl-s1"},{"s":56,"e":58,"c":"pl-c1"},{"s":58,"e":64,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-k"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":14,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":27,"c":"pl-c1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":38,"c":"pl-c1"},{"s":39,"e":40,"c":"pl-c1"},{"s":41,"e":56,"c":"pl-s1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":13,"e":40,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":14,"c":"pl-s1"},{"s":15,"e":17,"c":"pl-c1"},{"s":18,"e":22,"c":"pl-c1"}],[{"s":2,"e":3,"c":"pl-c1"},{"s":3,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":20,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":40,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":19,"c":"pl-s1"},{"s":19,"e":21,"c":"pl-c1"},{"s":21,"e":26,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":20,"c":"pl-s1"},{"s":20,"e":22,"c":"pl-c1"},{"s":22,"e":28,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":33,"c":"pl-s1"},{"s":34,"e":39,"c":"pl-s1"},{"s":41,"e":51,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":16,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":25,"c":"pl-en"},{"s":26,"e":32,"c":"pl-k"},{"s":33,"e":44,"c":"pl-smi"},{"s":45,"e":46,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":31,"c":"pl-smi"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":36,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":27,"c":"pl-smi"},{"s":28,"e":29,"c":"pl-c1"},{"s":29,"e":35,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":28,"c":"pl-smi"},{"s":29,"e":30,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":23,"c":"pl-smi"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":18,"c":"pl-c1"},{"s":19,"e":21,"c":"pl-c1"},{"s":22,"e":44,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":31,"c":"pl-en"},{"s":32,"e":34,"c":"pl-s1"},{"s":36,"e":37,"c":"pl-c1"},{"s":37,"e":43,"c":"pl-s1"},{"s":43,"e":45,"c":"pl-c1"},{"s":45,"e":51,"c":"pl-c1"},{"s":53,"e":57,"c":"pl-c1"},{"s":59,"e":63,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":9,"c":"pl-s1"}],[{"s":3,"e":9,"c":"pl-k"},{"s":10,"e":13,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":23,"c":"pl-s1"},{"s":23,"e":25,"c":"pl-c1"},{"s":25,"e":31,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"}],[],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":30,"c":"pl-en"},{"s":31,"e":33,"c":"pl-s1"},{"s":35,"e":36,"c":"pl-c1"},{"s":36,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":50,"c":"pl-c1"},{"s":52,"e":53,"c":"pl-c1"},{"s":53,"e":58,"c":"pl-s1"},{"s":60,"e":61,"c":"pl-c1"},{"s":61,"e":66,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":61,"c":"pl-c"}],[{"s":0,"e":32,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":13,"c":"pl-s1"},{"s":13,"e":15,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-c1"},{"s":20,"e":21,"c":"pl-c1"},{"s":23,"e":28,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":9,"e":14,"c":"pl-s1"},{"s":14,"e":16,"c":"pl-c1"},{"s":16,"e":24,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":26,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":60,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":35,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":38,"e":39,"c":"pl-c1"}],[{"s":1,"e":14,"c":"pl-en"},{"s":15,"e":17,"c":"pl-s1"},{"s":19,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":32,"c":"pl-c1"},{"s":34,"e":39,"c":"pl-s1"},{"s":39,"e":41,"c":"pl-c1"},{"s":41,"e":46,"c":"pl-c1"},{"s":48,"e":53,"c":"pl-s1"},{"s":53,"e":55,"c":"pl-c1"},{"s":55,"e":61,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":15,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":8,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":26,"c":"pl-en"},{"s":27,"e":29,"c":"pl-s1"},{"s":31,"e":36,"c":"pl-s1"},{"s":36,"e":38,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":18,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":64,"c":"pl-c"}],[{"s":0,"e":65,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":18,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":62,"c":"pl-c"}],[{"s":0,"e":61,"c":"pl-c"}],[{"s":0,"e":24,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":34,"c":"pl-c1"},{"s":36,"e":40,"c":"pl-s1"},{"s":40,"e":42,"c":"pl-c1"},{"s":42,"e":47,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":59,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"},{"s":49,"e":55,"c":"pl-k"},{"s":56,"e":71,"c":"pl-smi"},{"s":72,"e":73,"c":"pl-c1"},{"s":73,"e":78,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":24,"c":"pl-smi"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":28,"c":"pl-s1"},{"s":29,"e":30,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-c1"},{"s":44,"e":51,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"},{"s":17,"e":19,"c":"pl-c1"},{"s":20,"e":47,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":10,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-k"},{"s":22,"e":28,"c":"pl-k"},{"s":29,"e":45,"c":"pl-smi"}],[{"s":1,"e":3,"c":"pl-s1"},{"s":3,"e":5,"c":"pl-c1"},{"s":5,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":39,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":14,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"},{"s":16,"e":29,"c":"pl-en"},{"s":30,"e":32,"c":"pl-s1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":51,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"},{"s":49,"e":55,"c":"pl-k"},{"s":56,"e":71,"c":"pl-smi"},{"s":72,"e":73,"c":"pl-c1"},{"s":73,"e":78,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":24,"c":"pl-smi"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":28,"c":"pl-s1"},{"s":29,"e":30,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-c1"},{"s":44,"e":51,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":23,"c":"pl-s1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":27,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":43,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-c1"},{"s":17,"e":19,"c":"pl-c1"},{"s":20,"e":47,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":9,"e":21,"c":"pl-c1"},{"s":22,"e":24,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":21,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-c1"},{"s":23,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"},{"s":41,"e":44,"c":"pl-s1"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":71,"c":"pl-c"}],[{"s":0,"e":71,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":29,"c":"pl-s1"},{"s":32,"e":33,"c":"pl-c1"},{"s":36,"e":38,"c":"pl-c1"},{"s":40,"e":42,"c":"pl-c1"},{"s":44,"e":46,"c":"pl-c1"},{"s":48,"e":49,"c":"pl-c1"},{"s":51,"e":52,"c":"pl-c1"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":37,"c":"pl-en"},{"s":38,"e":44,"c":"pl-k"},{"s":45,"e":56,"c":"pl-smi"},{"s":57,"e":58,"c":"pl-c1"},{"s":58,"e":60,"c":"pl-s1"}],[{"s":10,"e":16,"c":"pl-k"},{"s":17,"e":39,"c":"pl-smi"},{"s":40,"e":41,"c":"pl-c1"},{"s":41,"e":44,"c":"pl-s1"}],[{"s":10,"e":16,"c":"pl-k"},{"s":17,"e":48,"c":"pl-smi"},{"s":49,"e":50,"c":"pl-c1"},{"s":50,"e":53,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":13,"c":"pl-smi"},{"s":10,"e":13,"c":"pl-smi"},{"s":14,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":41,"c":"pl-c1"},{"s":41,"e":43,"c":"pl-c1"},{"s":43,"e":54,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":6,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":13,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":15,"c":"pl-c1"},{"s":19,"e":29,"c":"pl-en"},{"s":30,"e":48,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":39,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":35,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-s1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":28,"c":"pl-s1"},{"s":30,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":24,"c":"pl-smi"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-s1"},{"s":30,"e":31,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":46,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-c1"},{"s":48,"e":57,"c":"pl-c1"},{"s":58,"e":59,"c":"pl-s1"}],[],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":21,"c":"pl-c1"},{"s":22,"e":24,"c":"pl-c1"},{"s":25,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":53,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-k"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":22,"c":"pl-c1"},{"s":23,"e":25,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":37,"c":"pl-c1"},{"s":38,"e":39,"c":"pl-c1"},{"s":40,"e":44,"c":"pl-s1"},{"s":44,"e":46,"c":"pl-c1"},{"s":46,"e":56,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-k"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":16,"c":"pl-c1"},{"s":17,"e":19,"c":"pl-c1"},{"s":20,"e":23,"c":"pl-s1"},{"s":23,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-c1"},{"s":31,"e":33,"c":"pl-c1"},{"s":34,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":45,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-c1"},{"s":49,"e":52,"c":"pl-s1"},{"s":52,"e":54,"c":"pl-c1"},{"s":54,"e":60,"c":"pl-c1"}],[{"s":3,"e":8,"c":"pl-k"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":10,"e":21,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":14,"c":"pl-c1"},{"s":15,"e":24,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":14,"c":"pl-c1"},{"s":15,"e":26,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":47,"c":"pl-s1"},{"s":48,"e":51,"c":"pl-s1"},{"s":51,"e":53,"c":"pl-c1"},{"s":53,"e":58,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":25,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":33,"c":"pl-en"},{"s":34,"e":40,"c":"pl-k"},{"s":41,"e":52,"c":"pl-smi"},{"s":53,"e":54,"c":"pl-c1"},{"s":54,"e":56,"c":"pl-s1"}],[{"s":6,"e":12,"c":"pl-k"},{"s":13,"e":35,"c":"pl-smi"},{"s":36,"e":37,"c":"pl-c1"},{"s":37,"e":40,"c":"pl-s1"}],[{"s":6,"e":12,"c":"pl-k"},{"s":13,"e":40,"c":"pl-smi"},{"s":41,"e":42,"c":"pl-c1"},{"s":42,"e":45,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":6,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":14,"c":"pl-s1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":19,"c":"pl-c1"}],[{"s":1,"e":6,"c":"pl-smi"},{"s":7,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":18,"c":"pl-s1"},{"s":18,"e":20,"c":"pl-c1"},{"s":20,"e":25,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-smi"},{"s":10,"e":13,"c":"pl-smi"},{"s":14,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":41,"c":"pl-c1"},{"s":41,"e":43,"c":"pl-c1"},{"s":43,"e":54,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":13,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":35,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-s1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":28,"c":"pl-s1"},{"s":30,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":24,"c":"pl-smi"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-s1"},{"s":30,"e":31,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":46,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-c1"},{"s":48,"e":57,"c":"pl-c1"},{"s":58,"e":59,"c":"pl-s1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":21,"c":"pl-c1"},{"s":22,"e":24,"c":"pl-c1"},{"s":25,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":53,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-k"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":22,"c":"pl-c1"},{"s":23,"e":25,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":37,"c":"pl-c1"},{"s":38,"e":39,"c":"pl-c1"},{"s":40,"e":44,"c":"pl-s1"},{"s":44,"e":46,"c":"pl-c1"},{"s":46,"e":56,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-k"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":11,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":15,"e":17,"c":"pl-c1"},{"s":17,"e":26,"c":"pl-s1"}],[{"s":3,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":8,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":23,"c":"pl-s1"},{"s":23,"e":25,"c":"pl-c1"},{"s":25,"e":34,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-c1"},{"s":37,"e":40,"c":"pl-s1"},{"s":40,"e":42,"c":"pl-c1"},{"s":42,"e":47,"c":"pl-c1"}],[{"s":3,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":8,"e":18,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":36,"c":"pl-c1"},{"s":37,"e":38,"c":"pl-c1"},{"s":39,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":50,"c":"pl-c1"}],[{"s":3,"e":9,"c":"pl-k"},{"s":10,"e":11,"c":"pl-c1"}],[],[],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"},{"s":9,"e":15,"c":"pl-c1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":34,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":31,"c":"pl-en"},{"s":32,"e":38,"c":"pl-k"},{"s":39,"e":50,"c":"pl-smi"},{"s":51,"e":52,"c":"pl-c1"},{"s":52,"e":54,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":12,"c":"pl-s1"},{"s":13,"e":24,"c":"pl-c1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":6,"c":"pl-s1"},{"s":8,"e":11,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":23,"c":"pl-s1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":50,"c":"pl-c"}],[{"s":0,"e":49,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":39,"c":"pl-c1"},{"s":41,"e":42,"c":"pl-c1"},{"s":42,"e":50,"c":"pl-s1"}],[{"s":1,"e":9,"c":"pl-s1"},{"s":13,"e":17,"c":"pl-c1"}],[],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-s1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"}],[{"s":2,"e":15,"c":"pl-smi"},{"s":11,"e":15,"c":"pl-smi"},{"s":16,"e":19,"c":"pl-s1"}],[],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":12,"c":"pl-s1"},{"s":13,"e":14,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-s1"}],[{"s":3,"e":5,"c":"pl-k"},{"s":7,"e":13,"c":"pl-s1"},{"s":14,"e":15,"c":"pl-s1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":23,"c":"pl-c1"}],[{"s":4,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-k"}],[{"s":4,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":11,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":22,"c":"pl-s1"},{"s":23,"e":24,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":33,"c":"pl-c1"}],[],[{"s":2,"e":6,"c":"pl-k"}],[{"s":3,"e":5,"c":"pl-k"},{"s":7,"e":13,"c":"pl-s1"},{"s":14,"e":15,"c":"pl-s1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":22,"c":"pl-c1"}],[{"s":4,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-k"}],[{"s":4,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-s1"},{"s":17,"e":18,"c":"pl-s1"},{"s":20,"e":21,"c":"pl-c1"},{"s":22,"e":26,"c":"pl-c1"}],[],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":9,"e":21,"c":"pl-en"},{"s":22,"e":24,"c":"pl-s1"},{"s":26,"e":42,"c":"pl-c1"},{"s":43,"e":44,"c":"pl-c1"},{"s":45,"e":46,"c":"pl-s1"},{"s":48,"e":51,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":41,"c":"pl-c1"},{"s":43,"e":51,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":67,"c":"pl-c"}],[{"s":0,"e":51,"c":"pl-c"}],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":45,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":7,"c":"pl-k"},{"s":8,"e":16,"c":"pl-c1"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":16,"c":"pl-smi"},{"s":17,"e":33,"c":"pl-s1"},{"s":36,"e":37,"c":"pl-c1"}],[{"s":4,"e":5,"c":"pl-c1"},{"s":8,"e":10,"c":"pl-c1"},{"s":14,"e":17,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-c1"},{"s":7,"e":10,"c":"pl-c1"},{"s":14,"e":17,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-c1"},{"s":7,"e":10,"c":"pl-c1"},{"s":14,"e":17,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":22,"c":"pl-en"},{"s":23,"e":26,"c":"pl-smi"},{"s":27,"e":32,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":9,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":11,"e":16,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":10,"c":"pl-c1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":14,"e":16,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":25,"c":"pl-s1"},{"s":26,"e":31,"c":"pl-s1"},{"s":32,"e":40,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":11,"e":13,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-c1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":32,"c":"pl-s1"},{"s":33,"e":38,"c":"pl-s1"},{"s":39,"e":47,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":12,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":28,"c":"pl-smi"},{"s":29,"e":34,"c":"pl-s1"}],[],[{"s":1,"e":6,"c":"pl-s1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":19,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":8,"c":"pl-k"},{"s":10,"e":15,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":22,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-en"},{"s":20,"e":25,"c":"pl-s1"}],[],[],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":11,"c":"pl-smi"},{"s":12,"e":31,"c":"pl-en"},{"s":32,"e":38,"c":"pl-k"},{"s":39,"e":50,"c":"pl-smi"},{"s":51,"e":52,"c":"pl-c1"},{"s":52,"e":56,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":12,"c":"pl-s1"},{"s":13,"e":24,"c":"pl-c1"},{"s":27,"e":30,"c":"pl-smi"},{"s":31,"e":34,"c":"pl-s1"},{"s":36,"e":39,"c":"pl-smi"},{"s":40,"e":43,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":6,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":47,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-k"},{"s":6,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-s1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-s1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":19,"c":"pl-s1"},{"s":19,"e":21,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-c1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":33,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-s1"},{"s":37,"e":38,"c":"pl-c1"},{"s":39,"e":42,"c":"pl-s1"},{"s":47,"e":48,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":43,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":11,"c":"pl-s1"},{"s":13,"e":18,"c":"pl-s1"},{"s":20,"e":29,"c":"pl-s1"},{"s":30,"e":41,"c":"pl-c1"}],[],[{"s":2,"e":8,"c":"pl-en"},{"s":9,"e":18,"c":"pl-s1"},{"s":20,"e":26,"c":"pl-s1"},{"s":28,"e":39,"c":"pl-c1"},{"s":39,"e":40,"c":"pl-c1"},{"s":40,"e":46,"c":"pl-k"},{"s":47,"e":50,"c":"pl-smi"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":21,"c":"pl-en"},{"s":22,"e":25,"c":"pl-s1"}],[{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":23,"c":"pl-en"},{"s":24,"e":27,"c":"pl-s1"}],[],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-s1"},{"s":9,"e":10,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":15,"e":21,"c":"pl-s1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":48,"c":"pl-s1"},{"s":50,"e":54,"c":"pl-c1"}],[],[],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":27,"c":"pl-en"},{"s":28,"e":34,"c":"pl-k"},{"s":35,"e":46,"c":"pl-smi"},{"s":47,"e":48,"c":"pl-c1"},{"s":48,"e":50,"c":"pl-s1"},{"s":52,"e":55,"c":"pl-smi"},{"s":56,"e":59,"c":"pl-s1"},{"s":61,"e":64,"c":"pl-smi"},{"s":65,"e":68,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":11,"c":"pl-s1"},{"s":12,"e":23,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":20,"c":"pl-en"},{"s":21,"e":25,"c":"pl-s1"},{"s":27,"e":33,"c":"pl-s1"},{"s":35,"e":38,"c":"pl-s1"},{"s":40,"e":43,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":27,"c":"pl-en"},{"s":28,"e":30,"c":"pl-s1"},{"s":32,"e":38,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":72,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":20,"c":"pl-smi"},{"s":16,"e":20,"c":"pl-smi"},{"s":21,"e":37,"c":"pl-en"},{"s":38,"e":51,"c":"pl-smi"},{"s":47,"e":51,"c":"pl-smi"},{"s":52,"e":53,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":6,"c":"pl-s1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":12,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-s1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":9,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-s1"},{"s":20,"e":24,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":30,"c":"pl-en"},{"s":31,"e":37,"c":"pl-k"},{"s":38,"e":49,"c":"pl-smi"},{"s":50,"e":51,"c":"pl-c1"},{"s":51,"e":53,"c":"pl-s1"},{"s":55,"e":58,"c":"pl-smi"},{"s":59,"e":64,"c":"pl-s1"}],[],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"},{"s":20,"e":21,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":12,"c":"pl-en"},{"s":13,"e":15,"c":"pl-s1"},{"s":17,"e":25,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":10,"e":18,"c":"pl-c1"}],[{"s":1,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":26,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"}],[{"s":1,"e":2,"c":"pl-s1"},{"s":3,"e":4,"c":"pl-c1"},{"s":5,"e":21,"c":"pl-en"},{"s":22,"e":27,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":34,"c":"pl-c1"},{"s":36,"e":37,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":28,"c":"pl-en"},{"s":29,"e":35,"c":"pl-k"},{"s":36,"e":47,"c":"pl-smi"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":51,"c":"pl-s1"},{"s":53,"e":56,"c":"pl-smi"},{"s":57,"e":62,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":36,"c":"pl-c1"},{"s":39,"e":52,"c":"pl-smi"},{"s":48,"e":52,"c":"pl-smi"},{"s":54,"e":59,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":25,"c":"pl-en"},{"s":26,"e":32,"c":"pl-k"},{"s":33,"e":44,"c":"pl-smi"},{"s":45,"e":46,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-s1"},{"s":50,"e":53,"c":"pl-smi"},{"s":54,"e":59,"c":"pl-s1"}],[],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":16,"c":"pl-s1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"}],[{"s":2,"e":3,"c":"pl-s1"},{"s":7,"e":18,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":3,"c":"pl-s1"},{"s":8,"e":19,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":10,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":25,"c":"pl-en"},{"s":26,"e":32,"c":"pl-k"},{"s":33,"e":44,"c":"pl-smi"},{"s":45,"e":46,"c":"pl-c1"},{"s":46,"e":48,"c":"pl-s1"},{"s":50,"e":53,"c":"pl-smi"},{"s":54,"e":59,"c":"pl-s1"}],[],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":16,"c":"pl-s1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":10,"c":"pl-s1"}],[{"s":2,"e":3,"c":"pl-s1"},{"s":7,"e":16,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"}],[{"s":2,"e":3,"c":"pl-s1"},{"s":8,"e":17,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-en"},{"s":8,"e":10,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":36,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":69,"c":"pl-c"}],[{"s":0,"e":65,"c":"pl-c"}],[{"s":0,"e":54,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"},{"s":49,"e":54,"c":"pl-smi"},{"s":55,"e":56,"c":"pl-c1"},{"s":56,"e":61,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-s1"}],[{"s":1,"e":2,"c":"pl-c1"},{"s":2,"e":7,"c":"pl-s1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":14,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":43,"c":"pl-smi"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":47,"c":"pl-s1"},{"s":49,"e":52,"c":"pl-smi"},{"s":53,"e":58,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":42,"e":46,"c":"pl-c1"}],[{"s":1,"e":35,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":43,"e":51,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":18,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":28,"c":"pl-en"},{"s":29,"e":35,"c":"pl-k"},{"s":36,"e":47,"c":"pl-smi"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":51,"c":"pl-s1"},{"s":53,"e":56,"c":"pl-smi"},{"s":57,"e":62,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":11,"c":"pl-s1"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":11,"e":19,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-k"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":12,"e":20,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":23,"c":"pl-en"},{"s":24,"e":30,"c":"pl-k"},{"s":31,"e":42,"c":"pl-smi"},{"s":43,"e":44,"c":"pl-c1"},{"s":44,"e":46,"c":"pl-s1"},{"s":48,"e":51,"c":"pl-smi"},{"s":52,"e":57,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"},{"s":21,"e":25,"c":"pl-s1"},{"s":27,"e":31,"c":"pl-s1"},{"s":33,"e":38,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"}],[{"s":2,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":26,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"},{"s":29,"e":33,"c":"pl-s1"},{"s":35,"e":36,"c":"pl-c1"}],[{"s":2,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":27,"c":"pl-c1"},{"s":29,"e":30,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":9,"e":13,"c":"pl-s1"},{"s":14,"e":15,"c":"pl-c1"},{"s":16,"e":20,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":9,"e":14,"c":"pl-s1"},{"s":18,"e":19,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-c1"}],[{"s":1,"e":6,"c":"pl-s1"},{"s":7,"e":8,"c":"pl-c1"},{"s":10,"e":15,"c":"pl-s1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":22,"c":"pl-c1"},{"s":28,"e":33,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":41,"e":42,"c":"pl-c1"},{"s":43,"e":47,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":19,"c":"pl-en"},{"s":20,"e":22,"c":"pl-s1"},{"s":24,"e":32,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"}],[{"s":2,"e":14,"c":"pl-en"},{"s":15,"e":17,"c":"pl-s1"},{"s":19,"e":27,"c":"pl-c1"},{"s":29,"e":33,"c":"pl-s1"},{"s":35,"e":36,"c":"pl-c1"}],[{"s":2,"e":14,"c":"pl-en"},{"s":15,"e":17,"c":"pl-s1"},{"s":19,"e":28,"c":"pl-c1"},{"s":30,"e":35,"c":"pl-s1"}],[{"s":1,"e":35,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"},{"s":40,"e":41,"c":"pl-c1"},{"s":43,"e":51,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":2,"c":"pl-c"}],[{"s":0,"e":22,"c":"pl-c"}],[{"s":0,"e":3,"c":"pl-c"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":27,"c":"pl-en"},{"s":28,"e":34,"c":"pl-k"},{"s":35,"e":46,"c":"pl-smi"},{"s":47,"e":48,"c":"pl-c1"},{"s":48,"e":50,"c":"pl-s1"}],[{"s":2,"e":6,"c":"pl-k"},{"s":7,"e":30,"c":"pl-smi"},{"s":31,"e":36,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":19,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":31,"c":"pl-c1"},{"s":33,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":11,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":15,"e":33,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":11,"e":19,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-k"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":12,"e":20,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"},{"s":25,"e":33,"c":"pl-c1"},{"s":35,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":33,"c":"pl-en"},{"s":34,"e":40,"c":"pl-k"},{"s":41,"e":50,"c":"pl-smi"},{"s":51,"e":52,"c":"pl-c1"},{"s":52,"e":56,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-s1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":31,"c":"pl-en"},{"s":32,"e":36,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":9,"e":13,"c":"pl-s1"},{"s":13,"e":15,"c":"pl-c1"},{"s":15,"e":17,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":23,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":22,"c":"pl-en"},{"s":23,"e":25,"c":"pl-s1"},{"s":27,"e":28,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"},{"s":38,"e":40,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"},{"s":9,"e":15,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":41,"c":"pl-smi"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":47,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-s1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":31,"c":"pl-en"},{"s":32,"e":36,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":9,"e":13,"c":"pl-s1"},{"s":13,"e":15,"c":"pl-c1"},{"s":15,"e":17,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":25,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":28,"c":"pl-en"},{"s":29,"e":31,"c":"pl-s1"},{"s":33,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":42,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":23,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":26,"c":"pl-en"},{"s":27,"e":29,"c":"pl-s1"},{"s":31,"e":35,"c":"pl-s1"},{"s":35,"e":37,"c":"pl-c1"},{"s":37,"e":40,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":25,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":25,"c":"pl-en"},{"s":26,"e":28,"c":"pl-s1"}],[{"s":4,"e":8,"c":"pl-s1"},{"s":8,"e":10,"c":"pl-c1"},{"s":10,"e":20,"c":"pl-c1"},{"s":20,"e":22,"c":"pl-c1"},{"s":22,"e":25,"c":"pl-c1"},{"s":27,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"},{"s":33,"e":36,"c":"pl-c1"},{"s":36,"e":38,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":20,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":23,"c":"pl-en"},{"s":24,"e":26,"c":"pl-s1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":37,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":20,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":23,"c":"pl-en"},{"s":24,"e":26,"c":"pl-s1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":37,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":23,"c":"pl-c1"}],[{"s":2,"e":56,"c":"pl-c"}],[{"s":0,"e":18,"c":"pl-c"}],[{"s":2,"e":4,"c":"pl-k"},{"s":7,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"}],[{"s":3,"e":42,"c":"pl-c"}],[{"s":3,"e":9,"c":"pl-k"},{"s":10,"e":23,"c":"pl-en"},{"s":24,"e":26,"c":"pl-s1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"},{"s":38,"e":40,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-c1"}],[],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":26,"c":"pl-en"},{"s":27,"e":29,"c":"pl-s1"},{"s":31,"e":35,"c":"pl-s1"},{"s":35,"e":37,"c":"pl-c1"},{"s":37,"e":40,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-k"},{"s":6,"e":28,"c":"pl-c1"}],[{"s":2,"e":64,"c":"pl-c"}],[{"s":0,"e":18,"c":"pl-c"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":10,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-c1"},{"s":16,"e":18,"c":"pl-c1"},{"s":19,"e":39,"c":"pl-c1"}],[{"s":3,"e":45,"c":"pl-c"}],[{"s":3,"e":9,"c":"pl-k"},{"s":10,"e":22,"c":"pl-en"},{"s":23,"e":25,"c":"pl-s1"},{"s":27,"e":31,"c":"pl-s1"},{"s":31,"e":33,"c":"pl-c1"},{"s":33,"e":41,"c":"pl-c1"},{"s":41,"e":43,"c":"pl-c1"},{"s":43,"e":46,"c":"pl-c1"}],[],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":25,"c":"pl-en"},{"s":26,"e":28,"c":"pl-s1"},{"s":30,"e":34,"c":"pl-s1"},{"s":34,"e":36,"c":"pl-c1"},{"s":36,"e":39,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"},{"s":9,"e":15,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":33,"c":"pl-smi"},{"s":34,"e":49,"c":"pl-s1"},{"s":50,"e":51,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":24,"c":"pl-s1"}],[{"s":2,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":42,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":29,"c":"pl-c1"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":28,"c":"pl-en"},{"s":29,"e":35,"c":"pl-k"},{"s":36,"e":47,"c":"pl-smi"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":51,"c":"pl-s1"},{"s":53,"e":59,"c":"pl-k"},{"s":60,"e":77,"c":"pl-smi"},{"s":78,"e":79,"c":"pl-c1"},{"s":79,"e":82,"c":"pl-s1"}],[],[{"s":1,"e":14,"c":"pl-smi"},{"s":10,"e":14,"c":"pl-smi"},{"s":15,"e":18,"c":"pl-s1"},{"s":19,"e":20,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-en"},{"s":19,"e":21,"c":"pl-s1"},{"s":23,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":31,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":34,"e":38,"c":"pl-c1"},{"s":40,"e":41,"c":"pl-c1"},{"s":41,"e":44,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":15,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":4,"e":6,"c":"pl-c1"},{"s":6,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":11,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":28,"c":"pl-en"},{"s":29,"e":35,"c":"pl-k"},{"s":36,"e":47,"c":"pl-smi"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":51,"c":"pl-s1"},{"s":53,"e":58,"c":"pl-k"},{"s":59,"e":65,"c":"pl-k"},{"s":66,"e":83,"c":"pl-smi"},{"s":84,"e":85,"c":"pl-c1"},{"s":85,"e":88,"c":"pl-s1"}],[],[{"s":1,"e":13,"c":"pl-en"},{"s":14,"e":16,"c":"pl-s1"},{"s":18,"e":21,"c":"pl-s1"},{"s":21,"e":23,"c":"pl-c1"},{"s":23,"e":26,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":29,"e":33,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-s1"},{"s":38,"e":40,"c":"pl-c1"},{"s":40,"e":43,"c":"pl-c1"},{"s":44,"e":45,"c":"pl-c1"},{"s":46,"e":50,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[{"s":0,"e":6,"c":"pl-k"}],[],[{"s":0,"e":77,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":40,"c":"pl-smi"},{"s":41,"e":56,"c":"pl-s1"},{"s":57,"e":58,"c":"pl-c1"}],[{"s":2,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":22,"c":"pl-s1"}],[{"s":2,"e":6,"c":"pl-c1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":20,"c":"pl-s1"}],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":29,"c":"pl-c1"}],[{"s":2,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":32,"c":"pl-s1"}],[{"s":2,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":32,"c":"pl-s1"}],[{"s":0,"e":6,"c":"pl-k"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":41,"c":"pl-smi"},{"s":42,"e":58,"c":"pl-s1"},{"s":59,"e":60,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":24,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":24,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":39,"c":"pl-smi"},{"s":40,"e":54,"c":"pl-s1"},{"s":55,"e":56,"c":"pl-c1"}],[{"s":2,"e":21,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":24,"e":50,"c":"pl-s1"}],[{"s":2,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":42,"c":"pl-s1"}],[{"s":2,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":40,"c":"pl-s1"}],[{"s":2,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":26,"c":"pl-s1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":35,"c":"pl-smi"},{"s":36,"e":46,"c":"pl-s1"},{"s":47,"e":48,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-c1"},{"s":7,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":25,"c":"pl-s1"}],[{"s":2,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":11,"e":27,"c":"pl-s1"}],[{"s":2,"e":5,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"},{"s":9,"e":23,"c":"pl-s1"}],[],[],[{"s":0,"e":77,"c":"pl-c"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":34,"c":"pl-smi"},{"s":35,"e":49,"c":"pl-s1"},{"s":52,"e":53,"c":"pl-c1"}],[{"s":2,"e":14,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":31,"c":"pl-s1"}],[{"s":3,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":27,"c":"pl-en"},{"s":28,"e":44,"c":"pl-s1"}],[{"s":3,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":46,"c":"pl-s1"}],[{"s":3,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":46,"c":"pl-s1"}],[],[{"s":2,"e":14,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"}],[{"s":3,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":31,"c":"pl-s1"}],[{"s":3,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":27,"c":"pl-en"},{"s":28,"e":44,"c":"pl-s1"}],[{"s":3,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":39,"c":"pl-s1"}],[{"s":3,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":39,"c":"pl-s1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":23,"c":"pl-en"},{"s":24,"e":30,"c":"pl-k"},{"s":31,"e":41,"c":"pl-smi"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":49,"c":"pl-s1"}],[{"s":3,"e":8,"c":"pl-k"},{"s":9,"e":15,"c":"pl-k"},{"s":16,"e":29,"c":"pl-smi"},{"s":30,"e":31,"c":"pl-c1"},{"s":31,"e":33,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":18,"c":"pl-smi"},{"s":19,"e":22,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"}],[{"s":1,"e":4,"c":"pl-smi"},{"s":5,"e":8,"c":"pl-s1"}],[],[{"s":1,"e":5,"c":"pl-s1"},{"s":6,"e":7,"c":"pl-c1"},{"s":8,"e":20,"c":"pl-en"},{"s":21,"e":22,"c":"pl-c1"},{"s":22,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":33,"c":"pl-c1"},{"s":35,"e":41,"c":"pl-k"},{"s":42,"e":43,"c":"pl-c1"},{"s":43,"e":47,"c":"pl-s1"},{"s":50,"e":60,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":10,"e":12,"c":"pl-c1"},{"s":13,"e":17,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":10,"c":"pl-c1"},{"s":10,"e":16,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-s1"},{"s":4,"e":5,"c":"pl-c1"},{"s":6,"e":7,"c":"pl-c1"},{"s":7,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":15,"c":"pl-c1"}],[{"s":1,"e":21,"c":"pl-en"},{"s":22,"e":24,"c":"pl-s1"},{"s":26,"e":32,"c":"pl-s1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":45,"c":"pl-s1"}],[],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":18,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-c1"},{"s":25,"e":47,"c":"pl-c"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":11,"c":"pl-s1"},{"s":11,"e":13,"c":"pl-c1"},{"s":13,"e":16,"c":"pl-c1"},{"s":17,"e":30,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":22,"c":"pl-smi"},{"s":23,"e":24,"c":"pl-c1"},{"s":24,"e":30,"c":"pl-s1"},{"s":31,"e":32,"c":"pl-c1"},{"s":33,"e":39,"c":"pl-s1"},{"s":39,"e":41,"c":"pl-c1"},{"s":41,"e":44,"c":"pl-c1"},{"s":45,"e":58,"c":"pl-c1"}],[],[{"s":2,"e":4,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":24,"c":"pl-c"}],[{"s":0,"e":5,"c":"pl-c"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":8,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":37,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":8,"e":18,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":21,"e":27,"c":"pl-s1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":39,"c":"pl-c1"}],[{"s":2,"e":6,"c":"pl-s1"},{"s":6,"e":8,"c":"pl-c1"},{"s":8,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":26,"c":"pl-s1"},{"s":26,"e":28,"c":"pl-c1"},{"s":28,"e":37,"c":"pl-c1"}],[],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":25,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":9,"e":20,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"},{"s":23,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":42,"c":"pl-c1"}],[],[{"s":2,"e":4,"c":"pl-c"}],[{"s":0,"e":63,"c":"pl-c"}],[{"s":0,"e":32,"c":"pl-c"}],[{"s":0,"e":5,"c":"pl-c"}],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":24,"c":"pl-c1"},{"s":25,"e":27,"c":"pl-c1"},{"s":28,"e":30,"c":"pl-s1"},{"s":30,"e":32,"c":"pl-c1"},{"s":32,"e":43,"c":"pl-c1"},{"s":44,"e":46,"c":"pl-c1"},{"s":47,"e":59,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":9,"e":19,"c":"pl-c1"},{"s":20,"e":21,"c":"pl-c1"}],[],[{"s":2,"e":4,"c":"pl-k"},{"s":6,"e":12,"c":"pl-s1"},{"s":12,"e":14,"c":"pl-c1"},{"s":14,"e":29,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-s1"},{"s":7,"e":9,"c":"pl-c1"},{"s":9,"e":24,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"}],[],[],[{"s":1,"e":31,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":6,"c":"pl-c1"},{"s":7,"e":20,"c":"pl-en"},{"s":21,"e":23,"c":"pl-s1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":8,"c":"pl-s1"}],[{"s":2,"e":9,"c":"pl-en"},{"s":10,"e":11,"c":"pl-c1"},{"s":13,"e":18,"c":"pl-s1"},{"s":20,"e":26,"c":"pl-s1"}],[{"s":3,"e":52,"c":"pl-s"}],[{"s":3,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":22,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":37,"c":"pl-c1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":9,"c":"pl-en"},{"s":10,"e":16,"c":"pl-s1"},{"s":18,"e":46,"c":"pl-s"}],[{"s":3,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":15,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":22,"e":28,"c":"pl-s1"},{"s":28,"e":30,"c":"pl-c1"},{"s":30,"e":37,"c":"pl-c1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-c1"}],[],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":18,"e":32,"c":"pl-s1"},{"s":33,"e":35,"c":"pl-s1"},{"s":35,"e":37,"c":"pl-c1"},{"s":37,"e":48,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":14,"e":28,"c":"pl-s1"},{"s":29,"e":30,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":12,"c":"pl-c1"},{"s":13,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"}],[],[{"s":1,"e":39,"c":"pl-c"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":14,"c":"pl-c1"},{"s":15,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"}],[{"s":1,"e":4,"c":"pl-s1"},{"s":5,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":21,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":14,"c":"pl-c1"},{"s":14,"e":16,"c":"pl-c1"},{"s":16,"e":29,"c":"pl-en"},{"s":30,"e":32,"c":"pl-s1"},{"s":34,"e":35,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":26,"c":"pl-c1"}],[{"s":2,"e":14,"c":"pl-en"},{"s":15,"e":17,"c":"pl-s1"},{"s":19,"e":28,"c":"pl-c1"},{"s":30,"e":43,"c":"pl-c1"}],[],[{"s":1,"e":23,"c":"pl-en"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":34,"c":"pl-c1"},{"s":36,"e":38,"c":"pl-c1"}],[{"s":1,"e":18,"c":"pl-en"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":47,"c":"pl-s1"}],[{"s":3,"e":22,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":27,"e":30,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":1,"e":18,"c":"pl-en"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":47,"c":"pl-s1"}],[{"s":3,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":28,"c":"pl-c1"},{"s":30,"e":31,"c":"pl-c1"},{"s":33,"e":35,"c":"pl-c1"}],[{"s":1,"e":18,"c":"pl-en"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":47,"c":"pl-s1"}],[{"s":3,"e":17,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"}],[{"s":1,"e":18,"c":"pl-en"},{"s":19,"e":20,"c":"pl-c1"},{"s":20,"e":24,"c":"pl-s1"},{"s":24,"e":26,"c":"pl-c1"},{"s":26,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":47,"c":"pl-s1"}],[{"s":3,"e":17,"c":"pl-c1"},{"s":19,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":37,"c":"pl-en"},{"s":38,"e":39,"c":"pl-c1"},{"s":39,"e":43,"c":"pl-s1"},{"s":43,"e":45,"c":"pl-c1"},{"s":45,"e":48,"c":"pl-c1"},{"s":50,"e":51,"c":"pl-c1"},{"s":51,"e":66,"c":"pl-s1"}],[{"s":3,"e":22,"c":"pl-c1"},{"s":24,"e":25,"c":"pl-c1"},{"s":27,"e":30,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":30,"c":"pl-en"},{"s":31,"e":32,"c":"pl-c1"},{"s":32,"e":36,"c":"pl-s1"},{"s":36,"e":38,"c":"pl-c1"},{"s":38,"e":41,"c":"pl-c1"},{"s":43,"e":44,"c":"pl-c1"},{"s":44,"e":59,"c":"pl-s1"}],[{"s":3,"e":15,"c":"pl-c1"},{"s":17,"e":21,"c":"pl-c1"},{"s":23,"e":26,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":11,"c":"pl-c1"},{"s":12,"e":13,"c":"pl-c1"},{"s":14,"e":31,"c":"pl-en"},{"s":32,"e":33,"c":"pl-c1"},{"s":33,"e":37,"c":"pl-s1"},{"s":37,"e":39,"c":"pl-c1"},{"s":39,"e":42,"c":"pl-c1"},{"s":44,"e":45,"c":"pl-c1"},{"s":45,"e":60,"c":"pl-s1"}],[{"s":3,"e":16,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":21,"e":24,"c":"pl-c1"},{"s":26,"e":27,"c":"pl-c1"},{"s":29,"e":32,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":16,"c":"pl-c1"},{"s":17,"e":18,"c":"pl-c1"},{"s":19,"e":36,"c":"pl-en"},{"s":37,"e":38,"c":"pl-c1"},{"s":38,"e":42,"c":"pl-s1"},{"s":42,"e":44,"c":"pl-c1"},{"s":44,"e":47,"c":"pl-c1"},{"s":49,"e":50,"c":"pl-c1"},{"s":50,"e":65,"c":"pl-s1"}],[{"s":3,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":26,"c":"pl-c1"},{"s":28,"e":29,"c":"pl-c1"},{"s":31,"e":32,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":15,"c":"pl-c1"},{"s":16,"e":17,"c":"pl-c1"},{"s":18,"e":35,"c":"pl-en"},{"s":36,"e":37,"c":"pl-c1"},{"s":37,"e":41,"c":"pl-s1"},{"s":41,"e":43,"c":"pl-c1"},{"s":43,"e":46,"c":"pl-c1"},{"s":48,"e":49,"c":"pl-c1"},{"s":49,"e":64,"c":"pl-s1"}],[{"s":3,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":25,"e":30,"c":"pl-c1"},{"s":32,"e":33,"c":"pl-c1"},{"s":35,"e":38,"c":"pl-c1"}],[{"s":1,"e":5,"c":"pl-s1"},{"s":5,"e":7,"c":"pl-c1"},{"s":7,"e":20,"c":"pl-c1"},{"s":21,"e":22,"c":"pl-c1"},{"s":23,"e":45,"c":"pl-en"},{"s":46,"e":47,"c":"pl-c1"},{"s":47,"e":51,"c":"pl-s1"},{"s":51,"e":53,"c":"pl-c1"},{"s":53,"e":56,"c":"pl-c1"},{"s":58,"e":59,"c":"pl-c1"},{"s":59,"e":74,"c":"pl-s1"}],[{"s":3,"e":25,"c":"pl-c1"},{"s":27,"e":47,"c":"pl-c1"},{"s":49,"e":50,"c":"pl-c1"}],[{"s":3,"e":21,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-s1"},{"s":3,"e":5,"c":"pl-c1"},{"s":5,"e":17,"c":"pl-c1"},{"s":18,"e":19,"c":"pl-c1"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":25,"e":27,"c":"pl-c1"},{"s":27,"e":30,"c":"pl-c1"}],[{"s":1,"e":3,"c":"pl-k"},{"s":5,"e":9,"c":"pl-s1"},{"s":9,"e":11,"c":"pl-c1"},{"s":11,"e":14,"c":"pl-c1"},{"s":15,"e":20,"c":"pl-c1"}],[{"s":2,"e":5,"c":"pl-smi"},{"s":6,"e":9,"c":"pl-s1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":16,"c":"pl-s1"},{"s":16,"e":18,"c":"pl-c1"},{"s":18,"e":21,"c":"pl-c1"},{"s":22,"e":27,"c":"pl-c1"}],[],[{"s":2,"e":24,"c":"pl-en"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-s1"},{"s":30,"e":32,"c":"pl-c1"},{"s":32,"e":35,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-k"},{"s":9,"e":12,"c":"pl-s1"}],[],[{"s":1,"e":3,"c":"pl-c"}],[{"s":0,"e":68,"c":"pl-c"}],[{"s":0,"e":72,"c":"pl-c"}],[{"s":0,"e":4,"c":"pl-c"}],[{"s":1,"e":23,"c":"pl-en"},{"s":24,"e":25,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":43,"c":"pl-c1"},{"s":45,"e":46,"c":"pl-c1"}],[{"s":1,"e":23,"c":"pl-en"},{"s":24,"e":25,"c":"pl-c1"},{"s":27,"e":28,"c":"pl-c1"},{"s":28,"e":32,"c":"pl-s1"},{"s":32,"e":34,"c":"pl-c1"},{"s":34,"e":47,"c":"pl-c1"}],[{"s":10,"e":30,"c":"pl-c1"}],[{"s":1,"e":18,"c":"pl-en"},{"s":19,"e":20,"c":"pl-c1"},{"s":22,"e":23,"c":"pl-c1"},{"s":23,"e":27,"c":"pl-s1"},{"s":27,"e":29,"c":"pl-c1"},{"s":29,"e":39,"c":"pl-c1"}],[{"s":1,"e":24,"c":"pl-en"},{"s":25,"e":26,"c":"pl-c1"},{"s":26,"e":30,"c":"pl-s1"},{"s":30,"e":32,"c":"pl-c1"},{"s":32,"e":35,"c":"pl-c1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":10,"c":"pl-smi"},{"s":11,"e":24,"c":"pl-en"},{"s":25,"e":31,"c":"pl-k"},{"s":32,"e":42,"c":"pl-smi"},{"s":43,"e":44,"c":"pl-c1"},{"s":44,"e":50,"c":"pl-s1"}],[],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":23,"c":"pl-s1"},{"s":24,"e":25,"c":"pl-c1"},{"s":26,"e":44,"c":"pl-en"},{"s":45,"e":51,"c":"pl-s1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":19,"c":"pl-smi"},{"s":20,"e":21,"c":"pl-c1"},{"s":21,"e":25,"c":"pl-s1"},{"s":26,"e":27,"c":"pl-c1"},{"s":28,"e":36,"c":"pl-en"},{"s":37,"e":39,"c":"pl-s1"}],[],[{"s":1,"e":30,"c":"pl-en"},{"s":31,"e":33,"c":"pl-s1"}],[{"s":1,"e":23,"c":"pl-en"},{"s":24,"e":25,"c":"pl-c1"},{"s":25,"e":29,"c":"pl-s1"},{"s":29,"e":31,"c":"pl-c1"},{"s":31,"e":34,"c":"pl-c1"}],[{"s":1,"e":7,"c":"pl-k"},{"s":8,"e":9,"c":"pl-c1"}],[],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":12,"c":"pl-k"},{"s":13,"e":19,"c":"pl-k"},{"s":20,"e":33,"c":"pl-smi"},{"s":34,"e":43,"c":"pl-s1"},{"s":46,"e":47,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-s"},{"s":13,"e":25,"c":"pl-c1"}],[{"s":3,"e":11,"c":"pl-s"},{"s":13,"e":25,"c":"pl-c1"}],[],[],[{"s":0,"e":19,"c":"pl-en"},{"s":20,"e":23,"c":"pl-s1"},{"s":25,"e":34,"c":"pl-s1"}],[],[{"s":0,"e":6,"c":"pl-k"},{"s":7,"e":13,"c":"pl-k"},{"s":14,"e":24,"c":"pl-smi"},{"s":25,"e":38,"c":"pl-s1"},{"s":39,"e":40,"c":"pl-c1"}],[{"s":2,"e":8,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"}],[{"s":3,"e":7,"c":"pl-c1"},{"s":8,"e":9,"c":"pl-c1"},{"s":10,"e":18,"c":"pl-s"}],[],[{"s":2,"e":7,"c":"pl-c1"},{"s":9,"e":10,"c":"pl-c1"},{"s":11,"e":23,"c":"pl-s1"}],[{"s":2,"e":8,"c":"pl-c1"},{"s":10,"e":11,"c":"pl-c1"},{"s":12,"e":25,"c":"pl-s1"}],[{"s":2,"e":10,"c":"pl-c1"},{"s":11,"e":12,"c":"pl-c1"},{"s":13,"e":22,"c":"pl-s1"}],[],[],[{"s":0,"e":17,"c":"pl-en"},{"s":18,"e":31,"c":"pl-s1"}]],"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/xillybus/xillinux-kernel/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"ov7670.c","displayUrl":"https://github.com/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c?raw=true","headerInfo":{"blobSize":"45 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":"e1b5dc8","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fxillybus%2Fxillinux-kernel%2Fblob%2Fmaster%2Fdrivers%2Fmedia%2Fi2c%2Fov7670.c","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"1684","truncatedSloc":"1487"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"C","languageID":41,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/xillybus/xillinux-kernel/blob/master/drivers/media/i2c/ov7670.c","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/xillybus/xillinux-kernel/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/xillybus/xillinux-kernel/raw/master/drivers/media/i2c/ov7670.c","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"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":"OV7670_I2C_ADDR","kind":"macro","ident_start":979,"ident_end":994,"extent_start":971,"extent_end":1001,"fully_qualified_name":"OV7670_I2C_ADDR","ident_utf16":{"start":{"line_number":35,"utf16_col":8},"end":{"line_number":35,"utf16_col":23}},"extent_utf16":{"start":{"line_number":35,"utf16_col":0},"end":{"line_number":37,"utf16_col":0}}},{"name":"PLL_FACTOR","kind":"macro","ident_start":1009,"ident_end":1019,"extent_start":1001,"extent_end":1023,"fully_qualified_name":"PLL_FACTOR","ident_utf16":{"start":{"line_number":37,"utf16_col":8},"end":{"line_number":37,"utf16_col":18}},"extent_utf16":{"start":{"line_number":37,"utf16_col":0},"end":{"line_number":39,"utf16_col":0}}},{"name":"REG_GAIN","kind":"macro","ident_start":1047,"ident_end":1055,"extent_start":1039,"extent_end":1100,"fully_qualified_name":"REG_GAIN","ident_utf16":{"start":{"line_number":40,"utf16_col":8},"end":{"line_number":40,"utf16_col":16}},"extent_utf16":{"start":{"line_number":40,"utf16_col":0},"end":{"line_number":41,"utf16_col":0}}},{"name":"REG_BLUE","kind":"macro","ident_start":1108,"ident_end":1116,"extent_start":1100,"extent_end":1138,"fully_qualified_name":"REG_BLUE","ident_utf16":{"start":{"line_number":41,"utf16_col":8},"end":{"line_number":41,"utf16_col":16}},"extent_utf16":{"start":{"line_number":41,"utf16_col":0},"end":{"line_number":42,"utf16_col":0}}},{"name":"REG_RED","kind":"macro","ident_start":1146,"ident_end":1153,"extent_start":1138,"extent_end":1175,"fully_qualified_name":"REG_RED","ident_utf16":{"start":{"line_number":42,"utf16_col":8},"end":{"line_number":42,"utf16_col":15}},"extent_utf16":{"start":{"line_number":42,"utf16_col":0},"end":{"line_number":43,"utf16_col":0}}},{"name":"REG_VREF","kind":"macro","ident_start":1183,"ident_end":1191,"extent_start":1175,"extent_end":1233,"fully_qualified_name":"REG_VREF","ident_utf16":{"start":{"line_number":43,"utf16_col":8},"end":{"line_number":43,"utf16_col":16}},"extent_utf16":{"start":{"line_number":43,"utf16_col":0},"end":{"line_number":44,"utf16_col":0}}},{"name":"REG_COM1","kind":"macro","ident_start":1241,"ident_end":1249,"extent_start":1233,"extent_end":1271,"fully_qualified_name":"REG_COM1","ident_utf16":{"start":{"line_number":44,"utf16_col":8},"end":{"line_number":44,"utf16_col":16}},"extent_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":45,"utf16_col":0}}},{"name":"COM1_CCIR656","kind":"macro","ident_start":1280,"ident_end":1292,"extent_start":1271,"extent_end":1322,"fully_qualified_name":"COM1_CCIR656","ident_utf16":{"start":{"line_number":45,"utf16_col":9},"end":{"line_number":45,"utf16_col":21}},"extent_utf16":{"start":{"line_number":45,"utf16_col":0},"end":{"line_number":46,"utf16_col":0}}},{"name":"REG_BAVE","kind":"macro","ident_start":1330,"ident_end":1338,"extent_start":1322,"extent_end":1368,"fully_qualified_name":"REG_BAVE","ident_utf16":{"start":{"line_number":46,"utf16_col":8},"end":{"line_number":46,"utf16_col":16}},"extent_utf16":{"start":{"line_number":46,"utf16_col":0},"end":{"line_number":47,"utf16_col":0}}},{"name":"REG_GbAVE","kind":"macro","ident_start":1376,"ident_end":1385,"extent_start":1368,"extent_end":1416,"fully_qualified_name":"REG_GbAVE","ident_utf16":{"start":{"line_number":47,"utf16_col":8},"end":{"line_number":47,"utf16_col":17}},"extent_utf16":{"start":{"line_number":47,"utf16_col":0},"end":{"line_number":48,"utf16_col":0}}},{"name":"REG_AECHH","kind":"macro","ident_start":1424,"ident_end":1433,"extent_start":1416,"extent_end":1459,"fully_qualified_name":"REG_AECHH","ident_utf16":{"start":{"line_number":48,"utf16_col":8},"end":{"line_number":48,"utf16_col":17}},"extent_utf16":{"start":{"line_number":48,"utf16_col":0},"end":{"line_number":49,"utf16_col":0}}},{"name":"REG_RAVE","kind":"macro","ident_start":1467,"ident_end":1475,"extent_start":1459,"extent_end":1505,"fully_qualified_name":"REG_RAVE","ident_utf16":{"start":{"line_number":49,"utf16_col":8},"end":{"line_number":49,"utf16_col":16}},"extent_utf16":{"start":{"line_number":49,"utf16_col":0},"end":{"line_number":50,"utf16_col":0}}},{"name":"REG_COM2","kind":"macro","ident_start":1513,"ident_end":1521,"extent_start":1505,"extent_end":1543,"fully_qualified_name":"REG_COM2","ident_utf16":{"start":{"line_number":50,"utf16_col":8},"end":{"line_number":50,"utf16_col":16}},"extent_utf16":{"start":{"line_number":50,"utf16_col":0},"end":{"line_number":51,"utf16_col":0}}},{"name":"COM2_SSLEEP","kind":"macro","ident_start":1552,"ident_end":1563,"extent_start":1543,"extent_end":1593,"fully_qualified_name":"COM2_SSLEEP","ident_utf16":{"start":{"line_number":51,"utf16_col":9},"end":{"line_number":51,"utf16_col":20}},"extent_utf16":{"start":{"line_number":51,"utf16_col":0},"end":{"line_number":52,"utf16_col":0}}},{"name":"REG_PID","kind":"macro","ident_start":1601,"ident_end":1608,"extent_start":1593,"extent_end":1636,"fully_qualified_name":"REG_PID","ident_utf16":{"start":{"line_number":52,"utf16_col":8},"end":{"line_number":52,"utf16_col":15}},"extent_utf16":{"start":{"line_number":52,"utf16_col":0},"end":{"line_number":53,"utf16_col":0}}},{"name":"REG_VER","kind":"macro","ident_start":1644,"ident_end":1651,"extent_start":1636,"extent_end":1679,"fully_qualified_name":"REG_VER","ident_utf16":{"start":{"line_number":53,"utf16_col":8},"end":{"line_number":53,"utf16_col":15}},"extent_utf16":{"start":{"line_number":53,"utf16_col":0},"end":{"line_number":54,"utf16_col":0}}},{"name":"REG_COM3","kind":"macro","ident_start":1687,"ident_end":1695,"extent_start":1679,"extent_end":1717,"fully_qualified_name":"REG_COM3","ident_utf16":{"start":{"line_number":54,"utf16_col":8},"end":{"line_number":54,"utf16_col":16}},"extent_utf16":{"start":{"line_number":54,"utf16_col":0},"end":{"line_number":55,"utf16_col":0}}},{"name":"COM3_SWAP","kind":"macro","ident_start":1726,"ident_end":1735,"extent_start":1717,"extent_end":1761,"fully_qualified_name":"COM3_SWAP","ident_utf16":{"start":{"line_number":55,"utf16_col":9},"end":{"line_number":55,"utf16_col":18}},"extent_utf16":{"start":{"line_number":55,"utf16_col":0},"end":{"line_number":56,"utf16_col":0}}},{"name":"COM3_SCALEEN","kind":"macro","ident_start":1770,"ident_end":1782,"extent_start":1761,"extent_end":1813,"fully_qualified_name":"COM3_SCALEEN","ident_utf16":{"start":{"line_number":56,"utf16_col":9},"end":{"line_number":56,"utf16_col":21}},"extent_utf16":{"start":{"line_number":56,"utf16_col":0},"end":{"line_number":57,"utf16_col":0}}},{"name":"COM3_DCWEN","kind":"macro","ident_start":1822,"ident_end":1832,"extent_start":1813,"extent_end":1876,"fully_qualified_name":"COM3_DCWEN","ident_utf16":{"start":{"line_number":57,"utf16_col":9},"end":{"line_number":57,"utf16_col":19}},"extent_utf16":{"start":{"line_number":57,"utf16_col":0},"end":{"line_number":58,"utf16_col":0}}},{"name":"REG_COM4","kind":"macro","ident_start":1884,"ident_end":1892,"extent_start":1876,"extent_end":1914,"fully_qualified_name":"REG_COM4","ident_utf16":{"start":{"line_number":58,"utf16_col":8},"end":{"line_number":58,"utf16_col":16}},"extent_utf16":{"start":{"line_number":58,"utf16_col":0},"end":{"line_number":59,"utf16_col":0}}},{"name":"REG_COM5","kind":"macro","ident_start":1922,"ident_end":1930,"extent_start":1914,"extent_end":1957,"fully_qualified_name":"REG_COM5","ident_utf16":{"start":{"line_number":59,"utf16_col":8},"end":{"line_number":59,"utf16_col":16}},"extent_utf16":{"start":{"line_number":59,"utf16_col":0},"end":{"line_number":60,"utf16_col":0}}},{"name":"REG_COM6","kind":"macro","ident_start":1965,"ident_end":1973,"extent_start":1957,"extent_end":1995,"fully_qualified_name":"REG_COM6","ident_utf16":{"start":{"line_number":60,"utf16_col":8},"end":{"line_number":60,"utf16_col":16}},"extent_utf16":{"start":{"line_number":60,"utf16_col":0},"end":{"line_number":61,"utf16_col":0}}},{"name":"REG_AECH","kind":"macro","ident_start":2003,"ident_end":2011,"extent_start":1995,"extent_end":2046,"fully_qualified_name":"REG_AECH","ident_utf16":{"start":{"line_number":61,"utf16_col":8},"end":{"line_number":61,"utf16_col":16}},"extent_utf16":{"start":{"line_number":61,"utf16_col":0},"end":{"line_number":62,"utf16_col":0}}},{"name":"REG_CLKRC","kind":"macro","ident_start":2054,"ident_end":2063,"extent_start":2046,"extent_end":2089,"fully_qualified_name":"REG_CLKRC","ident_utf16":{"start":{"line_number":62,"utf16_col":8},"end":{"line_number":62,"utf16_col":17}},"extent_utf16":{"start":{"line_number":62,"utf16_col":0},"end":{"line_number":63,"utf16_col":0}}},{"name":"CLK_EXT","kind":"macro","ident_start":2099,"ident_end":2106,"extent_start":2089,"extent_end":2150,"fully_qualified_name":"CLK_EXT","ident_utf16":{"start":{"line_number":63,"utf16_col":10},"end":{"line_number":63,"utf16_col":17}},"extent_utf16":{"start":{"line_number":63,"utf16_col":0},"end":{"line_number":64,"utf16_col":0}}},{"name":"CLK_SCALE","kind":"macro","ident_start":2160,"ident_end":2169,"extent_start":2150,"extent_end":2215,"fully_qualified_name":"CLK_SCALE","ident_utf16":{"start":{"line_number":64,"utf16_col":10},"end":{"line_number":64,"utf16_col":19}},"extent_utf16":{"start":{"line_number":64,"utf16_col":0},"end":{"line_number":65,"utf16_col":0}}},{"name":"REG_COM7","kind":"macro","ident_start":2223,"ident_end":2231,"extent_start":2215,"extent_end":2253,"fully_qualified_name":"REG_COM7","ident_utf16":{"start":{"line_number":65,"utf16_col":8},"end":{"line_number":65,"utf16_col":16}},"extent_utf16":{"start":{"line_number":65,"utf16_col":0},"end":{"line_number":66,"utf16_col":0}}},{"name":"COM7_RESET","kind":"macro","ident_start":2263,"ident_end":2273,"extent_start":2253,"extent_end":2304,"fully_qualified_name":"COM7_RESET","ident_utf16":{"start":{"line_number":66,"utf16_col":10},"end":{"line_number":66,"utf16_col":20}},"extent_utf16":{"start":{"line_number":66,"utf16_col":0},"end":{"line_number":67,"utf16_col":0}}},{"name":"COM7_FMT_MASK","kind":"macro","ident_start":2314,"ident_end":2327,"extent_start":2304,"extent_end":2335,"fully_qualified_name":"COM7_FMT_MASK","ident_utf16":{"start":{"line_number":67,"utf16_col":10},"end":{"line_number":67,"utf16_col":23}},"extent_utf16":{"start":{"line_number":67,"utf16_col":0},"end":{"line_number":68,"utf16_col":0}}},{"name":"COM7_FMT_VGA","kind":"macro","ident_start":2345,"ident_end":2357,"extent_start":2335,"extent_end":2365,"fully_qualified_name":"COM7_FMT_VGA","ident_utf16":{"start":{"line_number":68,"utf16_col":10},"end":{"line_number":68,"utf16_col":22}},"extent_utf16":{"start":{"line_number":68,"utf16_col":0},"end":{"line_number":69,"utf16_col":0}}},{"name":"COM7_FMT_CIF","kind":"macro","ident_start":2375,"ident_end":2387,"extent_start":2365,"extent_end":2414,"fully_qualified_name":"COM7_FMT_CIF","ident_utf16":{"start":{"line_number":69,"utf16_col":10},"end":{"line_number":69,"utf16_col":22}},"extent_utf16":{"start":{"line_number":69,"utf16_col":0},"end":{"line_number":70,"utf16_col":0}}},{"name":"COM7_FMT_QVGA","kind":"macro","ident_start":2424,"ident_end":2437,"extent_start":2414,"extent_end":2465,"fully_qualified_name":"COM7_FMT_QVGA","ident_utf16":{"start":{"line_number":70,"utf16_col":10},"end":{"line_number":70,"utf16_col":23}},"extent_utf16":{"start":{"line_number":70,"utf16_col":0},"end":{"line_number":71,"utf16_col":0}}},{"name":"COM7_FMT_QCIF","kind":"macro","ident_start":2475,"ident_end":2488,"extent_start":2465,"extent_end":2516,"fully_qualified_name":"COM7_FMT_QCIF","ident_utf16":{"start":{"line_number":71,"utf16_col":10},"end":{"line_number":71,"utf16_col":23}},"extent_utf16":{"start":{"line_number":71,"utf16_col":0},"end":{"line_number":72,"utf16_col":0}}},{"name":"COM7_RGB","kind":"macro","ident_start":2526,"ident_end":2534,"extent_start":2516,"extent_end":2576,"fully_qualified_name":"COM7_RGB","ident_utf16":{"start":{"line_number":72,"utf16_col":10},"end":{"line_number":72,"utf16_col":18}},"extent_utf16":{"start":{"line_number":72,"utf16_col":0},"end":{"line_number":73,"utf16_col":0}}},{"name":"COM7_YUV","kind":"macro","ident_start":2586,"ident_end":2594,"extent_start":2576,"extent_end":2614,"fully_qualified_name":"COM7_YUV","ident_utf16":{"start":{"line_number":73,"utf16_col":10},"end":{"line_number":73,"utf16_col":18}},"extent_utf16":{"start":{"line_number":73,"utf16_col":0},"end":{"line_number":74,"utf16_col":0}}},{"name":"COM7_BAYER","kind":"macro","ident_start":2624,"ident_end":2634,"extent_start":2614,"extent_end":2663,"fully_qualified_name":"COM7_BAYER","ident_utf16":{"start":{"line_number":74,"utf16_col":10},"end":{"line_number":74,"utf16_col":20}},"extent_utf16":{"start":{"line_number":74,"utf16_col":0},"end":{"line_number":75,"utf16_col":0}}},{"name":"COM7_PBAYER","kind":"macro","ident_start":2673,"ident_end":2684,"extent_start":2663,"extent_end":2718,"fully_qualified_name":"COM7_PBAYER","ident_utf16":{"start":{"line_number":75,"utf16_col":10},"end":{"line_number":75,"utf16_col":21}},"extent_utf16":{"start":{"line_number":75,"utf16_col":0},"end":{"line_number":76,"utf16_col":0}}},{"name":"REG_COM8","kind":"macro","ident_start":2726,"ident_end":2734,"extent_start":2718,"extent_end":2756,"fully_qualified_name":"REG_COM8","ident_utf16":{"start":{"line_number":76,"utf16_col":8},"end":{"line_number":76,"utf16_col":16}},"extent_utf16":{"start":{"line_number":76,"utf16_col":0},"end":{"line_number":77,"utf16_col":0}}},{"name":"COM8_FASTAEC","kind":"macro","ident_start":2766,"ident_end":2778,"extent_start":2756,"extent_end":2814,"fully_qualified_name":"COM8_FASTAEC","ident_utf16":{"start":{"line_number":77,"utf16_col":10},"end":{"line_number":77,"utf16_col":22}},"extent_utf16":{"start":{"line_number":77,"utf16_col":0},"end":{"line_number":78,"utf16_col":0}}},{"name":"COM8_AECSTEP","kind":"macro","ident_start":2824,"ident_end":2836,"extent_start":2814,"extent_end":2876,"fully_qualified_name":"COM8_AECSTEP","ident_utf16":{"start":{"line_number":78,"utf16_col":10},"end":{"line_number":78,"utf16_col":22}},"extent_utf16":{"start":{"line_number":78,"utf16_col":0},"end":{"line_number":79,"utf16_col":0}}},{"name":"COM8_BFILT","kind":"macro","ident_start":2886,"ident_end":2896,"extent_start":2876,"extent_end":2931,"fully_qualified_name":"COM8_BFILT","ident_utf16":{"start":{"line_number":79,"utf16_col":10},"end":{"line_number":79,"utf16_col":20}},"extent_utf16":{"start":{"line_number":79,"utf16_col":0},"end":{"line_number":80,"utf16_col":0}}},{"name":"COM8_AGC","kind":"macro","ident_start":2941,"ident_end":2949,"extent_start":2931,"extent_end":2982,"fully_qualified_name":"COM8_AGC","ident_utf16":{"start":{"line_number":80,"utf16_col":10},"end":{"line_number":80,"utf16_col":18}},"extent_utf16":{"start":{"line_number":80,"utf16_col":0},"end":{"line_number":81,"utf16_col":0}}},{"name":"COM8_AWB","kind":"macro","ident_start":2992,"ident_end":3000,"extent_start":2982,"extent_end":3037,"fully_qualified_name":"COM8_AWB","ident_utf16":{"start":{"line_number":81,"utf16_col":10},"end":{"line_number":81,"utf16_col":18}},"extent_utf16":{"start":{"line_number":81,"utf16_col":0},"end":{"line_number":82,"utf16_col":0}}},{"name":"COM8_AEC","kind":"macro","ident_start":3047,"ident_end":3055,"extent_start":3037,"extent_end":3092,"fully_qualified_name":"COM8_AEC","ident_utf16":{"start":{"line_number":82,"utf16_col":10},"end":{"line_number":82,"utf16_col":18}},"extent_utf16":{"start":{"line_number":82,"utf16_col":0},"end":{"line_number":83,"utf16_col":0}}},{"name":"REG_COM9","kind":"macro","ident_start":3100,"ident_end":3108,"extent_start":3092,"extent_end":3146,"fully_qualified_name":"REG_COM9","ident_utf16":{"start":{"line_number":83,"utf16_col":8},"end":{"line_number":83,"utf16_col":16}},"extent_utf16":{"start":{"line_number":83,"utf16_col":0},"end":{"line_number":84,"utf16_col":0}}},{"name":"REG_COM10","kind":"macro","ident_start":3154,"ident_end":3163,"extent_start":3146,"extent_end":3186,"fully_qualified_name":"REG_COM10","ident_utf16":{"start":{"line_number":84,"utf16_col":8},"end":{"line_number":84,"utf16_col":17}},"extent_utf16":{"start":{"line_number":84,"utf16_col":0},"end":{"line_number":85,"utf16_col":0}}},{"name":"COM10_HSYNC","kind":"macro","ident_start":3196,"ident_end":3207,"extent_start":3186,"extent_end":3245,"fully_qualified_name":"COM10_HSYNC","ident_utf16":{"start":{"line_number":85,"utf16_col":10},"end":{"line_number":85,"utf16_col":21}},"extent_utf16":{"start":{"line_number":85,"utf16_col":0},"end":{"line_number":86,"utf16_col":0}}},{"name":"COM10_PCLK_HB","kind":"macro","ident_start":3255,"ident_end":3268,"extent_start":3245,"extent_end":3313,"fully_qualified_name":"COM10_PCLK_HB","ident_utf16":{"start":{"line_number":86,"utf16_col":10},"end":{"line_number":86,"utf16_col":23}},"extent_utf16":{"start":{"line_number":86,"utf16_col":0},"end":{"line_number":87,"utf16_col":0}}},{"name":"COM10_HREF_REV","kind":"macro","ident_start":3323,"ident_end":3337,"extent_start":3313,"extent_end":3365,"fully_qualified_name":"COM10_HREF_REV","ident_utf16":{"start":{"line_number":87,"utf16_col":10},"end":{"line_number":87,"utf16_col":24}},"extent_utf16":{"start":{"line_number":87,"utf16_col":0},"end":{"line_number":88,"utf16_col":0}}},{"name":"COM10_VS_LEAD","kind":"macro","ident_start":3375,"ident_end":3388,"extent_start":3365,"extent_end":3432,"fully_qualified_name":"COM10_VS_LEAD","ident_utf16":{"start":{"line_number":88,"utf16_col":10},"end":{"line_number":88,"utf16_col":23}},"extent_utf16":{"start":{"line_number":88,"utf16_col":0},"end":{"line_number":89,"utf16_col":0}}},{"name":"COM10_VS_NEG","kind":"macro","ident_start":3442,"ident_end":3454,"extent_start":3432,"extent_end":3485,"fully_qualified_name":"COM10_VS_NEG","ident_utf16":{"start":{"line_number":89,"utf16_col":10},"end":{"line_number":89,"utf16_col":22}},"extent_utf16":{"start":{"line_number":89,"utf16_col":0},"end":{"line_number":90,"utf16_col":0}}},{"name":"COM10_HS_NEG","kind":"macro","ident_start":3495,"ident_end":3507,"extent_start":3485,"extent_end":3538,"fully_qualified_name":"COM10_HS_NEG","ident_utf16":{"start":{"line_number":90,"utf16_col":10},"end":{"line_number":90,"utf16_col":22}},"extent_utf16":{"start":{"line_number":90,"utf16_col":0},"end":{"line_number":91,"utf16_col":0}}},{"name":"REG_HSTART","kind":"macro","ident_start":3546,"ident_end":3556,"extent_start":3538,"extent_end":3590,"fully_qualified_name":"REG_HSTART","ident_utf16":{"start":{"line_number":91,"utf16_col":8},"end":{"line_number":91,"utf16_col":18}},"extent_utf16":{"start":{"line_number":91,"utf16_col":0},"end":{"line_number":92,"utf16_col":0}}},{"name":"REG_HSTOP","kind":"macro","ident_start":3598,"ident_end":3607,"extent_start":3590,"extent_end":3640,"fully_qualified_name":"REG_HSTOP","ident_utf16":{"start":{"line_number":92,"utf16_col":8},"end":{"line_number":92,"utf16_col":17}},"extent_utf16":{"start":{"line_number":92,"utf16_col":0},"end":{"line_number":93,"utf16_col":0}}},{"name":"REG_VSTART","kind":"macro","ident_start":3648,"ident_end":3658,"extent_start":3640,"extent_end":3691,"fully_qualified_name":"REG_VSTART","ident_utf16":{"start":{"line_number":93,"utf16_col":8},"end":{"line_number":93,"utf16_col":18}},"extent_utf16":{"start":{"line_number":93,"utf16_col":0},"end":{"line_number":94,"utf16_col":0}}},{"name":"REG_VSTOP","kind":"macro","ident_start":3699,"ident_end":3708,"extent_start":3691,"extent_end":3740,"fully_qualified_name":"REG_VSTOP","ident_utf16":{"start":{"line_number":94,"utf16_col":8},"end":{"line_number":94,"utf16_col":17}},"extent_utf16":{"start":{"line_number":94,"utf16_col":0},"end":{"line_number":95,"utf16_col":0}}},{"name":"REG_PSHFT","kind":"macro","ident_start":3748,"ident_end":3757,"extent_start":3740,"extent_end":3792,"fully_qualified_name":"REG_PSHFT","ident_utf16":{"start":{"line_number":95,"utf16_col":8},"end":{"line_number":95,"utf16_col":17}},"extent_utf16":{"start":{"line_number":95,"utf16_col":0},"end":{"line_number":96,"utf16_col":0}}},{"name":"REG_MIDH","kind":"macro","ident_start":3800,"ident_end":3808,"extent_start":3792,"extent_end":3835,"fully_qualified_name":"REG_MIDH","ident_utf16":{"start":{"line_number":96,"utf16_col":8},"end":{"line_number":96,"utf16_col":16}},"extent_utf16":{"start":{"line_number":96,"utf16_col":0},"end":{"line_number":97,"utf16_col":0}}},{"name":"REG_MIDL","kind":"macro","ident_start":3843,"ident_end":3851,"extent_start":3835,"extent_end":3877,"fully_qualified_name":"REG_MIDL","ident_utf16":{"start":{"line_number":97,"utf16_col":8},"end":{"line_number":97,"utf16_col":16}},"extent_utf16":{"start":{"line_number":97,"utf16_col":0},"end":{"line_number":98,"utf16_col":0}}},{"name":"REG_MVFP","kind":"macro","ident_start":3885,"ident_end":3893,"extent_start":3877,"extent_end":3920,"fully_qualified_name":"REG_MVFP","ident_utf16":{"start":{"line_number":98,"utf16_col":8},"end":{"line_number":98,"utf16_col":16}},"extent_utf16":{"start":{"line_number":98,"utf16_col":0},"end":{"line_number":99,"utf16_col":0}}},{"name":"MVFP_MIRROR","kind":"macro","ident_start":3930,"ident_end":3941,"extent_start":3920,"extent_end":3970,"fully_qualified_name":"MVFP_MIRROR","ident_utf16":{"start":{"line_number":99,"utf16_col":10},"end":{"line_number":99,"utf16_col":21}},"extent_utf16":{"start":{"line_number":99,"utf16_col":0},"end":{"line_number":100,"utf16_col":0}}},{"name":"MVFP_FLIP","kind":"macro","ident_start":3980,"ident_end":3989,"extent_start":3970,"extent_end":4020,"fully_qualified_name":"MVFP_FLIP","ident_utf16":{"start":{"line_number":100,"utf16_col":10},"end":{"line_number":100,"utf16_col":19}},"extent_utf16":{"start":{"line_number":100,"utf16_col":0},"end":{"line_number":102,"utf16_col":0}}},{"name":"REG_AEW","kind":"macro","ident_start":4028,"ident_end":4035,"extent_start":4020,"extent_end":4064,"fully_qualified_name":"REG_AEW","ident_utf16":{"start":{"line_number":102,"utf16_col":8},"end":{"line_number":102,"utf16_col":15}},"extent_utf16":{"start":{"line_number":102,"utf16_col":0},"end":{"line_number":103,"utf16_col":0}}},{"name":"REG_AEB","kind":"macro","ident_start":4072,"ident_end":4079,"extent_start":4064,"extent_end":4108,"fully_qualified_name":"REG_AEB","ident_utf16":{"start":{"line_number":103,"utf16_col":8},"end":{"line_number":103,"utf16_col":15}},"extent_utf16":{"start":{"line_number":103,"utf16_col":0},"end":{"line_number":104,"utf16_col":0}}},{"name":"REG_VPT","kind":"macro","ident_start":4116,"ident_end":4123,"extent_start":4108,"extent_end":4164,"fully_qualified_name":"REG_VPT","ident_utf16":{"start":{"line_number":104,"utf16_col":8},"end":{"line_number":104,"utf16_col":15}},"extent_utf16":{"start":{"line_number":104,"utf16_col":0},"end":{"line_number":105,"utf16_col":0}}},{"name":"REG_HSYST","kind":"macro","ident_start":4172,"ident_end":4181,"extent_start":4164,"extent_end":4217,"fully_qualified_name":"REG_HSYST","ident_utf16":{"start":{"line_number":105,"utf16_col":8},"end":{"line_number":105,"utf16_col":17}},"extent_utf16":{"start":{"line_number":105,"utf16_col":0},"end":{"line_number":106,"utf16_col":0}}},{"name":"REG_HSYEN","kind":"macro","ident_start":4225,"ident_end":4234,"extent_start":4217,"extent_end":4271,"fully_qualified_name":"REG_HSYEN","ident_utf16":{"start":{"line_number":106,"utf16_col":8},"end":{"line_number":106,"utf16_col":17}},"extent_utf16":{"start":{"line_number":106,"utf16_col":0},"end":{"line_number":107,"utf16_col":0}}},{"name":"REG_HREF","kind":"macro","ident_start":4279,"ident_end":4287,"extent_start":4271,"extent_end":4311,"fully_qualified_name":"REG_HREF","ident_utf16":{"start":{"line_number":107,"utf16_col":8},"end":{"line_number":107,"utf16_col":16}},"extent_utf16":{"start":{"line_number":107,"utf16_col":0},"end":{"line_number":108,"utf16_col":0}}},{"name":"REG_TSLB","kind":"macro","ident_start":4319,"ident_end":4327,"extent_start":4311,"extent_end":4353,"fully_qualified_name":"REG_TSLB","ident_utf16":{"start":{"line_number":108,"utf16_col":8},"end":{"line_number":108,"utf16_col":16}},"extent_utf16":{"start":{"line_number":108,"utf16_col":0},"end":{"line_number":109,"utf16_col":0}}},{"name":"TSLB_YLAST","kind":"macro","ident_start":4363,"ident_end":4373,"extent_start":4353,"extent_end":4414,"fully_qualified_name":"TSLB_YLAST","ident_utf16":{"start":{"line_number":109,"utf16_col":10},"end":{"line_number":109,"utf16_col":20}},"extent_utf16":{"start":{"line_number":109,"utf16_col":0},"end":{"line_number":110,"utf16_col":0}}},{"name":"REG_COM11","kind":"macro","ident_start":4422,"ident_end":4431,"extent_start":4414,"extent_end":4454,"fully_qualified_name":"REG_COM11","ident_utf16":{"start":{"line_number":110,"utf16_col":8},"end":{"line_number":110,"utf16_col":17}},"extent_utf16":{"start":{"line_number":110,"utf16_col":0},"end":{"line_number":111,"utf16_col":0}}},{"name":"COM11_NIGHT","kind":"macro","ident_start":4464,"ident_end":4475,"extent_start":4454,"extent_end":4509,"fully_qualified_name":"COM11_NIGHT","ident_utf16":{"start":{"line_number":111,"utf16_col":10},"end":{"line_number":111,"utf16_col":21}},"extent_utf16":{"start":{"line_number":111,"utf16_col":0},"end":{"line_number":112,"utf16_col":0}}},{"name":"COM11_NMFR","kind":"macro","ident_start":4519,"ident_end":4529,"extent_start":4509,"extent_end":4567,"fully_qualified_name":"COM11_NMFR","ident_utf16":{"start":{"line_number":112,"utf16_col":10},"end":{"line_number":112,"utf16_col":20}},"extent_utf16":{"start":{"line_number":112,"utf16_col":0},"end":{"line_number":113,"utf16_col":0}}},{"name":"COM11_HZAUTO","kind":"macro","ident_start":4577,"ident_end":4589,"extent_start":4567,"extent_end":4626,"fully_qualified_name":"COM11_HZAUTO","ident_utf16":{"start":{"line_number":113,"utf16_col":10},"end":{"line_number":113,"utf16_col":22}},"extent_utf16":{"start":{"line_number":113,"utf16_col":0},"end":{"line_number":114,"utf16_col":0}}},{"name":"COM11_50HZ","kind":"macro","ident_start":4636,"ident_end":4646,"extent_start":4626,"extent_end":4681,"fully_qualified_name":"COM11_50HZ","ident_utf16":{"start":{"line_number":114,"utf16_col":10},"end":{"line_number":114,"utf16_col":20}},"extent_utf16":{"start":{"line_number":114,"utf16_col":0},"end":{"line_number":115,"utf16_col":0}}},{"name":"COM11_EXP","kind":"macro","ident_start":4691,"ident_end":4700,"extent_start":4681,"extent_end":4708,"fully_qualified_name":"COM11_EXP","ident_utf16":{"start":{"line_number":115,"utf16_col":10},"end":{"line_number":115,"utf16_col":19}},"extent_utf16":{"start":{"line_number":115,"utf16_col":0},"end":{"line_number":116,"utf16_col":0}}},{"name":"REG_COM12","kind":"macro","ident_start":4716,"ident_end":4725,"extent_start":4708,"extent_end":4748,"fully_qualified_name":"REG_COM12","ident_utf16":{"start":{"line_number":116,"utf16_col":8},"end":{"line_number":116,"utf16_col":17}},"extent_utf16":{"start":{"line_number":116,"utf16_col":0},"end":{"line_number":117,"utf16_col":0}}},{"name":"COM12_HREF","kind":"macro","ident_start":4758,"ident_end":4768,"extent_start":4748,"extent_end":4796,"fully_qualified_name":"COM12_HREF","ident_utf16":{"start":{"line_number":117,"utf16_col":10},"end":{"line_number":117,"utf16_col":20}},"extent_utf16":{"start":{"line_number":117,"utf16_col":0},"end":{"line_number":118,"utf16_col":0}}},{"name":"REG_COM13","kind":"macro","ident_start":4804,"ident_end":4813,"extent_start":4796,"extent_end":4836,"fully_qualified_name":"REG_COM13","ident_utf16":{"start":{"line_number":118,"utf16_col":8},"end":{"line_number":118,"utf16_col":17}},"extent_utf16":{"start":{"line_number":118,"utf16_col":0},"end":{"line_number":119,"utf16_col":0}}},{"name":"COM13_GAMMA","kind":"macro","ident_start":4846,"ident_end":4857,"extent_start":4836,"extent_end":4886,"fully_qualified_name":"COM13_GAMMA","ident_utf16":{"start":{"line_number":119,"utf16_col":10},"end":{"line_number":119,"utf16_col":21}},"extent_utf16":{"start":{"line_number":119,"utf16_col":0},"end":{"line_number":120,"utf16_col":0}}},{"name":"COM13_UVSAT","kind":"macro","ident_start":4896,"ident_end":4907,"extent_start":4886,"extent_end":4953,"fully_qualified_name":"COM13_UVSAT","ident_utf16":{"start":{"line_number":120,"utf16_col":10},"end":{"line_number":120,"utf16_col":21}},"extent_utf16":{"start":{"line_number":120,"utf16_col":0},"end":{"line_number":121,"utf16_col":0}}},{"name":"COM13_UVSWAP","kind":"macro","ident_start":4963,"ident_end":4975,"extent_start":4953,"extent_end":5011,"fully_qualified_name":"COM13_UVSWAP","ident_utf16":{"start":{"line_number":121,"utf16_col":10},"end":{"line_number":121,"utf16_col":22}},"extent_utf16":{"start":{"line_number":121,"utf16_col":0},"end":{"line_number":122,"utf16_col":0}}},{"name":"REG_COM14","kind":"macro","ident_start":5019,"ident_end":5028,"extent_start":5011,"extent_end":5051,"fully_qualified_name":"REG_COM14","ident_utf16":{"start":{"line_number":122,"utf16_col":8},"end":{"line_number":122,"utf16_col":17}},"extent_utf16":{"start":{"line_number":122,"utf16_col":0},"end":{"line_number":123,"utf16_col":0}}},{"name":"COM14_DCWEN","kind":"macro","ident_start":5061,"ident_end":5072,"extent_start":5051,"extent_end":5110,"fully_qualified_name":"COM14_DCWEN","ident_utf16":{"start":{"line_number":123,"utf16_col":10},"end":{"line_number":123,"utf16_col":21}},"extent_utf16":{"start":{"line_number":123,"utf16_col":0},"end":{"line_number":124,"utf16_col":0}}},{"name":"REG_EDGE","kind":"macro","ident_start":5118,"ident_end":5126,"extent_start":5110,"extent_end":5162,"fully_qualified_name":"REG_EDGE","ident_utf16":{"start":{"line_number":124,"utf16_col":8},"end":{"line_number":124,"utf16_col":16}},"extent_utf16":{"start":{"line_number":124,"utf16_col":0},"end":{"line_number":125,"utf16_col":0}}},{"name":"REG_COM15","kind":"macro","ident_start":5170,"ident_end":5179,"extent_start":5162,"extent_end":5202,"fully_qualified_name":"REG_COM15","ident_utf16":{"start":{"line_number":125,"utf16_col":8},"end":{"line_number":125,"utf16_col":17}},"extent_utf16":{"start":{"line_number":125,"utf16_col":0},"end":{"line_number":126,"utf16_col":0}}},{"name":"COM15_R10F0","kind":"macro","ident_start":5212,"ident_end":5223,"extent_start":5202,"extent_end":5259,"fully_qualified_name":"COM15_R10F0","ident_utf16":{"start":{"line_number":126,"utf16_col":10},"end":{"line_number":126,"utf16_col":21}},"extent_utf16":{"start":{"line_number":126,"utf16_col":0},"end":{"line_number":127,"utf16_col":0}}},{"name":"COM15_R01FE","kind":"macro","ident_start":5269,"ident_end":5280,"extent_start":5259,"extent_end":5316,"fully_qualified_name":"COM15_R01FE","ident_utf16":{"start":{"line_number":127,"utf16_col":10},"end":{"line_number":127,"utf16_col":21}},"extent_utf16":{"start":{"line_number":127,"utf16_col":0},"end":{"line_number":128,"utf16_col":0}}},{"name":"COM15_R00FF","kind":"macro","ident_start":5326,"ident_end":5337,"extent_start":5316,"extent_end":5373,"fully_qualified_name":"COM15_R00FF","ident_utf16":{"start":{"line_number":128,"utf16_col":10},"end":{"line_number":128,"utf16_col":21}},"extent_utf16":{"start":{"line_number":128,"utf16_col":0},"end":{"line_number":129,"utf16_col":0}}},{"name":"COM15_RGB565","kind":"macro","ident_start":5383,"ident_end":5395,"extent_start":5373,"extent_end":5425,"fully_qualified_name":"COM15_RGB565","ident_utf16":{"start":{"line_number":129,"utf16_col":10},"end":{"line_number":129,"utf16_col":22}},"extent_utf16":{"start":{"line_number":129,"utf16_col":0},"end":{"line_number":130,"utf16_col":0}}},{"name":"COM15_RGB555","kind":"macro","ident_start":5435,"ident_end":5447,"extent_start":5425,"extent_end":5477,"fully_qualified_name":"COM15_RGB555","ident_utf16":{"start":{"line_number":130,"utf16_col":10},"end":{"line_number":130,"utf16_col":22}},"extent_utf16":{"start":{"line_number":130,"utf16_col":0},"end":{"line_number":131,"utf16_col":0}}},{"name":"REG_COM16","kind":"macro","ident_start":5485,"ident_end":5494,"extent_start":5477,"extent_end":5517,"fully_qualified_name":"REG_COM16","ident_utf16":{"start":{"line_number":131,"utf16_col":8},"end":{"line_number":131,"utf16_col":17}},"extent_utf16":{"start":{"line_number":131,"utf16_col":0},"end":{"line_number":132,"utf16_col":0}}},{"name":"COM16_AWBGAIN","kind":"macro","ident_start":5527,"ident_end":5540,"extent_start":5517,"extent_end":5572,"fully_qualified_name":"COM16_AWBGAIN","ident_utf16":{"start":{"line_number":132,"utf16_col":10},"end":{"line_number":132,"utf16_col":23}},"extent_utf16":{"start":{"line_number":132,"utf16_col":0},"end":{"line_number":133,"utf16_col":0}}},{"name":"REG_COM17","kind":"macro","ident_start":5580,"ident_end":5589,"extent_start":5572,"extent_end":5612,"fully_qualified_name":"REG_COM17","ident_utf16":{"start":{"line_number":133,"utf16_col":8},"end":{"line_number":133,"utf16_col":17}},"extent_utf16":{"start":{"line_number":133,"utf16_col":0},"end":{"line_number":134,"utf16_col":0}}},{"name":"COM17_AECWIN","kind":"macro","ident_start":5622,"ident_end":5634,"extent_start":5612,"extent_end":5679,"fully_qualified_name":"COM17_AECWIN","ident_utf16":{"start":{"line_number":134,"utf16_col":10},"end":{"line_number":134,"utf16_col":22}},"extent_utf16":{"start":{"line_number":134,"utf16_col":0},"end":{"line_number":135,"utf16_col":0}}},{"name":"COM17_CBAR","kind":"macro","ident_start":5689,"ident_end":5699,"extent_start":5679,"extent_end":5730,"fully_qualified_name":"COM17_CBAR","ident_utf16":{"start":{"line_number":135,"utf16_col":10},"end":{"line_number":135,"utf16_col":20}},"extent_utf16":{"start":{"line_number":135,"utf16_col":0},"end":{"line_number":137,"utf16_col":0}}},{"name":"REG_CMATRIX_BASE","kind":"macro","ident_start":6032,"ident_end":6048,"extent_start":6024,"extent_end":6054,"fully_qualified_name":"REG_CMATRIX_BASE","ident_utf16":{"start":{"line_number":146,"utf16_col":8},"end":{"line_number":146,"utf16_col":24}},"extent_utf16":{"start":{"line_number":146,"utf16_col":0},"end":{"line_number":147,"utf16_col":0}}},{"name":"CMATRIX_LEN","kind":"macro","ident_start":6064,"ident_end":6075,"extent_start":6054,"extent_end":6078,"fully_qualified_name":"CMATRIX_LEN","ident_utf16":{"start":{"line_number":147,"utf16_col":10},"end":{"line_number":147,"utf16_col":21}},"extent_utf16":{"start":{"line_number":147,"utf16_col":0},"end":{"line_number":148,"utf16_col":0}}},{"name":"REG_CMATRIX_SIGN","kind":"macro","ident_start":6086,"ident_end":6102,"extent_start":6078,"extent_end":6110,"fully_qualified_name":"REG_CMATRIX_SIGN","ident_utf16":{"start":{"line_number":148,"utf16_col":8},"end":{"line_number":148,"utf16_col":24}},"extent_utf16":{"start":{"line_number":148,"utf16_col":0},"end":{"line_number":151,"utf16_col":0}}},{"name":"REG_BRIGHT","kind":"macro","ident_start":6118,"ident_end":6128,"extent_start":6110,"extent_end":6151,"fully_qualified_name":"REG_BRIGHT","ident_utf16":{"start":{"line_number":151,"utf16_col":8},"end":{"line_number":151,"utf16_col":18}},"extent_utf16":{"start":{"line_number":151,"utf16_col":0},"end":{"line_number":152,"utf16_col":0}}},{"name":"REG_CONTRAS","kind":"macro","ident_start":6159,"ident_end":6170,"extent_start":6151,"extent_end":6200,"fully_qualified_name":"REG_CONTRAS","ident_utf16":{"start":{"line_number":152,"utf16_col":8},"end":{"line_number":152,"utf16_col":19}},"extent_utf16":{"start":{"line_number":152,"utf16_col":0},"end":{"line_number":154,"utf16_col":0}}},{"name":"REG_GFIX","kind":"macro","ident_start":6208,"ident_end":6216,"extent_start":6200,"extent_end":6246,"fully_qualified_name":"REG_GFIX","ident_utf16":{"start":{"line_number":154,"utf16_col":8},"end":{"line_number":154,"utf16_col":16}},"extent_utf16":{"start":{"line_number":154,"utf16_col":0},"end":{"line_number":156,"utf16_col":0}}},{"name":"REG_DBLV","kind":"macro","ident_start":6254,"ident_end":6262,"extent_start":6246,"extent_end":6299,"fully_qualified_name":"REG_DBLV","ident_utf16":{"start":{"line_number":156,"utf16_col":8},"end":{"line_number":156,"utf16_col":16}},"extent_utf16":{"start":{"line_number":156,"utf16_col":0},"end":{"line_number":157,"utf16_col":0}}},{"name":"DBLV_BYPASS","kind":"macro","ident_start":6309,"ident_end":6320,"extent_start":6299,"extent_end":6347,"fully_qualified_name":"DBLV_BYPASS","ident_utf16":{"start":{"line_number":157,"utf16_col":10},"end":{"line_number":157,"utf16_col":21}},"extent_utf16":{"start":{"line_number":157,"utf16_col":0},"end":{"line_number":158,"utf16_col":0}}},{"name":"DBLV_X4","kind":"macro","ident_start":6357,"ident_end":6364,"extent_start":6347,"extent_end":6389,"fully_qualified_name":"DBLV_X4","ident_utf16":{"start":{"line_number":158,"utf16_col":10},"end":{"line_number":158,"utf16_col":17}},"extent_utf16":{"start":{"line_number":158,"utf16_col":0},"end":{"line_number":159,"utf16_col":0}}},{"name":"DBLV_X6","kind":"macro","ident_start":6399,"ident_end":6406,"extent_start":6389,"extent_end":6431,"fully_qualified_name":"DBLV_X6","ident_utf16":{"start":{"line_number":159,"utf16_col":10},"end":{"line_number":159,"utf16_col":17}},"extent_utf16":{"start":{"line_number":159,"utf16_col":0},"end":{"line_number":160,"utf16_col":0}}},{"name":"DBLV_X8","kind":"macro","ident_start":6441,"ident_end":6448,"extent_start":6431,"extent_end":6474,"fully_qualified_name":"DBLV_X8","ident_utf16":{"start":{"line_number":160,"utf16_col":10},"end":{"line_number":160,"utf16_col":17}},"extent_utf16":{"start":{"line_number":160,"utf16_col":0},"end":{"line_number":162,"utf16_col":0}}},{"name":"REG_REG76","kind":"macro","ident_start":6482,"ident_end":6491,"extent_start":6474,"extent_end":6513,"fully_qualified_name":"REG_REG76","ident_utf16":{"start":{"line_number":162,"utf16_col":8},"end":{"line_number":162,"utf16_col":17}},"extent_utf16":{"start":{"line_number":162,"utf16_col":0},"end":{"line_number":163,"utf16_col":0}}},{"name":"R76_BLKPCOR","kind":"macro","ident_start":6523,"ident_end":6534,"extent_start":6513,"extent_end":6580,"fully_qualified_name":"R76_BLKPCOR","ident_utf16":{"start":{"line_number":163,"utf16_col":10},"end":{"line_number":163,"utf16_col":21}},"extent_utf16":{"start":{"line_number":163,"utf16_col":0},"end":{"line_number":164,"utf16_col":0}}},{"name":"R76_WHTPCOR","kind":"macro","ident_start":6590,"ident_end":6601,"extent_start":6580,"extent_end":6648,"fully_qualified_name":"R76_WHTPCOR","ident_utf16":{"start":{"line_number":164,"utf16_col":10},"end":{"line_number":164,"utf16_col":21}},"extent_utf16":{"start":{"line_number":164,"utf16_col":0},"end":{"line_number":166,"utf16_col":0}}},{"name":"REG_RGB444","kind":"macro","ident_start":6656,"ident_end":6666,"extent_start":6648,"extent_end":6694,"fully_qualified_name":"REG_RGB444","ident_utf16":{"start":{"line_number":166,"utf16_col":8},"end":{"line_number":166,"utf16_col":18}},"extent_utf16":{"start":{"line_number":166,"utf16_col":0},"end":{"line_number":167,"utf16_col":0}}},{"name":"R444_ENABLE","kind":"macro","ident_start":6704,"ident_end":6715,"extent_start":6694,"extent_end":6761,"fully_qualified_name":"R444_ENABLE","ident_utf16":{"start":{"line_number":167,"utf16_col":10},"end":{"line_number":167,"utf16_col":21}},"extent_utf16":{"start":{"line_number":167,"utf16_col":0},"end":{"line_number":168,"utf16_col":0}}},{"name":"R444_RGBX","kind":"macro","ident_start":6771,"ident_end":6780,"extent_start":6761,"extent_end":6817,"fully_qualified_name":"R444_RGBX","ident_utf16":{"start":{"line_number":168,"utf16_col":10},"end":{"line_number":168,"utf16_col":19}},"extent_utf16":{"start":{"line_number":168,"utf16_col":0},"end":{"line_number":170,"utf16_col":0}}},{"name":"REG_HAECC1","kind":"macro","ident_start":6825,"ident_end":6835,"extent_start":6817,"extent_end":6870,"fully_qualified_name":"REG_HAECC1","ident_utf16":{"start":{"line_number":170,"utf16_col":8},"end":{"line_number":170,"utf16_col":18}},"extent_utf16":{"start":{"line_number":170,"utf16_col":0},"end":{"line_number":171,"utf16_col":0}}},{"name":"REG_HAECC2","kind":"macro","ident_start":6878,"ident_end":6888,"extent_start":6870,"extent_end":6924,"fully_qualified_name":"REG_HAECC2","ident_utf16":{"start":{"line_number":171,"utf16_col":8},"end":{"line_number":171,"utf16_col":18}},"extent_utf16":{"start":{"line_number":171,"utf16_col":0},"end":{"line_number":173,"utf16_col":0}}},{"name":"REG_BD50MAX","kind":"macro","ident_start":6932,"ident_end":6943,"extent_start":6924,"extent_end":6979,"fully_qualified_name":"REG_BD50MAX","ident_utf16":{"start":{"line_number":173,"utf16_col":8},"end":{"line_number":173,"utf16_col":19}},"extent_utf16":{"start":{"line_number":173,"utf16_col":0},"end":{"line_number":174,"utf16_col":0}}},{"name":"REG_HAECC3","kind":"macro","ident_start":6987,"ident_end":6997,"extent_start":6979,"extent_end":7032,"fully_qualified_name":"REG_HAECC3","ident_utf16":{"start":{"line_number":174,"utf16_col":8},"end":{"line_number":174,"utf16_col":18}},"extent_utf16":{"start":{"line_number":174,"utf16_col":0},"end":{"line_number":175,"utf16_col":0}}},{"name":"REG_HAECC4","kind":"macro","ident_start":7040,"ident_end":7050,"extent_start":7032,"extent_end":7085,"fully_qualified_name":"REG_HAECC4","ident_utf16":{"start":{"line_number":175,"utf16_col":8},"end":{"line_number":175,"utf16_col":18}},"extent_utf16":{"start":{"line_number":175,"utf16_col":0},"end":{"line_number":176,"utf16_col":0}}},{"name":"REG_HAECC5","kind":"macro","ident_start":7093,"ident_end":7103,"extent_start":7085,"extent_end":7138,"fully_qualified_name":"REG_HAECC5","ident_utf16":{"start":{"line_number":176,"utf16_col":8},"end":{"line_number":176,"utf16_col":18}},"extent_utf16":{"start":{"line_number":176,"utf16_col":0},"end":{"line_number":177,"utf16_col":0}}},{"name":"REG_HAECC6","kind":"macro","ident_start":7146,"ident_end":7156,"extent_start":7138,"extent_end":7191,"fully_qualified_name":"REG_HAECC6","ident_utf16":{"start":{"line_number":177,"utf16_col":8},"end":{"line_number":177,"utf16_col":18}},"extent_utf16":{"start":{"line_number":177,"utf16_col":0},"end":{"line_number":178,"utf16_col":0}}},{"name":"REG_HAECC7","kind":"macro","ident_start":7199,"ident_end":7209,"extent_start":7191,"extent_end":7244,"fully_qualified_name":"REG_HAECC7","ident_utf16":{"start":{"line_number":178,"utf16_col":8},"end":{"line_number":178,"utf16_col":18}},"extent_utf16":{"start":{"line_number":178,"utf16_col":0},"end":{"line_number":179,"utf16_col":0}}},{"name":"REG_BD60MAX","kind":"macro","ident_start":7252,"ident_end":7263,"extent_start":7244,"extent_end":7300,"fully_qualified_name":"REG_BD60MAX","ident_utf16":{"start":{"line_number":179,"utf16_col":8},"end":{"line_number":179,"utf16_col":19}},"extent_utf16":{"start":{"line_number":179,"utf16_col":0},"end":{"line_number":181,"utf16_col":0}}},{"name":"ov7670_model","kind":"type","ident_start":7305,"ident_end":7317,"extent_start":7300,"extent_end":7355,"fully_qualified_name":"ov7670_model","ident_utf16":{"start":{"line_number":181,"utf16_col":5},"end":{"line_number":181,"utf16_col":17}},"extent_utf16":{"start":{"line_number":181,"utf16_col":0},"end":{"line_number":184,"utf16_col":1}}},{"name":"ov7670_win_size","kind":"class","ident_start":7365,"ident_end":7380,"extent_start":7358,"extent_end":7706,"fully_qualified_name":"ov7670_win_size","ident_utf16":{"start":{"line_number":186,"utf16_col":7},"end":{"line_number":186,"utf16_col":22}},"extent_utf16":{"start":{"line_number":186,"utf16_col":0},"end":{"line_number":195,"utf16_col":1}}},{"name":"ov7670_devtype","kind":"class","ident_start":7716,"ident_end":7730,"extent_start":7709,"extent_end":8010,"fully_qualified_name":"ov7670_devtype","ident_utf16":{"start":{"line_number":197,"utf16_col":7},"end":{"line_number":197,"utf16_col":21}},"extent_utf16":{"start":{"line_number":197,"utf16_col":0},"end":{"line_number":204,"utf16_col":1}}},{"name":"ov7670_info","kind":"class","ident_start":8125,"ident_end":8136,"extent_start":8118,"extent_end":8897,"fully_qualified_name":"ov7670_info","ident_utf16":{"start":{"line_number":210,"utf16_col":7},"end":{"line_number":210,"utf16_col":18}},"extent_utf16":{"start":{"line_number":210,"utf16_col":0},"end":{"line_number":237,"utf16_col":1}}},{"name":"to_state","kind":"function","ident_start":8934,"ident_end":8942,"extent_start":8934,"extent_end":8966,"fully_qualified_name":"to_state","ident_utf16":{"start":{"line_number":239,"utf16_col":34},"end":{"line_number":239,"utf16_col":42}},"extent_utf16":{"start":{"line_number":239,"utf16_col":34},"end":{"line_number":239,"utf16_col":66}}},{"name":"to_sd","kind":"function","ident_start":9056,"ident_end":9061,"extent_start":9056,"extent_end":9085,"fully_qualified_name":"to_sd","ident_utf16":{"start":{"line_number":244,"utf16_col":34},"end":{"line_number":244,"utf16_col":39}},"extent_utf16":{"start":{"line_number":244,"utf16_col":34},"end":{"line_number":244,"utf16_col":63}}},{"name":"regval_list","kind":"class","ident_start":9368,"ident_end":9379,"extent_start":9361,"extent_end":9429,"fully_qualified_name":"regval_list","ident_utf16":{"start":{"line_number":259,"utf16_col":7},"end":{"line_number":259,"utf16_col":18}},"extent_utf16":{"start":{"line_number":259,"utf16_col":0},"end":{"line_number":262,"utf16_col":1}}},{"name":"ov7670_read_smbus","kind":"function","ident_start":15911,"ident_end":15928,"extent_start":15911,"extent_end":15995,"fully_qualified_name":"ov7670_read_smbus","ident_utf16":{"start":{"line_number":458,"utf16_col":11},"end":{"line_number":458,"utf16_col":28}},"extent_utf16":{"start":{"line_number":458,"utf16_col":11},"end":{"line_number":459,"utf16_col":23}}},{"name":"ov7670_write_smbus","kind":"function","ident_start":16199,"ident_end":16217,"extent_start":16199,"extent_end":16283,"fully_qualified_name":"ov7670_write_smbus","ident_utf16":{"start":{"line_number":473,"utf16_col":11},"end":{"line_number":473,"utf16_col":29}},"extent_utf16":{"start":{"line_number":473,"utf16_col":11},"end":{"line_number":474,"utf16_col":22}}},{"name":"ov7670_read_i2c","kind":"function","ident_start":16576,"ident_end":16591,"extent_start":16576,"extent_end":16658,"fully_qualified_name":"ov7670_read_i2c","ident_utf16":{"start":{"line_number":487,"utf16_col":11},"end":{"line_number":487,"utf16_col":26}},"extent_utf16":{"start":{"line_number":487,"utf16_col":11},"end":{"line_number":488,"utf16_col":23}}},{"name":"ov7670_write_i2c","kind":"function","ident_start":17208,"ident_end":17224,"extent_start":17208,"extent_end":17290,"fully_qualified_name":"ov7670_write_i2c","ident_utf16":{"start":{"line_number":520,"utf16_col":11},"end":{"line_number":520,"utf16_col":27}},"extent_utf16":{"start":{"line_number":520,"utf16_col":11},"end":{"line_number":521,"utf16_col":22}}},{"name":"ov7670_read","kind":"function","ident_start":17680,"ident_end":17691,"extent_start":17680,"extent_end":17758,"fully_qualified_name":"ov7670_read","ident_utf16":{"start":{"line_number":540,"utf16_col":11},"end":{"line_number":540,"utf16_col":22}},"extent_utf16":{"start":{"line_number":540,"utf16_col":11},"end":{"line_number":541,"utf16_col":23}}},{"name":"ov7670_write","kind":"function","ident_start":17931,"ident_end":17943,"extent_start":17931,"extent_end":18009,"fully_qualified_name":"ov7670_write","ident_utf16":{"start":{"line_number":550,"utf16_col":11},"end":{"line_number":550,"utf16_col":23}},"extent_utf16":{"start":{"line_number":550,"utf16_col":11},"end":{"line_number":551,"utf16_col":22}}},{"name":"ov7670_write_array","kind":"function","ident_start":18254,"ident_end":18272,"extent_start":18254,"extent_end":18322,"fully_qualified_name":"ov7670_write_array","ident_utf16":{"start":{"line_number":563,"utf16_col":11},"end":{"line_number":563,"utf16_col":29}},"extent_utf16":{"start":{"line_number":563,"utf16_col":11},"end":{"line_number":563,"utf16_col":79}}},{"name":"ov7670_reset","kind":"function","ident_start":18553,"ident_end":18565,"extent_start":18553,"extent_end":18598,"fully_qualified_name":"ov7670_reset","ident_utf16":{"start":{"line_number":578,"utf16_col":11},"end":{"line_number":578,"utf16_col":23}},"extent_utf16":{"start":{"line_number":578,"utf16_col":11},"end":{"line_number":578,"utf16_col":56}}},{"name":"ov7670_init","kind":"function","ident_start":18680,"ident_end":18691,"extent_start":18680,"extent_end":18724,"fully_qualified_name":"ov7670_init","ident_utf16":{"start":{"line_number":586,"utf16_col":11},"end":{"line_number":586,"utf16_col":22}},"extent_utf16":{"start":{"line_number":586,"utf16_col":11},"end":{"line_number":586,"utf16_col":55}}},{"name":"ov7670_detect","kind":"function","ident_start":18796,"ident_end":18809,"extent_start":18796,"extent_end":18833,"fully_qualified_name":"ov7670_detect","ident_utf16":{"start":{"line_number":593,"utf16_col":11},"end":{"line_number":593,"utf16_col":24}},"extent_utf16":{"start":{"line_number":593,"utf16_col":11},"end":{"line_number":593,"utf16_col":48}}},{"name":"ov7670_format_struct","kind":"class","ident_start":19692,"ident_end":19712,"extent_start":19685,"extent_end":19820,"fully_qualified_name":"ov7670_format_struct","ident_utf16":{"start":{"line_number":633,"utf16_col":14},"end":{"line_number":633,"utf16_col":34}},"extent_utf16":{"start":{"line_number":633,"utf16_col":7},"end":{"line_number":638,"utf16_col":1}}},{"name":"v4l2_colorspace","kind":"type","ident_start":19737,"ident_end":19752,"extent_start":19732,"extent_end":19752,"fully_qualified_name":"ov7670_format_struct::v4l2_colorspace","ident_utf16":{"start":{"line_number":635,"utf16_col":6},"end":{"line_number":635,"utf16_col":21}},"extent_utf16":{"start":{"line_number":635,"utf16_col":1},"end":{"line_number":635,"utf16_col":21}}},{"name":"N_OV7670_FMTS","kind":"macro","ident_start":20502,"ident_end":20515,"extent_start":20494,"extent_end":20545,"fully_qualified_name":"N_OV7670_FMTS","ident_utf16":{"start":{"line_number":664,"utf16_col":8},"end":{"line_number":664,"utf16_col":21}},"extent_utf16":{"start":{"line_number":664,"utf16_col":0},"end":{"line_number":667,"utf16_col":0}}},{"name":"ov7675_get_framerate","kind":"function","ident_start":22726,"ident_end":22746,"extent_start":22726,"extent_end":22799,"fully_qualified_name":"ov7675_get_framerate","ident_utf16":{"start":{"line_number":761,"utf16_col":12},"end":{"line_number":761,"utf16_col":32}},"extent_utf16":{"start":{"line_number":761,"utf16_col":12},"end":{"line_number":762,"utf16_col":28}}},{"name":"ov7675_set_framerate","kind":"function","ident_start":23163,"ident_end":23183,"extent_start":23163,"extent_end":23236,"fully_qualified_name":"ov7675_set_framerate","ident_utf16":{"start":{"line_number":782,"utf16_col":11},"end":{"line_number":782,"utf16_col":31}},"extent_utf16":{"start":{"line_number":782,"utf16_col":11},"end":{"line_number":783,"utf16_col":28}}},{"name":"ov7670_get_framerate_legacy","kind":"function","ident_start":24453,"ident_end":24480,"extent_start":24453,"extent_end":24533,"fully_qualified_name":"ov7670_get_framerate_legacy","ident_utf16":{"start":{"line_number":838,"utf16_col":12},"end":{"line_number":838,"utf16_col":39}},"extent_utf16":{"start":{"line_number":838,"utf16_col":12},"end":{"line_number":839,"utf16_col":28}}},{"name":"ov7670_set_framerate_legacy","kind":"function","ident_start":24770,"ident_end":24797,"extent_start":24770,"extent_end":24850,"fully_qualified_name":"ov7670_set_framerate_legacy","ident_utf16":{"start":{"line_number":849,"utf16_col":11},"end":{"line_number":849,"utf16_col":38}},"extent_utf16":{"start":{"line_number":849,"utf16_col":11},"end":{"line_number":850,"utf16_col":28}}},{"name":"ov7670_set_hw","kind":"function","ident_start":25370,"ident_end":25383,"extent_start":25370,"extent_end":25455,"fully_qualified_name":"ov7670_set_hw","ident_utf16":{"start":{"line_number":872,"utf16_col":11},"end":{"line_number":872,"utf16_col":24}},"extent_utf16":{"start":{"line_number":872,"utf16_col":11},"end":{"line_number":873,"utf16_col":24}}},{"name":"ov7670_enum_mbus_code","kind":"function","ident_start":26313,"ident_end":26334,"extent_start":26313,"extent_end":26439,"fully_qualified_name":"ov7670_enum_mbus_code","ident_utf16":{"start":{"line_number":901,"utf16_col":11},"end":{"line_number":901,"utf16_col":32}},"extent_utf16":{"start":{"line_number":901,"utf16_col":11},"end":{"line_number":903,"utf16_col":42}}},{"name":"ov7670_try_fmt_internal","kind":"function","ident_start":26587,"ident_end":26610,"extent_start":26587,"extent_end":26747,"fully_qualified_name":"ov7670_try_fmt_internal","ident_utf16":{"start":{"line_number":912,"utf16_col":11},"end":{"line_number":912,"utf16_col":34}},"extent_utf16":{"start":{"line_number":912,"utf16_col":11},"end":{"line_number":915,"utf16_col":37}}},{"name":"ov7670_set_fmt","kind":"function","ident_start":28310,"ident_end":28324,"extent_start":28310,"extent_end":28423,"fully_qualified_name":"ov7670_set_fmt","ident_utf16":{"start":{"line_number":976,"utf16_col":11},"end":{"line_number":976,"utf16_col":25}},"extent_utf16":{"start":{"line_number":976,"utf16_col":11},"end":{"line_number":978,"utf16_col":36}}},{"name":"ov7670_g_parm","kind":"function","ident_start":30098,"ident_end":30111,"extent_start":30098,"extent_end":30166,"fully_qualified_name":"ov7670_g_parm","ident_utf16":{"start":{"line_number":1040,"utf16_col":11},"end":{"line_number":1040,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1040,"utf16_col":11},"end":{"line_number":1040,"utf16_col":79}}},{"name":"ov7670_s_parm","kind":"function","ident_start":30503,"ident_end":30516,"extent_start":30503,"extent_end":30571,"fully_qualified_name":"ov7670_s_parm","ident_utf16":{"start":{"line_number":1055,"utf16_col":11},"end":{"line_number":1055,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1055,"utf16_col":11},"end":{"line_number":1055,"utf16_col":79}}},{"name":"ov7670_enum_frame_interval","kind":"function","ident_start":31169,"ident_end":31195,"extent_start":31169,"extent_end":31320,"fully_qualified_name":"ov7670_enum_frame_interval","ident_utf16":{"start":{"line_number":1078,"utf16_col":11},"end":{"line_number":1078,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1078,"utf16_col":11},"end":{"line_number":1080,"utf16_col":54}}},{"name":"ov7670_enum_frame_size","kind":"function","ident_start":32194,"ident_end":32216,"extent_start":32194,"extent_end":32329,"fully_qualified_name":"ov7670_enum_frame_size","ident_utf16":{"start":{"line_number":1117,"utf16_col":11},"end":{"line_number":1117,"utf16_col":33}},"extent_utf16":{"start":{"line_number":1117,"utf16_col":11},"end":{"line_number":1119,"utf16_col":46}}},{"name":"ov7670_store_cmatrix","kind":"function","ident_start":33098,"ident_end":33118,"extent_start":33098,"extent_end":33169,"fully_qualified_name":"ov7670_store_cmatrix","ident_utf16":{"start":{"line_number":1154,"utf16_col":11},"end":{"line_number":1154,"utf16_col":31}},"extent_utf16":{"start":{"line_number":1154,"utf16_col":11},"end":{"line_number":1155,"utf16_col":26}}},{"name":"SIN_STEP","kind":"macro","ident_start":34204,"ident_end":34212,"extent_start":34196,"extent_end":34215,"fully_qualified_name":"SIN_STEP","ident_utf16":{"start":{"line_number":1199,"utf16_col":8},"end":{"line_number":1199,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1199,"utf16_col":0},"end":{"line_number":1200,"utf16_col":0}}},{"name":"ov7670_sine","kind":"function","ident_start":34396,"ident_end":34407,"extent_start":34396,"extent_end":34418,"fully_qualified_name":"ov7670_sine","ident_utf16":{"start":{"line_number":1207,"utf16_col":11},"end":{"line_number":1207,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1207,"utf16_col":11},"end":{"line_number":1207,"utf16_col":33}}},{"name":"ov7670_cosine","kind":"function","ident_start":34667,"ident_end":34680,"extent_start":34667,"extent_end":34691,"fully_qualified_name":"ov7670_cosine","ident_utf16":{"start":{"line_number":1225,"utf16_col":11},"end":{"line_number":1225,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1225,"utf16_col":11},"end":{"line_number":1225,"utf16_col":35}}},{"name":"ov7670_calc_cmatrix","kind":"function","ident_start":34835,"ident_end":34854,"extent_start":34835,"extent_end":34925,"fully_qualified_name":"ov7670_calc_cmatrix","ident_utf16":{"start":{"line_number":1238,"utf16_col":12},"end":{"line_number":1238,"utf16_col":31}},"extent_utf16":{"start":{"line_number":1238,"utf16_col":12},"end":{"line_number":1239,"utf16_col":44}}},{"name":"ov7670_s_sat_hue","kind":"function","ident_start":35661,"ident_end":35677,"extent_start":35661,"extent_end":35719,"fully_qualified_name":"ov7670_s_sat_hue","ident_utf16":{"start":{"line_number":1268,"utf16_col":11},"end":{"line_number":1268,"utf16_col":27}},"extent_utf16":{"start":{"line_number":1268,"utf16_col":11},"end":{"line_number":1268,"utf16_col":69}}},{"name":"ov7670_abs_to_sm","kind":"function","ident_start":36007,"ident_end":36023,"extent_start":36007,"extent_end":36040,"fully_qualified_name":"ov7670_abs_to_sm","ident_utf16":{"start":{"line_number":1284,"utf16_col":21},"end":{"line_number":1284,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1284,"utf16_col":21},"end":{"line_number":1284,"utf16_col":54}}},{"name":"ov7670_s_brightness","kind":"function","ident_start":36116,"ident_end":36135,"extent_start":36116,"extent_end":36170,"fully_qualified_name":"ov7670_s_brightness","ident_utf16":{"start":{"line_number":1291,"utf16_col":11},"end":{"line_number":1291,"utf16_col":30}},"extent_utf16":{"start":{"line_number":1291,"utf16_col":11},"end":{"line_number":1291,"utf16_col":65}}},{"name":"ov7670_s_contrast","kind":"function","ident_start":36399,"ident_end":36416,"extent_start":36399,"extent_end":36451,"fully_qualified_name":"ov7670_s_contrast","ident_utf16":{"start":{"line_number":1304,"utf16_col":11},"end":{"line_number":1304,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1304,"utf16_col":11},"end":{"line_number":1304,"utf16_col":63}}},{"name":"ov7670_s_hflip","kind":"function","ident_start":36530,"ident_end":36544,"extent_start":36530,"extent_end":36579,"fully_qualified_name":"ov7670_s_hflip","ident_utf16":{"start":{"line_number":1309,"utf16_col":11},"end":{"line_number":1309,"utf16_col":25}},"extent_utf16":{"start":{"line_number":1309,"utf16_col":11},"end":{"line_number":1309,"utf16_col":60}}},{"name":"ov7670_s_vflip","kind":"function","ident_start":36804,"ident_end":36818,"extent_start":36804,"extent_end":36853,"fully_qualified_name":"ov7670_s_vflip","ident_utf16":{"start":{"line_number":1324,"utf16_col":11},"end":{"line_number":1324,"utf16_col":25}},"extent_utf16":{"start":{"line_number":1324,"utf16_col":11},"end":{"line_number":1324,"utf16_col":60}}},{"name":"ov7670_g_gain","kind":"function","ident_start":37342,"ident_end":37355,"extent_start":37342,"extent_end":37393,"fully_qualified_name":"ov7670_g_gain","ident_utf16":{"start":{"line_number":1345,"utf16_col":11},"end":{"line_number":1345,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1345,"utf16_col":11},"end":{"line_number":1345,"utf16_col":62}}},{"name":"ov7670_s_gain","kind":"function","ident_start":37512,"ident_end":37525,"extent_start":37512,"extent_end":37560,"fully_qualified_name":"ov7670_s_gain","ident_utf16":{"start":{"line_number":1355,"utf16_col":11},"end":{"line_number":1355,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1355,"utf16_col":11},"end":{"line_number":1355,"utf16_col":59}}},{"name":"ov7670_s_autogain","kind":"function","ident_start":37849,"ident_end":37866,"extent_start":37849,"extent_end":37901,"fully_qualified_name":"ov7670_s_autogain","ident_utf16":{"start":{"line_number":1372,"utf16_col":11},"end":{"line_number":1372,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1372,"utf16_col":11},"end":{"line_number":1372,"utf16_col":63}}},{"name":"ov7670_s_exp","kind":"function","ident_start":38129,"ident_end":38141,"extent_start":38129,"extent_end":38176,"fully_qualified_name":"ov7670_s_exp","ident_utf16":{"start":{"line_number":1388,"utf16_col":11},"end":{"line_number":1388,"utf16_col":23}},"extent_utf16":{"start":{"line_number":1388,"utf16_col":11},"end":{"line_number":1388,"utf16_col":58}}},{"name":"ov7670_s_autoexp","kind":"function","ident_start":38770,"ident_end":38786,"extent_start":38770,"extent_end":38848,"fully_qualified_name":"ov7670_s_autoexp","ident_utf16":{"start":{"line_number":1414,"utf16_col":11},"end":{"line_number":1414,"utf16_col":27}},"extent_utf16":{"start":{"line_number":1414,"utf16_col":11},"end":{"line_number":1415,"utf16_col":37}}},{"name":"v4l2_exposure_auto_type","kind":"type","ident_start":38818,"ident_end":38841,"extent_start":38813,"extent_end":38841,"fully_qualified_name":"v4l2_exposure_auto_type","ident_utf16":{"start":{"line_number":1415,"utf16_col":7},"end":{"line_number":1415,"utf16_col":30}},"extent_utf16":{"start":{"line_number":1415,"utf16_col":2},"end":{"line_number":1415,"utf16_col":30}}},{"name":"ov7670_g_volatile_ctrl","kind":"function","ident_start":39099,"ident_end":39121,"extent_start":39099,"extent_end":39145,"fully_qualified_name":"ov7670_g_volatile_ctrl","ident_utf16":{"start":{"line_number":1432,"utf16_col":11},"end":{"line_number":1432,"utf16_col":33}},"extent_utf16":{"start":{"line_number":1432,"utf16_col":11},"end":{"line_number":1432,"utf16_col":57}}},{"name":"ov7670_s_ctrl","kind":"function","ident_start":39356,"ident_end":39369,"extent_start":39356,"extent_end":39393,"fully_qualified_name":"ov7670_s_ctrl","ident_utf16":{"start":{"line_number":1444,"utf16_col":11},"end":{"line_number":1444,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1444,"utf16_col":11},"end":{"line_number":1444,"utf16_col":48}}},{"name":"ov7670_g_register","kind":"function","ident_start":40611,"ident_end":40628,"extent_start":40611,"extent_end":40683,"fully_qualified_name":"ov7670_g_register","ident_utf16":{"start":{"line_number":1487,"utf16_col":11},"end":{"line_number":1487,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1487,"utf16_col":11},"end":{"line_number":1487,"utf16_col":83}}},{"name":"ov7670_s_register","kind":"function","ident_start":40828,"ident_end":40845,"extent_start":40828,"extent_end":40906,"fully_qualified_name":"ov7670_s_register","ident_utf16":{"start":{"line_number":1498,"utf16_col":11},"end":{"line_number":1498,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1498,"utf16_col":11},"end":{"line_number":1498,"utf16_col":89}}},{"name":"ov7670_probe","kind":"function","ident_start":42298,"ident_end":42310,"extent_start":42298,"extent_end":42372,"fully_qualified_name":"ov7670_probe","ident_utf16":{"start":{"line_number":1551,"utf16_col":11},"end":{"line_number":1551,"utf16_col":23}},"extent_utf16":{"start":{"line_number":1551,"utf16_col":11},"end":{"line_number":1552,"utf16_col":34}}},{"name":"ov7670_remove","kind":"function","ident_start":45533,"ident_end":45546,"extent_start":45533,"extent_end":45573,"fully_qualified_name":"ov7670_remove","ident_utf16":{"start":{"line_number":1657,"utf16_col":11},"end":{"line_number":1657,"utf16_col":24}},"extent_utf16":{"start":{"line_number":1657,"utf16_col":11},"end":{"line_number":1657,"utf16_col":51}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/xillybus/xillinux-kernel/branches":{"post":"wMnbCw5HIsRFLf2_bFFTUiWPgzlDvDlRUgIQVh45uarJy18YqP_WSOEMmpLr5HOeE0SRg6nMFzBmzCINd2jU5g"},"/repos/preferences":{"post":"BDnLI4iazOE3_jc-zdA9x3RQTU1MCBA162hWwxgOl79BUgineXopHJr-ehvz8iSlw_raFxIwR-UAc5EUVBDi-Q"}}},"title":"xillinux-kernel/drivers/media/i2c/ov7670.c at master · xillybus/xillinux-kernel","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-1583894afd38.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-3a63a487027b.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"copilot_conversational_ux_embedding_update":false,"copilot_smell_icebreaker_ux":true,"copilot_workspace":false}}}</script> <div data-target="react-app.reactRoot"><style data-styled="true" data-styled-version="5.3.6">.jUriTl{font-weight:600;font-size:32px;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;}/*!sc*/ .cgQnMS{font-weight:600;font-size:32px;margin:0;}/*!sc*/ .diwsLq{font-weight:600;font-size:32px;margin:0;font-weight:600;display:inline-block;max-width:100%;font-size:16px;}/*!sc*/ .jAEDJk{font-weight:600;font-size:32px;margin:0;font-weight:600;display:inline-block;max-width:100%;font-size:14px;}/*!sc*/ data-styled.g1[id="Heading__StyledHeading-sc-1c1dgg0-0"]{content:"jUriTl,cgQnMS,diwsLq,jAEDJk,"}/*!sc*/ .fSWWem{padding:0;}/*!sc*/ .kPPmzM{max-width:100%;margin-left:auto;margin-right:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ .cIAPDV{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 100%;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;}/*!sc*/ .gvCnwW{width:100%;}/*!sc*/ @media screen and (min-width:544px){.gvCnwW{width:100%;}}/*!sc*/ @media screen and (min-width:768px){.gvCnwW{width:auto;}}/*!sc*/ .esrURn{display:none;-webkit-order:1;-ms-flex-order:1;order:1;width:100%;margin-left:0;margin-right:0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-bottom:0;min-width:0;}/*!sc*/ @media screen and (min-width:544px){.esrURn{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/ @media screen and (min-width:768px){.esrURn{width:auto;margin-top:0 !important;margin-bottom:0 !important;position:-webkit-sticky;position:sticky;top:0px;max-height:var(--sticky-pane-height);-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-right:0;}}/*!sc*/ @media screen and (min-width:769px){.esrURn{height:100vh;max-height:100vh !important;}}/*!sc*/ @media print,screen and (max-width:1011px) and (min-width:768px){.esrURn{display:none;}}/*!sc*/ .eUyHuk{margin-left:0;margin-right:0;display:none;margin-top:0;}/*!sc*/ @media screen and (min-width:768px){.eUyHuk{margin-left:0 !important;margin-right:0 !important;}}/*!sc*/ .gNdDUH{--pane-min-width:256px;--pane-max-width-diff:511px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));width:100%;padding:0;}/*!sc*/ @media screen and (min-width:544px){}/*!sc*/ @media screen and (min-width:768px){.gNdDUH{width:clamp(var(--pane-min-width),var(--pane-width),var(--pane-max-width));overflow:auto;}}/*!sc*/ @media screen and (min-width:1280px){.gNdDUH{--pane-max-width-diff:959px;}}/*!sc*/ .hAeDYA{height:100%;position:relative;display:none;margin-left:0;}/*!sc*/ .fjdBNx{position:absolute;inset:0 -2px;cursor:col-resize;background-color:transparent;-webkit-transition-delay:0.1s;transition-delay:0.1s;}/*!sc*/ .fjdBNx:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/ .emFMJu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-order:2;-ms-flex-order:2;order:2;-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;min-width:1px;margin-right:auto;}/*!sc*/ @media print{.emFMJu{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;}}/*!sc*/ .hlUAHL{width:100%;max-width:100%;margin-left:auto;margin-right:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0;}/*!sc*/ .iStsmI{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*/ .eIgvIk{display:inherit;}/*!sc*/ .eVFfWF{width:100%;}/*!sc*/ .fywjmm{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*/ .dyczTK{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*/ .cpXcux{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*/ .iPEkxH{display:block;margin-right:8px;}/*!sc*/ @media screen and (min-width:1360px){.iPEkxH{display:block;}}/*!sc*/ .kkrdEu{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .trpoQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;pointer-events:none;}/*!sc*/ .bKgizp{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/ .iPGYsi{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dKmYfk{font-size:14px;min-width:0;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .ehCeGn{-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*/ .eTvGbF{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*/ .kzRgrI{max-width:100%;}/*!sc*/ .cmAPIB{max-width:100%;list-style:none;display:inline-block;}/*!sc*/ .jwXCBK{display:inline-block;max-width:100%;}/*!sc*/ .gtBUEp{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*/ .kfYOBR{margin-left:4px;margin-right:4px;}/*!sc*/ .hVZtwF{margin-left:16px;margin-right:16px;}/*!sc*/ .cMYnca{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ .brJRqk{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){.brJRqk{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .iJmJly{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}/*!sc*/ .jACbi{width:100%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;min-width:0;margin-right:0;}/*!sc*/ .gIJuDf{height:40px;padding-left:4px;padding-bottom:16px;}/*!sc*/ .fleZSW{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .BnySK{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*/ .VHzRk{top:0px;z-index:4;background:var(--bgColor-default,var(--color-canvas-default));position:-webkit-sticky;position:sticky;}/*!sc*/ .ePiodO{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*/ .kQJlnf{display:none;min-width:0;padding-top:8px;padding-bottom:8px;}/*!sc*/ .nSWSp{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*/ .lhFvfi{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*/ .doiYd{margin-left:4px;margin-right:8px;}/*!sc*/ .jKPiSV{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .iZJewz{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*/ .jfjHXm{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*/ .bfkNRF{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*/ .fXBLEV{display:block;position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-top:-1px;margin-bottom:-1px;--separator-color:transparent;}/*!sc*/ .fXBLEV:not(:last-child){margin-right:1px;}/*!sc*/ .fXBLEV:not(:last-child):after{background-color:var(--separator-color);content:"";position:absolute;right:-2px;top:8px;bottom:8px;width:1px;}/*!sc*/ .fXBLEV:focus-within:has(:focus-visible){--separator-color:transparent;}/*!sc*/ .fXBLEV:first-child{margin-left:-1px;}/*!sc*/ .fXBLEV:last-child{margin-right:-1px;}/*!sc*/ .gMPsNT{display:block;position:relative;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-top:-1px;margin-bottom:-1px;--separator-color:var(--borderColor-default,var(--color-border-default,#d0d7de));}/*!sc*/ .gMPsNT:not(:last-child){margin-right:1px;}/*!sc*/ .gMPsNT:not(:last-child):after{background-color:var(--separator-color);content:"";position:absolute;right:-2px;top:8px;bottom:8px;width:1px;}/*!sc*/ .gMPsNT:focus-within:has(:focus-visible){--separator-color:transparent;}/*!sc*/ .gMPsNT:first-child{margin-left:-1px;}/*!sc*/ .gMPsNT:last-child{margin-right:-1px;}/*!sc*/ .iBylDf{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*/ .kSGBPx{gap:8px;}/*!sc*/ .ytOJl{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*/ .jWnGGx{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*/ .TCenl{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*/ .cluMzC{position:relative;}/*!sc*/ .eRkHwF{-webkit-flex:1;-ms-flex:1;flex:1;position:relative;min-width:0;}/*!sc*/ .knCTAx{tab-size:8;isolation:isolate;position:relative;overflow:auto;max-width:unset;}/*!sc*/ .hXUKEK{margin:1px 8px;position:absolute;z-index:1;}/*!sc*/ .cXzIIR{position:absolute;}/*!sc*/ .diCurC{-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*/ .aZrVR{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*/ .aZrVR:hover{-webkit-transform:scaleX(1.5);-ms-transform:scaleX(1.5);transform:scaleX(1.5);}/*!sc*/ data-styled.g2[id="Box-sc-g0xbh4-0"]{content:"fSWWem,kPPmzM,cIAPDV,gvCnwW,esrURn,eUyHuk,gNdDUH,hAeDYA,fjdBNx,emFMJu,hlUAHL,iStsmI,eIgvIk,eVFfWF,fywjmm,dyczTK,cpXcux,iPEkxH,kkrdEu,trpoQ,bKgizp,iPGYsi,dKmYfk,ehCeGn,eTvGbF,kzRgrI,cmAPIB,jwXCBK,gtBUEp,kfYOBR,hVZtwF,cMYnca,brJRqk,iJmJly,jACbi,gIJuDf,fleZSW,BnySK,VHzRk,ePiodO,kQJlnf,nSWSp,lhFvfi,doiYd,jKPiSV,iZJewz,jfjHXm,bfkNRF,fXBLEV,gMPsNT,iBylDf,kSGBPx,ytOJl,jWnGGx,TCenl,cluMzC,eRkHwF,knCTAx,hXUKEK,cXzIIR,diCurC,aZrVR,"}/*!sc*/ .blmaBs{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .blmaBs:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .blmaBs:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .blmaBs:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .blmaBs[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .blmaBs[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .blmaBs:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .blmaBs:active{-webkit-transition:none;transition:none;}/*!sc*/ .blmaBs[data-inactive]{cursor:auto;}/*!sc*/ .blmaBs:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .blmaBs:disabled [data-component=ButtonCounter],.blmaBs:disabled [data-component="leadingVisual"],.blmaBs:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.blmaBs:focus{outline:solid 1px transparent;}}/*!sc*/ .blmaBs [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .blmaBs[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .blmaBs[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .blmaBs[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .blmaBs[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .blmaBs[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .blmaBs[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .blmaBs[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .blmaBs[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .blmaBs[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .blmaBs[data-block="block"]{width:100%;}/*!sc*/ .blmaBs[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .blmaBs[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .blmaBs [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .blmaBs [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .blmaBs [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .blmaBs [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .blmaBs [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .blmaBs [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .blmaBs:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .blmaBs:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .blmaBs[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .blmaBs[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .blmaBs[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .blmaBs:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .blmaBs:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .blmaBs:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .blmaBs{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:8px;padding-right:8px;display:none;}/*!sc*/ @media screen and (max-width:768px){.blmaBs{display:block;}}/*!sc*/ .hkJzmn{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .hkJzmn:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hkJzmn:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hkJzmn:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hkJzmn[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .hkJzmn[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .hkJzmn:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .hkJzmn:active{-webkit-transition:none;transition:none;}/*!sc*/ .hkJzmn[data-inactive]{cursor:auto;}/*!sc*/ .hkJzmn:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .hkJzmn:disabled [data-component=ButtonCounter],.hkJzmn:disabled [data-component="leadingVisual"],.hkJzmn:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.hkJzmn:focus{outline:solid 1px transparent;}}/*!sc*/ .hkJzmn [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hkJzmn[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .hkJzmn[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .hkJzmn[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .hkJzmn[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hkJzmn[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .hkJzmn[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .hkJzmn[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .hkJzmn[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hkJzmn[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .hkJzmn[data-block="block"]{width:100%;}/*!sc*/ .hkJzmn[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .hkJzmn[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .hkJzmn [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hkJzmn [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .hkJzmn [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .hkJzmn [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hkJzmn [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .hkJzmn [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hkJzmn:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .hkJzmn:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .hkJzmn[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .hkJzmn[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hkJzmn[data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));height:32px;position:relative;}/*!sc*/ @media screen and (max-width:768px){.hkJzmn[data-no-visuals]{display:none;}}/*!sc*/ .hkJzmn:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .hkJzmn:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .hkJzmn:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .hILMMl{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .hILMMl:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hILMMl:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hILMMl:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hILMMl[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .hILMMl[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .hILMMl:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .hILMMl:active{-webkit-transition:none;transition:none;}/*!sc*/ .hILMMl[data-inactive]{cursor:auto;}/*!sc*/ .hILMMl:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .hILMMl:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.hILMMl:focus{outline:solid 1px transparent;}}/*!sc*/ .hILMMl [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .hILMMl[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .hILMMl[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .hILMMl[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .hILMMl[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hILMMl[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .hILMMl[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .hILMMl[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .hILMMl[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hILMMl[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .hILMMl[data-block="block"]{width:100%;}/*!sc*/ .hILMMl[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .hILMMl[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .hILMMl [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .hILMMl [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .hILMMl [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .hILMMl [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .hILMMl [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .hILMMl [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hILMMl:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .hILMMl:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hILMMl[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hILMMl [data-component="leadingVisual"],.hILMMl [data-component="trailingVisual"],.hILMMl [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .hILMMl[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hILMMl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ .hILMMl svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hILMMl > span{width:inherit;}/*!sc*/ .ivbpoP{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .ivbpoP:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .ivbpoP:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .ivbpoP:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .ivbpoP[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .ivbpoP[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .ivbpoP:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .ivbpoP:active{-webkit-transition:none;transition:none;}/*!sc*/ .ivbpoP[data-inactive]{cursor:auto;}/*!sc*/ .ivbpoP:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .ivbpoP:disabled [data-component=ButtonCounter],.ivbpoP:disabled [data-component="leadingVisual"],.ivbpoP:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.ivbpoP:focus{outline:solid 1px transparent;}}/*!sc*/ .ivbpoP [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .ivbpoP[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .ivbpoP[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .ivbpoP[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .ivbpoP[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .ivbpoP[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .ivbpoP[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .ivbpoP[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .ivbpoP[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .ivbpoP[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .ivbpoP[data-block="block"]{width:100%;}/*!sc*/ .ivbpoP[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .ivbpoP[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .ivbpoP [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ivbpoP [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .ivbpoP [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .ivbpoP [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ivbpoP [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .ivbpoP [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .ivbpoP:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .ivbpoP:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .ivbpoP[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .ivbpoP[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ivbpoP[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .ivbpoP:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .ivbpoP:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .ivbpoP:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .ivbpoP[data-size="small"][data-no-visuals]{margin-left:8px;}/*!sc*/ .hviaoI{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .hviaoI:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hviaoI:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .hviaoI:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .hviaoI[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .hviaoI[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .hviaoI:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .hviaoI:active{-webkit-transition:none;transition:none;}/*!sc*/ .hviaoI[data-inactive]{cursor:auto;}/*!sc*/ .hviaoI:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .hviaoI:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.hviaoI:focus{outline:solid 1px transparent;}}/*!sc*/ .hviaoI [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .hviaoI[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .hviaoI[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .hviaoI[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .hviaoI[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .hviaoI[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .hviaoI[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .hviaoI[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .hviaoI[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hviaoI[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .hviaoI[data-block="block"]{width:100%;}/*!sc*/ .hviaoI[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .hviaoI[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .hviaoI [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .hviaoI [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .hviaoI [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .hviaoI [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .hviaoI [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .hviaoI [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .hviaoI:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .hviaoI:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hviaoI[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .hviaoI [data-component="leadingVisual"],.hviaoI [data-component="trailingVisual"],.hviaoI [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .hviaoI[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .hviaoI[data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;display:none;}/*!sc*/ .jXTShb{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .jXTShb:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jXTShb:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .jXTShb:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .jXTShb[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .jXTShb[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .jXTShb:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .jXTShb:active{-webkit-transition:none;transition:none;}/*!sc*/ .jXTShb[data-inactive]{cursor:auto;}/*!sc*/ .jXTShb:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .jXTShb:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.jXTShb:focus{outline:solid 1px transparent;}}/*!sc*/ .jXTShb [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .jXTShb[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .jXTShb[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .jXTShb[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .jXTShb[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .jXTShb[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .jXTShb[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .jXTShb[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .jXTShb[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jXTShb[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .jXTShb[data-block="block"]{width:100%;}/*!sc*/ .jXTShb[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .jXTShb[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .jXTShb [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .jXTShb [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .jXTShb [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .jXTShb [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .jXTShb [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .jXTShb [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .jXTShb:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .jXTShb:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .jXTShb[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .jXTShb [data-component="leadingVisual"],.jXTShb [data-component="trailingVisual"],.jXTShb [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .jXTShb[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jXTShb[data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dOnKJi{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .dOnKJi:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dOnKJi:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .dOnKJi:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dOnKJi[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .dOnKJi[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dOnKJi:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .dOnKJi:active{-webkit-transition:none;transition:none;}/*!sc*/ .dOnKJi[data-inactive]{cursor:auto;}/*!sc*/ .dOnKJi:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .dOnKJi:disabled [data-component=ButtonCounter],.dOnKJi:disabled [data-component="leadingVisual"],.dOnKJi:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.dOnKJi:focus{outline:solid 1px transparent;}}/*!sc*/ .dOnKJi [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .dOnKJi[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .dOnKJi[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .dOnKJi[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .dOnKJi[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .dOnKJi[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .dOnKJi[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .dOnKJi[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .dOnKJi[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dOnKJi[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .dOnKJi[data-block="block"]{width:100%;}/*!sc*/ .dOnKJi[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .dOnKJi[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .dOnKJi [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dOnKJi [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .dOnKJi [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .dOnKJi [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dOnKJi [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .dOnKJi [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dOnKJi:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .dOnKJi:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .dOnKJi[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .dOnKJi[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dOnKJi[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .dOnKJi:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .dOnKJi:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .dOnKJi:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .gfKkfV{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .gfKkfV:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gfKkfV:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .gfKkfV:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .gfKkfV[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .gfKkfV[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .gfKkfV:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .gfKkfV:active{-webkit-transition:none;transition:none;}/*!sc*/ .gfKkfV[data-inactive]{cursor:auto;}/*!sc*/ .gfKkfV:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .gfKkfV:disabled [data-component=ButtonCounter],.gfKkfV:disabled [data-component="leadingVisual"],.gfKkfV:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.gfKkfV:focus{outline:solid 1px transparent;}}/*!sc*/ .gfKkfV [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .gfKkfV[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .gfKkfV[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;color:var(--fgColor-default,var(--color-fg-default,#1F2328));margin-left:8px;}/*!sc*/ .gfKkfV[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .gfKkfV[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .gfKkfV[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .gfKkfV[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .gfKkfV[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .gfKkfV[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gfKkfV[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .gfKkfV[data-block="block"]{width:100%;}/*!sc*/ .gfKkfV[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .gfKkfV[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .gfKkfV [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gfKkfV [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .gfKkfV [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .gfKkfV [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gfKkfV [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .gfKkfV [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .gfKkfV:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .gfKkfV:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .gfKkfV[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .gfKkfV[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gfKkfV[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .gfKkfV:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .gfKkfV:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .gfKkfV:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .dTgfec{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));padding-left:8px;padding-right:8px;}/*!sc*/ .dTgfec:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dTgfec:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .dTgfec:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dTgfec[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .dTgfec[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dTgfec:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .dTgfec:active{-webkit-transition:none;transition:none;}/*!sc*/ .dTgfec[data-inactive]{cursor:auto;}/*!sc*/ .dTgfec:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .dTgfec:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.dTgfec:focus{outline:solid 1px transparent;}}/*!sc*/ .dTgfec [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .dTgfec[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .dTgfec[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .dTgfec[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .dTgfec[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .dTgfec[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .dTgfec[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .dTgfec[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .dTgfec[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dTgfec[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .dTgfec[data-block="block"]{width:100%;}/*!sc*/ .dTgfec[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .dTgfec[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .dTgfec [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .dTgfec [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .dTgfec [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .dTgfec [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .dTgfec [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .dTgfec [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dTgfec:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .dTgfec:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .dTgfec[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .dTgfec [data-component="leadingVisual"],.dTgfec [data-component="trailingVisual"],.dTgfec [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .dTgfec[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dTgfec linkButtonSx:hover:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dTgfec linkButtonSx:focus:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dTgfec linkButtonSx:active:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .pyyxt{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .pyyxt:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .pyyxt:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .pyyxt:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .pyyxt[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .pyyxt[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .pyyxt:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .pyyxt:active{-webkit-transition:none;transition:none;}/*!sc*/ .pyyxt[data-inactive]{cursor:auto;}/*!sc*/ .pyyxt:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .pyyxt:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.pyyxt:focus{outline:solid 1px transparent;}}/*!sc*/ .pyyxt [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .pyyxt[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .pyyxt[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .pyyxt[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .pyyxt[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .pyyxt[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .pyyxt[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .pyyxt[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .pyyxt[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .pyyxt[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .pyyxt[data-block="block"]{width:100%;}/*!sc*/ .pyyxt[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .pyyxt[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .pyyxt [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .pyyxt [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .pyyxt [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .pyyxt [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .pyyxt [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .pyyxt [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .pyyxt:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .pyyxt:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .pyyxt[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .pyyxt [data-component="leadingVisual"],.pyyxt [data-component="trailingVisual"],.pyyxt [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .pyyxt[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .fmvlPZ{border-radius:6px;border:1px solid;border-color:var(--button-default-borderColor-rest,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:var(--button-default-bgColor-rest,var(--color-btn-bg,#f6f8fa));box-shadow:var(--button-default-shadow-resting,var(--color-btn-shadow,0 1px 0 rgba(31,35,40,0.04))),var(--button-default-shadow-inset,var(--color-btn-inset-shadow,inset 0 1px 0 rgba(255,255,255,0.25)));}/*!sc*/ .fmvlPZ:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .fmvlPZ:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .fmvlPZ:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .fmvlPZ[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .fmvlPZ[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .fmvlPZ:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .fmvlPZ:active{-webkit-transition:none;transition:none;}/*!sc*/ .fmvlPZ[data-inactive]{cursor:auto;}/*!sc*/ .fmvlPZ:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));border-color:var(--button-default-borderColor-disabled,var(--button-default-borderColor-rest,var(--color-btn-border,rgba(31,35,40,0.15))));background-color:var(--button-default-bgColor-disabled,var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2))));}/*!sc*/ .fmvlPZ:disabled [data-component=ButtonCounter]{color:inherit;}/*!sc*/ @media (forced-colors:active){.fmvlPZ:focus{outline:solid 1px transparent;}}/*!sc*/ .fmvlPZ [data-component=ButtonCounter]{font-size:12px;background-color:var(--buttonCounter-default-bgColor-rest,var(--color-btn-counter-bg,rgba(31,35,40,0.08)));}/*!sc*/ .fmvlPZ[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .fmvlPZ[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .fmvlPZ[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .fmvlPZ[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .fmvlPZ[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .fmvlPZ[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .fmvlPZ[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .fmvlPZ[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .fmvlPZ[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .fmvlPZ[data-block="block"]{width:100%;}/*!sc*/ .fmvlPZ[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .fmvlPZ[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .fmvlPZ [data-component="leadingVisual"]{grid-area:leadingVisual;}/*!sc*/ .fmvlPZ [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .fmvlPZ [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .fmvlPZ [data-component="trailingAction"]{margin-right:-4px;}/*!sc*/ .fmvlPZ [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .fmvlPZ [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .fmvlPZ:hover:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-hover,var(--color-btn-hover-bg,#f3f4f6));border-color:var(--button-default-borderColor-hover,var(--button-default-borderColor-hover,var(--color-btn-hover-border,rgba(31,35,40,0.15))));}/*!sc*/ .fmvlPZ:active:not([disabled]):not([data-inactive]){background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .fmvlPZ[aria-expanded=true]{background-color:var(--button-default-bgColor-active,var(--color-btn-active-bg,hsla(220,14%,93%,1)));border-color:var(--button-default-borderColor-active,var(--button-default-borderColor-active,var(--color-btn-active-border,rgba(31,35,40,0.15))));}/*!sc*/ .fmvlPZ [data-component="leadingVisual"],.fmvlPZ [data-component="trailingVisual"],.fmvlPZ [data-component="trailingAction"]{color:var(--button-color,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .fmvlPZ[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .fmvlPZ[data-size="small"][data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;}/*!sc*/ .bcQZPI{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .bcQZPI:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .bcQZPI:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .bcQZPI:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .bcQZPI[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .bcQZPI[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .bcQZPI:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .bcQZPI:active{-webkit-transition:none;transition:none;}/*!sc*/ .bcQZPI[data-inactive]{cursor:auto;}/*!sc*/ .bcQZPI:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .bcQZPI:disabled [data-component=ButtonCounter],.bcQZPI:disabled [data-component="leadingVisual"],.bcQZPI:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.bcQZPI:focus{outline:solid 1px transparent;}}/*!sc*/ .bcQZPI [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .bcQZPI[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .bcQZPI[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .bcQZPI[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .bcQZPI[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .bcQZPI[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .bcQZPI[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .bcQZPI[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .bcQZPI[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .bcQZPI[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .bcQZPI[data-block="block"]{width:100%;}/*!sc*/ .bcQZPI[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .bcQZPI[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .bcQZPI [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .bcQZPI [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .bcQZPI [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .bcQZPI [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .bcQZPI [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .bcQZPI [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .bcQZPI:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .bcQZPI:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .bcQZPI[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .bcQZPI[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .bcQZPI[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .bcQZPI:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .bcQZPI:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .bcQZPI:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .bcQZPI[data-size="small"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));position:relative;}/*!sc*/ .dGDIQc{border-radius:6px;border:1px solid;border-color:transparent;font-family:inherit;font-weight:500;font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-text-decoration:none;text-decoration:none;text-align:center;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;height:32px;padding:0 12px;gap:8px;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;-webkit-transition:80ms cubic-bezier(0.65,0,0.35,1);transition:80ms cubic-bezier(0.65,0,0.35,1);-webkit-transition-property:color,fill,background-color,border-color;transition-property:color,fill,background-color,border-color;color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));background-color:transparent;box-shadow:none;}/*!sc*/ .dGDIQc:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dGDIQc:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/ .dGDIQc:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-2px;}/*!sc*/ .dGDIQc[href]{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ .dGDIQc[href]:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ .dGDIQc:hover{-webkit-transition-duration:80ms;transition-duration:80ms;}/*!sc*/ .dGDIQc:active{-webkit-transition:none;transition:none;}/*!sc*/ .dGDIQc[data-inactive]{cursor:auto;}/*!sc*/ .dGDIQc:disabled{cursor:not-allowed;box-shadow:none;color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .dGDIQc:disabled [data-component=ButtonCounter],.dGDIQc:disabled [data-component="leadingVisual"],.dGDIQc:disabled [data-component="trailingAction"]{color:inherit;}/*!sc*/ @media (forced-colors:active){.dGDIQc:focus{outline:solid 1px transparent;}}/*!sc*/ .dGDIQc [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .dGDIQc[data-component=IconButton]{display:inline-grid;padding:unset;place-content:center;width:32px;min-width:unset;}/*!sc*/ .dGDIQc[data-size="small"]{padding:0 8px;height:28px;gap:4px;font-size:12px;}/*!sc*/ .dGDIQc[data-size="small"] [data-component="text"]{line-height:calc(20 / 12);}/*!sc*/ .dGDIQc[data-size="small"] [data-component=ButtonCounter]{font-size:12px;}/*!sc*/ .dGDIQc[data-size="small"] [data-component="buttonContent"] > :not(:last-child){margin-right:4px;}/*!sc*/ .dGDIQc[data-size="small"][data-component=IconButton]{width:28px;padding:unset;}/*!sc*/ .dGDIQc[data-size="large"]{padding:0 16px;height:40px;gap:8px;}/*!sc*/ .dGDIQc[data-size="large"] [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dGDIQc[data-size="large"][data-component=IconButton]{width:40px;padding:unset;}/*!sc*/ .dGDIQc[data-block="block"]{width:100%;}/*!sc*/ .dGDIQc[data-inactive]:not([disabled]){background-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));border-color:var(--button-inactive-bgColor,var(--button-inactive-bgColor-rest,var(--color-btn-inactive-bg,#eaeef2)));color:var(--button-inactive-fgColor,var(--button-inactive-fgColor-rest,var(--color-btn-inactive-text,#57606a)));}/*!sc*/ .dGDIQc[data-inactive]:not([disabled]):focus-visible{box-shadow:none;}/*!sc*/ .dGDIQc [data-component="leadingVisual"]{grid-area:leadingVisual;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dGDIQc [data-component="text"]{grid-area:text;line-height:calc(20/14);white-space:nowrap;}/*!sc*/ .dGDIQc [data-component="trailingVisual"]{grid-area:trailingVisual;}/*!sc*/ .dGDIQc [data-component="trailingAction"]{margin-right:-4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dGDIQc [data-component="buttonContent"]{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;display:grid;grid-template-areas:"leadingVisual text trailingVisual";grid-template-columns:min-content minmax(0,auto) min-content;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;}/*!sc*/ .dGDIQc [data-component="buttonContent"] > :not(:last-child){margin-right:8px;}/*!sc*/ .dGDIQc:hover:not([disabled]){background-color:var(--control-transparent-bgColor-hover,var(--color-action-list-item-default-hover-bg,rgba(208,215,222,0.32)));}/*!sc*/ .dGDIQc:active:not([disabled]){background-color:var(--control-transparent-bgColor-active,var(--color-action-list-item-default-active-bg,rgba(208,215,222,0.48)));}/*!sc*/ .dGDIQc[aria-expanded=true]{background-color:var(--control-transparent-bgColor-selected,var(--color-action-list-item-default-selected-bg,rgba(208,215,222,0.24)));}/*!sc*/ .dGDIQc[data-component="IconButton"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dGDIQc[data-no-visuals]{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));}/*!sc*/ .dGDIQc:has([data-component="ButtonCounter"]){color:var(--button-default-fgColor-rest,var(--color-btn-text,#24292f));}/*!sc*/ .dGDIQc:disabled[data-no-visuals]{color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));}/*!sc*/ .dGDIQc:disabled[data-no-visuals] [data-component=ButtonCounter]{color:inherit;}/*!sc*/ .dGDIQc[data-size="small"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ data-styled.g4[id="types__StyledButton-sc-ws60qy-0"]{content:"blmaBs,hkJzmn,hILMMl,ivbpoP,hviaoI,jXTShb,dOnKJi,gfKkfV,dTgfec,pyyxt,fmvlPZ,bcQZPI,dGDIQc,"}/*!sc*/ .bOMzPg{min-width:0;}/*!sc*/ .fIsVJr{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:16px;}/*!sc*/ .cYjMDB{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:14px;}/*!sc*/ data-styled.g7[id="Text-sc-17v1xeu-0"]{content:"bOMzPg,fIsVJr,gPDEWA,cYjMDB,"}/*!sc*/ .ipyMWB{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;font-weight:600;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .ipyMWB:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .ipyMWB:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ .jmkYvv{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;font-weight:400;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .jmkYvv:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .jmkYvv:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ .dheQRw{color:var(--fgColor-accent,var(--color-accent-fg,#0969da));-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ [data-a11y-link-underlines='true'] .Link__StyledLink-sc-14289xe-0[data-inline='true']{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .dheQRw:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ .dheQRw:is(button){display:inline-block;padding:0;font-size:inherit;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;}/*!sc*/ data-styled.g8[id="Link__StyledLink-sc-14289xe-0"]{content:"ipyMWB,jmkYvv,dheQRw,"}/*!sc*/ .cXNreu{font-size:14px;line-height:20px;color:var(--fgColor-default,var(--color-fg-default,#1F2328));vertical-align:middle;background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));border:1px solid var(--control-borderColor-rest,var(--borderColor-default,var(--color-border-default,#d0d7de)));border-radius:6px;outline:none;box-shadow:var(--shadow-inset,var(--color-primer-shadow-inset,inset 0 1px 0 rgba(208,215,222,0.2)));display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-height:32px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .cXNreu input,.cXNreu textarea{cursor:text;}/*!sc*/ .cXNreu select{cursor:pointer;}/*!sc*/ .cXNreu input::-webkit-input-placeholder,.cXNreu textarea::-webkit-input-placeholder,.cXNreu select::-webkit-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cXNreu input::-moz-placeholder,.cXNreu textarea::-moz-placeholder,.cXNreu select::-moz-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cXNreu input:-ms-input-placeholder,.cXNreu textarea:-ms-input-placeholder,.cXNreu select:-ms-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cXNreu input::placeholder,.cXNreu textarea::placeholder,.cXNreu select::placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/ .cXNreu:focus-within{border-color:var(--fgColor-accent,var(--color-accent-fg,#0969da));outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/ .cXNreu > textarea{padding:12px;}/*!sc*/ @media (min-width:768px){.cXNreu{font-size:14px;}}/*!sc*/ data-styled.g10[id="TextInputWrapper__TextInputBaseWrapper-sc-1mqhpbi-0"]{content:"cXNreu,"}/*!sc*/ .jbzqwE{background-repeat:no-repeat;background-position:right 8px center;padding-left:12px;padding-right:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .jbzqwE > :not(:last-child){margin-right:8px;}/*!sc*/ .jbzqwE .TextInput-icon,.jbzqwE .TextInput-action{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/ .jbzqwE > input,.jbzqwE > select{padding-left:0;padding-right:0;}/*!sc*/ data-styled.g11[id="TextInputWrapper-sc-1mqhpbi-1"]{content:"jbzqwE,"}/*!sc*/ .gNgnVl{position:relative;display:inline-block;}/*!sc*/ .gNgnVl::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(--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(--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*/ .gNgnVl:hover::after,.gNgnVl:active::after,.gNgnVl:focus::after,.gNgnVl: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*/ .gNgnVl.tooltipped-no-delay:hover::after,.gNgnVl.tooltipped-no-delay:active::after,.gNgnVl.tooltipped-no-delay:focus::after,.gNgnVl.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .gNgnVl.tooltipped-multiline:hover::after,.gNgnVl.tooltipped-multiline:active::after,.gNgnVl.tooltipped-multiline:focus::after,.gNgnVl.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .gNgnVl.tooltipped-s::after,.gNgnVl.tooltipped-se::after,.gNgnVl.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .gNgnVl.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .gNgnVl.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .gNgnVl.tooltipped-n::after,.gNgnVl.tooltipped-ne::after,.gNgnVl.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .gNgnVl.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .gNgnVl.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .gNgnVl.tooltipped-s::after,.gNgnVl.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .gNgnVl.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .gNgnVl.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .gNgnVl.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*/ .gNgnVl.tooltipped-multiline.tooltipped-s::after,.gNgnVl.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .gNgnVl.tooltipped-multiline.tooltipped-w::after,.gNgnVl.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .gNgnVl.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .gNgnVl.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g13[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"gNgnVl,"}/*!sc*/ .cDLBls{border:0;font-size:inherit;font-family:inherit;background-color:transparent;-webkit-appearance:none;color:inherit;width:100%;}/*!sc*/ .cDLBls:focus{outline:0;}/*!sc*/ data-styled.g14[id="UnstyledTextInput-sc-14ypya-0"]{content:"cDLBls,"}/*!sc*/ body[data-page-layout-dragging="true"]{cursor:col-resize;}/*!sc*/ body[data-page-layout-dragging="true"] *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/ data-styled.g15[id="sc-global-gbKrvU1"]{content:"sc-global-gbKrvU1,"}/*!sc*/ .fUpWeN{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;max-width:100%;}/*!sc*/ data-styled.g30[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"fUpWeN,"}/*!sc*/ .cjbBGq{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;isolation:isolate;}/*!sc*/ .cjbBGq.cjbBGq > *{margin-inline-end:-1px;position:relative;border-radius:0;}/*!sc*/ .cjbBGq.cjbBGq > *:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px;}/*!sc*/ .cjbBGq.cjbBGq > *:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;}/*!sc*/ .cjbBGq.cjbBGq > *:focus,.cjbBGq.cjbBGq > *:active,.cjbBGq.cjbBGq > *:hover{z-index:1;}/*!sc*/ data-styled.g37[id="ButtonGroup-sc-1gxhls1-0"]{content:"cjbBGq,"}/*!sc*/ .dAjliH{--segmented-control-button-inner-padding:12px;--segmented-control-button-bg-inset:4px;--segmented-control-outer-radius:6px;background-color:transparent;border-color:transparent;border-radius:var(--segmented-control-outer-radius);border-width:0;color:currentColor;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:600;padding:0;height:100%;width:100%;}/*!sc*/ .dAjliH .segmentedControl-content{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--controlKnob-bgColor-rest,var(--color-segmented-control-button-bg,#ffffff));border-color:var(--controlKnob-borderColor-rest,var(--color-segmented-control-button-hover-active-selected-border,#8c959f));border-style:solid;border-width:1px;border-radius:var(--segmented-control-outer-radius);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:var(--segmented-control-button-inner-padding);padding-right:var(--segmented-control-button-inner-padding);}/*!sc*/ .dAjliH svg{fill:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .dAjliH:focus:focus-visible:not(:last-child):after{width:0;}/*!sc*/ .dAjliH .segmentedControl-text:after{content:"Code";display:block;font-weight:600;height:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;}/*!sc*/ @media (pointer:coarse){.dAjliH:before{content:"";position:absolute;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);top:50%;min-height:44px;}}/*!sc*/ .fIktcg{--segmented-control-button-inner-padding:12px;--segmented-control-button-bg-inset:4px;--segmented-control-outer-radius:6px;background-color:transparent;border-color:transparent;border-radius:var(--segmented-control-outer-radius);border-width:0;color:currentColor;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:400;padding:var(--segmented-control-button-bg-inset);height:100%;width:100%;}/*!sc*/ .fIktcg .segmentedControl-content{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:transparent;border-color:transparent;border-style:solid;border-width:1px;border-radius:calc(var(--segmented-control-outer-radius) - var(--segmented-control-button-bg-inset) / 2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:calc(var(--segmented-control-button-inner-padding) - var(--segmented-control-button-bg-inset));padding-right:calc(var(--segmented-control-button-inner-padding) - var(--segmented-control-button-bg-inset));}/*!sc*/ .fIktcg svg{fill:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .fIktcg:hover .segmentedControl-content{background-color:var(--controlTrack-bgColor-hover,var(--color-segmented-control-button-hover-bg,rgba(175,184,193,0.2)));}/*!sc*/ .fIktcg:active .segmentedControl-content{background-color:var(--controlTrack-bgColor-active,var(--color-segmented-control-button-hover-active-bg,rgba(175,184,193,0.4)));}/*!sc*/ .fIktcg:focus:focus-visible:not(:last-child):after{width:0;}/*!sc*/ .fIktcg .segmentedControl-text:after{content:"Blame";display:block;font-weight:600;height:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;visibility:hidden;}/*!sc*/ @media (pointer:coarse){.fIktcg:before{content:"";position:absolute;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);top:50%;min-height:44px;}}/*!sc*/ data-styled.g58[id="SegmentedControlButton__SegmentedControlButtonStyled-sc-8lkgxl-0"]{content:"dAjliH,fIktcg,"}/*!sc*/ .huxtnT{background-color:var(--controlTrack-bgColor-rest,var(--color-segmented-control-bg,#eaeef2));border-radius:6px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;font-size:14px;height:28px;margin:0;padding:0;}/*!sc*/ data-styled.g60[id="SegmentedControl__SegmentedControlList-sc-1rzig82-0"]{content:"huxtnT,"}/*!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" class="Box-sc-g0xbh4-0 fSWWem"><div class="Box-sc-g0xbh4-0 kPPmzM"><div class="Box-sc-g0xbh4-0 cIAPDV"><div tabindex="0" class="Box-sc-g0xbh4-0 gvCnwW"><div class="Box-sc-g0xbh4-0 esrURn"><div class="Box-sc-g0xbh4-0 eUyHuk"></div><div style="--pane-width:320px" class="Box-sc-g0xbh4-0 gNdDUH"></div><div class="Box-sc-g0xbh4-0 hAeDYA"><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 fjdBNx"></div></div></div></div><div class="Box-sc-g0xbh4-0 emFMJu"><div class="Box-sc-g0xbh4-0"></div><div class="Box-sc-g0xbh4-0 hlUAHL"><div data-selector="repos-split-pane-content" tabindex="0" class="Box-sc-g0xbh4-0 iStsmI"><div class="Box-sc-g0xbh4-0 eIgvIk"><div class="Box-sc-g0xbh4-0 eVFfWF container"><div class="px-3 pt-3 pb-0" id="StickyHeader"><div class="Box-sc-g0xbh4-0 fywjmm"><div class="Box-sc-g0xbh4-0 dyczTK"><div class="Box-sc-g0xbh4-0 cpXcux react-code-view-header-wrap--narrow"><div class="Box-sc-g0xbh4-0 iPEkxH"><h2 class="Heading__StyledHeading-sc-1c1dgg0-0 jUriTl"><button style="--button-color:fg.muted" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="types__StyledButton-sc-ws60qy-0 blmaBs"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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">Files</span></span></button><span role="tooltip" aria-label="Expand file tree" id="expand-button-file-tree-button" class="Tooltip__TooltipBase-sc-17tf59c-0 gNgnVl tooltipped-se"><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-labelledby="expand-button-file-tree-button" aria-controls="repos-file-tree" class="types__StyledButton-sc-ws60qy-0 hkJzmn" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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" id="branch-picker-repos-header-ref-selector-wide" aria-haspopup="true" tabindex="0" aria-label="master branch" data-testid="anchor-button" class="types__StyledButton-sc-ws60qy-0 hILMMl ref-selector-class"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text"><div class="Box-sc-g0xbh4-0 bKgizp"><div class="Box-sc-g0xbh4-0 iPGYsi"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 dKmYfk ref-selector-button-text-container"><span class="Text-sc-17v1xeu-0 bOMzPg"> <!-- -->master</span></div></div></span><span data-component="trailingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 ehCeGn react-code-view-header-mb--narrow"><div class="Box-sc-g0xbh4-0 eTvGbF"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Box-sc-g0xbh4-0 kzRgrI"><h2 class="Heading__StyledHeading-sc-1c1dgg0-0 cgQnMS sr-only" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Box-sc-g0xbh4-0 cmAPIB"><li class="Box-sc-g0xbh4-0 jwXCBK"><a sx="[object Object]" data-testid="breadcrumbs-repo-link" class="Link__StyledLink-sc-14289xe-0 ipyMWB" href="/xillybus/xillinux-kernel/tree/master">xillinux-kernel</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 fIsVJr">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers">drivers</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 fIsVJr">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers/media">media</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 fIsVJr">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers/media/i2c">i2c</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 fIsVJr">/</span><h1 tabindex="-1" id="file-name-id" class="Heading__StyledHeading-sc-1c1dgg0-0 diwsLq">ov7670.c</h1></div><div aria-describedby=":R1td9laeb:" class="Box-sc-g0xbh4-0"><button data-component="IconButton" type="button" aria-label="Copy path" tabindex="0" class="types__StyledButton-sc-ws60qy-0 ivbpoP" data-size="small" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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></div></div><div class="react-code-view-header-element--wide"><div class="Box-sc-g0xbh4-0 gtBUEp"><div class="d-flex gap-2"> <div><div class="Box-sc-g0xbh4-0 kfYOBR"><span class="TextInputWrapper__TextInputBaseWrapper-sc-1mqhpbi-0 TextInputWrapper-sc-1mqhpbi-1 cXNreu jbzqwE TextInput-wrapper" aria-busy="false"><span class="TextInput-icon"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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" data-component="input" class="UnstyledTextInput-sc-14ypya-0 cDLBls" value=""/><span class="TextInput-icon"></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" data-no-visuals="true" class="types__StyledButton-sc-ws60qy-0 hviaoI"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text">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" class="types__StyledButton-sc-ws60qy-0 jXTShb js-blob-dropdown-click" title="More file actions" data-testid="more-file-actions-button-nav-menu-wide" id=":R156d9laeb:" aria-haspopup="true" tabindex="0" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 gtBUEp"><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" data-no-visuals="true" class="types__StyledButton-sc-ws60qy-0 hviaoI"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text">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" class="types__StyledButton-sc-ws60qy-0 jXTShb js-blob-dropdown-click" title="More file actions" data-testid="more-file-actions-button-nav-menu-narrow" id=":R157d9laeb:" aria-haspopup="true" tabindex="0" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 hVZtwF react-code-view-bottom-padding"> <div class="Box-sc-g0xbh4-0 cMYnca"></div> <!-- --> <!-- --> </div><div class="Box-sc-g0xbh4-0 hVZtwF"> <!-- --> <!-- --> <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 brJRqk"><h2 class="Heading__StyledHeading-sc-1c1dgg0-0 cgQnMS sr-only" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex 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="Heading__StyledHeading-sc-1c1dgg0-0 cgQnMS sr-only" data-testid="screen-reader-heading">History</h2><a aria-label="Commit history" class="types__StyledButton-sc-ws60qy-0 dOnKJi d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" href="/xillybus/xillinux-kernel/commits/master/drivers/media/i2c/ov7670.c" data-size="small"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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"><span class="Text-sc-17v1xeu-0 gPDEWA 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 gNgnVl tooltipped-n"><a aria-label="Commit history" aria-describedby="history-icon-button-tooltip" class="types__StyledButton-sc-ws60qy-0 dOnKJi LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" href="/xillybus/xillinux-kernel/commits/master/drivers/media/i2c/ov7670.c" data-size="small"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 iJmJly"><div class="Box-sc-g0xbh4-0 jACbi container"><div class="Box-sc-g0xbh4-0 gIJuDf react-code-size-details-banner"><div class="Box-sc-g0xbh4-0 fleZSW react-code-size-details-banner"><div class="Box-sc-g0xbh4-0 BnySK text-mono"><div title="45 KB" data-testid="blob-size" class="Truncate__StyledTruncate-sc-23o1d2-0 fUpWeN"><span class="Text-sc-17v1xeu-0 gPDEWA">1684 lines (1487 loc) · 45 KB</span></div></div></div></div><div class="Box-sc-g0xbh4-0 VHzRk react-blob-view-header-sticky" id="repos-sticky-header"><div class="Box-sc-g0xbh4-0 ePiodO"><div class="Box-sc-g0xbh4-0 react-blob-sticky-header"><div class="Box-sc-g0xbh4-0 kQJlnf"><div class="Box-sc-g0xbh4-0 nSWSp"><div class="Box-sc-g0xbh4-0 lhFvfi"><div class="Box-sc-g0xbh4-0 doiYd"><button type="button" id="branch-picker-repos-header-ref-selector" aria-haspopup="true" tabindex="0" aria-label="master branch" data-testid="anchor-button" class="types__StyledButton-sc-ws60qy-0 hILMMl ref-selector-class"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text"><div class="Box-sc-g0xbh4-0 bKgizp"><div class="Box-sc-g0xbh4-0 iPGYsi"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 dKmYfk ref-selector-button-text-container"><span class="Text-sc-17v1xeu-0 bOMzPg"> <!-- -->master</span></div></div></span><span data-component="trailingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 jKPiSV"><div class="Box-sc-g0xbh4-0 iZJewz"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Box-sc-g0xbh4-0 kzRgrI"><h2 class="Heading__StyledHeading-sc-1c1dgg0-0 cgQnMS sr-only" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Box-sc-g0xbh4-0 cmAPIB"><li class="Box-sc-g0xbh4-0 jwXCBK"><a sx="[object Object]" data-testid="breadcrumbs-repo-link" class="Link__StyledLink-sc-14289xe-0 ipyMWB" href="/xillybus/xillinux-kernel/tree/master">xillinux-kernel</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 cYjMDB">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers">drivers</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 cYjMDB">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers/media">media</a></li><li class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 cYjMDB">/</span><a sx="[object Object]" class="Link__StyledLink-sc-14289xe-0 jmkYvv" href="/xillybus/xillinux-kernel/tree/master/drivers/media/i2c">i2c</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Box-sc-g0xbh4-0 jwXCBK"><span aria-hidden="true" class="Text-sc-17v1xeu-0 cYjMDB">/</span><h1 tabindex="-1" id="sticky-file-name-id" class="Heading__StyledHeading-sc-1c1dgg0-0 jAEDJk">ov7670.c</h1></div></div></div></div><button style="--button-color:fg.default" type="button" data-size="small" class="types__StyledButton-sc-ws60qy-0 gfKkfV"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="leadingVisual" class="Box-sc-g0xbh4-0 trpoQ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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">Top</span></span></button></div></div></div><div class="Box-sc-g0xbh4-0 jfjHXm"><h2 class="Heading__StyledHeading-sc-1c1dgg0-0 cgQnMS sr-only" data-testid="screen-reader-heading">File metadata and controls</h2><div class="Box-sc-g0xbh4-0 bfkNRF"><ul aria-label="File view" class="SegmentedControl__SegmentedControlList-sc-1rzig82-0 huxtnT"><li class="Box-sc-g0xbh4-0 fXBLEV"><button aria-current="true" class="SegmentedControlButton__SegmentedControlButtonStyled-sc-8lkgxl-0 dAjliH"><span class="segmentedControl-content"><div class="Box-sc-g0xbh4-0 segmentedControl-text">Code</div></span></button></li><li class="Box-sc-g0xbh4-0 gMPsNT"><button aria-current="false" class="SegmentedControlButton__SegmentedControlButtonStyled-sc-8lkgxl-0 fIktcg"><span class="segmentedControl-content"><div class="Box-sc-g0xbh4-0 segmentedControl-text">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 fleZSW react-code-size-details-in-header"><div class="Box-sc-g0xbh4-0 BnySK text-mono"><div title="45 KB" data-testid="blob-size" class="Truncate__StyledTruncate-sc-23o1d2-0 fUpWeN"><span class="Text-sc-17v1xeu-0 gPDEWA">1684 lines (1487 loc) · 45 KB</span></div></div></div></div><div class="Box-sc-g0xbh4-0 iBylDf"><div class="Box-sc-g0xbh4-0 kSGBPx react-blob-header-edit-and-raw-actions"><div class="ButtonGroup-sc-1gxhls1-0 cjbBGq"><a href="https://github.com/xillybus/xillinux-kernel/raw/master/drivers/media/i2c/ov7670.c" data-testid="raw-button" data-size="small" data-no-visuals="true" class="types__StyledButton-sc-ws60qy-0 dTgfec"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 kkrdEu"><span data-component="text">Raw</span></span></a><button data-component="IconButton" type="button" aria-label="Copy raw content" data-testid="copy-raw-button" data-size="small" data-no-visuals="true" class="types__StyledButton-sc-ws60qy-0 pyyxt"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 role="tooltip" aria-label="Download raw file" id=":Rdcsptal9laeb:" class="Tooltip__TooltipBase-sc-17tf59c-0 gNgnVl tooltipped-n"><button data-component="IconButton" type="button" aria-label="Download raw content" data-testid="download-raw-button" data-size="small" data-no-visuals="true" class="types__StyledButton-sc-ws60qy-0 fmvlPZ"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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><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=":R5sptal9laeb:" class="Tooltip__TooltipBase-sc-17tf59c-0 gNgnVl tooltipped-nw"><button data-component="IconButton" type="button" aria-label="Symbols" aria-pressed="false" aria-expanded="false" aria-controls="symbols-pane" class="types__StyledButton-sc-ws60qy-0 bcQZPI" data-testid="symbols-button" id="symbols-button" data-size="small" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-code-square" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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="Box-sc-g0xbh4-0 react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" aria-label="Edit and raw actions" class="types__StyledButton-sc-ws60qy-0 dGDIQc js-blob-dropdown-click" title="More file actions" data-testid="more-file-actions-button" id=":Rnsptal9laeb:" aria-haspopup="true" tabindex="0" data-size="small" data-no-visuals="true"><svg aria-hidden="true" focusable="false" role="img" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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 ytOJl"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="Box-sc-g0xbh4-0 jWnGGx"><div class="Box-sc-g0xbh4-0 TCenl"><div id="highlighted-line-menu-positioner" class="position-relative"><div id="copilot-button-positioner" class="Box-sc-g0xbh4-0 cluMzC"><div class="Box-sc-g0xbh4-0 eRkHwF"><div class="Box-sc-g0xbh4-0 knCTAx react-code-file-contents" role="presentation" aria-hidden="true" data-tab-size="8" 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<span class="Box-sc-g0xbh4-0 hXUKEK"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 cXzIIR"><svg aria-hidden="true" focusable="false" role="img" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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="188" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">188</div><div data-line-number="189" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">189</div><div data-line-number="190" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">190</div><div data-line-number="191" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">191</div><div data-line-number="192" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">192</div><div data-line-number="193" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">193</div><div data-line-number="194" class="child-of-line-186 react-line-number react-code-text" style="padding-right:16px">194</div><div data-line-number="195" class="child-of-line-186 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<span class="Box-sc-g0xbh4-0 hXUKEK"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 cXzIIR"><svg aria-hidden="true" focusable="false" role="img" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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="199" class="child-of-line-197 react-line-number react-code-text" style="padding-right:16px">199</div><div data-line-number="200" class="child-of-line-197 react-line-number react-code-text" style="padding-right:16px">200</div><div data-line-number="201" class="child-of-line-197 react-line-number react-code-text" style="padding-right:16px">201</div><div data-line-number="202" class="child-of-line-197 react-line-number react-code-text" style="padding-right:16px">202</div><div data-line-number="203" class="child-of-line-197 react-line-number react-code-text" style="padding-right:16px">203</div><div data-line-number="204" class="child-of-line-197 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<span class="Box-sc-g0xbh4-0 hXUKEK"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 cXzIIR"><svg aria-hidden="true" focusable="false" role="img" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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="212" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">212</div><div data-line-number="213" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">213</div><div data-line-number="214" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">214</div><div data-line-number="215" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">215</div><div data-line-number="216" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">216</div><div data-line-number="217" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">217</div><div data-line-number="218" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">218</div><div data-line-number="219" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">219</div><div data-line-number="220" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">220</div><div data-line-number="221" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">221</div><div data-line-number="222" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">222</div><div data-line-number="223" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">223</div><div data-line-number="224" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">224</div><div data-line-number="225" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">225</div><div data-line-number="226" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">226</div><div data-line-number="227" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">227</div><div data-line-number="228" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">228</div><div data-line-number="229" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">229</div><div data-line-number="230" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">230</div><div data-line-number="231" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">231</div><div data-line-number="232" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">232</div><div data-line-number="233" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">233</div><div data-line-number="234" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">234</div><div data-line-number="235" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">235</div><div data-line-number="236" class="child-of-line-210 react-line-number react-code-text" style="padding-right:16px">236</div><div data-line-number="237" class="child-of-line-210 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</div><div data-line-number="272" class="react-line-number react-code-text" style="padding-right:16px">272</div><div data-line-number="273" class="react-line-number react-code-text" style="padding-right:16px">273</div><div data-line-number="274" class="react-line-number react-code-text" style="padding-right:16px">274</div><div data-line-number="275" class="react-line-number react-code-text" style="padding-right:16px">275</div><div data-line-number="276" class="react-line-number react-code-text" style="padding-right:16px">276</div><div data-line-number="277" class="react-line-number react-code-text" style="padding-right:16px">277</div><div data-line-number="278" class="react-line-number react-code-text" style="padding-right:16px">278</div><div data-line-number="279" class="react-line-number react-code-text" style="padding-right:16px">279</div><div data-line-number="280" class="react-line-number react-code-text" style="padding-right:16px">280</div><div data-line-number="281" class="react-line-number react-code-text" style="padding-right:16px">281</div><div data-line-number="282" class="react-line-number react-code-text" style="padding-right:16px">282</div><div data-line-number="283" class="react-line-number react-code-text" style="padding-right:16px">283</div><div data-line-number="284" class="react-line-number react-code-text" style="padding-right:16px">284</div><div data-line-number="285" class="react-line-number react-code-text" style="padding-right:16px">285</div><div data-line-number="286" class="react-line-number react-code-text" style="padding-right:16px">286</div><div data-line-number="287" class="react-line-number react-code-text" style="padding-right:16px">287</div><div data-line-number="288" class="react-line-number react-code-text" style="padding-right:16px">288</div><div data-line-number="289" class="react-line-number react-code-text" style="padding-right:16px">289</div><div data-line-number="290" class="react-line-number react-code-text" style="padding-right:16px">290</div><div data-line-number="291" class="react-line-number react-code-text" style="padding-right:16px">291</div><div data-line-number="292" class="react-line-number react-code-text" style="padding-right:16px">292</div><div data-line-number="293" class="react-line-number react-code-text" style="padding-right:16px">293</div><div data-line-number="294" class="react-line-number react-code-text" style="padding-right:16px">294</div><div data-line-number="295" class="react-line-number react-code-text" style="padding-right:16px">295</div><div data-line-number="296" class="react-line-number react-code-text" style="padding-right:16px">296</div><div data-line-number="297" class="react-line-number react-code-text" style="padding-right:16px">297</div><div data-line-number="298" class="react-line-number react-code-text" style="padding-right:16px">298</div><div data-line-number="299" class="react-line-number react-code-text" style="padding-right:16px">299</div><div data-line-number="300" class="react-line-number react-code-text" style="padding-right:16px">300</div><div data-line-number="301" class="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</div><div data-line-number="312" class="react-line-number react-code-text" style="padding-right:16px">312</div><div data-line-number="313" class="react-line-number react-code-text" style="padding-right:16px">313</div><div data-line-number="314" class="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</div><div data-line-number="318" class="react-line-number react-code-text" style="padding-right:16px">318</div><div data-line-number="319" class="react-line-number react-code-text" style="padding-right:16px">319</div><div data-line-number="320" class="react-line-number react-code-text" style="padding-right:16px">320</div><div data-line-number="321" class="react-line-number react-code-text" style="padding-right:16px">321</div><div data-line-number="322" class="react-line-number react-code-text" style="padding-right:16px">322</div><div data-line-number="323" class="react-line-number react-code-text" style="padding-right:16px">323</div><div data-line-number="324" class="react-line-number react-code-text" style="padding-right:16px">324</div><div data-line-number="325" class="react-line-number react-code-text" style="padding-right:16px">325</div><div data-line-number="326" class="react-line-number react-code-text" style="padding-right:16px">326</div><div data-line-number="327" class="react-line-number react-code-text" style="padding-right:16px">327</div><div data-line-number="328" class="react-line-number react-code-text" style="padding-right:16px">328</div><div data-line-number="329" class="react-line-number react-code-text" style="padding-right:16px">329</div><div data-line-number="330" class="react-line-number react-code-text" style="padding-right:16px">330</div><div data-line-number="331" class="react-line-number react-code-text" style="padding-right:16px">331</div><div data-line-number="332" class="react-line-number react-code-text" style="padding-right:16px">332</div><div data-line-number="333" class="react-line-number react-code-text" style="padding-right:16px">333</div><div data-line-number="334" class="react-line-number react-code-text" style="padding-right:16px">334</div><div data-line-number="335" class="react-line-number react-code-text" style="padding-right:16px">335</div><div data-line-number="336" class="react-line-number react-code-text" style="padding-right:16px">336</div><div data-line-number="337" class="react-line-number react-code-text" style="padding-right:16px">337</div><div data-line-number="338" class="react-line-number react-code-text" style="padding-right:16px">338</div><div data-line-number="339" class="react-line-number react-code-text" style="padding-right:16px">339</div><div data-line-number="340" class="react-line-number react-code-text" style="padding-right:16px">340</div><div data-line-number="341" class="react-line-number react-code-text" style="padding-right:16px">341</div><div data-line-number="342" class="react-line-number react-code-text" style="padding-right:16px">342</div><div data-line-number="343" class="react-line-number react-code-text" style="padding-right:16px">343</div><div data-line-number="344" class="react-line-number react-code-text" style="padding-right:16px">344</div><div data-line-number="345" class="react-line-number react-code-text" style="padding-right:16px">345</div><div data-line-number="346" class="react-line-number react-code-text" style="padding-right:16px">346</div><div data-line-number="347" class="react-line-number react-code-text" style="padding-right:16px">347</div><div data-line-number="348" class="react-line-number react-code-text" style="padding-right:16px">348</div><div data-line-number="349" class="react-line-number react-code-text" style="padding-right:16px">349</div><div data-line-number="350" class="react-line-number react-code-text" style="padding-right:16px">350</div><div data-line-number="351" class="react-line-number react-code-text" style="padding-right:16px">351</div><div data-line-number="352" class="react-line-number react-code-text" style="padding-right:16px">352</div><div data-line-number="353" class="react-line-number react-code-text" style="padding-right:16px">353</div><div data-line-number="354" class="react-line-number react-code-text" style="padding-right:16px">354</div><div data-line-number="355" class="react-line-number react-code-text" style="padding-right:16px">355</div><div data-line-number="356" class="react-line-number react-code-text" style="padding-right:16px">356</div><div data-line-number="357" class="react-line-number react-code-text" style="padding-right:16px">357</div><div data-line-number="358" class="react-line-number react-code-text" style="padding-right:16px">358</div><div data-line-number="359" class="react-line-number react-code-text" style="padding-right:16px">359</div><div data-line-number="360" class="react-line-number react-code-text" style="padding-right:16px">360</div><div data-line-number="361" class="react-line-number react-code-text" style="padding-right:16px">361</div><div data-line-number="362" class="react-line-number react-code-text" style="padding-right:16px">362</div><div data-line-number="363" class="react-line-number react-code-text" style="padding-right:16px">363</div><div data-line-number="364" class="react-line-number react-code-text" style="padding-right:16px">364</div><div data-line-number="365" class="react-line-number react-code-text" style="padding-right:16px">365</div><div data-line-number="366" class="react-line-number react-code-text" style="padding-right:16px">366</div><div data-line-number="367" class="react-line-number react-code-text" style="padding-right:16px">367</div><div data-line-number="368" class="react-line-number react-code-text" style="padding-right:16px">368</div><div data-line-number="369" class="react-line-number react-code-text" style="padding-right:16px">369</div><div data-line-number="370" class="react-line-number react-code-text" style="padding-right:16px">370</div><div data-line-number="371" class="react-line-number react-code-text" style="padding-right:16px">371</div><div data-line-number="372" class="react-line-number react-code-text" style="padding-right:16px">372</div><div data-line-number="373" class="react-line-number react-code-text" style="padding-right:16px">373</div><div data-line-number="374" class="react-line-number react-code-text" style="padding-right:16px">374</div><div data-line-number="375" class="react-line-number react-code-text" style="padding-right:16px">375</div><div data-line-number="376" class="react-line-number react-code-text" style="padding-right:16px">376</div><div data-line-number="377" class="react-line-number react-code-text" style="padding-right:16px">377</div><div data-line-number="378" class="react-line-number react-code-text" style="padding-right:16px">378</div><div data-line-number="379" class="react-line-number react-code-text" style="padding-right:16px">379</div><div data-line-number="380" class="react-line-number react-code-text" style="padding-right:16px">380</div><div data-line-number="381" class="react-line-number react-code-text" style="padding-right:16px">381</div><div data-line-number="382" class="react-line-number react-code-text" style="padding-right:16px">382</div><div data-line-number="383" class="react-line-number react-code-text" style="padding-right:16px">383</div><div data-line-number="384" class="react-line-number react-code-text" style="padding-right:16px">384</div><div data-line-number="385" class="react-line-number react-code-text" style="padding-right:16px">385</div><div data-line-number="386" class="react-line-number react-code-text" style="padding-right:16px">386</div><div data-line-number="387" class="react-line-number react-code-text" style="padding-right:16px">387</div><div data-line-number="388" class="react-line-number react-code-text" style="padding-right:16px">388</div><div data-line-number="389" class="react-line-number react-code-text" style="padding-right:16px">389</div><div data-line-number="390" class="react-line-number react-code-text" style="padding-right:16px">390</div><div data-line-number="391" class="react-line-number react-code-text" style="padding-right:16px">391</div><div data-line-number="392" class="react-line-number react-code-text" style="padding-right:16px">392</div><div data-line-number="393" class="react-line-number react-code-text" style="padding-right:16px">393</div><div data-line-number="394" class="react-line-number react-code-text" style="padding-right:16px">394</div><div data-line-number="395" class="react-line-number react-code-text" style="padding-right:16px">395</div><div data-line-number="396" class="react-line-number react-code-text" style="padding-right:16px">396</div><div data-line-number="397" class="react-line-number react-code-text" style="padding-right:16px">397</div><div data-line-number="398" class="react-line-number react-code-text" style="padding-right:16px">398</div><div data-line-number="399" class="react-line-number react-code-text" style="padding-right:16px">399</div><div data-line-number="400" class="react-line-number react-code-text" style="padding-right:16px">400</div><div data-line-number="401" class="react-line-number react-code-text" style="padding-right:16px">401</div><div data-line-number="402" class="react-line-number react-code-text" style="padding-right:16px">402</div><div data-line-number="403" class="react-line-number react-code-text" style="padding-right:16px">403</div><div data-line-number="404" class="react-line-number react-code-text" style="padding-right:16px">404</div><div data-line-number="405" class="react-line-number react-code-text" style="padding-right:16px">405</div><div data-line-number="406" class="react-line-number react-code-text" style="padding-right:16px">406</div><div data-line-number="407" class="react-line-number react-code-text" style="padding-right:16px">407</div><div data-line-number="408" class="react-line-number react-code-text" style="padding-right:16px">408</div><div data-line-number="409" class="react-line-number react-code-text" style="padding-right:16px">409</div><div data-line-number="410" class="react-line-number react-code-text" style="padding-right:16px">410</div><div data-line-number="411" class="react-line-number react-code-text" style="padding-right:16px">411</div><div data-line-number="412" class="react-line-number react-code-text" style="padding-right:16px">412</div><div data-line-number="413" class="react-line-number react-code-text" style="padding-right:16px">413</div><div data-line-number="414" class="react-line-number react-code-text" style="padding-right:16px">414</div><div data-line-number="415" class="react-line-number react-code-text" style="padding-right:16px">415</div><div data-line-number="416" class="react-line-number react-code-text" style="padding-right:16px">416</div><div data-line-number="417" class="react-line-number react-code-text" style="padding-right:16px">417</div><div data-line-number="418" class="react-line-number react-code-text" style="padding-right:16px">418</div><div data-line-number="419" class="react-line-number react-code-text" style="padding-right:16px">419</div><div data-line-number="420" class="react-line-number react-code-text" style="padding-right:16px">420</div><div data-line-number="421" class="react-line-number react-code-text" style="padding-right:16px">421</div><div data-line-number="422" class="react-line-number react-code-text" style="padding-right:16px">422</div><div data-line-number="423" class="react-line-number react-code-text" style="padding-right:16px">423</div><div data-line-number="424" class="react-line-number react-code-text" style="padding-right:16px">424</div><div data-line-number="425" class="react-line-number react-code-text" style="padding-right:16px">425</div><div data-line-number="426" class="react-line-number react-code-text" style="padding-right:16px">426</div><div data-line-number="427" class="react-line-number react-code-text" style="padding-right:16px">427</div><div data-line-number="428" class="react-line-number react-code-text" style="padding-right:16px">428</div><div data-line-number="429" class="react-line-number react-code-text" style="padding-right:16px">429</div><div data-line-number="430" class="react-line-number react-code-text" style="padding-right:16px">430</div><div data-line-number="431" class="react-line-number react-code-text" style="padding-right:16px">431</div><div data-line-number="432" class="react-line-number react-code-text" style="padding-right:16px">432</div><div data-line-number="433" class="react-line-number react-code-text" style="padding-right:16px">433</div><div data-line-number="434" class="react-line-number react-code-text" style="padding-right:16px">434</div><div data-line-number="435" class="react-line-number react-code-text" style="padding-right:16px">435</div><div data-line-number="436" class="react-line-number react-code-text" style="padding-right:16px">436</div><div data-line-number="437" class="react-line-number react-code-text" style="padding-right:16px">437</div><div data-line-number="438" class="react-line-number react-code-text" style="padding-right:16px">438</div><div data-line-number="439" class="react-line-number react-code-text" style="padding-right:16px">439</div><div data-line-number="440" class="react-line-number react-code-text" style="padding-right:16px">440</div><div data-line-number="441" class="react-line-number react-code-text" style="padding-right:16px">441</div><div data-line-number="442" class="react-line-number react-code-text" style="padding-right:16px">442</div><div data-line-number="443" class="react-line-number react-code-text" style="padding-right:16px">443</div><div data-line-number="444" class="react-line-number react-code-text" style="padding-right:16px">444</div><div data-line-number="445" class="react-line-number react-code-text" style="padding-right:16px">445</div><div data-line-number="446" class="react-line-number react-code-text" style="padding-right:16px">446</div><div data-line-number="447" class="react-line-number react-code-text" style="padding-right:16px">447</div><div data-line-number="448" class="react-line-number react-code-text" style="padding-right:16px">448</div><div data-line-number="449" class="react-line-number react-code-text" style="padding-right:16px">449</div><div data-line-number="450" class="react-line-number react-code-text" style="padding-right:16px">450</div><div data-line-number="451" class="react-line-number react-code-text" style="padding-right:16px">451</div><div data-line-number="452" class="react-line-number react-code-text" style="padding-right:16px">452</div><div data-line-number="453" class="react-line-number react-code-text" style="padding-right:16px">453</div><div data-line-number="454" class="react-line-number react-code-text" style="padding-right:16px">454</div><div data-line-number="455" class="react-line-number react-code-text" style="padding-right:16px">455</div><div data-line-number="456" class="react-line-number react-code-text" style="padding-right:16px">456</div><div data-line-number="457" class="react-line-number react-code-text" style="padding-right:16px">457</div><div data-line-number="458" class="react-line-number react-code-text" style="padding-right:16px">458</div><div data-line-number="459" class="react-line-number react-code-text" style="padding-right:16px">459</div><div data-line-number="460" class="react-line-number react-code-text" style="padding-right:16px">460</div><div data-line-number="461" class="react-line-number react-code-text" style="padding-right:16px">461</div><div data-line-number="462" class="react-line-number react-code-text" style="padding-right:16px">462</div><div data-line-number="463" class="react-line-number react-code-text" style="padding-right:16px">463</div><div data-line-number="464" class="react-line-number react-code-text" style="padding-right:16px">464</div><div data-line-number="465" class="react-line-number react-code-text" style="padding-right:16px">465</div><div data-line-number="466" class="react-line-number react-code-text" style="padding-right:16px">466</div><div data-line-number="467" class="react-line-number react-code-text" style="padding-right:16px">467</div><div data-line-number="468" class="react-line-number react-code-text" style="padding-right:16px">468</div><div data-line-number="469" class="react-line-number react-code-text" style="padding-right:16px">469</div><div data-line-number="470" class="react-line-number react-code-text" style="padding-right:16px">470</div><div data-line-number="471" class="react-line-number react-code-text" style="padding-right:16px">471</div><div data-line-number="472" class="react-line-number react-code-text" style="padding-right:16px">472</div><div data-line-number="473" class="react-line-number react-code-text" style="padding-right:16px">473</div><div data-line-number="474" class="react-line-number react-code-text" style="padding-right:16px">474</div><div data-line-number="475" class="react-line-number react-code-text" style="padding-right:16px">475</div><div data-line-number="476" class="react-line-number react-code-text" style="padding-right:16px">476</div><div data-line-number="477" class="react-line-number react-code-text" style="padding-right:16px">477</div><div data-line-number="478" class="react-line-number react-code-text" style="padding-right:16px">478</div><div data-line-number="479" class="react-line-number react-code-text" style="padding-right:16px">479</div><div data-line-number="480" class="react-line-number react-code-text" style="padding-right:16px">480</div><div data-line-number="481" class="react-line-number react-code-text" style="padding-right:16px">481</div><div data-line-number="482" class="react-line-number react-code-text" style="padding-right:16px">482</div><div data-line-number="483" class="react-line-number react-code-text" style="padding-right:16px">483</div><div data-line-number="484" class="react-line-number react-code-text" style="padding-right:16px">484</div><div data-line-number="485" class="react-line-number react-code-text" style="padding-right:16px">485</div><div data-line-number="486" class="react-line-number react-code-text" style="padding-right:16px">486</div><div data-line-number="487" class="react-line-number react-code-text" style="padding-right:16px">487</div><div data-line-number="488" class="react-line-number react-code-text" style="padding-right:16px">488</div><div data-line-number="489" class="react-line-number react-code-text" style="padding-right:16px">489</div><div data-line-number="490" class="react-line-number react-code-text" style="padding-right:16px">490</div><div data-line-number="491" class="react-line-number react-code-text" style="padding-right:16px">491</div><div data-line-number="492" class="react-line-number react-code-text" style="padding-right:16px">492</div><div data-line-number="493" class="react-line-number react-code-text" style="padding-right:16px">493</div><div data-line-number="494" class="react-line-number react-code-text" style="padding-right:16px">494</div><div data-line-number="495" class="react-line-number react-code-text" style="padding-right:16px">495</div><div data-line-number="496" class="react-line-number react-code-text" style="padding-right:16px">496</div><div data-line-number="497" class="react-line-number react-code-text" style="padding-right:16px">497</div><div data-line-number="498" class="react-line-number react-code-text" style="padding-right:16px">498</div><div data-line-number="499" class="react-line-number react-code-text" style="padding-right:16px">499</div><div data-line-number="500" class="react-line-number react-code-text" style="padding-right:16px">500</div><div data-line-number="501" class="react-line-number react-code-text" style="padding-right:16px">501</div><div data-line-number="502" class="react-line-number react-code-text" style="padding-right:16px">502</div><div data-line-number="503" class="react-line-number react-code-text" style="padding-right:16px">503</div><div data-line-number="504" class="react-line-number react-code-text" style="padding-right:16px">504</div><div data-line-number="505" class="react-line-number react-code-text" style="padding-right:16px">505</div><div data-line-number="506" class="react-line-number react-code-text" style="padding-right:16px">506</div><div data-line-number="507" class="react-line-number react-code-text" style="padding-right:16px">507</div><div data-line-number="508" class="react-line-number react-code-text" style="padding-right:16px">508</div><div data-line-number="509" class="react-line-number react-code-text" style="padding-right:16px">509</div><div data-line-number="510" class="react-line-number react-code-text" style="padding-right:16px">510</div><div data-line-number="511" class="react-line-number react-code-text" style="padding-right:16px">511</div><div data-line-number="512" class="react-line-number react-code-text" style="padding-right:16px">512</div><div data-line-number="513" class="react-line-number react-code-text" style="padding-right:16px">513</div><div data-line-number="514" class="react-line-number react-code-text" style="padding-right:16px">514</div><div data-line-number="515" class="react-line-number react-code-text" style="padding-right:16px">515</div><div data-line-number="516" class="react-line-number react-code-text" style="padding-right:16px">516</div><div data-line-number="517" class="react-line-number react-code-text" style="padding-right:16px">517</div><div data-line-number="518" class="react-line-number react-code-text" style="padding-right:16px">518</div><div data-line-number="519" class="react-line-number react-code-text" style="padding-right:16px">519</div><div data-line-number="520" class="react-line-number react-code-text" style="padding-right:16px">520</div><div data-line-number="521" class="react-line-number react-code-text" style="padding-right:16px">521</div><div data-line-number="522" class="react-line-number react-code-text" style="padding-right:16px">522</div><div data-line-number="523" class="react-line-number react-code-text" style="padding-right:16px">523</div><div data-line-number="524" class="react-line-number react-code-text" style="padding-right:16px">524</div><div data-line-number="525" class="react-line-number react-code-text" style="padding-right:16px">525</div><div data-line-number="526" class="react-line-number react-code-text" style="padding-right:16px">526</div><div data-line-number="527" class="react-line-number react-code-text" style="padding-right:16px">527</div><div data-line-number="528" class="react-line-number react-code-text" style="padding-right:16px">528</div><div data-line-number="529" class="react-line-number react-code-text" style="padding-right:16px">529</div><div data-line-number="530" class="react-line-number react-code-text" style="padding-right:16px">530</div><div data-line-number="531" class="react-line-number react-code-text" style="padding-right:16px">531</div><div data-line-number="532" class="react-line-number react-code-text" style="padding-right:16px">532</div><div data-line-number="533" class="react-line-number react-code-text" style="padding-right:16px">533</div><div data-line-number="534" class="react-line-number react-code-text" style="padding-right:16px">534</div><div data-line-number="535" class="react-line-number react-code-text" style="padding-right:16px">535</div><div data-line-number="536" class="react-line-number react-code-text" style="padding-right:16px">536</div><div data-line-number="537" class="react-line-number react-code-text" style="padding-right:16px">537</div><div data-line-number="538" class="react-line-number react-code-text" style="padding-right:16px">538</div><div data-line-number="539" class="react-line-number react-code-text" style="padding-right:16px">539</div><div data-line-number="540" class="react-line-number react-code-text" style="padding-right:16px">540</div><div data-line-number="541" class="react-line-number react-code-text" style="padding-right:16px">541</div><div data-line-number="542" class="react-line-number react-code-text" style="padding-right:16px">542</div><div data-line-number="543" class="react-line-number react-code-text" style="padding-right:16px">543</div><div data-line-number="544" class="react-line-number react-code-text" style="padding-right:16px">544</div><div data-line-number="545" class="react-line-number react-code-text" style="padding-right:16px">545</div><div data-line-number="546" class="react-line-number react-code-text" style="padding-right:16px">546</div><div data-line-number="547" class="react-line-number react-code-text" style="padding-right:16px">547</div><div data-line-number="548" class="react-line-number react-code-text" style="padding-right:16px">548</div><div data-line-number="549" class="react-line-number react-code-text" style="padding-right:16px">549</div><div data-line-number="550" class="react-line-number react-code-text" style="padding-right:16px">550</div><div data-line-number="551" class="react-line-number react-code-text" style="padding-right:16px">551</div><div data-line-number="552" class="react-line-number react-code-text" style="padding-right:16px">552</div><div data-line-number="553" class="react-line-number react-code-text" style="padding-right:16px">553</div><div data-line-number="554" class="react-line-number react-code-text" style="padding-right:16px">554</div><div data-line-number="555" class="react-line-number react-code-text" style="padding-right:16px">555</div><div data-line-number="556" class="react-line-number react-code-text" style="padding-right:16px">556</div><div data-line-number="557" class="react-line-number react-code-text" style="padding-right:16px">557</div><div data-line-number="558" class="react-line-number react-code-text" style="padding-right:16px">558</div><div data-line-number="559" class="react-line-number react-code-text" style="padding-right:16px">559</div><div data-line-number="560" class="react-line-number react-code-text" style="padding-right:16px">560</div><div data-line-number="561" class="react-line-number react-code-text" style="padding-right:16px">561</div><div data-line-number="562" class="react-line-number react-code-text" style="padding-right:16px">562</div><div data-line-number="563" class="react-line-number react-code-text" style="padding-right:16px">563</div><div data-line-number="564" class="react-line-number react-code-text" style="padding-right:16px">564</div><div data-line-number="565" class="react-line-number react-code-text" style="padding-right:16px">565</div><div data-line-number="566" class="react-line-number react-code-text" style="padding-right:16px">566</div><div data-line-number="567" class="react-line-number react-code-text" style="padding-right:16px">567</div><div data-line-number="568" class="react-line-number react-code-text" style="padding-right:16px">568</div><div data-line-number="569" class="react-line-number react-code-text" style="padding-right:16px">569</div><div data-line-number="570" class="react-line-number react-code-text" style="padding-right:16px">570</div><div data-line-number="571" class="react-line-number react-code-text" style="padding-right:16px">571</div><div data-line-number="572" class="react-line-number react-code-text" style="padding-right:16px">572</div><div data-line-number="573" class="react-line-number react-code-text" style="padding-right:16px">573</div><div data-line-number="574" class="react-line-number react-code-text" style="padding-right:16px">574</div><div data-line-number="575" class="react-line-number react-code-text" style="padding-right:16px">575</div><div data-line-number="576" class="react-line-number react-code-text" style="padding-right:16px">576</div><div data-line-number="577" class="react-line-number react-code-text" style="padding-right:16px">577</div><div data-line-number="578" class="react-line-number react-code-text" style="padding-right:16px">578</div><div data-line-number="579" class="react-line-number react-code-text" style="padding-right:16px">579</div><div data-line-number="580" class="react-line-number react-code-text" style="padding-right:16px">580</div><div data-line-number="581" class="react-line-number react-code-text" style="padding-right:16px">581</div><div data-line-number="582" class="react-line-number react-code-text" style="padding-right:16px">582</div><div data-line-number="583" class="react-line-number react-code-text" style="padding-right:16px">583</div><div data-line-number="584" class="react-line-number react-code-text" style="padding-right:16px">584</div><div data-line-number="585" class="react-line-number react-code-text" style="padding-right:16px">585</div><div data-line-number="586" class="react-line-number react-code-text" style="padding-right:16px">586</div><div data-line-number="587" class="react-line-number react-code-text" style="padding-right:16px">587</div><div data-line-number="588" class="react-line-number react-code-text" style="padding-right:16px">588</div><div data-line-number="589" class="react-line-number react-code-text" style="padding-right:16px">589</div><div data-line-number="590" class="react-line-number react-code-text" style="padding-right:16px">590</div><div data-line-number="591" class="react-line-number react-code-text" style="padding-right:16px">591</div><div data-line-number="592" class="react-line-number react-code-text" style="padding-right:16px">592</div><div data-line-number="593" class="react-line-number react-code-text" style="padding-right:16px">593</div><div data-line-number="594" class="react-line-number react-code-text" style="padding-right:16px">594</div><div data-line-number="595" class="react-line-number react-code-text" style="padding-right:16px">595</div><div data-line-number="596" class="react-line-number react-code-text" style="padding-right:16px">596</div><div data-line-number="597" class="react-line-number react-code-text" style="padding-right:16px">597</div><div data-line-number="598" class="react-line-number react-code-text" style="padding-right:16px">598</div><div data-line-number="599" class="react-line-number react-code-text" style="padding-right:16px">599</div><div data-line-number="600" class="react-line-number react-code-text" style="padding-right:16px">600</div><div data-line-number="601" class="react-line-number react-code-text" style="padding-right:16px">601</div><div data-line-number="602" class="react-line-number react-code-text" style="padding-right:16px">602</div><div data-line-number="603" class="react-line-number react-code-text" style="padding-right:16px">603</div><div data-line-number="604" class="react-line-number react-code-text" style="padding-right:16px">604</div><div data-line-number="605" class="react-line-number react-code-text" style="padding-right:16px">605</div><div data-line-number="606" class="react-line-number react-code-text" style="padding-right:16px">606</div><div data-line-number="607" class="react-line-number react-code-text" style="padding-right:16px">607</div><div data-line-number="608" class="react-line-number react-code-text" style="padding-right:16px">608</div><div data-line-number="609" class="react-line-number react-code-text" style="padding-right:16px">609</div><div data-line-number="610" class="react-line-number react-code-text" style="padding-right:16px">610</div><div data-line-number="611" class="react-line-number react-code-text" style="padding-right:16px">611</div><div data-line-number="612" class="react-line-number react-code-text" style="padding-right:16px">612</div><div data-line-number="613" class="react-line-number react-code-text" style="padding-right:16px">613</div><div data-line-number="614" class="react-line-number react-code-text" style="padding-right:16px">614</div><div data-line-number="615" class="react-line-number react-code-text" style="padding-right:16px">615</div><div data-line-number="616" class="react-line-number react-code-text" style="padding-right:16px">616</div><div data-line-number="617" class="react-line-number react-code-text" style="padding-right:16px">617</div><div data-line-number="618" class="react-line-number react-code-text" style="padding-right:16px">618</div><div data-line-number="619" class="react-line-number react-code-text" style="padding-right:16px">619</div><div data-line-number="620" class="react-line-number react-code-text" style="padding-right:16px">620</div><div data-line-number="621" class="react-line-number react-code-text" style="padding-right:16px">621</div><div data-line-number="622" class="react-line-number react-code-text" style="padding-right:16px">622</div><div data-line-number="623" class="react-line-number react-code-text" style="padding-right:16px">623</div><div data-line-number="624" class="react-line-number react-code-text" style="padding-right:16px">624</div><div data-line-number="625" class="react-line-number react-code-text" style="padding-right:16px">625</div><div data-line-number="626" class="react-line-number react-code-text" style="padding-right:16px">626</div><div data-line-number="627" class="react-line-number react-code-text" style="padding-right:16px">627</div><div data-line-number="628" class="react-line-number react-code-text" style="padding-right:16px">628</div><div data-line-number="629" class="react-line-number react-code-text" style="padding-right:16px">629</div><div data-line-number="630" class="react-line-number react-code-text" style="padding-right:16px">630</div><div data-line-number="631" class="react-line-number react-code-text" style="padding-right:16px">631</div><div data-line-number="632" class="react-line-number react-code-text" style="padding-right:16px">632</div><div data-line-number="633" class="react-line-number react-code-text" style="padding-right:16px">633</div><div data-line-number="634" class="react-line-number react-code-text" style="padding-right:16px">634<span class="Box-sc-g0xbh4-0 hXUKEK"><div aria-label="Collapse code section" role="button" class="Box-sc-g0xbh4-0 cXzIIR"><svg aria-hidden="true" focusable="false" role="img" class="Octicon-sc-9kayk9-0" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><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="635" class="child-of-line-633 react-line-number react-code-text" style="padding-right:16px">635</div><div data-line-number="636" class="child-of-line-633 react-line-number react-code-text" style="padding-right:16px">636</div><div data-line-number="637" class="child-of-line-633 react-line-number react-code-text" style="padding-right:16px">637</div><div data-line-number="638" class="child-of-line-633 react-line-number react-code-text" style="padding-right:16px">638</div><div data-line-number="639" class="react-line-number react-code-text" style="padding-right:16px">639</div><div data-line-number="640" class="react-line-number react-code-text" style="padding-right:16px">640</div><div data-line-number="641" class="react-line-number react-code-text" style="padding-right:16px">641</div><div data-line-number="642" class="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</div><div data-line-number="655" class="react-line-number react-code-text" style="padding-right:16px">655</div><div data-line-number="656" class="react-line-number react-code-text" style="padding-right:16px">656</div><div data-line-number="657" class="react-line-number react-code-text" style="padding-right:16px">657</div><div data-line-number="658" class="react-line-number react-code-text" style="padding-right:16px">658</div><div data-line-number="659" class="react-line-number react-code-text" style="padding-right:16px">659</div><div data-line-number="660" class="react-line-number react-code-text" style="padding-right:16px">660</div><div data-line-number="661" class="react-line-number react-code-text" style="padding-right:16px">661</div><div data-line-number="662" class="react-line-number react-code-text" style="padding-right:16px">662</div><div data-line-number="663" class="react-line-number react-code-text" style="padding-right:16px">663</div><div data-line-number="664" class="react-line-number react-code-text" style="padding-right:16px">664</div><div data-line-number="665" class="react-line-number react-code-text" style="padding-right:16px">665</div><div data-line-number="666" class="react-line-number react-code-text" style="padding-right:16px">666</div><div data-line-number="667" class="react-line-number react-code-text" style="padding-right:16px">667</div><div data-line-number="668" class="react-line-number react-code-text" style="padding-right:16px">668</div><div data-line-number="669" class="react-line-number react-code-text" style="padding-right:16px">669</div><div data-line-number="670" class="react-line-number react-code-text" style="padding-right:16px">670</div><div data-line-number="671" class="react-line-number react-code-text" style="padding-right:16px">671</div><div data-line-number="672" class="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</div><div data-line-number="677" class="react-line-number react-code-text" style="padding-right:16px">677</div><div data-line-number="678" class="react-line-number react-code-text" style="padding-right:16px">678</div><div data-line-number="679" class="react-line-number react-code-text" style="padding-right:16px">679</div><div data-line-number="680" class="react-line-number react-code-text" style="padding-right:16px">680</div><div data-line-number="681" class="react-line-number react-code-text" style="padding-right:16px">681</div><div data-line-number="682" class="react-line-number react-code-text" style="padding-right:16px">682</div><div data-line-number="683" class="react-line-number react-code-text" style="padding-right:16px">683</div><div data-line-number="684" class="react-line-number react-code-text" style="padding-right:16px">684</div><div data-line-number="685" class="react-line-number react-code-text" style="padding-right:16px">685</div><div data-line-number="686" class="react-line-number react-code-text" style="padding-right:16px">686</div><div data-line-number="687" class="react-line-number react-code-text" style="padding-right:16px">687</div><div data-line-number="688" class="react-line-number react-code-text" style="padding-right:16px">688</div><div data-line-number="689" class="react-line-number react-code-text" style="padding-right:16px">689</div><div data-line-number="690" class="react-line-number react-code-text" style="padding-right:16px">690</div><div data-line-number="691" class="react-line-number react-code-text" style="padding-right:16px">691</div><div data-line-number="692" class="react-line-number react-code-text" style="padding-right:16px">692</div><div data-line-number="693" class="react-line-number react-code-text" style="padding-right:16px">693</div><div data-line-number="694" class="react-line-number react-code-text" style="padding-right:16px">694</div><div data-line-number="695" class="react-line-number react-code-text" style="padding-right:16px">695</div><div data-line-number="696" class="react-line-number react-code-text" style="padding-right:16px">696</div><div data-line-number="697" class="react-line-number react-code-text" style="padding-right:16px">697</div><div data-line-number="698" class="react-line-number react-code-text" style="padding-right:16px">698</div><div data-line-number="699" class="react-line-number react-code-text" style="padding-right:16px">699</div><div data-line-number="700" class="react-line-number react-code-text" style="padding-right:16px">700</div><div data-line-number="701" class="react-line-number react-code-text" style="padding-right:16px">701</div><div data-line-number="702" class="react-line-number react-code-text" style="padding-right:16px">702</div><div data-line-number="703" class="react-line-number react-code-text" style="padding-right:16px">703</div><div data-line-number="704" class="react-line-number react-code-text" style="padding-right:16px">704</div><div data-line-number="705" class="react-line-number react-code-text" style="padding-right:16px">705</div><div data-line-number="706" class="react-line-number react-code-text" style="padding-right:16px">706</div><div data-line-number="707" class="react-line-number react-code-text" style="padding-right:16px">707</div><div data-line-number="708" class="react-line-number react-code-text" style="padding-right:16px">708</div><div data-line-number="709" class="react-line-number react-code-text" style="padding-right:16px">709</div><div data-line-number="710" class="react-line-number react-code-text" style="padding-right:16px">710</div><div data-line-number="711" class="react-line-number react-code-text" style="padding-right:16px">711</div><div data-line-number="712" class="react-line-number react-code-text" style="padding-right:16px">712</div><div data-line-number="713" class="react-line-number react-code-text" style="padding-right:16px">713</div><div data-line-number="714" class="react-line-number react-code-text" style="padding-right:16px">714</div><div data-line-number="715" class="react-line-number react-code-text" style="padding-right:16px">715</div><div data-line-number="716" class="react-line-number react-code-text" style="padding-right:16px">716</div><div data-line-number="717" class="react-line-number react-code-text" style="padding-right:16px">717</div><div data-line-number="718" class="react-line-number react-code-text" style="padding-right:16px">718</div><div data-line-number="719" class="react-line-number react-code-text" style="padding-right:16px">719</div><div data-line-number="720" class="react-line-number react-code-text" style="padding-right:16px">720</div><div data-line-number="721" class="react-line-number react-code-text" style="padding-right:16px">721</div><div data-line-number="722" class="react-line-number react-code-text" style="padding-right:16px">722</div><div data-line-number="723" class="react-line-number react-code-text" style="padding-right:16px">723</div><div data-line-number="724" class="react-line-number react-code-text" style="padding-right:16px">724</div><div data-line-number="725" class="react-line-number react-code-text" style="padding-right:16px">725</div><div data-line-number="726" class="react-line-number react-code-text" style="padding-right:16px">726</div><div data-line-number="727" class="react-line-number react-code-text" style="padding-right:16px">727</div><div data-line-number="728" class="react-line-number react-code-text" style="padding-right:16px">728</div><div data-line-number="729" class="react-line-number react-code-text" style="padding-right:16px">729</div><div data-line-number="730" class="react-line-number react-code-text" style="padding-right:16px">730</div><div data-line-number="731" class="react-line-number react-code-text" style="padding-right:16px">731</div><div data-line-number="732" class="react-line-number react-code-text" style="padding-right:16px">732</div><div data-line-number="733" class="react-line-number react-code-text" style="padding-right:16px">733</div><div data-line-number="734" class="react-line-number react-code-text" style="padding-right:16px">734</div><div data-line-number="735" class="react-line-number react-code-text" style="padding-right:16px">735</div><div data-line-number="736" class="react-line-number react-code-text" style="padding-right:16px">736</div><div data-line-number="737" class="react-line-number react-code-text" style="padding-right:16px">737</div><div data-line-number="738" class="react-line-number react-code-text" style="padding-right:16px">738</div><div data-line-number="739" class="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</div><div data-line-number="744" class="react-line-number react-code-text" style="padding-right:16px">744</div><div data-line-number="745" class="react-line-number react-code-text" style="padding-right:16px">745</div><div data-line-number="746" class="react-line-number react-code-text" style="padding-right:16px">746</div><div data-line-number="747" class="react-line-number react-code-text" style="padding-right:16px">747</div><div data-line-number="748" class="react-line-number react-code-text" style="padding-right:16px">748</div><div data-line-number="749" class="react-line-number react-code-text" style="padding-right:16px">749</div><div data-line-number="750" class="react-line-number react-code-text" style="padding-right:16px">750</div><div data-line-number="751" class="react-line-number react-code-text" style="padding-right:16px">751</div><div data-line-number="752" class="react-line-number react-code-text" style="padding-right:16px">752</div><div data-line-number="753" class="react-line-number react-code-text" style="padding-right:16px">753</div><div data-line-number="754" class="react-line-number react-code-text" style="padding-right:16px">754</div><div data-line-number="755" class="react-line-number react-code-text" style="padding-right:16px">755</div><div data-line-number="756" class="react-line-number react-code-text" style="padding-right:16px">756</div><div data-line-number="757" class="react-line-number react-code-text" style="padding-right:16px">757</div><div data-line-number="758" class="react-line-number react-code-text" style="padding-right:16px">758</div><div data-line-number="759" class="react-line-number react-code-text" style="padding-right:16px">759</div><div data-line-number="760" class="react-line-number react-code-text" style="padding-right:16px">760</div><div data-line-number="761" class="react-line-number react-code-text" style="padding-right:16px">761</div><div data-line-number="762" class="react-line-number react-code-text" style="padding-right:16px">762</div><div data-line-number="763" class="react-line-number react-code-text" style="padding-right:16px">763</div><div data-line-number="764" class="react-line-number react-code-text" style="padding-right:16px">764</div><div data-line-number="765" class="react-line-number react-code-text" style="padding-right:16px">765</div><div data-line-number="766" class="react-line-number react-code-text" style="padding-right:16px">766</div><div data-line-number="767" class="react-line-number react-code-text" style="padding-right:16px">767</div><div data-line-number="768" class="react-line-number react-code-text" style="padding-right:16px">768</div><div data-line-number="769" class="react-line-number react-code-text" style="padding-right:16px">769</div><div data-line-number="770" class="react-line-number react-code-text" style="padding-right:16px">770</div><div data-line-number="771" class="react-line-number react-code-text" style="padding-right:16px">771</div><div data-line-number="772" class="react-line-number react-code-text" style="padding-right:16px">772</div><div data-line-number="773" class="react-line-number react-code-text" style="padding-right:16px">773</div><div data-line-number="774" class="react-line-number react-code-text" style="padding-right:16px">774</div><div data-line-number="775" class="react-line-number react-code-text" style="padding-right:16px">775</div><div data-line-number="776" class="react-line-number react-code-text" style="padding-right:16px">776</div><div data-line-number="777" class="react-line-number react-code-text" style="padding-right:16px">777</div><div data-line-number="778" class="react-line-number react-code-text" style="padding-right:16px">778</div><div data-line-number="779" class="react-line-number react-code-text" style="padding-right:16px">779</div><div data-line-number="780" class="react-line-number react-code-text" style="padding-right:16px">780</div><div data-line-number="781" class="react-line-number react-code-text" style="padding-right:16px">781</div><div data-line-number="782" class="react-line-number react-code-text" style="padding-right:16px">782</div><div data-line-number="783" class="react-line-number react-code-text" style="padding-right:16px">783</div><div data-line-number="784" class="react-line-number react-code-text" style="padding-right:16px">784</div><div data-line-number="785" class="react-line-number react-code-text" style="padding-right:16px">785</div><div data-line-number="786" class="react-line-number react-code-text" style="padding-right:16px">786</div><div data-line-number="787" class="react-line-number react-code-text" style="padding-right:16px">787</div><div data-line-number="788" class="react-line-number react-code-text" style="padding-right:16px">788</div><div data-line-number="789" class="react-line-number react-code-text" style="padding-right:16px">789</div><div data-line-number="790" class="react-line-number react-code-text" style="padding-right:16px">790</div><div data-line-number="791" class="react-line-number react-code-text" style="padding-right:16px">791</div><div data-line-number="792" class="react-line-number react-code-text" style="padding-right:16px">792</div><div data-line-number="793" class="react-line-number react-code-text" style="padding-right:16px">793</div><div data-line-number="794" class="react-line-number react-code-text" style="padding-right:16px">794</div><div data-line-number="795" class="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</div><div data-line-number="803" class="react-line-number react-code-text" style="padding-right:16px">803</div><div data-line-number="804" class="react-line-number react-code-text" style="padding-right:16px">804</div><div data-line-number="805" class="react-line-number react-code-text" style="padding-right:16px">805</div><div data-line-number="806" class="react-line-number react-code-text" style="padding-right:16px">806</div><div data-line-number="807" class="react-line-number react-code-text" style="padding-right:16px">807</div><div data-line-number="808" class="react-line-number react-code-text" style="padding-right:16px">808</div><div data-line-number="809" class="react-line-number react-code-text" style="padding-right:16px">809</div><div data-line-number="810" class="react-line-number react-code-text" style="padding-right:16px">810</div><div data-line-number="811" class="react-line-number react-code-text" style="padding-right:16px">811</div><div data-line-number="812" class="react-line-number react-code-text" style="padding-right:16px">812</div><div data-line-number="813" class="react-line-number react-code-text" style="padding-right:16px">813</div><div data-line-number="814" class="react-line-number react-code-text" style="padding-right:16px">814</div><div data-line-number="815" class="react-line-number react-code-text" style="padding-right:16px">815</div><div data-line-number="816" class="react-line-number react-code-text" style="padding-right:16px">816</div><div data-line-number="817" class="react-line-number react-code-text" style="padding-right:16px">817</div><div data-line-number="818" class="react-line-number react-code-text" style="padding-right:16px">818</div><div data-line-number="819" class="react-line-number react-code-text" style="padding-right:16px">819</div><div data-line-number="820" class="react-line-number react-code-text" style="padding-right:16px">820</div><div data-line-number="821" class="react-line-number react-code-text" style="padding-right:16px">821</div><div data-line-number="822" class="react-line-number react-code-text" style="padding-right:16px">822</div><div data-line-number="823" class="react-line-number react-code-text" style="padding-right:16px">823</div><div data-line-number="824" class="react-line-number react-code-text" style="padding-right:16px">824</div><div data-line-number="825" class="react-line-number react-code-text" style="padding-right:16px">825</div><div data-line-number="826" class="react-line-number react-code-text" style="padding-right:16px">826</div><div data-line-number="827" class="react-line-number react-code-text" style="padding-right:16px">827</div><div data-line-number="828" class="react-line-number react-code-text" style="padding-right:16px">828</div><div data-line-number="829" class="react-line-number react-code-text" style="padding-right:16px">829</div><div data-line-number="830" class="react-line-number react-code-text" style="padding-right:16px">830</div><div data-line-number="831" class="react-line-number react-code-text" style="padding-right:16px">831</div><div data-line-number="832" class="react-line-number react-code-text" style="padding-right:16px">832</div><div data-line-number="833" class="react-line-number react-code-text" style="padding-right:16px">833</div><div data-line-number="834" class="react-line-number react-code-text" style="padding-right:16px">834</div><div data-line-number="835" class="react-line-number react-code-text" style="padding-right:16px">835</div><div data-line-number="836" class="react-line-number react-code-text" style="padding-right:16px">836</div><div data-line-number="837" class="react-line-number react-code-text" style="padding-right:16px">837</div><div data-line-number="838" class="react-line-number react-code-text" style="padding-right:16px">838</div><div data-line-number="839" class="react-line-number react-code-text" style="padding-right:16px">839</div><div data-line-number="840" class="react-line-number react-code-text" style="padding-right:16px">840</div><div data-line-number="841" class="react-line-number react-code-text" style="padding-right:16px">841</div><div data-line-number="842" class="react-line-number react-code-text" style="padding-right:16px">842</div><div data-line-number="843" class="react-line-number react-code-text" style="padding-right:16px">843</div><div data-line-number="844" class="react-line-number react-code-text" style="padding-right:16px">844</div><div data-line-number="845" class="react-line-number react-code-text" style="padding-right:16px">845</div><div data-line-number="846" class="react-line-number react-code-text" style="padding-right:16px">846</div><div data-line-number="847" class="react-line-number react-code-text" style="padding-right:16px">847</div><div data-line-number="848" class="react-line-number react-code-text" style="padding-right:16px">848</div><div data-line-number="849" class="react-line-number react-code-text" style="padding-right:16px">849</div><div data-line-number="850" class="react-line-number react-code-text" style="padding-right:16px">850</div><div data-line-number="851" class="react-line-number react-code-text" style="padding-right:16px">851</div><div data-line-number="852" class="react-line-number react-code-text" style="padding-right:16px">852</div><div data-line-number="853" class="react-line-number react-code-text" style="padding-right:16px">853</div><div data-line-number="854" class="react-line-number react-code-text" style="padding-right:16px">854</div><div data-line-number="855" class="react-line-number react-code-text" style="padding-right:16px">855</div><div data-line-number="856" class="react-line-number react-code-text" style="padding-right:16px">856</div><div data-line-number="857" class="react-line-number react-code-text" style="padding-right:16px">857</div><div data-line-number="858" class="react-line-number react-code-text" style="padding-right:16px">858</div><div data-line-number="859" class="react-line-number react-code-text" style="padding-right:16px">859</div><div data-line-number="860" class="react-line-number react-code-text" style="padding-right:16px">860</div><div data-line-number="861" class="react-line-number react-code-text" style="padding-right:16px">861</div><div data-line-number="862" class="react-line-number react-code-text" style="padding-right:16px">862</div><div data-line-number="863" class="react-line-number react-code-text" style="padding-right:16px">863</div><div data-line-number="864" class="react-line-number react-code-text" style="padding-right:16px">864</div><div data-line-number="865" class="react-line-number react-code-text" style="padding-right:16px">865</div><div data-line-number="866" class="react-line-number react-code-text" style="padding-right:16px">866</div><div data-line-number="867" class="react-line-number react-code-text" style="padding-right:16px">867</div><div data-line-number="868" class="react-line-number react-code-text" style="padding-right:16px">868</div><div data-line-number="869" class="react-line-number react-code-text" style="padding-right:16px">869</div><div data-line-number="870" class="react-line-number react-code-text" style="padding-right:16px">870</div><div data-line-number="871" class="react-line-number react-code-text" style="padding-right:16px">871</div><div data-line-number="872" class="react-line-number react-code-text" style="padding-right:16px">872</div><div data-line-number="873" class="react-line-number react-code-text" style="padding-right:16px">873</div><div data-line-number="874" class="react-line-number react-code-text" style="padding-right:16px">874</div><div data-line-number="875" class="react-line-number react-code-text" style="padding-right:16px">875</div><div data-line-number="876" class="react-line-number react-code-text" style="padding-right:16px">876</div><div data-line-number="877" class="react-line-number react-code-text" style="padding-right:16px">877</div><div data-line-number="878" class="react-line-number react-code-text" style="padding-right:16px">878</div><div data-line-number="879" class="react-line-number react-code-text" style="padding-right:16px">879</div><div data-line-number="880" class="react-line-number react-code-text" style="padding-right:16px">880</div><div data-line-number="881" class="react-line-number react-code-text" style="padding-right:16px">881</div><div data-line-number="882" class="react-line-number react-code-text" style="padding-right:16px">882</div><div data-line-number="883" class="react-line-number react-code-text" style="padding-right:16px">883</div><div data-line-number="884" class="react-line-number react-code-text" style="padding-right:16px">884</div><div data-line-number="885" class="react-line-number react-code-text" style="padding-right:16px">885</div><div data-line-number="886" class="react-line-number react-code-text" style="padding-right:16px">886</div><div data-line-number="887" class="react-line-number react-code-text" style="padding-right:16px">887</div><div data-line-number="888" class="react-line-number react-code-text" style="padding-right:16px">888</div><div data-line-number="889" class="react-line-number react-code-text" style="padding-right:16px">889</div><div data-line-number="890" class="react-line-number react-code-text" style="padding-right:16px">890</div><div data-line-number="891" class="react-line-number react-code-text" style="padding-right:16px">891</div><div data-line-number="892" class="react-line-number react-code-text" style="padding-right:16px">892</div><div data-line-number="893" class="react-line-number react-code-text" style="padding-right:16px">893</div><div data-line-number="894" class="react-line-number react-code-text" style="padding-right:16px">894</div><div data-line-number="895" class="react-line-number react-code-text" style="padding-right:16px">895</div><div data-line-number="896" class="react-line-number react-code-text" style="padding-right:16px">896</div><div data-line-number="897" class="react-line-number react-code-text" style="padding-right:16px">897</div><div data-line-number="898" class="react-line-number react-code-text" style="padding-right:16px">898</div><div data-line-number="899" class="react-line-number react-code-text" style="padding-right:16px">899</div><div data-line-number="900" class="react-line-number react-code-text" style="padding-right:16px">900</div><div data-line-number="901" class="react-line-number react-code-text" style="padding-right:16px">901</div><div data-line-number="902" class="react-line-number react-code-text" style="padding-right:16px">902</div><div data-line-number="903" class="react-line-number react-code-text" style="padding-right:16px">903</div><div data-line-number="904" class="react-line-number react-code-text" style="padding-right:16px">904</div><div data-line-number="905" class="react-line-number react-code-text" style="padding-right:16px">905</div><div data-line-number="906" class="react-line-number react-code-text" style="padding-right:16px">906</div><div data-line-number="907" class="react-line-number react-code-text" style="padding-right:16px">907</div><div data-line-number="908" class="react-line-number react-code-text" style="padding-right:16px">908</div><div data-line-number="909" class="react-line-number react-code-text" style="padding-right:16px">909</div><div data-line-number="910" class="react-line-number react-code-text" style="padding-right:16px">910</div><div data-line-number="911" class="react-line-number react-code-text" style="padding-right:16px">911</div><div data-line-number="912" class="react-line-number react-code-text" style="padding-right:16px">912</div><div data-line-number="913" class="react-line-number react-code-text" style="padding-right:16px">913</div><div data-line-number="914" class="react-line-number react-code-text" style="padding-right:16px">914</div><div data-line-number="915" class="react-line-number react-code-text" style="padding-right:16px">915</div><div data-line-number="916" class="react-line-number react-code-text" style="padding-right:16px">916</div><div data-line-number="917" class="react-line-number react-code-text" style="padding-right:16px">917</div><div data-line-number="918" class="react-line-number react-code-text" style="padding-right:16px">918</div><div data-line-number="919" class="react-line-number react-code-text" style="padding-right:16px">919</div><div data-line-number="920" class="react-line-number react-code-text" style="padding-right:16px">920</div><div data-line-number="921" class="react-line-number react-code-text" style="padding-right:16px">921</div><div data-line-number="922" class="react-line-number react-code-text" style="padding-right:16px">922</div><div data-line-number="923" class="react-line-number react-code-text" style="padding-right:16px">923</div><div data-line-number="924" class="react-line-number react-code-text" style="padding-right:16px">924</div><div data-line-number="925" class="react-line-number react-code-text" style="padding-right:16px">925</div><div data-line-number="926" class="react-line-number react-code-text" style="padding-right:16px">926</div><div data-line-number="927" class="react-line-number react-code-text" style="padding-right:16px">927</div><div data-line-number="928" class="react-line-number react-code-text" style="padding-right:16px">928</div><div data-line-number="929" class="react-line-number react-code-text" style="padding-right:16px">929</div><div data-line-number="930" class="react-line-number react-code-text" style="padding-right:16px">930</div><div data-line-number="931" class="react-line-number react-code-text" style="padding-right:16px">931</div><div data-line-number="932" class="react-line-number react-code-text" style="padding-right:16px">932</div><div data-line-number="933" class="react-line-number react-code-text" style="padding-right:16px">933</div><div data-line-number="934" class="react-line-number react-code-text" style="padding-right:16px">934</div><div data-line-number="935" class="react-line-number react-code-text" style="padding-right:16px">935</div><div data-line-number="936" class="react-line-number react-code-text" style="padding-right:16px">936</div><div data-line-number="937" class="react-line-number react-code-text" style="padding-right:16px">937</div><div data-line-number="938" class="react-line-number react-code-text" style="padding-right:16px">938</div><div data-line-number="939" class="react-line-number react-code-text" style="padding-right:16px">939</div><div data-line-number="940" class="react-line-number react-code-text" style="padding-right:16px">940</div><div data-line-number="941" class="react-line-number react-code-text" style="padding-right:16px">941</div><div data-line-number="942" class="react-line-number react-code-text" style="padding-right:16px">942</div><div data-line-number="943" class="react-line-number react-code-text" style="padding-right:16px">943</div><div data-line-number="944" class="react-line-number react-code-text" style="padding-right:16px">944</div><div data-line-number="945" class="react-line-number react-code-text" style="padding-right:16px">945</div><div data-line-number="946" class="react-line-number react-code-text" style="padding-right:16px">946</div><div data-line-number="947" class="react-line-number react-code-text" style="padding-right:16px">947</div><div data-line-number="948" class="react-line-number react-code-text" style="padding-right:16px">948</div><div data-line-number="949" class="react-line-number react-code-text" style="padding-right:16px">949</div><div data-line-number="950" class="react-line-number react-code-text" style="padding-right:16px">950</div><div data-line-number="951" class="react-line-number react-code-text" style="padding-right:16px">951</div><div data-line-number="952" class="react-line-number react-code-text" style="padding-right:16px">952</div><div data-line-number="953" class="react-line-number react-code-text" style="padding-right:16px">953</div><div data-line-number="954" class="react-line-number react-code-text" style="padding-right:16px">954</div><div data-line-number="955" class="react-line-number react-code-text" style="padding-right:16px">955</div><div data-line-number="956" class="react-line-number react-code-text" style="padding-right:16px">956</div><div data-line-number="957" class="react-line-number react-code-text" style="padding-right:16px">957</div><div data-line-number="958" class="react-line-number react-code-text" style="padding-right:16px">958</div><div data-line-number="959" class="react-line-number react-code-text" style="padding-right:16px">959</div><div data-line-number="960" class="react-line-number react-code-text" style="padding-right:16px">960</div><div data-line-number="961" class="react-line-number react-code-text" style="padding-right:16px">961</div><div data-line-number="962" class="react-line-number react-code-text" style="padding-right:16px">962</div><div data-line-number="963" class="react-line-number react-code-text" style="padding-right:16px">963</div><div data-line-number="964" class="react-line-number react-code-text" style="padding-right:16px">964</div><div data-line-number="965" class="react-line-number react-code-text" style="padding-right:16px">965</div><div data-line-number="966" class="react-line-number react-code-text" style="padding-right:16px">966</div><div data-line-number="967" class="react-line-number react-code-text" style="padding-right:16px">967</div><div data-line-number="968" class="react-line-number react-code-text" style="padding-right:16px">968</div><div data-line-number="969" class="react-line-number react-code-text" style="padding-right:16px">969</div><div data-line-number="970" class="react-line-number react-code-text" style="padding-right:16px">970</div><div data-line-number="971" class="react-line-number react-code-text" style="padding-right:16px">971</div><div data-line-number="972" class="react-line-number react-code-text" style="padding-right:16px">972</div><div data-line-number="973" class="react-line-number react-code-text" style="padding-right:16px">973</div><div data-line-number="974" class="react-line-number react-code-text" style="padding-right:16px">974</div><div data-line-number="975" class="react-line-number react-code-text" style="padding-right:16px">975</div><div data-line-number="976" class="react-line-number react-code-text" style="padding-right:16px">976</div><div data-line-number="977" class="react-line-number react-code-text" style="padding-right:16px">977</div><div data-line-number="978" class="react-line-number react-code-text" style="padding-right:16px">978</div><div data-line-number="979" class="react-line-number react-code-text" style="padding-right:16px">979</div><div data-line-number="980" class="react-line-number react-code-text" style="padding-right:16px">980</div><div data-line-number="981" class="react-line-number react-code-text" style="padding-right:16px">981</div><div data-line-number="982" class="react-line-number react-code-text" style="padding-right:16px">982</div><div data-line-number="983" class="react-line-number react-code-text" style="padding-right:16px">983</div><div data-line-number="984" class="react-line-number react-code-text" style="padding-right:16px">984</div><div data-line-number="985" class="react-line-number react-code-text" style="padding-right:16px">985</div><div data-line-number="986" class="react-line-number react-code-text" style="padding-right:16px">986</div><div data-line-number="987" class="react-line-number react-code-text" style="padding-right:16px">987</div><div data-line-number="988" class="react-line-number react-code-text" style="padding-right:16px">988</div><div data-line-number="989" class="react-line-number react-code-text" style="padding-right:16px">989</div><div data-line-number="990" class="react-line-number react-code-text" style="padding-right:16px">990</div><div data-line-number="991" class="react-line-number react-code-text" style="padding-right:16px">991</div><div data-line-number="992" class="react-line-number react-code-text" style="padding-right:16px">992</div><div data-line-number="993" class="react-line-number react-code-text" style="padding-right:16px">993</div><div data-line-number="994" class="react-line-number react-code-text" style="padding-right:16px">994</div><div data-line-number="995" class="react-line-number react-code-text" style="padding-right:16px">995</div><div data-line-number="996" class="react-line-number react-code-text" style="padding-right:16px">996</div><div data-line-number="997" class="react-line-number react-code-text" style="padding-right:16px">997</div><div data-line-number="998" class="react-line-number react-code-text" style="padding-right:16px">998</div><div data-line-number="999" class="react-line-number react-code-text" style="padding-right:16px">999</div><div data-line-number="1000" class="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></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"> * A V4L2 driver for OmniVision OV7670 cameras.</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"><span class="pl-c"> *</span></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"> * Copyright 2006 One Laptop Per Child Association, Inc. Written</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"><span class="pl-c"> * by Jonathan Corbet with substantial inspiration from Mark</span></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"> * McClelland's ovcamchip code.</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"><span class="pl-c"> *</span></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"> * Copyright 2006-7 Jonathan Corbet <corbet@lwn.net></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"> *</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"> * This file may be distributed under the terms of the GNU General</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"> * Public License, version 2.</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"> */</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-k">#include</span> <span class="pl-s"><linux/init.h></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-k">#include</span> <span class="pl-s"><linux/module.h></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-k">#include</span> <span class="pl-s"><linux/slab.h></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-k">#include</span> <span class="pl-s"><linux/i2c.h></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-k">#include</span> <span class="pl-s"><linux/delay.h></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-k">#include</span> <span class="pl-s"><linux/videodev2.h></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-k">#include</span> <span class="pl-s"><media/v4l2-device.h></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-k">#include</span> <span class="pl-s"><media/v4l2-ctrls.h></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-k">#include</span> <span class="pl-s"><media/v4l2-mediabus.h></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-k">#include</span> <span class="pl-s"><media/v4l2-image-sizes.h></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"><span class="pl-k">#include</span> <span class="pl-s"><media/ov7670.h></span></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"> </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"><span class="pl-en">MODULE_AUTHOR</span>(<span class="pl-s">"Jonathan Corbet <corbet@lwn.net>"</span>);</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-en">MODULE_DESCRIPTION</span>(<span class="pl-s">"A low-level driver for OmniVision ov7670 sensors"</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-en">MODULE_LICENSE</span>(<span class="pl-s">"GPL"</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"> </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-k">static</span> <span class="pl-smi">bool</span> <span class="pl-s1">debug</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"><span class="pl-en">module_param</span>(<span class="pl-s1">debug</span>, <span class="pl-s1">bool</span>, <span class="pl-c1">0644</span>);</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-en">MODULE_PARM_DESC</span>(<span class="pl-s1">debug</span>, <span class="pl-s">"Debug level (0-1)"</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"> </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></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"><span class="pl-c"> * The 7670 sits on i2c with ID 0x42</span></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></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-k">#define</span> <span class="pl-c1">OV7670_I2C_ADDR</span> 0x42</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"> </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-k">#define</span> <span class="pl-c1">PLL_FACTOR</span> 4</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"> </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">/* Registers */</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-k">#define</span> <span class="pl-c1">REG_GAIN</span> 0x00 /* Gain lower 8 bits (rest in vref) */</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-k">#define</span> <span class="pl-c1">REG_BLUE</span> 0x01 /* blue gain */</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-k">#define</span> <span class="pl-c1">REG_RED</span> 0x02 /* red gain */</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-k">#define</span> <span class="pl-c1">REG_VREF</span> 0x03 /* Pieces of GAIN, VSTART, VSTOP */</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-k">#define</span> <span class="pl-c1">REG_COM1</span> 0x04 /* Control 1 */</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-k">#define</span> <span class="pl-c1">COM1_CCIR656</span> 0x40 /* CCIR656 enable */</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-k">#define</span> <span class="pl-c1">REG_BAVE</span> 0x05 /* U/B Average level */</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-k">#define</span> <span class="pl-s1">REG_GbAVE</span> 0x06 /* Y/Gb Average level */</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-k">#define</span> <span class="pl-c1">REG_AECHH</span> 0x07 /* AEC MS 5 bits */</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-k">#define</span> <span class="pl-c1">REG_RAVE</span> 0x08 /* V/R Average level */</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-k">#define</span> <span class="pl-c1">REG_COM2</span> 0x09 /* Control 2 */</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-k">#define</span> <span class="pl-c1">COM2_SSLEEP</span> 0x10 /* Soft sleep mode */</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-k">#define</span> <span class="pl-c1">REG_PID</span> 0x0a /* Product ID MSB */</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-k">#define</span> <span class="pl-c1">REG_VER</span> 0x0b /* Product ID LSB */</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-k">#define</span> <span class="pl-c1">REG_COM3</span> 0x0c /* Control 3 */</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-k">#define</span> <span class="pl-c1">COM3_SWAP</span> 0x40 /* Byte swap */</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-k">#define</span> <span class="pl-c1">COM3_SCALEEN</span> 0x08 /* Enable scaling */</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-k">#define</span> <span class="pl-c1">COM3_DCWEN</span> 0x04 /* Enable downsamp/crop/window */</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-k">#define</span> <span class="pl-c1">REG_COM4</span> 0x0d /* Control 4 */</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-k">#define</span> <span class="pl-c1">REG_COM5</span> 0x0e /* All "reserved" */</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-k">#define</span> <span class="pl-c1">REG_COM6</span> 0x0f /* Control 6 */</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-k">#define</span> <span class="pl-c1">REG_AECH</span> 0x10 /* More bits of AEC value */</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-k">#define</span> <span class="pl-c1">REG_CLKRC</span> 0x11 /* Clocl control */</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-k">#define</span> <span class="pl-c1">CLK_EXT</span> 0x40 /* Use external clock directly */</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-k">#define</span> <span class="pl-c1">CLK_SCALE</span> 0x3f /* Mask for internal clock scale */</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-k">#define</span> <span class="pl-c1">REG_COM7</span> 0x12 /* Control 7 */</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-k">#define</span> <span class="pl-c1">COM7_RESET</span> 0x80 /* Register reset */</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-k">#define</span> <span class="pl-c1">COM7_FMT_MASK</span> 0x38</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-k">#define</span> <span class="pl-c1">COM7_FMT_VGA</span> 0x00</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-k">#define</span> <span class="pl-c1">COM7_FMT_CIF</span> 0x20 /* CIF format */</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-k">#define</span> <span class="pl-c1">COM7_FMT_QVGA</span> 0x10 /* QVGA format */</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"><span class="pl-k">#define</span> <span class="pl-c1">COM7_FMT_QCIF</span> 0x08 /* QCIF format */</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-k">#define</span> <span class="pl-c1">COM7_RGB</span> 0x04 /* bits 0 and 2 - RGB format */</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-k">#define</span> <span class="pl-c1">COM7_YUV</span> 0x00 /* YUV */</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-k">#define</span> <span class="pl-c1">COM7_BAYER</span> 0x01 /* Bayer format */</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-k">#define</span> <span class="pl-c1">COM7_PBAYER</span> 0x05 /* "Processed bayer" */</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-k">#define</span> <span class="pl-c1">REG_COM8</span> 0x13 /* Control 8 */</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-k">#define</span> <span class="pl-c1">COM8_FASTAEC</span> 0x80 /* Enable fast AGC/AEC */</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-k">#define</span> <span class="pl-c1">COM8_AECSTEP</span> 0x40 /* Unlimited AEC step size */</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-k">#define</span> <span class="pl-c1">COM8_BFILT</span> 0x20 /* Band filter enable */</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-k">#define</span> <span class="pl-c1">COM8_AGC</span> 0x04 /* Auto gain enable */</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-k">#define</span> <span class="pl-c1">COM8_AWB</span> 0x02 /* White balance enable */</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-k">#define</span> <span class="pl-c1">COM8_AEC</span> 0x01 /* Auto exposure enable */</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-k">#define</span> <span class="pl-c1">REG_COM9</span> 0x14 /* Control 9 - gain ceiling */</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-k">#define</span> <span class="pl-c1">REG_COM10</span> 0x15 /* Control 10 */</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-k">#define</span> <span class="pl-c1">COM10_HSYNC</span> 0x40 /* HSYNC instead of HREF */</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-k">#define</span> <span class="pl-c1">COM10_PCLK_HB</span> 0x20 /* Suppress PCLK on horiz blank */</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-k">#define</span> <span class="pl-c1">COM10_HREF_REV</span> 0x08 /* Reverse HREF */</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-k">#define</span> <span class="pl-c1">COM10_VS_LEAD</span> 0x04 /* VSYNC on clock leading edge */</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-k">#define</span> <span class="pl-c1">COM10_VS_NEG</span> 0x02 /* VSYNC negative */</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-k">#define</span> <span class="pl-c1">COM10_HS_NEG</span> 0x01 /* HSYNC negative */</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-k">#define</span> <span class="pl-c1">REG_HSTART</span> 0x17 /* Horiz start high bits */</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-k">#define</span> <span class="pl-c1">REG_HSTOP</span> 0x18 /* Horiz stop high bits */</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-k">#define</span> <span class="pl-c1">REG_VSTART</span> 0x19 /* Vert start high bits */</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-k">#define</span> <span class="pl-c1">REG_VSTOP</span> 0x1a /* Vert stop high bits */</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-k">#define</span> <span class="pl-c1">REG_PSHFT</span> 0x1b /* Pixel delay after HREF */</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-k">#define</span> <span class="pl-c1">REG_MIDH</span> 0x1c /* Manuf. ID high */</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-k">#define</span> <span class="pl-c1">REG_MIDL</span> 0x1d /* Manuf. ID low */</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-k">#define</span> <span class="pl-c1">REG_MVFP</span> 0x1e /* Mirror / vflip */</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-k">#define</span> <span class="pl-c1">MVFP_MIRROR</span> 0x20 /* Mirror image */</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-k">#define</span> <span class="pl-c1">MVFP_FLIP</span> 0x10 /* Vertical flip */</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"> </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-k">#define</span> <span class="pl-c1">REG_AEW</span> 0x24 /* AGC upper limit */</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-k">#define</span> <span class="pl-c1">REG_AEB</span> 0x25 /* AGC lower limit */</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-k">#define</span> <span class="pl-c1">REG_VPT</span> 0x26 /* AGC/AEC fast mode op region */</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-k">#define</span> <span class="pl-c1">REG_HSYST</span> 0x30 /* HSYNC rising edge delay */</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-k">#define</span> <span class="pl-c1">REG_HSYEN</span> 0x31 /* HSYNC falling edge delay */</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-k">#define</span> <span class="pl-c1">REG_HREF</span> 0x32 /* HREF pieces */</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-k">#define</span> <span class="pl-c1">REG_TSLB</span> 0x3a /* lots of stuff */</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-k">#define</span> <span class="pl-c1">TSLB_YLAST</span> 0x04 /* UYVY or VYUY - see com13 */</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-k">#define</span> <span class="pl-c1">REG_COM11</span> 0x3b /* Control 11 */</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-k">#define</span> <span class="pl-c1">COM11_NIGHT</span> 0x80 /* NIght mode enable */</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-k">#define</span> <span class="pl-c1">COM11_NMFR</span> 0x60 /* Two bit NM frame rate */</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"><span class="pl-k">#define</span> <span class="pl-c1">COM11_HZAUTO</span> 0x10 /* Auto detect 50/60 Hz */</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-k">#define</span> <span class="pl-c1">COM11_50HZ</span> 0x08 /* Manual 50Hz select */</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-k">#define</span> <span class="pl-c1">COM11_EXP</span> 0x02</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-k">#define</span> <span class="pl-c1">REG_COM12</span> 0x3c /* Control 12 */</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-k">#define</span> <span class="pl-c1">COM12_HREF</span> 0x80 /* HREF always */</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-k">#define</span> <span class="pl-c1">REG_COM13</span> 0x3d /* Control 13 */</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-k">#define</span> <span class="pl-c1">COM13_GAMMA</span> 0x80 /* Gamma enable */</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-k">#define</span> <span class="pl-c1">COM13_UVSAT</span> 0x40 /* UV saturation auto adjustment */</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-k">#define</span> <span class="pl-c1">COM13_UVSWAP</span> 0x01 /* V before U - w/TSLB */</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-k">#define</span> <span class="pl-c1">REG_COM14</span> 0x3e /* Control 14 */</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-k">#define</span> <span class="pl-c1">COM14_DCWEN</span> 0x10 /* DCW/PCLK-scale enable */</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-k">#define</span> <span class="pl-c1">REG_EDGE</span> 0x3f /* Edge enhancement factor */</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-k">#define</span> <span class="pl-c1">REG_COM15</span> 0x40 /* Control 15 */</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-k">#define</span> <span class="pl-c1">COM15_R10F0</span> 0x00 /* Data range 10 to F0 */</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-k">#define</span> <span class="pl-c1">COM15_R01FE</span> 0x80 /* 01 to FE */</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-k">#define</span> <span class="pl-c1">COM15_R00FF</span> 0xc0 /* 00 to FF */</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-k">#define</span> <span class="pl-c1">COM15_RGB565</span> 0x10 /* RGB565 output */</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-k">#define</span> <span class="pl-c1">COM15_RGB555</span> 0x30 /* RGB555 output */</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-k">#define</span> <span class="pl-c1">REG_COM16</span> 0x41 /* Control 16 */</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-k">#define</span> <span class="pl-c1">COM16_AWBGAIN</span> 0x08 /* AWB gain enable */</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-k">#define</span> <span class="pl-c1">REG_COM17</span> 0x42 /* Control 17 */</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-k">#define</span> <span class="pl-c1">COM17_AECWIN</span> 0xc0 /* AEC window - must match COM4 */</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-k">#define</span> <span class="pl-c1">COM17_CBAR</span> 0x08 /* DSP Color bar */</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"> </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></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"> * This matrix defines how the colors are generated, must be</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"> * tweaked to adjust hue and saturation.</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></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"> * Order: v-red, v-green, v-blue, u-red, u-green, u-blue</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></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"> * They are nine-bit signed quantities, with the sign bit</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"> * stored in 0x58. Sign for v-red is bit 0, and up from there.</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></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-k">#define</span> <span class="pl-c1">REG_CMATRIX_BASE</span> 0x4f</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-k">#define</span> <span class="pl-c1">CMATRIX_LEN</span> 6</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-k">#define</span> <span class="pl-c1">REG_CMATRIX_SIGN</span> 0x58</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"> </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"><span class="pl-k">#define</span> <span class="pl-c1">REG_BRIGHT</span> 0x55 /* Brightness */</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-k">#define</span> <span class="pl-c1">REG_CONTRAS</span> 0x56 /* Contrast control */</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"> </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-k">#define</span> <span class="pl-c1">REG_GFIX</span> 0x69 /* Fix gain control */</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"> </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-k">#define</span> <span class="pl-c1">REG_DBLV</span> 0x6b /* PLL control an debugging */</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-k">#define</span> <span class="pl-c1">DBLV_BYPASS</span> 0x00 /* Bypass PLL */</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-k">#define</span> <span class="pl-c1">DBLV_X4</span> 0x01 /* clock x4 */</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-k">#define</span> <span class="pl-c1">DBLV_X6</span> 0x10 /* clock x6 */</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-k">#define</span> <span class="pl-c1">DBLV_X8</span> 0x11 /* clock x8 */</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"> </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-k">#define</span> <span class="pl-c1">REG_REG76</span> 0x76 /* OV's name */</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-k">#define</span> <span class="pl-c1">R76_BLKPCOR</span> 0x80 /* Black pixel correction enable */</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-k">#define</span> <span class="pl-c1">R76_WHTPCOR</span> 0x40 /* White pixel correction enable */</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"> </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-k">#define</span> <span class="pl-c1">REG_RGB444</span> 0x8c /* RGB 444 control */</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-k">#define</span> <span class="pl-c1">R444_ENABLE</span> 0x02 /* Turn on RGB444, overrides 5x5 */</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-k">#define</span> <span class="pl-c1">R444_RGBX</span> 0x01 /* Empty nibble at end */</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"> </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-k">#define</span> <span class="pl-c1">REG_HAECC1</span> 0x9f /* Hist AEC/AGC control 1 */</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-k">#define</span> <span class="pl-c1">REG_HAECC2</span> 0xa0 /* Hist AEC/AGC control 2 */</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"> </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-k">#define</span> <span class="pl-c1">REG_BD50MAX</span> 0xa5 /* 50hz banding step limit */</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-k">#define</span> <span class="pl-c1">REG_HAECC3</span> 0xa6 /* Hist AEC/AGC control 3 */</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-k">#define</span> <span class="pl-c1">REG_HAECC4</span> 0xa7 /* Hist AEC/AGC control 4 */</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-k">#define</span> <span class="pl-c1">REG_HAECC5</span> 0xa8 /* Hist AEC/AGC control 5 */</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-k">#define</span> <span class="pl-c1">REG_HAECC6</span> 0xa9 /* Hist AEC/AGC control 6 */</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-k">#define</span> <span class="pl-c1">REG_HAECC7</span> 0xaa /* Hist AEC/AGC control 7 */</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-k">#define</span> <span class="pl-c1">REG_BD60MAX</span> 0xab /* 60hz banding step limit */</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"> </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-k">enum</span> <span class="pl-smi">ov7670_model</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-c1">MODEL_OV7670</span> <span class="pl-c1">=</span> <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="LC184" class="react-file-line html-div" data-testid="code-cell" data-line-number="184" style="position:relative"> <span class="pl-c1">MODEL_OV7675</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"> </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-k">struct</span> <span class="pl-smi">ov7670_win_size</span> {</div></div></div><div class="child-of-line-186 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-smi">int</span> <span class="pl-c1">width</span>;</div></div></div><div class="child-of-line-186 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"> <span class="pl-smi">int</span> <span class="pl-c1">height</span>;</div></div></div><div class="child-of-line-186 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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">com7_bit</span>;</div></div></div><div class="child-of-line-186 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-smi">int</span> <span class="pl-c1">hstart</span>; <span class="pl-c">/* Start/stop values for the camera. Note */</span></div></div></div><div class="child-of-line-186 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-smi">int</span> <span class="pl-c1">hstop</span>; <span class="pl-c">/* that they do not always make complete */</span></div></div></div><div class="child-of-line-186 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"> <span class="pl-smi">int</span> <span class="pl-c1">vstart</span>; <span class="pl-c">/* sense to humans, but evidently the sensor */</span></div></div></div><div class="child-of-line-186 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-smi">int</span> <span class="pl-c1">vstop</span>; <span class="pl-c">/* will do the right thing... */</span></div></div></div><div class="child-of-line-186 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">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-c1">*</span><span class="pl-c1">regs</span>; <span class="pl-c">/* Regs to tweak */</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">};</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">struct</span> <span class="pl-smi">ov7670_devtype</span> {</div></div></div><div class="child-of-line-197 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-c">/* formats supported for each model */</span></div></div></div><div class="child-of-line-197 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">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-c1">*</span><span class="pl-c1">win_sizes</span>;</div></div></div><div class="child-of-line-197 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"> <span class="pl-smi">unsigned <span class="pl-smi">int</span></span> <span class="pl-c1">n_win_sizes</span>;</div></div></div><div class="child-of-line-197 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">/* callbacks for frame rate control */</span></div></div></div><div class="child-of-line-197 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-smi">int</span> (<span class="pl-c1">*</span><span class="pl-c1">set_framerate</span>)(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span>, <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span>);</div></div></div><div class="child-of-line-197 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"> <span class="pl-smi">void</span> (<span class="pl-c1">*</span><span class="pl-c1">get_framerate</span>)(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span>, <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span>);</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">};</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"> </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-c">/*</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-c"> * Information we maintain about a known sensor.</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-c"> */</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">struct</span> <span class="pl-smi">ov7670_format_struct</span>; <span class="pl-c">/* coming later */</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">struct</span> <span class="pl-smi">ov7670_info</span> {</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">sd</span>;</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl_handler</span> <span class="pl-c1">hdl</span>;</div></div></div><div class="child-of-line-210 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">struct</span> {</div></div></div><div class="child-of-line-210 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"> <span class="pl-c">/* gain cluster */</span></div></div></div><div class="child-of-line-210 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-k">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">auto_gain</span>;</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">gain</span>;</div></div></div><div class="child-of-line-210 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"> };</div></div></div><div class="child-of-line-210 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">struct</span> {</div></div></div><div class="child-of-line-210 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-c">/* exposure cluster */</span></div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">auto_exposure</span>;</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">exposure</span>;</div></div></div><div class="child-of-line-210 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"> };</div></div></div><div class="child-of-line-210 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">struct</span> {</div></div></div><div class="child-of-line-210 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-c">/* saturation/hue cluster */</span></div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">saturation</span>;</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-c1">hue</span>;</div></div></div><div class="child-of-line-210 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"> };</div></div></div><div class="child-of-line-210 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">struct</span> <span class="pl-smi">ov7670_format_struct</span> <span class="pl-c1">*</span><span class="pl-c1">fmt</span>; <span class="pl-c">/* Current format */</span></div></div></div><div class="child-of-line-210 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-smi">int</span> <span class="pl-c1">min_width</span>; <span class="pl-c">/* Filter out smaller sizes */</span></div></div></div><div class="child-of-line-210 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-smi">int</span> <span class="pl-c1">min_height</span>; <span class="pl-c">/* Filter out smaller sizes */</span></div></div></div><div class="child-of-line-210 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-smi">int</span> <span class="pl-c1">clock_speed</span>; <span class="pl-c">/* External clock speed (MHz) */</span></div></div></div><div class="child-of-line-210 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-smi">u8</span> <span class="pl-c1">clkrc</span>; <span class="pl-c">/* Clock divider value */</span></div></div></div><div class="child-of-line-210 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-smi">bool</span> <span class="pl-c1">use_smbus</span>; <span class="pl-c">/* Use smbus I/O instead of I2C */</span></div></div></div><div class="child-of-line-210 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-smi">bool</span> <span class="pl-c1">pll_bypass</span>;</div></div></div><div class="child-of-line-210 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-smi">bool</span> <span class="pl-c1">pclk_hb_disable</span>;</div></div></div><div class="child-of-line-210 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">const</span> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_devtype</span> <span class="pl-c1">*</span><span class="pl-c1">devtype</span>; <span class="pl-c">/* Device specifics */</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">};</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"> </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">static</span> <span class="pl-k">inline</span> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-en">to_state</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</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">{</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">return</span> <span class="pl-en">container_of</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">struct</span> <span class="pl-s1">ov7670_info</span>, <span class="pl-s1">sd</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">}</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-k">static</span> <span class="pl-k">inline</span> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-en">to_sd</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_ctrl</span> <span class="pl-c1">*</span><span class="pl-s1">ctrl</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">{</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-k">return</span> <span class="pl-c1">&</span><span class="pl-en">container_of</span>(<span class="pl-s1">ctrl</span><span class="pl-c1">-></span><span class="pl-c1">handler</span>, <span class="pl-s1">struct</span> <span class="pl-s1">ov7670_info</span>, <span class="pl-s1">hdl</span>)<span class="pl-c1">-></span><span class="pl-c1">sd</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">}</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"> </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"> </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"> </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></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"> * The default register settings, as obtained from OmniVision. There</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"> * is really no making sense of most of these - lots of "reserved" values</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"> * and such.</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></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"> * These settings give VGA YUYV.</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></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"> </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-k">struct</span> <span class="pl-smi">regval_list</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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">reg_num</span>;</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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">value</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">};</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"> </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">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_default_regs</span>[] <span class="pl-c1">=</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-c1">REG_COM7</span>, <span class="pl-c1">COM7_RESET</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-c">/*</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-c"> * Clock scale: 3 = 15fps</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"><span class="pl-c"> * 2 = 20fps</span></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"> * 1 = 30fps</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-c"> */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_CLKRC</span>, <span class="pl-c1">0x1</span> }, <span class="pl-c">/* OV: clock scale (30 fps) */</span></div></div></div><div class="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-c1">REG_TSLB</span>, <span class="pl-c1">0x04</span> }, <span class="pl-c">/* OV */</span></div></div></div><div class="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-c1">REG_COM7</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* VGA */</span></div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Set the hardware window. These values from OV don't entirely</span></div></div></div><div class="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"> * make sense - hstop is less than hstart. But they work...</span></div></div></div><div class="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-c"> */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_HSTART</span>, <span class="pl-c1">0x13</span> }, { <span class="pl-c1">REG_HSTOP</span>, <span class="pl-c1">0x01</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_HREF</span>, <span class="pl-c1">0xb6</span> }, { <span class="pl-c1">REG_VSTART</span>, <span class="pl-c1">0x02</span> },</div></div></div><div class="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-c1">REG_VSTOP</span>, <span class="pl-c1">0x7a</span> }, { <span class="pl-c1">REG_VREF</span>, <span class="pl-c1">0x0a</span> },</div></div></div><div class="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"> </div></div></div><div class="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"> { <span class="pl-c1">REG_COM3</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">REG_COM14</span>, <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="LC284" class="react-file-line html-div" data-testid="code-cell" data-line-number="284" style="position:relative"> <span class="pl-c">/* Mystery scaling numbers */</span></div></div></div><div class="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-c1">0x70</span>, <span class="pl-c1">0x3a</span> }, { <span class="pl-c1">0x71</span>, <span class="pl-c1">0x35</span> },</div></div></div><div class="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-c1">0x72</span>, <span class="pl-c1">0x11</span> }, { <span class="pl-c1">0x73</span>, <span class="pl-c1">0xf0</span> },</div></div></div><div class="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"> { <span class="pl-c1">0xa2</span>, <span class="pl-c1">0x02</span> }, { <span class="pl-c1">REG_COM10</span>, <span class="pl-c1">0x0</span> },</div></div></div><div class="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="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">/* Gamma curve values */</span></div></div></div><div class="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-c1">0x7a</span>, <span class="pl-c1">0x20</span> }, { <span class="pl-c1">0x7b</span>, <span class="pl-c1">0x10</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x7c</span>, <span class="pl-c1">0x1e</span> }, { <span class="pl-c1">0x7d</span>, <span class="pl-c1">0x35</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x7e</span>, <span class="pl-c1">0x5a</span> }, { <span class="pl-c1">0x7f</span>, <span class="pl-c1">0x69</span> },</div></div></div><div class="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-c1">0x80</span>, <span class="pl-c1">0x76</span> }, { <span class="pl-c1">0x81</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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-c1">0x82</span>, <span class="pl-c1">0x88</span> }, { <span class="pl-c1">0x83</span>, <span class="pl-c1">0x8f</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x84</span>, <span class="pl-c1">0x96</span> }, { <span class="pl-c1">0x85</span>, <span class="pl-c1">0xa3</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x86</span>, <span class="pl-c1">0xaf</span> }, { <span class="pl-c1">0x87</span>, <span class="pl-c1">0xc4</span> },</div></div></div><div class="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-c1">0x88</span>, <span class="pl-c1">0xd7</span> }, { <span class="pl-c1">0x89</span>, <span class="pl-c1">0xe8</span> },</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-c">/* AGC and AEC parameters. Note we start by disabling those features,</span></div></div></div><div class="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"><span class="pl-c"> then turn them only after tweaking the values. */</span></div></div></div><div class="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-c1">REG_COM8</span>, <span class="pl-c1">COM8_FASTAEC</span> | <span class="pl-c1">COM8_AECSTEP</span> | <span class="pl-c1">COM8_BFILT</span> },</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"> { <span class="pl-c1">REG_GAIN</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">REG_AECH</span>, <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="LC303" class="react-file-line html-div" data-testid="code-cell" data-line-number="303" style="position:relative"> { <span class="pl-c1">REG_COM4</span>, <span class="pl-c1">0x40</span> }, <span class="pl-c">/* magic reserved bit */</span></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"> { <span class="pl-c1">REG_COM9</span>, <span class="pl-c1">0x18</span> }, <span class="pl-c">/* 4x gain + magic rsvd bit */</span></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"> { <span class="pl-c1">REG_BD50MAX</span>, <span class="pl-c1">0x05</span> }, { <span class="pl-c1">REG_BD60MAX</span>, <span class="pl-c1">0x07</span> },</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"> { <span class="pl-c1">REG_AEW</span>, <span class="pl-c1">0x95</span> }, { <span class="pl-c1">REG_AEB</span>, <span class="pl-c1">0x33</span> },</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-c1">REG_VPT</span>, <span class="pl-c1">0xe3</span> }, { <span class="pl-c1">REG_HAECC1</span>, <span class="pl-c1">0x78</span> },</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"> { <span class="pl-c1">REG_HAECC2</span>, <span class="pl-c1">0x68</span> }, { <span class="pl-c1">0xa1</span>, <span class="pl-c1">0x03</span> }, <span class="pl-c">/* magic */</span></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"> { <span class="pl-c1">REG_HAECC3</span>, <span class="pl-c1">0xd8</span> }, { <span class="pl-c1">REG_HAECC4</span>, <span class="pl-c1">0xd8</span> },</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-c1">REG_HAECC5</span>, <span class="pl-c1">0xf0</span> }, { <span class="pl-c1">REG_HAECC6</span>, <span class="pl-c1">0x90</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-c1">REG_HAECC7</span>, <span class="pl-c1">0x94</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM8</span>, <span class="pl-c1">COM8_FASTAEC</span>|<span class="pl-c1">COM8_AECSTEP</span>|<span class="pl-c1">COM8_BFILT</span>|<span class="pl-c1">COM8_AGC</span>|<span class="pl-c1">COM8_AEC</span> },</div></div></div><div class="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"> </div></div></div><div class="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-c">/* Almost all of these are magic "reserved" values. */</span></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"> { <span class="pl-c1">REG_COM5</span>, <span class="pl-c1">0x61</span> }, { <span class="pl-c1">REG_COM6</span>, <span class="pl-c1">0x4b</span> },</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"> { <span class="pl-c1">0x16</span>, <span class="pl-c1">0x02</span> }, { <span class="pl-c1">REG_MVFP</span>, <span class="pl-c1">0x07</span> },</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-c1">0x21</span>, <span class="pl-c1">0x02</span> }, { <span class="pl-c1">0x22</span>, <span class="pl-c1">0x91</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x29</span>, <span class="pl-c1">0x07</span> }, { <span class="pl-c1">0x33</span>, <span class="pl-c1">0x0b</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x35</span>, <span class="pl-c1">0x0b</span> }, { <span class="pl-c1">0x37</span>, <span class="pl-c1">0x1d</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x38</span>, <span class="pl-c1">0x71</span> }, { <span class="pl-c1">0x39</span>, <span class="pl-c1">0x2a</span> },</div></div></div><div class="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-c1">REG_COM12</span>, <span class="pl-c1">0x78</span> }, { <span class="pl-c1">0x4d</span>, <span class="pl-c1">0x40</span> },</div></div></div><div class="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-c1">0x4e</span>, <span class="pl-c1">0x20</span> }, { <span class="pl-c1">REG_GFIX</span>, <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="LC323" class="react-file-line html-div" data-testid="code-cell" data-line-number="323" style="position:relative"> { <span class="pl-c1">0x6b</span>, <span class="pl-c1">0x4a</span> }, { <span class="pl-c1">0x74</span>, <span class="pl-c1">0x10</span> },</div></div></div><div class="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-c1">0x8d</span>, <span class="pl-c1">0x4f</span> }, { <span class="pl-c1">0x8e</span>, <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="LC325" class="react-file-line html-div" data-testid="code-cell" data-line-number="325" style="position:relative"> { <span class="pl-c1">0x8f</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">0x90</span>, <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="LC326" class="react-file-line html-div" data-testid="code-cell" data-line-number="326" style="position:relative"> { <span class="pl-c1">0x91</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">0x96</span>, <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="LC327" class="react-file-line html-div" data-testid="code-cell" data-line-number="327" style="position:relative"> { <span class="pl-c1">0x9a</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">0xb0</span>, <span class="pl-c1">0x84</span> },</div></div></div><div class="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"> { <span class="pl-c1">0xb1</span>, <span class="pl-c1">0x0c</span> }, { <span class="pl-c1">0xb2</span>, <span class="pl-c1">0x0e</span> },</div></div></div><div class="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-c1">0xb3</span>, <span class="pl-c1">0x82</span> }, { <span class="pl-c1">0xb8</span>, <span class="pl-c1">0x0a</span> },</div></div></div><div class="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"> </div></div></div><div class="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">/* More reserved magic, some of which tweaks white balance */</span></div></div></div><div class="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-c1">0x43</span>, <span class="pl-c1">0x0a</span> }, { <span class="pl-c1">0x44</span>, <span class="pl-c1">0xf0</span> },</div></div></div><div class="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-c1">0x45</span>, <span class="pl-c1">0x34</span> }, { <span class="pl-c1">0x46</span>, <span class="pl-c1">0x58</span> },</div></div></div><div class="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-c1">0x47</span>, <span class="pl-c1">0x28</span> }, { <span class="pl-c1">0x48</span>, <span class="pl-c1">0x3a</span> },</div></div></div><div class="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-c1">0x59</span>, <span class="pl-c1">0x88</span> }, { <span class="pl-c1">0x5a</span>, <span class="pl-c1">0x88</span> },</div></div></div><div class="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-c1">0x5b</span>, <span class="pl-c1">0x44</span> }, { <span class="pl-c1">0x5c</span>, <span class="pl-c1">0x67</span> },</div></div></div><div class="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-c1">0x5d</span>, <span class="pl-c1">0x49</span> }, { <span class="pl-c1">0x5e</span>, <span class="pl-c1">0x0e</span> },</div></div></div><div class="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-c1">0x6c</span>, <span class="pl-c1">0x0a</span> }, { <span class="pl-c1">0x6d</span>, <span class="pl-c1">0x55</span> },</div></div></div><div class="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-c1">0x6e</span>, <span class="pl-c1">0x11</span> }, { <span class="pl-c1">0x6f</span>, <span class="pl-c1">0x9f</span> }, <span class="pl-c">/* "9e for advance AWB" */</span></div></div></div><div class="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-c1">0x6a</span>, <span class="pl-c1">0x40</span> }, { <span class="pl-c1">REG_BLUE</span>, <span class="pl-c1">0x40</span> },</div></div></div><div class="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-c1">REG_RED</span>, <span class="pl-c1">0x60</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM8</span>, <span class="pl-c1">COM8_FASTAEC</span>|<span class="pl-c1">COM8_AECSTEP</span>|<span class="pl-c1">COM8_BFILT</span>|<span class="pl-c1">COM8_AGC</span>|<span class="pl-c1">COM8_AEC</span>|<span class="pl-c1">COM8_AWB</span> },</div></div></div><div class="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"> </div></div></div><div class="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-c">/* Matrix coefficients */</span></div></div></div><div class="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"> { <span class="pl-c1">0x4f</span>, <span class="pl-c1">0x80</span> }, { <span class="pl-c1">0x50</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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-c1">0x51</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">0x52</span>, <span class="pl-c1">0x22</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x53</span>, <span class="pl-c1">0x5e</span> }, { <span class="pl-c1">0x54</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x58</span>, <span class="pl-c1">0x9e</span> },</div></div></div><div class="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"> </div></div></div><div class="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-c1">REG_COM16</span>, <span class="pl-c1">COM16_AWBGAIN</span> }, { <span class="pl-c1">REG_EDGE</span>, <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="LC351" class="react-file-line html-div" data-testid="code-cell" data-line-number="351" style="position:relative"> { <span class="pl-c1">0x75</span>, <span class="pl-c1">0x05</span> }, { <span class="pl-c1">0x76</span>, <span class="pl-c1">0xe1</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x4c</span>, <span class="pl-c1">0</span> }, { <span class="pl-c1">0x77</span>, <span class="pl-c1">0x01</span> },</div></div></div><div class="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-c1">REG_COM13</span>, <span class="pl-c1">0xc3</span> }, { <span class="pl-c1">0x4b</span>, <span class="pl-c1">0x09</span> },</div></div></div><div class="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"> { <span class="pl-c1">0xc9</span>, <span class="pl-c1">0x60</span> }, { <span class="pl-c1">REG_COM16</span>, <span class="pl-c1">0x38</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x56</span>, <span class="pl-c1">0x40</span> },</div></div></div><div class="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"> </div></div></div><div class="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-c1">0x34</span>, <span class="pl-c1">0x11</span> }, { <span class="pl-c1">REG_COM11</span>, <span class="pl-c1">COM11_EXP</span>|<span class="pl-c1">COM11_HZAUTO</span> },</div></div></div><div class="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-c1">0xa4</span>, <span class="pl-c1">0x88</span> }, { <span class="pl-c1">0x96</span>, <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="LC359" class="react-file-line html-div" data-testid="code-cell" data-line-number="359" style="position:relative"> { <span class="pl-c1">0x97</span>, <span class="pl-c1">0x30</span> }, { <span class="pl-c1">0x98</span>, <span class="pl-c1">0x20</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x99</span>, <span class="pl-c1">0x30</span> }, { <span class="pl-c1">0x9a</span>, <span class="pl-c1">0x84</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x9b</span>, <span class="pl-c1">0x29</span> }, { <span class="pl-c1">0x9c</span>, <span class="pl-c1">0x03</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x9d</span>, <span class="pl-c1">0x4c</span> }, { <span class="pl-c1">0x9e</span>, <span class="pl-c1">0x3f</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x78</span>, <span class="pl-c1">0x04</span> },</div></div></div><div class="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="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">/* Extra-weird stuff. Some sort of multiplexor register */</span></div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x01</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0xf0</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x0f</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x00</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x10</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x7e</span> },</div></div></div><div class="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-c1">0x79</span>, <span class="pl-c1">0x0a</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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-c1">0x79</span>, <span class="pl-c1">0x0b</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x01</span> },</div></div></div><div class="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-c1">0x79</span>, <span class="pl-c1">0x0c</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x0f</span> },</div></div></div><div class="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-c1">0x79</span>, <span class="pl-c1">0x0d</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x20</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x09</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x02</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0xc0</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x03</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x40</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x05</span> }, { <span class="pl-c1">0xc8</span>, <span class="pl-c1">0x30</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x79</span>, <span class="pl-c1">0x26</span> },</div></div></div><div class="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"> </div></div></div><div class="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"> { <span class="pl-c1">0xff</span>, <span class="pl-c1">0xff</span> }, <span class="pl-c">/* END MARKER */</span></div></div></div><div class="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">};</div></div></div><div class="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"> </div></div></div><div class="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="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></div></div></div><div class="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"><span class="pl-c"> * Here we'll try to encapsulate the changes for just the output</span></div></div></div><div class="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"><span class="pl-c"> * video format.</span></div></div></div><div class="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-c"> *</span></div></div></div><div class="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"><span class="pl-c"> * RGB656 and YUV422 come from OV; RGB444 is homebrewed.</span></div></div></div><div class="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-c"> *</span></div></div></div><div class="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-c"> * IMPORTANT RULE: the first entry must be for COM7, see ov7670_s_fmt for why.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> </div></div></div><div class="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="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">static</span> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_fmt_yuv422</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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"> { <span class="pl-c1">REG_COM7</span>, <span class="pl-c1">0x0</span> }, <span class="pl-c">/* Selects YUV mode */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_RGB444</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* No RGB444 please */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM1</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* CCIR601 */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM15</span>, <span class="pl-c1">COM15_R00FF</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM9</span>, <span class="pl-c1">0x48</span> }, <span class="pl-c">/* 32x gain ceiling; 0x8 is reserved bit */</span></div></div></div><div class="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"> { <span class="pl-c1">0x4f</span>, <span class="pl-c1">0x80</span> }, <span class="pl-c">/* "matrix coefficient 1" */</span></div></div></div><div class="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-c1">0x50</span>, <span class="pl-c1">0x80</span> }, <span class="pl-c">/* "matrix coefficient 2" */</span></div></div></div><div class="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-c1">0x51</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* vb */</span></div></div></div><div class="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"> { <span class="pl-c1">0x52</span>, <span class="pl-c1">0x22</span> }, <span class="pl-c">/* "matrix coefficient 4" */</span></div></div></div><div class="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-c1">0x53</span>, <span class="pl-c1">0x5e</span> }, <span class="pl-c">/* "matrix coefficient 5" */</span></div></div></div><div class="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-c1">0x54</span>, <span class="pl-c1">0x80</span> }, <span class="pl-c">/* "matrix coefficient 6" */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM13</span>, <span class="pl-c1">COM13_GAMMA</span>|<span class="pl-c1">COM13_UVSAT</span> },</div></div></div><div class="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-c1">0xff</span>, <span class="pl-c1">0xff</span> },</div></div></div><div class="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">};</div></div></div><div class="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="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-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_fmt_rgb565</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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-c1">REG_COM7</span>, <span class="pl-c1">COM7_RGB</span> }, <span class="pl-c">/* Selects RGB mode */</span></div></div></div><div class="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-c1">REG_RGB444</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* No RGB444 please */</span></div></div></div><div class="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-c1">REG_COM1</span>, <span class="pl-c1">0x0</span> }, <span class="pl-c">/* CCIR601 */</span></div></div></div><div class="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-c1">REG_COM15</span>, <span class="pl-c1">COM15_RGB565</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM9</span>, <span class="pl-c1">0x38</span> }, <span class="pl-c">/* 16x gain ceiling; 0x8 is reserved bit */</span></div></div></div><div class="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"> { <span class="pl-c1">0x4f</span>, <span class="pl-c1">0xb3</span> }, <span class="pl-c">/* "matrix coefficient 1" */</span></div></div></div><div class="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-c1">0x50</span>, <span class="pl-c1">0xb3</span> }, <span class="pl-c">/* "matrix coefficient 2" */</span></div></div></div><div class="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">0x51</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* vb */</span></div></div></div><div class="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"> { <span class="pl-c1">0x52</span>, <span class="pl-c1">0x3d</span> }, <span class="pl-c">/* "matrix coefficient 4" */</span></div></div></div><div class="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-c1">0x53</span>, <span class="pl-c1">0xa7</span> }, <span class="pl-c">/* "matrix coefficient 5" */</span></div></div></div><div class="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-c1">0x54</span>, <span class="pl-c1">0xe4</span> }, <span class="pl-c">/* "matrix coefficient 6" */</span></div></div></div><div class="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-c1">REG_COM13</span>, <span class="pl-c1">COM13_GAMMA</span>|<span class="pl-c1">COM13_UVSAT</span> },</div></div></div><div class="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">0xff</span>, <span class="pl-c1">0xff</span> },</div></div></div><div class="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="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_fmt_rgb444</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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"> { <span class="pl-c1">REG_COM7</span>, <span class="pl-c1">COM7_RGB</span> }, <span class="pl-c">/* Selects RGB mode */</span></div></div></div><div class="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-c1">REG_RGB444</span>, <span class="pl-c1">R444_ENABLE</span> }, <span class="pl-c">/* Enable xxxxrrrr ggggbbbb */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM1</span>, <span class="pl-c1">0x0</span> }, <span class="pl-c">/* CCIR601 */</span></div></div></div><div class="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">REG_COM15</span>, <span class="pl-c1">COM15_R01FE</span>|<span class="pl-c1">COM15_RGB565</span> }, <span class="pl-c">/* Data range needed? */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM9</span>, <span class="pl-c1">0x38</span> }, <span class="pl-c">/* 16x gain ceiling; 0x8 is reserved bit */</span></div></div></div><div class="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"> { <span class="pl-c1">0x4f</span>, <span class="pl-c1">0xb3</span> }, <span class="pl-c">/* "matrix coefficient 1" */</span></div></div></div><div class="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"> { <span class="pl-c1">0x50</span>, <span class="pl-c1">0xb3</span> }, <span class="pl-c">/* "matrix coefficient 2" */</span></div></div></div><div class="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"> { <span class="pl-c1">0x51</span>, <span class="pl-c1">0</span> }, <span class="pl-c">/* vb */</span></div></div></div><div class="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">0x52</span>, <span class="pl-c1">0x3d</span> }, <span class="pl-c">/* "matrix coefficient 4" */</span></div></div></div><div class="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"> { <span class="pl-c1">0x53</span>, <span class="pl-c1">0xa7</span> }, <span class="pl-c">/* "matrix coefficient 5" */</span></div></div></div><div class="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-c1">0x54</span>, <span class="pl-c1">0xe4</span> }, <span class="pl-c">/* "matrix coefficient 6" */</span></div></div></div><div class="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-c1">REG_COM13</span>, <span class="pl-c1">COM13_GAMMA</span>|<span class="pl-c1">COM13_UVSAT</span>|<span class="pl-c1">0x2</span> }, <span class="pl-c">/* Magic rsvd bit */</span></div></div></div><div class="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"> { <span class="pl-c1">0xff</span>, <span class="pl-c1">0xff</span> },</div></div></div><div class="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="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"> </div></div></div><div class="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">static</span> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_fmt_raw</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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"> { <span class="pl-c1">REG_COM7</span>, <span class="pl-c1">COM7_BAYER</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM13</span>, <span class="pl-c1">0x08</span> }, <span class="pl-c">/* No gamma, magic rsvd bit */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_COM16</span>, <span class="pl-c1">0x3d</span> }, <span class="pl-c">/* Edge enhancement, denoise */</span></div></div></div><div class="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"> { <span class="pl-c1">REG_REG76</span>, <span class="pl-c1">0xe1</span> }, <span class="pl-c">/* Pix correction, magic rsvd */</span></div></div></div><div class="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"> { <span class="pl-c1">0xff</span>, <span class="pl-c1">0xff</span> },</div></div></div><div class="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="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"> </div></div></div><div class="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="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"> </div></div></div><div class="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></div></div></div><div class="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"><span class="pl-c"> * Low-level register I/O.</span></div></div></div><div class="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"><span class="pl-c"> *</span></div></div></div><div class="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"><span class="pl-c"> * Note that there are two versions of these. On the XO 1, the</span></div></div></div><div class="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"><span class="pl-c"> * i2c controller only does SMBUS, so that's what we use. The</span></div></div></div><div class="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"> * ov7670 is not really an SMBUS device, though, so the communication</span></div></div></div><div class="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-c"> * is not always entirely reliable.</span></div></div></div><div class="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-c"> */</span></div></div></div><div class="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-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_read_smbus</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">*</span><span class="pl-s1">value</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">i2c_client</span> <span class="pl-c1">*</span><span class="pl-s1">client</span> <span class="pl-c1">=</span> <span class="pl-en">v4l2_get_subdevdata</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">i2c_smbus_read_byte_data</span>(<span class="pl-s1">client</span>, <span class="pl-s1">reg</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> >= <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="LC467" class="react-file-line html-div" data-testid="code-cell" data-line-number="467" style="position:relative"> <span class="pl-c1">*</span><span class="pl-s1">value</span> <span class="pl-c1">=</span> (<span class="pl-smi">unsigned <span class="pl-smi">char</span></span>)<span class="pl-s1">ret</span>;</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <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="LC469" class="react-file-line html-div" data-testid="code-cell" data-line-number="469" style="position:relative"> }</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_write_smbus</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">value</span>)</div></div></div><div class="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">{</div></div></div><div class="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-k">struct</span> <span class="pl-smi">i2c_client</span> <span class="pl-c1">*</span><span class="pl-s1">client</span> <span class="pl-c1">=</span> <span class="pl-en">v4l2_get_subdevdata</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">int</span> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">i2c_smbus_write_byte_data</span>(<span class="pl-s1">client</span>, <span class="pl-s1">reg</span>, <span class="pl-s1">value</span>);</div></div></div><div class="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"> </div></div></div><div class="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> (<span class="pl-s1">reg</span> <span class="pl-c1">==</span> <span class="pl-c1">REG_COM7</span> <span class="pl-c1">&&</span> (<span class="pl-s1">value</span> <span class="pl-c1">&</span> <span class="pl-c1">COM7_RESET</span>))</div></div></div><div class="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"> <span class="pl-en">msleep</span>(<span class="pl-c1">5</span>); <span class="pl-c">/* Wait for reset to run */</span></div></div></div><div class="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-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * On most platforms, we'd rather do straight i2c I/O.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_read_i2c</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">*</span><span class="pl-s1">value</span>)</div></div></div><div class="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="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">struct</span> <span class="pl-smi">i2c_client</span> <span class="pl-c1">*</span><span class="pl-s1">client</span> <span class="pl-c1">=</span> <span class="pl-en">v4l2_get_subdevdata</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> <span class="pl-smi">u8</span> <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-s1">reg</span>;</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">i2c_msg</span> <span class="pl-s1">msg</span>;</div></div></div><div class="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-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Send out the register address...</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-s1">msg</span>.<span class="pl-c1">addr</span> <span class="pl-c1">=</span> <span class="pl-s1">client</span><span class="pl-c1">-></span><span class="pl-c1">addr</span>;</div></div></div><div class="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-s1">msg</span>.<span class="pl-c1">flags</span> <span class="pl-c1">=</span> <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="LC501" class="react-file-line html-div" data-testid="code-cell" data-line-number="501" style="position:relative"> <span class="pl-s1">msg</span>.<span class="pl-c1">len</span> <span class="pl-c1">=</span> <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="LC502" class="react-file-line html-div" data-testid="code-cell" data-line-number="502" style="position:relative"> <span class="pl-s1">msg</span>.<span class="pl-c1">buf</span> <span class="pl-c1">=</span> <span class="pl-c1">&</span><span class="pl-s1">data</span>;</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">i2c_transfer</span>(<span class="pl-s1">client</span><span class="pl-c1">-></span><span class="pl-c1">adapter</span>, <span class="pl-c1">&</span><span class="pl-s1">msg</span>, <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="LC504" class="react-file-line html-div" data-testid="code-cell" data-line-number="504" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC505" class="react-file-line html-div" data-testid="code-cell" data-line-number="505" style="position:relative"> <span class="pl-s1">printk</span>(<span class="pl-c1">KERN_ERR</span> <span class="pl-s">"Error %d on register write\n"</span>, <span class="pl-s1">ret</span>);</div></div></div><div class="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">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> }</div></div></div><div class="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-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * ...then read back the result.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> <span class="pl-s1">msg</span>.<span class="pl-c1">flags</span> <span class="pl-c1">=</span> <span class="pl-c1">I2C_M_RD</span>;</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">i2c_transfer</span>(<span class="pl-s1">client</span><span class="pl-c1">-></span><span class="pl-c1">adapter</span>, <span class="pl-c1">&</span><span class="pl-s1">msg</span>, <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="LC513" class="react-file-line html-div" data-testid="code-cell" data-line-number="513" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> >= <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="LC514" class="react-file-line html-div" data-testid="code-cell" data-line-number="514" style="position:relative"> <span class="pl-c1">*</span><span class="pl-s1">value</span> <span class="pl-c1">=</span> <span class="pl-s1">data</span>;</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <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="LC516" class="react-file-line html-div" data-testid="code-cell" data-line-number="516" style="position:relative"> }</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_write_i2c</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">value</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">i2c_client</span> <span class="pl-c1">*</span><span class="pl-s1">client</span> <span class="pl-c1">=</span> <span class="pl-en">v4l2_get_subdevdata</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">i2c_msg</span> <span class="pl-s1">msg</span>;</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">data</span>[<span class="pl-c1">2</span>] <span class="pl-c1">=</span> { <span class="pl-s1">reg</span>, <span class="pl-s1">value</span> };</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-s1">msg</span>.<span class="pl-c1">addr</span> <span class="pl-c1">=</span> <span class="pl-s1">client</span><span class="pl-c1">-></span><span class="pl-c1">addr</span>;</div></div></div><div class="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"> <span class="pl-s1">msg</span>.<span class="pl-c1">flags</span> <span class="pl-c1">=</span> <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="LC531" class="react-file-line html-div" data-testid="code-cell" data-line-number="531" style="position:relative"> <span class="pl-s1">msg</span>.<span class="pl-c1">len</span> <span class="pl-c1">=</span> <span class="pl-c1">2</span>;</div></div></div><div class="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"> <span class="pl-s1">msg</span>.<span class="pl-c1">buf</span> <span class="pl-c1">=</span> <span class="pl-s1">data</span>;</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">i2c_transfer</span>(<span class="pl-s1">client</span><span class="pl-c1">-></span><span class="pl-c1">adapter</span>, <span class="pl-c1">&</span><span class="pl-s1">msg</span>, <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="LC534" class="react-file-line html-div" data-testid="code-cell" data-line-number="534" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1">></span> <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="LC535" class="react-file-line html-div" data-testid="code-cell" data-line-number="535" style="position:relative"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <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="LC536" class="react-file-line html-div" data-testid="code-cell" data-line-number="536" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-s1">reg</span> <span class="pl-c1">==</span> <span class="pl-c1">REG_COM7</span> <span class="pl-c1">&&</span> (<span class="pl-s1">value</span> <span class="pl-c1">&</span> <span class="pl-c1">COM7_RESET</span>))</div></div></div><div class="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"> <span class="pl-en">msleep</span>(<span class="pl-c1">5</span>); <span class="pl-c">/* Wait for reset to run */</span></div></div></div><div class="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-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_read</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-c1">*</span><span class="pl-s1">value</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">use_smbus</span>)</div></div></div><div class="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">return</span> <span class="pl-en">ov7670_read_smbus</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">reg</span>, <span class="pl-s1">value</span>);</div></div></div><div class="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"> <span class="pl-k">else</span></div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-en">ov7670_read_i2c</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">reg</span>, <span class="pl-s1">value</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_write</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">reg</span>,</div></div></div><div class="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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">value</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">use_smbus</span>)</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-en">ov7670_write_smbus</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">reg</span>, <span class="pl-s1">value</span>);</div></div></div><div class="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"> <span class="pl-k">else</span></div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-en">ov7670_write_i2c</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">reg</span>, <span class="pl-s1">value</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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-c">/*</span></div></div></div><div class="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-c"> * Write a list of register settings; ff/ff stops the process.</span></div></div></div><div class="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-c"> */</span></div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_write_array</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-c1">*</span><span class="pl-s1">vals</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">while</span> (<span class="pl-s1">vals</span><span class="pl-c1">-></span><span class="pl-c1">reg_num</span> <span class="pl-c1">!=</span> <span class="pl-c1">0xff</span> <span class="pl-c1">||</span> <span class="pl-s1">vals</span><span class="pl-c1">-></span><span class="pl-c1">value</span> <span class="pl-c1">!=</span> <span class="pl-c1">0xff</span>) {</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">vals</span><span class="pl-c1">-></span><span class="pl-c1">reg_num</span>, <span class="pl-s1">vals</span><span class="pl-c1">-></span><span class="pl-c1">value</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC569" class="react-file-line html-div" data-testid="code-cell" data-line-number="569" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-s1">vals</span><span class="pl-c1">++</span>;</div></div></div><div class="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="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-k">return</span> <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="LC573" class="react-file-line html-div" data-testid="code-cell" data-line-number="573" style="position:relative">}</div></div></div><div class="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="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"> </div></div></div><div class="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-c">/*</span></div></div></div><div class="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-c"> * Stuff that knows about the sensor.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_reset</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">u32</span> <span class="pl-s1">val</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_COM7</span>, <span class="pl-c1">COM7_RESET</span>);</div></div></div><div class="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"> <span class="pl-en">msleep</span>(<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="LC583" class="react-file-line html-div" data-testid="code-cell" data-line-number="583" style="position:relative"> <span class="pl-k">return</span> <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="LC584" class="react-file-line html-div" data-testid="code-cell" data-line-number="584" style="position:relative">}</div></div></div><div class="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"> </div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_init</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">u32</span> <span class="pl-s1">val</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-en">ov7670_write_array</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">ov7670_default_regs</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_detect</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>)</div></div></div><div class="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="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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">v</span>;</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_init</span>(<span class="pl-s1">sd</span>, <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="LC600" class="react-file-line html-div" data-testid="code-cell" data-line-number="600" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC601" class="react-file-line html-div" data-testid="code-cell" data-line-number="601" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_MIDH</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC604" class="react-file-line html-div" data-testid="code-cell" data-line-number="604" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">v</span> <span class="pl-c1">!=</span> <span class="pl-c1">0x7f</span>) <span class="pl-c">/* OV manuf. id. */</span></div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-c1">-</span><span class="pl-c1">ENODEV</span>;</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_MIDL</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC609" class="react-file-line html-div" data-testid="code-cell" data-line-number="609" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-k">if</span> (<span class="pl-s1">v</span> <span class="pl-c1">!=</span> <span class="pl-c1">0xa2</span>)</div></div></div><div class="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">return</span> <span class="pl-c1">-</span><span class="pl-c1">ENODEV</span>;</div></div></div><div class="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-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * OK, we know we have an OmniVision chip...but which one?</span></div></div></div><div class="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></div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_PID</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC617" class="react-file-line html-div" data-testid="code-cell" data-line-number="617" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-k">if</span> (<span class="pl-s1">v</span> <span class="pl-c1">!=</span> <span class="pl-c1">0x76</span>) <span class="pl-c">/* PID + VER = 0x76 / 0x73 */</span></div></div></div><div class="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">return</span> <span class="pl-c1">-</span><span class="pl-c1">ENODEV</span>;</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_VER</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC622" class="react-file-line html-div" data-testid="code-cell" data-line-number="622" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-k">if</span> (<span class="pl-s1">v</span> <span class="pl-c1">!=</span> <span class="pl-c1">0x73</span>) <span class="pl-c">/* PID + VER = 0x76 / 0x73 */</span></div></div></div><div class="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">return</span> <span class="pl-c1">-</span><span class="pl-c1">ENODEV</span>;</div></div></div><div class="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"> <span class="pl-k">return</span> <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="LC626" class="react-file-line html-div" data-testid="code-cell" data-line-number="626" style="position:relative">}</div></div></div><div class="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"> </div></div></div><div class="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="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></div></div></div><div class="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"> * Store information about the video data format. The color matrix</span></div></div></div><div class="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"> * is deeply tied into the format, so keep the relevant values here.</span></div></div></div><div class="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"><span class="pl-c"> * The magic matrix numbers come from OmniVision.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_format_struct</span> {</div></div></div><div class="child-of-line-633 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-smi">u32</span> <span class="pl-c1">mbus_code</span>;</div></div></div><div class="child-of-line-633 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">enum</span> <span class="pl-smi">v4l2_colorspace</span> <span class="pl-c1">colorspace</span>;</div></div></div><div class="child-of-line-633 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"> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-c1">*</span><span class="pl-c1">regs</span>;</div></div></div><div class="child-of-line-633 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"> <span class="pl-smi">int</span> <span class="pl-c1">cmatrix</span>[<span class="pl-c1">CMATRIX_LEN</span>];</div></div></div><div class="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-s1">ov7670_formats</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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"> {</div></div></div><div class="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"> .<span class="pl-c1">mbus_code</span> <span class="pl-c1">=</span> <span class="pl-c1">MEDIA_BUS_FMT_YUYV8_2X8</span>,</div></div></div><div class="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-c1">colorspace</span> <span class="pl-c1">=</span> <span class="pl-c1">V4L2_COLORSPACE_SRGB</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"> .<span class="pl-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_fmt_yuv422</span>,</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"> .<span class="pl-c1">cmatrix</span> <span class="pl-c1">=</span> { <span class="pl-c1">128</span>, <span class="pl-c1">-128</span>, <span class="pl-c1">0</span>, <span class="pl-c1">-34</span>, <span class="pl-c1">-94</span>, <span class="pl-c1">128</span> },</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"> },</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"> {</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-c1">mbus_code</span> <span class="pl-c1">=</span> <span class="pl-c1">MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE</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-c1">colorspace</span> <span class="pl-c1">=</span> <span class="pl-c1">V4L2_COLORSPACE_SRGB</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-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_fmt_rgb444</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-c1">cmatrix</span> <span class="pl-c1">=</span> { <span class="pl-c1">179</span>, <span class="pl-c1">-179</span>, <span class="pl-c1">0</span>, <span class="pl-c1">-61</span>, <span class="pl-c1">-176</span>, <span class="pl-c1">228</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"> },</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"> {</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-c1">mbus_code</span> <span class="pl-c1">=</span> <span class="pl-c1">MEDIA_BUS_FMT_RGB565_2X8_LE</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-c1">colorspace</span> <span class="pl-c1">=</span> <span class="pl-c1">V4L2_COLORSPACE_SRGB</span>,</div></div></div><div class="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"> .<span class="pl-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_fmt_rgb565</span>,</div></div></div><div class="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-c1">cmatrix</span> <span class="pl-c1">=</span> { <span class="pl-c1">179</span>, <span class="pl-c1">-179</span>, <span class="pl-c1">0</span>, <span class="pl-c1">-61</span>, <span class="pl-c1">-176</span>, <span class="pl-c1">228</span> },</div></div></div><div class="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"> },</div></div></div><div class="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"> {</div></div></div><div class="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 class="pl-c1">mbus_code</span> <span class="pl-c1">=</span> <span class="pl-c1">MEDIA_BUS_FMT_SBGGR8_1X8</span>,</div></div></div><div class="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 class="pl-c1">colorspace</span> <span class="pl-c1">=</span> <span class="pl-c1">V4L2_COLORSPACE_SRGB</span>,</div></div></div><div class="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 class="pl-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_fmt_raw</span>,</div></div></div><div class="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-c1">cmatrix</span> <span class="pl-c1">=</span> { <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <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="LC663" class="react-file-line html-div" data-testid="code-cell" data-line-number="663" style="position:relative"> },</div></div></div><div class="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">};</div></div></div><div class="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-k">#define</span> <span class="pl-c1">N_OV7670_FMTS</span> ARRAY_SIZE(ov7670_formats)</div></div></div><div class="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"> </div></div></div><div class="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"> </div></div></div><div class="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 class="pl-c">/*</span></div></div></div><div class="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 class="pl-c"> * Then there is the issue of window sizes. Try to capture the info here.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-c">/*</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"><span class="pl-c"> * QCIF mode is done (by OV) in a very strange way - it actually looks like</span></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"><span class="pl-c"> * VGA with weird scaling options - they do *not* use the canned QCIF mode</span></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"> * which is allegedly provided by the sensor. So here's the weird register</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-c"> * settings.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">regval_list</span> <span class="pl-s1">ov7670_qcif_regs</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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-c1">REG_COM3</span>, <span class="pl-c1">COM3_SCALEEN</span>|<span class="pl-c1">COM3_DCWEN</span> },</div></div></div><div class="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-c1">REG_COM3</span>, <span class="pl-c1">COM3_DCWEN</span> },</div></div></div><div class="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-c1">REG_COM14</span>, <span class="pl-c1">COM14_DCWEN</span> | <span class="pl-c1">0x01</span>},</div></div></div><div class="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"> { <span class="pl-c1">0x73</span>, <span class="pl-c1">0xf1</span> },</div></div></div><div class="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-c1">0xa2</span>, <span class="pl-c1">0x52</span> },</div></div></div><div class="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">0x7b</span>, <span class="pl-c1">0x1c</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x7c</span>, <span class="pl-c1">0x28</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x7d</span>, <span class="pl-c1">0x3c</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x7f</span>, <span class="pl-c1">0x69</span> },</div></div></div><div class="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"> { <span class="pl-c1">REG_COM9</span>, <span class="pl-c1">0x38</span> },</div></div></div><div class="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-c1">0xa1</span>, <span class="pl-c1">0x0b</span> },</div></div></div><div class="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-c1">0x74</span>, <span class="pl-c1">0x19</span> },</div></div></div><div class="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-c1">0x9a</span>, <span class="pl-c1">0x80</span> },</div></div></div><div class="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"> { <span class="pl-c1">0x43</span>, <span class="pl-c1">0x14</span> },</div></div></div><div class="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">REG_COM13</span>, <span class="pl-c1">0xc0</span> },</div></div></div><div class="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"> { <span class="pl-c1">0xff</span>, <span class="pl-c1">0xff</span> },</div></div></div><div class="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="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="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"><span class="pl-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-s1">ov7670_win_sizes</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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">/* VGA */</span></div></div></div><div class="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"> {</div></div></div><div class="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-c1">width</span> <span class="pl-c1">=</span> <span class="pl-c1">VGA_WIDTH</span>,</div></div></div><div class="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"> .<span class="pl-c1">height</span> <span class="pl-c1">=</span> <span class="pl-c1">VGA_HEIGHT</span>,</div></div></div><div class="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-c1">com7_bit</span> <span class="pl-c1">=</span> <span class="pl-c1">COM7_FMT_VGA</span>,</div></div></div><div class="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"> .<span class="pl-c1">hstart</span> <span class="pl-c1">=</span> <span class="pl-c1">158</span>, <span class="pl-c">/* These values from */</span></div></div></div><div class="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"> .<span class="pl-c1">hstop</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span>, <span class="pl-c">/* Omnivision */</span></div></div></div><div class="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-c1">vstart</span> <span class="pl-c1">=</span> <span class="pl-c1">10</span>,</div></div></div><div class="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"> .<span class="pl-c1">vstop</span> <span class="pl-c1">=</span> <span class="pl-c1">490</span>,</div></div></div><div class="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-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-c1">NULL</span>,</div></div></div><div class="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"> },</div></div></div><div class="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">/* CIF */</span></div></div></div><div class="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"> {</div></div></div><div class="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-c1">width</span> <span class="pl-c1">=</span> <span class="pl-c1">CIF_WIDTH</span>,</div></div></div><div class="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">height</span> <span class="pl-c1">=</span> <span class="pl-c1">CIF_HEIGHT</span>,</div></div></div><div class="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">com7_bit</span> <span class="pl-c1">=</span> <span class="pl-c1">COM7_FMT_CIF</span>,</div></div></div><div class="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"> .<span class="pl-c1">hstart</span> <span class="pl-c1">=</span> <span class="pl-c1">170</span>, <span class="pl-c">/* Empirically determined */</span></div></div></div><div class="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"> .<span class="pl-c1">hstop</span> <span class="pl-c1">=</span> <span class="pl-c1">90</span>,</div></div></div><div class="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">vstart</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span>,</div></div></div><div class="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-c1">vstop</span> <span class="pl-c1">=</span> <span class="pl-c1">494</span>,</div></div></div><div class="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-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-c1">NULL</span>,</div></div></div><div class="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"> },</div></div></div><div class="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-c">/* QVGA */</span></div></div></div><div class="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"> {</div></div></div><div class="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">width</span> <span class="pl-c1">=</span> <span class="pl-c1">QVGA_WIDTH</span>,</div></div></div><div class="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"> .<span class="pl-c1">height</span> <span class="pl-c1">=</span> <span class="pl-c1">QVGA_HEIGHT</span>,</div></div></div><div class="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-c1">com7_bit</span> <span class="pl-c1">=</span> <span class="pl-c1">COM7_FMT_QVGA</span>,</div></div></div><div class="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-c1">hstart</span> <span class="pl-c1">=</span> <span class="pl-c1">168</span>, <span class="pl-c">/* Empirically determined */</span></div></div></div><div class="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"> .<span class="pl-c1">hstop</span> <span class="pl-c1">=</span> <span class="pl-c1">24</span>,</div></div></div><div class="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"> .<span class="pl-c1">vstart</span> <span class="pl-c1">=</span> <span class="pl-c1">12</span>,</div></div></div><div class="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"> .<span class="pl-c1">vstop</span> <span class="pl-c1">=</span> <span class="pl-c1">492</span>,</div></div></div><div class="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"> .<span class="pl-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-c1">NULL</span>,</div></div></div><div class="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="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"> <span class="pl-c">/* QCIF */</span></div></div></div><div class="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"> {</div></div></div><div class="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-c1">width</span> <span class="pl-c1">=</span> <span class="pl-c1">QCIF_WIDTH</span>,</div></div></div><div class="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"> .<span class="pl-c1">height</span> <span class="pl-c1">=</span> <span class="pl-c1">QCIF_HEIGHT</span>,</div></div></div><div class="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-c1">com7_bit</span> <span class="pl-c1">=</span> <span class="pl-c1">COM7_FMT_VGA</span>, <span class="pl-c">/* see comment above */</span></div></div></div><div class="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"> .<span class="pl-c1">hstart</span> <span class="pl-c1">=</span> <span class="pl-c1">456</span>, <span class="pl-c">/* Empirically determined */</span></div></div></div><div class="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"> .<span class="pl-c1">hstop</span> <span class="pl-c1">=</span> <span class="pl-c1">24</span>,</div></div></div><div class="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"> .<span class="pl-c1">vstart</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span>,</div></div></div><div class="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"> .<span class="pl-c1">vstop</span> <span class="pl-c1">=</span> <span class="pl-c1">494</span>,</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"> .<span class="pl-c1">regs</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_qcif_regs</span>,</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">};</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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-s1">ov7675_win_sizes</span>[] <span class="pl-c1">=</span> {</div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Currently, only VGA is supported. Theoretically it could be possible</span></div></div></div><div class="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"> * to support CIF, QVGA and QCIF too. Taking values for ov7670 as a</span></div></div></div><div class="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-c"> * base and tweak them empirically could be required.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> {</div></div></div><div class="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-c1">width</span> <span class="pl-c1">=</span> <span class="pl-c1">VGA_WIDTH</span>,</div></div></div><div class="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"> .<span class="pl-c1">height</span> <span class="pl-c1">=</span> <span class="pl-c1">VGA_HEIGHT</span>,</div></div></div><div class="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-c1">com7_bit</span> <span class="pl-c1">=</span> <span class="pl-c1">COM7_FMT_VGA</span>,</div></div></div><div class="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"> .<span class="pl-c1">hstart</span> <span class="pl-c1">=</span> <span class="pl-c1">158</span>, <span class="pl-c">/* These values from */</span></div></div></div><div class="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"> .<span class="pl-c1">hstop</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span>, <span class="pl-c">/* Omnivision */</span></div></div></div><div class="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-c1">vstart</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span>, <span class="pl-c">/* Empirically determined */</span></div></div></div><div class="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"> .<span class="pl-c1">vstop</span> <span class="pl-c1">=</span> <span class="pl-c1">494</span>,</div></div></div><div class="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">regs</span> <span class="pl-c1">=</span> <span class="pl-c1">NULL</span>,</div></div></div><div class="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="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="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"> </div></div></div><div class="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">static</span> <span class="pl-smi">void</span> <span class="pl-en">ov7675_get_framerate</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span><span class="pl-s1">tpf</span>)</div></div></div><div class="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="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-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">u32</span> <span class="pl-s1">clkrc</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span>;</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">pll_factor</span>;</div></div></div><div class="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="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-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">pll_bypass</span>)</div></div></div><div class="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-s1">pll_factor</span> <span class="pl-c1">=</span> <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="LC771" class="react-file-line html-div" data-testid="code-cell" data-line-number="771" style="position:relative"> <span class="pl-k">else</span></div></div></div><div class="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"> <span class="pl-s1">pll_factor</span> <span class="pl-c1">=</span> <span class="pl-c1">PLL_FACTOR</span>;</div></div></div><div class="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"> </div></div></div><div class="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-s1">clkrc</span><span class="pl-c1">++</span>;</div></div></div><div class="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-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">mbus_code</span> <span class="pl-c1">==</span> <span class="pl-c1">MEDIA_BUS_FMT_SBGGR8_1X8</span>)</div></div></div><div class="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-s1">clkrc</span> <span class="pl-c1">=</span> (<span class="pl-s1">clkrc</span> >> <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="LC777" class="react-file-line html-div" data-testid="code-cell" data-line-number="777" style="position:relative"> </div></div></div><div class="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-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">=</span> <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="LC779" class="react-file-line html-div" data-testid="code-cell" data-line-number="779" style="position:relative"> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> <span class="pl-c1">=</span> (<span class="pl-c1">5</span> <span class="pl-c1">*</span> <span class="pl-s1">pll_factor</span> <span class="pl-c1">*</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clock_speed</span>) /</div></div></div><div class="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"> (<span class="pl-c1">4</span> <span class="pl-c1">*</span> <span class="pl-s1">clkrc</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7675_set_framerate</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span><span class="pl-s1">tpf</span>)</div></div></div><div class="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">{</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">u32</span> <span class="pl-s1">clkrc</span>;</div></div></div><div class="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-smi">int</span> <span class="pl-s1">pll_factor</span>;</div></div></div><div class="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-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * The formula is fps = 5/4*pixclk for YUV/RGB and</span></div></div></div><div class="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"><span class="pl-c"> * fps = 5/2*pixclk for RAW.</span></div></div></div><div class="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-c"> *</span></div></div></div><div class="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"><span class="pl-c"> * pixclk = clock_speed / (clkrc + 1) * PLLfactor</span></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"><span class="pl-c"> *</span></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"><span class="pl-c"> */</span></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-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">pll_bypass</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-s1">pll_factor</span> <span class="pl-c1">=</span> <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="LC800" class="react-file-line html-div" data-testid="code-cell" data-line-number="800" style="position:relative"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_DBLV</span>, <span class="pl-c1">DBLV_BYPASS</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-k">else</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-s1">pll_factor</span> <span class="pl-c1">=</span> <span class="pl-c1">PLL_FACTOR</span>;</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_DBLV</span>, <span class="pl-c1">DBLV_X4</span>);</div></div></div><div class="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"> }</div></div></div><div class="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-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC806" class="react-file-line html-div" data-testid="code-cell" data-line-number="806" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">==</span> <span class="pl-c1">0</span> <span class="pl-c1">||</span> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> <span class="pl-c1">==</span> <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="LC809" class="react-file-line html-div" data-testid="code-cell" data-line-number="809" style="position:relative"> <span class="pl-s1">clkrc</span> <span class="pl-c1">=</span> <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="LC810" class="react-file-line html-div" data-testid="code-cell" data-line-number="810" style="position:relative"> } <span class="pl-k">else</span> {</div></div></div><div class="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-s1">clkrc</span> <span class="pl-c1">=</span> (<span class="pl-c1">5</span> <span class="pl-c1">*</span> <span class="pl-s1">pll_factor</span> <span class="pl-c1">*</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clock_speed</span> <span class="pl-c1">*</span> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span>) /</div></div></div><div class="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"> (<span class="pl-c1">4</span> <span class="pl-c1">*</span> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">mbus_code</span> <span class="pl-c1">==</span> <span class="pl-c1">MEDIA_BUS_FMT_SBGGR8_1X8</span>)</div></div></div><div class="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"> <span class="pl-s1">clkrc</span> <span class="pl-c1">=</span> (<span class="pl-s1">clkrc</span> << <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="LC815" class="react-file-line html-div" data-testid="code-cell" data-line-number="815" style="position:relative"> <span class="pl-s1">clkrc</span><span class="pl-c1">--</span>;</div></div></div><div class="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"> }</div></div></div><div class="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"> </div></div></div><div class="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-c">/*</span></div></div></div><div class="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-c"> * The datasheet claims that clkrc = 0 will divide the input clock by 1</span></div></div></div><div class="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-c"> * but we've checked with an oscilloscope that it divides by 2 instead.</span></div></div></div><div class="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-c"> * So, if clkrc = 0 just bypass the divider.</span></div></div></div><div class="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-c"> */</span></div></div></div><div class="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">if</span> (<span class="pl-s1">clkrc</span> <= <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="LC824" class="react-file-line html-div" data-testid="code-cell" data-line-number="824" style="position:relative"> <span class="pl-s1">clkrc</span> <span class="pl-c1">=</span> <span class="pl-c1">CLK_EXT</span>;</div></div></div><div class="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"> <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s1">clkrc</span> <span class="pl-c1">></span> <span class="pl-c1">CLK_SCALE</span>)</div></div></div><div class="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-s1">clkrc</span> <span class="pl-c1">=</span> <span class="pl-c1">CLK_SCALE</span>;</div></div></div><div class="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-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">=</span> <span class="pl-s1">clkrc</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-c">/* Recalculate frame rate */</span></div></div></div><div class="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"> <span class="pl-en">ov7675_get_framerate</span>(<span class="pl-s1">sd</span>, <span class="pl-s1">tpf</span>);</div></div></div><div class="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"> </div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_CLKRC</span>, <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span>);</div></div></div><div class="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-k">if</span> (<span class="pl-s1">ret</span> <span class="pl-c1"><</span> <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="LC834" class="react-file-line html-div" data-testid="code-cell" data-line-number="834" style="position:relative"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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="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-k">return</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_DBLV</span>, <span class="pl-c1">DBLV_X4</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">void</span> <span class="pl-en">ov7670_get_framerate_legacy</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span><span class="pl-s1">tpf</span>)</div></div></div><div class="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="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-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">=</span> <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="LC845" class="react-file-line html-div" data-testid="code-cell" data-line-number="845" style="position:relative"> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clock_speed</span>;</div></div></div><div class="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"> <span class="pl-k">if</span> ((<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">&</span> <span class="pl-c1">CLK_EXT</span>) <span class="pl-c1">==</span> <span class="pl-c1">0</span> <span class="pl-c1">&&</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">&</span> <span class="pl-c1">CLK_SCALE</span>) <span class="pl-c1">></span> <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="LC847" class="react-file-line html-div" data-testid="code-cell" data-line-number="847" style="position:relative"> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> /= (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">&</span> <span class="pl-c1">CLK_SCALE</span>);</div></div></div><div class="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">}</div></div></div><div class="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="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_set_framerate_legacy</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_fract</span> <span class="pl-c1">*</span><span class="pl-s1">tpf</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">int</span> <span class="pl-s1">div</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">==</span> <span class="pl-c1">0</span> <span class="pl-c1">||</span> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> <span class="pl-c1">==</span> <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="LC857" class="react-file-line html-div" data-testid="code-cell" data-line-number="857" style="position:relative"> <span class="pl-s1">div</span> <span class="pl-c1">=</span> <span class="pl-c1">1</span>; <span class="pl-c">/* Reset to full rate */</span></div></div></div><div class="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">else</span></div></div></div><div class="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-s1">div</span> <span class="pl-c1">=</span> (<span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">*</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clock_speed</span>) / <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span>;</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">div</span> <span class="pl-c1">==</span> <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="LC861" class="react-file-line html-div" data-testid="code-cell" data-line-number="861" style="position:relative"> <span class="pl-s1">div</span> <span class="pl-c1">=</span> <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="LC862" class="react-file-line html-div" data-testid="code-cell" data-line-number="862" style="position:relative"> <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s1">div</span> <span class="pl-c1">></span> <span class="pl-c1">CLK_SCALE</span>)</div></div></div><div class="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"> <span class="pl-s1">div</span> <span class="pl-c1">=</span> <span class="pl-c1">CLK_SCALE</span>;</div></div></div><div class="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"> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">=</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span> <span class="pl-c1">&</span> <span class="pl-c1">0x80</span>) | <span class="pl-s1">div</span>;</div></div></div><div class="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-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">numerator</span> <span class="pl-c1">=</span> <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="LC866" class="react-file-line html-div" data-testid="code-cell" data-line-number="866" style="position:relative"> <span class="pl-s1">tpf</span><span class="pl-c1">-></span><span class="pl-c1">denominator</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clock_speed</span> / <span class="pl-s1">div</span>;</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_CLKRC</span>, <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">clkrc</span>);</div></div></div><div class="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">}</div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-c">/*</span></div></div></div><div class="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-c"> * Store a set of start/stop values into the camera.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_set_hw</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>, <span class="pl-smi">int</span> <span class="pl-s1">hstart</span>, <span class="pl-smi">int</span> <span class="pl-s1">hstop</span>,</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">vstart</span>, <span class="pl-smi">int</span> <span class="pl-s1">vstop</span>)</div></div></div><div class="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">{</div></div></div><div class="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-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">v</span>;</div></div></div><div class="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"><span class="pl-c">/*</span></div></div></div><div class="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-c"> * Horizontal: 11 bits, top 8 live in hstart and hstop. Bottom 3 of</span></div></div></div><div class="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"><span class="pl-c"> * hstart are in href[2:0], bottom 3 of hstop in href[5:3]. There is</span></div></div></div><div class="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"> * a mystery "edge offset" value in the top two bits of href.</span></div></div></div><div class="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></div></div></div><div class="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-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_HSTART</span>, (<span class="pl-s1">hstart</span> >> <span class="pl-c1">3</span>) <span class="pl-c1">&</span> <span class="pl-c1">0xff</span>);</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_HSTOP</span>, (<span class="pl-s1">hstop</span> >> <span class="pl-c1">3</span>) <span class="pl-c1">&</span> <span class="pl-c1">0xff</span>);</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_HREF</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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-s1">v</span> <span class="pl-c1">=</span> (<span class="pl-s1">v</span> <span class="pl-c1">&</span> <span class="pl-c1">0xc0</span>) | ((<span class="pl-s1">hstop</span> <span class="pl-c1">&</span> <span class="pl-c1">0x7</span>) << <span class="pl-c1">3</span>) | (<span class="pl-s1">hstart</span> <span class="pl-c1">&</span> <span class="pl-c1">0x7</span>);</div></div></div><div class="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-en">msleep</span>(<span class="pl-c1">10</span>);</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_HREF</span>, <span class="pl-s1">v</span>);</div></div></div><div class="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"><span class="pl-c">/*</span></div></div></div><div class="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-c"> * Vertical: similar arrangement, but only 10 bits.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_VSTART</span>, (<span class="pl-s1">vstart</span> >> <span class="pl-c1">2</span>) <span class="pl-c1">&</span> <span class="pl-c1">0xff</span>);</div></div></div><div class="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-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_VSTOP</span>, (<span class="pl-s1">vstop</span> >> <span class="pl-c1">2</span>) <span class="pl-c1">&</span> <span class="pl-c1">0xff</span>);</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_read</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_VREF</span>, <span class="pl-c1">&</span><span class="pl-s1">v</span>);</div></div></div><div class="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-s1">v</span> <span class="pl-c1">=</span> (<span class="pl-s1">v</span> <span class="pl-c1">&</span> <span class="pl-c1">0xf0</span>) | ((<span class="pl-s1">vstop</span> <span class="pl-c1">&</span> <span class="pl-c1">0x3</span>) << <span class="pl-c1">2</span>) | (<span class="pl-s1">vstart</span> <span class="pl-c1">&</span> <span class="pl-c1">0x3</span>);</div></div></div><div class="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"> <span class="pl-en">msleep</span>(<span class="pl-c1">10</span>);</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">+=</span> <span class="pl-en">ov7670_write</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">REG_VREF</span>, <span class="pl-s1">v</span>);</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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="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"> </div></div></div><div class="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="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_enum_mbus_code</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev_pad_config</span> <span class="pl-c1">*</span><span class="pl-s1">cfg</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev_mbus_code_enum</span> <span class="pl-c1">*</span><span class="pl-s1">code</span>)</div></div></div><div class="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="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> (<span class="pl-s1">code</span><span class="pl-c1">-></span><span class="pl-c1">pad</span> <span class="pl-c1">||</span> <span class="pl-s1">code</span><span class="pl-c1">-></span><span class="pl-c1">index</span> >= <span class="pl-c1">N_OV7670_FMTS</span>)</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-c1">-</span><span class="pl-c1">EINVAL</span>;</div></div></div><div class="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"> </div></div></div><div class="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-s1">code</span><span class="pl-c1">-></span><span class="pl-c1">code</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_formats</span>[<span class="pl-s1">code</span><span class="pl-c1">-></span><span class="pl-c1">index</span>].<span class="pl-c1">mbus_code</span>;</div></div></div><div class="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"> <span class="pl-k">return</span> <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="LC911" class="react-file-line html-div" data-testid="code-cell" data-line-number="911" style="position:relative">}</div></div></div><div class="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"> </div></div></div><div class="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-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_try_fmt_internal</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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">struct</span> <span class="pl-smi">v4l2_mbus_framefmt</span> <span class="pl-c1">*</span><span class="pl-s1">fmt</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">ov7670_format_struct</span> <span class="pl-c1">*</span><span class="pl-c1">*</span><span class="pl-s1">ret_fmt</span>,</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-c1">*</span><span class="pl-c1">*</span><span class="pl-s1">ret_wsize</span>)</div></div></div><div class="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">{</div></div></div><div class="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"> <span class="pl-smi">int</span> <span class="pl-s1">index</span>, <span class="pl-s1">i</span>;</div></div></div><div class="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-k">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-c1">*</span><span class="pl-s1">wsize</span>;</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">unsigned <span class="pl-smi">int</span></span> <span class="pl-s1">n_win_sizes</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">devtype</span><span class="pl-c1">-></span><span class="pl-c1">n_win_sizes</span>;</div></div></div><div class="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"> <span class="pl-smi">unsigned <span class="pl-smi">int</span></span> <span class="pl-s1">win_sizes_limit</span> <span class="pl-c1">=</span> <span class="pl-s1">n_win_sizes</span>;</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-k">for</span> (<span class="pl-s1">index</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span>; <span class="pl-s1">index</span> <span class="pl-c1"><</span> <span class="pl-c1">N_OV7670_FMTS</span>; <span class="pl-s1">index</span><span class="pl-c1">++</span>)</div></div></div><div class="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-s1">ov7670_formats</span>[<span class="pl-s1">index</span>].<span class="pl-c1">mbus_code</span> <span class="pl-c1">==</span> <span class="pl-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">code</span>)</div></div></div><div class="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">break</span>;</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">index</span> >= <span class="pl-c1">N_OV7670_FMTS</span>) {</div></div></div><div class="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"> <span class="pl-c">/* default to first format */</span></div></div></div><div class="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-s1">index</span> <span class="pl-c1">=</span> <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="LC930" class="react-file-line html-div" data-testid="code-cell" data-line-number="930" style="position:relative"> <span class="pl-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">code</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_formats</span>[<span class="pl-c1">0</span>].<span class="pl-c1">mbus_code</span>;</div></div></div><div class="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="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-k">if</span> (<span class="pl-s1">ret_fmt</span> <span class="pl-c1">!=</span> <span class="pl-c1">NULL</span>)</div></div></div><div class="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-c1">*</span><span class="pl-s1">ret_fmt</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_formats</span> <span class="pl-c1">+</span> <span class="pl-s1">index</span>;</div></div></div><div class="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-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Fields: the OV devices claim to be progressive.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">field</span> <span class="pl-c1">=</span> <span class="pl-c1">V4L2_FIELD_NONE</span>;</div></div></div><div class="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"> </div></div></div><div class="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-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Don't consider values that don't match min_height and min_width</span></div></div></div><div class="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-c"> * constraints.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">min_width</span> <span class="pl-c1">||</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">min_height</span>)</div></div></div><div class="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-k">for</span> (<span class="pl-s1">i</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span>; <span class="pl-s1">i</span> <span class="pl-c1"><</span> <span class="pl-s1">n_win_sizes</span>; <span class="pl-s1">i</span><span class="pl-c1">++</span>) {</div></div></div><div class="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-s1">wsize</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">devtype</span><span class="pl-c1">-></span><span class="pl-c1">win_sizes</span> <span class="pl-c1">+</span> <span class="pl-s1">i</span>;</div></div></div><div class="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"> </div></div></div><div class="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-k">if</span> (<span class="pl-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">width</span> <span class="pl-c1"><</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">min_width</span> <span class="pl-c1">||</span></div></div></div><div class="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-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">height</span> <span class="pl-c1"><</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">min_height</span>) {</div></div></div><div class="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-s1">win_sizes_limit</span> <span class="pl-c1">=</span> <span class="pl-s1">i</span>;</div></div></div><div class="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">break</span>;</div></div></div><div class="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"> }</div></div></div><div class="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"> }</div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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-c"> * Round requested image size down to the nearest</span></div></div></div><div class="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"><span class="pl-c"> * we support, but not below the smallest.</span></div></div></div><div class="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></div></div></div><div class="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">for</span> (<span class="pl-s1">wsize</span> <span class="pl-c1">=</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">devtype</span><span class="pl-c1">-></span><span class="pl-c1">win_sizes</span>;</div></div></div><div class="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"> <span class="pl-s1">wsize</span> <span class="pl-c1"><</span> <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">devtype</span><span class="pl-c1">-></span><span class="pl-c1">win_sizes</span> <span class="pl-c1">+</span> <span class="pl-s1">win_sizes_limit</span>; <span class="pl-s1">wsize</span><span class="pl-c1">++</span>)</div></div></div><div class="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> (<span class="pl-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">width</span> >= <span class="pl-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">width</span> <span class="pl-c1">&&</span> <span class="pl-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">height</span> >= <span class="pl-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">height</span>)</div></div></div><div class="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"> <span class="pl-k">break</span>;</div></div></div><div class="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">if</span> (<span class="pl-s1">wsize</span> >= <span class="pl-s1">info</span><span class="pl-c1">-></span><span class="pl-c1">devtype</span><span class="pl-c1">-></span><span class="pl-c1">win_sizes</span> <span class="pl-c1">+</span> <span class="pl-s1">win_sizes_limit</span>)</div></div></div><div class="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"> <span class="pl-s1">wsize</span><span class="pl-c1">--</span>; <span class="pl-c">/* Take the smallest one */</span></div></div></div><div class="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">if</span> (<span class="pl-s1">ret_wsize</span> <span class="pl-c1">!=</span> <span class="pl-c1">NULL</span>)</div></div></div><div class="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"> <span class="pl-c1">*</span><span class="pl-s1">ret_wsize</span> <span class="pl-c1">=</span> <span class="pl-s1">wsize</span>;</div></div></div><div class="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"> <span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Note the size we'll actually handle.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">width</span> <span class="pl-c1">=</span> <span class="pl-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">width</span>;</div></div></div><div class="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"> <span class="pl-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">height</span> <span class="pl-c1">=</span> <span class="pl-s1">wsize</span><span class="pl-c1">-></span><span class="pl-c1">height</span>;</div></div></div><div class="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-s1">fmt</span><span class="pl-c1">-></span><span class="pl-c1">colorspace</span> <span class="pl-c1">=</span> <span class="pl-s1">ov7670_formats</span>[<span class="pl-s1">index</span>].<span class="pl-c1">colorspace</span>;</div></div></div><div class="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"> <span class="pl-k">return</span> <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="LC972" class="react-file-line html-div" data-testid="code-cell" data-line-number="972" style="position:relative">}</div></div></div><div class="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"> </div></div></div><div class="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"><span class="pl-c">/*</span></div></div></div><div class="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"><span class="pl-c"> * Set a format.</span></div></div></div><div class="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"><span class="pl-c"> */</span></div></div></div><div class="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"><span class="pl-k">static</span> <span class="pl-smi">int</span> <span class="pl-en">ov7670_set_fmt</span>(<span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev</span> <span class="pl-c1">*</span><span class="pl-s1">sd</span>,</div></div></div><div class="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"> <span class="pl-k">struct</span> <span class="pl-smi">v4l2_subdev_pad_config</span> <span class="pl-c1">*</span><span class="pl-s1">cfg</span>,</div></div></div><div class="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-k">struct</span> <span class="pl-smi">v4l2_subdev_format</span> <span class="pl-c1">*</span><span class="pl-s1">format</span>)</div></div></div><div class="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">{</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_format_struct</span> <span class="pl-c1">*</span><span class="pl-s1">ovfmt</span>;</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_win_size</span> <span class="pl-c1">*</span><span class="pl-s1">wsize</span>;</div></div></div><div class="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">struct</span> <span class="pl-smi">ov7670_info</span> <span class="pl-c1">*</span><span class="pl-s1">info</span> <span class="pl-c1">=</span> <span class="pl-en">to_state</span>(<span class="pl-s1">sd</span>);</div></div></div><div class="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-smi">unsigned <span class="pl-smi">char</span></span> <span class="pl-s1">com7</span>;</div></div></div><div class="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-smi">int</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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"> </div></div></div><div class="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">if</span> (<span class="pl-s1">format</span><span class="pl-c1">-></span><span class="pl-c1">pad</span>)</div></div></div><div class="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"> <span class="pl-k">return</span> <span class="pl-c1">-</span><span class="pl-c1">EINVAL</span>;</div></div></div><div class="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"> </div></div></div><div class="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">if</span> (<span class="pl-s1">format</span><span class="pl-c1">-></span><span class="pl-c1">which</span> <span class="pl-c1">==</span> <span class="pl-c1">V4L2_SUBDEV_FORMAT_TRY</span>) {</div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_try_fmt_internal</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">&</span><span class="pl-s1">format</span><span class="pl-c1">-></span><span class="pl-c1">format</span>, <span class="pl-c1">NULL</span>, <span class="pl-c1">NULL</span>);</div></div></div><div class="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span>)</div></div></div><div class="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-k">return</span> <span class="pl-s1">ret</span>;</div></div></div><div class="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-s1">cfg</span><span class="pl-c1">-></span><span class="pl-c1">try_fmt</span> <span class="pl-c1">=</span> <span class="pl-s1">format</span><span class="pl-c1">-></span><span class="pl-c1">format</span>;</div></div></div><div class="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"> <span class="pl-k">return</span> <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="LC996" class="react-file-line html-div" data-testid="code-cell" data-line-number="996" style="position:relative"> }</div></div></div><div class="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"> </div></div></div><div class="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"> <span class="pl-s1">ret</span> <span class="pl-c1">=</span> <span class="pl-en">ov7670_try_fmt_internal</span>(<span class="pl-s1">sd</span>, <span class="pl-c1">&</span><span class="pl-s1">format</span><span class="pl-c1">-></span><span class="pl-c1">format</span>, <span class="pl-c1">&</span><span class="pl-s1">ovfmt</span>, <span class="pl-c1">&</span><span class="pl-s1">wsize</span>);</div></div></div><div class="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="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"> <span class="pl-k">if</span> (<span class="pl-s1">ret</span>)</div></div></div></div></div><div class="Box-sc-g0xbh4-0 diCurC"><a href="https://github.com/xillybus/xillinux-kernel/raw/master/drivers/media/i2c/ov7670.c" class="Link__StyledLink-sc-14289xe-0 dheQRw">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 aZrVR"></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 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path> </svg> </a> <span> © 2024 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="mr-3" > <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"> Manage cookies </button> </cookie-consent-link> </li> <li class="mr-3"> <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"> 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;" tabindex="0"> <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 tooltipped-no-delay" 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 tooltipped-no-delay 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" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only" aria-live="assertive" aria-atomic="true"></div> </body> </html>