{"id":1868,"date":"2026-06-08T05:29:54","date_gmt":"2026-06-08T05:29:54","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-1-test-2-listening\/"},"modified":"2026-07-05T02:44:36","modified_gmt":"2026-07-05T02:44:36","slug":"cambridge-ket-1-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-1-test-2-listening\/","title":{"rendered":"KET 1 Test 2 Listening"},"content":{"rendered":"<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400%3B500%3B600%3B700%3B800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n\n.entry-content,.wp-block-post-content,.is-layout-constrained{max-width:none !important;width:auto !important;margin-left:0 !important;margin-right:0 !important;padding-left:0 !important;padding-right:0 !important;}\n.wp-block-post-title{display:none !important;}\n\n:root{\n  --accent-1:#F97316; --accent-2:#F43F5E; --purple:#8B5CF6;\n  --gold:#F9C74F; --green:#10B981; --red:#EF4444;\n  --light-1:#FFF7ED; --light-2:#FFFBF5; --white:#FFFFFF;\n  --text:#0F172A; --muted:#475569; --subtle:#64748B; --border:#E2E8F0;\n  --dark-1:#1B0F02;\n  --r-10:10px; --r-16:16px; --r-22:22px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06); --sh-lg:0 12px 40px rgba(0,0,0,.12);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;color:var(--text);background:var(--light-2);-webkit-font-smoothing:antialiased;overflow-x:hidden}\n.serif{font-family:'Fraunces',Georgia,serif !important;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:1080px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .28s ease;border-bottom:1px solid transparent}\n.header.solid{background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border)}\n.header-inner{display:flex;align-items:center;gap:28px;height:72px;max-width:1200px;margin:0 auto;padding:0 24px}\n.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}\n.brand img{width:40px;height:40px;border-radius:11px;object-fit:cover;box-shadow:var(--sh-card)}\n.brand-name{font-weight:800;font-size:18px;color:#fff;transition:color .28s ease}\n.header.solid .brand-name{color:var(--text)}\n.nav{display:flex;align-items:center;gap:4px;margin-left:8px}\n.nav a{padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:all .16s ease}\n.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}\n.header.solid .nav a{color:var(--muted)}\n.header.solid .nav a:hover{color:var(--text);background:var(--light-1)}\n.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}\n.btn-back{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;font-weight:700;font-size:14px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22)}\n.header.solid .btn-back{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.hamburger{display:none;width:40px;height:40px;border-radius:50%;color:#fff;align-items:center;justify-content:center}\n.header.solid .hamburger{color:var(--text)}\n\n.hero{position:relative;min-height:300px;padding:110px 0 40px;background:linear-gradient(135deg,#8B5CF6 0%,#F43F5E 55%,#7C2D12 100%);color:#fff;overflow:hidden}\n.hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.15) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.10) 0%,transparent 50%);pointer-events:none}\n.hero .wrap{position:relative;z-index:1}\n.kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;opacity:.92;margin-bottom:14px}\n.hero h1{font-size:clamp(32px,5vw,48px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:16px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:18px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}\n.meta-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.24);font-size:13px;font-weight:600}\n.meta-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}\n\n.player-bar{position:sticky;top:72px;z-index:50;background:#0F172A;color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.2)}\n.player-inner{display:grid;grid-template-columns:340px 1fr;gap:20px;align-items:center;padding:14px 24px;max-width:1200px;margin:0 auto}\n.player-vid{aspect-ratio:16\/9;background:#000;border-radius:10px;overflow:hidden;width:340px;min-height:191px}\n.player-vid iframe{width:100%;height:100%;border:0;display:block}\n.player-controls h4{font-family:'Fraunces',serif !important;font-size:18px;margin-bottom:4px}\n.player-controls .pc-sub{font-size:13px;opacity:.75;margin-bottom:12px}\n.part-jumps{display:flex;flex-wrap:wrap;gap:8px}\n.jump-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font-weight:600;font-size:13px;border:1px solid rgba(255,255,255,.2);transition:all .15s ease;cursor:pointer}\n.jump-btn:hover{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));border-color:transparent;transform:translateY(-1px)}\n.jump-btn .jt{font-weight:800;color:var(--gold);font-size:12px}\n.jump-btn.active{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));border-color:transparent}\n.player-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}\n.player-actions .ctrl-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:8px;background:rgba(255,255,255,.08);color:#fff;font-size:12px;font-weight:600;border:1px solid rgba(255,255,255,.14);cursor:pointer}\n.player-actions .ctrl-btn:hover{background:rgba(255,255,255,.18)}\n\n\/* Mini progress chip (top of page, small) *\/\n.mini-prog{position:sticky;top:262px;z-index:40;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);padding:8px 0}\n.mini-prog-inner{display:flex;align-items:center;gap:14px}\n.mini-prog-bar{flex:1;height:6px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.mini-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.mini-prog-label{font-size:12px;color:var(--muted);font-weight:700;min-width:120px}\n.mini-prog-score{font-weight:800;color:var(--accent-1);font-size:14px;min-width:80px}\n\n.part-section{padding:48px 0;border-bottom:1px solid var(--border)}\n.part-section:nth-of-type(even){background:#fff}\n.part-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:24px}\n.part-num{flex-shrink:0;width:60px;height:60px;border-radius:18px;background:linear-gradient(135deg,var(--accent-1),var(--accent-2));color:#fff;display:grid;place-items:center;font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;box-shadow:0 8px 22px rgba(249,115,22,.3)}\n.part-head-text h2{font-size:26px;line-height:1.15;margin-bottom:6px}\n.part-head-text .qrange{display:inline-block;font-size:12.5px;font-weight:700;color:var(--accent-1);background:var(--light-1);padding:4px 10px;border-radius:999px;letter-spacing:.04em;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:15px;line-height:1.55;max-width:740px}\n.part-actions{display:flex;gap:10px;margin:0 0 16px 78px;flex-wrap:wrap}\n.act-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:#fff;border:1.5px solid var(--border);font-weight:600;font-size:13px;color:var(--text);cursor:pointer;transition:all .15s ease}\n.act-pill:hover{border-color:var(--accent-1);color:var(--accent-1)}\n\n\/* Question items *\/\n.q-list{display:flex;flex-direction:column;gap:18px;margin-top:8px}\n.q-item{background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;transition:all .2s ease;scroll-margin-top:330px}\n.q-item.correct{border-color:var(--green);box-shadow:0 0 0 3px rgba(16,185,129,.12)}\n.q-item.wrong{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.12)}\n.q-item.revealed{background:linear-gradient(180deg,#FEF3C7 0%,#FFFBF5 100%);border-color:var(--gold)}\n.q-text{font-size:15.5px;line-height:1.55;color:var(--text);display:flex;gap:10px;align-items:flex-start}\n.q-text b.qn{color:var(--accent-1);font-weight:800;min-width:30px}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border-radius:12px;background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);cursor:pointer;transition:all .15s ease;user-select:none}\n.opt:hover{background:var(--light-1);border-color:var(--accent-1)}\n.opt input{display:none}\n.opt .opt-letter{font-weight:800;color:var(--accent-1);background:#fff;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12.5px;border:1px solid var(--border);flex-shrink:0}\n.opt.selected{background:linear-gradient(100deg,rgba(249,115,22,.12),rgba(244,63,94,.12));border-color:var(--accent-1)}\n.opt.selected .opt-letter{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.opt.correct-opt{background:rgba(16,185,129,.12) !important;border-color:var(--green) !important}\n.opt.correct-opt .opt-letter{background:var(--green) !important;color:#fff !important;border-color:transparent !important}\n.opt.wrong-opt{background:rgba(239,68,68,.10) !important;border-color:var(--red) !important}\n.opt.wrong-opt .opt-letter{background:var(--red) !important;color:#fff !important;border-color:transparent !important}\n.feedback{font-size:13px;font-weight:600;display:none;padding:8px 12px;border-radius:8px;margin-top:4px}\n.q-item.answered .feedback,.q-item.revealed .feedback{display:block}\n.q-item.correct .feedback{background:rgba(16,185,129,.12);color:#065F46}\n.q-item.wrong .feedback{background:rgba(239,68,68,.10);color:#991B1B}\n.q-item.revealed .feedback{background:#FEF3C7;color:#7B5B00;border-left:3px solid var(--gold);padding-left:10px}\n\n\/* Show answer button per question *\/\n.q-bottom{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}\n.show-ans-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;background:#FEF3C7;color:#7B5B00;font-weight:700;font-size:12px;border:1px solid #E8D88E;cursor:pointer;transition:all .15s ease}\n.show-ans-btn:hover{background:#FDE68A;transform:translateY(-1px)}\n\n\/* Image MCQ (Part 1) *\/\n.q-img-row{margin:8px 0;display:flex;justify-content:center}\n.q-img-row img{max-width:100%;height:auto;border:1px solid var(--border);border-radius:12px;background:#fff;padding:8px}\n\n\/* Part 2 matching *\/\n.match-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:18px 0}\n.match-letter{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1.5px solid var(--border);border-radius:12px;font-size:14px;font-weight:600;color:var(--text)}\n.match-letter b{color:var(--accent-1);background:var(--light-1);width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;font-weight:800}\n\n\/* Input blanks *\/\n.input-blank{display:inline-block;min-width:140px;border:none;border-bottom:2px dashed var(--accent-1);background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;padding:2px 8px;margin:0 4px;text-align:center;outline:none}\n.input-blank:focus{border-bottom-style:solid;background:var(--light-1)}\n.input-blank.correct{border-bottom-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.input-blank.wrong{border-bottom-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n.input-blank.revealed{border-bottom-color:var(--gold);background:#FEF3C7;color:#7B5B00}\n\n\/* Notes form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:14px;max-width:640px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:18px;color:var(--accent-2);margin-bottom:6px;border-bottom:2px solid var(--accent-1);padding-bottom:8px;display:inline-block;width:100%;text-align:center}\n.form-row{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}\n.form-row label{flex:0 0 220px;font-weight:600;color:var(--text);font-size:14.5px}\n.form-row .input-blank{flex:1;min-width:200px;text-align:left;font-size:14.5px}\n.form-row .show-ans-btn{flex-shrink:0;margin-left:auto}\n\n\/* Transcript *\/\n.transcript-card{margin-top:18px;background:#FAFBFC;border:1.5px solid var(--border);border-radius:14px;padding:0;overflow:hidden;max-width:840px}\n.transcript-card.collapsed .ts-body{display:none}\n.transcript-card .ts-head{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;background:#fff;cursor:pointer;font-weight:700;font-size:14px;color:var(--accent-2);border-bottom:1px solid var(--border)}\n.transcript-card.collapsed .ts-head{border-bottom:none}\n.transcript-card .ts-head .chev{transition:transform .2s ease}\n.transcript-card.collapsed .ts-head .chev{transform:rotate(-90deg)}\n.transcript-card .ts-body{padding:16px 22px;font-size:14.5px;line-height:1.75;color:var(--text);max-height:380px;overflow-y:auto;background:#FAFBFC;font-family:'Courier New',monospace}\n.transcript-card .ts-body b{color:var(--accent-2);font-family:'Plus Jakarta Sans',sans-serif}\n.transcript-card .ts-body i{color:var(--muted);font-size:12.5px}\n\n\/* Notes pad *\/\n.notes-pad{background:#FEF9E7;border:1.5px solid var(--gold);border-radius:14px;padding:14px 18px;margin-top:14px;max-width:640px}\n.notes-pad label{display:block;font-weight:700;font-size:13px;color:#7B5B00;margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}\n.notes-pad textarea{width:100%;min-height:80px;padding:10px;font-family:inherit !important;font-size:14px;line-height:1.5;border:1px solid #E8D88E;border-radius:8px;background:rgba(255,255,255,.7);color:var(--text);outline:none;resize:vertical}\n.notes-pad textarea:focus{border-color:var(--accent-1);background:#fff}\n\n\/* Submit panel at END *\/\n.submit-panel{margin:40px auto 24px;background:linear-gradient(135deg,#8B5CF6 0%,#F43F5E 100%);color:#fff;padding:30px;border-radius:22px;text-align:center;max-width:720px;box-shadow:0 16px 50px rgba(139,92,246,.3)}\n.submit-panel h3{font-family:'Fraunces',serif !important;font-size:24px;margin-bottom:8px}\n.submit-panel p.intro{opacity:.95;margin-bottom:18px;font-size:14.5px}\n.submit-panel .sp-buttons{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}\n.btn-submit-big{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:999px;background:#fff;color:var(--accent-2);font-weight:800;font-size:16px;box-shadow:0 8px 24px rgba(0,0,0,.2);cursor:pointer;transition:transform .15s ease}\n.btn-submit-big:hover{transform:translateY(-2px)}\n.btn-reset-big{padding:14px 24px;border-radius:999px;background:rgba(255,255,255,.18);color:#fff;font-weight:700;font-size:14.5px;border:1px solid rgba(255,255,255,.4);cursor:pointer}\n.btn-reset-big:hover{background:rgba(255,255,255,.3)}\n\n\/* Results banner *\/\n.results-banner{display:none;margin:24px auto;padding:30px;border-radius:22px;background:#fff;color:var(--text);text-align:center;max-width:720px;box-shadow:var(--sh-lg);border:2px solid var(--accent-1)}\n.results-banner.show{display:block}\n.results-banner h3{font-size:28px;font-family:'Fraunces',serif !important;margin-bottom:8px;color:var(--accent-2)}\n.results-banner .score-big{font-size:60px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif !important;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n.results-banner p{font-size:15px;color:var(--muted)}\n.score-parts{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:16px;background:var(--light-1);padding:12px;border-radius:12px}\n.score-parts .sp-item{text-align:center;font-size:12px;font-weight:600;color:var(--text)}\n.score-parts .sp-item b{display:block;font-size:18px;font-family:'Fraunces',serif !important;margin-bottom:2px;color:var(--accent-1)}\n\n.footer{background:var(--dark-1);color:#9CA3AF;padding:36px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold);font-weight:600}\n\n@media (max-width:880px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .player-inner{grid-template-columns:1fr;padding:12px 18px}\n  .player-vid{width:100%;min-height:0}\n  .hero{padding:110px 0 30px}\n  .part-actions{margin-left:0}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .mini-prog{top:auto;position:relative}\n  .part-head{flex-direction:column;gap:10px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .score-parts{grid-template-columns:repeat(5,1fr);font-size:10px}\n  .score-parts .sp-item b{font-size:14px}\n}\n\n.drawer{position:fixed;inset:0;background:rgba(15,23,42,.65);z-index:200;display:none;align-items:flex-start;justify-content:flex-end}\n.drawer.open{display:flex}\n.drawer-panel{width:280px;background:#fff;height:100%;padding:24px;display:flex;flex-direction:column;gap:8px}\n.drawer-panel a{padding:12px 14px;border-radius:10px;font-weight:600;color:var(--text)}\n.drawer-panel a:hover{background:var(--light-1)}\n.drawer-close{align-self:flex-end;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}\n<\/style>\n\n<header class=\"header\" id=\"hdr\">\n  <div class=\"header-inner\">\n    <a href=\"https:\/\/allenglish4u.com\/vi\/\" class=\"brand\">\n      <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/04\/Transparent-background-MacBook-Pro-cua-Hang.png\" alt=\"AE4U\">\n      <span class=\"brand-name\">All English 4U<\/span>\n    <\/a>\n    <nav class=\"nav\">\n      <a href=\"https:\/\/allenglish4u.com\/vi\/grammar\/\">Ng\u1eef ph\u00e1p<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/vi\/dictation\/\">Ch\u00ednh t\u1ea3 nghe<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\" class=\"btn-back\">\n        <svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M19 12H5M11 18l-6-6 6-6\"\/><\/svg>\n        Back\n      <\/a>\n      <button class=\"hamburger\" id=\"hamb\" aria-label=\"Menu\">\n        <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"drawer\" id=\"drawer\">\n  <div class=\"drawer-panel\">\n    <button class=\"drawer-close\" id=\"drawerClose\" aria-label=\"Close\">\n      <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n    <\/button>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/grammar\/\">Ng\u1eef ph\u00e1p<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/vi\/dictation\/\">Ch\u00ednh t\u1ea3 nghe<\/a>\n    <\/div>\n<\/div>\n\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge English &#183; Key (KET)<\/span>\n    <h1 class=\"serif\">KET 1 &#8212; Test 2 <span>Listening<\/span><\/h1>\n    <p class=\"sub\">KET 1 Test 2 Listening &#8212; 5 parts, 25 questions. YouTube audio with jump-to-part buttons. Each question has its own <b>Show Answer<\/b> button + bottom submit panel for instant grading.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>~30 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>5 Parts &#183; 25 Questions<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Auto-grade + Show Answer<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Transcript &amp; Notes<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"player-bar\" id=\"playerBar\">\n  <div class=\"player-inner\">\n    <div class=\"player-vid\">\n      <iframe id=\"ytPlayer\" src=\"https:\/\/www.youtube.com\/embed\/paiW8NcPlRY?enablejsapi=1&#038;list=PLmmEx97WdP1QQUqxSoEdjUE1gVdxqE8Ce&#038;rel=0\" title=\"KET 1 Test 2 Listening\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n    <\/div>\n    <div class=\"player-controls\">\n      <h4>&#127911; Audio &#8212; KET 1 Listening Test 2<\/h4>\n      <div class=\"pc-sub\">Click a part to jump in audio. Submit panel is at the bottom of this page.<\/div>\n      <div class=\"part-jumps\">\n        <button class=\"jump-btn\" data-time=\"7\" data-part=\"intro\"><span class=\"jt\">0:07<\/span> Intro<\/button>\n        <button class=\"jump-btn\" data-time=\"23\" data-part=\"1\"><span class=\"jt\">0:23<\/span> Part 1<\/button>\n        <button class=\"jump-btn\" data-time=\"360\" data-part=\"2\"><span class=\"jt\">6:00<\/span> Part 2<\/button>\n        <button class=\"jump-btn\" data-time=\"587\" data-part=\"3\"><span class=\"jt\">9:47<\/span> Part 3<\/button>\n        <button class=\"jump-btn\" data-time=\"868\" data-part=\"4\"><span class=\"jt\">14:28<\/span> Part 4<\/button>\n        <button class=\"jump-btn\" data-time=\"1071\" data-part=\"5\"><span class=\"jt\">17:51<\/span> Part 5<\/button>\n      <\/div>\n      <div class=\"player-actions\">\n        <button class=\"ctrl-btn\" id=\"btnPause\">&#9208; Pause<\/button>\n        <button class=\"ctrl-btn\" id=\"btnPlay\">&#9654; Play<\/button>\n        <button class=\"ctrl-btn\" id=\"btnRewind\">&#9194; -10s<\/button>\n        <button class=\"ctrl-btn\" id=\"btnSlower\">&#128034; Slower<\/button>\n        <button class=\"ctrl-btn\" id=\"btnNormal\">&#9889; Normal<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"mini-prog\" id=\"miniProg\">\n  <div class=\"wrap mini-prog-inner\">\n    <div class=\"mini-prog-score\">Score <span id=\"scoreNow\">0<\/span>\/25<\/div>\n    <div class=\"mini-prog-bar\"><div class=\"mini-prog-fill\" id=\"progFill\"><\/div><\/div>\n    <div class=\"mini-prog-label\"><span id=\"answeredCount\">0<\/span> of 25 answered<\/div>\n  <\/div>\n<\/div>\n\n<!-- PART 1 -->\n<section class=\"part-section\" id=\"part1\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">1<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 1&#8211;5 &#183; 0:23 in audio<\/span>\n        <h2 class=\"serif\">Five short conversations<\/h2>\n        <p>You will hear five short conversations. For questions 1&#8211;5, choose the right answer (A, B or C). Each conversation is played twice.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"23\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 1<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts1\">&#128220; Transcript<\/button>\n    <\/div>\n    <div class=\"q-list\" id=\"part1List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts1\">\n      <div class=\"ts-head\" data-toggle=\"ts1\"><span>&#128220; Part 1 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p><b>Q1 &#8212; What is John going to do tonight?<\/b> &#183; Paul: Hello Mrs Brown. Is John there? Mrs Brown: No, he&#8217;s out on his bicycle at the moment. Paul: Oh. Can he go swimming tonight? Mrs Brown: <b>Sorry, Paul, he&#8217;s got a football match tonight.<\/b> (= C football)<\/p>\n<p><b>Q2 &#8212; Which is Ben&#8217;s family?<\/b> &#183; Female: Are you as tall as your sister, Ben? Ben: <b>No, she&#8217;s still taller than me.<\/b> Female: And what about your brother? Ben: <b>Oh, I&#8217;m much taller than him!<\/b> (= A &#8212; tall sister, Ben in the middle, shorter brother)<\/p>\n<p><b>Q3 &#8212; Which bag?<\/b> &#183; Female: I want to buy a present for Diana. Male: What about a bag? Female: Yes, this one&#8217;s nice. It&#8217;s <b>small and round<\/b> &#8230; Male: I think she&#8217;d prefer a square bag. Female: No, this is better. <b>I&#8217;ll get the round one.<\/b> (= C round bag)<\/p>\n<p><b>Q4 &#8212; Apples<\/b> &#183; Male: Can I help you? Female: Yes, I&#8217;d like a pound of apples, please. Male: Do you want the ones at thirty pence, thirty-five pence or forty pence? Female: <b>The ones at thirty pence please.<\/b> (= A 30p)<\/p>\n<p><b>Q5 &#8212; Film time<\/b> &#183; Ray: Hello? Helen: Hello, Ray? It&#8217;s Helen. About tonight &#8230; Ray: Ah, yes. <b>The film begins at quarter past eight.<\/b> Helen: OK. I&#8217;ll meet you outside the cinema at &#8230; about five to eight. Ray: All right, see you then. (= A 8:15)<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PART 2 -->\n<section class=\"part-section\" id=\"part2\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">2<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 6&#8211;10 &#183; 6:00 in audio<\/span>\n        <h2 class=\"serif\">Hotel rooms &#8212; what colour for each room?<\/h2>\n        <p>Listen to Liz and Michael talking about rooms in a hotel they are going to paint. What colour are they going to paint each room? For each room (6&#8211;10), choose a colour A&#8211;H. <b>Example<\/b> (dining room): <b>G &#8212; white<\/b>.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"360\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 2<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts2\">&#128220; Transcript<\/button>\n    <\/div>\n\n    <div class=\"match-grid\">\n      <div class=\"match-letter\"><b>A<\/b> dark blue<\/div>\n      <div class=\"match-letter\"><b>B<\/b> light blue<\/div>\n      <div class=\"match-letter\"><b>C<\/b> dark green<\/div>\n      <div class=\"match-letter\"><b>D<\/b> light green<\/div>\n      <div class=\"match-letter\"><b>E<\/b> grey<\/div>\n      <div class=\"match-letter\"><b>F<\/b> red<\/div>\n      <div class=\"match-letter\"><b>G<\/b> white <i style=\"color:#888;font-style:normal;font-size:11px;font-weight:500\">(example: dining room)<\/i><\/div>\n      <div class=\"match-letter\"><b>H<\/b> light yellow<\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts2\">\n      <div class=\"ts-head\" data-toggle=\"ts2\"><span>&#128220; Part 2 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p>Liz: Michael, we must paint some of the rooms in the hotel. Michael: Yes, Liz. What colour paint shall we have?<br>\nLiz: Well, I think the <b>dining room<\/b> should be white. Michael: Yes. White is best for the dining room. (example = G white)<br>\nMichael: But I&#8217;d like something brighter in the <b>television room<\/b>. What about red? Liz: Hm. I think it should be white, too. Michael: No, let&#8217;s have something more interesting. Do you like yellow? Liz: Yes, a <b>light yellow<\/b> is all right. (Q6 TV room = H light yellow)<br>\nLiz: Now, what about the bedrooms on the <b>first floor<\/b>? Michael: Well, the curtains are dark green, so I think the walls should be <b>light green<\/b>. (Q7 first floor = D light green)<br>\nLiz: Shall we have the same colour in the <b>second floor<\/b> bedrooms? Michael: No, something different. Perhaps grey &#8230; or is blue prettier? Liz: All right. A nice <b>light blue<\/b> on the second floor. (Q8 second floor = B light blue)<br>\nMichael: And for the <b>office<\/b>? How about red? Liz: Oh, no! That must be <b>grey<\/b>. You can have red in the <b>kitchen<\/b>. (Q9 office = E grey &#183; Q10 kitchen = F red)<br>\nMichael: Fine! At least one room will be my favourite colour!<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PART 3 -->\n<section class=\"part-section\" id=\"part3\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 11&#8211;15 &#183; 9:47 in audio<\/span>\n        <h2 class=\"serif\">Sarah &#038; Jane &#8212; a new job<\/h2>\n        <p>Listen to Sarah talking to her friend, Jane, about a new job. For questions 11&#8211;15, tick A, B or C. <b>Example:<\/b> Sarah&#8217;s boss wants a new &#8594; <b>C secretary<\/b>.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"587\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 3<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts3\">&#128220; Transcript<\/button>\n    <\/div>\n    <div class=\"q-list\" id=\"part3List\"><\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts3\">\n      <div class=\"ts-head\" data-toggle=\"ts3\"><span>&#128220; Part 3 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p>Jane: 368879. Sarah: Jane? It&#8217;s Sarah. Are you still looking for a job? Jane: Yes, I am actually.<br>\nSarah: Well, my boss, who&#8217;s the sales manager, needs a new secretary. (example = C secretary)<br>\nJane: Oh, well, tell me something about the job. Sarah: Well, it&#8217;s a full-time job, five days a week. Jane: What time do you start in the morning? Sarah: <b>At nine o&#8217;clock.<\/b> You can catch the eight thirty train with me. (Q11 = C 9.00)<br>\nJane: And what&#8217;s the pay like? I got a hundred and eighty pounds a week in my last job. Sarah: Oh, you can earn more here. It&#8217;s six pounds an hour, so that&#8217;s about <b>two hundred and ten pounds a week<\/b>. (Q12 = C &#163;210)<br>\nJane: What do you do for lunch, Sarah? Do you take sandwiches? Sarah: No, we go to a little <b>caf&#233; near the park<\/b>. (Q13 = A caf&#233;)<br>\nJane: And how many weeks&#8217; holiday do you have? Sarah: Well, I have four weeks, some people have five, but when you start, Jane, <b>you only have three<\/b>. (Q14 = A 3 weeks)<br>\nJane: Shall I phone the sales manager? Sarah: Yes, why not? His name&#8217;s Mr <b>Fawcett. F-A-W-C-E-T-T.<\/b> (Q15 = B Fawcett)<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PART 4 -->\n<section class=\"part-section\" id=\"part4\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">4<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 16&#8211;20 &#183; 14:28 in audio<\/span>\n        <h2 class=\"serif\">Phone call to a language school<\/h2>\n        <p>You will hear a student telephoning a school. Listen and complete the notes (16&#8211;20). You will hear the conversation twice.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"868\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 4<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts4\">&#128220; Transcript<\/button>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>&#128211; NOTEBOOK &#8212; International Language School<\/h4>\n      <div class=\"form-row\"><label>Name of school:<\/label><span style=\"font-weight:600\">International Language School<\/span><\/div>\n      <div class=\"form-row\"><label><b>16.<\/b> Next course begins &#8212; Day:<\/label><input class=\"input-blank\" data-q=\"16\" type=\"text\" placeholder=\"day of the week\"><button class=\"show-ans-btn\" data-show=\"16\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>17.<\/b> Date: 3rd of<\/label><input class=\"input-blank\" data-q=\"17\" type=\"text\" placeholder=\"month\"><button class=\"show-ans-btn\" data-show=\"17\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>18.<\/b> Classes begin at:<\/label><input class=\"input-blank\" data-q=\"18\" type=\"text\" placeholder=\"e.g. 9.15\"><button class=\"show-ans-btn\" data-show=\"18\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>19.<\/b> Address: ___ London Road<\/label><input class=\"input-blank\" data-q=\"19\" type=\"text\" placeholder=\"number\"><button class=\"show-ans-btn\" data-show=\"19\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>20.<\/b> Near:<\/label><input class=\"input-blank\" data-q=\"20\" type=\"text\" placeholder=\"place\"><button class=\"show-ans-btn\" data-show=\"20\">&#128065; Show<\/button><\/div>\n    <\/div>\n\n    <div class=\"notes-pad\">\n      <label>&#9999;&#65039; My notes for Part 4 (not graded)<\/label>\n      <textarea placeholder=\"Take notes while listening...\"><\/textarea>\n    <\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts4\">\n      <div class=\"ts-head\" data-toggle=\"ts4\"><span>&#128220; Part 4 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p>Male: Good morning. International Language School. Can I help you? Female: Yes, please, I&#8217;d like some information about your school. Male: Certainly. What do you want to know?<br>\nFemale: Well, first, what day does the next course begin? Male: Well, our courses always begin on the <b>first Monday<\/b> of every month. Let me see, the next course begins on the <b>third of January<\/b>. (Q16 = Monday &#183; Q17 = January)<br>\nFemale: That&#8217;s next week. And what time do classes start? Male: Well, they begin at a <b>quarter past nine<\/b> so you should be here a little earlier, at about nine o&#8217;clock. (Q18 = 9.15)<br>\nFemale: And I don&#8217;t have the address. Could you give it to me, please? Male: Yes, the school is at <b>57 London Road<\/b>. (Q19 = 57)<br>\nFemale: Could you tell me where London Road is, please? Male: Yes, it&#8217;s a long road and we&#8217;re quite near the <b>station<\/b>. (Q20 = (the) station)<br>\nFemale: OK. Thank you very much for your help. Male: You&#8217;re welcome.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PART 5 -->\n<section class=\"part-section\" id=\"part5\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">5<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 21&#8211;25 &#183; 17:51 in audio<\/span>\n        <h2 class=\"serif\">Tour guide &#8212; a town in Scotland<\/h2>\n        <p>You will hear a tour guide talking about a town in Scotland. Listen and complete the notes (21&#8211;25). You will hear the information twice.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"part-actions\">\n      <button class=\"act-pill\" data-time=\"1071\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"\/><\/svg> Replay Part 5<\/button>\n      <button class=\"act-pill ts-toggle\" data-target=\"ts5\">&#128220; Transcript<\/button>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>&#128221; NOTES &#8212; Town in Scotland<\/h4>\n      <div class=\"form-row\"><label>Guide&#8217;s name:<\/label><span style=\"font-weight:600\">Jim<\/span><\/div>\n      <div class=\"form-row\"><label><b>21.<\/b> Banks open from:<\/label><input class=\"input-blank\" data-q=\"21\" type=\"text\" placeholder=\"time\"><button class=\"show-ans-btn\" data-show=\"21\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>22.<\/b> to:<\/label><input class=\"input-blank\" data-q=\"22\" type=\"text\" placeholder=\"time\"><button class=\"show-ans-btn\" data-show=\"22\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>23.<\/b> Closed on:<\/label><input class=\"input-blank\" data-q=\"23\" type=\"text\" placeholder=\"day\"><button class=\"show-ans-btn\" data-show=\"23\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>24.<\/b> Bus to city centre &#8212; number:<\/label><input class=\"input-blank\" data-q=\"24\" type=\"text\" placeholder=\"number\"><button class=\"show-ans-btn\" data-show=\"24\">&#128065; Show<\/button><\/div>\n      <div class=\"form-row\"><label><b>25.<\/b> cost:<\/label><input class=\"input-blank\" data-q=\"25\" type=\"text\" placeholder=\"price\"><button class=\"show-ans-btn\" data-show=\"25\">&#128065; Show<\/button><\/div>\n    <\/div>\n\n    <div class=\"notes-pad\">\n      <label>&#9999;&#65039; My notes for Part 5 (not graded)<\/label>\n      <textarea placeholder=\"Take notes while listening...\"><\/textarea>\n    <\/div>\n\n    <div class=\"transcript-card collapsed\" id=\"ts5\">\n      <div class=\"ts-head\" data-toggle=\"ts5\"><span>&#128220; Part 5 transcript<\/span><span class=\"chev\">&#9662;<\/span><\/div>\n      <div class=\"ts-body\">\n<p>Guide: Good morning and welcome to Scotland. My name is <b>Jim<\/b> and I am here to help you. I want to tell you a few things which you might find useful.<br>\nFirstly, the banks. They&#8217;re open from <b>nine thirty<\/b> in the morning until <b>four o&#8217;clock<\/b> in the afternoon. That&#8217;s nine thirty until four. (Q21 = 9.30 &#183; Q22 = 4.00)<br>\nThey&#8217;re open every day <b>except Sunday<\/b>. But on Sunday you can change money in the hotel. (Q23 = Sunday)<br>\nNext, the buses. You can take a bus from the hotel to the city centre. It&#8217;s the number <b>twenty-one<\/b>. There are buses every fifteen minutes so you won&#8217;t have to wait long. (Q24 = 21)<br>\nYou&#8217;ll find the bus stop just outside the hotel. A ticket to the city centre costs <b>sixty pence<\/b>. (Q25 = 60p)<br>\nFinally, tonight we&#8217;re having a party for you in the Restaurant. I hope I&#8217;ll see you all there. Thank you.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- SUBMIT PANEL AT BOTTOM -->\n<div class=\"wrap\">\n  <div class=\"submit-panel\">\n    <h3>&#127919; Finished all 25 questions?<\/h3>\n    <p class=\"intro\">Submit to grade your whole test, OR you&#8217;ve already used &#128065; Show Answer on each question.<\/p>\n    <div class=\"sp-buttons\">\n      <button class=\"btn-submit-big\" id=\"submitBtn\">\n        <svg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n        Submit &amp; Grade All\n      <\/button>\n      <button class=\"btn-reset-big\" id=\"resetBtn\">&#128260; Reset Test<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>&#127911; Your KET 1 Listening &#8212; Test 2 score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/25<\/div>\n    <p id=\"resultsMsg\">Great work!<\/p>\n    <div class=\"score-parts\" id=\"scoreParts\"><\/div>\n  <\/div>\n<\/div>\n\n<footer class=\"footer\">\n  <div class=\"wrap\">\n    <p>&#169; 2026 All English 4U &#183; <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge-ket-2-test-1-rw\/\">KET 2 Test 1 Reading &amp; Writing<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/vi\/contact\/\">Li\u00ean h\u1ec7<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewp2YXIgaGRyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZHInKTsKZnVuY3Rpb24gc2V0U29saWQoKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxzZXRTb2xpZCx7cGFzc2l2ZTp0cnVlfSk7c2V0U29saWQoKTsKCnZhciBoYW1iPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoYW1iJyksZHJhd2VyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcmF3ZXInKSxkQ2xvc2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlckNsb3NlJyk7CmlmKGhhbWIpaGFtYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LmFkZCgnb3BlbicpfSk7CmlmKGRDbG9zZSlkQ2xvc2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7ZHJhd2VyLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKX0pOwppZihkcmF3ZXIpZHJhd2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXtpZihlLnRhcmdldD09PWRyYXdlcilkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CgovLyBZb3VUdWJlIEFQSQp2YXIgeXRSZWFkeT1mYWxzZSwgeXRQbGF5ZXI9bnVsbDsKdmFyIHRhZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgdGFnLnNyYz0naHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7CmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTsKd2luZG93Lm9uWW91VHViZUlmcmFtZUFQSVJlYWR5PWZ1bmN0aW9uKCl7CiAgeXRQbGF5ZXI9bmV3IFlULlBsYXllcigneXRQbGF5ZXInLHtldmVudHM6e29uUmVhZHk6ZnVuY3Rpb24oKXt5dFJlYWR5PXRydWV9fX0pOwp9OwpmdW5jdGlvbiB5dFNlZWsoc2VjKXsKICBpZih5dFJlYWR5KXsgeXRQbGF5ZXIuc2Vla1RvKHNlYywgdHJ1ZSk7IHl0UGxheWVyLnBsYXlWaWRlbygpOyB9CiAgZWxzZXsgdmFyIGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3l0UGxheWVyJyk7IGYuc3JjPWYuc3JjLnNwbGl0KCc\/JylbMF0rJz9lbmFibGVqc2FwaT0xJmxpc3Q9UExtbUV4OTdXZFAxUVFVcXhTb0VkalVFMWdWZHhxRThDZSZyZWw9MCZhdXRvcGxheT0xJnN0YXJ0PScrc2VjOyB9Cn0KZnVuY3Rpb24geXRQYXVzZSgpeyBpZih5dFJlYWR5KXl0UGxheWVyLnBhdXNlVmlkZW8oKTsgfQpmdW5jdGlvbiB5dFBsYXkoKXsgaWYoeXRSZWFkeSl5dFBsYXllci5wbGF5VmlkZW8oKTsgfQpmdW5jdGlvbiB5dFJld2luZCgpeyBpZih5dFJlYWR5KXsgdmFyIHQ9eXRQbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKTsgeXRQbGF5ZXIuc2Vla1RvKE1hdGgubWF4KDAsdC0xMCksdHJ1ZSk7IH0gfQpmdW5jdGlvbiB5dFJhdGUocil7IGlmKHl0UmVhZHkpeXRQbGF5ZXIuc2V0UGxheWJhY2tSYXRlKHIpOyB9Cgpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanVtcC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpewogIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgdD1wYXJzZUludChiLmRhdGFzZXQudGltZSk7CiAgICB5dFNlZWsodCk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanVtcC1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyl9KTsKICAgIGIuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICBpZihiLmRhdGFzZXQucGFydClpZihiLmRhdGFzZXQucGFydCE9PSdpbnRybycpewogICAgICB2YXIgc2VjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0JytiLmRhdGFzZXQucGFydCk7CiAgICAgIGlmKHNlYylzZWMuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICAgIH0KICB9KTsKfSk7CmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hY3QtcGlsbFtkYXRhLXRpbWVdJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpeyB5dFNlZWsocGFyc2VJbnQoYi5kYXRhc2V0LnRpbWUpKTsgfSk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuUGF1c2UnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycseXRQYXVzZSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5QbGF5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHl0UGxheSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5SZXdpbmQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycseXRSZXdpbmQpOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuU2xvd2VyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7eXRSYXRlKDAuNzUpfSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Ob3JtYWwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXt5dFJhdGUoMSl9KTsKCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cy10b2dnbGUsIC50cy1oZWFkJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIHRhcmdldD1iLmRhdGFzZXQudGFyZ2V0fHxiLmRhdGFzZXQudG9nZ2xlOwogICAgaWYoIXRhcmdldCl7IHZhciBjYXJkPWIuY2xvc2VzdCgnLnRyYW5zY3JpcHQtY2FyZCcpOyBpZihjYXJkKXRhcmdldD1jYXJkLmlkOyB9CiAgICB2YXIgY2FyZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpOwogICAgaWYoY2FyZCljYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NvbGxhcHNlZCcpOwogIH0pOwp9KTsKCi8vID09PT09IERBVEEgPT09PT0KLy8gUGFydCAxOiBpbWFnZS1NQ1EgKGltYWdlIGluc2VydGVkIHZpYSBkYXRhIFVSTCBwbGFjZWhvbGRlcikKdmFyIFAxID0gWwogIHtuOjEsIHE6J1doYXQgaXMgSm9obiBnb2luZyB0byBkbyB0b25pZ2h0PycsIGltZzonaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L2sxdDJfcTEuanBnJywgb3B0czpbWydBJywnZ28gc3dpbW1pbmcnXSxbJ0InLCdyaWRlIGhpcyBiaWN5Y2xlJ10sWydDJywncGxheSBmb290YmFsbCddXSwgYW5zOidDJ30sCiAge246MiwgcToiV2hpY2ggaXMgQmVuJ3MgZmFtaWx5PyIsIGltZzonaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L2sxdDJfcTIuanBnJywgb3B0czpbWydBJywnUGljdHVyZSBBJ10sWydCJywnUGljdHVyZSBCJ10sWydDJywnUGljdHVyZSBDJ11dLCBhbnM6J0EnfSwKICB7bjozLCBxOidXaGljaCBiYWcgZG9lcyB0aGUgd29tYW4gYnV5PycsIGltZzonaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L2sxdDJfcTMuanBnJywgb3B0czpbWydBJywnc2hvdWxkZXIgYmFnIChzcXVhcmUpJ10sWydCJywnZm9sZGVkIGJhZyddLFsnQycsJ3JvdW5kIGJhZyddXSwgYW5zOidDJ30sCiAge246NCwgcTonSG93IG11Y2ggZGlkIHRoZSB3b21hbiBwYXkgZm9yIHRoZSBhcHBsZXM\/JywgaW1nOidodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDYvazF0Ml9xNC5qcGcnLCBvcHRzOltbJ0EnLCczMHAnXSxbJ0InLCczNXAnXSxbJ0MnLCc0MHAnXV0sIGFuczonQSd9LAogIHtuOjUsIHE6J1doYXQgdGltZSBkb2VzIHRoZSBmaWxtIHN0YXJ0PycsIGltZzonaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L2sxdDJfcTUuanBnJywgb3B0czpbWydBJywncXVhcnRlciBwYXN0IGVpZ2h0ICg4OjE1KSddLFsnQicsJ0Nsb2NrIEInXSxbJ0MnLCdDbG9jayBDJ11dLCBhbnM6J0EnfSwKXTsKCi8vIFBhcnQgMjogbWF0Y2hpbmcgKHBlb3BsZSBcdTIxOTIgcGxhY2VzIEEtSCkKdmFyIFAyID0gWwogIHtuOjYsICBwZXJzb246J1RlbGV2aXNpb24gcm9vbScsIGFuczonSCcsIHdoeToiXCJzb21ldGhpbmcgbW9yZSBpbnRlcmVzdGluZyBcdTIwMjYgYSBsaWdodCB5ZWxsb3cgaXMgYWxsIHJpZ2h0XCIgKEggPSBsaWdodCB5ZWxsb3cpIn0sCiAge246NywgIHBlcnNvbjonRmlyc3QgZmxvb3IgYmVkcm9vbXMnLCBhbnM6J0QnLCB3aHk6IlwidGhlIGN1cnRhaW5zIGFyZSBkYXJrIGdyZWVuLCBzbyB0aGUgd2FsbHMgc2hvdWxkIGJlIGxpZ2h0IGdyZWVuXCIgKEQgPSBsaWdodCBncmVlbikifSwKICB7bjo4LCAgcGVyc29uOidTZWNvbmQgZmxvb3IgYmVkcm9vbXMnLCBhbnM6J0InLCB3aHk6IlwiQSBuaWNlIGxpZ2h0IGJsdWUgb24gdGhlIHNlY29uZCBmbG9vclwiIChCID0gbGlnaHQgYmx1ZSkifSwKICB7bjo5LCAgcGVyc29uOidPZmZpY2UnLCBhbnM6J0UnLCB3aHk6IlwiT2gsIG5vISBUaGF0IG11c3QgYmUgZ3JleVwiIChFID0gZ3JleSkifSwKICB7bjoxMCwgcGVyc29uOidLaXRjaGVuJywgYW5zOidGJywgd2h5OiJcIllvdSBjYW4gaGF2ZSByZWQgaW4gdGhlIGtpdGNoZW5cIiAoRiA9IHJlZCkifSwKXTsKCi8vIFBhcnQgMzogTUNRCnZhciBQMyA9IFsKICB7bjoxMSwgcTonU2FyYWggdXN1YWxseSBzdGFydHMgd29yayBhdCcsIG9wdHM6W1snQScsJzYuMDAnXSxbJ0InLCc4LjMwJ10sWydDJywnOS4wMCddXSwgYW5zOidDJ30sCiAge246MTIsIHE6J0luIHRoZSBuZXcgam9iLCBKYW5lIGNhbiBlYXJuJywgb3B0czpbWydBJywnXHUwMEEzMTYwIGEgd2VlayddLFsnQicsJ1x1MDBBMzE4MCBhIHdlZWsnXSxbJ0MnLCdcdTAwQTMyMTAgYSB3ZWVrJ11dLCBhbnM6J0MnfSwKICB7bjoxMywgcTonU2FyYWggaGFzIGx1bmNoJywgb3B0czpbWydBJywnaW4gYSBjYWZcdTAwRTknXSxbJ0InLCdpbiBhIHBhcmsnXSxbJ0MnLCdhdCBob21lJ11dLCBhbnM6J0EnfSwKICB7bjoxNCwgcTonSW4gdGhlIG5ldyBqb2IsIEphbmUgY2FuIGhhdmUnLCBvcHRzOltbIkEiLCIzIHdlZWtzJyBob2xpZGF5Il0sWyJCIiwiNCB3ZWVrcycgaG9saWRheSJdLFsiQyIsIjUgd2Vla3MnIGhvbGlkYXkiXV0sIGFuczonQSd9LAogIHtuOjE1LCBxOiJUaGUgbWFuYWdlcidzIG5hbWUgaXMgTXIiLCBvcHRzOltbJ0EnLCdGYXdzZXQnXSxbJ0InLCdGYXdjZXR0J10sWydDJywnRmF1c2V0dCddXSwgYW5zOidCJ30sCl07CgovLyBQYXJ0IDQgaW5wdXRzCnZhciBQNEFucyA9IHsKICAxNjp7YWNjZXB0ZWQ6Wydtb25kYXknLCdtb24nLCdtb24uJ10sIGRpc3BsYXk6J01vbmRheSd9LAogIDE3OnthY2NlcHRlZDpbJ2phbnVhcnknLCdqYW4nLCdqYW4uJywnM3JkIGphbnVhcnknLCdqYW51YXJ5IDNyZCddLCBkaXNwbGF5OidKYW51YXJ5J30sCiAgMTg6e2FjY2VwdGVkOlsnOS4xNScsJzk6MTUnLCdxdWFydGVyIHBhc3QgbmluZScsJ25pbmUgZmlmdGVlbicsJzkxNScsJzkuMTVhbScsJzkuMTUgYS5tLicsJzkuMTVhbS4nLCdxdWFydGVyIHBhc3QgOScsJzkgMTUnXSwgZGlzcGxheTonOS4xNSAvIHF1YXJ0ZXIgcGFzdCBuaW5lJ30sCiAgMTk6e2FjY2VwdGVkOlsnNTcnLCdmaWZ0eS1zZXZlbicsJ2ZpZnR5IHNldmVuJ10sIGRpc3BsYXk6JzU3J30sCiAgMjA6e2FjY2VwdGVkOlsnc3RhdGlvbicsJ3RoZSBzdGF0aW9uJywnYSBzdGF0aW9uJywndHJhaW4gc3RhdGlvbicsJ3RoZSB0cmFpbiBzdGF0aW9uJywndGhlIHJhaWx3YXkgc3RhdGlvbicsJ3JhaWx3YXkgc3RhdGlvbiddLCBkaXNwbGF5OicodGhlKSBzdGF0aW9uJ30KfTsKLy8gUGFydCA1IGlucHV0cwp2YXIgUDVBbnMgPSB7CiAgMjE6e2FjY2VwdGVkOlsnOS4zMCcsJzk6MzAnLCdoYWxmIHBhc3QgbmluZScsJ25pbmUgdGhpcnR5JywnOTMwJywnbmluZS10aGlydHknLCdoYWxmIHBhc3QgOScsJzkgMzAnXSwgZGlzcGxheTonOS4zMCAvIGhhbGYgcGFzdCBuaW5lJ30sCiAgMjI6e2FjY2VwdGVkOlsiNC4wMCIsIjQ6MDAiLCJmb3VyIG8nY2xvY2siLCIxNi4wMCIsIjE2OjAwIiwiNCIsIjRwbSIsIjQgcG0iLCI0LjAwcG0iLCJmb3VyIG9jbG9jayIsImZvdXIgbyBjbG9jayJdLCBkaXNwbGF5OiI0LjAwIC8gZm91ciBvJ2Nsb2NrIC8gMTYuMDAifSwKICAyMzp7YWNjZXB0ZWQ6WydzdW5kYXknLCdzdW5kYXlzJywnc3VuZGF5KHMpJywnb24gc3VuZGF5Jywnb24gc3VuZGF5cyddLCBkaXNwbGF5OidTdW5kYXkocyknfSwKICAyNDp7YWNjZXB0ZWQ6WycyMScsJ3R3ZW50eS1vbmUnLCd0d2VudHkgb25lJywnbnVtYmVyIDIxJywnbm8gMjEnLCduby4gMjEnLCdidXMgMjEnXSwgZGlzcGxheTonMjEgLyB0d2VudHktb25lJ30sCiAgMjU6e2FjY2VwdGVkOlsnNjBwJywnNjAgcGVuY2UnLCc2MCcsJ3NpeHR5IHBlbmNlJywnc2l4dHkgcCcsJzYwIHAnLCdzaXh0eXBlbmNlJ10sIGRpc3BsYXk6JzYwcCAvIDYwIHBlbmNlJ30KfTsKCi8vID09PT09IFJlbmRlciA9PT09PQpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bJjw+IiddL2csZnVuY3Rpb24oYyl7cmV0dXJueycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90OycsIiciOicmIzM5Oyd9W2NdfSl9CgovLyBQYXJ0IDE6IGltYWdlLU1DUQooZnVuY3Rpb24oKXsKICB2YXIgbGlzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDFMaXN0Jyk7CiAgUDEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGRpdi5jbGFzc05hbWU9J3EtaXRlbSc7IGRpdi5pZD0ncScrcS5uOyBkaXYuZGF0YXNldC5xaWQ9cS5uOwogICAgdmFyIG9wdHNIVE1MPScnOwogICAgcS5vcHRzLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgIG9wdHNIVE1MICs9ICc8bGFiZWwgY2xhc3M9Im9wdCIgZGF0YS1sZXR0ZXI9Iicrb1swXSsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InEnK3EubisnIiB2YWx1ZT0iJytvWzBdKyciPjxzcGFuIGNsYXNzPSJvcHQtbGV0dGVyIj4nK29bMF0rJzwvc3Bhbj4gJytlc2Mob1sxXSkrJzwvbGFiZWw+JzsKICAgIH0pOwogICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJxLXRleHQiPjxiIGNsYXNzPSJxbiI+JytxLm4rJy48L2I+PHNwYW4+Jytlc2MocS5xKSsnPC9zcGFuPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InEtaW1nLXJvdyI+PGltZyBzcmM9IicrcS5pbWcrJyIgYWx0PSJRdWVzdGlvbiAnK3EubisnIGltYWdlIiBsb2FkaW5nPSJsYXp5Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJxLW9wdHMiPicrb3B0c0hUTUwrJzwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZlZWRiYWNrIj48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJxLWJvdHRvbSI+PGJ1dHRvbiBjbGFzcz0ic2hvdy1hbnMtYnRuIiBkYXRhLXNob3c9IicrcS5uKyciPlx1ezFGNDQxfSBTaG93IEFuc3dlcjwvYnV0dG9uPjwvZGl2Pic7CiAgICBsaXN0LmFwcGVuZENoaWxkKGRpdik7CiAgfSk7Cn0pKCk7CgovLyBQYXJ0IDIgbWF0Y2hpbmc6IGVhY2ggcGVyc29uIFx1MjE5MiBBLUgKKGZ1bmN0aW9uKCl7CiAgdmFyIGxpc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQyTGlzdCcpOwogIFAyLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuaWQ9J3EnK3EubjsgZGl2LmRhdGFzZXQucWlkPXEubjsKICAgIHZhciBvcHRzSFRNTD0nJzsKICAgIFsnQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnXS5mb3JFYWNoKGZ1bmN0aW9uKEwpewogICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK0wrJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9IicrTCsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytMKyc8L3NwYW4+PC9sYWJlbD4nOwogICAgfSk7CiAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzYyhxLnBlcnNvbikrJzwvc3Bhbj48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJxLW9wdHMiPicrb3B0c0hUTUwrJzwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZlZWRiYWNrIj48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJxLWJvdHRvbSI+PGJ1dHRvbiBjbGFzcz0ic2hvdy1hbnMtYnRuIiBkYXRhLXNob3c9IicrcS5uKyciPlx1ezFGNDQxfSBTaG93IEFuc3dlcjwvYnV0dG9uPjwvZGl2Pic7CiAgICBsaXN0LmFwcGVuZENoaWxkKGRpdik7CiAgfSk7Cn0pKCk7CgovLyBQYXJ0IDM6IHRleHQgTUNRCihmdW5jdGlvbigpewogIHZhciBsaXN0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0M0xpc3QnKTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZGl2LmNsYXNzTmFtZT0ncS1pdGVtJzsgZGl2LmlkPSdxJytxLm47IGRpdi5kYXRhc2V0LnFpZD1xLm47CiAgICB2YXIgb3B0c0hUTUw9Jyc7CiAgICBxLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgb3B0c0hUTUwgKz0gJzxsYWJlbCBjbGFzcz0ib3B0IiBkYXRhLWxldHRlcj0iJytvWzBdKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icScrcS5uKyciIHZhbHVlPSInK29bMF0rJyI+PHNwYW4gY2xhc3M9Im9wdC1sZXR0ZXIiPicrb1swXSsnPC9zcGFuPiAnK2VzYyhvWzFdKSsnPC9sYWJlbD4nOwogICAgfSk7CiAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InEtdGV4dCI+PGIgY2xhc3M9InFuIj4nK3EubisnLjwvYj48c3Bhbj4nK2VzYyhxLnEpKyc8L3NwYW4+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icS1vcHRzIj4nK29wdHNIVE1MKyc8L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmZWVkYmFjayI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icS1ib3R0b20iPjxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIj5cdXsxRjQ0MX0gU2hvdyBBbnN3ZXI8L2J1dHRvbj48L2Rpdj4nOwogICAgbGlzdC5hcHBlbmRDaGlsZChkaXYpOwogIH0pOwp9KSgpOwoKLy8gV2lyZSBvcHQgY2xpY2tzCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG9wdCl7CiAgb3B0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpbnB1dD1vcHQucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgIHZhciBncm91cD1vcHQucGFyZW50RWxlbWVudDsKICAgIGdyb3VwLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe28uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKX0pOwogICAgb3B0LmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICBpbnB1dC5jaGVja2VkPXRydWU7CiAgICB1cGRhdGVQcm9ncmVzcygpOwogIH0pOwp9KTsKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmlucHV0LWJsYW5rJykuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLHVwZGF0ZVByb2dyZXNzKTsKfSk7CgpmdW5jdGlvbiBnZXRNY3EocWlkKXt2YXIgcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJxJytxaWQrJyJdOmNoZWNrZWQnKTsgcmV0dXJuIHM\/cy52YWx1ZTpudWxsfQpmdW5jdGlvbiBnZXRJbnAocWlkKXt2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyk7IHJldHVybiBlbD9lbC52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLixdJC8sJycpOicnfQpmdW5jdGlvbiBhbnN3ZXJlZCgpewogIHZhciBuPTA7CiAgZm9yKHZhciBpPTE7aTw9MTU7aSsrKWlmKGdldE1jcShpKSluKys7CiAgZm9yKHZhciBqPTE2O2o8PTI1O2orKylpZihnZXRJbnAoaikpbisrOwogIHJldHVybiBuOwp9CmZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKCl7CiAgdmFyIGE9YW5zd2VyZWQoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2VyZWRDb3VudCcpLnRleHRDb250ZW50PWE7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dGaWxsJykuc3R5bGUud2lkdGg9KGEvMjUqMTAwKSsnJSc7Cn0KCi8vID09PT09IFNob3cgQW5zd2VyIHBlciBxdWVzdGlvbiA9PT09PQpkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXsKICB2YXIgYnRuPWUudGFyZ2V0LmNsb3Nlc3QoJy5zaG93LWFucy1idG4nKTsKICBpZighYnRuKXJldHVybjsKICB2YXIgcWlkPXBhcnNlSW50KGJ0bi5kYXRhc2V0LnNob3cpOwogIHNob3dBbnN3ZXJGb3IocWlkKTsKfSk7CgpmdW5jdGlvbiBzaG93QW5zd2VyRm9yKHFpZCl7CiAgLy8gTUNRIHBhcnRzIDEsIDIsIDMgKDEtMTUpCiAgaWYocWlkPD0xNSl7CiAgICB2YXIgaXRlbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncScrcWlkKTsKICAgIGlmKCFpdGVtKXJldHVybjsKICAgIHZhciBhbGxQYXJ0cz1bXS5jb25jYXQoUDEsUDIsUDMpOwogICAgdmFyIHE9YWxsUGFydHMuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7CiAgICBpZighcSlyZXR1cm47CiAgICB2YXIgY29ycmVjdEFucz1xLmFuczsKICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgncmV2ZWFsZWQnKTsKICAgIGl0ZW0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgIGlmKG8uZGF0YXNldC5sZXR0ZXI9PT1jb3JyZWN0QW5zKW8uY2xhc3NMaXN0LmFkZCgnY29ycmVjdC1vcHQnKTsKICAgIH0pOwogICAgdmFyIGZiPWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICBpZihmYil7ZmIudGV4dENvbnRlbnQ9J1x1ezFGNDQxfSBBbnN3ZXI6ICcrY29ycmVjdEFucysocS53aHk\/JyBcdTIwMTQgJytxLndoeTonJyk7fQogIH0gZWxzZSB7CiAgICAvLyBQYXJ0IDQvNSBpbnB1dHMKICAgIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsKICAgIHZhciBhbnNPYmogPSAocWlkPD0yMCk\/UDRBbnNbcWlkXTpQNUFuc1txaWRdOwogICAgaWYoIWVsfHwhYW5zT2JqKXJldHVybjsKICAgIGVsLnZhbHVlID0gYW5zT2JqLmRpc3BsYXk7CiAgICBlbC5jbGFzc0xpc3QuYWRkKCdyZXZlYWxlZCcpOwogICAgdXBkYXRlUHJvZ3Jlc3MoKTsKICB9Cn0KCi8vID09PT09IFN1Ym1pdCAmIEdyYWRlIEFMTCA9PT09PQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VibWl0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgdmFyIHNjb3JlPTAsIHBhcnRTY29yZXM9ezE6MCwyOjAsMzowLDQ6MCw1OjB9OwogIC8vIFBhcnRzIDErMyBNQ1EKICBbUDEsUDNdLmZvckVhY2goZnVuY3Rpb24ocGFydCl7CiAgICBwYXJ0LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICAgIHZhciB2PWdldE1jcShxLm4pLCBpdGVtPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxJytxLm4pOwogICAgICBpZighaXRlbSlyZXR1cm47CiAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgICAgaXRlbS5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICB2YXIgTD1vLmRhdGFzZXQubGV0dGVyOwogICAgICAgIGlmKEw9PT1xLmFucylvLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyk7CiAgICAgICAgaWYodj09PUwpaWYoTCE9PXEuYW5zKW8uY2xhc3NMaXN0LmFkZCgnd3Jvbmctb3B0Jyk7CiAgICAgIH0pOwogICAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYodj09PXEuYW5zKXtzY29yZSsrOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgZmIudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0IFx1MjAxNCAnK3EuYW5zOyBpZihxLm48PTUpcGFydFNjb3Jlc1sxXSsrOyBlbHNlIHBhcnRTY29yZXNbM10rKzt9CiAgICAgIGVsc2V7aXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0OiAnK3EuYW5zKyh2PycgKHlvdSBjaG9zZSAnK3YrJyknOicgKG5vIGFuc3dlciknKX0KICAgIH0pOwogIH0pOwogIC8vIFBhcnQgMiBtYXRjaGluZwogIFAyLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgdj1nZXRNY3EocS5uKSwgaXRlbT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncScrcS5uKTsKICAgIGlmKCFpdGVtKXJldHVybjsKICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgIGl0ZW0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgIHZhciBMPW8uZGF0YXNldC5sZXR0ZXI7CiAgICAgIGlmKEw9PT1xLmFucylvLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyk7CiAgICAgIGlmKHY9PT1MKWlmKEwhPT1xLmFucylvLmNsYXNzTGlzdC5hZGQoJ3dyb25nLW9wdCcpOwogICAgfSk7CiAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgIGlmKHY9PT1xLmFucyl7c2NvcmUrKzsgcGFydFNjb3Jlc1syXSsrOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgZmIudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0IFx1MjAxNCAnK3EuYW5zKycgKCcrcS53aHkrJyknO30KICAgIGVsc2V7aXRlbS5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBmYi50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0OiAnK3EuYW5zKycgKCcrcS53aHkrJyknfQogIH0pOwogIC8vIFBhcnQgNAogIE9iamVjdC5rZXlzKFA0QW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRJbnAocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFvPVA0QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlYWxlZCcpKXJldHVybjsgLy8gc2tpcCByZXZlYWxlZAogICAgdmFyIG9rPWFvLmFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgcGFydFNjb3Jlc1s0XSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FvLmRpc3BsYXl9CiAgfSk7CiAgLy8gUGFydCA1CiAgT2JqZWN0LmtleXMoUDVBbnMpLmZvckVhY2goZnVuY3Rpb24ocWlkKXsKICAgIHZhciB2PWdldElucChxaWQpLCBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKSwgYW89UDVBbnNbcWlkXTsKICAgIGlmKCFlbClyZXR1cm47CiAgICBpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVhbGVkJykpcmV0dXJuOwogICAgdmFyIG9rPWFvLmFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgcGFydFNjb3Jlc1s1XSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FvLmRpc3BsYXl9CiAgfSk7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY29yZU5vdycpLnRleHRDb250ZW50PXNjb3JlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaW5hbFNjb3JlJykudGV4dENvbnRlbnQ9c2NvcmU7CiAgdmFyIHBjdD1NYXRoLnJvdW5kKHNjb3JlLzI1KjEwMCk7CiAgdmFyIG1zZyA9IHBjdD49ODUgPyAnXHV7MUYzQzZ9IEV4Y2VsbGVudCEgWW91ciBsaXN0ZW5pbmcgaXMgc3Ryb25nLicKICAgICAgICAgIDogcGN0Pj03MCA\/ICdcdXsxRjQ0RH0gR29vZCBqb2IhIEEgZmV3IG1vcmUgdGVzdHMgYW5kIHlvdSB3aWxsIGJlIHJlYWR5LicKICAgICAgICAgIDogcGN0Pj01MCA\/ICdcdXsxRjREQX0gS2VlcCBwcmFjdGlzaW5nIFx1MjAxNCByZS1saXN0ZW4gdG8gdGhlIHBhcnRzIHdoZXJlIHlvdSBtaXNzZWQgYW5zd2Vycy4nCiAgICAgICAgICA6ICdcdXsxRjRBQX0gRG9uXHUyMDE5dCB3b3JyeS4gVHJ5IHNsb3dpbmcgdGhlIGF1ZGlvIChcdXsxRjQyMn0pIGFuZCB1c2UgdGhlIHRyYW5zY3JpcHQgdG8gc3R1ZHkuJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c01zZycpLnRleHRDb250ZW50PW1zZzsKICB2YXIgc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmVQYXJ0cycpOwogIHNwLmlubmVySFRNTCA9ICcnOwogIGZvcih2YXIgcD0xO3A8PTU7cCsrKXsKICAgIHNwLmlubmVySFRNTCArPSAnPGRpdiBjbGFzcz0ic3AtaXRlbSI+PGI+JytwYXJ0U2NvcmVzW3BdKycvNTwvYj5QYXJ0ICcrcCsnPC9kaXY+JzsKICB9CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzQmFubmVyJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidjZW50ZXInfSl9LDEyMCk7Cn0pOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgaWYoIWNvbmZpcm0oJ1Jlc2V0IGFsbCBhbnN3ZXJzPyBZb3VyIG5vdGVzIHdpbGwgYWxzbyBiZSBjbGVhcmVkLicpKXJldHVybjsKICBsb2NhdGlvbi5yZWxvYWQoKTsKfSk7Cn0pKCk7Cg=='));<\/script>","protected":false},"excerpt":{"rendered":"<p>All English 4U Grammar IELTS TOEFL Cambridge CELPIP Dictation Back Grammar IELTS TOEFL Cambridge CELPIP Dictation Cambridge English &#183; Key (KET) KET 1 &#8212; Test 2 Listening KET 1 Test 2 Listening &#8212; 5 parts, 25 questions. YouTube audio with jump-to-part buttons. Each question has its own Show Answer button + bottom submit panel for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-1868","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=1868"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1868\/revisions"}],"predecessor-version":[{"id":5947,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/1868\/revisions\/5947"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=1868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}