2024-12-23 16:26:32 -06:00
<! 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-0cfd1fd8509e.css" />< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/dark-d782f59290e2.css" />< link data-color -theme = "dark_dimmed" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/dark_dimmed-f9fbc4b99a77.css" />< link data-color -theme = "dark_high_contrast" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/dark_high_contrast-cff1c9b27b1a.css" />< link data-color -theme = "dark_colorblind" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/dark_colorblind-70097f75aec1.css" />< link data-color -theme = "light_colorblind" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/light_colorblind-c2f0d49bdcd9.css" />< link data-color -theme = "light_high_contrast" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/light_high_contrast-4747d7bc0bc4.css" />< link data-color -theme = "light_tritanopia" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/light_tritanopia-d3f6a61c91c8.css" />< link data-color -theme = "dark_tritanopia" crossorigin = "anonymous" media = "all" rel = "stylesheet" data-href = "https://github.githubassets.com/assets/dark_tritanopia-a188d53f44bb.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/primer-primitives-953961b66e63.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/primer-4430d3c2c150.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/global-47b8b2ca21ae.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/github-e72829f5538b.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/repository-d031bcc14e1b.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/code-9e1913b328be.css" />
< script type = "application/json" id = "client-env" >{ "locale" : "en" , "featureFlags" : [ "alive_longer_retries" , "bypass_copilot_indexing_quota" , "copilot_new_references_ui" , "copilot_beta_features_opt_in" , "copilot_chat_retry_on_error" , "copilot_chat_persist_submitted_input" , "copilot_conversational_ux_history_refs" , "copilot_editor_upsells" , "copilot_free_limited_user" , "copilot_implicit_context" , "copilot_no_floating_button" , "copilot_smell_icebreaker_ux" , "experimentation_azure_variant_endpoint" , "failbot_handle_non_errors" , "geojson_azure_maps" , "ghost_pilot_confidence_truncation_25" , "ghost_pilot_confidence_truncation_40" , "hovercard_accessibility" , "issues_react_new_timeline" , "issues_react_avatar_refactor" , "issues_react_remove_placeholders" , "issues_react_blur_item_picker_on_close" , "issues_react_use_react_router_in_index" , "marketing_pages_search_explore_provider" , "react_keyboard_shortcuts_dialog" , "remove_child_patch" , "sample_network_conn_type" , "site_metered_billing_update" , "site_copilot_free" , "lifecycle_label_name_updates" ]}</ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/wp-runtime-8fd927947b24.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-d7e6bc799724.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-c551691a8183.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/environment-7b93e0f0c8ff.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-ea2a5d75d580.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-f6da4b3fa34c.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a74b4e0a8a6b.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-c6d035fa8dc8.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/github-elements-f991cfab5105.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/element-registry-d283cbab281e.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-bb80ec-7f43298e364b.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-e3cbe28f1638.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-6cf3320416b8.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-69cfcc-833249ee3034.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-863ef5872a03.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-917d4bda1f1a.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-7cbef09a422c.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-d0d0a6-b41aeef03499.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-fb43816ab83c.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/behaviors-a6abce982f3f.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/notifications-global-cfcd9f4f0f23.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-26cce2010167.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/code-menu-b5f092ec4b30.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/primer-react-753dc87b1e29.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/react-core-accb67f1350f.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/react-lib-2131e17288a8.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryClient_js-e6f07a7e80b7.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-37e3d5-92730c05e718.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-f7cc96ebae76.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b89b98661809.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_lodash-es__Stack_js-node_modules_lodash-es__Uint8Array_js-node_modules_l-4faaa6-10d8eea337ce.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_lodash-es__baseIsEqual_js-8929eb9718d5.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-9002b0-881da98a8b00.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_promise-with-resolvers-polyfill_promise-with-r-014121-a7926fdcecf7.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_paths_index_ts-4e4d706da555.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-9445f4afb2bc.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_code-view-shared_utilities_web-worker_ts-ui_packages_code-view-shared_worker-jobs-cdcae1-f0dc8f3ae3e0.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-503c34-7dfba50d2c16.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_document-metadata_document-metadata_ts-ui_packages_repos-file-tree-view_repos-fil-5db355-d0627efd6544.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/app_assets_modules_github_blob-anchor_ts-ui_packages_code-nav_code-nav_ts-ui_packages_filter--8253c1-f38cdfca9137.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/react-code-view-46a8d3dce54e.js" ></ script >
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/primer-react.797c8ec006b327590422.module.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/react-code-view.6b587a69b593e23c3657.module.css" />
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/primer-react-753dc87b1e29.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/react-core-accb67f1350f.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/react-lib-2131e17288a8.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryClient_js-e6f07a7e80b7.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-37e3d5-92730c05e718.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-f7cc96ebae76.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/notifications-subscriptions-menu-51601778bd8d.js" ></ script >
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/primer-react.797c8ec006b327590422.module.css" />
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" />
< title > install-scripts / src / dotnet-install . ps1 at main · dotnet / install-scripts · GitHub </ title >
< meta name = "route-pattern" content = "/:user_id/:repository/blob/*name(/*path)" data-turbo -transient >
< meta name = "route-controller" content = "blob" data-turbo -transient >
< meta name = "route-action" content = "show" data-turbo -transient >
< meta name = "current-catalog-service-hash" content = "f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb" >
< meta name = "request-id" content = "CB98:20C864:419EFD5:5F0B46C:6769E0A3" data-pjax -transient = "true" />< meta name = "html-safe-nonce" content = "652ee72c9096ef4a814674547d6570a2c030eaa88ba9f4806d47ae8860151dfd" data-pjax -transient = "true" />< meta name = "visitor-payload" content = "eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQjk4OjIwQzg2NDo0MTlFRkQ1OjVGMEI0NkM6Njc2OUUwQTMiLCJ2aXNpdG9yX2lkIjoiNjc5MDkwMjEzMDUyMDgwMjkyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=" data-pjax -transient = "true" />< meta name = "visitor-hmac" content = "b9207961fbf38f28ae64be2ff859f046366a4c05b5d3281878c5eb643a256f32" data-pjax -transient = "true" />
< meta name = "hovercard-subject-tag" content = "repository:265272737" 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 = "Contribute to dotnet/install-scripts 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/dotnet/install-scripts/blob/main/src/dotnet-install.ps1" />
< meta name = "twitter:image" content = "https://opengraph.githubassets.com/3cff52a1f0d52eaf67a2520004da937ef9c8b434ae6972552ecb92c70b50a870/dotnet/install-scripts" />< meta name = "twitter:site" content = "@github" />< meta name = "twitter:card" content = "summary_large_image" />< meta name = "twitter:title" content = "install-scripts/src/dotnet-install.ps1 at main · dotnet/install-scripts" />< meta name = "twitter:description" content = "Contribute to dotnet/install-scripts development by creating an account on GitHub." />
< meta property = "og:image" content = "https://opengraph.githubassets.com/3cff52a1f0d52eaf67a2520004da937ef9c8b434ae6972552ecb92c70b50a870/dotnet/install-scripts" />< meta property = "og:image:alt" content = "Contribute to dotnet/install-scripts 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 = "install-scripts/src/dotnet-install.ps1 at main · dotnet/install-scripts" />< meta property = "og:url" content = "https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1" />< meta property = "og:description" content = "Contribute to dotnet/install-scripts 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 = "3c1eadc3d84284d239af1be35a327ecf19b858b907e57785826f9128d6118bc8" data-turbo -track = "reload" >
< meta http-equiv = "x-pjax-csp-version" content = "ace39c3b6632770952207593607e6e0be0db363435a8b877b1f96abe6430f345" data-turbo -track = "reload" >
< meta http-equiv = "x-pjax-css-version" content = "137747501b000c3c7ab6b8b92f1ded64f18d692f67bb1c163ffcea3636000502" data-turbo -track = "reload" >
< meta http-equiv = "x-pjax-js-version" content = "ebf47e19393f392c675be74b18396aab5d930da7c6b4254d3ba0daab91830199" 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/dotnet/install-scripts git https://github.com/dotnet/install-scripts.git" >
< meta name = "octolytics-dimension-user_id" content = "9141961" />< meta name = "octolytics-dimension-user_login" content = "dotnet" />< meta name = "octolytics-dimension-repository_id" content = "265272737" />< meta name = "octolytics-dimension-repository_nwo" content = "dotnet/install-scripts" />< meta name = "octolytics-dimension-repository_public" content = "true" />< meta name = "octolytics-dimension-repository_is_fork" content = "false" />< meta name = "octolytics-dimension-repository_network_root_id" content = "265272737" />< meta name = "octolytics-dimension-repository_network_root_nwo" content = "dotnet/install-scripts" />
< 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" data-base -href = "https://github.githubassets.com/favicons/favicon" >
< meta name = "theme-color" content = "#1e2327" >
< meta name = "color-scheme" content = "light dark" />
< link rel = "manifest" href = "/manifest.json" crossOrigin = "use-credentials" >
</ head >
< body class = "logged-out env-production page-responsive" style = "word-wrap: break-word;" >
< div data-turbo -body class = "logged-out env-production page-responsive" style = "word-wrap: break-word;" >
< div class = "position-relative header-wrapper js-header-wrapper " >
< a href = "#start-of-content" data-skip -target-assigned = "false" class = "px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content" > Skip to content </ a >
< span data-view -component = "true" class = "progress-pjax-loader Progress position-fixed width-full" >
< span style = "width: 0%;" data-view -component = "true" class = "Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis" ></ span >
</ span >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-df3b47d86af0.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/keyboard-shortcuts-dialog-958cae8ecd6c.js" ></ script >
< link crossorigin = "anonymous" media = "all" rel = "stylesheet" href = "https://github.githubassets.com/assets/primer-react.797c8ec006b327590422.module.css" />
< react-partial
partial-name = "keyboard-shortcuts-dialog"
data-ssr = "false"
data-attempted -ssr = "false"
>
< script type = "application/json" data-target = "react-partial.embeddedData" >{ "props" : { "docsUrl" : "https://docs.github.com/get-started/accessibility/keyboard-shortcuts" }}</ script >
< div data-target = "react-partial.reactRoot" ></ div >
</ react-partial >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-73b675cf164a.js" ></ script >
< script crossorigin = "anonymous" defer = "defer" type = "application/javascript" src = "https://github.githubassets.com/assets/sessions-5d6426bbf16a.js" ></ script >
< header class = "HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role = "banner" data-is -top = "true" data-color -mode = light data-light -theme = light data-dark -theme = dark >
< h2 class = "sr-only" > Navigation Menu </ h2 >
< button type = "button" class = "HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label = "Toggle navigation" >
< span class = "d-none" > Toggle navigation </ span >
</ button >
< div class = "d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1" >
< div class = "d-flex flex-justify-between flex-items-center width-full width-lg-auto" >
< div class = "flex-1" >
< button aria-label = "Toggle navigation" aria-expanded = "false" type = "button" data-view -component = "true" class = "js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1" > < span class = "Button-content" >
< span class = "Button-label" >< div class = "HeaderMenu-toggle-bar rounded my-1" ></ div >
< div class = "HeaderMenu-toggle-bar rounded my-1" ></ div >
< div class = "HeaderMenu-toggle-bar rounded my-1" ></ div ></ span >
</ span >
</ button >
</ div >
< a class = "mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav"
href = "/"
aria-label = "Homepage"
data-analytics -event = "{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}" >
< svg height = "32" aria-hidden = "true" viewBox = "0 0 24 24" version = "1.1" width = "32" data-view -component = "true" class = "octicon octicon-mark-github" >
< path d = "M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z" ></ path >
</ svg >
</ a >
< div class = "flex-1 flex-order-2 text-right" >
< a
href = "/login?return_to=https%3A%2F%2Fgithub.com%2Fdotnet%2Finstall-scripts%2Fblob%2Fmain%2Fsrc%2Fdotnet-install.ps1"
class = "HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav"
data-hydro -click = "{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "e97026b84124505336ae0889ce35c7163da6acd303c4017a6f7c962f3132765d"
data-analytics -event = "{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}"
>
Sign in
</ a >
</ div >
</ div >
< div class = "HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0" >
< div class = "HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0" >
< nav class = "HeaderMenu-nav" aria-label = "Global" >
< ul class = "d-lg-flex list-style-none" >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< button type = "button" class = "HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded = "false" >
Product
< svg opacity = "0.5" aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-down HeaderMenu-icon ml-1" >
< path d = "M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" ></ path >
</ svg >
</ button >
< div class = "HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide" >
< div class = "HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0" >
< ul class = "list-style-none f5" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href = "https://github.com/features/copilot" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-copilot color-fg-subtle mr-3" >
< path d = "M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z" ></ path >< path d = "M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > GitHub Copilot </ div >
Write better code with AI
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href = "https://github.com/features/security" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-shield-check color-fg-subtle mr-3" >
< path d = "M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z" ></ path >< path d = "m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Security </ div >
Find and fix vulnerabilities
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href = "https://github.com/features/actions" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-workflow color-fg-subtle mr-3" >
< path d = "M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Actions </ div >
Automate any workflow
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href = "https://github.com/features/codespaces" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-codespaces color-fg-subtle mr-3" >
< path d = "M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z" ></ path >< path d = "M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Codespaces </ div >
Instant dev environments
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href = "https://github.com/features/issues" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-issue-opened color-fg-subtle mr-3" >
< path d = "M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Issues </ div >
Plan and track work
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href = "https://github.com/features/code-review" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-code-review color-fg-subtle mr-3" >
< path d = "M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z" ></ path >< path d = "M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Code Review </ div >
Manage code changes
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href = "https://github.com/features/discussions" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-comment-discussion color-fg-subtle mr-3" >
< path d = "M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z" ></ path >< path d = "M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Discussions </ div >
Collaborate outside of code
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics -event = "{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href = "https://github.com/features/code-search" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-code-square color-fg-subtle mr-3" >
< path d = "M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z" ></ path >< path d = "M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Code Search </ div >
Find more , search less
</ div >
</ a ></ li >
</ ul >
</ div >
</ div >
< div class = "HeaderMenu-column px-lg-4" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "product-explore-heading" > Explore </ span >
< ul class = "list-style-none f5" aria-labelledby = "product-explore-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href = "https://github.com/features" >
All features
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href = "https://docs.github.com" >
Documentation
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle" >
< path d = "M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z" ></ path >
</ svg >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href = "https://skills.github.com" >
GitHub Skills
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle" >
< path d = "M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z" ></ path >
</ svg >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href = "https://github.blog" >
Blog
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle" >
< path d = "M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z" ></ path >
</ svg >
</ a ></ li >
</ ul >
</ div >
</ div >
</ div >
</ li >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< button type = "button" class = "HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded = "false" >
Solutions
< svg opacity = "0.5" aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-down HeaderMenu-icon ml-1" >
< path d = "M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" ></ path >
</ svg >
</ button >
< div class = "HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide" >
< div class = "HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0" >
< span class = "d-block h4 color-fg-default my-1" id = "solutions-by-company-size-heading" > By company size </ span >
< ul class = "list-style-none f5" aria-labelledby = "solutions-by-company-size-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href = "https://github.com/enterprise" >
Enterprises
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href = "https://github.com/team" >
Small and medium teams
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href = "https://github.com/enterprise/startups" >
Startups
</ a ></ li >
</ ul >
</ div >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "solutions-by-use-case-heading" > By use case </ span >
< ul class = "list-style-none f5" aria-labelledby = "solutions-by-use-case-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href = "/solutions/use-case/devsecops" >
DevSecOps
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href = "/solutions/use-case/devops" >
DevOps
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href = "/solutions/use-case/ci-cd" >
CI / CD
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href = "/solutions/use-case" >
View all use cases
</ a ></ li >
</ ul >
</ div >
</ div >
< div class = "HeaderMenu-column px-lg-4" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "solutions-by-industry-heading" > By industry </ span >
< ul class = "list-style-none f5" aria-labelledby = "solutions-by-industry-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href = "/solutions/industry/healthcare" >
Healthcare
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href = "/solutions/industry/financial-services" >
Financial services
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href = "/solutions/industry/manufacturing" >
Manufacturing
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href = "/solutions/industry/government" >
Government
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href = "/solutions/industry" >
View all industries
</ a ></ li >
</ ul >
</ div >
</ div >
< div class = "HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold" >
< a href = "/solutions" >
View all solutions
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-right HeaderMenu-trailing-link-icon" >
< path d = "M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
</ a > </ div >
</ div >
</ li >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< button type = "button" class = "HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded = "false" >
Resources
< svg opacity = "0.5" aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-down HeaderMenu-icon ml-1" >
< path d = "M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" ></ path >
</ svg >
</ button >
< div class = "HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide" >
< div class = "HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "resources-topics-heading" > Topics </ span >
< ul class = "list-style-none f5" aria-labelledby = "resources-topics-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href = "/resources/articles/ai" >
AI
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href = "/resources/articles/devops" >
DevOps
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href = "/resources/articles/security" >
Security
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href = "/resources/articles/software-development" >
Software Development
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href = "/resources/articles" >
View all
</ a ></ li >
</ ul >
</ div >
</ div >
< div class = "HeaderMenu-column px-lg-4" >
< div class = "border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "resources-explore-heading" > Explore </ span >
< ul class = "list-style-none f5" aria-labelledby = "resources-explore-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href = "https://resources.github.com/learn/pathways" >
Learning Pathways
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle" >
< path d = "M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z" ></ path >
</ svg >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" 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 d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href = "https://github.com/customer-stories" >
Customer Stories
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target = "_blank" data-analytics -event = "{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href = "https://partner.github.com" >
Partners
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle" >
< path d = "M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z" ></ path >
</ svg >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"executive_insights","context":"resources","tag":"link","label":"executive_insights_link_resources_navbar"}" href = "https://github.com/solutions/executive-insights" >
Executive Insights
</ a ></ li >
</ ul >
</ div >
</ div >
</ div >
</ li >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< button type = "button" class = "HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded = "false" >
Open Source
< svg opacity = "0.5" aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-down HeaderMenu-icon ml-1" >
< path d = "M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" ></ path >
</ svg >
</ button >
< div class = "HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4" >
< div class = "HeaderMenu-column" >
< div class = "border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3" >
< ul class = "list-style-none f5" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics -event = "{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href = "/sponsors" >
< div >
< div class = "color-fg-default h4" > GitHub Sponsors </ div >
Fund open source developers
</ div >
</ a ></ li >
</ ul >
</ div >
< div class = "border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3" >
< ul class = "list-style-none f5" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics -event = "{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href = "https://github.com/readme" >
< div >
< div class = "color-fg-default h4" > The ReadME Project </ div >
GitHub community articles
</ div >
</ a ></ li >
</ ul >
</ div >
< div class = "border-bottom pb-3 pb-lg-0 border-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "open-source-repositories-heading" > Repositories </ span >
< ul class = "list-style-none f5" aria-labelledby = "open-source-repositories-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href = "https://github.com/topics" >
Topics
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href = "https://github.com/trending" >
Trending
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics -event = "{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href = "https://github.com/collections" >
Collections
</ a ></ li >
</ ul >
</ div >
</ div >
</ div >
</ li >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< button type = "button" class = "HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded = "false" >
Enterprise
< svg opacity = "0.5" aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-chevron-down HeaderMenu-icon ml-1" >
< path d = "M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z" ></ path >
</ svg >
</ button >
< div class = "HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4" >
< div class = "HeaderMenu-column" >
< div class = "border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3" >
< ul class = "list-style-none f5" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics -event = "{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href = "/enterprise" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-stack color-fg-subtle mr-3" >
< path d = "M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z" ></ path >< path d = "M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z" ></ path >< path d = "M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Enterprise platform </ div >
AI-powered developer platform
</ div >
</ a ></ li >
</ ul >
</ div >
< div class = "border-bottom pb-3 pb-lg-0 border-bottom-0" >
< span class = "d-block h4 color-fg-default my-1" id = "enterprise-available-add-ons-heading" > Available add-ons </ span >
< ul class = "list-style-none f5" aria-labelledby = "enterprise-available-add-ons-heading" >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href = "https://github.com/enterprise/advanced-security" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-shield-check color-fg-subtle mr-3" >
< path d = "M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z" ></ path >< path d = "m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Advanced Security </ div >
Enterprise-grade security features
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics -event = "{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" 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" > GitHub Copilot </ div >
Enterprise-grade AI features
</ div >
</ a ></ li >
< li >
< a class = "HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics -event = "{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href = "/premium-support" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-comment-discussion color-fg-subtle mr-3" >
< path d = "M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z" ></ path >< path d = "M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z" ></ path >
</ svg >
< div >
< div class = "color-fg-default h4" > Premium Support </ div >
Enterprise-grade 24 / 7 support
</ div >
</ a ></ li >
</ ul >
</ div >
</ div >
</ div >
</ li >
< li class = "HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item" >
< a class = "HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics -event = "{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href = "https://github.com/pricing" > Pricing </ a >
</ li >
</ ul >
</ nav >
< div class = "d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3" >
< qbsearch-input class = "search-input" data-scope = "repo:dotnet/install-scripts" data-custom -scopes-path = "/search/custom_scopes" data-delete -custom-scopes-csrf = "0G2w0UOQQe-yY7Dqn0heO-ZJPtXk7rxuc3V2zIHf8zIJvzo32Oa4FFMCO_UOgLGDEKiY89PcDEfiyACB7CsCyA" 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 = "dotnet/install-scripts" data-current -org = "dotnet" data-current -owner = "" data-logged -in = "false" data-copilot -chat-enabled = "false" data-nl -search-enabled = "false" data-retain -scroll-position = "true" >
< div
class = "search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded"
data-action = "click:qbsearch-input#searchInputContainerClicked"
>
< button
type = "button"
class = "header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none"
data-target = "qbsearch-input.inputButton"
aria-label = "Search or jump to…"
aria-haspopup = "dialog"
placeholder = "Search or jump to..."
data-hotkey = s ,/
autocapitalize = "off"
data-analytics -event = "{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}"
data-action = "click:qbsearch-input#handleExpand"
>
< div class = "mr-2 color-fg-muted" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-search" >
< path d = "M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z" ></ path >
</ svg >
</ div >
< span class = "flex-1" data-target = "qbsearch-input.inputButtonText" > Search or jump to ...</ span >
< div class = "d-flex" data-target = "qbsearch-input.hotkeyIndicator" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "22" height = "20" aria-hidden = "true" class = "mr-1" >< path fill = "none" stroke = "#979A9C" opacity = ".4" d = "M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z" ></ path >< path fill = "#979A9C" d = "M11.8 6L8 15.1h-.9L10.8 6h1z" ></ path ></ svg >
</ div >
</ button >
< input type = "hidden" name = "type" class = "js-site-search-type-field" >
< div class = "Overlay--hidden " data-modal -dialog-overlay >
< modal-dialog data-action = "close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target = "qbsearch-input.searchSuggestionsDialog" role = "dialog" id = "search-suggestions-dialog" aria-modal = "true" aria-labelledby = "search-suggestions-dialog-header" data-view -component = "true" class = "Overlay Overlay--width-large Overlay--height-auto" >
< h1 id = "search-suggestions-dialog-header" class = "sr-only" > Search code , repositories , users , issues , pull requests ...</ h1 >
< div class = "Overlay-body Overlay-body--paddingNone" >
< div data-view -component = "true" > < div class = "search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container"
style = "border-radius: 12px;"
data-target = "qbsearch-input.queryBuilderContainer"
hidden
>
<!-- ' "` --><!-- </textarea></xmp> --></option></form><form id=" query-builder -test-form " action="" accept-charset=" UTF - 8 " method=" get ">
<query-builder data-target=" qbsearch-input . queryBuilder " id=" query-builder -query-builder-test " data-filter-key=" : " data-view-component=" true " class=" QueryBuilder search-query -builder ">
<div class=" FormControl FormControl - -fullWidth ">
<label id=" query-builder -test-label " for=" query-builder -test " class=" FormControl-label sr-only ">
Search
</label>
<div
class=" QueryBuilder-StyledInput width-fit "
data-target=" query-builder . styledInput "
>
<span id=" query-builder -test-leadingvisual-wrap " class=" FormControl-input -leadingVisualWrap QueryBuilder-leadingVisualWrap ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-search FormControl-input -leadingVisual ">
<path d=" M10 . 68 11 . 74a6 6 0 0 1 - 7.922 - 8.982 6 6 0 0 1 8.982 7 . 922l3 . 04 3 . 04a . 749 . 749 0 0 1 - .326 1.275 . 749 . 749 0 0 1 - .734 -. 215ZM11 . 5 7a4 . 499 4.499 0 1 0 - 8.997 0A4 . 499 4.499 0 0 0 11.5 7Z "></path>
</svg>
</span>
<div data-target=" query-builder . styledInputContainer " class=" QueryBuilder-StyledInputContainer ">
<div
aria-hidden=" true "
class=" QueryBuilder-StyledInputContent "
data-target=" query-builder . styledInputContent "
></div>
<div class=" QueryBuilder-InputWrapper ">
<div aria-hidden=" true " class=" QueryBuilder-Sizer " data-target=" query-builder . sizer "></div>
<input id=" query-builder -test " name=" query-builder -test " value="" autocomplete=" off " type=" text " role=" combobox " spellcheck=" false " aria-expanded=" false " aria-describedby=" validation - 52a342ee - 6bc0 - 4b95 - 967f -dfe1f9f4480a " data-target=" query-builder . input " data-action="
input : query-builder #inputChange
blur : query-builder #inputBlur
keydown : query-builder #inputKeydown
focus : query-builder #inputFocus
" data-view-component=" true " class=" FormControl-input QueryBuilder-Input FormControl-medium " />
</div>
</div>
<span class=" sr-only " id=" query-builder -test-clear ">Clear</span>
<button role=" button " id=" query-builder -test-clear-button " aria-labelledby=" query-builder -test-clear query-builder -test-label " data-target=" query-builder . clearButton " data-action="
click : query-builder #clear
focus : query-builder #clearButtonFocus
blur : query-builder #clearButtonBlur
" variant=" small " hidden=" hidden " type=" button " data-view-component=" true " class=" Button Button - -iconOnly Button - -invisible Button - -medium mr - 1 px - 2 py - 0 d-flex flex-items -center rounded - 1 color-fg -muted "> <svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-x -circle-fill Button-visual ">
<path d=" M2 . 343 13 . 657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13 . 657ZM6 . 03 4 . 97a . 751 . 751 0 0 0 - 1.042 . 018 . 751 . 751 0 0 0 - .018 1 . 042L6 . 94 8 4.97 9 . 97a . 749 . 749 0 0 0 .326 1.275 . 749 . 749 0 0 0 .734 -. 215L8 9 . 06l1 . 97 1 . 97a . 749 . 749 0 0 0 1.275 - .326 . 749 . 749 0 0 0 - .215 -. 734L9 . 06 8l1 . 97 - 1 . 97a . 749 . 749 0 0 0 - .326 - 1.275 . 749 . 749 0 0 0 - .734 . 215L8 6 . 94Z "></path>
</svg>
</button>
</div>
<template id=" search-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-search ">
<path d=" M10 . 68 11 . 74a6 6 0 0 1 - 7.922 - 8.982 6 6 0 0 1 8.982 7 . 922l3 . 04 3 . 04a . 749 . 749 0 0 1 - .326 1.275 . 749 . 749 0 0 1 - .734 -. 215ZM11 . 5 7a4 . 499 4.499 0 1 0 - 8.997 0A4 . 499 4.499 0 0 0 11.5 7Z "></path>
</svg>
</template>
<template id=" code-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-code ">
<path d=" m11 . 28 3.22 4.25 4 . 25a . 75 . 75 0 0 1 0 1 . 06l - 4.25 4 . 25a . 749 . 749 0 0 1 - 1.275 - .326 . 749 . 749 0 0 1 .215 -. 734L13 . 94 8l - 3.72 - 3 . 72a . 749 . 749 0 0 1 .326 - 1.275 . 749 . 749 0 0 1 .734 . 215Zm - 6.56 0a . 751 . 751 0 0 1 1.042 . 018 . 751 . 751 0 0 1 .018 1 . 042L2 . 06 8l3 . 72 3 . 72a . 749 . 749 0 0 1 - .326 1.275 . 749 . 749 0 0 1 - .734 -. 215L . 47 8 . 53a . 75 . 75 0 0 1 0 - 1 . 06Z "></path>
</svg>
</template>
<template id=" file-code -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-file -code ">
<path d=" M4 1 . 75C4 .784 4.784 0 5.75 0h5 . 586c . 464 0 .909 . 184 1.237 . 513l2 . 914 2 . 914c . 329 . 328 . 513 . 773 . 513 1 . 237v8 . 586A1 . 75 1.75 0 0 1 14.25 15h - 9a . 75 . 75 0 0 1 0 - 1 . 5h9a . 25 . 25 0 0 0 .25 -. 25V6h - 2 . 75A1 . 75 1.75 0 0 1 10 4 . 25V1 . 5H5 . 75a . 25 . 25 0 0 0 - .25 . 25v2 . 5a . 75 . 75 0 0 1 - 1.5 0Zm1 . 72 4 . 97a . 75 . 75 0 0 1 1.06 0l2 2a . 75 . 75 0 0 1 0 1 . 06l - 2 2a . 749 . 749 0 0 1 - 1.275 - .326 . 749 . 749 0 0 1 .215 -. 734l1 . 47 - 1.47 - 1.47 - 1 . 47a . 75 . 75 0 0 1 0 - 1 . 06ZM3 . 28 7.78 1.81 9 . 25l1 . 47 1 . 47a . 751 . 751 0 0 1 - .018 1.042 . 751 . 751 0 0 1 - 1.042 . 018l - 2 - 2a . 75 . 75 0 0 1 0 - 1 . 06l2 - 2a . 751 . 751 0 0 1 1.042 . 018 . 751 . 751 0 0 1 .018 1 . 042Zm8 . 22 - 6 . 218V4 . 25c0 .138 . 112 . 25 . 25 . 25h2 . 688l - .011 - .013 - 2.914 - 2.914 - .013 -. 011Z "></path>
</svg>
</template>
<template id=" history-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-history ">
<path d=" m . 427 1.927 1.215 1 . 215a8 . 002 8.002 0 1 1 - 1.6 5.685 . 75 . 75 0 1 1 1.493 - .154 6.5 6.5 0 1 0 1.18 - 4 . 458l1 . 358 1 . 358A . 25 . 25 0 0 1 3.896 6H . 25A . 25 . 25 0 0 1 0 5 . 75V2 . 104a . 25 . 25 0 0 1 .427 -. 177ZM7 . 75 4a . 75 . 75 0 0 1 .75 . 75v2 . 992l2 . 028 . 812a . 75 . 75 0 0 1 - .557 1 . 392l - 2.5 - 1A . 751 . 751 0 0 1 7 8 . 25v - 3 . 5A . 75 . 75 0 0 1 7.75 4Z "></path>
</svg>
</template>
<template id=" repo-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-repo ">
<path d=" M2 2 . 5A2 . 5 2.5 0 0 1 4.5 0h8 . 75a . 75 . 75 0 0 1 .75 . 75v12 . 5a . 75 . 75 0 0 1 - .75 . 75h - 2 . 5a . 75 . 75 0 0 1 0 - 1 . 5h1 . 75v - 2h - 8a1 1 0 0 0 - .714 1.7 . 75 . 75 0 1 1 - 1.072 1 . 05A2 . 495 2.495 0 0 1 2 11 . 5Zm10 . 5 - 1h - 8a1 1 0 0 0 - 1 1v6 . 708A2 . 486 2.486 0 0 1 4.5 9h8ZM5 12 . 25a . 25 . 25 0 0 1 .25 -. 25h3 . 5a . 25 . 25 0 0 1 .25 . 25v3 . 25a . 25 . 25 0 0 1 - .4 . 2l - 1.45 - 1 . 087a . 249 . 249 0 0 0 - .3 0L5 . 4 15 . 7a . 25 . 25 0 0 1 - .4 -. 2Z "></path>
</svg>
</template>
<template id=" bookmark-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-bookmark ">
<path d=" M3 2 . 75C3 1.784 3.784 1 4.75 1h6 . 5c . 966 0 1.75 . 784 1.75 1 . 75v11 . 5a . 75 . 75 0 0 1 - 1.227 . 579L8 11 . 722l - 3.773 3 . 107A . 751 . 751 0 0 1 3 14 . 25Zm1 . 75 -. 25a . 25 . 25 0 0 0 - .25 . 25v9 . 91l3 . 023 - 2 . 489a . 75 . 75 0 0 1 .954 0l3 . 023 2 . 49V2 . 75a . 25 . 25 0 0 0 - .25 -. 25Z "></path>
</svg>
</template>
<template id=" plus-circle -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-plus -circle ">
<path d=" M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1 . 5 8a6 . 5 6.5 0 1 0 13 0 6.5 6.5 0 0 0 - 13 0Zm7 . 25 - 3 . 25v2 . 5h2 . 5a . 75 . 75 0 0 1 0 1 . 5h - 2 . 5v2 . 5a . 75 . 75 0 0 1 - 1.5 0v - 2 . 5h - 2 . 5a . 75 . 75 0 0 1 0 - 1 . 5h2 . 5v - 2 . 5a . 75 . 75 0 0 1 1.5 0Z "></path>
</svg>
</template>
<template id=" circle-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-dot -fill ">
<path d=" M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0 - 8Z "></path>
</svg>
</template>
<template id=" trash-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-trash ">
<path d=" M11 1 . 75V3h2 . 25a . 75 . 75 0 0 1 0 1 . 5H2 . 75a . 75 . 75 0 0 1 0 - 1 . 5H5V1 . 75C5 .784 5.784 0 6.75 0h2 . 5C10 . 216 0 11 .784 11 1 . 75ZM4 . 496 6 . 675l . 66 6 . 6a . 25 . 25 0 0 0 .249 . 225h5 . 19a . 25 . 25 0 0 0 .249 -. 225l . 66 - 6 . 6a . 75 . 75 0 0 1 1.492 . 149l - .66 6 . 6A1 . 748 1.748 0 0 1 10.595 15h - 5 . 19a1 . 75 1.75 0 0 1 - 1.741 - 1 . 575l - .66 - 6 . 6a . 75 . 75 0 1 1 1.492 -. 15ZM6 . 5 1 . 75V3h3V1 . 75a . 25 . 25 0 0 0 - .25 -. 25h - 2 . 5a . 25 . 25 0 0 0 - .25 . 25Z "></path>
</svg>
</template>
<template id=" team-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-people ">
<path d=" M2 5 . 5a3 . 5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084 . 75 . 75 0 1 1 - 1.482 . 235 4 4 0 0 0 - 7.9 0 .75 . 75 0 0 1 - 1.482 -. 236A5 . 507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5 . 5ZM11 4a3 . 001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012 . 749 . 749 0 0 1 - .885 . 954 . 752 . 752 0 0 1 - .549 - .514 3.507 3.507 0 0 0 - 2.522 - 2.372 . 75 . 75 0 0 1 - .574 -. 73v -. 352a . 75 . 75 0 0 1 .416 -. 672A1 . 5 1.5 0 0 0 11 5.5 . 75 . 75 0 0 1 11 4Zm - 5.5 -. 5a2 2 0 1 0 - .001 3 . 999A2 2 0 0 0 5.5 3 . 5Z "></path>
</svg>
</template>
<template id=" project-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-project ">
<path d=" M1 . 75 0h12 . 5C15 . 216 0 16 .784 16 1 . 75v12 . 5A1 . 75 1.75 0 0 1 14.25 16H1 . 75A1 . 75 1.75 0 0 1 0 14 . 25V1 . 75C0 .784 . 784 0 1.75 0ZM1 . 5 1 . 75v12 . 5c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25V1 . 75a . 25 . 25 0 0 0 - .25 -. 25H1 . 75a . 25 . 25 0 0 0 - .25 . 25ZM11 . 75 3a . 75 . 75 0 0 1 .75 . 75v7 . 5a . 75 . 75 0 0 1 - 1.5 0v - 7 . 5a . 75 . 75 0 0 1 .75 -. 75Zm - 8.25 . 75a . 75 . 75 0 0 1 1.5 0v5 . 5a . 75 . 75 0 0 1 - 1.5 0ZM8 3a . 75 . 75 0 0 1 .75 . 75v3 . 5a . 75 . 75 0 0 1 - 1.5 0v - 3 . 5A . 75 . 75 0 0 1 8 3Z "></path>
</svg>
</template>
<template id=" pencil-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-pencil ">
<path d=" M11 . 013 1 . 427a1 . 75 1.75 0 0 1 2.474 0l1 . 086 1 . 086a1 . 75 1.75 0 0 1 0 2 . 474l - 8.61 8 . 61c - .21 . 21 - .47 . 364 - .756 . 445l - 3.251 . 93a . 75 . 75 0 0 1 - .927 -. 928l . 929 - 3 . 25c . 081 - .286 . 235 - .547 . 445 -. 758l8 . 61 - 8 . 61Zm . 176 4 . 823L9 . 75 4 . 81l - 6.286 6 . 287a . 253 . 253 0 0 0 - .064 . 108l - .558 1.953 1.953 -. 558a . 253 . 253 0 0 0 .108 -. 064Zm1 . 238 - 3 . 763a . 25 . 25 0 0 0 - .354 0L10 . 811 3 . 75l1 . 439 1.44 1.263 - 1 . 263a . 25 . 25 0 0 0 0 -. 354Z "></path>
</svg>
</template>
<template id=" copilot-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-copilot ">
<path d=" M7 . 998 15 . 035c - 4.562 0 - 7.873 - 2.914 - 7.998 - 3 . 749V9 . 338c . 085 - .628 . 677 - 1.686 1.588 - 2.065 . 013 - .07 . 024 - .143 . 036 - .218 . 029 - .183 . 06 - .384 . 126 - .612 - .201 - .508 - .254 - 1.084 - .254 - 1.656 0 - .87 . 128 - 1.769 . 693 - 2.484 . 579 - .733 1.494 - 1.124 2.724 - 1.261 1.206 - .134 2.262 . 034 2.944 . 765 . 05 . 053 . 096 . 108 . 139 . 165 . 044 - .057 . 094 - .112 . 143 - .165 . 682 - .731 1.738 - .899 2.944 - .765 1.23 . 137 2.145 . 528 2.724 1.261 . 566 . 715 . 693 1.614 . 693 2.484 0 .572 - .053 1.148 - .254 1.656 . 066 . 228 . 098 . 429 . 126 . 612 . 012 . 076 . 024 . 148 . 037 . 218 . 924 . 385 1.522 1.471 1.591 2 . 095v1 . 872c0 .766 - 3.351 3.795 - 8.002 3 . 795Zm0 - 1 . 485c2 . 28 0 4.584 - 1.11 5.002 - 1 . 433V7 . 862l - .023 -. 116c - .49 . 21 - 1.075 . 291 - 1.727 . 291 - 1.146 0 - 2.059 - .327 - 2.71 -. 991A3 . 222 3.222 0 0 1 8 6 . 303a3 . 24 3.24 0 0 1 - .544 . 743c - .65 . 664 - 1.563 . 991 - 2.71 . 991 - .652 0 - 1.236 - .081 - 1.727 -. 291l - .023 . 116v4 . 255c . 419 . 323 2.722 1.433 5.002 1 . 433ZM6 . 762 2 . 83c - .193 - .206 - .637 - .413 - 1.682 - .297 - 1.019 . 113 - 1.479 . 404 - 1.713 . 7 - .247 . 312 - .369 . 789 - .369 1.554 0 .793 . 129 1.171 . 308 1.371 . 162 . 181 . 519 . 379 1.442 . 379 . 853 0 1.339 - .235 1.638 - .54 . 315 - .322 . 527 - .827 . 617 - 1.553 . 117 - .935 - .037 - 1.395 - .241 - 1 . 614Zm4 . 155 -. 297c - 1.044 - .116 - 1.488 . 091 - 1.681 . 297 - .204 . 219 - .359 . 679 - .242 1.614 . 091 . 726 . 303 1.231 . 618 1.553 . 299 . 305 . 784 . 54 1.638 . 54 . 922 0 1.28 - .198 1.442 - .379 . 179 - .2 . 308 - .578 . 308 - 1.371 0 - .765 - .123 - 1.242 - .37 - 1.554 - .233 - .296 - .693 - .587 - 1.713 -. 7Z "></path><path d=" M6 . 25 9 . 037a . 75 . 75 0 0 1 .75 . 75v1 . 501a . 75 . 75 0 0 1 - 1.5 0V9 . 787a . 75 . 75 0 0 1 .75 -. 75Zm4 . 25 . 75v1 . 501a . 75 . 75 0 0 1 - 1.5 0V9 . 787a . 75 . 75 0 0 1 1.5 0Z "></path>
</svg>
</template>
<template id=" copilot-error -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-copilot -error ">
<path d=" M16 11 . 24c0 .112 - .072 . 274 - .21 . 467L13 9 . 688V7 . 862l - .023 -. 116c - .49 . 21 - 1.075 . 291 - 1.727 . 291 - .198 0 - .388 - .009 - .571 -. 029L6 . 833 5 . 226a4 . 01 4.01 0 0 0 .17 -. 782c . 117 - .935 - .037 - 1.395 - .241 - 1.614 - .193 - .206 - .637 - .413 - 1.682 - .297 - .683 . 076 - 1.115 . 231 - 1.395 . 415l - 1.257 -. 91c . 579 - .564 1.413 - .877 2.485 - .996 1.206 - .134 2.262 . 034 2.944 . 765 . 05 . 053 . 096 . 108 . 139 . 165 . 044 - .057 . 094 - .112 . 143 - .165 . 682 - .731 1.738 - .899 2.944 - .765 1.23 . 137 2.145 . 528 2.724 1.261 . 566 . 715 . 693 1.614 . 693 2.484 0 .572 - .053 1.148 - .254 1.656 . 066 . 228 . 098 . 429 . 126 . 612 . 012 . 076 . 024 . 148 . 037 . 218 . 924 . 385 1.522 1.471 1.591 2 . 095Zm - 5.083 - 8 . 707c - 1.044 - .116 - 1.488 . 091 - 1.681 . 297 - .204 . 219 - .359 . 679 - .242 1.614 . 091 . 726 . 303 1.231 . 618 1.553 . 299 . 305 . 784 . 54 1.638 . 54 . 922 0 1.28 - .198 1.442 - .379 . 179 - .2 . 308 - .578 . 308 - 1.371 0 - .765 - .123 - 1.242 - .37 - 1.554 - .233 - .296 - .693 - .587 - 1.713 -. 7Zm2 . 511 11 . 074c - 1.393 . 776 - 3.272 1.428 - 5.43 1.428 - 4.562 0 - 7.873 - 2.914 - 7.998 - 3 . 749V9 . 338c . 085 - .628 . 677 - 1.686 1.588 - 2.065 . 013 - .07 . 024 - .143 . 036 - .218 . 029 - .183 . 06 - .384 . 126 - .612 - .18 - .455 - .241 - .963 - .252 - 1 . 475L . 31 4 . 107A . 747 . 747 0 0 1 0 3 . 509V3 . 49a . 748 . 748 0 0 1 .625 -. 73c . 156 - .026 . 306 . 047 . 435 . 139l14 . 667 10 . 578a . 592 . 592 0 0 1 .227 . 264 . 752 . 752 0 0 1 .046 . 249v . 022a . 75 . 75 0 0 1 - 1.19 . 596Zm - 1.367 -. 991L5 . 635 7 . 964a5 . 128 5.128 0 0 1 - .889 . 073c - .652 0 - 1.236 - .081 - 1.727 -. 291l - .023 . 116v4 . 255c . 419 . 323 2.722 1.433 5.002 1.433 1.539 0 3.089 - .505 4.063 -. 934Z "></path>
</svg>
</template>
<template id=" workflow-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-workflow ">
<path d=" M0 1 . 75C0 .784 . 784 0 1.75 0h3 . 5C6 . 216 0 7 .784 7 1 . 75v3 . 5A1 . 75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v - 1 . 25C9 9.784 9.784 9 10.75 9h3 . 5c . 966 0 1.75 . 784 1.75 1 . 75v3 . 5A1 . 75 1.75 0 0 1 14.25 16h - 3 . 5A1 . 75 1.75 0 0 1 9 14 . 25v -. 75H5A2 . 5 2.5 0 0 1 2.5 11V7h -. 75A1 . 75 1.75 0 0 1 0 5 . 25Zm1 . 75 -. 25a . 25 . 25 0 0 0 - .25 . 25v3 . 5c0 .138 . 112 . 25 . 25 . 25h3 . 5a . 25 . 25 0 0 0 .25 -. 25v - 3 . 5a . 25 . 25 0 0 0 - .25 -. 25Zm9 9a . 25 . 25 0 0 0 - .25 . 25v3 . 5c0 .138 . 112 . 25 . 25 . 25h3 . 5a . 25 . 25 0 0 0 .25 -. 25v - 3 . 5a . 25 . 25 0 0 0 - .25 -. 25Z "></path>
</svg>
</template>
<template id=" book-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-book ">
<path d=" M0 1 . 75A . 75 . 75 0 0 1 .75 1h4 . 253c1 . 227 0 2.317 . 59 3 1 . 501A3 . 743 3.743 0 0 1 11.006 1h4 . 245a . 75 . 75 0 0 1 .75 . 75v10 . 5a . 75 . 75 0 0 1 - .75 . 75h - 4 . 507a2 . 25 2.25 0 0 0 - 1.591 . 659l - .622 . 621a . 75 . 75 0 0 1 - 1.06 0l - .622 -. 621A2 . 25 2.25 0 0 0 5.258 13H . 75a . 75 . 75 0 0 1 - .75 -. 75Zm7 . 251 10.324 . 004 - 5.073 - .002 - 2 . 253A2 . 25 2.25 0 0 0 5.003 2 . 5H1 . 5v9h3 . 757a3 . 75 3.75 0 0 1 1.994 . 574ZM8 . 755 4 . 75l - .004 7 . 322a3 . 752 3.752 0 0 1 1.992 -. 572H14 . 5v - 9h - 3 . 495a2 . 25 2.25 0 0 0 - 2.25 2 . 25Z "></path>
</svg>
</template>
<template id=" code-review -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-code -review ">
<path d=" M1 . 75 1h12 . 5c . 966 0 1.75 . 784 1.75 1 . 75v8 . 5A1 . 75 1.75 0 0 1 14.25 13H8 . 061l - 2.574 2 . 573A1 . 458 1.458 0 0 1 3 14 . 543V13H1 . 75A1 . 75 1.75 0 0 1 0 11 . 25v - 8 . 5C0 1.784 . 784 1 1.75 1ZM1 . 5 2 . 75v8 . 5c0 .138 . 112 . 25 . 25 . 25h2a . 75 . 75 0 0 1 .75 . 75v2 . 19l2 . 72 - 2 . 72a . 749 . 749 0 0 1 .53 -. 22h6 . 5a . 25 . 25 0 0 0 .25 -. 25v - 8 . 5a . 25 . 25 0 0 0 - .25 -. 25H1 . 75a . 25 . 25 0 0 0 - .25 . 25Zm5 . 28 1 . 72a . 75 . 75 0 0 1 0 1 . 06L5 . 31 7l1 . 47 1 . 47a . 751 . 751 0 0 1 - .018 1.042 . 751 . 751 0 0 1 - 1.042 . 018l - 2 - 2a . 75 . 75 0 0 1 0 - 1 . 06l2 - 2a . 75 . 75 0 0 1 1.06 0Zm2 . 44 0a . 75 . 75 0 0 1 1.06 0l2 2a . 75 . 75 0 0 1 0 1 . 06l - 2 2a . 751 . 751 0 0 1 - 1.042 - .018 . 751 . 751 0 0 1 - .018 - 1 . 042L10 . 69 7 9.22 5 . 53a . 75 . 75 0 0 1 0 - 1 . 06Z "></path>
</svg>
</template>
<template id=" codespaces-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-codespaces ">
<path d=" M0 11 . 25c0 - .966 . 784 - 1.75 1.75 - 1 . 75h12 . 5c . 966 0 1.75 . 784 1.75 1 . 75v3A1 . 75 1.75 0 0 1 14.25 16H1 . 75A1 . 75 1.75 0 0 1 0 14 . 25Zm2 - 9 . 5C2 .784 2.784 0 3.75 0h8 . 5C13 . 216 0 14 .784 14 1 . 75v5a1 . 75 1.75 0 0 1 - 1.75 1 . 75h - 8 . 5A1 . 75 1.75 0 0 1 2 6 . 75Zm1 . 75 -. 25a . 25 . 25 0 0 0 - .25 . 25v5c0 .138 . 112 . 25 . 25 . 25h8 . 5a . 25 . 25 0 0 0 .25 -. 25v - 5a . 25 . 25 0 0 0 - .25 -. 25Zm - 2 9 . 5a . 25 . 25 0 0 0 - .25 . 25v3c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25v - 3a . 25 . 25 0 0 0 - .25 -. 25Z "></path><path d=" M7 12 . 75a . 75 . 75 0 0 1 .75 -. 75h4 . 5a . 75 . 75 0 0 1 0 1 . 5h - 4 . 5a . 75 . 75 0 0 1 - .75 -. 75Zm - 4 0a . 75 . 75 0 0 1 .75 -. 75h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5a . 75 . 75 0 0 1 - .75 -. 75Z "></path>
</svg>
</template>
<template id=" comment-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-comment ">
<path d=" M1 2 . 75C1 1.784 1.784 1 2.75 1h10 . 5c . 966 0 1.75 . 784 1.75 1 . 75v7 . 5A1 . 75 1.75 0 0 1 13.25 12H9 . 06l - 2.573 2 . 573A1 . 458 1.458 0 0 1 4 13 . 543V12H2 . 75A1 . 75 1.75 0 0 1 1 10 . 25Zm1 . 75 -. 25a . 25 . 25 0 0 0 - .25 . 25v7 . 5c0 .138 . 112 . 25 . 25 . 25h2a . 75 . 75 0 0 1 .75 . 75v2 . 19l2 . 72 - 2 . 72a . 749 . 749 0 0 1 .53 -. 22h4 . 5a . 25 . 25 0 0 0 .25 -. 25v - 7 . 5a . 25 . 25 0 0 0 - .25 -. 25Z "></path>
</svg>
</template>
<template id=" comment-discussion -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-comment -discussion ">
<path d=" M1 . 75 1h8 . 5c . 966 0 1.75 . 784 1.75 1 . 75v5 . 5A1 . 75 1.75 0 0 1 10.25 10H7 . 061l - 2.574 2 . 573A1 . 458 1.458 0 0 1 2 11 . 543V10h -. 25A1 . 75 1.75 0 0 1 0 8 . 25v - 5 . 5C0 1.784 . 784 1 1.75 1ZM1 . 5 2 . 75v5 . 5c0 .138 . 112 . 25 . 25 . 25h1a . 75 . 75 0 0 1 .75 . 75v2 . 19l2 . 72 - 2 . 72a . 749 . 749 0 0 1 .53 -. 22h3 . 5a . 25 . 25 0 0 0 .25 -. 25v - 5 . 5a . 25 . 25 0 0 0 - .25 -. 25h - 8 . 5a . 25 . 25 0 0 0 - .25 . 25Zm13 2a . 25 . 25 0 0 0 - .25 -. 25h -. 5a . 75 . 75 0 0 1 0 - 1 . 5h . 5c . 966 0 1.75 . 784 1.75 1 . 75v5 . 5A1 . 75 1.75 0 0 1 14.25 12H14v1 . 543a1 . 458 1.458 0 0 1 - 2.487 1 . 03L9 . 22 12 . 28a . 749 . 749 0 0 1 .326 - 1.275 . 749 . 749 0 0 1 .734 . 215l2 . 22 2 . 22v - 2 . 19a . 75 . 75 0 0 1 .75 -. 75h1a . 25 . 25 0 0 0 .25 -. 25Z "></path>
</svg>
</template>
<template id=" organization-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-organization ">
<path d=" M1 . 75 16A1 . 75 1.75 0 0 1 0 14 . 25V1 . 75C0 .784 . 784 0 1.75 0h8 . 5C11 . 216 0 12 .784 12 1 . 75v12 . 5c0 .085 - .006 . 168 - .018 . 25h2 . 268a . 25 . 25 0 0 0 .25 -. 25V8 . 285a . 25 . 25 0 0 0 - .111 -. 208l - 1.055 -. 703a . 749 . 749 0 1 1 .832 - 1 . 248l1 . 055 . 703c . 487 . 325 . 779 . 871 . 779 1 . 456v5 . 965A1 . 75 1.75 0 0 1 14.25 16h - 3 . 5a . 766 . 766 0 0 1 - .197 -. 026c - .099 . 017 - .2 . 026 - .303 . 026h - 3a . 75 . 75 0 0 1 - .75 -. 75V14h - 1v1 . 25a . 75 . 75 0 0 1 - .75 . 75Zm - .25 - 1 . 75c0 .138 . 112 . 25 . 25 . 25H4v - 1 . 25a . 75 . 75 0 0 1 .75 -. 75h2 . 5a . 75 . 75 0 0 1 .75 . 75v1 . 25h2 . 25a . 25 . 25 0 0 0 .25 -. 25V1 . 75a . 25 . 25 0 0 0 - .25 -. 25h - 8 . 5a . 25 . 25 0 0 0 - .25 . 25ZM3 . 75 6h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5a . 75 . 75 0 0 1 0 - 1 . 5ZM3 3 . 75A . 75 . 75 0 0 1 3.75 3h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5A . 75 . 75 0 0 1 3 3 . 75Zm4 3A . 75 . 75 0 0 1 7.75 6h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5A . 75 . 75 0 0 1 7 6 . 75ZM7 . 75 3h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5a . 75 . 75 0 0 1 0 - 1 . 5ZM3 9 . 75A . 75 . 75 0 0 1 3.75 9h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5A . 75 . 75 0 0 1 3 9 . 75ZM7 . 75 9h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5a . 75 . 75 0 0 1 0 - 1 . 5Z "></path>
</svg>
</template>
<template id=" rocket-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-rocket ">
<path d=" M14 . 064 0h . 186C15 . 216 0 16 .784 16 1 . 75v . 186a8 . 752 8.752 0 0 1 - 2.564 6 . 186l - .458 . 459c - .314 . 314 - .641 . 616 - .979 . 904v3 . 207c0 .608 - .315 1.172 - .833 1 . 49l - 2.774 1 . 707a . 749 . 749 0 0 1 - 1.11 -. 418l - .954 - 3 . 102a1 . 214 1.214 0 0 1 - .145 -. 125L3 . 754 9 . 816a1 . 218 1.218 0 0 1 - .124 -. 145L . 528 8 . 717a . 749 . 749 0 0 1 - .418 - 1 . 11l1 . 71 - 2 . 774A1 . 748 1.748 0 0 1 3.31 4h3 . 204c . 288 - .338 . 59 - .665 . 904 -. 979l . 459 -. 458A8 . 749 8.749 0 0 1 14.064 0ZM8 . 938 3 . 623h -. 002l - .458 . 458c - .76 . 76 - 1.437 1.598 - 2.02 2 . 5l - 1.5 2.317 2.143 2.143 2.317 - 1 . 5c . 902 - .583 1.74 - 1.26 2.499 - 2 . 02l . 459 -. 458a7 . 25 7.25 0 0 0 2.123 - 5 . 127V1 . 75a . 25 . 25 0 0 0 - .25 -. 25h -. 186a7 . 249 7.249 0 0 0 - 5.125 2 . 123ZM3 . 56 14 . 56c - .732 . 732 - 2.334 1.045 - 3.005 1 . 148a . 234 . 234 0 0 1 - .201 - .064 . 234 . 234 0 0 1 - .064 -. 201c . 103 - .671 . 416 - 2.273 1.15 - 3 . 003a1 . 502 1.502 0 1 1 2.12 2 . 12Zm6 . 94 - 3 . 935c - .088 . 06 - .177 . 118 - .266 . 175l - 2.35 1.521 . 548 1.783 1.949 - 1 . 2a . 25 . 25 0 0 0 .119 -. 213ZM3 . 678 8.116 5.2 5 . 766c . 058 - .09 . 117 - .178 . 176 -. 266H3 . 309a . 25 . 25 0 0 0 - .213 . 119l - 1.2 1 . 95ZM12 5a1 1 0 1 1 - 2 0 1 1 0 0 1 2 0Z "></path>
</svg>
</template>
<template id=" shield-check -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-shield -check ">
<path d=" m8 . 533 . 133 5.25 1 . 68A1 . 75 1.75 0 0 1 15 3 . 48V7c0 1.566 - .32 3.182 - 1.303 4.682 - .983 1.498 - 2.585 2.813 - 5.032 3 . 855a1 . 697 1.697 0 0 1 - 1.33 0c - 2.447 - 1.042 - 4.049 - 2.357 - 5.032 - 3 . 855C1 . 32 10.182 1 8.566 1 7V3 . 48a1 . 75 1.75 0 0 1 1.217 - 1 . 667l5 . 25 - 1 . 68a1 . 748 1.748 0 0 1 1.066 0Zm - .61 1.429 . 001 . 001 - 5.25 1 . 68a . 251 . 251 0 0 0 - .174 . 237V7c0 1.36 . 275 2.666 1.057 3.859 . 784 1.194 2.121 2.342 4.366 3 . 298a . 196 . 196 0 0 0 .154 0c2 . 245 - .957 3.582 - 2.103 4.366 - 3 . 297C13 . 225 9.666 13.5 8.358 13.5 7V3 . 48a . 25 . 25 0 0 0 - .174 -. 238l - 5.25 - 1 . 68a . 25 . 25 0 0 0 - .153 0ZM11 . 28 6 . 28l - 3.5 3 . 5a . 75 . 75 0 0 1 - 1.06 0l - 1.5 - 1 . 5a . 749 . 749 0 0 1 .326 - 1.275 . 749 . 749 0 0 1 .734 . 215l . 97 . 97 2.97 - 2 . 97a . 751 . 751 0 0 1 1.042 . 018 . 751 . 751 0 0 1 .018 1 . 042Z "></path>
</svg>
</template>
<template id=" heart-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-heart ">
<path d=" m8 14.25 . 345 . 666a . 75 . 75 0 0 1 - .69 0l - .008 - .004 - .018 -. 01a7 . 152 7.152 0 0 1 - .31 - .17 22.055 22.055 0 0 1 - 3.434 - 2 . 414C2 . 045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5 . 5c0 2.85 - 2.045 5.231 - 3.885 6 . 818a22 . 066 22.066 0 0 1 - 3.744 2 . 584l - .018 . 01 - .006 . 003h -. 002ZM4 . 25 2 . 5c - 1.336 0 - 2.75 1.164 - 2.75 3 0 2.15 1.58 4.144 3.365 5 . 682A20 . 58 20.58 0 0 0 8 13 . 393a20 . 58 20.58 0 0 0 3.135 - 2 . 211C12 . 92 9.644 14.5 7.65 14.5 5 . 5c0 - 1.836 - 1.414 - 3 - 2.75 - 3 - 1.373 0 - 2.609 . 986 - 3.029 2 . 456a . 749 . 749 0 0 1 - 1.442 0C6 . 859 3.486 5.623 2.5 4.25 2 . 5Z "></path>
</svg>
</template>
<template id=" server-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-server ">
<path d=" M1 . 75 1h12 . 5c . 966 0 1.75 . 784 1.75 1 . 75v4c0 .372 - .116 . 717 - .314 1 .198 . 283 . 314 . 628 . 314 1v4a1 . 75 1.75 0 0 1 - 1.75 1 . 75H1 . 75A1 . 75 1.75 0 0 1 0 12 . 75v - 4c0 - .358 . 109 - .707 . 314 - 1a1 . 739 1.739 0 0 1 - .314 - 1v - 4C0 1.784 . 784 1 1.75 1ZM1 . 5 2 . 75v4c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25v - 4a . 25 . 25 0 0 0 - .25 -. 25H1 . 75a . 25 . 25 0 0 0 - .25 . 25Zm . 25 5 . 75a . 25 . 25 0 0 0 - .25 . 25v4c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25v - 4a . 25 . 25 0 0 0 - .25 -. 25ZM7 4 . 75A . 75 . 75 0 0 1 7.75 4h4 . 5a . 75 . 75 0 0 1 0 1 . 5h - 4 . 5A . 75 . 75 0 0 1 7 4 . 75ZM7 . 75 10h4 . 5a . 75 . 75 0 0 1 0 1 . 5h - 4 . 5a . 75 . 75 0 0 1 0 - 1 . 5ZM3 4 . 75A . 75 . 75 0 0 1 3.75 4h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5A . 75 . 75 0 0 1 3 4 . 75ZM3 . 75 10h . 5a . 75 . 75 0 0 1 0 1 . 5h -. 5a . 75 . 75 0 0 1 0 - 1 . 5Z "></path>
</svg>
</template>
<template id=" globe-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-globe ">
<path d=" M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5 . 78 8 . 75a9 . 64 9.64 0 0 0 1.363 4 . 177c . 255 . 426 . 542 . 832 . 857 1.215 . 245 - .296 . 551 - .705 . 857 - 1 . 215A9 . 64 9.64 0 0 0 10.22 8 . 75Zm4 . 44 - 1 . 5a9 . 64 9.64 0 0 0 - 1.363 - 4 . 177c - .307 - .51 - .612 - .919 - .857 - 1 . 215a9 . 927 9.927 0 0 0 - .857 1 . 215A9 . 64 9.64 0 0 0 5.78 7 . 25Zm - 5.944 1 . 5H1 . 543a6 . 507 6.507 0 0 0 4.666 5 . 5c - .123 - .181 - .24 - .365 - .352 - .552 - .715 - 1.192 - 1.437 - 2.874 - 1.581 - 4 . 948Zm - 2.733 - 1 . 5h2 . 733c . 144 - 2.074 . 866 - 3.756 1.58 - 4.948 . 12 - .197 . 237 - .381 . 353 -. 552a6 . 507 6.507 0 0 0 - 4.666 5 . 5Zm10 . 181 1 . 5c - .144 2.074 - .866 3.756 - 1.58 4.948 - .12 . 197 - .237 . 381 - .353 . 552a6 . 507 6.507 0 0 0 4.666 - 5 . 5Zm2 . 733 - 1 . 5a6 . 507 6.507 0 0 0 - 4.666 - 5 . 5c . 123 . 181 . 24 . 365 . 353 . 552 . 714 1.192 1.436 2.874 1.58 4 . 948Z "></path>
</svg>
</template>
<template id=" issue-opened -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-issue -opened ">
<path d=" M8 9 . 5a1 . 5 1.5 0 1 0 0 - 3 1.5 1.5 0 0 0 0 3Z "></path><path d=" M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1 . 5 8a6 . 5 6.5 0 1 0 13 0 6.5 6.5 0 0 0 - 13 0Z "></path>
</svg>
</template>
<template id=" device-mobile -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-device -mobile ">
<path d=" M3 . 75 0h8 . 5C13 . 216 0 14 .784 14 1 . 75v12 . 5A1 . 75 1.75 0 0 1 12.25 16h - 8 . 5A1 . 75 1.75 0 0 1 2 14 . 25V1 . 75C2 .784 2.784 0 3.75 0ZM3 . 5 1 . 75v12 . 5c0 .138 . 112 . 25 . 25 . 25h8 . 5a . 25 . 25 0 0 0 .25 -. 25V1 . 75a . 25 . 25 0 0 0 - .25 -. 25h - 8 . 5a . 25 . 25 0 0 0 - .25 . 25ZM8 13a1 1 0 1 1 0 - 2 1 1 0 0 1 0 2Z "></path>
</svg>
</template>
<template id=" package-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-package ">
<path d=" m8 . 878 . 392 5.25 3 . 045c . 54 . 314 . 872 . 89 . 872 1 . 514v6 . 098a1 . 75 1.75 0 0 1 - .872 1 . 514l - 5.25 3 . 045a1 . 75 1.75 0 0 1 - 1.756 0l - 5.25 - 3 . 045A1 . 75 1.75 0 0 1 1 11 . 049V4 . 951c0 - .624 . 332 - 1.201 . 872 - 1 . 514L7 . 122 . 392a1 . 75 1.75 0 0 1 1.756 0ZM7 . 875 1 . 69l - 4.63 2 . 685L8 7 . 133l4 . 755 - 2.758 - 4.63 - 2 . 685a . 248 . 248 0 0 0 - .25 0ZM2 . 5 5 . 677v5 . 372c0 .09 . 047 . 171 . 125 . 216l4 . 625 2 . 683V8 . 432Zm6 . 25 8.271 4.625 - 2 . 683a . 25 . 25 0 0 0 .125 -. 216V5 . 677L8 . 75 8 . 432Z "></path>
</svg>
</template>
<template id=" credit-card -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-credit -card ">
<path d=" M10 . 75 9a . 75 . 75 0 0 0 0 1 . 5h1 . 5a . 75 . 75 0 0 0 0 - 1 . 5h - 1 . 5Z "></path><path d=" M0 3 . 75C0 2.784 . 784 2 1.75 2h12 . 5c . 966 0 1.75 . 784 1.75 1 . 75v8 . 5A1 . 75 1.75 0 0 1 14.25 14H1 . 75A1 . 75 1.75 0 0 1 0 12 . 25ZM14 . 5 6 . 5h - 13v5 . 75c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25Zm0 - 2 . 75a . 25 . 25 0 0 0 - .25 -. 25H1 . 75a . 25 . 25 0 0 0 - .25 . 25V5h13Z "></path>
</svg>
</template>
<template id=" play-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-play ">
<path d=" M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1 . 5 8a6 . 5 6.5 0 1 0 13 0 6.5 6.5 0 0 0 - 13 0Zm4 . 879 - 2.773 4.264 2 . 559a . 25 . 25 0 0 1 0 . 428l - 4.264 2 . 559A . 25 . 25 0 0 1 6 10 . 559V5 . 442a . 25 . 25 0 0 1 .379 -. 215Z "></path>
</svg>
</template>
<template id=" gift-icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-gift ">
<path d=" M2 2 . 75A2 . 75 2.75 0 0 1 4.75 0c . 983 0 1.873 . 42 2.57 1.232 . 268 . 318 . 497 . 668 . 68 1.042 . 183 - .375 . 411 - .725 . 68 - 1 . 044C9 . 376 . 42 10.266 0 11.25 0a2 . 75 2.75 0 0 1 2.45 4h . 55c . 966 0 1.75 . 784 1.75 1 . 75v2c0 .698 - .409 1.301 - 1 1 . 582v4 . 918A1 . 75 1.75 0 0 1 13.25 16H2 . 75A1 . 75 1.75 0 0 1 1 14 . 25V9 . 332C . 409 9.05 0 8.448 0 7 . 75v - 2C0 4.784 . 784 4 1.75 4h . 55c - .192 - .375 - .3 - .8 - .3 - 1 . 25ZM7 . 25 9 . 5H2 . 5v4 . 75c0 .138 . 112 . 25 . 25 . 25h4 . 5Zm1 . 5 0v5h4 . 5a . 25 . 25 0 0 0 .25 -. 25V9 . 5Zm0 - 4V8h5 . 5a . 25 . 25 0 0 0 .25 -. 25v - 2a . 25 . 25 0 0 0 - .25 -. 25Zm - 7 0a . 25 . 25 0 0 0 - .25 . 25v2c0 .138 . 112 . 25 . 25 . 25h5 . 5V5 . 5h - 5 . 5Zm3 - 4a1 . 25 1.25 0 0 0 0 2 . 5h2 . 309c - .233 - .818 - .542 - 1.401 - .878 - 1.793 - .43 - .502 - .915 - .707 - 1.431 -. 707ZM8 . 941 4h2 . 309a1 . 25 1.25 0 0 0 0 - 2 . 5c - .516 0 - 1 .205 - 1.43 . 707 - .337 . 392 - .646 . 975 - .879 1 . 793Z "></path>
</svg>
</template>
<template id=" code-square -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-code -square ">
<path d=" M0 1 . 75C0 .784 . 784 0 1.75 0h12 . 5C15 . 216 0 16 .784 16 1 . 75v12 . 5A1 . 75 1.75 0 0 1 14.25 16H1 . 75A1 . 75 1.75 0 0 1 0 14 . 25Zm1 . 75 -. 25a . 25 . 25 0 0 0 - .25 . 25v12 . 5c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25V1 . 75a . 25 . 25 0 0 0 - .25 -. 25Zm7 . 47 3 . 97a . 75 . 75 0 0 1 1.06 0l2 2a . 75 . 75 0 0 1 0 1 . 06l - 2 2a . 749 . 749 0 0 1 - 1.275 - .326 . 749 . 749 0 0 1 .215 -. 734L10 . 69 8 9.22 6 . 53a . 75 . 75 0 0 1 0 - 1 . 06ZM6 . 78 6.53 5.31 8l1 . 47 1 . 47a . 749 . 749 0 0 1 - .326 1.275 . 749 . 749 0 0 1 - .734 -. 215l - 2 - 2a . 75 . 75 0 0 1 0 - 1 . 06l2 - 2a . 751 . 751 0 0 1 1.042 . 018 . 751 . 751 0 0 1 .018 1 . 042Z "></path>
</svg>
</template>
<template id=" device-desktop -icon ">
<svg aria-hidden=" true " height=" 16 " viewBox=" 0 0 16 16 " version=" 1.1 " width=" 16 " data-view-component=" true " class=" octicon octicon-device -desktop ">
<path d=" M14 . 25 1c . 966 0 1.75 . 784 1.75 1 . 75v7 . 5A1 . 75 1.75 0 0 1 14.25 12h - 3 . 727c . 099 1.041 . 52 1.872 1.292 2 . 757A . 752 . 752 0 0 1 11.25 16h - 6 . 5a . 75 . 75 0 0 1 - .565 - 1 . 243c . 772 - .885 1.192 - 1.716 1.292 - 2 . 757H1 . 75A1 . 75 1.75 0 0 1 0 10 . 25v - 7 . 5C0 1.784 . 784 1 1.75 1ZM1 . 75 2 . 5a . 25 . 25 0 0 0 - .25 . 25v7 . 5c0 .138 . 112 . 25 . 25 . 25h12 . 5a . 25 . 25 0 0 0 .25 -. 25v - 7 . 5a . 25 . 25 0 0 0 - .25 -. 25ZM9 . 018 12H6 . 982a5 . 72 5.72 0 0 1 - .765 2 . 5h3 . 566a5 . 72 5.72 0 0 1 - .765 - 2 . 5Z "></path>
</svg>
</template>
<div class=" position-relative ">
<ul
role=" listbox "
class=" ActionListWrap QueryBuilder-ListWrap "
aria-label=" Suggestions "
data-action="
combobox-commit : query-builder #comboboxCommit
mousedown : query-builder #resultsMousedown
"
data-target=" query-builder . resultsList "
data-persist-list=false
id=" query-builder -test-results "
></ul>
</div>
<div class=" FormControl-inlineValidation " id=" validation - 52a342ee - 6bc0 - 4b95 - 967f -dfe1f9f4480a " hidden=" hidden ">
<span class=" FormControl-inlineValidation - -visual ">
<svg aria-hidden=" true " height=" 12 " viewBox=" 0 0 12 12 " version=" 1.1 " width=" 12 " data-view-component=" true " class=" octicon octicon-alert -fill ">
<path d=" M4 . 855 . 708c . 5 - .896 1.79 - .896 2.29 0l4 . 675 8 . 351a1 . 312 1.312 0 0 1 - 1.146 1 . 954H1 . 33A1 . 313 1.313 0 0 1 .183 9 . 058ZM7 7V3H5v4Zm - 1 3a1 1 0 1 0 0 - 2 1 1 0 0 0 0 2Z "></path>
</svg>
</span>
<span></span>
</div> </div>
<div data-target=" query-builder . screenReaderFeedback " aria-live=" polite " aria-atomic=" true " class=" sr-only "></div>
</query-builder></form>
<div class=" d-flex flex-row color-fg -muted px - 3 text-small color-bg -default search-feedback -prompt ">
<a target=" _blank " href=" https : // docs . github . com / search-github / github-code -search / understanding-github -code-search-syntax " data-view-component=" true " class=" Link color-fg -accent text-normal ml - 2 ">Search syntax tips</a> <div class=" d-flex flex - 1 "></div>
</div>
</div>
</div>
</div>
</modal-dialog></div>
</div>
<div data-action=" click : qbsearch-input #retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div>
< div class = "color-fg-default" >
< dialog-helper >
< dialog data-target = "qbsearch-input.feedbackDialog" data-action = "close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id = "feedback-dialog" aria-modal = "true" aria-labelledby = "feedback-dialog-title" aria-describedby = "feedback-dialog-description" data-view -component = "true" class = "Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll" >
< div data-view -component = "true" class = "Overlay-header" >
< div class = "Overlay-headerContentWrap" >
< div class = "Overlay-titleWrap" >
< h1 class = "Overlay-title " id = "feedback-dialog-title" >
Provide feedback
</ h1 >
</ div >
< div class = "Overlay-actionWrap" >
< button data-close -dialog-id = "feedback-dialog" aria-label = "Close" type = "button" data-view -component = "true" class = "close-button Overlay-closeButton" >< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-x" >
< path d = "M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg ></ button >
</ div >
</ div >
</ div >
< scrollable-region data-labelled -by = "feedback-dialog-title" >
< div data-view -component = "true" class = "Overlay-body" > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="L9sNQwngVE5fDLiS863v3i6aOfibsG51A9daEXZk9wzDHHUajOdvnP3Qq7yVa2nIq72uoMOAtySdwiiYvCQ0jw==" />
<p>We read every piece of feedback, and take your input very seriously.</p>
<textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea>
<input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox">
<label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label>
</form></div>
</scrollable-region>
<div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel
</button>
<button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback
</button>
</div>
</dialog></dialog-helper>
<custom-scopes data-target="qbsearch-input.customScopesManager">
<dialog-helper>
<dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll">
<div data-view-component="true" class="Overlay-header Overlay-header--divided">
<div class="Overlay-headerContentWrap">
<div class="Overlay-titleWrap">
<h1 class="Overlay-title " id="custom-scopes-dialog-title">
Saved searches
</h1>
<h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2>
</div>
<div class="Overlay-actionWrap">
<button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg></button>
</div>
</div>
</div>
<scrollable-region data-labelled-by="custom-scopes-dialog-title">
<div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div>
<div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm">
<!-- ' "` --><!-- </textarea></xmp> --></option></form><form id=" custom-scopes -dialog-form " data-turbo=" false " action=" / search / custom_scopes " accept-charset=" UTF - 8 " method=" post "><input type=" hidden " data-csrf=" true " name=" authenticity_token " value=" gdJ74rKqG7QQ2T92yypJLFVgIEPuD / zfyJjrktIIrWwzbZpQm2ArzSfEPzt6iET / GDmV0gnwFVIYcRdtYt9wiw == " />
<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=" MkerJdu4Bp1CR2cvIGnMtYvz9IrVbyx38ZmPNHrEqe7UsU1nCx76Vl3X2TmA8mK49b906OBojar / QuOSmM2oWw == " />
</auto-check>
</div>
<div class=" form-group ">
<label for=" custom_scope_query ">Query</label>
<input
type=" text "
name=" custom_scope_query "
id=" custom_scope_query "
data-target=" custom-scopes . customScopesQueryField "
class=" form-control "
autocomplete=" off "
placeholder=" ( repo : mona / a OR repo : mona / b ) AND lang : python "
required
maxlength=" 500 ">
</div>
<p class=" text-small color-fg -muted ">
To see all available qualifiers, see our <a class=" Link - -inTextBlock " href=" https : // docs . github . com / search-github / github-code -search / understanding-github -code-search-syntax ">documentation</a>.
</p>
</form> </div>
<div data-target=" custom-scopes . manageCustomScopesForm ">
<div data-target=" custom-scopes . list "></div>
</div>
</div>
</scrollable-region>
<div data-view-component=" true " class=" Overlay-footer Overlay-footer - -alignEnd Overlay-footer - -divided "> <button data-action=" click : custom-scopes #customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel
</ button >
< button form = "custom-scopes-dialog-form" data-action = "click:custom-scopes#customScopesSubmit" data-target = "custom-scopes.customScopesSubmitButton" type = "submit" data-view -component = "true" class = "btn-primary btn" > Create saved search
</ button >
</ div >
</ dialog ></ dialog-helper >
</ custom-scopes >
</ div >
</ qbsearch-input >
< div class = "position-relative HeaderMenu-link-wrap d-lg-inline-block" >
< a
href = "/login?return_to=https%3A%2F%2Fgithub.com%2Fdotnet%2Finstall-scripts%2Fblob%2Fmain%2Fsrc%2Fdotnet-install.ps1"
class = "HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1"
style = "margin-left: 12px;"
data-hydro -click = "{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "e97026b84124505336ae0889ce35c7163da6acd303c4017a6f7c962f3132765d"
data-analytics -event = "{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}"
>
Sign in
</ a >
</ div >
< a href = "/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&source=header-repo&source_repo=dotnet%2Finstall-scripts"
class = "HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1"
data-hydro -click = "{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "e97026b84124505336ae0889ce35c7163da6acd303c4017a6f7c962f3132765d"
data-analytics -event = "{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out"}"
>
Sign up
</ a >
< button type = "button" class = "sr-only js-header-menu-focus-trap d-block d-lg-none" > Reseting focus </ button >
</ div >
</ div >
</ div >
</ div >
</ header >
< div hidden = "hidden" data-view -component = "true" class = "js-stale-session-flash stale-session-flash flash flash-warn flash-full" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-alert" >
< path d = "M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" ></ path >
</ svg >
< span class = "js-stale-session-flash-signed-in" hidden > You signed in with another tab or window . < a class = "Link--inTextBlock" href = "" > Reload </ a > to refresh your session .</ span >
< span class = "js-stale-session-flash-signed-out" hidden > You signed out in another tab or window . < a class = "Link--inTextBlock" href = "" > Reload </ a > to refresh your session .</ span >
< span class = "js-stale-session-flash-switched" hidden > You switched accounts on another tab or window . < a class = "Link--inTextBlock" href = "" > Reload </ a > to refresh your session .</ span >
< button id = "icon-button-db284cdd-422d-43ac-9a20-71dd22a9c4cb" aria-labelledby = "tooltip-dee4dbf7-a733-47c8-aa5e-d5a1a3f31413" 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-dee4dbf7-a733-47c8-aa5e-d5a1a3f31413" for = "icon-button-db284cdd-422d-43ac-9a20-71dd22a9c4cb" popover = "manual" data-direction = "s" data-type = "label" data-view -component = "true" class = "sr-only position-absolute" > Dismiss alert </ tool-tip >
</ div >
</ div >
< div id = "start-of-content" class = "show-on-focus" ></ div >
< div id = "js-flash-container" class = "flash-container" data-turbo -replace >
< template class = "js-flash-template" >
< div class = "flash flash-full {{ className }}" >
< div >
< button autofocus class = "flash-close js-flash-close" type = "button" aria-label = "Dismiss this message" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-x" >
< path d = "M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
</ button >
< div aria-atomic = "true" role = "alert" class = "js-flash-alert" >
< div >{{ message }}</ div >
</ div >
</ div >
</ div >
</ template >
</ div >
< div
class = "application-main "
data-commit -hovercards-enabled
data-discussion -hovercards-enabled
data-issue -and -pr-hovercards-enabled
data-project -hovercards-enabled
>
< div itemscope itemtype = "http://schema.org/SoftwareSourceCode" class = "" >
< main id = "js-repo-pjax-container" >
< div id = "repository-container-header" class = "pt-3 hide-full-screen" style = "background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo -replace >
< div class = "d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style = "gap: 1rem;" >
< div class = "flex-auto min-width-0 width-fit" >
< div class = " d-flex flex-wrap flex-items-center wb-break-word f3 text-normal" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-repo color-fg-muted mr-2" >
< path d = "M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z" ></ path >
</ svg >
< span class = "author flex-self-stretch" itemprop = "author" >
< a class = "url fn" rel = "author" data-hovercard -type = "organization" data-hovercard -url = "/orgs/dotnet/hovercard" data-octo -click = "hovercard-link-click" data-octo -dimensions = "link_type:self" href = "/dotnet" >
dotnet
</ 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 = "/dotnet/install-scripts" > install-scripts </ a >
</ strong >
< span ></ span >< span class = "Label Label--secondary v-align-middle mr-1" > Public </ span >
</ div >
</ div >
< div id = "repository-details-container" class = "flex-shrink-0" data-turbo -replace style = "max-width: 70%;" >
< ul class = "pagehead-actions flex-shrink-0 d-none d-md-inline" style = "padding: 2px 0;" >
< li >
< a href = "/login?return_to=%2Fdotnet%2Finstall-scripts" 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/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "e3edce88b7530e08fcf0be962acb8a61ad1582dc986fa9a772fd115440400bad" 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-8877b6ba-d88d-40c0-b0d9-ba2cd2714aaf" 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=%2Fdotnet%2Finstall-scripts" rel = "nofollow" data-hydro -click = "{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":265272737,"auth_type":"LOG_IN","originating_url":"https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "ab37c9604275712c3c6cf2b79bf2012375323837956148237c72c495668c45b2" 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 = "76" data-view -component = "true" class = "Counter" > 76 </ span >
</ a >
</ li >
< li >
< div data-view -component = "true" class = "BtnGroup d-flex" >
< a href = "/login?return_to=%2Fdotnet%2Finstall-scripts" rel = "nofollow" data-hydro -click = "{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":265272737,"auth_type":"LOG_IN","originating_url":"https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1","user_id":null}}" data-hydro -click-hmac = "ba41884b5cbe19e24b5ee698599fbf0f580947783d5532858096d34e66b57c9d" aria-label = "You must be signed in to star a repository" data-view -component = "true" class = "tooltipped tooltipped-sw btn-sm btn" > < svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-star v-align-text-bottom d-inline-block mr-2" >
< path d = "M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z" ></ path >
</ svg >< span data-view -component = "true" class = "d-inline" >
Star
</ span > < span id = "repo-stars-counter-star" aria-label = "147 users starred this repository" data-singular -suffix = "user starred this repository" data-plural -suffix = "users starred this repository" data-turbo -replace = "true" title = "147" data-view -component = "true" class = "Counter js-social-count" > 147 </ span >
</ a ></ div >
</ li >
</ ul >
</ div >
</ div >
< div id = "responsive-meta-container" data-turbo -replace >
</ div >
< nav data-pjax = "#js-repo-pjax-container" aria-label = "Repository" data-view -component = "true" class = "js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5" >
< ul data-view -component = "true" class = "UnderlineNav-body list-style-none" >
< li data-view -component = "true" class = "d-inline-flex" >
< a id = "code-tab" href = "/dotnet/install-scripts" 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 /dotnet/install-scripts" data-pjax = "#repo-content-pjax-container" data-turbo -frame = "repo-content-turbo-frame" data-hotkey = "g c" data-analytics -event = "{"category":"Underline navbar","action":"Click tab","label":"Code","target":"UNDERLINE_NAV.TAB"}" aria-current = "page" data-view -component = "true" class = "UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" >
< path d = "m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
< span data-content = "Code" > Code </ span >
< span id = "code-repo-tab-count" data-pjax -replace = "" data-turbo -replace = "" title = "Not available" data-view -component = "true" class = "Counter" ></ span >
</ a ></ li >
< li data-view -component = "true" class = "d-inline-flex" >
< a id = "issues-tab" href = "/dotnet/install-scripts/issues" data-tab -item = "i1issues-tab" data-selected -links = "repo_issues repo_labels repo_milestones /dotnet/install-scripts/issues" data-pjax = "#repo-content-pjax-container" data-turbo -frame = "repo-content-turbo-frame" data-hotkey = "g i" data-analytics -event = "{"category":"Underline navbar","action":"Click tab","label":"Issues","target":"UNDERLINE_NAV.TAB"}" data-view -component = "true" class = "UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" >
< path d = "M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" ></ path >< path d = "M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z" ></ path >
</ svg >
< span data-content = "Issues" > Issues </ span >
< span id = "issues-repo-tab-count" data-pjax -replace = "" data-turbo -replace = "" title = "10" data-view -component = "true" class = "Counter" > 10 </ span >
</ a ></ li >
< li data-view -component = "true" class = "d-inline-flex" >
< a id = "pull-requests-tab" href = "/dotnet/install-scripts/pulls" data-tab -item = "i2pull-requests-tab" data-selected -links = "repo_pulls checks /dotnet/install-scripts/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 = "2" data-view -component = "true" class = "Counter" > 2 </ span >
</ a ></ li >
< li data-view -component = "true" class = "d-inline-flex" >
< a id = "projects-tab" href = "/dotnet/install-scripts/projects" data-tab -item = "i3projects-tab" data-selected -links = "repo_projects new_repo_project repo_project /dotnet/install-scripts/projects" data-pjax = "#repo-content-pjax-container" data-turbo -frame = "repo-content-turbo-frame" data-hotkey = "g b" data-analytics -event = "{"category":"Underline navbar","action":"Click tab","label":"Projects","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-table UnderlineNav-octicon d-none d-sm-inline" >
< 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.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z" ></ path >
</ svg >
< span data-content = "Projects" > Projects </ span >
< span id = "projects-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 = "security-tab" href = "/dotnet/install-scripts/security" data-tab -item = "i4security-tab" data-selected -links = "security overview alerts policy token_scanning code_scanning /dotnet/install-scripts/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 = "/dotnet/install-scripts/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 = "/dotnet/install-scripts/pulse" data-tab -item = "i5insights-tab" data-selected -links = "repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /dotnet/install-scripts/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-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-button" popovertarget = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-overlay" aria-controls = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-list" aria-haspopup = "true" aria-labelledby = "tooltip-00d3a8d3-6105-48ab-82b3-1ab5befb44c1" 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-00d3a8d3-6105-48ab-82b3-1ab5befb44c1" for = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-button" popover = "manual" data-direction = "s" data-type = "label" data-view -component = "true" class = "sr-only position-absolute" > Additional navigation options </ tool-tip >
< anchored-position data-target = "action-menu.overlay" id = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-overlay" anchor = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-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-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-button" id = "action-menu-0a5f5627-c227-4f90-85d5-3d62ccdf5abe-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-97dbc47c-db34-4a4d-ac5a-f1b33ae508a0" href = "/dotnet/install-scripts" role = "menuitem" data-view -component = "true" class = "ActionListContent ActionListContent--visual16" >
< span class = "ActionListItem-visual ActionListItem-visual--leading" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-code" >
< path d = "m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
</ span >
< span data-view -component = "true" class = "ActionListItem-label" >
Code
</ span >
</ a >
</ li >
< li hidden = "hidden" data-menu -item = "i1issues-tab" data-targets = "action-list.items" role = "none" data-view -component = "true" class = "ActionListItem" >
< a tabindex = "-1" id = "item-4e85aa86-af11-4928-9ced-48feec19398c" href = "/dotnet/install-scripts/issues" role = "menuitem" data-view -component = "true" class = "ActionListContent ActionListContent--visual16" >
< span class = "ActionListItem-visual ActionListItem-visual--leading" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-issue-opened" >
< path d = "M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" ></ path >< path d = "M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z" ></ path >
</ svg >
</ span >
< span data-view -component = "true" class = "ActionListItem-label" >
Issues
</ span >
</ a >
</ li >
< li hidden = "hidden" data-menu -item = "i2pull-requests-tab" data-targets = "action-list.items" role = "none" data-view -component = "true" class = "ActionListItem" >
< a tabindex = "-1" id = "item-9f2f3f37-cab4-4d07-bda5-fb49ef8f1d43" href = "/dotnet/install-scripts/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 = "i3projects-tab" data-targets = "action-list.items" role = "none" data-view -component = "true" class = "ActionListItem" >
< a tabindex = "-1" id = "item-6d6122b8-dcf9-4df6-ad19-12d4137a8280" href = "/dotnet/install-scripts/projects" 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-table" >
< 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.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z" ></ path >
</ svg >
</ span >
< span data-view -component = "true" class = "ActionListItem-label" >
Projects
</ span >
</ a >
</ li >
< li hidden = "hidden" data-menu -item = "i4security-tab" data-targets = "action-list.items" role = "none" data-view -component = "true" class = "ActionListItem" >
< a tabindex = "-1" id = "item-eae81f4a-14d1-4e41-9ab9-90f45fb222aa" href = "/dotnet/install-scripts/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 = "i5insights-tab" data-targets = "action-list.items" role = "none" data-view -component = "true" class = "ActionListItem" >
< a tabindex = "-1" id = "item-acd0cc85-d377-4d27-a3db-8e72cb9d7b0e" href = "/dotnet/install-scripts/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 = "/dotnet/install-scripts/blob/main/src/dotnet-install.ps1"
style = "display: block; min-height: calc(100vh - 64px);"
data-attempted -ssr = "true"
data-ssr = "true"
data-lazy = "false"
data-alternate = "false"
>
< script type = "application/json" data-target = "react-app.embeddedData" >{ "payload" : { "allShortcutsEnabled" : false , "fileTree" : { "src" : { "items" : [{ "name" : ".vscode" , "path" : "src/.vscode" , "contentType" : "directory" },{ "name" : "Signing" , "path" : "src/Signing" , "contentType" : "directory" },{ "name" : "dotnet-install.ps1" , "path" : "src/dotnet-install.ps1" , "contentType" : "file" },{ "name" : "dotnet-install.sh" , "path" : "src/dotnet-install.sh" , "contentType" : "file" },{ "name" : "install-dotnet-preview.sh" , "path" : "src/install-dotnet-preview.sh" , "contentType" : "file" }], "totalCount" : 5 }, "" : { "items" : [{ "name" : ".config" , "path" : ".config" , "contentType" : "directory" },{ "name" : "docs" , "path" : "docs" , "contentType" : "directory" },{ "name" : "eng" , "path" : "eng" , "contentType" : "directory" },{ "name" : "src" , "path" : "src" , "contentType" : "directory" },{ "name" : "tests" , "path" : "tests" , "contentType" : "directory" },{ "name" : ".editorconfig" , "path" : ".editorconfig" , "contentType" : "file" },{ "name" : ".gitattributes" , "path" : ".gitattributes" , "contentType" : "file" },{ "name" : ".gitignore" , "path" : ".gitignore" , "contentType" : "file" },{ "name" : "Build.cmd" , "path" : "Build.cmd" , "contentType" : "file" },{ "name" : "CODE-OF-CONDUCT.md" , "path" : "CODE-OF-CONDUCT.md" , "contentType" : "file" },{ "name" : "Directory.Build.props" , "path" : "Directory.Build.props" , "contentType" : "file" },{ "name" : "Directory.Build.targets" , "path" : "Directory.Build.targets" , "contentType" : "file" },{ "name" : "Install-Scripts.sln" , "path" : "Install-Scripts.sln" , "contentType" : "file" },{ "name" : "LICENSE.TXT" , "path" : "LICENSE.TXT" , "contentType" : "file" },{ "name" : "NuGet.config" , "path" : "NuGet.config" , "contentType" : "file" },{ "name" : "THIRD-PARTY-NOTICES.TXT" , "path" : "THIRD-PARTY-NOTICES.TXT" , "contentType" : "file" },{ "name" : "azure-pipelines-PR.yml" , "path" : "azure-pipelines-PR.yml" , "contentType" : "file" },{ "name" : "azure-pipelines-official.yml" , "path" : "azure-pipelines-official.yml" , "contentType" : "file" },{ "name" : "build.sh" , "path" : "build.sh" , "contentType" : "file" },{ "name" : "dotnet-install.asc" , "path" : "dotnet-install.asc" , "contentType" : "file" },{ "name" : "global.json" , "path" : "global.json" , "contentType" : "file" },{ "name" : "testEnvironments.json" , "path" : "testEnvironments.json" , "contentType" : "file" }], "totalCount" : 22 }}, "fileTreeProcessingTime" : 5.164064000000001 , "foldersToFetch" : [], "repo" : { "id" : 265272737 , "defaultBranch" : "main" , "name" : "install-scripts" , "ownerLogin" : "dotnet" , "currentUserCanPush" : false , "isFork" : false , "isEmpty" : false , "createdAt" : "2020-05-19T14:37:14.000Z" , "ownerAvatar" : "https://avatars.githubusercontent.com/u/9141961?v=4" , "public" : true , "private" : false , "isOrgOwned" : true }, "codeLineWrapEnabled" : false , "symbolsExpanded" : false , "treeExpanded" : true , "refInfo" : { "name" : "main" , "listCacheKey" : "v0:1734887902.0" , "canEdit" : false , "refType" : "branch" , "currentOid" : "6cbf2c9ff4615b468f39dfbd2e536e2f6fbe2f95" }, "path" : "src/dotnet-install.ps1" , "currentUser" : null , "blob" : { "rawLines" : [ "#" , "# Copyright (c) .NET Foundation and contributors. All rights reserved." , "# Licensed under the MIT license. See LICENSE file in the project root for full license information." , "#" , "" , "\u003c#" , ".SYNOPSIS" , " Installs dotnet cli" , ".DESCRIPTION" , " Installs dotnet cli. If dotnet installation already exists in the given directory" , " it will update it only if the requested version differs from the one already installed." , "" , " Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:" , " - The SDK needs to be installed without user interaction and without admin rights." , " - The SDK installation doesn't need to persist across multiple CI runs." , " To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer." , "" , ".PARAMETER Channel" , " Default: LTS" , " Download from the Channel specified. Possible values:" , " - STS - the most recent Standard Term Support release" , " - LTS - the most recent Long Term Support release" , " - 2-part version in a format A.B - represents a specific release" , " examples: 2.0, 1.0" , " - 3-part version in a format A.B.Cxx - represents a specific SDK release" , "
<div data-target=" react-app . reactRoot "><style data-styled=" true " data-styled-version=" 5.3 . 11 ">.hOfjFo{padding:0;}/*!sc*/
.oDGAe{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*/
.kowOcT{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*/
.gISSDQ{width:100%;}/*!sc*/
@media screen and (min-width:544px){.gISSDQ{width:100%;}}/*!sc*/
@media screen and (min-width:768px){.gISSDQ{width:auto;}}/*!sc*/
.cEmWSE{display:none;-webkit-order:1;-ms-flex-order:1;order:1;width:100%;margin-left:0;margin-right:0;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-bottom:0;min-width:0;}/*!sc*/
@media screen and (min-width:768px){.cEmWSE{width:auto;margin-top:0 !important;margin-bottom:0 !important;position:-webkit-sticky;position:sticky;top:0px;max-height:100vh !important;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-right:0;height:100vh;}}/*!sc*/
@media print,screen and (max-width:1011px) and (min-width:768px){.cEmWSE{display:none;}}/*!sc*/
.hPvFuC{margin-left:0;margin-right:0;display:none;margin-top:0;}/*!sc*/
@media screen and (min-width:768px){.hPvFuC{margin-left:0 !important;margin-right:0 !important;}}/*!sc*/
.fFSoPl{--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){.fFSoPl{width:clamp(var(--pane-min-width),var(--pane-width),var(--pane-max-width));overflow:auto;}}/*!sc*/
@media screen and (min-width:1280px){.fFSoPl{--pane-max-width-diff:959px;}}/*!sc*/
.bTBnTW{height:100%;position:relative;display:none;margin-left:0;}/*!sc*/
.bHLmSv{position:absolute;inset:0 -2px;cursor:col-resize;background-color:transparent;-webkit-transition-delay:0.1s;transition-delay:0.1s;}/*!sc*/
.bHLmSv:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/
.iKqMNA{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{.iKqMNA{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;}}/*!sc*/
.FxAyp{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*/
.leYMvG{margin-left:auto;margin-right:auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:40px;max-width:100%;margin-top:0;}/*!sc*/
.KMPzq{display:inherit;}/*!sc*/
.hfKjHv{width:100%;}/*!sc*/
.gZWyZE{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}/*!sc*/
.dwYKDk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:8px;}/*!sc*/
.ibcGmb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;min-width:0;}/*!sc*/
.hKaEJF{display:block;margin-right:8px;}/*!sc*/
@media screen and (min-width:1360px){.hKaEJF{display:block;}}/*!sc*/
.XosP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;}/*!sc*/
.bCKfWo[data-size=" medium "]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:8px;padding-right:8px;display:none;}/*!sc*/
@media screen and (max-width:768px){.bCKfWo[data-size=" medium "]{display:block;}}/*!sc*/
.gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/
.dmxRgG[data-size=" medium "]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
.dmxRgG[data-size=" medium "] svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.dmxRgG[data-size=" medium "] > span{width:inherit;}/*!sc*/
.bZBlpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/
.lhTYNA{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.dbrgmi{font-size:14px;min-width:0;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/
.dHJiml{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;padding-right:8px;min-width:0;}/*!sc*/
.cEytCf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:16px;min-width:0;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.fzFXnm{max-width:100%;}/*!sc*/
.iMnkmv{max-width:100%;list-style:none;display:inline-block;}/*!sc*/
.ghzDag{display:inline-block;max-width:100%;}/*!sc*/
.kHuKdh{font-weight:600;}/*!sc*/
.kgiVEz{font-weight:400;}/*!sc*/
.jGhzSQ{font-weight:600;display:inline-block;max-width:100%;font-size:16px;}/*!sc*/
.faNtbn{min-height:32px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;}/*!sc*/
.fmQaBv{margin-left:4px;margin-right:4px;}/*!sc*/
.dwNhzn[data-size=" medium "][data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;display:none;}/*!sc*/
.fGwBZA[data-size=" medium "][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.dJxjrT{margin-left:16px;margin-right:16px;}/*!sc*/
.eFxKDQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
.dzCJzi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:273px;padding:8px;}/*!sc*/
@media screen and (min-width:544px){.dzCJzi{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/
.ldRxiI{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}/*!sc*/
.fVkfyA{width:100%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;min-width:0;margin-right:0;}/*!sc*/
.gNAmSV{height:40px;padding-left:4px;padding-bottom:16px;}/*!sc*/
.jNEwzY{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.bsDwxw{font-size:12px;-webkit-flex:auto;-ms-flex:auto;flex:auto;padding-right:16px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));min-width:0;}/*!sc*/
.jdLMhu{top:0px;z-index:4;background:var(--bgColor-default,var(--color-canvas-default));position:-webkit-sticky;position:sticky;}/*!sc*/
.tOISc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;position:absolute;}/*!sc*/
.hqwSEx{display:none;min-width:0;padding-top:8px;padding-bottom:8px;}/*!sc*/
.bDVoEr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-left:8px;margin-right:8px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;}/*!sc*/
.kYLlPM{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.gYjEmn{margin-left:4px;margin-right:8px;}/*!sc*/
.kGqOLL{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
.fHind{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;font-size:14px;min-width:0;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.dnZoUW{font-weight:600;display:inline-block;max-width:100%;font-size:14px;}/*!sc*/
.jRZWlf[data-size=" small "]{color:var(--fgColor-default,var(--color-fg-default,#1F2328));margin-left:8px;}/*!sc*/
.kTvpNk{padding-left:8px;padding-top:8px;padding-bottom:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));border:1px solid var(--borderColor-default,var(--color-border-default));border-radius:6px 6px 0px 0px;}/*!sc*/
.iNMjfP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0;}/*!sc*/
.fefCSX{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*/
.fefCSX:not(:last-child){margin-right:1px;}/*!sc*/
.fefCSX:not(:last-child):after{background-color:var(--separator-color);content:"";position:absolute;right:-2px;top:8px;bottom:8px;width:1px;}/*!sc*/
.fefCSX:focus-within:has(:focus-visible){--separator-color:transparent;}/*!sc*/
.fefCSX:first-child{margin-left:-1px;}/*!sc*/
.fefCSX:last-child{margin-right:-1px;}/*!sc*/
.idgUkN{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*/
.idgUkN:not(:last-child){margin-right:1px;}/*!sc*/
.idgUkN:not(:last-child):after{background-color:var(--separator-color);content:"";position:absolute;right:-2px;top:8px;bottom:8px;width:1px;}/*!sc*/
.idgUkN:focus-within:has(:focus-visible){--separator-color:transparent;}/*!sc*/
.idgUkN:first-child{margin-left:-1px;}/*!sc*/
.idgUkN:last-child{margin-right:-1px;}/*!sc*/
.kcLCKF{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-right:8px;}/*!sc*/
.kVWtTz{gap:8px;}/*!sc*/
.gWqxTd{padding-left:8px;padding-right:8px;}/*!sc*/
.gWqxTd linkButtonSx:hover:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.gWqxTd linkButtonSx:focus:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.gWqxTd linkButtonSx:active:not([disabled]){-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.ivobqY[data-size=" small "][data-no-visuals]{border-top-left-radius:0;border-bottom-left-radius:0;}/*!sc*/
.heuRGy[data-size=" small "][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));position:relative;}/*!sc*/
.ffkqe[data-size=" small "][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.hGyMdv{border:1px solid;border-top:none;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:0px 0px 6px 6px;min-width:273px;}/*!sc*/
.dceWRL{background-color:var(--bgColor-default,var(--color-canvas-default));border:0px;border-width:0;border-radius:0px 0px 6px 6px;padding:0;min-width:0;margin-top:46px;}/*!sc*/
.dGXHv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;padding-top:8px;padding-bottom:8px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;min-width:0;position:relative;}/*!sc*/
.bpDFns{position:relative;}/*!sc*/
.iJOeCH{-webkit-flex:1;-ms-flex:1;flex:1;position:relative;min-width:0;}/*!sc*/
.jewUnv{tab-size:8;isolation:isolate;position:relative;overflow:auto;max-width:unset;}/*!sc*/
.gkZUDI{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
.cCoXib{position:fixed;top:0;right:0;height:100%;width:15px;-webkit-transition:-webkit-transform 0.3s;-webkit-transition:transform 0.3s;transition:transform 0.3s;z-index:1;}/*!sc*/
.cCoXib:hover{-webkit-transform:scaleX(1.5);-ms-transform:scaleX(1.5);transform:scaleX(1.5);}/*!sc*/
data-styled.g1[id=" Box-sc -g0xbh4 - 0 "]{content:" hOfjFo , oDGAe , kowOcT , gISSDQ , cEmWSE , hPvFuC , fFSoPl , bTBnTW , bHLmSv , iKqMNA , FxAyp , leYMvG , KMPzq , hfKjHv , gZWyZE , dwYKDk , ibcGmb , hKaEJF , XosP , bCKfWo , gUkoLg , dmxRgG , bZBlpz , lhTYNA , dbrgmi , dHJiml , cEytCf , fzFXnm , iMnkmv , ghzDag , kHuKdh , kgiVEz , jGhzSQ , faNtbn , fmQaBv , dwNhzn , fGwBZA , dJxjrT , eFxKDQ , dzCJzi , ldRxiI , fVkfyA , gNAmSV , jNEwzY , bsDwxw , jdLMhu , tOISc , hqwSEx , bDVoEr , kYLlPM , gYjEmn , kGqOLL , fHind , dnZoUW , jRZWlf , kTvpNk , iNMjfP , fefCSX , idgUkN , kcLCKF , kVWtTz , gWqxTd , ivobqY , heuRGy , ffkqe , hGyMdv , dceWRL , dGXHv , bpDFns , iJOeCH , jewUnv , gkZUDI , cCoXib , "}/*!sc*/
.eMMFM{min-width:0;}/*!sc*/
.eMMFM:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/
.eMMFM:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/
.eMMFM:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/
.eMMFM:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/
.eMMFM:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/
.eMMFM:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/
.eMMFM:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/
.HlHVj{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:16px;}/*!sc*/
.HlHVj:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/
.HlHVj:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/
.HlHVj:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/
.HlHVj:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/
.HlHVj:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/
.HlHVj:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/
.HlHVj:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/
.lauzFl{padding-left:4px;padding-right:4px;font-weight:400;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:14px;}/*!sc*/
.lauzFl:where([data-size='small']){font-size:var(--text-body-size-small,0.75rem);line-height:var(--text-body-lineHeight-small,1.6666);}/*!sc*/
.lauzFl:where([data-size='medium']){font-size:var(--text-body-size-medium,0.875rem);line-height:var(--text-body-lineHeight-medium,1.4285);}/*!sc*/
.lauzFl:where([data-size='large']){font-size:var(--text-body-size-large,1rem);line-height:var(--text-body-lineHeight-large,1.5);}/*!sc*/
.lauzFl:where([data-weight='light']){font-weight:var(--base-text-weight-light,300);}/*!sc*/
.lauzFl:where([data-weight='normal']){font-weight:var(--base-text-weight-normal,400);}/*!sc*/
.lauzFl:where([data-weight='medium']){font-weight:var(--base-text-weight-medium,500);}/*!sc*/
.lauzFl:where([data-weight='semibold']){font-weight:var(--base-text-weight-semibold,600);}/*!sc*/
data-styled.g3[id=" Text__StyledText-sc - 17v1xeu - 0 "]{content:" eMMFM , HlHVj , lauzFl , "}/*!sc*/
.jkNcAv{border:0;font-size:inherit;font-family:inherit;background-color:transparent;-webkit-appearance:none;color:inherit;width:100%;}/*!sc*/
.jkNcAv:focus{outline:0;}/*!sc*/
data-styled.g14[id=" UnstyledTextInput__ToggledUnstyledTextInput-sc - 14ypya - 0 "]{content:" jkNcAv , "}/*!sc*/
.hLzFvi{font-size:14px;line-height:var(--base-size-20);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:var(--base-size-32);overflow:hidden;--inner-action-size:var(--base-size-24);}/*!sc*/
.hLzFvi input,.hLzFvi textarea{cursor:text;}/*!sc*/
.hLzFvi select{cursor:pointer;}/*!sc*/
.hLzFvi input::-webkit-input-placeholder,.hLzFvi textarea::-webkit-input-placeholder,.hLzFvi select::-webkit-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/
.hLzFvi input::-moz-placeholder,.hLzFvi textarea::-moz-placeholder,.hLzFvi select::-moz-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/
.hLzFvi input:-ms-input-placeholder,.hLzFvi textarea:-ms-input-placeholder,.hLzFvi select:-ms-input-placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/
.hLzFvi input::placeholder,.hLzFvi textarea::placeholder,.hLzFvi select::placeholder{color:var(---control-fgColor-placeholder,var(--fgColor-muted,var(--color-fg-muted,#656d76)));}/*!sc*/
.hLzFvi:where([data-trailing-action][data-focused]),.hLzFvi:where(:not([data-trailing-action]):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*/
.hLzFvi > textarea{padding:var(--base-size-12);}/*!sc*/
.hLzFvi:where([data-contrast]){background-color:var(--bgColor-inset,var(--color-canvas-inset,#f6f8fa));}/*!sc*/
.hLzFvi:where([data-disabled]){color:var(--fgColor-disabled,var(--color-primer-fg-disabled,#8c959f));background-color:var(--control-bgColor-disabled,var(--color-input-disabled-bg,rgba(175,184,193,0.2)));box-shadow:none;border-color:var(--control-borderColor-disabled,var(--borderColor-default,var(--color-border-default,#d0d7de)));}/*!sc*/
.hLzFvi:where([data-disabled]) input,.hLzFvi:where([data-disabled]) textarea,.hLzFvi:where([data-disabled]) select{cursor:not-allowed;}/*!sc*/
.hLzFvi:where([data-monospace]){font-family:var(--fontStack-monospace,SFMono-Regular,Consolas," Liberation Mono ",Menlo,Courier,monospace);}/*!sc*/
.hLzFvi:where([data-validation='error']){border-color:var(--borderColor-danger-emphasis,var(--color-danger-emphasis,#cf222e));}/*!sc*/
.hLzFvi:where([data-validation='error']):where([data-trailing-action][data-focused]),.hLzFvi:where([data-validation='error']):where(:not([data-trailing-action])):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*/
.hLzFvi:where([data-validation='success']){border-color:var(--bgColor-success-emphasis,var(--color-success-emphasis,#1f883d));}/*!sc*/
.hLzFvi:where([data-block]){width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;}/*!sc*/
@media (min-width:768px){.hLzFvi{font-size:var(--text-body-size-medium);}}/*!sc*/
.hLzFvi:where([data-size='small']){--inner-action-size:var(--base-size-20);min-height:var(--base-size-28);padding-top:3px;padding-right:var(--base-size-8);padding-bottom:3px;padding-left:var(--base-size-8);font-size:var(--text-body-size-small);line-height:var(--base-size-20);}/*!sc*/
.hLzFvi:where([data-size='large']){--inner-action-size:var(--base-size-28);height:var(--base-size-40);padding-top:10px;padding-right:var(--base-size-8);padding-bottom:10px;padding-left:var(--base-size-8);}/*!sc*/
.hLzFvi:where([data-variant='small']){min-height:28px;padding-top:3px;padding-right:var(--base-size-8);padding-bottom:3px;padding-left:var(--base-size-8);font-size:(--text-body-size-small);line-height:var(--base-size-20);}/*!sc*/
.hLzFvi:where([data-variant='large']){padding-top:10px;padding-right:var(--base-size-8);padding-bottom:10px;padding-left:var(--base-size-8);font-size:var(--text-title-size-medium);}/*!sc*/
.hLzFvi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/
data-styled.g15[id=" TextInputWrapper__StyledTextInputBaseWrapper-sc - 1mqhpbi - 0 "]{content:" hLzFvi , "}/*!sc*/
.iHYdQq{background-repeat:no-repeat;background-position:right 8px center;padding-right:0;padding-left:0;}/*!sc*/
.iHYdQq > :not(:last-child){margin-right:8px;}/*!sc*/
.iHYdQq .TextInput-icon,.iHYdQq .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*/
.iHYdQq > input,.iHYdQq > select{padding-right:0;padding-left:0;}/*!sc*/
.iHYdQq:where([data-leading-visual]){padding-left:var(--base-size-12);}/*!sc*/
.iHYdQq:where([data-trailing-visual]:not([data-trailing-action])){padding-right:var(--base-size-12);}/*!sc*/
.iHYdQq:where(:not([data-leading-visual])) > input,.iHYdQq:where(:not([data-leading-visual])) > select{padding-left:var(--base-size-12);}/*!sc*/
.iHYdQq:where(:not([data-trailing-visual]):not([data-trailing-action])) > input,.iHYdQq:where(:not([data-trailing-visual]):not([data-trailing-action])) > select{padding-right:var(--base-size-12);}/*!sc*/
.iHYdQq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/
data-styled.g16[id=" TextInputWrapper__StyledTextInputWrapper-sc - 1mqhpbi - 1 "]{content:" iHYdQq , "}/*!sc*/
.hWlpPn{position:relative;display:inline-block;}/*!sc*/
.hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont," Segoe UI "," Noto Sans ",Helvetica,Arial,sans-serif," Apple Color Emoji "," Segoe UI Emoji ";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/
@-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/
@keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/
.hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/
.hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/
.hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/
.hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/
.hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/
.hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/
.hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/
.hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/
.hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/
.hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/
.hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/
.hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/
.hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/
.hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/
.hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/
.hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/
.hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/
data-styled.g18[id=" Tooltip__TooltipBase-sc - 17tf59c - 0 "]{content:" hWlpPn , "}/*!sc*/
.eAtkQz{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;max-width:100%;}/*!sc*/
data-styled.g20[id=" Truncate__StyledTruncate-sc - 23o1d2 - 0 "]{content:" eAtkQz , "}/*!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.g102[id=" sc-global -gbKrvU1 "]{content:" sc-global -gbKrvU1 , "}/*!sc*/
.lirRhW{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;isolation:isolate;}/*!sc*/
.lirRhW.lirRhW > *:not([data-loading-wrapper]){margin-inline-end:-1px;position:relative;border-radius:0;}/*!sc*/
.lirRhW.lirRhW > *:not([data-loading-wrapper]):first-child{border-top-left-radius:6px;border-bottom-left-radius:6px;}/*!sc*/
.lirRhW.lirRhW > *:not([data-loading-wrapper]):last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;}/*!sc*/
.lirRhW.lirRhW > *:not([data-loading-wrapper]):focus,.lirRhW.lirRhW > *:not([data-loading-wrapper]):active,.lirRhW.lirRhW > *:not([data-loading-wrapper]):hover{z-index:1;}/*!sc*/
.lirRhW [data-loading-wrapper]:first-child button,.lirRhW [data-loading-wrapper]:first-child a{border-top-left-radius:6px;border-bottom-left-radius:6px;}/*!sc*/
.lirRhW [data-loading-wrapper]:last-child button,.lirRhW [data-loading-wrapper]:last-child a{border-top-right-radius:6px;border-bottom-right-radius:6px;}/*!sc*/
.lirRhW [data-loading-wrapper] > *{margin-inline-end:-1px;position:relative;border-radius:0;}/*!sc*/
.lirRhW [data-loading-wrapper] > *:focus,.lirRhW [data-loading-wrapper] > *:active,.lirRhW [data-loading-wrapper] > *:hover{z-index:1;}/*!sc*/
data-styled.g107[id=" ButtonGroup__StyledButtonGroup-sc - 1gxhls1 - 0 "]{content:" lirRhW , "}/*!sc*/
.dbGjOi{--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*/
.dbGjOi:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/
.dbGjOi:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/
.dbGjOi:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/
.dbGjOi .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*/
.dbGjOi svg{fill:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.dbGjOi:focus:focus-visible:not(:last-child):after{width:0;}/*!sc*/
.dbGjOi .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){.dbGjOi: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*/
.bHmvop{--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*/
.bHmvop:focus:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/
.bHmvop:focus:not(:disabled):not(:focus-visible){outline:solid 1px transparent;}/*!sc*/
.bHmvop:focus-visible:not(:disabled){box-shadow:none;outline:2px solid var(--fgColor-accent,var(--color-accent-fg,#0969da));outline-offset:-1px;}/*!sc*/
.bHmvop .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*/
.bHmvop svg{fill:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/
.bHmvop:hover .segmentedControl-content{background-color:var(--controlTrack-bgColor-hover,var(--color-segmented-control-button-hover-bg,rgba(175,184,193,0.2)));}/*!sc*/
.bHmvop:active .segmentedControl-content{background-color:var(--controlTrack-bgColor-active,var(--color-segmented-control-button-hover-active-bg,rgba(175,184,193,0.4)));}/*!sc*/
.bHmvop:focus:focus-visible:not(:last-child):after{width:0;}/*!sc*/
.bHmvop .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){.bHmvop: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.g109[id=" SegmentedControlButton__SegmentedControlButtonStyled-sc - 8lkgxl - 0 "]{content:" dbGjOi , bHmvop , "}/*!sc*/
.lawgDG{background-color:var(--controlTrack-bgColor-rest,var(--color-segmented-control-bg,#eaeef2));border-radius:6px;border:1px solid;border-color:var(--controlTrack-borderColor-rest,transparent);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.g111[id=" SegmentedControl__SegmentedControlList-sc - 1rzig82 - 0 "]{content:" lawgDG , "}/*!sc*/
</style><meta data-hydrostats=" publish "/> <!-- --> <!-- --> <button hidden="" data-testid=" header-permalink -button " data-hotkey-scope=" read-only -cursor-text-area "></button><button hidden=""></button><div><div style=" - -sticky-pane-height:100vh ;- -spacing:var (- -spacing-none ) " class=" Box-sc -g0xbh4 - 0 hOfjFo "><div class=" Box-sc -g0xbh4 - 0 oDGAe "><div class=" Box-sc -g0xbh4 - 0 kowOcT "><div tabindex=" 0 " class=" Box-sc -g0xbh4 - 0 gISSDQ "><div class=" Box-sc -g0xbh4 - 0 cEmWSE "><div class=" Box-sc -g0xbh4 - 0 hPvFuC "></div><div style=" - -pane-width:320px " class=" Box-sc -g0xbh4 - 0 fFSoPl "></div><div class=" Box-sc -g0xbh4 - 0 bTBnTW "><div role=" slider " aria-label=" Draggable pane splitter " aria-valuemin=" 0 " aria-valuemax=" 0 " aria-valuenow=" 0 " aria-valuetext=" Pane width 0 pixels " tabindex=" 0 " class=" Box-sc -g0xbh4 - 0 bHLmSv "></div></div></div></div><div class=" Box-sc -g0xbh4 - 0 iKqMNA "><div class=" Box-sc -g0xbh4 - 0 "></div><div class=" Box-sc -g0xbh4 - 0 FxAyp "><div data-selector=" repos-split -pane-content " tabindex=" 0 " class=" Box-sc -g0xbh4 - 0 leYMvG "><div class=" Box-sc -g0xbh4 - 0 KMPzq "><div class=" Box-sc -g0xbh4 - 0 hfKjHv container "><div class=" px - 3 pt - 3 pb - 0 " id=" StickyHeader "><div class=" Box-sc -g0xbh4 - 0 gZWyZE "><div class=" Box-sc -g0xbh4 - 0 dwYKDk "><div class=" Box-sc -g0xbh4 - 0 ibcGmb react-code -view-header-wrap - -narrow "><div class=" Box-sc -g0xbh4 - 0 hKaEJF "><h2 class=" Box-sc -g0xbh4 - 0 XosP prc-Heading -Heading - 6CmGO "><button style=" - -button-color:fg . muted " type=" button " aria-label=" Expand file tree " data-testid=" expand-file -tree-button-mobile " class=" Box-sc -g0xbh4 - 0 bCKfWo prc-Button -ButtonBase-c50BI " data-loading=" false " data-size=" medium " data-variant=" invisible " aria-describedby=" : Rld9lab : -loading-announcement "><span data-component=" buttonContent " class=" Box-sc -g0xbh4 - 0 gUkoLg prc-Button -ButtonContent-HKbr - "><span data-component=" leadingVisual " class=" prc-Button -Visual - 2epfX prc-Button -VisualWrap-Db-eB "><svg aria-hidden=" true " focusable=" false " class=" octicon octicon-arrow -left " viewBox=" 0 0 16 16 " width=" 16 " height=" 16 " fill=" currentColor " 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 " class=" prc-Button -Label-pTQ3x ">Files</span></span></button><span role=" tooltip " aria-label=" Expand file tree " id=" expand-button -file -tree-button " class=" Tooltip__TooltipBase-sc - 17tf59c - 0 hWlpPn tooltipped-se "><button data-component=" IconButton " type=" button " data-testid=" expand-file -tree-button " aria-controls=" repos-file -tree " class=" prc-Button -ButtonBase-c50BI position-relative ExpandFileTreeButton-module__expandButton - -gL4is ExpandFileTreeButton-module__filesButtonBreakpoint - -WfX9t fgColor-muted prc-Button -IconButton-szpyj " data-loading=" false " data-no-visuals=" true " data-size=" medium " data-variant=" invisible " aria-describedby=" : R35d9lab : -loading-announcement " aria-labelledby=" expand-button -file -tree-button "><svg aria-hidden=" true " focusable=" false " class=" octicon octicon-sidebar -collapse " viewBox=" 0 0 16 16 " width=" 16 " height=" 16 " fill=" currentColor " 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 " aria-haspopup=" true " aria-expanded=" false " tabindex=" 0 " aria-label=" main branch " data-testid=" anchor-button " class=" Box-sc -g0xbh4 - 0 dmxRgG prc-Button -ButtonBase-c50BI ref-selector -class " data-loa
</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 "><span class=" pl-c "><#</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC7 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 7 " style=" position : relative "><span class=" pl-c "><span class=" pl-c "><span class=" pl-c1 ">.</span><span class=" pl-k ">SYNOPSIS</span></span></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 "> Installs dotnet cli</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 class=" pl-c "><span class=" pl-c1 ">.</span><span class=" pl-k ">DESCRIPTION</span></span></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 "> Installs dotnet cli. If dotnet installation already exists in the given directory</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 "> it will update it only if the requested version differs from the one already installed.</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 ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC13 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 13 " style=" position : relative "><span class=" pl-c "> Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC14 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 14 " style=" position : relative "><span class=" pl-c "> - The SDK needs to be installed without user interaction and without admin rights.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC15 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 15 " style=" position : relative "><span class=" pl-c "> - The SDK installation doesn't need to persist across multiple CI runs.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC16 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 16 " style=" position : relative "><span class=" pl-c "> To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.</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 ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC18 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 18 " style=" position : relative "><span class=" pl-c "><span class=" pl-c "><span class=" pl-c1 ">.</span><span class=" pl-k ">PARAMETER</span> <span class=" pl-k ">Channel</span></span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC19 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 19 " style=" position : relative "><span class=" pl-c "> Default: LTS</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC20 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 20 " style=" position : relative "><span class=" pl-c "> Download from the Channel specified. Possible values:</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC21 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 21 " style=" position : relative "><span class=" pl-c "> - STS - the most recent Standard Term Support release</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC22 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 22 " style=" position : relative "><span class=" pl-c "> - LTS - the most recent Long Term Support release</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-c "> - 2-part version in a format A.B - represents a specific release</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 "><span class=" pl-c "> examples: 2.0, 1.0</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC25 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 25 " style=" position : relative "><span class=" pl-c "> - 3-part version in a format A.B.Cxx - represents a specific SDK release</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-c "> examples: 5.0.1xx, 5.0.2xx</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC27 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 27 " style=" position : relative "><span class=" pl-c "> Supported since 5.0 release</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC28 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 28 " style=" position : relative "><span class=" pl-c "> Warning: Value "Current" is deprecated for the Channel parameter. Use "STS" instead.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC29 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 29 " style=" position : relative "><span class=" pl-c "> Note: The version parameter overrides the channel parameter when any version other than 'latest' is used.</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-c "><span class=" pl-c "><span class=" pl-c1 ">.</span><span class=" pl-k ">PARAMETER</span> <span class=" pl-k ">Quality</sp
</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-c1 ">Set-StrictMode</span> <span class=" pl-k ">-</span>Version Latest</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-c1 "> $ErrorActionPreference </span> <span class=" pl-k ">=</span> <span class=" pl-s "><span class=" pl-pds ">"</span>Stop<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC142 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 142 " style=" position : relative "><span class=" pl-c1 "> $ProgressPreference </span> <span class=" pl-k ">=</span> <span class=" pl-s "><span class=" pl-pds ">"</span>SilentlyContinue<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC143 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 143 " style=" position : relative ">
</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-k ">function</span> <span class=" pl-en ">Say</span>(<span class=" pl-smi "> $str </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-k ">try</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-c1 ">Write-Host</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC147 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 147 " style=" position : relative "> }</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 ">catch</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC149 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 149 " style=" position : relative "> <span class=" pl-c "><span class=" pl-c ">#</span> Some platforms cannot utilize Write-Host (Azure Functions, for instance). Fall back to Write-Output</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC150 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 150 " style=" position : relative "> <span class=" pl-c1 ">Write-Output</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC151 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 151 " style=" position : relative "> }</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC152 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 152 " style=" position : relative ">}</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC153 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 153 " style=" position : relative ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC154 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 154 " style=" position : relative "><span class=" pl-k ">function</span> <span class=" pl-en ">Say-Warning</span>(<span class=" pl-smi "> $str </span>) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC155 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 155 " style=" position : relative "> <span class=" pl-k ">try</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC156 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 156 " style=" position : relative "> <span class=" pl-c1 ">Write-Warning</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC157 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 157 " style=" position : relative "> }</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 ">catch</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC159 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 159 " style=" position : relative "> <span class=" pl-c "><span class=" pl-c ">#</span> Some platforms cannot utilize Write-Warning (Azure Functions, for instance). Fall back to Write-Output</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC160 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 160 " style=" position : relative "> <span class=" pl-c1 ">Write-Output</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: Warning: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC161 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 161 " style=" position : relative "> }</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 ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC164 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 164 " style=" position : relative "><span class=" pl-c "><span class=" pl-c ">#</span> Writes a line with error style settings.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC165 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 165 " style=" position : relative "><span class=" pl-c "><span class=" pl-c ">#</span> Use this function to show a human-readable comment along with an exception.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC166 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 166 " style=" position : relative "><span class=" pl-k ">function</span> <span class=" pl-en ">Say-Error</span>(<span class=" pl-smi "> $str </span>) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC167 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 167 " style=" position : relative "> <span class=" pl-k ">try</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC168 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 168 " style=" position : relative "> <span class=" pl-c "><span class=" pl-c ">#</span> Write-Error is quite oververbose for the purpose of the function, let's write one line with error style settings.</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC169 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 169 " style=" position : relative "> <span class=" pl-c1 "> $Host <span class=" pl-smi ">.UI.WriteErrorLine</span></span>(<span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span>)</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" 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 ">catch</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC172 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 172 " style=" position : relative "> <span class=" pl-c1 ">Write-Output</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: Error: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" 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 ">}</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 ">
</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 ">function</span> <span class=" pl-en ">Say-Verbose</span>(<span class=" pl-smi "> $str </span>) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC177 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 177 " style=" position : relative "> <span class=" pl-k ">try</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC178 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 178 " style=" position : relative "> <span class=" pl-c1 ">Write-Verbose</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC179 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 179 " style=" position : relative "> }</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 ">catch</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC181 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 181 " style=" position : relative "> <span class=" pl-c "><span class=" pl-c ">#</span> Some platforms cannot utilize Write-Verbose (Azure Functions, for instance). Fall back to Write-Output</span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC182 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 182 " style=" position : relative "> <span class=" pl-c1 ">Write-Output</span> <span class=" pl-s "><span class=" pl-pds ">"</span>dotnet-install: <span class=" pl-smi "> $str </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC183 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 183 " style=" position : relative "> }</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 ">}</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC185 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 185 " style=" position : relative ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC186 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 186 " style=" position : relative "><span class=" pl-k ">function</span> <span class=" pl-en ">Measure-Action</span>(<span class=" pl-smi "> $name </span><span class=" pl-k ">,</span> <span class=" pl-smi "> $block </span>) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC187 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 187 " style=" position : relative "> <span class=" pl-smi "> $time </span> <span class=" pl-k ">=</span> <span class=" pl-c1 ">Measure-Command</span> <span class=" pl-smi "> $block </span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC188 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 188 " style=" position : relative "> <span class=" pl-smi "> $totalSeconds </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $time <span class=" pl-smi ">.TotalSeconds</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC189 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 189 " style=" position : relative "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>Action '<span class=" pl-smi "> $name </span>' took <span class=" pl-smi "> $totalSeconds </span> seconds<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC190 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 190 " style=" position : relative ">}</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC191 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 191 " style=" position : relative ">
</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC192 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 192 " style=" position : relative "><span class=" pl-k ">function</span> <span class=" pl-en ">Get-Remote-File-Size</span>(<span class=" pl-smi "> $zipUri </span>) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC193 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 193 " style=" position : relative "> <span class=" pl-k ">try</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC194 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 194 " style=" position : relative "> <span class=" pl-smi "> $response </span> <span class=" pl-k ">=</span> <span class=" pl-c1 ">Invoke-WebRequest</span> <span class=" pl-k ">-</span>Uri <span class=" pl-smi "> $zipUri </span> <span class=" pl-k ">-</span>Method Head</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC195 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 195 " style=" position : relative "> <span class=" pl-smi "> $fileSize </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $response <span class=" pl-smi ">.Headers</span></span>[<span class=" pl-s "><span class=" pl-pds ">"</span>Content-Length<span class=" pl-pds ">"</span></span>]</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC196 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 196 " style=" position : relative "> <span class=" pl-k ">if</span> ((<span class=" pl-k ">!</span>[<span class=" pl-k ">string</span>]::IsNullOrEmpty(<span class=" pl-smi "> $fileSize </span>))) {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC197 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 197 " style=" position : relative "> Say <span class=" pl-s "><span class=" pl-pds ">"</span>Remote file <span class=" pl-smi "> $zipUri </span> size is <span class=" pl-smi "> $fileSize </span> bytes.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC198 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 198 " style=" position : relative "> </div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC199 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 199 " style=" position : relative "> <span class=" pl-k ">return</span> <span class=" pl-smi "> $fileSize </span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC200 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 200 " style=" position : relative "> }</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC201 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 201 " style=" position : relative "> }</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC202 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 202 " style=" position : relative "> <span class=" pl-k ">catch</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC203 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 203 " style=" position : relative "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>Content-Length header was not extracted for <span class=" pl-smi "> $zipUri </span>.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-c
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC206" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "206" style = "position:relative" > < span class = "pl-k" > return </ 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 = "LC207" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "207" style = "position:relative" >}</ 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" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC209" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "209" style = "position:relative" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Say-Invocation </ span >(< span class = "pl-smi" > $Invocation </ 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-smi" > $command </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $Invocation < span class = "pl-smi" >. MyCommand </ span ></ 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-c1" > $args </ span > < span class = "pl-k" >=</ span > ((< span class = "pl-smi" > $Invocation < span class = "pl-smi" >. BoundParameters . Keys </ span ></ span > < span class = "pl-k" >|</ span > < span class = "pl-k" > foreach </ span > { < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >-< span class = "pl-c1" > $_ </ span > < span class = "pl-cce" >`& quot ;</ span >< span class = "pl-k" >< span class = "pl-pse" >$</ span ></ span >< span class = "pl-pse" >(</ span >< span class = "pl-smi" > $Invocation < span class = "pl-smi" >. BoundParameters </ span ></ span >[< span class = "pl-c1" > $_ </ span >]< span class = "pl-pse" >)</ span >< span class = "pl-cce" >`& quot ;</ span >< span class = "pl-pds" >& quot ;</ span ></ span > }) < span class = "pl-k" > -join </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > < span class = "pl-pds" >& quot ;</ span ></ span >)</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC212" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "212" style = "position:relative" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $command </ span > < span class = "pl-c1" > $args </ span >< span class = "pl-pds" >& quot ;</ span ></ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC213" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "213" style = "position:relative" >}</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC214" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "214" style = "position:relative" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC215" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "215" style = "position:relative" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Invoke-With -Retry </ span >([< span class = "pl-k" > ScriptBlock </ span >]< span class = "pl-smi" > $ScriptBlock </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > System . Threading . CancellationToken </ span >]< span class = "pl-smi" > $cancellationToken </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . Threading . CancellationToken </ span >]:: None < span class = "pl-k" >,</ span > [< span class = "pl-k" > int </ span >]< span class = "pl-smi" > $MaxAttempts </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > 3 </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > int </ span >]< span class = "pl-smi" > $SecondsBetweenAttempts </ span > < span class = "pl-k" >=</ 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 = "LC216" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "216" style = "position:relative" > < span class = "pl-smi" > $Attempts </ span > < span class = "pl-k" >=</ 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 = "LC217" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "217" style = "position:relative" > < span class = "pl-smi" >$< span class = "pl-k" > local </ span > : startTime </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" >$</ span >(< span class = "pl-c1" > get-date </ span >)</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC218" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "218" style = "position:relative" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC219" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "219" style = "position:relative" > < span class = "pl-k" > while </ span > (< span class = "pl-c1" > $true </ span >) {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC220" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "220" style = "position:relative" > < span class = "pl-k" > try </ span > {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC221" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "221" style = "position:relative" > < span class = "pl-k" > return </ span > < span class = "pl-k" >& amp ;</ span > < span class = "pl-smi" > $ScriptBlock </ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC222" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "222" style = "position:relative" > }</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC223" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "223" style = "position:relative" > < span class = "pl-k" > catch </ span > {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC224" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "224" style = "position:relative" > < span class = "pl-smi" > $Attempts </ span >< span class = "pl-k" >++</ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC225" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "225" style = "position:relative" > < span class = "pl-k" > if </ span > ((< span class = "pl-smi" > $Attempts </ span > < span class = "pl-k" > -lt </ span > < span class = "pl-smi" > $MaxAttempts </ span >) < span class = "pl-k" > -and </ span > < span class = "pl-k" > -not </ span > < span class = "pl-smi" > $cancellationToken < span class = "pl-smi" >. IsCancellationRequested </ span ></ span >) {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC226" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "226" style = "position:relative" > < span class = "pl-c1" > Start-Sleep </ span > < span class = "pl-smi" > $SecondsBetweenAttempts </ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC227" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "227" style = "position:relative" > }</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC228" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "228" style = "position:relative" > < span class = "pl-k" > else </ span > {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC229" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "229" style = "position:relative" > < span class = "pl-smi" >$< span class = "pl-k" > local </ span > : elapsedTime </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" >$</ span >(< span class = "pl-c1" > get-date </ span >) < span class = "pl-k" >-</ span > < span class = "pl-smi" >$< span class = "pl-k" > local </ span > : startTime </ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC230" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "230" style = "position:relative" > < span class = "pl-k" > if </ span > ((< span class = "pl-smi" >$< span class = "pl-k" > local </ span > : elapsedTime < span class = "pl-smi" >. TotalSeconds </ span ></ span > < span class = "pl-k" >-</ span > < span class = "pl-smi" > $DownloadTimeout </ span >) < span class = "pl-k" > -gt </ span > < span class = "pl-c1" > 0 </ span > < span class
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC239" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "239" style = "position:relative" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Get-Machine -Architecture </ span >() {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC240" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "240" style = "position:relative" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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-c" >< span class = "pl-c" > #</span> On PS x86, PROCESSOR_ARCHITECTURE reports x86 even on x64 systems.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC243" class="react-file-line html-div" data-testid="code-cell" data-line-number="243" style="position:relative"> <span class="pl-c"><span class="pl-c">#</span> To get the correct architecture, we need to use PROCESSOR_ARCHITEW6432.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC244" class="react-file-line html-div" data-testid="code-cell" data-line-number="244" style="position:relative"> <span class="pl-c"><span class="pl-c">#</span> PS x64 doesn't define this, so we fall back to PROCESSOR_ARCHITECTURE.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC245" class="react-file-line html-div" data-testid="code-cell" data-line-number="245" style="position:relative"> <span class="pl-c"><span class="pl-c">#</span> Possible values: amd64, x64, x86, arm64, arm</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC246" class="react-file-line html-div" data-testid="code-cell" data-line-number="246" style="position:relative"> <span class="pl-k">if</span> ( <span class="pl-smi">$<span class="pl-c1">ENV:</span>PROCESSOR_ARCHITEW6432</span> <span class="pl-k">-ne</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="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-smi">$<span class="pl-c1">ENV:</span>PROCESSOR_ARCHITEW6432</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" > < span class = "pl-k" > try </ span > { </ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC251" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "251" style = "position:relative" > < span class = "pl-k" > if </ span > ( ((< span class = "pl-c1" > Get-CimInstance </ span > < span class = "pl-k" >-</ span > ClassName CIM_OperatingSystem ). OSArchitecture ) < span class = "pl-k" > -like </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > ARM *< span class = "pl-pds" >& quot ;</ span ></ span >) {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC252" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "252" style = "position:relative" > < span class = "pl-k" > if </ span > ( [< span class = "pl-k" > Environment </ span >]:: Is64BitOperatingSystem ) {</ 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-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm64 < span class = "pl-pds" >& quot ;</ span ></ 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" > } </ 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-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > }</ 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-k" > catch </ span > {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC259" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "259" style = "position:relative" > < span class = "pl-c" >< span class = "pl-c" > #</span> Machine doesn't support Get-CimInstance</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC260" class="react-file-line html-div" data-testid="code-cell" data-line-number="260" style="position:relative"> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC261" class="react-file-line html-div" data-testid="code-cell" data-line-number="261" style="position:relative">
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC262" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "262" style = "position:relative" > < span class = "pl-k" > return </ span > < span class = "pl-smi" >$< span class = "pl-c1" > ENV : </ span > PROCESSOR_ARCHITECTURE </ 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" > function </ span > < span class = "pl-en" > Get-CLIArchitecture -From-Architecture </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Architecture </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC268" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "268" style = "position:relative" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $Architecture </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >& lt ; auto & gt ;< span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $Architecture </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Machine </ span >< span class = "pl-k" >-</ span > Architecture </ 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" > }</ 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" >
</ 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-k" > switch </ span > (< span class = "pl-smi" > $Architecture < span class = "pl-smi" >. ToLowerInvariant </ span ></ 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" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > amd64 < span class = "pl-pds" >& quot ;</ span ></ span >) < span class = "pl-k" > -or </ span > (< span class = "pl-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > x64 < span class = "pl-pds" >& quot ;</ span ></ span >) } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > x64 < span class = "pl-pds" >& quot ;</ span ></ 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" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > x86 < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > x86 < span class = "pl-pds" >& quot ;</ span ></ 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-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm < span class = "pl-pds" >& quot ;</ span ></ 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-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm64 < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > arm64 < span class = "pl-pds" >& quot ;</ span ></ 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-k" > default </ span > { < span class = "pl-k" > throw </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Architecture & #039;<span class="pl-smi">$Architecture</span>' not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues<span class="pl-pds">"</span></span> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC278" class="react-file-line html-div" data-testid="code-cell" data-line-number="278" style="position:relative"> }</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">}</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">
</ 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-k" > function </ span > < span class = "pl-en" > ValidateFeedCredential </ span >([< span class = "pl-k" > string </ span >] < span class = "pl-smi" > $FeedCredential </ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $Internal </ span > < span class = "pl-k" > -and </ span > [< span class = "pl-k" > string </ span >]:: IsNullOrWhitespace (< span class = "pl-smi" > $FeedCredential </ span >)) {</ 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-smi" > $message </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Provide credentials via -FeedCredential parameter .< span class = "pl-pds" >& quot ;</ span ></ 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-k" > if </ span > (< span class = "pl-smi" > $DryRun </ 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" > Say < span class = "pl-k" >-</ span > Warning < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $message </ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > else </ 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" > < span class = "pl-k" > throw </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $message </ span >< span class = "pl-pds" >& quot ;</ span ></ span ></ 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" > }</ 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" > }</ 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" > </ 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-c" >< span class = "pl-c" > #</span>FeedCredential should start with "?", for it to be added to the end of the link.</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-num
</ 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" > < span class = "pl-k" > return </ span > < span class = "pl-smi" > $FeedCredential </ span ></ 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" >}</ 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-k" > function </ span > < span class = "pl-en" > Get-NormalizedQuality </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Quality </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-k" > if </ span > ([< span class = "pl-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-smi" > $Quality </ 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-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC307" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "307" style = "position:relative" > < span class = "pl-k" > switch </ span > (< span class = "pl-smi" > $Quality </ 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-k" >@</ span >(< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > daily < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > signed < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > validated < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > preview < span class = "pl-pds" >& quot ;</ span ></ span >) < span class = "pl-k" > -contains </ span > < span class = "pl-c1" > $_ </ span > } { < span class = "pl-k" > return </ span > < span class = "pl-smi" > $Quality < span class = "pl-smi" >. ToLowerInvariant </ span ></ 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-c" >< span class = "pl-c" > #</span>ga quality is available without specifying quality, so normalizing it to empty</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">$_</span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">"</span>ga<span class="pl-pds">"</span></span> } { <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC311" class="react-file-line html-div" data-testid="code-cell" data-line-number="311" style="position:relative"> <span class="pl-k">default</span> { <span class="pl-k">throw</span> <span class="pl-s"><span class="pl-pds">"</span>'<span class="pl-smi">$Quality</span>' is not a supported value for -Quality option. Supported values are: daily, signed, validated, preview, ga. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues.<span class="pl-pds">"</span></span> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC312" class="react-file-line html-div" data-testid="code-cell" data-line-number="312" style="position:relative"> }</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">
</ 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-k" > function </ span > < span class = "pl-en" > Get-NormalizedChannel </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Channel </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-k" > if </ span > ([< span class = "pl-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-smi" > $Channel </ 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-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" >
</ 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-k" > if </ span > (< span class = "pl-smi" > $Channel < span class = "pl-smi" >. Contains </ span ></ span >(< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Current < span class = "pl-pds" >& quot ;</ span ></ 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" > Say < span class = "pl-k" >-</ span > Warning < span class = "pl-s" >< span class = "pl-pds" >& #039;</span>Value "Current" is deprecated for -Channel option. Use "STS" instead.<span class="pl-pds">'</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC324" class="react-file-line html-div" data-testid="code-cell" data-line-number="324" style="position:relative"> }</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">
</ 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-k" > if </ span > (< span class = "pl-smi" > $Channel < span class = "pl-smi" >. StartsWith </ span ></ span >(< span class = "pl-s" >< span class = "pl-pds" >& #039;</span>release/<span class="pl-pds">'</span></span>)) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC327" class="react-file-line html-div" data-testid="code-cell" data-line-number="327" style="position:relative"> Say<span class="pl-k">-</span>Warning <span class="pl-s"><span class="pl-pds">'</span>Using branch name with -Channel option is no longer supported with newer releases. Use -Quality option with a channel in X.Y format instead, such as "-Channel 5.0 -Quality Daily."<span class="pl-pds">'</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC328" class="react-file-line html-div" data-testid="code-cell" data-line-number="328" style="position:relative"> }</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">
</ 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" > < span class = "pl-k" > switch </ span > (< span class = "pl-smi" > $Channel </ span >) {</ 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-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > lts < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > LTS < span class = "pl-pds" >& quot ;</ span ></ 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" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > sts < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > STS < span class = "pl-pds" >& quot ;</ span ></ 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" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > current < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > STS < span class = "pl-pds" >& quot ;</ span ></ 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-k" > default </ span > { < span class = "pl-k" > return </ span > < span class = "pl-smi" > $Channel < span class = "pl-smi" >. ToLowerInvariant </ span ></ 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" > }</ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-NormalizedProduct </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Runtime </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-k" > switch </ span > (< span class = "pl-smi" > $Runtime </ 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" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet-runtime < span class = "pl-pds" >& quot ;</ span ></ 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" > { < span class = "pl-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > aspnetcore < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > aspnetcore-runtime < span class = "pl-pds" >& quot ;</ span ></ span > }</ 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-c1" > $_ </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > windowsdesktop < span class = "pl-pds" >& quot ;</ span ></ span > } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > windowsdesktop-runtime < span class = "pl-pds" >& quot ;</ span ></ 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-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-c1" > $_ </ span >) } { < span class = "pl-k" > return </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet-sdk < span class = "pl-pds" >& quot ;</ span ></ 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-k" > default </ span > { < span class = "pl-k" > throw </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >& #039;<span class="pl-smi">$Runtime</span>' is not a supported value for -Runtime option, supported values are: dotnet, aspnetcore, windowsdesktop. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues.<span class="pl-pds">"</span></span> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC347" class="react-file-line html-div" data-testid="code-cell" data-line-number="347" style="position:relative"> }</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">}</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" >
</ 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-c" >< span class = "pl-c" > #</span> The version text returned from the feeds is a 1-line or 2-line string:</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-c"><span class="pl-c">#</span> For the SDK and the dotnet runtime (2 lines):</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-c"><span class="pl-c">#</span> Line 1: # commit_hash</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-c"><span class="pl-c">#</span> Line 2: # 4-part version</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-c"><span class="pl-c">#</span> For the aspnetcore runtime (1 line):</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"><span class="pl-c"><span class="pl-c">#</span> Line 1: # 4-part version</span></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-k">function</span> <span class="pl-en">Get-Version-From-LatestVersion-File-Content</span>([<span class="pl-k">string</span>]<span class="pl-smi">$VersionText</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"> Say<span class="pl-k">-</span>Invocation <span class="pl-c1">$MyInvocation</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">
</ 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-smi" > $Data </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" > -split </ span > < span class = "pl-smi" > $VersionText </ 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" >
</ 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-smi" > $VersionInfo </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" >@</ 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-smi" > CommitHash </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" >$</ span >(< span class = "pl-k" > if </ span > (< span class = "pl-smi" > $Data < span class = "pl-smi" >. Count </ span ></ span > < span class = "pl-k" > -gt </ span > < span class = "pl-c1" > 1 </ span >) { < span class = "pl-smi" > $Data </ 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 = "LC364" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "364" style = "position:relative" > < span class = "pl-smi" > Version </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $Data </ span >[< span class = "pl-c1" > -1 </ span >] < span class = "pl-c" >< span class = "pl-c" > #</span> last line is always the version number.</span></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"> }</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-k">return</span> <span class="pl-smi">$VersionInfo</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">}</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">
</ 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-k" > function </ span > < span class = "pl-en" > Load-Assembly </ span >([< span class = "pl-k" > string </ span >] < span class = "pl-smi" > $Assembly </ 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-k" > try </ 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" > Add-Type </ span > < span class = "pl-k" >-</ span > Assembly < span class = "pl-smi" > $Assembly </ span > < span class = "pl-k" >|</ span > < span class = "pl-c1" > Out-Null </ 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" > }</ 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-k" > catch </ 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-c" >< span class = "pl-c" > #</span> On Nano Server, Powershell Core Edition is used. Add-Type is unable to resolve base class assemblies because they are not GAC'd.</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-c"><span class="pl-c">#</span> Loading the base class assemblies is not unnecessary as the types will automatically get resolved.</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"> }</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">}</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-k" > function </ span > < span class = "pl-en" > GetHTTPResponse </ span >([< span class = "pl-k" > Uri </ span >] < span class = "pl-smi" > $Uri </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > bool </ span >]< span class = "pl-smi" > $HeaderOnly </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > bool </ span >]< span class = "pl-smi" > $DisableRedirect </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > bool </ span >]< span class = "pl-smi" > $DisableFeedCredential </ 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" > < span class = "pl-smi" > $cts </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > New-Object </ span > System . Threading . CancellationTokenSource </ 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" > < span class = "pl-smi" > $downloadScript </ span > < span class = "pl-k" >=</ span > {</ 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" >
</ 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-smi" > $HttpClient </ span > < span class = "pl-k" >=</ 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 = "LC385" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "385" style = "position:relative" >
</ 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-k" > try </ 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" >< span class = "pl-c" > #</span> HttpClient is used vs Invoke-WebRequest in order to support Nano Server which doesn't support the Invoke-WebRequest cmdlet.</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"> Load<span class="pl-k">-</span>Assembly <span class="pl-k">-</span>Assembly System.Net.Http</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">
</ 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-k" > if </ span > (< span class = "pl-k" > -not </ span > < span class = "pl-smi" > $ProxyAddress </ 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" > < span class = "pl-k" > try </ span > {</ 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" > < span class = "pl-c" >< span class = "pl-c" > #</span> Despite no proxy being explicitly specified, we may still be behind a default proxy</span></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-smi">$DefaultProxy</span> <span class="pl-k">=</span> [<span class="pl-k">System.Net.WebRequest</span>]::DefaultWebProxy;</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-k">if</span> (<span class="pl-smi">$DefaultProxy</span> <span class="pl-k">-and</span> (<span class="pl-k">-not</span> <span class="pl-smi">$DefaultProxy<span class="pl-smi">.IsBypassed</span></span>(<span class="pl-smi">$Uri</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-k">if</span> (<span class="pl-c1">$null</span> <span class="pl-k">-ne</span> <span class="pl-smi">$DefaultProxy<span class="pl-smi">.GetProxy</span></span>(<span class="pl-smi">$Uri</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-smi">$ProxyAddress</span> <span class="pl-k">=</span> <span class="pl-smi">$DefaultProxy<span class="pl-smi">.GetProxy</span></span>(<span class="pl-smi">$Uri</span>).OriginalString</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"> }</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-k">else</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-smi">$ProxyAddress</span> <span class="pl-k">=</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="LC400" class="react-file-line html-div" data-testid="code-cell" data-line-number="400" style="position:relative"> }</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" s
</ 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-smi" > $HttpClientHandler </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > New-Object </ span > System . Net . Http . HttpClientHandler </ 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-k" > if </ span > (< span class = "pl-smi" > $ProxyAddress </ 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-smi" > $HttpClientHandler < span class = "pl-smi" >. Proxy </ span ></ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > New-Object </ span > System . Net . WebProxy < span class = "pl-k" >-</ span > Property < span class = "pl-k" >@</ 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-smi" > Address </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $ProxyAddress </ 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-smi" > UseDefaultCredentials </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $ProxyUseDefaultCredentials </ 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-smi" > BypassList </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $ProxyBypassList </ 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" > }</ 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" > } </ 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-k" > if </ span > (< span class = "pl-smi" > $DisableRedirect </ 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-smi" > $HttpClientHandler < span class = "pl-smi" >. AllowAutoRedirect </ span ></ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > $false </ 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" > }</ 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" > < span class = "pl-smi" > $HttpClient </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > New-Object </ span > System . Net . Http . HttpClient < span class = "pl-k" >-</ span > ArgumentLi
</ 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-c" >< span class = "pl-c" > #</span> Default timeout for HttpClient is 100s. For a 50 MB download this assumes 500 KB/s average, any less will time out</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-c"><span class="pl-c">#</span> Defaulting to 20 minutes allows it to work over much slower connections.</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-smi">$HttpClient<span class="pl-smi">.Timeout</span></span> <span class="pl-k">=</span> <span class="pl-c1">New-TimeSpan</span> <span class="pl-k">-</span>Seconds <span class="pl-smi">$DownloadTimeout</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">
</ 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-k" > if </ span > (< span class = "pl-smi" > $HeaderOnly </ 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-smi" > $completionOption </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . Net . Http . HttpCompletionOption </ span >]:: ResponseHeadersRead </ 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" > }</ 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-k" > else </ 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-smi" > $completionOption </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . Net . Http . HttpCompletionOption </ span >]:: ResponseContentRead </ 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" > }</ 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" >
</ 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-k" > if </ span > (< span class = "pl-smi" > $DisableFeedCredential </ 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-smi" > $UriWithCredential </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $Uri </ 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" > }</ 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" > < 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 = "LC440" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "440" style = "position:relative" > < span class = "pl-smi" > $UriWithCredential </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" >${ Uri }${ FeedCredential }</ span >< span class = "pl-pds" >& quot ;</ span ></ span ></ 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" > }</ 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" >
</ 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-smi" > $Task </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $HttpClient < span class = "pl-smi" >. GetAsync </ span ></ span >(< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $UriWithCredential </ span >< span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-smi" > $completionOption </ span >). ConfigureAwait (< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > false < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $Response </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $Task < span class = "pl-smi" >. GetAwaiter </ span ></ span >(). GetResult ();</ 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" >
</ 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-k" > if </ span > ((< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-smi" > $Response </ span >) < span class = "pl-k" > -or </ span > ((< span class = "pl-k" > -not </ span > < span class = "pl-smi" > $HeaderOnly </ span >) < span class = "pl-k" > -and </ span > (< span class = "pl-k" > -not </ span > (< span class = "pl-smi" > $Response < span class = "pl-smi" >. IsSuccessStatusCode </ span ></ 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" > < span class = "pl-c" >< span class = "pl-c" > #</span> The feed credential is potentially sensitive info. Do not log FeedCredential to console output.</span></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"> <span class="pl-smi">$DownloadException</span> <span class="pl-k">=</span> [<span class="pl-k">System.Exception</span>] <span class="pl-s"><span class="pl-pds">"</span>Unable to download <span class="pl-smi">$Uri</span>.<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="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" > < span class = "pl-k" > if </ span > (< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $Response </ span >) {</ 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-smi" > $DownloadException < span class = "pl-smi" >. Data </ span ></ span >[< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > StatusCode < span class = "pl-pds" >& quot ;</ span ></ span >] < span class = "pl-k" >=</ span > [< span class = "pl-k" > int </ span >] < span class = "pl-smi" > $Response < span class = "pl-smi" >. StatusCode </ span ></ 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-smi" > $DownloadException < span class = "pl-smi" >. Data </ span ></ span >[< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > ErrorMessage < span class = "pl-pds" >& quot ;</ span ></ span >] < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Unable to download < span class = "pl-smi" > $Uri </ span >. Returned HTTP status code : < span class = "pl-pds" >& quot ;</ span ></ span > < span class = "pl-k" >+</ span > < span class = "pl-smi" > $DownloadException < span class = "pl-smi" >. Data </ span ></ span >[< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > StatusCode < span class = "pl-pds" >& quot ;</ span ></ 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" >
</ 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-k" > if </ span > (< span class = "pl-c1" > 404 </ span > < span class = "pl-k" > -eq </ span > [< span class = "pl-k" > int </ span >] < span class = "pl-smi" > $Response < span class = "pl-smi" >. StatusCode </ span ></ 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-smi" > $cts < span class = "pl-smi" >. Cancel </ span ></ 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" > }</ 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" > }</ 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" >
</ 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" > throw </ span > < span class = "pl-smi" > $DownloadException </ 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" > }</ 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" > return </ span > < span class = "pl-smi" > $Response </ 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" > }</ 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" > < span class = "pl-k" > catch </ span > [< span class = "pl-k" > System . Net . Http . HttpRequestException </ span >] {</ 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-smi" > $DownloadException </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . Exception </ span >] < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Unable to download < span class = "pl-smi" > $Uri </ span >.< span class = "pl-pds" >& quot ;</ span ></ 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" >
</ 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-c" >< span class = "pl-c" > #</span> Pick up the exception message and inner exceptions' messages if they exist</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-smi">$CurrentException</span> <span class="pl-k">=</span> <span class="pl-c1">$PSItem<span class="pl-smi">.Exception</span></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"> <span class="pl-smi">$ErrorMsg</span> <span class="pl-k">=</span> <span class="pl-smi">$CurrentException<span class="pl-smi">.Message</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">`r`n</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC470" class="react-file-line html-div" data-testid="code-cell" data-line-number="470" style="position:relative"> <span class="pl-k">while</span> (<span class="pl-smi">$CurrentException<span class="pl-smi">.InnerException</span></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"> <span class="pl-smi">$CurrentException</span> <span class="pl-k">=</span> <span class="pl-smi">$CurrentException<span class="pl-smi">.InnerException</span></span></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"> <span class="pl-smi">$ErrorMsg</span> <span class="pl-k">+=</span> <span class="pl-smi">$CurrentException<span class="pl-smi">.Message</span></span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">`r`n</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="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">
</ 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-c" >< span class = "pl-c" > #</span> Check if there is an issue concerning TLS.</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"> <span class="pl-k">if</span> (<span class="pl-smi">$ErrorMsg</span> <span class="pl-k">-like</span> <span class="pl-s"><span class="pl-pds">"</span>*SSL/TLS*<span class="pl-pds">"</span></span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC477" class="react-file-line html-div" data-testid="code-cell" data-line-number="477" style="position:relative"> <span class="pl-smi">$ErrorMsg</span> <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">"</span>Ensure that TLS 1.2 or higher is enabled to use this script.<span class="pl-cce">`r`n</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC478" class="react-file-line html-div" data-testid="code-cell" data-line-number="478" style="position:relative"> }</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-smi" > $DownloadException < span class = "pl-smi" >. Data </ span ></ span >[< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > ErrorMessage < span class = "pl-pds" >& quot ;</ span ></ span >] < span class = "pl-k" >=</ span > < span class = "pl-smi" > $ErrorMsg </ 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-k" > throw </ span > < span class = "pl-smi" > $DownloadException </ 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" > }</ 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" > < span class = "pl-k" > finally </ span > {</ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $HttpClient </ span >) {</ 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-smi" > $HttpClient < span class = "pl-smi" >. Dispose </ span ></ 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" > }</ 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" > }</ 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" > }</ 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" >
</ 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" > < span class = "pl-k" > try </ span > {</ 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" > return </ span > < span class = "pl-c1" > Invoke-With </ span >< span class = "pl-k" >-</ span > Retry < span class = "pl-smi" > $downloadScript </ span > < span class = "pl-smi" > $cts < span class = "pl-smi" >. Token </ span ></ 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" > }</ 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" > finally </ 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-k" > if </ span > (< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $cts </ 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" > < span class = "pl-smi" > $cts < span class = "pl-smi" >. Dispose </ span ></ span >()</ 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" > }</ 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" > }</ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-Version -From-LatestVersion -File </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Channel </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-smi" > $VersionFileUrl </ span > < span class = "pl-k" >=</ 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 = "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-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $VersionFileUrl </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ Runtime /< span class = "pl-smi" > $Channel </ span >/ latest . version < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > < span class = "pl-k" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > aspnetcore < span class = "pl-pds" >& quot ;</ span ></ span >) {</ 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-smi" > $VersionFileUrl </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ aspnetcore / Runtime /< span class = "pl-smi" > $Channel </ span >/ latest . version < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > windowsdesktop < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $VersionFileUrl </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ WindowsDesktop /< span class = "pl-smi" > $Channel </ span >/ latest . version < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > elseif </ span > (< span class = "pl
</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 "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>Constructed latest.version URL: <span class=" pl-smi "> $VersionFileUrl </span><span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC521 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 521 " style=" position : relative ">
</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-k ">try</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 "> <span class=" pl-smi "> $Response </span> <span class=" pl-k ">=</span> GetHTTPResponse <span class=" pl-k ">-</span>Uri <span class=" pl-smi "> $VersionFileUrl </span></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 "> }</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 ">catch</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 "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>Failed to download latest.version file.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC527 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 527 " style=" position : relative "> <span class=" pl-k ">throw</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-smi "> $StringContent </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $Response <span class=" pl-smi ">.Content.ReadAsStringAsync</span></span>().Result</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 ">
</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-k ">switch</span> (<span class=" pl-smi "> $Response <span class=" pl-smi ">.Content.Headers.ContentType</span></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-c1 "> $_ </span> <span class=" pl-k ">-eq</span> <span class=" pl-s "><span class=" pl-pds ">"</span>application/octet-stream<span class=" pl-pds ">"</span></span>) } { <span class=" pl-smi "> $VersionText </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $StringContent </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-c1 "> $_ </span> <span class=" pl-k ">-eq</span> <span class=" pl-s "><span class=" pl-pds ">"</span>text/plain<span class=" pl-pds ">"</span></span>) } { <span class=" pl-smi "> $VersionText </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $StringContent </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-c1 "> $_ </span> <span class=" pl-k ">-eq</span> <span class=" pl-s "><span class=" pl-pds ">"</span>text/plain; charset=UTF-8<span class=" pl-pds ">"</span></span>) } { <span class=" pl-smi "> $VersionText </span> <span class=" pl-k ">=</span> <span class=" pl-smi "> $StringContent </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-k ">default</span> { <span class=" pl-k ">throw</span> <span class=" pl-s "><span class=" pl-pds ">"</span><span class=" pl-cce "> `` </span><span class=" pl-smi "> $Response </span>.Content.Headers.ContentType<span class=" pl-cce "> `` </span> is an unknown .version file content type.<span class=" pl-pds ">"</span></span> }</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC536 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 536 " style=" position : relative "> }</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 ">
</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-smi "> $VersionInfo </span> <span class=" pl-k ">=</span> <span class=" pl-c1 ">Get-Version</span><span class=" pl-k ">-</span>From<span class=" pl-k ">-</span>LatestVersion<span class=" pl-k ">-</span>File<span class=" pl-k ">-</span>Content <span class=" pl-smi "> $VersionText </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 "> <span class=" pl-k ">return</span> <span class=" pl-smi "> $VersionInfo </span></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 ">}</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 ">
</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 "><span class=" pl-k ">function</span> <span class=" pl-en ">Parse-Jsonfile-For-Version</span>([<span class=" pl-k ">string</span>]<span class=" pl-smi "> $JSonFile </span>) {</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 "> Say<span class=" pl-k ">-</span>Invocation <span class=" pl-c1 "> $MyInvocation </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 ">
</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 ">If</span> (<span class=" pl-k ">-Not</span> (<span class=" pl-c1 ">Test-Path</span> <span class=" pl-smi "> $JSonFile </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 ">throw</span> <span class=" pl-s "><span class=" pl-pds ">"</span>Unable to find '<span class=" pl-smi "> $JSonFile </span>'<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC548 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 548 " style=" position : relative "> }</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 "> <span class=" pl-k ">try</span> {</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 "> <span class=" pl-smi "> $JSonContent </span> <span class=" pl-k ">=</span> <span class=" pl-c1 ">Get-Content</span>(<span class=" pl-smi "> $JSonFile </span>) <span class=" pl-k ">-</span>Raw <span class=" pl-k ">|</span> <span class=" pl-c1 ">ConvertFrom-Json</span> <span class=" pl-k ">|</span> <span class=" pl-c1 ">Select-Object</span> <span class=" pl-k ">-</span>expand <span class=" pl-s "><span class=" pl-pds ">"</span>sdk<span class=" pl-pds ">"</span></span> <span class=" pl-k ">-</span>ErrorAction SilentlyContinue</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 "> }</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-k ">catch</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 "> Say<span class=" pl-k ">-</span>Error <span class=" pl-s "><span class=" pl-pds ">"</span>Json file unreadable: '<span class=" pl-smi "> $JSonFile </span>'<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC554 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 554 " style=" position : relative "> <span class=" pl-k ">throw</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 "> }</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 ">if</span> (<span class=" pl-smi "> $JSonContent </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 ">try</span> {</div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC
</ 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" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Get-Specific -Version-From-Version </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Channel </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $Version </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $JSonFile </ span >) {</ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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" > if </ span > (< span class = "pl-k" > -not </ span > < span class = "pl-smi" > $JSonFile </ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $Version < span class = "pl-smi" >. ToLowerInvariant </ span ></ span >() < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > latest < span class = "pl-pds" >& quot ;</ span ></ span >) {</ 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" > < span class = "pl-smi" > $LatestVersionInfo </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Version </ span >< span class = "pl-k" >-</ span > From < span class = "pl-k" >-</ span > LatestVersion < span class = "pl-k" >-</ span > File < span class = "pl-k" >-</ span > AzureFeed < span class = "pl-smi" > $AzureFeed </ span > < span class = "pl-k" >-</ span > Channel < span class = "pl-smi" > $Channel </ span ></ 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" > < span class = "pl-k" > return </ span > < span class = "pl-smi" > $LatestVersionInfo < span class = "pl-smi" >. Version </ span ></ span ></ 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" > }</ 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" > < 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 = "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-smi" > $Version </ 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" > < 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 = "LC593" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "593" style = "position:relative" > < span class = "pl-k" > return </ span > Parse < span class = "pl-k" >-</ span > Jsonfile < span class = "pl-k" >-</ span > For < span class = "pl-k" >-</ span > Version < span class = "pl-smi" > $JSonFile </ span ></ 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" > }</ 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 -numb
</ 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-k" > function </ span > < span class = "pl-en" > Get-Download -Link </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $CLIArchitecture </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ span ></ 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" >
</ 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-c" >< span class = "pl-c" > #</span> If anything fails in this lookup it will default to $SpecificVersion</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-smi">$SpecificProductVersion</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Product</span><span class="pl-k">-</span>Version <span class="pl-k">-</span>AzureFeed <span class="pl-smi">$AzureFeed</span> <span class="pl-k">-</span>SpecificVersion <span class="pl-smi">$SpecificVersion</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">
</ 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-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $PayloadURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ Runtime /< span class = "pl-smi" > $SpecificVersion </ span >/ dotnet-runtime -< span class = "pl-smi" > $SpecificProductVersion </ span > -win -< span class = "pl-smi" > $CLIArchitecture </ span >. zip < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > aspnetcore < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $PayloadURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ aspnetcore / Runtime /< span class = "pl-smi" > $SpecificVersion </ span >/ aspnetcore-runtime -< span class = "pl-smi" > $SpecificProductVersion </ span > -win -< span class = "pl-smi" > $CLIArchitecture </ span >. zip < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > windowsdesktop < span class = "pl-pds" >& quot ;</ span ></ 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-c" >< span class = "pl-c" > #</span> The windows desktop runtime is part of the core runtime layout prior to 5.0</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-smi">$PayloadURL</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$AzureFeed</span>/Runtime/<span class="pl-smi">$SpecificVersion</span>/windowsdesktop-runtime-<span class="pl-smi">$SpecificProductVersion</span>-win-<span class="pl-smi">$CLIArchitecture</span>.zip<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC612" class="react-file-line htm
</ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Constructed primary named payload URL : < span class = "pl-smi" > $PayloadURL </ span >< span class = "pl-pds" >& quot ;</ span ></ span ></ 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" > < span class = "pl-k" > return </ span > < span class = "pl-smi" > $PayloadURL </ span >< span class = "pl-k" >,</ span > < span class = "pl-smi" > $SpecificProductVersion </ span ></ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-LegacyDownload -Link </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $CLIArchitecture </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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" > if </ span > (< span class = "pl-k" > -not </ span > < span class = "pl-smi" > $Runtime </ span >) {</ div ></ div ></ div >< div class = "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" > $PayloadURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ Sdk /< span class = "pl-smi" > $SpecificVersion </ span >/ dotnet-dev -win -< span class = "pl-smi" > $CLIArchitecture </ span >.< span class = "pl-smi" > $SpecificVersion </ span >. zip < span class = "pl-pds" >& quot ;</ span ></ span ></ div ></ div ></ div >< div class = "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" > }</ div ></ div ></ div >< div class = "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" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet < span class = "pl-pds" >& quot ;</ span ></ span >) {</ div ></ div ></ div >< div class = "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" > $PayloadURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ Runtime /< span class = "pl-smi" > $SpecificVersion </ span >/ dotnet-win -< span class = "pl-smi" > $CLIArchitecture </ span >.< span class = "pl-smi" > $SpecificVersion </ span >. zip < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > < 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 = "LC641" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "641" style = "position:relative" > < span class = "pl-k" > return </ 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 = "LC642" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "642" style = "position:relative" > }</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC643" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "643" style = "position:relative" >
</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC644" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "644" style = "position:relative" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Constructed legacy named payload URL : < span class = "pl-smi" > $PayloadURL </ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > < span class = "pl-k" > return </ span > < span class = "pl-smi" > $PayloadURL </ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC647" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "647" style = "position:relative" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-Product -Version </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $PackageDownloadLink </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" > < span class = "pl-c" >< span class = "pl-c" > #</span> Try to get the version number, using the productVersion.txt file located next to the installer file.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC653" class="react-file-line html-div" data-testid="code-cell" data-line-number="653" style="position:relative"> <span class="pl-smi">$ProductVersionTxtURLs</span> <span class="pl-k">=</span> (<span class="pl-c1">Get-Product</span><span class="pl-k">-</span>Version<span class="pl-k">-</span>Url <span class="pl-smi">$AzureFeed</span> <span class="pl-smi">$SpecificVersion</span> <span class="pl-smi">$PackageDownloadLink</span> <span class="pl-k">-</span>Flattened <span class="pl-c1">$true</span>)<span class="pl-k">,</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">Get-Product</span><span class="pl-k">-</span>Version<span class="pl-k">-</span>Url <span class="pl-smi">$AzureFeed</span> <span class="pl-smi">$SpecificVersion</span> <span class="pl-smi">$PackageDownloadLink</span> <span class="pl-k">-</span>Flattened <span class="pl-c1">$false</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"> </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-k">Foreach</span> (<span class="pl-smi">$ProductVersionTxtURL</span> <span class="pl-k">in</span> <span class="pl-smi">$ProductVersionTxtURLs</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"> Say<span class="pl-k">-</span>Verbose <span class="pl-s"><span class="pl-pds">"</span>Checking for the existence of <span class="pl-smi">$ProductVersionTxtURL</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="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-k" > try </ 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-smi" > $productVersionResponse </ span > < span class = "pl-k" >=</ span > GetHTTPResponse (< span class = "pl-smi" > $productVersionTxtUrl </ 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" >
</ 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-k" > if </ span > (< span class = "pl-smi" > $productVersionResponse < span class = "pl-smi" >. StatusCode </ span ></ span > < span class = "pl-k" > -eq </ span > < span class = "pl-c1" > 200 </ 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" > < span class = "pl-smi" > $productVersion </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $productVersionResponse < span class = "pl-smi" >. Content . ReadAsStringAsync </ span ></ span >(). Result . Trim ()</ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $productVersion </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $SpecificVersion </ span >) {</ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Using alternate version < span class = "pl-smi" > $productVersion </ span > found in < span class = "pl-smi" > $ProductVersionTxtURL </ span >< span class = "pl-pds" >& quot ;</ span ></ span ></ 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" > < span class = "pl-k" > return </ span > < span class = "pl-smi" > $productVersion </ span ></ 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" > }</ 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-k" > else </ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Got StatusCode < span class = "pl-k" >< span class = "pl-pse" >$</ span ></ span >< span class = "pl-pse" >(</ span >< span class = "pl-smi" > $productVersionResponse < span class = "pl-smi" >. StatusCode </ span ></ span >< span class = "pl-pse" >)</ span > when trying to get productVersion . txt at < span class = "pl-smi" > $productVersionTxtUrl </ span >.< span class = "pl-pds" >& quot ;</ span ></ 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" > } </ 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 -
</ 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-c" >< span class = "pl-c" > #</span> Getting the version number with productVersion.txt has failed. Try parsing the download link for a version number.</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-k">if</span> ([<span class="pl-k">string</span>]::IsNullOrEmpty(<span class="pl-smi">$PackageDownloadLink</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"> Say<span class="pl-k">-</span>Verbose <span class="pl-s"><span class="pl-pds">"</span>Using the default value '<span class="pl-smi">$SpecificVersion</span>' as the product version.<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC681" class="react-file-line html-div" data-testid="code-cell" data-line-number="681" style="position:relative"> <span class="pl-k">return</span> <span class="pl-smi">$SpecificVersion</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"> }</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">
</ 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-smi" > $productVersion </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-ProductVersionFromDownloadLink </ span > < span class = "pl-smi" > $PackageDownloadLink </ span > < span class = "pl-smi" > $SpecificVersion </ 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-k" > return </ span > < span class = "pl-smi" > $productVersion </ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-Product -Version-Url </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $AzureFeed </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $PackageDownloadLink </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > bool </ span >]< span class = "pl-smi" > $Flattened </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-smi" > $majorVersion </ span > < span class = "pl-k" >=</ 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 = "LC692" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "692" style = "position:relative" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $SpecificVersion </ span > < span class = "pl-k" > -match </ span > < span class = "pl-s" >< span class = "pl-pds" >& #039;</span>^(\d+)\.(.*)<span class="pl-pds">'</span></span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC693" class="react-file-line html-div" data-testid="code-cell" data-line-number="693" style="position:relative"> <span class="pl-smi">$majorVersion</span> <span class="pl-k">=</span> <span class="pl-c1">$Matches</span>[<span class="pl-c1">1</span>] <span class="pl-k">-as</span> [<span class="pl-k">int</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"> }</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" > < span class = "pl-smi" > $pvFileName </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& #039;</span>productVersion.txt<span class="pl-pds">'</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC697" class="react-file-line html-div" data-testid="code-cell" data-line-number="697" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-smi">$Flattened</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-k">if</span> (<span class="pl-k">-not</span> <span class="pl-smi">$Runtime</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"> <span class="pl-smi">$pvFileName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>sdk-productVersion.txt<span class="pl-pds">'</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC700" class="react-file-line html-div" data-testid="code-cell" data-line-number="700" style="position:relative"> }</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-k">elseif</span> (<span class="pl-smi">$Runtime</span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">"</span>dotnet<span class="pl-pds">"</span></span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC702" class="react-file-line html-div" data-testid="code-cell" data-line-number="702" style="position:relative"> <span class="pl-smi">$pvFileName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>runtime-productVersion.txt<span class="pl-pds">'</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC703" class="react-file-line html-div" data-testid="code-cell" data-line-number="703" style="position:relative"> }</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-k">else</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-smi">$pvFileName</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$Runtime</span>-productVersion.txt<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC706" class="react-file-line html-div" data-testid="code-cell" data-line-number="706" style="position:relative"> }</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"> }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC708" class="react-file-line htm
</ 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-k" > if </ span > ([< span class = "pl-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-smi" > $PackageDownloadLink </ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > dotnet < span class = "pl-pds" >& quot ;</ span ></ span >) {</ 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-smi" > $ProductVersionTxtURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ Runtime /< span class = "pl-smi" > $SpecificVersion </ span >/< span class = "pl-smi" > $pvFileName </ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > aspnetcore < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $ProductVersionTxtURL </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $AzureFeed </ span >/ aspnetcore / Runtime /< span class = "pl-smi" > $SpecificVersion </ span >/< span class = "pl-smi" > $pvFileName </ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > elseif </ span > (< span class = "pl-smi" > $Runtime </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > windowsdesktop < span class = "pl-pds" >& quot ;</ span ></ 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-c" >< span class = "pl-c" > #</span> The windows desktop runtime is part of the core runtime layout prior to 5.0</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-smi">$ProductVersionTxtURL</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$AzureFeed</span>/Runtime/<span class="pl-smi">$SpecificVersion</span>/<span class="pl-smi">$pvFileName</span><span class
</ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Constructed productVersion link : < span class = "pl-smi" > $ProductVersionTxtURL </ span >< span class = "pl-pds" >& quot ;</ span ></ 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" >
</ 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-k" > return </ span > < span class = "pl-smi" > $ProductVersionTxtURL </ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-ProductVersionFromDownloadLink </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $PackageDownloadLink </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" > < span class = "pl-c" >< span class = "pl-c" > #</span>product specific version follows the product name</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC743" class="react-file-line html-div" data-testid="code-cell" data-line-number="743" style="position:relative"> <span class="pl-c"><span class="pl-c">#</span>for filename 'dotnet-sdk-3.1.404-win-x64.zip': the product version is 3.1.400</span></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-smi">$filename</span> <span class="pl-k">=</span> <span class="pl-smi">$PackageDownloadLink<span class="pl-smi">.Substring</span></span>(<span class="pl-smi">$PackageDownloadLink<span class="pl-smi">.LastIndexOf</span></span>(<span class="pl-s"><span class="pl-pds">"</span>/<span class="pl-pds">"</span></span>) <span class="pl-k">+</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="LC745" class="react-file-line html-div" data-testid="code-cell" data-line-number="745" style="position:relative"> <span class="pl-smi">$filenameParts</span> <span class="pl-k">=</span> <span class="pl-smi">$filename<span class="pl-smi">.Split</span></span>(<span class="pl-s"><span class="pl-pds">'</span>-<span class="pl-pds">'</span></span>)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC746" class="react-file-line html-div" data-testid="code-cell" data-line-number="746" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-smi">$filenameParts<span class="pl-smi">.Length</span></span> <span class="pl-k">-gt</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="LC747" class="react-file-line html-div" data-testid="code-cell" data-line-number="747" style="position:relative"> <span class="pl-smi">$productVersion</span> <span class="pl-k">=</span> <span class="pl-smi">$filenameParts</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="LC748" class="react-file-line html-div" data-testid="code-cell" data-line-number="748" style="position:relative"> Say<span class="pl-k">-</span>Verbose <span class="pl-s"><span class="pl-pds">"</span>Extracted product version '<span class="pl-smi">$productVersion</span>' from download link '<span class="pl-smi">$PackageDownloadLink</span>'.<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC749" class="react-file-line html-div" data-testid="code-cell" data-line-number="749" style="position:relative"> }</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"> <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="LC751" class="react-file-line html-div" data-testid="code-cell" data-line-number="751" style="position:relative"> Say<span class="pl-k">-</span>Verbose <span class="pl-s"><span class="pl-pds">"</span>Using the default value '<span class="pl-smi">$SpecificVersion</span>' as the product version.<span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-lin
</ 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-k" > function </ span > < span class = "pl-en" > Get-User -Share-Path </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" > < span class = "pl-smi" > $InstallRoot </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > DOTNET_INSTALL_DIR </ span ></ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-k" >!</ span >< span class = "pl-smi" > $InstallRoot </ span >) {</ 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-smi" > $InstallRoot </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > LocalAppData </ span >\ Microsoft \ dotnet < span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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" > < span class = "pl-k" > elseif </ span > (< span class = "pl-smi" > $InstallRoot </ span > < span class = "pl-k" > -like </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > ProgramFiles </ span >\ dotnet \?*< span class = "pl-pds" >& quot ;</ span ></ span >) {</ 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" > Say < span class = "pl-k" >-</ span > Warning < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > The install root specified by the environment variable DOTNET_INSTALL_DIR points to the sub folder of < span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > ProgramFiles </ span >\ dotnet which is the default dotnet install root using . NET SDK installer . It is better to keep aligned with . NET SDK installer .< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > return </ span > < span class = "pl-smi" > $InstallRoot </ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Resolve-Installation -Path </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $InstallDir </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-smi" > $InstallDir </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >& lt ; auto & gt ;< span class = "pl-pds" >& quot ;</ span ></ span >) {</ 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-k" > return </ span > < span class = "pl-c1" > Get-User </ span >< span class = "pl-k" >-</ span > Share < span class = "pl-k" >-</ span > Path </ 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" > }</ 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-k" > return </ span > < span class = "pl-smi" > $InstallDir </ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Test-User -Write-Access </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $InstallDir </ 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-k" > try </ 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" > < span class = "pl-smi" > $tempFileName </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > guid </ span >]:: NewGuid (). ToString ()</ 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" > < span class = "pl-smi" > $tempFilePath </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $InstallDir </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-smi" > $tempFileName </ span ></ 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-c1" > New-Item </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $tempFilePath </ span > < span class = "pl-k" >-</ span > ItemType File < span class = "pl-k" >-</ span > Force </ 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-c1" > Remove-Item </ span > < span class = "pl-smi" > $tempFilePath </ span > < span class = "pl-k" >-</ span > Force </ 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" > < span class = "pl-k" > return </ span > < span class = "pl-c1" > $true </ span ></ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC786" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "786" style = "position:relative" > }</ 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-k" > catch </ 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-k" > return </ span > < span class = "pl-c1" > $false </ 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" > }</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Is-Dotnet -Package-Installed </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $InstallRoot </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $RelativePathToPackage </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $SpecificVersion </ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-smi" > $DotnetPackagePath </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $InstallRoot </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-smi" > $RelativePathToPackage </ span > < span class = "pl-k" >|</ span > < span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-smi" > $SpecificVersion </ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Is-Dotnet -Package-Installed: DotnetPackagePath =< span class = "pl-smi" > $DotnetPackagePath </ span >< span class = "pl-pds" >& quot ;</ span ></ 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-k" > return </ span > < span class = "pl-c1" > Test-Path </ span > < span class = "pl-smi" > $DotnetPackagePath </ span > < span class = "pl-k" >-</ span > PathType Container </ 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" >}</ 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" >
</ 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-k" > function </ span > < span class = "pl-en" > Get-Absolute -Path </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $RelativeOrAbsolutePath </ span >) {</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC801" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "801" style = "position:relative" > < span class = "pl-c" >< span class = "pl-c" > #</span> Too much spam</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-c"><span class="pl-c">#</span> Say-Invocation $MyInvocation</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">
</ 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" > < span class = "pl-k" > return </ span > < span class = "pl-c1" > $ExecutionContext < span class = "pl-smi" >. SessionState . Path . GetUnresolvedProviderPathFromPSPath </ span ></ span >(< span class = "pl-smi" > $RelativeOrAbsolutePath </ span >)</ 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" >}</ 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" >
</ 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" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Get-Path -Prefix-With-Version </ span >(< span class = "pl-smi" > $path </ span >) {</ 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-c" >< span class = "pl-c" > #</span> example path with regex: shared/1.0.0-beta-12345/somepath</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-smi">$match</span> <span class="pl-k">=</span> [<span class="pl-k">regex</span>]::match(<span class="pl-smi">$path</span><span class="pl-k">,</span> <span class="pl-s"><span class="pl-pds">"</span>/\d+\.\d+[^/]+/<span class="pl-pds">"</span></span>)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC810" class="react-file-line html-div" data-testid="code-cell" data-line-number="810" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-smi">$match<span class="pl-smi">.Success</span></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-k">return</span> <span class="pl-smi">$entry<span class="pl-smi">.FullName.Substring</span></span>(<span class="pl-c1">0</span><span class="pl-k">,</span> <span class="pl-smi">$match<span class="pl-smi">.Index</span></span> <span class="pl-k">+</span> <span class="pl-smi">$match<span class="pl-smi">.Length</span></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"> }</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">
</ 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-k" > return </ 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 = "LC815" class = "react-file-line html-div" data-testid = "code-cell" data-line -number = "815" style = "position:relative" >}</ 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" >< span class = "pl-k" > function </ span > < span class = "pl-en" > Get-List -Of-Directories -And -Versions-To-Unpack-From-Dotnet-Package </ span >([< span class = "pl-k" > System . IO . Compression . ZipArchive </ span >]< span class = "pl-smi" > $Zip </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $OutPath </ span >) {</ 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" > Say < span class = "pl-k" >-</ span > Invocation < span class = "pl-c1" > $MyInvocation </ 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" >
</ 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-smi" > $ret </ span > < span class = "pl-k" >=</ span > < span class = "pl-k" >@</ 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-k" > foreach </ span > (< span class = "pl-smi" > $entry </ span > < span class = "pl-k" > in </ span > < span class = "pl-smi" > $Zip < span class = "pl-smi" >. Entries </ span ></ 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-smi" > $dir </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Path </ span >< span class = "pl-k" >-</ span > Prefix < span class = "pl-k" >-</ span > With < span class = "pl-k" >-</ span > Version < span class = "pl-smi" > $entry < span class = "pl-smi" >. FullName </ span ></ 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-c1" > $null </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $dir </ 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-smi" > $path </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Absolute </ span >< span class = "pl-k" >-</ span > Path < span class = "pl-k" >$</ span >(< span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $OutPath </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-smi" > $dir </ 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" > if </ span > (< span class = "pl-k" > -Not </ span > (< span class = "pl-c1" > Test-Path </ span > < span class = "pl-smi" > $path </ span > < span class = "pl-k" >-</ span > PathType Container )) {</ 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-smi" > $ret </ span > < span class = "pl-k" >+=</ span > < span class = "pl-smi" > $dir </ 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" > }</ 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" > }</ 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" >
</ 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" > < span class = "pl-smi" > $ret </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $ret </ span > < span class = "pl-k" >|</ span > < span class = "pl-c1" > Sort-Object </ span > < span class = "pl-k" >|</ span > < span class = "pl-c1" > Get-Unique </ span ></ 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" >
</ 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-smi" > $values </ span > < span class = "pl-k" >=</ span > (< span class = "pl-smi" > $ret </ span > < span class = "pl-k" >|</ span > < span class = "pl-k" > foreach </ span > { < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-c1" > $_ </ span >< span class = "pl-pds" >& quot ;</ span ></ span > }) < span class = "pl-k" > -join </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >;< span class = "pl-pds" >& quot ;</ span ></ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Directories to unpack : < span class = "pl-smi" > $values </ span >< span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $ret </ 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-c" >< span class = "pl-c" > #</span> Example zip content and extraction algorithm:</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-c"><span class="pl-c">#</span> Rule: files if extracted are always being extracted to the same relative path locally</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"><span class="pl-c"><span class="pl-c">#</span> .\</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC842" class="react-file-line html-div" data-testid="code-cell" data-line-number="842" style="position:relative"><span class="pl-c"><span class="pl-c">#</span> a.exe # file does not exist locally, extract</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"><span class="pl-c"><span class="pl-c">#</span> b.dll # file exists locally, override only if $OverrideFiles set</span></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-c"><span class="pl-c">#</span> aaa\ # same rules as for files</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-c"><span class="pl-c">#</span> ...</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC846" class="react-file-line html-div" data-testid="code-cell" data-line-number="846" style="position:relative"><span class="pl-c"><span class="pl-c">#</span> abc\1.0.0\ # directory contains version and exists locally</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-c"><span class="pl-c">#</span> ... # do not extract content under versioned part</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"><span class="pl-c"><span class="pl-c">#</span> abc\asd\ # same rules as for files</span></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"><span class="pl-c"><span class="pl-c">#</span> ...</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC850" class="react-file-line html-div" data-testid="code-cell" data-line-number="850" style="position:relative"><span class="pl-c"><span class="pl-c">#</span> def\ghi\1.0.1\ # directory contains version and does not exist locally</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" styl
</ 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" > Load < span class = "pl-k" >-</ span > Assembly < span class = "pl-k" >-</ span > Assembly System . IO . Compression . FileSystem </ 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-c1" > Set-Variable </ span > < span class = "pl-k" >-</ span > Name Zip </ 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-k" > try </ 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-smi" > $Zip </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . IO . Compression . ZipFile </ span >]:: OpenRead (< span class = "pl-smi" > $ZipPath </ 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" >
</ 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-smi" > $DirectoriesToUnpack </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-List </ span >< span class = "pl-k" >-</ span > Of < span class = "pl-k" >-</ span > Directories < span class = "pl-k" >-</ span > And < span class = "pl-k" >-</ span > Versions < span class = "pl-k" >-</ span > To < span class = "pl-k" >-</ span > Unpack < span class = "pl-k" >-</ span > From < span class = "pl-k" >-</ span > Dotnet < span class = "pl-k" >-</ span > Package < span class = "pl-k" >-</ span > Zip < span class = "pl-smi" > $Zip </ span > < span class = "pl-k" >-</ span > OutPath < span class = "pl-smi" > $OutPath </ 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" >
</ 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" > foreach </ span > (< span class = "pl-smi" > $entry </ span > < span class = "pl-k" > in </ span > < span class = "pl-smi" > $Zip < span class = "pl-smi" >. Entries </ span ></ 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-smi" > $PathWithVersion </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Path </ span >< span class = "pl-k" >-</ span > Prefix < span class = "pl-k" >-</ span > With < span class = "pl-k" >-</ span > Version < span class = "pl-smi" > $entry < span class = "pl-smi" >. FullName </ span ></ 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-k" > if </ span > ((< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -eq </ span > < span class = "pl-smi" > $PathWithVersion </ span >) < span class = "pl-k" > -Or </ span > (< span class = "pl-smi" > $DirectoriesToUnpack </ span > < span class = "pl-k" > -contains </ span > < span class = "pl-smi" > $PathWithVersion </ 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-smi" > $DestinationPath </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Absolute </ span >< span class = "pl-k" >-</ span > Path < span class = "pl-k" >$</ span >(< span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $OutPath </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-smi" > $entry < span class = "pl-smi" >. FullName </ span ></ 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-smi" > $DestinationDir </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Split-Path </ span > < span class = "pl-k" >-</ span > Parent < span class = "pl-smi" > $DestinationPath </ 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-smi" > $OverrideFiles </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $OverrideNonVersionedFiles </ span > < span class = "pl-k" > -Or </ span > (< span class = "pl-k" > -Not </ span > (< span class = "pl-c1" > Test-Path </ span > < span class = "pl-smi" > $DestinationPath </ 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" > < span class = "pl-k" > if </ span > ((< span class = "pl-k" > -Not </ span > < span class = "pl-smi" > $DestinationPath < span class = "pl-smi" >. EndsWith </ span ></ span >(< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >\< span class = "pl-pds" >& quot ;</ span ></ span >)) < span class = "pl-k" > -And </ span > < span class = "pl-smi" > $OverrideFiles </ span >) {</ 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" > < span class = "pl-c1" > New-Item </ span > < span class = "pl-k" >-</ span > ItemType Directory < span class = "pl-k" >-</ span > Force < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $DestinationDir </ span > < span class = "pl-k" >|</ span > < span class = "pl-c1" > Out-Null </ span ></ div ></ div ></ div >< div c
</ 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-k" > function </ span > < span class = "pl-en" > DownloadFile </ span >(< span class = "pl-smi" > $Source </ span >< span class = "pl-k" >,</ span > [< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $OutPath </ 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-k" > if </ span > (< span class = "pl-smi" > $Source </ span > < span class = "pl-k" > -notlike </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > http *< span class = "pl-pds" >& quot ;</ span ></ 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-c" >< span class = "pl-c" > #</span> Using System.IO.Path.GetFullPath to get the current directory</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 class="pl-c">#</span> does not work in this context - $pwd gives the current directory</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-k">if</span> (<span class="pl-k">!</span>[<span class="pl-k">System.IO.Path</span>]::IsPathRooted(<span class="pl-smi">$Source</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-smi">$Source</span> <span class="pl-k">=</span> <span class="pl-k">$</span>(<span class="pl-c1">Join-Path</span> <span class="pl-k">-</span>Path <span class="pl-c1">$pwd</span> <span class="pl-k">-</span>ChildPath <span class="pl-smi">$Source</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"> }</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-smi">$Source</span> <span class="pl-k">=</span> <span class="pl-c1">Get-Absolute</span><span class="pl-k">-</span>Path <span class="pl-smi">$Source</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"> Say <span class="pl-s"><span class="pl-pds">"</span>Copying file from <span class="pl-smi">$Source</span> to <span class="pl-smi">$OutPath</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC895" class="react-file-line html-div" data-testid="code-cell" data-line-number="895" style="position:relative"> <span class="pl-c1">Copy-Item</span> <span class="pl-smi">$Source</span> <span class="pl-smi">$OutPath</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-k">re
</ 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" > < span class = "pl-smi" > $Stream </ span > < span class = "pl-k" >=</ 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 = "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" > < span class = "pl-k" > try </ span > {</ 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-smi" > $Response </ span > < span class = "pl-k" >=</ span > GetHTTPResponse < span class = "pl-k" >-</ span > Uri < span class = "pl-smi" > $Source </ 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-smi" > $Stream </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $Response < span class = "pl-smi" >. Content . ReadAsStreamAsync </ span ></ span >(). Result </ 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-smi" > $File </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > System . IO . File </ span >]:: Create (< span class = "pl-smi" > $OutPath </ 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" > < span class = "pl-smi" > $Stream < span class = "pl-smi" >. CopyTo </ span ></ span >(< span class = "pl-smi" > $File </ span >)</ 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-smi" > $File < span class = "pl-smi" >. Close </ span ></ 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" >
</ 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" > ValidateRemoteLocalFileSizes < span class = "pl-k" >-</ span > LocalFileOutPath < span class = "pl-smi" > $OutPath </ span > < span class = "pl-k" >-</ span > SourceUri < span class = "pl-smi" > $Source </ span ></ 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" > }</ 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" > finally </ 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" > < span class = "pl-k" > if </ span > (< span class = "pl-c1" > $null </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $Stream </ span >) {</ 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" > < span class = "pl-smi" > $Stream < span class = "pl-smi" >. Dispose </ span ></ span >()</ 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" > }</ 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" > }</ 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" >}</ 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" >
</ 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" >< span class = "pl-k" > function </ span > < span class = "pl-en" > ValidateRemoteLocalFileSizes </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $LocalFileOutPath </ span >< span class = "pl-k" >,</ span > < span class = "pl-smi" > $SourceUri </ span >) {</ 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-k" > try </ 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-smi" > $remoteFileSize </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Remote </ span >< span class = "pl-k" >-</ span > File < span class = "pl-k" >-</ span > Size < span class = "pl-k" >-</ span > zipUri < span class = "pl-smi" > $SourceUri </ 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-smi" > $fileSize </ span > < span class = "pl-k" >=</ span > [< span class = "pl-k" > long </ span >](< span class = "pl-c1" > Get-Item </ span > < span class = "pl-smi" > $LocalFileOutPath </ span >). Length </ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Downloaded file < span class = "pl-smi" > $SourceUri </ span > size is < span class = "pl-smi" > $fileSize </ span > bytes .< span class = "pl-pds" >& quot ;</ span ></ 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" > </ 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" > < span class = "pl-k" > if </ span > ((< span class = "pl-k" >!</ span >[< span class = "pl-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-smi" > $remoteFileSize </ span >)) < span class = "pl-k" > -and </ span > < span class = "pl-k" >!</ span >([< span class = "pl-k" > string </ span >]:: IsNullOrEmpty (< span class = "pl-smi" > $fileSize </ span >)) ) {</ 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" > if </ span > (< span class = "pl-smi" > $remoteFileSize </ span > < span class = "pl-k" > -ne </ span > < span class = "pl-smi" > $fileSize </ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > The remote and local file sizes are not equal . Remote file size is < span class = "pl-smi" > $remoteFileSize </ span > bytes and local size is < span class = "pl-smi" > $fileSize </ span > bytes . The local package may be corrupted .< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ div ></ div ></ div >< div class = "react-code-text react-code-line-contents" style = "min-height:auto" >< div >< div id = "LC92
</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-k ">function</span> <span class=" pl-en ">SafeRemoveFile</span>(<span class=" pl-smi "> $Path </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-k ">try</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-k ">if</span> (<span class=" pl-c1 ">Test-Path</span> <span class=" pl-smi "> $Path </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-c1 ">Remove-Item</span> <span class=" pl-smi "> $Path </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 "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>The temporary file <span class=" pl-cce ">`"</span><span class=" pl-smi "> $Path </span><span class=" pl-cce ">`"</span> was removed.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC945 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 945 " style=" position : relative "> }</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 "> <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=" LC947 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 947 " style=" position : relative "> Say<span class=" pl-k ">-</span>Verbose <span class=" pl-s "><span class=" pl-pds ">"</span>The temporary file <span class=" pl-cce ">`"</span><span class=" pl-smi "> $Path </span><span class=" pl-cce ">`"</span> does not exist, therefore is not removed.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-height : auto "><div><div id=" LC948 " class=" react-file -line html-div " data-testid=" code-cell " data-line-number=" 948 " style=" position : relative "> }</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 "> }</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 ">catch</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 "> Say<span class=" pl-k ">-</span>Warning <span class=" pl-s "><span class=" pl-pds ">"</span>Failed to remove the temporary file: <span class=" pl-cce ">`"</span><span class=" pl-smi "> $Path </span><span class=" pl-cce ">`"</span>, remove it manually.<span class=" pl-pds ">"</span></span></div></div></div><div class=" react-code -text react-code -line-contents " style=" min-heigh
</ 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-k" > function </ span > < span class = "pl-en" > Prepend-Sdk -InstallRoot-To-Path </ span >([< span class = "pl-k" > string </ span >]< span class = "pl-smi" > $InstallRoot </ 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-smi" > $BinPath </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > Get-Absolute </ span >< span class = "pl-k" >-</ span > Path < span class = "pl-k" >$</ span >(< span class = "pl-c1" > Join-Path </ span > < span class = "pl-k" >-</ span > Path < span class = "pl-smi" > $InstallRoot </ span > < span class = "pl-k" >-</ span > ChildPath < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > if </ span > (< span class = "pl-k" > -Not </ span > < span class = "pl-smi" > $NoPath </ 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-smi" > $SuffixedBinPath </ span > < span class = "pl-k" >=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span >< span class = "pl-smi" > $BinPath </ span >;< span class = "pl-pds" >& quot ;</ span ></ 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-k" > -Not </ span > < span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > path < span class = "pl-smi" >. Contains </ span ></ span >(< span class = "pl-smi" > $SuffixedBinPath </ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Adding to current process PATH : < span class = "pl-cce" >`& quot ;</ span >< span class = "pl-smi" > $BinPath </ span >< span class = "pl-cce" >`& quot ;</ span >. Note : This change will not be visible if PowerShell was run as a child process .< span class = "pl-pds" >& quot ;</ span ></ 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-smi" >$< span class = "pl-c1" > env : </ span > path </ span > < span class = "pl-k" >=</ span > < span class = "pl-smi" > $SuffixedBinPath </ span > < span class = "pl-k" >+</ span > < span class = "pl-smi" >$< span class = "pl-c1" > env : </ span > path </ 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" > }</ 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" > else </ 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" > Say < span class = "pl-k" >-</ span > Verbose < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Current process PATH alread
</ 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" >< span class = "pl-k" > function </ span > < span class = "pl-en" > PrintDryRunOutput </ span >(< span class = "pl-smi" > $Invocation </ span >< span class = "pl-k" >,</ span > < span class = "pl-smi" > $DownloadLinks </ span >) {</ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Payload URLs : < span class = "pl-pds" >& quot ;</ span ></ span ></ 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" > </ 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-k" > for </ span > (< span class = "pl-smi" > $linkIndex </ span > < span class = "pl-k" >=</ span > < span class = "pl-c1" > 0 </ span >; < span class = "pl-smi" > $linkIndex </ span > < span class = "pl-k" > -lt </ span > < span class = "pl-smi" > $DownloadLinks < span class = "pl-smi" >. count </ span ></ span >; < span class = "pl-smi" > $linkIndex </ span >< span class = "pl-k" >++</ 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" > Say < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > URL #<span class="pl-smi">$linkIndex</span> - <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$DownloadLinks</span>[<span class="pl-smi">$linkIndex</span>].type<span class="pl-pse">)</span>: <span class="pl-k"><span class="pl-pse">$</span></span><span class="pl-pse">(</span><span class="pl-smi">$DownloadLinks</span>[<span class="pl-smi">$linkIndex</span>].downloadLink<span class="pl-pse">)</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC977" class="react-file-line html-div" data-testid="code-cell" data-line-number="977" style="position:relative"> }</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-smi">$RepeatableCommand</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>.\<span class="pl-smi">$ScriptName</span> -Version <span class="pl-cce">`"</span><span class="pl-smi">$SpecificVersion</span><span class="pl-cce">`"</span> -InstallDir <span class="pl-cce">`"</span><span class="pl-smi">$InstallRoot</span><span class="pl-cce">`"</span> -Architecture <span class="pl-cce">`"</span><span class="pl-smi">$CLIArchitecture</span><span class="pl-cce">`"</span><span class="pl-pds">"</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC979" class="react-file-line html-div" data-testid="code-cell" data-line-number="979" style="position:relative"> <span class="pl-k">if</span> (<span class="pl-smi">$Runtime</span> <span class="pl-k">-eq</span> <span class="pl-s"><span class="pl-pds">"</span>dotnet<span class="pl-pds">"</span></span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC980" class="react-file-line html-div" data-testid="code-cell" data-line-number="980" style="position:relative"> <span class="pl-smi">$RepeatableCommand</span> <span class="
</ 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" > < span class = "pl-k" > foreach </ span > (< span class = "pl-smi" > $key </ span > < span class = "pl-k" > in </ span > < span class = "pl-smi" > $Invocation < span class = "pl-smi" >. BoundParameters . Keys </ span ></ span >) {</ 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-k" > -not </ span > (< span class = "pl-k" >@</ span >(< span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Architecture < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Channel < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > DryRun < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > InstallDir < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Runtime < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > SharedRuntime < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Version < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > Quality < span class = "pl-pds" >& quot ;</ span ></ span >< span class = "pl-k" >,</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > FeedCredential < span class = "pl-pds" >& quot ;</ span ></ span >) < span class = "pl-k" > -contains </ span > < span class = "pl-smi" > $key </ 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-smi" > $RepeatableCommand </ span > < span class = "pl-k" >+=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > -< span class = "pl-smi" > $key </ span > < span class = "pl-cce" >`& quot ;</ span >< span class = "pl-k" >< span class = "pl-pse" >$</ span ></ span >< span class = "pl-pse" >(</ span >< span class = "pl-smi" > $Invocation < span class = "pl-smi" >. BoundParameters </ span ></ span >[< span class = "pl-smi" > $key </ span >]< span class = "pl-pse" >)</ span >< span class = "pl-cce" >`& quot ;</ span >< span class = "pl-pds" >& quot ;</ span ></ 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" > }</ 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-k" > if </ span > (< span class = "pl-smi" > $Invocation < span class = "pl-smi" >. BoundParameters . Keys </ span ></ span > < span class = "pl-k" > -contains </ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > FeedCredential < span class = "pl-pds" >& quot ;</ span ></ 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-smi" > $RepeatableCommand </ span > < span class = "pl-k" >+=</ span > < span class = "pl-s" >< span class = "pl-pds" >& quot ;</ span > -FeedCredential < span class = "pl-cce" >`& quot ;</ span >& lt ; feedCredential & gt ;< span
</ 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-c" >< span class = "pl-c" > #</span> grab the 'stem' of the redirect and check it against all of our configured feeds, </span></div></div></div></div></div><div class="Box-sc-g0xbh4-0 gkZUDI"><a class="prc-Link-Link-85e08" href="https://github.com/dotnet/install-scripts/raw/refs/heads/main/src/dotnet-install.ps1">View remainder of file in raw view</a></div></div><div id="copilot-button-container"></div></div><div id="highlighted-line-menu-container"></div></div></div><button hidden="" data-testid="hotkey-button" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button></section></div></div></div> <!-- --> <!-- --> </div></div></div><div class="Box-sc-g0xbh4-0"></div></div></div></div></div><div id="find-result-marks-container" class="Box-sc-g0xbh4-0 cCoXib"></div><button hidden="" data-testid="" data-hotkey-scope="read-only-cursor-text-area"></button><button hidden=""></button></div> <!-- --> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div>
</ react-app >
</ turbo-frame >
</ div >
</ turbo-frame >
</ main >
</ div >
</ div >
< footer class = "footer pt-8 pb-6 f6 color-fg-muted p-responsive" role = "contentinfo" >
< h2 class = 'sr-only' > Footer </ h2 >
< div class = "d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap" >
< div class = "d-flex flex-items-center flex-shrink-0 mx-2" >
< a aria-label = "Homepage" title = "GitHub" class = "footer-octicon mr-2" href = "https://github.com" >
< svg aria-hidden = "true" height = "24" viewBox = "0 0 24 24" version = "1.1" width = "24" data-view -component = "true" class = "octicon octicon-mark-github" >
< path d = "M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z" ></ path >
</ svg >
</ a >
< span >
& copy ; 2024 GitHub ,& nbsp ; Inc .
</ span >
</ div >
< nav aria-label = "Footer" >
< h3 class = "sr-only" id = "sr-footer-heading" > Footer navigation </ h3 >
< ul class = "list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby = "sr-footer-heading" >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to Terms","label":"text:terms"}" href = "https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view -component = "true" class = "Link--secondary Link" > Terms </ a >
</ li >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href = "https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view -component = "true" class = "Link--secondary Link" > Privacy </ a >
</ li >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to security","label":"text:security"}" href = "https://github.com/security" data-view -component = "true" class = "Link--secondary Link" > Security </ a >
</ li >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to status","label":"text:status"}" href = "https://www.githubstatus.com/" data-view -component = "true" class = "Link--secondary Link" > Status </ a >
</ li >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to docs","label":"text:docs"}" href = "https://docs.github.com/" data-view -component = "true" class = "Link--secondary Link" > Docs </ a >
</ li >
< li class = "mx-2" >
< a data-analytics -event = "{"category":"Footer","action":"go to contact","label":"text:contact"}" href = "https://support.github.com?tags=dotcom-footer" data-view -component = "true" class = "Link--secondary Link" > Contact </ a >
</ li >
< li class = "mx-2" >
< cookie-consent -link >
< button
type = "button"
class = "Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
data-action = "click:cookie-consent-link#showConsentManagement"
data-analytics -event = "{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}"
>
Manage cookies
</ button >
</ cookie-consent -link >
</ li >
< li class = "mx-2" >
< cookie-consent -link >
< button
type = "button"
class = "Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
data-action = "click:cookie-consent-link#showConsentManagement"
data-analytics -event = "{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}"
>
Do not share my personal information
</ button >
</ cookie-consent -link >
</ li >
</ ul >
</ nav >
</ div >
</ footer >
< ghcc-consent id = "ghcc" class = "position-fixed bottom-0 left-0" style = "z-index: 999999" data-initial -cookie-consent-allowed = "" data-cookie -consent-required = "false" ></ ghcc-consent >
< div id = "ajax-error-message" class = "ajax-error-message flash flash-error" hidden >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-alert" >
< path d = "M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" ></ path >
</ svg >
< button type = "button" class = "flash-close js-ajax-error-dismiss" aria-label = "Dismiss error" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-x" >
< path d = "M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
</ button >
You can ’ t perform that action at this time .
</ div >
< template id = "site-details-dialog" >
< details class = "details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open >
< summary role = "button" aria-label = "Close dialog" ></ summary >
< details-dialog class = "Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal" >
< button class = "Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type = "button" aria-label = "Close dialog" data-close -dialog >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-x" >
< path d = "M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z" ></ path >
</ svg >
</ button >
< div class = "octocat-spinner my-6 js-details-dialog-spinner" ></ div >
</ details-dialog >
</ details >
</ template >
< div class = "Popover js-hovercard-content position-absolute" style = "display: none; outline: none;" >
< div class = "Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style = "width:360px;" >
</ div >
</ div >
< template id = "snippet-clipboard-copy-button" >
< div class = "zeroclipboard-container position-absolute right-0 top-0" >
< clipboard-copy aria-label = "Copy" class = "ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy -feedback = "Copied!" data-tooltip -direction = "w" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-copy js-clipboard-copy-icon m-2" >
< path d = "M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z" ></ path >< path d = "M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z" ></ path >
</ svg >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2" >
< path d = "M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z" ></ path >
</ svg >
</ clipboard-copy >
</ div >
</ template >
< template id = "snippet-clipboard-copy-button-unpositioned" >
< div class = "zeroclipboard-container" >
< clipboard-copy aria-label = "Copy" class = "ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy -feedback = "Copied!" data-tooltip -direction = "w" >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-copy js-clipboard-copy-icon" >
< path d = "M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z" ></ path >< path d = "M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z" ></ path >
</ svg >
< svg aria-hidden = "true" height = "16" viewBox = "0 0 16 16" version = "1.1" width = "16" data-view -component = "true" class = "octicon octicon-check js-clipboard-check-icon color-fg-success d-none" >
< path d = "M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z" ></ path >
</ svg >
</ clipboard-copy >
</ div >
</ template >
</ div >
< div id = "js-global-screen-reader-notice" class = "sr-only mt-n1" aria-live = "polite" aria-atomic = "true" ></ div >
< div id = "js-global-screen-reader-notice-assertive" class = "sr-only mt-n1" aria-live = "assertive" aria-atomic = "true" ></ div >
</ body >
</ html >