{"id":24688,"date":"2026-08-18T06:45:47","date_gmt":"2026-08-18T06:45:47","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24688"},"modified":"2026-08-18T06:56:21","modified_gmt":"2026-08-18T06:56:21","slug":"bolt-shear-strength-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/ar\/bolt-shear-strength-calculator\/","title":{"rendered":"Bolt Shear Strength Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Bolt Shear Strength Calculator<\/strong> is a practical engineering tool designed to evaluate bolt shear capacity, shear stress, and connection safety under different loading conditions. By analyzing key factors such as bolt diameter, material strength, shear force, and shear configuration, it helps engineers determine whether a bolt can safely withstand applied loads. The Bolt Shear Strength Calculator supports fastener selection, mechanical design, and structural verification while reducing the risks of bolt shear failure, joint damage, and unexpected equipment downtime.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <meta name=\"description\" content=\"Bolt Shear Strength Calculator for engineers. Calculate bolt shear stress, shear capacity, allowable shear load, and safety factor for single and double shear. Bolt Shear Capacity Calculator, Bolt Shear Stress Calculator, and Fastener Shear Strength Analysis Tool with metric and imperial units.\" \/>\n  <title>Bolt Shear Strength Calculator | Bolt Shear Capacity &amp; Safety Factor<\/title>\n<\/head>\n<body>\n<!--\n  WordPress embed: copy the entire #bsh-root div (style + markup + script)\n  into a Custom HTML block. Paste the whole #bsh-root block in Code Editor mode and replace any old copy. Do not re-save in Visual mode. If a cache plugin delays scripts, exclude bsh-js-b64 and bsh-boot-script.\n  All CSS is scoped to #bsh-root and will not affect theme header, footer, or other content.\n-->\n<div id=\"bsh-root\">\n<style id=\"bsh-calc-styles\">\n\/*\n * WordPress-safe: every rule is scoped under #bsh-root.\n * This stylesheet must not restyle theme header, footer, or content\n * outside the calculator. No html\/body\/universal selectors.\n *\/\n\n#bsh-root {\n  all: revert;\n  --bsh-bg: transparent;\n  --bsh-surface: #ffffff;\n  --bsh-surface-2: #f4f7fa;\n  --bsh-ink: #0f172a;\n  --bsh-muted: #64748b;\n  --bsh-line: #d4dde8;\n  --bsh-accent: #0369a1;\n  --bsh-accent-2: #0284c7;\n  --bsh-steel: #1e293b;\n  --bsh-ok: #059669;\n  --bsh-ok-bg: #ecfdf5;\n  --bsh-warn: #d97706;\n  --bsh-warn-bg: #fffbeb;\n  --bsh-risk: #dc2626;\n  --bsh-risk-bg: #fef2f2;\n  --bsh-radius: 10px;\n  --bsh-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 8px 24px rgba(15, 23, 42, 0.06);\n  --bsh-mono: ui-monospace, \"Cascadia Mono\", \"Segoe UI Mono\", Consolas, monospace;\n  --bsh-sans: \"Segoe UI\", system-ui, -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif;\n\n  box-sizing: border-box;\n  display: block;\n  isolation: isolate;\n  contain: layout style;\n  float: none;\n  clear: both;\n  position: relative;\n  z-index: auto;\n  overflow: visible;\n  font-family: var(--bsh-sans);\n  font-size: 15px;\n  font-weight: 400;\n  line-height: 1.5;\n  color: var(--bsh-ink);\n  background: var(--bsh-bg);\n  width: 1000px;\n  max-width: 100%;\n  margin: 0 auto;\n  padding: 1.25rem 1rem 2rem;\n  text-align: left;\n  letter-spacing: normal;\n  text-transform: none;\n}\n\n#bsh-root *,\n#bsh-root *::before,\n#bsh-root *::after { box-sizing: border-box; }\n\n#bsh-root h1, #bsh-root h2, #bsh-root h3, #bsh-root h4,\n#bsh-root p, #bsh-root ul, #bsh-root ol, #bsh-root li,\n#bsh-root figure, #bsh-root blockquote, #bsh-root section,\n#bsh-root div, #bsh-root span,\n#bsh-root strong, #bsh-root em, #bsh-root i, #bsh-root b {\n  margin: 0; padding: 0; border: none; background: none; box-shadow: none;\n  font-family: inherit; font-size: inherit; font-weight: inherit; font-style: inherit;\n  line-height: inherit; color: inherit; letter-spacing: inherit; text-transform: none;\n  text-decoration: none; float: none;\n}\n\n#bsh-root button, #bsh-root input, #bsh-root select, #bsh-root textarea, #bsh-root label {\n  font: inherit; color: inherit; margin: 0; max-width: none; min-width: 0; float: none;\n}\n#bsh-root button {\n  cursor: pointer; background: transparent; border: none; padding: 0;\n  box-shadow: none; text-decoration: none; appearance: none; -webkit-appearance: none;\n}\n#bsh-root img, #bsh-root svg { display: block; max-width: 100%; height: auto; }\n#bsh-root a { color: var(--bsh-accent); text-decoration: none; }\n#bsh-root a:hover { text-decoration: underline; }\n#bsh-root ul, #bsh-root ol { padding-left: 1.2rem; }\n#bsh-root li { margin: 0.28rem 0; }\n#bsh-root strong { font-weight: 700; }\n#bsh-root sub, #bsh-root sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }\n#bsh-root sub { bottom: -0.2em; }\n#bsh-root sup { top: -0.45em; }\n#bsh-root .bsh-mono { font-family: var(--bsh-mono); }\n#bsh-root #bsh-js-b64 {\n  display: none !important;\n  width: 0 !important;\n  height: 0 !important;\n  border: 0 !important;\n  padding: 0 !important;\n  position: absolute !important;\n  left: -9999px !important;\n}\n#bsh-root .bsh-hidden { display: none !important; }\n\n#bsh-root .bsh-layout {\n  display: flex;\n  flex-direction: column;\n  gap: 1.15rem;\n}\n\n#bsh-root .bsh-card {\n  background: var(--bsh-surface);\n  border: 1px solid var(--bsh-line);\n  border-radius: var(--bsh-radius);\n  box-shadow: var(--bsh-shadow);\n  overflow: visible;\n}\n#bsh-root .bsh-card-h {\n  display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 0.75rem !important;\n  padding: 0.72rem 1rem;\n  background: linear-gradient(180deg, #f8fafc, #f1f5f9);\n  border-bottom: 1px solid var(--bsh-line);\n  flex-wrap: wrap;\n  position: relative;\n  z-index: 2;\n  overflow: visible;\n}\n#bsh-root .bsh-card-h h2 {\n  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;\n  color: var(--bsh-steel);\n  width: auto !important; max-width: none !important; flex: 0 1 auto !important;\n  position: static !important; pointer-events: none;\n}\n#bsh-root .bsh-card-b { padding: 0.95rem 1rem 1.1rem; }\n\n#bsh-root .bsh-section {\n  font-size: 0.78rem; font-weight: 700; color: var(--bsh-ink);\n  margin: 1.05rem 0 0.65rem; padding: 0 0 0.3rem;\n  border-bottom: 1px dashed var(--bsh-line);\n  display: flex; align-items: center; gap: 0.45rem;\n}\n#bsh-root .bsh-section:first-child { margin-top: 0; }\n#bsh-root .bsh-badge {\n  width: 1.35rem; height: 1.35rem; border-radius: 999px; flex-shrink: 0;\n  display: inline-flex; align-items: center; justify-content: center;\n  background: linear-gradient(135deg, #0f172a, #334155); color: #fff;\n  font-size: 0.65rem; font-weight: 700;\n}\n\n#bsh-root .bsh-grid { display: grid; gap: 0.7rem 0.75rem; }\n#bsh-root .bsh-g-2 { grid-template-columns: 1fr 1fr; }\n#bsh-root .bsh-g-3 { grid-template-columns: 1fr 1fr 1fr; }\n@media (max-width: 640px) {\n  #bsh-root .bsh-g-2, #bsh-root .bsh-g-3 { grid-template-columns: 1fr; }\n}\n\n#bsh-root label.bsh-fld { display: flex; flex-direction: column; gap: 0.28rem; min-width: 0; }\n#bsh-root label.bsh-fld > span.bsh-lbl {\n  font-size: 0.75rem; font-weight: 600; color: #334155;\n  display: flex; align-items: center; gap: 0.3rem; flex-wrap: wrap;\n}\n#bsh-root .bsh-hint { font-size: 0.68rem; color: var(--bsh-muted); font-weight: 400; }\n\n#bsh-root input[type=\"number\"],\n#bsh-root input[type=\"text\"] {\n  appearance: none; -webkit-appearance: none; width: 100%;\n  border: 1px solid #cbd5e1; border-radius: 8px;\n  padding: 0.5rem 0.7rem; font-size: 0.8125rem; background: #fff; color: #0f172a;\n  font-family: var(--bsh-mono); box-shadow: none; line-height: 1.25;\n}\n#bsh-root input[type=\"number\"]::-webkit-outer-spin-button,\n#bsh-root input[type=\"number\"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n#bsh-root input[type=\"number\"] { -moz-appearance: textfield; appearance: textfield; }\n\n#bsh-root select {\n  display: block !important; width: 100% !important; min-height: 2.45rem !important;\n  margin: 0 !important; padding: 0.48rem 2rem 0.48rem 0.7rem !important;\n  border: 1px solid #cbd5e1 !important; border-radius: 8px !important;\n  background-color: #fff !important; color: #0f172a !important;\n  font-size: 0.8125rem !important; font-family: var(--bsh-mono) !important;\n  line-height: 1.25 !important; box-shadow: none !important;\n  appearance: auto !important; -webkit-appearance: menulist !important;\n}\n#bsh-root input:focus, #bsh-root select:focus {\n  outline: 2px solid #38bdf8; outline-offset: 0; border-color: #0ea5e9;\n}\n#bsh-root input:disabled, #bsh-root input[readonly] { background: #f8fafc; color: #0f172a; }\n#bsh-root input.bsh-invalid { border-color: #ef4444; background: #fef2f2; }\n#bsh-root .bsh-err {\n  font-size: 0.68rem; color: var(--bsh-risk); min-height: 0.85rem; line-height: 1.3;\n}\n\n#bsh-root .bsh-input-row {\n  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.4rem; align-items: stretch;\n}\n#bsh-root .bsh-unit-pill {\n  display: inline-flex; align-items: center; justify-content: center;\n  min-width: 3.4rem; padding: 0 0.55rem; border: 1px solid #cbd5e1; border-radius: 8px;\n  background: #f8fafc; color: var(--bsh-muted); font-size: 0.72rem; font-weight: 600;\n  font-family: var(--bsh-mono); white-space: nowrap;\n}\n\n#bsh-root .bsh-tools {\n  display: flex !important; align-items: center !important; gap: 0.5rem !important; flex-shrink: 0 !important;\n  position: relative !important; z-index: 5 !important; margin-left: auto;\n  pointer-events: auto !important;\n}\n#bsh-root .bsh-unit-switch {\n  display: inline-flex !important; align-items: center !important; gap: 2px !important; padding: 3px !important;\n  border-radius: 8px !important; background: #0f172a !important; border: 1px solid #1e293b !important;\n  position: relative !important; z-index: 6 !important; pointer-events: auto !important;\n}\n#bsh-root .bsh-unit-switch .bsh-unit-btn {\n  appearance: none !important; -webkit-appearance: none !important;\n  display: inline-flex !important; align-items: center !important; justify-content: center !important;\n  margin: 0 !important; padding: 0.4rem 0.85rem !important; border: none !important; border-radius: 6px !important;\n  background: transparent !important; color: #cbd5e1 !important; font-size: 0.8125rem !important; font-weight: 500 !important;\n  font-family: inherit !important; cursor: pointer !important; line-height: 1.25 !important;\n  pointer-events: auto !important; position: relative !important; z-index: 7 !important;\n}\n#bsh-root .bsh-unit-switch .bsh-unit-btn:hover { color: #fff !important; }\n#bsh-root .bsh-unit-switch .bsh-unit-btn.bsh-is-active { background: #0ea5e9 !important; color: #fff !important; font-weight: 600 !important; }\n\n#bsh-root .bsh-reset-btn {\n  appearance: none !important; -webkit-appearance: none !important;\n  display: inline-flex !important; align-items: center !important; justify-content: center !important;\n  margin: 0 !important; padding: 0.4rem 0.85rem !important; border-radius: 6px !important; border: 1px solid #d1d5db !important;\n  background: #ffffff !important; color: #0f172a !important; font-size: 0.8125rem !important; font-weight: 500 !important;\n  font-family: inherit !important; cursor: pointer !important; line-height: 1.25 !important;\n  pointer-events: auto !important; position: relative !important; z-index: 7 !important;\n}\n#bsh-root .bsh-reset-btn:hover { background: #f8fafc !important; border-color: #94a3b8 !important; }\n\n#bsh-root .bsh-chip-row { display: flex; flex-wrap: wrap; gap: 0.35rem; }\n#bsh-root .bsh-chip {\n  appearance: none !important; display: inline-flex !important; align-items: center !important; justify-content: center !important;\n  padding: 0.32rem 0.55rem !important; border-radius: 6px !important;\n  border: 1px solid #cbd5e1 !important; background: #fff !important; color: #334155 !important;\n  font-size: 0.72rem !important; font-weight: 600 !important; font-family: var(--bsh-mono) !important;\n  cursor: pointer !important; line-height: 1.25 !important; margin: 0 !important;\n}\n#bsh-root .bsh-chip:hover { border-color: #38bdf8 !important; }\n#bsh-root .bsh-chip.bsh-is-active { background: #0284c7 !important; color: #fff !important; border-color: #0284c7 !important; }\n\n#bsh-root .bsh-note {\n  font-size: 0.72rem; color: var(--bsh-muted); background: var(--bsh-surface-2);\n  border: 1px solid var(--bsh-line); border-radius: 8px; padding: 0.5rem 0.65rem; line-height: 1.45;\n}\n\n#bsh-root .bsh-actions {\n  display: flex; justify-content: center; gap: 0.65rem; flex-wrap: wrap;\n  margin-top: 1.15rem; padding-top: 0.9rem; border-top: 1px solid var(--bsh-line);\n}\n#bsh-root #bshBtnCalculate.bsh-calc-btn {\n  appearance: none !important; display: inline-flex !important; align-items: center !important; justify-content: center !important;\n  min-width: 220px !important; padding: 0.85rem 2.5rem !important; border: none !important; border-radius: 10px !important;\n  background: #0077c2 !important; color: #ffffff !important; font-size: 1rem !important; font-weight: 700 !important;\n  font-family: inherit !important; cursor: pointer !important; letter-spacing: 0.01em !important;\n}\n#bsh-root #bshBtnCalculate.bsh-calc-btn:hover { background: #0066a8 !important; }\n#bsh-root #bshBtnCalculate.bsh-calc-btn:active { background: #005a94 !important; }\n\n#bsh-root .bsh-tip {\n  position: relative; display: inline-flex; align-items: center; justify-content: center;\n  width: 0.95rem; height: 0.95rem; border-radius: 999px;\n  background: #e2e8f0; color: #475569; font-size: 0.62rem; font-weight: 700;\n  cursor: help; flex-shrink: 0; line-height: 1;\n}\n#bsh-root .bsh-tip:hover, #bsh-root .bsh-tip:focus { background: #0284c7; color: #fff; outline: none; }\n#bsh-root .bsh-tip-box {\n  display: none; position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%);\n  width: 16.5rem; padding: 0.55rem 0.65rem; border-radius: 8px; z-index: 20;\n  background: #0f172a; color: #e2e8f0; font-size: 0.7rem; font-weight: 400; line-height: 1.4;\n  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.25); text-align: left; text-transform: none; letter-spacing: normal;\n}\n#bsh-root .bsh-tip-box::after {\n  content: \"\"; position: absolute; left: 50%; top: 100%; transform: translateX(-50%);\n  border: 6px solid transparent; border-top-color: #0f172a;\n}\n#bsh-root .bsh-tip:hover .bsh-tip-box,\n#bsh-root .bsh-tip:focus .bsh-tip-box { display: block; }\n\n#bsh-root .bsh-banner {\n  border-radius: 10px; padding: 0.85rem 1rem; color: #fff; margin-bottom: 0.85rem;\n  display: flex; align-items: flex-start; gap: 0.75rem;\n}\n#bsh-root .bsh-banner .bsh-dot {\n  width: 0.7rem; height: 0.7rem; border-radius: 999px; background: #fff; flex-shrink: 0; margin-top: 0.28rem;\n}\n#bsh-root .bsh-banner-kicker {\n  font-size: 0.65rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.85;\n}\n#bsh-root .bsh-banner-title { font-size: 1.15rem; font-weight: 750; margin: 0.1rem 0 0.2rem; }\n#bsh-root .bsh-banner-note { font-size: 0.75rem; opacity: 0.92; line-height: 1.45; }\n#bsh-root .bsh-banner-ok { background: linear-gradient(90deg, #14532d, #166534); }\n#bsh-root .bsh-banner-caution { background: linear-gradient(90deg, #854d0e, #a16207); }\n#bsh-root .bsh-banner-risk { background: linear-gradient(90deg, #7f1d1d, #991b1b); }\n#bsh-root .bsh-banner-idle { background: linear-gradient(90deg, #334155, #475569); }\n\n#bsh-root .bsh-hero {\n  display: grid; grid-template-columns: 1fr 1fr; gap: 0.65rem; margin-bottom: 0.75rem;\n}\n@media (max-width: 520px) { #bsh-root .bsh-hero { grid-template-columns: 1fr; } }\n\n#bsh-root .bsh-hero-card {\n  border: 1px solid var(--bsh-line); border-radius: 10px; padding: 0.8rem 0.85rem;\n  background: linear-gradient(180deg, #fff, #f8fafc);\n}\n#bsh-root .bsh-hero-card.bsh-is-accent {\n  border-color: #7dd3fc; background: linear-gradient(180deg, #f0f9ff, #fff);\n}\n#bsh-root .bsh-hero-card.bsh-is-focus {\n  border-color: #0284c7;\n  box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.16);\n}\n#bsh-root .bsh-hero-k {\n  font-size: 0.65rem; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: var(--bsh-muted);\n}\n#bsh-root .bsh-hero-v {\n  font-family: var(--bsh-mono); font-size: 1.25rem; font-weight: 700; color: #0f172a; margin-top: 0.2rem; line-height: 1.2;\n}\n#bsh-root .bsh-hero-u { font-size: 0.7rem; color: var(--bsh-muted); margin-top: 0.15rem; }\n\n#bsh-root .bsh-viz {\n  display: grid; grid-template-columns: 200px 1fr; gap: 0.75rem; align-items: center;\n  margin-bottom: 0.75rem;\n}\n@media (max-width: 640px) { #bsh-root .bsh-viz { grid-template-columns: 1fr; } }\n\n#bsh-root .bsh-sch-wrap {\n  border: 1px solid var(--bsh-line); border-radius: 10px; padding: 0.45rem 0.4rem 0.35rem;\n  background: linear-gradient(180deg, #f8fafc, #fff);\n}\n#bsh-root .bsh-schematic { width: 100%; max-width: 200px; margin: 0 auto; }\n#bsh-root .bsh-schematic .bsh-sch-bolt { fill: #64748b; stroke: #334155; }\n#bsh-root .bsh-schematic .bsh-sch-plate { fill: #cbd5e1; stroke: #94a3b8; }\n#bsh-root .bsh-schematic .bsh-sch-force { fill: none; stroke: #0369a1; }\n#bsh-root .bsh-schematic .bsh-sch-arrow { fill: #0369a1; }\n#bsh-root .bsh-schematic .bsh-sch-label { fill: #334155; font-size: 11px; font-family: var(--bsh-sans); }\n#bsh-root .bsh-schematic .bsh-sch-dash { fill: none; stroke: #64748b; stroke-dasharray: 3 2; }\n#bsh-root .bsh-schematic .bsh-g-single { display: none; }\n#bsh-root .bsh-schematic[data-shear=\"single\"] .bsh-g-single { display: unset; }\n#bsh-root .bsh-schematic[data-shear=\"single\"] .bsh-g-double { display: none; }\n#bsh-root .bsh-schematic[data-status=\"ok\"] .bsh-sch-bolt { fill: #0f766e; stroke: #115e59; }\n#bsh-root .bsh-schematic[data-status=\"ok\"] .bsh-sch-force { stroke: #059669; }\n#bsh-root .bsh-schematic[data-status=\"ok\"] .bsh-sch-arrow { fill: #059669; }\n#bsh-root .bsh-schematic[data-status=\"caution\"] .bsh-sch-bolt { fill: #b45309; stroke: #92400e; }\n#bsh-root .bsh-schematic[data-status=\"caution\"] .bsh-sch-force { stroke: #d97706; }\n#bsh-root .bsh-schematic[data-status=\"caution\"] .bsh-sch-arrow { fill: #d97706; }\n#bsh-root .bsh-schematic[data-status=\"risk\"] .bsh-sch-bolt { fill: #b91c1c; stroke: #7f1d1d; }\n#bsh-root .bsh-schematic[data-status=\"risk\"] .bsh-sch-force { stroke: #dc2626; }\n#bsh-root .bsh-schematic[data-status=\"risk\"] .bsh-sch-arrow { fill: #dc2626; }\n\n#bsh-root .bsh-gauge-row {\n  display: grid; grid-template-columns: 150px 1fr; gap: 0.75rem; align-items: center;\n  border: 1px solid var(--bsh-line); border-radius: 10px; padding: 0.55rem 0.75rem 0.4rem;\n  background: #fff;\n}\n@media (max-width: 520px) { #bsh-root .bsh-gauge-row { grid-template-columns: 1fr; } }\n#bsh-root .bsh-gauge-svg { width: 150px; height: auto; }\n#bsh-root .bsh-gauge-readout { font-family: var(--bsh-mono); font-size: 1.05rem; font-weight: 700; }\n#bsh-root .bsh-gauge-label { font-size: 0.68rem; color: var(--bsh-muted); }\n\n#bsh-root .bsh-util { margin-bottom: 0.85rem; }\n#bsh-root .bsh-util-head {\n  display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.72rem; margin-bottom: 0.35rem;\n}\n#bsh-root .bsh-util-head strong { font-weight: 700; }\n#bsh-root .bsh-util-track {\n  position: relative; height: 14px; border-radius: 999px; overflow: hidden; background: #e2e8f0;\n}\n#bsh-root .bsh-util-zones { display: flex; height: 100%; width: 100%; }\n#bsh-root .bsh-util-zones span { display: block; height: 100%; }\n#bsh-root .bsh-z-ok { width: 85%; background: #6ee7b7; }\n#bsh-root .bsh-z-hi { width: 15%; background: #fcd34d; }\n#bsh-root .bsh-util-fill {\n  position: absolute; left: 0; top: 0; bottom: 0; width: 0;\n  background: linear-gradient(90deg, #0284c7, #0369a1); border-radius: 999px;\n  transition: width 0.25s ease;\n}\n#bsh-root .bsh-util-fill.bsh-is-ok { background: linear-gradient(90deg, #059669, #047857); }\n#bsh-root .bsh-util-fill.bsh-is-caution { background: linear-gradient(90deg, #d97706, #b45309); }\n#bsh-root .bsh-util-fill.bsh-is-risk { background: linear-gradient(90deg, #dc2626, #b91c1c); }\n#bsh-root .bsh-util-legend {\n  display: flex; flex-wrap: wrap; gap: 0.65rem 1rem; margin-top: 0.35rem;\n  font-size: 0.65rem; color: var(--bsh-muted);\n}\n#bsh-root .bsh-util-legend i {\n  display: inline-block; width: 0.65rem; height: 0.65rem; border-radius: 2px; margin-right: 0.25rem;\n  vertical-align: -1px; font-style: normal;\n}\n\n#bsh-root .bsh-chart {\n  border: 1px solid var(--bsh-line); border-radius: 10px; padding: 0.7rem 0.8rem 0.8rem;\n  background: #fff; margin-bottom: 0.75rem;\n}\n#bsh-root .bsh-chart-title {\n  font-size: 0.68rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;\n  color: var(--bsh-muted); margin-bottom: 0.55rem;\n}\n#bsh-root .bsh-bar-row {\n  display: grid; grid-template-columns: 8.4rem 1fr auto; gap: 0.45rem; align-items: center;\n  margin-top: 0.4rem;\n}\n#bsh-root .bsh-bar-k { font-size: 0.7rem; color: #334155; }\n#bsh-root .bsh-bar-track { height: 10px; background: #e2e8f0; border-radius: 999px; overflow: hidden; }\n#bsh-root .bsh-bar-fill { height: 100%; width: 0; border-radius: 999px; background: #0284c7; transition: width 0.25s ease; }\n#bsh-root .bsh-bar-fill.bsh-is-ok { background: #059669; }\n#bsh-root .bsh-bar-fill.bsh-is-caution { background: #d97706; }\n#bsh-root .bsh-bar-fill.bsh-is-risk { background: #dc2626; }\n#bsh-root .bsh-bar-sa { background: #0ea5e9; }\n#bsh-root .bsh-bar-sut { background: #1e293b; }\n#bsh-root .bsh-bar-v { font-family: var(--bsh-mono); font-size: 0.7rem; color: var(--bsh-muted); min-width: 5.5rem; text-align: right; }\n\n#bsh-root .bsh-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; }\n@media (min-width: 720px) {\n  #bsh-root .bsh-tiles { grid-template-columns: repeat(3, 1fr); }\n}\n#bsh-root .bsh-tile {\n  background: linear-gradient(180deg, #fff, #f8fafc);\n  border: 1px solid var(--bsh-line); border-radius: 8px; padding: 0.6rem 0.7rem;\n}\n#bsh-root .bsh-tile .bsh-k { font-size: 0.62rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--bsh-muted); }\n#bsh-root .bsh-tile .bsh-v { font-family: var(--bsh-mono); font-size: 0.98rem; font-weight: 700; color: #0f172a; margin-top: 0.12rem; }\n#bsh-root .bsh-tile .bsh-u { font-size: 0.68rem; color: var(--bsh-muted); }\n\n#bsh-root .bsh-alerts { display: flex; flex-direction: column; gap: 0.4rem; margin-top: 0.75rem; }\n#bsh-root .bsh-alert {\n  border-radius: 8px; padding: 0.5rem 0.7rem; font-size: 0.75rem; border: 1px solid; line-height: 1.4;\n}\n#bsh-root .bsh-alert-ok { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }\n#bsh-root .bsh-alert-warn { background: #fffbeb; border-color: #fcd34d; color: #92400e; }\n#bsh-root .bsh-alert-risk { background: #fef2f2; border-color: #fca5a5; color: #991b1b; }\n\n@media print {\n  #bsh-root { max-width: none; padding: 0; background: #fff; }\n  #bsh-root .bsh-no-print { display: none !important; }\n  #bsh-root .bsh-layout { display: block; }\n  #bsh-root .bsh-card { break-inside: avoid; box-shadow: none; }\n}\n<\/style>\n\n  <div class=\"bsh-layout\">\n    <section class=\"bsh-card\" id=\"bshInputs\">\n      <div class=\"bsh-card-h\">\n        <h2>Input parameters<\/h2>\n        <div class=\"bsh-tools bsh-no-print\">\n          <div class=\"bsh-unit-switch\" role=\"group\" aria-label=\"Unit system\">\n            <button type=\"button\" class=\"bsh-unit-btn bsh-is-active\" id=\"bshBtnMetric\" data-unit=\"metric\" onclick=\"(function(){if(window.bshSwitchUnit){window.bshSwitchUnit('metric');return false;}var t=document.getElementById('bsh-js-b64');if(!t){return false;}var c=t.value;if(!c){c=t.textContent;}if(!c){return false;}c=c.replace(\/\\s\/g,'');var s=document.createElement('script');s.type='text\/javascript';s.text=atob(c);(document.body||document.getElementsByTagName('head')[0]).appendChild(s);setTimeout(function(){if(window.bshSwitchUnit){window.bshSwitchUnit('metric');}},150);return false;})()\">Metric<\/button>\n            <button type=\"button\" class=\"bsh-unit-btn\" id=\"bshBtnImperial\" data-unit=\"imperial\" onclick=\"(function(){if(window.bshSwitchUnit){window.bshSwitchUnit('imperial');return false;}var t=document.getElementById('bsh-js-b64');if(!t){return false;}var c=t.value;if(!c){c=t.textContent;}if(!c){return false;}c=c.replace(\/\\s\/g,'');var s=document.createElement('script');s.type='text\/javascript';s.text=atob(c);(document.body||document.getElementsByTagName('head')[0]).appendChild(s);setTimeout(function(){if(window.bshSwitchUnit){window.bshSwitchUnit('imperial');}},150);return false;})()\">Imperial<\/button>\n          <\/div>\n          <button type=\"button\" class=\"bsh-reset-btn\" id=\"bshBtnReset\" onclick=\"(function(){if(window.bshReset){window.bshReset();return false;}var t=document.getElementById('bsh-js-b64');if(!t){return false;}var c=t.value;if(!c){c=t.textContent;}if(!c){return false;}c=c.replace(\/\\s\/g,'');var s=document.createElement('script');s.type='text\/javascript';s.text=atob(c);(document.body||document.getElementsByTagName('head')[0]).appendChild(s);setTimeout(function(){if(window.bshReset){window.bshReset();}},150);return false;})()\">Reset<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"bsh-card-b\">\n\n        <div class=\"bsh-section\"><span class=\"bsh-badge\">1<\/span> Calculation setup<\/div>\n        <div class=\"bsh-grid bsh-g-2\">\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Calculation mode\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Choose the primary result to emphasize. All modes still compute shear stress, capacity, and safety factor from the same inputs so this Bolt Shear Strength Calculator can be used for design or check.<\/span><\/span>\n            <\/span>\n            <select id=\"bshMode\">\n              <option value=\"stress\">Shear Stress Calculation<\/option>\n              <option value=\"capacity\">Shear Capacity Calculation<\/option>\n              <option value=\"safety\" selected>Safety Factor Calculation<\/option>\n            <\/select>\n          <\/label>\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Shear plane condition\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Single shear uses one shear plane (As). Double shear uses two planes (2 \u00d7 As), as in a clevis or fork joint. Total shear area multiplies the per-plane area.<\/span><\/span>\n            <\/span>\n            <select id=\"bshShear\">\n              <option value=\"single\">Single Shear<\/option>\n              <option value=\"double\" selected>Double Shear<\/option>\n            <\/select>\n          <\/label>\n        <\/div>\n        <p class=\"bsh-note\" id=\"bshModeNote\" style=\"margin-top:0.55rem\">\n          Safety Factor Calculation: this Bolt Safety Factor Calculator compares allowable shear load with applied load and classifies connection risk.\n        <\/p>\n\n        <div class=\"bsh-section\"><span class=\"bsh-badge\">2<\/span> Bolt geometry<\/div>\n        <div class=\"bsh-grid bsh-g-2\">\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Bolt thread type\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Metric uses coarse pitch in mm. UNC \/ UNF use threads per inch. Thread type sets the stress-area formula when shear cuts the threaded section. Custom lets you type pitch or TPI.<\/span><\/span>\n            <\/span>\n            <select id=\"bshThread\">\n              <option value=\"metric\" selected>Metric Thread<\/option>\n              <option value=\"unc\">UNC Thread<\/option>\n              <option value=\"unf\">UNF Thread<\/option>\n              <option value=\"custom\">Custom<\/option>\n            <\/select>\n          <\/label>\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Shear through\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Shank: As = \u03c0 d\u00b2 \/ 4. Threaded section: tensile stress area (ISO 898 \/ ASME B1.1), which is smaller. Use threaded if the shear plane crosses the threads.<\/span><\/span>\n            <\/span>\n            <select id=\"bshPlane\">\n              <option value=\"shank\" selected>Bolt shank area<\/option>\n              <option value=\"thread\">Threaded section area<\/option>\n            <\/select>\n          <\/label>\n        <\/div>\n        <div class=\"bsh-chip-row bsh-no-print\" id=\"bshSizeChips\" aria-label=\"Common bolt sizes\" style=\"margin-top:0.65rem\"><\/div>\n        <div class=\"bsh-grid bsh-g-2\" style=\"margin-top:0.65rem\">\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Bolt diameter\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Nominal major diameter d. Metric: M-size in mm (12 mm for M12). Imperial: inch size. Used for shank area As = \u03c0 d\u00b2 \/ 4 and for thread stress area.<\/span><\/span>\n            <\/span>\n            <div class=\"bsh-input-row\">\n              <input id=\"bshD\" type=\"number\" min=\"0\" step=\"any\" value=\"12\" inputmode=\"decimal\" \/>\n              <span class=\"bsh-unit-pill\" data-unit=\"d\">mm<\/span>\n            <\/div>\n            <span class=\"bsh-err\" id=\"bshErrD\"><\/span>\n          <\/label>\n          <label class=\"bsh-fld\" id=\"bshPitchWrap\">\n            <span class=\"bsh-lbl\">\n              Thread pitch \/ TPI\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Required when shear is through the threaded section. Metric: pitch in mm (M12 coarse = 1.75 mm). UNC\/UNF: threads per inch. Used to compute tensile stress area.<\/span><\/span>\n            <\/span>\n            <div class=\"bsh-input-row\">\n              <input id=\"bshP\" type=\"number\" min=\"0\" step=\"any\" value=\"1.75\" inputmode=\"decimal\" \/>\n              <span class=\"bsh-unit-pill\" data-unit=\"p\">mm<\/span>\n            <\/div>\n            <span class=\"bsh-err\" id=\"bshErrP\"><\/span>\n          <\/label>\n        <\/div>\n        <label class=\"bsh-fld\" style=\"margin-top:0.15rem\">\n          <span class=\"bsh-lbl\">\n            Effective shear area A<sub>s<\/sub>\n            <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Auto-calculated. Single shear: one plane. Double shear: 2 \u00d7 plane area. Plane area is shank (\u03c0 d\u00b2 \/ 4) or threaded tensile stress area.<\/span><\/span>\n          <\/span>\n          <div class=\"bsh-input-row\">\n            <input id=\"bshAs\" type=\"number\" min=\"0\" step=\"any\" value=\"226.2\" inputmode=\"decimal\" readonly \/>\n            <span class=\"bsh-unit-pill\" data-unit=\"as\">mm\u00b2<\/span>\n          <\/div>\n        <\/label>\n\n        <div class=\"bsh-section\"><span class=\"bsh-badge\">3<\/span> Material strength<\/div>\n        <label class=\"bsh-fld\">\n          <span class=\"bsh-lbl\">\n            Bolt material grade\n            <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">ISO 898-1 property class: Sut = class \u00d7 100 MPa (Grade 10.9 = 1000 MPa). Stainless uses A2-70 (700 MPa). Choose Custom Material to type catalog tensile strength.<\/span><\/span>\n          <\/span>\n          <select id=\"bshGrade\">\n            <option value=\"4.6\">Grade 4.6<\/option>\n            <option value=\"5.8\">Grade 5.8<\/option>\n            <option value=\"8.8\">Grade 8.8<\/option>\n            <option value=\"10.9\" selected>Grade 10.9<\/option>\n            <option value=\"12.9\">Grade 12.9<\/option>\n            <option value=\"ss\">Stainless Steel<\/option>\n            <option value=\"custom\">Custom Material<\/option>\n          <\/select>\n        <\/label>\n        <div class=\"bsh-grid bsh-g-2\" style=\"margin-top:0.65rem\">\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Ultimate tensile strength\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Minimum ultimate tensile strength Sut of the bolt. Ultimate shear strength is taken as k \u00d7 Sut. Grade 10.9 nominal Sut is 1000 MPa.<\/span><\/span>\n            <\/span>\n            <div class=\"bsh-input-row\">\n              <input id=\"bshSut\" type=\"number\" min=\"0\" step=\"any\" value=\"1000\" inputmode=\"decimal\" readonly \/>\n              <span class=\"bsh-unit-pill\" data-unit=\"s\">MPa<\/span>\n            <\/div>\n            <span class=\"bsh-err\" id=\"bshErrSut\"><\/span>\n          <\/label>\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Shear strength ratio\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">\u03c4u = k \u00d7 Sut. Default 0.6 is a common estimate for steel fasteners (von Mises \/ typical code shear-to-tensile ratio). Adjust if your standard specifies a different value.<\/span><\/span>\n            <\/span>\n            <input id=\"bshK\" type=\"number\" min=\"0\" step=\"any\" value=\"0.6\" inputmode=\"decimal\" \/>\n            <span class=\"bsh-err\" id=\"bshErrK\"><\/span>\n          <\/label>\n        <\/div>\n\n        <div class=\"bsh-section\"><span class=\"bsh-badge\">4<\/span> Applied shear load<\/div>\n        <div class=\"bsh-grid bsh-g-2\">\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Applied shear force\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">External shear load on the joint. For multiple bolts this is the total load; the calculator splits it equally. Do not enter a negative or zero value.<\/span><\/span>\n            <\/span>\n            <div class=\"bsh-input-row\">\n              <input id=\"bshF\" type=\"number\" min=\"0\" step=\"any\" value=\"20000\" inputmode=\"decimal\" \/>\n              <select id=\"bshFUnit\" aria-label=\"Load unit\" style=\"min-width:4.6rem;width:auto;padding-right:1.6rem!important\">\n                <option value=\"N\" selected>N<\/option>\n                <option value=\"kN\">kN<\/option>\n                <option value=\"lbf\">lbf<\/option>\n              <\/select>\n            <\/div>\n            <span class=\"bsh-err\" id=\"bshErrF\"><\/span>\n          <\/label>\n          <label class=\"bsh-fld\">\n            <span class=\"bsh-lbl\">\n              Number of bolts\n              <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Bolts assumed to share the shear load equally. Shear load per bolt = total shear load \/ n. Pattern eccentricity can increase the peak bolt load.<\/span><\/span>\n            <\/span>\n            <input id=\"bshNbolts\" type=\"number\" min=\"1\" step=\"1\" value=\"1\" inputmode=\"numeric\" \/>\n            <span class=\"bsh-err\" id=\"bshErrNbolts\"><\/span>\n          <\/label>\n        <\/div>\n        <label class=\"bsh-fld\" style=\"margin-top:0.15rem\">\n          <span class=\"bsh-lbl\">\n            Design safety factor\n            <span class=\"bsh-tip\" tabindex=\"0\">?<span class=\"bsh-tip-box\">Divides ultimate shear strength to obtain allowable shear stress \u03c4allow = \u03c4u \/ n. Default 2.0 is a common static-design starting point. Critical or fatigue joints often need a higher factor from the governing standard.<\/span><\/span>\n          <\/span>\n          <input id=\"bshNsf\" type=\"number\" min=\"0\" step=\"any\" value=\"2.0\" inputmode=\"decimal\" \/>\n          <span class=\"bsh-err\" id=\"bshErrNsf\"><\/span>\n        <\/label>\n        <p class=\"bsh-note\" style=\"margin-top:0.55rem\">\n          Allowable shear load F<sub>allow<\/sub> = A<sub>s<\/sub> \u00d7 \u03c4<sub>allow<\/sub>, with \u03c4<sub>allow<\/sub> = (k \u00d7 S<sub>ut<\/sub>) \/ n.\n          This Bolt Load Capacity Calculator then reports Safety Factor = allowable shear load \/ applied shear load per bolt.\n        <\/p>\n\n        <div class=\"bsh-actions bsh-no-print\">\n          <button type=\"button\" class=\"bsh-calc-btn\" id=\"bshBtnCalculate\" onclick=\"(function(){if(window.bshCalculate){window.bshCalculate();return false;}var t=document.getElementById('bsh-js-b64');if(!t){return false;}var c=t.value;if(!c){c=t.textContent;}if(!c){return false;}c=c.replace(\/\\s\/g,'');var s=document.createElement('script');s.type='text\/javascript';s.text=atob(c);(document.body||document.getElementsByTagName('head')[0]).appendChild(s);setTimeout(function(){if(window.bshCalculate){window.bshCalculate();}},150);return false;})()\">Calculate<\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <aside class=\"bsh-results-wrap bsh-hidden\" id=\"bshResults\">\n      <section class=\"bsh-card\">\n        <div class=\"bsh-card-h\">\n          <h2>Calculated results<\/h2>\n        <\/div>\n        <div class=\"bsh-card-b\">\n          <div class=\"bsh-banner bsh-banner-idle\" id=\"bshBanner\">\n            <span class=\"bsh-dot\" aria-hidden=\"true\"><\/span>\n            <div>\n              <div class=\"bsh-banner-kicker\">Shear safety status<\/div>\n              <div class=\"bsh-banner-title\" id=\"bshStatusTitle\">Ready<\/div>\n              <p class=\"bsh-banner-note\" id=\"bshStatusNote\">Enter bolt data and press Calculate.<\/p>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-hero\">\n            <div class=\"bsh-hero-card bsh-is-accent\" id=\"bshHeroStress\">\n              <div class=\"bsh-hero-k\">Bolt shear stress<\/div>\n              <div class=\"bsh-hero-v\" id=\"bshOutStress\">\u2014<\/div>\n              <div class=\"bsh-hero-u\" id=\"bshOutStressSub\">\u03c4 = F \/ A<sub>s<\/sub><\/div>\n            <\/div>\n            <div class=\"bsh-hero-card bsh-is-accent bsh-is-focus\" id=\"bshHeroSf\">\n              <div class=\"bsh-hero-k\">Safety factor<\/div>\n              <div class=\"bsh-hero-v\" id=\"bshOutSf\">\u2014<\/div>\n              <div class=\"bsh-hero-u\" id=\"bshOutSfSub\">Allowable load \/ applied load<\/div>\n            <\/div>\n            <div class=\"bsh-hero-card\" id=\"bshHeroFmax\">\n              <div class=\"bsh-hero-k\">Maximum shear capacity<\/div>\n              <div class=\"bsh-hero-v\" id=\"bshOutFmax\">\u2014<\/div>\n              <div class=\"bsh-hero-u\" id=\"bshOutFmaxSub\">F<sub>max<\/sub> = A<sub>s<\/sub> \u00d7 \u03c4<sub>u<\/sub><\/div>\n            <\/div>\n            <div class=\"bsh-hero-card\" id=\"bshHeroFa\">\n              <div class=\"bsh-hero-k\">Allowable shear load<\/div>\n              <div class=\"bsh-hero-v\" id=\"bshOutFa\">\u2014<\/div>\n              <div class=\"bsh-hero-u\" id=\"bshOutFaSub\">F<sub>allow<\/sub> = A<sub>s<\/sub> \u00d7 \u03c4<sub>allow<\/sub><\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-viz\">\n            <div class=\"bsh-sch-wrap\">\n              <svg class=\"bsh-schematic\" id=\"bshSchematic\" viewBox=\"0 0 200 250\" role=\"img\" aria-label=\"Bolt shear force diagram\" data-status=\"idle\" data-shear=\"double\">\n                <text class=\"bsh-sch-label\" x=\"100\" y=\"16\" text-anchor=\"middle\" id=\"bshSchCaption\">Double shear  \u00b7  2 planes<\/text>\n\n                <g class=\"bsh-g-double\">\n                  <rect class=\"bsh-sch-plate\" x=\"28\" y=\"58\" width=\"144\" height=\"20\" rx=\"1.5\" stroke-width=\"1\" \/>\n                  <rect class=\"bsh-sch-plate\" x=\"28\" y=\"86\" width=\"144\" height=\"20\" rx=\"1.5\" stroke-width=\"1\" \/>\n                  <rect class=\"bsh-sch-plate\" x=\"28\" y=\"114\" width=\"144\" height=\"20\" rx=\"1.5\" stroke-width=\"1\" \/>\n                  <line class=\"bsh-sch-dash\" x1=\"28\" y1=\"80\" x2=\"172\" y2=\"80\" stroke-width=\"1\" \/>\n                  <line class=\"bsh-sch-dash\" x1=\"28\" y1=\"108\" x2=\"172\" y2=\"108\" stroke-width=\"1\" \/>\n                  <line class=\"bsh-sch-force\" x1=\"176\" y1=\"68\" x2=\"196\" y2=\"68\" stroke-width=\"2.2\" \/>\n                  <polygon class=\"bsh-sch-arrow\" points=\"188,63 198,68 188,73\" \/>\n                  <line class=\"bsh-sch-force\" x1=\"24\" y1=\"96\" x2=\"6\" y2=\"96\" stroke-width=\"2.2\" \/>\n                  <polygon class=\"bsh-sch-arrow\" points=\"14,91 4,96 14,101\" \/>\n                  <line class=\"bsh-sch-force\" x1=\"176\" y1=\"124\" x2=\"196\" y2=\"124\" stroke-width=\"2.2\" \/>\n                  <polygon class=\"bsh-sch-arrow\" points=\"188,119 198,124 188,129\" \/>\n                <\/g>\n\n                <g class=\"bsh-g-single\">\n                  <rect class=\"bsh-sch-plate\" x=\"28\" y=\"72\" width=\"144\" height=\"22\" rx=\"1.5\" stroke-width=\"1\" \/>\n                  <rect class=\"bsh-sch-plate\" x=\"28\" y=\"102\" width=\"144\" height=\"22\" rx=\"1.5\" stroke-width=\"1\" \/>\n                  <line class=\"bsh-sch-dash\" x1=\"28\" y1=\"96\" x2=\"172\" y2=\"96\" stroke-width=\"1\" \/>\n                  <line class=\"bsh-sch-force\" x1=\"176\" y1=\"83\" x2=\"196\" y2=\"83\" stroke-width=\"2.2\" \/>\n                  <polygon class=\"bsh-sch-arrow\" points=\"188,78 198,83 188,88\" \/>\n                  <line class=\"bsh-sch-force\" x1=\"24\" y1=\"113\" x2=\"6\" y2=\"113\" stroke-width=\"2.2\" \/>\n                  <polygon class=\"bsh-sch-arrow\" points=\"14,108 4,113 14,118\" \/>\n                <\/g>\n\n                <path class=\"bsh-sch-bolt\" d=\"M82 36 h36 l6 14 h-48 z\" stroke-width=\"1.2\" \/>\n                <rect class=\"bsh-sch-bolt\" x=\"92\" y=\"50\" width=\"16\" height=\"96\" stroke-width=\"1.2\" \/>\n                <path class=\"bsh-sch-bolt\" d=\"M88 146 h24 v8 h-24 z\" stroke-width=\"1.2\" \/>\n                <path class=\"bsh-sch-bolt\" d=\"M92 154 l4 10 h8 l4-10 z\" stroke-width=\"1.2\" \/>\n                <path d=\"M94 88 l12 5 m-12 6 l12 5 m-12 6 l12 5\" fill=\"none\" stroke=\"#e2e8f0\" stroke-width=\"1.3\" \/>\n\n                <text class=\"bsh-sch-label\" id=\"bshSchForce\" x=\"100\" y=\"188\" text-anchor=\"middle\">\u2014<\/text>\n                <text class=\"bsh-sch-label\" x=\"100\" y=\"204\" text-anchor=\"middle\" style=\"font-size:10px\">shear load per bolt<\/text>\n                <text class=\"bsh-sch-label\" x=\"100\" y=\"222\" text-anchor=\"middle\" style=\"font-size:10px\">F  \u2192  plates  \u00b7  bolt in shear<\/text>\n              <\/svg>\n            <\/div>\n            <div class=\"bsh-gauge-row\">\n              <svg class=\"bsh-gauge-svg\" viewBox=\"0 0 240 140\" aria-hidden=\"true\">\n                <defs>\n                  <linearGradient id=\"bshGaugeGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n                    <stop offset=\"0%\" stop-color=\"#dc2626\" \/>\n                    <stop offset=\"25%\" stop-color=\"#d97706\" \/>\n                    <stop offset=\"55%\" stop-color=\"#059669\" \/>\n                    <stop offset=\"100%\" stop-color=\"#047857\" \/>\n                  <\/linearGradient>\n                <\/defs>\n                <path d=\"M 30 118 A 90 90 0 0 1 210 118\" fill=\"none\" stroke=\"#e8eef4\" stroke-width=\"14\" stroke-linecap=\"round\" \/>\n                <path id=\"bshGaugeArc\" d=\"M 30 118 A 90 90 0 0 1 210 118\" fill=\"none\" stroke=\"url(#bshGaugeGrad)\" stroke-width=\"14\" stroke-linecap=\"round\" stroke-dasharray=\"282.7\" stroke-dashoffset=\"282.7\" \/>\n                <g id=\"bshNeedle\" transform=\"rotate(-90 120 118)\">\n                  <line x1=\"120\" y1=\"118\" x2=\"120\" y2=\"44\" stroke=\"#0f172a\" stroke-width=\"3\" stroke-linecap=\"round\" \/>\n                  <circle cx=\"120\" cy=\"118\" r=\"6\" fill=\"#0f172a\" \/>\n                <\/g>\n              <\/svg>\n              <div>\n                <div class=\"bsh-gauge-label\">Safety factor gauge<\/div>\n                <div class=\"bsh-gauge-readout\" id=\"bshGaugeRead\">\u2014<\/div>\n                <div class=\"bsh-gauge-label\" id=\"bshGaugeNote\" style=\"margin-top:0.25rem\">Fallow \/ F per bolt  (scale 0\u20134)<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-util\">\n            <div class=\"bsh-util-head\">\n              <span>Load utilization percentage<\/span>\n              <strong id=\"bshOutUtil\">\u2014<\/strong>\n            <\/div>\n            <div class=\"bsh-util-track\" aria-hidden=\"true\">\n              <div class=\"bsh-util-zones\"><span class=\"bsh-z-ok\"><\/span><span class=\"bsh-z-hi\"><\/span><\/div>\n              <div class=\"bsh-util-fill\" id=\"bshUtilFill\"><\/div>\n            <\/div>\n            <div class=\"bsh-util-legend\">\n              <span><i style=\"background:#6ee7b7\"><\/i> \u2264 85% allowable<\/span>\n              <span><i style=\"background:#fcd34d\"><\/i> 85\u2013100% warning<\/span>\n              <span><i style=\"background:#fca5a5\"><\/i> &gt; 100% failure risk<\/span>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-chart\">\n            <div class=\"bsh-chart-title\">Shear stress indicator<\/div>\n            <div class=\"bsh-bar-row\">\n              <span class=\"bsh-bar-k\">Applied stress \u03c4<\/span>\n              <div class=\"bsh-bar-track\"><div class=\"bsh-bar-fill\" id=\"bshBarTau\"><\/div><\/div>\n              <span class=\"bsh-bar-v\" id=\"bshBarTauVal\">\u2014<\/span>\n            <\/div>\n            <div class=\"bsh-bar-row\">\n              <span class=\"bsh-bar-k\">Allowable \u03c4<sub>allow<\/sub><\/span>\n              <div class=\"bsh-bar-track\"><div class=\"bsh-bar-fill bsh-bar-sa\" id=\"bshBarTa\"><\/div><\/div>\n              <span class=\"bsh-bar-v\" id=\"bshBarTaVal\">\u2014<\/span>\n            <\/div>\n            <div class=\"bsh-bar-row\">\n              <span class=\"bsh-bar-k\">Ultimate \u03c4<sub>u<\/sub><\/span>\n              <div class=\"bsh-bar-track\"><div class=\"bsh-bar-fill bsh-bar-sut\" id=\"bshBarTu\"><\/div><\/div>\n              <span class=\"bsh-bar-v\" id=\"bshBarTuVal\">\u2014<\/span>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-tiles\">\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">Load per bolt<\/div>\n              <div class=\"bsh-v\" id=\"bshOutFb\">\u2014<\/div>\n              <div class=\"bsh-u\" id=\"bshOutFbNote\">F \/ n<\/div>\n            <\/div>\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">Effective shear area<\/div>\n              <div class=\"bsh-v\" id=\"bshOutAs\">\u2014<\/div>\n              <div class=\"bsh-u\" id=\"bshOutAsNote\">from d and shear planes<\/div>\n            <\/div>\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">Allowable shear stress<\/div>\n              <div class=\"bsh-v\" id=\"bshOutTauA\">\u2014<\/div>\n              <div class=\"bsh-u\">\u03c4<sub>u<\/sub> \/ design n<\/div>\n            <\/div>\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">Ultimate shear stress<\/div>\n              <div class=\"bsh-v\" id=\"bshOutTauU\">\u2014<\/div>\n              <div class=\"bsh-u\">k \u00d7 S<sub>ut<\/sub><\/div>\n            <\/div>\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">Joint allowable load<\/div>\n              <div class=\"bsh-v\" id=\"bshOutJoint\">\u2014<\/div>\n              <div class=\"bsh-u\">n \u00d7 F<sub>allow<\/sub><\/div>\n            <\/div>\n            <div class=\"bsh-tile\">\n              <div class=\"bsh-k\">SF vs ultimate shear<\/div>\n              <div class=\"bsh-v\" id=\"bshOutNult\">\u2014<\/div>\n              <div class=\"bsh-u\">\u03c4<sub>u<\/sub> \/ \u03c4<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"bsh-alerts\" id=\"bshAlerts\"><\/div>\n        <\/div>\n      <\/section>\n    <\/aside>\n  <\/div>\n\n\n<textarea id=\"bsh-js-b64\" aria-hidden=\"true\" style=\"display:none!important;width:0;height:0;border:0;padding:0;position:absolute;left:-9999px\">KGZ1bmN0aW9uICgpIHsKICAidXNlIHN0cmljdCI7CgogIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJzaC1yb290Iik7CiAgaWYgKCFyb290IHx8IHJvb3QuZ2V0QXR0cmlidXRlKCJkYXRhLWJzaC1yZWFkeSIpID09PSAiMSIpIHJldHVybjsKICByb290LnNldEF0dHJpYnV0ZSgiZGF0YS1ic2gtcmVhZHkiLCAiMSIpOwoKICB2YXIgQVJDX0xFTiA9IDI4Mi43NDM7CiAgdmFyIE1NX1BFUl9JTiA9IDI1LjQ7CiAgdmFyIE1NMl9QRVJfSU4yID0gNjQ1LjE2OwogIHZhciBQU0lfUEVSX01QQSA9IDE0NS4wMzc3Mzc3MzsKICB2YXIgTEJGX1BFUl9OID0gMC4yMjQ4MDg5NDM7CgogIHZhciBTSVpFU19NID0gWwogICAgeyBsYWJlbDogIk02IiwgZDogNiwgcDogMSB9LAogICAgeyBsYWJlbDogIk04IiwgZDogOCwgcDogMS4yNSB9LAogICAgeyBsYWJlbDogIk0xMCIsIGQ6IDEwLCBwOiAxLjUgfSwKICAgIHsgbGFiZWw6ICJNMTIiLCBkOiAxMiwgcDogMS43NSB9LAogICAgeyBsYWJlbDogIk0xNiIsIGQ6IDE2LCBwOiAyIH0sCiAgICB7IGxhYmVsOiAiTTIwIiwgZDogMjAsIHA6IDIuNSB9LAogICAgeyBsYWJlbDogIk0yNCIsIGQ6IDI0LCBwOiAzIH0KICBdOwogIHZhciBTSVpFU19VTkMgPSBbCiAgICB7IGxhYmVsOiAiMS80LTIwIiwgZEluOiAwLjI1LCB0cGk6IDIwIH0sCiAgICB7IGxhYmVsOiAiNS8xNi0xOCIsIGRJbjogMC4zMTI1LCB0cGk6IDE4IH0sCiAgICB7IGxhYmVsOiAiMy84LTE2IiwgZEluOiAwLjM3NSwgdHBpOiAxNiB9LAogICAgeyBsYWJlbDogIjEvMi0xMyIsIGRJbjogMC41LCB0cGk6IDEzIH0sCiAgICB7IGxhYmVsOiAiNS84LTExIiwgZEluOiAwLjYyNSwgdHBpOiAxMSB9LAogICAgeyBsYWJlbDogIjMvNC0xMCIsIGRJbjogMC43NSwgdHBpOiAxMCB9CiAgXTsKICB2YXIgU0laRVNfVU5GID0gWwogICAgeyBsYWJlbDogIjEvNC0yOCIsIGRJbjogMC4yNSwgdHBpOiAyOCB9LAogICAgeyBsYWJlbDogIjUvMTYtMjQiLCBkSW46IDAuMzEyNSwgdHBpOiAyNCB9LAogICAgeyBsYWJlbDogIjMvOC0yNCIsIGRJbjogMC4zNzUsIHRwaTogMjQgfSwKICAgIHsgbGFiZWw6ICIxLzItMjAiLCBkSW46IDAuNSwgdHBpOiAyMCB9LAogICAgeyBsYWJlbDogIjUvOC0xOCIsIGRJbjogMC42MjUsIHRwaTogMTggfSwKICAgIHsgbGFiZWw6ICIzLzQtMTYiLCBkSW46IDAuNzUsIHRwaTogMTYgfQogIF07CgogIHZhciBNRVRSSUNfUElUQ0ggPSB7CiAgICAzOiAwLjUsIDQ6IDAuNywgNTogMC44LCA2OiAxLCA4OiAxLjI1LCAxMDogMS41LCAxMjogMS43NSwKICAgIDE0OiAyLCAxNjogMiwgMTg6IDIuNSwgMjA6IDIuNSwgMjI6IDIuNSwgMjQ6IDMsIDI3OiAzLCAzMDogMy41LCAzNjogNAogIH07CgogIHZhciBHUkFERVMgPSB7CiAgICAiNC42IjogIHsgc3V0OiA0MDAsIGxhYmVsOiAiR3JhZGUgNC42IiB9LAogICAgIjUuOCI6ICB7IHN1dDogNTAwLCBsYWJlbDogIkdyYWRlIDUuOCIgfSwKICAgICI4LjgiOiAgeyBzdXQ6IDgwMCwgbGFiZWw6ICJHcmFkZSA4LjgiIH0sCiAgICAiMTAuOSI6IHsgc3V0OiAxMDAwLCBsYWJlbDogIkdyYWRlIDEwLjkiIH0sCiAgICAiMTIuOSI6IHsgc3V0OiAxMjAwLCBsYWJlbDogIkdyYWRlIDEyLjkiIH0sCiAgICBzczogICAgIHsgc3V0OiA3MDAsIGxhYmVsOiAiU3RhaW5sZXNzIHN0ZWVsIEEyLTcwIiB9LAogICAgY3VzdG9tOiBudWxsCiAgfTsKCiAgdmFyIERFRkFVTFRTID0gewogICAgdW5pdDogIm1ldHJpYyIsCiAgICBtb2RlOiAic2FmZXR5IiwKICAgIHRocmVhZDogIm1ldHJpYyIsCiAgICBzaGVhcjogImRvdWJsZSIsCiAgICBwbGFuZTogInNoYW5rIiwKICAgIGQ6IDEyLAogICAgcDogMS43NSwKICAgIGdyYWRlOiAiMTAuOSIsCiAgICBzdXQ6IDEwMDAsCiAgICBrOiAwLjYsCiAgICBGOiAyMDAwMCwKICAgIGZVbml0OiAiTiIsCiAgICBuc2Y6IDIsCiAgICBuYm9sdHM6IDEsCiAgICBzaXplOiAiTTEyIgogIH07CgogIHZhciBlbCA9IHsKICAgIG1vZGU6IGJ5SWQoImJzaE1vZGUiKSwKICAgIHRocmVhZDogYnlJZCgiYnNoVGhyZWFkIiksCiAgICBzaGVhcjogYnlJZCgiYnNoU2hlYXIiKSwKICAgIHBsYW5lOiBieUlkKCJic2hQbGFuZSIpLAogICAgZDogYnlJZCgiYnNoRCIpLAogICAgcDogYnlJZCgiYnNoUCIpLAogICAgYXNTaG93OiBieUlkKCJic2hBcyIpLAogICAgZ3JhZGU6IGJ5SWQoImJzaEdyYWRlIiksCiAgICBzdXQ6IGJ5SWQoImJzaFN1dCIpLAogICAgazogYnlJZCgiYnNoSyIpLAogICAgRjogYnlJZCgiYnNoRiIpLAogICAgZlVuaXQ6IGJ5SWQoImJzaEZVbml0IiksCiAgICBuc2Y6IGJ5SWQoImJzaE5zZiIpLAogICAgbmJvbHRzOiBieUlkKCJic2hOYm9sdHMiKSwKICAgIGJ0bk1ldHJpYzogYnlJZCgiYnNoQnRuTWV0cmljIiksCiAgICBidG5JbXBlcmlhbDogYnlJZCgiYnNoQnRuSW1wZXJpYWwiKSwKICAgIGJ0blJlc2V0OiBieUlkKCJic2hCdG5SZXNldCIpLAogICAgYnRuQ2FsYzogYnlJZCgiYnNoQnRuQ2FsY3VsYXRlIiksCiAgICByZXN1bHRzOiBieUlkKCJic2hSZXN1bHRzIiksCiAgICBzaXplQ2hpcHM6IGJ5SWQoImJzaFNpemVDaGlwcyIpLAogICAgbW9kZU5vdGU6IGJ5SWQoImJzaE1vZGVOb3RlIiksCiAgICBwaXRjaFdyYXA6IGJ5SWQoImJzaFBpdGNoV3JhcCIpLAogICAgYmFubmVyOiBieUlkKCJic2hCYW5uZXIiKSwKICAgIHN0YXR1c1RpdGxlOiBieUlkKCJic2hTdGF0dXNUaXRsZSIpLAogICAgc3RhdHVzTm90ZTogYnlJZCgiYnNoU3RhdHVzTm90ZSIpLAogICAgb3V0U3RyZXNzOiBieUlkKCJic2hPdXRTdHJlc3MiKSwKICAgIG91dFN0cmVzc1N1YjogYnlJZCgiYnNoT3V0U3RyZXNzU3ViIiksCiAgICBvdXRGbWF4OiBieUlkKCJic2hPdXRGbWF4IiksCiAgICBvdXRGbWF4U3ViOiBieUlkKCJic2hPdXRGbWF4U3ViIiksCiAgICBvdXRGYTogYnlJZCgiYnNoT3V0RmEiKSwKICAgIG91dEZhU3ViOiBieUlkKCJic2hPdXRGYVN1YiIpLAogICAgb3V0U2Y6IGJ5SWQoImJzaE91dFNmIiksCiAgICBvdXRTZlN1YjogYnlJZCgiYnNoT3V0U2ZTdWIiKSwKICAgIG91dFV0aWw6IGJ5SWQoImJzaE91dFV0aWwiKSwKICAgIHV0aWxGaWxsOiBieUlkKCJic2hVdGlsRmlsbCIpLAogICAgb3V0QXM6IGJ5SWQoImJzaE91dEFzIiksCiAgICBvdXRBc05vdGU6IGJ5SWQoImJzaE91dEFzTm90ZSIpLAogICAgb3V0RmI6IGJ5SWQoImJzaE91dEZiIiksCiAgICBvdXRGYk5vdGU6IGJ5SWQoImJzaE91dEZiTm90ZSIpLAogICAgb3V0VGF1VTogYnlJZCgiYnNoT3V0VGF1VSIpLAogICAgb3V0VGF1QTogYnlJZCgiYnNoT3V0VGF1QSIpLAogICAgb3V0Sm9pbnQ6IGJ5SWQoImJzaE91dEpvaW50IiksCiAgICBvdXROdWx0OiBieUlkKCJic2hPdXROdWx0IiksCiAgICBhbGVydHM6IGJ5SWQoImJzaEFsZXJ0cyIpLAogICAgZ2F1Z2VBcmM6IGJ5SWQoImJzaEdhdWdlQXJjIiksCiAgICBuZWVkbGU6IGJ5SWQoImJzaE5lZWRsZSIpLAogICAgZ2F1Z2VSZWFkOiBieUlkKCJic2hHYXVnZVJlYWQiKSwKICAgIGdhdWdlTm90ZTogYnlJZCgiYnNoR2F1Z2VOb3RlIiksCiAgICBzY2hlbWF0aWM6IGJ5SWQoImJzaFNjaGVtYXRpYyIpLAogICAgc2NoRm9yY2U6IGJ5SWQoImJzaFNjaEZvcmNlIiksCiAgICBzY2hDYXB0aW9uOiBieUlkKCJic2hTY2hDYXB0aW9uIiksCiAgICBiYXJUYXU6IGJ5SWQoImJzaEJhclRhdSIpLAogICAgYmFyVGE6IGJ5SWQoImJzaEJhclRhIiksCiAgICBiYXJUdTogYnlJZCgiYnNoQmFyVHUiKSwKICAgIGJhclRhdVZhbDogYnlJZCgiYnNoQmFyVGF1VmFsIiksCiAgICBiYXJUYVZhbDogYnlJZCgiYnNoQmFyVGFWYWwiKSwKICAgIGJhclR1VmFsOiBieUlkKCJic2hCYXJUdVZhbCIpLAogICAgaGVyb1N0cmVzczogYnlJZCgiYnNoSGVyb1N0cmVzcyIpLAogICAgaGVyb0ZtYXg6IGJ5SWQoImJzaEhlcm9GbWF4IiksCiAgICBoZXJvRmE6IGJ5SWQoImJzaEhlcm9GYSIpLAogICAgaGVyb1NmOiBieUlkKCJic2hIZXJvU2YiKQogIH07CgogIHZhciBzdGF0ZSA9IHsKICAgIHVuaXQ6ICJtZXRyaWMiLAogICAgc2l6ZUlkOiAiTTEyIiwKICAgIGFwcGx5aW5nOiBmYWxzZSwKICAgIGxpdmU6IGZhbHNlCiAgfTsKICB2YXIgbGFzdEZVbml0ID0gZWwuZlVuaXQgPyBlbC5mVW5pdC52YWx1ZSA6ICJOIjsKCiAgZnVuY3Rpb24gYnlJZChpZCkgeyByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIiArIGlkKTsgfQoKICBmdW5jdGlvbiBudW0obm9kZSkgewogICAgaWYgKCFub2RlKSByZXR1cm4gTmFOOwogICAgdmFyIHYgPSBwYXJzZUZsb2F0KFN0cmluZyhub2RlLnZhbHVlKS5yZXBsYWNlKCIsIiwgIi4iKSk7CiAgICByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogTmFOOwogIH0KCiAgZnVuY3Rpb24gY2xhbXAodiwgYSwgYikgeyByZXR1cm4gTWF0aC5tYXgoYSwgTWF0aC5taW4oYiwgdikpOyB9CgogIGZ1bmN0aW9uIHJvdW5kU21hcnQodikgewogICAgaWYgKCFpc0Zpbml0ZSh2KSkgcmV0dXJuICIiOwogICAgdmFyIGEgPSBNYXRoLmFicyh2KTsKICAgIHZhciBkID0gYSA+PSAxMDAgPyAyIDogYSA+PSAxMCA\/IDMgOiBhID49IDEgPyA0IDogNTsKICAgIHJldHVybiBTdHJpbmcoTnVtYmVyKHYudG9GaXhlZChkKSkpOwogIH0KCiAgZnVuY3Rpb24gZm10KHYsIGQpIHsKICAgIGlmICghaXNGaW5pdGUodikpIHJldHVybiAiLSI7CiAgICByZXR1cm4gdi50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogZCwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pOwogIH0KCiAgZnVuY3Rpb24gc2V0RXJyKGtleSwgbXNnKSB7CiAgICB2YXIgbm9kZSA9IGJ5SWQoImJzaEVyciIgKyBrZXkpOwogICAgdmFyIG1hcCA9IHsgRDogZWwuZCwgUDogZWwucCwgU3V0OiBlbC5zdXQsIEs6IGVsLmssIEY6IGVsLkYsIE5zZjogZWwubnNmLCBOYm9sdHM6IGVsLm5ib2x0cyB9OwogICAgdmFyIGlucHV0ID0gbWFwW2tleV07CiAgICBpZiAobm9kZSkgbm9kZS50ZXh0Q29udGVudCA9IG1zZyB8fCAiIjsKICAgIGlmIChpbnB1dCkgewogICAgICBpZiAobXNnKSBpbnB1dC5jbGFzc0xpc3QuYWRkKCJic2gtaW52YWxpZCIpOwogICAgICBlbHNlIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoImJzaC1pbnZhbGlkIik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBjbGVhckVycnMoKSB7CiAgICBbIkQiLCAiUCIsICJTdXQiLCAiSyIsICJGIiwgIk5zZiIsICJOYm9sdHMiXS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IHNldEVycihrLCAiIik7IH0pOwogIH0KCiAgZnVuY3Rpb24gdGhyZWFkS2luZCgpIHsKICAgIHJldHVybiBlbC50aHJlYWQgPyBlbC50aHJlYWQudmFsdWUgOiAibWV0cmljIjsKICB9CgogIGZ1bmN0aW9uIHBpdGNoSXNUcGkoKSB7CiAgICB2YXIgdCA9IHRocmVhZEtpbmQoKTsKICAgIGlmICh0ID09PSAidW5jIiB8fCB0ID09PSAidW5mIikgcmV0dXJuIHRydWU7CiAgICBpZiAodCA9PT0gImN1c3RvbSIpIHJldHVybiBzdGF0ZS51bml0ID09PSAiaW1wZXJpYWwiOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlVW5pdExhYmVscygpIHsKICAgIHZhciBtZXRyaWMgPSBzdGF0ZS51bml0ID09PSAibWV0cmljIjsKICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtdW5pdD0nZCddIikuZm9yRWFjaChmdW5jdGlvbiAobikgeyBuLnRleHRDb250ZW50ID0gbWV0cmljID8gIm1tIiA6ICJpbiI7IH0pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS11bml0PSdwJ10iKS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7IG4udGV4dENvbnRlbnQgPSBwaXRjaElzVHBpKCkgPyAiVFBJIiA6ICJtbSI7IH0pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS11bml0PSdhcyddIikuZm9yRWFjaChmdW5jdGlvbiAobikgeyBuLnRleHRDb250ZW50ID0gbWV0cmljID8gIm1tXHUwMGIyIiA6ICJpblx1MDBiMiI7IH0pOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS11bml0PSdzJ10iKS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7IG4udGV4dENvbnRlbnQgPSBtZXRyaWMgPyAiTVBhIiA6ICJwc2kiOyB9KTsKICAgIGlmIChlbC5idG5NZXRyaWMpIGVsLmJ0bk1ldHJpYy5jbGFzc0xpc3QudG9nZ2xlKCJic2gtaXMtYWN0aXZlIiwgbWV0cmljKTsKICAgIGlmIChlbC5idG5JbXBlcmlhbCkgZWwuYnRuSW1wZXJpYWwuY2xhc3NMaXN0LnRvZ2dsZSgiYnNoLWlzLWFjdGl2ZSIsICFtZXRyaWMpOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlTW9kZU5vdGUoKSB7CiAgICBpZiAoIWVsLm1vZGVOb3RlIHx8ICFlbC5tb2RlKSByZXR1cm47CiAgICB2YXIgbSA9IGVsLm1vZGUudmFsdWU7CiAgICBpZiAobSA9PT0gInN0cmVzcyIpIHsKICAgICAgZWwubW9kZU5vdGUudGV4dENvbnRlbnQgPSAiU2hlYXIgU3RyZXNzIENhbGN1bGF0aW9uOiB0aGlzIEJvbHQgU2hlYXIgU3RyZXNzIENhbGN1bGF0b3IgcmVwb3J0cyBcdTAzYzQgPSBGIC8gQXMgZm9yIHRoZSBzZWxlY3RlZCBzaW5nbGUgb3IgZG91YmxlIHNoZWFyIHBsYW5lLiI7CiAgICB9IGVsc2UgaWYgKG0gPT09ICJjYXBhY2l0eSIpIHsKICAgICAgZWwubW9kZU5vdGUudGV4dENvbnRlbnQgPSAiU2hlYXIgQ2FwYWNpdHkgQ2FsY3VsYXRpb246IHRoaXMgQm9sdCBTaGVhciBDYXBhY2l0eSBDYWxjdWxhdG9yIHJlcG9ydHMgbWF4aW11bSBhbmQgYWxsb3dhYmxlIHNoZWFyIGxvYWQgZnJvbSBtYXRlcmlhbCBzdHJlbmd0aC4iOwogICAgfSBlbHNlIHsKICAgICAgZWwubW9kZU5vdGUudGV4dENvbnRlbnQgPSAiU2FmZXR5IEZhY3RvciBDYWxjdWxhdGlvbjogdGhpcyBCb2x0IFNhZmV0eSBGYWN0b3IgQ2FsY3VsYXRvciBjb21wYXJlcyBhbGxvd2FibGUgc2hlYXIgbG9hZCB3aXRoIGFwcGxpZWQgbG9hZCBhbmQgY2xhc3NpZmllcyBjb25uZWN0aW9uIHJpc2suIjsKICAgIH0KICAgIGlmIChlbC5oZXJvU3RyZXNzKSBlbC5oZXJvU3RyZXNzLmNsYXNzTGlzdC50b2dnbGUoImJzaC1pcy1mb2N1cyIsIG0gPT09ICJzdHJlc3MiKTsKICAgIGlmIChlbC5oZXJvRm1heCkgZWwuaGVyb0ZtYXguY2xhc3NMaXN0LnRvZ2dsZSgiYnNoLWlzLWZvY3VzIiwgbSA9PT0gImNhcGFjaXR5Iik7CiAgICBpZiAoZWwuaGVyb0ZhKSBlbC5oZXJvRmEuY2xhc3NMaXN0LnRvZ2dsZSgiYnNoLWlzLWZvY3VzIiwgbSA9PT0gImNhcGFjaXR5Iik7CiAgICBpZiAoZWwuaGVyb1NmKSBlbC5oZXJvU2YuY2xhc3NMaXN0LnRvZ2dsZSgiYnNoLWlzLWZvY3VzIiwgbSA9PT0gInNhZmV0eSIpOwogIH0KCiAgZnVuY3Rpb24gY3VycmVudFNpemVMaXN0KCkgewogICAgdmFyIHQgPSB0aHJlYWRLaW5kKCk7CiAgICBpZiAodCA9PT0gInVuYyIpIHJldHVybiBTSVpFU19VTkMubWFwKGZ1bmN0aW9uIChzKSB7CiAgICAgIHJldHVybiB7IGxhYmVsOiBzLmxhYmVsLCBkRGlzcDogc3RhdGUudW5pdCA9PT0gIm1ldHJpYyIgPyBzLmRJbiAqIE1NX1BFUl9JTiA6IHMuZEluLCBwRGlzcDogcy50cGkgfTsKICAgIH0pOwogICAgaWYgKHQgPT09ICJ1bmYiKSByZXR1cm4gU0laRVNfVU5GLm1hcChmdW5jdGlvbiAocykgewogICAgICByZXR1cm4geyBsYWJlbDogcy5sYWJlbCwgZERpc3A6IHN0YXRlLnVuaXQgPT09ICJtZXRyaWMiID8gcy5kSW4gKiBNTV9QRVJfSU4gOiBzLmRJbiwgcERpc3A6IHMudHBpIH07CiAgICB9KTsKICAgIHJldHVybiBTSVpFU19NLm1hcChmdW5jdGlvbiAocykgewogICAgICByZXR1cm4geyBsYWJlbDogcy5sYWJlbCwgZERpc3A6IHN0YXRlLnVuaXQgPT09ICJtZXRyaWMiID8gcy5kIDogcy5kIC8gTU1fUEVSX0lOLCBwRGlzcDogcy5wIH07CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclNpemVDaGlwcygpIHsKICAgIGlmICghZWwuc2l6ZUNoaXBzKSByZXR1cm47CiAgICB2YXIgbGlzdCA9IGN1cnJlbnRTaXplTGlzdCgpOwogICAgZWwuc2l6ZUNoaXBzLmlubmVySFRNTCA9ICIiOwogICAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7CiAgICAgIHZhciBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKICAgICAgYnRuLnR5cGUgPSAiYnV0dG9uIjsKICAgICAgYnRuLmNsYXNzTmFtZSA9ICJic2gtY2hpcCIgKyAoc3RhdGUuc2l6ZUlkID09PSBzLmxhYmVsID8gIiBic2gtaXMtYWN0aXZlIiA6ICIiKTsKICAgICAgYnRuLnRleHRDb250ZW50ID0gcy5sYWJlbDsKICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgICAgIHN0YXRlLnNpemVJZCA9IHMubGFiZWw7CiAgICAgICAgc3RhdGUuYXBwbHlpbmcgPSB0cnVlOwogICAgICAgIGVsLmQudmFsdWUgPSByb3VuZFNtYXJ0KHMuZERpc3ApOwogICAgICAgIGlmIChlbC5wKSBlbC5wLnZhbHVlID0gU3RyaW5nKHMucERpc3ApOwogICAgICAgIHN0YXRlLmFwcGx5aW5nID0gZmFsc2U7CiAgICAgICAgcmVmcmVzaEFzKCk7CiAgICAgICAgcGFpbnRDaGlwcygpOwogICAgICAgIGlmIChzdGF0ZS5saXZlKSBjYWxjdWxhdGUoZmFsc2UpOwogICAgICB9KTsKICAgICAgZWwuc2l6ZUNoaXBzLmFwcGVuZENoaWxkKGJ0bik7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHBhaW50Q2hpcHMoKSB7CiAgICBpZiAoIWVsLnNpemVDaGlwcykgcmV0dXJuOwogICAgZWwuc2l6ZUNoaXBzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5ic2gtY2hpcCIpLmZvckVhY2goZnVuY3Rpb24gKGJ0bikgewogICAgICBidG4uY2xhc3NMaXN0LnRvZ2dsZSgiYnNoLWlzLWFjdGl2ZSIsIGJ0bi50ZXh0Q29udGVudCA9PT0gc3RhdGUuc2l6ZUlkKTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gc2hhbmtBcmVhKGREaXNwLCB1bml0KSB7CiAgICBpZiAoIShkRGlzcCA+IDApKSByZXR1cm4gTmFOOwogICAgdmFyIGRtbSA9IHVuaXQgPT09ICJtZXRyaWMiID8gZERpc3AgOiBkRGlzcCAqIE1NX1BFUl9JTjsKICAgIHJldHVybiBNYXRoLlBJIC8gNCAqIGRtbSAqIGRtbTsKICB9CgogIGZ1bmN0aW9uIHRocmVhZEFyZWEoZERpc3AsIHBEaXNwLCB1bml0LCB0cGlNb2RlKSB7CiAgICBpZiAoIShkRGlzcCA+IDApIHx8ICEocERpc3AgPiAwKSkgcmV0dXJuIE5hTjsKICAgIHZhciBkbW0gPSB1bml0ID09PSAibWV0cmljIiA\/IGREaXNwIDogZERpc3AgKiBNTV9QRVJfSU47CiAgICB2YXIgcG1tID0gdHBpTW9kZSA\/IE1NX1BFUl9JTiAvIHBEaXNwIDogcERpc3A7CiAgICB2YXIgY29yZTsKICAgIGlmICh0cGlNb2RlKSB7CiAgICAgIHZhciBkaW4gPSBkbW0gLyBNTV9QRVJfSU47CiAgICAgIHZhciB0cGkgPSBwRGlzcDsKICAgICAgY29yZSA9IChkaW4gLSAwLjk3NDMgLyB0cGkpICogTU1fUEVSX0lOOwogICAgfSBlbHNlIHsKICAgICAgY29yZSA9IGRtbSAtIDAuOTM4MiAqIHBtbTsKICAgIH0KICAgIGlmICghKGNvcmUgPiAwKSkgcmV0dXJuIE5hTjsKICAgIHJldHVybiBNYXRoLlBJIC8gNCAqIGNvcmUgKiBjb3JlOwogIH0KCiAgZnVuY3Rpb24gb25lUGxhbmVBcmVhTW0yKCkgewogICAgdmFyIGQgPSBudW0oZWwuZCk7CiAgICB2YXIgcGxhbmUgPSBlbC5wbGFuZSA\/IGVsLnBsYW5lLnZhbHVlIDogInNoYW5rIjsKICAgIGlmIChwbGFuZSA9PT0gInRocmVhZCIpIHsKICAgICAgcmV0dXJuIHRocmVhZEFyZWEoZCwgbnVtKGVsLnApLCBzdGF0ZS51bml0LCBwaXRjaElzVHBpKCkpOwogICAgfQogICAgcmV0dXJuIHNoYW5rQXJlYShkLCBzdGF0ZS51bml0KTsKICB9CgogIGZ1bmN0aW9uIHJlZnJlc2hBcygpIHsKICAgIGlmICghZWwuYXNTaG93KSByZXR1cm47CiAgICB2YXIgYXMxID0gb25lUGxhbmVBcmVhTW0yKCk7CiAgICB2YXIgbnBsID0gZWwuc2hlYXIgJiYgZWwuc2hlYXIudmFsdWUgPT09ICJkb3VibGUiID8gMiA6IDE7CiAgICB2YXIgYXMgPSBhczEgKiBucGw7CiAgICBpZiAoIWlzRmluaXRlKGFzKSB8fCAhKGFzID4gMCkpIHsKICAgICAgZWwuYXNTaG93LnZhbHVlID0gIiI7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChzdGF0ZS51bml0ID09PSAiaW1wZXJpYWwiKSB7CiAgICAgIGVsLmFzU2hvdy52YWx1ZSA9IChhcyAvIE1NMl9QRVJfSU4yKS50b0ZpeGVkKDQpOwogICAgfSBlbHNlIHsKICAgICAgZWwuYXNTaG93LnZhbHVlID0gYXMgPj0gMTAgPyBhcy50b0ZpeGVkKDEpIDogYXMudG9GaXhlZCgzKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGFwcGx5R3JhZGUoKSB7CiAgICB2YXIgZyA9IEdSQURFU1tlbC5ncmFkZS52YWx1ZV07CiAgICBpZiAoIWcpIHsKICAgICAgZWwuc3V0LnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHN0YXRlLmFwcGx5aW5nID0gdHJ1ZTsKICAgIHZhciBtZXRyaWMgPSBzdGF0ZS51bml0ID09PSAibWV0cmljIjsKICAgIGVsLnN1dC52YWx1ZSA9IG1ldHJpYyA\/IFN0cmluZyhnLnN1dCkgOiByb3VuZFNtYXJ0KGcuc3V0ICogUFNJX1BFUl9NUEEpOwogICAgZWwuc3V0LnJlYWRPbmx5ID0gdHJ1ZTsKICAgIHN0YXRlLmFwcGx5aW5nID0gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBtYXJrQ3VzdG9tR3JhZGUoKSB7CiAgICBpZiAoc3RhdGUuYXBwbHlpbmcpIHJldHVybjsKICAgIGlmIChlbC5ncmFkZS52YWx1ZSAhPT0gImN1c3RvbSIpIGVsLmdyYWRlLnZhbHVlID0gImN1c3RvbSI7CiAgICBlbC5zdXQucmVhZE9ubHkgPSBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIHN1Z2dlc3RQaXRjaEZyb21EaWFtZXRlcigpIHsKICAgIGlmIChzdGF0ZS5hcHBseWluZykgcmV0dXJuOwogICAgaWYgKHRocmVhZEtpbmQoKSA9PT0gImN1c3RvbSIpIHJldHVybjsKICAgIHZhciBkID0gbnVtKGVsLmQpOwogICAgaWYgKCEoZCA+IDApKSByZXR1cm47CiAgICB2YXIgZG1tID0gc3RhdGUudW5pdCA9PT0gIm1ldHJpYyIgPyBkIDogZCAqIE1NX1BFUl9JTjsKICAgIHZhciB0ID0gdGhyZWFkS2luZCgpOwogICAgdmFyIGk7CiAgICBpZiAodCA9PT0gIm1ldHJpYyIpIHsKICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhNRVRSSUNfUElUQ0gpOwogICAgICB2YXIgYmVzdCA9IG51bGw7CiAgICAgIHZhciBiZXN0RGlmZiA9IDFlOTsKICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgZG0gPSBOdW1iZXIoa2V5c1tpXSk7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhkbW0gLSBkbSk7CiAgICAgICAgaWYgKGRpZmYgPCBiZXN0RGlmZikgeyBiZXN0RGlmZiA9IGRpZmY7IGJlc3QgPSBkbTsgfQogICAgICB9CiAgICAgIGlmIChiZXN0ICE9IG51bGwgJiYgYmVzdERpZmYgPCAwLjM1KSBlbC5wLnZhbHVlID0gU3RyaW5nKE1FVFJJQ19QSVRDSFtiZXN0XSk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBsaXN0ID0gdCA9PT0gInVuZiIgPyBTSVpFU19VTkYgOiBTSVpFU19VTkM7CiAgICB2YXIgbmVhcmVzdCA9IG51bGw7CiAgICB2YXIgbmQgPSAxZTk7CiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZGQgPSBNYXRoLmFicyhkbW0gLSBsaXN0W2ldLmRJbiAqIE1NX1BFUl9JTik7CiAgICAgIGlmIChkZCA8IG5kKSB7IG5kID0gZGQ7IG5lYXJlc3QgPSBsaXN0W2ldOyB9CiAgICB9CiAgICBpZiAobmVhcmVzdCAmJiBuZCA8IDAuNikgZWwucC52YWx1ZSA9IFN0cmluZyhuZWFyZXN0LnRwaSk7CiAgfQoKICBmdW5jdGlvbiBmb3JjZVRvTigpIHsKICAgIHZhciB2ID0gbnVtKGVsLkYpOwogICAgaWYgKCFpc0Zpbml0ZSh2KSkgcmV0dXJuIE5hTjsKICAgIHZhciB1ID0gZWwuZlVuaXQudmFsdWU7CiAgICBpZiAodSA9PT0gImtOIikgcmV0dXJuIHYgKiAxMDAwOwogICAgaWYgKHUgPT09ICJsYmYiKSByZXR1cm4gdiAvIExCRl9QRVJfTjsKICAgIHJldHVybiB2OwogIH0KCiAgZnVuY3Rpb24gY29udmVydEZvcmNlVW5pdFZhbHVlKHZhbHVlLCBmcm9tVSwgdG9VKSB7CiAgICBpZiAoIWlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHZhbHVlOwogICAgdmFyIG4gPSB2YWx1ZTsKICAgIGlmIChmcm9tVSA9PT0gImtOIikgbiAqPSAxMDAwOwogICAgaWYgKGZyb21VID09PSAibGJmIikgbiAvPSBMQkZfUEVSX047CiAgICBpZiAodG9VID09PSAia04iKSByZXR1cm4gbiAvIDEwMDA7CiAgICBpZiAodG9VID09PSAibGJmIikgcmV0dXJuIG4gKiBMQkZfUEVSX047CiAgICByZXR1cm4gbjsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdEZvcmNlKE4pIHsKICAgIGlmICghaXNGaW5pdGUoTikpIHJldHVybiB7IHByaW1hcnk6ICItIiwgc2Vjb25kYXJ5OiAiIiB9OwogICAgaWYgKHN0YXRlLnVuaXQgPT09ICJpbXBlcmlhbCIpIHsKICAgICAgcmV0dXJuIHsgcHJpbWFyeTogZm10KE4gKiBMQkZfUEVSX04sIDEpICsgIiBsYmYiLCBzZWNvbmRhcnk6IGZtdChOIC8gMTAwMCwgMikgKyAiIGtOICAvICAiICsgZm10KE4sIDApICsgIiBOIiB9OwogICAgfQogICAgaWYgKE1hdGguYWJzKE4pID49IDEwMDApIHsKICAgICAgcmV0dXJuIHsgcHJpbWFyeTogZm10KE4gLyAxMDAwLCAyKSArICIga04iLCBzZWNvbmRhcnk6IGZtdChOLCAwKSArICIgTiAgLyAgIiArIGZtdChOICogTEJGX1BFUl9OLCAxKSArICIgbGJmIiB9OwogICAgfQogICAgcmV0dXJuIHsgcHJpbWFyeTogZm10KE4sIDEpICsgIiBOIiwgc2Vjb25kYXJ5OiBmbXQoTiAqIExCRl9QRVJfTiwgMSkgKyAiIGxiZiIgfTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdFN0cmVzcyhNUGEpIHsKICAgIGlmICghaXNGaW5pdGUoTVBhKSkgcmV0dXJuIHsgcHJpbWFyeTogIi0iLCBzZWNvbmRhcnk6ICIiIH07CiAgICBpZiAoc3RhdGUudW5pdCA9PT0gImltcGVyaWFsIikgewogICAgICByZXR1cm4geyBwcmltYXJ5OiBmbXQoTVBhICogUFNJX1BFUl9NUEEsIDApICsgIiBwc2kiLCBzZWNvbmRhcnk6IGZtdChNUGEsIDEpICsgIiBNUGEiIH07CiAgICB9CiAgICByZXR1cm4geyBwcmltYXJ5OiBmbXQoTVBhLCAxKSArICIgTVBhIiwgc2Vjb25kYXJ5OiBmbXQoTVBhICogUFNJX1BFUl9NUEEsIDApICsgIiBwc2kiIH07CiAgfQoKICBmdW5jdGlvbiBmb3JtYXRBcmVhKG1tMikgewogICAgaWYgKCFpc0Zpbml0ZShtbTIpKSByZXR1cm4gIi0iOwogICAgaWYgKHN0YXRlLnVuaXQgPT09ICJpbXBlcmlhbCIpIHJldHVybiBmbXQobW0yIC8gTU0yX1BFUl9JTjIsIDQpICsgIiBpblx1MDBiMiI7CiAgICByZXR1cm4gZm10KG1tMiwgMSkgKyAiIG1tXHUwMGIyIjsKICB9CgogIGZ1bmN0aW9uIHN3aXRjaFVuaXQobmV4dCkgewogICAgaWYgKG5leHQgPT09IHN0YXRlLnVuaXQpIHJldHVybjsKICAgIHZhciBkID0gbnVtKGVsLmQpOwogICAgdmFyIHN1dCA9IG51bShlbC5zdXQpOwogICAgdmFyIEYgPSBudW0oZWwuRik7CiAgICB2YXIgZnJvbUZVID0gZWwuZlVuaXQudmFsdWU7CiAgICB2YXIgdG9GVSA9IG5leHQgPT09ICJpbXBlcmlhbCIgPyAibGJmIiA6ICJOIjsKICAgIHZhciBjdXN0b20gPSB0aHJlYWRLaW5kKCkgPT09ICJjdXN0b20iOwogICAgdmFyIHAgPSBudW0oZWwucCk7CgogICAgaWYgKG5leHQgPT09ICJpbXBlcmlhbCIpIHsKICAgICAgaWYgKGlzRmluaXRlKGQpKSBlbC5kLnZhbHVlID0gcm91bmRTbWFydChkIC8gTU1fUEVSX0lOKTsKICAgICAgaWYgKGlzRmluaXRlKHN1dCkpIGVsLnN1dC52YWx1ZSA9IHJvdW5kU21hcnQoc3V0ICogUFNJX1BFUl9NUEEpOwogICAgICBpZiAoY3VzdG9tICYmIGlzRmluaXRlKHApICYmIHAgPiAwKSBlbC5wLnZhbHVlID0gcm91bmRTbWFydChNTV9QRVJfSU4gLyBwKTsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChpc0Zpbml0ZShkKSkgZWwuZC52YWx1ZSA9IHJvdW5kU21hcnQoZCAqIE1NX1BFUl9JTik7CiAgICAgIGlmIChpc0Zpbml0ZShzdXQpKSBlbC5zdXQudmFsdWUgPSByb3VuZFNtYXJ0KHN1dCAvIFBTSV9QRVJfTVBBKTsKICAgICAgaWYgKGN1c3RvbSAmJiBpc0Zpbml0ZShwKSAmJiBwID4gMCkgZWwucC52YWx1ZSA9IHJvdW5kU21hcnQoTU1fUEVSX0lOIC8gcCk7CiAgICB9CgogICAgZWwuZlVuaXQudmFsdWUgPSB0b0ZVOwogICAgbGFzdEZVbml0ID0gdG9GVTsKICAgIGlmIChpc0Zpbml0ZShGKSkgZWwuRi52YWx1ZSA9IHJvdW5kU21hcnQoY29udmVydEZvcmNlVW5pdFZhbHVlKEYsIGZyb21GVSwgdG9GVSkpOwogICAgc3RhdGUuc2l6ZUlkID0gIiI7CiAgICBzdGF0ZS51bml0ID0gbmV4dDsKICAgIHVwZGF0ZVVuaXRMYWJlbHMoKTsKICAgIHJlbmRlclNpemVDaGlwcygpOwogICAgcmVmcmVzaEFzKCk7CiAgICBpZiAoc3RhdGUubGl2ZSkgY2FsY3VsYXRlKGZhbHNlKTsKICB9CgogIGZ1bmN0aW9uIHRvU0koKSB7CiAgICB2YXIgbWV0cmljID0gc3RhdGUudW5pdCA9PT0gIm1ldHJpYyI7CiAgICB2YXIgZCA9IG51bShlbC5kKTsKICAgIHZhciBwID0gbnVtKGVsLnApOwogICAgdmFyIHN1dCA9IG51bShlbC5zdXQpOwogICAgdmFyIGFzMSA9IG9uZVBsYW5lQXJlYU1tMigpOwogICAgdmFyIG5wbCA9IGVsLnNoZWFyICYmIGVsLnNoZWFyLnZhbHVlID09PSAiZG91YmxlIiA\/IDIgOiAxOwogICAgcmV0dXJuIHsKICAgICAgZDogZCwKICAgICAgcDogcCwKICAgICAgc3V0OiBzdXQsCiAgICAgIGs6IG51bShlbC5rKSwKICAgICAgZF9tbTogbWV0cmljID8gZCA6IGQgKiBNTV9QRVJfSU4sCiAgICAgIHBfbW06IHBpdGNoSXNUcGkoKSA\/IChwID4gMCA\/IE1NX1BFUl9JTiAvIHAgOiBOYU4pIDogcCwKICAgICAgc3V0X01QYTogbWV0cmljID8gc3V0IDogc3V0IC8gUFNJX1BFUl9NUEEsCiAgICAgIGFzMV9tbTI6IGFzMSwKICAgICAgYXNfbW0yOiBhczEgKiBucGwsCiAgICAgIG5QbGFuZXM6IG5wbCwKICAgICAgRl9OOiBmb3JjZVRvTigpLAogICAgICBuc2Y6IG51bShlbC5uc2YpLAogICAgICBuYm9sdHM6IG51bShlbC5uYm9sdHMpLAogICAgICBwbGFuZTogZWwucGxhbmUgPyBlbC5wbGFuZS52YWx1ZSA6ICJzaGFuayIsCiAgICAgIHNoZWFyOiBlbC5zaGVhciA\/IGVsLnNoZWFyLnZhbHVlIDogInNpbmdsZSIKICAgIH07CiAgfQoKICBmdW5jdGlvbiBlbXB0eShub2RlKSB7CiAgICByZXR1cm4gIW5vZGUgfHwgU3RyaW5nKG5vZGUudmFsdWUpLnRyaW0oKSA9PT0gIiI7CiAgfQoKICBmdW5jdGlvbiBuZWVkc1BpdGNoKHNpKSB7CiAgICByZXR1cm4gc2kucGxhbmUgPT09ICJ0aHJlYWQiOwogIH0KCiAgZnVuY3Rpb24gdmFsaWRhdGUoc2kpIHsKICAgIHZhciBvayA9IHRydWU7CiAgICBjbGVhckVycnMoKTsKCiAgICBpZiAoZW1wdHkoZWwuZCkgfHwgIWlzRmluaXRlKG51bShlbC5kKSkpIHsgc2V0RXJyKCJEIiwgIkVudGVyIGEgYm9sdCBkaWFtZXRlci4iKTsgb2sgPSBmYWxzZTsgfQogICAgZWxzZSBpZiAoIShzaS5kID4gMCkpIHsgc2V0RXJyKCJEIiwgIkRpYW1ldGVyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7IG9rID0gZmFsc2U7IH0KICAgIGVsc2UgaWYgKHNpLmRfbW0gPCAxLjUgfHwgc2kuZF9tbSA+IDE1MCkgeyBzZXRFcnIoIkQiLCAiRGlhbWV0ZXIgbG9va3MgdW5yZWFsaXN0aWMuIFR5cGljYWwgcmFuZ2UgaXMgYWJvdXQgMiBtbSB0byAxNTAgbW0uIik7IG9rID0gZmFsc2U7IH0KCiAgICBpZiAobmVlZHNQaXRjaChzaSkpIHsKICAgICAgaWYgKGVtcHR5KGVsLnApIHx8ICFpc0Zpbml0ZShudW0oZWwucCkpKSB7CiAgICAgICAgc2V0RXJyKCJQIiwgcGl0Y2hJc1RwaSgpID8gIkVudGVyIHRocmVhZHMgcGVyIGluY2ggKFRQSSkuIiA6ICJFbnRlciB0aHJlYWQgcGl0Y2guIik7CiAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgfSBlbHNlIGlmICghKHNpLnAgPiAwKSkgewogICAgICAgIHNldEVycigiUCIsIHBpdGNoSXNUcGkoKSA\/ICJUUEkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iIDogIlBpdGNoIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7CiAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgfSBlbHNlIGlmICghcGl0Y2hJc1RwaSgpICYmIHNpLmQgPiAwICYmIHNpLnAgPj0gc2kuZCAmJiBzdGF0ZS51bml0ID09PSAibWV0cmljIikgewogICAgICAgIHNldEVycigiUCIsICJQaXRjaCBtdXN0IGJlIHNtYWxsZXIgdGhhbiB0aGUgYm9sdCBkaWFtZXRlci4iKTsKICAgICAgICBvayA9IGZhbHNlOwogICAgICB9IGVsc2UgaWYgKCEoc2kuYXMxX21tMiA+IDApKSB7CiAgICAgICAgc2V0RXJyKCJQIiwgIlBpdGNoIGlzIHRvbyBsYXJnZSBmb3IgdGhpcyBkaWFtZXRlcjsgdGhyZWFkIHNoZWFyIGFyZWEgd291bGQgYmUgemVyby4iKTsKICAgICAgICBvayA9IGZhbHNlOwogICAgICB9CiAgICB9CgogICAgaWYgKGVtcHR5KGVsLkYpIHx8ICFpc0Zpbml0ZShudW0oZWwuRikpKSB7IHNldEVycigiRiIsICJFbnRlciB0aGUgYXBwbGllZCBzaGVhciBmb3JjZS4iKTsgb2sgPSBmYWxzZTsgfQogICAgZWxzZSBpZiAoIShzaS5GX04gPiAwKSkgeyBzZXRFcnIoIkYiLCAiQXBwbGllZCBzaGVhciBmb3JjZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpOyBvayA9IGZhbHNlOyB9CgogICAgaWYgKGVtcHR5KGVsLnN1dCkgfHwgIWlzRmluaXRlKG51bShlbC5zdXQpKSkgeyBzZXRFcnIoIlN1dCIsICJFbnRlciB1bHRpbWF0ZSB0ZW5zaWxlIHN0cmVuZ3RoLiIpOyBvayA9IGZhbHNlOyB9CiAgICBlbHNlIGlmICghKHNpLnN1dCA+IDApKSB7IHNldEVycigiU3V0IiwgIlVsdGltYXRlIHRlbnNpbGUgc3RyZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTsgb2sgPSBmYWxzZTsgfQogICAgZWxzZSBpZiAoc2kuc3V0X01QYSA8IDIwMCB8fCBzaS5zdXRfTVBhID4gMjUwMCkgewogICAgICBzZXRFcnIoIlN1dCIsICJWYWx1ZSBsb29rcyB1bnJlYWxpc3RpYyBmb3IgYSBzdGVlbCBib2x0ICh0eXBpY2FsIDI1MOKAkzIyMDAgTVBhIC8gMzbigJMzMjAga3NpKS4iKTsKICAgICAgb2sgPSBmYWxzZTsKICAgIH0KCiAgICBpZiAoZW1wdHkoZWwuaykgfHwgIWlzRmluaXRlKG51bShlbC5rKSkpIHsgc2V0RXJyKCJLIiwgIkVudGVyIHRoZSBzaGVhciBzdHJlbmd0aCByYXRpby4iKTsgb2sgPSBmYWxzZTsgfQogICAgZWxzZSBpZiAoIShzaS5rID4gMCkgfHwgc2kuayA+IDEpIHsgc2V0RXJyKCJLIiwgIlNoZWFyIHN0cmVuZ3RoIHJhdGlvIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxICh0eXBpY2FsIDAuNikuIik7IG9rID0gZmFsc2U7IH0KCiAgICBpZiAoZW1wdHkoZWwubnNmKSB8fCAhaXNGaW5pdGUobnVtKGVsLm5zZikpKSB7IHNldEVycigiTnNmIiwgIkVudGVyIGEgZGVzaWduIHNhZmV0eSBmYWN0b3IuIik7IG9rID0gZmFsc2U7IH0KICAgIGVsc2UgaWYgKCEoc2kubnNmID4gMCkpIHsgc2V0RXJyKCJOc2YiLCAiRGVzaWduIHNhZmV0eSBmYWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTsgb2sgPSBmYWxzZTsgfQogICAgZWxzZSBpZiAoc2kubnNmIDwgMSB8fCBzaS5uc2YgPiAxMikgeyBzZXRFcnIoIk5zZiIsICJFbnRlciBhIGRlc2lnbiBzYWZldHkgZmFjdG9yIGJldHdlZW4gMSBhbmQgMTIuIik7IG9rID0gZmFsc2U7IH0KCiAgICBpZiAoZW1wdHkoZWwubmJvbHRzKSB8fCAhaXNGaW5pdGUobnVtKGVsLm5ib2x0cykpKSB7IHNldEVycigiTmJvbHRzIiwgIkVudGVyIHRoZSBudW1iZXIgb2YgYm9sdHMuIik7IG9rID0gZmFsc2U7IH0KICAgIGVsc2UgaWYgKCEoc2kubmJvbHRzID49IDEpIHx8IE1hdGguZmxvb3Ioc2kubmJvbHRzKSAhPT0gc2kubmJvbHRzKSB7CiAgICAgIHNldEVycigiTmJvbHRzIiwgIk51bWJlciBvZiBib2x0cyBtdXN0IGJlIGFuIGludGVnZXIgXHUyMjY1IDEuIik7CiAgICAgIG9rID0gZmFsc2U7CiAgICB9CgogICAgcmV0dXJuIG9rOwogIH0KCiAgZnVuY3Rpb24gc2V0R2F1Z2Uoc2YpIHsKICAgIHZhciBmcmFjID0gY2xhbXAoKGlzRmluaXRlKHNmKSA\/IHNmIDogMCkgLyA0LCAwLCAxKTsKICAgIGlmIChlbC5nYXVnZUFyYykgZWwuZ2F1Z2VBcmMuc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaG9mZnNldCIsIFN0cmluZyhBUkNfTEVOICogKDEgLSBmcmFjKSkpOwogICAgdmFyIGFuZyA9IC05MCArIGZyYWMgKiAxODA7CiAgICBpZiAoZWwubmVlZGxlKSBlbC5uZWVkbGUuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAicm90YXRlKCIgKyBhbmcgKyAiIDEyMCAxMTgpIik7CiAgfQoKICBmdW5jdGlvbiBzZXRTY2hlbWF0aWMoc3RhdHVzLCBzaGVhcikgewogICAgaWYgKCFlbC5zY2hlbWF0aWMpIHJldHVybjsKICAgIGVsLnNjaGVtYXRpYy5zZXRBdHRyaWJ1dGUoImRhdGEtc3RhdHVzIiwgc3RhdHVzIHx8ICJpZGxlIik7CiAgICBlbC5zY2hlbWF0aWMuc2V0QXR0cmlidXRlKCJkYXRhLXNoZWFyIiwgc2hlYXIgPT09ICJkb3VibGUiID8gImRvdWJsZSIgOiAic2luZ2xlIik7CiAgfQoKICBmdW5jdGlvbiBzZXRCYXIobm9kZSwgcGN0KSB7CiAgICBpZiAoIW5vZGUpIHJldHVybjsKICAgIG5vZGUuc3R5bGUud2lkdGggPSBjbGFtcChwY3QsIDAsIDEwMCkgKyAiJSI7CiAgfQoKICBmdW5jdGlvbiBjYWxjdWxhdGUoc2Nyb2xsKSB7CiAgICByZWZyZXNoQXMoKTsKICAgIHZhciBzaSA9IHRvU0koKTsKICAgIHZhciBvayA9IHZhbGlkYXRlKHNpKTsKICAgIGlmIChlbC5yZXN1bHRzKSBlbC5yZXN1bHRzLmNsYXNzTGlzdC5yZW1vdmUoImJzaC1oaWRkZW4iKTsKICAgIHVwZGF0ZU1vZGVOb3RlKCk7CgogICAgaWYgKCFvaykgewogICAgICBzdGF0ZS5saXZlID0gZmFsc2U7CiAgICAgIGVsLnN0YXR1c1RpdGxlLnRleHRDb250ZW50ID0gIkNoZWNrIGlucHV0cyI7CiAgICAgIGVsLnN0YXR1c05vdGUudGV4dENvbnRlbnQgPSAiQ29ycmVjdCB0aGUgaGlnaGxpZ2h0ZWQgZmllbGRzLCB0aGVuIGNhbGN1bGF0ZSBhZ2Fpbi4gRW1wdHksIHplcm8sIG9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIjsKICAgICAgZWwuYmFubmVyLmNsYXNzTmFtZSA9ICJic2gtYmFubmVyIGJzaC1iYW5uZXItY2F1dGlvbiI7CiAgICAgIHNldEdhdWdlKDApOwogICAgICBzZXRTY2hlbWF0aWMoImlkbGUiLCBzaS5zaGVhcik7CiAgICAgIGlmIChzY3JvbGwpIHsKICAgICAgICB0cnkgeyBlbC5yZXN1bHRzLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICJzbW9vdGgiLCBibG9jazogIm5lYXJlc3QiIH0pOyB9IGNhdGNoIChlKSB7fQogICAgICB9CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQXMgPSBzaS5hc19tbTI7CiAgICB2YXIgbkJvbHRzID0gc2kubmJvbHRzOwogICAgdmFyIEZ0b3RhbCA9IHNpLkZfTjsKICAgIHZhciBGYiA9IEZ0b3RhbCAvIG5Cb2x0czsKICAgIHZhciB0YXUgPSBGYiAvIEFzOwogICAgdmFyIFN1dCA9IHNpLnN1dF9NUGE7CiAgICB2YXIgdGF1VSA9IHNpLmsgKiBTdXQ7CiAgICB2YXIgdGF1QSA9IHRhdVUgLyBzaS5uc2Y7CiAgICB2YXIgRm1heCA9IEFzICogdGF1VTsKICAgIHZhciBGYSA9IEFzICogdGF1QTsKICAgIHZhciBGam9pbnQgPSBGYSAqIG5Cb2x0czsKICAgIHZhciBzZkFsbG93ID0gRmEgLyBGYjsKICAgIHZhciBzZlVsdCA9IHRhdVUgLyB0YXU7CiAgICB2YXIgdXRpbCA9IChGYiAvIEZhKSAqIDEwMDsKCiAgICB2YXIgYWxlcnRzID0gW107CiAgICB2YXIgc3RhdHVzID0gInNhZmUiOwogICAgdmFyIHRpdGxlID0gIlNhZmUiOwogICAgdmFyIG5vdGUgPSAiQXBwbGllZCBzaGVhciBzdHJlc3MgaXMgYmVsb3cgdGhlIGFsbG93YWJsZSBzaGVhciBzdHJlbmd0aCBmb3IgdGhlIHNlbGVjdGVkIGRlc2lnbiBzYWZldHkgZmFjdG9yLiI7CgogICAgaWYgKHNpLnBsYW5lID09PSAidGhyZWFkIikgewogICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJvayIsIHRleHQ6ICJTaGVhciBpcyB0YWtlbiB0aHJvdWdoIHRoZSB0aHJlYWRlZCBzZWN0aW9uLiBFZmZlY3RpdmUgYXJlYSB1c2VzIHRoZSB0ZW5zaWxlIHN0cmVzcyBhcmVhIChJU08gODk4IC8gQVNNRSBCMS4xKSwgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRoZSBzaGFuay4iIH0pOwogICAgfSBlbHNlIHsKICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAib2siLCB0ZXh0OiAiU2hlYXIgaXMgdGFrZW4gdGhyb3VnaCB0aGUgYm9sdCBzaGFuay4gQXMgPSBcdTAzYzAgZFx1MDBiMiAvIDQgcGVyIHBsYW5lLiBDb25maXJtIHRoZSBzaGVhciBwbGFuZSBhY3R1YWxseSBtaXNzZXMgdGhlIHRocmVhZHMuIiB9KTsKICAgIH0KICAgIGlmIChzaS5zaGVhciA9PT0gImRvdWJsZSIpIHsKICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAib2siLCB0ZXh0OiAiRG91YmxlIHNoZWFyOiB0b3RhbCBzaGVhciBhcmVhID0gMiBcdTAwZDcgQXMuIEJvdGggcGxhbmVzIGFyZSBhc3N1bWVkIGVxdWFsbHkgbG9hZGVkLiIgfSk7CiAgICB9CiAgICBpZiAobkJvbHRzID4gMSkgewogICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJvayIsIHRleHQ6ICJTaGVhciBsb2FkIHBlciBib2x0ID0gdG90YWwgc2hlYXIgbG9hZCAvICIgKyBuQm9sdHMgKyAiIChlcXVhbCBzaGFyZSkuIEVjY2VudHJpYyBwYXR0ZXJucyBjYW4gb3ZlcmxvYWQgdGhlIG1vc3QgaGlnaGx5IGxvYWRlZCBmYXN0ZW5lci4iIH0pOwogICAgfQogICAgaWYgKHNpLmsgPCAwLjUgfHwgc2kuayA+IDAuNykgewogICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJ3YXJuIiwgdGV4dDogIlNoZWFyIHN0cmVuZ3RoIHJhdGlvIGsgPSAiICsgZm10KHNpLmssIDIpICsgIiBpcyBvdXRzaWRlIHRoZSBjb21tb24gMC414oCTMC43IHJhbmdlIHVzZWQgaW4gdGhpcyBGYXN0ZW5lciBTaGVhciBTdHJlbmd0aCBBbmFseXNpcyBUb29sLiIgfSk7CiAgICB9CiAgICBpZiAodGF1ID49IHRhdVUpIHsKICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAicmlzayIsIHRleHQ6ICJCb2x0IHNoZWFyIHN0cmVzcyBtZWV0cyBvciBleGNlZWRzIHVsdGltYXRlIHNoZWFyIHN0cmVuZ3RoLiBTaGVhciBmcmFjdHVyZSByaXNrIGlzIGhpZ2guIiB9KTsKICAgIH0gZWxzZSBpZiAodGF1ID49IDAuOTAgKiB0YXVVKSB7CiAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogIndhcm4iLCB0ZXh0OiAiQm9sdCBzaGVhciBzdHJlc3MgYXBwcm9hY2hlcyB1bHRpbWF0ZSBzaGVhciBzdHJlbmd0aCAoIiArIGZtdCh0YXUgLyB0YXVVICogMTAwLCAxKSArICIlIG9mIFx1MDNjNHUpLiIgfSk7CiAgICB9CgogICAgaWYgKHV0aWwgPiAxMDAgfHwgdGF1ID49IHRhdUEgfHwgRmIgPj0gRmEpIHsKICAgICAgc3RhdHVzID0gInJpc2siOwogICAgICB0aXRsZSA9ICJGYWlsdXJlIFJpc2siOwogICAgICBub3RlID0gIkFwcGxpZWQgc2hlYXIgc3RyZXNzIGV4Y2VlZHMgYm9sdCBzaGVhciBjYXBhY2l0eS4gSW5jcmVhc2UgZGlhbWV0ZXIgb3IgZ3JhZGUsIHVzZSBkb3VibGUgc2hlYXIsIGFkZCBib2x0cywgb3IgcmVkdWNlIHRoZSBsb2FkIGJlZm9yZSB1c2luZyB0aGlzIGNvbm5lY3Rpb24uIjsKICAgICAgYWxlcnRzLnVuc2hpZnQoeyB0eXBlOiAicmlzayIsIHRleHQ6ICJBcHBsaWVkIHNoZWFyIGxvYWQgcGVyIGJvbHQgIiArIGZvcm1hdEZvcmNlKEZiKS5wcmltYXJ5ICsgIiBleGNlZWRzIGFsbG93YWJsZSBzaGVhciBsb2FkICIgKyBmb3JtYXRGb3JjZShGYSkucHJpbWFyeSArICIuIiB9KTsKICAgIH0gZWxzZSBpZiAodXRpbCA+PSA4NSB8fCB0YXUgPj0gMC45MCAqIHRhdUEgfHwgc2ZBbGxvdyA8IDEuMTUpIHsKICAgICAgc3RhdHVzID0gImNhdXRpb24iOwogICAgICB0aXRsZSA9ICJXYXJuaW5nIjsKICAgICAgbm90ZSA9ICJTaGVhciBzdHJlc3MgYXBwcm9hY2hlcyB0aGUgYWxsb3dhYmxlIGxpbWl0LiBDb25maXJtIHRocmVhZCBsb2NhdGlvbiwgam9pbnQgZGVzaWduLCBhbmQgYXBwbGljYWJsZSBjb2RlcyBiZWZvcmUgYWNjZXB0aW5nIHRoaXMgQm9sdCBTaGVhciBTdHJlbmd0aCBDYWxjdWxhdG9yIHJlc3VsdC4iOwogICAgICBhbGVydHMudW5zaGlmdCh7IHR5cGU6ICJ3YXJuIiwgdGV4dDogIkxvYWQgdXRpbGl6YXRpb24gaXMgIiArIGZtdCh1dGlsLCAxKSArICIlIG9mIGFsbG93YWJsZSBzaGVhciBjYXBhY2l0eS4gUmVtYWluaW5nIG1hcmdpbiBpcyBzbWFsbC4iIH0pOwogICAgfSBlbHNlIHsKICAgICAgc3RhdHVzID0gInNhZmUiOwogICAgICB0aXRsZSA9ICJTYWZlIjsKICAgICAgbm90ZSA9ICJBcHBsaWVkIHNoZWFyIHN0cmVzcyBpcyBiZWxvdyBhbGxvd2FibGUgc2hlYXIgc3RyZW5ndGguIFNhZmV0eSBmYWN0b3IgdmVyc3VzIGFsbG93YWJsZSBsb2FkIGlzICIgKyBmbXQoc2ZBbGxvdywgMikgKyAiLiI7CiAgICAgIGFsZXJ0cy51bnNoaWZ0KHsgdHlwZTogIm9rIiwgdGV4dDogIlNoZWFyIHNhZmV0eSBzdGF0dXMgaXMgU2FmZS4gQWN0dWFsIHNhZmV0eSBmYWN0b3IgdnMgdWx0aW1hdGUgc2hlYXIgaXMgIiArIGZtdChzZlVsdCwgMikgKyAiIChcdTAzYzR1IC8gXHUwM2M0KS4iIH0pOwogICAgfQoKICAgIHZhciB0Rm10ID0gZm9ybWF0U3RyZXNzKHRhdSk7CiAgICB2YXIgZm1heEZtdCA9IGZvcm1hdEZvcmNlKEZtYXgpOwogICAgdmFyIGZhRm10ID0gZm9ybWF0Rm9yY2UoRmEpOwogICAgdmFyIGZiRm10ID0gZm9ybWF0Rm9yY2UoRmIpOwoKICAgIGVsLm91dFN0cmVzcy50ZXh0Q29udGVudCA9IHRGbXQucHJpbWFyeTsKICAgIGVsLm91dFN0cmVzc1N1Yi50ZXh0Q29udGVudCA9ICh0Rm10LnNlY29uZGFyeSA\/IHRGbXQuc2Vjb25kYXJ5ICsgIiAgXHUyMDE0ICAiIDogIiIpICsgIlx1MDNjNCA9IEYgLyBBcyI7CiAgICBlbC5vdXRGbWF4LnRleHRDb250ZW50ID0gZm1heEZtdC5wcmltYXJ5OwogICAgZWwub3V0Rm1heFN1Yi50ZXh0Q29udGVudCA9IGZtYXhGbXQuc2Vjb25kYXJ5IHx8ICJGbWF4ID0gQXMgXHUwMGQ3IFx1MDNjNHUiOwogICAgZWwub3V0RmEudGV4dENvbnRlbnQgPSBmYUZtdC5wcmltYXJ5OwogICAgZWwub3V0RmFTdWIudGV4dENvbnRlbnQgPSBmYUZtdC5zZWNvbmRhcnkgfHwgIkZhbGxvdyA9IEFzIFx1MDBkNyBcdTAzYzRhbGxvdyI7CiAgICBlbC5vdXRTZi50ZXh0Q29udGVudCA9IGZtdChzZkFsbG93LCAyKTsKICAgIGVsLm91dFNmU3ViLnRleHRDb250ZW50ID0gIkFsbG93YWJsZSBzaGVhciBsb2FkIC8gYXBwbGllZCBzaGVhciBsb2FkIHBlciBib2x0IjsKCiAgICBlbC5vdXRVdGlsLnRleHRDb250ZW50ID0gZm10KHV0aWwsIDEpICsgIiUgb2YgYWxsb3dhYmxlIjsKICAgIGVsLnV0aWxGaWxsLnN0eWxlLndpZHRoID0gY2xhbXAodXRpbCwgMCwgMTAwKSArICIlIjsKICAgIGVsLnV0aWxGaWxsLmNsYXNzTmFtZSA9ICJic2gtdXRpbC1maWxsIiArIChzdGF0dXMgPT09ICJyaXNrIiA\/ICIgYnNoLWlzLXJpc2siIDogc3RhdHVzID09PSAiY2F1dGlvbiIgPyAiIGJzaC1pcy1jYXV0aW9uIiA6ICIgYnNoLWlzLW9rIik7CgogICAgZWwub3V0QXMudGV4dENvbnRlbnQgPSBmb3JtYXRBcmVhKEFzKTsKICAgIGVsLm91dEFzTm90ZS50ZXh0Q29udGVudCA9IChzaS5wbGFuZSA9PT0gInRocmVhZCIgPyAidGhyZWFkZWQgc2VjdGlvbiIgOiAic2hhbmsiKSArIChzaS5uUGxhbmVzID09PSAyID8gIiBcdTAwZDcgMiBwbGFuZXMiIDogIiBcdTAwZDcgMSBwbGFuZSIpOwogICAgZWwub3V0RmIudGV4dENvbnRlbnQgPSBmYkZtdC5wcmltYXJ5OwogICAgZWwub3V0RmJOb3RlLnRleHRDb250ZW50ID0gbkJvbHRzID4gMSA\/ICJ0b3RhbCAiICsgZm9ybWF0Rm9yY2UoRnRvdGFsKS5wcmltYXJ5ICsgIiAvICIgKyBuQm9sdHMgOiAic2luZ2xlIGJvbHQiOwogICAgZWwub3V0VGF1VS50ZXh0Q29udGVudCA9IGZvcm1hdFN0cmVzcyh0YXVVKS5wcmltYXJ5OwogICAgZWwub3V0VGF1QS50ZXh0Q29udGVudCA9IGZvcm1hdFN0cmVzcyh0YXVBKS5wcmltYXJ5OwogICAgZWwub3V0Sm9pbnQudGV4dENvbnRlbnQgPSBmb3JtYXRGb3JjZShGam9pbnQpLnByaW1hcnk7CiAgICBlbC5vdXROdWx0LnRleHRDb250ZW50ID0gZm10KHNmVWx0LCAyKTsKCiAgICBpZiAoZWwuZ2F1Z2VSZWFkKSBlbC5nYXVnZVJlYWQudGV4dENvbnRlbnQgPSBmbXQoc2ZBbGxvdywgMik7CiAgICBpZiAoZWwuZ2F1Z2VOb3RlKSBlbC5nYXVnZU5vdGUudGV4dENvbnRlbnQgPSAidnMgZGVzaWduIGFsbG93YWJsZSAobiA9ICIgKyBmbXQoc2kubnNmLCAyKSArICIpIjsKICAgIHNldEdhdWdlKHNmQWxsb3cpOwoKICAgIGlmIChlbC5zY2hGb3JjZSkgZWwuc2NoRm9yY2UudGV4dENvbnRlbnQgPSBmYkZtdC5wcmltYXJ5OwogICAgaWYgKGVsLnNjaENhcHRpb24pIHsKICAgICAgZWwuc2NoQ2FwdGlvbi50ZXh0Q29udGVudCA9IHNpLnNoZWFyID09PSAiZG91YmxlIiA\/ICJEb3VibGUgc2hlYXIgIFx1MDBiNyAgMiBwbGFuZXMiIDogIlNpbmdsZSBzaGVhciAgXHUwMGI3ICAxIHBsYW5lIjsKICAgIH0KICAgIHNldFNjaGVtYXRpYyhzdGF0dXMgPT09ICJyaXNrIiA\/ICJyaXNrIiA6IHN0YXR1cyA9PT0gImNhdXRpb24iID8gImNhdXRpb24iIDogIm9rIiwgc2kuc2hlYXIpOwoKICAgIHZhciBzY2FsZSA9IE1hdGgubWF4KHRhdVUsIHRhdUEsIHRhdSwgMSk7CiAgICBzZXRCYXIoZWwuYmFyVGF1LCB0YXUgLyBzY2FsZSAqIDEwMCk7CiAgICBzZXRCYXIoZWwuYmFyVGEsIHRhdUEgLyBzY2FsZSAqIDEwMCk7CiAgICBzZXRCYXIoZWwuYmFyVHUsIHRhdVUgLyBzY2FsZSAqIDEwMCk7CiAgICBpZiAoZWwuYmFyVGF1VmFsKSBlbC5iYXJUYXVWYWwudGV4dENvbnRlbnQgPSB0Rm10LnByaW1hcnk7CiAgICBpZiAoZWwuYmFyVGFWYWwpIGVsLmJhclRhVmFsLnRleHRDb250ZW50ID0gZm9ybWF0U3RyZXNzKHRhdUEpLnByaW1hcnk7CiAgICBpZiAoZWwuYmFyVHVWYWwpIGVsLmJhclR1VmFsLnRleHRDb250ZW50ID0gZm9ybWF0U3RyZXNzKHRhdVUpLnByaW1hcnk7CiAgICBpZiAoZWwuYmFyVGF1KSB7CiAgICAgIGVsLmJhclRhdS5jbGFzc05hbWUgPSAiYnNoLWJhci1maWxsIiArIChzdGF0dXMgPT09ICJyaXNrIiA\/ICIgYnNoLWlzLXJpc2siIDogc3RhdHVzID09PSAiY2F1dGlvbiIgPyAiIGJzaC1pcy1jYXV0aW9uIiA6ICIgYnNoLWlzLW9rIik7CiAgICB9CgogICAgZWwuc3RhdHVzVGl0bGUudGV4dENvbnRlbnQgPSB0aXRsZTsKICAgIGVsLnN0YXR1c05vdGUudGV4dENvbnRlbnQgPSBub3RlOwogICAgZWwuYmFubmVyLmNsYXNzTmFtZSA9ICJic2gtYmFubmVyIGJzaC1iYW5uZXItIiArIChzdGF0dXMgPT09ICJzYWZlIiA\/ICJvayIgOiBzdGF0dXMgPT09ICJyaXNrIiA\/ICJyaXNrIiA6ICJjYXV0aW9uIik7CgogICAgZWwuYWxlcnRzLmlubmVySFRNTCA9ICIiOwogICAgYWxlcnRzLmZvckVhY2goZnVuY3Rpb24gKGEpIHsKICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBkaXYuY2xhc3NOYW1lID0gImJzaC1hbGVydCBic2gtYWxlcnQtIiArIChhLnR5cGUgPT09ICJyaXNrIiA\/ICJyaXNrIiA6IGEudHlwZSA9PT0gIm9rIiA\/ICJvayIgOiAid2FybiIpOwogICAgICBkaXYudGV4dENvbnRlbnQgPSBhLnRleHQ7CiAgICAgIGVsLmFsZXJ0cy5hcHBlbmRDaGlsZChkaXYpOwogICAgfSk7CgogICAgc3RhdGUubGl2ZSA9IHRydWU7CiAgICBpZiAoc2Nyb2xsKSB7CiAgICAgIHRyeSB7IGVsLmJhbm5lci5jbG9zZXN0KCIuYnNoLWNhcmQiKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAic21vb3RoIiwgYmxvY2s6ICJuZWFyZXN0IiB9KTsgfSBjYXRjaCAoZSkge30KICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uVGhyZWFkQ2hhbmdlKCkgewogICAgc3RhdGUuc2l6ZUlkID0gIiI7CiAgICBpZiAodGhyZWFkS2luZCgpICE9PSAiY3VzdG9tIikgc3VnZ2VzdFBpdGNoRnJvbURpYW1ldGVyKCk7CiAgICB1cGRhdGVVbml0TGFiZWxzKCk7CiAgICByZW5kZXJTaXplQ2hpcHMoKTsKICAgIHJlZnJlc2hBcygpOwogICAgaWYgKHN0YXRlLmxpdmUpIGNhbGN1bGF0ZShmYWxzZSk7CiAgfQoKICBmdW5jdGlvbiByZXNldEFsbCgpIHsKICAgIHN0YXRlLnVuaXQgPSAibWV0cmljIjsKICAgIHN0YXRlLnNpemVJZCA9IERFRkFVTFRTLnNpemU7CiAgICBzdGF0ZS5saXZlID0gZmFsc2U7CiAgICBlbC5tb2RlLnZhbHVlID0gREVGQVVMVFMubW9kZTsKICAgIGVsLnRocmVhZC52YWx1ZSA9IERFRkFVTFRTLnRocmVhZDsKICAgIGVsLnNoZWFyLnZhbHVlID0gREVGQVVMVFMuc2hlYXI7CiAgICBlbC5wbGFuZS52YWx1ZSA9IERFRkFVTFRTLnBsYW5lOwogICAgZWwuZC52YWx1ZSA9IFN0cmluZyhERUZBVUxUUy5kKTsKICAgIGVsLnAudmFsdWUgPSBTdHJpbmcoREVGQVVMVFMucCk7CiAgICBlbC5ncmFkZS52YWx1ZSA9IERFRkFVTFRTLmdyYWRlOwogICAgZWwuay52YWx1ZSA9IFN0cmluZyhERUZBVUxUUy5rKTsKICAgIGVsLm5zZi52YWx1ZSA9IFN0cmluZyhERUZBVUxUUy5uc2YpOwogICAgZWwubmJvbHRzLnZhbHVlID0gU3RyaW5nKERFRkFVTFRTLm5ib2x0cyk7CiAgICBlbC5mVW5pdC52YWx1ZSA9IERFRkFVTFRTLmZVbml0OwogICAgbGFzdEZVbml0ID0gREVGQVVMVFMuZlVuaXQ7CiAgICBlbC5GLnZhbHVlID0gU3RyaW5nKERFRkFVTFRTLkYpOwogICAgYXBwbHlHcmFkZSgpOwogICAgdXBkYXRlVW5pdExhYmVscygpOwogICAgdXBkYXRlTW9kZU5vdGUoKTsKICAgIHJlbmRlclNpemVDaGlwcygpOwogICAgcmVmcmVzaEFzKCk7CiAgICBjbGVhckVycnMoKTsKICAgIGVsLnJlc3VsdHMuY2xhc3NMaXN0LmFkZCgiYnNoLWhpZGRlbiIpOwogICAgc2V0R2F1Z2UoMCk7CiAgICBzZXRTY2hlbWF0aWMoImlkbGUiLCBERUZBVUxUUy5zaGVhcik7CiAgfQoKICBmdW5jdGlvbiBvblJvb3RDbGljayhlKSB7CiAgICB2YXIgYnRuID0gZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCA\/IGUudGFyZ2V0LmNsb3Nlc3QoImJ1dHRvbiIpIDogbnVsbDsKICAgIGlmICghYnRuIHx8ICFyb290LmNvbnRhaW5zKGJ0bikpIHJldHVybjsKICAgIGlmIChidG4uaWQgPT09ICJic2hCdG5NZXRyaWMiKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgc3dpdGNoVW5pdCgibWV0cmljIik7CiAgICB9IGVsc2UgaWYgKGJ0bi5pZCA9PT0gImJzaEJ0bkltcGVyaWFsIikgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHN3aXRjaFVuaXQoImltcGVyaWFsIik7CiAgICB9IGVsc2UgaWYgKGJ0bi5pZCA9PT0gImJzaEJ0blJlc2V0IikgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHJlc2V0QWxsKCk7CiAgICB9IGVsc2UgaWYgKGJ0bi5pZCA9PT0gImJzaEJ0bkNhbGN1bGF0ZSIpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBjYWxjdWxhdGUodHJ1ZSk7CiAgICB9CiAgfQoKICByb290LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgb25Sb290Q2xpY2spOwogIGlmIChlbC5idG5DYWxjKSBlbC5idG5DYWxjLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgeyBjYWxjdWxhdGUodHJ1ZSk7IH0pOwoKICBpZiAoZWwuZ3JhZGUpIGVsLmdyYWRlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uICgpIHsKICAgIGlmIChlbC5ncmFkZS52YWx1ZSA9PT0gImN1c3RvbSIpIGVsLnN1dC5yZWFkT25seSA9IGZhbHNlOwogICAgZWxzZSBhcHBseUdyYWRlKCk7CiAgICBpZiAoc3RhdGUubGl2ZSkgY2FsY3VsYXRlKGZhbHNlKTsKICB9KTsKCiAgaWYgKGVsLnN1dCkgZWwuc3V0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24gKCkgewogICAgbWFya0N1c3RvbUdyYWRlKCk7CiAgICBpZiAoc3RhdGUubGl2ZSkgY2FsY3VsYXRlKGZhbHNlKTsKICB9KTsKCiAgaWYgKGVsLmQpIGVsLmQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbiAoKSB7CiAgICBzdGF0ZS5zaXplSWQgPSAiIjsKICAgIHBhaW50Q2hpcHMoKTsKICAgIHN1Z2dlc3RQaXRjaEZyb21EaWFtZXRlcigpOwogICAgcmVmcmVzaEFzKCk7CiAgICBpZiAoc3RhdGUubGl2ZSkgY2FsY3VsYXRlKGZhbHNlKTsKICB9KTsKCiAgaWYgKGVsLnApIGVsLnAuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbiAoKSB7CiAgICBzdGF0ZS5zaXplSWQgPSAiIjsKICAgIHBhaW50Q2hpcHMoKTsKICAgIHJlZnJlc2hBcygpOwogICAgaWYgKHN0YXRlLmxpdmUpIGNhbGN1bGF0ZShmYWxzZSk7CiAgfSk7CgogIFsiayIsICJGIiwgIm5zZiIsICJuYm9sdHMiXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgIGlmICghZWxba2V5XSkgcmV0dXJuOwogICAgZWxba2V5XS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHN0YXRlLmxpdmUpIGNhbGN1bGF0ZShmYWxzZSk7CiAgICB9KTsKICB9KTsKCiAgaWYgKGVsLnRocmVhZCkgZWwudGhyZWFkLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIG9uVGhyZWFkQ2hhbmdlKTsKICBpZiAoZWwuc2hlYXIpIGVsLnNoZWFyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uICgpIHsKICAgIHJlZnJlc2hBcygpOwogICAgaWYgKHN0YXRlLmxpdmUpIGNhbGN1bGF0ZShmYWxzZSk7CiAgfSk7CiAgaWYgKGVsLnBsYW5lKSBlbC5wbGFuZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbiAoKSB7CiAgICByZWZyZXNoQXMoKTsKICAgIGlmIChzdGF0ZS5saXZlKSBjYWxjdWxhdGUoZmFsc2UpOwogIH0pOwogIGlmIChlbC5tb2RlKSBlbC5tb2RlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uICgpIHsKICAgIHVwZGF0ZU1vZGVOb3RlKCk7CiAgICBpZiAoc3RhdGUubGl2ZSkgY2FsY3VsYXRlKGZhbHNlKTsKICB9KTsKCiAgaWYgKGVsLmZVbml0KSBlbC5mVW5pdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbiAoKSB7CiAgICB2YXIgbmV4dCA9IGVsLmZVbml0LnZhbHVlOwogICAgaWYgKG5leHQgPT09IGxhc3RGVW5pdCkgcmV0dXJuOwogICAgdmFyIEYgPSBudW0oZWwuRik7CiAgICBlbC5mVW5pdC52YWx1ZSA9IGxhc3RGVW5pdDsKICAgIGlmIChpc0Zpbml0ZShGKSkgZWwuRi52YWx1ZSA9IHJvdW5kU21hcnQoY29udmVydEZvcmNlVW5pdFZhbHVlKEYsIGxhc3RGVW5pdCwgbmV4dCkpOwogICAgZWwuZlVuaXQudmFsdWUgPSBuZXh0OwogICAgbGFzdEZVbml0ID0gbmV4dDsKICAgIGlmIChzdGF0ZS5saXZlKSBjYWxjdWxhdGUoZmFsc2UpOwogIH0pOwoKICByb290LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbiAoZSkgewogICAgaWYgKGUua2V5ID09PSAiRW50ZXIiICYmIGUudGFyZ2V0ICYmIGUudGFyZ2V0LnRhZ05hbWUgPT09ICJJTlBVVCIpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBjYWxjdWxhdGUodHJ1ZSk7CiAgICB9CiAgfSk7CgogIHdpbmRvdy5ic2hTd2l0Y2hVbml0ID0gc3dpdGNoVW5pdDsKICB3aW5kb3cuYnNoUmVzZXQgPSByZXNldEFsbDsKICB3aW5kb3cuYnNoQ2FsY3VsYXRlID0gZnVuY3Rpb24gKCkgeyBjYWxjdWxhdGUodHJ1ZSk7IH07CgogIHVwZGF0ZVVuaXRMYWJlbHMoKTsKICB1cGRhdGVNb2RlTm90ZSgpOwogIHJlbmRlclNpemVDaGlwcygpOwogIGFwcGx5R3JhZGUoKTsKICByZWZyZXNoQXMoKTsKfSkoKTsK<\/textarea>\n<script id=\"bsh-boot-script\" type=\"text\/javascript\" data-no-minify=\"1\" data-no-defer=\"1\" data-cfasync=\"false\">\n(function(){\nfunction boot(){\nif(window.bshCalculate){return;}\nvar el=document.getElementById(\"bsh-js-b64\");\nif(!el){return;}\nvar code=el.value;\nif(!code){code=el.textContent;}\nif(!code){return;}\ncode=code.replace(\/\\s\/g,\"\");\nvar js=atob(code);\nvar s=document.createElement(\"script\");\ns.type=\"text\/javascript\";\ns.setAttribute(\"data-no-minify\",\"1\");\ns.setAttribute(\"data-cfasync\",\"false\");\ns.text=js;\nvar p=document.body;\nif(!p){p=document.getElementsByTagName(\"head\")[0];}\nif(p){p.appendChild(s);}\n}\nwindow.bshBoot=boot;\nif(document.readyState===\"loading\"){document.addEventListener(\"DOMContentLoaded\",boot);}\nelse{boot();}\n})();\n<\/script>\n\n<\/div>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>The Bolt Shear Strength Calculator is a practical engineering tool designed to evaluate bolt shear capacity, shear stress, and connection safety under different loading conditions&#8230;.<\/p>","protected":false},"author":2,"featured_media":24690,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8520],"tags":[8606,8607,8603,8605],"class_list":["post-24688","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-bolt-capacity","tag-bolt-shear","tag-fastener-design","tag-shear-strength","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Bolt-Shear-Strength-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/comments?post=24688"}],"version-history":[{"count":1,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24688\/revisions"}],"predecessor-version":[{"id":24689,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24688\/revisions\/24689"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media\/24690"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media?parent=24688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/categories?post=24688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/tags?post=24688"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}