{"id":42471,"date":"2026-08-11T23:34:07","date_gmt":"2026-08-11T21:34:07","guid":{"rendered":"https:\/\/www.czechcyclingfederation.com\/?page_id=42471"},"modified":"2026-08-16T23:49:33","modified_gmt":"2026-08-16T21:49:33","slug":"drahove-rekordy-2026","status":"publish","type":"page","link":"https:\/\/www.czechcyclingfederation.com\/en\/drahove-rekordy-2026\/","title":{"rendered":"Dr\u00e1hov\u00e9 rekordy 2026"},"content":{"rendered":"<!-- ============================================================= -->\n<!--  REKORDY \u010cR \u2013 DR\u00c1HOV\u00c1 CYKLISTIKA                              -->\n<!--  Vlo\u017ete cel\u00fd tento blok do WordPressu jako blok \"Vlastn\u00ed HTML\".-->\n<!--  Ve\u0159ejnost vid\u00ed jen tabulku + filtry. P\u0159ihl\u00e1\u0161en\u00fd admin uvid\u00ed  -->\n<!--  nav\u00edc panel pro p\u0159id\u00e1v\u00e1n\u00ed rekord\u016f, import Excelu a export.    -->\n<!-- ============================================================= -->\n<div class=\"dcr\" id=\"dcr-app\">\n  <div class=\"dcr__inner\">\n\n    <header class=\"dcr-hero\">\n      <div class=\"dcr-hero__line\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 1200 40\" preserveAspectRatio=\"none\">\n          <path d=\"M0 30 C 220 30, 260 8, 480 8 L 1200 8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/>\n          <path d=\"M0 36 C 220 36, 260 16, 480 16 L 1200 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-dasharray=\"6 8\" opacity=\".55\"\/>\n        <\/svg>\n      <\/div>\n      <p class=\"dcr-hero__eyebrow\">\u010cesk\u00fd svaz cyklistiky<\/p>\n      <h2 class=\"dcr-hero__title\">Rekordy \u010cR<span> \u00b7 dr\u00e1hov\u00e1 cyklistika<\/span><\/h2>\n      <p class=\"dcr-hero__meta\">Platn\u00e9 k&nbsp;<strong id=\"dcr-valid\">26.&nbsp;03.&nbsp;2026<\/strong><\/p>\n    <\/header>\n\n    <div class=\"dcr-toolbar\" role=\"search\">\n      <div class=\"dcr-field dcr-field--search\">\n        <label for=\"dcr-q\">Hledat<\/label>\n        <input type=\"text\" id=\"dcr-q\" placeholder=\"Jm\u00e9no, klub, m\u00edsto, \u010das\u2026\" autocomplete=\"off\">\n      <\/div>\n      <div class=\"dcr-field\">\n        <label for=\"dcr-gender\">Pohlav\u00ed<\/label>\n        <select id=\"dcr-gender\"><option value=\"\">V\u0161e<\/option><\/select>\n      <\/div>\n      <div class=\"dcr-field\">\n        <label for=\"dcr-age\">Kategorie<\/label>\n        <select id=\"dcr-age\"><option value=\"\">V\u0161e<\/option><\/select>\n      <\/div>\n      <div class=\"dcr-field\">\n        <label for=\"dcr-track\">Dr\u00e1ha<\/label>\n        <select id=\"dcr-track\"><option value=\"\">V\u0161e<\/option><\/select>\n      <\/div>\n      <div class=\"dcr-field\">\n        <label for=\"dcr-disc\">Discipl\u00edna<\/label>\n        <select id=\"dcr-disc\"><option value=\"\">V\u0161e<\/option><\/select>\n      <\/div>\n      <button type=\"button\" class=\"dcr-reset\" id=\"dcr-reset\">Zru\u0161it filtry<\/button>\n    <\/div>\n\n    <p class=\"dcr-count\" id=\"dcr-count\" aria-live=\"polite\"><\/p>\n\n    <div id=\"dcr-body\" class=\"dcr-body\"><\/div>\n\n    <p class=\"dcr-empty\" id=\"dcr-empty\" hidden>\u017d\u00e1dn\u00fd rekord neodpov\u00edd\u00e1 zad\u00e1n\u00ed. Zkuste zru\u0161it n\u011bkter\u00fd filtr.<\/p>\n\n    <footer class=\"dcr-foot\">\n      <span>Zpracoval: Richard Kratochv\u00edl<\/span>\n      <span>Zdroj dat: \u010cesk\u00fd svaz cyklistiky<\/span>\n    <\/footer>\n\n    <!-- ================= ADMIN (jen pro p\u0159ihl\u00e1\u0161en\u00e9) ================= -->\n    <section class=\"dcr-admin\" id=\"dcr-admin\" hidden>\n      <button type=\"button\" class=\"dcr-admin__toggle\" id=\"dcr-admin-toggle\" aria-expanded=\"false\">\n        <span>Spr\u00e1va rekord\u016f<\/span><small>viditeln\u00e9 jen pro p\u0159ihl\u00e1\u0161en\u00e9<\/small>\n      <\/button>\n\n      <div class=\"dcr-admin__body\" id=\"dcr-admin-body\" hidden>\n\n        <div class=\"dcr-admin__card\">\n          <h3 id=\"dcr-form-title\">P\u0159idat rekord<\/h3>\n          <p class=\"dcr-admin__hint\">Dru\u017estva: \u010dleny odd\u011blte \u010d\u00e1rkou. Datum ve tvaru <code>DD.MM.RRRR<\/code>. Zm\u011bny se hned prom\u00edtnou v n\u00e1hledu naho\u0159e; nezapome\u0148te je ulo\u017eit tla\u010d\u00edtkem <em>Zkop\u00edrovat k\u00f3d<\/em> a vlo\u017eit do WordPressu.<\/p>\n          <div class=\"dcr-admin__grid\">\n            <div class=\"dcr-af\"><label>Kategorie<\/label><input id=\"i-cat\" list=\"dl-cat\" placeholder=\"MU\u017dI, \u017dENY, JUNIO\u0158I\u2026\"><\/div>\n            <div class=\"dcr-af\"><label>Dr\u00e1ha<\/label><select id=\"i-track\"><option>Bez rozli\u0161en\u00ed<\/option><option>Otev\u0159en\u00e1<\/option><option>Kryt\u00e1<\/option><\/select><\/div>\n            <div class=\"dcr-af dcr-af--2\"><label>Discipl\u00edna<\/label><input id=\"i-disc\" list=\"dl-disc\" placeholder=\"nap\u0159. 200m letm\u00fd start\"><\/div>\n            <div class=\"dcr-af dcr-af--2\"><label>Z\u00e1vodn\u00edk \/ z\u00e1vodnice<\/label><input id=\"i-ath\" placeholder=\"Jm\u00e9no P\u0158\u00cdJMEN\u00cd\"><\/div>\n            <div class=\"dcr-af dcr-af--2\"><label>Klub<\/label><input id=\"i-club\" placeholder=\"ASO DUKLA Brno\"><\/div>\n            <div class=\"dcr-af dcr-af--full\"><label>\u010clenov\u00e9 dru\u017estva (nepovinn\u00e9, odd\u011blte \u010d\u00e1rkou)<\/label><input id=\"i-mem\" placeholder=\"Jan NOV\u00c1K, Petr SVOBODA\"><\/div>\n            <div class=\"dcr-af\"><label>V\u00fdkon \/ \u010das<\/label><input id=\"i-res\" placeholder=\"9,496 sec\"><\/div>\n            <div class=\"dcr-af\"><label>Datum<\/label><input id=\"i-date\" placeholder=\"03.02.2026\"><\/div>\n            <div class=\"dcr-af dcr-af--2\"><label>M\u00edsto<\/label><input id=\"i-place\" placeholder=\"Konya \u2013 Turecko\"><\/div>\n          <\/div>\n          <datalist id=\"dl-cat\"><\/datalist>\n          <datalist id=\"dl-disc\"><\/datalist>\n          <div class=\"dcr-admin__row\">\n            <button class=\"dcr-btn\" id=\"btn-save\">P\u0159idat rekord<\/button>\n            <button class=\"dcr-btn dcr-btn--ghost\" id=\"btn-cancel\" style=\"display:none\">Zru\u0161it \u00fapravu<\/button>\n            <span class=\"dcr-admin__msg\" id=\"form-msg\"><\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"dcr-admin__card\">\n          <h3>Import z Excelu<\/h3>\n          <p class=\"dcr-admin__hint\">Nahrajte tabulku ve stejn\u00e9m form\u00e1tu jako <code>Tabulka-2026.xlsx<\/code>. Import je \u201ebest effort\u201c \u2013 po nahr\u00e1n\u00ed data zkontrolujte. Nahrad\u00ed cel\u00fd aktu\u00e1ln\u00ed seznam.<\/p>\n          <div class=\"dcr-admin__row\">\n            <input type=\"file\" id=\"i-file\" accept=\".xlsx,.xls\">\n            <button class=\"dcr-btn dcr-btn--ghost\" id=\"btn-import\">Nahr\u00e1t a nahradit<\/button>\n            <span class=\"dcr-admin__msg\" id=\"imp-msg\"><\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"dcr-admin__card\">\n          <h3>Ulo\u017eit do WordPressu<\/h3>\n          <p class=\"dcr-admin__hint\">Vygeneruje aktualizovan\u00fd blok \u201eVlastn\u00ed HTML\u201c se v\u0161emi zm\u011bnami. Zkop\u00edrujte a nahra\u010fte j\u00edm tento blok ve WordPressu.<\/p>\n          <div class=\"dcr-admin__row\">\n            <button class=\"dcr-btn\" id=\"btn-copy\">Zkop\u00edrovat k\u00f3d<\/button>\n            <button class=\"dcr-btn dcr-btn--ghost\" id=\"btn-dl-html\">St\u00e1hnout .html<\/button>\n            <button class=\"dcr-btn dcr-btn--ghost\" id=\"btn-dl-json\">St\u00e1hnout JSON<\/button>\n            <span class=\"dcr-admin__msg\" id=\"exp-msg\"><\/span>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/section>\n  <\/div>\n<\/div>\n\n<style>\n.dcr{\n  --blue-900:#003865; --blue-700:#0060a8; --blue-500:#00a3e0; --red:#e4002b;\n  --ink:#132433; --ink-soft:#5b6b78; --line:#dde6ee; --paper:#ffffff;\n  --paper-2:#f2f7fb; --radius:14px;\n  --c-dosp:#003865; --c-jun:#0060a8; --c-kad:#00a3e0; --c-mast:#5b6b78;\n  --font:Arial,\"Helvetica Neue\",Helvetica,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;\n  font-family:var(--font); color:var(--ink); line-height:1.45;\n  max-width:1280px; margin:0 auto; padding:4px;\n  -webkit-font-smoothing:antialiased; box-sizing:border-box;\n}\n.dcr *,.dcr *::before,.dcr *::after{box-sizing:border-box;}\n.dcr__inner{background:var(--paper);}\n\n.dcr-hero{position:relative; padding:26px 4px 20px;}\n.dcr-hero__line{position:absolute; top:0; left:0; right:0; height:26px; color:var(--blue-500);}\n.dcr-hero__line svg{width:100%; height:100%; display:block;}\n.dcr-hero__eyebrow{margin:14px 0 2px; font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; color:var(--blue-500); font-weight:700;}\n.dcr-hero__title{margin:0; font-size:clamp(1.6rem,4.2vw,2.5rem); font-weight:800; letter-spacing:-.02em; color:var(--blue-900);}\n.dcr-hero__title span{font-weight:500; color:var(--ink-soft); letter-spacing:0;}\n.dcr-hero__meta{margin:6px 0 0; color:var(--ink-soft); font-size:.9rem;}\n.dcr-hero__meta strong{color:var(--ink); font-variant-numeric:tabular-nums;}\n\n.dcr-toolbar{\n  display:grid; gap:10px 12px; align-items:end;\n  grid-template-columns:1.6fr 1fr 1fr 1fr 1fr auto;\n  background:var(--paper-2); border:1px solid var(--line); border-radius:var(--radius);\n  padding:14px; margin-top:8px; position:sticky; top:0; z-index:5;\n}\n.dcr-field{display:flex; flex-direction:column; gap:5px; min-width:0;}\n.dcr-field label{font-size:.68rem; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-soft); font-weight:700;}\n.dcr-field input,.dcr-field select{\n  font:inherit; font-size:.92rem; color:var(--ink); background:var(--paper);\n  border:1px solid var(--line); border-radius:9px; padding:9px 11px; width:100%;\n  appearance:none; -webkit-appearance:none;\n}\n.dcr-field select{\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235b6b78' stroke-width='1.6'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat; background-position:right 11px center; padding-right:30px; cursor:pointer;\n}\n.dcr-field input:focus,.dcr-field select:focus{outline:none; border-color:var(--blue-500); box-shadow:0 0 0 3px rgba(0,163,224,.22);}\n.dcr-reset{\n  font:inherit; font-size:.85rem; font-weight:600; color:var(--blue-700);\n  background:var(--paper); border:1px solid var(--line); border-radius:9px;\n  padding:9px 14px; cursor:pointer; white-space:nowrap; height:40px;\n}\n.dcr-reset:hover{border-color:var(--blue-500); color:var(--blue-500);}\n.dcr-reset:active{transform:translateY(1px);}\n\n.dcr-count{margin:14px 4px 4px; font-size:.85rem; color:var(--ink-soft);}\n.dcr-count strong{color:var(--ink);}\n\n.dcr-cat{margin-top:14px; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;}\n.dcr-cat>summary{\n  list-style:none; cursor:pointer; padding:14px 16px; display:flex; align-items:center; gap:12px;\n  background:var(--paper-2); border-left:5px solid var(--_c,var(--blue-900));\n}\n.dcr-cat>summary::-webkit-details-marker{display:none;}\n.dcr-cat__name{font-weight:800; font-size:1.02rem; letter-spacing:-.01em; color:var(--blue-900);}\n.dcr-cat__tag{font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em;\n  color:#fff; background:var(--_c,var(--blue-900)); padding:3px 8px; border-radius:999px;}\n.dcr-cat__n{margin-left:auto; font-size:.82rem; color:var(--ink-soft); font-variant-numeric:tabular-nums;}\n.dcr-cat__chev{width:12px; height:12px; border-right:2px solid var(--ink-soft); border-bottom:2px solid var(--ink-soft);\n  transform:rotate(45deg); transition:transform .18s ease; margin-left:4px;}\n.dcr-cat[open] .dcr-cat__chev{transform:rotate(-135deg);}\n\n.dcr-track{padding:12px 16px 3px; font-size:.72rem; font-weight:700; letter-spacing:.11em; text-transform:uppercase; color:var(--blue-700);}\n\n.dcr-row{\n  display:grid; grid-template-columns:200px 1fr 150px 190px; gap:6px 18px; align-items:start;\n  padding:12px 16px; border-top:1px solid var(--line);\n}\n.dcr-row:first-of-type{border-top:none;}\n.dcr-row:hover{background:var(--paper-2);}\n.dcr-disc{font-size:.82rem; font-weight:700; color:var(--blue-700); padding-top:1px;}\n.dcr-who{min-width:0;}\n\n\/* team = all riders equally prominent *\/\n.dcr-team-eyebrow{font-size:.62rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:3px;}\n.dcr-rider{display:flex; align-items:baseline; gap:7px; font-weight:600; color:var(--ink); font-size:.94rem; line-height:1.4;}\n.dcr-rider::before{content:\"\"; flex:0 0 auto; width:5px; height:5px; border-radius:50%; background:var(--blue-500); transform:translateY(-2px);}\n.dcr-athlete{font-weight:700; color:var(--ink); font-size:.98rem;}\n.dcr-club{font-size:.84rem; color:var(--ink-soft); margin-top:2px;}\n\n.dcr-result{\n  font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.01em; color:var(--blue-900);\n  font-size:1.04rem; white-space:nowrap;\n}\n.dcr-result::after{content:\"\"; display:block; height:3px; width:34px; margin-top:4px; border-radius:2px;\n  background:linear-gradient(90deg,var(--blue-500),transparent);}\n.dcr-meta{font-size:.82rem; color:var(--ink-soft); text-align:right;}\n.dcr-meta .dcr-date{display:block; font-variant-numeric:tabular-nums; color:var(--ink); font-weight:600;}\n.dcr-meta .dcr-place{display:block;}\n\nmark.dcr-hl{background:rgba(0,163,224,.26); color:inherit; border-radius:3px; padding:0 1px;}\n\n.dcr-empty{margin:22px 4px; padding:20px; text-align:center; color:var(--ink-soft);\n  background:var(--paper-2); border:1px dashed var(--line); border-radius:var(--radius);}\n\n.dcr-foot{margin-top:20px; padding:16px 4px 6px; border-top:1px solid var(--line);\n  display:flex; flex-wrap:wrap; gap:6px 20px; justify-content:space-between;\n  font-size:.78rem; color:var(--ink-soft);}\n\n\/* per-row admin controls (hidden unless admin mode) *\/\n.dcr-row__admin{display:none; grid-column:1 \/ -1; gap:8px; margin-top:6px;}\n.dcr--admin .dcr-row__admin{display:flex;}\n.dcr--admin .dcr-row{grid-template-columns:200px 1fr 150px 190px;}\n\n\/* ---------- ADMIN PANEL ---------- *\/\n.dcr-admin{margin-top:26px; border:2px dashed var(--blue-500); border-radius:var(--radius); overflow:hidden; background:#f7fbfe;}\n.dcr-admin__toggle{width:100%; text-align:left; cursor:pointer; border:0; background:var(--blue-900); color:#fff;\n  padding:14px 18px; font:inherit; font-weight:700; display:flex; align-items:center; gap:10px;}\n.dcr-admin__toggle small{font-weight:400; opacity:.75; font-size:.72rem; margin-left:auto; text-transform:none; letter-spacing:0;}\n.dcr-admin__body{padding:16px; display:flex; flex-direction:column; gap:14px;}\n.dcr-admin__card{background:var(--paper); border:1px solid var(--line); border-radius:11px; padding:15px;}\n.dcr-admin__card h3{margin:0 0 4px; font-size:.98rem; color:var(--blue-900);}\n.dcr-admin__hint{margin:0 0 12px; font-size:.82rem; color:var(--ink-soft);}\n.dcr-admin__hint code{background:var(--paper-2); border:1px solid var(--line); border-radius:5px; padding:1px 6px; font-size:.85em;}\n.dcr-admin__grid{display:grid; gap:11px; grid-template-columns:repeat(4,1fr);}\n.dcr-af{display:flex; flex-direction:column; gap:5px; min-width:0;}\n.dcr-af--2{grid-column:span 2;} .dcr-af--full{grid-column:1 \/ -1;}\n.dcr-af label{font-size:.66rem; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-soft); font-weight:700;}\n.dcr-af input,.dcr-af select{font:inherit; font-size:.9rem; border:1px solid var(--line); border-radius:8px; padding:8px 10px; background:var(--paper); color:var(--ink); width:100%;}\n.dcr-af input:focus,.dcr-af select:focus{outline:none; border-color:var(--blue-500); box-shadow:0 0 0 3px rgba(0,163,224,.2);}\n.dcr-admin__row{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:12px;}\n.dcr-btn{font:inherit; font-weight:600; font-size:.88rem; border-radius:9px; padding:9px 15px; cursor:pointer;\n  border:1px solid var(--blue-900); background:var(--blue-900); color:#fff;}\n.dcr-btn:hover{background:var(--blue-700); border-color:var(--blue-700);}\n.dcr-btn:active{transform:translateY(1px);}\n.dcr-btn--ghost{background:var(--paper); color:var(--blue-700); border-color:var(--line);}\n.dcr-btn--ghost:hover{border-color:var(--blue-500); color:var(--blue-500);}\n.dcr-btn--sm{padding:5px 10px; font-size:.78rem;}\n.dcr-btn--del{background:var(--paper); color:var(--red); border-color:#f3d1d6;}\n.dcr-admin__msg{font-size:.82rem; color:var(--blue-700);}\n.dcr-admin__msg.err{color:var(--red);}\n.dcr-af input[type=file]{padding:6px;}\n\n@media (max-width:760px){\n  .dcr-toolbar{grid-template-columns:1fr 1fr; position:static;}\n  .dcr-field--search{grid-column:1 \/ -1;}\n  .dcr-reset{grid-column:1 \/ -1; height:42px;}\n  .dcr-row{grid-template-columns:1fr auto; gap:2px 12px; padding:14px 16px;}\n  .dcr-disc{grid-column:1 \/ -1; order:1; text-transform:uppercase; letter-spacing:.06em; font-size:.7rem;}\n  .dcr-who{grid-column:1; order:2;}\n  .dcr-result{grid-column:2; order:2; text-align:right; align-self:center;}\n  .dcr-result::after{margin-left:auto;}\n  .dcr-meta{grid-column:1 \/ -1; order:3; text-align:left; margin-top:6px;}\n  .dcr-meta .dcr-date{display:inline; margin-right:8px;}\n  .dcr-meta .dcr-place{display:inline;}\n  .dcr--admin .dcr-row__admin{order:4; grid-column:1 \/ -1;}\n  .dcr-admin__grid{grid-template-columns:1fr 1fr;}\n  .dcr-af--2{grid-column:span 2;}\n}\n@media (prefers-reduced-motion:reduce){.dcr *{transition:none !important;}}\n<\/style>\n\n<script>\n(function(){\n  \"use strict\";\n  var RECORDS = [{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Dominik TOPINKA\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"9,496 sec\",\"date\":\"03.02.2026\",\"place\":\"Konya \u2013 Turecko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"Team sprint na 250 m dr\u00e1ze\",\"athlete\":\"Dominik TOPINKA\",\"club\":\"ASO DUKLA Brno\",\"members\":[\"Adam RAUSCHGOLD\",\"David PETERKA\"],\"result\":\"42,271 sec\",\"date\":\"01.02.2026\",\"place\":\"Konya \u2013 Turecko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Tom\u00e1\u0161 B\u00c1BEK\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"26,914 sec\",\"date\":\"23.10.2009\",\"place\":\"V\u00edde\u0148 - Rakousko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1.000m pevn\u00fd start\",\"athlete\":\"David PETERKA\",\"club\":\"ASO DUKLA BRNO\",\"members\":[],\"result\":\"57,919 sec\",\"date\":\"02.02.2026\",\"place\":\"Konya-Turecko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"4.000m pevn\u00fd start\",\"athlete\":\"Maty\u00e1\u0161 KOBL\u00cd\u017dEK\",\"club\":\"TUFO PARDUS Prost\u011bjov\",\"members\":[],\"result\":\"4:216,882 min\",\"date\":\"03.02.2025\",\"place\":\"Konya, Turecko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"On\u0159ej RYB\u00cdN\",\"club\":\"CZE\",\"members\":[\"Denis RUGOVAC\",\"Franti\u0161ek SISR\",\"Ond\u0159ej VENDOLSK\u00dd\"],\"result\":\"4:08,224 min\",\"date\":\"10.07.2013\",\"place\":\"Anadia - Portugalsko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1 hodina\",\"athlete\":\"Ond\u0159ej SOSENKA\",\"club\":\"Acqua e sapone\",\"members\":[],\"result\":\"49 700 m\",\"date\":\"19.07.2005\",\"place\":\"Moskva-Krylatsk\u00e9-Rusko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1 hodina za vodi\u010dem \u2013 rolna 750mm\",\"athlete\":\"Jaroslav KOL\u00c1\u0158\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"72 419 m\",\"date\":\"25.07.1989\",\"place\":\"Cottbus \u2013 N\u011bmecko\"},{\"category\":\"MU\u017dI\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1 hodina za derny\",\"athlete\":\"neobsazeno \u2013 nespln\u011bn z\u00e1kladn\u00ed \u010das\",\"club\":\"\",\"members\":[],\"result\":\"\u2014\",\"date\":\"\",\"place\":\"\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Veronika JABORN\u00cdKOV\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"10,394 sec\",\"date\":\"02.02.2026\",\"place\":\"Konya \u2013 Turscko\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"Team sprint na 250 m dr\u00e1ze\",\"athlete\":\"Anna JABORN\u00cdKOV\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[\"Veronika JABORN\u00cdKOV\u00c1\",\"Kate\u0159ina S\u00e1ra PETERKOV\u00c1\"],\"result\":\"47,726 sec\",\"date\":\"01.02.2026\",\"place\":\"Konya \u2013 Turecko\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Lucie Z\u00c1LESK\u00c1\",\"club\":\"ASC DUKLA Praha\",\"members\":[],\"result\":\"31,103 sec\",\"date\":\"27.04.2012\",\"place\":\"Praha - Motol\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"S\u00e1ra KA\u0147KOVSK\u00c1\",\"club\":\"ASO DUKLA\",\"members\":[],\"result\":\"34,041 sec\",\"date\":\"13.12.2014\",\"place\":\"Praha - Motol\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1.000m pevn\u00fd start\",\"athlete\":\"Veronika JABORN\u00cdKOV\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"1:04,732 min.\",\"date\":\"04.02.2026\",\"place\":\"Konya- Turecko\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"4.000m pevn\u00fd start\",\"athlete\":\"Gabriela B\u00c1RTOV\u00c1\",\"club\":\"Team DUKLA Praha\",\"members\":[],\"result\":\"5:21,330 min\",\"date\":\"21.09.2025\",\"place\":\"Prost\u011bjov\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Ema CETKOVSK\u00c1\",\"club\":\"CZE\",\"members\":[\"Kate\u0159ina KOHOUTKOV\u00c1\",\"Ema KA\u0147KOVSK\u00c1\",\"Barbora D\u017dERENGOV\u00c1\"],\"result\":\"4:50,083 min\",\"date\":\"12.07.2016\",\"place\":\"Montichiari - It\u00e1lie\"},{\"category\":\"\u017dENY\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1 hodina\",\"athlete\":\"Jarmila MACHA\u010cOV\u00c1\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"43 788 m\",\"date\":\"18.08.2020\",\"place\":\"Praha \u2013 Motol\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Martin \u010cECHMAN\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"10,314 sec\",\"date\":\"04.06.2016\",\"place\":\"Cottbus - SRN\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Pavel BUR\u00c1\u0147\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"29,48 sec\",\"date\":\"02.07.1990\",\"place\":\"Brno\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"1.000m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"1:04,488 min\",\"date\":\"12.09.1993\",\"place\":\"Praha\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"1.000m pevn\u00fd start\",\"athlete\":\"Martin \u010cECHMAN\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"1:04,419 min\",\"date\":\"27.05.2016\",\"place\":\"Prost\u011bjov\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"3.000m pevn\u00fd start\",\"athlete\":\"Petr KELEMEN\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"3:25,236 min.\",\"date\":\"27.8.2018\",\"place\":\"Praha - T\u0159ebe\u0161\u00edn\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Maty\u00e1\u0161 KOBL\u00cd\u017dEK\",\"club\":\"TUFO PARDUS Prost\u011bjov\",\"members\":[\"Ond\u0159ej POKORN\u00dd\",\"Vojt\u011bch SOUKUP\",\"Radovan \u0160TEC\"],\"result\":\"4:21,937 min.\",\"date\":\"21.7.2022\",\"place\":\"Praha \u2013 T\u0159ebe\u0161\u00edn\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"Maty\u00e1\u0161 JANO\u0160\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"25:20,777 min.\",\"date\":\"06.09.2019\",\"place\":\"Praha - T\u0159ebe\u0161\u00edn\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"1 hodina\",\"athlete\":\"Ji\u0159\u00ed KOL\u00c1\u0158\",\"club\":\"Jiskra Jundrov\",\"members\":[],\"result\":\"44 484,44 m\",\"date\":\"08.09.1965\",\"place\":\"Brno\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Jan PO\u0158\u00cdZEK\",\"club\":\"ASO DUKLA BRNO\",\"members\":[],\"result\":\"9,920 sec\",\"date\":\"23.8.2024\",\"place\":\"Luoyang,\u010c\u00edna\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"Team sprint na 250 m dr\u00e1ze\",\"athlete\":\"Kra\u0161tof FRIEDL\",\"club\":\"ASO DUKLA BRNO\",\"members\":[\"Jan PO\u0158\u00cdZEK\",\"David PETERKA\"],\"result\":\"44,151 sec\",\"date\":\"21.8.2024\",\"place\":\"Luoyang, \u010c\u00edna\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"29,55 sec\",\"date\":\"11.09.1993\",\"place\":\"Praha - Motol\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"1.000m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"1:02,950 min\",\"date\":\"11.09.1993\",\"place\":\"Praha - Motol\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"1.000m pevn\u00fd start\",\"athlete\":\"Jakub \u0160\u0164ASTN\u00dd\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"1:01,830 min\",\"date\":\"19.09.2018\",\"place\":\"Aigl \u2013 \u0160v\u00fdcarsko\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"3.000m pevn\u00fd start\",\"athlete\":\"Maty\u00e1\u0161 JANO\u0160\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"3:20,262 min.\",\"date\":\"1.07.2019\",\"place\":\"Frankfurt nad Odrou\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Jan KRAUS\",\"club\":\"CZE\",\"members\":[\"Denis RUGOVAC\",\"Ond\u0159ej RYB\u00cdN\",\"Franti\u0161ek SISR\"],\"result\":\"4:13,951 min\",\"date\":\"17.08.2011\",\"place\":\"Krylatsk\u00e9 Moskva - Rusko\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"Maty\u00e1\u0161 JANO\u0160\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"24:44,846 min\",\"date\":\"25.09.2019\",\"place\":\"Praha - Motol\"},{\"category\":\"JUNIO\u0158I\",\"track\":\"Kryt\u00e1\",\"discipline\":\"1 hodina\",\"athlete\":\"Maty\u00e1\u0161 JANO\u0160\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"47 111 m\",\"date\":\"30.09.2019\",\"place\":\"Praha - Motol\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"S\u00e1ra KA\u0147KOVSK\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"11,432 sec\",\"date\":\"13.07.2016\",\"place\":\"Montichiari - It\u00e1lie\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Drahom\u00edra WAISOV\u00c1\",\"club\":\"\u0160KODA Plze\u0148\",\"members\":[],\"result\":\"35,06 sec\",\"date\":\"29.07.1987\",\"place\":\"Plze\u0148\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"S\u00e1ra KA\u0147KOVSK\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"33,826 sec\",\"date\":\"27.05.2016\",\"place\":\"Prost\u011bjov\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Patricie MULLEROV\u00c1\",\"club\":\"TUFO PARDUS Prost\u011bjov\",\"members\":[],\"result\":\"2:32,478 min\",\"date\":\"28.07.2023\",\"place\":\"Prost\u011bjov\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"3.000m pevn\u00fd start\",\"athlete\":\"Nela KA\u0147KOVSK\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"4:05,984 min.\",\"date\":\"26.07.2024\",\"place\":\"Plze\u0148\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Eli\u0161ka GRULICHOV\u00c1\",\"club\":\"TUFO PARDUS Prost\u011bjov\",\"members\":[\"Patricei MULLEROV\u00c1 TUFO PARDUS Prost\u011bjov\",\"Ad\u00e9la MARKOV\u00c1 DUKLA Praha\",\"Barbora N\u011aMCOV\u00c1 SPOTRKOMPLEX B\u0159eclav\"],\"result\":\"5:00,839 min\",\"date\":\"21.7.2022\",\"place\":\"Praha \u2013 T\u0159ebe\u0161\u00edn\"},{\"category\":\"JUNIORKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"neobsazeno \u2013 nespln\u011bn z\u00e1kladn\u00ed \u010das\",\"club\":\"\",\"members\":[],\"result\":\"\u2014\",\"date\":\"\",\"place\":\"\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Veronika JABORN\u00cdKOV\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"11,353 sec\",\"date\":\"15.08.2019\",\"place\":\"Frankfurt nad Odrou\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Lucie Z\u00c1LESK\u00c1\",\"club\":\"ASO DUKLA\",\"members\":[],\"result\":\"32,131 sec\",\"date\":\"10.10.2009\",\"place\":\"Praha - Motol\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"Veronika JABORN\u00cdKOV\u00c1\",\"club\":\"ASO DUKLA Brno\",\"members\":[],\"result\":\"33,955 sec\",\"date\":\"10.02.2023\",\"place\":\"Grenchen \u2013 \u0160vicarsko\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Lucie Z\u00c1LESK\u00c1\",\"club\":\"ASO DUKLA\",\"members\":[],\"result\":\"2:25,456 min\",\"date\":\"16.07.2009\",\"place\":\"Minsk - B\u011blorusko\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"3.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Dagmar LAB\u00c1KOV\u00c1\",\"club\":\"DUKLA Praha\",\"members\":[\"Lucie Z\u00c1LESK\u00c1 DUKLA Praha\",\"Gabriela SL\u00c1MOV\u00c1 DUKLA Brno\"],\"result\":\"3:38,910 min\",\"date\":\"12.08.2009\",\"place\":\"Moskva Krylatsk\u00e9 - Rusko\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"4.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Ema CETKOVSK\u00c1\",\"club\":\"CZE\",\"members\":[\"Kate\u0159ina KOHOUTKOV\u00c1\",\"Ema KA\u0147KOVSK\u00c1\",\"Barbora D\u017dERENGOV\u00c1\"],\"result\":\"4:50,083 min\",\"date\":\"12.07.2016\",\"place\":\"Montichiari - It\u00e1lie\"},{\"category\":\"JUNIORKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"Krist\u00fdna BURLOV\u00c1\",\"club\":\"TEAM DUKLA Praha\",\"members\":[],\"result\":\"28:08,914 min\",\"date\":\"18.09.2020\",\"place\":\"Praha \u2013 Motol\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Dukla Tren\u010d\u00edn\",\"members\":[],\"result\":\"11,289 sec\",\"date\":\"30.07.1992\",\"place\":\"Prost\u011bjov\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"30,201 sec\",\"date\":\"25.06.1993\",\"place\":\"Brno\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"34,117 sec\",\"date\":\"12.09.1993\",\"place\":\"Praha\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Daniel BABOR\",\"club\":\"TJ KOVO Praha\",\"members\":[],\"result\":\"2:22,403 min\",\"date\":\"15.07.2015\",\"place\":\"Praha\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"3.000m pevn\u00fd start\",\"athlete\":\"Patrik PECH\",\"club\":\"DUKLA Praha\",\"members\":[],\"result\":\"3:39,863 min\",\"date\":\"22.09.1993\",\"place\":\"Praha\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"3.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Daniel BABOR\",\"club\":\"CZE\",\"members\":[\"Petr KLABOUCH\",\"Daniel RYB\u00cdN\",\"Jan CINK\"],\"result\":\"3:30,152 min\",\"date\":\"17.07.2015\",\"place\":\"Praha\"},{\"category\":\"KADETI\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"Patrik PECH\",\"club\":\"DUKLA Praha\",\"members\":[],\"result\":\"26:25,342 min\",\"date\":\"28.09.1993\",\"place\":\"Praha\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"Martin \u010cECHMAN\",\"club\":\"CYKLOTEAM Ostrov\",\"members\":[],\"result\":\"11,187 sec\",\"date\":\"25.04.2014\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"500m letm\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"29,55 sec\",\"date\":\"11.09.1993\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"Jan LEPKA\",\"club\":\"Favorit Brno\",\"members\":[],\"result\":\"33,638 sec\",\"date\":\"11.09.1993\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Radovan \u0160TEC\",\"club\":\"Perdus Tufo Prost\u011bjov\",\"members\":[],\"result\":\"2:22,351 min.\",\"date\":\"20.04.2019\",\"place\":\"Praha-Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"3.000m pevn\u00fd start\",\"athlete\":\"Ond\u0159ej SOSENKA\",\"club\":\"DUKLA Praha\",\"members\":[],\"result\":\"3:39,131 min\",\"date\":\"30.09.1991\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"3.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Ji\u0159\u00ed KAVKA\",\"club\":\"DUKLA PRAHA\",\"members\":[\"Rudolf PLA\u010cEK\",\"Ond\u0159ej SOSENKA\",\"Jakub \u0160\u00c1RA\"],\"result\":\"3:29,005 min\",\"date\":\"25.09.1991\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETI\",\"track\":\"Kryt\u00e1\",\"discipline\":\"20.000m pevn\u00fd start\",\"athlete\":\"V\u00e1clav ZVONA\u0158\",\"club\":\"Stadion Louny\",\"members\":[],\"result\":\"26:47,87 min\",\"date\":\"29.03.1989\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"200m letm\u00fd start\",\"athlete\":\"S\u00e1ra KA\u0147KOVSK\u00c1\",\"club\":\"ASO DUKLA BRNO\",\"members\":[],\"result\":\"11,951 sec\",\"date\":\"28.07.2014\",\"place\":\"Cottbus -SRN\"},{\"category\":\"KADETKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"500m pevn\u00fd start\",\"athlete\":\"Anna JABORN\u00cdKOV\u00c1\",\"club\":\"SPORTKOMPLEX B\u0159eclav\",\"members\":[],\"result\":\"37,946 sec\",\"date\":\"2.7.2020\",\"place\":\"Praha - T\u0159ebe\u0161\u00edn\"},{\"category\":\"KADETKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Dagmar LAB\u00c1KOV\u00c1\",\"club\":\"DUKLA Praha\",\"members\":[],\"result\":\"2:41,304 min\",\"date\":\"18.06.2008\",\"place\":\"Brno\"},{\"category\":\"KADETKY\",\"track\":\"Otev\u0159en\u00e1\",\"discipline\":\"3.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Veronika JADRN\u00c1\",\"club\":\"SPORTKOMPLEX B\u0159eclav\",\"members\":[\"Be\u00e1ta HERMANOV\u00c1\",\"AnnA LAL\u00c1KOV\u00c1 DUKLA Praha\",\"Vendula STRAKAT\u00c1\"],\"result\":\"3:54,831 min\",\"date\":\"21.7.2022\",\"place\":\"Praha\"},{\"category\":\"KADETKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Dagmar LAB\u00c1KOV\u00c1\",\"club\":\"Dukla Praha\",\"members\":[],\"result\":\"2:35,256 min\",\"date\":\"19.04.2008\",\"place\":\"Praha - Motol\"},{\"category\":\"KADETKY\",\"track\":\"Kryt\u00e1\",\"discipline\":\"2.000m pevn\u00fd start dru\u017estva\",\"athlete\":\"Dagmar HEJHALOV\u00c1\",\"club\":\"Dukla Praha\",\"members\":[\"Anna RU\u017dI\u010cKOV\u00c1 Dukla Praha\",\"Anna JABORn\u00cdKOV\u00c1 SPORTKOMPLEX B\u0159eclav\",\"Kate\u0159ina S\u00e1ra PETERKOV\u00c1 RKCA\"],\"result\":\"2:35,390 min\",\"date\":\"20.04.2019\",\"place\":\"Praha - Motol\"},{\"category\":\"MASTERS - E\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"2.000m pevn\u00fd start\",\"athlete\":\"Petr EJEM\",\"club\":\"SKC Prost\u011bjov\",\"members\":[],\"result\":\"2:39,770 min\",\"date\":\"30.08.2008\",\"place\":\"Prost\u011bjov\"},{\"category\":\"MASTERS - C\",\"track\":\"Bez rozli\u0161en\u00ed\",\"discipline\":\"1 hodina s pevn\u00fdm startem\",\"athlete\":\"Eugen RA\u0160EV\",\"club\":\"ELKOV AUTHOR cycling team\",\"members\":[],\"result\":\"40 777 m\",\"date\":\"14.03.2017\",\"place\":\"Praha - Motol\"}];\n  var PAGE_TPL_B64 = \"PCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgo8IS0tICBSRUtPUkRZIMSMUiDigJMgRFLDgUhPVsOBIENZS0xJU1RJS0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSAgVmxvxb50ZSBjZWzDvSB0ZW50byBibG9rIGRvIFdvcmRQcmVzc3UgamFrbyBibG9rICJWbGFzdG7DrSBIVE1MIi4tLT4KPCEtLSAgVmXFmWVqbm9zdCB2aWTDrSBqZW4gdGFidWxrdSArIGZpbHRyeS4gUMWZaWhsw6HFoWVuw70gYWRtaW4gdXZpZMOtICAtLT4KPCEtLSAgbmF2w61jIHBhbmVsIHBybyBwxZlpZMOhdsOhbsOtIHJla29yZMWvLCBpbXBvcnQgRXhjZWx1IGEgZXhwb3J0LiAgICAtLT4KPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgo8ZGl2IGNsYXNzPSJkY3IiIGlkPSJkY3ItYXBwIj4KICA8ZGl2IGNsYXNzPSJkY3JfX2lubmVyIj4KCiAgICA8aGVhZGVyIGNsYXNzPSJkY3ItaGVybyI+CiAgICAgIDxkaXYgY2xhc3M9ImRjci1oZXJvX19saW5lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMTIwMCA0MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgICAgICAgICA8cGF0aCBkPSJNMCAzMCBDIDIyMCAzMCwgMjYwIDgsIDQ4MCA4IEwgMTIwMCA4IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgICAgICA8cGF0aCBkPSJNMCAzNiBDIDIyMCAzNiwgMjYwIDE2LCA0ODAgMTYgTCAxMjAwIDE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtZGFzaGFycmF5PSI2IDgiIG9wYWNpdHk9Ii41NSIvPgogICAgICAgIDwvc3ZnPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRjci1oZXJvX19leWVicm93Ij7EjGVza8O9IHN2YXogY3lrbGlzdGlreTwvcD4KICAgICAgPGgyIGNsYXNzPSJkY3ItaGVyb19fdGl0bGUiPlJla29yZHkgxIxSPHNwYW4+IMK3IGRyw6Fob3bDoSBjeWtsaXN0aWthPC9zcGFuPjwvaDI+CiAgICAgIDxwIGNsYXNzPSJkY3ItaGVyb19fbWV0YSI+UGxhdG7DqSBrJm5ic3A7PHN0cm9uZyBpZD0iZGNyLXZhbGlkIj4yNi4mbmJzcDswMy4mbmJzcDsyMDI2PC9zdHJvbmc+PC9wPgogICAgPC9oZWFkZXI+CgogICAgPGRpdiBjbGFzcz0iZGNyLXRvb2xiYXIiIHJvbGU9InNlYXJjaCI+CiAgICAgIDxkaXYgY2xhc3M9ImRjci1maWVsZCBkY3ItZmllbGQtLXNlYXJjaCI+CiAgICAgICAgPGxhYmVsIGZvcj0iZGNyLXEiPkhsZWRhdDwvbGFiZWw+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJkY3ItcSIgcGxhY2Vob2xkZXI9Ikptw6lubywga2x1YiwgbcOtc3RvLCDEjWFz4oCmIiBhdXRvY29tcGxldGU9Im9mZiI+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkY3ItZmllbGQiPgogICAgICAgIDxsYWJlbCBmb3I9ImRjci1nZW5kZXIiPlBvaGxhdsOtPC9sYWJlbD4KICAgICAgICA8c2VsZWN0IGlkPSJkY3ItZ2VuZGVyIj48b3B0aW9uIHZhbHVlPSIiPlbFoWU8L29wdGlvbj48L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImRjci1maWVsZCI+CiAgICAgICAgPGxhYmVsIGZvcj0iZGNyLWFnZSI+S2F0ZWdvcmllPC9sYWJlbD4KICAgICAgICA8c2VsZWN0IGlkPSJkY3ItYWdlIj48b3B0aW9uIHZhbHVlPSIiPlbFoWU8L29wdGlvbj48L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImRjci1maWVsZCI+CiAgICAgICAgPGxhYmVsIGZvcj0iZGNyLXRyYWNrIj5EcsOhaGE8L2xhYmVsPgogICAgICAgIDxzZWxlY3QgaWQ9ImRjci10cmFjayI+PG9wdGlvbiB2YWx1ZT0iIj5WxaFlPC9vcHRpb24+PC9zZWxlY3Q+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkY3ItZmllbGQiPgogICAgICAgIDxsYWJlbCBmb3I9ImRjci1kaXNjIj5EaXNjaXBsw61uYTwvbGFiZWw+CiAgICAgICAgPHNlbGVjdCBpZD0iZGNyLWRpc2MiPjxvcHRpb24gdmFsdWU9IiI+VsWhZTwvb3B0aW9uPjwvc2VsZWN0PgogICAgICA8L2Rpdj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkY3ItcmVzZXQiIGlkPSJkY3ItcmVzZXQiPlpydcWhaXQgZmlsdHJ5PC9idXR0b24+CiAgICA8L2Rpdj4KCiAgICA8cCBjbGFzcz0iZGNyLWNvdW50IiBpZD0iZGNyLWNvdW50IiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9wPgoKICAgIDxkaXYgaWQ9ImRjci1ib2R5IiBjbGFzcz0iZGNyLWJvZHkiPjwvZGl2PgoKICAgIDxwIGNsYXNzPSJkY3ItZW1wdHkiIGlkPSJkY3ItZW1wdHkiIGhpZGRlbj7FvcOhZG7DvSByZWtvcmQgbmVvZHBvdsOtZMOhIHphZMOhbsOtLiBaa3VzdGUgenJ1xaFpdCBuxJtrdGVyw70gZmlsdHIuPC9wPgoKICAgIDxmb290ZXIgY2xhc3M9ImRjci1mb290Ij4KICAgICAgPHNwYW4+WnByYWNvdmFsOiBSaWNoYXJkIEtyYXRvY2h2w61sPC9zcGFuPgogICAgICA8c3Bhbj5aZHJvaiBkYXQ6IMSMZXNrw70gc3ZheiBjeWtsaXN0aWt5PC9zcGFuPgogICAgPC9mb290ZXI+CgogICAgPCEtLSA9PT09PT09PT09PT09PT09PSBBRE1JTiAoamVuIHBybyBwxZlpaGzDocWhZW7DqSkgPT09PT09PT09PT09PT09PT0gLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0iZGNyLWFkbWluIiBpZD0iZGNyLWFkbWluIiBoaWRkZW4+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZGNyLWFkbWluX190b2dnbGUiIGlkPSJkY3ItYWRtaW4tdG9nZ2xlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgPHNwYW4+U3Byw6F2YSByZWtvcmTFrzwvc3Bhbj48c21hbGw+dmlkaXRlbG7DqSBqZW4gcHJvIHDFmWlobMOhxaFlbsOpPC9zbWFsbD4KICAgICAgPC9idXR0b24+CgogICAgICA8ZGl2IGNsYXNzPSJkY3ItYWRtaW5fX2JvZHkiIGlkPSJkY3ItYWRtaW4tYm9keSIgaGlkZGVuPgoKICAgICAgICA8ZGl2IGNsYXNzPSJkY3ItYWRtaW5fX2NhcmQiPgogICAgICAgICAgPGgzIGlkPSJkY3ItZm9ybS10aXRsZSI+UMWZaWRhdCByZWtvcmQ8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImRjci1hZG1pbl9faGludCI+RHJ1xb5zdHZhOiDEjWxlbnkgb2RkxJtsdGUgxI3DoXJrb3UuIERhdHVtIHZlIHR2YXJ1IDxjb2RlPkRELk1NLlJSUlI8L2NvZGU+LiBabcSbbnkgc2UgaG5lZCBwcm9tw610bm91IHYgbsOhaGxlZHUgbmFob8WZZTsgbmV6YXBvbWXFiHRlIGplIHVsb8W+aXQgdGxhxI3DrXRrZW0gPGVtPlprb3DDrXJvdmF0IGvDs2Q8L2VtPiBhIHZsb8W+aXQgZG8gV29yZFByZXNzdS48L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkY3ItYWRtaW5fX2dyaWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkY3ItYWYiPjxsYWJlbD5LYXRlZ29yaWU8L2xhYmVsPjxpbnB1dCBpZD0iaS1jYXQiIGxpc3Q9ImRsLWNhdCIgcGxhY2Vob2xkZXI9Ik1Vxb1JLCDFvUVOWSwgSlVOSU\/FmEnigKYiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkY3ItYWYiPjxsYWJlbD5EcsOhaGE8L2xhYmVsPjxzZWxlY3QgaWQ9ImktdHJhY2siPjxvcHRpb24+QmV6IHJvemxpxaFlbsOtPC9vcHRpb24+PG9wdGlvbj5PdGV2xZllbsOhPC9vcHRpb24+PG9wdGlvbj5Lcnl0w6E8L29wdGlvbj48L3NlbGVjdD48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGNyLWFmIGRjci1hZi0tMiI+PGxhYmVsPkRpc2NpcGzDrW5hPC9sYWJlbD48aW5wdXQgaWQ9ImktZGlzYyIgbGlzdD0iZGwtZGlzYyIgcGxhY2Vob2xkZXI9Im5hcMWZLiAyMDBtIGxldG3DvSBzdGFydCI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZiBkY3ItYWYtLTIiPjxsYWJlbD5aw6F2b2Ruw61rIC8gesOhdm9kbmljZTwvbGFiZWw+PGlucHV0IGlkPSJpLWF0aCIgcGxhY2Vob2xkZXI9Ikptw6lubyBQxZjDjUpNRU7DjSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZiBkY3ItYWYtLTIiPjxsYWJlbD5LbHViPC9sYWJlbD48aW5wdXQgaWQ9ImktY2x1YiIgcGxhY2Vob2xkZXI9IkFTTyBEVUtMQSBCcm5vIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGNyLWFmIGRjci1hZi0tZnVsbCI+PGxhYmVsPsSMbGVub3bDqSBkcnXFvnN0dmEgKG5lcG92aW5uw6ksIG9kZMSbbHRlIMSNw6Fya291KTwvbGFiZWw+PGlucHV0IGlkPSJpLW1lbSIgcGxhY2Vob2xkZXI9IkphbiBOT1bDgUssIFBldHIgU1ZPQk9EQSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZiI+PGxhYmVsPlbDvWtvbiAvIMSNYXM8L2xhYmVsPjxpbnB1dCBpZD0iaS1yZXMiIHBsYWNlaG9sZGVyPSI5LDQ5NiBzZWMiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkY3ItYWYiPjxsYWJlbD5EYXR1bTwvbGFiZWw+PGlucHV0IGlkPSJpLWRhdGUiIHBsYWNlaG9sZGVyPSIwMy4wMi4yMDI2Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGNyLWFmIGRjci1hZi0tMiI+PGxhYmVsPk3DrXN0bzwvbGFiZWw+PGlucHV0IGlkPSJpLXBsYWNlIiBwbGFjZWhvbGRlcj0iS29ueWEg4oCTIFR1cmVja28iPjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGF0YWxpc3QgaWQ9ImRsLWNhdCI+PC9kYXRhbGlzdD4KICAgICAgICAgIDxkYXRhbGlzdCBpZD0iZGwtZGlzYyI+PC9kYXRhbGlzdD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZG1pbl9fcm93Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGNyLWJ0biIgaWQ9ImJ0bi1zYXZlIj5QxZlpZGF0IHJla29yZDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkY3ItYnRuIGRjci1idG4tLWdob3N0IiBpZD0iYnRuLWNhbmNlbCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+WnJ1xaFpdCDDunByYXZ1PC9idXR0b24+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkY3ItYWRtaW5fX21zZyIgaWQ9ImZvcm0tbXNnIj48L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZGNyLWFkbWluX19jYXJkIj4KICAgICAgICAgIDxoMz5JbXBvcnQgeiBFeGNlbHU8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImRjci1hZG1pbl9faGludCI+TmFocmFqdGUgdGFidWxrdSB2ZSBzdGVqbsOpbSBmb3Jtw6F0dSBqYWtvIDxjb2RlPlRhYnVsa2EtMjAyNi54bHN4PC9jb2RlPi4gSW1wb3J0IGplIOKAnmJlc3QgZWZmb3J04oCcIOKAkyBwbyBuYWhyw6Fuw60gZGF0YSB6a29udHJvbHVqdGUuIE5haHJhZMOtIGNlbMO9IGFrdHXDoWxuw60gc2V6bmFtLjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZG1pbl9fcm93Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJpLWZpbGUiIGFjY2VwdD0iLnhsc3gsLnhscyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRjci1idG4gZGNyLWJ0bi0tZ2hvc3QiIGlkPSJidG4taW1wb3J0Ij5OYWhyw6F0IGEgbmFocmFkaXQ8L2J1dHRvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRjci1hZG1pbl9fbXNnIiBpZD0iaW1wLW1zZyI+PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImRjci1hZG1pbl9fY2FyZCI+CiAgICAgICAgICA8aDM+VWxvxb5pdCBkbyBXb3JkUHJlc3N1PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJkY3ItYWRtaW5fX2hpbnQiPlZ5Z2VuZXJ1amUgYWt0dWFsaXpvdmFuw70gYmxvayDigJ5WbGFzdG7DrSBIVE1M4oCcIHNlIHbFoWVtaSB6bcSbbmFtaS4gWmtvcMOtcnVqdGUgYSBuYWhyYcSPdGUgasOtbSB0ZW50byBibG9rIHZlIFdvcmRQcmVzc3UuPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGNyLWFkbWluX19yb3ciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkY3ItYnRuIiBpZD0iYnRuLWNvcHkiPlprb3DDrXJvdmF0IGvDs2Q8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGNyLWJ0biBkY3ItYnRuLS1naG9zdCIgaWQ9ImJ0bi1kbC1odG1sIj5TdMOhaG5vdXQgLmh0bWw8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGNyLWJ0biBkY3ItYnRuLS1naG9zdCIgaWQ9ImJ0bi1kbC1qc29uIj5TdMOhaG5vdXQgSlNPTjwvYnV0dG9uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZGNyLWFkbWluX19tc2ciIGlkPSJleHAtbXNnIj48L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogIDwvZGl2Pgo8L2Rpdj4KCjxzdHlsZT4KLmRjcnsKICAtLWJsdWUtOTAwOiMwMDM4NjU7IC0tYmx1ZS03MDA6IzAwNjBhODsgLS1ibHVlLTUwMDojMDBhM2UwOyAtLXJlZDojZTQwMDJiOwogIC0taW5rOiMxMzI0MzM7IC0taW5rLXNvZnQ6IzViNmI3ODsgLS1saW5lOiNkZGU2ZWU7IC0tcGFwZXI6I2ZmZmZmZjsKICAtLXBhcGVyLTI6I2YyZjdmYjsgLS1yYWRpdXM6MTRweDsKICAtLWMtZG9zcDojMDAzODY1OyAtLWMtanVuOiMwMDYwYTg7IC0tYy1rYWQ6IzAwYTNlMDsgLS1jLW1hc3Q6IzViNmI3ODsKICAtLWZvbnQ6QXJpYWwsIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixzYW5zLXNlcmlmOwogIGZvbnQtZmFtaWx5OnZhcigtLWZvbnQpOyBjb2xvcjp2YXIoLS1pbmspOyBsaW5lLWhlaWdodDoxLjQ1OwogIG1heC13aWR0aDoxMDgwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6NHB4OwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsKfQouZGNyICosLmRjciAqOjpiZWZvcmUsLmRjciAqOjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7fQouZGNyX19pbm5lcntiYWNrZ3JvdW5kOnZhcigtLXBhcGVyKTt9CgouZGNyLWhlcm97cG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmc6MjZweCA0cHggMjBweDt9Ci5kY3ItaGVyb19fbGluZXtwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgaGVpZ2h0OjI2cHg7IGNvbG9yOnZhcigtLWJsdWUtNTAwKTt9Ci5kY3ItaGVyb19fbGluZSBzdmd7d2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGRpc3BsYXk6YmxvY2s7fQouZGNyLWhlcm9fX2V5ZWJyb3d7bWFyZ2luOjE0cHggMCAycHg7IGZvbnQtc2l6ZTouNzJyZW07IGxldHRlci1zcGFjaW5nOi4xNmVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWJsdWUtNTAwKTsgZm9udC13ZWlnaHQ6NzAwO30KLmRjci1oZXJvX190aXRsZXttYXJnaW46MDsgZm9udC1zaXplOmNsYW1wKDEuNnJlbSw0LjJ2dywyLjVyZW0pOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgY29sb3I6dmFyKC0tYmx1ZS05MDApO30KLmRjci1oZXJvX190aXRsZSBzcGFue2ZvbnQtd2VpZ2h0OjUwMDsgY29sb3I6dmFyKC0taW5rLXNvZnQpOyBsZXR0ZXItc3BhY2luZzowO30KLmRjci1oZXJvX19tZXRhe21hcmdpbjo2cHggMCAwOyBjb2xvcjp2YXIoLS1pbmstc29mdCk7IGZvbnQtc2l6ZTouOXJlbTt9Ci5kY3ItaGVyb19fbWV0YSBzdHJvbmd7Y29sb3I6dmFyKC0taW5rKTsgZm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO30KCi5kY3ItdG9vbGJhcnsKICBkaXNwbGF5OmdyaWQ7IGdhcDoxMHB4IDEycHg7IGFsaWduLWl0ZW1zOmVuZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS42ZnIgMWZyIDFmciAxZnIgMWZyIGF1dG87CiAgYmFja2dyb3VuZDp2YXIoLS1wYXBlci0yKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpOwogIHBhZGRpbmc6MTRweDsgbWFyZ2luLXRvcDo4cHg7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHotaW5kZXg6NTsKfQouZGNyLWZpZWxke2Rpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6NXB4OyBtaW4td2lkdGg6MDt9Ci5kY3ItZmllbGQgbGFiZWx7Zm9udC1zaXplOi42OHJlbTsgbGV0dGVyLXNwYWNpbmc6LjA5ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6dmFyKC0taW5rLXNvZnQpOyBmb250LXdlaWdodDo3MDA7fQouZGNyLWZpZWxkIGlucHV0LC5kY3ItZmllbGQgc2VsZWN0ewogIGZvbnQ6aW5oZXJpdDsgZm9udC1zaXplOi45MnJlbTsgY29sb3I6dmFyKC0taW5rKTsgYmFja2dyb3VuZDp2YXIoLS1wYXBlcik7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgYm9yZGVyLXJhZGl1czo5cHg7IHBhZGRpbmc6OXB4IDExcHg7IHdpZHRoOjEwMCU7CiAgYXBwZWFyYW5jZTpub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsKfQouZGNyLWZpZWxkIHNlbGVjdHsKICBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgMTIgOCclM0UlM0NwYXRoIGQ9J00xIDFsNSA1IDUtNScgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjM1YjZiNzgnIHN0cm9rZS13aWR0aD0nMS42Jy8lM0UlM0Mvc3ZnJTNFIik7CiAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDExcHggY2VudGVyOyBwYWRkaW5nLXJpZ2h0OjMwcHg7IGN1cnNvcjpwb2ludGVyOwp9Ci5kY3ItZmllbGQgaW5wdXQ6Zm9jdXMsLmRjci1maWVsZCBzZWxlY3Q6Zm9jdXN7b3V0bGluZTpub25lOyBib3JkZXItY29sb3I6dmFyKC0tYmx1ZS01MDApOyBib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDAsMTYzLDIyNCwuMjIpO30KLmRjci1yZXNldHsKICBmb250OmluaGVyaXQ7IGZvbnQtc2l6ZTouODVyZW07IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmx1ZS03MDApOwogIGJhY2tncm91bmQ6dmFyKC0tcGFwZXIpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjlweDsKICBwYWRkaW5nOjlweCAxNHB4OyBjdXJzb3I6cG9pbnRlcjsgd2hpdGUtc3BhY2U6bm93cmFwOyBoZWlnaHQ6NDBweDsKfQouZGNyLXJlc2V0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlLTUwMCk7IGNvbG9yOnZhcigtLWJsdWUtNTAwKTt9Ci5kY3ItcmVzZXQ6YWN0aXZle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCk7fQoKLmRjci1jb3VudHttYXJnaW46MTRweCA0cHggNHB4OyBmb250LXNpemU6Ljg1cmVtOyBjb2xvcjp2YXIoLS1pbmstc29mdCk7fQouZGNyLWNvdW50IHN0cm9uZ3tjb2xvcjp2YXIoLS1pbmspO30KCi5kY3ItY2F0e21hcmdpbi10b3A6MTRweDsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpOyBvdmVyZmxvdzpoaWRkZW47fQouZGNyLWNhdD5zdW1tYXJ5ewogIGxpc3Qtc3R5bGU6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IHBhZGRpbmc6MTRweCAxNnB4OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7CiAgYmFja2dyb3VuZDp2YXIoLS1wYXBlci0yKTsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHZhcigtLV9jLHZhcigtLWJsdWUtOTAwKSk7Cn0KLmRjci1jYXQ+c3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcntkaXNwbGF5Om5vbmU7fQouZGNyLWNhdF9fbmFtZXtmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxLjAycmVtOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IGNvbG9yOnZhcigtLWJsdWUtOTAwKTt9Ci5kY3ItY2F0X190YWd7Zm9udC1zaXplOi42NnJlbTsgZm9udC13ZWlnaHQ6NzAwOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOi4wOGVtOwogIGNvbG9yOiNmZmY7IGJhY2tncm91bmQ6dmFyKC0tX2MsdmFyKC0tYmx1ZS05MDApKTsgcGFkZGluZzozcHggOHB4OyBib3JkZXItcmFkaXVzOjk5OXB4O30KLmRjci1jYXRfX257bWFyZ2luLWxlZnQ6YXV0bzsgZm9udC1zaXplOi44MnJlbTsgY29sb3I6dmFyKC0taW5rLXNvZnQpOyBmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7fQouZGNyLWNhdF9fY2hldnt3aWR0aDoxMnB4OyBoZWlnaHQ6MTJweDsgYm9yZGVyLXJpZ2h0OjJweCBzb2xpZCB2YXIoLS1pbmstc29mdCk7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIHZhcigtLWluay1zb2Z0KTsKICB0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE4cyBlYXNlOyBtYXJnaW4tbGVmdDo0cHg7fQouZGNyLWNhdFtvcGVuXSAuZGNyLWNhdF9fY2hldnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpO30KCi5kY3ItdHJhY2t7cGFkZGluZzoxMnB4IDE2cHggM3B4OyBmb250LXNpemU6LjcycmVtOyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4xMWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWJsdWUtNzAwKTt9CgouZGNyLXJvd3sKICBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoyMDBweCAxZnIgMTUwcHggMTkwcHg7IGdhcDo2cHggMThweDsgYWxpZ24taXRlbXM6c3RhcnQ7CiAgcGFkZGluZzoxMnB4IDE2cHg7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpOwp9Ci5kY3Itcm93OmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXRvcDpub25lO30KLmRjci1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1wYXBlci0yKTt9Ci5kY3ItZGlzY3tmb250LXNpemU6LjgycmVtOyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWJsdWUtNzAwKTsgcGFkZGluZy10b3A6MXB4O30KLmRjci13aG97bWluLXdpZHRoOjA7fQoKLyogdGVhbSA9IGFsbCByaWRlcnMgZXF1YWxseSBwcm9taW5lbnQgKi8KLmRjci10ZWFtLWV5ZWJyb3d7Zm9udC1zaXplOi42MnJlbTsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWluay1zb2Z0KTsgbWFyZ2luLWJvdHRvbTozcHg7fQouZGNyLXJpZGVye2Rpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6YmFzZWxpbmU7IGdhcDo3cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0taW5rKTsgZm9udC1zaXplOi45NHJlbTsgbGluZS1oZWlnaHQ6MS40O30KLmRjci1yaWRlcjo6YmVmb3Jle2NvbnRlbnQ6IiI7IGZsZXg6MCAwIGF1dG87IHdpZHRoOjVweDsgaGVpZ2h0OjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYmx1ZS01MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTt9Ci5kY3ItYXRobGV0ZXtmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWluayk7IGZvbnQtc2l6ZTouOThyZW07fQouZGNyLWNsdWJ7Zm9udC1zaXplOi44NHJlbTsgY29sb3I6dmFyKC0taW5rLXNvZnQpOyBtYXJnaW4tdG9wOjJweDt9CgouZGNyLXJlc3VsdHsKICBmb250LXdlaWdodDo4MDA7IGZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBjb2xvcjp2YXIoLS1ibHVlLTkwMCk7CiAgZm9udC1zaXplOjEuMDRyZW07IHdoaXRlLXNwYWNlOm5vd3JhcDsKfQouZGNyLXJlc3VsdDo6YWZ0ZXJ7Y29udGVudDoiIjsgZGlzcGxheTpibG9jazsgaGVpZ2h0OjNweDsgd2lkdGg6MzRweDsgbWFyZ2luLXRvcDo0cHg7IGJvcmRlci1yYWRpdXM6MnB4OwogIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLWJsdWUtNTAwKSx0cmFuc3BhcmVudCk7fQouZGNyLW1ldGF7Zm9udC1zaXplOi44MnJlbTsgY29sb3I6dmFyKC0taW5rLXNvZnQpOyB0ZXh0LWFsaWduOnJpZ2h0O30KLmRjci1tZXRhIC5kY3ItZGF0ZXtkaXNwbGF5OmJsb2NrOyBmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7IGNvbG9yOnZhcigtLWluayk7IGZvbnQtd2VpZ2h0OjYwMDt9Ci5kY3ItbWV0YSAuZGNyLXBsYWNle2Rpc3BsYXk6YmxvY2s7fQoKbWFyay5kY3ItaGx7YmFja2dyb3VuZDpyZ2JhKDAsMTYzLDIyNCwuMjYpOyBjb2xvcjppbmhlcml0OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzowIDFweDt9CgouZGNyLWVtcHR5e21hcmdpbjoyMnB4IDRweDsgcGFkZGluZzoyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6dmFyKC0taW5rLXNvZnQpOwogIGJhY2tncm91bmQ6dmFyKC0tcGFwZXItMik7IGJvcmRlcjoxcHggZGFzaGVkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyk7fQoKLmRjci1mb290e21hcmdpbi10b3A6MjBweDsgcGFkZGluZzoxNnB4IDRweCA2cHg7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpOwogIGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDo2cHggMjBweDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47CiAgZm9udC1zaXplOi43OHJlbTsgY29sb3I6dmFyKC0taW5rLXNvZnQpO30KCi8qIHBlci1yb3cgYWRtaW4gY29udHJvbHMgKGhpZGRlbiB1bmxlc3MgYWRtaW4gbW9kZSkgKi8KLmRjci1yb3dfX2FkbWlue2Rpc3BsYXk6bm9uZTsgZ3JpZC1jb2x1bW46MSAvIC0xOyBnYXA6OHB4OyBtYXJnaW4tdG9wOjZweDt9Ci5kY3ItLWFkbWluIC5kY3Itcm93X19hZG1pbntkaXNwbGF5OmZsZXg7fQouZGNyLS1hZG1pbiAuZGNyLXJvd3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjAwcHggMWZyIDE1MHB4IDE5MHB4O30KCi8qIC0tLS0tLS0tLS0gQURNSU4gUEFORUwgLS0tLS0tLS0tLSAqLwouZGNyLWFkbWlue21hcmdpbi10b3A6MjZweDsgYm9yZGVyOjJweCBkYXNoZWQgdmFyKC0tYmx1ZS01MDApOyBib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyk7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZDojZjdmYmZlO30KLmRjci1hZG1pbl9fdG9nZ2xle3dpZHRoOjEwMCU7IHRleHQtYWxpZ246bGVmdDsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlcjowOyBiYWNrZ3JvdW5kOnZhcigtLWJsdWUtOTAwKTsgY29sb3I6I2ZmZjsKICBwYWRkaW5nOjE0cHggMThweDsgZm9udDppbmhlcml0OyBmb250LXdlaWdodDo3MDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDt9Ci5kY3ItYWRtaW5fX3RvZ2dsZSBzbWFsbHtmb250LXdlaWdodDo0MDA7IG9wYWNpdHk6Ljc1OyBmb250LXNpemU6LjcycmVtOyBtYXJnaW4tbGVmdDphdXRvOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsZXR0ZXItc3BhY2luZzowO30KLmRjci1hZG1pbl9fYm9keXtwYWRkaW5nOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDt9Ci5kY3ItYWRtaW5fX2NhcmR7YmFja2dyb3VuZDp2YXIoLS1wYXBlcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6MTFweDsgcGFkZGluZzoxNXB4O30KLmRjci1hZG1pbl9fY2FyZCBoM3ttYXJnaW46MCAwIDRweDsgZm9udC1zaXplOi45OHJlbTsgY29sb3I6dmFyKC0tYmx1ZS05MDApO30KLmRjci1hZG1pbl9faGludHttYXJnaW46MCAwIDEycHg7IGZvbnQtc2l6ZTouODJyZW07IGNvbG9yOnZhcigtLWluay1zb2Z0KTt9Ci5kY3ItYWRtaW5fX2hpbnQgY29kZXtiYWNrZ3JvdW5kOnZhcigtLXBhcGVyLTIpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzoxcHggNnB4OyBmb250LXNpemU6Ljg1ZW07fQouZGNyLWFkbWluX19ncmlke2Rpc3BsYXk6Z3JpZDsgZ2FwOjExcHg7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpO30KLmRjci1hZntkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjVweDsgbWluLXdpZHRoOjA7fQouZGNyLWFmLS0ye2dyaWQtY29sdW1uOnNwYW4gMjt9IC5kY3ItYWYtLWZ1bGx7Z3JpZC1jb2x1bW46MSAvIC0xO30KLmRjci1hZiBsYWJlbHtmb250LXNpemU6LjY2cmVtOyBsZXR0ZXItc3BhY2luZzouMDdlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjp2YXIoLS1pbmstc29mdCk7IGZvbnQtd2VpZ2h0OjcwMDt9Ci5kY3ItYWYgaW5wdXQsLmRjci1hZiBzZWxlY3R7Zm9udDppbmhlcml0OyBmb250LXNpemU6LjlyZW07IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7IGJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjhweCAxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLXBhcGVyKTsgY29sb3I6dmFyKC0taW5rKTsgd2lkdGg6MTAwJTt9Ci5kY3ItYWYgaW5wdXQ6Zm9jdXMsLmRjci1hZiBzZWxlY3Q6Zm9jdXN7b3V0bGluZTpub25lOyBib3JkZXItY29sb3I6dmFyKC0tYmx1ZS01MDApOyBib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDAsMTYzLDIyNCwuMik7fQouZGNyLWFkbWluX19yb3d7ZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luLXRvcDoxMnB4O30KLmRjci1idG57Zm9udDppbmhlcml0OyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZTouODhyZW07IGJvcmRlci1yYWRpdXM6OXB4OyBwYWRkaW5nOjlweCAxNXB4OyBjdXJzb3I6cG9pbnRlcjsKICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJsdWUtOTAwKTsgYmFja2dyb3VuZDp2YXIoLS1ibHVlLTkwMCk7IGNvbG9yOiNmZmY7fQouZGNyLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJsdWUtNzAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWJsdWUtNzAwKTt9Ci5kY3ItYnRuOmFjdGl2ZXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxcHgpO30KLmRjci1idG4tLWdob3N0e2JhY2tncm91bmQ6dmFyKC0tcGFwZXIpOyBjb2xvcjp2YXIoLS1ibHVlLTcwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1saW5lKTt9Ci5kY3ItYnRuLS1naG9zdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYmx1ZS01MDApOyBjb2xvcjp2YXIoLS1ibHVlLTUwMCk7fQouZGNyLWJ0bi0tc217cGFkZGluZzo1cHggMTBweDsgZm9udC1zaXplOi43OHJlbTt9Ci5kY3ItYnRuLS1kZWx7YmFja2dyb3VuZDp2YXIoLS1wYXBlcik7IGNvbG9yOnZhcigtLXJlZCk7IGJvcmRlci1jb2xvcjojZjNkMWQ2O30KLmRjci1hZG1pbl9fbXNne2ZvbnQtc2l6ZTouODJyZW07IGNvbG9yOnZhcigtLWJsdWUtNzAwKTt9Ci5kY3ItYWRtaW5fX21zZy5lcnJ7Y29sb3I6dmFyKC0tcmVkKTt9Ci5kY3ItYWYgaW5wdXRbdHlwZT1maWxlXXtwYWRkaW5nOjZweDt9CgpAbWVkaWEgKG1heC13aWR0aDo3NjBweCl7CiAgLmRjci10b29sYmFye2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyOyBwb3NpdGlvbjpzdGF0aWM7fQogIC5kY3ItZmllbGQtLXNlYXJjaHtncmlkLWNvbHVtbjoxIC8gLTE7fQogIC5kY3ItcmVzZXR7Z3JpZC1jb2x1bW46MSAvIC0xOyBoZWlnaHQ6NDJweDt9CiAgLmRjci1yb3d7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvOyBnYXA6MnB4IDEycHg7IHBhZGRpbmc6MTRweCAxNnB4O30KICAuZGNyLWRpc2N7Z3JpZC1jb2x1bW46MSAvIC0xOyBvcmRlcjoxOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOi4wNmVtOyBmb250LXNpemU6LjdyZW07fQogIC5kY3Itd2hve2dyaWQtY29sdW1uOjE7IG9yZGVyOjI7fQogIC5kY3ItcmVzdWx0e2dyaWQtY29sdW1uOjI7IG9yZGVyOjI7IHRleHQtYWxpZ246cmlnaHQ7IGFsaWduLXNlbGY6Y2VudGVyO30KICAuZGNyLXJlc3VsdDo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6YXV0bzt9CiAgLmRjci1tZXRhe2dyaWQtY29sdW1uOjEgLyAtMTsgb3JkZXI6MzsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjZweDt9CiAgLmRjci1tZXRhIC5kY3ItZGF0ZXtkaXNwbGF5OmlubGluZTsgbWFyZ2luLXJpZ2h0OjhweDt9CiAgLmRjci1tZXRhIC5kY3ItcGxhY2V7ZGlzcGxheTppbmxpbmU7fQogIC5kY3ItLWFkbWluIC5kY3Itcm93X19hZG1pbntvcmRlcjo0OyBncmlkLWNvbHVtbjoxIC8gLTE7fQogIC5kY3ItYWRtaW5fX2dyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7fQogIC5kY3ItYWYtLTJ7Z3JpZC1jb2x1bW46c3BhbiAyO30KfQpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuZGNyICp7dHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7fX0KPC9zdHlsZT4KCjxzY3JpcHQ+CihmdW5jdGlvbigpewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgUkVDT1JEUyA9IF9fREFUQV9fOwogIHZhciBQQUdFX1RQTF9CNjQgPSAiX19UUExfQjY0X18iOwoKICB2YXIgQ0FUX09SREVSPXsiTVXFvUkiOjEsIsW9RU5ZIjoyLCJKVU5JT8WYSSI6MywiSlVOSU9SS1kiOjQsIktBREVUSSI6NSwiS0FERVRLWSI6NiwiTUFTVEVSUyAtIEUiOjcsIk1BU1RFUlMgLSBDIjo4fTsKICB2YXIgVFJBQ0tfT1JERVI9eyJCZXogcm96bGnFoWVuw60iOjEsIk90ZXbFmWVuw6EiOjIsIktyeXTDoSI6M307CiAgdmFyIENBVF9DT0xPUj17IkRvc3DEm2zDrSI6InZhcigtLWMtZG9zcCkiLCJKdW5pb8WZaSI6InZhcigtLWMtanVuKSIsIkp1bmlvcmt5IjoidmFyKC0tYy1qdW4pIiwiS2FkZXRpIjoidmFyKC0tYy1rYWQpIiwiS2FkZXRreSI6InZhcigtLWMta2FkKSIsIk1hc3RlcnMiOiJ2YXIoLS1jLW1hc3QpIn07CgogIGZ1bmN0aW9uIGdlbmRlck9mKGMpe3JldHVybiAoYz09PSLFvUVOWSJ8fGM9PT0iSlVOSU9SS1kifHxjPT09IktBREVUS1kiKT8ixb1lbnkiOiJNdcW+aSI7fQogIGZ1bmN0aW9uIGFnZU9mKGMpe3JldHVybiB7Ik1Vxb1JIjoiRG9zcMSbbMOtIiwixb1FTlkiOiJEb3NwxJtsw60iLCJKVU5JT8WYSSI6Ikp1bmlvxZlpIiwiSlVOSU9SS1kiOiJKdW5pb3JreSIsIktBREVUSSI6IkthZGV0aSIsIktBREVUS1kiOiJLYWRldGt5In1bY118fCJNYXN0ZXJzIjt9CiAgZnVuY3Rpb24gZGlzY0tleShkKXsKICAgIHZhciBkbD0oZHx8IiIpLnRvTG93ZXJDYXNlKCk7CiAgICBpZihkbC5pbmRleE9mKCJ0ZWFtIHNwcmludCIpPi0xKSByZXR1cm4gMjUxOwogICAgaWYoZGwuaW5kZXhPZigiaG9kaW5hIik+LTEpe3ZhciBiPTkwMDAwMDsKICAgICAgaWYoZGwuaW5kZXhPZigiZGVybnkiKT4tMSlyZXR1cm4gYiszOyBpZihkbC5pbmRleE9mKCJ2b2RpxI1lbSIpPi0xKXJldHVybiBiKzI7CiAgICAgIGlmKGRsLmluZGV4T2YoInBldm7DvW0iKT4tMSlyZXR1cm4gYisxOyByZXR1cm4gYjt9CiAgICB2YXIgbT0oZHx8IiIpLm1hdGNoKC8oW1xkLl0rKVxzKm0vKTsKICAgIGlmKG0pe3ZhciBuPXBhcnNlSW50KG1bMV0ucmVwbGFjZSgvXC4vZywiIiksMTApfHwwLG89MDsKICAgICAgaWYoZGwuaW5kZXhPZigicGV2bsO9Iik+LTEpbys9MC4zOyBpZihkbC5pbmRleE9mKCJsZXRtw70iKT4tMSlvKz0wLjE7IGlmKGRsLmluZGV4T2YoImRydcW+c3R2YSIpPi0xKW8rPTAuNTsKICAgICAgcmV0dXJuIG4rbzt9CiAgICByZXR1cm4gNTAwMDAwOwogIH0KICBmdW5jdGlvbiBlbnJpY2gocil7CiAgICByLmdlbmRlcj1nZW5kZXJPZihyLmNhdGVnb3J5KTsgci5hZ2Vncm91cD1hZ2VPZihyLmNhdGVnb3J5KTsKICAgIHIuY2tleT1DQVRfT1JERVJbci5jYXRlZ29yeV18fDk7IHIudGtleT1UUkFDS19PUkRFUltyLnRyYWNrXXx8OTsgci5ka2V5PWRpc2NLZXkoci5kaXNjaXBsaW5lKTsKICAgIGlmKCFyLm1lbWJlcnMpIHIubWVtYmVycz1bXTsKICAgIHJldHVybiByOwogIH0KICBmdW5jdGlvbiBzb3J0UmVjcygpeyBSRUNPUkRTLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gKGEuY2tleS1iLmNrZXkpfHwoYS50a2V5LWIudGtleSl8fChhLmRrZXktYi5ka2V5KTt9KTsgfQogIFJFQ09SRFMuZm9yRWFjaChlbnJpY2gpOyBzb3J0UmVjcygpOwoKICB2YXIgJD1mdW5jdGlvbihpZCl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTt9OwogIHZhciBib2R5PSQoImRjci1ib2R5IiksIGNvdW50RWw9JCgiZGNyLWNvdW50IiksIGVtcHR5RWw9JCgiZGNyLWVtcHR5Iik7CiAgdmFyIHFFbD0kKCJkY3ItcSIpLCBnRWw9JCgiZGNyLWdlbmRlciIpLCBhRWw9JCgiZGNyLWFnZSIpLCB0RWw9JCgiZGNyLXRyYWNrIiksIGRFbD0kKCJkY3ItZGlzYyIpOwogIHZhciBhZG1pbk1vZGU9ZmFsc2UsIGVkaXRJbmRleD0tMTsKCiAgZnVuY3Rpb24gZXNjKHMpe3JldHVybiAoc3x8IiIpLnJlcGxhY2UoL1smPD4iXS9nLGZ1bmN0aW9uKGMpe3JldHVybnsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsifVtjXTt9KTt9CiAgZnVuY3Rpb24gaGwocyxxKXsKICAgIHM9ZXNjKHMpOyBpZighcSkgcmV0dXJuIHM7CiAgICB0cnl7IHJldHVybiBzLnJlcGxhY2UobmV3IFJlZ0V4cCgiKCIrcS5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpKyIpIiwiaWciKSwiPG1hcmsgY2xhc3M9J2Rjci1obCc+JDE8L21hcms+Iik7IH0KICAgIGNhdGNoKGUpeyByZXR1cm4gczsgfQogIH0KICBmdW5jdGlvbiBvcHQoc2VsLHZhbCxsYWJlbCl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7by52YWx1ZT12YWw7by50ZXh0Q29udGVudD1sYWJlbHx8dmFsO3NlbC5hcHBlbmRDaGlsZChvKTt9CgogIGZ1bmN0aW9uIGJ1aWxkRmlsdGVycygpewogICAgdmFyIGtlZXA9e2c6Z0VsLnZhbHVlLGE6YUVsLnZhbHVlLHQ6dEVsLnZhbHVlLGQ6ZEVsLnZhbHVlfTsKICAgIFtnRWwsYUVsLHRFbCxkRWxdLmZvckVhY2goZnVuY3Rpb24ocyl7IHMubGVuZ3RoPTE7IH0pOwogICAgdmFyIHNlZW47CiAgICBzZWVuPXt9OyBSRUNPUkRTLmZvckVhY2goZnVuY3Rpb24ocil7IGlmKCFzZWVuW3IuZ2VuZGVyXSl7c2VlbltyLmdlbmRlcl09MTsgb3B0KGdFbCxyLmdlbmRlcik7fSB9KTsKICAgIHNlZW49e307IFJFQ09SRFMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY2tleS1iLmNrZXk7fSkuZm9yRWFjaChmdW5jdGlvbihyKXsgaWYoIXNlZW5bci5hZ2Vncm91cF0pe3NlZW5bci5hZ2Vncm91cF09MTsgb3B0KGFFbCxyLmFnZWdyb3VwKTt9IH0pOwogICAgWyJCZXogcm96bGnFoWVuw60iLCJPdGV2xZllbsOhIiwiS3J5dMOhIl0uZm9yRWFjaChmdW5jdGlvbih0KXsgaWYoUkVDT1JEUy5zb21lKGZ1bmN0aW9uKHIpe3JldHVybiByLnRyYWNrPT09dDt9KSkgb3B0KHRFbCx0LCB0PT09IkJleiByb3psacWhZW7DrSI\/IkJleiByb3psacWhZW7DrSBkcmFoIjp0KyIgZHLDoWhhIik7IH0pOwogICAgc2Vlbj17fTsgUkVDT1JEUy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ka2V5LWIuZGtleTt9KS5mb3JFYWNoKGZ1bmN0aW9uKHIpeyBpZighc2VlbltyLmRpc2NpcGxpbmVdKXtzZWVuW3IuZGlzY2lwbGluZV09MTsgb3B0KGRFbCxyLmRpc2NpcGxpbmUpO30gfSk7CiAgICBmdW5jdGlvbiByZXN0b3JlKHMsdil7IGZvcih2YXIgaT0wO2k8cy5vcHRpb25zLmxlbmd0aDtpKyspeyBpZihzLm9wdGlvbnNbaV0udmFsdWU9PT12KXtzLnZhbHVlPXY7cmV0dXJuO30gfSBzLnZhbHVlPSIiOyB9CiAgICByZXN0b3JlKGdFbCxrZWVwLmcpOyByZXN0b3JlKGFFbCxrZWVwLmEpOyByZXN0b3JlKHRFbCxrZWVwLnQpOyByZXN0b3JlKGRFbCxrZWVwLmQpOwogIH0KICBmdW5jdGlvbiBidWlsZERhdGFsaXN0cygpewogICAgdmFyIGM9e30sZD17fTsgUkVDT1JEUy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2Nbci5jYXRlZ29yeV09MTtkW3IuZGlzY2lwbGluZV09MTt9KTsKICAgIGlmKCQoImRsLWNhdCIpKSAkKCJkbC1jYXQiKS5pbm5lckhUTUw9T2JqZWN0LmtleXMoYykubWFwKGZ1bmN0aW9uKHgpe3JldHVybiAiPG9wdGlvbiB2YWx1ZT0nIitlc2MoeCkrIic+Ijt9KS5qb2luKCIiKTsKICAgIGlmKCQoImRsLWRpc2MiKSkgJCgiZGwtZGlzYyIpLmlubmVySFRNTD1PYmplY3Qua2V5cyhkKS5zb3J0KCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiAiPG9wdGlvbiB2YWx1ZT0nIitlc2MoeCkrIic+Ijt9KS5qb2luKCIiKTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoZXMocixmKXsKICAgIGlmKGYuZ2VuZGVyICYmIHIuZ2VuZGVyIT09Zi5nZW5kZXIpIHJldHVybiBmYWxzZTsKICAgIGlmKGYuYWdlICYmIHIuYWdlZ3JvdXAhPT1mLmFnZSkgcmV0dXJuIGZhbHNlOwogICAgaWYoZi50cmFjayAmJiByLnRyYWNrIT09Zi50cmFjaykgcmV0dXJuIGZhbHNlOwogICAgaWYoZi5kaXNjICYmIHIuZGlzY2lwbGluZSE9PWYuZGlzYykgcmV0dXJuIGZhbHNlOwogICAgaWYoZi5xKXsKICAgICAgdmFyIGhheT1bci5hdGhsZXRlLHIuY2x1YixyLnBsYWNlLHIuZGlzY2lwbGluZSxyLnJlc3VsdCxyLmRhdGVdLmNvbmNhdChyLm1lbWJlcnN8fFtdKS5qb2luKCIgIikudG9Mb3dlckNhc2UoKTsKICAgICAgaWYoaGF5LmluZGV4T2YoZi5xKT09PS0xKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGZ1bmN0aW9uIHdob0h0bWwocixxKXsKICAgIGlmKHIubWVtYmVycyAmJiByLm1lbWJlcnMubGVuZ3RoKXsKICAgICAgdmFyIGFsbD1bci5hdGhsZXRlXS5jb25jYXQoci5tZW1iZXJzKTsKICAgICAgdmFyIGxpc3Q9YWxsLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gIjxzcGFuIGNsYXNzPSdkY3ItcmlkZXInPiIraGwobixxKSsiPC9zcGFuPiI7fSkuam9pbigiIik7CiAgICAgIHJldHVybiAiPGRpdiBjbGFzcz0nZGNyLXRlYW0tZXllYnJvdyc+RHJ1xb5zdHZvPC9kaXY+IitsaXN0KyhyLmNsdWI\/IjxkaXYgY2xhc3M9J2Rjci1jbHViJz4iK2hsKHIuY2x1YixxKSsiPC9kaXY+IjoiIik7CiAgICB9CiAgICByZXR1cm4gIjxkaXYgY2xhc3M9J2Rjci1hdGhsZXRlJz4iK2hsKHIuYXRobGV0ZSxxKSsiPC9kaXY+Iisoci5jbHViPyI8ZGl2IGNsYXNzPSdkY3ItY2x1Yic+IitobChyLmNsdWIscSkrIjwvZGl2PiI6IiIpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj17cTpxRWwudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCksIGdlbmRlcjpnRWwudmFsdWUsIGFnZTphRWwudmFsdWUsIHRyYWNrOnRFbC52YWx1ZSwgZGlzYzpkRWwudmFsdWV9OwogICAgdmFyIHE9Zi5xOwogICAgdmFyIHNob3duPVtdOyBSRUNPUkRTLmZvckVhY2goZnVuY3Rpb24ocixpKXsgaWYobWF0Y2hlcyhyLGYpKXsgci5faT1pOyBzaG93bi5wdXNoKHIpO30gfSk7CgogICAgY291bnRFbC5pbm5lckhUTUw9IlpvYnJhemVubyA8c3Ryb25nPiIrc2hvd24ubGVuZ3RoKyI8L3N0cm9uZz4geiZuYnNwOyIrUkVDT1JEUy5sZW5ndGgrIiByZWtvcmTFryI7CiAgICBib2R5LmlubmVySFRNTD0iIjsgZW1wdHlFbC5oaWRkZW4gPSBzaG93bi5sZW5ndGg+MDsKICAgIGlmKCFzaG93bi5sZW5ndGgpIHJldHVybjsKCiAgICB2YXIgY2F0cz1bXSwgYnlDYXQ9e307CiAgICBzaG93bi5mb3JFYWNoKGZ1bmN0aW9uKHIpeyBpZighYnlDYXRbci5jYXRlZ29yeV0pe2J5Q2F0W3IuY2F0ZWdvcnldPXtjYXQ6cixyb3dzOltdfTsgY2F0cy5wdXNoKHIuY2F0ZWdvcnkpO30gYnlDYXRbci5jYXRlZ29yeV0ucm93cy5wdXNoKHIpOyB9KTsKICAgIGNhdHMuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBieUNhdFthXS5jYXQuY2tleS1ieUNhdFtiXS5jYXQuY2tleTt9KTsKCiAgICBjYXRzLmZvckVhY2goZnVuY3Rpb24oY24pewogICAgICB2YXIgZ3JwPWJ5Q2F0W2NuXSwgZmlyc3Q9Z3JwLmNhdDsKICAgICAgdmFyIGRldD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZXRhaWxzIik7IGRldC5jbGFzc05hbWU9ImRjci1jYXQiOyBkZXQub3Blbj10cnVlOwogICAgICBkZXQuc3R5bGUuc2V0UHJvcGVydHkoIi0tX2MiLCBDQVRfQ09MT1JbZmlyc3QuYWdlZ3JvdXBdfHwidmFyKC0tYmx1ZS05MDApIik7CiAgICAgIHZhciBzdW09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3VtbWFyeSIpOwogICAgICBzdW0uaW5uZXJIVE1MPSI8c3BhbiBjbGFzcz0nZGNyLWNhdF9fbmFtZSc+Iitlc2MoY24uY2hhckF0KDApK2NuLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpKyI8L3NwYW4+IisKICAgICAgICAiPHNwYW4gY2xhc3M9J2Rjci1jYXRfX3RhZyc+Iitlc2MoZmlyc3QuYWdlZ3JvdXApKyI8L3NwYW4+IisKICAgICAgICAiPHNwYW4gY2xhc3M9J2Rjci1jYXRfX24nPiIrZ3JwLnJvd3MubGVuZ3RoKyIgcmVrb3Jkxa88L3NwYW4+IisKICAgICAgICAiPHNwYW4gY2xhc3M9J2Rjci1jYXRfX2NoZXYnPjwvc3Bhbj4iOwogICAgICBkZXQuYXBwZW5kQ2hpbGQoc3VtKTsKCiAgICAgIHZhciB0cmFja3M9W10sIGJ5VHJhY2s9e307CiAgICAgIGdycC5yb3dzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gKGEudGtleS1iLnRrZXkpfHwoYS5ka2V5LWIuZGtleSk7fSk7CiAgICAgIGdycC5yb3dzLmZvckVhY2goZnVuY3Rpb24ocil7IGlmKCFieVRyYWNrW3IudHJhY2tdKXtieVRyYWNrW3IudHJhY2tdPVtdO3RyYWNrcy5wdXNoKHIudHJhY2spO30gYnlUcmFja1tyLnRyYWNrXS5wdXNoKHIpOyB9KTsKCiAgICAgIHRyYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKHRuKXsKICAgICAgICBpZih0biE9PSJCZXogcm96bGnFoWVuw60iIHx8IHRyYWNrcy5sZW5ndGg+MSl7CiAgICAgICAgICB2YXIgdGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IHRoLmNsYXNzTmFtZT0iZGNyLXRyYWNrIjsKICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gdG49PT0iQmV6IHJvemxpxaFlbsOtIiA\/ICJCZXogcm96bGnFoWVuw60gZHJhaCIgOiAodG4rIiBkcsOhaGEiKTsKICAgICAgICAgIGRldC5hcHBlbmRDaGlsZCh0aCk7CiAgICAgICAgfQogICAgICAgIGJ5VHJhY2tbdG5dLmZvckVhY2goZnVuY3Rpb24ocil7CiAgICAgICAgICB2YXIgcm93PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyByb3cuY2xhc3NOYW1lPSJkY3Itcm93IjsKICAgICAgICAgIHJvdy5pbm5lckhUTUw9CiAgICAgICAgICAgICI8ZGl2IGNsYXNzPSdkY3ItZGlzYyc+IitobChyLmRpc2NpcGxpbmUscSkrIjwvZGl2PiIrCiAgICAgICAgICAgICI8ZGl2IGNsYXNzPSdkY3Itd2hvJz4iK3dob0h0bWwocixxKSsiPC9kaXY+IisKICAgICAgICAgICAgIjxkaXYgY2xhc3M9J2Rjci1yZXN1bHQnPiIraGwoci5yZXN1bHQscSkrIjwvZGl2PiIrCiAgICAgICAgICAgICI8ZGl2IGNsYXNzPSdkY3ItbWV0YSc+IisKICAgICAgICAgICAgICAoci5kYXRlPyI8c3BhbiBjbGFzcz0nZGNyLWRhdGUnPiIraGwoci5kYXRlLHEpKyI8L3NwYW4+IjoiIikrCiAgICAgICAgICAgICAgKHIucGxhY2U\/IjxzcGFuIGNsYXNzPSdkY3ItcGxhY2UnPiIraGwoci5wbGFjZSxxKSsiPC9zcGFuPiI6IiIpKwogICAgICAgICAgICAiPC9kaXY+IisKICAgICAgICAgICAgIjxkaXYgY2xhc3M9J2Rjci1yb3dfX2FkbWluJz4iKwogICAgICAgICAgICAgICI8YnV0dG9uIGNsYXNzPSdkY3ItYnRuIGRjci1idG4tLWdob3N0IGRjci1idG4tLXNtJyBkYXRhLWVkaXQ9JyIrci5faSsiJz5VcHJhdml0PC9idXR0b24+IisKICAgICAgICAgICAgICAiPGJ1dHRvbiBjbGFzcz0nZGNyLWJ0biBkY3ItYnRuLS1kZWwgZGNyLWJ0bi0tc20nIGRhdGEtZGVsPSciK3IuX2krIic+U21hemF0PC9idXR0b24+IisKICAgICAgICAgICAgIjwvZGl2PiI7CiAgICAgICAgICBkZXQuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZGV0KTsKICAgIH0pOwogIH0KCiAgW3FFbCxnRWwsYUVsLHRFbCxkRWxdLmZvckVhY2goZnVuY3Rpb24oZWwpeyBlbC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIscmVuZGVyKTsgZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixyZW5kZXIpOyB9KTsKICAkKCJkY3ItcmVzZXQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgcUVsLnZhbHVlPSIiO2dFbC52YWx1ZT0iIjthRWwudmFsdWU9IiI7dEVsLnZhbHVlPSIiO2RFbC52YWx1ZT0iIjtyZW5kZXIoKTsgcUVsLmZvY3VzKCk7IH0pOwoKICBidWlsZEZpbHRlcnMoKTsgcmVuZGVyKCk7CgogIC8qID09PT09PT09PT09PT09PT09PT09PSBBRE1JTiA9PT09PT09PT09PT09PT09PT09PT0gKi8KICBmdW5jdGlvbiBpc0FkbWluKCl7CiAgICB0cnl7CiAgICAgIGlmKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJsb2dnZWQtaW4iKSkgcmV0dXJuIHRydWU7CiAgICAgIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3cGFkbWluYmFyIikpIHJldHVybiB0cnVlOwogICAgICBpZigvWz8mXXJla29yZHktYWRtaW49MS8udGVzdChsb2NhdGlvbi5zZWFyY2gpKSByZXR1cm4gdHJ1ZTsKICAgICAgaWYobG9jYXRpb24uaGFzaC5pbmRleE9mKCJyZWtvcmR5LWFkbWluIik+LTEpIHJldHVybiB0cnVlOwogICAgfWNhdGNoKGUpe30KICAgIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGluaXRBZG1pbigpewogICAgdmFyIHBhbmVsPSQoImRjci1hZG1pbiIpOyBwYW5lbC5oaWRkZW49ZmFsc2U7CiAgICB2YXIgdGdsPSQoImRjci1hZG1pbi10b2dnbGUiKSwgYWJvZHk9JCgiZGNyLWFkbWluLWJvZHkiKTsKICAgIHRnbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsKICAgICAgdmFyIG9wZW49YWJvZHkuaGlkZGVuOwogICAgICBhYm9keS5oaWRkZW49IW9wZW47IHRnbC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCBvcGVuPyJ0cnVlIjoiZmFsc2UiKTsKICAgICAgYWRtaW5Nb2RlPW9wZW47ICQoImRjci1hcHAiKS5jbGFzc0xpc3QudG9nZ2xlKCJkY3ItLWFkbWluIiwgb3Blbik7CiAgICAgIHJlbmRlcigpOwogICAgfSk7CgogICAgYnVpbGREYXRhbGlzdHMoKTsKCiAgICBmdW5jdGlvbiBmaWxsRm9ybShyKXsKICAgICAgJCgiaS1jYXQiKS52YWx1ZT1yP3IuY2F0ZWdvcnk6IiI7ICQoImktdHJhY2siKS52YWx1ZT1yP3IudHJhY2s6IkJleiByb3psacWhZW7DrSI7CiAgICAgICQoImktZGlzYyIpLnZhbHVlPXI\/ci5kaXNjaXBsaW5lOiIiOyAkKCJpLWF0aCIpLnZhbHVlPXI\/ci5hdGhsZXRlOiIiOyAkKCJpLWNsdWIiKS52YWx1ZT1yP3IuY2x1YjoiIjsKICAgICAgJCgiaS1tZW0iKS52YWx1ZT1yJiZyLm1lbWJlcnM\/ci5tZW1iZXJzLmpvaW4oIiwgIik6IiI7ICQoImktcmVzIikudmFsdWU9cj9yLnJlc3VsdDoiIjsKICAgICAgJCgiaS1kYXRlIikudmFsdWU9cj9yLmRhdGU6IiI7ICQoImktcGxhY2UiKS52YWx1ZT1yP3IucGxhY2U6IiI7CiAgICB9CiAgICBmdW5jdGlvbiByZWFkRm9ybSgpewogICAgICB2YXIgbWVtPSgkKCJpLW1lbSIpLnZhbHVlfHwiIikuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHMudHJpbSgpO30pLmZpbHRlcihCb29sZWFuKTsKICAgICAgcmV0dXJuIGVucmljaCh7Y2F0ZWdvcnk6KCQoImktY2F0IikudmFsdWV8fCIiKS50cmltKCksIHRyYWNrOiQoImktdHJhY2siKS52YWx1ZSwKICAgICAgICBkaXNjaXBsaW5lOigkKCJpLWRpc2MiKS52YWx1ZXx8IiIpLnRyaW0oKSwgYXRobGV0ZTooJCgiaS1hdGgiKS52YWx1ZXx8IiIpLnRyaW0oKSwKICAgICAgICBjbHViOigkKCJpLWNsdWIiKS52YWx1ZXx8IiIpLnRyaW0oKSwgbWVtYmVyczptZW0sCiAgICAgICAgcmVzdWx0OigkKCJpLXJlcyIpLnZhbHVlfHwiIikudHJpbSgpLCBkYXRlOigkKCJpLWRhdGUiKS52YWx1ZXx8IiIpLnRyaW0oKSwgcGxhY2U6KCQoImktcGxhY2UiKS52YWx1ZXx8IiIpLnRyaW0oKX0pOwogICAgfQogICAgZnVuY3Rpb24gZm1zZyh0LGVycil7dmFyIG09JCgiZm9ybS1tc2ciKTsgbS50ZXh0Q29udGVudD10OyBtLmNsYXNzTmFtZT0iZGNyLWFkbWluX19tc2ciKyhlcnI\/IiBlcnIiOiIiKTt9CiAgICBmdW5jdGlvbiBhZnRlckNoYW5nZSgpeyBzb3J0UmVjcygpOyBidWlsZEZpbHRlcnMoKTsgYnVpbGREYXRhbGlzdHMoKTsgcmVuZGVyKCk7IH0KCiAgICAkKCJidG4tc2F2ZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogICAgICB2YXIgcj1yZWFkRm9ybSgpOwogICAgICBpZighci5jYXRlZ29yeXx8IXIuZGlzY2lwbGluZXx8IXIuYXRobGV0ZSl7Zm1zZygiVnlwbMWIdGUga2F0ZWdvcmlpLCBkaXNjaXBsw61udSBhIHrDoXZvZG7DrWthLiIsdHJ1ZSk7cmV0dXJuO30KICAgICAgaWYoIUNBVF9PUkRFUltyLmNhdGVnb3J5XSl7Zm1zZygiTmV6bsOhbcOhIGthdGVnb3JpZS4gUG91xb5panRlOiAiK09iamVjdC5rZXlzKENBVF9PUkRFUikuam9pbigiLCAiKSx0cnVlKTtyZXR1cm47fQogICAgICBpZihlZGl0SW5kZXg+PTApe1JFQ09SRFNbZWRpdEluZGV4XT1yOyBlZGl0SW5kZXg9LTE7CiAgICAgICAgJCgiZGNyLWZvcm0tdGl0bGUiKS50ZXh0Q29udGVudD0iUMWZaWRhdCByZWtvcmQiOyAkKCJidG4tc2F2ZSIpLnRleHRDb250ZW50PSJQxZlpZGF0IHJla29yZCI7ICQoImJ0bi1jYW5jZWwiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsgZm1zZygiUmVrb3JkIHVwcmF2ZW4uIik7CiAgICAgIH0gZWxzZSB7UkVDT1JEUy5wdXNoKHIpOyBmbXNnKCJSZWtvcmQgcMWZaWTDoW4uIik7fQogICAgICBmaWxsRm9ybShudWxsKTsgYWZ0ZXJDaGFuZ2UoKTsKICAgIH0pOwogICAgJCgiYnRuLWNhbmNlbCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogICAgICBlZGl0SW5kZXg9LTE7IGZpbGxGb3JtKG51bGwpOyAkKCJkY3ItZm9ybS10aXRsZSIpLnRleHRDb250ZW50PSJQxZlpZGF0IHJla29yZCI7CiAgICAgICQoImJ0bi1zYXZlIikudGV4dENvbnRlbnQ9IlDFmWlkYXQgcmVrb3JkIjsgJCgiYnRuLWNhbmNlbCIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOyBmbXNnKCIiKTsKICAgIH0pOwoKICAgIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpewogICAgICB2YXIgZWQ9ZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWVkaXQiKSwgZGVsPWUudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1kZWwiKTsKICAgICAgaWYoZWQhPT1udWxsKXtlZGl0SW5kZXg9K2VkOyBmaWxsRm9ybShSRUNPUkRTW2VkaXRJbmRleF0pOwogICAgICAgICQoImRjci1mb3JtLXRpdGxlIikudGV4dENvbnRlbnQ9IlVwcmF2aXQgcmVrb3JkIjsgJCgiYnRuLXNhdmUiKS50ZXh0Q29udGVudD0iVWxvxb5pdCB6bcSbbnkiOyAkKCJidG4tY2FuY2VsIikuc3R5bGUuZGlzcGxheT0iIjsKICAgICAgICAkKCJkY3ItYWRtaW4iKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCJ9KTsKICAgICAgfQogICAgICBpZihkZWwhPT1udWxsKXsgaWYoY29uZmlybSgiU21hemF0IHRlbnRvIHJla29yZD8iKSl7UkVDT1JEUy5zcGxpY2UoK2RlbCwxKTsgaWYoZWRpdEluZGV4PT09K2RlbCl7ZWRpdEluZGV4PS0xO2ZpbGxGb3JtKG51bGwpO30gYWZ0ZXJDaGFuZ2UoKTt9IH0KICAgIH0pOwoKICAgIC8qIGV4cG9ydCAqLwogICAgZnVuY3Rpb24gc2xpbSgpeyByZXR1cm4gUkVDT1JEUy5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHtjYXRlZ29yeTpyLmNhdGVnb3J5LHRyYWNrOnIudHJhY2ssZGlzY2lwbGluZTpyLmRpc2NpcGxpbmUsYXRobGV0ZTpyLmF0aGxldGUsY2x1YjpyLmNsdWIsbWVtYmVyczpyLm1lbWJlcnN8fFtdLHJlc3VsdDpyLnJlc3VsdCxkYXRlOnIuZGF0ZSxwbGFjZTpyLnBsYWNlfTt9KTsgfQogICAgZnVuY3Rpb24gYnVpbGRTbmlwcGV0KCl7CiAgICAgIHZhciBiaW49YXRvYihQQUdFX1RQTF9CNjQpLCBieXRlcz1uZXcgVWludDhBcnJheShiaW4ubGVuZ3RoKTsKICAgICAgZm9yKHZhciBpPTA7aTxiaW4ubGVuZ3RoO2krKykgYnl0ZXNbaV09YmluLmNoYXJDb2RlQXQoaSk7CiAgICAgIHZhciB0cGw9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpLmRlY29kZShieXRlcyk7CiAgICAgIHJldHVybiB0cGwucmVwbGFjZSgiX19EQVRBX18iLCBKU09OLnN0cmluZ2lmeShzbGltKCkpKS5yZXBsYWNlKCJfX1RQTF9CNjRfXyIsIFBBR0VfVFBMX0I2NCk7CiAgICB9CiAgICBmdW5jdGlvbiBkb3dubG9hZChuYW1lLHRleHQsdHlwZSl7CiAgICAgIHZhciBibG9iPW5ldyBCbG9iKFt0ZXh0XSx7dHlwZTp0eXBlfHwidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0pOwogICAgICB2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7IGEuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOyBhLmRvd25sb2FkPW5hbWU7IGEuY2xpY2soKTsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1VSTC5yZXZva2VPYmplY3RVUkwoYS5ocmVmKTt9LDEwMDApOwogICAgfQogICAgZnVuY3Rpb24gZW1zZyh0KXt2YXIgbT0kKCJleHAtbXNnIik7IG0udGV4dENvbnRlbnQ9dDsgc2V0VGltZW91dChmdW5jdGlvbigpe20udGV4dENvbnRlbnQ9IiI7fSwyNjAwKTt9CiAgICAkKCJidG4tY29weSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogICAgICB2YXIgY29kZT1idWlsZFNuaXBwZXQoKTsKICAgICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpewogICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvZGUpLnRoZW4oZnVuY3Rpb24oKXtlbXNnKCJaa29ww61yb3bDoW5vIOKAkyB2bG\/FvnRlIGRvIFdQIGJsb2t1IOKAnlZsYXN0bsOtIEhUTUzigJwuIik7fSwKICAgICAgICAgIGZ1bmN0aW9uKCl7ZG93bmxvYWQoImRyYWhvdmUtcmVrb3JkeS13cC5odG1sIixjb2RlLCJ0ZXh0L2h0bWwiKTsgZW1zZygiU2NocsOhbmthIG5lZG9zdHVwbsOhIOKAkyBrw7NkIHN0YcW+ZW4gamFrbyBzb3Vib3IuIik7fSk7CiAgICAgIH0gZWxzZSB7IGRvd25sb2FkKCJkcmFob3ZlLXJla29yZHktd3AuaHRtbCIsY29kZSwidGV4dC9odG1sIik7IGVtc2coIkvDs2Qgc3Rhxb5lbiBqYWtvIHNvdWJvci4iKTsgfQogICAgfSk7CiAgICAkKCJidG4tZGwtaHRtbCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2Rvd25sb2FkKCJkcmFob3ZlLXJla29yZHktd3AuaHRtbCIsYnVpbGRTbmlwcGV0KCksInRleHQvaHRtbCIpOyBlbXNnKCJTb3Vib3IgLmh0bWwgc3Rhxb5lbi4iKTt9KTsKICAgICQoImJ0bi1kbC1qc29uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ZG93bmxvYWQoInJla29yZHkuanNvbiIsSlNPTi5zdHJpbmdpZnkoc2xpbSgpLG51bGwsMSksImFwcGxpY2F0aW9uL2pzb24iKTsgZW1zZygiSlNPTiBzdGHFvmVuLiIpO30pOwoKICAgIC8qIEV4Y2VsIGltcG9ydCAobGF6eSBTaGVldEpTKSAqLwogICAgdmFyIFJFX01JTj0vXGR7MSwyfTpcZHsxLDN9LFxkezEsM31ccyptaW5cLj8vLCBSRV9TRUM9L1xkezEsM30sXGR7MSwzfVxzKnNlY1wuPy8sCiAgICAgICAgUkVfTT0vXGR7MSwzfSg\/OlsgLl1cZHszfSkqKD86LFxkKyk\/XHMqbVxiLywgUkVfREFURT0vXGR7MSwyfVwuXHM\/XGR7MSwyfVwuXHM\/XGR7NH0vOwogICAgdmFyIENBVFM9eyJNVcW9SSI6MSwixb1FTlkiOjEsIkpVTklPxZhJIjoxLCJKVU5JT1JLWSI6MSwiS0FERVRJIjoxLCJLQURFVEtZIjoxfTsKICAgIHZhciBUUkFDS01BUD17IkJleiByb3psacWhZW7DrSBkcmFoOiI6IkJleiByb3psacWhZW7DrSIsIk90ZXbFmWVuw6EgZHLDoWhhOiI6Ik90ZXbFmWVuw6EiLCJLcnl0w6EgZHLDoWhhOiI6IktyeXTDoSJ9OwogICAgdmFyIFVQPSJBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb0iLCBMTz0iYS16w6Etxb7EjcSPw6nEm8OtxYjDs8WZxaHFpcO6xa\/DvcW+IjsKICAgIHZhciBSRV9OQU1FPW5ldyBSZWdFeHAoIl4oKD86WyIrVVArIl1bIitMTysiXSsgKXsxLDJ9WyIrVVArIl1bIitVUCsiXFwuXSspKC4qKSQiKTsKICAgIGZ1bmN0aW9uIG5ybShzKXtyZXR1cm4gKHM9PW51bGw\/IiI6U3RyaW5nKHMpKS5yZXBsYWNlKC9ccysvZywiICIpLnRyaW0oKTt9CiAgICBmdW5jdGlvbiBoYXNSZXModCl7cmV0dXJuIFJFX01JTi50ZXN0KHQpfHxSRV9TRUMudGVzdCh0KXx8UkVfTS50ZXN0KHQpfHxSRV9EQVRFLnRlc3QodCk7fQogICAgZnVuY3Rpb24gaXNEaXNjKHQpeyBpZigvOiQvLnRlc3QodCkpcmV0dXJuIHRydWU7IHZhciB0bD10LnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmKFJFX0RBVEUudGVzdCh0KXx8UkVfU0VDLnRlc3QodCl8fFJFX01JTi50ZXN0KHQpKXJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIFsicGV2bsO9IHN0YXJ0IiwibGV0bcO9IHN0YXJ0Iiwic3RhcnQgZHJ1xb5zdHZhIiwic3ByaW50IiwiaG9kaW5hIl0uc29tZShmdW5jdGlvbihrKXtyZXR1cm4gdGwuaW5kZXhPZihrKT4tMTt9KTsgfQogICAgZnVuY3Rpb24gcGFyc2VMaW5lKHQpewogICAgICB2YXIgZG09dC5tYXRjaChSRV9EQVRFKSwgcmVzPSIiLCBtPXQubWF0Y2goUkVfTUlOKXx8dC5tYXRjaChSRV9TRUMpOwogICAgICBpZihtKXJlcz1tWzBdOyBlbHNle209dC5tYXRjaChSRV9NKTsgaWYobSlyZXM9bVswXTt9CiAgICAgIHZhciBjdXQ9dC5sZW5ndGg7IGlmKHJlcyljdXQ9dC5pbmRleE9mKHJlcyk7IGVsc2UgaWYoZG0pY3V0PWRtLmluZGV4OwogICAgICB2YXIgaGVhZD1ucm0odC5zbGljZSgwLGN1dCkpLCBubT1oZWFkLm1hdGNoKFJFX05BTUUpLCBkPXt9OwogICAgICBpZihubSl7ZC5hdGhsZXRlPW5ybShubVsxXSk7IGQuY2x1Yj1ucm0obm1bMl0pLnJlcGxhY2UoL15bLSxcc10rfFstLFxzXSskL2csIiIpO30gZWxzZSB7ZC5hdGhsZXRlPWhlYWQ7IGQuY2x1Yj0iIjt9CiAgICAgIGQucmVzdWx0PW5ybShyZXMpOyBkLmRhdGU9ZG0\/ZG1bMF0ucmVwbGFjZSgvXHMvZywiIik6IiI7CiAgICAgIHZhciBwbGFjZT1kbT90LnNsaWNlKGRtLmluZGV4K2RtWzBdLmxlbmd0aCk6IiI7IHBsYWNlPXBsYWNlLnNwbGl0KFJFX0RBVEUpWzBdLnJlcGxhY2UoLyhcZHsyfSk6KFxkezJ9KTooXGR7Mn0pXC5cZCsvZywiIik7CiAgICAgIGQucGxhY2U9bnJtKHBsYWNlKS5yZXBsYWNlKC9eWy3igJMsO1xzXSt8Wy3igJMsO1xzXSskL2csIiIpOyByZXR1cm4gZDsKICAgIH0KICAgIGZ1bmN0aW9uIGltcG9ydFNoZWV0KHJvd3MpewogICAgICB2YXIgb3V0PVtdLGNhdD1udWxsLHRyYWNrPW51bGwsZGlzYz1udWxsLHBlbmRpbmc9bnVsbDsKICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKGNlbGxzKXsKICAgICAgICB2YXIgYj1ucm0oY2VsbHNbMF0pOyBpZighYilyZXR1cm47CiAgICAgICAgaWYoL15SZWtvcmR5fF5rIHxeWnByYWNvdmFsLy50ZXN0KGIpKXJldHVybjsKICAgICAgICBpZihDQVRTW2JdfHwvXk1BU1RFUlMvLnRlc3QoYikpe2NhdD1iO3RyYWNrPW51bGw7ZGlzYz1udWxsO3BlbmRpbmc9bnVsbDtyZXR1cm47fQogICAgICAgIGlmKFRSQUNLTUFQW2JdKXt0cmFjaz1UUkFDS01BUFtiXTtkaXNjPW51bGw7cGVuZGluZz1udWxsO3JldHVybjt9CiAgICAgICAgdmFyIG9ubHk9Y2VsbHMuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBucm0oYyk7fSkubGVuZ3RoPT09MTsKICAgICAgICBpZihvbmx5JiZpc0Rpc2MoYikpe2Rpc2M9Yi5yZXBsYWNlKC86JC8sIiIpLnRyaW0oKTtwZW5kaW5nPW51bGw7cmV0dXJuO30KICAgICAgICB2YXIgY29tYmluZWQ9Y2VsbHMubWFwKG5ybSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSwgaHI9aGFzUmVzKGNvbWJpbmVkKTsKICAgICAgICBpZihwZW5kaW5nJiYhaHImJi9eXFMrKFxzXFMrKXswLDN9JC8udGVzdChiKSYmIS86JC8udGVzdChiKSl7cGVuZGluZy5tZW1iZXJzLnB1c2goY29tYmluZWQpO3JldHVybjt9CiAgICAgICAgdmFyIHI9cGFyc2VMaW5lKGNvbWJpbmVkKTsgci5jYXRlZ29yeT1jYXR8fCJNVcW9SSI7IHIudHJhY2s9dHJhY2t8fCJCZXogcm96bGnFoWVuw60iOyByLmRpc2NpcGxpbmU9ZGlzY3x8IiI7IHIubWVtYmVycz1bXTsKICAgICAgICBlbnJpY2gocik7IG91dC5wdXNoKHIpOyBwZW5kaW5nPXI7CiAgICAgIH0pOwogICAgICByZXR1cm4gb3V0LmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gci5hdGhsZXRlJiZyLmRpc2NpcGxpbmU7fSk7CiAgICB9CiAgICBmdW5jdGlvbiBsb2FkWExTWChjYil7IGlmKHdpbmRvdy5YTFNYKXJldHVybiBjYigpOwogICAgICB2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsgcy5zcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3hsc3gvMC4xOC41L3hsc3guZnVsbC5taW4uanMiOwogICAgICBzLm9ubG9hZD1jYjsgcy5vbmVycm9yPWZ1bmN0aW9uKCl7dmFyIG09JCgiaW1wLW1zZyIpOyBtLnRleHRDb250ZW50PSJOZXBvZGHFmWlsbyBzZSBuYcSNw61zdCBrbmlob3ZudSBwcm8gRXhjZWwuIjsgbS5jbGFzc05hbWU9ImRjci1hZG1pbl9fbXNnIGVyciI7fTsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgICQoImJ0bi1pbXBvcnQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsKICAgICAgdmFyIGY9JCgiaS1maWxlIikuZmlsZXNbMF0sIG1zZz0kKCJpbXAtbXNnIik7CiAgICAgIGlmKCFmKXttc2cudGV4dENvbnRlbnQ9IlZ5YmVydGUgc291Ym9yIC54bHN4LiI7IG1zZy5jbGFzc05hbWU9ImRjci1hZG1pbl9fbXNnIGVyciI7IHJldHVybjt9CiAgICAgIG1zZy50ZXh0Q29udGVudD0iTmHEjcOtdMOhbeKApiI7IG1zZy5jbGFzc05hbWU9ImRjci1hZG1pbl9fbXNnIjsKICAgICAgbG9hZFhMU1goZnVuY3Rpb24oKXsKICAgICAgICB2YXIgcmVhZGVyPW5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgcmVhZGVyLm9ubG9hZD1mdW5jdGlvbihldil7CiAgICAgICAgICB0cnl7CiAgICAgICAgICAgIHZhciB3Yj1YTFNYLnJlYWQobmV3IFVpbnQ4QXJyYXkoZXYudGFyZ2V0LnJlc3VsdCkse3R5cGU6ImFycmF5In0pOwogICAgICAgICAgICB2YXIgd3M9d2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbMF1dOwogICAgICAgICAgICB2YXIgcm93cz1YTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3Mse2hlYWRlcjoxLGRlZnZhbDoiIn0pOwogICAgICAgICAgICB2YXIgcmVjcz1pbXBvcnRTaGVldChyb3dzKTsKICAgICAgICAgICAgaWYoIXJlY3MubGVuZ3RoKXttc2cudGV4dENvbnRlbnQ9Ik5lcG9kYcWZaWxvIHNlIG5hasOtdCByZWtvcmR5LiBaa29udHJvbHVqdGUgZm9ybcOhdC4iOyBtc2cuY2xhc3NOYW1lPSJkY3ItYWRtaW5fX21zZyBlcnIiOyByZXR1cm47fQogICAgICAgICAgICBSRUNPUkRTPXJlY3M7IGVkaXRJbmRleD0tMTsgZmlsbEZvcm0obnVsbCk7IGFmdGVyQ2hhbmdlKCk7CiAgICAgICAgICAgIG1zZy50ZXh0Q29udGVudD0iTmFpbXBvcnRvdsOhbm8gIityZWNzLmxlbmd0aCsiIHJla29yZMWvLiBaa29udHJvbHVqdGUgamUgYSBwxZnDrXBhZG7EmyBkb3VwcmF2dGUsIHBhayBaa29ww61yb3ZhdCBrw7NkLiI7CiAgICAgICAgICAgIG1zZy5jbGFzc05hbWU9ImRjci1hZG1pbl9fbXNnIjsKICAgICAgICAgIH1jYXRjaChlKXttc2cudGV4dENvbnRlbnQ9IkNoeWJhIHDFmWkgxI10ZW7DrTogIitlLm1lc3NhZ2U7IG1zZy5jbGFzc05hbWU9ImRjci1hZG1pbl9fbXNnIGVyciI7fQogICAgICAgIH07CiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGYpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgaWYoaXNBZG1pbigpKSBpbml0QWRtaW4oKTsKfSkoKTsKPC9zY3JpcHQ+Cg==\";\n\n  var CAT_ORDER={\"MU\u017dI\":1,\"\u017dENY\":2,\"JUNIO\u0158I\":3,\"JUNIORKY\":4,\"KADETI\":5,\"KADETKY\":6,\"MASTERS - E\":7,\"MASTERS - C\":8};\n  var TRACK_ORDER={\"Bez rozli\u0161en\u00ed\":1,\"Otev\u0159en\u00e1\":2,\"Kryt\u00e1\":3};\n  var CAT_COLOR={\"Dosp\u011bl\u00ed\":\"var(--c-dosp)\",\"Junio\u0159i\":\"var(--c-jun)\",\"Juniorky\":\"var(--c-jun)\",\"Kadeti\":\"var(--c-kad)\",\"Kadetky\":\"var(--c-kad)\",\"Masters\":\"var(--c-mast)\"};\n\n  function genderOf(c){return (c===\"\u017dENY\"||c===\"JUNIORKY\"||c===\"KADETKY\")?\"\u017deny\":\"Mu\u017ei\";}\n  function ageOf(c){return {\"MU\u017dI\":\"Dosp\u011bl\u00ed\",\"\u017dENY\":\"Dosp\u011bl\u00ed\",\"JUNIO\u0158I\":\"Junio\u0159i\",\"JUNIORKY\":\"Juniorky\",\"KADETI\":\"Kadeti\",\"KADETKY\":\"Kadetky\"}[c]||\"Masters\";}\n  function discKey(d){\n    var dl=(d||\"\").toLowerCase();\n    if(dl.indexOf(\"team sprint\")>-1) return 251;\n    if(dl.indexOf(\"hodina\")>-1){var b=900000;\n      if(dl.indexOf(\"derny\")>-1)return b+3; if(dl.indexOf(\"vodi\u010dem\")>-1)return b+2;\n      if(dl.indexOf(\"pevn\u00fdm\")>-1)return b+1; return b;}\n    var m=(d||\"\").match(\/([\\d.]+)\\s*m\/);\n    if(m){var n=parseInt(m[1].replace(\/\\.\/g,\"\"),10)||0,o=0;\n      if(dl.indexOf(\"pevn\u00fd\")>-1)o+=0.3; if(dl.indexOf(\"letm\u00fd\")>-1)o+=0.1; if(dl.indexOf(\"dru\u017estva\")>-1)o+=0.5;\n      return n+o;}\n    return 500000;\n  }\n  function enrich(r){\n    r.gender=genderOf(r.category); r.agegroup=ageOf(r.category);\n    r.ckey=CAT_ORDER[r.category]||9; r.tkey=TRACK_ORDER[r.track]||9; r.dkey=discKey(r.discipline);\n    if(!r.members) r.members=[];\n    return r;\n  }\n  function sortRecs(){ RECORDS.sort(function(a,b){return (a.ckey-b.ckey)||(a.tkey-b.tkey)||(a.dkey-b.dkey);}); }\n  RECORDS.forEach(enrich); sortRecs();\n\n  var $=function(id){return document.getElementById(id);};\n  var body=$(\"dcr-body\"), countEl=$(\"dcr-count\"), emptyEl=$(\"dcr-empty\");\n  var qEl=$(\"dcr-q\"), gEl=$(\"dcr-gender\"), aEl=$(\"dcr-age\"), tEl=$(\"dcr-track\"), dEl=$(\"dcr-disc\");\n  var adminMode=false, editIndex=-1;\n\n  function esc(s){return (s||\"\").replace(\/[&<>\"]\/g,function(c){return{\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"}[c];});}\n  function hl(s,q){\n    s=esc(s); if(!q) return s;\n    try{ return s.replace(new RegExp(\"(\"+q.replace(\/[.*+?^${}()|[\\]\\\\]\/g,\"\\\\$&\")+\")\",\"ig\"),\"<mark class='dcr-hl'>$1<\/mark>\"); }\n    catch(e){ return s; }\n  }\n  function opt(sel,val,label){var o=document.createElement(\"option\");o.value=val;o.textContent=label||val;sel.appendChild(o);}\n\n  function buildFilters(){\n    var keep={g:gEl.value,a:aEl.value,t:tEl.value,d:dEl.value};\n    [gEl,aEl,tEl,dEl].forEach(function(s){ s.length=1; });\n    var seen;\n    seen={}; RECORDS.forEach(function(r){ if(!seen[r.gender]){seen[r.gender]=1; opt(gEl,r.gender);} });\n    seen={}; RECORDS.slice().sort(function(a,b){return a.ckey-b.ckey;}).forEach(function(r){ if(!seen[r.agegroup]){seen[r.agegroup]=1; opt(aEl,r.agegroup);} });\n    [\"Bez rozli\u0161en\u00ed\",\"Otev\u0159en\u00e1\",\"Kryt\u00e1\"].forEach(function(t){ if(RECORDS.some(function(r){return r.track===t;})) opt(tEl,t, t===\"Bez rozli\u0161en\u00ed\"?\"Bez rozli\u0161en\u00ed drah\":t+\" dr\u00e1ha\"); });\n    seen={}; RECORDS.slice().sort(function(a,b){return a.dkey-b.dkey;}).forEach(function(r){ if(!seen[r.discipline]){seen[r.discipline]=1; opt(dEl,r.discipline);} });\n    function restore(s,v){ for(var i=0;i<s.options.length;i++){ if(s.options[i].value===v){s.value=v;return;} } s.value=\"\"; }\n    restore(gEl,keep.g); restore(aEl,keep.a); restore(tEl,keep.t); restore(dEl,keep.d);\n  }\n  function buildDatalists(){\n    var c={},d={}; RECORDS.forEach(function(r){c[r.category]=1;d[r.discipline]=1;});\n    if($(\"dl-cat\")) $(\"dl-cat\").innerHTML=Object.keys(c).map(function(x){return \"<option value='\"+esc(x)+\"'>\";}).join(\"\");\n    if($(\"dl-disc\")) $(\"dl-disc\").innerHTML=Object.keys(d).sort().map(function(x){return \"<option value='\"+esc(x)+\"'>\";}).join(\"\");\n  }\n\n  function matches(r,f){\n    if(f.gender && r.gender!==f.gender) return false;\n    if(f.age && r.agegroup!==f.age) return false;\n    if(f.track && r.track!==f.track) return false;\n    if(f.disc && r.discipline!==f.disc) return false;\n    if(f.q){\n      var hay=[r.athlete,r.club,r.place,r.discipline,r.result,r.date].concat(r.members||[]).join(\" \").toLowerCase();\n      if(hay.indexOf(f.q)===-1) return false;\n    }\n    return true;\n  }\n\n  function whoHtml(r,q){\n    if(r.members && r.members.length){\n      var all=[r.athlete].concat(r.members);\n      var list=all.map(function(n){return \"<span class='dcr-rider'>\"+hl(n,q)+\"<\/span>\";}).join(\"\");\n      return \"<div class='dcr-team-eyebrow'>Dru\u017estvo<\/div>\"+list+(r.club?\"<div class='dcr-club'>\"+hl(r.club,q)+\"<\/div>\":\"\");\n    }\n    return \"<div class='dcr-athlete'>\"+hl(r.athlete,q)+\"<\/div>\"+(r.club?\"<div class='dcr-club'>\"+hl(r.club,q)+\"<\/div>\":\"\");\n  }\n\n  function render(){\n    var f={q:qEl.value.trim().toLowerCase(), gender:gEl.value, age:aEl.value, track:tEl.value, disc:dEl.value};\n    var q=f.q;\n    var shown=[]; RECORDS.forEach(function(r,i){ if(matches(r,f)){ r._i=i; shown.push(r);} });\n\n    countEl.innerHTML=\"Zobrazeno <strong>\"+shown.length+\"<\/strong> z&nbsp;\"+RECORDS.length+\" rekord\u016f\";\n    body.innerHTML=\"\"; emptyEl.hidden = shown.length>0;\n    if(!shown.length) return;\n\n    var cats=[], byCat={};\n    shown.forEach(function(r){ if(!byCat[r.category]){byCat[r.category]={cat:r,rows:[]}; cats.push(r.category);} byCat[r.category].rows.push(r); });\n    cats.sort(function(a,b){return byCat[a].cat.ckey-byCat[b].cat.ckey;});\n\n    cats.forEach(function(cn){\n      var grp=byCat[cn], first=grp.cat;\n      var det=document.createElement(\"details\"); det.className=\"dcr-cat\"; det.open=true;\n      det.style.setProperty(\"--_c\", CAT_COLOR[first.agegroup]||\"var(--blue-900)\");\n      var sum=document.createElement(\"summary\");\n      sum.innerHTML=\"<span class='dcr-cat__name'>\"+esc(cn.charAt(0)+cn.slice(1).toLowerCase())+\"<\/span>\"+\n        \"<span class='dcr-cat__tag'>\"+esc(first.agegroup)+\"<\/span>\"+\n        \"<span class='dcr-cat__n'>\"+grp.rows.length+\" rekord\u016f<\/span>\"+\n        \"<span class='dcr-cat__chev'><\/span>\";\n      det.appendChild(sum);\n\n      var tracks=[], byTrack={};\n      grp.rows.sort(function(a,b){return (a.tkey-b.tkey)||(a.dkey-b.dkey);});\n      grp.rows.forEach(function(r){ if(!byTrack[r.track]){byTrack[r.track]=[];tracks.push(r.track);} byTrack[r.track].push(r); });\n\n      tracks.forEach(function(tn){\n        if(tn!==\"Bez rozli\u0161en\u00ed\" || tracks.length>1){\n          var th=document.createElement(\"div\"); th.className=\"dcr-track\";\n          th.textContent = tn===\"Bez rozli\u0161en\u00ed\" ? \"Bez rozli\u0161en\u00ed drah\" : (tn+\" dr\u00e1ha\");\n          det.appendChild(th);\n        }\n        byTrack[tn].forEach(function(r){\n          var row=document.createElement(\"div\"); row.className=\"dcr-row\";\n          row.innerHTML=\n            \"<div class='dcr-disc'>\"+hl(r.discipline,q)+\"<\/div>\"+\n            \"<div class='dcr-who'>\"+whoHtml(r,q)+\"<\/div>\"+\n            \"<div class='dcr-result'>\"+hl(r.result,q)+\"<\/div>\"+\n            \"<div class='dcr-meta'>\"+\n              (r.date?\"<span class='dcr-date'>\"+hl(r.date,q)+\"<\/span>\":\"\")+\n              (r.place?\"<span class='dcr-place'>\"+hl(r.place,q)+\"<\/span>\":\"\")+\n            \"<\/div>\"+\n            \"<div class='dcr-row__admin'>\"+\n              \"<button class='dcr-btn dcr-btn--ghost dcr-btn--sm' data-edit='\"+r._i+\"'>Upravit<\/button>\"+\n              \"<button class='dcr-btn dcr-btn--del dcr-btn--sm' data-del='\"+r._i+\"'>Smazat<\/button>\"+\n            \"<\/div>\";\n          det.appendChild(row);\n        });\n      });\n      body.appendChild(det);\n    });\n  }\n\n  [qEl,gEl,aEl,tEl,dEl].forEach(function(el){ el.addEventListener(\"input\",render); el.addEventListener(\"change\",render); });\n  $(\"dcr-reset\").addEventListener(\"click\",function(){ qEl.value=\"\";gEl.value=\"\";aEl.value=\"\";tEl.value=\"\";dEl.value=\"\";render(); qEl.focus(); });\n\n  buildFilters(); render();\n\n  \/* ===================== ADMIN ===================== *\/\n  function isAdmin(){\n    try{\n      if(document.body.classList.contains(\"logged-in\")) return true;\n      if(document.getElementById(\"wpadminbar\")) return true;\n      if(\/[?&]rekordy-admin=1\/.test(location.search)) return true;\n      if(location.hash.indexOf(\"rekordy-admin\")>-1) return true;\n    }catch(e){}\n    return false;\n  }\n\n  function initAdmin(){\n    var panel=$(\"dcr-admin\"); panel.hidden=false;\n    var tgl=$(\"dcr-admin-toggle\"), abody=$(\"dcr-admin-body\");\n    tgl.addEventListener(\"click\",function(){\n      var open=abody.hidden;\n      abody.hidden=!open; tgl.setAttribute(\"aria-expanded\", open?\"true\":\"false\");\n      adminMode=open; $(\"dcr-app\").classList.toggle(\"dcr--admin\", open);\n      render();\n    });\n\n    buildDatalists();\n\n    function fillForm(r){\n      $(\"i-cat\").value=r?r.category:\"\"; $(\"i-track\").value=r?r.track:\"Bez rozli\u0161en\u00ed\";\n      $(\"i-disc\").value=r?r.discipline:\"\"; $(\"i-ath\").value=r?r.athlete:\"\"; $(\"i-club\").value=r?r.club:\"\";\n      $(\"i-mem\").value=r&&r.members?r.members.join(\", \"):\"\"; $(\"i-res\").value=r?r.result:\"\";\n      $(\"i-date\").value=r?r.date:\"\"; $(\"i-place\").value=r?r.place:\"\";\n    }\n    function readForm(){\n      var mem=($(\"i-mem\").value||\"\").split(\",\").map(function(s){return s.trim();}).filter(Boolean);\n      return enrich({category:($(\"i-cat\").value||\"\").trim(), track:$(\"i-track\").value,\n        discipline:($(\"i-disc\").value||\"\").trim(), athlete:($(\"i-ath\").value||\"\").trim(),\n        club:($(\"i-club\").value||\"\").trim(), members:mem,\n        result:($(\"i-res\").value||\"\").trim(), date:($(\"i-date\").value||\"\").trim(), place:($(\"i-place\").value||\"\").trim()});\n    }\n    function fmsg(t,err){var m=$(\"form-msg\"); m.textContent=t; m.className=\"dcr-admin__msg\"+(err?\" err\":\"\");}\n    function afterChange(){ sortRecs(); buildFilters(); buildDatalists(); render(); }\n\n    $(\"btn-save\").addEventListener(\"click\",function(){\n      var r=readForm();\n      if(!r.category||!r.discipline||!r.athlete){fmsg(\"Vypl\u0148te kategorii, discipl\u00ednu a z\u00e1vodn\u00edka.\",true);return;}\n      if(!CAT_ORDER[r.category]){fmsg(\"Nezn\u00e1m\u00e1 kategorie. Pou\u017eijte: \"+Object.keys(CAT_ORDER).join(\", \"),true);return;}\n      if(editIndex>=0){RECORDS[editIndex]=r; editIndex=-1;\n        $(\"dcr-form-title\").textContent=\"P\u0159idat rekord\"; $(\"btn-save\").textContent=\"P\u0159idat rekord\"; $(\"btn-cancel\").style.display=\"none\"; fmsg(\"Rekord upraven.\");\n      } else {RECORDS.push(r); fmsg(\"Rekord p\u0159id\u00e1n.\");}\n      fillForm(null); afterChange();\n    });\n    $(\"btn-cancel\").addEventListener(\"click\",function(){\n      editIndex=-1; fillForm(null); $(\"dcr-form-title\").textContent=\"P\u0159idat rekord\";\n      $(\"btn-save\").textContent=\"P\u0159idat rekord\"; $(\"btn-cancel\").style.display=\"none\"; fmsg(\"\");\n    });\n\n    body.addEventListener(\"click\",function(e){\n      var ed=e.target.getAttribute(\"data-edit\"), del=e.target.getAttribute(\"data-del\");\n      if(ed!==null){editIndex=+ed; fillForm(RECORDS[editIndex]);\n        $(\"dcr-form-title\").textContent=\"Upravit rekord\"; $(\"btn-save\").textContent=\"Ulo\u017eit zm\u011bny\"; $(\"btn-cancel\").style.display=\"\";\n        $(\"dcr-admin\").scrollIntoView({behavior:\"smooth\"});\n      }\n      if(del!==null){ if(confirm(\"Smazat tento rekord?\")){RECORDS.splice(+del,1); if(editIndex===+del){editIndex=-1;fillForm(null);} afterChange();} }\n    });\n\n    \/* export *\/\n    function slim(){ return RECORDS.map(function(r){return {category:r.category,track:r.track,discipline:r.discipline,athlete:r.athlete,club:r.club,members:r.members||[],result:r.result,date:r.date,place:r.place};}); }\n    function buildSnippet(){\n      var bin=atob(PAGE_TPL_B64), bytes=new Uint8Array(bin.length);\n      for(var i=0;i<bin.length;i++) bytes[i]=bin.charCodeAt(i);\n      var tpl=new TextDecoder(\"utf-8\").decode(bytes);\n      return tpl.replace(\"__DATA__\", JSON.stringify(slim())).replace(\"__TPL_B64__\", PAGE_TPL_B64);\n    }\n    function download(name,text,type){\n      var blob=new Blob([text],{type:type||\"text\/plain;charset=utf-8\"});\n      var a=document.createElement(\"a\"); a.href=URL.createObjectURL(blob); a.download=name; a.click();\n      setTimeout(function(){URL.revokeObjectURL(a.href);},1000);\n    }\n    function emsg(t){var m=$(\"exp-msg\"); m.textContent=t; setTimeout(function(){m.textContent=\"\";},2600);}\n    $(\"btn-copy\").addEventListener(\"click\",function(){\n      var code=buildSnippet();\n      if(navigator.clipboard&&navigator.clipboard.writeText){\n        navigator.clipboard.writeText(code).then(function(){emsg(\"Zkop\u00edrov\u00e1no \u2013 vlo\u017ete do WP bloku \u201eVlastn\u00ed HTML\u201c.\");},\n          function(){download(\"drahove-rekordy-wp.html\",code,\"text\/html\"); emsg(\"Schr\u00e1nka nedostupn\u00e1 \u2013 k\u00f3d sta\u017een jako soubor.\");});\n      } else { download(\"drahove-rekordy-wp.html\",code,\"text\/html\"); emsg(\"K\u00f3d sta\u017een jako soubor.\"); }\n    });\n    $(\"btn-dl-html\").addEventListener(\"click\",function(){download(\"drahove-rekordy-wp.html\",buildSnippet(),\"text\/html\"); emsg(\"Soubor .html sta\u017een.\");});\n    $(\"btn-dl-json\").addEventListener(\"click\",function(){download(\"rekordy.json\",JSON.stringify(slim(),null,1),\"application\/json\"); emsg(\"JSON sta\u017een.\");});\n\n    \/* Excel import (lazy SheetJS) *\/\n    var RE_MIN=\/\\d{1,2}:\\d{1,3},\\d{1,3}\\s*min\\.?\/, RE_SEC=\/\\d{1,3},\\d{1,3}\\s*sec\\.?\/,\n        RE_M=\/\\d{1,3}(?:[ .]\\d{3})*(?:,\\d+)?\\s*m\\b\/, RE_DATE=\/\\d{1,2}\\.\\s?\\d{1,2}\\.\\s?\\d{4}\/;\n    var CATS={\"MU\u017dI\":1,\"\u017dENY\":1,\"JUNIO\u0158I\":1,\"JUNIORKY\":1,\"KADETI\":1,\"KADETKY\":1};\n    var TRACKMAP={\"Bez rozli\u0161en\u00ed drah:\":\"Bez rozli\u0161en\u00ed\",\"Otev\u0159en\u00e1 dr\u00e1ha:\":\"Otev\u0159en\u00e1\",\"Kryt\u00e1 dr\u00e1ha:\":\"Kryt\u00e1\"};\n    var UP=\"A-Z\u00c1\u010c\u010e\u00c9\u011a\u00cd\u0147\u00d3\u0158\u0160\u0164\u00da\u016e\u00dd\u017d\", LO=\"a-z\u00e1-\u017e\u010d\u010f\u00e9\u011b\u00ed\u0148\u00f3\u0159\u0161\u0165\u00fa\u016f\u00fd\u017e\";\n    var RE_NAME=new RegExp(\"^((?:[\"+UP+\"][\"+LO+\"]+ ){1,2}[\"+UP+\"][\"+UP+\"\\\\.]+)(.*)$\");\n    function nrm(s){return (s==null?\"\":String(s)).replace(\/\\s+\/g,\" \").trim();}\n    function hasRes(t){return RE_MIN.test(t)||RE_SEC.test(t)||RE_M.test(t)||RE_DATE.test(t);}\n    function isDisc(t){ if(\/:$\/.test(t))return true; var tl=t.toLowerCase();\n      if(RE_DATE.test(t)||RE_SEC.test(t)||RE_MIN.test(t))return false;\n      return [\"pevn\u00fd start\",\"letm\u00fd start\",\"start dru\u017estva\",\"sprint\",\"hodina\"].some(function(k){return tl.indexOf(k)>-1;}); }\n    function parseLine(t){\n      var dm=t.match(RE_DATE), res=\"\", m=t.match(RE_MIN)||t.match(RE_SEC);\n      if(m)res=m[0]; else{m=t.match(RE_M); if(m)res=m[0];}\n      var cut=t.length; if(res)cut=t.indexOf(res); else if(dm)cut=dm.index;\n      var head=nrm(t.slice(0,cut)), nm=head.match(RE_NAME), d={};\n      if(nm){d.athlete=nrm(nm[1]); d.club=nrm(nm[2]).replace(\/^[-,\\s]+|[-,\\s]+$\/g,\"\");} else {d.athlete=head; d.club=\"\";}\n      d.result=nrm(res); d.date=dm?dm[0].replace(\/\\s\/g,\"\"):\"\";\n      var place=dm?t.slice(dm.index+dm[0].length):\"\"; place=place.split(RE_DATE)[0].replace(\/(\\d{2}):(\\d{2}):(\\d{2})\\.\\d+\/g,\"\");\n      d.place=nrm(place).replace(\/^[-\u2013,;\\s]+|[-\u2013,;\\s]+$\/g,\"\"); return d;\n    }\n    function importSheet(rows){\n      var out=[],cat=null,track=null,disc=null,pending=null;\n      rows.forEach(function(cells){\n        var b=nrm(cells[0]); if(!b)return;\n        if(\/^Rekordy|^k |^Zpracoval\/.test(b))return;\n        if(CATS[b]||\/^MASTERS\/.test(b)){cat=b;track=null;disc=null;pending=null;return;}\n        if(TRACKMAP[b]){track=TRACKMAP[b];disc=null;pending=null;return;}\n        var only=cells.filter(function(c){return nrm(c);}).length===1;\n        if(only&&isDisc(b)){disc=b.replace(\/:$\/,\"\").trim();pending=null;return;}\n        var combined=cells.map(nrm).filter(Boolean).join(\" \"), hr=hasRes(combined);\n        if(pending&&!hr&&\/^\\S+(\\s\\S+){0,3}$\/.test(b)&&!\/:$\/.test(b)){pending.members.push(combined);return;}\n        var r=parseLine(combined); r.category=cat||\"MU\u017dI\"; r.track=track||\"Bez rozli\u0161en\u00ed\"; r.discipline=disc||\"\"; r.members=[];\n        enrich(r); out.push(r); pending=r;\n      });\n      return out.filter(function(r){return r.athlete&&r.discipline;});\n    }\n    function loadXLSX(cb){ if(window.XLSX)return cb();\n      var s=document.createElement(\"script\"); s.src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\";\n      s.onload=cb; s.onerror=function(){var m=$(\"imp-msg\"); m.textContent=\"Nepoda\u0159ilo se na\u010d\u00edst knihovnu pro Excel.\"; m.className=\"dcr-admin__msg err\";}; document.head.appendChild(s);\n    }\n    $(\"btn-import\").addEventListener(\"click\",function(){\n      var f=$(\"i-file\").files[0], msg=$(\"imp-msg\");\n      if(!f){msg.textContent=\"Vyberte soubor .xlsx.\"; msg.className=\"dcr-admin__msg err\"; return;}\n      msg.textContent=\"Na\u010d\u00edt\u00e1m\u2026\"; msg.className=\"dcr-admin__msg\";\n      loadXLSX(function(){\n        var reader=new FileReader();\n        reader.onload=function(ev){\n          try{\n            var wb=XLSX.read(new Uint8Array(ev.target.result),{type:\"array\"});\n            var ws=wb.Sheets[wb.SheetNames[0]];\n            var rows=XLSX.utils.sheet_to_json(ws,{header:1,defval:\"\"});\n            var recs=importSheet(rows);\n            if(!recs.length){msg.textContent=\"Nepoda\u0159ilo se naj\u00edt rekordy. Zkontrolujte form\u00e1t.\"; msg.className=\"dcr-admin__msg err\"; return;}\n            RECORDS=recs; editIndex=-1; fillForm(null); afterChange();\n            msg.textContent=\"Naimportov\u00e1no \"+recs.length+\" rekord\u016f. Zkontrolujte je a p\u0159\u00edpadn\u011b doupravte, pak Zkop\u00edrovat k\u00f3d.\";\n            msg.className=\"dcr-admin__msg\";\n          }catch(e){msg.textContent=\"Chyba p\u0159i \u010dten\u00ed: \"+e.message; msg.className=\"dcr-admin__msg err\";}\n        };\n        reader.readAsArrayBuffer(f);\n      });\n    });\n  }\n\n  if(isAdmin()) initAdmin();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"full-width-page.php","meta":{"footnotes":""},"class_list":["post-42471","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/pages\/42471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/comments?post=42471"}],"version-history":[{"count":2,"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/pages\/42471\/revisions"}],"predecessor-version":[{"id":42477,"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/pages\/42471\/revisions\/42477"}],"wp:attachment":[{"href":"https:\/\/www.czechcyclingfederation.com\/en\/wp-json\/wp\/v2\/media?parent=42471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}