{"id":5612,"date":"2026-07-02T17:54:42","date_gmt":"2026-07-02T17:54:42","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip\/"},"modified":"2026-07-12T03:14:24","modified_gmt":"2026-07-12T03:14:24","slug":"celpip","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip\/","title":{"rendered":"CELPIP Practice Tests \u2013 Free Online CELPIP General Practice"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-hub\" id=\"clpHub\">\n<!-- ===================== 1 &#183; HERO ===================== --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-mesh\" aria-hidden=\"true\">\n<div class=\"clp-blob clp-blob--1\"><\/div>\n<div class=\"clp-blob clp-blob--2\"><\/div>\n<div class=\"clp-blob clp-blob--3\"><\/div>\n<\/p><\/div>\n<div class=\"clp-shape clp-shape--1\" data-par=\"0.07\" aria-hidden=\"true\">\n<div class=\"clp-shape-i\"><\/div>\n<\/div>\n<div class=\"clp-shape clp-shape--2\" data-par=\"-0.05\" aria-hidden=\"true\">\n<div class=\"clp-shape-i\"><\/div>\n<\/div>\n<div class=\"clp-shape clp-shape--3\" data-par=\"0.04\" aria-hidden=\"true\">\n<div class=\"clp-shape-i\"><\/div>\n<\/div>\n<div class=\"clp-leaves\" aria-hidden=\"true\">\n    <span class=\"clp-leaf\" style=\"left:6%;top:16%;animation-duration:13s\"><svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span><br \/>\n    <span class=\"clp-leaf\" style=\"left:30%;top:8%;animation-duration:16s;animation-delay:-5s\"><svg width=\"10\" height=\"10\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span><br \/>\n    <span class=\"clp-leaf\" style=\"left:52%;top:62%;animation-duration:12s;animation-delay:-8s\"><svg width=\"15\" height=\"15\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span><br \/>\n    <span class=\"clp-leaf\" style=\"left:70%;top:12%;animation-duration:18s;animation-delay:-3s\"><svg width=\"11\" height=\"11\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span><br \/>\n    <span class=\"clp-leaf\" style=\"left:88%;top:56%;animation-duration:14s;animation-delay:-10s\"><svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span><br \/>\n    <span class=\"clp-leaf\" style=\"left:14%;top:74%;animation-duration:17s;animation-delay:-6s\"><svg width=\"12\" height=\"12\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><\/span>\n  <\/div>\n<div class=\"clp-inner clp-hero-grid\">\n<div class=\"clp-stagger\">\n      <span class=\"clp-badge\"><br \/>\n        <svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 2l1.5 4.2 3.5-1.6-1.4 4 4.2-.4-3.2 3 4.4 2-4.8 1 1.4 4-4.2-1.4L12 21l-1.4-4.2-4.2 1.4 1.4-4-4.8-1 4.4-2-3.2-3 4.2.4-1.4-4 3.5 1.6z\"\/><\/svg><br \/>\n        CELPIP<br \/>\n      <\/span><\/p>\n<h1 class=\"clp-h1\">CELPIP Practice Tests<\/h1>\n<p class=\"clp-sub\">Practice on a pixel-perfect copy of the real CELPIP test &#8212; free, with instant scoring, built for busy adults.<\/p>\n<div class=\"clp-cta-row\">\n        <a class=\"clp-btn clp-btn--primary clp-pulse\" href=\"#clp-sets\" data-scroll>Start Set 1 &#8212; it&#8217;s free<br \/>\n          <svg width=\"16\" height=\"16\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><br \/>\n        <\/a><br \/>\n        <a class=\"clp-btn clp-btn--ghost\" href=\"#clp-skills\" data-scroll>View Exam Structure<\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"clp-mock-wrap clp-reveal\" style=\"transition-delay:180ms\">\n<div class=\"clp-mock\" aria-label=\"Preview of the CELPIP computer-delivered test interface\">\n<div class=\"clp-mock-top\">\n<div class=\"clp-mock-title\">Practice Test 1 &#8211; Listening Part 4:<br \/>Listening to a News Item<\/div>\n<p>          <button class=\"clp-mock-next\" type=\"button\">NEXT<br \/>\n            <svg width=\"11\" height=\"11\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><br \/>\n          <\/button>\n        <\/div>\n<div class=\"clp-mock-timer\">\n          <svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg><br \/>\n          Time remaining:&nbsp;<strong>3 minutes<\/strong>\n        <\/div>\n<div class=\"clp-mock-body\">\n<p class=\"clp-mock-instr\">Choose the best option to complete the statement.<\/p>\n<p class=\"clp-mock-q\">The city council has approved a plan to<br \/>\n            <select class=\"clp-mock-select\" aria-label=\"Answer choice\"><option>expand<\/option><option>expanding<\/option><option>expansion<\/option><option>expanded<\/option><\/select><br \/>\n            bus service to the suburbs by next spring.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 2 &#183; EXAM SNAPSHOT ===================== --><\/p>\n<section class=\"clp-sec clp-sec--chips\" data-screen-label=\"Exam snapshot\" aria-label=\"Exam snapshot\">\n<div class=\"clp-inner\">\n<div class=\"clp-chips clp-stagger\">\n<div class=\"clp-chip\"><span class=\"clp-chip-dot\" style=\"background:#2563EB\"><\/span><b data-n=\"4\">4<\/b>&nbsp;skills &#183; ~<b data-n=\"3\">3<\/b>&nbsp;hours<\/div>\n<div class=\"clp-chip\"><span class=\"clp-chip-dot\" style=\"background:#06B6D4\"><\/span>Listening&nbsp;<b data-n=\"47\">47<\/b>&#8242; &#183; <b data-n=\"38\">38<\/b>&nbsp;questions<\/div>\n<div class=\"clp-chip\"><span class=\"clp-chip-dot\" style=\"background:#0D9488\"><\/span>Reading&nbsp;<b data-n=\"55\">55<\/b>&#8242; &#183; <b data-n=\"38\">38<\/b>&nbsp;questions<\/div>\n<div class=\"clp-chip\"><span class=\"clp-chip-dot\" style=\"background:#6366F1\"><\/span>Writing&nbsp;<b data-n=\"53\">53<\/b>&#8242; &#183; <b data-n=\"2\">2<\/b>&nbsp;tasks<\/div>\n<div class=\"clp-chip\"><span class=\"clp-chip-dot\" style=\"background:#F97316\"><\/span>Speaking&nbsp;<b data-n=\"20\">20<\/b>&#8242; &#183; <b data-n=\"8\">8<\/b>&nbsp;tasks<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 3 &#183; SKILLS OVERVIEW ===================== --><\/p>\n<section class=\"clp-sec\" id=\"clp-skills\" data-screen-label=\"Skills overview\">\n<div class=\"clp-inner\">\n<div class=\"clp-sec-head clp-reveal\">\n      <span class=\"clp-kicker\">Exam Structure<\/span><\/p>\n<h2 class=\"clp-h2\">Four skills, one sitting<\/h2>\n<p class=\"clp-sec-sub\">One computer, one sitting, about three hours &#8212; here&#8217;s what each part asks of you.<\/p>\n<\/p><\/div>\n<div class=\"clp-skills clp-stagger\">\n<article class=\"clp-skill-card\">\n<div class=\"clp-skill-ico\" style=\"background:rgba(6,182,212,.12);color:#06B6D4\">\n          <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 13a8 8 0 0 1 16 0\"\/><rect x=\"3\" y=\"13\" width=\"4\" height=\"7\" rx=\"2\"\/><rect x=\"17\" y=\"13\" width=\"4\" height=\"7\" rx=\"2\"\/><\/svg>\n        <\/div>\n<h3 class=\"clp-skill-name\">Listening<\/h3>\n<div class=\"clp-skill-meta\"><span class=\"clp-mini\">6 parts<\/span><span class=\"clp-mini\">38 questions<\/span><span class=\"clp-mini\">47 min<\/span><\/div>\n<p class=\"clp-skill-parts\">Problem Solving &#183; Daily Life Conversation &#183; Information &#183; News Item &#183; Discussion &#183; Viewpoints &#8212; each audio plays once.<\/p>\n<p class=\"clp-skill-tip\">Train your ear on real test audio &#8212; walk in confident on test day.<\/p>\n<p>        <span class=\"clp-skill-badge clp-skill-badge--video\">PART 5 = VIDEO<\/span><br \/>\n      <\/article>\n<article class=\"clp-skill-card\">\n<div class=\"clp-skill-ico\" style=\"background:rgba(13,148,136,.12);color:#0D9488\">\n          <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 6c-2-1.6-4.5-2-8-2v14c3.5 0 6 .4 8 2 2-1.6 4.5-2 8-2V4c-3.5 0-6 .4-8 2z\"\/><path d=\"M12 6v14\"\/><\/svg>\n        <\/div>\n<h3 class=\"clp-skill-name\">Reading<\/h3>\n<div class=\"clp-skill-meta\"><span class=\"clp-mini\">4 parts<\/span><span class=\"clp-mini\">38 questions<\/span><span class=\"clp-mini\">55 min<\/span><\/div>\n<p class=\"clp-skill-parts\">Reading Correspondence &#183; Reading to Apply a Diagram &#183; Reading for Information &#183; Reading for Viewpoints.<\/p>\n<p class=\"clp-skill-tip\">Skim smarter, not harder &#8212; every passage type follows a pattern you can learn.<\/p>\n<p>        <span class=\"clp-skill-badge clp-skill-badge--soft\">ALL MULTIPLE CHOICE<\/span><br \/>\n      <\/article>\n<article class=\"clp-skill-card\">\n<div class=\"clp-skill-ico\" style=\"background:rgba(99,102,241,.12);color:#6366F1\">\n          <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20l1-4L16 5l3 3L8 19l-4 1z\"\/><path d=\"M13.5 7.5l3 3\"\/><\/svg>\n        <\/div>\n<h3 class=\"clp-skill-name\">Writing<\/h3>\n<div class=\"clp-skill-meta\"><span class=\"clp-mini\">2 tasks<\/span><span class=\"clp-mini\">53 min<\/span><\/div>\n<p class=\"clp-skill-parts\">Task 1: Writing an Email (27 min) &#183; Task 2: Responding to Survey Questions (26 min) &#8212; typed, with a live word count.<\/p>\n<p class=\"clp-skill-tip\">Get comfortable typing under the clock with model answers at 3 score bands.<\/p>\n<p>        <span class=\"clp-skill-badge clp-skill-badge--soft\">150&#8211;200 WORDS PER TASK<\/span><br \/>\n      <\/article>\n<article class=\"clp-skill-card\">\n<div class=\"clp-skill-ico\" style=\"background:rgba(249,115,22,.12);color:#F97316\">\n          <svg width=\"22\" height=\"22\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"3\" width=\"6\" height=\"11\" rx=\"3\"\/><path d=\"M5 11a7 7 0 0 0 14 0\"\/><path d=\"M12 18v3\"\/><\/svg>\n        <\/div>\n<h3 class=\"clp-skill-name\">Speaking<\/h3>\n<div class=\"clp-skill-meta\"><span class=\"clp-mini\">8 tasks<\/span><span class=\"clp-mini\">20 min<\/span><\/div>\n<p class=\"clp-skill-parts\">Giving Advice &#183; Personal Experience &#183; Describing a Scene &#183; Making Predictions &#183; Comparing and Persuading &#183; Dealing with a Difficult Situation &#183; Expressing Opinions &#183; Describing an Unusual Situation.<\/p>\n<p class=\"clp-skill-tip\">Rehearse against the real countdown until the mic feels like an old friend.<\/p>\n<p>        <span class=\"clp-skill-badge clp-skill-badge--soft\">PREP 30&#8211;60S &#183; RECORD 60&#8211;90S<\/span><br \/>\n      <\/article>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 4 &#183; TEST SETS GRID ===================== --><\/p>\n<section class=\"clp-sec\" id=\"clp-sets\" data-screen-label=\"Test sets\">\n<div class=\"clp-inner\">\n<div class=\"clp-sec-head clp-reveal\">\n      <span class=\"clp-kicker\">Practice Library<\/span><\/p>\n<h2 class=\"clp-h2\">Official Practice Library<\/h2>\n<p class=\"clp-sec-sub\">13 sets, two full tests in each &#8212; pick a skill and jump straight in. New tests go live as soon as they&#8217;re ready.<\/p>\n<\/p><\/div>\n<div class=\"clp-legend clp-reveal\">\n      <span><i class=\"clp-lg clp-lg--live\"><\/i>Available now<\/span><br \/>\n      <span><i class=\"clp-lg clp-lg--prog\"><\/i>In progress<\/span><br \/>\n      <span><i class=\"clp-lg clp-lg--soon\"><\/i>Coming soon<\/span>\n    <\/div>\n<div class=\"clp-sets clp-stagger\" id=\"clpSets\"><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 5 &#183; CLB TABLE ===================== --><\/p>\n<section class=\"clp-sec\" data-screen-label=\"CLB table\">\n<div class=\"clp-inner\">\n<div class=\"clp-sec-head clp-reveal\">\n      <span class=\"clp-kicker\">Score Conversion<\/span><\/p>\n<h2 class=\"clp-h2\">Score &amp; CLB Levels<\/h2>\n<p class=\"clp-sec-sub\">Your CELPIP level is your CLB level &#8212; no conversion math needed. For Express Entry, CLB 9 is the score that changes everything.<\/p>\n<\/p><\/div>\n<div class=\"clp-table-card clp-reveal\">\n<table class=\"clp-table\">\n<thead>\n<tr>\n<th>CELPIP Level<\/th>\n<th>CLB<\/th>\n<th>Typical use<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>10 &#8211; 12<\/td>\n<td>10 &#8211; 12<\/td>\n<td class=\"clp-todo\">Maximum CRS language points &#8212; top Express Entry advantage<\/td>\n<\/tr>\n<tr class=\"clp-row-hl\">\n<td>9<\/td>\n<td>9<span class=\"clp-ee\">EXPRESS ENTRY<\/span><\/td>\n<td class=\"clp-todo\">The benchmark score &#8212; unlocks top CRS points for Express Entry<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>8<\/td>\n<td class=\"clp-todo\">Competitive for many PNP streams &amp; strong CRS points<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>7<\/td>\n<td class=\"clp-todo\">Express Entry (FSW) minimum &#183; university PGWP requirement<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>6<\/td>\n<td class=\"clp-todo\">Meets several PNP streams &#183; above CEC minimum for TEER 2&#8211;3 jobs<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>5<\/td>\n<td class=\"clp-todo\">College PGWP requirement &#183; CEC minimum for TEER 2&#8211;3 jobs<\/td>\n<\/tr>\n<tr>\n<td>3 &#8211; 4<\/td>\n<td>3 &#8211; 4<\/td>\n<td class=\"clp-todo\">Below immigration thresholds &#8212; citizenship needs CLB 4 in speaking &amp; listening<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p class=\"clp-note clp-reveal\">* Typical-use guide based on IRCC program thresholds &#8212; always confirm the latest requirements on canada.ca.<\/p>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 6 &#183; FAQ ===================== --><\/p>\n<section class=\"clp-sec\" data-screen-label=\"FAQ\">\n<div class=\"clp-inner\">\n<div class=\"clp-sec-head clp-reveal\">\n      <span class=\"clp-kicker\">FAQ<\/span><\/p>\n<h2 class=\"clp-h2\">Frequently Asked Questions<\/h2>\n<p class=\"clp-sec-sub\">Quick answers to the things every CELPIP first-timer wonders about.<\/p>\n<\/p><\/div>\n<div class=\"clp-faq clp-stagger\">\n<div class=\"clp-faq-item\">\n        <button class=\"clp-faq-q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"clpFaq1\">Where can I take CELPIP?<br \/>\n          <span class=\"clp-faq-chev\"><svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/span><br \/>\n        <\/button><\/p>\n<div class=\"clp-faq-a\" id=\"clpFaq1\">\n<p class=\"clp-faq-a-in\">You can take CELPIP at test centres in most major Canadian cities, and the list of international locations grows every year. Availability changes often, so check the official CELPIP website before you plan. Tip: book two to three weeks ahead &#8212; weekend seats in big cities fill up fast.<\/p>\n<\/div><\/div>\n<div class=\"clp-faq-item\">\n        <button class=\"clp-faq-q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"clpFaq2\">How is CELPIP scored?<br \/>\n          <span class=\"clp-faq-chev\"><svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/span><br \/>\n        <\/button><\/p>\n<div class=\"clp-faq-a\" id=\"clpFaq2\">\n<p class=\"clp-faq-a-in\">Each skill gets its own CELPIP level from 1 to 12, and it maps straight onto a CLB level &#8212; so you always know exactly where you stand. Listening and Reading are machine-scored, while Writing and Speaking are assessed by trained raters. There is no overall average: immigration programs look at every skill on its own. Tip: lifting your weakest skill usually earns you more CRS points than polishing your strongest.<\/p>\n<\/div><\/div>\n<div class=\"clp-faq-item\">\n        <button class=\"clp-faq-q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"clpFaq3\">How is CELPIP different from IELTS?<br \/>\n          <span class=\"clp-faq-chev\"><svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/span><br \/>\n        <\/button><\/p>\n<div class=\"clp-faq-a\" id=\"clpFaq3\">\n<p class=\"clp-faq-a-in\">CELPIP happens entirely on a computer in one sitting of about three hours, uses everyday North American English, and records your Speaking answers &#8212; no face-to-face interview. IRCC accepts CELPIP and IELTS General Training equally, so pick whichever suits you. Tip: if you type faster than you write by hand, CELPIP plays to your strengths.<\/p>\n<\/div><\/div>\n<div class=\"clp-faq-item\">\n        <button class=\"clp-faq-q\" type=\"button\" aria-expanded=\"false\" aria-controls=\"clpFaq4\">How long does it take to reach CLB 9?<br \/>\n          <span class=\"clp-faq-chev\"><svg width=\"13\" height=\"13\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/span><br \/>\n        <\/button><\/p>\n<div class=\"clp-faq-a\" id=\"clpFaq4\">\n<p class=\"clp-faq-a-in\">That depends on where you start. From around CLB 7 (&#8776; IELTS 6.0), most learners reach CLB 9 after two to four months of focused practice &#8212; Writing and Speaking usually deserve the most attention. Tip: one full timed practice test each week builds more exam stamina than daily untimed drills.<\/p>\n<\/div><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ===================== 7 &#183; FOOTER CTA ===================== --><\/p>\n<section class=\"clp-sec\" data-screen-label=\"Footer CTA\">\n<div class=\"clp-inner\">\n<div class=\"clp-cta-card clp-reveal\">\n<div class=\"clp-cta-in\">\n<h2>Get the 30-Day CELPIP Roadmap<\/h2>\n<p class=\"clp-cta-sub\">A clear plan for your next 30 days, plus a fresh practice set in your inbox every week &#8212; free, unsubscribe anytime.<\/p>\n<form class=\"clp-form\" id=\"clpForm\" novalidate action=\"\">\n          <input class=\"clp-input\" type=\"email\" name=\"email\" placeholder=\"Your email address\" autocomplete=\"email\" required><br \/>\n          <button class=\"clp-btn clp-btn--primary\" type=\"submit\">Send me the roadmap<\/button><br \/>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"vi\"\/><\/form>\n<p class=\"clp-form-msg\" id=\"clpFormMsg\" role=\"status\">\n<p>        <a class=\"clp-yt\" href=\"https:\/\/www.youtube.com\/@AllEnglish4U\" target=\"_blank\" rel=\"noopener\"><br \/>\n          <span class=\"clp-yt-ico\"><svg width=\"11\" height=\"11\" viewbox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M8 5v14l11-7z\"\/><\/svg><\/span><br \/>\n          Watch free lessons on YouTube<br \/>\n        <\/a>\n      <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<\/div>\n<p><script>eval(atob('CihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENFTFBJUCBIdWIgXHUyMDE0IEFsbEVuZ2xpc2g0VSBcdTAwYjcgVmFyaWFudCBBIChsaWdodCAmIGFpcnkpXG4gICBTdGFuZGFsb25lIHdpZGdldDogZXZlcnkgcnVsZSBzY29wZWQgdW5kZXIgLmNscC1odWIsXG4gICBubyBib2R5LWxldmVsIHN0eWxlcyAobGl2ZXMgaW5zaWRlIFdQIGNvbnRlbnQgY29sdW1uKS5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNscC1odWJ7XG4gIC0tY2xwLW5hdnk6IzA1MEUyMDstLWNscC1kYXJrOiMwQTE2Mjg7LS1jbHAtYjkwMDojMEQyMzUyOy0tY2xwLWI3MDA6IzEyNDVBODtcbiAgLS1jbHAtYjUwMDojMjU2M0VCOy0tY2xwLWI0MDA6IzNCODJGNjstLWNscC1iMjAwOiM5M0M1RkQ7LS1jbHAtYjEwMDojREJFQUZFO1xuICAtLWNscC1iNTA6I0VGRjZGRjstLWNscC10ZWFsOiMwRDk0ODg7LS1jbHAtY3lhbjojMDZCNkQ0Oy0tY2xwLWluZGlnbzojNjM2NkYxO1xuICAtLWNscC1ncmVlbjojMTBCOTgxOy0tY2xwLWdyZWVuNTA6I0VDRkRGNTstLWNscC1yb3NlOiNGNDNGNUU7LS1jbHAtb3JhbmdlOiNGOTczMTY7XG4gIC0tY2xwLXR4dDojMEYxNzJBOy0tY2xwLW11dGVkOiM0NzU1Njk7LS1jbHAtc3VidGxlOiM5NEEzQjg7LS1jbHAtbGluZTojRTJFOEYwO1xuICAtLWNscC1iZzojRjBGN0ZGOy0tY2xwLWJnMjojRjhGQUZGOy0tY2xwLWNyaW1zb246I0I0MkIzQztcbiAgLS1jbHAtcjE6NnB4Oy0tY2xwLXIyOjEwcHg7LS1jbHAtcjM6MTZweDstLWNscC1yNDoyMnB4Oy0tY2xwLXI1OjMycHg7XG4gIC0tY2xwLXNoMTowIDFweCAycHggcmdiYSgxMywzNSw4MiwuMDUpLDAgNnB4IDE4cHggcmdiYSgxMywzNSw4MiwuMDYpO1xuICAtLWNscC1zaDI6MCAycHggNHB4IHJnYmEoMTMsMzUsODIsLjA2KSwwIDE2cHggNDBweCByZ2JhKDEzLDM1LDgyLC4xMyk7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sJ1NlZ29lIFVJJyxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS1jbHAtdHh0KTtiYWNrZ3JvdW5kOnZhcigtLWNscC1iZyk7XG4gIGxpbmUtaGVpZ2h0OjEuNTU7Zm9udC1zaXplOjE2cHg7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWJvdHRvbTo3NnB4O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTtcbn1cbi5jbHAtaHViICp7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveH1cbi5jbHAtaW5uZXJ7bWF4LXdpZHRoOjExNDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlfVxuXG4vKiAtLS0tLS0tLS0tIFNjcm9sbCByZXZlYWwgLS0tLS0tLS0tLSAqL1xuLmNscC1yZXZlYWx7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDI0cHgpO3RyYW5zaXRpb246b3BhY2l0eSAuNTVzIGVhc2Utb3V0LHRyYW5zZm9ybSAuNTVzIGVhc2Utb3V0fVxuLmNscC1yZXZlYWwuY2xwLWlue29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX1cblxuLyogLS0tLS0tLS0tLSBCdXR0b25zIC0tLS0tLS0tLS0gKi9cbi5jbHAtYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjlweDtcbiAgbWluLWhlaWdodDo1MnB4O3BhZGRpbmc6MCAyNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIzKTtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtcbiAgZm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLW91dCxib3gtc2hhZG93IC4ycyBlYXNlLW91dCxiYWNrZ3JvdW5kIC4ycyBlYXNlLW91dCxib3JkZXItY29sb3IgLjJzIGVhc2Utb3V0fVxuLmNscC1idG46Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jbHAtYjQwMCk7b3V0bGluZS1vZmZzZXQ6MnB4fVxuLmNscC1idG4tLXByaW1hcnl7YmFja2dyb3VuZDp2YXIoLS1jbHAtYjUwMCk7Y29sb3I6I2ZmZjtib3gtc2hhZG93OjAgOHB4IDIwcHggcmdiYSgzNyw5OSwyMzUsLjI4KX1cbi5jbHAtYnRuLS1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY2xwLWI0MDApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpO2JveC1zaGFkb3c6MCAxNHB4IDMwcHggcmdiYSgzNyw5OSwyMzUsLjQpfVxuLmNscC1idG4tLXByaW1hcnk6YWN0aXZle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfVxuLmNscC1idG4tLWdob3N0e2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNyk7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWNscC1iMjAwKTtjb2xvcjp2YXIoLS1jbHAtYjcwMCl9XG4uY2xwLWJ0bi0tZ2hvc3Q6aG92ZXJ7YmFja2dyb3VuZDojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1jbHAtYjQwMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCk7Ym94LXNoYWRvdzp2YXIoLS1jbHAtc2gxKX1cbi5jbHAtcHVsc2V7YW5pbWF0aW9uOmNscFB1bHNlIDZzIGVhc2UtaW4tb3V0IGluZmluaXRlfVxuLmNscC1wdWxzZTpob3ZlcnthbmltYXRpb246bm9uZX1cbkBrZXlmcmFtZXMgY2xwUHVsc2V7MCUsODQlLDEwMCV7Ym94LXNoYWRvdzowIDhweCAyMHB4IHJnYmEoMzcsOTksMjM1LC4yOCl9OTIle2JveC1zaGFkb3c6MCAxMHB4IDM2cHggcmdiYSgzNyw5OSwyMzUsLjU1KX19XG5cbi8qIC0tLS0tLS0tLS0gSGVybyAtLS0tLS0tLS0tICovXG4uY2xwLWhlcm97cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzo2OHB4IDAgNjBweH1cbi5jbHAtaGVyby1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS4wNWZyIC45NWZyO2dhcDo1NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjt6LWluZGV4OjJ9XG4uY2xwLWJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7YmFja2dyb3VuZDp2YXIoLS1jbHAtY3JpbXNvbik7Y29sb3I6I2ZmZjtcbiAgZm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjE0ZW07cGFkZGluZzo4cHggMTVweDtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yNSl9XG4uY2xwLWJhZGdlIHN2Z3tmbGV4OjAgMCBhdXRvfVxuLmNscC1oMXtmb250LXNpemU6Y2xhbXAoMzZweCw0Ljh2dyw1NnB4KTtmb250LXdlaWdodDo4MDA7bGluZS1oZWlnaHQ6MS4wNztsZXR0ZXItc3BhY2luZzotLjAyZW07XG4gIGNvbG9yOnZhcigtLWNscC1iOTAwKTttYXJnaW46MjBweCAwIDE0cHh9XG4uY2xwLXN1Yntmb250LXNpemU6MTcuNXB4O2NvbG9yOnZhcigtLWNscC1tdXRlZCk7bWF4LXdpZHRoOjMwZW07bWFyZ2luLWJvdHRvbTozMHB4fVxuLmNscC1jdGEtcm93e2Rpc3BsYXk6ZmxleDtnYXA6MTRweDtmbGV4LXdyYXA6d3JhcH1cblxuLyogR3JhZGllbnQgbWVzaCArIGZsb2F0aW5nIHNoYXBlcyAqL1xuLmNscC1tZXNoe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0Oi0yNSUgLTEwJSAtMTAlIC0xMCU7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjB9XG4uY2xwLWJsb2J7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7ZmlsdGVyOmJsdXIoNzBweCk7b3BhY2l0eTouMzg7YW5pbWF0aW9uOmNscE1lc2ggMTZzIGVhc2UtaW4tb3V0IGluZmluaXRlLGNscEF1cm9yYSA4cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGV9XG4uY2xwLWJsb2ItLTF7d2lkdGg6NTIwcHg7aGVpZ2h0OjUyMHB4O2xlZnQ6LTYlO3RvcDotNCU7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLHZhcigtLWNscC1iNTAwKSx0cmFuc3BhcmVudCA2OCUpfVxuLmNscC1ibG9iLS0ye3dpZHRoOjQ2MHB4O2hlaWdodDo0NjBweDtyaWdodDotNCU7dG9wOjYlO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSx2YXIoLS1jbHAtY3lhbiksdHJhbnNwYXJlbnQgNjglKTthbmltYXRpb24tZHVyYXRpb246MThzO2FuaW1hdGlvbi1kZWxheTotNnN9XG4uY2xwLWJsb2ItLTN7d2lkdGg6NDIwcHg7aGVpZ2h0OjQyMHB4O2xlZnQ6MzQlO2JvdHRvbTotMTglO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSx2YXIoLS1jbHAtaW5kaWdvKSx0cmFuc3BhcmVudCA2OCUpO2FuaW1hdGlvbi1kdXJhdGlvbjoyMXM7YW5pbWF0aW9uLWRlbGF5Oi0xMXN9XG5Aa2V5ZnJhbWVzIGNscE1lc2h7MCUsMTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCkgc2NhbGUoMSl9MzMle3RyYW5zZm9ybTp0cmFuc2xhdGUoNzBweCwtNDhweCkgc2NhbGUoMS4xNykgcm90YXRlKDhkZWcpfTY2JXt0cmFuc2Zvcm06dHJhbnNsYXRlKC00NnB4LDM0cHgpIHNjYWxlKC45Mikgcm90YXRlKC02ZGVnKX19XG5Aa2V5ZnJhbWVzIGNscEF1cm9yYXtmcm9te29wYWNpdHk6LjI2fXRve29wYWNpdHk6LjV9fVxuLmNscC1zaGFwZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZTt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19XG4uY2xwLXNoYXBlLWl7YW5pbWF0aW9uOmNscEZsb2F0IDlzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZX1cbi5jbHAtc2hhcGUtLTF7dG9wOjEwJTtsZWZ0OjQ2JX1cbi5jbHAtc2hhcGUtLTEgLmNscC1zaGFwZS1pe3dpZHRoOjcwcHg7aGVpZ2h0OjcwcHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1jbHAtYjIwMCk7Ym9yZGVyLXJhZGl1czo1MCV9XG4uY2xwLXNoYXBlLS0ye2JvdHRvbToxNCU7bGVmdDozJX1cbi5jbHAtc2hhcGUtLTIgLmNscC1zaGFwZS1pe3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7YmFja2dyb3VuZDp2YXIoLS1jbHAtYjEwMCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHAtcjIpO3RyYW5zZm9ybTpyb3RhdGUoMTRkZWcpO2FuaW1hdGlvbi1kdXJhdGlvbjoxMXM7YW5pbWF0aW9uLWRlbGF5Oi00c31cbi5jbHAtc2hhcGUtLTN7dG9wOjE2JTtyaWdodDoxLjUlfVxuLmNscC1zaGFwZS0tMyAuY2xwLXNoYXBlLWl7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXI6OHB4IHNvbGlkIHJnYmEoNiwxODIsMjEyLC4yOCk7Ym9yZGVyLXJhZGl1czo1MCU7YW5pbWF0aW9uLWR1cmF0aW9uOjEzczthbmltYXRpb24tZGVsYXk6LThzfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtmcm9te3RyYW5zZm9ybTp0cmFuc2xhdGVZKC05cHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDExcHgpfX1cblxuLyogLS0tLS0tLS0tLSBNaW5pLW1vY2sgb2YgQ0VMUElQIENBVCBpbnRlcmZhY2UgLS0tLS0tLS0tLSAqL1xuLmNscC1tb2NrLXdyYXB7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfVxuLmNscC1tb2Nre2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNscC1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yMyk7XG4gIGJveC1zaGFkb3c6dmFyKC0tY2xwLXNoMik7b3ZlcmZsb3c6aGlkZGVuO2FuaW1hdGlvbjpjbHBNb2NrRmxvYXQgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlfVxuQGtleWZyYW1lcyBjbHBNb2NrRmxvYXR7ZnJvbXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNnB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfX1cbi5jbHAtbW9jay10b3B7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTRweDtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHZhcigtLWNscC1iZzIpLHZhcigtLWNscC1iNTApKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7cGFkZGluZzoxMnB4IDE2cHh9XG4uY2xwLW1vY2stdGl0bGV7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWNscC1iOTAwKTtsaW5lLWhlaWdodDoxLjM1fVxuLmNscC1tb2NrLW5leHR7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNTAwKTtjb2xvcjojZmZmO1xuICBib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yMSk7cGFkZGluZzo4cHggMTNweDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6ODAwO1xuICBsZXR0ZXItc3BhY2luZzouMDZlbTtjdXJzb3I6cG9pbnRlcjtmbGV4OjAgMCBhdXRvO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnN9XG4uY2xwLW1vY2stbmV4dDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNscC1iNDAwKX1cbi5jbHAtbW9jay10aW1lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7cGFkZGluZzo5cHggMTZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7XG4gIGZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLWNscC1tdXRlZCl9XG4uY2xwLW1vY2stdGltZXIgc3Zne2NvbG9yOnZhcigtLWNscC1vcmFuZ2UpfVxuLmNscC1tb2NrLXRpbWVyIHN0cm9uZ3tjb2xvcjp2YXIoLS1jbHAtdHh0KTtmb250LXdlaWdodDo3MDB9XG4uY2xwLW1vY2stYm9keXtwYWRkaW5nOjIwcHggMjBweCAyNHB4fVxuLmNscC1tb2NrLWluc3Rye2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tY2xwLXN1YnRsZSk7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206MTRweH1cbi5jbHAtbW9jay1xe2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6Mjtjb2xvcjp2YXIoLS1jbHAtdHh0KX1cbi5jbHAtbW9jay1zZWxlY3R7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tY2xwLWI5MDApO1xuICBiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWNscC1iNDAwKTtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yMSk7cGFkZGluZzo2cHggMTBweDttYXJnaW46MCAzcHg7Y3Vyc29yOnBvaW50ZXJ9XG4uY2xwLW1vY2stc2VsZWN0OmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY2xwLWI0MDApO291dGxpbmUtb2Zmc2V0OjJweH1cblxuLyogLS0tLS0tLS0tLSBTZWN0aW9ucyAtLS0tLS0tLS0tICovXG4uY2xwLXNlY3ttYXJnaW4tdG9wOjc2cHg7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfVxuLmNscC1zZWMtaGVhZHttYXJnaW4tYm90dG9tOjMwcHg7bWF4LXdpZHRoOjY2MHB4fVxuLmNscC1raWNrZXJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBjb2xvcjp2YXIoLS1jbHAtYjUwMCk7bWFyZ2luLWJvdHRvbToxMHB4fVxuLmNscC1oMntmb250LXNpemU6Y2xhbXAoMjRweCwzLjJ2dywzMnB4KTtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtO2xpbmUtaGVpZ2h0OjEuMTg7Y29sb3I6dmFyKC0tY2xwLWI5MDApfVxuLmNscC1zZWMtc3Vie2ZvbnQtc2l6ZToxNS41cHg7Y29sb3I6dmFyKC0tY2xwLW11dGVkKTttYXJnaW4tdG9wOjEwcHh9XG5cbi8qIC0tLS0tLS0tLS0gRXhhbSBzbmFwc2hvdCBjaGlwcyAtLS0tLS0tLS0tICovXG4uY2xwLXNlYy0tY2hpcHN7bWFyZ2luLXRvcDozNHB4fVxuLmNscC1jaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmc6NnB4IDJweCAxNHB4O3Njcm9sbGJhci13aWR0aDpub25lfVxuLmNscC1jaGlwczo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfVxuLmNscC1jaGlwe3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21pbi1oZWlnaHQ6NDhweDtcbiAgYmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY2xwLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXI1KTtcbiAgYm94LXNoYWRvdzp2YXIoLS1jbHAtc2gxKTtwYWRkaW5nOjEycHggMTlweDtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1jbHAtbXV0ZWQpfVxuLmNscC1jaGlwIGJ7Y29sb3I6dmFyKC0tY2xwLWI5MDApO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9XG4uY2xwLWNoaXAtZG90e3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6NTAlO2ZsZXg6MCAwIGF1dG99XG4vKiAtLS0tLS0tLS0tIFNraWxscyBvdmVydmlldyAtLS0tLS0tLS0tICovXG4uY2xwLXNraWxsc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LDFmcik7Z2FwOjE4cHh9XG4uY2xwLXNraWxsLWNhcmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTNweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7XG4gIGJvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXI0KTtwYWRkaW5nOjI0cHg7Ym94LXNoYWRvdzp2YXIoLS1jbHAtc2gxKTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2Utb3V0LGJveC1zaGFkb3cgLjJzIGVhc2Utb3V0fVxuLmNscC1za2lsbC1jYXJkOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC00cHgpO2JveC1zaGFkb3c6dmFyKC0tY2xwLXNoMil9XG4uY2xwLXNraWxsLWljb3t3aWR0aDo0NnB4O2hlaWdodDo0NnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIzKTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyfVxuLmNscC1za2lsbC1uYW1le2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1jbHAtdHh0KX1cbi5jbHAtc2tpbGwtbWV0YXtkaXNwbGF5OmZsZXg7Z2FwOjdweDtmbGV4LXdyYXA6d3JhcH1cbi5jbHAtbWluaXtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNTApO2NvbG9yOnZhcigtLWNscC1iNzAwKTtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yMSk7XG4gIHBhZGRpbmc6NHB4IDlweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9XG4uY2xwLXNraWxsLXBhcnRze2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tY2xwLW11dGVkKTtsaW5lLWhlaWdodDoxLjY7ZmxleDoxfVxuLmNscC1za2lsbC1iYWRnZXthbGlnbi1zZWxmOmZsZXgtc3RhcnQ7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi4wN2VtO1xuICBwYWRkaW5nOjVweCAxMXB4O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXI1KX1cbi5jbHAtc2tpbGwtYmFkZ2UtLXZpZGVve2JhY2tncm91bmQ6dmFyKC0tY2xwLWNyaW1zb24pO2NvbG9yOiNmZmZ9XG4uY2xwLXNraWxsLWJhZGdlLS1zb2Z0e2JvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7Y29sb3I6dmFyKC0tY2xwLW11dGVkKX1cblxuLyogLS0tLS0tLS0tLSBUZXN0IHNldHMgZ3JpZCAtLS0tLS0tLS0tICovXG4uY2xwLWxlZ2VuZHtkaXNwbGF5OmZsZXg7Z2FwOjIwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luOi04cHggMCAyMnB4O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1jbHAtbXV0ZWQpfVxuLmNscC1sZWdlbmQgc3BhbntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fVxuLmNscC1sZ3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIxKTtmbGV4OjAgMCBhdXRvfVxuLmNscC1sZy0tbGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNTAwKX1cbi5jbHAtbGctLXByb2d7YmFja2dyb3VuZDp2YXIoLS1jbHAtYjUwKTtib3JkZXI6MS41cHggc29saWQgdmFyKC0tY2xwLWI1MDApfVxuLmNscC1sZy0tc29vbntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWNscC1saW5lKX1cbi5jbHAtc2V0c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDI1OHB4LDFmcikpO2dhcDoxNnB4fVxuLmNscC1zZXQtY2FyZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHAtcjMpO1xuICBwYWRkaW5nOjE2cHggMTZweCAxMnB4O2JveC1zaGFkb3c6dmFyKC0tY2xwLXNoMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2Utb3V0LGJveC1zaGFkb3cgLjJzIGVhc2Utb3V0fVxuLmNscC1zZXQtY2FyZDpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNHB4KTtib3gtc2hhZG93OnZhcigtLWNscC1zaDIpfVxuLmNscC1zZXQtdG9we2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMHB4O2dhcDo4cHh9XG4uY2xwLXNldC1uYW1le2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDVlbTtjb2xvcjp2YXIoLS1jbHAtYjkwMCl9XG4uY2xwLXNldC1jYXJkLS1zb29uIC5jbHAtc2V0LW5hbWV7Y29sb3I6dmFyKC0tY2xwLW11dGVkKX1cbi5jbHAtc2V0LXRhZ3tmb250LXNpemU6MTBweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjA5ZW07cGFkZGluZzo0cHggOXB4O2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXI1KTt3aGl0ZS1zcGFjZTpub3dyYXB9XG4uY2xwLXNldC10YWctLWxpdmV7YmFja2dyb3VuZDp2YXIoLS1jbHAtZ3JlZW41MCk7Y29sb3I6dmFyKC0tY2xwLWdyZWVuKX1cbi5jbHAtc2V0LXRhZy0tc29vbntib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNscC1saW5lKTtjb2xvcjp2YXIoLS1jbHAtc3VidGxlKX1cbi5jbHAtdGVzdC1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O3BhZGRpbmc6NnB4IDB9XG4uY2xwLXRlc3QtbGJse2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWNscC1tdXRlZCk7ZmxleDowIDAgYXV0b31cbi5jbHAtc2stcm93e2Rpc3BsYXk6ZmxleDtnYXA6NXB4fVxuLmNscC1za3t3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIyKTtib3JkZXI6MS41cHggc29saWQgdHJhbnNwYXJlbnQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo4MDA7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLW91dCxib3gtc2hhZG93IC4ycyBlYXNlLW91dCxiYWNrZ3JvdW5kIC4ycyBlYXNlLW91dH1cbi5jbHAtc2s6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jbHAtYjQwMCk7b3V0bGluZS1vZmZzZXQ6MnB4fVxuLmNscC1zay0tbGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNTAwKTtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCAzcHggMTBweCByZ2JhKDM3LDk5LDIzNSwuMyl9XG4uY2xwLXNrLS1saXZlOmhvdmVye3RyYW5zZm9ybTpzY2FsZSgxLjAzKTtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNDAwKTtib3gtc2hhZG93OjAgNnB4IDE2cHggcmdiYSgzNyw5OSwyMzUsLjQyKX1cbi5jbHAtc2stLXByb2d7YmFja2dyb3VuZDp2YXIoLS1jbHAtYjUwKTtib3JkZXItY29sb3I6dmFyKC0tY2xwLWI1MDApO2NvbG9yOnZhcigtLWNscC1iNzAwKX1cbi5jbHAtc2stLXByb2c6aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDMpfVxuLmNscC1zay0tc29vbntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1jbHAtbGluZSk7Y29sb3I6dmFyKC0tY2xwLXN1YnRsZSk7Y3Vyc29yOm5vdC1hbGxvd2VkfVxuXG4vKiAtLS0tLS0tLS0tIENMQiB0YWJsZSAtLS0tLS0tLS0tICovXG4uY2xwLXRhYmxlLWNhcmR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY2xwLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIzKTtcbiAgYm94LXNoYWRvdzp2YXIoLS1jbHAtc2gxKTtvdmVyZmxvdy14OmF1dG99XG4uY2xwLXRhYmxle3dpZHRoOjEwMCU7bWluLXdpZHRoOjU0MHB4O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtmb250LXNpemU6MTRweH1cbi5jbHAtdGFibGUgdGh7YmFja2dyb3VuZDp2YXIoLS1jbHAtYmcyKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7cGFkZGluZzoxM3B4IDIycHg7XG4gIHRleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LjEyZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLWNscC1zdWJ0bGUpfVxuLmNscC10YWJsZSB0ZHtwYWRkaW5nOjEycHggMjJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jbHAtbGluZSk7Y29sb3I6dmFyKC0tY2xwLW11dGVkKX1cbi5jbHAtdGFibGUgdHI6bGFzdC1jaGlsZCB0ZHtib3JkZXItYm90dG9tOjB9XG4uY2xwLXRhYmxlIHRkOmZpcnN0LWNoaWxke2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1jbHAtYjkwMCk7d2hpdGUtc3BhY2U6bm93cmFwfVxuLmNscC10YWJsZSB0ZDpudGgtY2hpbGQoMil7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWNscC10eHQpfVxuLmNscC1yb3ctaGwgdGR7YmFja2dyb3VuZDp2YXIoLS1jbHAtZ3JlZW41MCk7Y29sb3I6dmFyKC0tY2xwLXR4dCl9XG4uY2xwLWVle2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jbHAtZ3JlZW4pO2NvbG9yOiNmZmY7XG4gIGZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDhlbTtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHAtcjUpO3ZlcnRpY2FsLWFsaWduOjFweH1cbi5jbHAtdG9kb3tjb2xvcjp2YXIoLS1jbHAtc3VidGxlKTtmb250LXN0eWxlOml0YWxpY31cbi5jbHAtbm90ZXtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLWNscC1zdWJ0bGUpO21hcmdpbi10b3A6MTJweH1cblxuLyogLS0tLS0tLS0tLSBGQVEgLS0tLS0tLS0tLSAqL1xuLmNscC1mYXF7ZGlzcGxheTpncmlkO2dhcDoxMnB4O21heC13aWR0aDo4NDBweH1cbi5jbHAtZmFxLWl0ZW17YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY2xwLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIzKTtcbiAgYm94LXNoYWRvdzp2YXIoLS1jbHAtc2gxKTtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpib3gtc2hhZG93IC4ycyBlYXNlLW91dH1cbi5jbHAtZmFxLWl0ZW0uY2xwLW9wZW57Ym94LXNoYWRvdzp2YXIoLS1jbHAtc2gyKX1cbi5jbHAtZmFxLXF7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjU2cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTRweDtcbiAgcGFkZGluZzoxNnB4IDIwcHg7YmFja2dyb3VuZDpub25lO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO3RleHQtYWxpZ246bGVmdDtcbiAgZm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTUuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1jbHAtYjkwMCl9XG4uY2xwLWZhcS1xOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY2xwLWI0MDApO291dGxpbmUtb2Zmc2V0Oi0ycHh9XG4uY2xwLWZhcS1jaGV2e2ZsZXg6MCAwIGF1dG87d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWNscC1iNTApO1xuICBjb2xvcjp2YXIoLS1jbHAtYjcwMCk7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2Utb3V0fVxuLmNscC1vcGVuIC5jbHAtZmFxLWNoZXZ7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfVxuLmNscC1mYXEtYXttYXgtaGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246bWF4LWhlaWdodCAuM3MgZWFzZS1vdXR9XG4uY2xwLWZhcS1hLWlue3BhZGRpbmc6MCAyMHB4IDE4cHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFyKC0tY2xwLW11dGVkKX1cblxuLyogLS0tLS0tLS0tLSBGb290ZXIgQ1RBIC0tLS0tLS0tLS0gKi9cbi5jbHAtY3RhLWNhcmR7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6dmFyKC0tY2xwLWI5MDApO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXI1KTtcbiAgcGFkZGluZzo1OHB4IDI4cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2ZmZn1cbi5jbHAtY3RhLWNhcmQ6OmJlZm9yZXtjb250ZW50OlwiXCI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCg1NjBweCAzMDBweCBhdCAxMiUgLTEwJSxyZ2JhKDM3LDk5LDIzNSwuNSksdHJhbnNwYXJlbnQgNzAlKSxcbiAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoNDgwcHggMjgwcHggYXQgOTIlIDExNSUscmdiYSg2LDE4MiwyMTIsLjMyKSx0cmFuc3BhcmVudCA3MCUpfVxuLmNscC1jdGEtaW57cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjU2MHB4O21hcmdpbjowIGF1dG99XG4uY2xwLWN0YS1jYXJkIGgye2ZvbnQtc2l6ZTpjbGFtcCgyNXB4LDMuNHZ3LDMzcHgpO2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAxZW07bGluZS1oZWlnaHQ6MS4yfVxuLmNscC1jdGEtc3Vie2NvbG9yOnZhcigtLWNscC1iMjAwKTtmb250LXNpemU6MTUuNXB4O21hcmdpbjoxMnB4IDAgMjZweH1cbi5jbHAtZm9ybXtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcn1cbi5jbHAtaW5wdXR7ZmxleDoxIDEgMjUwcHg7bWluLWhlaWdodDo1MnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xwLXIyKTtwYWRkaW5nOjAgMThweDtcbiAgZm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1jbHAtdHh0KTtiYWNrZ3JvdW5kOiNmZmZ9XG4uY2xwLWlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jbHAtc3VidGxlKX1cbi5jbHAtaW5wdXQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jbHAtYjQwMCk7b3V0bGluZS1vZmZzZXQ6MnB4fVxuLmNscC1mb3JtLW1zZ3tkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMH1cbi5jbHAteXR7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWluLWhlaWdodDo0NHB4O21hcmdpbi10b3A6MjRweDtwYWRkaW5nOjlweCAxOXB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjI4KTtib3JkZXItcmFkaXVzOnZhcigtLWNscC1yNSk7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgZm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZS1vdXQsdHJhbnNmb3JtIC4ycyBlYXNlLW91dH1cbi5jbHAteXQ6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCl9XG4uY2xwLXl0LWljb3t3aWR0aDoyNnB4O2hlaWdodDoyNnB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTYpO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXJ9XG5cbi8qIC0tLS0tLS0tLS0gUHJlbWl1bSBtb3Rpb24gKHYyIHBvbGlzaCkgLS0tLS0tLS0tLSAqL1xuLmNscC1idG4gc3Zne3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLW91dH1cbi5jbHAtYnRuLS1wcmltYXJ5OmhvdmVyIHN2Z3t0cmFuc2Zvcm06dHJhbnNsYXRlWCgzcHgpfVxuLmNscC1sZWF2ZXN7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTtvdmVyZmxvdzpoaWRkZW59XG4uY2xwLWxlYWZ7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6dmFyKC0tY2xwLWNyaW1zb24pO29wYWNpdHk6LjEyO2FuaW1hdGlvbjpjbHBMZWFmIDEycyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGV9XG5Aa2V5ZnJhbWVzIGNscExlYWZ7ZnJvbXt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTE2cHgpIHJvdGF0ZSgtMTRkZWcpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMTRweCwyMHB4KSByb3RhdGUoMThkZWcpfX1cbkBzdXBwb3J0cyAoKC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQpIG9yIChiYWNrZ3JvdW5kLWNsaXA6dGV4dCkpe1xuICAuY2xwLWgxe2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDEwMGRlZyx2YXIoLS1jbHAtYjkwMCkgMCUsdmFyKC0tY2xwLWI5MDApIDQyJSx2YXIoLS1jbHAtYjUwMCkgNTAlLHZhcigtLWNscC1jeWFuKSA1NCUsdmFyKC0tY2xwLWI5MDApIDYyJSx2YXIoLS1jbHAtYjkwMCkgMTAwJSk7XG4gICAgYmFja2dyb3VuZC1zaXplOjI4MCUgMTAwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAlIDA7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6dGV4dDtiYWNrZ3JvdW5kLWNsaXA6dGV4dDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDthbmltYXRpb246Y2xwSDFTd2VlcCAxLjZzIGVhc2Utb3V0IC4yNXMgMSBib3RofVxufVxuQGtleWZyYW1lcyBjbHBIMVN3ZWVwe2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowJSAwfX1cbi5jbHAtY2hpcDo6YWZ0ZXJ7Y29udGVudDpcIlwiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEwNWRlZyx0cmFuc3BhcmVudCAzMiUscmdiYSgxNDcsMTk3LDI1MywuNCkgNTAlLHRyYW5zcGFyZW50IDY4JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEzMCUpfVxuLmNscC1jaGlwLmNscC1pbjo6YWZ0ZXJ7YW5pbWF0aW9uOmNscFNoZWVuIDFzIGVhc2Utb3V0IC40NXMgMSBmb3J3YXJkc31cbkBrZXlmcmFtZXMgY2xwU2hlZW57dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTMwJSl9fVxuLmNscC1za2lsbHN7cGVyc3BlY3RpdmU6MTAwMHB4fVxuLmNscC1za2lsbC1jYXJkLmNscC1pbiAuY2xwLXNraWxsLWljb3thbmltYXRpb246Y2xwQm91bmNlIC43cyBlYXNlLW91dCAuMzVzIDF9XG5Aa2V5ZnJhbWVzIGNscEJvdW5jZXswJSwxMDAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfTMwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtOHB4KX01NSV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMnB4KX03OCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTNweCl9fVxuLmNscC1yZXZlYWwuY2xwLWZsaXB7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDkwMHB4KSByb3RhdGVYKC0xNmRlZykgdHJhbnNsYXRlWSgyNnB4KTt0cmFuc2Zvcm0tb3JpZ2luOjUwJSAwfVxuLmNscC1yZXZlYWwuY2xwLWZsaXAuY2xwLWlue3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg5MDBweCkgcm90YXRlWCgwKSB0cmFuc2xhdGVZKDApfVxuLmNscC1zay0tbGl2ZXthbmltYXRpb246Y2xwQnJlYXRoZSAzLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlfVxuLmNscC1zay0tbGl2ZTpob3ZlcnthbmltYXRpb246bm9uZX1cbkBrZXlmcmFtZXMgY2xwQnJlYXRoZXswJSwxMDAle2JveC1zaGFkb3c6MCAzcHggMTBweCByZ2JhKDM3LDk5LDIzNSwuMyl9NTAle2JveC1zaGFkb3c6MCA1cHggMThweCByZ2JhKDM3LDk5LDIzNSwuNTUpfX1cbi5jbHAtdGFibGUtY2FyZC5jbHAtaW4gLmNscC1yb3ctaGx7YW5pbWF0aW9uOmNscFJvd1B1bHNlIDEuMXMgZWFzZS1pbi1vdXQgLjU1cyAxfVxuQGtleWZyYW1lcyBjbHBSb3dQdWxzZXswJSwxMDAle3RyYW5zZm9ybTpzY2FsZSgxKX00MCV7dHJhbnNmb3JtOnNjYWxlKDEuMDE0KX19XG4uY2xwLXRhYmxlLWNhcmQuY2xwLWluIC5jbHAtZWV7YW5pbWF0aW9uOmNscEVlUG9wIC41NXMgY3ViaWMtYmV6aWVyKC4zNCwxLjU2LC42NCwxKSAuNzVzIDEgYm90aH1cbkBrZXlmcmFtZXMgY2xwRWVQb3B7ZnJvbXt0cmFuc2Zvcm06c2NhbGUoLjQpO29wYWNpdHk6MH10b3t0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfX1cbi5jbHAtc2VjLWhlYWQ6OmJlZm9yZXtjb250ZW50OlwiXCI7ZGlzcGxheTpibG9jazt3aWR0aDo2NHB4O2hlaWdodDozcHg7Ym9yZGVyLXJhZGl1czoycHg7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLWNscC1iNTAwKSx2YXIoLS1jbHAtY3lhbikpO21hcmdpbi1ib3R0b206MTZweDtcbiAgdHJhbnNmb3JtOnNjYWxlWCgwKTt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQgY2VudGVyfVxuLmNscC1zZWMtaGVhZC5jbHAtaW46OmJlZm9yZXthbmltYXRpb246Y2xwRHJhdyAuN3MgZWFzZS1vdXQgLjE1cyAxIGZvcndhcmRzfVxuQGtleWZyYW1lcyBjbHBEcmF3e3Rve3RyYW5zZm9ybTpzY2FsZVgoMSl9fVxuLmNscC1za2lsbC10aXB7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWNscC1iNzAwKTtsaW5lLWhlaWdodDoxLjU1fVxuXG4vKiAtLS0tLS0tLS0tIFJlc3BvbnNpdmUgLS0tLS0tLS0tLSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6OTIwcHgpe1xuICAuY2xwLWhlcm97cGFkZGluZzo1MnB4IDAgNDhweH1cbiAgLmNscC1oZXJvLWdyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6NDBweH1cbiAgLmNscC1za2lsbHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLDFmcil9XG4gIC5jbHAtc2Vje21hcmdpbi10b3A6NjBweH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KXtcbiAgLmNscC1pbm5lcntwYWRkaW5nOjAgMThweH1cbiAgLmNscC1za2lsbHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn1cbiAgLmNscC1jdGEtY2FyZHtwYWRkaW5nOjQ0cHggMjBweH1cbiAgLmNscC1zaGFwZS0tMXtsZWZ0OjcyJX1cbn1cblxuLyogLS0tLS0tLS0tLSBSZWR1Y2VkIG1vdGlvbjoga2lsbCBhbGwgYW5pbWF0aW9uIC0tLS0tLS0tLS0gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upe1xuICAuY2xwLWh1YiAqe2FuaW1hdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fVxuICAuY2xwLXJldmVhbHtvcGFjaXR5OjEhaW1wb3J0YW50O3RyYW5zZm9ybTpub25lIWltcG9ydGFudH1cbiAgLmNscC1sZWFme2Rpc3BsYXk6bm9uZX1cbiAgLmNscC1jaGlwOjphZnRlcntkaXNwbGF5Om5vbmV9XG4gIC5jbHAtc2VjLWhlYWQ6OmJlZm9yZXt0cmFuc2Zvcm06c2NhbGVYKDEpIWltcG9ydGFudDthbmltYXRpb246bm9uZSFpbXBvcnRhbnR9XG59XG4vKlt2YXJpYW50LW92ZXJyaWRlc10qL1xuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKInVzZSBzdHJpY3QiOwooZnVuY3Rpb24oKXsKICB2YXIgUkVEVUNFRCA9IHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIpLm1hdGNoZXM7CgogIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIERBVEEgXHUyMDE0IGVkaXQgaGVyZSB0byBvcGVuIHNldHMvdGVzdHMsIG5vIG1hcmt1cCBjaGFuZ2VzIG5lZWRlZC4KICAgICBTa2lsbCBzdGF0ZXM6ICJsaXZlIiB8ICJwcm9ncmVzcyIgfCAic29vbiIKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICB2YXIgSFVCX0RBVEE9eyJzZXRzIjpbeyJuIjoxLCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjoyLCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjozLCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo0LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo1LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo2LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo3LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo4LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjo5LCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjoxMCwidGVzdHMiOlt7Im4iOjEsInNraWxscyI6eyJMIjoibGl2ZSIsIlIiOiJsaXZlIiwiVyI6ImxpdmUiLCJTIjoibGl2ZSJ9fSx7Im4iOjIsInNraWxscyI6eyJMIjoibGl2ZSIsIlIiOiJsaXZlIiwiVyI6ImxpdmUiLCJTIjoibGl2ZSJ9fV19LHsibiI6MTEsInRlc3RzIjpbeyJuIjoxLCJza2lsbHMiOnsiTCI6ImxpdmUiLCJSIjoibGl2ZSIsIlciOiJsaXZlIiwiUyI6ImxpdmUifX0seyJuIjoyLCJza2lsbHMiOnsiTCI6ImxpdmUiLCJSIjoibGl2ZSIsIlciOiJsaXZlIiwiUyI6ImxpdmUifX1dfSx7Im4iOjEyLCJ0ZXN0cyI6W3sibiI6MSwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19LHsibiI6Miwic2tpbGxzIjp7IkwiOiJsaXZlIiwiUiI6ImxpdmUiLCJXIjoibGl2ZSIsIlMiOiJsaXZlIn19XX0seyJuIjoxMywidGVzdHMiOlt7Im4iOjEsInNraWxscyI6eyJMIjoibGl2ZSIsIlIiOiJsaXZlIiwiVyI6ImxpdmUiLCJTIjoibGl2ZSJ9fSx7Im4iOjIsInNraWxscyI6eyJMIjoibGl2ZSIsIlIiOiJsaXZlIiwiVyI6ImxpdmUiLCJTIjoibGl2ZSJ9fV19XX07dmFyIFNLSUxMX1VSTFMgPSB7IjEtMS1TIjoiL2NlbHBpcC1zZXQtMS10ZXN0LTEtc3BlYWtpbmcvIiwiMS0yLVMiOiIvY2VscGlwLXNldC0xLXRlc3QtMi1zcGVha2luZy8iLCI3LTEtTCI6Ii9jZWxwaXAtc2V0LTctdGVzdC0xLWxpc3RlbmluZy8iLCI3LTItTCI6Ii9jZWxwaXAtc2V0LTctdGVzdC0yLWxpc3RlbmluZy8iLCI4LTEtTCI6Ii9jZWxwaXAtc2V0LTgtdGVzdC0xLWxpc3RlbmluZy8iLCI4LTItTCI6Ii9jZWxwaXAtc2V0LTgtdGVzdC0yLWxpc3RlbmluZy8iLCI5LTEtTCI6Ii9jZWxwaXAtc2V0LTktdGVzdC0xLWxpc3RlbmluZy8iLCI5LTItTCI6Ii9jZWxwaXAtc2V0LTktdGVzdC0yLWxpc3RlbmluZy8iLCIxMC0xLUwiOiIvY2VscGlwLXNldC0xMC10ZXN0LTEtbGlzdGVuaW5nLyIsIjEwLTItTCI6Ii9jZWxwaXAtc2V0LTEwLXRlc3QtMi1saXN0ZW5pbmcvIiwiMTEtMS1MIjoiL2NlbHBpcC1zZXQtMTEtdGVzdC0xLWxpc3RlbmluZy8iLCIxMS0yLUwiOiIvY2VscGlwLXNldC0xMS10ZXN0LTItbGlzdGVuaW5nLyIsIjEyLTEtTCI6Ii9jZWxwaXAtc2V0LTEyLXRlc3QtMS1saXN0ZW5pbmcvIiwiMTItMi1MIjoiL2NlbHBpcC1zZXQtMTItdGVzdC0yLWxpc3RlbmluZy8iLCIxMy0xLUwiOiIvY2VscGlwLXNldC0xMy10ZXN0LTEtbGlzdGVuaW5nLyIsIjEzLTItTCI6Ii9jZWxwaXAtc2V0LTEzLXRlc3QtMi1saXN0ZW5pbmcvIiwiMi0xLUwiOiIvY2VscGlwLXNldC0yLXRlc3QtMS1saXN0ZW5pbmcvIiwiMi0yLUwiOiIvY2VscGlwLXNldC0yLXRlc3QtMi1saXN0ZW5pbmcvIiwiMS0xLVIiOiIvY2VscGlwLXNldC0xLXRlc3QtMS1yZWFkaW5nLyIsIjEtMS1XIjoiL2NlbHBpcC1zZXQtMS10ZXN0LTEtd3JpdGluZy8iLCIxLTItUiI6Ii9jZWxwaXAtc2V0LTEtdGVzdC0yLXJlYWRpbmcvIiwiMS0xLUwiOiIvY2VscGlwLXNldC0xLXRlc3QtMS1saXN0ZW5pbmcvIiwiMS0yLUwiOiIvY2VscGlwLXNldC0xLXRlc3QtMi1saXN0ZW5pbmcvIiwiMy0xLUwiOiIvY2VscGlwLXNldC0zLXRlc3QtMS1saXN0ZW5pbmcvIiwiMy0yLUwiOiIvY2VscGlwLXNldC0zLXRlc3QtMi1saXN0ZW5pbmcvIiwiNC0xLUwiOiIvY2VscGlwLXNldC00LXRlc3QtMS1saXN0ZW5pbmcvIiwiNC0yLUwiOiIvY2VscGlwLXNldC00LXRlc3QtMi1saXN0ZW5pbmcvIiwiNS0xLUwiOiIvY2VscGlwLXNldC01LXRlc3QtMS1saXN0ZW5pbmcvIiwiNS0yLUwiOiIvY2VscGlwLXNldC01LXRlc3QtMi1saXN0ZW5pbmcvIiwiNi0xLUwiOiIvY2VscGlwLXNldC02LXRlc3QtMS1saXN0ZW5pbmcvIiwiNi0yLUwiOiIvY2VscGlwLXNldC02LXRlc3QtMi1saXN0ZW5pbmcvIiwiMS0yLVciOiIvY2VscGlwLXNldC0xLXRlc3QtMi13cml0aW5nLyIsIjItMS1XIjoiL2NlbHBpcC1zZXQtMi10ZXN0LTEtd3JpdGluZy8iLCIyLTItVyI6Ii9jZWxwaXAtc2V0LTItdGVzdC0yLXdyaXRpbmcvIiwiMi0xLVIiOiIvY2VscGlwLXNldC0yLXRlc3QtMS1yZWFkaW5nLyIsIjItMS1TIjoiL2NlbHBpcC1zZXQtMi10ZXN0LTEtc3BlYWtpbmcvIiwiMi0yLVMiOiIvY2VscGlwLXNldC0yLXRlc3QtMi1zcGVha2luZy8iLCIyLTItUiI6Ii9jZWxwaXAtc2V0LTItdGVzdC0yLXJlYWRpbmcvIiwiMy0xLVIiOiIvY2VscGlwLXNldC0zLXRlc3QtMS1yZWFkaW5nLyIsIjMtMS1TIjoiL2NlbHBpcC1zZXQtMy10ZXN0LTEtc3BlYWtpbmcvIiwiMy0yLVMiOiIvY2VscGlwLXNldC0zLXRlc3QtMi1zcGVha2luZy8iLCI0LTEtUyI6Ii9jZWxwaXAtc2V0LTQtdGVzdC0xLXNwZWFraW5nLyIsIjQtMi1TIjoiL2NlbHBpcC1zZXQtNC10ZXN0LTItc3BlYWtpbmcvIiwiMy0yLVIiOiIvY2VscGlwLXNldC0zLXRlc3QtMi1yZWFkaW5nLyIsIjMtMS1XIjoiL2NlbHBpcC1zZXQtMy10ZXN0LTEtd3JpdGluZy8iLCIzLTItVyI6Ii9jZWxwaXAtc2V0LTMtdGVzdC0yLXdyaXRpbmcvIiwiNC0xLVciOiIvY2VscGlwLXNldC00LXRlc3QtMS13cml0aW5nLyIsIjQtMi1XIjoiL2NlbHBpcC1zZXQtNC10ZXN0LTItd3JpdGluZy8iLCI0LTEtUiI6Ii9jZWxwaXAtc2V0LTQtdGVzdC0xLXJlYWRpbmcvIiwiNC0yLVIiOiIvY2VscGlwLXNldC00LXRlc3QtMi1yZWFkaW5nLyIsIjUtMS1TIjoiL2NlbHBpcC1zZXQtNS10ZXN0LTEtc3BlYWtpbmcvIiwiNS0yLVMiOiIvY2VscGlwLXNldC01LXRlc3QtMi1zcGVha2luZy8iLCI2LTEtUyI6Ii9jZWxwaXAtc2V0LTYtdGVzdC0xLXNwZWFraW5nLyIsIjYtMi1TIjoiL2NlbHBpcC1zZXQtNi10ZXN0LTItc3BlYWtpbmcvIiwiNy0xLVMiOiIvY2VscGlwLXNldC03LXRlc3QtMS1zcGVha2luZy8iLCI3LTItUyI6Ii9jZWxwaXAtc2V0LTctdGVzdC0yLXNwZWFraW5nLyIsIjgtMS1TIjoiL2NlbHBpcC1zZXQtOC10ZXN0LTEtc3BlYWtpbmcvIiwiOC0yLVMiOiIvY2VscGlwLXNldC04LXRlc3QtMi1zcGVha2luZy8iLCI5LTEtUyI6Ii9jZWxwaXAtc2V0LTktdGVzdC0xLXNwZWFraW5nLyIsIjktMi1TIjoiL2NlbHBpcC1zZXQtOS10ZXN0LTItc3BlYWtpbmcvIiwiNS0xLVciOiIvY2VscGlwLXNldC01LXRlc3QtMS13cml0aW5nLyIsIjUtMi1XIjoiL2NlbHBpcC1zZXQtNS10ZXN0LTItd3JpdGluZy8iLCI2LTEtVyI6Ii9jZWxwaXAtc2V0LTYtdGVzdC0xLXdyaXRpbmcvIiwiNi0yLVciOiIvY2VscGlwLXNldC02LXRlc3QtMi13cml0aW5nLyIsIjctMS1XIjoiL2NlbHBpcC1zZXQtNy10ZXN0LTEtd3JpdGluZy8iLCI3LTItVyI6Ii9jZWxwaXAtc2V0LTctdGVzdC0yLXdyaXRpbmcvIiwiOC0xLVciOiIvY2VscGlwLXNldC04LXRlc3QtMS13cml0aW5nLyIsIjgtMi1XIjoiL2NlbHBpcC1zZXQtOC10ZXN0LTItd3JpdGluZy8iLCI5LTEtVyI6Ii9jZWxwaXAtc2V0LTktdGVzdC0xLXdyaXRpbmcvIiwiOS0yLVciOiIvY2VscGlwLXNldC05LXRlc3QtMi13cml0aW5nLyIsIjUtMS1SIjoiL2NlbHBpcC1zZXQtNS10ZXN0LTEtcmVhZGluZy8iLCI1LTItUiI6Ii9jZWxwaXAtc2V0LTUtdGVzdC0yLXJlYWRpbmcvIiwiNi0xLVIiOiIvY2VscGlwLXNldC02LXRlc3QtMS1yZWFkaW5nLyIsIjYtMi1SIjoiL2NlbHBpcC1zZXQtNi10ZXN0LTItcmVhZGluZy8iLCI3LTEtUiI6Ii9jZWxwaXAtc2V0LTctdGVzdC0xLXJlYWRpbmcvIiwiNy0yLVIiOiIvY2VscGlwLXNldC03LXRlc3QtMi1yZWFkaW5nLyIsIjgtMS1SIjoiL2NlbHBpcC1zZXQtOC10ZXN0LTEtcmVhZGluZy8iLCI4LTItUiI6Ii9jZWxwaXAtc2V0LTgtdGVzdC0yLXJlYWRpbmcvIiwiOS0xLVIiOiIvY2VscGlwLXNldC05LXRlc3QtMS1yZWFkaW5nLyIsIjktMi1SIjoiL2NlbHBpcC1zZXQtOS10ZXN0LTItcmVhZGluZy8iLCIxMC0xLVIiOiIvY2VscGlwLXNldC0xMC10ZXN0LTEtcmVhZGluZy8iLCIxMC0xLVciOiIvY2VscGlwLXNldC0xMC10ZXN0LTEtd3JpdGluZy8iLCIxMC0xLVMiOiIvY2VscGlwLXNldC0xMC10ZXN0LTEtc3BlYWtpbmcvIiwiMTAtMi1SIjoiL2NlbHBpcC1zZXQtMTAtdGVzdC0yLXJlYWRpbmcvIiwiMTAtMi1XIjoiL2NlbHBpcC1zZXQtMTAtdGVzdC0yLXdyaXRpbmcvIiwiMTAtMi1TIjoiL2NlbHBpcC1zZXQtMTAtdGVzdC0yLXNwZWFraW5nLyIsIjExLTEtUiI6Ii9jZWxwaXAtc2V0LTExLXRlc3QtMS1yZWFkaW5nLyIsIjExLTEtVyI6Ii9jZWxwaXAtc2V0LTExLXRlc3QtMS13cml0aW5nLyIsIjExLTEtUyI6Ii9jZWxwaXAtc2V0LTExLXRlc3QtMS1zcGVha2luZy8iLCIxMS0yLVIiOiIvY2VscGlwLXNldC0xMS10ZXN0LTItcmVhZGluZy8iLCIxMS0yLVciOiIvY2VscGlwLXNldC0xMS10ZXN0LTItd3JpdGluZy8iLCIxMS0yLVMiOiIvY2VscGlwLXNldC0xMS10ZXN0LTItc3BlYWtpbmcvIiwiMTItMS1SIjoiL2NlbHBpcC1zZXQtMTItdGVzdC0xLXJlYWRpbmcvIiwiMTItMS1XIjoiL2NlbHBpcC1zZXQtMTItdGVzdC0xLXdyaXRpbmcvIiwiMTItMS1TIjoiL2NlbHBpcC1zZXQtMTItdGVzdC0xLXNwZWFraW5nLyIsIjEyLTItUiI6Ii9jZWxwaXAtc2V0LTEyLXRlc3QtMi1yZWFkaW5nLyIsIjEyLTItVyI6Ii9jZWxwaXAtc2V0LTEyLXRlc3QtMi13cml0aW5nLyIsIjEyLTItUyI6Ii9jZWxwaXAtc2V0LTEyLXRlc3QtMi1zcGVha2luZy8iLCIxMy0xLVIiOiIvY2VscGlwLXNldC0xMy10ZXN0LTEtcmVhZGluZy8iLCIxMy0xLVciOiIvY2VscGlwLXNldC0xMy10ZXN0LTEtd3JpdGluZy8iLCIxMy0xLVMiOiIvY2VscGlwLXNldC0xMy10ZXN0LTEtc3BlYWtpbmcvIiwiMTMtMi1SIjoiL2NlbHBpcC1zZXQtMTMtdGVzdC0yLXJlYWRpbmcvIiwiMTMtMi1XIjoiL2NlbHBpcC1zZXQtMTMtdGVzdC0yLXdyaXRpbmcvIiwiMTMtMi1TIjoiL2NlbHBpcC1zZXQtMTMtdGVzdC0yLXNwZWFraW5nLyJ9OwogIHZhciBTS0lMTF9OQU1FUyA9IHsgTDogIkxpc3RlbmluZyIsIFI6ICJSZWFkaW5nIiwgVzogIldyaXRpbmciLCBTOiAiU3BlYWtpbmciIH07CgogIC8qIC0tLS0tLS0tLS0gUmVuZGVyIHRlc3Qtc2V0cyBncmlkIC0tLS0tLS0tLS0gKi8KICB2YXIgZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHBTZXRzIik7CiAgdmFyIGh0bWwgPSAiIjsKICBIVUJfREFUQS5zZXRzLmZvckVhY2goZnVuY3Rpb24oc2V0KXsKICAgIHZhciBhbnlMaXZlID0gc2V0LnRlc3RzLnNvbWUoZnVuY3Rpb24odCl7CiAgICAgIHJldHVybiBbIkwiLCJSIiwiVyIsIlMiXS5zb21lKGZ1bmN0aW9uKGspeyByZXR1cm4gdC5za2lsbHNba10gPT09ICJsaXZlIjsgfSk7CiAgICB9KTsKICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNscC1zZXQtY2FyZCBjbHAtZmxpcCcgKyAoYW55TGl2ZSA\/ICcnIDogJyBjbHAtc2V0LWNhcmQtLXNvb24nKSArICciPic7CiAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJjbHAtc2V0LXRvcCI+PHNwYW4gY2xhc3M9ImNscC1zZXQtbmFtZSI+U0VUICcgKyBzZXQubiArICc8L3NwYW4+JzsKICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJjbHAtc2V0LXRhZyAnICsgKGFueUxpdmUgPyAnY2xwLXNldC10YWctLWxpdmUnIDogJ2NscC1zZXQtdGFnLS1zb29uJykgKyAnIj4nICsgKGFueUxpdmUgPyAnQVZBSUxBQkxFJyA6ICdDT01JTkcgU09PTicpICsgJzwvc3Bhbj48L2Rpdj4nOwogICAgc2V0LnRlc3RzLmZvckVhY2goZnVuY3Rpb24odCl7CiAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImNscC10ZXN0LXJvdyI+PHNwYW4gY2xhc3M9ImNscC10ZXN0LWxibCI+VGVzdCAnICsgdC5uICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwLXNrLXJvdyI+JzsKICAgICAgWyJMIiwiUiIsIlciLCJTIl0uZm9yRWFjaChmdW5jdGlvbihrKXsKICAgICAgICB2YXIgc3QgPSB0LnNraWxsc1trXTsKICAgICAgICB2YXIgbGJsID0gU0tJTExfTkFNRVNba10gKyAiIFx1MjAxNCBTZXQgIiArIHNldC5uICsgIiBUZXN0ICIgKyB0Lm47CiAgICAgICAgaWYgKHN0ID09PSAibGl2ZSIpIHsKICAgICAgICAgIHZhciBocmVmID0gU0tJTExfVVJMU1tzZXQubiArICItIiArIHQubiArICItIiArIGtdIHx8ICIjIjsKICAgICAgICAgIGh0bWwgKz0gJzxhIGNsYXNzPSJjbHAtc2sgY2xwLXNrLS1saXZlIiBocmVmPSInICsgaHJlZiArICciIGFyaWEtbGFiZWw9IicgKyBsYmwgKyAnIj4nICsgayArICc8L2E+JzsKICAgICAgICB9IGVsc2UgaWYgKHN0ID09PSAicHJvZ3Jlc3MiKSB7CiAgICAgICAgICBodG1sICs9ICc8YSBjbGFzcz0iY2xwLXNrIGNscC1zay0tcHJvZyIgaHJlZj0iJyArIChTS0lMTF9VUkxTW3NldC5uICsgIi0iICsgdC5uICsgIi0iICsga10gfHwgIiMiKSArICciIGFyaWEtbGFiZWw9IicgKyBsYmwgKyAnIChpbiBwcm9ncmVzcykiPicgKyBrICsgJzwvYT4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBodG1sICs9ICc8c3BhbiBjbGFzcz0iY2xwLXNrIGNscC1zay0tc29vbiIgYXJpYS1kaXNhYmxlZD0idHJ1ZSIgdGl0bGU9IkNvbWluZyBzb29uIj4nICsgayArICc8L3NwYW4+JzsKICAgICAgICB9CiAgICAgIH0pOwogICAgICBodG1sICs9ICc8L3NwYW4+PC9kaXY+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC9kaXY+JzsKICB9KTsKICBncmlkLmlubmVySFRNTCA9IGh0bWw7CgogIC8qIC0tLS0tLS0tLS0gU3RhZ2dlcjogY2hpbGRyZW4gb2YgLmNscC1zdGFnZ2VyIGZhZGUgdXAgODBtcyBhcGFydCAtLS0tLS0tLS0tICovCiAgdmFyIHN0YWdnZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zdGFnZ2VyIik7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzdGFnZ2VycywgZnVuY3Rpb24ocCl7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHAuY2hpbGRyZW4sIGZ1bmN0aW9uKGMsIGlkeCl7CiAgICAgIGMuY2xhc3NMaXN0LmFkZCgiY2xwLXJldmVhbCIpOwogICAgICB2YXIgZCA9IE1hdGgubWluKGlkeCAqIDgwLCA2NDApOwogICAgICBjLnN0eWxlLnRyYW5zaXRpb24gPSAib3BhY2l0eSAuNTVzIGVhc2Utb3V0ICIgKyBkICsgIm1zLCB0cmFuc2Zvcm0gLjU1cyBlYXNlLW91dCAiICsgZCArICJtcyI7CiAgICB9KTsKICB9KTsKCiAgLyogLS0tLS0tLS0tLSBTY3JvbGwgcmV2ZWFsIChvbmNlKSAtLS0tLS0tLS0tICovCiAgdmFyIHJldmVhbEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtcmV2ZWFsIik7CiAgZnVuY3Rpb24gc2hvd0FsbCgpeyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJldmVhbEVscywgZnVuY3Rpb24oZWwpeyBlbC5zdHlsZS50cmFuc2l0aW9uID0gIm5vbmUiOyBlbC5zdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAiMG1zIjsgZWwuY2xhc3NMaXN0LmFkZCgiY2xwLWluIik7IH0pOyB9CiAgaWYgKFJFRFVDRUQgfHwgISgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiIGluIHdpbmRvdykpIHsKICAgIHNob3dBbGwoKTsKICB9IGVsc2UgewogICAgdmFyIGlvRmlyZWQgPSBmYWxzZTsKICAgIHZhciBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlbnRyaWVzKXsKICAgICAgaW9GaXJlZCA9IHRydWU7CiAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgICBpZiAoIWUuaXNJbnRlcnNlY3RpbmcpIHJldHVybjsKICAgICAgICB2YXIgZWwgPSBlLnRhcmdldDsKICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCJjbHAtaW4iKTsKICAgICAgICBpby51bm9ic2VydmUoZWwpOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICIiOyBlbC5zdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAiMG1zIjsgZWwuY2xhc3NMaXN0LnJlbW92ZSgiY2xwLWZsaXAiKTsgfSwgMTQ1MCk7IC8qIGtlZXAgaG92ZXIgc25hcHB5IGFmdGVyd2FyZHMgKi8KICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogMC4xMiwgcm9vdE1hcmdpbjogIjBweCAwcHggLTYlIDBweCIgfSk7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJldmVhbEVscywgZnVuY3Rpb24oZWwpeyBpby5vYnNlcnZlKGVsKTsgfSk7CiAgICAvKiBJbW1lZGlhdGUgcmV2ZWFsIGZvciBlbGVtZW50cyBhbHJlYWR5IGluIHZpZXcgKGJlbHQpICovCiAgICB2YXIgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyZXZlYWxFbHMsIGZ1bmN0aW9uKGVsKXsKICAgICAgdmFyIHIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgaWYgKHZoID4gMCAmJiByLnRvcCA8IHZoICogMC45NSAmJiByLmJvdHRvbSA+IDApIGVsLmNsYXNzTGlzdC5hZGQoImNscC1pbiIpOwogICAgfSk7CiAgICAvKiBTYWZldHk6IGlmIHRoZSBvYnNlcnZlciBuZXZlciBmaXJlcyAoaGlkZGVuL2VtYmVkZGVkIGlmcmFtZSksIHNob3cgZXZlcnl0aGluZyAoc3VzcGVuZGVycykgKi8KICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgaWYgKCFpb0ZpcmVkKSB7IGlvLmRpc2Nvbm5lY3QoKTsgc2hvd0FsbCgpOyB9CiAgICB9LCA5MDApOwogIH0KCiAgLyogLS0tLS0tLS0tLSBDb3VudC11cCBudW1iZXJzIGluIHN0YXQgY2hpcHMgLS0tLS0tLS0tLSAqLwogIHZhciBjaGlwcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbHAtY2hpcHMiKTsKICBpZiAoY2hpcHMgJiYgIVJFRFVDRUQgJiYgIkludGVyc2VjdGlvbk9ic2VydmVyIiBpbiB3aW5kb3cpIHsKICAgIHZhciBjb3VudGVkID0gZmFsc2U7CiAgICB2YXIgaW8yID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKCFlLmlzSW50ZXJzZWN0aW5nIHx8IGNvdW50ZWQpIHJldHVybjsKICAgICAgICBjb3VudGVkID0gdHJ1ZTsgaW8yLmRpc2Nvbm5lY3QoKTsKICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGNoaXBzLnF1ZXJ5U2VsZWN0b3JBbGwoImJbZGF0YS1uXSIpLCBmdW5jdGlvbihiKXsKICAgICAgICAgIHZhciBuID0gcGFyc2VJbnQoYi5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpLCAxMCk7CiAgICAgICAgICB2YXIgdDAgPSBudWxsOwogICAgICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgICAgIGlmICh0MCA9PT0gbnVsbCkgdDAgPSB0czsKICAgICAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigodHMgLSB0MCkgLyA5MDAsIDEpOwogICAgICAgICAgICBwID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICAgICAgYi50ZXh0Q29udGVudCA9IE1hdGgucm91bmQobiAqIHApOwogICAgICAgICAgICBpZiAocCA8IDEpIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgICAgICAgIH0KICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogMC40IH0pOwogICAgaW8yLm9ic2VydmUoY2hpcHMpOwogIH0KCiAgLyogLS0tLS0tLS0tLSBTdWJ0bGUgcGFyYWxsYXggb24gaGVybyBzaGFwZXMgLS0tLS0tLS0tLSAqLwogIGlmICghUkVEVUNFRCkgewogICAgdmFyIHNoYXBlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc2hhcGUiKTsKICAgIHZhciB0aWNraW5nID0gZmFsc2U7CiAgICB2YXIgb25TY3JvbGwgPSBmdW5jdGlvbigpewogICAgICBpZiAodGlja2luZykgcmV0dXJuOwogICAgICB0aWNraW5nID0gdHJ1ZTsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7CiAgICAgICAgdmFyIHkgPSB3aW5kb3cuc2Nyb2xsWSB8fCB3aW5kb3cucGFnZVlPZmZzZXQgfHwgMDsKICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHNoYXBlcywgZnVuY3Rpb24ocyl7CiAgICAgICAgICB2YXIgZiA9IHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoImRhdGEtcGFyIikpIHx8IDA7CiAgICAgICAgICBzLnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVZKCIgKyAoeSAqIGYpLnRvRml4ZWQoMSkgKyAicHgpIjsKICAgICAgICB9KTsKICAgICAgICB0aWNraW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBvblNjcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pOwogICAgb25TY3JvbGwoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gTWFnbmV0aWMgaGVybyBDVEEgLS0tLS0tLS0tLSAqLwogIHZhciBGSU5FID0gd2luZG93Lm1hdGNoTWVkaWEoIihwb2ludGVyOiBmaW5lKSIpLm1hdGNoZXM7CiAgdmFyIG1hZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jbHAtaGVybyAuY2xwLWJ0bi0tcHJpbWFyeSIpOwogIGlmIChtYWcgJiYgIVJFRFVDRUQgJiYgRklORSkgewogICAgbWFnLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIGZ1bmN0aW9uKGV2KXsKICAgICAgdmFyIHIgPSBtYWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgIHZhciBkeCA9IE1hdGgubWF4KC02LCBNYXRoLm1pbig2LCAoKGV2LmNsaWVudFggLSByLmxlZnQpIC8gci53aWR0aCAtIC41KSAqIDEyKSk7CiAgICAgIHZhciBkeSA9IE1hdGgubWF4KC02LCBNYXRoLm1pbig2LCAoKGV2LmNsaWVudFkgLSByLnRvcCkgLyByLmhlaWdodCAtIC41KSAqIDEyKSk7CiAgICAgIG1hZy5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyBkeC50b0ZpeGVkKDEpICsgInB4LCIgKyAoZHkgLSAzKS50b0ZpeGVkKDEpICsgInB4KSI7CiAgICB9KTsKICAgIG1hZy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgZnVuY3Rpb24oKXsgbWFnLnN0eWxlLnRyYW5zZm9ybSA9ICIiOyB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gM0QgdGlsdCBvbiBza2lsbCBjYXJkcyAobWF4IDRkZWcpIC0tLS0tLS0tLS0gKi8KICBpZiAoIVJFRFVDRUQgJiYgRklORSkgewogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNraWxsLWNhcmQiKSwgZnVuY3Rpb24oY2FyZCl7CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgZnVuY3Rpb24oZXYpewogICAgICAgIHZhciByID0gY2FyZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2YXIgcnggPSAoKGV2LmNsaWVudFkgLSByLnRvcCkgLyByLmhlaWdodCAtIC41KSAqIC04OwogICAgICAgIHZhciByeSA9ICgoZXYuY2xpZW50WCAtIHIubGVmdCkgLyByLndpZHRoIC0gLjUpICogODsKICAgICAgICBjYXJkLnN0eWxlLnRyYW5zZm9ybSA9ICJwZXJzcGVjdGl2ZSg5MDBweCkgdHJhbnNsYXRlWSgtNHB4KSByb3RhdGVYKCIgKyByeC50b0ZpeGVkKDIpICsgImRlZykgcm90YXRlWSgiICsgcnkudG9GaXhlZCgyKSArICJkZWcpIjsKICAgICAgfSk7CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIGZ1bmN0aW9uKCl7IGNhcmQuc3R5bGUudHJhbnNmb3JtID0gIiI7IH0pOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIEZBUSBhY2NvcmRpb24gLS0tLS0tLS0tLSAqLwogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1mYXEtaXRlbSIpLCBmdW5jdGlvbihpdGVtKXsKICAgIHZhciBidG4gPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoIi5jbHAtZmFxLXEiKTsKICAgIHZhciBwYW5lbCA9IGl0ZW0ucXVlcnlTZWxlY3RvcigiLmNscC1mYXEtYSIpOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgICAgdmFyIG9wZW4gPSBpdGVtLmNsYXNzTGlzdC50b2dnbGUoImNscC1vcGVuIik7CiAgICAgIGJ0bi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCBvcGVuID8gInRydWUiIDogImZhbHNlIik7CiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG9wZW4gPyBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiIDogIjBweCI7CiAgICB9KTsKICB9KTsKCiAgLyogLS0tLS0tLS0tLSBTbW9vdGggaW4tcGFnZSBzY3JvbGwgZm9yIENUQSBhbmNob3JzIC0tLS0tLS0tLS0gKi8KICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImFbZGF0YS1zY3JvbGxdIiksIGZ1bmN0aW9uKGEpewogICAgYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2KXsKICAgICAgdmFyIGlkID0gYS5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICAgICAgaWYgKCFpZCB8fCBpZC5jaGFyQXQoMCkgIT09ICIjIikgcmV0dXJuOwogICAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGlkKTsKICAgICAgaWYgKCFlbCkgcmV0dXJuOwogICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICB2YXIgdG9wID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgKHdpbmRvdy5zY3JvbGxZIHx8IDApIC0gMTY7CiAgICAgIHdpbmRvdy5zY3JvbGxUbyhSRURVQ0VEID8geyB0b3A6IHRvcCB9IDogeyB0b3A6IHRvcCwgYmVoYXZpb3I6ICJzbW9vdGgiIH0pOwogICAgfSk7CiAgfSk7CgogIC8qIC0tLS0tLS0tLS0gRW1haWwgY2FwdHVyZSAoZnJvbnQtZW5kIG9ubHkpIC0tLS0tLS0tLS0gKi8KICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHBGb3JtIik7CiAgdmFyIG1zZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHBGb3JtTXNnIik7CiAgaWYgKGZvcm0pIHsKICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IiwgZnVuY3Rpb24oZXYpewogICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICB2YXIgZW1haWwgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoImlucHV0IikudmFsdWUudHJpbSgpOwogICAgICB2YXIgb2sgPSAvXlxTK0BcUytcLlxTKyQvLnRlc3QoZW1haWwpOwogICAgICBtc2cuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIGlmICghb2spIHsKICAgICAgICBtc2cudGV4dENvbnRlbnQgPSAiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iOwogICAgICAgIG1zZy5zdHlsZS5jb2xvciA9ICIjRjQzRjVFIjsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgbXNnLnRleHRDb250ZW50ID0gIlx1MjcxMyBZb3UncmUgb24gdGhlIGxpc3QhIENoZWNrIHlvdXIgaW5ib3ggaW4gYSBmZXcgbWludXRlcy4iOwogICAgICBtc2cuc3R5bGUuY29sb3IgPSAiIzEwQjk4MSI7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvcigiaW5wdXQiKS52YWx1ZSA9ICIiOwogICAgfSk7CiAgfQp9KSgpOwo='));<\/script><\/p>\n<section id=\"ae4u-celpip-links\" style=\"max-width:960px;margin:2.5rem auto;padding:0 1rem\">\n<h2 style=\"font-size:1.35rem;margin:0 0 .5rem\">CELPIP Practice Tests \u2014 Full Index<\/h2>\n<p style=\"margin:0 0 1rem\">All 104 free CELPIP practice tests: 13 sets, each with Listening, Reading, Writing and Speaking \u2014 2 tests per skill. Free, no sign-up.<\/p>\n<ul style=\"list-style:none;padding:0;line-height:1.8\">\n<li style=\"margin:0 0 .45em\"><strong>Set 1:<\/strong> <a href=\"\/vi\/celpip-set-1-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-1-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-1-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-1-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-1-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-1-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-1-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-1-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 2:<\/strong> <a href=\"\/vi\/celpip-set-2-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-2-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-2-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-2-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-2-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-2-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-2-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-2-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 3:<\/strong> <a href=\"\/vi\/celpip-set-3-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-3-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-3-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-3-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-3-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-3-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-3-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-3-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 4:<\/strong> <a href=\"\/vi\/celpip-set-4-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-4-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-4-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-4-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-4-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-4-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-4-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-4-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 5:<\/strong> <a href=\"\/vi\/celpip-set-5-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-5-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-5-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-5-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-5-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-5-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-5-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-5-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 6:<\/strong> <a href=\"\/vi\/celpip-set-6-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-6-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-6-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-6-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-6-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-6-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-6-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-6-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 7:<\/strong> <a href=\"\/vi\/celpip-set-7-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-7-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-7-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-7-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-7-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-7-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-7-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-7-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 8:<\/strong> <a href=\"\/vi\/celpip-set-8-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-8-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-8-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-8-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-8-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-8-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-8-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-8-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 9:<\/strong> <a href=\"\/vi\/celpip-set-9-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-9-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-9-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-9-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-9-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-9-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-9-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-9-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 10:<\/strong> <a href=\"\/vi\/celpip-set-10-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-10-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-10-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-10-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-10-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-10-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-10-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-10-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 11:<\/strong> <a href=\"\/vi\/celpip-set-11-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-11-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-11-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-11-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-11-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-11-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-11-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-11-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 12:<\/strong> <a href=\"\/vi\/celpip-set-12-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-12-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-12-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-12-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-12-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-12-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-12-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-12-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<li style=\"margin:0 0 .45em\"><strong>Set 13:<\/strong> <a href=\"\/vi\/celpip-set-13-test-1-listening\/\">Listening Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-13-test-2-listening\/\">Listening Test 2<\/a> | <a href=\"\/vi\/celpip-set-13-test-1-reading\/\">Reading Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-13-test-2-reading\/\">Reading Test 2<\/a> | <a href=\"\/vi\/celpip-set-13-test-1-writing\/\">Writing Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-13-test-2-writing\/\">Writing Test 2<\/a> | <a href=\"\/vi\/celpip-set-13-test-1-speaking\/\">Speaking Test 1<\/a> \u00b7 <a href=\"\/vi\/celpip-set-13-test-2-speaking\/\">Speaking Test 2<\/a><\/li>\n<\/ul>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>CELPIP CELPIP Practice Tests Practice on a pixel-perfect copy of the real CELPIP test &#8212; free, with instant scoring, built for busy adults. Start Set 1 &#8212; it&#8217;s free View Exam Structure Practice Test 1 &#8211; Listening Part 4:Listening to a News Item NEXT Time remaining:&nbsp;3 minutes Choose the best option to complete the statement. [&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-5612","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5612","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=5612"}],"version-history":[{"count":39,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5612\/revisions"}],"predecessor-version":[{"id":6501,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5612\/revisions\/6501"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=5612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}