<?xml version="1.0" encoding="UTF-8"?>
<!-- Hand-maintained (see astro.config.mjs). All <loc>/hreflang hrefs use the
     TRAILING-SLASH form Astro actually serves — a bare path 301s to the slashed
     one, and submitting the bare form made Google index nothing (redirect +
     canonical loop). The two SPA shells (/gravity/, /snore-analyzer/) are NOT
     listed: they canonicalize to the marketing pages by design, so submitting
     them only produces "alternate page with proper canonical tag" exclusions. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://hplab.dev/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://hplab.dev/products/gravity/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/gravity/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/products/gravity/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/gravity/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/gravity/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/products/snore-analyzer/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/snore-analyzer/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/products/snore-analyzer/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/products/snore-analyzer/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/products/snore-analyzer/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/how-to-record-snoring/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/how-to-record-snoring/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/how-to-record-snoring/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/how-to-record-snoring/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/snoring-vs-sleep-apnea-sounds/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/snoring-vs-sleep-apnea-sounds/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/understand-your-snore-report/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/understand-your-snore-report/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/understand-your-snore-report/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/understand-your-snore-report/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/learn/visualize-your-professional-network/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/learn/visualize-your-professional-network/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/learn/visualize-your-professional-network/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/learn/visualize-your-professional-network/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://hplab.dev/privacy/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/privacy/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/privacy/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/privacy/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/privacy/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/privacy/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/privacy/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/terms/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/terms/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/terms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/terms/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://hplab.dev/zh/terms/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://hplab.dev/terms/"/>
    <xhtml:link rel="alternate" hreflang="zh-Hans" href="https://hplab.dev/zh/terms/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://hplab.dev/terms/"/>
    <lastmod>2026-07-13</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
