{"id":5413,"date":"2025-09-06T09:38:53","date_gmt":"2025-09-06T07:38:53","guid":{"rendered":"http:\/\/tom.feltes@badminton.lu"},"modified":"2026-01-30T13:34:43","modified_gmt":"2026-01-30T12:34:43","password":"","slug":"r01-x01-volants-agrees","status":"publish","type":"docs","link":"https:\/\/badminton.lu\/web\/rules\/r01-x01-volants-agrees\/","title":{"rendered":"R01-X01-Volants agrees"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-small-visibility fusion-no-large-visibility fusion-sticky-container\" style=\"--awb-border-color:#eaecf0;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-sticky-background-color:rgba(0,38,61,0) !important;--awb-flex-wrap:wrap;\" data-transition-offset=\"0\" data-sticky-offset=\"180px\" data-scroll-offset=\"0\" data-sticky-medium-visibility=\"1\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-align-content-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 awb-sticky awb-sticky-medium fusion-flex-column fusion-flex-align-self-flex-start fusion-no-small-visibility fusion-no-large-visibility\" style=\"--awb-padding-top:10px;--awb-padding-bottom:10px;--awb-bg-size:cover;--awb-border-color:#eaecf0;--awb-border-style:solid;--awb-width-large:100%;--awb-margin-top-large:-68px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><a class=\"fb-icon-element-1 fb-icon-element fontawesome-icon fa-indent fas circle-yes fusion-no-small-visibility fusion-no-large-visibility fa-flip-horizontal fusion-link\" style=\"--awb-iconcolor:#475467;--awb-iconcolor-hover:var(--awb-color8);--awb-circlecolor:#eaecf0;--awb-circlecolor-hover:var(--awb-color1);--awb-circlebordercolor:var(--awb-color1);--awb-circlebordercolor-hover:var(--awb-color1);--awb-circlebordersize:0px;--awb-font-size:17.6px;--awb-width:35.2px;--awb-height:35.2px;--awb-line-height:35.2px;--awb-align-self:flex-end;--awb-margin-top:0px;--awb-margin-right:-8px;--awb-margin-bottom:0px;--awb-margin-left:0px;\" href=\"#\" target=\"_self\" aria-label=\"Link to #\" id=\"toc\"><\/a><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 awb-sticky awb-sticky-small awb-sticky-medium awb-sticky-large fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-flex-start fusion-display-normal-only\" style=\"--awb-padding-top:10px;--awb-padding-bottom:10px;--awb-bg-size:cover;--awb-border-color:#eaecf0;--awb-border-top:1px;--awb-border-bottom:1px;--awb-border-style:solid;--awb-width-large:100%;--awb-margin-top-large:-76.5px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><a class=\"fb-icon-element-2 fb-icon-element fontawesome-icon circle-yes fusion-no-small-visibility fusion-no-large-visibility fa-flip-horizontal fusion-link\" style=\"--awb-iconcolor:rgba(71,84,103,0);--awb-iconcolor-hover:var(--awb-color8);--awb-circlecolor:rgba(234,236,240,0.07);--awb-circlecolor-hover:var(--awb-color1);--awb-circlebordercolor:var(--awb-color1);--awb-circlebordercolor-hover:var(--awb-color1);--awb-circlebordersize:0px;--awb-font-size:17.6px;--awb-width:35.2px;--awb-height:35.2px;--awb-line-height:35.2px;--awb-align-self:flex-end;--awb-margin-top:0px;--awb-margin-right:-8px;--awb-margin-bottom:0px;--awb-margin-left:0px;\" href=\"#\" target=\"_self\" aria-label=\"Link to #\" id=\"toc\"><\/a><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-scroll-devices=\"small-visibility,medium-visibility,large-visibility\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><style>\n  #inline-page-search-focus {\n    accent-color: #E30613;\n  }\n\n  #inline-page-search label[for=\"inline-page-search-input\"] {\n    color: #005E88;\n  }\n<\/style>\n\n<div id=\"inline-page-search\" class=\"no-hide\" style=\"margin:1rem 0; border:1px solid #e5e7eb; border-radius:12px; padding:.75rem 1rem;\">\n  <label for=\"inline-page-search-input\" style=\"display:block; font-weight:600; margin-bottom:.5rem;\">\n    Search page\n  <\/label>\n  <input id=\"inline-page-search-input\" type=\"search\" placeholder=\"Search\u2026\"\n         style=\"width:100%; padding:.6rem .8rem; border:1px solid #d1d5db; border-radius:10px; font-size:1rem;\">\n  <div style=\"display:flex; gap:.75rem; align-items:center; margin-top:.6rem; flex-wrap:wrap;\">\n    <label style=\"display:inline-flex; gap:.4rem; align-items:center; cursor:pointer;\">\n      <input id=\"inline-page-search-focus\" type=\"checkbox\" checked>\n      <span>show results only<\/span>\n    <\/label>\n    <span id=\"inline-page-search-stats\" style=\"margin-left:auto; color:#6b7280; font-size:.9rem;\">0 results<\/span>\n  <\/div>\n<\/div>\n\n<style>\n  mark[data-inline-search-hit] {\n    background: #fff59d;\n    padding: 0 .1em;\n    border-radius: .15em;\n  }\n  .inline-search-hidden { display: none !important; }\n  .no-hide { display: block !important; }\n<\/style>\n\n<script>\n(function(){\n  const containersByPriority = [\n    '#betterdocs-single-content',\n    '.entry-content',\n    'article','main','.site-content'\n  ];\n  let root = containersByPriority.map(q => document.querySelector(q)).find(Boolean) || document.body;\n\n  const uiShell = document.getElementById('inline-page-search');\n  if (root.contains(uiShell)) {\n    const alt = containersByPriority\n      .map(q => document.querySelector(q))\n      .filter(Boolean)\n      .find(el => el !== root && !el.contains(uiShell));\n    if (alt) root = alt;\n  }\n\n  const blockSelectors = [\n    'p','li','dt','dd','blockquote','pre','code','figure',\n    'table','thead','tbody','tfoot','tr','th','td',\n    'section','article','aside','div','.wp-block','ul','ol'\n  ].join(',');\n  const headingSel = 'h1,h2,h3,h4,h5,h6';\n  const levelOf = h => parseInt(h.tagName.substring(1), 10);\n\n  function resetVisibility(){\n    root.querySelectorAll('.inline-search-hidden').forEach(el => el.classList.remove('inline-search-hidden'));\n  }\n\n  function unhide(el){\n        if (!el) return;\n\n    \/\/ 1) das Element selbst zeigen (UI-Shell ausnehmen)\n    if (!uiShell.contains(el)) el.classList.remove('inline-search-hidden');\n\n    \/\/ 2) alle versteckten Nachfahren im Abschnitt zeigen (UI-Shell ausnehmen)\n    el.querySelectorAll('.inline-search-hidden').forEach(child => {\n      if (!uiShell.contains(child)) child.classList.remove('inline-search-hidden');\n    });\n\n    \/\/ 3) Elternkette zeigen (bis <body>, UI-Shell ausnehmen)\n    let p = el.parentElement;\n    while (p && p !== document.body) {\n      if (!uiShell.contains(p)) p.classList.remove('inline-search-hidden');\n      p = p.parentElement;\n    }\n  }\n\n  function unhideSectionForHeading(h){\n    if (!h) return;\n    const myLevel = levelOf(h);\n    unhide(h);\n    let node = h.nextElementSibling;\n    while (node) {\n      if (node.matches && node.matches(headingSel)) {\n        const lvl = levelOf(node);\n        if (lvl <= myLevel) break;\n      }\n      unhide(node);\n      node = node.nextElementSibling;\n    }\n  }\n\n  \/\/ Ersetzt deine alte hideNonMatches()\n  function hideNonMatchesKeepingMatchedSections(){\n    resetVisibility();\n    const hits = Array.from(root.querySelectorAll('mark[data-inline-search-hit]'));\n    if (hits.length === 0) return;\n\n    \/\/ alles ohne Treffer verstecken\n    root.querySelectorAll(blockSelectors + ',' + headingSel).forEach(el=>{\n      if (el === uiShell || el.contains(uiShell) || uiShell.contains(el) || el.classList.contains('no-hide')) return;\n      if (el.matches('table, thead, tbody, tfoot, tr, th, td')) {\n        const tbl = el.closest('table');\n        if (tbl && tbl.querySelector('mark[data-inline-search-hit]')) return;\n      }\n      if (el.querySelector && el.querySelector('mark[data-inline-search-hit]')) return;\n      el.classList.add('inline-search-hidden');\n    });\n\n    \/\/ Abschnitte der Treffer-Headings wieder einblenden\n    const matchedHeadings = Array.from(root.querySelectorAll(headingSel))\n      .filter(h => h.querySelector('mark[data-inline-search-hit]'));\n    matchedHeadings.forEach(unhideSectionForHeading);\n\n    hits.forEach(m => {\n      const inHeading = m.closest(headingSel);\n      if (inHeading) {\n        \/\/ Abschnitt des Titels wird bereits von unhideSectionForHeading gezeigt\n        \/\/ Sicherheitshalber den Titel selbst sichtbar machen\n        unhide(inHeading);\n      } else {\n        \/\/ wie gehabt: Inhalt + passende \u00dcberschriften einblenden\n        unhide(m.closest(blockSelectors) || m.parentElement);\n        unhideHeadingContextForNode(m);\n      }\n    });\n  }\n\n  const ui = {\n    input: document.getElementById('inline-page-search-input'),\n    focus: document.getElementById('inline-page-search-focus'),\n    stats: document.getElementById('inline-page-search-stats'),\n    shell: uiShell\n  };\n\n  function collectTextNodes(node){\n    const nodes = [];\n    const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, {\n      acceptNode(n){\n        const val = n.nodeValue;\n        if(!val || !val.trim()) return NodeFilter.FILTER_REJECT;\n        const p = n.parentElement;\n        if(!p) return NodeFilter.FILTER_REJECT;\n        const tag = p.tagName;\n        if(tag === 'SCRIPT' || tag === 'STYLE' || tag === 'NOSCRIPT') return NodeFilter.FILTER_REJECT;\n        if(ui.shell.contains(p)) return NodeFilter.FILTER_REJECT;\n        return NodeFilter.FILTER_ACCEPT;\n      }\n    });\n    let curr;\n    while(curr = walker.nextNode()) nodes.push(curr);\n    return nodes;\n  }\n\n  function clearHighlights(){\n    root.querySelectorAll('mark[data-inline-search-hit]').forEach(mark=>{\n      const parent = mark.parentNode;\n      if(!parent) return;\n      parent.replaceChild(document.createTextNode(mark.textContent), mark);\n      parent.normalize();\n    });\n  }\n\n  function highlight(term){\n    if(!term) return 0;\n    const needle = term.toLocaleLowerCase();\n    if(!needle) return 0;\n    let total = 0;\n    for(const tn of collectTextNodes(root)){\n      const original = tn.nodeValue;\n      const lower = original.toLocaleLowerCase();\n      let i = 0, last = 0, local = 0;\n      const frag = document.createDocumentFragment();\n      while(true){\n        const pos = lower.indexOf(needle, i);\n        if(pos === -1) break;\n        if(pos > last) frag.appendChild(document.createTextNode(original.slice(last, pos)));\n        const mark = document.createElement('mark');\n        mark.setAttribute('data-inline-search-hit','');\n        mark.textContent = original.slice(pos, pos + term.length);\n        frag.appendChild(mark);\n        local++; total++;\n        i = pos + 1;\n        last = pos + term.length;\n      }\n      if(local === 0) continue;\n      if(last < original.length) frag.appendChild(document.createTextNode(original.slice(last)));\n      tn.parentNode.replaceChild(frag, tn);\n    }\n    return total;\n  }\n\n  function updateStats(n){ ui.stats.textContent = n+\" results\"; }\n\n  function runSearch(){\n    clearHighlights();\n    resetVisibility();\n    const val=ui.input.value.trim();\n    if(!val){ updateStats(0); return; }\n    const hits=highlight(val);\n    if(hits){\n      if(ui.focus.checked){ hideNonMatchesKeepingMatchedSections(); }\n    }\n    updateStats(hits);\n  }\n\n  ui.input.addEventListener('input', runSearch);\n  ui.focus.addEventListener('change', runSearch);\n\n  \/\/ NEU: Falls ein Treffer nicht im Titel steht \u2014 passende \u00dcberschrift(en) einblenden\n  function unhideHeadingContextForNode(node){\n    const anchor = (node.closest && node.closest(blockSelectors+','+headingSel)) || node;\n    let found = null;\n\n    \/\/ 1) N\u00e4chste vorherige \u00dcberschrift suchen\n    let sib = anchor.previousElementSibling;\n    while (!found && sib) {\n      if (sib.matches && sib.matches(headingSel)) found = sib;\n      sib = sib.previousElementSibling;\n    }\n\n    \/\/ 2) Wenn keine: nach oben gehen und dort vorherige \u00dcberschrift suchen\n    let parent = anchor.parentElement;\n    while (!found && parent && parent !== document.body && parent !== root) {\n      let ps = parent.previousElementSibling;\n      while (!found && ps) {\n        if (ps.matches && ps.matches(headingSel)) found = ps;\n        ps = ps.previousElementSibling;\n      }\n      parent = parent.parentElement;\n    }\n\n    if (found) {\n      unhide(found);\n\n      \/\/ 3) \u00dcbergeordnete \u00dcberschriften (h\u00f6here Ebene) ebenfalls zeigen\n      let currentLevel = levelOf(found);\n      let walker = found.previousElementSibling;\n      while (walker) {\n        if (walker.matches && walker.matches(headingSel)) {\n          const lvl = levelOf(walker);\n          if (lvl < currentLevel) {\n            unhide(walker);\n            currentLevel = lvl;\n          }\n        }\n        walker = walker.previousElementSibling;\n      }\n    }\n  }\n\n})();\n<\/script><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><\/div><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last\" style=\"--awb-bg-size:cover;--awb-margin-bottom:0px;width:100%;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\"><div class=\"fusion-clearfix\"><\/div><\/div><\/div><div class=\"fusion-text fusion-text-1\"><\/div><\/p>\n\n\n<p><em><strong>par le comit\u00e9 central en vertu du point 4 du r\u00e8glement I \u00ab G\u00e9n\u00e9ralit\u00e9s \u00bb<\/strong><\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Plumes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>YONEX AS 20<\/li>\n\n\n\n<li>YONEX AS 30<\/li>\n\n\n\n<li>YONEX AS 50<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VICTOR Champion<\/li>\n\n\n\n<li>VICTOR Service<\/li>\n\n\n\n<li>VICTOR Nr.1<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>INFLIGHT Premium Plus<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JINQUE AAA<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Plastic<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>YONEX MAVIS 350<\/li>\n\n\n\n<li>YONEX MAVIS 500<\/li>\n\n\n\n<li>YONEX MAVIS 2000<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>par le comit\u00e9 central en vertu du point 4 du  [&#8230;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[129],"doc_tag":[],"class_list":["post-5413","docs","type-docs","status-publish","hentry","doc_category-regulations"],"year_month":"2026-04","word_count":3360,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"Tom Feltes","author_nicename":"tom-feltesbadminton-lu","author_url":"https:\/\/badminton.lu\/web\/author\/tom-feltesbadminton-lu\/"},"doc_category_info":[{"term_name":"Regulations","term_url":"https:\/\/badminton.lu\/web\/docs-category\/regulations\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/docs\/5413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/comments?post=5413"}],"version-history":[{"count":1,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/docs\/5413\/revisions"}],"predecessor-version":[{"id":5580,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/docs\/5413\/revisions\/5580"}],"wp:attachment":[{"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/media?parent=5413"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/doc_category?post=5413"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/badminton.lu\/web\/wp-json\/wp\/v2\/doc_tag?post=5413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}