{"id":40171,"date":"2026-04-30T17:24:02","date_gmt":"2026-04-30T15:24:02","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/world-cup-2026-guide-canada-host-cities-dates-tickets"},"modified":"2026-05-01T08:48:37","modified_gmt":"2026-05-01T06:48:37","slug":"world-cup-2026-guide-canada-host-cities-dates-tickets","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets","title":{"rendered":"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets"},"content":{"rendered":"<h2>Host Countries and Locations for the 2026 World Cup<\/h2>\n<p>Get ready for a football spectacle like no other! The <strong>FIFA World Cup 2026<\/strong> is set to be a historic event, marking the first time the tournament will be hosted by three nations: Canada, the United States, and Mexico. This monumental tournament will feature an expanded format with 48 teams, making it the largest FIFA World Cup ever. Fans across North America will experience the thrill of world-class football, with matches spread across 16 vibrant host cities. Planning for this massive, cross-border event is a logistical marvel, promising a diverse and unforgettable celebration of the beautiful game. Whether you&#8217;re a lifelong fan or new to the excitement, this guide has everything you need to know about the <strong>world cup 2026 football<\/strong> tournament. If you&#8217;re looking for the perfect present for a fellow fan, consider the excitement of <a href=\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/how-to-gift-playstation-plus-game-pass-in-canada\">gifting a gaming subscription<\/a> to get them in the spirit before the first whistle blows.<\/p>\n<div style=\"background-color: #f9f9f9;padding: 20px;border-radius: 8px;margin: 20px 0\">\n<h3>Summary<\/h3>\n<p>This guide is your complete resource for the FIFA World Cup 2026. You&#8217;ll find everything you need to know about the tournament&#8217;s schedule, the 16 host cities across Canada, the USA, and Mexico, and how to get your hands on tickets. We cover the new 48-team format, the qualification process, key players to watch, and answer your most pressing questions to get you ready for the biggest football event in history.<\/p>\n<\/div>\n<div style=\"background-color: #fff3cd;border-left: 4px solid #ffc107;padding: 20px;margin: 20px 0\">\n<h3 style=\"margin-top:0\">TLDR<\/h3>\n<ul>\n<li><strong>What is it?<\/strong> The 23rd FIFA World Cup, co-hosted by Canada, the USA, and Mexico.<\/li>\n<li><strong>When is it?<\/strong> From June 11 to July 19, 2026.<\/li>\n<li><strong>Who is playing?<\/strong> For the first time, 48 teams will compete.<\/li>\n<li><strong>Where in Canada?<\/strong> Matches will be held in Toronto (BMO Field) and Vancouver (BC Place).<\/li>\n<li><strong>How do I get tickets?<\/strong> You need to register your interest on the official FIFA website to receive updates on ticket sales.<\/li>\n<\/ul>\n<\/div>\n<div style=\"background: linear-gradient(135deg, #07F288 0%, #7BF8BE 100%);color: #0a3d2e;padding: 25px;border-radius: 12px\">\n<h3 style=\"margin-top:0;color: #0a3d2e\">\ud83d\udcd1 Table of Contents<\/h3>\n<ul style=\"list-style-type: none;padding-left: 0\">\n<li style=\"margin-bottom: 10px\"><a href=\"#schedule-dates\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">FIFA World Cup 2026 Dates and Match Schedule<\/a><\/li>\n<li style=\"margin-bottom: 10px\"><a href=\"#qualifiers\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">World Cup 2026 Qualifiers and Regional Standings<\/a><\/li>\n<li style=\"margin-bottom: 10px\"><a href=\"#groups-draw\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">2026 World Cup Groups and the Official Draw<\/a><\/li>\n<li style=\"margin-bottom: 10px\"><a href=\"#tickets\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">How to Secure World Cup 2026 Tickets<\/a><\/li>\n<li style=\"margin-bottom: 10px\"><a href=\"#players-teams\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">Star Players and Teams to Watch<\/a><\/li>\n<li><a href=\"#faq\" style=\"color: #0a3d2e;text-decoration: none;font-weight: bold\">Frequently Asked Questions (FAQ)<\/a><\/li>\n<\/ul>\n<\/div>\n<p><!-- [CUSTOM HTML BLOCK BEGIN] -->\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@400;500;600;700;800&#038;display=swap\">\n<style>\n.wc26-hub *,.wc26-hub *::before,.wc26-hub *::after{box-sizing:border-box;margin:0;padding:0}\n:root{\n--accent:#16a34a;--accent2:#22c55e;--accent-glow:rgba(22,163,74,.25);\n--gold:#fbbf24;--gold-glow:rgba(251,191,36,.2);\n--red:#ef4444;--yellow:#eab308;--blue:#3b82f6;--purple:#8b5cf6;--pink:#ec4899;--teal:#14b8a6;--orange:#f97316;\n--r:12px;--r2:16px;--r3:20px;--transition:.25s ease;\n\/* DEFAULT = LIGHT *\/\n--bg:#f8fafc;--bg2:#ffffff;--bg3:#f1f5f9;\n--card:rgba(255,255,255,.9);--card-solid:#ffffff;\n--t1:#0f172a;--t2:#475569;--t3:#94a3b8;\n--border:rgba(0,0,0,.08);--border2:rgba(0,0,0,.14);\n--glass:rgba(0,0,0,.03);--glass2:rgba(0,0,0,.05);\n--shadow:0 2px 16px rgba(0,0,0,.06);\n--nav-bg:rgba(248,250,252,.9);\n--input-bg:#ffffff;\n--row-q:rgba(22,163,74,.07);--row-3:rgba(234,179,8,.07);--row-e:rgba(239,68,68,.05);\n--champ-bg:linear-gradient(135deg,rgba(251,191,36,.1),rgba(251,191,36,.03));--champ-border:rgba(251,191,36,.25);\n}\n\/* DARK *\/\n.wc26-dark{\n--bg:#070b14;--bg2:#0d1321;--bg3:#111827;\n--card:rgba(17,24,39,.7);--card-solid:#111827;\n--t1:#f9fafb;--t2:#9ca3af;--t3:#6b7280;\n--border:rgba(255,255,255,.08);--border2:rgba(255,255,255,.14);\n--glass:rgba(255,255,255,.04);--glass2:rgba(255,255,255,.07);\n--shadow:0 4px 24px rgba(0,0,0,.5);\n--nav-bg:rgba(7,11,20,.85);\n--input-bg:#0d1321;\n--row-q:rgba(22,163,74,.12);--row-3:rgba(234,179,8,.1);--row-e:rgba(239,68,68,.08);\n--champ-bg:linear-gradient(135deg,rgba(251,191,36,.12),rgba(251,191,36,.03));--champ-border:rgba(251,191,36,.22);\n--accent-glow:rgba(22,163,74,.3);--gold-glow:rgba(251,191,36,.25);\n}\n\/* scroll-behavior inherited from WP *\/\n.wc26-hub{font-family:'Syne',sans-serif;background:var(--bg);color:var(--t1);line-height:1.6;overflow-x:hidden;transition:background var(--transition),color var(--transition)}\n.wc26-hub a{color:var(--accent2);text-decoration:none}\n.wc26-hub img{max-width:100%;display:block}<\/p>\n<p>\/* NAV *\/\n.wc-nav{position:sticky;top:0;z-index:100;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--nav-bg);border-bottom:1px solid var(--border);transition:background var(--transition)}\n.wc-nav-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;padding:0 16px;height:52px;gap:6px}\n.wc-nav-logo{font-weight:800;font-size:16px;color:var(--gold);white-space:nowrap;margin-right:8px}\n.wc-nav-links{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1}\n.wc-nav-links::-webkit-scrollbar{display:none}\n.wc-nav-links a{padding:5px 12px;border-radius:8px;font-size:12px;font-weight:600;color:var(--t2);white-space:nowrap;transition:var(--transition)}\n.wc-nav-links a:hover{color:var(--t1);background:var(--glass2)}\n.wc-nav-links a.active{color:var(--accent);background:rgba(22,163,74,.1)}\n.wc-theme-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--glass);color:var(--t2);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);flex-shrink:0;font-family:inherit}\n.wc-theme-btn:hover{border-color:var(--accent);color:var(--accent)}<\/p>\n<p>\/* SECTIONS *\/\n.wc-section{padding:60px 16px 32px;max-width:1400px;margin:0 auto}\n.wc-section-head{text-align:center;margin-bottom:40px}\n.wc-section-head h2{font-size:clamp(24px,5vw,38px);font-weight:800;color:var(--t1)}\n.wc-section-head p{color:var(--t3);margin-top:6px;font-size:14px}\n.wc-divider{width:50px;height:3px;background:linear-gradient(90deg,var(--accent),var(--teal));margin:12px auto 0;border-radius:2px}<\/p>\n<p>\/* HERO *\/\n.wc-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 16px 40px;position:relative;overflow:hidden}\n.wc-hero::before{content:'';position:absolute;width:500px;height:500px;background:radial-gradient(circle,var(--accent-glow),transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);z-index:0;animation:wcPulse 4s ease-in-out infinite}\n@keyframes wcPulse{0%,100%{opacity:.2;transform:translate(-50%,-50%) scale(1)}50%{opacity:.5;transform:translate(-50%,-50%) scale(1.1)}}\n.wc-hero-content{position:relative;z-index:1}\n.wc-hero h1{font-size:clamp(32px,7vw,64px);font-weight:800;line-height:1.1;margin-bottom:8px}\n.wc-hero h1 span{background:linear-gradient(135deg,var(--gold),#f59e0b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}\n.wc-hero-sub{font-size:clamp(15px,3vw,20px);color:var(--t2);margin-bottom:32px}\n.wc-hero-flags{display:flex;gap:10px;justify-content:center;margin-bottom:32px;flex-wrap:wrap}\n.wc-hero-flag{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:99px;background:var(--glass2);border:1px solid var(--border);font-size:13px;color:var(--t2)}\n.wc-hero-flag img{width:22px;height:15px;border-radius:2px;object-fit:cover}<\/p>\n<p>\/* COUNTDOWN *\/\n.wc-countdown{display:flex;gap:10px;justify-content:center;margin-bottom:40px;flex-wrap:wrap}\n.wc-cd-box{background:var(--card);border:1px solid var(--border2);border-radius:var(--r);padding:14px 18px;min-width:72px;text-align:center;box-shadow:var(--shadow)}\n.wc-cd-num{font-size:clamp(24px,4vw,36px);font-weight:800;color:var(--accent2);line-height:1}\n.wc-cd-label{font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:1px;margin-top:3px}<\/p>\n<p>\/* STATS *\/\n.wc-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:24px}\n@media(max-width:600px){.wc-stats-row{grid-template-columns:repeat(2,1fr)}}\n.wc-stat{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:14px 6px;text-align:center;box-shadow:var(--shadow);transition:var(--transition);overflow:hidden;word-break:break-word}\n.wc-stat:hover{border-color:var(--accent);transform:translateY(-2px)}\n.wc-stat-num{font-size:clamp(16px,3.5vw,26px);font-weight:800;color:var(--accent2);line-height:1.2}\n.wc-stat-label{font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}<\/p>\n<p>\/* GROUPS *\/\n.wc-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}\n.wc-group{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;box-shadow:var(--shadow);transition:var(--transition)}\n.wc-group:hover{border-color:var(--border2);transform:translateY(-1px)}\n.wc-group-hdr{padding:10px 14px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border)}\n.wc-group-badge{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff}\n.wc-gtable{width:100%;border-collapse:collapse;font-size:12px}\n.wc-gtable th{padding:6px 8px;text-align:left;color:var(--t3);font-weight:500;font-size:10px;text-transform:uppercase;border-bottom:1px solid var(--border)}\n.wc-gtable th:not(:first-child):not(:nth-child(2)){text-align:center}\n.wc-gtable td{padding:6px 8px;border-bottom:1px solid var(--border)}\n.wc-gtable td:not(:first-child):not(:nth-child(2)){text-align:center;color:var(--t2);font-size:11px}\n.wc-gtable tr:last-child td{border-bottom:none}\n.wc-gtable .tc{display:flex;align-items:center;gap:6px}\n.wc-gtable .tc img{width:22px;height:15px;border-radius:2px;object-fit:cover}\n.wc-gtable .rk{font-size:9px;color:var(--t3);background:var(--glass2);padding:1px 5px;border-radius:3px}\n.wc-pos{font-weight:700;width:24px;font-size:11px}\n.wc-rq{background:var(--row-q)}.wc-r3{background:var(--row-3)}.wc-re{background:var(--row-e)}\n.wc-gtable.pickmode tr{cursor:pointer;transition:background .15s}\n.wc-gtable.pickmode tr:hover{background:var(--glass2)}\n.wc-gtable.pickmode tr.wc-rq{cursor:default}\n.wc-gtable.pickmode tr.wc-r3{cursor:default}\n.wc-pick-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:9px;font-weight:800;color:#fff;margin-left:auto;flex-shrink:0}\n.wc-pick-1{background:var(--accent)}\n.wc-pick-2{background:var(--accent);opacity:.7}\n.wc-pick-3{background:var(--yellow)}<\/p>\n<p>\/* FILTERS *\/\n.wc-filters{display:flex;gap:6px;margin-bottom:20px;flex-wrap:wrap;align-items:center}\n.wc-fbtn{padding:5px 14px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--t2);font-size:12px;font-family:inherit;cursor:pointer;transition:var(--transition);font-weight:600}\n.wc-fbtn:hover{border-color:var(--border2);color:var(--t1)}\n.wc-fbtn.on{background:var(--accent);border-color:var(--accent);color:#fff}\n.wc-fsel{padding:5px 10px;border-radius:8px;border:1px solid var(--border);background:var(--input-bg);color:var(--t1);font-size:12px;font-family:inherit;cursor:pointer}<\/p>\n<p>\/* SCHEDULE *\/\n.wc-date-hdr{font-size:13px;font-weight:600;color:var(--t2);margin:20px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border)}\n.wc-match{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;padding:10px 14px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);margin-bottom:6px;box-shadow:var(--shadow);transition:var(--transition)}\n.wc-match:hover{border-color:var(--border2)}\n.wc-mteam{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500}\n.wc-mteam.away{justify-content:flex-end;text-align:right}\n.wc-mteam img{width:24px;height:16px;border-radius:2px;object-fit:cover}\n.wc-mvs{text-align:center;color:var(--t3);font-size:11px}\n.wc-mvs .tm{font-weight:700;font-size:13px;color:var(--t2)}\n.wc-mmeta{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--t3);margin-top:3px;grid-column:1\/-1}\n.wc-grp-tag{padding:2px 7px;border-radius:4px;font-weight:700;font-size:9px;color:#fff}<\/p>\n<p>\/* ===== BRACKET VERTICAL TREE ===== *\/\n.wc-bracket-actions{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;justify-content:center}\n.wc-vbracket{}\n.wc-vround{margin-bottom:4px}\n.wc-vround-hdr{display:flex;align-items:center;gap:6px;margin-bottom:4px;padding:0 2px}\n.wc-vround-hdr .wc-vr-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--t3);white-space:nowrap}\n.wc-vround-hdr .wc-vr-line{flex:1;height:1px;background:var(--border)}\n.wc-vround-hdr.final-hdr .wc-vr-label{color:var(--gold);font-size:11px}\n\/* Row of matches - always one row, shrinks to fit *\/\n.wc-row{display:flex;gap:4px;justify-content:center;flex-wrap:nowrap}\n.wc-bmatch{background:var(--card);border:1px solid var(--border);border-radius:8px;overflow:hidden;flex:1;min-width:0;font-size:11px;transition:border-color .15s}\n.wc-bmatch:hover{border-color:var(--border2)}\n.wc-bmatch.final-match{border:2px solid var(--gold);box-shadow:0 0 12px var(--gold-glow)}\n.wc-bmatch.third-match{border:1px solid var(--teal)}\n.wc-bslot{display:flex;align-items:center;gap:4px;padding:4px 6px;border-bottom:1px solid var(--border);cursor:pointer;transition:all .1s;user-select:none;min-height:26px}\n.wc-bslot:last-of-type{border-bottom:none}\n.wc-bslot:hover{background:var(--glass2)}\n.wc-bslot.picked{background:var(--row-q)}\n.wc-bslot.lost{opacity:.3}\n.wc-bslot.empty{cursor:default;opacity:.4}\n.wc-bslot.picked,.wc-bslot.lost{cursor:default}\n.wc-bslot img{width:18px;height:12px;border-radius:1px;object-fit:cover;flex-shrink:0}\n.wc-bslot .seed-lbl{font-size:7px;color:var(--t3);min-width:14px;flex-shrink:0}\n.wc-bslot .nm{flex:1;font-size:10px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.wc-bslot .pick-icon{color:var(--accent2);font-size:9px;font-weight:700;display:none}\n.wc-bslot.picked .pick-icon{display:block}\n.wc-bmeta{padding:2px 4px;border-top:1px solid var(--border);font-size:7px;color:var(--t3);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n\/* Connector arrows between rounds *\/\n.wc-connectors{display:flex;justify-content:center;gap:4px;padding:2px 0}\n.wc-conn{flex:1;max-width:160px;text-align:center;font-size:8px;color:var(--accent);opacity:.6;line-height:1}\n.wc-conn-pair{display:flex;flex:2;max-width:320px}\n.wc-conn-pair span{flex:1;text-align:center;font-size:10px;color:var(--accent);opacity:.5}\n.wc-final-wrap{display:flex;gap:8px;justify-content:center;margin:6px 0}\n@media(max-width:480px){\n.wc-bslot{padding:3px 4px;gap:3px;min-height:22px}\n.wc-bslot img{width:14px;height:10px}\n.wc-bslot .nm{font-size:8px}\n.wc-bslot .seed-lbl{font-size:6px;min-width:10px}\n.wc-bmeta{font-size:6px;padding:1px 2px}\n.wc-bmatch{max-width:none;border-radius:6px}\n.wc-row{gap:2px}\n}<\/p>\n<p>\/* TEAMS *\/\n.wc-team-ctrls{display:flex;gap:6px;margin-bottom:20px;flex-wrap:wrap;align-items:center}\n.wc-tsearch{padding:7px 14px;border-radius:8px;border:1px solid var(--border);background:var(--input-bg);color:var(--t1);font-size:13px;font-family:inherit;width:220px;flex-shrink:0}\n.wc-tsearch::placeholder{color:var(--t3)}\n.wc-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}\n.wc-tcard{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:var(--shadow);transition:var(--transition)}\n.wc-tcard:hover{border-color:var(--accent);transform:translateY(-2px)}\n.wc-tflag{width:72px;height:48px;border-radius:4px;object-fit:cover;margin-bottom:8px;box-shadow:0 2px 6px rgba(0,0,0,.15)}\n.wc-tcard h3{font-size:14px;font-weight:700;margin-bottom:3px}\n.wc-trank{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--glass2);border:1px solid var(--border);font-size:11px;font-weight:700;color:var(--accent2);margin-bottom:5px}\n.wc-tmeta{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}\n.wc-tpill{padding:2px 8px;border-radius:99px;font-size:9px;font-weight:700;background:var(--glass);border:1px solid var(--border);color:var(--t2)}<\/p>\n<p>\/* VENUES *\/\n.wc-venues{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}\n.wc-vcard{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;box-shadow:var(--shadow);transition:var(--transition)}\n.wc-vcard:hover{border-color:var(--accent);transform:translateY(-2px)}\n.wc-vimg{width:100%;height:160px;object-fit:cover;background:var(--bg3)}\n.wc-vinfo{padding:14px}\n.wc-vinfo h3{font-size:15px;font-weight:700;margin-bottom:2px}\n.wc-vcity{font-size:12px;color:var(--t2);margin-bottom:6px;display:flex;align-items:center;gap:5px}\n.wc-vcity img{width:18px;height:12px;border-radius:1px}\n.wc-vstats{display:flex;gap:14px;font-size:11px;color:var(--t3)}<\/p>\n<p>\/* SIMULATOR *\/\n.wc-sim-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--r3);padding:28px;text-align:center;max-width:700px;margin:0 auto 24px;box-shadow:var(--shadow)}\n.wc-sim-btn{padding:12px 36px;border-radius:var(--r);border:none;background:linear-gradient(135deg,var(--accent),#15803d);color:#fff;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;transition:var(--transition);box-shadow:0 4px 16px var(--accent-glow)}\n.wc-sim-btn:hover{transform:translateY(-2px);box-shadow:0 6px 24px var(--accent-glow)}\n.wc-sim-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}\n.wc-sim-bar-bg{height:5px;background:var(--glass2);border-radius:3px;overflow:hidden;margin-top:16px}\n.wc-sim-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--teal));border-radius:3px;width:0;transition:width .3s}\n.wc-sim-label{font-size:11px;color:var(--t3);margin-top:5px}\n.wc-sim-results{margin-top:20px}\n.wc-champ{background:var(--champ-bg);border:1px solid var(--champ-border);border-radius:var(--r2);padding:28px;text-align:center;margin-bottom:20px;position:relative;overflow:hidden}\n.wc-champ img{width:88px;height:59px;border-radius:6px;object-fit:cover;margin:0 auto 10px;position:relative;z-index:1;box-shadow:0 4px 16px rgba(0,0,0,.2)}\n.wc-champ h3{font-size:24px;font-weight:800;color:var(--gold);position:relative;z-index:1}\n.wc-champ p{color:var(--t2);font-size:13px;position:relative;z-index:1;margin-top:3px}\n.wc-ko-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}\n.wc-ko-item{background:var(--glass2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;display:flex;align-items:center;gap:6px;font-size:12px}\n.wc-ko-item img{width:18px;height:12px;border-radius:1px;flex-shrink:0}\n.wc-ko-item .sc{font-weight:700;color:var(--accent2);margin:0 4px;flex-shrink:0}\n.wc-ko-item .rnd{font-size:9px;color:var(--t3);padding:2px 5px;background:var(--glass2);border-radius:3px;margin-left:auto;flex-shrink:0}<\/p>\n<p>\/* STATS *\/\n.wc-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}\n.wc-scard{background:var(--card);border:1px solid var(--border);border-radius:var(--r2);padding:18px;box-shadow:var(--shadow)}\n.wc-scard h3{font-size:14px;font-weight:700;margin-bottom:14px;color:var(--t2)}\n.wc-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}\n.wc-bar-row .lb{width:70px;font-size:11px;color:var(--t2);flex-shrink:0}\n.wc-bar-row .br{flex:1;height:20px;background:var(--glass2);border-radius:5px;overflow:hidden}\n.wc-bar-row .bi{height:100%;border-radius:5px;display:flex;align-items:center;padding-left:7px;font-size:9px;font-weight:700;color:#fff;min-width:fit-content;white-space:nowrap}\n.wc-god{background:linear-gradient(135deg,rgba(239,68,68,.07),rgba(239,68,68,.02));border:1px solid rgba(239,68,68,.12);border-radius:var(--r);padding:14px;margin-bottom:10px}\n.wc-god h4{color:var(--red);font-size:13px;font-weight:700;margin-bottom:6px}\n.wc-god-teams{display:flex;gap:6px;flex-wrap:wrap}\n.wc-god-t{display:flex;align-items:center;gap:5px;font-size:12px;background:var(--glass2);padding:3px 8px;border-radius:5px}\n.wc-god-t img{width:18px;height:12px;border-radius:1px}\n.wc-easy{background:linear-gradient(135deg,rgba(22,163,74,.07),rgba(22,163,74,.02));border:1px solid rgba(22,163,74,.12);border-radius:var(--r);padding:14px}\n.wc-easy h4{color:var(--accent2);font-size:13px;font-weight:700;margin-bottom:6px}<\/p>\n<p>.wc-footer{text-align:center;padding:32px 16px;color:var(--t3);font-size:11px;border-top:1px solid var(--border);margin-top:48px}<\/p>\n<p>\/* CONFETTI *\/\n.wc-confetti{position:fixed;width:8px;height:8px;z-index:9999;pointer-events:none;animation:wcFall linear forwards}\n@keyframes wcFall{0%{opacity:1;transform:translateY(-20px) rotate(0deg)}100%{opacity:0;transform:translateY(100vh) rotate(720deg)}}<\/p>\n<p>\/* RESPONSIVE *\/\n@media(max-width:640px){\n  .wc-groups,.wc-venues{grid-template-columns:1fr}\n  .wc-teams{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}\n  .wc-match{grid-template-columns:1fr;text-align:center;gap:3px}\n  .wc-mteam,.wc-mteam.away{justify-content:center;text-align:center}\n  .wc-stats-grid,.wc-ko-grid{grid-template-columns:1fr}\n  .wc-tsearch{width:100%}\n  .wc-hero h1{font-size:28px}\n}\n<\/style>\n<div class=\"wc26-hub\" id=\"wc26-hub\">\n<nav class=\"wc-nav\">\n<div class=\"wc-nav-inner\">\n<div class=\"wc-nav-logo\">WC26<\/div>\n<div class=\"wc-nav-links\">\n<a href=\"#wc-hero\">Home<\/a><a href=\"#wc-groups\">Groups<\/a><a href=\"#wc-schedule\">Schedule<\/a><a href=\"#wc-bracket\">Bracket<\/a><a href=\"#wc-teams\">Teams<\/a><a href=\"#wc-venues\">Venues<\/a><a href=\"#wc-stats\">Stats<\/a>\n<\/div>\n<p><button class=\"wc-theme-btn\" id=\"wc-theme-btn\" onclick=\"wc26ToggleTheme()\">&#9790;<\/button>\n<\/div>\n<\/nav>\n<div class=\"wc-section wc-hero\" id=\"wc-hero\">\n<div class=\"wc-hero-content\">\n<h1>FIFA World Cup <span>2026<\/span><\/h1>\n<p class=\"wc-hero-sub\">The Ultimate Tournament Hub<\/p>\n<div class=\"wc-hero-flags\">\n<div class=\"wc-hero-flag\"><img decoding=\"async\" src=\"https:\/\/flagcdn.com\/w40\/us.png\" alt=\"USA\"> United States<\/div>\n<div class=\"wc-hero-flag\"><img decoding=\"async\" src=\"https:\/\/flagcdn.com\/w40\/mx.png\" alt=\"MEX\"> Mexico<\/div>\n<div class=\"wc-hero-flag\"><img decoding=\"async\" src=\"https:\/\/flagcdn.com\/w40\/ca.png\" alt=\"CAN\"> Canada<\/div>\n<\/div>\n<div class=\"wc-countdown\" id=\"wc-countdown\"><\/div>\n<div class=\"wc-stats-row\" id=\"wc-hero-stats\"><\/div>\n<\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-groups\">\n<div class=\"wc-section-head\">\n<h2>Group Stage<\/h2>\n<p>12 Groups &middot; 48 Teams &middot; 72 Matches<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-groups\" id=\"wc-groups-grid\"><\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-schedule\">\n<div class=\"wc-section-head\">\n<h2>Match Schedule<\/h2>\n<p>June 11 &ndash; June 27, 2026<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-filters\" id=\"wc-sch-filters\"><\/div>\n<div id=\"wc-sch-list\"><\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-bracket\">\n<div class=\"wc-section-head\">\n<h2>Knockout Bracket<\/h2>\n<p>Simulate groups, then click on a team to advance them<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-bracket-actions\" id=\"wc-bracket-actions\"><\/div>\n<div class=\"wc-vbracket\" id=\"wc-bracket-root\"><\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-teams\">\n<div class=\"wc-section-head\">\n<h2>All 48 Teams<\/h2>\n<p>Explore every qualified nation<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-team-ctrls\" id=\"wc-team-ctrls\"><\/div>\n<div class=\"wc-teams\" id=\"wc-teams-grid\"><\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-venues\">\n<div class=\"wc-section-head\">\n<h2>Host Venues<\/h2>\n<p>16 Stadiums across 3 Countries<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-stats-row\" id=\"wc-venue-stats\"><\/div>\n<div class=\"wc-filters\" id=\"wc-venue-filters\"><\/div>\n<div class=\"wc-venues\" id=\"wc-venues-grid\"><\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-sim\">\n<div class=\"wc-section-head\">\n<h2>Your Prediction<\/h2>\n<p>Champion result appears here after you complete the bracket above<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div id=\"wc-sim-results\" style=\"display:none\"><\/div>\n<div class=\"wc-sim-panel\">\n<p style=\"color:var(--t2);font-size:13px\">Go to the <a href=\"#wc-bracket\" style=\"font-weight:700\">Knockout Bracket<\/a> section above.<br \/>Click &#8220;Simulate Group Stage&#8221; then click on teams to advance them through each round.<\/p>\n<\/div>\n<\/div>\n<div class=\"wc-section\" id=\"wc-stats\">\n<div class=\"wc-section-head\">\n<h2>Tournament Stats<\/h2>\n<p>Data-driven insights<\/p>\n<div class=\"wc-divider\"><\/div>\n<\/div>\n<div class=\"wc-stats-grid\" id=\"wc-stats-grid\"><\/div>\n<\/div>\n<div class=\"wc-footer\">FIFA World Cup 2026 Hub &middot; Not affiliated with FIFA<\/div>\n<\/div>\n<p><textarea id=\"wc26-src\" style=\"display:none\">CihmdW5jdGlvbigpewovLyA9PT09PSBUSEVNRSA9PT09PQpmdW5jdGlvbiB3YzI2SW5pdFRoZW1lKCl7CiAgY29uc3Qgc2F2ZWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oIndjMjYtdGhlbWUiKTsKICBpZihzYXZlZD09PSJkYXJrIilkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MyNi1odWIiKS5jbGFzc0xpc3QuYWRkKCJ3YzI2LWRhcmsiKTsKICB1cGRhdGVUaGVtZUljb24oKTsKfQp3aW5kb3cud2MyNlRvZ2dsZVRoZW1lPWZ1bmN0aW9uKCl7CiAgY29uc3QgaHViPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3YzI2LWh1YiIpOwogIGh1Yi5jbGFzc0xpc3QudG9nZ2xlKCJ3YzI2LWRhcmsiKTsKICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgid2MyNi10aGVtZSIsaHViLmNsYXNzTGlzdC5jb250YWlucygid2MyNi1kYXJrIik\/ImRhcmsiOiJsaWdodCIpOwogIHVwZGF0ZVRoZW1lSWNvbigpOwp9OwpmdW5jdGlvbiB1cGRhdGVUaGVtZUljb24oKXsKICBjb25zdCBidG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndjLXRoZW1lLWJ0biIpOwogIGlmKGJ0bilidG4uaW5uZXJIVE1MPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3YzI2LWh1YiIpLmNsYXNzTGlzdC5jb250YWlucygid2MyNi1kYXJrIik\/IiYjOTc4ODsiOiImIzk3OTA7IjsKfQoKLy8gPT09PT0gREFUQSAocGxheW9mZnMgcmVzb2x2ZWQpID09PT09CmNvbnN0IFRFQU1TPVsKe246Ik1leGljbyIsYzoiTUVYIixyOjE1LHA6MTY3NS43NSxjZjoiQ09OQ0FDQUYifSx7bjoiU291dGggQWZyaWNhIixjOiJSU0EiLHI6NTcscDoxNDgwLjE5LGNmOiJDQUYifSx7bjoiU291dGggS29yZWEiLGM6IktPUiIscjoyMyxwOjE2MDMuMzksY2Y6IkFGQyJ9LHtuOiJEZW5tYXJrIixjOiJERU4iLHI6MjEscDoxNjE0LjQzLGNmOiJVRUZBIn0sCntuOiJDYW5hZGEiLGM6IkNBTiIscjozNixwOjE1NTcuMDMsY2Y6IkNPTkNBQ0FGIn0se246Ikl0YWx5IixjOiJJVEEiLHI6MTIscDoxNzAyLjA2LGNmOiJVRUZBIn0se246IlFhdGFyIixjOiJRQVQiLHI6NDAscDoxNTMyLjA2LGNmOiJBRkMifSx7bjoiU3dpdHplcmxhbmQiLGM6IlNVSSIscjoxNyxwOjE2NTQuNjksY2Y6IlVFRkEifSwKe246IkJyYXppbCIsYzoiQlJBIixyOjUscDoxNzYwLjQ2LGNmOiJDT05NRUJPTCJ9LHtuOiJNb3JvY2NvIixjOiJNQVIiLHI6MTEscDoxNzEzLjEyLGNmOiJDQUYifSx7bjoiSGFpdGkiLGM6IkhBSSIscjo4MSxwOjEzNTUuNDIsY2Y6IkNPTkNBQ0FGIn0se246IlNjb3RsYW5kIixjOiJTQ08iLHI6NTQscDoxNDkyLjQyLGNmOiJVRUZBIn0sCntuOiJVU0EiLGM6IlVTQSIscjoxNCxwOjE2ODEuODgsY2Y6IkNPTkNBQ0FGIn0se246IlBhcmFndWF5IixjOiJQQVIiLHI6NDcscDoxNTA1LjAxLGNmOiJDT05NRUJPTCJ9LHtuOiJBdXN0cmFsaWEiLGM6IkFVUyIscjoyMixwOjE2MTEuMDgsY2Y6IkFGQyJ9LHtuOiJUdXJrZXkiLGM6IlRVUiIscjoyNixwOjE1ODQuNDksY2Y6IlVFRkEifSwKe246Ikdlcm1hbnkiLGM6IkdFUiIscjo5LHA6MTcyNC4xNSxjZjoiVUVGQSJ9LHtuOiJDdXJhY2FvIixjOiJDVVciLHI6ODQscDoxMzQ0LjI5LGNmOiJDT05DQUNBRiJ9LHtuOiJJdm9yeSBDb2FzdCIsYzoiQ0lWIixyOjM5LHA6MTUzOC41MixjZjoiQ0FGIn0se246IkVjdWFkb3IiLGM6IkVDVSIscjozMCxwOjE1NzQuNjMsY2Y6IkNPTk1FQk9MIn0sCntuOiJOZXRoZXJsYW5kcyIsYzoiTkVEIixyOjcscDoxNzU2LjI3LGNmOiJVRUZBIn0se246IkphcGFuIixjOiJKUE4iLHI6MTgscDoxNjUwLjEyLGNmOiJBRkMifSx7bjoiVWtyYWluZSIsYzoiVUtSIixyOjI0LHA6MTU5Ny40MyxjZjoiVUVGQSJ9LHtuOiJUdW5pc2lhIixjOiJUVU4iLHI6MzcscDoxNTU0LjU2LGNmOiJDQUYifSwKe246IkJlbGdpdW0iLGM6IkJFTCIscjo4LHA6MTczMC43MSxjZjoiVUVGQSJ9LHtuOiJFZ3lwdCIsYzoiRUdZIixyOjMzLHA6MTU2NC4xNCxjZjoiQ0FGIn0se246IklyYW4iLGM6IklSTiIscjoyMCxwOjE2MTcuMDIsY2Y6IkFGQyJ9LHtuOiJOZXcgWmVhbGFuZCIsYzoiTlpMIixyOjkzLHA6MTMxMi4zNyxjZjoiT0ZDIn0sCntuOiJTcGFpbiIsYzoiRVNQIixyOjEscDoxODc3LjE4LGNmOiJVRUZBIn0se246IkNhcGUgVmVyZGUiLGM6IkNQViIscjo3MixwOjEzOTIuMzYsY2Y6IkNBRiJ9LHtuOiJTYXVkaSBBcmFiaWEiLGM6IktTQSIscjo2MCxwOjE0NzUuMyxjZjoiQUZDIn0se246IlVydWd1YXkiLGM6IlVSVSIscjoxNixwOjE2NzIuNjIsY2Y6IkNPTk1FQk9MIn0sCntuOiJGcmFuY2UiLGM6IkZSQSIscjozLHA6MTg3MCxjZjoiVUVGQSJ9LHtuOiJTZW5lZ2FsIixjOiJTRU4iLHI6MTkscDoxNjQ4LjA3LGNmOiJDQUYifSx7bjoiSXJhcSIsYzoiSVJRIixyOjU1LHA6MTQ4OC4wMSxjZjoiQUZDIn0se246Ik5vcndheSIsYzoiTk9SIixyOjQ2LHA6MTUwNi42NSxjZjoiVUVGQSJ9LAp7bjoiQXJnZW50aW5hIixjOiJBUkciLHI6MixwOjE4NzMuMzMsY2Y6IkNPTk1FQk9MIn0se246IkFsZ2VyaWEiLGM6IkFMRyIscjozMixwOjE1NjYuMixjZjoiQ0FGIn0se246IkF1c3RyaWEiLGM6IkFVVCIscjoyNSxwOjE1ODkuMTYsY2Y6IlVFRkEifSx7bjoiSm9yZGFuIixjOiJKT1IiLHI6NjgscDoxNDA5LjExLGNmOiJBRkMifSwKe246IlBvcnR1Z2FsIixjOiJQT1IiLHI6NixwOjE3NjAuMzgsY2Y6IlVFRkEifSx7bjoiRFIgQ29uZ28iLGM6IkNPRCIscjo1MCxwOjE0OTcuMzQsY2Y6IkNBRiJ9LHtuOiJVemJla2lzdGFuIixjOiJVWkIiLHI6NjIscDoxNDY1LjYyLGNmOiJBRkMifSx7bjoiQ29sb21iaWEiLGM6IkNPTCIscjoxMyxwOjE3MDEuMyxjZjoiQ09OTUVCT0wifSwKe246IkVuZ2xhbmQiLGM6IkVORyIscjo0LHA6MTgzNC4xMixjZjoiVUVGQSJ9LHtuOiJDcm9hdGlhIixjOiJDUk8iLHI6MTAscDoxNzE2Ljg4LGNmOiJVRUZBIn0se246IkdoYW5hIixjOiJHSEEiLHI6NjcscDoxNDE3LjM3LGNmOiJDQUYifSx7bjoiUGFuYW1hIixjOiJQQU4iLHI6NDMscDoxNTIwLjI1LGNmOiJDT05DQUNBRiJ9Cl07Cgpjb25zdCBHUk9VUFM9Wwp7bjoiR3JvdXAgQSIsaWQ6IkEiLHRjOlsiTUVYIiwiUlNBIiwiS09SIiwiREVOIl19LHtuOiJHcm91cCBCIixpZDoiQiIsdGM6WyJDQU4iLCJJVEEiLCJRQVQiLCJTVUkiXX0sCntuOiJHcm91cCBDIixpZDoiQyIsdGM6WyJCUkEiLCJNQVIiLCJIQUkiLCJTQ08iXX0se246Ikdyb3VwIEQiLGlkOiJEIix0YzpbIlVTQSIsIlBBUiIsIkFVUyIsIlRVUiJdfSwKe246Ikdyb3VwIEUiLGlkOiJFIix0YzpbIkdFUiIsIkNVVyIsIkNJViIsIkVDVSJdfSx7bjoiR3JvdXAgRiIsaWQ6IkYiLHRjOlsiTkVEIiwiSlBOIiwiVUtSIiwiVFVOIl19LAp7bjoiR3JvdXAgRyIsaWQ6IkciLHRjOlsiQkVMIiwiRUdZIiwiSVJOIiwiTlpMIl19LHtuOiJHcm91cCBIIixpZDoiSCIsdGM6WyJFU1AiLCJDUFYiLCJLU0EiLCJVUlUiXX0sCntuOiJHcm91cCBJIixpZDoiSSIsdGM6WyJGUkEiLCJTRU4iLCJJUlEiLCJOT1IiXX0se246Ikdyb3VwIEoiLGlkOiJKIix0YzpbIkFSRyIsIkFMRyIsIkFVVCIsIkpPUiJdfSwKe246Ikdyb3VwIEsiLGlkOiJLIix0YzpbIlBPUiIsIkNPRCIsIlVaQiIsIkNPTCJdfSx7bjoiR3JvdXAgTCIsaWQ6IkwiLHRjOlsiRU5HIiwiQ1JPIiwiR0hBIiwiUEFOIl19Cl07Cgpjb25zdCBWRU5VRVM9eyJtZXhpY28tY2l0eSI6e2lkOiJtZXhpY28tY2l0eSIsY2k6Ik1leGljbyBDaXR5IixzdDoiQ0RNWCIsc2Q6IkVzdGFkaW8gQXp0ZWNhIixjbzoiTUVYIixjYXA6ODc1MjN9LCJndWFkYWxhamFyYSI6e2lkOiJndWFkYWxhamFyYSIsY2k6Ikd1YWRhbGFqYXJhIixzdDoiSmFsaXNjbyIsc2Q6IkVzdGFkaW8gQWtyb24iLGNvOiJNRVgiLGNhcDo0OTg1MH0sIm1vbnRlcnJleSI6e2lkOiJtb250ZXJyZXkiLGNpOiJNb250ZXJyZXkiLHN0OiJOdWV2byBMZVx1MDBmM24iLHNkOiJFc3RhZGlvIEJCVkEiLGNvOiJNRVgiLGNhcDo1MzUwMH0sInRvcm9udG8iOntpZDoidG9yb250byIsY2k6IlRvcm9udG8iLHN0OiJPbnRhcmlvIixzZDoiQk1PIEZpZWxkIixjbzoiQ0FOIixjYXA6MzAwMDB9LCJ2YW5jb3V2ZXIiOntpZDoidmFuY291dmVyIixjaToiVmFuY291dmVyIixzdDoiQnJpdGlzaCBDb2x1bWJpYSIsc2Q6IkJDIFBsYWNlIixjbzoiQ0FOIixjYXA6NTQ1MDB9LCJsb3MtYW5nZWxlcyI6e2lkOiJsb3MtYW5nZWxlcyIsY2k6IkxvcyBBbmdlbGVzIixzdDoiQ2FsaWZvcm5pYSIsc2Q6IlNvRmkgU3RhZGl1bSIsY286IlVTQSIsY2FwOjcwMjQwfSwibmV3LXlvcmsiOntpZDoibmV3LXlvcmsiLGNpOiJOZXcgWW9yay9OZXcgSmVyc2V5IixzdDoiTmV3IEplcnNleSIsc2Q6Ik1ldExpZmUgU3RhZGl1bSIsY286IlVTQSIsY2FwOjgyNTAwfSwiYm9zdG9uIjp7aWQ6ImJvc3RvbiIsY2k6IkJvc3RvbiIsc3Q6Ik1hc3NhY2h1c2V0dHMiLHNkOiJHaWxsZXR0ZSBTdGFkaXVtIixjbzoiVVNBIixjYXA6NjU4Nzh9LCJzYW4tZnJhbmNpc2NvIjp7aWQ6InNhbi1mcmFuY2lzY28iLGNpOiJTYW4gRnJhbmNpc2NvIEJheSBBcmVhIixzdDoiQ2FsaWZvcm5pYSIsc2Q6IkxldmkncyBTdGFkaXVtIixjbzoiVVNBIixjYXA6Njg1MDB9LCJob3VzdG9uIjp7aWQ6ImhvdXN0b24iLGNpOiJIb3VzdG9uIixzdDoiVGV4YXMiLHNkOiJOUkcgU3RhZGl1bSIsY286IlVTQSIsY2FwOjcyMjIwfSwicGhpbGFkZWxwaGlhIjp7aWQ6InBoaWxhZGVscGhpYSIsY2k6IlBoaWxhZGVscGhpYSIsc3Q6IlBlbm5zeWx2YW5pYSIsc2Q6IkxpbmNvbG4gRmluYW5jaWFsIEZpZWxkIixjbzoiVVNBIixjYXA6Njk3OTZ9LCJkYWxsYXMiOntpZDoiZGFsbGFzIixjaToiRGFsbGFzIixzdDoiVGV4YXMiLHNkOiJBVCZUIFN0YWRpdW0iLGNvOiJVU0EiLGNhcDo4MDAwMH0sImF0bGFudGEiOntpZDoiYXRsYW50YSIsY2k6IkF0bGFudGEiLHN0OiJHZW9yZ2lhIixzZDoiTWVyY2VkZXMtQmVueiBTdGFkaXVtIixjbzoiVVNBIixjYXA6NzEwMDB9LCJtaWFtaSI6e2lkOiJtaWFtaSIsY2k6Ik1pYW1pIixzdDoiRmxvcmlkYSIsc2Q6IkhhcmQgUm9jayBTdGFkaXVtIixjbzoiVVNBIixjYXA6NjUzMjZ9LCJzZWF0dGxlIjp7aWQ6InNlYXR0bGUiLGNpOiJTZWF0dGxlIixzdDoiV2FzaGluZ3RvbiIsc2Q6Ikx1bWVuIEZpZWxkIixjbzoiVVNBIixjYXA6NjkwMDB9LCJrYW5zYXMtY2l0eSI6e2lkOiJrYW5zYXMtY2l0eSIsY2k6IkthbnNhcyBDaXR5IixzdDoiTWlzc291cmkiLHNkOiJBcnJvd2hlYWQgU3RhZGl1bSIsY286IlVTQSIsY2FwOjc2NDE2fX07Cgpjb25zdCBNQVRDSEVTPVt7ZDoiMjAyNi0wNi0xMSIsdDoiMTU6MDAiLGg6Ik1FWCIsYToiUlNBIixnOiJBIix2OiJtZXhpY28tY2l0eSIsbWQ6MX0se2Q6IjIwMjYtMDYtMTEiLHQ6IjE4OjAwIixoOiJLT1IiLGE6IkRFTiIsZzoiQSIsdjoiZ3VhZGFsYWphcmEiLG1kOjF9LHtkOiIyMDI2LTA2LTEyIix0OiIxNTowMCIsaDoiQ0FOIixhOiJJVEEiLGc6IkIiLHY6InRvcm9udG8iLG1kOjF9LHtkOiIyMDI2LTA2LTEyIix0OiIxODowMCIsaDoiVVNBIixhOiJQQVIiLGc6IkQiLHY6Imxvcy1hbmdlbGVzIixtZDoxfSx7ZDoiMjAyNi0wNi0xMyIsdDoiMTI6MDAiLGg6IkJSQSIsYToiTUFSIixnOiJDIix2OiJuZXcteW9yayIsbWQ6MX0se2Q6IjIwMjYtMDYtMTMiLHQ6IjE1OjAwIixoOiJBVVMiLGE6IlRVUiIsZzoiRCIsdjoidmFuY291dmVyIixtZDoxfSx7ZDoiMjAyNi0wNi0xMyIsdDoiMTg6MDAiLGg6IkhBSSIsYToiU0NPIixnOiJDIix2OiJib3N0b24iLG1kOjF9LHtkOiIyMDI2LTA2LTEzIix0OiIyMTowMCIsaDoiUUFUIixhOiJTVUkiLGc6IkIiLHY6InNhbi1mcmFuY2lzY28iLG1kOjF9LHtkOiIyMDI2LTA2LTE0Iix0OiIxMjowMCIsaDoiR0VSIixhOiJDVVciLGc6IkUiLHY6ImhvdXN0b24iLG1kOjF9LHtkOiIyMDI2LTA2LTE0Iix0OiIxNTowMCIsaDoiQ0lWIixhOiJFQ1UiLGc6IkUiLHY6InBoaWxhZGVscGhpYSIsbWQ6MX0se2Q6IjIwMjYtMDYtMTQiLHQ6IjE4OjAwIixoOiJORUQiLGE6IkpQTiIsZzoiRiIsdjoiZGFsbGFzIixtZDoxfSx7ZDoiMjAyNi0wNi0xNCIsdDoiMjE6MDAiLGg6IlVLUiIsYToiVFVOIixnOiJGIix2OiJtb250ZXJyZXkiLG1kOjF9LHtkOiIyMDI2LTA2LTE1Iix0OiIxMjowMCIsaDoiRVNQIixhOiJDUFYiLGc6IkgiLHY6ImF0bGFudGEiLG1kOjF9LHtkOiIyMDI2LTA2LTE1Iix0OiIxNTowMCIsaDoiS1NBIixhOiJVUlUiLGc6IkgiLHY6Im1pYW1pIixtZDoxfSx7ZDoiMjAyNi0wNi0xNSIsdDoiMTg6MDAiLGg6IkJFTCIsYToiRUdZIixnOiJHIix2OiJzZWF0dGxlIixtZDoxfSx7ZDoiMjAyNi0wNi0xNSIsdDoiMjE6MDAiLGg6IklSTiIsYToiTlpMIixnOiJHIix2OiJsb3MtYW5nZWxlcyIsbWQ6MX0se2Q6IjIwMjYtMDYtMTYiLHQ6IjEyOjAwIixoOiJGUkEiLGE6IlNFTiIsZzoiSSIsdjoibmV3LXlvcmsiLG1kOjF9LHtkOiIyMDI2LTA2LTE2Iix0OiIxNTowMCIsaDoiSVJRIixhOiJOT1IiLGc6IkkiLHY6ImJvc3RvbiIsbWQ6MX0se2Q6IjIwMjYtMDYtMTYiLHQ6IjE4OjAwIixoOiJBUkciLGE6IkFMRyIsZzoiSiIsdjoia2Fuc2FzLWNpdHkiLG1kOjF9LHtkOiIyMDI2LTA2LTE2Iix0OiIyMTowMCIsaDoiQVVUIixhOiJKT1IiLGc6IkoiLHY6InNhbi1mcmFuY2lzY28iLG1kOjF9LHtkOiIyMDI2LTA2LTE3Iix0OiIxMjowMCIsaDoiRU5HIixhOiJDUk8iLGc6IkwiLHY6ImRhbGxhcyIsbWQ6MX0se2Q6IjIwMjYtMDYtMTciLHQ6IjE1OjAwIixoOiJHSEEiLGE6IlBBTiIsZzoiTCIsdjoidG9yb250byIsbWQ6MX0se2Q6IjIwMjYtMDYtMTciLHQ6IjE4OjAwIixoOiJQT1IiLGE6IkNPRCIsZzoiSyIsdjoiaG91c3RvbiIsbWQ6MX0se2Q6IjIwMjYtMDYtMTciLHQ6IjIxOjAwIixoOiJVWkIiLGE6IkNPTCIsZzoiSyIsdjoibWV4aWNvLWNpdHkiLG1kOjF9LHtkOiIyMDI2LTA2LTE4Iix0OiIxMjowMCIsaDoiREVOIixhOiJSU0EiLGc6IkEiLHY6ImF0bGFudGEiLG1kOjJ9LHtkOiIyMDI2LTA2LTE4Iix0OiIxNTowMCIsaDoiU1VJIixhOiJJVEEiLGc6IkIiLHY6Imxvcy1hbmdlbGVzIixtZDoyfSx7ZDoiMjAyNi0wNi0xOCIsdDoiMTg6MDAiLGg6IkNBTiIsYToiUUFUIixnOiJCIix2OiJ2YW5jb3V2ZXIiLG1kOjJ9LHtkOiIyMDI2LTA2LTE4Iix0OiIyMTowMCIsaDoiTUVYIixhOiJLT1IiLGc6IkEiLHY6Imd1YWRhbGFqYXJhIixtZDoyfSx7ZDoiMjAyNi0wNi0xOSIsdDoiMTI6MDAiLGg6IkJSQSIsYToiSEFJIixnOiJDIix2OiJwaGlsYWRlbHBoaWEiLG1kOjJ9LHtkOiIyMDI2LTA2LTE5Iix0OiIxNTowMCIsaDoiU0NPIixhOiJNQVIiLGc6IkMiLHY6ImJvc3RvbiIsbWQ6Mn0se2Q6IjIwMjYtMDYtMTkiLHQ6IjE4OjAwIixoOiJUVVIiLGE6IlBBUiIsZzoiRCIsdjoic2FuLWZyYW5jaXNjbyIsbWQ6Mn0se2Q6IjIwMjYtMDYtMTkiLHQ6IjIxOjAwIixoOiJVU0EiLGE6IkFVUyIsZzoiRCIsdjoic2VhdHRsZSIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjAiLHQ6IjEyOjAwIixoOiJHRVIiLGE6IkNJViIsZzoiRSIsdjoidG9yb250byIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjAiLHQ6IjE1OjAwIixoOiJFQ1UiLGE6IkNVVyIsZzoiRSIsdjoia2Fuc2FzLWNpdHkiLG1kOjJ9LHtkOiIyMDI2LTA2LTIwIix0OiIxODowMCIsaDoiTkVEIixhOiJVS1IiLGc6IkYiLHY6ImhvdXN0b24iLG1kOjJ9LHtkOiIyMDI2LTA2LTIwIix0OiIyMTowMCIsaDoiVFVOIixhOiJKUE4iLGc6IkYiLHY6Im1vbnRlcnJleSIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjEiLHQ6IjEyOjAwIixoOiJFU1AiLGE6IktTQSIsZzoiSCIsdjoiYXRsYW50YSIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjEiLHQ6IjE1OjAwIixoOiJVUlUiLGE6IkNQViIsZzoiSCIsdjoibWlhbWkiLG1kOjJ9LHtkOiIyMDI2LTA2LTIxIix0OiIxODowMCIsaDoiQkVMIixhOiJJUk4iLGc6IkciLHY6Imxvcy1hbmdlbGVzIixtZDoyfSx7ZDoiMjAyNi0wNi0yMSIsdDoiMjE6MDAiLGg6Ik5aTCIsYToiRUdZIixnOiJHIix2OiJ2YW5jb3V2ZXIiLG1kOjJ9LHtkOiIyMDI2LTA2LTIyIix0OiIxMjowMCIsaDoiRlJBIixhOiJJUlEiLGc6IkkiLHY6InBoaWxhZGVscGhpYSIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjIiLHQ6IjE1OjAwIixoOiJOT1IiLGE6IlNFTiIsZzoiSSIsdjoibmV3LXlvcmsiLG1kOjJ9LHtkOiIyMDI2LTA2LTIyIix0OiIxODowMCIsaDoiQVJHIixhOiJBVVQiLGc6IkoiLHY6ImRhbGxhcyIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjIiLHQ6IjIxOjAwIixoOiJKT1IiLGE6IkFMRyIsZzoiSiIsdjoic2FuLWZyYW5jaXNjbyIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjMiLHQ6IjEyOjAwIixoOiJFTkciLGE6IkdIQSIsZzoiTCIsdjoiYm9zdG9uIixtZDoyfSx7ZDoiMjAyNi0wNi0yMyIsdDoiMTU6MDAiLGg6IlBBTiIsYToiQ1JPIixnOiJMIix2OiJ0b3JvbnRvIixtZDoyfSx7ZDoiMjAyNi0wNi0yMyIsdDoiMTg6MDAiLGg6IlBPUiIsYToiVVpCIixnOiJLIix2OiJob3VzdG9uIixtZDoyfSx7ZDoiMjAyNi0wNi0yMyIsdDoiMjE6MDAiLGg6IkNPTCIsYToiQ09EIixnOiJLIix2OiJndWFkYWxhamFyYSIsbWQ6Mn0se2Q6IjIwMjYtMDYtMjQiLHQ6IjEyOjAwIixoOiJTQ08iLGE6IkJSQSIsZzoiQyIsdjoibWlhbWkiLG1kOjN9LHtkOiIyMDI2LTA2LTI0Iix0OiIxNTowMCIsaDoiTUFSIixhOiJIQUkiLGc6IkMiLHY6ImF0bGFudGEiLG1kOjN9LHtkOiIyMDI2LTA2LTI0Iix0OiIxODowMCIsaDoiQ0FOIixhOiJTVUkiLGc6IkIiLHY6InZhbmNvdXZlciIsbWQ6M30se2Q6IjIwMjYtMDYtMjQiLHQ6IjIxOjAwIixoOiJJVEEiLGE6IlFBVCIsZzoiQiIsdjoic2VhdHRsZSIsbWQ6M30se2Q6IjIwMjYtMDYtMjQiLHQ6IjE5OjAwIixoOiJNRVgiLGE6IkRFTiIsZzoiQSIsdjoibWV4aWNvLWNpdHkiLG1kOjN9LHtkOiIyMDI2LTA2LTI0Iix0OiIxOTowMCIsaDoiS09SIixhOiJSU0EiLGc6IkEiLHY6Im1vbnRlcnJleSIsbWQ6M30se2Q6IjIwMjYtMDYtMjUiLHQ6IjEyOjAwIixoOiJFQ1UiLGE6IkdFUiIsZzoiRSIsdjoibmV3LXlvcmsiLG1kOjN9LHtkOiIyMDI2LTA2LTI1Iix0OiIxNTowMCIsaDoiQ1VXIixhOiJDSVYiLGc6IkUiLHY6InBoaWxhZGVscGhpYSIsbWQ6M30se2Q6IjIwMjYtMDYtMjUiLHQ6IjE4OjAwIixoOiJUVU4iLGE6Ik5FRCIsZzoiRiIsdjoia2Fuc2FzLWNpdHkiLG1kOjN9LHtkOiIyMDI2LTA2LTI1Iix0OiIyMTowMCIsaDoiSlBOIixhOiJVS1IiLGc6IkYiLHY6ImRhbGxhcyIsbWQ6M30se2Q6IjIwMjYtMDYtMjUiLHQ6IjE5OjAwIixoOiJVU0EiLGE6IlRVUiIsZzoiRCIsdjoibG9zLWFuZ2VsZXMiLG1kOjN9LHtkOiIyMDI2LTA2LTI1Iix0OiIxOTowMCIsaDoiUEFSIixhOiJBVVMiLGc6IkQiLHY6InNhbi1mcmFuY2lzY28iLG1kOjN9LHtkOiIyMDI2LTA2LTI2Iix0OiIxMjowMCIsaDoiTk9SIixhOiJGUkEiLGc6IkkiLHY6ImJvc3RvbiIsbWQ6M30se2Q6IjIwMjYtMDYtMjYiLHQ6IjE1OjAwIixoOiJTRU4iLGE6IklSUSIsZzoiSSIsdjoidG9yb250byIsbWQ6M30se2Q6IjIwMjYtMDYtMjYiLHQ6IjE4OjAwIixoOiJOWkwiLGE6IkJFTCIsZzoiRyIsdjoidmFuY291dmVyIixtZDozfSx7ZDoiMjAyNi0wNi0yNiIsdDoiMjE6MDAiLGg6IkVHWSIsYToiSVJOIixnOiJHIix2OiJzZWF0dGxlIixtZDozfSx7ZDoiMjAyNi0wNi0yNiIsdDoiMTk6MDAiLGg6IlVSVSIsYToiRVNQIixnOiJIIix2OiJndWFkYWxhamFyYSIsbWQ6M30se2Q6IjIwMjYtMDYtMjYiLHQ6IjE5OjAwIixoOiJDUFYiLGE6IktTQSIsZzoiSCIsdjoiaG91c3RvbiIsbWQ6M30se2Q6IjIwMjYtMDYtMjciLHQ6IjEyOjAwIixoOiJQQU4iLGE6IkVORyIsZzoiTCIsdjoibmV3LXlvcmsiLG1kOjN9LHtkOiIyMDI2LTA2LTI3Iix0OiIxNTowMCIsaDoiQ1JPIixhOiJHSEEiLGc6IkwiLHY6InBoaWxhZGVscGhpYSIsbWQ6M30se2Q6IjIwMjYtMDYtMjciLHQ6IjE4OjAwIixoOiJKT1IiLGE6IkFSRyIsZzoiSiIsdjoiZGFsbGFzIixtZDozfSx7ZDoiMjAyNi0wNi0yNyIsdDoiMjE6MDAiLGg6IkFMRyIsYToiQVVUIixnOiJKIix2OiJrYW5zYXMtY2l0eSIsbWQ6M30se2Q6IjIwMjYtMDYtMjciLHQ6IjE5OjAwIixoOiJDT0wiLGE6IlBPUiIsZzoiSyIsdjoibWlhbWkiLG1kOjN9LHtkOiIyMDI2LTA2LTI3Iix0OiIxOTowMCIsaDoiQ09EIixhOiJVWkIiLGc6IksiLHY6ImF0bGFudGEiLG1kOjN9XTsKCmNvbnN0IEtPPXtSMzI6eyJSMzItMSI6e2Q6IjIwMjYtMDYtMjgiLHQ6IjEzOjAwIix2OiJsb3MtYW5nZWxlcyJ9LCJSMzItMiI6e2Q6IjIwMjYtMDYtMjkiLHQ6IjE2OjAwIix2OiJib3N0b24ifSwiUjMyLTMiOntkOiIyMDI2LTA2LTI5Iix0OiIxOTowMCIsdjoibW9udGVycmV5In0sIlIzMi00Ijp7ZDoiMjAyNi0wNi0yOSIsdDoiMjA6MDAiLHY6ImhvdXN0b24ifSwiUjMyLTUiOntkOiIyMDI2LTA2LTMwIix0OiIxMzowMCIsdjoibmV3LXlvcmsifSwiUjMyLTYiOntkOiIyMDI2LTA2LTMwIix0OiIxNjowMCIsdjoiZGFsbGFzIn0sIlIzMi03Ijp7ZDoiMjAyNi0wNi0zMCIsdDoiMTk6MDAiLHY6Im1leGljby1jaXR5In0sIlIzMi04Ijp7ZDoiMjAyNi0wNy0wMSIsdDoiMTM6MDAiLHY6ImF0bGFudGEifSwiUjMyLTkiOntkOiIyMDI2LTA3LTAxIix0OiIxNjowMCIsdjoic2FuLWZyYW5jaXNjbyJ9LCJSMzItMTAiOntkOiIyMDI2LTA3LTAxIix0OiIxOTowMCIsdjoic2VhdHRsZSJ9LCJSMzItMTEiOntkOiIyMDI2LTA3LTAyIix0OiIxMzowMCIsdjoidG9yb250byJ9LCJSMzItMTIiOntkOiIyMDI2LTA3LTAyIix0OiIxNjowMCIsdjoibG9zLWFuZ2VsZXMifSwiUjMyLTEzIjp7ZDoiMjAyNi0wNy0wMiIsdDoiMTk6MDAiLHY6InZhbmNvdXZlciJ9LCJSMzItMTQiOntkOiIyMDI2LTA3LTAzIix0OiIxMzowMCIsdjoibWlhbWkifSwiUjMyLTE1Ijp7ZDoiMjAyNi0wNy0wMyIsdDoiMTY6MDAiLHY6ImthbnNhcy1jaXR5In0sIlIzMi0xNiI6e2Q6IjIwMjYtMDctMDMiLHQ6IjE5OjAwIix2OiJkYWxsYXMifX0sUjE2OnsiUjE2LTEiOntkOiIyMDI2LTA3LTA0Iix0OiIxMzowMCIsdjoicGhpbGFkZWxwaGlhIn0sIlIxNi0yIjp7ZDoiMjAyNi0wNy0wNCIsdDoiMTc6MDAiLHY6ImhvdXN0b24ifSwiUjE2LTMiOntkOiIyMDI2LTA3LTA1Iix0OiIxMzowMCIsdjoibmV3LXlvcmsifSwiUjE2LTQiOntkOiIyMDI2LTA3LTA1Iix0OiIxNzowMCIsdjoibWV4aWNvLWNpdHkifSwiUjE2LTUiOntkOiIyMDI2LTA3LTA2Iix0OiIxMzowMCIsdjoiZGFsbGFzIn0sIlIxNi02Ijp7ZDoiMjAyNi0wNy0wNiIsdDoiMTc6MDAiLHY6InNlYXR0bGUifSwiUjE2LTciOntkOiIyMDI2LTA3LTA3Iix0OiIxMzowMCIsdjoiYXRsYW50YSJ9LCJSMTYtOCI6e2Q6IjIwMjYtMDctMDciLHQ6IjE3OjAwIix2OiJ2YW5jb3V2ZXIifX0sUUY6eyJRRi0xIjp7ZDoiMjAyNi0wNy0wOSIsdDoiMTU6MDAiLHY6ImJvc3RvbiJ9LCJRRi0yIjp7ZDoiMjAyNi0wNy0xMCIsdDoiMTg6MDAiLHY6Imxvcy1hbmdlbGVzIn0sIlFGLTMiOntkOiIyMDI2LTA3LTExIix0OiIxNTowMCIsdjoibWlhbWkifSwiUUYtNCI6e2Q6IjIwMjYtMDctMTEiLHQ6IjE4OjAwIix2OiJrYW5zYXMtY2l0eSJ9fSxTRjp7IlNGLTEiOntkOiIyMDI2LTA3LTE0Iix0OiIxOTowMCIsdjoiZGFsbGFzIn0sIlNGLTIiOntkOiIyMDI2LTA3LTE1Iix0OiIxOTowMCIsdjoiYXRsYW50YSJ9fSxGOnsiM1AiOntkOiIyMDI2LTA3LTE4Iix0OiIxNTowMCIsdjoibWlhbWkifSwiRiI6e2Q6IjIwMjYtMDctMTkiLHQ6IjE1OjAwIix2OiJuZXcteW9yayJ9fX07Cgpjb25zdCBTRUVEUz1be206IlIzMi0xIixzMToiMm5kIEEiLHMyOiIybmQgQiJ9LHttOiJSMzItMiIsczE6IjFzdCBFIixzMjoiM3JkIEFCQ0RGIn0se206IlIzMi0zIixzMToiMXN0IEYiLHMyOiIybmQgQyJ9LHttOiJSMzItNCIsczE6IjFzdCBDIixzMjoiMm5kIEYifSx7bToiUjMyLTUiLHMxOiIxc3QgSSIsczI6IjNyZCBDREZHSCJ9LHttOiJSMzItNiIsczE6IjJuZCBFIixzMjoiMm5kIEkifSx7bToiUjMyLTciLHMxOiIxc3QgQSIsczI6IjNyZCBDRUZISSJ9LHttOiJSMzItOCIsczE6IjFzdCBMIixzMjoiM3JkIEVISUpLIn0se206IlIzMi05IixzMToiMXN0IEQiLHMyOiIzcmQgQkVGSUoifSx7bToiUjMyLTEwIixzMToiMXN0IEciLHMyOiIzcmQgQUVISUoifSx7bToiUjMyLTExIixzMToiMm5kIEsiLHMyOiIybmQgTCJ9LHttOiJSMzItMTIiLHMxOiIxc3QgSCIsczI6IjJuZCBKIn0se206IlIzMi0xMyIsczE6IjFzdCBCIixzMjoiM3JkIEVGR0lKIn0se206IlIzMi0xNCIsczE6IjFzdCBKIixzMjoiMm5kIEgifSx7bToiUjMyLTE1IixzMToiMXN0IEsiLHMyOiIzcmQgREVJSkwifSx7bToiUjMyLTE2IixzMToiMm5kIEQiLHMyOiIybmQgRyJ9XTsKCmNvbnN0IEJQPXsiUjMyLTEiOlsiUjE2LTIiXSwiUjMyLTIiOlsiUjE2LTEiXSwiUjMyLTMiOlsiUjE2LTIiXSwiUjMyLTQiOlsiUjE2LTMiXSwiUjMyLTUiOlsiUjE2LTEiXSwiUjMyLTYiOlsiUjE2LTMiXSwiUjMyLTciOlsiUjE2LTQiXSwiUjMyLTgiOlsiUjE2LTQiXSwiUjMyLTkiOlsiUjE2LTYiXSwiUjMyLTEwIjpbIlIxNi02Il0sIlIzMi0xMSI6WyJSMTYtNSJdLCJSMzItMTIiOlsiUjE2LTUiXSwiUjMyLTEzIjpbIlIxNi04Il0sIlIzMi0xNCI6WyJSMTYtNyJdLCJSMzItMTUiOlsiUjE2LTgiXSwiUjMyLTE2IjpbIlIxNi03Il0sIlIxNi0xIjpbIlFGLTEiXSwiUjE2LTIiOlsiUUYtMSJdLCJSMTYtMyI6WyJRRi0zIl0sIlIxNi00IjpbIlFGLTMiXSwiUjE2LTUiOlsiUUYtMiJdLCJSMTYtNiI6WyJRRi0yIl0sIlIxNi03IjpbIlFGLTQiXSwiUjE2LTgiOlsiUUYtNCJdLCJRRi0xIjpbIlNGLTEiXSwiUUYtMiI6WyJTRi0xIl0sIlFGLTMiOlsiU0YtMiJdLCJRRi00IjpbIlNGLTIiXSwiU0YtMSI6WyJGIl0sIlNGLTIiOlsiRiJdfTsKCmNvbnN0IElTTz17TUVYOiJteCIsUlNBOiJ6YSIsS09SOiJrciIsREVOOiJkayIsQ0FOOiJjYSIsSVRBOiJpdCIsUUFUOiJxYSIsU1VJOiJjaCIsQlJBOiJiciIsTUFSOiJtYSIsSEFJOiJodCIsU0NPOiJnYi1zY3QiLFVTQToidXMiLFBBUjoicHkiLEFVUzoiYXUiLFRVUjoidHIiLEdFUjoiZGUiLENVVzoiY3ciLENJVjoiY2kiLEVDVToiZWMiLE5FRDoibmwiLEpQTjoianAiLFVLUjoidWEiLFRVTjoidG4iLEJFTDoiYmUiLEVHWToiZWciLElSTjoiaXIiLE5aTDoibnoiLEVTUDoiZXMiLENQVjoiY3YiLEtTQToic2EiLFVSVToidXkiLEZSQToiZnIiLFNFTjoic24iLElSUToiaXEiLE5PUjoibm8iLEFSRzoiYXIiLEFMRzoiZHoiLEFVVDoiYXQiLEpPUjoiam8iLFBPUjoicHQiLENPRDoiY2QiLFVaQjoidXoiLENPTDoiY28iLEVORzoiZ2ItZW5nIixDUk86ImhyIixHSEE6ImdoIixQQU46InBhIn07Cgpjb25zdCBWSU1HPXsia2Fuc2FzLWNpdHkiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMjAyNC93YzI2LXZlbnVlLWthbnNhc2NpdHktMS5wbmciLCJuZXcteW9yayI6Imh0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0LzMwMTMyMDE0L3djMjYtdmVudWUtbmV3eW9yay0xLmpwZyIsImF0bGFudGEiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTQ1NS93YzI2LXZlbnVlLWF0bGFudGEtMS5qcGciLCJ2YW5jb3V2ZXIiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTQzOS93YzI2LXZlbnVlLXZhbmNvdXZlci5qcGciLCJ0b3JvbnRvIjoiaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvMzAxMzE0MzIvd2MyNi12ZW51ZS10b3JvbnRvLmpwZyIsInNlYXR0bGUiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTQyMS93YzI2LXZlbnVlLXNlYXR0bGUuanBnIiwic2FuLWZyYW5jaXNjbyI6Imh0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0LzMwMTMxNDEzL3djMjYtdmVudWUtc2FuLWZyYW5jaXNjby5qcGciLCJwaGlsYWRlbHBoaWEiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTQwNS93YzI2LXZlbnVlLXBoaWxhZGVscGhpYS5qcGciLCJtb250ZXJyZXkiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTM1NC93YzI2LXZlbnVlLW1vbnRlcnJleS5qcGciLCJtaWFtaSI6Imh0dHBzOi8vY3JlYXRpdmVncm91cC1ibG9nLXByZC1ldS13ZXN0LTEtcmVjaGFyZ2UtYmxvZy5zMy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0LzMwMTMxMzQ0L3djMjYtdmVudWUtbWlhbWkuanBnIiwibWV4aWNvLWNpdHkiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTMzMy93YzI2LXZlbnVlLW1leGljby1jaXR5LmpwZyIsImxvcy1hbmdlbGVzIjoiaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvMzAxMzEzMjEvd2MyNi12ZW51ZS1sb3MtYW5nZWxlcy5qcGciLCJob3VzdG9uIjoiaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvMzAxMzEzMTIvd2MyNi12ZW51ZS1ob3VzdG9uLmpwZyIsImd1YWRhbGFqYXJhIjoiaHR0cHM6Ly9jcmVhdGl2ZWdyb3VwLWJsb2ctcHJkLWV1LXdlc3QtMS1yZWNoYXJnZS1ibG9nLnMzLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvMzAxMzEyNTkvd2MyNi12ZW51ZS1ndWFkYWxhamFyYS5qcGciLCJkYWxsYXMiOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTI0My93YzI2LXZlbnVlLWRhbGxhcy5qcGciLCJib3N0b24iOiJodHRwczovL2NyZWF0aXZlZ3JvdXAtYmxvZy1wcmQtZXUtd2VzdC0xLXJlY2hhcmdlLWJsb2cuczMuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC8zMDEzMTIzNi93YzI2LXZlbnVlLWJvc3Rvbi5qcGcifTsKY29uc3QgR0M9e0E6IiNlZjQ0NDQiLEI6IiNmOTczMTYiLEM6IiNlYWIzMDgiLEQ6IiMyMmM1NWUiLEU6IiMxNGI4YTYiLEY6IiMzYjgyZjYiLEc6IiM2MzY2ZjEiLEg6IiM4YjVjZjYiLEk6IiNhODU1ZjciLEo6IiNlYzQ4OTkiLEs6IiNmNDNmNWUiLEw6IiMwNmI2ZDQifTsKY29uc3QgQ0M9e1VFRkE6IiMzYjgyZjYiLENPTk1FQk9MOiIjMjJjNTVlIixDT05DQUNBRjoiI2Y5NzMxNiIsQ0FGOiIjZWFiMzA4IixBRkM6IiNlZjQ0NDQiLE9GQzoiIzA2YjZkNCJ9OwoKLy8gVXRpbHMKY29uc3QgVE09bmV3IE1hcCgpO1RFQU1TLmZvckVhY2godD0+VE0uc2V0KHQuYyx0KSk7CmZ1bmN0aW9uIFQoYyl7cmV0dXJuIFRNLmdldChjKXx8e246YyxjLHI6OTk5LHA6MTMwMCxjZjoiPyJ9O30KZnVuY3Rpb24gZmwoYyl7Y29uc3QgaT1JU09bY107cmV0dXJuIGk\/KCJodHRwczovL2ZsYWdjZG4uY29tL3c4MC8iKyhpKSsiLnBuZyIpOiIiO30KZnVuY3Rpb24gY2ZsKGMpe3JldHVybigiaHR0cHM6Ly9mbGFnY2RuLmNvbS93NDAvIisoe01FWDoibXgiLENBTjoiY2EiLFVTQToidXMifVtjXXx8InVuIikrIi5wbmciKTt9CmZ1bmN0aW9uIGZkKGQpe3JldHVybiBuZXcgRGF0ZShkKyJUMTI6MDA6MDAiKS50b0xvY2FsZURhdGVTdHJpbmcoImVuLVVTIix7d2Vla2RheToic2hvcnQiLG1vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIn0pO30KZnVuY3Rpb24gZnQodCl7Y29uc3RbaCxtXT10LnNwbGl0KCI6Iik7Y29uc3QgaHI9K2g7cmV0dXJuKChocj4xMj9oci0xMjpocnx8MTIpKyI6IisobSkrIiAiKyhocj49MTI\/IlBNIjoiQU0iKSk7fQpmdW5jdGlvbiBubShuKXtyZXR1cm4gbi50b0xvY2FsZVN0cmluZygpO30KZnVuY3Rpb24gdGcoYyl7Y29uc3QgZz1HUk9VUFMuZmluZChnPT5nLnRjLmluY2x1ZGVzKGMpKTtyZXR1cm4gZz9nLmlkOm51bGw7fQoKLy8gQ291bnRkb3duCmZ1bmN0aW9uIGluaXRDRCgpewogIGNvbnN0IHRhcmdldD1uZXcgRGF0ZSgiMjAyNi0wNi0xMVQyMTowMDowMFoiKS5nZXRUaW1lKCk7CiAgZnVuY3Rpb24gdXBkKCl7CiAgICBjb25zdCBkaWZmPU1hdGgubWF4KDAsdGFyZ2V0LURhdGUubm93KCkpOwogICAgY29uc3QgZD1NYXRoLmZsb29yKGRpZmYvODY0ZTUpLGg9TWF0aC5mbG9vcihkaWZmJTg2NGU1LzM2ZTUpLG09TWF0aC5mbG9vcihkaWZmJTM2ZTUvNmU0KSxzPU1hdGguZmxvb3IoZGlmZiU2ZTQvMWUzKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3Yy1jb3VudGRvd24iKS5pbm5lckhUTUw9W1siRGF5cyIsZF0sWyJIb3VycyIsaF0sWyJNaW4iLG1dLFsiU2VjIixzXV0ubWFwKChbbCx2XSk9PigiPGRpdiBjbGFzcz1cIndjLWNkLWJveFwiPjxkaXYgY2xhc3M9XCJ3Yy1jZC1udW1cIj4iKyh2KSsiPC9kaXY+PGRpdiBjbGFzcz1cIndjLWNkLWxhYmVsXCI+IisobCkrIjwvZGl2PjwvZGl2PiIpKS5qb2luKCIiKTsKICB9CiAgdXBkKCk7c2V0SW50ZXJ2YWwodXBkLDEwMDApOwp9CgovLyBIZXJvIHN0YXRzCmZ1bmN0aW9uIGluaXRIZXJvU3RhdHMoKXsKICBjb25zdCBjYXA9T2JqZWN0LnZhbHVlcyhWRU5VRVMpLnJlZHVjZSgoYSx2KT0+YSt2LmNhcCwwKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtaGVyby1zdGF0cyIpLmlubmVySFRNTD1bWyI0OCIsIlRlYW1zIl0sWyIxNiIsIlZlbnVlcyJdLFsiMTA0IiwiTWF0Y2hlcyJdLFtubShjYXApLCJUb3RhbCBDYXBhY2l0eSJdXS5tYXAoKFt2LGxdKT0+KCI8ZGl2IGNsYXNzPVwid2Mtc3RhdFwiPjxkaXYgY2xhc3M9XCJ3Yy1zdGF0LW51bVwiPiIrKHYpKyI8L2Rpdj48ZGl2IGNsYXNzPVwid2Mtc3RhdC1sYWJlbFwiPiIrKGwpKyI8L2Rpdj48L2Rpdj4iKSkuam9pbigiIik7Cn0KCi8vIEdyb3VwcwpmdW5jdGlvbiBpbml0R3JvdXBzKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndjLWdyb3Vwcy1ncmlkIikuaW5uZXJIVE1MPUdST1VQUy5tYXAoZz0+ewogICAgY29uc3QgdGVhbXM9Zy50Yy5tYXAoYz0+VChjKSkuc29ydCgoYSxiKT0+YS5yLWIucik7CiAgICBjb25zdCBwbT1tYW51YWxNb2RlJiYhZ3JvdXBzU2ltdWxhdGVkOwogICAgY29uc3QgdGJsQ2xzPXBtPyJ3Yy1ndGFibGUgcGlja21vZGUiOiJ3Yy1ndGFibGUiOwogICAgY29uc3QgcGlja3M9bWFudWFsUGlja3NbZy5pZF18fFtdOwogICAgcmV0dXJuKCI8ZGl2IGNsYXNzPVwid2MtZ3JvdXBcIj48ZGl2IGNsYXNzPVwid2MtZ3JvdXAtaGRyXCI+PGRpdiBjbGFzcz1cIndjLWdyb3VwLWJhZGdlXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiIrKEdDW2cuaWRdKSsiXCI+IisoZy5pZCkrIjwvZGl2PiIrKGcubikrKHBtJiZwaWNrcy5sZW5ndGg8ND8oIjxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6YXV0bztmb250LXNpemU6MTBweDtjb2xvcjp2YXIoLS10MylcIj4iKyhwaWNrcy5sZW5ndGgpKyIvNDwvc3Bhbj4iKToiIikrIjwvZGl2Pjx0YWJsZSBjbGFzcz1cIiIrKHRibENscykrIlwiPjx0aGVhZD48dHI+PHRoPiM8L3RoPjx0aD5UZWFtPC90aD48dGg+UHRzPC90aD48dGg+UDwvdGg+PHRoPlc8L3RoPjx0aD5EPC90aD48dGg+TDwvdGg+PHRoPkdEPC90aD48L3RyPjwvdGhlYWQ+PHRib2R5PiIrKHRlYW1zLm1hcCgodCxpKT0+ewogICAgICBjb25zdCBwaWNrSWR4PXBpY2tzLmluZGV4T2YodC5jKTsKICAgICAgY29uc3QgcmM9cG0\/KHBpY2tJZHghPT0tMT8ocGlja0lkeDwyPyJ3Yy1ycSI6cGlja0lkeD09PTI\/IndjLXIzIjoid2MtcmUiKToiIik6KGk8Mj8id2MtcnEiOmk9PT0yPyJ3Yy1yMyI6IndjLXJlIik7CiAgICAgIGNvbnN0IHBvcz1wbT8ocGlja0lkeCE9PS0xP3BpY2tJZHgrMToiLSIpOihpKzEpOwogICAgICBjb25zdCBvbmNsaWNrPXBtPygiIG9uY2xpY2s9XCJ3YzI2UGlja0dyb3VwKCciKyhnLmlkKSsiJywnIisodC5jKSsiJylcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyIisocGlja0lkeD09PS0xJiZwaWNrcy5sZW5ndGg+MD8iO29wYWNpdHk6LjUiOiIiKSsiXCIiKToiIgogICAgICBjb25zdCBiYWRnZT1wbSYmcGlja0lkeCE9PS0xPygiPHNwYW4gY2xhc3M9XCJ3Yy1waWNrLWJhZGdlIHdjLXBpY2stIisocGlja0lkeCsxKSsiXCI+IisocGlja0lkeD09PTA\/IjFzdCI6cGlja0lkeD09PTE\/IjJuZCI6cGlja0lkeD09PTI\/IjNyZCI6IjR0aCIpKyI8L3NwYW4+Iik6IiI7CiAgICAgIHJldHVybigiPHRyIGNsYXNzPVwiIisocmMpKyJcIiBkYXRhLWc9XCIiKyhnLmlkKSsiXCIgZGF0YS10Yz1cIiIrKHQuYykrIlwiIisob25jbGljaykrIj48dGQgY2xhc3M9XCJ3Yy1wb3NcIj4iKyhwb3MpKyI8L3RkPjx0ZD48ZGl2IGNsYXNzPVwidGNcIj48aW1nIHNyYz1cIiIrKGZsKHQuYykpKyJcIiBhbHQ9XCIiKyh0LmMpKyJcIj4iKyh0Lm4pKyI8c3BhbiBjbGFzcz1cInJrXCI+IyIrKHQucikrIjwvc3Bhbj4iKyhiYWRnZSkrIjwvZGl2PjwvdGQ+PHRkPjxzdHJvbmc+MDwvc3Ryb25nPjwvdGQ+PHRkPjA8L3RkPjx0ZD4wPC90ZD48dGQ+MDwvdGQ+PHRkPjA8L3RkPjx0ZD4wPC90ZD48L3RyPiIpOwogICAgfSkuam9pbigiIikpKyI8L3Rib2R5PjwvdGFibGU+PC9kaXY+Iik7CiAgfSkuam9pbigiIik7Cn0KCi8vIFNjaGVkdWxlCmxldCBzZj17ZzoiYWxsIixtZDowfTsKZnVuY3Rpb24gaW5pdFNjaEZpbHRlcnMoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2Mtc2NoLWZpbHRlcnMiKS5pbm5lckhUTUw9IjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuIG9uXCIgb25jbGljaz1cIndjMjZTY2hGKCdtZCcsMClcIj5BbGw8L2J1dHRvbj4iK1sxLDIsM10ubWFwKG09PigiPGJ1dHRvbiBjbGFzcz1cIndjLWZidG5cIiBvbmNsaWNrPVwid2MyNlNjaEYoJ21kJywiKyhtKSsiKVwiPk1EICIrKG0pKyI8L2J1dHRvbj4iKSkuam9pbigiIikrKCI8c2VsZWN0IGNsYXNzPVwid2MtZnNlbFwiIG9uY2hhbmdlPVwid2MyNlNjaEYoJ2cnLHRoaXMudmFsdWUpXCI+PG9wdGlvbiB2YWx1ZT1cImFsbFwiPkFsbCBHcm91cHM8L29wdGlvbj4iKyhHUk9VUFMubWFwKGc9PigiPG9wdGlvbiB2YWx1ZT1cIiIrKGcuaWQpKyJcIj5Hcm91cCAiKyhnLmlkKSsiPC9vcHRpb24+IikpLmpvaW4oIiIpKSsiPC9zZWxlY3Q+Iik7Cn0Kd2luZG93LndjMjZTY2hGPWZ1bmN0aW9uKGssdil7c2Zba109djtyZW5kZXJTY2goKTtpZihrPT09Im1kIilkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjd2Mtc2NoLWZpbHRlcnMgLndjLWZidG4iKS5mb3JFYWNoKChiLGkpPT5iLmNsYXNzTGlzdC50b2dnbGUoIm9uIiwodj09PTAmJmk9PT0wKXx8KHY9PT1pKSkpO307CmZ1bmN0aW9uIHJlbmRlclNjaCgpewogIGluaXRTY2hGaWx0ZXJzKCk7CiAgbGV0IG1zPU1BVENIRVMuZmlsdGVyKG09PihzZi5nPT09ImFsbCJ8fG0uZz09PXNmLmcpJiYoIXNmLm1kfHxtLm1kPT09c2YubWQpKTsKICBjb25zdCBiZD17fTttcy5mb3JFYWNoKG09PnsoYmRbbS5kXT1iZFttLmRdfHxbXSkucHVzaChtKTt9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2Mtc2NoLWxpc3QiKS5pbm5lckhUTUw9T2JqZWN0LmVudHJpZXMoYmQpLnNvcnQoKFthXSxbYl0pPT5hLmxvY2FsZUNvbXBhcmUoYikpLm1hcCgoW2QsbXNdKT0+KCI8ZGl2IGNsYXNzPVwid2MtZGF0ZS1oZHJcIj4iKyhmZChkKSkrIjwvZGl2PiIpK21zLm1hcChtPT57CiAgICBjb25zdCBoPVQobS5oKSxhPVQobS5hKSx2PVZFTlVFU1ttLnZdOwogICAgcmV0dXJuKCI8ZGl2IGNsYXNzPVwid2MtbWF0Y2hcIj48ZGl2IGNsYXNzPVwid2MtbXRlYW1cIj48aW1nIHNyYz1cIiIrKGZsKG0uaCkpKyJcIj4iKyhoLm4pKyI8L2Rpdj48ZGl2IGNsYXNzPVwid2MtbXZzXCI+PGRpdiBjbGFzcz1cInRtXCI+IisoZnQobS50KSkrIjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9XCJ3Yy1tdGVhbSBhd2F5XCI+IisoYS5uKSsiPGltZyBzcmM9XCIiKyhmbChtLmEpKSsiXCI+PC9kaXY+PGRpdiBjbGFzcz1cIndjLW1tZXRhXCI+PHNwYW4gY2xhc3M9XCJ3Yy1ncnAtdGFnXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiIrKEdDW20uZ10pKyJcIj5Hcm91cCAiKyhtLmcpKyI8L3NwYW4+PHNwYW4+Iisodj92LnNkOiIiKSsiPC9zcGFuPjwvZGl2PjwvZGl2PiIpOwogIH0pLmpvaW4oIiIpKS5qb2luKCIiKTsKfQoKLy8gPT09PT0gSU5URVJBQ1RJVkUgVFJFRSBCUkFDS0VUID09PT09CmNvbnN0IGJyYWNrZXRTdGF0ZT17fTsKbGV0IGdyb3Vwc1NpbXVsYXRlZD1mYWxzZTsKbGV0IGFsbFN0YW5kaW5ncz1udWxsOwpsZXQgbWFudWFsTW9kZT1mYWxzZTsKY29uc3QgbWFudWFsUGlja3M9e307Ly8gZ3JvdXBJZCAtPiBbY29kZTFzdCwgY29kZTJuZCwgY29kZTNyZCwgY29kZTR0aF0KY29uc3QgTDMyPVsiUjMyLTIiLCJSMzItNSIsIlIzMi0xIiwiUjMyLTMiLCJSMzItNCIsIlIzMi02IiwiUjMyLTciLCJSMzItOCJdOwpjb25zdCBSMzJYPVsiUjMyLTkiLCJSMzItMTAiLCJSMzItMTEiLCJSMzItMTIiLCJSMzItMTMiLCJSMzItMTQiLCJSMzItMTUiLCJSMzItMTYiXTsKY29uc3QgTDE2PVsiUjE2LTEiLCJSMTYtMiIsIlIxNi0zIiwiUjE2LTQiXSxSMTZYPVsiUjE2LTUiLCJSMTYtNiIsIlIxNi03IiwiUjE2LTgiXTsKY29uc3QgTFFGPVsiUUYtMSIsIlFGLTMiXSxSUUY9WyJRRi0yIiwiUUYtNCJdOwoKZnVuY3Rpb24gcmVuZGVyQnJhY2tldEFjdGlvbnMoKXsKICBjb25zdCBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtYnJhY2tldC1hY3Rpb25zIik7CiAgaWYoZ3JvdXBzU2ltdWxhdGVkKXsKICAgIGVsLmlubmVySFRNTD0iPGJ1dHRvbiBjbGFzcz1cIndjLWZidG4gb25cIiBkaXNhYmxlZD5cXHUyNzA1IEdyb3VwcyBEb25lPC9idXR0b24+IisKICAgICAgIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuXCIgb25jbGljaz1cIndjMjZTaW1BbGxLTygpXCI+QXV0by1TaW11bGF0ZSBLbm9ja291dHM8L2J1dHRvbj4iKwogICAgICAiPGJ1dHRvbiBjbGFzcz1cIndjLWZidG5cIiBvbmNsaWNrPVwid2MyNlJlc2V0KClcIiBzdHlsZT1cImNvbG9yOnZhcigtLXJlZCk7Ym9yZGVyLWNvbG9yOnZhcigtLXJlZClcIj5SZXNldDwvYnV0dG9uPiI7CiAgfWVsc2UgaWYobWFudWFsTW9kZSl7CiAgICBjb25zdCBhbGxQaWNrZWQ9R1JPVVBTLmV2ZXJ5KGc9Pm1hbnVhbFBpY2tzW2cuaWRdJiZtYW51YWxQaWNrc1tnLmlkXS5sZW5ndGg9PT00KTsKICAgIGVsLmlubmVySFRNTD0iPGJ1dHRvbiBjbGFzcz1cIndjLWZidG4gb25cIiBkaXNhYmxlZD5NYW51YWwgTW9kZTogQ2xpY2sgdGVhbXMgaW4gZWFjaCBncm91cCB0byByYW5rIDFzdC00dGg8L2J1dHRvbj4iKwogICAgICAoYWxsUGlja2VkPyI8YnV0dG9uIGNsYXNzPVwid2MtZmJ0blwiIG9uY2xpY2s9XCJ3YzI2Q29uZmlybU1hbnVhbCgpXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Ym9yZGVyLWNvbG9yOnZhcigtLWFjY2VudCk7Y29sb3I6I2ZmZlwiPlxcdTI3MDUgQ29uZmlybSAmYW1wOyBGaWxsIEJyYWNrZXQ8L2J1dHRvbj4iOiIiKSsKICAgICAgIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuXCIgb25jbGljaz1cIndjMjZSZXNldCgpXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1yZWQpO2JvcmRlci1jb2xvcjp2YXIoLS1yZWQpXCI+Q2FuY2VsPC9idXR0b24+IjsKICB9ZWxzZXsKICAgIGVsLmlubmVySFRNTD0iPGJ1dHRvbiBjbGFzcz1cIndjLWZidG5cIiBvbmNsaWNrPVwid2MyNlNpbUdyb3VwcygpXCI+U2ltdWxhdGUgR3JvdXBzPC9idXR0b24+IisKICAgICAgIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuXCIgb25jbGljaz1cIndjMjZNYW51YWxNb2RlKClcIj5QaWNrIE1hbnVhbGx5PC9idXR0b24+IisKICAgICAgIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuXCIgb25jbGljaz1cIndjMjZSZXNldCgpXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1yZWQpO2JvcmRlci1jb2xvcjp2YXIoLS1yZWQpXCI+UmVzZXQ8L2J1dHRvbj4iOwogIH0KfQoKLy8gTWFudWFsIG1vZGU6IGNsaWNrIHRlYW1zIGluIGdyb3VwIHRhYmxlcyB0byBzZXQgMXN0LzJuZC8zcmQvNHRoCndpbmRvdy53YzI2TWFudWFsTW9kZT1mdW5jdGlvbigpewogIG1hbnVhbE1vZGU9dHJ1ZTsKICBHUk9VUFMuZm9yRWFjaChnPT57bWFudWFsUGlja3NbZy5pZF09W107fSk7CiAgaW5pdEdyb3VwcygpOy8vIHJlLXJlbmRlciB3aXRoIGNsaWNrIGhhbmRsZXJzCiAgcmVuZGVyQnJhY2tldEFjdGlvbnMoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtZ3JvdXBzIikuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgifSk7Cn07Cgp3aW5kb3cud2MyNlBpY2tHcm91cD1mdW5jdGlvbihnaWQsY29kZSl7CiAgaWYoIW1hbnVhbE1vZGV8fGdyb3Vwc1NpbXVsYXRlZClyZXR1cm47CiAgY29uc3QgcGlja3M9bWFudWFsUGlja3NbZ2lkXTsKICAvLyBJZiBhbHJlYWR5IHBpY2tlZCwgcmVtb3ZlIGl0IGFuZCBldmVyeXRoaW5nIGFmdGVyCiAgY29uc3QgaWR4PXBpY2tzLmluZGV4T2YoY29kZSk7CiAgaWYoaWR4IT09LTEpe3BpY2tzLnNwbGljZShpZHgpO3VwZGF0ZUdyb3VwVUkoZ2lkKTtyZW5kZXJCcmFja2V0QWN0aW9ucygpO3JldHVybjt9CiAgaWYocGlja3MubGVuZ3RoPj00KXJldHVybjsKICBwaWNrcy5wdXNoKGNvZGUpOwogIHVwZGF0ZUdyb3VwVUkoZ2lkKTsKICByZW5kZXJCcmFja2V0QWN0aW9ucygpOwp9OwoKZnVuY3Rpb24gdXBkYXRlR3JvdXBVSShnaWQpewogIGNvbnN0IHBpY2tzPW1hbnVhbFBpY2tzW2dpZF18fFtdOwogIGNvbnN0IHJvd3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgoIltkYXRhLWc9XCIiKyhnaWQpKyJcIl0iKSk7CiAgcm93cy5mb3JFYWNoKHJvdz0+ewogICAgY29uc3QgY29kZT1yb3cuZ2V0QXR0cmlidXRlKCJkYXRhLXRjIik7CiAgICBjb25zdCBwb3M9cGlja3MuaW5kZXhPZihjb2RlKTsKICAgIGNvbnN0IHBvc0NlbGw9cm93LnF1ZXJ5U2VsZWN0b3IoIi53Yy1wb3MiKTsKICAgIGNvbnN0IGV4aXN0aW5nQmFkZ2U9cm93LnF1ZXJ5U2VsZWN0b3IoIi53Yy1waWNrLWJhZGdlIik7CiAgICBpZihleGlzdGluZ0JhZGdlKWV4aXN0aW5nQmFkZ2UucmVtb3ZlKCk7CiAgICBpZihwb3MhPT0tMSl7CiAgICAgIHBvc0NlbGwudGV4dENvbnRlbnQ9cG9zKzE7CiAgICAgIHJvdy5jbGFzc05hbWU9cG9zPDI\/IndjLXJxIjpwb3M9PT0yPyJ3Yy1yMyI6IndjLXJlIjsKICAgICAgY29uc3QgYmFkZ2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICBiYWRnZS5jbGFzc05hbWU9IndjLXBpY2stYmFkZ2Ugd2MtcGljay0iKyhwb3MrMSk7CiAgICAgIGJhZGdlLnRleHRDb250ZW50PXBvcz09PTA\/IjFzdCI6cG9zPT09MT8iMm5kIjpwb3M9PT0yPyIzcmQiOiI0dGgiOwogICAgICByb3cucXVlcnlTZWxlY3RvcigiLnRjIikuYXBwZW5kQ2hpbGQoYmFkZ2UpOwogICAgfWVsc2V7CiAgICAgIHBvc0NlbGwudGV4dENvbnRlbnQ9Ii0iOwogICAgICByb3cuY2xhc3NOYW1lPSIiOwogICAgICByb3cuc3R5bGUub3BhY2l0eT1waWNrcy5sZW5ndGg+MD8iMC41IjoiMSI7CiAgICB9CiAgfSk7CiAgLy8gSWYgYWxsIDQgcGlja2VkLCBzZXQgZnVsbCBvcGFjaXR5CiAgaWYocGlja3MubGVuZ3RoPT09NClyb3dzLmZvckVhY2gocj0+ci5zdHlsZS5vcGFjaXR5PSIxIik7Cn0KCndpbmRvdy53YzI2Q29uZmlybU1hbnVhbD1mdW5jdGlvbigpewogIGlmKCFHUk9VUFMuZXZlcnkoZz0+bWFudWFsUGlja3NbZy5pZF0\/Lmxlbmd0aD09PTQpKXJldHVybjsKICAvLyBCdWlsZCBhbGxTdGFuZGluZ3MgZnJvbSBtYW51YWwgcGlja3MKICBhbGxTdGFuZGluZ3M9e307CiAgR1JPVVBTLmZvckVhY2goZz0+ewogICAgYWxsU3RhbmRpbmdzW2cuaWRdPW1hbnVhbFBpY2tzW2cuaWRdLm1hcCgoY29kZSxpKT0+KHtjOmNvZGUscHRzOjMqKDMtaSkscDozLHc6My1pLGQ6MCxsOmksZ2Y6My1pLGdhOmksZ2Q6My0yKml9KSk7CiAgfSk7CiAgZ3JvdXBzU2ltdWxhdGVkPXRydWU7bWFudWFsTW9kZT1mYWxzZTsKICBwb3B1bGF0ZVIzMigpOwogIGluaXRHcm91cHMoKTsvLyByZS1yZW5kZXIgd2l0aG91dCBjbGljayBoYW5kbGVycwogIHJlbmRlckJyYWNrZXQoKTsKfTsKCmZ1bmN0aW9uIHNsb3RIVE1MKGlkLHRlYW1Db2RlLHNlZWRMYWJlbCl7CiAgdmFyIHN0PWJyYWNrZXRTdGF0ZVtpZF07CiAgaWYoIXRlYW1Db2RlKXJldHVybigiPGRpdiBjbGFzcz1cIndjLWJzbG90IGVtcHR5XCI+PHNwYW4gY2xhc3M9XCJzZWVkLWxibFwiPiIrKHNlZWRMYWJlbCkrIjwvc3Bhbj48c3BhbiBjbGFzcz1cIm5tXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS10MylcIj5UQkQ8L3NwYW4+PC9kaXY+Iik7CiAgdmFyIHRlYW09VCh0ZWFtQ29kZSk7CiAgdmFyIGlzUGlja2VkPXN0JiZzdC53aW5uZXI9PT10ZWFtQ29kZTsKICB2YXIgaXNMb3N0PXN0JiZzdC53aW5uZXImJnN0Lndpbm5lciE9PXRlYW1Db2RlOwogIHZhciBjbHM9aXNQaWNrZWQ\/InBpY2tlZCI6aXNMb3N0PyJsb3N0IjoiIjsKICByZXR1cm4oIjxkaXYgY2xhc3M9XCJ3Yy1ic2xvdCAiKyhjbHMpKyJcIiBvbmNsaWNrPVwid2MyNlBpY2soJyIrKGlkKSsiJywnIisodGVhbUNvZGUpKyInKVwiPjxpbWcgc3JjPVwiIisoZmwodGVhbUNvZGUpKSsiXCI+PHNwYW4gY2xhc3M9XCJubVwiPiIrKHRlYW1Db2RlKSsiPC9zcGFuPjxzcGFuIGNsYXNzPVwicGljay1pY29uXCI+XFx1MjcxMzwvc3Bhbj48L2Rpdj4iKTsKfQoKZnVuY3Rpb24gbWF0Y2hDYXJkKGlkLHNsMSxzbDIpewogIGNvbnN0IGluZm89S08uUjMyW2lkXXx8S08uUjE2W2lkXXx8S08uUUZbaWRdfHxLTy5TRltpZF18fEtPLkZbaWRdOwogIGlmKCFpbmZvKXJldHVybiIiOwogIGNvbnN0IHY9VkVOVUVTW2luZm8udl07Y29uc3Qgc3Q9YnJhY2tldFN0YXRlW2lkXTsKICBjb25zdCB0MT1zdD9zdC50MTpudWxsLHQyPXN0P3N0LnQyOm51bGw7CiAgY29uc3QgY2xzPWlkPT09IkYiPyIgZmluYWwtbWF0Y2giOiIiOwogIHJldHVybigiPGRpdiBjbGFzcz1cIndjLWJtYXRjaCIrKGNscykrIlwiIGlkPVwid2MtYm0tIisoaWQpKyJcIj4iKyhzbG90SFRNTChpZCx0MSxzbDEpKSsoc2xvdEhUTUwoaWQsdDIsc2wyKSkrIjxkaXYgY2xhc3M9XCJ3Yy1ibWV0YVwiPiIrKGZkKGluZm8uZCkpKyIgJm1pZGRvdDsgIisodj92LmNpOiIiKSsiPC9kaXY+PC9kaXY+Iik7Cn0KCmZ1bmN0aW9uIG1jKGlkLGV4dHJhKXsKICB2YXIgc2VlZE1hcD17fTtTRUVEUy5mb3JFYWNoKGZ1bmN0aW9uKHMpe3NlZWRNYXBbcy5tXT1zO30pOwogIHZhciBzPXNlZWRNYXBbaWRdOwogIHZhciBzMT1zP3MuczE6KGlkPT09IkYiPyJXIFNGMSI6aWQ9PT0iM1AiPyJMIFNGMSI6IlRCRCIpOwogIHZhciBzMj1zP3MuczI6KGlkPT09IkYiPyJXIFNGMiI6aWQ9PT0iM1AiPyJMIFNGMiI6IlRCRCIpOwogIHJldHVybiBtYXRjaENhcmQoaWQsczEsczIpLnJlcGxhY2UoIndjLWJtYXRjaFwiIiwid2MtYm1hdGNoIisoZXh0cmE\/IiAiK2V4dHJhOiIiKSsiXCIiKTsKfQoKZnVuY3Rpb24gcm93KGlkcyxleHRyYSl7CiAgdmFyIGg9IjxkaXYgY2xhc3M9XCJ3Yy1yb3dcIj4iOwogIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGlkKXtoKz1tYyhpZCxleHRyYXx8IiIpO30pOwogIGgrPSI8L2Rpdj4iOwogIHJldHVybiBoOwp9CgpmdW5jdGlvbiBjb25uRG93bihuKXsKICB2YXIgaD0iPGRpdiBjbGFzcz1cIndjLWNvbm5lY3RvcnNcIj4iOwogIGZvcih2YXIgaT0wO2k8bjtpKyspaCs9IjxkaXYgY2xhc3M9XCJ3Yy1jb25uLXBhaXJcIj48c3Bhbj5cdTI1NzA8L3NwYW4+PHNwYW4+XHUyNTZGPC9zcGFuPjwvZGl2PiI7CiAgaCs9IjwvZGl2PiI7CiAgcmV0dXJuIGg7Cn0KZnVuY3Rpb24gY29ublVwKG4pewogIHZhciBoPSI8ZGl2IGNsYXNzPVwid2MtY29ubmVjdG9yc1wiPiI7CiAgZm9yKHZhciBpPTA7aTxuO2krKyloKz0iPGRpdiBjbGFzcz1cIndjLWNvbm4tcGFpclwiPjxzcGFuPlx1MjU2RDwvc3Bhbj48c3Bhbj5cdTI1NkU8L3NwYW4+PC9kaXY+IjsKICBoKz0iPC9kaXY+IjsKICByZXR1cm4gaDsKfQoKZnVuY3Rpb24gcm91bmRIZHIodGl0bGUsaXNGaW5hbCl7CiAgdmFyIGNscz1pc0ZpbmFsPyJ3Yy12cm91bmQtaGRyIGZpbmFsLWhkciI6IndjLXZyb3VuZC1oZHIiOwogIHJldHVybiAiPGRpdiBjbGFzcz1cIiIrY2xzKyJcIj48c3BhbiBjbGFzcz1cIndjLXZyLWxhYmVsXCI+Iit0aXRsZSsiPC9zcGFuPjxzcGFuIGNsYXNzPVwid2MtdnItbGluZVwiPjwvc3Bhbj48L2Rpdj4iOwp9CgpmdW5jdGlvbiByZW5kZXJCcmFja2V0KCl7CiAgdmFyIGg9IiI7CgogIC8vIFVQUEVSIEhBTEYgLSB0b3AgZG93bgogIGgrPSI8ZGl2IGNsYXNzPVwid2MtdnJvdW5kXCI+Iityb3VuZEhkcigiUm91bmQgb2YgMzIgJm1kYXNoOyBVcHBlciIpOwogIGgrPXJvdyhbIlIzMi0yIiwiUjMyLTUiLCJSMzItMSIsIlIzMi0zIiwiUjMyLTQiLCJSMzItNiIsIlIzMi03IiwiUjMyLTgiXSk7CiAgaCs9IjwvZGl2PiI7CiAgaCs9Y29ubkRvd24oNCk7CgogIGgrPSI8ZGl2IGNsYXNzPVwid2MtdnJvdW5kXCI+Iityb3VuZEhkcigiUm91bmQgb2YgMTYiKTsKICBoKz1yb3coWyJSMTYtMSIsIlIxNi0yIiwiUjE2LTMiLCJSMTYtNCJdKTsKICBoKz0iPC9kaXY+IjsKICBoKz1jb25uRG93bigyKTsKCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJRdWFydGVyLUZpbmFscyIpOwogIGgrPXJvdyhbIlFGLTEiLCJRRi0zIl0pOwogIGgrPSI8L2Rpdj4iOwogIGgrPWNvbm5Eb3duKDEpOwoKICBoKz0iPGRpdiBjbGFzcz1cIndjLXZyb3VuZFwiPiIrcm91bmRIZHIoIlNlbWktRmluYWwgMSIpOwogIGgrPXJvdyhbIlNGLTEiXSk7CiAgaCs9IjwvZGl2PiI7CiAgaCs9Y29ubkRvd24oMSk7CgogIC8vIEZJTkFMICsgM1JEIFBMQUNFCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJGSU5BTCIsdHJ1ZSk7CiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy1maW5hbC13cmFwXCI+IittYygiRiIsImZpbmFsLW1hdGNoIikrbWMoIjNQIiwidGhpcmQtbWF0Y2giKSsiPC9kaXY+IjsKICBoKz0iPC9kaXY+IjsKCiAgaCs9Y29ublVwKDEpOwoKICAvLyBMT1dFUiBIQUxGIC0gYm90dG9tIHVwCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJTZW1pLUZpbmFsIDIiKTsKICBoKz1yb3coWyJTRi0yIl0pOwogIGgrPSI8L2Rpdj4iOwogIGgrPWNvbm5VcCgxKTsKCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJRdWFydGVyLUZpbmFscyIpOwogIGgrPXJvdyhbIlFGLTIiLCJRRi00Il0pOwogIGgrPSI8L2Rpdj4iOwogIGgrPWNvbm5VcCgyKTsKCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJSb3VuZCBvZiAxNiIpOwogIGgrPXJvdyhbIlIxNi01IiwiUjE2LTYiLCJSMTYtNyIsIlIxNi04Il0pOwogIGgrPSI8L2Rpdj4iOwogIGgrPWNvbm5VcCg0KTsKCiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy12cm91bmRcIj4iK3JvdW5kSGRyKCJSb3VuZCBvZiAzMiAmbWRhc2g7IExvd2VyIik7CiAgaCs9cm93KFsiUjMyLTkiLCJSMzItMTAiLCJSMzItMTEiLCJSMzItMTIiLCJSMzItMTMiLCJSMzItMTQiLCJSMzItMTUiLCJSMzItMTYiXSk7CiAgaCs9IjwvZGl2PiI7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3Yy1icmFja2V0LXJvb3QiKS5pbm5lckhUTUw9aDsKICByZW5kZXJCcmFja2V0QWN0aW9ucygpOwp9CgovLyBQaWNrIHdpbm5lcgp3aW5kb3cud2MyNlBpY2s9ZnVuY3Rpb24obWF0Y2hJZCx0ZWFtQ29kZSl7CiAgY29uc3Qgc3Q9YnJhY2tldFN0YXRlW21hdGNoSWRdOwogIGlmKCFzdHx8IXN0LnQxfHwhc3QudDIpcmV0dXJuOwogIGlmKHN0Lndpbm5lcj09PXRlYW1Db2RlKXJldHVybjsKICBpZihzdC53aW5uZXImJnN0Lndpbm5lciE9PXRlYW1Db2RlKWNsZWFyRG93bihtYXRjaElkKTsKICBzdC53aW5uZXI9dGVhbUNvZGU7CiAgLy8gQWR2YW5jZQogIGNvbnN0IG54PUJQW21hdGNoSWRdOwogIGlmKG54KW54LmZvckVhY2gobmlkPT57CiAgICBpZighYnJhY2tldFN0YXRlW25pZF0pYnJhY2tldFN0YXRlW25pZF09e3QxOm51bGwsdDI6bnVsbCx3aW5uZXI6bnVsbH07CiAgICBjb25zdCBuZXh0PWJyYWNrZXRTdGF0ZVtuaWRdOwogICAgY29uc3QgZmVlZGVycz1PYmplY3QuZW50cmllcyhCUCkuZmlsdGVyKChbayx2XSk9PnYuaW5jbHVkZXMobmlkKSkubWFwKChba10pPT5rKTsKICAgIGNvbnN0IGZpPWZlZWRlcnMuaW5kZXhPZihtYXRjaElkKTsKICAgIGlmKGZpPT09MHx8KCFuZXh0LnQxJiZuZXh0LnQyIT09dGVhbUNvZGUpKW5leHQudDE9dGVhbUNvZGU7ZWxzZSBuZXh0LnQyPXRlYW1Db2RlOwogIH0pOwogIC8vIDNyZCBwbGFjZQogIGlmKG1hdGNoSWQ9PT0iU0YtMSJ8fG1hdGNoSWQ9PT0iU0YtMiIpewogICAgY29uc3QgczE9YnJhY2tldFN0YXRlWyJTRi0xIl0sczI9YnJhY2tldFN0YXRlWyJTRi0yIl07CiAgICBpZihzMT8ud2lubmVyJiZzMj8ud2lubmVyKXsKICAgICAgYnJhY2tldFN0YXRlWyIzUCJdPXt0MTpzMS53aW5uZXI9PT1zMS50MT9zMS50MjpzMS50MSx0MjpzMi53aW5uZXI9PT1zMi50MT9zMi50MjpzMi50MSx3aW5uZXI6bnVsbH07CiAgICB9CiAgfQogIHJlbmRlckJyYWNrZXQoKTsKICBpZihtYXRjaElkPT09IkYiJiZicmFja2V0U3RhdGVbIkYiXT8ud2lubmVyKXsKICAgIGNvbnN0IGNoPVQoYnJhY2tldFN0YXRlWyJGIl0ud2lubmVyKTtsYXVuY2hDb25mZXR0aSgpOwogICAgc2V0VGltZW91dCgoKT0+e2NvbnN0IHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndjLXNpbS1yZXN1bHRzIik7ci5zdHlsZS5kaXNwbGF5PSJibG9jayI7ci5pbm5lckhUTUw9KCI8ZGl2IGNsYXNzPVwid2MtY2hhbXBcIj48aW1nIHNyYz1cIiIrKGZsKGNoLmMpKSsiXCI+PGgzPiIrKGNoLm4pKyI8L2gzPjxwPllvdXIgcHJlZGljdGVkIFdvcmxkIEN1cCAyMDI2IENoYW1waW9uITwvcD48L2Rpdj4iKTt9LDMwMCk7CiAgfQp9OwpmdW5jdGlvbiBjbGVhckRvd24obWlkKXsKICBjb25zdCBueD1CUFttaWRdO2lmKCFueClyZXR1cm47CiAgbnguZm9yRWFjaChuaWQ9PntpZihicmFja2V0U3RhdGVbbmlkXSl7Y29uc3QgZj1PYmplY3QuZW50cmllcyhCUCkuZmlsdGVyKChbayx2XSk9PnYuaW5jbHVkZXMobmlkKSkubWFwKChba10pPT5rKTtjb25zdCBmaT1mLmluZGV4T2YobWlkKTtpZihmaT09PTApYnJhY2tldFN0YXRlW25pZF0udDE9bnVsbDtlbHNlIGJyYWNrZXRTdGF0ZVtuaWRdLnQyPW51bGw7YnJhY2tldFN0YXRlW25pZF0ud2lubmVyPW51bGw7Y2xlYXJEb3duKG5pZCk7fX0pOwogIGlmKG1pZC5zdGFydHNXaXRoKCJTRiIpKWJyYWNrZXRTdGF0ZVsiM1AiXT17dDE6bnVsbCx0MjpudWxsLHdpbm5lcjpudWxsfTsKfQoKLy8gUG9wdWxhdGUgUjMyIGZyb20gYWxsU3RhbmRpbmdzCmZ1bmN0aW9uIHBvcHVsYXRlUjMyKCl7CiAgY29uc3QgdGhpcmRzPVtdO09iamVjdC5lbnRyaWVzKGFsbFN0YW5kaW5ncykuZm9yRWFjaCgoW2dpZCxzdF0pPT57aWYoc3RbMl0pdGhpcmRzLnB1c2goey4uLnN0WzJdLGdpZH0pO30pOwogIHRoaXJkcy5zb3J0KChhLGIpPT4oYi5wdHN8fDApLShhLnB0c3x8MCl8fChiLmdkfHwwKS0oYS5nZHx8MCl8fChiLmdmfHwwKS0oYS5nZnx8MCkpOwogIGNvbnN0IHRoTWFwPXt9O3RoaXJkcy5zbGljZSgwLDgpLmZvckVhY2godD0+dGhNYXBbdC5naWRdPXQuYyk7CiAgY29uc3QgZ1Q9KGdpZCxwb3MpPT57Y29uc3Qgcz1hbGxTdGFuZGluZ3NbZ2lkXTtyZXR1cm4gcyYmc1twb3NdP3NbcG9zXS5jOm51bGw7fTsKICBTRUVEUy5mb3JFYWNoKHM9PnsKICAgIGxldCB0MT1udWxsLHQyPW51bGw7CiAgICBpZihzLnMxLnN0YXJ0c1dpdGgoIjFzdCAiKSl0MT1nVChzLnMxLnNsaWNlKDQpLDApO2Vsc2UgaWYocy5zMS5zdGFydHNXaXRoKCIybmQgIikpdDE9Z1Qocy5zMS5zbGljZSg0KSwxKTsKICAgIGlmKHMuczIuc3RhcnRzV2l0aCgiMXN0ICIpKXQyPWdUKHMuczIuc2xpY2UoNCksMCk7ZWxzZSBpZihzLnMyLnN0YXJ0c1dpdGgoIjJuZCAiKSl0Mj1nVChzLnMyLnNsaWNlKDQpLDEpOwogICAgZWxzZSBpZihzLnMyLnN0YXJ0c1dpdGgoIjNyZCAiKSl7Y29uc3QgZ3M9cy5zMi5zbGljZSg0KS5zcGxpdCgiIikuZmlsdGVyKGc9PnRoTWFwW2ddKTtpZihncy5sZW5ndGgpe2NvbnN0IHA9Z3NbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmdzLmxlbmd0aCldO3QyPXRoTWFwW3BdO2RlbGV0ZSB0aE1hcFtwXTt9fQogICAgYnJhY2tldFN0YXRlW3MubV09e3QxLHQyLHdpbm5lcjpudWxsfTsKICB9KTsKfQoKLy8gU2ltdWxhdGUgZ3JvdXBzCndpbmRvdy53YzI2U2ltR3JvdXBzPWZ1bmN0aW9uKCl7CiAgY29uc3QgZ3I9W107TUFUQ0hFUy5mb3JFYWNoKG09Pntjb25zdCByPXNpbU0oVChtLmgpLFQobS5hKSk7Z3IucHVzaCh7aDptLmgsYTptLmEsaGc6ci5oZyxhZzpyLmFnLGc6bS5nfSk7fSk7CiAgYWxsU3RhbmRpbmdzPXt9O0dST1VQUy5mb3JFYWNoKGc9PnthbGxTdGFuZGluZ3NbZy5pZF09Y2FsY1N0KGcuaWQsZ3IpO30pOwogIEdST1VQUy5mb3JFYWNoKGc9Pntjb25zdCByb3dzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoKCJbZGF0YS1nPVwiIisoZy5pZCkrIlwiXSIpKTthbGxTdGFuZGluZ3NbZy5pZF0uZm9yRWFjaCgocyxpKT0+e2lmKCFyb3dzW2ldKXJldHVybjtjb25zdCBjPXJvd3NbaV0ucXVlcnlTZWxlY3RvckFsbCgidGQiKTtjWzBdLnRleHRDb250ZW50PWkrMTtyb3dzW2ldLmNsYXNzTmFtZT1pPDI\/IndjLXJxIjppPT09Mj8id2MtcjMiOiJ3Yy1yZSI7Y1syXS5pbm5lckhUTUw9KCI8c3Ryb25nPiIrKHMucHRzKSsiPC9zdHJvbmc+Iik7Y1szXS50ZXh0Q29udGVudD1zLnA7Y1s0XS50ZXh0Q29udGVudD1zLnc7Y1s1XS50ZXh0Q29udGVudD1zLmQ7Y1s2XS50ZXh0Q29udGVudD1zLmw7Y1s3XS50ZXh0Q29udGVudD1zLmdkPjA\/IisiK3MuZ2Q6cy5nZDt9KTt9KTsKICBncm91cHNTaW11bGF0ZWQ9dHJ1ZTttYW51YWxNb2RlPWZhbHNlOwogIHBvcHVsYXRlUjMyKCk7CiAgcmVuZGVyQnJhY2tldCgpOwp9OwoKLy8gQXV0byBzaW0ga25vY2tvdXRzCndpbmRvdy53YzI2U2ltQWxsS089ZnVuY3Rpb24oKXsKICBpZighZ3JvdXBzU2ltdWxhdGVkKXJldHVybjsKICBmdW5jdGlvbiBzaW1Sb3VuZChpZHMpe2lkcy5mb3JFYWNoKGlkPT57Y29uc3Qgc3Q9YnJhY2tldFN0YXRlW2lkXTtpZighc3Q\/LnQxfHwhc3Q\/LnQyfHxzdC53aW5uZXIpcmV0dXJuO2NvbnN0IHI9c2ltTShUKHN0LnQxKSxUKHN0LnQyKSx0cnVlKTt3YzI2UGljayhpZCxyLncuYyk7fSk7fQogIHNpbVJvdW5kKE9iamVjdC5rZXlzKEtPLlIzMikpOwogIHNldFRpbWVvdXQoKCk9PntzaW1Sb3VuZChPYmplY3Qua2V5cyhLTy5SMTYpKTsKICBzZXRUaW1lb3V0KCgpPT57c2ltUm91bmQoT2JqZWN0LmtleXMoS08uUUYpKTsKICBzZXRUaW1lb3V0KCgpPT57c2ltUm91bmQoT2JqZWN0LmtleXMoS08uU0YpKTsKICBzZXRUaW1lb3V0KCgpPT57c2ltUm91bmQoWyIzUCIsIkYiXSk7fSwxNTApO30sMTUwKTt9LDE1MCk7fSwxNTApOwp9OwoKd2luZG93LndjMjZSZXNldD1mdW5jdGlvbigpewogIGdyb3Vwc1NpbXVsYXRlZD1mYWxzZTthbGxTdGFuZGluZ3M9bnVsbDttYW51YWxNb2RlPWZhbHNlOwogIE9iamVjdC5rZXlzKGJyYWNrZXRTdGF0ZSkuZm9yRWFjaChrPT5kZWxldGUgYnJhY2tldFN0YXRlW2tdKTsKICBPYmplY3Qua2V5cyhtYW51YWxQaWNrcykuZm9yRWFjaChrPT5kZWxldGUgbWFudWFsUGlja3Nba10pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3Yy1zaW0tcmVzdWx0cyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwogIGluaXRHcm91cHMoKTtyZW5kZXJCcmFja2V0KCk7Cn07CgovLyBUZWFtcwpsZXQgdGY9e3M6IiIsY2Y6ImFsbCIsc29ydDoicmFua2luZyJ9OwpmdW5jdGlvbiBpbml0VGVhbUN0cmxzKCl7CiAgY29uc3QgY2ZzPVsiYWxsIiwiVUVGQSIsIkNPTk1FQk9MIiwiQ09OQ0FDQUYiLCJDQUYiLCJBRkMiLCJPRkMiXTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtdGVhbS1jdHJscyIpLmlubmVySFRNTD0iPGlucHV0IGNsYXNzPVwid2MtdHNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHRlYW1zLi4uXCIgb25pbnB1dD1cIndjMjZURigncycsdGhpcy52YWx1ZS50b0xvd2VyQ2FzZSgpKVwiPiIrY2ZzLm1hcChjPT4oIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuIisoYz09PSJhbGwiPyIgb24iOiIiKSsiXCIgb25jbGljaz1cIndjMjZURkMoJyIrKGMpKyInLHRoaXMpXCI+IisoYz09PSJhbGwiPyJBbGwiOmMpKyI8L2J1dHRvbj4iKSkuam9pbigiIikrIjxzZWxlY3QgY2xhc3M9XCJ3Yy1mc2VsXCIgb25jaGFuZ2U9XCJ3YzI2VEYoJ3NvcnQnLHRoaXMudmFsdWUpXCI+PG9wdGlvbiB2YWx1ZT1cInJhbmtpbmdcIj5CeSBSYW5raW5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIm5hbWVcIj5CeSBOYW1lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cImdyb3VwXCI+QnkgR3JvdXA8L29wdGlvbj48L3NlbGVjdD4iOwp9CndpbmRvdy53YzI2VEY9ZnVuY3Rpb24oayx2KXt0ZltrXT12O3JlbmRlclRlYW1zKCk7fTsKd2luZG93LndjMjZURkM9ZnVuY3Rpb24oYyxidG4pe3RmLmNmPWM7cmVuZGVyVGVhbXMoKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjd2MtdGVhbS1jdHJscyAud2MtZmJ0biIpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpKTtidG4uY2xhc3NMaXN0LmFkZCgib24iKTt9OwpmdW5jdGlvbiByZW5kZXJUZWFtcygpewogIGxldCBsaXN0PVsuLi5URUFNU107CiAgaWYodGYucylsaXN0PWxpc3QuZmlsdGVyKHQ9PnQubi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRmLnMpKTsKICBpZih0Zi5jZiE9PSJhbGwiKWxpc3Q9bGlzdC5maWx0ZXIodD0+dC5jZj09PXRmLmNmKTsKICBpZih0Zi5zb3J0PT09InJhbmtpbmciKWxpc3Quc29ydCgoYSxiKT0+YS5yLWIucik7CiAgZWxzZSBpZih0Zi5zb3J0PT09Im5hbWUiKWxpc3Quc29ydCgoYSxiKT0+YS5uLmxvY2FsZUNvbXBhcmUoYi5uKSk7CiAgZWxzZSBsaXN0LnNvcnQoKGEsYik9Pih0ZyhhLmMpfHwiWiIpLmxvY2FsZUNvbXBhcmUodGcoYi5jKXx8IloiKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndjLXRlYW1zLWdyaWQiKS5pbm5lckhUTUw9bGlzdC5tYXAodD0+ewogICAgY29uc3QgZz10Zyh0LmMpOwogICAgcmV0dXJuKCI8ZGl2IGNsYXNzPVwid2MtdGNhcmRcIj48aW1nIGNsYXNzPVwid2MtdGZsYWdcIiBzcmM9XCIiKyhmbCh0LmMpKSsiXCIgYWx0PVwiIisodC5uKSsiXCIgb25lcnJvcj1cInRoaXMuc3R5bGUuZGlzcGxheT0nbm9uZSdcIj48ZGl2IGNsYXNzPVwid2MtdHJhbmtcIj4iKyh0LnIpKyI8L2Rpdj48aDM+IisodC5uKSsiPC9oMz48ZGl2IGNsYXNzPVwid2MtdG1ldGFcIj48c3BhbiBjbGFzcz1cIndjLXRwaWxsXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IisoQ0NbdC5jZl18fCJ2YXIoLS1ib3JkZXIpIikrIjtjb2xvcjoiKyhDQ1t0LmNmXXx8InZhcigtLXQyKSIpKyJcIj4iKyh0LmNmKSsiPC9zcGFuPiIrKGc\/KCI8c3BhbiBjbGFzcz1cIndjLXRwaWxsXCIgc3R5bGU9XCJib3JkZXItY29sb3I6IisoR0NbZ10pKyI7Y29sb3I6IisoR0NbZ10pKyJcIj5HcnAgIisoZykrIjwvc3Bhbj4iKToiIikrIjxzcGFuIGNsYXNzPVwid2MtdHBpbGxcIj4iKyhNYXRoLnJvdW5kKHQucCkpKyIgcHRzPC9zcGFuPjwvZGl2PjwvZGl2PiIpOwogIH0pLmpvaW4oIiIpOwp9CgovLyBWZW51ZXMKbGV0IHZmPSJhbGwiOwpmdW5jdGlvbiBpbml0VmVudWVzKCl7CiAgY29uc3QgY2FwPU9iamVjdC52YWx1ZXMoVkVOVUVTKS5yZWR1Y2UoKGEsdik9PmErdi5jYXAsMCk7CiAgY29uc3QgYmM9e1VTQTowLE1FWDowLENBTjowfTtPYmplY3QudmFsdWVzKFZFTlVFUykuZm9yRWFjaCh2PT5iY1t2LmNvXSsrKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtdmVudWUtc3RhdHMiKS5pbm5lckhUTUw9WwogICAgW25tKGNhcCksIlRvdGFsIENhcGFjaXR5Il0sW2JjLlVTQSwiVVNBIFZlbnVlcyJdLFtiYy5NRVgsIk1leGljbyBWZW51ZXMiXSxbYmMuQ0FOLCJDYW5hZGEgVmVudWVzIl0KICBdLm1hcCgoW3YsbF0pPT4oIjxkaXYgY2xhc3M9XCJ3Yy1zdGF0XCI+PGRpdiBjbGFzcz1cIndjLXN0YXQtbnVtXCI+IisodikrIjwvZGl2PjxkaXYgY2xhc3M9XCJ3Yy1zdGF0LWxhYmVsXCI+IisobCkrIjwvZGl2PjwvZGl2PiIpKS5qb2luKCIiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtdmVudWUtZmlsdGVycyIpLmlubmVySFRNTD1bImFsbCIsIlVTQSIsIk1FWCIsIkNBTiJdLm1hcChjPT4oIjxidXR0b24gY2xhc3M9XCJ3Yy1mYnRuIisoYz09PXZmPyIgb24iOiIiKSsiXCIgb25jbGljaz1cIndjMjZWRignIisoYykrIicsdGhpcylcIj4iKyhjPT09ImFsbCI\/IkFsbCI6Yz09PSJNRVgiPyJNZXhpY28iOmM9PT0iQ0FOIj8iQ2FuYWRhIjpjKSsiPC9idXR0b24+IikpLmpvaW4oIiIpOwogIHJlbmRlclZlbnVlcygpOwp9CndpbmRvdy53YzI2VkY9ZnVuY3Rpb24oYyxidG4pe3ZmPWM7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3djLXZlbnVlLWZpbHRlcnMgLndjLWZidG4iKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgib24iKSk7YnRuLmNsYXNzTGlzdC5hZGQoIm9uIik7cmVuZGVyVmVudWVzKCk7fTsKZnVuY3Rpb24gcmVuZGVyVmVudWVzKCl7CiAgbGV0IHZzPU9iamVjdC52YWx1ZXMoVkVOVUVTKTtpZih2ZiE9PSJhbGwiKXZzPXZzLmZpbHRlcih2PT52LmNvPT09dmYpOwogIHZzLnNvcnQoKGEsYik9PmIuY2FwLWEuY2FwKTsKICBjb25zdCBtYz17fTtNQVRDSEVTLmZvckVhY2gobT0+e21jW20udl09KG1jW20udl18fDApKzE7fSk7CiAgT2JqZWN0LnZhbHVlcyhLTykuZm9yRWFjaChyPT57T2JqZWN0LnZhbHVlcyhyKS5mb3JFYWNoKG09PntpZihtLnYpbWNbbS52XT0obWNbbS52XXx8MCkrMTt9KTt9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2MtdmVudWVzLWdyaWQiKS5pbm5lckhUTUw9dnMubWFwKHY9PigiPGRpdiBjbGFzcz1cIndjLXZjYXJkXCI+PGltZyBjbGFzcz1cIndjLXZpbWdcIiBzcmM9XCIiKyhWSU1HW3YuaWRdfHwiIikrIlwiIGFsdD1cIiIrKHYuc2QpKyJcIiBvbmVycm9yPVwidGhpcy5zdHlsZS5iYWNrZ3JvdW5kPSdsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWJnMiksdmFyKC0tYmczKSknXCI+PGRpdiBjbGFzcz1cIndjLXZpbmZvXCI+PGgzPiIrKHYuc2QpKyI8L2gzPjxkaXYgY2xhc3M9XCJ3Yy12Y2l0eVwiPjxpbWcgc3JjPVwiIisoY2ZsKHYuY28pKSsiXCI+Iisodi5jaSkrIiwgIisodi5zdCkrIjwvZGl2PjxkaXYgY2xhc3M9XCJ3Yy12c3RhdHNcIj48c3Bhbj5DYXBhY2l0eTogPHN0cm9uZyBzdHlsZT1cImNvbG9yOnZhcigtLXQxKVwiPiIrKG5tKHYuY2FwKSkrIjwvc3Ryb25nPjwvc3Bhbj48c3Bhbj5NYXRjaGVzOiA8c3Ryb25nIHN0eWxlPVwiY29sb3I6dmFyKC0tdDEpXCI+IisobWNbdi5pZF18fDApKyI8L3N0cm9uZz48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+IikpLmpvaW4oIiIpOwp9CgovLyBTaW11bGF0b3IKZnVuY3Rpb24gcG9pc3NvbihsKXtsZXQgTD1NYXRoLmV4cCgtbCksaz0wLHA9MTtkb3trKys7cCo9TWF0aC5yYW5kb20oKTt9d2hpbGUocD5MKTtyZXR1cm4gay0xO30KZnVuY3Rpb24gZXhwU2MoYSxiKXtyZXR1cm4gMS8oMStNYXRoLnBvdygxMCwoYi1hKS80MDApKTt9CmZ1bmN0aW9uIHNpbU0oYSxiLGtvKXsKICBjb25zdCBlPWV4cFNjKGEucCszMCxiLnApOwogIGxldCBoZz1wb2lzc29uKC40K2UqMi4yKSxhZz1wb2lzc29uKC40KygxLWUpKjIuMik7CiAgaWYoa28mJmhnPT09YWcpe2hnKz1wb2lzc29uKGV4cFNjKGEucCxiLnApKi42KTthZys9cG9pc3NvbigoMS1leHBTYyhhLnAsYi5wKSkqLjYpO2lmKGhnPT09YWcpe01hdGgucmFuZG9tKCk8ZT9oZysrOmFnKys7fX0KICByZXR1cm57aGcsYWcsdzpoZz5hZz9hOmFnPmhnP2I6bnVsbH07Cn0KZnVuY3Rpb24gY2FsY1N0KGdpZCxyZXMpewogIGNvbnN0IGc9R1JPVVBTLmZpbmQoZz0+Zy5pZD09PWdpZCk7Y29uc3Qgc3Q9e307CiAgZy50Yy5mb3JFYWNoKGM9PntzdFtjXT17YyxwOjAsdzowLGQ6MCxsOjAsZ2Y6MCxnYTowLGdkOjAscHRzOjB9O30pOwogIHJlcy5maWx0ZXIocj0+ci5nPT09Z2lkKS5mb3JFYWNoKHI9PnsKICAgIGNvbnN0IGg9c3Rbci5oXSxhPXN0W3IuYV07aWYoIWh8fCFhKXJldHVybjsKICAgIGgucCsrO2EucCsrO2guZ2YrPXIuaGc7aC5nYSs9ci5hZzthLmdmKz1yLmFnO2EuZ2ErPXIuaGc7CiAgICBpZihyLmhnPnIuYWcpe2gudysrO2gucHRzKz0zO2EubCsrO31lbHNlIGlmKHIuaGc8ci5hZyl7YS53Kys7YS5wdHMrPTM7aC5sKys7fWVsc2V7aC5kKys7YS5kKys7aC5wdHMrKzthLnB0cysrO30KICAgIGguZ2Q9aC5nZi1oLmdhO2EuZ2Q9YS5nZi1hLmdhOwogIH0pOwogIHJldHVybiBPYmplY3QudmFsdWVzKHN0KS5zb3J0KChhLGIpPT5iLnB0cy1hLnB0c3x8Yi5nZC1hLmdkfHxiLmdmLWEuZ2Z8fE1hdGgucmFuZG9tKCktLjUpOwp9CgovLyBPbGQgYXV0by1zaW0gcmVtb3ZlZCAtIGJyYWNrZXQgaXMgbm93IGludGVyYWN0aXZlCgpmdW5jdGlvbiBsYXVuY2hDb25mZXR0aSgpewogIGNvbnN0IGNzPVsiI2VmNDQ0NCIsIiNmOTczMTYiLCIjZWFiMzA4IiwiIzIyYzU1ZSIsIiMzYjgyZjYiLCIjOGI1Y2Y2IiwiI2VjNDg5OSIsIiNmYmJmMjQiXTsKICBmb3IobGV0IGk9MDtpPDYwO2krKyl7CiAgICBjb25zdCBlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlbC5jbGFzc05hbWU9IndjLWNvbmZldHRpIjsKICAgIGVsLnN0eWxlLmxlZnQ9TWF0aC5yYW5kb20oKSoxMDArInZ3IjtlbC5zdHlsZS50b3A9Ii0xMHB4IjsKICAgIGVsLnN0eWxlLmJhY2tncm91bmQ9Y3NbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmNzLmxlbmd0aCldOwogICAgZWwuc3R5bGUuYW5pbWF0aW9uRHVyYXRpb249KDIrTWF0aC5yYW5kb20oKSozKSsicyI7CiAgICBlbC5zdHlsZS5hbmltYXRpb25EZWxheT1NYXRoLnJhbmRvbSgpKjEuNSsicyI7CiAgICBlbC5zdHlsZS53aWR0aD0oNCtNYXRoLnJhbmRvbSgpKjgpKyJweCI7ZWwuc3R5bGUuaGVpZ2h0PSg0K01hdGgucmFuZG9tKCkqOCkrInB4IjsKICAgIGVsLnN0eWxlLmJvcmRlclJhZGl1cz1NYXRoLnJhbmRvbSgpPi41PyI1MCUiOiIycHgiOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCk7c2V0VGltZW91dCgoKT0+ZWwucmVtb3ZlKCksNTAwMCk7CiAgfQp9CgovLyBTdGF0cwpmdW5jdGlvbiBpbml0U3RhdHMoKXsKICBjb25zdCBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2Mtc3RhdHMtZ3JpZCIpOwogIGNvbnN0IHF0PVRFQU1TO2NvbnN0IGNmYz17fTtxdC5mb3JFYWNoKHQ9PntjZmNbdC5jZl09KGNmY1t0LmNmXXx8MCkrMTt9KTtjb25zdCBtYz1NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKGNmYykpOwogIGNvbnN0IGdzPXt9O0dST1VQUy5mb3JFYWNoKGc9Pntjb25zdCBwdHM9Zy50Yy5tYXAoYz0+VChjKS5wKTtnc1tnLmlkXT17YXZnOnB0cy5yZWR1Y2UoKGEsYik9PmErYiwwKS9wdHMubGVuZ3RoLHRzOmcudGMubWFwKGM9PlQoYykpfTt9KTsKICBjb25zdCBzZz1PYmplY3QuZW50cmllcyhncykuc29ydCgoWyxhXSxbLGJdKT0+Yi5hdmctYS5hdmcpO2NvbnN0IGdvZD1zZ1swXSxlYXN5PXNnW3NnLmxlbmd0aC0xXTtjb25zdCBtYT1NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKGdzKS5tYXAoZz0+Zy5hdmcpKTsKICBsZXQgaD0iIjsKICBoKz0iPGRpdiBjbGFzcz1cIndjLXNjYXJkXCI+PGgzPlRlYW1zIGJ5IENvbmZlZGVyYXRpb248L2gzPiI7CiAgT2JqZWN0LmVudHJpZXMoY2ZjKS5zb3J0KChbLGFdLFssYl0pPT5iLWEpLmZvckVhY2goKFtjZixjdF0pPT57aCs9KCI8ZGl2IGNsYXNzPVwid2MtYmFyLXJvd1wiPjxkaXYgY2xhc3M9XCJsYlwiPiIrKGNmKSsiPC9kaXY+PGRpdiBjbGFzcz1cImJyXCI+PGRpdiBjbGFzcz1cImJpXCIgc3R5bGU9XCJ3aWR0aDoiKyhjdC9tYyoxMDApKyIlO2JhY2tncm91bmQ6IisoQ0NbY2ZdfHwidmFyKC0tYWNjZW50KSIpKyJcIj4iKyhjdCkrIjwvZGl2PjwvZGl2PjwvZGl2PiIpO30pOwogIGgrPSI8L2Rpdj4iOwogIGgrPSgiPGRpdiBjbGFzcz1cIndjLXNjYXJkXCI+PGgzPkdyb3VwIERpZmZpY3VsdHk8L2gzPjxkaXYgY2xhc3M9XCJ3Yy1nb2RcIj48aDQ+R3JvdXAgb2YgRGVhdGg6IEdyb3VwICIrKGdvZFswXSkrIjwvaDQ+PGRpdiBjbGFzcz1cIndjLWdvZC10ZWFtc1wiPiIrKGdvZFsxXS50cy5tYXAodD0+KCI8c3BhbiBjbGFzcz1cIndjLWdvZC10XCI+PGltZyBzcmM9XCIiKyhmbCh0LmMpKSsiXCI+IisodC5uKSsiPC9zcGFuPiIpKS5qb2luKCIiKSkrIjwvZGl2PjxwIHN0eWxlPVwiZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tdDMpO21hcmdpbi10b3A6NHB4XCI+QXZnOiAiKyhNYXRoLnJvdW5kKGdvZFsxXS5hdmcpKSsiIHB0czwvcD48L2Rpdj48ZGl2IGNsYXNzPVwid2MtZWFzeVwiPjxoND5Nb3N0IE9wZW46IEdyb3VwICIrKGVhc3lbMF0pKyI8L2g0PjxkaXYgY2xhc3M9XCJ3Yy1nb2QtdGVhbXNcIj4iKyhlYXN5WzFdLnRzLm1hcCh0PT4oIjxzcGFuIGNsYXNzPVwid2MtZ29kLXRcIj48aW1nIHNyYz1cIiIrKGZsKHQuYykpKyJcIj4iKyh0Lm4pKyI8L3NwYW4+IikpLmpvaW4oIiIpKSsiPC9kaXY+PHAgc3R5bGU9XCJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10Myk7bWFyZ2luLXRvcDo0cHhcIj5Bdmc6ICIrKE1hdGgucm91bmQoZWFzeVsxXS5hdmcpKSsiIHB0czwvcD48L2Rpdj48L2Rpdj4iKTsKICBoKz0iPGRpdiBjbGFzcz1cIndjLXNjYXJkXCI+PGgzPkF2ZyBTdHJlbmd0aCBieSBHcm91cDwvaDM+IjsKICBzZy5mb3JFYWNoKChbZ2lkLGddKT0+e2grPSgiPGRpdiBjbGFzcz1cIndjLWJhci1yb3dcIj48ZGl2IGNsYXNzPVwibGJcIiBzdHlsZT1cIndpZHRoOjUwcHhcIj48c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDoiKyhHQ1tnaWRdKSsiO21hcmdpbi1yaWdodDo0cHhcIj48L3NwYW4+IisoZ2lkKSsiPC9kaXY+PGRpdiBjbGFzcz1cImJyXCI+PGRpdiBjbGFzcz1cImJpXCIgc3R5bGU9XCJ3aWR0aDoiKyhnLmF2Zy9tYSoxMDApKyIlO2JhY2tncm91bmQ6IisoR0NbZ2lkXSkrIlwiPiIrKE1hdGgucm91bmQoZy5hdmcpKSsiPC9kaXY+PC9kaXY+PC9kaXY+Iik7fSk7CiAgaCs9IjwvZGl2PiI7CiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy1zY2FyZFwiPjxoMz5Ub3AgMTAgUmFua2VkPC9oMz4iOwogIFsuLi5xdF0uc29ydCgoYSxiKT0+YS5yLWIucikuc2xpY2UoMCwxMCkuZm9yRWFjaCgodCxpKT0+e2NvbnN0IGc9dGcodC5jKTtoKz0oIjxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzo1cHggMDsiKyhpPDk\/ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcikiOiIiKSsiXCI+PHNwYW4gc3R5bGU9XCJ3aWR0aDoyMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1hY2NlbnQyKTtmb250LXNpemU6MTJweFwiPiIrKHQucikrIjwvc3Bhbj48aW1nIHNyYz1cIiIrKGZsKHQuYykpKyJcIiBzdHlsZT1cIndpZHRoOjI0cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czoycHhcIj48c3BhbiBzdHlsZT1cImZsZXg6MTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDBcIj4iKyh0Lm4pKyI8L3NwYW4+IisoZz8oIjxzcGFuIGNsYXNzPVwid2MtdHBpbGxcIiBzdHlsZT1cImJvcmRlci1jb2xvcjoiKyhHQ1tnXSkrIjtjb2xvcjoiKyhHQ1tnXSkrIlwiPkdycCAiKyhnKSsiPC9zcGFuPiIpOiIiKSsiPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10MylcIj4iKyhNYXRoLnJvdW5kKHQucCkpKyI8L3NwYW4+PC9kaXY+Iik7fSk7CiAgaCs9IjwvZGl2PiI7CiAgaCs9IjxkaXYgY2xhc3M9XCJ3Yy1zY2FyZFwiPjxoMz5MYXJnZXN0IFN0YWRpdW1zPC9oMz4iOwogIGNvbnN0IHN2PU9iamVjdC52YWx1ZXMoVkVOVUVTKS5zb3J0KChhLGIpPT5iLmNhcC1hLmNhcCk7Y29uc3QgbXhjPXN2WzBdLmNhcDsKICBzdi5zbGljZSgwLDgpLmZvckVhY2godj0+e2grPSgiPGRpdiBjbGFzcz1cIndjLWJhci1yb3dcIj48ZGl2IGNsYXNzPVwibGJcIiBzdHlsZT1cIndpZHRoOjkwcHg7Zm9udC1zaXplOjEwcHhcIj4iKyh2LmNpKSsiPC9kaXY+PGRpdiBjbGFzcz1cImJyXCI+PGRpdiBjbGFzcz1cImJpXCIgc3R5bGU9XCJ3aWR0aDoiKyh2LmNhcC9teGMqMTAwKSsiJTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudClcIj4iKyhubSh2LmNhcCkpKyI8L2Rpdj48L2Rpdj48L2Rpdj4iKTt9KTsKICBoKz0iPC9kaXY+IjsKICBoKz0iPGRpdiBjbGFzcz1cIndjLXNjYXJkXCI+PGgzPlRvdXJuYW1lbnQgVGltZWxpbmU8L2gzPiI7CiAgW3tsOiJHcm91cCBTdGFnZSIsZDoiSnVuIDExLTI3IixtOjcyLGM6InZhcigtLWFjY2VudCkifSx7bDoiUm91bmQgb2YgMzIiLGQ6Ikp1biAyOC1KdWwgMyIsbToxNixjOiJ2YXIoLS1ibHVlKSJ9LHtsOiJSb3VuZCBvZiAxNiIsZDoiSnVsIDQtNyIsbTo4LGM6InZhcigtLXB1cnBsZSkifSx7bDoiUXVhcnRlci1GaW5hbHMiLGQ6Ikp1bCA5LTExIixtOjQsYzoidmFyKC0tcGluaykifSx7bDoiU2VtaS1GaW5hbHMiLGQ6Ikp1bCAxNC0xNSIsbToyLGM6InZhcigtLW9yYW5nZSkifSx7bDoiM3JkIFBsYWNlIixkOiJKdWwgMTgiLG06MSxjOiJ2YXIoLS10ZWFsKSJ9LHtsOiJGaW5hbCIsZDoiSnVsIDE5IixtOjEsYzoidmFyKC0tZ29sZCkifV0uZm9yRWFjaCh0PT57aCs9KCI8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6NnB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyKVwiPjxkaXYgc3R5bGU9XCJ3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiIrKHQuYykrIjtmbGV4LXNocmluazowXCI+PC9kaXY+PGRpdiBzdHlsZT1cImZsZXg6MVwiPjxkaXYgc3R5bGU9XCJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDBcIj4iKyh0LmwpKyI8L2Rpdj48ZGl2IHN0eWxlPVwiZm9udC1zaXplOjEwcHg7Y29sb3I6dmFyKC0tdDMpXCI+IisodC5kKSsiPC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMFwiPiIrKHQubSkrIjwvZGl2PjwvZGl2PiIpO30pOwogIGgrPSI8L2Rpdj4iOwogIGVsLmlubmVySFRNTD1oOwp9CgovLyBOYXYgb2JzZXJ2ZXIKZnVuY3Rpb24gaW5pdE5hdigpewogIGNvbnN0IHNlY3RzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltpZF49J3djLSddIik7CiAgY29uc3QgbGlua3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLndjLW5hdi1saW5rcyBhIik7CiAgY29uc3Qgb2JzPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlcz0+e2VzLmZvckVhY2goZT0+e2lmKGUuaXNJbnRlcnNlY3Rpbmcpe2xpbmtzLmZvckVhY2gobD0+bC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKSk7Y29uc3QgbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCgiLndjLW5hdi1saW5rcyBhW2hyZWY9XCIjIisoZS50YXJnZXQuaWQpKyJcIl0iKSk7aWYobClsLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpO319KTt9LHtyb290TWFyZ2luOiItMzAlIDBweCAtMzAlIDBweCJ9KTsKICBbIndjLWhlcm8iLCJ3Yy1ncm91cHMiLCJ3Yy1zY2hlZHVsZSIsIndjLWJyYWNrZXQiLCJ3Yy10ZWFtcyIsIndjLXZlbnVlcyIsIndjLXNpbSIsIndjLXN0YXRzIl0uZm9yRWFjaChpZD0+e2NvbnN0IGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZihlbClvYnMub2JzZXJ2ZShlbCk7fSk7Cn0KCi8vIElOSVQgLSB3YWl0IGZvciBET00KZnVuY3Rpb24gd2MyNkJvb3QoKXsKICBpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndjMjYtaHViIikpe3NldFRpbWVvdXQod2MyNkJvb3QsNTApO3JldHVybjt9CiAgdHJ5ewogICAgd2MyNkluaXRUaGVtZSgpO2luaXRDRCgpO2luaXRIZXJvU3RhdHMoKTtpbml0R3JvdXBzKCk7cmVuZGVyU2NoKCk7cmVuZGVyQnJhY2tldCgpO2luaXRUZWFtQ3RybHMoKTtyZW5kZXJUZWFtcygpO2luaXRWZW51ZXMoKTtpbml0U3RhdHMoKTtpbml0TmF2KCk7CiAgfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoIldDMjYgaW5pdCBlcnJvcjoiLGUpO30KfQppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIix3YzI2Qm9vdCk7fWVsc2V7d2MyNkJvb3QoKTt9Cn0pKCk7Cg==<\/textarea><svg style=\"display:none\" onload=\"var t=document.getElementById(&quot;wc26-src&quot;);if(t){var s=document.createElement(&quot;script&quot;);s.textContent=atob(t.value);document.body.appendChild(s);t.remove();this.remove();}\"><\/svg><br \/>\n<!-- [CUSTOM HTML BLOCK END] --><\/p>\n<h3 id=\"canadian-cities\">Canadian Host Cities: Toronto and Vancouver<\/h3>\n<p>For Canadian football fans, the excitement is building on both coasts. Two of Canada&#8217;s premier cities have been selected to host <strong>world cup matches<\/strong>, bringing the tournament right to our doorstep.<\/p>\n<div style=\"flex-wrap: wrap;gap: 20px;justify-content: center;margin-top: 20px\">\n<div style=\"flex: 1;min-width: 280px;background-color: #e6f7ff;padding: 20px;border-radius: 8px;border-left: 5px solid #007bff\">\n<h4 style=\"margin-top: 0\">Toronto, Ontario<\/h4>\n<p><strong>Venue:<\/strong> BMO Field<br \/>Matches will be held at an expanded BMO Field, the heart of Toronto&#8217;s soccer scene. The city is expected to host several group stage matches, showcasing its multicultural energy to a global audience.<\/p>\n<\/p>\n<\/div>\n<div style=\"flex: 1;min-width: 280px;background-color: #e6fff2;padding: 20px;border-radius: 8px;border-left: 5px solid #28a745\">\n<h4 style=\"margin-top: 0\">Vancouver, British Columbia<\/h4>\n<p><strong>Venue:<\/strong> BC Place<br \/>Out west, the iconic BC Place will welcome teams and fans. Known for its breathtaking scenery and passionate sports culture, Vancouver is also slated to host key group stage games and potentially a knockout round match.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<h3 id=\"usa-mexico-venues\">USA and Mexico Venues<\/h3>\n<p>The majority of the tournament will unfold across the United States and Mexico, featuring a mix of state-of-the-art NFL stadiums and legendary football cathedrals.<\/p>\n<dl>\n<dt style=\"font-weight: bold;color: #155724\">Major USA Hubs<\/dt>\n<dd style=\"margin-left: 20px;margin-bottom: 10px\">The <strong>USA world cup<\/strong> venues are spread across the country, including major metropolitan areas like New York\/New Jersey (MetLife Stadium, host of the Final), Los Angeles (SoFi Stadium), and Dallas (AT&amp;T Stadium). Other host cities include Atlanta, Boston, Houston, Kansas City, Miami, Philadelphia, San Francisco Bay Area, and Seattle.<\/dd>\n<dt style=\"font-weight: bold;color: #155724\">Iconic Mexico Venues<\/dt>\n<dd style=\"margin-left: 20px\">Mexico brings a rich football history to the tournament. The legendary Estadio Azteca in Mexico City will become the first stadium to host matches in three different World Cups. Guadalajara (Estadio Akron) and Monterrey (Estadio BBVA) will also host games, promising an electric atmosphere for every <strong>mexico soccer<\/strong> fan.<\/dd>\n<\/dl>\n<h2 id=\"schedule-dates\">FIFA World Cup 2026 Dates and Match Schedule<\/h2>\n<p>Mark your calendars! The <strong>FIFA World Cup 2026<\/strong> will kick off on <strong>June 11, 2026<\/strong>, and conclude with the final match on <strong>July 19, 2026<\/strong>. The opening day will be historic, with all three host nations playing their first match on home soil. The first of the <strong>FIFA world cup games<\/strong> will take place at the iconic Estadio Azteca in Mexico City. Canada and the USA will also host their opening matches on the same day in Toronto and Los Angeles, respectively. This unique, three-pronged opening day sets the stage for a truly continental celebration of football. As you wait for the official <strong>world cup match schedule<\/strong> to be finalized, you can <a href=\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/xbox-game-pass-canada-2026-guide-to-games-price\">get in the virtual football spirit with Xbox Game Pass in Canada<\/a> and play as your favourite teams.<\/p>\n<h3 id=\"knockout-stages\">Knockout Stages and Bracket Structure<\/h3>\n<p>With 48 teams, the tournament introduces a new knockout stage: the Round of 32. This adds an extra layer of drama and unpredictability to the competition.<\/p>\n<div style=\"background-color: #f8f9fa;border: 1px solid #dee2e6;padding: 20px;border-radius: 8px;margin-top: 20px\">\n<h4 style=\"margin-top:0\">How the New Bracket Works<\/h4>\n<p>The top two teams from each of the 12 groups will automatically advance. They will be joined by the eight best third-place teams, creating a field of 32 for the first knockout round. From there, it&#8217;s a single-elimination tournament all the way to the final. Fans can track the <strong>FIFA world cup brackets<\/strong> as teams progress, and creating a <strong>world cup bracket 2026<\/strong> pool with friends and family is a fantastic way to engage with every match.<\/p>\n<\/div>\n<h2 id=\"qualifiers\">World Cup 2026 Qualifiers and Regional Standings<\/h2>\n<p>While Canada, the USA, and Mexico have qualified automatically as hosts, the rest of the world is deep in the midst of the <strong>world cup 2026 qualifiers<\/strong>. Teams from every continent are battling it out to secure one of the 45 remaining spots. The qualification process is a marathon, not a sprint, with matches spanning over two years. Fans can follow the <strong>FIFA world cup standings<\/strong> and the <strong>world cup points table 2026<\/strong> through official FIFA channels and major sports broadcasters to see which nations are on track to make it to North America.<\/p>\n<h3 id=\"concacaf-european-asian-qualifiers\">CONCACAF, European, and Asian Qualifiers<\/h3>\n<p>Each football confederation is allocated a specific number of slots for the tournament, reflecting the growth to 48 teams.<\/p>\n<div style=\"grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));gap: 15px;margin-top: 20px\">\n<div style=\"background-color: #fff;border: 1px solid #ddd;padding: 15px;border-radius: 8px\">\n<h4 style=\"margin-top:0\">CONCACAF (North, Central America &amp; Caribbean)<\/h4>\n<p>With 3 hosts automatically in, there are 3 more direct slots and 2 inter-confederation playoff spots up for grabs in a fiercely competitive region.<\/p>\n<\/p>\n<\/div>\n<div style=\"background-color: #fff;border: 1px solid #ddd;padding: 15px;border-radius: 8px\">\n<h4 style=\"margin-top:0\">UEFA (Europe)<\/h4>\n<p>Europe has the most slots with 16 direct spots. Following the <strong>fifa world cup european qualifiers standings<\/strong> is key to seeing which powerhouses like France, England, and Germany will secure their places.<\/p>\n<\/p>\n<\/div>\n<div style=\"background-color: #fff;border: 1px solid #ddd;padding: 15px;border-radius: 8px\">\n<h4 style=\"margin-top:0\">AFC (Asia)<\/h4>\n<p>Asia now has 8 direct slots, a significant increase. The <strong>fifa world cup asian qualifiers standings<\/strong> are being watched closely as nations like Japan, South Korea, and Saudi Arabia look to book their tickets.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<h2 id=\"groups-draw\">2026 World Cup Groups and the Official Draw<\/h2>\n<p>The new 48-team format revolutionizes the group stage. Instead of the traditional eight groups of four, the <strong>world cup 2026 groups<\/strong> will consist of <strong>12 groups of 4 teams<\/strong>. This structure ensures that every team plays a minimum of three matches while keeping the group stage dynamic and full of high-stakes encounters. The top two teams from each group, plus the eight best third-placed teams, will advance to the knockout stage.<\/p>\n<div style=\"background-color: #e3f2fd;border-left: 6px solid #2196F3;margin: 20px 0;padding: 15px\">\n<p><strong>The Official World Cup Draw:<\/strong> The official <strong>world cup draw<\/strong>, where the 48 qualified nations will discover their group stage opponents, is expected to take place in late 2025 after the qualification process is complete. This televised global event is where the path to the final truly begins to take shape.<\/p>\n<\/div>\n<h2 id=\"tickets\">How to Secure World Cup 2026 Tickets<\/h2>\n<p>Getting your hands on <strong>world cup 2026 tickets<\/strong> will be a competitive process, but with some planning, you can increase your chances. The only official and legitimate source for tickets is FIFA itself.<\/p>\n<div style=\"background: #f0fff0;border: 1px solid #28a745;border-radius: 8px;padding: 20px;margin-top: 20px\">\n<h4 style=\"color: #155724;margin-top:0\">\ud83c\udf9f\ufe0f Your Action Plan for Tickets:<\/h4>\n<ol>\n<li><strong>Register Your Interest:<\/strong> The first and most crucial step is to visit the official FIFA World Cup 2026 website. You can register there to receive information and updates directly from FIFA about <strong>fifa world cup 2026 tickets<\/strong>. This will ensure you&#8217;re notified as soon as sales phases are announced.<\/li>\n<li><strong>Understand the Phases:<\/strong> Ticket sales typically happen in multiple phases. This often includes a lottery phase where fans apply for tickets and are selected randomly, followed by first-come, first-served sales phases.<\/li>\n<li><strong>Prepare for Pricing:<\/strong> While official prices have not been announced, expect a range of categories based on seat location and match importance (e.g., group stage vs. final). Keep an eye on FIFA&#8217;s official announcements for pricing details.<\/li>\n<\/ol>\n<\/div>\n<h2 id=\"players-teams\">Star Players and Teams to Watch<\/h2>\n<p>The 2026 World Cup will be a showcase of global football talent, featuring a mix of seasoned legends and rising superstars. Many of the world&#8217;s best <strong>fifa world cup players<\/strong> will be aiming for glory.<\/p>\n<p>Defending champions Argentina, potentially led by a veteran <strong>Messi<\/strong>, will look to defend their crown. However, they&#8217;ll face stiff competition from perennial powerhouses like France, with superstar <strong>Mbappe<\/strong> at the helm, a dynamic England squad featuring <strong>Bellingham<\/strong>, and a Brazilian side full of flair with players like <strong>Raphinha<\/strong>. Keep an eye on emerging talents like Germany&#8217;s <strong>Florian Wirtz<\/strong>, who could have a breakout tournament.<\/p>\n<hr style=\"border: none;border-top: 2px solid #e0e0e0;margin: 40px 0\">\n<h2 id=\"faq\">Frequently Asked Questions (FAQ)<\/h2>\n<h3>When is the World Cup 2026?<\/h3>\n<p>The FIFA World Cup 2026 will take place from Thursday, June 11, 2026, to Sunday, July 19, 2026.<\/p>\n<h3>Where is the World Cup 2026 being held?<\/h3>\n<p>The tournament is being co-hosted by three countries: Canada (Toronto, Vancouver), the United States (Atlanta, Boston, Dallas, Houston, Kansas City, Los Angeles, Miami, New York\/New Jersey, Philadelphia, San Francisco Bay Area, Seattle), and Mexico (Guadalajara, Mexico City, Monterrey).<\/p>\n<h3>What about the T20 Cricket World Cup 2026?<\/h3>\n<p>This is a great question that often causes confusion. The <strong>world cup 2026 cricket<\/strong> tournament is a completely separate event. The ICC Men&#8217;s T20 World Cup 2026 is scheduled to be co-hosted by India and Sri Lanka in February and March 2026. While both are major world championships, one is for football (soccer) and the other is for cricket.<\/p>\n<h3>Will there be a USA vs Mexico match?<\/h3>\n<p>It&#8217;s possible! As both are host nations, a <strong>USA vs Mexico<\/strong> match in the World Cup would be a massive event. They would not be scheduled to play each other automatically. They could be drawn into the same group during the official draw, or they could meet in the knockout stages if they both advance from their respective groups. Fans of the <strong>mexico game<\/strong> and the USMNT are certainly hoping for this classic rivalry to ignite on the world&#8217;s biggest stage.<\/p>\n<h3>Where can I find the daily World Cup live match updates?<\/h3>\n<p>Once the tournament begins, you will have several options for following the <strong>world cup live<\/strong>. In Canada, official broadcast partners like TSN and RDS will provide comprehensive coverage. For real-time scores, stats, and updates on the <strong>today match world cup<\/strong>, you can also use the official FIFA website and app. These platforms will be the most reliable sources for every <strong>world cup today match<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Explore your complete guide to the FIFA World Cup 2026. Discover all 16 host cities in Canada, the USA &amp; Mexico, including Toronto and Vancouver, find the match schedule, and learn how to get tickets for this historic 48-team football tournament.<\/p>\n","protected":false},"author":49,"featured_media":40156,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"cos_headline_score":0,"cos_seo_score":0,"cos_headline_text":"","cos_headline_has_been_analyzed":false,"cos_last_analyzed_headline":[],"_hreflang_tags":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[521],"tags":[],"class_list":["post-40171","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-en-ca"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.4 (Yoast SEO v21.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets\" \/>\n<meta property=\"og:description\" content=\"Explore your complete guide to the FIFA World Cup 2026. Discover all 16 host cities in Canada, the USA &amp; Mexico, including Toronto and Vancouver, find the match schedule, and learn how to get tickets for this historic 48-team football tournament.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-30T15:24:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-01T06:48:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/04\/30171827\/hero-image-en-28.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"890\" \/>\n\t<meta property=\"og:image:height\" content=\"496\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Conor Byrne\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets\",\"name\":\"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/#website\"},\"datePublished\":\"2026-04-30T15:24:02+00:00\",\"dateModified\":\"2026-05-01T06:48:37+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/en-ca\/recharge-com-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-ca\/\",\"name\":\"Recharge Blog\",\"description\":\"Everything about online safety, smart spending &amp; your digital lifestyle.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.recharge.com\/blog\/en-ca\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6\",\"name\":\"Conor Byrne\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g\",\"caption\":\"Conor Byrne\"},\"description\":\"My passion for the e-commerce and fintech space started years ago with my first gaming console, giving me firsthand experience with the world of digital credit and top-ups. As a blog copywriter here at Recharge.com, I now get to use that insight to create clear, helpful content that makes navigating gift cards and online payments a breeze for our community.\",\"url\":\"https:\/\/www.recharge.com\/blog\/en-ca\/author\/conor-byrne\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets","og_locale":"en_US","og_type":"article","og_title":"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets","og_description":"Explore your complete guide to the FIFA World Cup 2026. Discover all 16 host cities in Canada, the USA &amp; Mexico, including Toronto and Vancouver, find the match schedule, and learn how to get tickets for this historic 48-team football tournament.","og_url":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets","og_site_name":"Recharge Blog","article_published_time":"2026-04-30T15:24:02+00:00","article_modified_time":"2026-05-01T06:48:37+00:00","og_image":[{"width":890,"height":496,"url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/04\/30171827\/hero-image-en-28.jpg","type":"image\/jpeg"}],"author":"Conor Byrne","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets","url":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets","name":"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/en-ca\/#website"},"datePublished":"2026-04-30T15:24:02+00:00","dateModified":"2026-05-01T06:48:37+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/en-ca\/ca\/world-cup-2026-guide-canada-host-cities-dates-tickets#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/en-ca\/recharge-com-blog"},{"@type":"ListItem","position":2,"name":"World Cup 2026 Guide: Canada Host Cities, Dates &amp; Tickets"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/en-ca\/#website","url":"https:\/\/www.recharge.com\/blog\/en-ca\/","name":"Recharge Blog","description":"Everything about online safety, smart spending &amp; your digital lifestyle.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.recharge.com\/blog\/en-ca\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-CA"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/857508b94164c3cdc1f206b5c30d31a6","name":"Conor Byrne","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.recharge.com\/blog\/en-ca\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/624bd2d0a75e67e81c16920493bcda346cb5cfd0f77cfdff3a72413de0254eeb?s=96&d=mm&r=g","caption":"Conor Byrne"},"description":"My passion for the e-commerce and fintech space started years ago with my first gaming console, giving me firsthand experience with the world of digital credit and top-ups. As a blog copywriter here at Recharge.com, I now get to use that insight to create clear, helpful content that makes navigating gift cards and online payments a breeze for our community.","url":"https:\/\/www.recharge.com\/blog\/en-ca\/author\/conor-byrne"}]}},"jetpack_featured_media_url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/04\/30171827\/hero-image-en-28.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/posts\/40171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/comments?post=40171"}],"version-history":[{"count":1,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/posts\/40171\/revisions"}],"predecessor-version":[{"id":40190,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/posts\/40171\/revisions\/40190"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/media\/40156"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/media?parent=40171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/categories?post=40171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/en-ca\/wp-json\/wp\/v2\/tags?post=40171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}