CINXE.COM
Ecosystem | Microsoft Open Source
<!DOCTYPE html> <html lang="en"> <head> <meta name="robots" content="noindex nofollow" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content= "#24292e"> <!--[if IE]><meta http-equiv="cleartype" content="on" /><![endif]--> <link rel="canonical" href="/ecosystem/"> <link rel="stylesheet" media="screen" href="/assets/css/index.css?v=1d" /> <link rel="apple-touch-icon" sizes="180x180" href="/assets/images/favicons/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicons/favicon-16x16.png"> <link rel="manifest" href="/assets/images/favicons/site.webmanifest"> <link rel="shortcut icon" type="image/x-icon" href="/assets/images/favicons/favicon.ico"> <link rel="mask-icon" href="/assets/images/favicons/safari-pinned-tab.svg" color="#11100f"> <meta name="msapplication-config" content="/assets/images/favicons/browserconfig.xml" /> <meta name="msapplication-TileColor" content="#11100f"> <meta name="theme-color" content="#11100f"> <!-- Begin Jekyll SEO tag v2.8.0 --> <title>Ecosystem | Microsoft Open Source</title> <meta name="generator" content="Jekyll v4.1.1" /> <meta property="og:title" content="Ecosystem" /> <meta property="og:locale" content="en_US" /> <meta name="description" content="Microsoft Open Source" /> <meta property="og:description" content="Microsoft Open Source" /> <meta property="og:site_name" content="Microsoft Open Source" /> <meta property="og:image" content="https://opensource.azureedge.net/assets/images/social-card.png" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary_large_image" /> <meta property="twitter:image" content="https://opensource.azureedge.net/assets/images/social-card.png" /> <meta property="twitter:title" content="Ecosystem" /> <meta name="twitter:site" content="@openatmicrosoft" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Microsoft Open Source","headline":"Ecosystem","image":"https://opensource.azureedge.net/assets/images/social-card.png","url":"/ecosystem/"}</script> <!-- End Jekyll SEO tag --> <script type="text/javascript"> document.write('<style type="text/css">*[data-animate-in="up"], *[data-animate-in="up"], *[data-animate-in="fade"], *[data-animate-in="left"], *[data-animate-in="right"] { opacity: 0; } .tabs__content { display: none; } *[data-javascript-show="immediate"] { opacity: 1.0 }</style>'); </script> <script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script> <script src="/assets/js/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script src="/assets/js/jquery.timeago.js"></script> <script src="/assets/js/handlebars.js"></script> <meta name="google-site-verification" content="PXNcqyP34d82CBV3rvH8RwDRH5iWWb_zL-UFwp-3Ubs" /> <meta name="google-site-verification" content="jj6XRLurdxcqc_T28_tszxZ4M2K8TFQDPjvVRb8MLsg" /> </head> <body class="page-loading no-js ecosystem" id="page-ecosystem"> <div id="cookiebanner"></div> <a class="skip-to-content" href="#content" tabindex="1">skip to content</a> <header id="site-header" role="banner"> <div class="site-header__inner"> <div class="site-logo"> <a href="/" tabindex="2"> <img class="mr-3 icon" src="/assets/images/svgs/microsoft-logo-no-text.svg" alt="Microsoft | Open Source logo" /> <span class="p-lg text-white">Microsoft | Open Source</span> </a> </div> <ul class="site-header__nav"> <li> <a href="/collaborate/">Get involved</a> </li> <li> <a href="/projects/">Projects</a> </li> <li class="is-active" aria-current="page" > <a href="/ecosystem/">Ecosystem</a> </li> <li> <a href="/program/">Our program</a> </li> <li> <a href="/blog/"> <span>Blog</span> </a> </li> <li> <a class="external" target="_new" href="https://careers.microsoft.com/us/en/search-results?keywords=open%20source"> <span>Jobs</span> </a> </li> </ul> <div class="site-header__utilities"> <div class="site-header__search"> <form class="search-form" role="search" action="/projects/explore" method="GET"> <label for="header-search"> <span class="sr-only">Search projects</span> <svg class="octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </label> <input type="text" id="header-search" name="q" placeholder="Search" /> </form> <div class="search-trigger"> <svg class="octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </div> </div> <div class="nav-trigger js-menu-trigger"> <img class="open-menu" src="/assets/images/svgs/menu.svg" alt="menu icon" /> <img class="close-menu" src="/assets/images/svgs/close.svg" alt="close icon" /> </div> <!-- <a class="sign-in" href="https://www.microsoft.com/mscomhp/onerf/signin?EEL=True&pcexp=True&ru=https%3A%2F%2Fwww.microsoft.com%2Fen-us"> <span>Sign In</span> <span class="account-img"></span> </a> --> </div> </div> </header> <nav id="navigation"> <div class="site-navigation"> <div> <ul class="main-nav"> <li> <form class="search-form" role="search" action="/projects/explore" method="GET"> <label> <span class="sr-only">Search projects</span> <svg class="octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </label> <input id="search" type="text" name="q" placeholder="Search" /> </form> </li> <li> <a class="is-active" href="/">Home</a> </li> <li> <a href="/collaborate/">Get involved</a> </li> <li> <a href="/projects/">Projects</a> </li> <li class="is-active" > <a href="/ecosystem/">Ecosystem</a> </li> <li> <a href="/program/">Our program</a> </li> <li> <a class="external" target="_new" href="https://careers.microsoft.com/us/en/search-results?keywords=open%20source"> <span>Jobs</span> </a> </li> <li> <a class="external" href="https://cloudblogs.microsoft.com/opensource/" target="_new"> <span>Blog</span> </a> </li> <li> <p> </p> </li> <!-- <li> <a class="sign-in" href="https://www.microsoft.com/mscomhp/onerf/signin?EEL=True&pcexp=True&ru=https%3A%2F%2Fwww.microsoft.com%2Fen-us"> <span>Sign In</span> <span class="account-img"></span> </a> </li> --> </ul> </div> </div> <span class="navigation-screen js-menu-trigger"></span> </nav> <div class="search-form-mobile"> <form class="search-form" role="search" action="/projects/explore" method="GET"> <label> <span class="sr-only">Search projects</span> <svg class="octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search octicon octicon-search" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </label> <input id="mobile-search" type="text" name="q" placeholder="Search" /> </form> </div> <main id="content" class="main page-content" aria-label="Content"> <article> <div class="page-header"> <div class="wrapper d-md-flex"> <div class="col-md-6 col-lg-6 mb-4 mb-md-0"> <h1 class="h2">Ecosystem</h1> </div> <div class="col-md-6 pl-md-4 col-lg-4"> <p> Microsoft is proud to support amazing <a href="#fossfund">open source projects</a>, <a href="#foundations">initiatives, and foundations</a>, to offer <a href="#credits">Azure credits</a> to open source projects, and to make <a href="#contributions">upstream contributions</a> to thousands of open source projects on GitHub and beyond. </p> <p> The examples on this page are just a few of the ways that we're working with the broader open source ecosystem to collectively empower every person and every organization on the planet to achieve more. </p> <div data-animate-in="fade" data-animate-in-delay="240"> <a class="link-arrow text-white mt-4" href="/collaborate">See recent activity in Microsoft open source repositories</a> </div> </div> </div> </div> <div class="wrapper my-6 py-6"> <div class="d-md-flex flex-items-center"> <div class="col-md-6 col-lg-5 pr-md-4 pr-lg-6 mb-4 mb-md-0"> <h2 class="h2" id="fossfund">FOSS Fund</h2> <p> The Free and Open Source Software Fund (FOSS Fund) is a way for our employees to collectively select open source projects to receive sponsorship awards throughout the year. </p> <p> Microsoft's engineers select projects they are super passionate about. Only employees who contribute to open source projects can participate in the selection process. </p> <p> The following projects are a subset of the many that have been sponsored. </p> <p> <a class="link-arrow-external" href="https://aka.ms/microsoftfossfund" target="_new"> Learn about the Microsoft FOSS Fund process and see the full list of sponsored projects </a> </p> </div> <div class="col-md-6 pl-md-4 col-lg-4"> <img class="mb-4" src="/assets/images/direction/community-shapes.svg" alt="" /> </div> </div> </div> <div class="wrapper py-6 my-6"> <div class="d-sm-flex flex-wrap"> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://ajv.js.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/ajv.svg" alt="ajv logo" /> <h3 class="h3 mb-3 text-brand">ajv</h3> </a> <p>The fastest JSON validator for Node.js and browser.</p> <p class="f5">Used in many Microsoft projects.</p> <a class="link-arrow-external mt-3" href="https://ajv.js.org/"> ajv.js.org </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/sponsors/chaynHQ" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/chayn-bulb.png" alt="Chayn logo" /> <h3 class="h3 mb-3 text-brand">Chayn</h3> </a> <p>Award-winning feminist tech project helping survivors of abuse get the information & support they need. Open-source. Volunteer-run. 'Design with, not for.</p> <p class="f5">Chayn is a global nonprofit, run by survivors and allies from around the world, creating resources to inform and support the healing of survivors of gender-based violence. We create open source online resources and services for survivors of abuse that are trauma-informed, intersectional, multi-lingual and feminist.</p> <a class="link-arrow-external mt-3" href="https://github.com/sponsors/chaynHQ"> chayn.co </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.hikaya.io" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/hikaya.png" alt="hikaya logo" /> <h3 class="h3 mb-3 text-brand">hikaya</h3> </a> <p>Hikaya, which means story in Arabic works with nonprofits to introduce a set of integrated tools that re-engineer how data are used within these organizations.</p> <p class="f5">By building open source solutions on common data standards,hikaya will be able to help nonprofits worldwide improve their delivery of goods and services to those most in need while making reporting to funders more transparent.</p> <a class="link-arrow-external mt-3" href="https://www.hikaya.io"> https://github.com/hikaya-io </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.nanoframework.net/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/nanoFramework-repo-logo.png" alt=".NET Nano Framework logo" /> <h3 class="h3 mb-3 text-brand">.NET Nano Framework</h3> </a> <p>.NET nanoFramework goal is to be a platform that enables the writing of managed code applications for constrained embedded devices. Developers can harness the familiar IDE Visual Studio and their .NET (C#) knowledge to quickly write applications without having to worry about the low level hardware intricacies of a micro-controller.</p> <p class="f5">Developers can harness the familiar IDE Visual Studio and their .NET (C#) knowledge to quickly write applications without having to worry about the low level hardware intricacies of a micro-controller.</p> <a class="link-arrow-external mt-3" href="https://www.nanoframework.net/"> https://github.com/nanoframework/home </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://ngrx.io/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/ngrx.png" alt="Ngrx logo" /> <h3 class="h3 mb-3 text-brand">Ngrx</h3> </a> <p>Reactive Extensions for Angular. Used by many Microsoft projects.</p> <p class="f5">Sponsorship towards core contributor Brandon Roberts.</p> <a class="link-arrow-external mt-3" href="https://ngrx.io/"> https://github.com/ngrx/ </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/praeclarum/Ooui" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/ooui.png" alt="Ooui logo" /> <h3 class="h3 mb-3 text-brand">Ooui</h3> </a> <p>A small cross-platform UI library that brings the simplicity of native UI development to the web.</p> <p class="f5">Ooui(pronounced weee!) is a small cross-platform UI library for .NET that uses web technologies.</p> <a class="link-arrow-external mt-3" href="https://github.com/praeclarum/Ooui"> github.com/praeclarum/Ooui </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/dtolnay/syn" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">syn</h3> </a> <p>Syn is a parsing library for parsing a stream of Rust tokens into a syntax tree of Rust source code.</p> <p class="f5">47% of all published Rust crates on crates.io depend transitively on syn. The Microsoft windows crate as well as the Azure SDK for Rust depend on syn for code generation. Sponsorship to maintainer David Tolnay.</p> <a class="link-arrow-external mt-3" href="https://github.com/dtolnay/syn"> github.com/dtolnay/syn </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/eslint/eslint" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/eslint.svg" alt="ESLint logo" /> <h3 class="h3 mb-3 text-brand">ESLint</h3> </a> <p>Find and fix problems in your JavaScript code.</p> <p class="f5">Engineers across Microsoft love ESLint and use it as an important part of their inner dev loop. ESLint makes the JavaScript and TypeScript world more consistent and helps everyone be more efficient in delivering value.</p> <a class="link-arrow-external mt-3" href="https://github.com/eslint/eslint"> https://github.com/eslint/eslint </a> <!-- <p class="h5">FOSS Fund #1</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://dbatools.io/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/dbatools.png" alt="dbaTools logo" /> <h3 class="h3 mb-3 text-brand">dbaTools</h3> </a> <p>dbatools is PowerShell module that you may think of like a command-line SQL Server Management Studio.</p> <p class="f5">dbatools saved me and many Microsoft DBAs a lot of time when it comes to managing SQL. It is always one of the first PowerShell modules I install on my notebook.</p> <a class="link-arrow-external mt-3" href="https://dbatools.io/"> https://github.com/dataplat/dbatools </a> <!-- <p class="h5">FOSS Fund #10</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/tartley/colorama" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">Colorama</h3> </a> <p>A simple cross-platform colored terminal text in Python</p> <p class="f5">This is a critical project in the Python ecosystem for enabling 'normal' color output to work on Windows. It is used by a wide variety of projects, including the Azure CLI and pip. Sponsorship to maintainer Jonathan Hartley.</p> <a class="link-arrow-external mt-3" href="https://github.com/tartley/colorama"> github.com/tartley/colorama </a> <!-- <p class="h5">FOSS Fund #11</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/grain-lang/grain" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/grain.svg" alt="Grain logo" /> <h3 class="h3 mb-3 text-brand">Grain</h3> </a> <p>The Grain compiler toolchain and CLI. Home of the modern web staple.</p> <p class="f5">Grain is an exciting new language targeting the WebAssembly runtime. Grain aims to modernize innovative features from functional and academic programming languages and bring them to the masses. It is a flexible and easy-to-learn functional programming language. Because it compiles to Wasm, it runs across OSes and architectures, in browswer and out of browser..</p> <a class="link-arrow-external mt-3" href="https://github.com/grain-lang/grain"> github.com/grain-lang/grain </a> <!-- <p class="h5">FOSS Fund #11</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="github.com/hikaya-io" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/hikaya.png" alt="Hikaya logo" /> <h3 class="h3 mb-3 text-brand">Hikaya</h3> </a> <p>Hikaya, which means story in Arabic works with nonprofits to introduce a set of integrated tools that re-engineer how data are used within these organizations. By building open source solutions on common data standards, they help nonprofits worldwide improve their delivery of goods and services to those most in need while making reporting to funders more transparent.</p> <p class="f5">Activity is a tool that makes it easier for nonprofits to manage their project activities and KPI results. Activity is based on an open source project started at Mercy Corps in 2014. Activity is hosted and maintained by Hikaya and can be used any nonprofit: https://activity.hikaya.app/</p> <a class="link-arrow-external mt-3" href="github.com/hikaya-io"> https://github.com/hikaya-io </a> <!-- <p class="h5">FOSS Fund Year End</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.qemu.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/Qemu-logo.png" alt="QEMU logo" /> <h3 class="h3 mb-3 text-brand">QEMU</h3> </a> <p>QEMU is a generic and open source machine emulator and virtualizer. Virtualization is a fundamental piece for effective OS development and beyond, be it emulating a bare-metal K8s environment or testing software on various OSes. QEMU also enables users to run an operating system other than there current one.</p> <p class="f5">QEMU is the most universal virtualization software and I consider it a critical infrastructure. It also enables binary translation to execute foreign architecture binaries (e.g. container images).</p> <a class="link-arrow-external mt-3" href="https://www.qemu.org/"> qemu.org </a> <!-- <p class="h5">FOSS Fund #12</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/OptiKey" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">OptiKey</h3> </a> <p>OptiKey is an on-screen keyboard that is designed to help Motor Neuron Disease (MND) patients interact with Windows computers.</p> <p class="f5">OptiKey is a free on-screen-keyboard for eye-tracking devices. It enables people with motor disabilities to use a computer, even if they cannot afford one of the expensive commercial alternatives.</p> <a class="link-arrow-external mt-3" href="https://github.com/OptiKey"> https://github.com/OptiKey </a> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://reproducible-builds.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/rb-logo.svg" alt="Reproducible Builds logo" /> <h3 class="h3 mb-3 text-brand">Reproducible Builds</h3> </a> <p>Reproducible builds are a set of software development practices that create an independently-verifiable path from source to binary code.</p> <p class="f5">Reproducible Builds is important to secure supply chain efforts across the company as well as many of our security initiatives.</p> <a class="link-arrow-external mt-3" href="https://reproducible-builds.org/"> reproducible-builds </a> <!-- <p class="h5">FOSS Fund #14</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://babeljs.io" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/babel.png" alt="Babel logo" /> <h3 class="h3 mb-3 text-brand">Babel</h3> </a> <p>Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.</p> <p class="f5">Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.</p> <a class="link-arrow-external mt-3" href="https://babeljs.io"> https://github.com/sponsors/babel </a> <!-- <p class="h5">FOSS Fund #15</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.openstreetmap.org/about" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/openstreetmap.png" alt="OpenStreetMap logo" /> <h3 class="h3 mb-3 text-brand">OpenStreetMap</h3> </a> <p>OpenStreetMap is built by a community of mappers that contribute and maintain data about roads, trails, cafés, railway stations, and much more, all over the world.</p> <p class="f5">OpenStreetMap is built by a community of mappers that contribute and maintain data about roads, trails, cafés, railway stations, and much more, all over the world.</p> <a class="link-arrow-external mt-3" href="https://www.openstreetmap.org/about"> https://www.openstreetmap.org/about </a> <!-- <p class="h5">FOSS Fund #16</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://curl.se" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/curl.svg" alt="CURL logo" /> <h3 class="h3 mb-3 text-brand">CURL</h3> </a> <p> curl is used in command lines or scripts to transfer data. curl is used daily by virtually every Internet-using human on the globe.</p> <p class="f5">Curl is a command-line tool for transferring data specified with URL syntax.ibcurl is the library curl is using to do its job.</p> <a class="link-arrow-external mt-3" href="https://curl.se"> https://github.com/curl/curl </a> <!-- <p class="h5">FOSS Fund #17</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.msys2.org" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/mysys2.png" alt="MSYS2 logo" /> <h3 class="h3 mb-3 text-brand">MSYS2</h3> </a> <p>MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.</p> <p class="f5">MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.</p> <a class="link-arrow-external mt-3" href="https://www.msys2.org"> https://github.com/msys2 </a> <!-- <p class="h5">FOSS Fund #18</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/Leaflet/Leaflet" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/leaflet.svg" alt="Leaflet logo" /> <h3 class="h3 mb-3 text-brand">Leaflet</h3> </a> <p>Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps. Weighing just about 39 KB of gzipped JS plus 4 KB of gzipped CSS code, it has all the mapping features most developers ever need.</p> <a class="link-arrow-external mt-3" href="https://github.com/Leaflet/Leaflet"> https://github.com/Leaflet/Leaflet </a> <!-- <p class="h5">FOSS Fund #19</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://systemd.io/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/systemd.png" alt="systemd logo" /> <h3 class="h3 mb-3 text-brand">systemd</h3> </a> <p>systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system.</p> <a class="link-arrow-external mt-3" href="https://systemd.io/"> https://systemd.io/ </a> <!-- <p class="h5">FOSS Fund #19</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://rust-analyzer.github.io/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/rust-analyzer.svg" alt="rust-analyzer logo" /> <h3 class="h3 mb-3 text-brand">rust-analyzer</h3> </a> <p>rust-analyzer is an implementation of Language Server Protocol for the Rust programming language. It provides features like completion and goto definition for many code editors, including VS Code, Emacs and Vim.</p> <p class="f5">There is a large Rust fanbase at Microsoft, and engineers using Rust find themselves using rust-analyzer every day. It's often paired with Visual Studio Code by productive Rust engineers.</p> <a class="link-arrow-external mt-3" href="https://rust-analyzer.github.io/"> rust-analyzer.github.io </a> <!-- <p class="h5">FOSS Fund #2</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.gnome.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/gnome.png" alt="GNOME logo" /> <h3 class="h3 mb-3 text-brand">GNOME</h3> </a> <p>The GNOME community not only provides the tech stack and applications for a user-friendly Linux desktop, it is also pioneering in fostering inclusiveness and diversity through the community standards.</p> <a class="link-arrow-external mt-3" href="https://www.gnome.org/"> https://www.gnome.org/ </a> <!-- <p class="h5">FOSS Fund #20</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/godotengine" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/godot.svg" alt="Godot Engine logo" /> <h3 class="h3 mb-3 text-brand">Godot Engine</h3> </a> <p>Game development is an exciting way to learn to program that reaches people who might have never started otherwise. Godot is a beginner-friendly game engine with a vibrant community supporting many people who are new to programming. The inclusion of C# support means that skills are immediately transferable to real-world programming, vs. other engines that only work with a game-development-specific language or visual scripting.</p> <a class="link-arrow-external mt-3" href="https://github.com/godotengine"> https://github.com/godotengine </a> <!-- <p class="h5">FOSS Fund #21</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/webpack/webpack" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/webpack.svg" alt="Webpack logo" /> <h3 class="h3 mb-3 text-brand">Webpack</h3> </a> <p>Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.</p> <a class="link-arrow-external mt-3" href="https://github.com/webpack/webpack"> https://github.com/webpack/webpack </a> <!-- <p class="h5">FOSS Fund #22</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/mermaid-js/mermaid" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/mermaid.png" alt="mermaid-js logo" /> <h3 class="h3 mb-3 text-brand">mermaid-js</h3> </a> <p>Mermaid is a JavaScript-based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.</p> <a class="link-arrow-external mt-3" href="https://github.com/mermaid-js/mermaid"> https://github.com/mermaid-js/mermaid </a> <!-- <p class="h5">FOSS Fund #23</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.openssl.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/openssl_logo.png" alt="OpenSSL logo" /> <h3 class="h3 mb-3 text-brand">OpenSSL</h3> </a> <p>OpenSSL is one of the most important and critical software used in the IT - it provides a set of cryptographic algorithms used by many software and devices to ensure security in communications, e-commerce, remote work and more.</p> <a class="link-arrow-external mt-3" href="https://www.openssl.org/"> https://www.openssl.org/ </a> <!-- <p class="h5">FOSS Fund #24</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/EricZimmerman?tab=repositories" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">Erick Zimmerman's Forensic Tools</h3> </a> <p> Eric Zimmerman teaches DFIR (digital forensics and incident response) and has become a leading expert in extracting forensic artifacts from systems.We are deeply appreciative of Zimmerman's open source software.</p> <a class="link-arrow-external mt-3" href="https://github.com/EricZimmerman?tab=repositories"> https://github.com/EricZimmerman?tab=repositories </a> <!-- <p class="h5">FOSS Fund #26</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.debian.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/debian.png" alt="Debian logo" /> <h3 class="h3 mb-3 text-brand">Debian</h3> </a> <p>Debian project is an important basis for the many ways we use Linux</p> <a class="link-arrow-external mt-3" href="https://www.debian.org/"> https://www.debian.org/ </a> <!-- <p class="h5">FOSS Fund #27</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/llvm/llvm-project/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/llvm.png" alt="LLVM logo" /> <h3 class="h3 mb-3 text-brand">LLVM</h3> </a> <p>The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.</p> <a class="link-arrow-external mt-3" href="https://github.com/llvm/llvm-project/"> https://github.com/llvm/llvm-project/ </a> <!-- <p class="h5">FOSS Fund #27</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/mastodon/mastodon" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/mastodon.png" alt="Mastodon logo" /> <h3 class="h3 mb-3 text-brand">Mastodon</h3> </a> <p>A self-hosted, globally interconnected microblogging community</p> <a class="link-arrow-external mt-3" href="https://github.com/mastodon/mastodon"> https://github.com/mastodon/mastodon </a> <!-- <p class="h5">FOSS Fund #27</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/mqttjs/MQTT.js" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/mqttjs.png" alt="MQTT.js logo" /> <h3 class="h3 mb-3 text-brand">MQTT.js</h3> </a> <p>The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.</p> <a class="link-arrow-external mt-3" href="https://github.com/mqttjs/MQTT.js"> https://github.com/mqttjs/MQTT.js </a> <!-- <p class="h5">FOSS Fund #27</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/ericsink/SQLitePCL.raw" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">SQLitePCLRaw</h3> </a> <p>SQLitePCLRaw is a Portable Class Library (PCL) for low-level (raw) access to SQLite.</p> <a class="link-arrow-external mt-3" href="https://github.com/ericsink/SQLitePCL.raw"> https://github.com/ericsink/SQLitePCL.raw </a> <!-- <p class="h5">FOSS Fund #27</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/SixLabors/ImageSharp" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/imagesharp.svg" alt="ImageSharp logo" /> <h3 class="h3 mb-3 text-brand">ImageSharp</h3> </a> <p>A modern, cross-platform, 2D Graphics library for .NET.</p> <p class="f5">This sponsorship is currently being processed. The selection process completed in August 2020.</p> <a class="link-arrow-external mt-3" href="https://github.com/SixLabors/ImageSharp"> SixLabors/ImageSharp </a> <!-- <p class="h5">FOSS Fund #3</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.ntp.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/ntp.png" alt="Network Time Protocol logo" /> <h3 class="h3 mb-3 text-brand">Network Time Protocol</h3> </a> <p>(NTP) is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks.</p> <a class="link-arrow-external mt-3" href="https://www.ntp.org/"> https://www.ntp.org/ </a> <!-- <p class="h5">FOSS Fund #4</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.nvaccess.org/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/nvda.png" alt="NVDA logo" /> <h3 class="h3 mb-3 text-brand">NVDA</h3> </a> <p>NVDA (NonVisual Desktop Access) is a free, open source screen reader for Microsoft Windows.</p> <p class="f5">NVDA is developed by NV Access in collaboration with a global community of contributors.</p> <a class="link-arrow-external mt-3" href="https://www.nvaccess.org/"> https://github.com/nvaccess/nvda </a> <!-- <p class="h5">FOSS Fund #5</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/matplotlib/matplotlib" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/matplotlib.png" alt="matplotlib logo" /> <h3 class="h3 mb-3 text-brand">matplotlib</h3> </a> <p>Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.</p> <p class="f5">Matplotlib produces publication-quality figures in a variety of hardcopy formats and interactive environments across platforms. Matplotlib can be used in Python scripts, the Python and IPython shell, web application servers, and various graphical user interface toolkits.</p> <a class="link-arrow-external mt-3" href="https://github.com/matplotlib/matplotlib"> https://github.com/matplotlib/matplotlib </a> <!-- <p class="h5">FOSS Fund #6</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://www.home-assistant.io/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/home-assistant.png" alt="Home Assistant logo" /> <h3 class="h3 mb-3 text-brand">Home Assistant</h3> </a> <p>Open source home automation that puts local control and privacy first.</p> <p class="f5">Powered by a worldwide community of tinkerers and DIY enthusiasts.</p> <a class="link-arrow-external mt-3" href="https://www.home-assistant.io/"> home-assitant.io </a> <!-- <p class="h5">FOSS Fund #7</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://ilspy.net/" target="_new"> <img class="mb-4 icon" src="/assets/images/fossfund/ilspy.jpg" alt="ILSpy logo" /> <h3 class="h3 mb-3 text-brand">ILSpy</h3> </a> <p>ILSpy is the open-source .NET assembly browser and decompiler.</p> <p class="f5">ILSpy ships in Visual Studio and is powering the important Decompilation feature, used by many VS users.</p> <a class="link-arrow-external mt-3" href="https://ilspy.net/"> ilspy.net </a> <!-- <p class="h5">FOSS Fund #8</p> --> </div> <div class="col-12 col-sm-6 col-md-4 pr-sm-3 pr-lg-4 mb-6" data-animate-in="fade" data-animate-in-delay="200"> <a class="mb-3" href="https://github.com/ashmind/SharpLab" target="_new"> <span class="mb-4 icon"></span> <h3 class="h3 mb-3 text-brand">SharpLab</h3> </a> <p>SharpLab is a .NET code playground that shows intermediate steps and results of code compilation.</p> <p class="f5">Sharplab is an interactive, online C#, VB, and F# compiler that is heavily used by both the Roslyn team and the wider .NET community.</p> <a class="link-arrow-external mt-3" href="https://github.com/ashmind/SharpLab"> github.com/Sharplab </a> <!-- <p class="h5">FOSS Fund #9</p> --> </div> </div> </div> <hr class="wrapper" /> <div class="wrapper my-6 py-6"> <div class="d-md-flex flex-items-center"> <div class="col-md-6 col-lg-5 pr-md-4 pr-lg-6 mb-4 mb-md-0"> <h2 class="h2" id="foundations">Foundations & Initiatives</h2> <p>Microsoft is proud to participate, partner, and sponsor many amazing initiatives to better the open source ecosystem.</p> </div> <div class="col-md-6 pl-md-4 col-lg-4"> <img class="mb-4" src="/assets/images/direction/community-shapes.svg" alt="" /> </div> </div> </div> <!-- <hr class="wrapper" /> --> <div class="wrapper py-6 my-6"> <div class="d-sm-flex flex-wrap foundation-list"> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://3mf.io/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/3mfconsortium.svg" alt="3MF Consortium logo" /> </figure> </a> <p>Advancing the print industry with a universal specification for 3D printing</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://3mf.io/"> 3MF Consortium </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://aomedia.org/" target="_new"> <span class="icon mb-4"><h3 class="h6 pt-3 text-brand">Alliance for Open Media</h3></span> </a> <p>Next Generation, Open-Source Digital Media Technology for Everyone</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://aomedia.org/"> Alliance for Open Media </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.apache.org/foundation/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/apache.jpg" alt="Apache logo" /> </figure> </a> <p>The mission of the Apache Software Foundation (ASF) is to provide software for the public good. They do this by providing services and support for many software project communities consisting of individuals who choose to participate in ASF activities.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.apache.org/foundation/"> Visit the Apache Software Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://confidentialcomputing.io/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/cc_consortium-color.svg" alt="Confidential Computing Consortium logo" /> </figure> </a> <p>The Confidential Computing Consortium (CCC) brings together hardware vendors, cloud providers, and software developers to accelerate the adoption of Trusted Execution Environment (TEE) technologies and standards.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://confidentialcomputing.io/"> About CCC </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://clearlydefined.io/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/clearlydefined.svg" alt="ClearlyDefined logo" /> </figure> </a> <p>ClearlyDefined is on a mission to help FOSS projects thrive by being, well, clearly defined. Lack of clarity around licenses and security vulnerabilities reduces engagement — that means fewer users, fewer contributors and a smaller community.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://clearlydefined.io/"> About ClearlyDefined </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.cncf.io/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/cncf.svg" alt="Cloud Native Computing Foundation logo" /> </figure> </a> <p>The Cloud Native Computing Foundation (CNCF) hosts critical components of the global technology infrastructure. CNCF brings together the world’s top developers, end users, and vendors and runs the largest open source developer conferences.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.cncf.io/"> Visit CNCF </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://identity.foundation/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/dif.svg" alt="DIF: Decentralized Identity Foundation logo" /> </figure> </a> <p>DIF is an engineering-driven organization focused on developing the foundational elements necessary to establish an open ecosystem for decentralized identity and ensure interop between all participants.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://identity.foundation/"> About DIF </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://dotnetfoundation.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/dotnetfoundationhorizontal.svg" alt=".NET Foundation logo" /> </figure> </a> <p>The .NET Foundation is an independent, non-profit organization established to support an innovative, commercially friendly, open-source ecosystem around the .NET platform.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://dotnetfoundation.org/"> Visit the .NET Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.eclipse.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/eclipsefoundation.svg" alt="Eclipse Foundation logo" /> </figure> </a> <p>The Eclipse Foundation provides our global community of individuals and organizations with a mature, scalable, and business-friendly environment for open source software collaboration and innovation.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.eclipse.org/"> Visit the Eclipse Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.hyperledger.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/hyperledger.png" alt="Hyperledger logo" /> </figure> </a> <p>Advancing business blockchain adoption through global open source collaboration</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.hyperledger.org/"> About Hyperledger </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://foundation.kernelci.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/kernelci.svg" alt="KernelCI logo" /> </figure> </a> <p>Ensuring the quality, stability and long-term maintenance of the Linux kernel.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://foundation.kernelci.org/"> About KernelCI </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.lfnetworking.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/lfnetworking.png" alt="LF Networking logo" /> </figure> </a> <p>LF Networking supports the largest set of networking projects with the broadest community in the industry that collaborate on this opportunity.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.lfnetworking.org/"> About LF Networking </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.linuxfoundation.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/lf.png" alt="The Linux Foundation logo" /> </figure> </a> <p>The Linux Foundation supports the creation of sustainable open source ecosystems by providing financial and intellectual resources, infrastructure, services, events, and training.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.linuxfoundation.org/"> Visit The Linux Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://opencontainers.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/oci.png" alt="Open Container Initiative logo" /> </figure> </a> <p>The Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://opencontainers.org/"> Visit the Open Container Initiative </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.opencompute.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/opencompute.svg" alt="Open Compute Project (OCP) logo" /> </figure> </a> <p>The Open Compute Project (OCP) is reimagining hardware, making it more efficient, flexible, and scalable. Join our global community of technology leaders working together to break open the black box of proprietary IT infrastructure to achieve greater choice, customization, and cost savings.</p> <!-- without descriptive text, no link --> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://openinfra.dev/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/open-infra.jpeg" alt="OpenInfra Foundation logo" /> </figure> </a> <p>The OpenInfra Foundation supports the development and adoption of open infrastructure globally.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://openinfra.dev/"> Visit the Open Infrastructure Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.openapis.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/openapi.png" alt="OpenAPI Initiative logo" /> </figure> </a> <p>The OpenAPI Specification: a broadly adopted industry standard for describing modern APIs.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.openapis.org/"> OpenAPI Site </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.openchainproject.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/openchain.svg" alt="OpenChain logo" /> </figure> </a> <p>The OpenChain Project defines the key requirements of a quality open source compliance program.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.openchainproject.org/"> Learn about OpenChain Certification... </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://openjsf.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/openjs.svg" alt="OpenJS Foundation logo" /> </figure> </a> <p>The OpenJS Foundation is made up of 32 open source JavaScript projects including Appium, Dojo, Electron, jQuery, Node.js, and webpack. Our mission is to support the healthy growth of JavaScript and web technologies by providing a neutral organization to host and sustain projects, as well as collaboratively fund activities that benefit the ecosystem as a whole.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://openjsf.org/"> OpenJS </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.openssf.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/openssf.svg" alt="The Open Source Security Foundation (OpenSSF) logo" /> </figure> </a> <p>The OpenSSF brings together work from the Linux Foundation-initiated Core Infrastructure Initiative (CII), the GitHub-initiated Open Source Security Coalition (OSSC), and other open-source security efforts to improve the security of open-source software by building a broader community, targeted initiatives, and best practices.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.openssf.org/"> Visit OpenSSF </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://opensource.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/osi.svg" alt="Open Source Initiative logo" /> </figure> </a> <p>For over 20 years the Open Source Initiative (OSI) has worked to raise awareness and adoption of open source software, and build bridges between open source communities of practice. As a global non-profit, the OSI champions software freedom in society through education, collaboration, and infrastructure, stewarding the Open Source Definition (OSD), and preventing abuse of the ideals and ethos inherent to the open source movement.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://opensource.org/"> Visit the OSI </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.outreachy.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/outreachy.png" alt="Outreachy logo" /> </figure> </a> <p>Outreachy provides remote internships. Outreachy supports diversity in open source and free software!</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.outreachy.org/"> Visit Outreachy </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://www.r-consortium.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/rconsortium.png" alt="R Consortium logo" /> </figure> </a> <p>The central mission of the R Consortium is to work with and provide support to the R Foundation and to the key organizations developing, maintaining, distributing and using R software through the identification, development and implementation of infrastructure projects.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://www.r-consortium.org/"> About the R Consortium </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://foundation.rust-lang.org/" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/rust-foundation.png" alt="The Rust Foundation logo" /> </figure> </a> <p>The Rust Foundation is an independent non-profit organization to steward the Rust programming language and ecosystem, with a unique focus on supporting the set of maintainers that govern and develop the project.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://foundation.rust-lang.org/"> Visit the Rust Foundation </a> </div> <div class="col-12 col-sm-6 col-md-4 col-lg-3 pr-sm-3 pr-lg-4 mb-6 pb-4" data-animate-in="fade" data-animate-in-delay="200"> <a href="https://todogroup.org" target="_new"> <figure> <img class="mb-4 icon" src="/assets/images/projects/todogroup.svg" alt="TODO Group logo" /> </figure> </a> <p>Does your company release open source projects? Would you like to improve how you interact with the open source community to better manage and run your projects? TODO is an open group of companies who want to collaborate on practices, tools, and other ways to run successful and effective open source projects and programs.</p> <!-- without descriptive text, no link --> <a class="link-arrow-external mt-3" href="https://todogroup.org"> TODO: Talk openly. Develop openly. </a> </div> </div> </div> <!-- <div class="wrapper py-6 my-6"> <div class="d-sm-flex flex-wrap"> </div> </div> --> <div class="wrapper my-6 py-6"> <div class="d-md-flex flex-items-center"> <div class="col-md-6 col-lg-5 pr-md-4 pr-lg-6 mb-4 mb-md-0"> <h2 class="h2" id="credits">Azure Credits</h2> <p> We are offering Azure credits to open source projects for their use for testing, builds, and other infrustructure support needs. Projects must apply for credits. Applications are reviewed and applicants will be contacted with a decision within 3-4 weeks. </p> <p> <a class="link-arrow-external" href="/azure-credits"> Learn about our Azure Credits program </a> </p> </div> <div class="col-md-6 pl-md-4 col-lg-4"> <img class="mb-4" src="/assets/images/direction/community-shapes.svg" alt="" /> </div> </div> </div> <hr class="wrapper" /> <div class="wrapper my-6 py-6"> <div class="col-lg-8 mx-auto"> <div> <h2 class="h2" id="contributions">Recent Contributions</h2> <p> Whether an official contribution as part of a team's business goals, an after-hours project in robotics and hackathons, or contributions to non-profits and communities, our employees are always involved. </p> </div> </div> </div> <script id="octicon-star" type="text/x-octicon"><svg class="octicon octicon-star octicon octicon-star octicon octicon-star" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg></script> <script id="octicon-repo-forked" type="text/x-octicon"><svg class="octicon octicon-repo-forked octicon octicon-repo-forked octicon octicon-repo-forked" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg></script> <script id="octicon-issue-opened" type="text/x-octicon"><svg class="octicon octicon-issue-opened octicon octicon-issue-opened octicon octicon-issue-opened" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"></path></svg></script> <script id="octicon-pin" type="text/x-octicon"><svg class="octicon octicon-pin octicon octicon-pin octicon octicon-pin" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.456.734a1.75 1.75 0 012.826.504l.613 1.327a3.081 3.081 0 002.084 1.707l2.454.584c1.332.317 1.8 1.972.832 2.94L11.06 10l3.72 3.72a.75.75 0 11-1.061 1.06L10 11.06l-2.204 2.205c-.968.968-2.623.5-2.94-.832l-.584-2.454a3.081 3.081 0 00-1.707-2.084l-1.327-.613a1.75 1.75 0 01-.504-2.826L4.456.734zM5.92 1.866a.25.25 0 00-.404-.072L1.794 5.516a.25.25 0 00.072.404l1.328.613A4.582 4.582 0 015.73 9.63l.584 2.454a.25.25 0 00.42.12l5.47-5.47a.25.25 0 00-.12-.42L9.63 5.73a4.581 4.581 0 01-3.098-2.537L5.92 1.866z"></path></svg></script> <script id="octicon-plus" type="text/x-octicon"><svg class="octicon octicon-plus octicon octicon-plus octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"></path></svg></script> <script id="octicon-pulse" type="text/x-octicon"><svg class="octicon octicon-pulse octicon octicon-pulse octicon octicon-pulse" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2a.75.75 0 01.696.471L10 10.731l1.304-3.26A.75.75 0 0112 7h3.25a.75.75 0 010 1.5h-2.742l-1.812 4.528a.75.75 0 01-1.392 0L6 4.77 4.696 8.03A.75.75 0 014 8.5H.75a.75.75 0 010-1.5h2.742l1.812-4.529A.75.75 0 016 2z"></path></svg></script> <script id="octicon-comment-discussion" type="text/x-octicon"><svg class="octicon octicon-comment-discussion octicon octicon-comment-discussion octicon octicon-comment-discussion" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 2.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-3.5a.75.75 0 00-.53.22L3.5 11.44V9.25a.75.75 0 00-.75-.75h-1a.25.25 0 01-.25-.25v-5.5zM1.75 1A1.75 1.75 0 000 2.75v5.5C0 9.216.784 10 1.75 10H2v1.543a1.457 1.457 0 002.487 1.03L7.061 10h3.189A1.75 1.75 0 0012 8.25v-5.5A1.75 1.75 0 0010.25 1h-8.5zM14.5 4.75a.25.25 0 00-.25-.25h-.5a.75.75 0 110-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0114.25 12H14v1.543a1.457 1.457 0 01-2.487 1.03L9.22 12.28a.75.75 0 111.06-1.06l2.22 2.22v-2.19a.75.75 0 01.75-.75h1a.25.25 0 00.25-.25v-5.5z"></path></svg></script> <script id="octicon-comment" type="text/x-octicon"><svg class="octicon octicon-comment octicon octicon-comment octicon octicon-comment" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 2.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 01.75.75v2.19l2.72-2.72a.75.75 0 01.53-.22h4.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25H2.75zM1 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 0113.25 12H9.06l-2.573 2.573A1.457 1.457 0 014 13.543V12H2.75A1.75 1.75 0 011 10.25v-7.5z"></path></svg></script> <script id="octicon-git-commit" type="text/x-octicon"><svg class="octicon octicon-git-commit octicon octicon-git-commit octicon octicon-git-commit" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 7.75a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm1.43.75a4.002 4.002 0 01-7.86 0H.75a.75.75 0 110-1.5h3.32a4.001 4.001 0 017.86 0h3.32a.75.75 0 110 1.5h-3.32z"></path></svg></script> <script id="octicon-diff" type="text/x-octicon"><svg class="octicon octicon-diff octicon octicon-diff octicon octicon-diff" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.75 1.75a.75.75 0 00-1.5 0V5H4a.75.75 0 000 1.5h3.25v3.25a.75.75 0 001.5 0V6.5H12A.75.75 0 0012 5H8.75V1.75zM4 13a.75.75 0 000 1.5h8a.75.75 0 100-1.5H4z"></path></svg></script> <script id="octicon-file-binary" type="text/x-octicon"><svg class="octicon octicon-file-binary octicon octicon-file-binary octicon octicon-file-binary" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" 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 0114.25 15h-9a.75.75 0 010-1.5h9a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 0110 4.25V1.5H5.75a.25.25 0 00-.25.25v2a.75.75 0 01-1.5 0v-2zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM0 7.75C0 6.784.784 6 1.75 6h1.5C4.216 6 5 6.784 5 7.75v2.5A1.75 1.75 0 013.25 12h-1.5A1.75 1.75 0 010 10.25v-2.5zm1.75-.25a.25.25 0 00-.25.25v2.5c0 .138.112.25.25.25h1.5a.25.25 0 00.25-.25v-2.5a.25.25 0 00-.25-.25h-1.5zm5-1.5a.75.75 0 000 1.5h.75v3h-.75a.75.75 0 000 1.5h3a.75.75 0 000-1.5H9V6.75A.75.75 0 008.25 6h-1.5z"></path></svg></script> <script id="octicon-git-merge" type="text/x-octicon"><svg class="octicon octicon-git-merge octicon octicon-git-merge octicon octicon-git-merge" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.254V3.25v.005a.75.75 0 110-.005v.004zm.45 1.9a2.25 2.25 0 10-1.95.218v5.256a2.25 2.25 0 101.5 0V7.123A5.735 5.735 0 009.25 9h1.378a2.251 2.251 0 100-1.5H9.25a4.25 4.25 0 01-3.8-2.346zM12.75 9a.75.75 0 100-1.5.75.75 0 000 1.5zm-8.5 4.5a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg></script> <script id="octicon-git-pull-request" type="text/x-octicon"><svg class="octicon octicon-git-pull-request octicon octicon-git-pull-request octicon octicon-git-pull-request" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path></svg></script> <script id="octicon-issue-reopened" type="text/x-octicon"><svg class="octicon octicon-issue-reopened octicon octicon-issue-reopened octicon octicon-issue-reopened" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.491 6.491 0 00-5.285 2.715l1.358 1.358A.25.25 0 013.896 6H.25A.25.25 0 010 5.75V2.104a.25.25 0 01.427-.177l1.216 1.216a8 8 0 0114.315 4.03.748.748 0 01-.668.83.75.75 0 01-.824-.676A6.501 6.501 0 008 1.5zM.712 8.004a.75.75 0 01.822.67 6.501 6.501 0 0011.751 3.111l-1.358-1.358a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.216-1.216A8 8 0 01.042 8.827a.75.75 0 01.67-.823zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"></path></svg></script> <div class="wrapper py-6 my-6"> <div class="col-lg-8 mx-auto"> <div class="d-sm-flex flex-wrap" style="min-height:350px"> <div id="contributionsFeed" class="col-12"> <noscript> <h2>JavaScript is required for this interactive feature.</h2> <p>This section works best with JavaScript. A feed of recent contributions is used with a REST API and JavaScript.</p> </noscript> <ul class="project-list" id="contributionsList"></ul> </div> <script id="contributions-template" type="text/x-handlebars-template"> <li> <article class="activity" style="display:none" id="activity{{ id }}"> <a class="activity__avatar" href="https://github.com/{{ activity.actorLogin }}" target="_new"> <img src="{{ activity.actorAvatar }}" alt="Avatar image of GitHub login {{ activity.actorAvatar }}" /> {{ activity.actorLogin }} </a> <div class="activity__body"> <div class="activity__body-hd"> <a href="{{ activity.activityUrl }}" target="_new"> {{ activity.actorLogin }} </a> <p class="activity__activity"> <span>{{{ octicon }}} {{ description }}</span> <time class="timeago" datetime="{{ activity.created }}">{{ activity.created }}</time> </p> </div> <a class="activity__title" href="{{ activity.activityUrl }}" target="_new"> {{ activity.title }} </a> <div class="activity__footer"> <svg class="octicon octicon-repo octicon octicon-repo" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg> <a href="{{ activity.activityUrl }}" target="_new">{{ activity.orgName }}/{{ activity.repoName }}</a> </div> </div> </article> </li> </script> </div> </div> <div class="mt-6 col-lg-8 mx-auto"> <p class="t6">NOTE: This data represents contributions on GitHub that some of our employees have opted in to sharing. Microsoft does not endorse any particular contribution here, as this list will include everything from hobbyist work through official upstream contributions.</p> </div> </div> <div class="wrapper-full bg-brand-dark text-white"> <div class="wrapper py-6 my-6"> <h3 class="h3">Community Resources</h3> <div class="d-md-flex"> <div class="col-md-6 col-lg-5 mb-4 mb-md-0"> <p>Microsoft open source projects adopt a consistent community Code of Conduct. All Microsoft projects require contributors to sign the individual Contributor License Agreement (CLA) one time.</p> </div> <div class="col-md-6 pl-md-4 pl-lg-6"> <div> <a class="link-arrow-external mb-2" href="/codeofconduct">Microsoft's Open Source Code of Conduct</a> </div> <div> <a class="link-arrow-external mb-2" href="https://cla.opensource.microsoft.com">Microsoft Contributor License Agreement</a> </div> <div> <a class="link-arrow-external mb-2" href="https://3rdpartysource.microsoft.com/">Third-Party Disclosures</a> </div> <div> <a class="link-arrow-external mb-2" href="/program/">Microsoft's Open Source Program</a> </div> <div> <a class="link-arrow-external mb-2" href="/azure-credits">Azure Credits</a> </div> </div> </div> </div> </div> </article> <script> var $ = jQuery; var octicons = {}; function tryGetOcticon(name) { if (octicons[name] !== undefined) { return octicons[name]; } var html = octicon = $('#octicon-' + name).html(); octicons[name] = html || ''; return html; } function octiconFromType(type, optionalContext) { if (optionalContext === 'merged') { return 'git-merge'; } switch(type) { case 'pull_request.opened': return 'git-pull-request'; case 'issue_comment.created': case 'pull_request_review_comment.created': return 'comment'; case 'issues.opened': case 'issues.labeled': return 'issue-opened'; case 'issues.reopened': return 'issue-reopened'; default: return null; } } function descriptionFromType(type, optionalContext) { if (optionalContext === 'merged') { return 'merged a pull request'; } switch(type) { case 'pull_request.reopened': return 're-opened a pull request'; case 'pull_request.opened': return 'opened a pull request'; case 'issues.closed': return 'closed an issue'; case 'issue_comment.created': return 'commented on an issue'; case 'pull_request_review_comment.created': return 'commented on a pull request'; case 'issues.opened': return 'opened an issue'; case 'issues.reopened': return 're-opened an issue'; case 'pull_request_review.submitted': return 'reviewed a pull request'; case 'issues.labeled': return 'good first issue'; default: return type; } } var contributionsFeed = $('#contributionsFeed'), contributionsList = $('#contributionsList'), contributionsSource = $("#contributions-template").html(), contributionsTemplate = Handlebars.compile(contributionsSource); var visibleIds = {}; var initialContributionsDisplay = 15; function renderContributions(contributions) { var shown = 0; if (contributions && contributions.length) { var contribution = contributions.pop(); while (contribution) { try { if (shown++ < initialContributionsDisplay) { var id = contribution.id; if (!visibleIds[id]) { var octicon = octiconFromType(contribution.type, contribution.context); var html = contributionsTemplate({ activity: contribution, id: id, octicon: tryGetOcticon(octicon), description: descriptionFromType(contribution.type, contribution.context), }); contributionsList.prepend(html); $('#activity' + id).fadeIn(); jQuery('time.timeago').timeago(); } } } catch (ignoredError) { console.dir(ignoredError); } contribution = contributions.pop(); } } } function loadContributions() { $.ajax({ type: 'GET', url: '/api/contributions', dataType: 'json', success: function(contributions){ if (contributions && contributions.contributions) { renderContributions(contributions.contributions); } } }); } // just one-time loadContributions(); </script> </main> <div class="wrapper-full bg-dark"> <div class="py-6 my-6"> <div class="wrapper "> <div class="d-md-flex flex-justify-between"> <div class="col-12 col-md-7 col-lg-7 mb-6 mb-md-0"> <div class="text-white" data-animate-in="fade"> <ul class="list-style-none"> <li> <a class="mt-4 link-arrow-external" href="https://twitter.com/OpenAtMicrosoft" target="_blank" rel= "noopener"> <img class="mr-2" src="/assets/images/svgs/twitter.svg" alt="Twitter icon" title="Twitter icon" /> OpenAtMicrosoft </a> </li> <li> <a class="mt-4 link-arrow-external" href="https://github.com/microsoft/opensource.microsoft.com" target="_blank" rel= "noopener"> <img class="mr-2" src="/assets/images/svgs/github.svg" alt="GitHub icon" title="GitHub icon" /> microsoft/opensource.microsoft.com </a> </li> </ul> </div> </div> <div class="col-12 col-md-5 col-lg-4 pl-md-4 pl-lg-2"> <figure class="intro-svg"> <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 370 178" enable-background="new 0 0 370 178" xml:space="preserve"> <path fill="#FCE100" d="M197.9,58.5c-0.3-0.3-0.6-0.3-1-0.2c0.3,0.6,0.6,1.2,0.9,1.7c0,0,0.1,0,0.1-0.1 C198.2,59.5,198.2,58.9,197.9,58.5z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 14.4334 160.2719)" fill="#FCE100" cx="200.7" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 12.967 163.8036)" fill="#FCE100" cx="204.2" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 11.5045 167.3429)" fill="#FCE100" cx="207.8" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 10.042 170.8824)" fill="#FCE100" cx="211.3" cy="73.3" rx="1" ry="1"/> <path fill="#FCE100" d="M215.5,76.1c-0.4-0.4-1-0.4-1.4,0c0,0,0,0.1-0.1,0.1c0.6,0.3,1.1,0.6,1.7,0.9 C215.9,76.8,215.8,76.4,215.5,76.1z"/> <path fill="#FCE100" d="M194.3,47.9c-0.2-0.2-0.5-0.3-0.8-0.3c0.1,0.6,0.2,1.3,0.4,1.9c0.1,0,0.3-0.1,0.4-0.2 C194.7,48.9,194.7,48.3,194.3,47.9z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 20.8981 154.6656)" fill="#FCE100" cx="197.1" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 19.4313 158.1969)" fill="#FCE100" cx="200.7" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 17.9692 161.7367)" fill="#FCE100" cx="204.2" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 16.5044 165.2719)" fill="#FCE100" cx="207.8" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 15.0398 168.807)" fill="#FCE100" cx="211.3" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 13.5778 172.3472)" fill="#FCE100" cx="214.8" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 12.1112 175.8787)" fill="#FCE100" cx="218.4" cy="73.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 10.6469 179.4146)" fill="#FCE100" cx="221.9" cy="76.9" rx="1" ry="1"/> <path fill="#FCE100" d="M226.1,79.7c-0.4-0.4-1-0.4-1.4,0c-0.1,0.1-0.2,0.3-0.2,0.4c0.6,0.1,1.3,0.3,1.9,0.4 C226.4,80.2,226.3,79.9,226.1,79.7z"/> <path fill="#FCE100" d="M194.3,42.2c0.4-0.4,0.4-1,0-1.4c-0.4-0.4-0.9-0.4-1.3-0.1c0,0.1,0,0.2,0,0.3c0,0.4,0,0.9,0,1.3 C193.4,42.6,194,42.6,194.3,42.2z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 25.8981 152.5946)" fill="#FCE100" cx="197.1" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 24.4312 156.1259)" fill="#FCE100" cx="200.7" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 22.9691 159.6656)" fill="#FCE100" cx="204.2" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 21.5022 163.1967)" fill="#FCE100" cx="207.8" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 20.0423 166.74)" fill="#FCE100" cx="211.3" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 18.5755 170.2718)" fill="#FCE100" cx="214.8" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 17.1112 173.8077)" fill="#FCE100" cx="218.4" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 15.6469 177.3435)" fill="#FCE100" cx="221.9" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 14.1823 180.8787)" fill="#FCE100" cx="225.4" cy="73.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 12.7154 184.4091)" fill="#FCE100" cx="229" cy="76.9" rx="1" ry="1"/> <path fill="#FCE100" d="M233.2,79.7c-0.4-0.4-1-0.4-1.4,0c-0.4,0.4-0.4,0.9-0.1,1.3c0.4,0,0.9,0,1.3,0c0.1,0,0.2,0,0.3,0 C233.6,80.6,233.6,80,233.2,79.7z"/> <path fill="#FCE100" d="M194.3,35.1c0.4-0.4,0.4-1,0-1.4c-0.2-0.2-0.4-0.2-0.6-0.3c-0.1,0.6-0.2,1.3-0.3,1.9 C193.7,35.5,194.1,35.4,194.3,35.1z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 30.8981 150.5235)" fill="#FCE100" cx="197.1" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 29.4335 154.0587)" fill="#FCE100" cx="200.7" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 27.9692 157.5945)" fill="#FCE100" cx="204.2" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 26.5021 161.1258)" fill="#FCE100" cx="207.8" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 25.0399 164.6648)" fill="#FCE100" cx="211.3" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 23.578 168.2048)" fill="#FCE100" cx="214.8" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 22.1113 171.7365)" fill="#FCE100" cx="218.4" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 20.6444 175.2681)" fill="#FCE100" cx="221.9" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 19.1798 178.8031)" fill="#FCE100" cx="225.4" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 17.7176 182.3428)" fill="#FCE100" cx="229" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 16.2509 185.8739)" fill="#FCE100" cx="232.5" cy="73.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 14.7912 189.4185)" fill="#FCE100" cx="236" cy="76.9" rx="1" ry="1"/> <path fill="#FCE100" d="M238.9,79.7c-0.2,0.2-0.3,0.6-0.3,0.9c0.7-0.1,1.3-0.2,1.9-0.3c0-0.2-0.1-0.4-0.3-0.6 C239.9,79.3,239.3,79.3,238.9,79.7z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 35.8981 148.4525)" fill="#FCE100" cx="197.1" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 34.4334 151.9876)" fill="#FCE100" cx="200.7" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 32.9691 155.5235)" fill="#FCE100" cx="204.2" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 31.5045 159.0586)" fill="#FCE100" cx="207.8" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 30.0399 162.5938)" fill="#FCE100" cx="211.3" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 28.5782 166.1336)" fill="#FCE100" cx="214.8" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 27.1087 169.6614)" fill="#FCE100" cx="218.4" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 25.6469 173.2014)" fill="#FCE100" cx="221.9" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 24.1849 176.7409)" fill="#FCE100" cx="225.4" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 22.7151 180.2673)" fill="#FCE100" cx="229" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 21.2533 183.8076)" fill="#FCE100" cx="232.5" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 19.7887 187.3427)" fill="#FCE100" cx="236" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 18.3244 190.8786)" fill="#FCE100" cx="239.6" cy="73.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 16.8601 194.4144)" fill="#FCE100" cx="243.1" cy="76.9" rx="1" ry="1"/> <path fill="#FCE100" d="M197.9,24.5c0.4-0.4,0.4-1,0-1.4c-0.1-0.1-0.3-0.2-0.5-0.3c-0.3,0.6-0.6,1.1-0.8,1.7 C196.9,24.9,197.5,24.9,197.9,24.5z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 39.4334 149.9165)" fill="#FCE100" cx="200.7" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 37.9691 153.4524)" fill="#FCE100" cx="204.2" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 36.5045 156.9876)" fill="#FCE100" cx="207.8" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 35.0425 160.5265)" fill="#FCE100" cx="211.3" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 33.5782 164.0625)" fill="#FCE100" cx="214.8" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 32.1086 167.5904)" fill="#FCE100" cx="218.4" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 30.6443 171.1262)" fill="#FCE100" cx="221.9" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 29.1823 174.6655)" fill="#FCE100" cx="225.4" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 27.7177 178.2006)" fill="#FCE100" cx="229" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 26.2507 181.732)" fill="#FCE100" cx="232.5" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 24.7886 185.2717)" fill="#FCE100" cx="236" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 23.3217 188.8029)" fill="#FCE100" cx="239.6" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 21.8627 192.3481)" fill="#FCE100" cx="243.1" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 20.3954 195.8785)" fill="#FCE100" cx="246.6" cy="73.3" rx="1" ry="1"/> <path fill="#FCE100" d="M249.5,76.1c-0.4,0.4-0.4,0.9-0.1,1.3c0.6-0.3,1.2-0.5,1.7-0.8c0-0.2-0.1-0.4-0.3-0.5 C250.5,75.8,249.9,75.8,249.5,76.1z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 44.4308 147.8421)" fill="#FCE100" cx="200.7" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 42.9718 151.3848)" fill="#FCE100" cx="204.2" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 41.5045 154.9165)" fill="#FCE100" cx="207.8" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 40.0399 158.4516)" fill="#FCE100" cx="211.3" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 38.5755 161.9875)" fill="#FCE100" cx="214.8" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 37.1084 165.5195)" fill="#FCE100" cx="218.4" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 35.6469 169.0592)" fill="#FCE100" cx="221.9" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 34.185 172.5985)" fill="#FCE100" cx="225.4" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 32.7149 176.1253)" fill="#FCE100" cx="229" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 31.2506 179.6611)" fill="#FCE100" cx="232.5" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 29.7887 183.2005)" fill="#FCE100" cx="236" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 28.3244 186.7364)" fill="#FCE100" cx="239.6" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 26.8627 190.277)" fill="#FCE100" cx="243.1" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 25.3926 193.8027)" fill="#FCE100" cx="246.6" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 23.9311 197.3433)" fill="#FCE100" cx="250.2" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 22.4692 200.8835)" fill="#FCE100" cx="253.7" cy="73.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 47.9692 149.3103)" fill="#FCE100" cx="204.2" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 46.5017 152.8419)" fill="#FCE100" cx="207.8" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 45.0427 156.3842)" fill="#FCE100" cx="211.3" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 43.5756 159.9164)" fill="#FCE100" cx="214.8" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 42.1084 163.4485)" fill="#FCE100" cx="218.4" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 40.644 166.9843)" fill="#FCE100" cx="221.9" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 39.1823 170.5233)" fill="#FCE100" cx="225.4" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 37.7177 174.0585)" fill="#FCE100" cx="229" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 36.2505 177.5901)" fill="#FCE100" cx="232.5" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 34.7859 181.1251)" fill="#FCE100" cx="236" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 33.3215 184.6609)" fill="#FCE100" cx="239.6" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 31.8601 188.2012)" fill="#FCE100" cx="243.1" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 30.3983 191.741)" fill="#FCE100" cx="246.6" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 28.9282 195.2675)" fill="#FCE100" cx="250.2" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 27.4664 198.8074)" fill="#FCE100" cx="253.7" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 26.005 202.3483)" fill="#FCE100" cx="257.3" cy="69.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 51.5045 150.7743)" fill="#FCE100" cx="207.8" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 50.0429 154.313)" fill="#FCE100" cx="211.3" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 48.5786 157.8489)" fill="#FCE100" cx="214.8" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 47.1112 161.3812)" fill="#FCE100" cx="218.4" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 45.6469 164.9171)" fill="#FCE100" cx="221.9" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 44.1852 168.4562)" fill="#FCE100" cx="225.4" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 42.7147 171.9834)" fill="#FCE100" cx="229" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 41.2503 175.5192)" fill="#FCE100" cx="232.5" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 39.7917 179.0627)" fill="#FCE100" cx="236" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 38.3214 182.5899)" fill="#FCE100" cx="239.6" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 36.8601 186.1301)" fill="#FCE100" cx="243.1" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 35.3954 189.6653)" fill="#FCE100" cx="246.6" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 33.9311 193.2012)" fill="#FCE100" cx="250.2" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 32.4695 196.7411)" fill="#FCE100" cx="253.7" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 31.0021 200.2722)" fill="#FCE100" cx="257.3" cy="62.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 29.5345 203.8024)" fill="#FCE100" cx="260.8" cy="66.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 55.043 152.2418)" fill="#FCE100" cx="211.3" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 53.5787 155.7778)" fill="#FCE100" cx="214.8" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 52.1143 159.3138)" fill="#FCE100" cx="218.4" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 50.647 162.846)" fill="#FCE100" cx="221.9" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 49.1822 166.3812)" fill="#FCE100" cx="225.4" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 47.7176 169.9164)" fill="#FCE100" cx="229" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 46.2503 173.4482)" fill="#FCE100" cx="232.5" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 44.7856 176.9832)" fill="#FCE100" cx="236" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 43.3244 180.5232)" fill="#FCE100" cx="239.6" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 41.8631 184.0634)" fill="#FCE100" cx="243.1" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 40.3924 187.5898)" fill="#FCE100" cx="246.6" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 38.9312 191.1301)" fill="#FCE100" cx="250.2" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 37.4665 194.6653)" fill="#FCE100" cx="253.7" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 36.0053 198.2059)" fill="#FCE100" cx="257.3" cy="55.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 34.5345 201.7314)" fill="#FCE100" cx="260.8" cy="59.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 33.0759 205.2765)" fill="#FCE100" cx="264.3" cy="62.7" rx="1" ry="1"/> <path fill="#FCE100" d="M214.1,6.9c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4c-0.1-0.1-0.2-0.2-0.4-0.2c-0.4,0.2-0.8,0.4-1.3,0.7 C213.8,6.2,213.8,6.6,214.1,6.9z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 57.1112 157.2391)" fill="#FCE100" cx="218.4" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 55.6469 160.7749)" fill="#FCE100" cx="221.9" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 54.1823 164.3101)" fill="#FCE100" cx="225.4" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 52.7177 167.8452)" fill="#FCE100" cx="229" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 51.2565 171.3851)" fill="#FCE100" cx="232.5" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 49.7887 174.9163)" fill="#FCE100" cx="236" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 48.3212 178.448)" fill="#FCE100" cx="239.6" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 46.8632 181.9923)" fill="#FCE100" cx="243.1" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 45.3986 185.5275)" fill="#FCE100" cx="246.6" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 43.9311 189.059)" fill="#FCE100" cx="250.2" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 42.4665 192.5942)" fill="#FCE100" cx="253.7" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 41.0022 196.1301)" fill="#FCE100" cx="257.3" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 39.5343 199.6604)" fill="#FCE100" cx="260.8" cy="52.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 38.0729 203.2004)" fill="#FCE100" cx="264.3" cy="55.6" rx="1" ry="1"/> <path fill="#FCE100" d="M267.2,58.5c-0.4,0.4-0.4,1,0,1.4c0.3,0.3,0.6,0.3,1,0.2c0.2-0.4,0.4-0.8,0.7-1.3c0-0.1-0.1-0.3-0.2-0.4 C268.2,58.1,267.5,58.1,267.2,58.5z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 60.6469 158.7039)" fill="#FCE100" cx="221.9" cy="6.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 59.1856 162.2426)" fill="#FCE100" cx="225.4" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 57.7177 165.7742)" fill="#FCE100" cx="229" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 56.2534 169.31)" fill="#FCE100" cx="232.5" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 54.7855 172.8413)" fill="#FCE100" cx="236" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 53.3243 176.3811)" fill="#FCE100" cx="239.6" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 51.8633 179.9211)" fill="#FCE100" cx="243.1" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 50.3954 183.4521)" fill="#FCE100" cx="246.6" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 48.9278 186.9836)" fill="#FCE100" cx="250.2" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 47.4664 190.5231)" fill="#FCE100" cx="253.7" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 46.0054 194.0636)" fill="#FCE100" cx="257.3" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 44.5343 197.5895)" fill="#FCE100" cx="260.8" cy="45" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 43.0729 201.1293)" fill="#FCE100" cx="264.3" cy="48.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 41.6089 204.6659)" fill="#FCE100" cx="267.9" cy="52.1" rx="1" ry="1"/> <path fill="#FCE100" d="M224.7,3.3c0.4,0.4,1,0.4,1.4,0c0.4-0.4,0.4-1,0-1.4c-0.1-0.1-0.3-0.2-0.4-0.2c-0.3,0.1-0.6,0.1-0.9,0.2 c0,0-0.1,0-0.1,0.1C224.3,2.3,224.3,2.9,224.7,3.3z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 62.7177 163.7031)" fill="#FCE100" cx="229" cy="6.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 61.2533 167.239)" fill="#FCE100" cx="232.5" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 59.7887 170.7741)" fill="#FCE100" cx="236" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 58.3244 174.31)" fill="#FCE100" cx="239.6" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 56.8601 177.8458)" fill="#FCE100" cx="243.1" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 55.3954 181.381)" fill="#FCE100" cx="246.6" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 53.9277 184.9127)" fill="#FCE100" cx="250.2" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 52.4665 188.4521)" fill="#FCE100" cx="253.7" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 51.0021 191.9879)" fill="#FCE100" cx="257.3" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 49.5341 195.5185)" fill="#FCE100" cx="260.8" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 48.0763 199.0629)" fill="#FCE100" cx="264.3" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 46.6089 202.5948)" fill="#FCE100" cx="267.9" cy="45" rx="1" ry="1"/> <path fill="#FCE100" d="M272.1,47.9c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4c0.4,0.4,1,0.4,1.4,0c0,0,0-0.1,0.1-0.1 c0.1-0.3,0.1-0.6,0.2-0.9C272.3,48.1,272.2,48,272.1,47.9z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 66.2568 165.1715)" fill="#FCE100" cx="232.5" cy="2.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 64.7887 168.7031)" fill="#FCE100" cx="236" cy="6.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 63.3244 172.239)" fill="#FCE100" cx="239.6" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 61.8636 175.7787)" fill="#FCE100" cx="243.1" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 60.392 179.3059)" fill="#FCE100" cx="246.6" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 58.9312 182.8458)" fill="#FCE100" cx="250.2" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 57.4699 186.3852)" fill="#FCE100" cx="253.7" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 56.0056 189.9212)" fill="#FCE100" cx="257.3" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 54.534 193.4476)" fill="#FCE100" cx="260.8" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 53.0729 196.9872)" fill="#FCE100" cx="264.3" cy="34.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 51.6124 200.5284)" fill="#FCE100" cx="267.9" cy="38" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 50.1442 204.0589)" fill="#FCE100" cx="271.4" cy="41.5" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 68.3244 170.1679)" fill="#FCE100" cx="239.6" cy="2.6" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 66.8637 173.7075)" fill="#FCE100" cx="243.1" cy="6.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 65.3954 177.2389)" fill="#FCE100" cx="246.6" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 63.9311 180.7748)" fill="#FCE100" cx="250.2" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 62.4701 184.314)" fill="#FCE100" cx="253.7" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 61.0058 187.85)" fill="#FCE100" cx="257.3" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 59.5375 191.381)" fill="#FCE100" cx="260.8" cy="23.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 58.0765 194.9206)" fill="#FCE100" cx="264.3" cy="27.4" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 56.6089 198.4527)" fill="#FCE100" cx="267.9" cy="30.9" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 55.1406 201.9832)" fill="#FCE100" cx="271.4" cy="34.4" rx="1" ry="1"/> <path fill="#FCE100" d="M247,3.5c-0.4-0.2-0.8-0.3-1.2-0.4c0,0.1,0.1,0.2,0.1,0.2C246.2,3.6,246.7,3.7,247,3.5z"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 68.9311 178.7037)" fill="#FCE100" cx="250.2" cy="6.1" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 67.4702 182.2429)" fill="#FCE100" cx="253.7" cy="9.7" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 66.0059 185.7789)" fill="#FCE100" cx="257.3" cy="13.2" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 64.5339 189.3056)" fill="#FCE100" cx="260.8" cy="16.8" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 63.073 192.845)" fill="#FCE100" cx="264.3" cy="20.3" rx="1" ry="1"/> <ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 61.6125 196.3861)" fill="#FCE100" cx="267.9" cy="23.8" rx="1" ry="1"/> <path fill="#FCE100" d="M270.7,28.1c0.1,0.1,0.1,0.1,0.2,0.1c-0.1-0.4-0.3-0.8-0.4-1.2C270.3,27.3,270.4,27.8,270.7,28.1z"/> <g> <path fill="#FFFFFF" d="M81.5,177.5h-81v-81h81V177.5z M1.5,176.5h79v-79h-79V176.5z"/> </g> <g> <path fill="#FFFFFF" d="M329,81.5c-22.3,0-40.5-18.2-40.5-40.5S306.7,0.5,329,0.5s40.5,18.2,40.5,40.5S351.3,81.5,329,81.5z M329,1.5c-21.8,0-39.5,17.7-39.5,39.5s17.7,39.5,39.5,39.5s39.5-17.7,39.5-39.5S350.8,1.5,329,1.5z"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="100" cy="174" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="115" cy="174" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="130" cy="174" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="145" cy="174" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="160" cy="174" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="99" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="114" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="129" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="144" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="159" r="1"/> </g> <g> <circle fill="#00B7C3" cx="175" cy="174" r="1"/> </g> <g> <circle fill="#50E6FF" cx="41" cy="41" r="40"/> </g> <g> <rect x="289" y="97" fill="#004E8C" width="80" height="80"/> </g> <g> <g> <path fill="#0078D4" d="M108.7,69.3L108.7,69.3c3,3,6.4,5.5,10.2,7.4L101.3,59C103.2,62.8,105.7,66.3,108.7,69.3z"/> <path fill="#0078D4" d="M98.1,50.1l29.8,29.8c1.1,0.3,2.3,0.5,3.5,0.7L97.4,46.7C97.6,47.8,97.8,49,98.1,50.1z"/> <path fill="#0078D4" d="M97,40.6L137.4,81c0.9,0,1.8-0.1,2.7-0.1l-43-43C97.1,38.8,97,39.7,97,40.6z"/> <path fill="#0078D4" d="M97.8,32.9l47.3,47.3c0.8-0.2,1.5-0.3,2.3-0.5l-49-49C98.2,31.4,98,32.2,97.8,32.9z"/> <path fill="#0078D4" d="M99.8,26.4l51.8,51.8c0.7-0.3,1.3-0.5,2-0.8l-53-53C100.3,25.1,100,25.7,99.8,26.4z"/> <path fill="#0078D4" d="M102.5,20.7l54.8,54.8c0.6-0.3,1.2-0.7,1.7-1.1l-55.4-55.4C103.3,19.5,102.9,20.1,102.5,20.7z"/> <path fill="#0078D4" d="M106,15.7L162.3,72c0.5-0.4,1-0.9,1.5-1.3l-56.5-56.5C106.9,14.7,106.5,15.2,106,15.7z"/> <path fill="#0078D4" d="M110.2,11.3l56.5,56.5c0.4-0.5,0.9-1,1.3-1.5L111.7,10C111.2,10.5,110.7,10.9,110.2,11.3z"/> <path fill="#0078D4" d="M114.9,7.6l55.4,55.4c0.4-0.6,0.7-1.2,1.1-1.7L116.7,6.5C116.1,6.9,115.5,7.3,114.9,7.6z"/> <path fill="#0078D4" d="M120.4,4.6l53,53c0.3-0.7,0.6-1.3,0.8-2L122.4,3.8C121.7,4,121.1,4.3,120.4,4.6z"/> <path fill="#0078D4" d="M126.6,2.4l49,49c0.2-0.8,0.4-1.5,0.5-2.3L128.9,1.8C128.2,2,127.4,2.2,126.6,2.4z"/> <path fill="#0078D4" d="M133.9,1.1l43,43c0.1-0.9,0.1-1.8,0.1-2.7L136.6,1C135.7,1,134.8,1.1,133.9,1.1z"/> <path fill="#0078D4" d="M142.7,1.4l33.9,33.9c-0.2-1.2-0.4-2.3-0.7-3.5L146.1,2.1C145,1.8,143.8,1.6,142.7,1.4z"/> </g> <path fill="#0078D4" d="M155,5.3L172.7,23C168.8,15.4,162.6,9.2,155,5.3z"/> </g> <g> <rect x="193" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="199" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="205" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="211" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="217" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="223" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="229" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="235" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="241" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="247" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="253" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="259" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="265" y="98" fill="#4F6BED" width="2" height="80"/> </g> <g> <rect x="271" y="98" fill="#4F6BED" width="2" height="80"/> </g> </svg> </figure> </div> </div> </div> </div> </div> <footer class="site-footer" role="contentinfo"> <div class="wrapper d-xl-flex flex-justify-between flex-items-center flex-column"> <div class="site-footer__brand flex-column"> <img class="mb-4" src="/assets/images/Microsoft-icon-white.svg" alt="Microsoft icon" /> <p class="mb-4">Powered by <a class="link-decorated" href="/thanks/">Open Source</a> and Microsoft Azure</p> </div> <ul> <li> <a href="https://aka.ms/opensource" onclick="return confirm('Are you sure you want to continue to https://aka.ms/opensource? This resource is restricted to Microsoft employees to share guidance and documentation about open source at Microsoft.\n\nIf you continue, you will be redirected to authenticate with Azure Active Directory, and the error messages may be confusing if you are not able to sign-in.')">Employee sign-in</a> </li> <li> <a href="https://careers.microsoft.com/us/en/search-results?keywords=open%20source" target="_new">Jobs</a> </li> <li> <a href="https://opensource.microsoft.com/blog/" target="_new">Blog</a> </li> <li> <a href="/codeofconduct/">Code of Conduct</a> </li> <li> <a href="https://aka.ms/yourcaliforniaprivacychoices" class="c-uhff-link c-uhff-ccpa" style="display: inline-block"> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43" style="display: inline-block"> <title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path> </svg> <span>Your Privacy Choices</span> </a> </li> <li> <a href="https://privacy.microsoft.com/en-us/privacystatement" target="_blank">Privacy & Cookies</a> </li> <li id="manageCookies" data-require-javascript="yes" data-javascript-show="immediate"> <a href="#" onclick="manageCookies()" >Manage Cookies</a> </li> <li> <a href="https://www.microsoft.com/en-us/legal/intellectualproperty/copyright/default.aspx" target="_blank">Terms</a> </li> <li> <a href="https://www.microsoft.com/trademarks" target="_blank">Trademarks</a> </li> <li> <p>© <span id="year">2023</span> Microsoft</p> </li> </ul> </div> <script> var date = new Date().getFullYear(), year = document.getElementById('year'); if(year) { document.getElementById('year').innerHTML = date; } </script> </footer> <script src="/assets/js/gsap.min.js"></script> <script src="/assets/js/DrawSVGPlugin.min.js"></script> <script src="/assets/js/main.js"></script> <script id="uhf-footer-ccpa"> // Detect GPC const globalPrivacyControlEnabled = navigator.globalPrivacyControl; // Set data sharing opt-in to false when GPC/AMC controls detected const GPC_DataSharingOptIn = (globalPrivacyControlEnabled) ? false : checkThirdPartyAdsOptOutCookie(); // Detect AMC opt out choice function checkThirdPartyAdsOptOutCookie() { try { const ThirdPartyAdsOptOutCookieName = '3PAdsOptOut'; var cookieValue = getCookie(ThirdPartyAdsOptOutCookieName); //for unauthenticated users return cookieValue != 1; } catch { return true; } } function getCookie(cookieName) { var cookieValue = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)'); return (cookieValue) ? cookieValue[2] : ''; } </script> <script type="text/javascript"> function enableAppInsights() { var appInsights=window.appInsights||function(config){function s(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},r=document,f=window,e="script",o=r.createElement(e),i,u;for(o.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js",r.getElementsByTagName(e)[0].parentNode.appendChild(o),t.cookie=r.cookie,t.queue=[],i=["Event","Exception","Metric","PageView","Trace"];i.length;)s("track"+i.pop());return config.disableExceptionTracking||(i="onerror",s("_"+i),u=f[i],f[i]=function(config,r,f,e,o){var s=u&&u(config,r,f,e,o);return s!==!0&&t["_"+i](config,r,f,e,o),s}),t}({instrumentationKey:"98f90d2e-54e0-4e9c-a919-deea70bad056"/*the telemetry instrumentation key is NOT a secret FYI */});window.appInsights=appInsights;appInsights.trackPageView(); } </script> <!-- <script src="https://az725175.vo.msecnd.net/scripts/jsll-4.js"></script> --> <script> var siteConsent = null; const currentUrl = window.location.href; const searchParams = new URLSearchParams(new URL(currentUrl).search); var showTelemetryDebug = searchParams.has('console'); if (showTelemetryDebug) { console.log('Will show telemetry debug in the console.'); } function enableAnalytics() { var config = { coreData: { appId: 'opensource.microsoft.com' } }; // no longer using this secondary provider: awa.init(config); } function addTelemetry() { enableAppInsights(); enableAnalytics(); } function onConsentChanged(categoryPreferences) { showTelemetryDebug && console.log('onConsentChanged.'); evaluateUserConsent(); evaluateShowManagement(); } function evaluateShowManagement() { document.getElementById('manageCookies').style.display = siteConsent.isConsentRequired ? 'inline-block' : 'none'; } function evaluateUserConsent() { try { // only connect if there is opt-in (Cali.) and/or cookie banner consent in a required place if (GPC_DataSharingOptIn === true && siteConsent && siteConsent.getConsentFor(WcpConsent.consentCategories.Analytics)) { addTelemetry(); showTelemetryDebug && console.log('Telemetry added.'); } else { if (GPC_DataSharingOptIn === false) { showTelemetryDebug && console.log('No data sharing opt-in present.'); } else { showTelemetryDebug && console.log('No site consent for telemetry.'); } } } catch (error) { if (showTelemetryDebug) { console.dir(error); } } } WcpConsent.init('en-US', 'cookiebanner', function (err, _siteConsent) { if (err != undefined) { if (showTelemetryDebug) { console.log('WcpConsent.init error', err); } return error; } else { siteConsent = _siteConsent; if (showTelemetryDebug) { console.log('WcpConsent.init', siteConsent); } } evaluateShowManagement(); evaluateUserConsent(); }, onConsentChanged); function manageCookies() { if(siteConsent.isConsentRequired){ siteConsent.manageConsent(); } return false; } </script> </body> </html>