{"id":3506,"date":"2026-08-21T09:08:51","date_gmt":"2026-08-21T01:08:51","guid":{"rendered":"https:\/\/thezodiaclore.com\/bazi-calculator\/"},"modified":"2026-09-23T22:59:08","modified_gmt":"2026-09-23T14:59:08","slug":"calculateur-de-bazi","status":"publish","type":"page","link":"https:\/\/thezodiaclore.com\/fr\/bazi-calculator\/","title":{"rendered":"Calculateur BaZi : vos quatre piliers du destin"},"content":{"rendered":"\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"preload\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;700;800;900&#038;family=Noto+Sans+SC:wght@400;500;700&#038;family=Spline+Sans+Mono:wght@400;500&#038;display=swap\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\"><noscript><link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@400;500;600;700;800;900&#038;family=Noto+Sans+SC:wght@400;500;700&#038;family=Spline+Sans+Mono:wght@400;500&#038;display=swap\"><\/noscript>\n<script src=\"https:\/\/unpkg.com\/@phosphor-icons\/web@2.1.1\" defer><\/script>\n<style>\n\/* The Zodiac Lore \u2014 Year\/Animal\/Compat page style \u2014 BRAND-UNIFIED to new homepage (Style B). Shared head; assemble with body via concat. *\/\n.tzl-page{\n  --bg:#fff;--ink:#0a0a0a;--soft:#3a3a3a;--grey:#5c5c5c;--muted:#9a9a9a;--line:#e6e6e6;\n  --accent:#e1391b;--accent-dark:#b02a12;\n  --sans:\"Archivo\",Arial,sans-serif;--mono:\"Spline Sans Mono\",ui-monospace,monospace;\n  --zh:\"Noto Sans SC\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;\n  max-width:1040px;margin:0 auto;color:var(--ink);background:var(--bg);\n  font-family:var(--sans);font-size:17px;line-height:1.7;\n}\n.tzl-page *{box-sizing:border-box}\n.tzl-page a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(225,57,27,.35)}\n.tzl-page a:hover{color:var(--ink);border-bottom-color:var(--ink)}\n\n\/* hero \u2014 flat, 2px rule on top, giant Archivo headline, mono kicker, faint zodiac-seal water-mark *\/\n.tzl-hero{position:relative;background:var(--bg);padding:40px 0 36px;margin:8px 0 8px;overflow:hidden}\n.tzl-hero:after{content:\"\";position:absolute;right:-8px;bottom:-16px;width:clamp(150px,21vw,236px);height:clamp(150px,21vw,236px);background:no-repeat center\/contain;opacity:.12;z-index:0;pointer-events:none}\n.tzl-hero.rat:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-rat-yang-t.png)}\n.tzl-hero.ox:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-ox-yang-t.png)}\n.tzl-hero.tiger:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-tiger-yang-t.png)}\n.tzl-hero.rabbit:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-rabbit-yang-t.png)}\n.tzl-hero.dragon:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-dragon-yang-t.png)}\n.tzl-hero.snake:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-snake-yang-t.png)}\n.tzl-hero.horse:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-horse-yang-t.png)}\n.tzl-hero.goat:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-goat-yang-t.png)}\n.tzl-hero.monkey:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-monkey-yang-t.png)}\n.tzl-hero.rooster:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-rooster-yang-t.png)}\n.tzl-hero.dog:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-dog-yang-t.png)}\n.tzl-hero.pig:after{background-image:url(https:\/\/thezodiaclore.com\/wp-content\/uploads\/2026\/06\/zl-seal-pig-yang-t.png)}\n.tzl-kicker{display:inline-flex;align-items:center;gap:12px;margin:0 0 18px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:500;position:relative;z-index:1}\n.tzl-kicker:before{content:\"\";width:28px;height:2px;background:var(--accent)}\n.tzl-hero h2{font-family:var(--sans);font-weight:900;font-size:clamp(34px,5vw,54px);line-height:1.02;letter-spacing:-.03em;text-transform:uppercase;margin:0 0 18px;max-width:18ch;position:relative;z-index:1}\n.tzl-hero h2 em,.tzl-section h2 em{color:var(--accent);font-style:normal}\n.tzl-hero p{max-width:62ch;margin:0 0 14px;color:var(--grey);font-size:18px;line-height:1.6;position:relative;z-index:1}\n\n\/* section \u2014 2px black divider like homepage .sec *\/\n.tzl-section{position:relative;padding:48px 0 0;margin:0 0 4px;border-top:2px solid var(--ink)}\n.tzl-section h2{font-family:var(--sans);font-weight:800;font-size:clamp(25px,3vw,38px);line-height:1.08;letter-spacing:-.02em;margin:0 0 18px}\n.tzl-section h3{font-weight:700;font-size:21px;line-height:1.25;margin:28px 0 12px;letter-spacing:-.01em}\n.tzl-section p{margin:0 0 18px;color:var(--soft)}\n.tzl-section ul,.tzl-section ol{margin:0 0 22px 22px;color:var(--soft)}\n.tzl-section li{margin:0 0 8px}\n\n\/* cards \u2014 flat, square, hover to accent border *\/\n.tzl-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:26px 0 32px}\n.tzl-card-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.tzl-card{background:var(--bg);border:1px solid var(--line);padding:22px 20px;min-height:150px;transition:border-color .15s}\n.tzl-card:hover{border-color:var(--accent)}\n.tzl-card .label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:9px}\n.tzl-card strong{display:block;font-family:var(--sans);font-size:21px;line-height:1.2;font-weight:800;letter-spacing:-.01em;margin-bottom:9px;color:var(--ink)}\n.tzl-card p strong{display:inline;font-family:inherit;font-size:inherit;line-height:inherit;font-weight:700;letter-spacing:normal;margin:0;color:inherit}\n.tzl-card p{font-size:15px;line-height:1.55;margin:0;color:var(--soft)}\n\n\/* note \u2014 light grey block, accent left rule, square; .mark holds a Phosphor icon (NOT a bare Chinese glyph) *\/\n.tzl-note{background:#fafafa;border-left:3px solid var(--accent);padding:22px 26px;margin:26px 0 32px;color:var(--soft);font-size:16px;line-height:1.7}\n.tzl-note:has(.mark){display:grid;grid-template-columns:56px 1fr;gap:20px;align-items:start}\n.tzl-note .mark{color:var(--accent);font-size:40px;line-height:1}\n.tzl-note strong{font-family:var(--sans);font-weight:800;color:var(--ink);letter-spacing:-.01em}\n.tzl-note h3{font-family:var(--sans);font-weight:800;color:var(--ink);font-size:18px;margin:0 0 10px;letter-spacing:-.01em}\n.tzl-note p{color:var(--soft);font-size:16px;margin:0 0 12px}\n\n\/* table \u2014 black header bar (mono), square, hairline rows *\/\n.tzl-table-wrap{overflow-x:auto;border:1px solid var(--line);background:var(--bg);margin:24px 0 34px}\n.tzl-table{width:100%;min-width:760px;border-collapse:collapse;margin:0;font-size:15px}\n.tzl-table th,.tzl-table td{border-bottom:1px solid var(--line);padding:13px 15px;text-align:left;vertical-align:top}\n.tzl-table th{background:var(--ink);color:#fff;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}\n.tzl-table tr:last-child td{border-bottom:none}\n.tzl-table tbody tr:hover td{background:#faf7f6}\n.tzl-cn{font-family:var(--zh);font-weight:500;color:var(--accent);font-size:21px;margin-right:8px}\n.tzl-muted{font-family:var(--mono);font-size:12px;color:var(--muted)}\n\n\/* faq \u2014 homepage +\/- pattern *\/\n.tzl-faq{border-top:2px solid var(--ink);margin-top:20px}\n.tzl-faq details{border-bottom:1px solid var(--line);padding:18px 0}\n.tzl-faq summary{cursor:pointer;font-family:var(--sans);font-weight:700;font-size:19px;line-height:1.35;color:var(--ink);list-style:none;letter-spacing:-.01em}\n.tzl-faq summary::-webkit-details-marker{display:none}\n.tzl-faq summary:before{content:\"+ \";color:var(--accent);font-weight:800}\n.tzl-faq details[open] summary:before{content:\"\u2013 \"}\n.tzl-faq p{padding-top:12px;font-size:16px;color:var(--soft)}\n\n\/* next \u2014 square link grid, hover inverts to black *\/\n.tzl-next{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;border:1px solid var(--line);background:var(--line);margin:26px 0 10px}\n.tzl-next>br{display:none}\n.tzl-next>a{display:block;min-height:110px;padding:22px 20px;background:var(--bg);color:var(--ink);border:0}\n.tzl-next>a:hover{background:var(--ink);color:#fff}\n.tzl-next>a:hover span{color:rgba(255,255,255,.55)}\n.tzl-next span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}\n.tzl-next b{display:block;font-family:var(--sans);font-size:17px;font-weight:800;line-height:1.25;letter-spacing:-.01em}\n\n\/* approved reusable article assets *\/\n.tzl-figure{max-width:760px;margin:28px auto 36px}\n.tzl-figure img{display:block;width:100%;height:auto;border:1px solid var(--line);background:var(--bg)}\n.tzl-figure figcaption{margin-top:10px;color:var(--muted);font-size:13.5px;line-height:1.6;text-align:left}\n\n\/* editorial note *\/\n.tzl-editorial{margin-top:34px;padding-top:20px;border-top:1px solid var(--line)}\n.tzl-editorial h3{margin:0 0 7px;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}\n.tzl-editorial p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.7}\n\n@media(max-width:900px){.tzl-card-grid,.tzl-card-grid.two,.tzl-next{grid-template-columns:1fr}}\n\/* ===== Element-combination pages (legacy class set: wrap \/ mark \/ mini \/ links \/ source-note) \u2014 brand-unified ===== *\/\n.tzl-wrap{max-width:1040px;margin:0 auto;padding:0 22px}\n\/* element-page hero water-mark is a bare glyph in .tzl-mark \u2014 hide it; the .tzl-hero.{animal} seal (:after) shows instead *\/\n.tzl-mark{display:none}\n\/* on element pages each content block is <section class=\"tzl-card\"> (a full-width section, NOT a small grid card) \u2014 render like .tzl-section *\/\nsection.tzl-card{position:relative;background:var(--bg);border:0;border-top:2px solid var(--ink);border-radius:0;box-shadow:none;min-height:0;padding:48px 0 0;margin:0 0 4px}\nsection.tzl-card > h2{font-family:var(--sans);font-weight:800;font-size:clamp(25px,3vw,38px);line-height:1.08;letter-spacing:-.02em;margin:0 0 18px}\nsection.tzl-card > h2 em{color:var(--accent);font-style:normal}\nsection.tzl-card h3{font-weight:700;font-size:21px;line-height:1.25;margin:28px 0 12px;letter-spacing:-.01em}\nsection.tzl-card p{margin:0 0 18px;color:var(--soft)}\nsection.tzl-card ul,section.tzl-card ol{margin:0 0 22px 22px;color:var(--soft)}\nsection.tzl-card li{margin:0 0 8px}\nhtml.tzl-dark section.tzl-card{background:var(--bg)!important}\n.tzl-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}\n.tzl-mini{background:var(--bg);border:1px solid var(--line);padding:20px;transition:border-color .15s}\n.tzl-mini:hover{border-color:var(--accent)}\n.tzl-mini strong{display:block;margin-bottom:8px;font-family:var(--sans);font-weight:800;color:var(--ink);font-size:18px;line-height:1.2;letter-spacing:-.01em}\n.tzl-mini span{display:block;margin-bottom:8px;font-family:var(--mono);color:var(--accent);font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}\n.tzl-mini p{margin:0;font-size:15px;line-height:1.55;color:var(--soft)}\n.tzl-links{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;border:1px solid var(--line);background:var(--line);margin-top:20px}\n.tzl-links.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.tzl-links>br{display:none}\n.tzl-links>a{display:block;min-height:120px;padding:22px 20px;border:0;background:var(--bg);color:var(--soft);text-decoration:none}\n.tzl-links a strong{display:block;margin-bottom:8px;font-family:var(--sans);font-size:17px;font-weight:800;line-height:1.25;letter-spacing:-.01em;color:var(--ink)}\n.tzl-links a span{display:block;margin-top:10px;font-family:var(--mono);color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:500}\n.tzl-links a:hover,.tzl-links a:focus,.tzl-links a:active{background:var(--ink);color:#fff;outline:0}\n.tzl-links a:hover strong,.tzl-links a:focus strong,.tzl-links a:active strong,\n.tzl-links a:hover span,.tzl-links a:focus span,.tzl-links a:active span{color:#fff}\n.tzl-source-note{color:var(--muted);font-size:13.5px;line-height:1.7;font-family:var(--sans)}\n\n@media(max-width:560px){.tzl-page{font-size:16px}.tzl-hero{padding:30px 0}.tzl-hero h2{font-size:30px}.tzl-section h2{font-size:24px}.tzl-note{grid-template-columns:1fr}.tzl-hero:after{width:120px;height:120px}}\n@media(max-width:900px){.tzl-mini-grid,.tzl-links,.tzl-links.two{grid-template-columns:1fr}}\n\n\/* \u6697\u8272 = \u4ec5\u7531\u5168\u7ad9\u5b9a\u5236\u5668\u7684\u300cMOON DARK\u300d\u624b\u52a8\u5f00\u5173(html.tzl-dark)\u63a7\u5236;\u54c1\u724c\u9ed8\u8ba4\u6052\u4eae(\u767d\u5e95)\u3002\n   \u26a0 \u5207\u52ff\u5728\u6b64\u52a0 @media (prefers-color-scheme: dark) \u81ea\u52a8\u6697\u2014\u2014\u4f1a\u8ba9\u9875\u9762\u5728\u6df1\u8272\u6a21\u5f0f\u8bbe\u5907\u4e0a\u81ea\u52a8\u53d8\u9ed1,\n   \u4e0e\u5176\u4f59 101 \u9875(\u6052\u4eae+\u624b\u52a8\u5f00\u5173)\u4e0d\u4e00\u81f4;2026-06-25 \u56e0\u6b64\u5bfc\u81f4 2017 \u9875\u53d1\u6697,\u5df2\u79fb\u9664\u3002 *\/\n\n  \/* ===== On-page TOC (self-contained, auto-built by JS below; no plugin\/shortcode) ===== *\/\n  .tzl-toc{border:2px solid var(--ink,#0a0a0a);padding:16px 22px;margin:0 0 30px;background:var(--bg,#fff)}\n  .tzl-toc-h{font-family:'Spline Sans Mono',monospace;text-transform:uppercase;font-size:12px;letter-spacing:.1em;color:var(--ink,#0a0a0a);margin-bottom:10px}\n  .tzl-toc-list{list-style:none;margin:0;padding:0;columns:2;column-gap:30px}\n  .tzl-toc-list li{margin:0 0 7px;break-inside:avoid}\n  .tzl-toc-list a{color:var(--ink,#0a0a0a);text-decoration:none;font-size:15px;border-bottom:1px solid transparent;transition:color .15s}\n  .tzl-toc-list a:hover{color:var(--accent,#e1391b);border-bottom-color:var(--accent,#e1391b)}\n  @media(max-width:600px){.tzl-toc-list{columns:1}}\n  \/* ===== \u6697\u8272\u5bf9\u6bd4\u5ea6\u4fee\u8865:\u4e0b\u5217\u5143\u7d20\u7528 var(--ink) \u5f53\u80cc\u666f,\u624b\u52a8\u6697\u8272(html.tzl-dark)\u4e0b --ink \u53d8\u6d45\u2192\u767d\u5b57\u770b\u4e0d\u6e05 ===== *\/\n  html.tzl-dark .tzl-table th{background:#262626;color:#f2f2f2}\n  html.tzl-dark .tzl-next a:hover{background:var(--accent,#e1391b);color:#fff}\n  html.tzl-dark .tzl-next a:hover span{color:rgba(255,255,255,.7)}\n  html.tzl-dark .tzl-links a:hover,html.tzl-dark .tzl-links a:focus,html.tzl-dark .tzl-links a:active{background:var(--accent,#e1391b);color:#fff}\n  html.tzl-dark .tzl-links a:hover strong,html.tzl-dark .tzl-links a:focus strong,html.tzl-dark .tzl-links a:active strong,\n  html.tzl-dark .tzl-links a:hover span,html.tzl-dark .tzl-links a:focus span,html.tzl-dark .tzl-links a:active span{color:#fff}\n<\/style>\n<script>\n\/* The Zodiac Lore \u2014 \u81ea\u5305\u542b on-page TOC\u3002\u4ece\u6b63\u6587 h2 \u81ea\u52a8\u751f\u6210(\u8df3\u8fc7 hero+FAQ),\u63d2\u5728 hero \u540e,\u22653 \u4e2a\u6807\u9898\u624d\u663e\u793a\u3002\n   \u53d6\u4ee3\u5df2\u5e9f\u5f03\u7684 TOC \u63d2\u4ef6\u77ed\u4ee3\u7801(\u63d2\u4ef6\u5df2\u4e0d\u518d\u6e32\u67d3,\u4e14\u77ed\u4ee3\u7801\u5728 wp:html \u5757\u91cc\u672c\u5c31\u4e0d\u6267\u884c,\u4f1a\u88ab\u5f53\u88f8\u6587\u5b57\u663e\u793a)\u3002\n   \ud83d\udeab \u4e0d\u8981\u518d\u5f80\u6b63\u6587\u653e\u90a3\u4e2a\u77ed\u4ee3\u7801\u2014\u2014\u7ad9\u957f 2026-08-27 \u5b9a,\u8d28\u68c0\u4f1a\u786c\u62e6\u3002\u7528 var(--ink\/--bg\/--accent) \u6545 MOON DARK \u6697\u8272\u4e5f\u9002\u914d\u3002 *\/\n(function(){\n  function go(){\n    var page=document.querySelector('.tzl-page'); if(!page)return; if(page.querySelector('.tzl-toc'))return;\n    var all=page.querySelectorAll('h2');var hs=[];\n    for(var q=0;q<all.length;q++){if(all[q].closest('.tzl-hero')){continue;}if(all[q].closest('.tzl-faq')){continue;}hs.push(all[q]);}\n    if(hs.length<3)return;\n    var ul='';\n    hs.forEach(function(h,i){\n      if(!h.id){var s=(h.textContent||'').trim().toLowerCase().replace(\/[^a-z0-9]+\/g,'-').replace(\/^-+|-+$\/g,'').slice(0,50)||('sec'+i);var id=s,k=2;while(document.getElementById(id)){id=s+'-'+(k++);}h.id=id;}\n      ul+='<li><a href=\"#'+h.id+'\">'+(h.textContent||'').trim()+'<\/a><\/li>';\n    });\n    var nav=document.createElement('nav');nav.className='tzl-toc';nav.setAttribute('aria-label','Contents');\n    nav.innerHTML='<div class=\"tzl-toc-h\">On this page<\/div><ul class=\"tzl-toc-list\">'+ul+'<\/ul>';\n    var hero=page.querySelector('.tzl-hero');\n    if(hero){if(hero.parentNode){hero.parentNode.insertBefore(nav,hero.nextSibling);return;}}\n    page.insertBefore(nav,page.firstChild);\n  }\n  if(document.readyState!=='loading')go();else document.addEventListener('DOMContentLoaded',go);\n})();\n<\/script>\n\n\n<div class=\"tzl-page\">\n\n<section class=\"tzl-hero\">\n  <div class=\"tzl-kicker\">Chinese Astrology \u00b7 Four Pillars \u00b7 \u516b\u5b57 B\u0101z\u00ec<\/div>\n  <h2>BaZi Calculator: <em>Your Chinese Astrology Birth Chart<\/em><\/h2>\n  <p><strong>BaZi (\u516b\u5b57) is the Chinese astrology birth chart.<\/strong> Where a Western birth chart maps the planets at a moment of birth, a BaZi chart turns that same moment into eight Chinese characters \u2014 a Heavenly Stem and an Earthly Branch for the year, month, day and hour. Those four stem-and-branch pairs are the Four Pillars of Destiny. The chart uses astronomical solar terms for the year and month boundaries, then derives the day and hour pillars from the sexagenary cycle rules. This page shows its working, including the places where the answer is sensitive to the exact minute you were born.<\/p>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Work out your four pillars<\/h2>\n\n  <div class=\"tzl-card\" id=\"tzl-bazi-tool\">\n    <div class=\"tzl-bazi-form\">\n      <label class=\"tzl-bazi-label\" for=\"tzl-bz-date\">Date of birth (Gregorian calendar)\n        <input type=\"date\" id=\"tzl-bz-date\" min=\"1900-01-01\" max=\"2100-12-31\">\n      <\/label>\n      <label class=\"tzl-bazi-label\" for=\"tzl-bz-time\">Time of birth (local clock, as recorded)\n        <input type=\"time\" id=\"tzl-bz-time\">\n      <\/label>\n      <label class=\"tzl-bazi-label\" for=\"tzl-bz-utc\">UTC offset at birth\n        <select id=\"tzl-bz-utc\"><\/select>\n        <input type=\"text\" id=\"tzl-bz-utc-custom\" placeholder=\"+13:45\" hidden>\n      <\/label>\n      <button type=\"button\" id=\"tzl-bz-go\">Calculate<\/button>\n    <\/div>\n    <label class=\"tzl-bazi-check\" for=\"tzl-bz-unknown\">\n      <input type=\"checkbox\" id=\"tzl-bz-unknown\"> I do not know my birth time\n    <\/label>\n    <p class=\"tzl-bazi-hint\">Enter the time as it was written down where you were born. The offset defaults to your browser&#8217;s current setting \u2014 change it if the birthplace or the date calls for a different one.<\/p>\n    <p class=\"tzl-bazi-tzhint\" id=\"tzl-bz-tzhint\"><\/p>\n\n    <div id=\"tzl-bz-out\" hidden>\n      <div class=\"tzl-table-wrap\">\n        <table class=\"tzl-table\">\n          <thead>\n            <tr><th>Pillar<\/th><th>Stem<\/th><th>Branch<\/th><th>Reads as<\/th><\/tr>\n          <\/thead>\n          <tbody id=\"tzl-bz-rows\"><\/tbody>\n        <\/table>\n      <\/div>\n      <p id=\"tzl-bz-summary\" class=\"tzl-bazi-summary\"><\/p>\n      <div id=\"tzl-bz-notes\"><\/div>\n    <\/div>\n    <p id=\"tzl-bz-err\" class=\"tzl-bazi-err\" hidden><\/p>\n  <\/div>\n\n  <p>Each pillar is one Heavenly Stem paired with one Earthly Branch. The ten stems carry the five elements in a yang and yin form \u2014 Yang Wood, Yin Wood, Yang Fire, and so on. The twelve branches are the same twelve signs that carry the zodiac animals, which is why the year branch of the sample 15 June 1990 chart is W\u01d4, the Horse. The stem and branch advance together in a repeating sixty-step cycle, so a full stem-and-branch pair returns only once every sixty years. That cycle is set out in more detail on our page about the <a href=\"https:\/\/thezodiaclore.com\/60-year-chinese-zodiac-cycle\/\">60-year Chinese zodiac cycle<\/a>, and the naming logic behind the pairs is covered under <a href=\"https:\/\/thezodiaclore.com\/heavenly-stems-earthly-branches\/\">Heavenly Stems and Earthly Branches<\/a>.<\/p>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Under the L\u00ecch\u016bn convention, the year turns before Chinese New Year<\/h2>\n\n  <p>This is where most online charts and most casual assumptions part company. Two different conventions for starting a new year are both in use. Ordinary zodiac-year lookup \u2014 the kind that tells you which animal a given year belongs to \u2014 changes on the first day of the lunar year. Many BaZi systems, including this calculator, change at <strong>L\u00ecch\u016bn<\/strong>, the solar term called Start of Spring, which falls when the sun reaches an apparent ecliptic longitude of 315\u00b0. In practice that lands on 3, 4 or 5 February.<\/p>\n\n  <p>The gap matters more than it sounds, because Chinese New Year can fall anywhere from late January to late February. In 2026, L\u00ecch\u016bn arrives on 4 February and Chinese New Year not until 17 February \u2014 leaving a stretch of thirteen days where the two disagree. Someone born on 10 February 2026 is still in the lunar Year of the Snake, but under the L\u00ecch\u016bn convention used here their BaZi year pillar has already turned to the Fire Horse year. Our wider discussion of that trap is on the page for <a href=\"https:\/\/thezodiaclore.com\/january-february-zodiac\/\">January and February zodiac birthdays<\/a>.<\/p>\n\n  <div class=\"tzl-note\">\n    <span class=\"mark\"><i class=\"ph ph-warning-circle\" aria-hidden=\"true\"><\/i><\/span>\n    <div>If you were born in the first week of February, the calculator above will tell you how close you are to the boundary. Within a day of L\u00ecch\u016bn, the year pillar depends on the recorded hour, and an error of one hour in your birth record can move it.<\/div>\n  <\/div>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>The month pillar follows the solar terms, not the lunar months<\/h2>\n\n  <p>A second assumption worth dropping: the BaZi month is not the lunar month. The traditional calendar divides the solar year into twenty-four solar terms, and those alternate between twelve <em>ji\u00e9<\/em> (\u7bc0, the &#8220;nodes&#8221;) and twelve <em>zh\u014dngq\u00ec<\/em> (\u4e2d\u6c23, the &#8220;middle breaths&#8221;). Only the twelve <em>ji\u00e9<\/em> start a BaZi month. The twelve middle breaths \u2014 including familiar ones like the equinoxes and solstices \u2014 play no part in setting the month pillar at all.<\/p>\n\n  <div class=\"tzl-table-wrap\">\n    <table class=\"tzl-table\">\n      <thead><tr><th>Node (ji\u00e9)<\/th><th>Sun&#8217;s longitude<\/th><th>Starts month<\/th><th>Usual date<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td><span class=\"tzl-cn\">\u7acb\u6625<\/span> L\u00ecch\u016bn<\/td><td>315\u00b0<\/td><td>Y\u00edn \u5bc5 (Tiger)<\/td><td>3\u20135 Feb<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u60ca\u86f0<\/span> J\u012bngzh\u00e9<\/td><td>345\u00b0<\/td><td>M\u01ceo \u536f (Rabbit)<\/td><td>5\u20136 Mar<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u6e05\u660e<\/span> Q\u012bngm\u00edng<\/td><td>15\u00b0<\/td><td>Ch\u00e9n \u8fb0 (Dragon)<\/td><td>4\u20136 Apr<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u7acb\u590f<\/span> L\u00ecxi\u00e0<\/td><td>45\u00b0<\/td><td>S\u00ec \u5df3 (Snake)<\/td><td>5\u20136 May<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u8292\u79cd<\/span> M\u00e1ngzh\u00f2ng<\/td><td>75\u00b0<\/td><td>W\u01d4 \u5348 (Horse)<\/td><td>5\u20136 Jun<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u5c0f\u6691<\/span> Xi\u01ceosh\u01d4<\/td><td>105\u00b0<\/td><td>W\u00e8i \u672a (Goat)<\/td><td>6\u20138 Jul<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u7acb\u79cb<\/span> L\u00ecqi\u016b<\/td><td>135\u00b0<\/td><td>Sh\u0113n \u7533 (Monkey)<\/td><td>7\u20138 Aug<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u767d\u9732<\/span> B\u00e1il\u00f9<\/td><td>165\u00b0<\/td><td>Y\u01d2u \u9149 (Rooster)<\/td><td>7\u20138 Sep<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u5bd2\u9732<\/span> H\u00e1nl\u00f9<\/td><td>195\u00b0<\/td><td>X\u016b \u620c (Dog)<\/td><td>8\u20139 Oct<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u7acb\u51ac<\/span> L\u00ecd\u014dng<\/td><td>225\u00b0<\/td><td>H\u00e0i \u4ea5 (Pig)<\/td><td>7\u20138 Nov<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u5927\u96ea<\/span> D\u00e0xu\u011b<\/td><td>255\u00b0<\/td><td>Z\u01d0 \u5b50 (Rat)<\/td><td>6\u20138 Dec<\/td><\/tr>\n        <tr><td><span class=\"tzl-cn\">\u5c0f\u5bd2<\/span> Xi\u01ceoh\u00e1n<\/td><td>285\u00b0<\/td><td>Ch\u01d2u \u4e11 (Ox)<\/td><td>5\u20136 Jan<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <p>The stem of the month is then derived from the stem of the year by a fixed rule traditionally memorised as the <em>w\u01d4 h\u01d4 d\u00f9n<\/em>, the Five Tigers method: a Ji\u01ce or J\u01d0 year opens its Tiger month with B\u01d0ng, an Y\u01d0 or G\u0113ng year with W\u00f9, a B\u01d0ng or X\u012bn year with G\u0113ng, a D\u012bng or R\u00e9n year with R\u00e9n, and a W\u00f9 or Gu\u01d0 year with Ji\u01ce. From there the stems simply run on in order. The hour stem is produced the same way from the day stem, under the parallel <em>w\u01d4 sh\u01d4 d\u00f9n<\/em> or Five Rats method.<\/p>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>The 23:00 problem, and why we show you two answers<\/h2>\n\n  <p>The Z\u01d0 hour runs from 23:00 to 01:00, which means it straddles midnight. Traditions disagree about what that does to the day pillar, and the disagreement is old rather than modern \u2014 it is already visible in Ming-dynasty compendia.<\/p>\n\n  <div class=\"tzl-card-grid two\">\n    <div class=\"tzl-card\">\n      <h3>Day changes at 23:00<\/h3>\n      <p>The whole Z\u01d0 hour belongs to the incoming day, on the reasoning that Z\u01d0 is the start of a day and should not be split. This calculator defaults to this convention.<\/p>\n    <\/div>\n    <div class=\"tzl-card\">\n      <h3>Day changes at midnight<\/h3>\n      <p>The stretch from 23:00 to 23:59 still belongs to the outgoing day, which keeps the chart aligned with the civil calendar. Charts built this way will differ in both the day pillar and the hour pillar.<\/p>\n    <\/div>\n  <\/div>\n\n  <p>Only births between 23:00 and 23:59 are affected \u2014 roughly one hour in twenty-four. For those births the calculator prints both readings side by side rather than picking one silently, because the difference is a difference of school, not a calculation error, and no amount of arithmetic will settle it.<\/p>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Two separate questions about time<\/h2>\n\n  <p>Charts differ between sites more often over time handling than over anything else, and the confusion usually comes from running two distinct questions together.<\/p>\n\n  <p>The first is <strong>when the birth actually happened<\/strong>. That is a single moment, and it is the same moment whichever clock records it. Because the year and month pillars are set by comparing that moment against solar term instants, they need your birth converted to a common reference before anything is compared. This is why the form asks for the UTC offset in force at your birthplace: a birth recorded as 20:00 in New York on 3 February 2026 is already past L\u00ecch\u016bn, even though L\u00ecch\u016bn falls on 4 February in the reference the table uses. Daylight saving belongs here, as part of the offset \u2014 a birth written as 03:30 daylight time and one written as 02:30 standard time are the same instant described twice, so switching between the two descriptions does not move the birth relative to L\u00ecch\u016bn.<\/p>\n\n  <p>The second is <strong>which local clock the hour pillar should follow<\/strong>. That is a question of school rather than of astronomy. This calculator reads the hour from the local clock time you enter. Some BaZi schools instead adjust that time toward true solar time at the birthplace, which introduces two further differences:<\/p>\n\n  <div class=\"tzl-table-wrap\">\n    <table class=\"tzl-table\">\n      <thead><tr><th>Difference<\/th><th>Size<\/th><th>What it is<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td>Longitude within the civil time zone<\/td><td>4 minutes per degree from the zone&#8217;s reference meridian; the total can exceed 30 minutes in unusually wide zones<\/td><td>Civil time zones are political, not solar. Western China sits more than thirty degrees from the meridian its clocks follow.<\/td><\/tr>\n        <tr><td>Equation of time<\/td><td>up to about 16 minutes<\/td><td>The sun runs ahead of or behind mean clock time across the year.<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <p>Neither is applied here, and that is a stated choice rather than an oversight \u2014 the true-solar-time adjustment is one tradition among several, and applying it silently would hide a decision the reader ought to be making. Where the recorded time sits close enough to a boundary for any of this to matter, the result panel says so.<\/p>\n\n  <div class=\"tzl-note\">\n    <span class=\"mark\"><i class=\"ph ph-clock\" aria-hidden=\"true\"><\/i><\/span>\n    <div>Birth records are written to the minute, while solar terms fall on a particular second. When a birth and a boundary land inside the same recorded minute, neither assignment can be settled from the record, and the result panel will say so instead of choosing one.<\/div>\n  <\/div>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Where the dates come from<\/h2>\n\n  <p>Solar term instants on this page are computed from the VSOP87 planetary theory, taking the sun&#8217;s apparent geocentric longitude \u2014 that is, including aberration and nutation \u2014 and solving for the moment it crosses each multiple of 15\u00b0. The instants are stored to the second, expressed in UTC+8, and frozen into a fixed table rather than recomputed in your browser, so the same birth data always returns the same chart. Your birth moment is converted into that same reference before the two are compared, which is what the UTC offset field is for.<\/p>\n\n  <p>The table was checked term by term against the Hong Kong Observatory&#8217;s published Gregorian\u2013Lunar calendar for 1901 to 2100. Of 4,800 solar term dates, 4,794 match. The six that differ were re-checked against <a href=\"https:\/\/ssd.jpl.nasa.gov\/horizons\/\" rel=\"nofollow noopener\" target=\"_blank\">JPL Horizons<\/a>, whose DE441 ephemeris supports the dates used here; those six are retained as fixed regression cases rather than adjusted to force agreement. Our general approach to calculation and sourcing is described under <a href=\"https:\/\/thezodiaclore.com\/how-we-calculate\/\">how we calculate<\/a>.<\/p>\n\n  <p>Day pillars run as an unbroken sixty-day cycle that ignores the calendar entirely \u2014 no leap years, no lunar months, no solar terms. The anchor used here is 7 January 2000 as a Ji\u01ce-Z\u01d0 day, cross-checked against independent almanac sources.<\/p>\n\n  <p>Dates entered into the calculator are read as Gregorian. That matters for older records: if a birth was written down under the Julian or Old Style calendar \u2014 Russia kept it until February 1918, Greece until 1923 \u2014 or given as a traditional lunar date, it needs converting first, or the chart comes out roughly a fortnight adrift. The offset field has a similar caveat. It asks for the offset actually in force at the birthplace on that date rather than the one in force there now, and for births much before 1970 the historical offset can itself be uncertain; where that uncertainty could change the result, the panel above says so.<\/p>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Questions people ask<\/h2>\n  <div class=\"tzl-faq\">\n    <details>\n      <summary>Is BaZi the same as my Chinese zodiac sign?<\/summary>\n      <p>Not quite. In a BaZi chart the year pillar carries an animal branch, and it usually matches the familiar zodiac animal \u2014 but around the January to February boundary the two can differ, because this calculator turns the BaZi year at L\u00ecch\u016bn while ordinary zodiac-year lookup turns it at Chinese New Year. Beyond that, a BaZi chart adds month, day and hour pillars and pairs every branch with a stem, so two people born in the same animal year can have entirely different charts. If you only want the animal, our <a href=\"https:\/\/thezodiaclore.com\/chinese-zodiac-element-calculator\/\">Chinese zodiac element calculator<\/a> is the simpler tool.<\/p>\n    <\/details>\n    <details>\n      <summary>What if I do not know my birth time?<\/summary>\n      <p>Tick the box and the hour pillar is reported as unknown rather than guessed. On an ordinary date the year and month pillars can usually still be determined. The day pillar is a different matter: because this calculator changes the day at 23:00 by default, a birth anywhere in the 23:00 to 23:59 window would carry the following day&#8217;s pillar, so without a time the day pillar has two possible values. On a date that also carries a solar term, the year or month pillar can be undetermined for the same reason. In every one of those cases the result table lists both possibilities instead of picking one.<\/p>\n    <\/details>\n    <details>\n      <summary>Why does my chart differ from another site&#8217;s?<\/summary>\n      <p>Usually one of four reasons: the other site changes the day at midnight rather than at 23:00; it applies a true-solar-time correction that this page deliberately leaves out; it turns the year at Chinese New Year rather than at L\u00ecch\u016bn; or one of you has the wrong UTC offset for the birthplace. Comparing the two charts against the notes shown with your result will normally identify which.<\/p>\n    <\/details>\n    <details>\n      <summary>Which pillar is the most important one?<\/summary>\n      <p>In most modern readings the day stem is treated as the reference point for the rest of the chart. That is a convention of interpretation rather than a fact about the calendar, and different schools weight the pillars differently.<\/p>\n    <\/details>\n    <details>\n      <summary>What is the range of this calculator?<\/summary>\n      <p>Birth dates from 1900 to 2100. Outside that range the frozen solar term table has no entries and the calculator will tell you so rather than extrapolate.<\/p>\n    <\/details>\n  <\/div>\n<\/section>\n\n<section class=\"tzl-section\">\n  <h2>Keep reading<\/h2>\n  <div class=\"tzl-next\">\n    <a href=\"https:\/\/thezodiaclore.com\/heavenly-stems-earthly-branches\/\"><span>Basics<\/span><b>Heavenly Stems &amp; Earthly Branches<\/b><\/a>\n    <a href=\"https:\/\/thezodiaclore.com\/60-year-chinese-zodiac-cycle\/\"><span>Cycle<\/span><b>The 60-year cycle<\/b><\/a>\n    <a href=\"https:\/\/thezodiaclore.com\/chinese-zodiac-element-calculator\/\"><span>Tool<\/span><b>Zodiac element calculator<\/b><\/a>\n    <a href=\"https:\/\/thezodiaclore.com\/chinese-zodiac-hour-calculator\/\"><span>Tool<\/span><b>Zodiac hour calculator<\/b><\/a>\n    <a href=\"https:\/\/thezodiaclore.com\/january-february-zodiac\/\"><span>Boundary<\/span><b>January &amp; February birthdays<\/b><\/a>\n    <a href=\"https:\/\/thezodiaclore.com\/chinese-zodiac-elements\/\"><span>Elements<\/span><b>The five elements<\/b><\/a>\n  <\/div>\n<\/section>\n\n<section class=\"tzl-section\" id=\"go-deeper\">\n  <h2>Got your pillars \u2014 want them read, not just calculated?<\/h2>\n  <p>This tool produces calendar arithmetic: the exact stem-branch names for a moment in time. Turning those names into a written interpretation, or comparing two charts, is a separate step:<\/p>\n  <div class=\"tzl-links two\">\n    <a href=\"\/product\/personalized-reading\/\"><strong>Personalized Reading<\/strong>Your full stem-branch write-up: element balance, and what your chart traditionally means for you \u2014 as a printable report.<span>See the reading &rarr;<\/span><\/a>\n    <a href=\"\/product\/couple-chinese-zodiac-compatibility-report\/\"><strong>Couple Compatibility Report<\/strong>How your chart and a partner&#8217;s chart read together, not just each pillar calculated separately.<span>See the report &rarr;<\/span><\/a>\n  <\/div>\n<\/section>\n\n<div class=\"tzl-editorial\">\n  <p>BaZi is a traditional interpretive system, and the material on this page is presented as cultural background rather than as a description of character, health, finances or the future. What the calculator itself produces is calendar arithmetic: the stem-and-branch names attached to a moment in time. Those names are verifiable and we have documented how they were derived; what anyone reads into them is a separate matter, and one this site leaves to the reader.<\/p>\n<\/div>\n\n<\/div>\n\n\n<script>\n\/\/ \u81ea\u52a8\u751f\u6210,\u52ff\u624b\u6539 \u2014\u2014 node tools\/bazi\/freeze-terms.mjs\n\/\/ \u300c\u8282\u300d\u51bb\u7ed3\u8868(\u4ec5 12 \u4e2a\u5b9a\u6708\u652f\u7684\u8282\u6c14,\u4e0d\u542b\u4e2d\u6c14)\n\/\/ \u539f\u70b9 = 1900-01-01 00:00 \u4e1c\u516b\u533a;\u6570\u503c = \u76f8\u90bb\u95f4\u9694**\u79d2**\u6570,36 \u8fdb\u5236\n\/\/ \u8986\u76d6 1899-2101,\u5171 2436 \u4e2a\u300c\u8282\u300d\n\/\/ \u6821\u9a8c:\u9996\u4e2a\u300c\u8282\u300d\u9ec4\u7ecf 285\u00b0\nwindow.TZL_BAZI_TERMS = {\n  firstLon: 285,\n  originY: 1900, originM: 1, originD: 1,\n  count: 2436,\n  d: \"-iiyas,1im6j,1j4s3,1jzb4,1ky2s,1lrqb,1m7ry,1m5fc,1llcq,1kpgv,1jqt7,1iylm,1ijv3,1im3b,1j4qm,1jzbg,1ky46,1lrst,1m7vy,1m5jb,1llfh,1kpi7,1jqsc,1iyix,1ijry,1im1g,1j4ro,1jzfu,1kya3,1lrwp,1m7vt,1m5g8,1llcb,1kphl,1jquq,1iyma,1ijua,1im1n,1j4ox,1jz9v,1ky2c,1lrod,1m7o5,1m5bu,1llcc,1kplt,1jr28,1iyuu,1ik0m,1im3b,1j4m0,1jz52,1kxz6,1lrpm,1m7t1,1m5h9,1llg9,1kpmy,1jr0p,1iysm,1ijz0,1im2j,1j4lw,1jz5d,1kxzi,1lrqm,1m7v5,1m5it,1llfl,1kpk2,1jqx0,1iypz,1ijz1,1im56,1j4pm,1jz86,1kxzc,1lrlr,1m7o1,1m5dl,1llde,1kpkc,1jqya,1iyr3,1ik0i,1im81,1j4tn,1jzc0,1ky23,1lrnd,1m7nw,1m5cg,1lld3,1kplq,1jr19,1iyto,1ijzf,1im31,1j4n3,1jz66,1kxy5,1lrll,1m7nk,1m5d8,1llfj,1kpp2,1jr3x,1iyuo,1ijyx,1im0x,1j4jw,1jz3o,1kxxl,1lrnv,1m7s6,1m5gc,1ller,1kplo,1jqzx,1iys1,1ijyr,1im2v,1j4n3,1jz7q,1ky2c,1lrrt,1m7u2,1m5g4,1llc8,1kpi8,1jqxu,1iysb,1ik19,1im6d,1j4oj,1jz43,1kxu4,1lrhn,1m7l5,1m5c4,1lldp,1kpm5,1jr1s,1iyv8,1ik2s,1im6c,1j4nk,1jz2w,1kxt2,1lril,1m7oy,1m5hq,1llk4,1kpqq,1jr1f,1iyqe,1ijw0,1im0s,1j4lq,1jz5g,1kxy1,1lrnd,1m7sk,1m5jd,1lljl,1kpps,1jr15,1iypt,1ijug,1ilyl,1j4jv,1jz4s,1kxy0,1lrkl,1m7mf,1m5dg,1llgg,1kpq3,1jr4o,1iyuv,1ijz4,1im1e,1j4k8,1jz3f,1kxx2,1lrmh,1m7pg,1m5f7,1llhf,1kprv,1jr8c,1iyzi,1ik1f,1ilz9,1j4e3,1jyv3,1kxp7,1lri7,1m7pz,1m5ih,1lll0,1kpua,1jr99,1iyzv,1ik2m,1im11,1j4ex,1jyu5,1kxmm,1lrfr,1m7qd,1m5kw,1llm8,1kpsq,1jr5b,1iyvx,1ik1m,1im45,1j4le,1jz1t,1kxt1,1lrih,1m7p0,1m5if,1llku,1kpsm,1jr5v,1iyw5,1ik1s,1im56,1j4md,1jz0h,1kxoe,1lran,1m7fa,1m5an,1lliq,1kpw3,1jrc8,1iz23,1ik4d,1im3x,1j4jj,1jyyt,1kxou,1lrdm,1m7js,1m5ee,1lllc,1kpxj,1jrbn,1iyzv,1ik13,1im04,1j4gy,1jyzu,1kxtz,1lrl2,1m7qz,1m5i1,1llj8,1kpsc,1jr7k,1iyyd,1ik1s,1im1k,1j4hi,1jyz8,1kxsr,1lrhv,1m7lu,1m5dd,1llfu,1kppi,1jr62,1iyz9,1ik59,1im6k,1j4ln,1jz0a,1kxri,1lrie,1m7p8,1m5i1,1llko,1kpt6,1jr7j,1iyyg,1ik1q,1im18,1j4g9,1jyvm,1kxnh,1lrg2,1m7qf,1m5mb,1llqh,1kpyf,1jr9l,1iywf,1ijxr,1ilxd,1j4dr,1jyuw,1kxnk,1lrfp,1m7qh,1m5nb,1llrh,1kpz3,1jr9q,1iyvq,1ijwi,1ilwj,1j4ed,1jyxq,1kxse,1lrk6,1m7rj,1m5ma,1llqx,1kq06,1jrcp,1iyzh,1ijzg,1ilxb,1j4bn,1jyr0,1kxjl,1lrbi,1m7ju,1m5g9,1llos,1kq2z,1jrja,1iz7n,1ik63,1ilzs,1j49q,1jyme,1kxec,1lr8s,1m7lw,1m5ky,1llsr,1kq45,1jrhn,1iz52,1ik49,1ilzd,1j4as,1jyot,1kxhl,1lrc1,1m7p7,1m5nz,1llt5,1kq1k,1jre0,1iz2c,1ik3z,1im1u,1j4ep,1jys4,1kxhx,1lr6p,1m7es,1m5dp,1llnh,1kq0e,1jrfb,1iz4a,1ik6b,1im50,1j4id,1jyuq,1kxiu,1lr7p,1m7fz,1m5e3,1lloc,1kq34,1jrj5,1iz6s,1ik4f,1ilz5,1j4br,1jyqj,1kxi1,1lr9l,1m7jk,1m5he,1llq2,1kq41,1jrjl,1iz6p,1ik46,1ilxv,1j499,1jyob,1kxhe,1lraa,1m7ku,1m5ht,1llnu,1kpzc,1jreo,1iz3t,1ik4e,1im0l,1j4cv,1jyrs,1kxlh,1lrf9,1m7p0,1m5km,1llp7,1kpys,1jrd2,1iz2v,1ik51,1im2n,1j4dt,1jyox,1kxel,1lr70,1m7ie,1m5ha,1llq4,1kq2r,1jrhg,1iz5s,1ik5t,1im1b,1j4bs,1jymz,1kxca,1lr55,1m7jt,1m5md,1llwh,1kq7c,1jrhq,1iz1m,1ijz4,1ilv4,1j491,1jypb,1kxj0,1lrcx,1m7py,1m5qq,1llyh,1kq7r,1jria,1iz1z,1ijym,1iltr,1j47e,1jyo8,1kxi2,1lr9q,1m7ik,1m5hl,1llsr,1kq77,1jrlt,1iz7q,1ik47,1ilx4,1j47b,1jyku,1kxdm,1lr8e,1m7l7,1m5kr,1llv1,1kqa5,1jrq6,1izc5,1ik5w,1ilv1,1j428,1jyeq,1kx8v,1lr6w,1m7oe,1m5r5,1lm0a,1kqcb,1jrq6,1izbx,1ik78,1ilx5,1j43b,1jydm,1kx5l,1lr29,1m7jv,1m5og,1llyz,1kq9x,1jrlw,1iz7t,1ik68,1im0g,1j49t,1jykq,1kxax,1lr4z,1m7jq,1m5n9,1llza,1kqc0,1jroa,1iz97,1ik6o,1im17,1j4am,1jyk6,1kx7r,1lqyt,1m7c1,1m5g2,1llvo,1kqe0,1jruc,1izfg,1ik9j,1ilzh,1j46r,1jyh4,1kx6c,1lqyl,1m7d2,1m5i2,1llx0,1kqdn,1jrsg,1izcw,1ik6s,1ilwt,1j455,1jyij,1kxcc,1lr7u,1m7lv,1m5nd,1llx6,1kq9z,1jroi,1izb1,1ik7f,1ilyx,1j46y,1jyix,1kxav,1lr40,1m7fj,1m5fs,1llr4,1kq6c,1jrmz,1izbt,1ikak,1im3e,1j4aj,1jyj5,1kx7p,1lr1e,1m7gq,1m5ju,1llvq,1kqac,1jrp7,1izb3,1ik6d,1ilxg,1j45b,1jygc,1kx7e,1lr30,1m7kz,1m5qz,1lm30,1kqf5,1jrqg,1iz92,1ik2t,1iltp,1j42f,1jyf2,1kx7j,1lr2s,1m7ij,1m5nd,1lm0h,1kqdi,1jrp3,1iz7u,1ik1x,1ilti,1j43c,1jyh4,1kxaj,1lr6d,1m7l8,1m5o9,1lm1b,1kqg4,1jrt5,1izc3,1ik4z,1ilu6,1j40f,1jyb0,1kx37,1lqzv,1m7h0,1m5lq,1lm04,1kqi1,1jryp,1izja,1ikao,1ilvv,1j3y2,1jy5w,1kwx2,1lqus,1m7fe,1m5ol,1lm3x,1kqig,1jrvn,1izfj,1ik8h,1ilw0,1j400,1jy8u,1kx10,1lqzr,1m7kj,1m5t7,1lm76,1kqja,1jrtw,1izcm,1ik6v,1ilx4,1j43k,1jycy,1kx2a,1lqvl,1m7bd,1m5i3,1llzi,1kqhg,1jrw7,1izg3,1ik9y,1ilzr,1j45p,1jydq,1kx15,1lqtq,1m7af,1m5ig,1lm0n,1kqke,1js0q,1izja,1ik8f,1ilto,1j3y8,1jy8x,1kx1g,1lqye,1m7h9,1m5pl,1lm5l,1kqm1,1js0a,1izip,1ik8n,1ilti,1j3wv,1jy73,1kx0o,1lqz2,1m7h0,1m5ma,1lm0k,1kqgb,1jrva,1izgb,1ik9x,1ilxr,1j41u,1jyah,1kx1z,1lqzy,1m7j2,1m5p3,1lm2t,1kqhn,1jrvf,1izfv,1ika1,1ilyu,1j425,1jy8i,1kwxi,1lqua,1m7f9,1m5ow,1lm5c,1kqlw,1jrzx,1iziw,1ikan,1ilx6,1j400,1jy6q,1kwvj,1lqrj,1m7cv,1m5po,1lm93,1kqoi,1jrz3,1izep,1ik4r,1ilrw,1j3xk,1jy8b,1kx13,1lqzd,1m7k1,1m5ui,1lmc2,1kqqu,1js0v,1izfi,1ik47,1ilqg,1j3we,1jy8e,1kx1b,1lqx9,1m7eb,1m5lh,1lm42,1kqo8,1js42,1izm5,1ikb5,1ilus,1j3wb,1jy3x,1kwus,1lqs9,1m7cz,1m5mx,1lm5d,1kqpl,1js73,1izpl,1ikcg,1ilsv,1j3rp,1jxyi,1kwrk,1lqtd,1m7ii,1m5vp,1lmde,1kqso,1js5g,1izn7,1ikcb,1ilv1,1j3ue,1jxzu,1kwqk,1lqqj,1m7dv,1m5pf,1lm85,1kqos,1js1a,1izj8,1ikax,1ilxo,1j407,1jy62,1kwu4,1lqqd,1m7c0,1m5nz,1lm82,1kqqu,1js4b,1izkz,1ikar,1ilwk,1j3ym,1jy4i,1kwso,1lqnz,1m78u,1m5lu,1lm7q,1kqt9,1js9l,1izqt,1ikdp,1ilux,1j3ug,1jy0n,1kwql,1lqnf,1m789,1m5l8,1lm7f,1kqr6,1js5p,1izmt,1ikak,1ilsq,1j3t8,1jy17,1kwu9,1lqut,1m7hh,1m5s0,1lm9o,1kqqa,1js3g,1izky,1ikac,1ilu7,1j3vg,1jy33,1kwud,1lqs8,1m7d8,1m5my,1lm4u,1kqne,1js32,1izml,1ikdf,1ilxj,1j3x9,1jy1g,1kwpg,1lqms,1m7ac,1m5oi,1lm8z,1kqri,1js5m,1izm0,1ik91,1ilrc,1j3rk,1jxy2,1kwpk,1lqqi,1m7h1,1m5xs,1lmjb,1kqzc,1js8s,1izl5,1ik69,1ilnz,1j3p4,1jxx9,1kwpw,1lqqp,1m7es,1m5s2,1lmdm,1kqwf,1js81,1izlk,1ik72,1ilov,1j3py,1jxy5,1kwqb,1lqq4,1m7e1,1m5rr,1lmdm,1kqye,1jscm,1izra,1ikc0,1ilr1,1j3np,1jxsg,1kwk8,1lqlo,1m7c7,1m5sq,1lmfv,1kr1b,1jshi,1izxr,1ikhm,1iltm,1j3mz,1jxos,1kwet,1lqgp,1m78v,1m5rs,1lmgq,1kr01,1jscw,1izsj,1iker,1ilu7,1j3qg,1jxt7,1kwim,1lqk1,1m7cn,1m5v7,1lmj0,1kr1r,1jscw,1izql,1ikcx,1ilun,1j3tw,1jxyo,1kwmj,1lqiq,1m76a,1m5ml,1lmbp,1kqz1,1jsf5,1izv1,1ikgr,1ilx0,1j3up,1jxxw,1kwks,1lqg8,1m72x,1m5ju,1lmak,1kqzi,1jsh8,1izwp,1ikfc,1ils0,1j3o7,1jxt4,1kwkq,1lqm2,1m7c8,1m5t4,1lmhi,1kr2i,1jsgj,1izv0,1ikek,1ilrq,1j3np,1jxsy,1kwlm,1lqo7,1m7dm,1m5q8,1lmav,1kqv1,1jsaa,1izro,1ikf0,1ilvc,1j3s9,1jxvv,1kwln,1lqlt,1m7bx,1m5rg,1lmco,1kqvv,1jsab,1izra,1ikex,1ilvk,1j3r8,1jxsu,1kwhm,1lqig,1m7az,1m5um,1lmj8,1kr2q,1jsfa,1iztd,1ikdt,1ilse,1j3oh,1jxr8,1kwg5,1lqgs,1m790,1m5td,1lmk4,1kr3p,1jsdv,1izp4,1ik82,1iln7,1j3lu,1jxs3,1kwjq,1lqlj,1m7e2,1m5x9,1lmml,1kr6k,1jsgw,1izqu,1ik7r,1illa,1j3jo,1jxrd,1kwkb,1lql2,1m7az,1m5s1,1lmh7,1kr4k,1jsk8,1izy4,1ikfk,1ilq6,1j3jg,1jxm0,1kwcu,1lqex,1m776,1m5qp,1lmho,1kr5l,1jsm7,1j007,1ikg6,1iloh,1j3f9,1jxg6,1kw7s,1lqea,1m7cn,1m60d,1lmri,1krb8,1jsm0,1izxm,1ikev,1ilpl,1j3i6,1jxji,1kw9t,1lqe0,1m79x,1m5uy,1lmlf,1kr6w,1jsjb,1izvy,1ikf6,1ilss,1j3no,1jxoy,1kwc3,1lqax,1m73i,1m5q0,1lmjc,1kr7q,1jsmc,1izz2,1ikgj,1ils2,1j3kv,1jxle,1kw9i,1lqa4,1m73i,1m5r0,1lmmk,1krcn,1jss6,1j04g,1ikjb,1ilr7,1j3if,1jxjf,1kw8y,1lqb0,1m74e,1m5pt,1lmji,1kr89,1jsn8,1j00b,1ikgv,1ilqa,1j3if,1jxkc,1kwba,1lqet,1m79r,1m5um,1lmkv,1kr76,1jsl8,1izyn,1ikgm,1ilrs,1j3kz,1jxn2,1kwcz,1lqel,1m77v,1m5sh,1lmj1,1kr5q,1jsl6,1j00h,1ikjx,1ilvh,1j3na,1jxm5,1kw95,1lqa0,1m740,1m5qx,1lmkn,1kr8n,1jsmx,1izyt,1ikep,1iloo,1j3he,1jxip,1kw8k,1lqcp,1m7as,1m60l,1lmuq,1krge,1jsq0,1izxs,1ikbc,1ilkr,1j3ex,1jxjb,1kwc2,1lqgm,1m7by,1m5xd,1lmpb,1krce,1jsp3,1izz5,1ikdi,1ilmi,1j3fm,1jxiy,1kwap,1lqdu,1m77x,1m5u6,1lmnj,1krci,1jsrs,1j03t,1iki8,1ilom,1j3cn,1jxbh,1kw2e,1lq91,1m788,1m5ya,1lmtk,1krie,1jsx3,1j08p,1ikm0,1ilqk,1j3d2,1jxa6,1kvz9,1lq5m,1m76d,1m5xt,1lmt6,1krfz,1jsrt,1j02o,1iki3,1ilq7,1j3fs,1jxe8,1kw2c,1lq61,1m75l,1m5xq,1lmtk,1krh1,1jssf,1j01o,1ikge,1ilpz,1j3i4,1jxik,1kw66,1lq6l,1m71q,1m5s1,1lmpp,1krgo,1jsvs,1j06r,1ikkh,1ilrp,1j3hr,1jxgk,1kw3q,1lq4g,1m6yu,1m5nu,1lmmb,1krfr,1jswv,1j07e,1ikik,1ilmq,1j3b8,1jxbb,1kw1z,1lq7h,1m76g,1m5x2,1lmta,1krj6,1jsx1,1j06m,1ikid,1ilmt,1j3b2,1jxbh,1kw3x,1lqax,1m794,1m5wg,1lmou,1krcm,1jsrf,1j040,1ikjg,1ilqs,1j3fl,1jxdx,1kw2z,1lq72,1m74d,1m5tx,1lmot,1krd2,1jsra,1j03t,1ikjv,1ilr8,1j3ec,1jxa3,1kvx9,1lq2i,1m73y,1m5y8,1lmx5,1krmj,1jsyh,1j06o,1ikic,1ilnf,1j3bm,1jx9q,1kvy9,1lq36,1m74b,1m5yj,1lmx5,1krlz,1jswt,1j03h,1ikdz,1iljc,1j39c,1jxae,1kw1b,1lq5y,1m752,1m5y6,1lmwm,1krms,1jsz6,1j069,1ikfs,1iljj,1j389,1jx95,1kw0f,1lq5r,1m73y,1m5vb,1lmu3,1krmr,1jt31,1j0dc,1iknn,1ilp6,1j39j,1jx5l,1kvuj,1lq0w,1m71k,1m5tv,1lmsn,1krln,1jt2r,1j0d7,1ikn4,1ilnv,1j370,1jx21,1kvqr,1lpyv,1m74c,1m61r,1ln1d,1krqp,1jt2d,1j0a5,1ikkz,1ilo5,1j39q,1jx69,1kvvi,1lq2h,1m74l,1m5yy,1lmxh,1krn4,1jszo,1j08c,1ikkm,1ilqe,1j3ee,1jxbd,1kvy6,1lq0o,1m6yo,1m5s4,1lmt8,1krme,1jt1n,1j0b5,1ikm5,1ilp8,1j3ac,1jx61,1kvt8,1lpxz,1m6zh,1m5vg,1lmyb,1krss,1jt7z,1j0fr,1iknh,1iln7,1j37c,1jx4g,1kvug,1lq1a,1m73f,1m5xx,1lmwy,1kro0,1jt2d,1j0b8,1ikl4,1ilmr,1j37t,1jx5d,1kvw0,1lq33,1m74n,1m5yq,1lmws,1krmd,1jszu,1j095,1ikki,1ilnx,1j39r,1jx6c,1kvuw,1lq1b,1m73c,1m5y3,1lmxr,1kroj,1jt23,1j0bg,1ikmx,1ilqb,1j3bh,1jx6c,1kvsy,1lpya,1m715,1m5x7,1lmyh,1krr2,1jt4e,1j0aa,1ikht,1iliy,1j34d,1jx1j,1kvqu,1lpy2,1m73j,1m63i,1ln6d,1krx8,1jt78,1j0a7,1ikff,1ilfd,1j318,1jx0w,1kvu5,1lq3q,1m76n,1m625,1ln32,1krum,1jt73,1j0cq,1ikjc,1iliz,1j33g,1jx14,1kvs6,1lq06,1m725,1m5wq,1lmyc,1krst,1jt8v,1j0ha,1ikof,1ill9,1j308,1jwst,1kvhj,1lprq,1m708,1m615,1ln5e,1krzm,1jteb,1j0lc,1ikr2,1ilmv,1j31h,1jwtd,1kvhh,1lprd,1m70j,1m62x,1ln6f,1krxg,1jt9a,1j0fl,1iknf,1ilmx,1j34q,1jwxz,1kvl2,1lpro,1m6ww,1m5xw,1ln3g,1krwy,1jt9j,1j0f1,1ikmb,1ilmv,1j36p,1jx0x,1kvme,1lpqt,1m6tz,1m5tl,1ln0o,1kry2,1jte3,1j0l0,1ikr1,1iloz,1j36p,1jx0c,1kvml,1lprd,1m6u7,1m5s9,1lmxp,1krw0,1jtdw,1j0kt,1ikp6,1ilkl,1j30o,1jwv9,1kvku,1lpt2,1m6yq,1m5yr,1ln2x,1krx0,1jtbq,1j0ii,1ikoc,1ill1,1j31a,1jwvv,1kvn8,1lpyd,1m73t,1m60m,1ln1n,1krt9,1jt78,1j0fq,1ikot,1ilou,1j36r,1jx01,1kvnn,1lpvl,1m70m,1m5y5,1ln0a,1krt2,1jt73,1j0f5,1iko1,1iln6,1j33d,1jwuv,1kvgu,1lpox,1m6y8,1m62e,1ln9a,1ks3c,1jtf2,1j0i7,1iklz,1ilin,1j2zt,1jwu8,1kvje,1lpsv,1m71v,1m663,1lnc4,1ks3y,1jtdr,1j0fe,1iki4,1ilet,1j2xg,1jwub,1kvlt,1lpvl,1m71g,1m627,1ln8p,1ks3h,1jtfq,1j0ih,1ikkr,1ilfv,1j2wm,1jwrp,1kvhd,1lpre,1m6z5,1m60j,1ln7q,1ks5b,1jtl9,1j0qh,1iksq,1ill3,1j2xd,1jwog,1kvcv,1lpns,1m6y8,1m61r,1ln87,1ks4h,1jtk9,1j0pb,1ikrl,1iljr,1j2ve,1jwlp,1kv9w,1lpl4,1m6x6,1m64m,1lndm,1ks7w,1jtjj,1j0mu,1ikq5,1ilkq,1j2yg,1jwpe,1kvdb,1lpo2,1m6xh,1m61i,1lna5,1ks5y,1jtiq,1j0md,1ikq6,1ilmp,1j32x,1jwv3,1kvh3,1lpnm,1m6tq,1m5vn,1ln4a,1ks36,1jtjq,1j0pe,1iksm,1illp,1j2y5,1jwom,1kvaw,1lpio,1m6rh,1m5x9,1ln8c,1ks86,1jtor,1j0t9,1iktv,1ilke,1j2vi,1jwmm,1kvc1,1lpni,1m6xs,1m62i,1ln9x,1ks4o,1jtin,1j0np,1ikqz,1ilkh,1j2xj,1jwp7,1kvej,1lppr,1m6yl,1m60k,1ln6t,1ks1n,1jtfk,1j0lc,1ikqa,1illr,1j2zs,1jwpy,1kvb8,1lpk2,1m6ug,1m5zi,1ln88,1ks52,1jtjj,1j0oi,1iksd,1ilmx,1j307,1jwq2,1kvbo,1lpk9,1m6v3,1m61s,1lnb7,1ks7v,1jtl2,1j0mn,1ikmx,1ilfq,1j2tn,1jwm6,1kvb3,1lplf,1m6w7,1m643,1lnfp,1ksbv,1jtmt,1j0mm,1iklc,1ilcz,1j2qt,1jwkk,1kvc3,1lpph,1m6zt,1m63p,1lnd7,1ksal,1jtns,1j0pg,1ikp0,1ilgc,1j2t7,1jwls,1kvbs,1lpnr,1m6yc,1m61v,1ln9r,1ks81,1jtol,1j0tl,1iku6,1ilij,1j2ps,1jwda,1kv0v,1lpdx,1m6td,1m64c,1lngr,1ksej,1jtst,1j0vw,1ikv7,1iljg,1j2qs,1jwdo,1kv14,1lpf8,1m6w2,1m687,1lnkh,1ksf7,1jtpd,1j0q5,1ikqp,1ilis,1j2ui,1jwk0,1kv6r,1lphl,1m6u4,1m62o,1lnfd,1ksdq,1jtq6,1j0qp,1ikpz,1ilht,1j2uj,1jwkh,1kv55,1lpd2,1m6oe,1m5xs,1lncr,1ksf5,1jtvm,1j0xt,1ikvi,1iljv,1j2tg,1jwiu,1kv5z,1lpg3,1m6rp,1m60b,1lndp,1ksf5,1jtvr,1j0xj,1iku5,1ilgl,1j2oh,1jwe1,1kv3t,1lphc,1m6uk,1m636,1lnfu,1ksel,1jtsp,1j0uu,1iktb,1ilhf,1j2pn,1jwec,1kv3u,1lpj2,1m6xi,1m64m,1lneu,1ksc6,1jtq2,1j0tf,1ikuh,1illm,1j2vq,1jwk0,1kv6i,1lpi0,1m6vs,1m642,1lnee,1ksbs,1jtq3,1j0tl,1iku5,1iljf,1j2r9,1jwdw,1kuze,1lpan,1m6qh,1m64n,1lnl1,1kske,1jtwp,1j0vx,1iks1,1ilfg,1j2nz,1jwcm,1kv0t,1lpes,1m6vh,1m68y,1lno6,1kslt,1jtw3,1j0tk,1ikot,1ilck,1j2mz,1jwef,1kv4q,1lpik,1m6wm,1m65d,1lnir,1ksj2,1jtwz,1j0wo,1iks1,1ile6,1j2m5,1jwap,1kuy2,1lpap,1m6q6,1m61q,1lngz,1ksjj,1ju11,1j13s,1ikzw,1iljz,1j2nk,1jw86,1kuur,1lp96,1m6rb,1m65j,1lnl9,1kslc,1jtzs,1j10n,1ikwx,1ili0,1j2mj,1jw7i,1kuu1,1lp8i,1m6qu,1m65s,1lnn3,1ksmp,1jtyb,1j0xa,1iktw,1ilhb,1j2oh,1jwaq,1kuwk,1lp99,1m6pe,1m62b,1lnj6,1kskw,1jtyv,1j0yi,1ikux,1ilix,1j2rv,1jwfu,1kv1j,1lpbj,1m6p2,1m60h,1lng8,1ksip,1jtzj,1j11i,1ikxc,1ilh9,1j2lw,1jw81,1kuup,1lp6v,1m6m3,1m605,1lnj5,1ksmx,1ju38,1j13x,1ikxz,1ilgm,1j2jz,1jw5l,1kutt,1lpa1,1m6t4,1m671,1lnmb,1ksll,1jtyl,1j0yj,1ikub,1ilfz,1j2m8,1jw9n,1kuyf,1lpdy,1m6vo,1m674,1lnk2,1ksip,1jtw2,1j0ws,1iktx,1ilgz,1j2nq,1jw9a,1kutu,1lp5y,1m6no,1m63b,1lnl7,1ksmp,1ju11,1j115,1ikwm,1ilho,1j2mk,1jw7d,1kusx,1lp6m,1m6q2,1m67o,1lnrc,1kssl,1ju3w,1j0ze,1ikr1,1ilah,1j2go,1jw4u,1kuu2,1lp9u,1m6t1,1m696,1lnsm,1ksue,1ju5s,1j110,1ikrh,1il9e,1j2eh,1jw2p,1kusv,1lp9j,1m6s3,1m66e,1lnoh,1kss3,1ju77,1j15c,1ikx0,1ilea,1j2hi,1jw3o,1kusm,1lp8z,1m6sm,1m67p,1lnog,1ksqn,1ju7d,1j18s,1il25,1ilh7,1j2fm,1jvwv,1kuj2,1lp03,1m6mq,1m66t,1lnsp,1ksvy,1jua8,1j19b,1il21,1ilia,1j2hl,1jvy1,1kuig,1loz7,1m6o1,1m69u,1lnv9,1kswr,1ju7v,1j145,1ikx1,1ilgu,1j2l8,1jw5y,1kurg,1lp4y,1m6on,1m668,1lnqa,1kstm,1ju7l,1j154,1ikxe,1ilgl,1j2l7,1jw5k,1kuoy,1loze,1m6g7,1m5yb,1lnlu,1kstc,1jubb,1j1b6,1il2w,1iliq,1j2jm,1jw2o,1kuo6,1lp28,1m6lf,1m632,1lnp3,1ksuy,1juao,1j18i,1ikz7,1ileo,1j2fw,1jw0q,1kup8,1lp6d,1m6r8,1m67e,1lnpw,1kssk,1ju6w,1j15e,1ikxs,1ileu,1j2ge,1jw0e,1kuo3,1lp4x,1m6pn,1m666,1lno2,1kspw,1ju4d,1j140,1ikye,1ilhs,1j2kv,1jw4h,1kuq9,1lp5f,1m6qg,1m68q,1lnrs,1kssq,1ju5t,1j14b,1ikxb,1ileb,1j2fi,1jvyb,1kujz,1lozw,1m6mn,1m68a,1lnwh,1kt0k,1juc9,1j16b,1ikuo,1il9k,1j2ay,1jvvc,1kuiz,1lp0q,1m6pk,1m6by,1lnyw,1kt1x,1jucq,1j15k,1iksq,1il7e,1j2a0,1jvx8,1kunz,1lp6i,1m6sz,1m6bq,1lnw7,1kszx,1judu,1j19c,1ikx2,1il9x,1j29b,1jvs6,1kuf7,1lown,1m6ju,1m658,1lnta,1kszz,1juh0,1j1fo,1il4r,1ilg1,1j2b8,1jvpm,1kuah,1lotc,1m6kt,1m69r,1lnzd,1kt4u,1juhw,1j1cv,1il13,1ildr,1j2b2,1jvrf,1kud0,1lova,1m6ma,1m6az,1lo03,1kt4y,1jugz,1j1av,1ikyu,1ilct,1j2c1,1jvtm,1kuev,1louc,1m6h3,1m641,1lnu2,1kt1j,1juh5,1j1de,1il20,1ilg1,1j2fq,1jvxm,1kuij,1lox9,1m6iu,1m64i,1lnu1,1kt1q,1juik,1j1ge,1il4e,1ilen,1j2ag,1jvqv,1kucv,1lou9,1m6ic,1m64y,1lnvk,1kt4f,1jul1,1j1hm,1il4k,1ilef,1j29b,1jvox,1kub4,1loua,1m6lo,1m69w,1lnxb,1kt1y,1jug4,1j1cl,1il1o,1ilev,1j2ct,1jvu9,1kuhb,1lp04,1m6pq,1m6c2,1lnxz,1kt0n,1judw,1j1ap,1il0z,1ilfs,1j2eo,1jvu6,1kud2,1losi,1m6gw,1m658,1lnwa,1kt3c,1juhz,1j1e7,1il2z,1ilg2,1j2de,1jvsg,1kubj,1lort,1m6io,1m69m,1lo2d,1kt9v,1julk,1j1ck,1ikww,1il86,1j278,1jvr2,1kufm,1loyo,1m6ow,1m6dm,1lo3u,1kt9z,1jum7,1j1dp,1ikx8,1il6s,1j24c,1jvnw,1kudl,1lox2,1m6l6,1m67t,1lnxo,1kt5s,1jum0,1j1hp,1il3e,1ilcn,1j27n,1jvnn,1kuau,1lov6,1m6mm,1m6b5,1lo0p,1kt76,1jumw,1j1ju,1il6a,1ildi,1j25b,1jvi8,1ku3k,1looh,1m6jb,1m6c0,1lo4p,1ktc3,1jupm,1j1jm,1il4z,1ildh,1j26a,1jvit,1ku2f,1loli,1m6gw,1m6c0,1lo59,1ktbr,1junn,1j1fm,1il0n,1ilbm,1j28k,1jvox,1kual,1losj,1m6ji,1m6ap,1lo3a,1ktao,1juo8,1j1ha,1il1t,1ilbw,1j28i,1jvnt,1ku7b,1lon8,1m6bz,1m61x,1lnxb,1kta1,1jus9,1j1nt,1il7w,1ileb,1j26b,1jvje,1ku3f,1lolm,1m6e5,1m66a,1lo0x,1ktc2,1juru,1j1l1,1il41,1ilah,1j239,1jvio,1ku6s,1losj,1m6me,1m6df,1lo3w,1kta3,1juo3,1j1ie,1il3g,1ilbs,1j255,1jvjf,1ku5v,1lopy,1m6hf,1m67p,1lnzd,1kt6m,1juli,1j1hc,1il4m,1ilf5,1j29k,1jvml,1ku5v,1looh,1m6i5,1m6b2,1lo4h,1ktbw,1jup2,1j1id\"\n};\n\n<\/script>\n<script>\n\/* TZL BaZi engine (browser) \u2014 \u4f9d\u8d56 bazi-terms.js \u63d0\u4f9b\u7684\u51bb\u7ed3\u300c\u8282\u300d\u8868\u3002\r\n *\r\n * \u8fd9\u662f tools\/bazi\/*.mjs \u90a3\u5957\u5df2\u9a8c\u8bc1\u5f15\u64ce\u7684**\u6d4f\u89c8\u5668\u91cd\u5b9e\u73b0**:\r\n * \u6d4f\u89c8\u5668\u91cc\u4e0d\u8dd1\u5929\u6587\u8ba1\u7b97,\u53ea\u67e5\u51bb\u7ed3\u8868 + \u505a\u7eaf\u7b97\u672f\u3002\r\n * \u56e0\u6b64\u5b83\u5fc5\u987b\u5355\u72ec\u8fc7\u95f8 \u2014\u2014 \u89c1 tests\/bazi-browser-parity.test.mjs\r\n * (\u4e0e Node \u7248\u9010\u6761\u5bf9\u649e,\u4e0d\u4e00\u81f4\u5373\u4e0d\u8bb8\u53d1\u5e03)\u3002\r\n *\r\n * \u53e3\u5f84(\u4e0e bazi-calculator-spec.md \u00a74 \u4e00\u81f4):\r\n *   \u00b7 \u5e74\u67f1\u4ee5\u7acb\u6625\u4e3a\u754c;\u6708\u652f\u7531 12 \u4e2a\u300c\u8282\u300d\u5b9a,\u6708\u5e72\u4e94\u864e\u9041;\r\n *   \u00b7 \u65e5\u67f1\u8fde\u7eed 60 \u5faa\u73af,\u57fa\u51c6 2000-01-07 \u7532\u5b50;\u65f6\u5e72\u4e94\u9f20\u9041;\r\n *   \u00b7 \u665a\u5b50\u65f6\u9ed8\u8ba4 A(\u5b50\u65f6\u6362\u65e5),\u540c\u65f6\u7ed9\u51fa B;\r\n *   \u00b7 \u8f93\u5165 = \u51fa\u751f\u5730\u5f53\u65f6\u949f\u8868\u65f6\u95f4,\u4e0d\u505a\u7ecf\u5ea6\/\u5747\u65f6\u5dee\u6821\u6b63,\u590f\u4ee4\u65f6\u5e76\u5165 UTC \u504f\u79fb;\u4e0d\u80fd\u5224\u5b9a\u7684\u67f1\u5e76\u5217\u4e24\u79cd\u53ef\u80fd\u3002\r\n *\/\r\n(function (global) {\r\n  'use strict';\r\n\r\n  var STEMS = ['Ji\u01ce', 'Y\u01d0', 'B\u01d0ng', 'D\u012bng', 'W\u00f9', 'J\u01d0', 'G\u0113ng', 'X\u012bn', 'R\u00e9n', 'Gu\u01d0'];\r\n  var STEMS_CN = ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'];\r\n  var STEM_EL = ['Yang Wood', 'Yin Wood', 'Yang Fire', 'Yin Fire', 'Yang Earth',\r\n                 'Yin Earth', 'Yang Metal', 'Yin Metal', 'Yang Water', 'Yin Water'];\r\n  var BR = ['Z\u01d0', 'Ch\u01d2u', 'Y\u00edn', 'M\u01ceo', 'Ch\u00e9n', 'S\u00ec', 'W\u01d4', 'W\u00e8i', 'Sh\u0113n', 'Y\u01d2u', 'X\u016b', 'H\u00e0i'];\r\n  var BR_CN = ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'];\r\n  var BR_ANIMAL = ['Rat', 'Ox', 'Tiger', 'Rabbit', 'Dragon', 'Snake',\r\n                   'Horse', 'Goat', 'Monkey', 'Rooster', 'Dog', 'Pig'];\r\n\r\n  function mod(a, n) { return ((a % n) + n) % n; }\r\n\r\n  function gregorianToJd(y, m, d) {\r\n    if (m <= 2) { y -= 1; m += 12; }\r\n    var A = Math.floor(y \/ 100);\r\n    var B = 2 - A + Math.floor(A \/ 4);\r\n    return Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + B - 1524.5;\r\n  }\r\n\r\n  function jdToGregorian(jd) {\r\n    var z = Math.floor(jd + 0.5), f = jd + 0.5 - z, A = z;\r\n    if (z >= 2299161) {\r\n      var alpha = Math.floor((z - 1867216.25) \/ 36524.25);\r\n      A = z + 1 + alpha - Math.floor(alpha \/ 4);\r\n    }\r\n    var B = A + 1524, C = Math.floor((B - 122.1) \/ 365.25);\r\n    var D = Math.floor(365.25 * C), E = Math.floor((B - D) \/ 30.6001);\r\n    var dayF = B - D - Math.floor(30.6001 * E) + f;\r\n    var day = Math.floor(dayF);\r\n    var m = E < 14 ? E - 1 : E - 13;\r\n    var y = m > 2 ? C - 4716 : C - 4715;\r\n    var rest = (dayF - day) * 24;\r\n    var hh = Math.floor(rest); rest = (rest - hh) * 60;\r\n    var mi = Math.floor(rest); var ss = Math.round((rest - mi) * 60);\r\n    if (ss >= 60) { ss -= 60; mi += 1; }\r\n    if (mi >= 60) { mi -= 60; hh += 1; }\r\n    return { y: y, m: m, d: day, hour: hh, minute: mi, second: ss };\r\n  }\r\n\r\n  \/\/ ---- \u89e3\u7801\u51bb\u7ed3\u8868 ----\r\n  var TERMS = null;\r\n  function terms() {\r\n    if (TERMS) return TERMS;\r\n    var raw = global.TZL_BAZI_TERMS;\r\n    if (!raw) throw new Error('bazi-terms.js not loaded');\r\n    var originJd = gregorianToJd(raw.originY, raw.originM, raw.originD);\r\n    var parts = raw.d.split(',');\r\n    \/\/ abs[] \u5355\u4f4d = \u79d2(\u6574\u6570)\u3002\u5168\u7a0b\u6574\u6570\u8fd0\u7b97,\u907f\u5f00\u6d6e\u70b9\u6bd4\u8f83\u5728\u8fb9\u754c\u4e0a\u7684\u7ffb\u8f66\u3002\r\n    var abs = [], lons = [], acc = 0, lon = raw.firstLon;\r\n    for (var i = 0; i < parts.length; i++) {\r\n      acc += parseInt(parts[i], 36);\r\n      abs.push(acc);\r\n      lons.push(lon);\r\n      lon = mod(lon + 30, 360);\r\n    }\r\n    if (abs.length !== raw.count) throw new Error('term table length mismatch');\r\n    TERMS = { originJd: originJd, abs: abs, lons: lons };\r\n    return TERMS;\r\n  }\r\n\r\n  \/** \u6c11\u7528\u65e5\u671f\u65f6\u523b \u2192 \u8ddd\u539f\u70b9\u7684\u6574\u6570\u79d2\u3002\u65e5\u5dee\u662f\u6574\u6570,\u4e58 86400 \u4ecd\u7cbe\u786e,\u4e0d\u5f15\u5165\u6d6e\u70b9\u8bef\u5dee\u3002 *\/\r\n  function secondsSinceOrigin(t, y, m, d, hour, minute) {\r\n    var days = Math.round(gregorianToJd(y, m, d) - t.originJd);\r\n    return days * 86400 + (hour || 0) * 3600 + (minute || 0) * 60;\r\n  }\r\n\r\n  \/** \u6700\u540e\u4e00\u4e2a <= tSec \u7684\u300c\u8282\u300d\u4e0b\u6807(\u4e8c\u5206) *\/\r\n  function findTermIndex(t, tSec) {\r\n    var lo = 0, hi = t.abs.length - 1, ans = -1;\r\n    while (lo <= hi) {\r\n      var mid = (lo + hi) >> 1;\r\n      if (t.abs[mid] <= tSec) { ans = mid; lo = mid + 1; } else { hi = mid - 1; }\r\n    }\r\n    return ans;\r\n  }\r\n\r\n  function pillar(stemIdx, brIdx) {\r\n    return {\r\n      stem: STEMS[stemIdx], stemCn: STEMS_CN[stemIdx], element: STEM_EL[stemIdx],\r\n      branch: BR[brIdx], branchCn: BR_CN[brIdx], animal: BR_ANIMAL[brIdx],\r\n      label: STEMS[stemIdx] + '-' + BR[brIdx],\r\n    };\r\n  }\r\n\r\n  var DAY_ANCHOR_JDN = 2451551; \/\/ 2000-01-07 = \u7532\u5b50\r\n\r\n  \/**\r\n   * \u6838\u5fc3:\u6392\u56db\u67f1\u3002\r\n   * @param birth {y,m,d,hour,minute}  \u51fa\u751f\u5730\u5899\u4e0a\u949f\u65f6\u95f4\r\n   * @param lateZi 'A'|'B'\r\n   * @param utcOffsetMinutes \u51fa\u751f\u5730\u5f53\u65f6\u7684 UTC \u504f\u79fb(\u542b\u590f\u4ee4\u65f6),\u5982\u7ebd\u7ea6\u590f\u4ee4\u65f6 = -240\r\n   *\r\n   * \ud83d\udd34 \u4e24\u6761\u65f6\u95f4\u7ebf\u5206\u5f00(2026-08-20 \u5ba1\u67e5\u6293\u51fa\u7684\u81f4\u547d\u7f3a\u9677):\r\n   *   localSec  = \u5f53\u5730\u5899\u4e0a\u65f6\u95f4 \u2192 \u5b9a\u65e5\u67f1\u3001\u65f6\u67f1\r\n   *   tSec      = \u540c\u4e00\u77ac\u95f4\u6362\u7b97\u5230\u4e1c\u516b\u533a \u2192 \u5b9a\u5e74\u67f1\u3001\u6708\u67f1(\u4e0e\u4e1c\u516b\u533a\u8282\u6c14\u8868\u540c\u65f6\u6807)\r\n   *\/\r\n  function fourPillars(birth, lateZi, utcOffsetMinutes) {\r\n    lateZi = lateZi || 'A';\r\n    var off = (typeof utcOffsetMinutes === 'number') ? utcOffsetMinutes : 480;\r\n    var t = terms();\r\n    var localSec = secondsSinceOrigin(t, birth.y, birth.m, birth.d, birth.hour, birth.minute);\r\n    var tSec = localSec - off * 60 + 480 * 60;\r\n\r\n    var i = findTermIndex(t, tSec);\r\n    if (i < 0 || i >= t.abs.length - 1) throw new Error('OUT_OF_RANGE');\r\n\r\n    \/\/ \u6708\u652f\r\n    var mBrIdx = mod((t.lons[i] - 315) \/ 30 + 2, 12);\r\n\r\n    \/\/ \u5e74\u67f1:\u56de\u6eaf\u5230\u6700\u8fd1\u4e00\u4e2a\u7acb\u6625(315\u00b0)\r\n    var j = i;\r\n    while (j >= 0) { if (t.lons[j] === 315) break; j--; }\r\n    if (j < 0) throw new Error('OUT_OF_RANGE');\r\n    var lichunDate = jdToGregorian(t.originJd + t.abs[j] \/ 86400);\r\n    var solarYear = lichunDate.y;\r\n    var yStemIdx = mod(solarYear - 4, 10);\r\n    var yearP = pillar(yStemIdx, mod(solarYear - 4, 12));\r\n\r\n    \/\/ \u6708\u5e72:\u4e94\u864e\u9041\r\n    var yinStem = mod(mod(yStemIdx, 5) * 2 + 2, 10);\r\n    var monthP = pillar(mod(yinStem + mod(mBrIdx - 2, 12), 10), mBrIdx);\r\n\r\n    \/\/ \u65e5\u67f1\r\n    var jdn = Math.floor(gregorianToJd(birth.y, birth.m, birth.d) + 0.5);\r\n    if (lateZi === 'A') { if (birth.hour === 23) jdn += 1; }\r\n    var dIdx = mod(jdn - DAY_ANCHOR_JDN, 60);\r\n    var dStemIdx = mod(dIdx, 10);\r\n    var dayP = pillar(dStemIdx, mod(dIdx, 12));\r\n\r\n    \/\/ \u65f6\u67f1:\u4e94\u9f20\u9041\r\n    var hBrIdx = mod(Math.floor(((birth.hour || 0) + 1) \/ 2), 12);\r\n    var hourP = pillar(mod(mod(dStemIdx, 5) * 2 + hBrIdx, 10), hBrIdx);\r\n\r\n    \/\/ \u8fb9\u754c\u63d0\u793a\r\n    var warnings = [];\r\n    if (birth.hour === 23) warnings.push('late-zi');\r\n    var toPrev = tSec - t.abs[i];\r\n    var toNext = t.abs[i + 1] - tSec;\r\n    if (Math.min(toPrev, toNext) < 86400) warnings.push('near-major-term');\r\n\r\n    \/\/ \ud83d\udd34 \u7acb\u6625\u4e34\u8fd1\u5224\u5b9a\u5fc5\u987b**\u53cc\u5411**\u770b:j \u53ea\u662f\"\u5df2\u8fc7\u53bb\u7684\u6700\u8fd1\u4e00\u6b21\u7acb\u6625\",\r\n    \/\/    \u51fa\u751f\u5728\u7acb\u6625\u3010\u524d\u30112 \u5c0f\u65f6\u65f6 j \u6307\u5411\u53bb\u5e74\u7acb\u6625(\u5dee\u7ea6 365 \u5929),\u5e74\u67f1\u654f\u611f\u5374\u4e0d\u4f1a\u63d0\u793a\u3002\r\n    \/\/    2026-08-20 \u5ba1\u67e5\u6293\u51fa;\u5f53\u65f6 Node \u7248\u6b63\u786e\u3001\u6d4f\u89c8\u5668\u7248\u6709\u6b64 bug,\r\n    \/\/    \u800c parity \u95f8\u53ea\u6bd4\u56db\u67f1\u4e0d\u6bd4 warnings,\u6240\u4ee5 11,442 \u7ec4\u5bf9\u649e\u6ca1\u770b\u89c1\u3002\r\n    var nearLichun = false;\r\n    if (t.lons[i] === 315) { if (Math.abs(tSec - t.abs[i]) < 86400) nearLichun = true; }\r\n    if (!nearLichun) { if (t.lons[i + 1] === 315) { if (Math.abs(t.abs[i + 1] - tSec) < 86400) nearLichun = true; } }\r\n    if (nearLichun) warnings.push('near-lichun');\r\n\r\n    \/\/ \u540c\u5206\u949f\u6b67\u4e49:\u8282\u6c14\u8868\u7cbe\u786e\u5230\u79d2,\u51fa\u751f\u8bb0\u5f55\u901a\u5e38\u53ea\u5230\u5206\u949f \u2192 \u79d2\u4f4d\u672a\u77e5\u65f6\u4e24\u79cd\u5f52\u5c5e\u90fd\u53ef\u80fd\r\n    \/\/ \u26a0 \u8282\u6c14\u82e5\u6070\u597d\u843d\u5728\u6574\u5206(\u79d2\u4f4d = 00),\u8fd9\u4e00\u5206\u949f\u5185\u6240\u6709\u79d2\u90fd\u5728\u5b83\u4e4b\u540e,\u5f52\u5c5e\u5176\u5b9e\u662f\u786e\u5b9a\u7684,\r\n    \/\/   \u4e0d\u8be5\u62a5\u6b67\u4e49 \u2014\u2014 \u5426\u5219\u662f\u4fdd\u5b88\u6027\u8bef\u62a5\u3002\u53ea\u6709\u79d2\u4f4d \u2260 00 \u624d\u771f\u6709\u4e24\u79cd\u53ef\u80fd\u3002\r\n    var sameMinIdx = -1;\r\n    if (t.abs[i] % 60 !== 0) { if (Math.floor(tSec \/ 60) === Math.floor(t.abs[i] \/ 60)) sameMinIdx = i; }\r\n    if (sameMinIdx < 0) { if (t.abs[i + 1] % 60 !== 0) { if (Math.floor(tSec \/ 60) === Math.floor(t.abs[i + 1] \/ 60)) sameMinIdx = i + 1; } } \r\n    if (sameMinIdx >= 0) warnings.push('same-minute-as-term');\r\n\r\n    return {\r\n      year: yearP, month: monthP, day: dayP, hour: hourP,\r\n      solarYear: solarYear, warnings: warnings,\r\n      lichun: lichunDate, utcOffsetMinutes: off,\r\n      _i: i, _j: j, _tSec: tSec, _sameMinIdx: sameMinIdx,\r\n    };\r\n  }\r\n\r\n  \/**\r\n   * \u5224\u5b9a\u54ea\u4e9b\u67f1**\u65e0\u6cd5\u786e\u5b9a**,\u5e76\u7ed9\u51fa\u4e24\u79cd\u53ef\u80fd\u3002\r\n   * \u539f\u5219:\u4e3b\u8868\u4e0d\u8bb8\u5bf9\u4e0d\u80fd\u5224\u5b9a\u7684\u67f1\u7ed9\u51fa\u5355\u4e00\u7b54\u6848 \u2014\u2014 \u8868\u91cc\u5047\u88c5\u786e\u5b9a\u3001\r\n   *      \u5e95\u4e0b\u5c0f\u5b57\u8bf4\"\u5176\u5b9e\u53ef\u80fd\u4e0d\u786e\u5b9a\",\u662f\u81ea\u76f8\u77db\u76fe\u7684\u5448\u73b0\u3002\r\n   *\/\r\n  function resolveAmbiguity(birth, lateZi, off, base) {\r\n    var t = terms(), amb = {};\r\n\r\n    \/\/ (1) \u51fa\u751f\u65f6\u95f4\u672a\u77e5 \u2192 \u9ed8\u8ba4 A(\u5b50\u65f6\u6362\u65e5)\u4e0b,23:00-23:59 \u4f1a\u843d\u5230\u6b21\u65e5\u65e5\u67f1\r\n    if (birth.timeUnknown ? lateZi === 'A' : false) {\r\n      var next = fourPillars({ y: birth.y, m: birth.m, d: birth.d, hour: 23, minute: 30 }, 'A', off);\r\n      if (next.day.label !== base.day.label) {\r\n        amb.day = { options: [base.day, next.day], reason: 'unknown-time' };\r\n      }\r\n      \/\/ \u5f53\u5929\u82e5\u5e26\u300c\u8282\u300d,\u5e74\/\u6708\u4e5f\u53ef\u80fd\u56e0\u65f6\u523b\u672a\u77e5\u800c\u4e0d\u5b9a\u3002\r\n      \/\/ \u26a0 \u4e0d\u80fd\u62ff 00:00 \u4e0e 23:59 \u5404\u6392\u4e00\u6b21\u76d8\u6765\u5224 \u2014\u2014 23:59 \u88ab\u5f53\u6210 23:59:00,\r\n      \/\/   \u8282\u6c14\u82e5\u843d\u5728 23:59:37 \u5c31\u4f1a\u6574\u4e2a\u6f0f\u6389\u3002\u76f4\u63a5\u67e5\u51bb\u7ed3\u8868\u5728 [\u5f53\u592900:00, \u6b21\u65e500:00) \u91cc\u6709\u6ca1\u6709\u8282\u3002\r\n      var dayStartSec = secondsSinceOrigin(t, birth.y, birth.m, birth.d, 0, 0) - off * 60 + 480 * 60;\r\n      var dayEndSec = dayStartSec + 86400;\r\n      for (var k = 0; k < t.abs.length; k++) {\r\n        if (t.abs[k] < dayStartSec) continue;\r\n        if (t.abs[k] >= dayEndSec) break;\r\n        var bef = pillarsForTermIndex(k - 1), aft = pillarsForTermIndex(k);\r\n        if (bef ? !!aft : false) {\r\n          if (bef.month.label !== aft.month.label) amb.month = { options: [bef.month, aft.month], reason: 'unknown-time' };\r\n          if (bef.year.label !== aft.year.label) amb.year = { options: [bef.year, aft.year], reason: 'unknown-time' };\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ (2) \u4e0e\u8282\u6c14\u4ea4\u63a5\u843d\u5728\u540c\u4e00\u5206\u949f \u2192 \u8be5\u8282\u6c14\u6240\u7ba1\u7684\u67f1\u4e0d\u80fd\u5224\u5b9a\u3002\r\n    \/\/ \u26a0 \u4e0d\u80fd\"\u53d6\u8fd9\u4e00\u5206\u949f\u4e24\u7aef\u518d\u6392\u4e00\u6b21\u76d8\":\u6392\u76d8\u5165\u53e3\u53ea\u63a5\u53d7\u5230\u5206\u949f,\u79d2\u4f4d\u4f1a\u88ab\u4e22\u6389,\r\n    \/\/    \u4e24\u7aef\u4f1a\u7b97\u51fa\u5b8c\u5168\u4e00\u6837\u7684\u7ed3\u679c(2026-08-20 \u7b2c\u4e00\u6b21\u5b9e\u73b0\u5c31\u683d\u5728\u8fd9)\u3002\r\n    \/\/    \u6b63\u786e\u505a\u6cd5\u662f\u76f4\u63a5\u6309\u300c\u5f52\u5c5e\u54ea\u4e2a\u8282\u300d\u53d6\u4e24\u79cd\u89e3\u91ca\u3002\r\n    if (base._sameMinIdx >= 0) {\r\n      var idx = base._sameMinIdx;\r\n      var beforeP = pillarsForTermIndex(idx - 1);   \/\/ \u89e3\u91ca\u4e00:\u4ecd\u5728\u8be5\u8282\u4e4b\u524d\r\n      var afterP = pillarsForTermIndex(idx);        \/\/ \u89e3\u91ca\u4e8c:\u5df2\u8fdb\u5165\u8be5\u8282\r\n      if (beforeP ? !!afterP : false) {\r\n        if (beforeP.month.label !== afterP.month.label) {\r\n          amb.month = { options: [beforeP.month, afterP.month], reason: 'same-minute' };\r\n        }\r\n        if (beforeP.year.label !== afterP.year.label) {\r\n          amb.year = { options: [beforeP.year, afterP.year], reason: 'same-minute' };\r\n        }\r\n      }\r\n    }\r\n    return amb;\r\n  }\r\n\r\n  \/** \u7ed9\u5b9a\"\u5f53\u524d\u5f52\u5c5e\u7684\u8282\"\u4e0b\u6807,\u76f4\u63a5\u63a8\u51fa\u5e74\u67f1\u4e0e\u6708\u67f1(\u4e0d\u7ecf\u8fc7\u65f6\u95f4,\u907f\u5f00\u5206\u949f\u622a\u65ad) *\/\r\n  function pillarsForTermIndex(i) {\r\n    var t = terms();\r\n    if (i < 0 || i >= t.abs.length) return null;\r\n    var mBrIdx = mod((t.lons[i] - 315) \/ 30 + 2, 12);\r\n    var j = i;\r\n    while (j >= 0) { if (t.lons[j] === 315) break; j--; }\r\n    if (j < 0) return null;\r\n    var solarYear = jdToGregorian(t.originJd + t.abs[j] \/ 86400).y;\r\n    var yStemIdx = mod(solarYear - 4, 10);\r\n    var yinStem = mod(mod(yStemIdx, 5) * 2 + 2, 10);\r\n    return {\r\n      year: pillar(yStemIdx, mod(solarYear - 4, 12)),\r\n      month: pillar(mod(yinStem + mod(mBrIdx - 2, 12), 10), mBrIdx),\r\n    };\r\n  }\r\n\r\n  \/**\r\n   * \u9875\u9762\u7528:\u4e3b\u76d8 + \u665a\u5b50\u65f6\u53e6\u4e00\u53e3\u5f84\u3002\r\n   * \u26a0 \u5df2\u5220\u9664\u65e7\u7684\u300c\u590f\u4ee4\u65f6\u66ff\u4ee3\u76d8\u300d\u2014\u2014 \u90a3\u662f\u9519\u8bef\u6a21\u578b:\u51fa\u751f\u8bc1\u5199 03:30 \u590f\u4ee4\u65f6\r\n   *   \u4e0e\u5199 02:30 \u6807\u51c6\u65f6\u662f**\u540c\u4e00\u4e2a\u77ac\u95f4\u7684\u4e24\u79cd\u5199\u6cd5**,\u4e0d\u662f\u77ac\u95f4\u63d0\u524d\u4e86\u4e00\u5c0f\u65f6\u3002\r\n   *   \u590f\u4ee4\u65f6\u7684\u6b63\u786e\u4f4d\u7f6e\u5728 utcOffsetMinutes \u91cc(\u590f\u4ee4\u65f6\u671f\u95f4\u504f\u79fb\u672c\u8eab +60)\u3002\r\n   *   \u65e7\u5b9e\u73b0\u4f1a\u8ba9\u5207\u6362\u590f\u4ee4\u65f6\u9519\u8bef\u5730\u6539\u53d8\u5e74\u67f1\/\u6708\u67f1\u3002\r\n   *\/\r\n  function forDisplay(birth, lateZi, utcOffsetMinutes) {\r\n    lateZi = lateZi || 'A';\r\n    var off = (typeof utcOffsetMinutes === 'number') ? utcOffsetMinutes : 480;\r\n    \/\/ \u65f6\u95f4\u672a\u77e5\u65f6\u7528\u6b63\u5348\u6392\u76d8,\u4f46**\u53ea\u4f5c\u4e3a\u57fa\u51c6**;\u54ea\u4e9b\u67f1\u4e0d\u80fd\u786e\u5b9a\u7531 resolveAmbiguity \u5224\u5b9a,\r\n    \/\/ \u4e3b\u8868\u5bf9\u4e0d\u786e\u5b9a\u7684\u67f1\u4e0d\u7ed9\u5355\u4e00\u7b54\u6848\u3002\r\n    var probe = birth.timeUnknown\r\n      ? { y: birth.y, m: birth.m, d: birth.d, hour: 12, minute: 0, timeUnknown: true }\r\n      : birth;\r\n    var primary = fourPillars(probe, lateZi, off);\r\n    var alt = (birth.timeUnknown ? false : birth.hour === 23)\r\n      ? fourPillars(birth, lateZi === 'A' ? 'B' : 'A', off) : null;\r\n    var ambiguity = resolveAmbiguity(probe, lateZi, off, primary);\r\n    return { primary: primary, lateZiAlternative: alt, ambiguity: ambiguity };\r\n  }\r\n\r\n  global.TZLBazi = { fourPillars: fourPillars, forDisplay: forDisplay,\r\n                     STEMS: STEMS, BRANCHES: BR, ANIMALS: BR_ANIMAL };\r\n})(typeof window !== 'undefined' ? window : globalThis);\r\n\n<\/script>\n\n<style>\r\n\/* BaZi \u8ba1\u7b97\u5668\u4e13\u5c5e\u6837\u5f0f(\u65b9\u5f62\/\u6241\u5e73\/\u6731\u7ea2,\u4e0e\u5168\u7ad9 Style B \u4e00\u81f4) *\/\r\n.tzl-bazi-form{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}\r\n.tzl-bazi-label{flex:1;min-width:190px;font-family:var(--mono,\"Spline Sans Mono\",monospace);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--soft,#5a5a5a);display:block}\r\n.tzl-bazi-label input{display:block;width:100%;margin-top:8px;padding:11px 12px;font-size:16px;font-family:inherit;color:#0a0a0a;background:#fff;border:2px solid #0a0a0a;border-radius:0;text-transform:none;letter-spacing:0}\r\n#tzl-bz-go{padding:13px 26px;font-size:15px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:#e1391b;border:2px solid #e1391b;border-radius:0;cursor:pointer;font-family:var(--mono,\"Spline Sans Mono\",monospace)}\r\n#tzl-bz-go:hover,#tzl-bz-go:focus{background:#b52d15;border-color:#b52d15;color:#fff}\r\n.tzl-bazi-label select{display:block;width:100%;margin-top:8px;padding:11px 12px;font-size:16px;font-family:inherit;color:#0a0a0a;background:#fff;border:2px solid #0a0a0a;border-radius:0;text-transform:none;letter-spacing:0}\r\n.tzl-bazi-check{display:block;margin-top:16px;font-size:15px;cursor:pointer}\r\n.tzl-bazi-check input{margin-right:8px;width:16px;height:16px;accent-color:#e1391b}\r\n.tzl-bazi-label input:disabled{opacity:.45;cursor:not-allowed}\r\n\/* \u26a0 .tzl-bazi-label input \u7684 display:block \u4f1a\u76d6\u6389 hidden \u5c5e\u6027(UA \u7684 display:none),\r\n   \u5bfc\u81f4\u672c\u8be5\u85cf\u8d77\u6765\u7684\u81ea\u5b9a\u4e49\u504f\u79fb\u6846\u4e00\u76f4\u9732\u5728\u8868\u5355\u91cc\u3002\u5fc5\u987b\u663e\u5f0f\u8ba9 hidden \u751f\u6548\u3002 *\/\r\n.tzl-bazi-label input[hidden],.tzl-bazi-label select[hidden]{display:none!important}\r\n\/* \u26a0 \u522b\u518d\u7ed9\u63d0\u793a\u6302 .tzl-muted:\u6a21\u677f\u91cc\u90a3\u4e2a class \u662f font-family:var(--mono),\r\n   \u4f1a\u8ba9\u6574\u6bb5\u8bf4\u660e\u53d8\u6210\u7b49\u5bbd\u6ee1\u5bbd\u7684\u4e00\u5835\u5899,\u6bd4\u6b63\u6587\u8fd8\u62a2\u773c(2026-08-21 \u7ebf\u4e0a\u622a\u56fe\u53d1\u73b0)\u3002\r\n   \u63d0\u793a\u5c31\u8be5\u7528\u6b63\u6587\u5b57\u4f53\u3001\u6bd4\u6b63\u6587\u5c0f\u3001\u989c\u8272\u538b\u4e0b\u53bb\u3002 *\/\r\n.tzl-bazi-hint{margin-top:14px;max-width:62ch;font-size:14px;line-height:1.65;color:var(--soft,#5a5a5a)}\r\n\/* \u52a8\u6001\u90a3\u6761\u662f\u771f\u6709\u7528\u7684\u4fe1\u606f(\u544a\u8bc9\u7528\u6237\u504f\u79fb\u8981\u4e0d\u8981\u7d27),\u7ed9\u4e00\u9053\u7ad6\u7ebf\u8ba9\u5b83\u8ddf\u9759\u6001\u63d0\u793a\u533a\u5206\u5f00 *\/\r\n.tzl-bazi-tzhint{margin-top:12px;max-width:62ch;padding-left:12px;border-left:3px solid #e1391b;font-size:14px;line-height:1.65}\r\n.tzl-bazi-tzhint:empty{display:none}\r\n.tzl-dark .tzl-bazi-hint{color:#a8a8a8}\r\n.tzl-bazi-summary{font-size:17px;font-weight:600;margin:14px 0 0}\r\n.tzl-bazi-err{margin-top:14px;padding:12px 14px;border-left:4px solid #e1391b;background:#fdf1ee;color:#0a0a0a;font-size:15px}\r\n.tzl-bazi-flag{margin-top:14px;padding:12px 14px;border:2px solid #0a0a0a;font-size:15px}\r\n.tzl-bazi-flag strong{font-weight:800}\r\n.tzl-bazi-alt{margin-top:10px;font-family:var(--mono,\"Spline Sans Mono\",monospace);font-size:14px}\r\n.tzl-links.two{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n@media(max-width:600px){.tzl-links.two{grid-template-columns:1fr}}\r\n.tzl-dark .tzl-bazi-label input,.tzl-dark .tzl-bazi-label select{background:#111;color:#f5f5f5;border-color:#f5f5f5}\r\n.tzl-dark .tzl-bazi-err{background:#2a1410;color:#f5f5f5}\r\n.tzl-dark .tzl-bazi-flag{border-color:#f5f5f5}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  function $(id){return document.getElementById(id);}\r\n  var PILLARS=[['year','Year'],['month','Month'],['day','Day'],['hour','Hour']];\r\n\r\n  \/\/ \u26a0 \u8fd9\u91cc\u9009\u7684\u662f\u3010\u67d0\u4e00\u65f6\u523b\u7684 UTC \u504f\u79fb\u3011,\u4e0d\u662f\"\u65f6\u533a\"\u2014\u2014\u540c\u4e00\u4e2a\u5730\u65b9\u5728\u4e0d\u540c\u5e74\u4efd\u3001\r\n  \/\/   \u590f\u4ee4\u65f6\u671f\u95f4\u4f1a\u7528\u4e0d\u540c\u504f\u79fb\u3002\u56e0\u6b64\u8bf4\u660e\u6587\u5b57\u4e00\u5f8b\u4e0d\u628a\u57ce\u5e02\u548c\u504f\u79fb\u7ed1\u6b7b:\r\n  \/\/   \u6d1b\u6749\u77f6\u590f\u4ee4\u65f6\u662f \u221207:00,\u82e5\u6807\u7b7e\u5199\u6b7b \"Denver, Phoenix\",\u6d1b\u6749\u77f6\u7528\u6237\u4f1a\u4ee5\u4e3a\u5de5\u5177\u574f\u4e86\u3002\r\n  \/\/   \u6539\u7528\"\u6807\u51c6\u65f6\/\u590f\u4ee4\u65f6\"\u8fd9\u7c7b\u63cf\u8ff0\u3002+13:45 = Chatham \u590f\u4ee4\u65f6,\u66fe\u6f0f\u3002\r\n  var OFFSETS=[\r\n    [-720,''],[-660,'Samoa standard'],[-600,'Hawaii standard'],[-570,'Marquesas'],\r\n    [-540,'Alaska standard'],[-480,'Pacific standard \/ Alaska daylight'],\r\n    [-420,'Mountain standard \/ Pacific daylight'],[-360,'Central standard \/ Mountain daylight'],\r\n    [-300,'Eastern standard \/ Central daylight'],[-240,'Atlantic standard \/ Eastern daylight'],\r\n    [-210,'Newfoundland standard'],[-180,'Brazil \/ Argentina'],[-120,''],[-60,'Azores'],\r\n    [0,'Western European standard'],[60,'Central European standard \/ British summer'],\r\n    [120,'Eastern European standard \/ Central European summer'],[180,'Moscow \/ East Africa'],\r\n    [210,'Iran standard'],[240,'Gulf standard'],[270,'Afghanistan'],[300,'Pakistan'],\r\n    [330,'India \/ Sri Lanka'],[345,'Nepal'],[360,'Bangladesh'],[390,'Myanmar'],\r\n    [420,'Indochina \/ Western Indonesia'],[480,'China \/ Hong Kong \/ Singapore \/ Western Australia'],\r\n    [525,'Central Western Australia'],[540,'Japan \/ Korea'],[570,'Central Australia standard'],\r\n    [600,'Eastern Australia standard'],[630,'Central Australia daylight'],\r\n    [660,'Eastern Australia daylight'],[720,'New Zealand standard'],[765,'Chatham standard'],\r\n    [780,'New Zealand daylight'],[825,'Chatham daylight'],[840,'Line Islands']\r\n  ];\r\n  function offNum(m){\r\n    var s=m<0?'\u2212':'+', a=Math.abs(m);\r\n    return 'UTC'+s+String(Math.floor(a\/60)).padStart(2,'0')+':'+String(a%60).padStart(2,'0');\r\n  }\r\n  function offLabel(m,place){ return offNum(m)+(place?'  \u2014  '+place:''); }\r\n\r\n  \/**\r\n   * \u9ed8\u8ba4\u65f6\u533a = \u6d4f\u89c8\u5668\u3010\u5f53\u524d\u3011\u504f\u79fb\u3002\u53ea\u662f\u4e2a\u8d77\u70b9,\u4e0d\u662f\u65ad\u8a00,\u7528\u6237\u6539\u4e00\u4e0b\u5c31\u884c\u3002\r\n   *\r\n   * \u26a0 \u66fe\u7ecf\u6539\u6210\"\u6309\u51fa\u751f\u90a3\u5929\u7b97\",\u770b\u4f3c\u66f4\u806a\u660e,\u5b9e\u6d4b\u5f88\u5751:\u4e2d\u56fd 1986-1991 \u5b9e\u884c\u8fc7\u590f\u4ee4\u65f6,\r\n   *   \u4e8e\u662f 1990-06-15 \u4f1a\u7b97\u51fa UTC+09:00,\u754c\u9762\u663e\u793a \"Tokyo, Seoul\" \u2014\u2014 \u6570\u5b57\u6ca1\u9519,\r\n   *   \u4f46\u5bf9\u4e00\u4e2a\u4e2d\u56fd\u7528\u6237\u770b\u8d77\u6765\u5c31\u662f\u574f\u4e86;\u800c\u4e14\u9ed8\u8ba4\u503c\u4f1a\u968f\u51fa\u751f\u65e5\u671f\u8df3\u52a8,\u663e\u5f97\u4e0d\u7a33\u5b9a\u3002\r\n   *   \u7528\u5f53\u524d\u504f\u79fb\u7b80\u5355\u3001\u7a33\u5b9a\u3001\u6807\u7b7e\u4e5f\u5bf9\u5f97\u4e0a;\u771f\u9700\u8981\u590f\u4ee4\u65f6\u7684\u4eba\u6309\u63d0\u793a\u5f80\u524d\u6311\u4e00\u6863\u5373\u53ef\u3002\r\n   *\/\r\n  function guessOffset(){\r\n    try{ return -new Date().getTimezoneOffset(); }catch(e){ return null; }\r\n  }\r\n\r\n  function render(){\r\n    var err=$('tzl-bz-err'), out=$('tzl-bz-out');\r\n    err.hidden=true; err.textContent='';\r\n    var dv=$('tzl-bz-date').value, tv=$('tzl-bz-time').value;\r\n    var unknown=$('tzl-bz-unknown').checked;\r\n    if(!dv){ err.hidden=false; err.textContent='Please enter a date of birth.'; out.hidden=true; return; }\r\n    \/\/ \ud83d\udd34 \u65f6\u95f4\u672a\u77e5\u65f6\u7edd\u4e0d\u9759\u9ed8\u5f53\u6210 00:00 \u2014\u2014 \u7528\u6b63\u5348\u505a\u65e5\u671f\u4fa7\u5224\u5b9a,\u65f6\u67f1\u660e\u786e\u62a5 Unknown\u3002\r\n    if(unknown?false:!tv){ err.hidden=false; err.textContent='Enter a time of birth, or tick \"I do not know my birth time\".'; out.hidden=true; return; }\r\n    var dp=dv.split('-').map(Number);\r\n    var tp=unknown?[12,0]:tv.split(':').map(Number);\r\n    \/\/ timeUnknown \u5fc5\u987b\u4f20\u4e0b\u53bb \u2014\u2014 \u5f15\u64ce\u636e\u6b64\u5224\u5b9a\u54ea\u4e9b\u67f1\u4e0d\u80fd\u786e\u5b9a(\u6f0f\u4f20\u5219\u65e5\u67f1\u4f1a\u88ab\u5f53\u6210\u786e\u5b9a\u503c)\r\n    var birth={y:dp[0],m:dp[1],d:dp[2],hour:tp[0]||0,minute:tp[1]||0,timeUnknown:unknown};\r\n    \/\/ \u504f\u79fb:\u4e0b\u62c9\u4e3a\u4e3b;\u56fa\u5b9a\u5217\u8868\u8986\u76d6\u4e0d\u4e86 1900 \u5e74\u4ee5\u6765\u7684\u5168\u90e8\u5386\u53f2\u6c11\u7528\u504f\u79fb,\r\n    \/\/ \u6545\u7559\u4e00\u4e2a Custom(\u5e73\u65f6\u771f\u6b63\u9690\u85cf,\u9009\u4e2d\u624d\u51fa\u73b0,\u4e0d\u5360\u7248\u9762)\u3002\r\n    var off;\r\n    if($('tzl-bz-utc').value==='custom'){\r\n      var cv=($('tzl-bz-utc-custom').value||'').trim();\r\n      var mm=cv.match(\/^([+\\-\u2212])?(\\d{1,2}):?([0-5]\\d)?$\/);\r\n      if(!mm){ err.hidden=false; err.textContent='Enter the offset as +HH:MM or -HH:MM, for example +13:45 or -05:50.'; out.hidden=true; return; }\r\n      off=(parseInt(mm[2],10)*60)+(mm[3]?parseInt(mm[3],10):0);\r\n      if(mm[1]==='-'||mm[1]==='\u2212') off=-off;\r\n      if(off<-900||off>900){ err.hidden=false; err.textContent='Offset must be between -15:00 and +15:00.'; out.hidden=true; return; }\r\n    } else {\r\n      off=parseInt($('tzl-bz-utc').value,10); if(isNaN(off)) off=480;\r\n    }\r\n    var r;\r\n    try{ r=window.TZLBazi.forDisplay(birth,'A',off); }\r\n    catch(e){\r\n      out.hidden=true; err.hidden=false;\r\n      err.textContent=(e?e.message==='OUT_OF_RANGE':false)\r\n        ? 'This calculator covers birth dates from 1900 to 2100 only.'\r\n        : 'Something went wrong reading that date.';\r\n      return;\r\n    }\r\n\r\n    var amb=r.ambiguity||{};\r\n    var AMBTEXT={\r\n      'unknown-time':'depends on whether the birth was before or after 23:00',\r\n      'same-minute':'the record and the boundary share the same minute'\r\n    };\r\n    var rows='';\r\n    for(var i=0;i<PILLARS.length;i++){\r\n      var key=PILLARS[i][0], p=r.primary[key];\r\n      if(unknown?key==='hour':false){\r\n        rows+='<tr><td>Hour<\/td><td colspan=\"3\"><strong>Unknown<\/strong> \u2014 no birth time given<\/td><\/tr>';\r\n        continue;\r\n      }\r\n      \/\/ \ud83d\udd34 \u4e0d\u80fd\u5224\u5b9a\u7684\u67f1,\u4e3b\u8868\u5c31\u4e0d\u7ed9\u5355\u4e00\u7b54\u6848 \u2014\u2014 \u76f4\u63a5\u5e76\u5217\u4e24\u79cd\u53ef\u80fd\r\n      if(amb[key]){\r\n        var o=amb[key].options;\r\n        rows+='<tr><td>'+PILLARS[i][1]+'<\/td><td colspan=\"3\"><strong>'\r\n            +o[0].label+'<\/strong> or <strong>'+o[1].label+'<\/strong>'\r\n            +' <span class=\"tzl-cn\">'+o[0].stemCn+o[0].branchCn+'<\/span> \/ <span class=\"tzl-cn\">'+o[1].stemCn+o[1].branchCn+'<\/span>'\r\n            +'<br><span class=\"tzl-muted\">Not determinable \u2014 '+(AMBTEXT[amb[key].reason]||amb[key].reason)+'.<\/span><\/td><\/tr>';\r\n        continue;\r\n      }\r\n      rows+='<tr><td>'+PILLARS[i][1]+'<\/td><td>'+p.stem+' <span class=\"tzl-cn\">'+p.stemCn+'<\/span><br><span class=\"tzl-muted\">'+p.element+'<\/span><\/td>'\r\n          +'<td>'+p.branch+' <span class=\"tzl-cn\">'+p.branchCn+'<\/span><br><span class=\"tzl-muted\">'+p.animal+'<\/span><\/td>'\r\n          +'<td>'+p.label+'<\/td><\/tr>';\r\n    }\r\n    $('tzl-bz-rows').innerHTML=rows;\r\n\r\n    \/\/ Day master \u540c\u6837\u4e0d\u80fd\u5728\u65e5\u67f1\u4e0d\u786e\u5b9a\u65f6\u7ed9\u5355\u4e00\u7b54\u6848\r\n    var dm = amb.day\r\n      ? 'Day master: not determinable \u2014 the day pillar could be '+amb.day.options[0].label+' or '+amb.day.options[1].label+'.'\r\n      : 'Day master: '+r.primary.day.stem+' ('+r.primary.day.element+').';\r\n    var yr = amb.year\r\n      ? ' BaZi year: not determinable from this record.'\r\n      : ' BaZi year: '+r.primary.solarYear+', beginning at Lichun on '\r\n        +r.primary.lichun.y+'-'+String(r.primary.lichun.m).padStart(2,'0')+'-'+String(r.primary.lichun.d).padStart(2,'0')\r\n        +' '+String(r.primary.lichun.hour).padStart(2,'0')+':'+String(r.primary.lichun.minute).padStart(2,'0')+' (UTC+8).';\r\n    $('tzl-bz-summary').textContent=dm+yr;\r\n\r\n    var notes='';\r\n    var w=r.primary.warnings;\r\n    var onTermDay=(w.indexOf('near-lichun')>-1)||(w.indexOf('near-major-term')>-1);\r\n\r\n    if(unknown){\r\n      notes+='<div class=\"tzl-bazi-flag\"><strong>No birth time given.<\/strong> Any pillar that cannot be settled from the date alone is shown above with both possibilities rather than a single answer.<\/div>';\r\n    }\r\n    if(unknown?false:(w.indexOf('late-zi')>-1?!!r.lateZiAlternative:false)){\r\n      var a=r.lateZiAlternative;\r\n      notes+='<div class=\"tzl-bazi-flag\"><strong>Born in the 23:00 hour.<\/strong> Schools disagree on whether this belongs to the incoming or outgoing day, so both readings are given. Shown above: day changes at 23:00.'\r\n           +'<div class=\"tzl-bazi-alt\">If the day changes at midnight instead \u2014 day '+a.day.label+', hour '+a.hour.label+'<\/div><\/div>';\r\n    }\r\n    if(w.indexOf('same-minute-as-term')>-1){\r\n      notes+='<div class=\"tzl-bazi-flag\"><strong>Same recorded minute as a solar-term boundary.<\/strong> Solar terms fall on a particular second, while birth records stop at the minute. The affected pillars are listed above with both possibilities.<\/div>';\r\n    }\r\n    \/\/ \u65f6\u533a\u5230\u5e95\u5f71\u4e0d\u5f71\u54cd\u8fd9\u4e00\u5f20\u76d8?\u62ff\u6781\u7aef\u504f\u79fb\u4e24\u7aef\u5404\u7b97\u4e00\u6b21,\u76f4\u63a5\u7ed9\u7528\u6237\u7b54\u6848\u3002\r\n    \/\/ \u5927\u591a\u6570\u751f\u65e5\u4e24\u7aef\u7ed3\u679c\u76f8\u540c \u2192 \u660e\u8bf4\"\u9009\u9519\u4e5f\u6ca1\u5173\u7cfb\",\u7701\u6389\u4e0d\u5fc5\u8981\u7684\u7126\u8651;\r\n    \/\/ \u5c11\u6570\u843d\u5728\u8282\u6c14\u9644\u8fd1\u7684 \u2192 \u660e\u8bf4\"\u8fd9\u91cc\u65f6\u533a\u662f\u5173\u952e\",\u628a\u6ce8\u610f\u529b\u653e\u5230\u771f\u6b63\u8981\u7d27\u7684\u5730\u65b9\u3002\r\n    \/\/ \u26a0 \u53ea\u5728\u3010\u5df2\u77e5\u51fa\u751f\u65f6\u95f4\u3011\u65f6\u624d\u505a\u8fd9\u4e2a\u5224\u5b9a\u3002\u65f6\u95f4\u672a\u77e5\u65f6\u5185\u90e8\u7528\u7684\u662f\u4e2d\u5348 12:00,\r\n    \/\/   \u62ff\u5b83\u53bb\u8bd5\u4e24\u7aef\u7b49\u4e8e\u53ea\u95ee\"\u8fd9\u4e00\u5929\u7684\u4e2d\u5348\u8de8\u4e0d\u8de8\u8282\u6c14\",\u53ef\u80fd\u5f97\u51fa\"\u504f\u79fb\u65e0\u6240\u8c13\"\u7684\u9519\u8bef\u7ed3\u8bba,\r\n    \/\/   \u800c\u5b9e\u9645\u4e0a\u5f53\u5929 00:00 \u4e0e 23:59 \u5b8c\u5168\u53ef\u80fd\u843d\u5728\u8282\u6c14\u4e24\u4fa7\u3002\u672a\u77e5\u65f6\u95f4\u7684\u6b67\u4e49\u7531\r\n    \/\/   resolveAmbiguity() \u6309\u6574\u5929\u533a\u95f4\u8d1f\u8d23,\u8fd9\u91cc\u4e0d\u518d\u63d2\u5634\u3002\r\n    if(unknown){ $('tzl-bz-tzhint').textContent=''; }\r\n    else{\r\n      try{\r\n        var lo=window.TZLBazi.fourPillars(birth,'A',-720);\r\n        var hi=window.TZLBazi.fourPillars(birth,'A',840);\r\n        var tzMatters=(lo.year.label!==hi.year.label)||(lo.month.label!==hi.month.label);\r\n        \/\/ \u590f\u4ee4\u65f6\u53ea\u5728\"\u504f\u79fb\u771f\u7684\u8981\u7d27\"\u65f6\u624d\u63d0 \u2014\u2014 \u4e0d\u8981\u7d27\u7684\u65f6\u5019\u63d0\u4e86\u7eaf\u5c5e\u589e\u52a0\u8d1f\u62c5\r\n        $('tzl-bz-tzhint').innerHTML = tzMatters\r\n          ? '<strong>The UTC offset matters for this birth date.<\/strong> It falls close enough to a solar-term boundary that the year or month pillar depends on it, so the setting above is worth checking. If daylight saving was in force at the birthplace that day, choose the entry one hour ahead of the usual one.'\r\n          : 'For this birth date the offset makes no difference: every setting from UTC\u221212:00 to UTC+14:00 gives the same year and month pillars.';\r\n      }catch(e){ $('tzl-bz-tzhint').textContent=''; }\r\n    }\r\n\r\n    if(w.indexOf('near-lichun')>-1){\r\n      notes+='<div class=\"tzl-bazi-flag\"><strong>Within a day of Lichun.<\/strong> The year pillar here depends on the exact recorded time and on the UTC offset you selected. Check both before relying on it.<\/div>';\r\n    }else if(w.indexOf('near-major-term')>-1){\r\n      notes+='<div class=\"tzl-bazi-flag\"><strong>Within a day of a month-changing solar term.<\/strong> The month pillar here is sensitive to the exact recorded time and to the UTC offset.<\/div>';\r\n    }\r\n    $('tzl-bz-notes').innerHTML=notes;\r\n    out.hidden=false;\r\n  }\r\n\r\n  function init(){\r\n    var b=$('tzl-bz-go'); if(!b) return;\r\n    var sel=$('tzl-bz-utc');\r\n    if(sel?!sel.options.length:false){\r\n      var guess=guessOffset();\r\n      var hasGuess=OFFSETS.some(function(o){return o[0]===guess;});\r\n      var html='';\r\n      for(var i=0;i<OFFSETS.length;i++){\r\n        var v=OFFSETS[i][0];\r\n        var mark=hasGuess?(v===guess):(v===0);\r\n        html+='<option value=\"'+v+'\"'+(mark?' selected':'')+'>'+offLabel(v,OFFSETS[i][1])+'<\/option>';\r\n      }\r\n      html+='<option value=\"custom\">Custom offset\u2026<\/option>';\r\n      sel.innerHTML=html;\r\n    }\r\n    if(sel) sel.addEventListener('change',function(){\r\n      var c=$('tzl-bz-utc-custom'); if(c) c.hidden=(sel.value!=='custom');\r\n    });\r\n    b.addEventListener('click',render);\r\n    var un=$('tzl-bz-unknown');\r\n    if(un) un.addEventListener('change',function(){\r\n      var t=$('tzl-bz-time'); if(t){ t.disabled=un.checked; if(un.checked) t.value=''; }\r\n    });\r\n    ['tzl-bz-date','tzl-bz-time'].forEach(function(id){\r\n      var el=$(id); if(el) el.addEventListener('keydown',function(e){ if(e.key==='Enter'){ e.preventDefault(); render(); } });\r\n    });\r\n    \/\/ \u4e0d\u9884\u586b\u793a\u4f8b\u6570\u636e\u3001\u4e0d\u81ea\u52a8\u6392\u76d8:\u9996\u5c4f\u7ed9\u7a7a\u8868\u5355,\u907f\u514d\u7528\u6237\u628a\u793a\u4f8b\u76d8\u5f53\u6210\u81ea\u5df1\u7684\u7ed3\u679c\r\n  }\r\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',init); else init();\r\n})();\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\r\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thezodiaclore.com\/\"},\r\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BaZi Calculator\",\"item\":\"https:\/\/thezodiaclore.com\/bazi-calculator\/\"}]}\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\r\n{\"@type\":\"Question\",\"name\":\"Is BaZi the same as my Chinese zodiac sign?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not quite. In a BaZi chart the year pillar carries an animal branch, and it usually matches the familiar zodiac animal - but around the January to February boundary the two can differ, because this calculator turns the BaZi year at Lichun while ordinary zodiac-year lookup turns it at Chinese New Year. Beyond that, a BaZi chart adds month, day and hour pillars and pairs every branch with a stem.\"}},\r\n{\"@type\":\"Question\",\"name\":\"What if I do not know my birth time?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Tick the box and the hour pillar is reported as unknown rather than guessed. On an ordinary date the year and month pillars can usually still be determined. The day pillar is a different matter: because this calculator changes the day at 23:00 by default, a birth in the 23:00 to 23:59 window would carry the following day's pillar, so without a time the day pillar has two possible values. The result table lists both possibilities instead of picking one.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Why does my chart differ from another site's?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Usually one of four reasons: the other site changes the day at midnight rather than at 23:00; it applies a true-solar-time correction that this page deliberately leaves out; it turns the year at Chinese New Year rather than at Lichun; or one of you has the wrong UTC offset for the birthplace.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Which pillar is the most important one?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In most modern readings the day stem is treated as the reference point for the rest of the chart. That is a convention of interpretation rather than a fact about the calendar, and different schools weight the pillars differently.\"}},\r\n{\"@type\":\"Question\",\"name\":\"What is the range of this calculator?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Birth dates from 1900 to 2100. Outside that range the frozen solar term table has no entries and the calculator will tell you so rather than extrapolate.\"}}]}\r\n<\/script>\r\n\n\n","protected":false},"excerpt":{"rendered":"<p>Chinese Astrology \u00b7 Four Pillars \u00b7 \u516b\u5b57 B\u0101z\u00ec BaZi Calculator: Your Chinese Astrology Birth Chart BaZi (\u516b\u5b57) is the Chinese astrology birth chart. Where a Western birth chart maps the planets at a moment of birth, a BaZi chart turns that same moment into eight Chinese characters \u2014 a Heavenly Stem and an Earthly Branch &#8230; <a title=\"Calculateur BaZi : vos quatre piliers du destin\" class=\"read-more\" href=\"https:\/\/thezodiaclore.com\/fr\/bazi-calculator\/\" aria-label=\"En savoir plus sur BaZi Calculator: Your Four Pillars of Destiny\">En savoir plus<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"rank_math_title":"BaZi Calculator: Chinese Astrology Birth Chart","rank_math_description":"BaZi is the Chinese astrology birth chart: your Four Pillars of Destiny from birth date and time. Solar-term based, with Lichun and 23:00 boundaries explained.","rank_math_focus_keyword":"BaZi calculator,four pillars of destiny,BaZi chart,Chinese astrology calculator,heavenly stems earthly branches","footnotes":""},"class_list":["post-3506","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/pages\/3506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/comments?post=3506"}],"version-history":[{"count":9,"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/pages\/3506\/revisions"}],"predecessor-version":[{"id":4506,"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/pages\/3506\/revisions\/4506"}],"wp:attachment":[{"href":"https:\/\/thezodiaclore.com\/fr\/wp-json\/wp\/v2\/media?parent=3506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}