{"id":860,"date":"2026-09-22T16:26:27","date_gmt":"2026-09-22T16:26:27","guid":{"rendered":"https:\/\/goclimb.com\/?page_id=860"},"modified":"2026-09-22T16:48:53","modified_gmt":"2026-09-22T16:48:53","slug":"nachlassverzeichnis","status":"publish","type":"page","link":"https:\/\/goclimb.com\/en\/nachlassverzeichnis\/","title":{"rendered":"Nachlassverzeichnis"},"content":{"rendered":"\n<!-- ==========================================================\n     Nachlassverzeichnis - Climb\n     Custom-HTML-Block fuer WordPress. Kompletten Inhalt dieser\n     Datei in EINEN Custom-HTML-Block einfuegen.\n     Alles ist enthalten: Schrift, PDF-Baustein, Excel-Vorlage.\n     Es wird nichts von fremden Servern nachgeladen.\n\n     Zwei Stellschrauben:\n     * Klebriger Theme-Header? In der CSS-Regel #climb-nlv\n       --nlv-top: 80px ergaenzen (Hoehe des Headers).\n     * Gibt WordPress den Seitentitel selbst als H1 aus?\n       Dann unten das <h1> in <h2> aendern - der Stil passt sich an.\n     ========================================================== -->\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"WebApplication\", \"name\": \"Nachlassverzeichnis-Tool von Climb\", \"url\": \"https:\/\/goclimb.com\/nachlassverzeichnis\/\", \"applicationCategory\": \"FinanceApplication\", \"operatingSystem\": \"Alle (im Browser)\", \"inLanguage\": \"de-DE\", \"isAccessibleForFree\": true, \"offers\": {\"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"EUR\"}, \"description\": \"Kostenloses Online-Tool, Excel- und PDF-Vorlage f\u00fcr ein Nachlassverzeichnis: Aktiva, Passiva, Erbfallkosten, Schenkungen, Vertr\u00e4ge und digitale Zug\u00e4nge erfassen.\", \"publisher\": {\"@type\": \"Organization\", \"name\": \"GoClimb GmbH\", \"url\": \"https:\/\/goclimb.com\"}}<\/script>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Ist das Nachlassverzeichnis-Tool kostenlos?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Ja. Das Online-Tool, die Excel-Vorlage und die PDF-Vorlage sind kostenlos und ohne Anmeldung nutzbar.\"}}, {\"@type\": \"Question\", \"name\": \"Muss ein Nachlassverzeichnis vom Notar erstellt werden?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Nein, in der Regel reicht ein selbst erstelltes Verzeichnis. Pflichtteilsberechtigte k\u00f6nnen aber verlangen, dass ein Notar das Nachlassverzeichnis aufnimmt (\u00a7 2314 BGB). Die Kosten daf\u00fcr tr\u00e4gt der Nachlass.\"}}, {\"@type\": \"Question\", \"name\": \"Welcher Stichtag gilt f\u00fcr die Werte im Nachlassverzeichnis?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Nach einem Todesfall gilt der Todestag. Kontost\u00e4nde zum Todestag kannst du bei der jeweiligen Bank erfragen. Nutzt du das Verzeichnis zur Vorsorge, tr\u00e4gst du aktuelle Werte ein und aktualisierst sie regelm\u00e4\u00dfig.\"}}, {\"@type\": \"Question\", \"name\": \"Was geh\u00f6rt in ein Nachlassverzeichnis?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Alle Verm\u00f6genswerte (Aktiva) wie Konten, Depots, Immobilien, Fahrzeuge und Forderungen, alle Schulden (Passiva) einschlie\u00dflich der Erbfallkosten wie Bestattung und Grabstein sowie gr\u00f6\u00dfere Schenkungen der letzten zehn Jahre. Zu jedem Posten geh\u00f6rt ein Beleg.\"}}, {\"@type\": \"Question\", \"name\": \"Ersetzt ein Nachlassverzeichnis das Testament?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Nein. Das Nachlassverzeichnis listet auf, was vorhanden ist. Wer was bekommt, regelt ein Testament. Dieses muss handschriftlich verfasst oder notariell beurkundet werden.\"}}, {\"@type\": \"Question\", \"name\": \"Gibt es das Nachlassverzeichnis auch als Excel-Vorlage?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Ja. Die kostenlose Excel-Vorlage enth\u00e4lt ein Tabellenblatt pro Bereich, Auswahllisten und automatische Summen f\u00fcr Aktiva, Passiva und den Nachlass netto. Sie funktioniert in Excel und LibreOffice.\"}}, {\"@type\": \"Question\", \"name\": \"Werden meine Daten gespeichert?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Nicht bei uns. Deine Eingaben bleiben im Browser auf deinem Ger\u00e4t, und auch das PDF wird dort erzeugt. Es gibt kein Konto und keinen Upload.\"}}]}<\/script>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700&#038;display=swap\">\n<style>\n\/* --- Abschirmung gegen das WordPress-Theme --- *\/\n#climb-nlv{position:relative;overflow-x:clip;font-size:15px;line-height:1.55;font-weight:400;text-align:left;letter-spacing:normal;overflow-wrap:break-word}\n#climb-nlv *{font-family:inherit;text-transform:none;letter-spacing:normal}\n#climb-nlv a{color:inherit;text-decoration:none;box-shadow:none}\n#climb-nlv button{background:none;border:0;padding:0;margin:0;color:inherit;text-transform:none;box-shadow:none;border-radius:0;text-align:inherit}\n#climb-nlv h1,#climb-nlv h2,#climb-nlv h3,#climb-nlv h4,#climb-nlv h5{color:#fff;text-transform:none;padding:0;border:0;background:none;font-style:normal;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}\n#climb-nlv summary{padding:0;background:none;border:0;font-style:normal}\n#climb-nlv details{background:none;border:0;margin:0;padding:0}\n#climb-nlv ul,#climb-nlv ol{list-style-position:outside}\n#climb-nlv ul{list-style-type:disc}\n#climb-nlv ol{list-style-type:decimal}\n#climb-nlv li{margin:0}\n#climb-nlv input,#climb-nlv select,#climb-nlv textarea{box-shadow:none;text-transform:none;max-width:100%}\n#climb-nlv img,#climb-nlv svg{max-width:100%}\n#climb-nlv table{border:0;margin:0}\n#climb-nlv{--bg1:#2C7CC0; --bg2:#1B4A88;\n  --ink:#FFFFFF; --soft:rgba(255,255,255,.76); --faint:rgba(255,255,255,.55);\n  --card:rgba(255,255,255,.10); --card2:rgba(255,255,255,.16); --line:rgba(255,255,255,.22);\n  --field:rgba(255,255,255,.10);\n  --yellow:#FFC46B; --on-yellow:#173A6B; --sky:#A9D4FF; --mint:#7FE3B4; --lilac:#C9B6FF; --coral:#FF9E8A;\n  --font:\"DM Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,Arial,sans-serif;\n  color-scheme:dark;}\n@media (prefers-color-scheme: dark){\n#climb-nlv:not([data-theme=\"light\"]){--bg1:#1F5E9C; --bg2:#0F2C55; --card:rgba(255,255,255,.08); --card2:rgba(255,255,255,.13);}\n}\n#climb-nlv[data-theme=\"dark\"]{--bg1:#1F5E9C; --bg2:#0F2C55; --card:rgba(255,255,255,.08); --card2:rgba(255,255,255,.13);}\n#climb-nlv,#climb-nlv *{box-sizing:border-box}\n#climb-nlv{-webkit-text-size-adjust:100%}\n#climb-nlv{margin:0;padding:0}\n#climb-nlv{background:var(--bg2);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.55;font-weight:400}\n#climb-nlv::before{content:\"\";position:absolute;inset:0;z-index:0;pointer-events:none;\n  background:linear-gradient(160deg,var(--bg1) 0%,var(--bg2) 100%)}\n#climb-nlv .wrap{position:relative;z-index:1;max-width:1200px;margin:0 auto;padding:var(--nlv-pad-top,40px) 28px 48px}\n#climb-nlv .brand{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}\n#climb-nlv .logo{display:inline-flex;align-items:flex-start;gap:3px;font-weight:700;font-size:28px;letter-spacing:-.03em;line-height:1;color:#fff;text-decoration:none}\n#climb-nlv .logo .app{font-size:8px;font-weight:700;letter-spacing:.02em;background:#fff;color:var(--bg2);border-radius:3px;padding:2px 3px 1px;margin-top:1px}\n#climb-nlv .site{font-weight:600;font-size:15px;color:#fff;text-decoration:none}\n#climb-nlv .site:hover{text-decoration:underline}\n#climb-nlv header{margin-bottom:32px}\n#climb-nlv h1,#climb-nlv header>h2{font-weight:600;font-size:clamp(34px,6vw,56px);line-height:1.08;letter-spacing:-.015em;margin:0 0 14px}\n#climb-nlv .lede{max-width:52ch;color:var(--soft);font-size:17px;margin:0}\n#climb-nlv .layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px;align-items:start}\n#climb-nlv .card{background:var(--card);border-radius:22px}\n#climb-nlv .label{font-size:13px;font-weight:500;color:var(--soft);margin:0 0 10px;display:flex;align-items:center;gap:8px}\n#climb-nlv .dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);flex:0 0 auto}\n#climb-nlv .side{position:sticky;top:var(--nlv-top,16px);max-height:calc(100vh - 32px);overflow:auto;padding:20px}\n#climb-nlv .nav{display:flex;flex-direction:column;gap:2px}\n#climb-nlv .nav-item{appearance:none;font:inherit;font-size:14px;font-weight:500;color:var(--ink);background:transparent;border:0;\n  border-radius:12px;display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:10px;padding:8px 10px;\n  margin:0 -6px;text-align:left;cursor:pointer}\n#climb-nlv .nav-item:hover{background:var(--card)}\n#climb-nlv .nav-item[aria-current=\"true\"]{background:var(--card2);color:var(--yellow);font-weight:600}\n#climb-nlv .cnt{font-size:13px;color:var(--faint);min-width:1.4em;text-align:right;font-variant-numeric:tabular-nums}\n#climb-nlv .cnt.has{color:var(--ink);font-weight:600}\n#climb-nlv .nav-item[aria-current=\"true\"] .cnt.has{color:var(--yellow)}\n#climb-nlv .stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}\n#climb-nlv .stat{background:var(--card2);border-radius:14px;padding:10px 8px;text-align:center;min-width:0}\n#climb-nlv .stat span{display:block;font-size:12px;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n#climb-nlv .stat b{display:block;font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}\n#climb-nlv .stat.wide{grid-column:1 \/ -1;padding:12px 8px}\n#climb-nlv .stat.wide b{font-size:26px;font-weight:700;line-height:1.2}\n#climb-nlv .stat b.neg{color:var(--coral)}\n#climb-nlv .btn{font-family:var(--font);font-size:14px;font-weight:600;padding:10px 20px;min-height:44px;border-radius:999px;\n  border:1.5px solid rgba(255,255,255,.55);background:transparent;color:#fff;cursor:pointer;transition:background .15s,filter .15s}\n#climb-nlv .btn:hover{background:rgba(255,255,255,.12)}\n#climb-nlv .btn.solid{background:var(--yellow);border-color:var(--yellow);color:var(--on-yellow)}\n#climb-nlv .btn.solid:hover{filter:brightness(1.06)}\n#climb-nlv .btn.ghost{border-color:transparent;background:var(--card2)}\n#climb-nlv .btn.ghost:hover{background:rgba(255,255,255,.22)}\n#climb-nlv .btn.danger{border-color:transparent;color:var(--coral)}\n#climb-nlv .btn.danger:hover{background:rgba(255,158,138,.12)}\n#climb-nlv .btn.danger[data-armed]{border-color:var(--coral)}\n#climb-nlv .btn:disabled{opacity:.65;cursor:progress}\n#climb-nlv .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}\n#climb-nlv .side .actions .btn{flex:1 1 100%}\n#climb-nlv .hint{font-size:12px;color:var(--faint);margin:12px 2px 0}\n#climb-nlv :focus-visible{outline:2px solid var(--yellow);outline-offset:2px}\n#climb-nlv .stage{padding:34px 36px 40px;min-height:660px}\n#climb-nlv .stage-head{margin-bottom:26px}\n#climb-nlv .stage-head h2{font-weight:600;font-size:clamp(26px,3.6vw,36px);line-height:1.12;letter-spacing:-.01em;margin:0 0 8px}\n#climb-nlv .intro{color:var(--soft);font-size:15px;margin:0;max-width:56ch}\n#climb-nlv .warn{font-size:14px;color:#FFE3B8;background:rgba(255,196,107,.14);border-radius:14px;padding:11px 16px;margin:-4px 0 26px;max-width:64ch}\n#climb-nlv .group + .group{margin-top:28px}\n#climb-nlv .quick{display:flex;flex-wrap:wrap;gap:8px}\n#climb-nlv .chip{appearance:none;font:inherit;font-size:13px;font-weight:500;color:#fff;background:var(--card2);border:1.5px solid transparent;\n  border-radius:999px;padding:7px 14px 7px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;line-height:1.3}\n#climb-nlv .chip:hover{background:rgba(255,255,255,.24)}\n#climb-nlv .chip .plus{color:var(--yellow);font-weight:700}\n#climb-nlv .chip.own{background:transparent;border:1.5px dashed rgba(255,255,255,.45)}\n#climb-nlv .entries{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n#climb-nlv .entry{background:var(--card);border-radius:16px;scroll-margin-top:96px}\n#climb-nlv .entry.open{background:var(--card2)}\n#climb-nlv .entry-sum{appearance:none;font:inherit;color:inherit;background:transparent;border:0;text-align:left;width:100%;border-radius:16px;\n  display:grid;grid-template-columns:10px minmax(0,1fr) auto 18px;column-gap:12px;padding:13px 16px;cursor:pointer}\n#climb-nlv .entry-sum:hover{background:rgba(255,255,255,.06)}\n#climb-nlv .entry-sum .dot{grid-row:1 \/ span 2;align-self:center}\n#climb-nlv .e-title{grid-column:2;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#climb-nlv .e-sub{grid-column:2;font-size:13px;color:var(--soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#climb-nlv .e-val{grid-column:3;grid-row:1 \/ span 2;align-self:center;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}\n#climb-nlv .e-caret{grid-column:4;grid-row:1 \/ span 2;align-self:center;width:18px;height:18px;color:var(--soft);transition:transform .15s}\n#climb-nlv .entry.open .e-caret{transform:rotate(180deg)}\n#climb-nlv .entry-edit{padding:6px 16px 18px}\n#climb-nlv .grid{display:grid;gap:14px 16px;grid-template-columns:1fr}\n@media (min-width:640px){\n#climb-nlv .grid{grid-template-columns:1fr 1fr}\n#climb-nlv .full{grid-column:1 \/ -1}\n}\n#climb-nlv .fl{display:block;font-size:13px;font-weight:500;color:var(--soft);margin:0 0 5px 2px}\n#climb-nlv input,#climb-nlv textarea,#climb-nlv select{width:100%;font-family:var(--font);font-size:16px;color:#fff;background:var(--field);\n  border:1px solid var(--line);border-radius:12px;padding:10px 13px;min-height:46px}\n#climb-nlv input[inputmode=\"decimal\"]{text-align:right;font-variant-numeric:tabular-nums}\n#climb-nlv textarea{resize:vertical;min-height:66px;line-height:1.45}\n#climb-nlv input::placeholder,#climb-nlv textarea::placeholder{color:rgba(255,255,255,.48)}\n#climb-nlv select option{color:#173A6B;background:#fff}\n#climb-nlv input:hover,#climb-nlv textarea:hover,#climb-nlv select:hover{border-color:rgba(255,255,255,.4)}\n#climb-nlv input:focus,#climb-nlv textarea:focus,#climb-nlv select:focus{outline:none;border-color:var(--yellow);box-shadow:0 0 0 3px rgba(255,196,107,.28);background:rgba(255,255,255,.14)}\n#climb-nlv .empty{font-size:15px;color:var(--soft);background:var(--card);border-radius:16px;padding:16px 18px;margin:0;max-width:62ch}\n#climb-nlv .next-row{margin-top:32px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}\n#climb-nlv .fine{font-size:12.5px;color:var(--faint);max-width:64ch;margin:30px 0 0}\n#climb-nlv .only-mobile{display:none}\n#climb-nlv .mstats{grid-template-columns:repeat(2,1fr);max-width:460px;margin-top:0}\n#climb-nlv .trust{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}\n#climb-nlv .trust li{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:500;background:var(--card);border-radius:999px;padding:6px 14px 6px 10px}\n#climb-nlv .trust li:last-child{background:none;padding:6px 4px}\n#climb-nlv .trust svg{width:15px;height:15px;color:var(--mint);flex:0 0 auto}\n#climb-nlv .linkbtn{appearance:none;background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--yellow);text-decoration:underline;text-underline-offset:3px;cursor:pointer}\n#climb-nlv .linkbtn.quiet{color:inherit;font-weight:500}\n#climb-nlv .offline-line{margin:14px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:14px;color:var(--soft)}\n#climb-nlv .offline-line span{margin-right:2px}\n#climb-nlv .pill-dl{text-decoration:none;appearance:none;font:inherit;font-size:13px;font-weight:600;color:#fff;background:transparent;border:1.5px solid rgba(255,255,255,.45);\n  border-radius:999px;padding:5px 13px 5px 9px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:background .15s}\n#climb-nlv .pill-dl:hover{background:rgba(255,255,255,.12)}\n#climb-nlv .pill-dl svg{width:16px;height:16px}\n#climb-nlv .pill-dl[aria-busy=\"true\"],#climb-nlv .tpl[aria-busy=\"true\"]{opacity:.6;cursor:progress}\n#climb-nlv .section{margin-top:40px;scroll-margin-top:90px}\n#climb-nlv .section h3{font-size:20px;font-weight:600;margin:0 0 6px}\n#climb-nlv .points{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;max-width:66ch}\n#climb-nlv .points li{display:grid;grid-template-columns:20px 1fr;gap:10px;font-size:14px;color:var(--soft)}\n#climb-nlv .points li b{color:#fff;font-weight:600}\n#climb-nlv .points svg{width:18px;height:18px;color:var(--mint);margin-top:2px}\n#climb-nlv .tpl-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin-top:16px;max-width:620px}\n#climb-nlv .tpl{text-decoration:none;appearance:none;font:inherit;color:#fff;text-align:left;cursor:pointer;background:var(--card);border:1.5px solid rgba(255,255,255,.28);\n  border-radius:14px;padding:11px 14px;display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:center;transition:background .15s}\n#climb-nlv .tpl:hover{background:rgba(255,255,255,.16)}\n#climb-nlv .tpl .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--on-yellow)}\n#climb-nlv .tpl b{display:block;font-weight:600;font-size:14px}\n#climb-nlv .tpl small{display:block;font-size:12px;color:var(--soft)}\n#climb-nlv .side-cta{display:block;margin-top:16px;padding:14px 14px 13px;border-radius:14px;background:rgba(255,196,107,.14);color:#fff;text-decoration:none;font-size:13px;line-height:1.45}\n#climb-nlv .side-cta:hover{background:rgba(255,196,107,.22)}\n#climb-nlv .side-cta .k,#climb-nlv .cta .k{display:block;font-size:11.5px;font-weight:600;color:var(--yellow);margin:0 0 3px}\n#climb-nlv .side-cta b{display:block;font-size:14px;margin-bottom:3px}\n#climb-nlv .side-cta span{display:block;color:var(--soft)}\n#climb-nlv .side-cta .go{color:var(--yellow);font-weight:600;margin-top:6px}\n#climb-nlv .seg{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 26px;max-width:560px}\n#climb-nlv .seg button{appearance:none;font:inherit;color:#fff;text-align:left;cursor:pointer;background:var(--card);border:1.5px solid transparent;border-radius:14px;padding:11px 14px}\n#climb-nlv .seg button:hover{background:rgba(255,255,255,.16)}\n#climb-nlv .seg button[aria-checked=\"true\"]{border-color:var(--yellow);background:rgba(255,196,107,.12)}\n#climb-nlv .seg b{display:block;font-size:15px;font-weight:600}\n#climb-nlv .seg button[aria-checked=\"true\"] b{color:var(--yellow)}\n#climb-nlv .seg small{display:block;font-size:12.5px;color:var(--soft)}\n#climb-nlv .nav-more{appearance:none;font:inherit;font-size:13px;font-weight:600;color:var(--yellow);background:none;border:1.5px dashed rgba(255,196,107,.5);border-radius:12px;padding:7px 10px;margin:8px -6px 0;text-align:left;cursor:pointer}\n#climb-nlv .nav-more:hover{background:rgba(255,196,107,.1)}\n#climb-nlv .tips{background:var(--card);border-radius:16px;padding:14px 18px;margin:-8px 0 26px;max-width:70ch}\n#climb-nlv .tips summary{cursor:pointer;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px}\n#climb-nlv .tips summary::-webkit-details-marker{display:none}\n#climb-nlv .tips summary::after{content:\"\";width:7px;height:7px;margin-left:2px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}\n#climb-nlv .tips[open] summary::after{transform:rotate(-135deg) translateY(-1px)}\n#climb-nlv .tips ul{margin:12px 0 2px;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--soft)}\n#climb-nlv .tips li b{color:#fff;font-weight:600}\n#climb-nlv .unlock{margin-top:16px;background:var(--card2);border-radius:14px;padding:14px 16px;max-width:520px}\n#climb-nlv .unlock .row2{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}\n#climb-nlv .unlock input{flex:1 1 200px}\n#climb-nlv .overlay{position:fixed;inset:0;z-index:99998;background:rgba(8,24,48,.55);display:grid;place-items:center;padding:16px;overflow:auto}\n#climb-nlv .overlay[hidden]{display:none}\n#climb-nlv .done-card{position:relative;width:100%;max-width:520px;border-radius:24px;padding:28px 26px 26px;color:#fff;\n  background:linear-gradient(160deg,#2C7CC0 0%,#1B4A88 100%);box-shadow:0 20px 60px rgba(5,20,45,.45)}\n#climb-nlv .done-card h2{font-size:26px;font-weight:600;line-height:1.15;margin:0 0 14px}\n#climb-nlv .done-x{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:50%;border:0;background:var(--card2);color:#fff;font-size:24px;line-height:1;cursor:pointer}\n#climb-nlv .done-x:hover{background:rgba(255,255,255,.24)}\n#climb-nlv .steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14.5px;color:var(--soft)}\n#climb-nlv .steps b{color:#fff;font-weight:600}\n#climb-nlv .cta{margin-top:22px;background:rgba(255,255,255,.12);border-radius:18px;padding:18px 18px 20px}\n#climb-nlv .cta h3{font-size:18px;font-weight:600;margin:0 0 6px}\n#climb-nlv .cta p{font-size:14px;color:var(--soft);margin:0 0 14px}\n#climb-nlv .cta .btn{text-decoration:none;display:inline-flex;align-items:center}\n#climb-nlv .seo{margin-top:56px;max-width:780px}\n#climb-nlv .seo h2{font-size:clamp(22px,3vw,28px);font-weight:600;line-height:1.2;letter-spacing:-.01em;margin:44px 0 12px}\n#climb-nlv .seo h2:first-child{margin-top:0}\n#climb-nlv .seo p{color:var(--soft);font-size:16px;margin:0 0 12px;max-width:68ch}\n#climb-nlv .seo-list{margin:0 0 12px;padding-left:20px;display:flex;flex-direction:column;gap:10px;color:var(--soft);font-size:16px;max-width:68ch}\n#climb-nlv .seo-list b{color:#fff;font-weight:600}\n#climb-nlv .seo .tpl-list{margin:18px 0 0}\n#climb-nlv .faqs{display:flex;flex-direction:column;gap:8px;margin-top:6px}\n#climb-nlv .faq{background:var(--card);border-radius:16px;padding:14px 18px}\n#climb-nlv .faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:14px}\n#climb-nlv .faq summary::-webkit-details-marker{display:none}\n#climb-nlv .faq summary::after{content:\"\";flex:0 0 auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}\n#climb-nlv .faq[open] summary::after{transform:rotate(-135deg)}\n#climb-nlv .faq h3{font-size:16px;font-weight:600;margin:0;line-height:1.35}\n#climb-nlv .faq p{margin:10px 0 2px;font-size:15px}\n#climb-nlv .steps2{margin:6px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--soft);max-width:66ch}\n#climb-nlv .steps2 b{color:#fff;font-weight:600}\n#climb-nlv footer{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:32px;font-size:13px;color:var(--faint)}\n#climb-nlv .bar{display:none}\n#climb-nlv .msg{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#fff;color:var(--on-yellow);font-weight:600;\n  padding:10px 18px;border-radius:999px;font-size:14px;max-width:calc(100% - 32px);z-index:99999;opacity:0;\n  pointer-events:none;transition:opacity .2s;box-shadow:0 6px 24px rgba(10,30,60,.25);z-index:99999}\n#climb-nlv .msg.show{opacity:1}\n#climb-nlv .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n@media (max-width:999px){\n#climb-nlv{padding-bottom:96px}\n#climb-nlv .wrap{padding:var(--nlv-pad-top,26px) 16px 32px}\n#climb-nlv .brand{margin-bottom:28px}\n#climb-nlv header{margin-bottom:20px}\n#climb-nlv .lede{font-size:15px}\n#climb-nlv .layout{grid-template-columns:minmax(0,1fr);gap:0}\n#climb-nlv .layout > *{min-width:0}\n#climb-nlv .side{position:sticky;top:var(--nlv-top,0px);z-index:5;max-height:none;overflow:visible;margin:0 -16px;padding:10px 0;border-radius:0;\n    background:rgba(33,92,158,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}\n#climb-nlv .side .label,#climb-nlv .side .stats,#climb-nlv .side .actions,#climb-nlv .side .hint,#climb-nlv .side .side-cta{display:none}\n#climb-nlv .nav-more{flex:0 0 auto;margin:0;border-radius:999px;padding:8px 14px}\n#climb-nlv .seg{grid-template-columns:1fr}\n#climb-nlv .nav{flex-direction:row;overflow-x:auto;gap:6px;padding:0 16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}\n#climb-nlv .nav::-webkit-scrollbar{display:none}\n#climb-nlv .nav-item{flex:0 0 auto;margin:0;grid-template-columns:10px auto auto;gap:8px;border-radius:999px;background:var(--card);padding:8px 14px}\n#climb-nlv .stage{margin-top:14px;padding:26px 18px 30px;min-height:0;border-radius:20px}\n#climb-nlv .entry-sum{padding:12px 14px}\n#climb-nlv .entry-edit{padding:4px 14px 16px}\n#climb-nlv .only-mobile{display:block}\n#climb-nlv .trust li{font-size:12.5px;padding:5px 12px 5px 9px}\n#climb-nlv .bar{display:block;position:fixed;left:0;right:0;bottom:0;z-index:99997;background:rgba(27,74,136,.94);\n    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid rgba(255,255,255,.14)}\n#climb-nlv .bar-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px calc(10px + env(safe-area-inset-bottom))}\n#climb-nlv .bar-stat{font-size:12px;color:var(--soft);line-height:1.4;min-width:0}\n#climb-nlv .bar-stat b{font-weight:600;color:#fff}\n#climb-nlv .bar .btn{flex:0 0 auto;white-space:nowrap}\n#climb-nlv .msg{bottom:88px}\n}\n@media (prefers-reduced-motion: reduce){\n#climb-nlv,#climb-nlv *{transition:none!important;scroll-behavior:auto!important}\n}<\/style>\n<div id=\"climb-nlv\" lang=\"de\">\n<div class=\"wrap\">\n<header>\n    <h1>Nachlassverzeichnis erstellen<\/h1>\n    <p class=\"lede\">Kostenloses Tool mit Excel- und PDF-Vorlage: Erfasse Verm\u00f6gen, Schulden, Vertr\u00e4ge und digitale Zug\u00e4nge an einem Ort, zur Vorsorge f\u00fcr dich und deine Familie oder als Erbin oder Erbe nach einem Todesfall. Am Ende l\u00e4dst du ein fertiges Nachlassverzeichnis als PDF herunter.<\/p>\n    <ul class=\"trust\" aria-label=\"Datenschutz\">\n      <li><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"4.5\" y=\"10.5\" width=\"15\" height=\"10\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M8 10.5V8a4 4 0 0 1 8 0v2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg><span>Kein Konto<\/span><\/li>\n      <li><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"4.5\" y=\"10.5\" width=\"15\" height=\"10\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M8 10.5V8a4 4 0 0 1 8 0v2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg><span>Kein Upload<\/span><\/li>\n      <li><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"4.5\" y=\"10.5\" width=\"15\" height=\"10\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M8 10.5V8a4 4 0 0 1 8 0v2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg><span>Daten bleiben auf deinem Ger\u00e4t<\/span><\/li>\n      <li><button type=\"button\" class=\"linkbtn\" data-privacy>So funktioniert das<\/button><\/li>\n    <\/ul>\n    <p class=\"offline-line\"><span>Lieber offline arbeiten?<\/span>\n      <a class=\"pill-dl\" data-tpl=\"xlsx\" href=\"https:\/\/goclimb.com\/wp-content\/uploads\/2026\/09\/Nachlassverzeichnis-Vorlage.xlsx\" download><svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 3.5v9m0 0l-3.5-3.5M10 12.5l3.5-3.5M4 15.5h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Nachlassverzeichnis als Excel<\/a>\n      <a class=\"pill-dl\" data-tpl=\"pdf\" href=\"https:\/\/goclimb.com\/wp-content\/uploads\/2026\/09\/Nachlassverzeichnis-Vorlage.pdf\" download><svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 3.5v9m0 0l-3.5-3.5M10 12.5l3.5-3.5M4 15.5h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>PDF-Vorlage zum Ausdrucken<\/a>\n    <\/p>\n  <\/header>\n\n\n  <div class=\"layout\">\n    <aside class=\"card side\">\n      <p class=\"label\">Register<\/p>\n      <nav class=\"nav\" id=\"nav\" aria-label=\"Register\"><\/nav>\n      <div class=\"stats\" id=\"sideStats\"><\/div>\n      <div class=\"actions\"><button type=\"button\" class=\"btn solid js-pdf\">PDF erstellen<\/button><\/div>\n      <p class=\"hint\" id=\"saveNote\"><\/p>\n      <a class=\"side-cta\" href=\"https:\/\/goclimb.com\/?utm_source=nachlassverzeichnis&#038;utm_medium=tool&#038;utm_campaign=nachlassverzeichnis\" target=\"_blank\" rel=\"noopener\">\n        <span class=\"k\">Von Climb<\/span>\n        <b>Mehr \u00dcberblick im Alltag?<\/b>\n        <span>Die Climb-App hilft dir mit kurzen t\u00e4glichen Impulsen, bessere Geldgewohnheiten aufzubauen.<\/span>\n        <span class=\"go\">App entdecken \u2192<\/span>\n      <\/a>\n    <\/aside>\n    <main class=\"card stage\" id=\"panel\" tabindex=\"-1\"><\/main>\n  <\/div>\n\n  <section class=\"seo\" aria-labelledby=\"seoTitle\">\n    <h2 id=\"seoTitle\">Nachlassverzeichnis: Vorlage, Tool und Excel in einem<\/h2>\n    <p>Ein Nachlassverzeichnis ist eine vollst\u00e4ndige Aufstellung von Verm\u00f6gen und Schulden einer Person. Gebraucht wird es in zwei Situationen: zur Vorsorge, damit Angeh\u00f6rige im Ernstfall schnell den \u00dcberblick haben, und nach einem Todesfall, wenn Erben den Nachlass erfassen m\u00fcssen. Mit dem Tool oben erstellst du beides kostenlos im Browser. Wer lieber offline arbeitet, nutzt die Nachlassverzeichnis-Vorlage als Excel-Datei oder als PDF-Template zum Ausdrucken.<\/p>\n\n    <h2>Wann brauche ich ein Nachlassverzeichnis?<\/h2>\n    <ul class=\"seo-list\">\n      <li><b>Zur Vorsorge.<\/b> Wer Konten, Versicherungen, Vertr\u00e4ge und Zug\u00e4nge aufschreibt, erspart Angeh\u00f6rigen im Ernstfall wochenlanges Suchen. In dieser Form hei\u00dft das Verzeichnis oft auch Notfallordner.<\/li>\n      <li><b>F\u00fcr Pflichtteilsberechtigte.<\/b> Wer pflichtteilsberechtigt, aber nicht Erbe ist, kann vom Erben Auskunft \u00fcber den Nachlass verlangen, auch in Form eines Nachlassverzeichnisses (\u00a7 2314 BGB).<\/li>\n      <li><b>F\u00fcr den Erbschein.<\/b> Das Nachlassgericht fragt nach dem Wert des Nachlasses, weil sich die Geb\u00fchren danach richten.<\/li>\n      <li><b>F\u00fcr das Finanzamt.<\/b> F\u00fcr die Erbschaftsteuer z\u00e4hlt der Wert des Nachlasses am Todestag. Ein sauberes Verzeichnis ist die Grundlage f\u00fcr die Erkl\u00e4rung.<\/li>\n      <li><b>In der Erbengemeinschaft.<\/b> Erben mehrere Personen, schafft eine gemeinsame Aufstellung Klarheit, bevor der Nachlass aufgeteilt wird.<\/li>\n    <\/ul>\n\n    <h2>Was geh\u00f6rt in ein Nachlassverzeichnis?<\/h2>\n    <p>Ein vollst\u00e4ndiges Nachlassverzeichnis hat drei Teile, so wie auch Anw\u00e4lte und Notare es aufbauen:<\/p>\n    <ul class=\"seo-list\">\n      <li><b>Aktiva:<\/b> Bankkonten, Sparb\u00fccher, Depots, Bausparvertr\u00e4ge, Immobilien, Fahrzeuge, Wertgegenst\u00e4nde, Unternehmensanteile und Forderungen, etwa Darlehen an Dritte oder Steuererstattungen.<\/li>\n      <li><b>Passiva:<\/b> Schulden der verstorbenen Person wie Kredite, offene Rechnungen oder Steuernachzahlungen, dazu die Erbfallkosten, etwa f\u00fcr Bestattung, Grabstein und Nachlassgericht.<\/li>\n      <li><b>Schenkungen zu Lebzeiten:<\/b> Gr\u00f6\u00dfere Schenkungen der letzten zehn Jahre k\u00f6nnen den Pflichtteil erh\u00f6hen und bei der Erbschaftsteuer mitz\u00e4hlen.<\/li>\n    <\/ul>\n    <p>Ma\u00dfgeblich sind die Werte am Todestag, und zu jedem Posten geh\u00f6rt ein Beleg wie ein Kontoauszug, ein Gutachten oder eine Rechnung. Zur Vorsorge kommen Vertr\u00e4ge, Abos, Versicherungen, digitale Konten und pers\u00f6nliche W\u00fcnsche dazu, also alles, was Angeh\u00f6rige sp\u00e4ter k\u00fcndigen oder regeln m\u00fcssen.<\/p>\n\n    <h2>Nachlassverzeichnis als Excel-Vorlage oder PDF-Template<\/h2>\n    <p>Du willst nichts online eingeben? Dann lade dir die kostenlose Vorlage herunter. Die Excel-Vorlage hat ein Tabellenblatt pro Bereich, Auswahllisten und automatische Summen f\u00fcr Aktiva, Passiva und den Nachlass netto. Das PDF-Template ist zum Ausdrucken und Ausf\u00fcllen von Hand gedacht.<\/p>\n    <div class=\"tpl-list\">\n      <a class=\"tpl\" data-tpl=\"xlsx\" href=\"https:\/\/goclimb.com\/wp-content\/uploads\/2026\/09\/Nachlassverzeichnis-Vorlage.xlsx\" download><span class=\"ic\" style=\"background:var(--mint)\">XLS<\/span><span><b>Nachlassverzeichnis Excel-Vorlage<\/b><small>Kostenlos, mit automatischen Summen<\/small><\/span><\/a>\n      <a class=\"tpl\" data-tpl=\"pdf\" href=\"https:\/\/goclimb.com\/wp-content\/uploads\/2026\/09\/Nachlassverzeichnis-Vorlage.pdf\" download><span class=\"ic\" style=\"background:var(--yellow)\">PDF<\/span><span><b>Nachlassverzeichnis PDF-Vorlage<\/b><small>Zum Ausdrucken und Ausf\u00fcllen per Hand<\/small><\/span><\/a>\n    <\/div>\n\n    <h2>H\u00e4ufige Fragen zum Nachlassverzeichnis<\/h2>\n    <div class=\"faqs\">\n      <details class=\"faq\"><summary><h3>Ist das Nachlassverzeichnis-Tool kostenlos?<\/h3><\/summary><p>Ja. Das Online-Tool, die Excel-Vorlage und die PDF-Vorlage sind kostenlos und ohne Anmeldung nutzbar.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Muss ein Nachlassverzeichnis vom Notar erstellt werden?<\/h3><\/summary><p>Nein, in der Regel reicht ein selbst erstelltes Verzeichnis. Pflichtteilsberechtigte k\u00f6nnen aber verlangen, dass ein Notar das Nachlassverzeichnis aufnimmt (\u00a7 2314 BGB). Die Kosten daf\u00fcr tr\u00e4gt der Nachlass.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Welcher Stichtag gilt f\u00fcr die Werte im Nachlassverzeichnis?<\/h3><\/summary><p>Nach einem Todesfall gilt der Todestag. Kontost\u00e4nde zum Todestag kannst du bei der jeweiligen Bank erfragen. Nutzt du das Verzeichnis zur Vorsorge, tr\u00e4gst du aktuelle Werte ein und aktualisierst sie regelm\u00e4\u00dfig.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Was geh\u00f6rt in ein Nachlassverzeichnis?<\/h3><\/summary><p>Alle Verm\u00f6genswerte (Aktiva) wie Konten, Depots, Immobilien, Fahrzeuge und Forderungen, alle Schulden (Passiva) einschlie\u00dflich der Erbfallkosten wie Bestattung und Grabstein sowie gr\u00f6\u00dfere Schenkungen der letzten zehn Jahre. Zu jedem Posten geh\u00f6rt ein Beleg.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Ersetzt ein Nachlassverzeichnis das Testament?<\/h3><\/summary><p>Nein. Das Nachlassverzeichnis listet auf, was vorhanden ist. Wer was bekommt, regelt ein Testament. Dieses muss handschriftlich verfasst oder notariell beurkundet werden.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Gibt es das Nachlassverzeichnis auch als Excel-Vorlage?<\/h3><\/summary><p>Ja. Die kostenlose Excel-Vorlage enth\u00e4lt ein Tabellenblatt pro Bereich, Auswahllisten und automatische Summen f\u00fcr Aktiva, Passiva und den Nachlass netto. Sie funktioniert in Excel und LibreOffice.<\/p><\/details>\n      <details class=\"faq\"><summary><h3>Werden meine Daten gespeichert?<\/h3><\/summary><p>Nicht bei uns. Deine Eingaben bleiben im Browser auf deinem Ger\u00e4t, und auch das PDF wird dort erzeugt. Es gibt kein Konto und keinen Upload.<\/p><\/details>\n    <\/div>\n    <p class=\"fine\">Die Informationen auf dieser Seite ersetzen keine Rechtsberatung. Stand: September 2026.<\/p>\n  <\/section>\n\n  <footer>\n    <span>Kein Ersatz f\u00fcr rechtliche Beratung. <button type=\"button\" class=\"linkbtn quiet\" data-privacy>Datenschutz<\/button><\/span>\n    <a class=\"site\" href=\"https:\/\/goclimb.com\" target=\"_blank\" rel=\"noopener\">goclimb.com<\/a>\n  <\/footer>\n<\/div>\n\n<div class=\"bar\">\n  <div class=\"bar-in\">\n    <div class=\"bar-stat\" id=\"barStat\"><\/div>\n    <button type=\"button\" class=\"btn solid js-pdf\">PDF erstellen<\/button>\n  <\/div>\n<\/div>\n<div class=\"msg\" id=\"msg\" role=\"status\" aria-live=\"polite\"><\/div>\n<div class=\"overlay\" id=\"done\" hidden>\n  <div class=\"done-card\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"doneTitle\">\n    <button type=\"button\" class=\"done-x\" data-close aria-label=\"Schlie\u00dfen\">\u00d7<\/button>\n    <div id=\"doneBody\"><\/div>\n  <\/div>\n<\/div>\n<input type=\"file\" id=\"importFile\" accept=\".json,application\/json\" class=\"sr\" tabindex=\"-1\" aria-hidden=\"true\">\n\n<script>\n(function(){var t=new TextDecoder().decode(Uint8Array.from(atob(\"LyoganNQREYgMi41LjEsIE1JVC1MaXplbnogKi8KLyoqIEBsaWNlbnNlCiAqCiAqIGpzUERGIC0gUERGIERvY3VtZW50IGNyZWF0aW9uIGZyb20gSmF2YVNjcmlwdAogKiBWZXJzaW9uIDIuNS4xIEJ1aWx0IG9uIDIwMjItMDEtMjhUMTU6Mzc6NTcuNzg5WgogKiAgICAgICAgICAgICAgICAgICAgICBDb21taXRJRCAwMDAwMDAwMAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMSBKYW1lcyBIYWxsIDxqYW1lc0BwYXJhbGwuYXg+LCBodHRwczovL2dpdGh1Yi5jb20vTXJSaW8vanNQREYKICogICAgICAgICAgICAgICAyMDE1LTIwMjEgeVdvcmtzIEdtYkgsIGh0dHA6Ly93d3cueXdvcmtzLmNvbQogKiAgICAgICAgICAgICAgIDIwMTUtMjAyMSBMdWthcyBIb2xsw6RuZGVyIDxsdWthcy5ob2xsYWVuZGVyQHl3b3Jrcy5jb20+LCBodHRwczovL2dpdGh1Yi5jb20vSGFja2JyZXR0WFhYCiAqICAgICAgICAgICAgICAgMjAxNi0yMDE4IEFyYXMgQWJiYXNpIDxhcmFzLmFiYmFzaUBnbWFpbC5jb20+CiAqICAgICAgICAgICAgICAgMjAxMCBBYXJvbiBTcGlrZSwgaHR0cHM6Ly9naXRodWIuY29tL2Fjc3Bpa2UKICogICAgICAgICAgICAgICAyMDEyIFdpbGxvdyBTeXN0ZW1zIENvcnBvcmF0aW9uLCBodHRwczovL2dpdGh1Yi5jb20vd2lsbG93c3lzdGVtcwogKiAgICAgICAgICAgICAgIDIwMTIgUGFibG8gSGVzcywgaHR0cHM6Ly9naXRodWIuY29tL3BhYmxvaGVzcwogKiAgICAgICAgICAgICAgIDIwMTIgRmxvcmlhbiBKZW5ldHQsIGh0dHBzOi8vZ2l0aHViLmNvbS9mamVuZXR0CiAqICAgICAgICAgICAgICAgMjAxMyBXYXJyZW4gV2Vja2Vzc2VyLCBodHRwczovL2dpdGh1Yi5jb20vd2FycmVud2Vja2Vzc2VyCiAqICAgICAgICAgICAgICAgMjAxMyBZb3Vzc2VmIEJlZGRhZCwgaHR0cHM6Ly9naXRodWIuY29tL2xpZm9mCiAqICAgICAgICAgICAgICAgMjAxMyBMZWUgRHJpc2NvbGwsIGh0dHBzOi8vZ2l0aHViLmNvbS9sc2RyaXNjb2xsCiAqICAgICAgICAgICAgICAgMjAxMyBTdGVmYW4gU2xvbmV2c2tpeSwgaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZzbG9uCiAqICAgICAgICAgICAgICAgMjAxMyBKZXJlbXkgTW9yZWwsIGh0dHBzOi8vZ2l0aHViLmNvbS9qbW9yZWwKICogICAgICAgICAgICAgICAyMDEzIENocmlzdG9waCBIYXJ0bWFubiwgaHR0cHM6Ly9naXRodWIuY29tL2NocmlzLXJvY2sKICogICAgICAgICAgICAgICAyMDE0IEp1YW4gUGFibG8gR2F2aXJpYSwgaHR0cHM6Ly9naXRodWIuY29tL2p1YW5wZ2F2aXJpYQogKiAgICAgICAgICAgICAgIDIwMTQgSmFtZXMgTWFrZXMsIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2xsYXJ1dwogKiAgICAgICAgICAgICAgIDIwMTQgRGllZ28gQ2Fzb3JyYW4sIGh0dHBzOi8vZ2l0aHViLmNvbS9kaWVnb2NyCiAqICAgICAgICAgICAgICAgMjAxNCBTdGV2ZW4gU3B1bmdpbiwgaHR0cHM6Ly9naXRodWIuY29tL0ZsYW1lbmNvCiAqICAgICAgICAgICAgICAgMjAxNCBLZW5uZXRoIEdsYXNzZXksIGh0dHBzOi8vZ2l0aHViLmNvbS9HYXZ2ZXJzCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQogKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgogKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAogKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCiAqIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCiAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKgogKiBDb250cmlidXRvcihzKToKICogICAgc2llZmtlbmosIGFod29sZiwgcmlja3lndSwgTWlkbml0aCwgc2FpbnRjbGFpciwgZWFwYXJhbmdvLAogKiAgICBraW0zZXIsIG1mbywgYWxub3J0aCwgRmxhbWVuY28KICovCgohZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP2UoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sZSk6ZSgodD10fHxzZWxmKS5qc3BkZj17fSl9KHRoaXMsKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQpe3JldHVybihlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSkodCl9dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw\/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXN9KCk7ZnVuY3Rpb24gbigpe3IuY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIHIuY29uc29sZS5sb2cmJnIuY29uc29sZS5sb2cuYXBwbHkoci5jb25zb2xlLGFyZ3VtZW50cyl9dmFyIGk9e2xvZzpuLHdhcm46ZnVuY3Rpb24odCl7ci5jb25zb2xlJiYoImZ1bmN0aW9uIj09dHlwZW9mIHIuY29uc29sZS53YXJuP3IuY29uc29sZS53YXJuLmFwcGx5KHIuY29uc29sZSxhcmd1bWVudHMpOm4uY2FsbChudWxsLGFyZ3VtZW50cykpfSxlcnJvcjpmdW5jdGlvbih0KXtyLmNvbnNvbGUmJigiZnVuY3Rpb24iPT10eXBlb2Ygci5jb25zb2xlLmVycm9yP3IuY29uc29sZS5lcnJvci5hcHBseShyLmNvbnNvbGUsYXJndW1lbnRzKTpuKHQpKX19O2Z1bmN0aW9uIGEodCxlLHIpe3ZhciBuPW5ldyBYTUxIdHRwUmVxdWVzdDtuLm9wZW4oIkdFVCIsdCksbi5yZXNwb25zZVR5cGU9ImJsb2IiLG4ub25sb2FkPWZ1bmN0aW9uKCl7bChuLnJlc3BvbnNlLGUscil9LG4ub25lcnJvcj1mdW5jdGlvbigpe2kuZXJyb3IoImNvdWxkIG5vdCBkb3dubG9hZCBmaWxlIil9LG4uc2VuZCgpfWZ1bmN0aW9uIG8odCl7dmFyIGU9bmV3IFhNTEh0dHBSZXF1ZXN0O2Uub3BlbigiSEVBRCIsdCwhMSk7dHJ5e2Uuc2VuZCgpfWNhdGNoKHQpe31yZXR1cm4gZS5zdGF0dXM+PTIwMCYmZS5zdGF0dXM8PTI5OX1mdW5jdGlvbiBzKHQpe3RyeXt0LmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoImNsaWNrIikpfWNhdGNoKHIpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO2UuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwhMCwhMCx3aW5kb3csMCwwLDAsODAsMjAsITEsITEsITEsITEsMCxudWxsKSx0LmRpc3BhdGNoRXZlbnQoZSl9fXZhciBjLHUsbD1yLnNhdmVBc3x8KCJvYmplY3QiIT09KCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93PyJ1bmRlZmluZWQiOmUod2luZG93KSl8fHdpbmRvdyE9PXI\/ZnVuY3Rpb24oKXt9OiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEFuY2hvckVsZW1lbnQmJiJkb3dubG9hZCJpbiBIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGU\/ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXIuVVJMfHxyLndlYmtpdFVSTCxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtlPWV8fHQubmFtZXx8ImRvd25sb2FkIixjLmRvd25sb2FkPWUsYy5yZWw9Im5vb3BlbmVyIiwic3RyaW5nIj09dHlwZW9mIHQ\/KGMuaHJlZj10LGMub3JpZ2luIT09bG9jYXRpb24ub3JpZ2luP28oYy5ocmVmKT9hKHQsZSxuKTpzKGMsYy50YXJnZXQ9Il9ibGFuayIpOnMoYykpOihjLmhyZWY9aS5jcmVhdGVPYmplY3RVUkwodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnJldm9rZU9iamVjdFVSTChjLmhyZWYpfSksNGU0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3MoYyl9KSwwKSl9OiJtc1NhdmVPck9wZW5CbG9iImluIG5hdmlnYXRvcj9mdW5jdGlvbih0LHIsbil7aWYocj1yfHx0Lm5hbWV8fCJkb3dubG9hZCIsInN0cmluZyI9PXR5cGVvZiB0KWlmKG8odCkpYSh0LHIsbik7ZWxzZXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Yy5ocmVmPXQsYy50YXJnZXQ9Il9ibGFuayIsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzKGMpfSkpfWVsc2UgbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoZnVuY3Rpb24odCxyKXtyZXR1cm4gdm9pZCAwPT09cj9yPXthdXRvQm9tOiExfToib2JqZWN0IiE9PWUocikmJihpLndhcm4oIkRlcHJlY2F0ZWQ6IEV4cGVjdGVkIHRoaXJkIGFyZ3VtZW50IHRvIGJlIGEgb2JqZWN0Iikscj17YXV0b0JvbTohcn0pLHIuYXV0b0JvbSYmL15ccyooPzp0ZXh0XC9cUyp8YXBwbGljYXRpb25cL3htbHxcUypcL1xTKlwreG1sKVxzKjsuKmNoYXJzZXRccyo9XHMqdXRmLTgvaS50ZXN0KHQudHlwZSk\/bmV3IEJsb2IoW1N0cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpLHRdLHt0eXBlOnQudHlwZX0pOnR9KHQsbikscil9OmZ1bmN0aW9uKHQsbixpLG8pe2lmKChvPW98fG9wZW4oIiIsIl9ibGFuayIpKSYmKG8uZG9jdW1lbnQudGl0bGU9by5kb2N1bWVudC5ib2R5LmlubmVyVGV4dD0iZG93bmxvYWRpbmcuLi4iKSwic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGEodCxuLGkpO3ZhciBzPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iPT09dC50eXBlLGM9L2NvbnN0cnVjdG9yL2kudGVzdChyLkhUTUxFbGVtZW50KXx8ci5zYWZhcmksdT0vQ3JpT1NcL1tcZF0rLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKCh1fHxzJiZjKSYmIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBGaWxlUmVhZGVyPyJ1bmRlZmluZWQiOmUoRmlsZVJlYWRlcikpKXt2YXIgbD1uZXcgRmlsZVJlYWRlcjtsLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciB0PWwucmVzdWx0O3Q9dT90OnQucmVwbGFjZSgvXmRhdGE6W147XSo7LywiZGF0YTphdHRhY2htZW50L2ZpbGU7Iiksbz9vLmxvY2F0aW9uLmhyZWY9dDpsb2NhdGlvbj10LG89bnVsbH0sbC5yZWFkQXNEYXRhVVJMKHQpfWVsc2V7dmFyIGg9ci5VUkx8fHIud2Via2l0VVJMLGY9aC5jcmVhdGVPYmplY3RVUkwodCk7bz9vLmxvY2F0aW9uPWY6bG9jYXRpb24uaHJlZj1mLG89bnVsbCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2gucmV2b2tlT2JqZWN0VVJMKGYpfSksNGU0KX19KTsKLyoqCiAgICogQSBjbGFzcyB0byBwYXJzZSBjb2xvciB2YWx1ZXMKICAgKiBAYXV0aG9yIFN0b3lhbiBTdGVmYW5vdiA8c3N0b29AZ21haWwuY29tPgogICAqIHtAbGluayAgIGh0dHA6Ly93d3cucGhwaWVkLmNvbS9yZ2ItY29sb3ItcGFyc2VyLWluLWphdmFzY3JpcHQvfQogICAqIEBsaWNlbnNlIFVzZSBpdCBpZiB5b3UgbGlrZSBpdAogICAqL2Z1bmN0aW9uIGgodCl7dmFyIGU7dD10fHwiIix0aGlzLm9rPSExLCIjIj09dC5jaGFyQXQoMCkmJih0PXQuc3Vic3RyKDEsNikpO3Q9e2FsaWNlYmx1ZToiZjBmOGZmIixhbnRpcXVld2hpdGU6ImZhZWJkNyIsYXF1YToiMDBmZmZmIixhcXVhbWFyaW5lOiI3ZmZmZDQiLGF6dXJlOiJmMGZmZmYiLGJlaWdlOiJmNWY1ZGMiLGJpc3F1ZToiZmZlNGM0IixibGFjazoiMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiZmZlYmNkIixibHVlOiIwMDAwZmYiLGJsdWV2aW9sZXQ6IjhhMmJlMiIsYnJvd246ImE1MmEyYSIsYnVybHl3b29kOiJkZWI4ODciLGNhZGV0Ymx1ZToiNWY5ZWEwIixjaGFydHJldXNlOiI3ZmZmMDAiLGNob2NvbGF0ZToiZDI2OTFlIixjb3JhbDoiZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiNjQ5NWVkIixjb3Juc2lsazoiZmZmOGRjIixjcmltc29uOiJkYzE0M2MiLGN5YW46IjAwZmZmZiIsZGFya2JsdWU6IjAwMDA4YiIsZGFya2N5YW46IjAwOGI4YiIsZGFya2dvbGRlbnJvZDoiYjg4NjBiIixkYXJrZ3JheToiYTlhOWE5IixkYXJrZ3JlZW46IjAwNjQwMCIsZGFya2toYWtpOiJiZGI3NmIiLGRhcmttYWdlbnRhOiI4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiI1NTZiMmYiLGRhcmtvcmFuZ2U6ImZmOGMwMCIsZGFya29yY2hpZDoiOTkzMmNjIixkYXJrcmVkOiI4YjAwMDAiLGRhcmtzYWxtb246ImU5OTY3YSIsZGFya3NlYWdyZWVuOiI4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IjQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIwMGNlZDEiLGRhcmt2aW9sZXQ6Ijk0MDBkMyIsZGVlcHBpbms6ImZmMTQ5MyIsZGVlcHNreWJsdWU6IjAwYmZmZiIsZGltZ3JheToiNjk2OTY5Iixkb2RnZXJibHVlOiIxZTkwZmYiLGZlbGRzcGFyOiJkMTkyNzUiLGZpcmVicmljazoiYjIyMjIyIixmbG9yYWx3aGl0ZToiZmZmYWYwIixmb3Jlc3RncmVlbjoiMjI4YjIyIixmdWNoc2lhOiJmZjAwZmYiLGdhaW5zYm9ybzoiZGNkY2RjIixnaG9zdHdoaXRlOiJmOGY4ZmYiLGdvbGQ6ImZmZDcwMCIsZ29sZGVucm9kOiJkYWE1MjAiLGdyYXk6IjgwODA4MCIsZ3JlZW46IjAwODAwMCIsZ3JlZW55ZWxsb3c6ImFkZmYyZiIsaG9uZXlkZXc6ImYwZmZmMCIsaG90cGluazoiZmY2OWI0IixpbmRpYW5yZWQ6ImNkNWM1YyIsaW5kaWdvOiI0YjAwODIiLGl2b3J5OiJmZmZmZjAiLGtoYWtpOiJmMGU2OGMiLGxhdmVuZGVyOiJlNmU2ZmEiLGxhdmVuZGVyYmx1c2g6ImZmZjBmNSIsbGF3bmdyZWVuOiI3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoiZmZmYWNkIixsaWdodGJsdWU6ImFkZDhlNiIsbGlnaHRjb3JhbDoiZjA4MDgwIixsaWdodGN5YW46ImUwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ImZhZmFkMiIsbGlnaHRncmV5OiJkM2QzZDMiLGxpZ2h0Z3JlZW46IjkwZWU5MCIsbGlnaHRwaW5rOiJmZmI2YzEiLGxpZ2h0c2FsbW9uOiJmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IjIwYjJhYSIsbGlnaHRza3libHVlOiI4N2NlZmEiLGxpZ2h0c2xhdGVibHVlOiI4NDcwZmYiLGxpZ2h0c2xhdGVncmF5OiI3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiJiMGM0ZGUiLGxpZ2h0eWVsbG93OiJmZmZmZTAiLGxpbWU6IjAwZmYwMCIsbGltZWdyZWVuOiIzMmNkMzIiLGxpbmVuOiJmYWYwZTYiLG1hZ2VudGE6ImZmMDBmZiIsbWFyb29uOiI4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IjY2Y2RhYSIsbWVkaXVtYmx1ZToiMDAwMGNkIixtZWRpdW1vcmNoaWQ6ImJhNTVkMyIsbWVkaXVtcHVycGxlOiI5MzcwZDgiLG1lZGl1bXNlYWdyZWVuOiIzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IjQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiJjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiMTkxOTcwIixtaW50Y3JlYW06ImY1ZmZmYSIsbWlzdHlyb3NlOiJmZmU0ZTEiLG1vY2Nhc2luOiJmZmU0YjUiLG5hdmFqb3doaXRlOiJmZmRlYWQiLG5hdnk6IjAwMDA4MCIsb2xkbGFjZToiZmRmNWU2IixvbGl2ZToiODA4MDAwIixvbGl2ZWRyYWI6IjZiOGUyMyIsb3JhbmdlOiJmZmE1MDAiLG9yYW5nZXJlZDoiZmY0NTAwIixvcmNoaWQ6ImRhNzBkNiIscGFsZWdvbGRlbnJvZDoiZWVlOGFhIixwYWxlZ3JlZW46Ijk4ZmI5OCIscGFsZXR1cnF1b2lzZToiYWZlZWVlIixwYWxldmlvbGV0cmVkOiJkODcwOTMiLHBhcGF5YXdoaXA6ImZmZWZkNSIscGVhY2hwdWZmOiJmZmRhYjkiLHBlcnU6ImNkODUzZiIscGluazoiZmZjMGNiIixwbHVtOiJkZGEwZGQiLHBvd2RlcmJsdWU6ImIwZTBlNiIscHVycGxlOiI4MDAwODAiLHJlZDoiZmYwMDAwIixyb3N5YnJvd246ImJjOGY4ZiIscm95YWxibHVlOiI0MTY5ZTEiLHNhZGRsZWJyb3duOiI4YjQ1MTMiLHNhbG1vbjoiZmE4MDcyIixzYW5keWJyb3duOiJmNGE0NjAiLHNlYWdyZWVuOiIyZThiNTciLHNlYXNoZWxsOiJmZmY1ZWUiLHNpZW5uYToiYTA1MjJkIixzaWx2ZXI6ImMwYzBjMCIsc2t5Ymx1ZToiODdjZWViIixzbGF0ZWJsdWU6IjZhNWFjZCIsc2xhdGVncmF5OiI3MDgwOTAiLHNub3c6ImZmZmFmYSIsc3ByaW5nZ3JlZW46IjAwZmY3ZiIsc3RlZWxibHVlOiI0NjgyYjQiLHRhbjoiZDJiNDhjIix0ZWFsOiIwMDgwODAiLHRoaXN0bGU6ImQ4YmZkOCIsdG9tYXRvOiJmZjYzNDciLHR1cnF1b2lzZToiNDBlMGQwIix2aW9sZXQ6ImVlODJlZSIsdmlvbGV0cmVkOiJkMDIwOTAiLHdoZWF0OiJmNWRlYjMiLHdoaXRlOiJmZmZmZmYiLHdoaXRlc21va2U6ImY1ZjVmNSIseWVsbG93OiJmZmZmMDAiLHllbGxvd2dyZWVuOiI5YWNkMzIifVt0PSh0PXQucmVwbGFjZSgvIC9nLCIiKSkudG9Mb3dlckNhc2UoKV18fHQ7Zm9yKHZhciByPVt7cmU6L15yZ2JcKChcZHsxLDN9KSxccyooXGR7MSwzfSksXHMqKFxkezEsM30pXCkkLyxleGFtcGxlOlsicmdiKDEyMywgMjM0LCA0NSkiLCJyZ2IoMjU1LDIzNCwyNDUpIl0scHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm5bcGFyc2VJbnQodFsxXSkscGFyc2VJbnQodFsyXSkscGFyc2VJbnQodFszXSldfX0se3JlOi9eKFx3ezJ9KShcd3syfSkoXHd7Mn0pJC8sZXhhbXBsZTpbIiMwMGZmMDAiLCIzMzY2OTkiXSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybltwYXJzZUludCh0WzFdLDE2KSxwYXJzZUludCh0WzJdLDE2KSxwYXJzZUludCh0WzNdLDE2KV19fSx7cmU6L14oXHd7MX0pKFx3ezF9KShcd3sxfSkkLyxleGFtcGxlOlsiI2ZiMCIsImYwZiJdLHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuW3BhcnNlSW50KHRbMV0rdFsxXSwxNikscGFyc2VJbnQodFsyXSt0WzJdLDE2KSxwYXJzZUludCh0WzNdK3RbM10sMTYpXX19XSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0ucmUsYT1yW25dLnByb2Nlc3Msbz1pLmV4ZWModCk7byYmKGU9YShvKSx0aGlzLnI9ZVswXSx0aGlzLmc9ZVsxXSx0aGlzLmI9ZVsyXSx0aGlzLm9rPSEwKX10aGlzLnI9dGhpcy5yPDB8fGlzTmFOKHRoaXMucik\/MDp0aGlzLnI+MjU1PzI1NTp0aGlzLnIsdGhpcy5nPXRoaXMuZzwwfHxpc05hTih0aGlzLmcpPzA6dGhpcy5nPjI1NT8yNTU6dGhpcy5nLHRoaXMuYj10aGlzLmI8MHx8aXNOYU4odGhpcy5iKT8wOnRoaXMuYj4yNTU\/MjU1OnRoaXMuYix0aGlzLnRvUkdCPWZ1bmN0aW9uKCl7cmV0dXJuInJnYigiK3RoaXMucisiLCAiK3RoaXMuZysiLCAiK3RoaXMuYisiKSJ9LHRoaXMudG9IZXg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnIudG9TdHJpbmcoMTYpLGU9dGhpcy5nLnRvU3RyaW5nKDE2KSxyPXRoaXMuYi50b1N0cmluZygxNik7cmV0dXJuIDE9PXQubGVuZ3RoJiYodD0iMCIrdCksMT09ZS5sZW5ndGgmJihlPSIwIitlKSwxPT1yLmxlbmd0aCYmKHI9IjAiK3IpLCIjIit0K2Urcn19Ci8qKgogICAqIEBsaWNlbnNlCiAgICogSm9zZXBoIE15ZXJzIGRvZXMgbm90IHNwZWNpZnkgYSBwYXJ0aWN1bGFyIGxpY2Vuc2UgZm9yIGhpcyB3b3JrLgogICAqCiAgICogQXV0aG9yOiBKb3NlcGggTXllcnMKICAgKiBBY2Nlc3NlZCBmcm9tOiBodHRwOi8vd3d3Lm15ZXJzZGFpbHkub3JnL2pvc2VwaC9qYXZhc2NyaXB0L21kNS5qcwogICAqCiAgICogTW9kaWZpZWQgYnk6IE93ZW4gTGVvbmcKICAgKi8KZnVuY3Rpb24gZih0LGUpe3ZhciByPXRbMF0sbj10WzFdLGk9dFsyXSxhPXRbM107cj1wKHIsbixpLGEsZVswXSw3LC02ODA4NzY5MzYpLGE9cChhLHIsbixpLGVbMV0sMTIsLTM4OTU2NDU4NiksaT1wKGksYSxyLG4sZVsyXSwxNyw2MDYxMDU4MTkpLG49cChuLGksYSxyLGVbM10sMjIsLTEwNDQ1MjUzMzApLHI9cChyLG4saSxhLGVbNF0sNywtMTc2NDE4ODk3KSxhPXAoYSxyLG4saSxlWzVdLDEyLDEyMDAwODA0MjYpLGk9cChpLGEscixuLGVbNl0sMTcsLTE0NzMyMzEzNDEpLG49cChuLGksYSxyLGVbN10sMjIsLTQ1NzA1OTgzKSxyPXAocixuLGksYSxlWzhdLDcsMTc3MDAzNTQxNiksYT1wKGEscixuLGksZVs5XSwxMiwtMTk1ODQxNDQxNyksaT1wKGksYSxyLG4sZVsxMF0sMTcsLTQyMDYzKSxuPXAobixpLGEscixlWzExXSwyMiwtMTk5MDQwNDE2Mikscj1wKHIsbixpLGEsZVsxMl0sNywxODA0NjAzNjgyKSxhPXAoYSxyLG4saSxlWzEzXSwxMiwtNDAzNDExMDEpLGk9cChpLGEscixuLGVbMTRdLDE3LC0xNTAyMDAyMjkwKSxyPWcocixuPXAobixpLGEscixlWzE1XSwyMiwxMjM2NTM1MzI5KSxpLGEsZVsxXSw1LC0xNjU3OTY1MTApLGE9ZyhhLHIsbixpLGVbNl0sOSwtMTA2OTUwMTYzMiksaT1nKGksYSxyLG4sZVsxMV0sMTQsNjQzNzE3NzEzKSxuPWcobixpLGEscixlWzBdLDIwLC0zNzM4OTczMDIpLHI9ZyhyLG4saSxhLGVbNV0sNSwtNzAxNTU4NjkxKSxhPWcoYSxyLG4saSxlWzEwXSw5LDM4MDE2MDgzKSxpPWcoaSxhLHIsbixlWzE1XSwxNCwtNjYwNDc4MzM1KSxuPWcobixpLGEscixlWzRdLDIwLC00MDU1Mzc4NDgpLHI9ZyhyLG4saSxhLGVbOV0sNSw1Njg0NDY0MzgpLGE9ZyhhLHIsbixpLGVbMTRdLDksLTEwMTk4MDM2OTApLGk9ZyhpLGEscixuLGVbM10sMTQsLTE4NzM2Mzk2MSksbj1nKG4saSxhLHIsZVs4XSwyMCwxMTYzNTMxNTAxKSxyPWcocixuLGksYSxlWzEzXSw1LC0xNDQ0NjgxNDY3KSxhPWcoYSxyLG4saSxlWzJdLDksLTUxNDAzNzg0KSxpPWcoaSxhLHIsbixlWzddLDE0LDE3MzUzMjg0NzMpLHI9bShyLG49ZyhuLGksYSxyLGVbMTJdLDIwLC0xOTI2NjA3NzM0KSxpLGEsZVs1XSw0LC0zNzg1NTgpLGE9bShhLHIsbixpLGVbOF0sMTEsLTIwMjI1NzQ0NjMpLGk9bShpLGEscixuLGVbMTFdLDE2LDE4MzkwMzA1NjIpLG49bShuLGksYSxyLGVbMTRdLDIzLC0zNTMwOTU1Nikscj1tKHIsbixpLGEsZVsxXSw0LC0xNTMwOTkyMDYwKSxhPW0oYSxyLG4saSxlWzRdLDExLDEyNzI4OTMzNTMpLGk9bShpLGEscixuLGVbN10sMTYsLTE1NTQ5NzYzMiksbj1tKG4saSxhLHIsZVsxMF0sMjMsLTEwOTQ3MzA2NDApLHI9bShyLG4saSxhLGVbMTNdLDQsNjgxMjc5MTc0KSxhPW0oYSxyLG4saSxlWzBdLDExLC0zNTg1MzcyMjIpLGk9bShpLGEscixuLGVbM10sMTYsLTcyMjUyMTk3OSksbj1tKG4saSxhLHIsZVs2XSwyMyw3NjAyOTE4OSkscj1tKHIsbixpLGEsZVs5XSw0LC02NDAzNjQ0ODcpLGE9bShhLHIsbixpLGVbMTJdLDExLC00MjE4MTU4MzUpLGk9bShpLGEscixuLGVbMTVdLDE2LDUzMDc0MjUyMCkscj12KHIsbj1tKG4saSxhLHIsZVsyXSwyMywtOTk1MzM4NjUxKSxpLGEsZVswXSw2LC0xOTg2MzA4NDQpLGE9dihhLHIsbixpLGVbN10sMTAsMTEyNjg5MTQxNSksaT12KGksYSxyLG4sZVsxNF0sMTUsLTE0MTYzNTQ5MDUpLG49dihuLGksYSxyLGVbNV0sMjEsLTU3NDM0MDU1KSxyPXYocixuLGksYSxlWzEyXSw2LDE3MDA0ODU1NzEpLGE9dihhLHIsbixpLGVbM10sMTAsLTE4OTQ5ODY2MDYpLGk9dihpLGEscixuLGVbMTBdLDE1LC0xMDUxNTIzKSxuPXYobixpLGEscixlWzFdLDIxLC0yMDU0OTIyNzk5KSxyPXYocixuLGksYSxlWzhdLDYsMTg3MzMxMzM1OSksYT12KGEscixuLGksZVsxNV0sMTAsLTMwNjExNzQ0KSxpPXYoaSxhLHIsbixlWzZdLDE1LC0xNTYwMTk4MzgwKSxuPXYobixpLGEscixlWzEzXSwyMSwxMzA5MTUxNjQ5KSxyPXYocixuLGksYSxlWzRdLDYsLTE0NTUyMzA3MCksYT12KGEscixuLGksZVsxMV0sMTAsLTExMjAyMTAzNzkpLGk9dihpLGEscixuLGVbMl0sMTUsNzE4Nzg3MjU5KSxuPXYobixpLGEscixlWzldLDIxLC0zNDM0ODU1NTEpLHRbMF09UyhyLHRbMF0pLHRbMV09UyhuLHRbMV0pLHRbMl09UyhpLHRbMl0pLHRbM109UyhhLHRbM10pfWZ1bmN0aW9uIGQodCxlLHIsbixpLGEpe3JldHVybiBlPVMoUyhlLHQpLFMobixhKSksUyhlPDxpfGU+Pj4zMi1pLHIpfWZ1bmN0aW9uIHAodCxlLHIsbixpLGEsbyl7cmV0dXJuIGQoZSZyfH5lJm4sdCxlLGksYSxvKX1mdW5jdGlvbiBnKHQsZSxyLG4saSxhLG8pe3JldHVybiBkKGUmbnxyJn5uLHQsZSxpLGEsbyl9ZnVuY3Rpb24gbSh0LGUscixuLGksYSxvKXtyZXR1cm4gZChlXnJebix0LGUsaSxhLG8pfWZ1bmN0aW9uIHYodCxlLHIsbixpLGEsbyl7cmV0dXJuIGQocl4oZXx+biksdCxlLGksYSxvKX1mdW5jdGlvbiBiKHQpe3ZhciBlLHI9dC5sZW5ndGgsbj1bMTczMjU4NDE5MywtMjcxNzMzODc5LC0xNzMyNTg0MTk0LDI3MTczMzg3OF07Zm9yKGU9NjQ7ZTw9dC5sZW5ndGg7ZSs9NjQpZihuLHkodC5zdWJzdHJpbmcoZS02NCxlKSkpO3Q9dC5zdWJzdHJpbmcoZS02NCk7dmFyIGk9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaVtlPj4yXXw9dC5jaGFyQ29kZUF0KGUpPDwoZSU0PDwzKTtpZihpW2U+PjJdfD0xMjg8PChlJTQ8PDMpLGU+NTUpZm9yKGYobixpKSxlPTA7ZTwxNjtlKyspaVtlXT0wO3JldHVybiBpWzE0XT04KnIsZihuLGkpLG59ZnVuY3Rpb24geSh0KXt2YXIgZSxyPVtdO2ZvcihlPTA7ZTw2NDtlKz00KXJbZT4+Ml09dC5jaGFyQ29kZUF0KGUpKyh0LmNoYXJDb2RlQXQoZSsxKTw8OCkrKHQuY2hhckNvZGVBdChlKzIpPDwxNikrKHQuY2hhckNvZGVBdChlKzMpPDwyNCk7cmV0dXJuIHJ9Yz1yLmF0b2IuYmluZChyKSx1PXIuYnRvYS5iaW5kKHIpO3ZhciB3PSIwMTIzNDU2Nzg5YWJjZGVmIi5zcGxpdCgiIik7ZnVuY3Rpb24gTih0KXtmb3IodmFyIGU9IiIscj0wO3I8NDtyKyspZSs9d1t0Pj44KnIrNCYxNV0rd1t0Pj44KnImMTVdO3JldHVybiBlfWZ1bmN0aW9uIEwodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKDI1NSZ0KT4+MCwoNjUyODAmdCk+PjgsKDE2NzExNjgwJnQpPj4xNiwoNDI3ODE5MDA4MCZ0KT4+MjQpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChMKS5qb2luKCIiKX0oYih0KSl9dmFyIHg9IjVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyIiE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT1OKHRbZV0pO3JldHVybiB0LmpvaW4oIiIpfShiKCJoZWxsbyIpKTtmdW5jdGlvbiBTKHQsZSl7aWYoeCl7dmFyIHI9KDY1NTM1JnQpKyg2NTUzNSZlKTtyZXR1cm4odD4+MTYpKyhlPj4xNikrKHI+PjE2KTw8MTZ8NjU1MzUmcn1yZXR1cm4gdCtlJjQyOTQ5NjcyOTV9Ci8qKgogICAqIEBsaWNlbnNlCiAgICogRlBERiBpcyByZWxlYXNlZCB1bmRlciBhIHBlcm1pc3NpdmUgbGljZW5zZTogdGhlcmUgaXMgbm8gdXNhZ2UgcmVzdHJpY3Rpb24uCiAgICogWW91IG1heSBlbWJlZCBpdCBmcmVlbHkgaW4geW91ciBhcHBsaWNhdGlvbiAoY29tbWVyY2lhbCBvciBub3QpLCB3aXRoIG9yCiAgICogd2l0aG91dCBtb2RpZmljYXRpb25zLgogICAqCiAgICogUmVmZXJlbmNlOiBodHRwOi8vd3d3LmZwZGYub3JnL2VuL3NjcmlwdC9zY3JpcHQzNy5waHAKICAgKi9mdW5jdGlvbiBfKHQsZSl7dmFyIHIsbixpLGE7aWYodCE9PXIpe2Zvcih2YXIgbz0oaT10LGE9MSsoMjU2L3QubGVuZ3RoPj4wKSxuZXcgQXJyYXkoYSsxKS5qb2luKGkpKSxzPVtdLGM9MDtjPDI1NjtjKyspc1tjXT1jO3ZhciB1PTA7Zm9yKGM9MDtjPDI1NjtjKyspe3ZhciBsPXNbY107dT0odStsK28uY2hhckNvZGVBdChjKSklMjU2LHNbY109c1t1XSxzW3VdPWx9cj10LG49c31lbHNlIHM9bjt2YXIgaD1lLmxlbmd0aCxmPTAsZD0wLHA9IiI7Zm9yKGM9MDtjPGg7YysrKWQ9KGQrKGw9c1tmPShmKzEpJTI1Nl0pKSUyNTYsc1tmXT1zW2RdLHNbZF09bCxvPXNbKHNbZl0rc1tkXSklMjU2XSxwKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdChjKV5vKTtyZXR1cm4gcH0KLyoqCiAgICogQGxpY2Vuc2UKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICogQXV0aG9yOiBPd2VuIExlb25nIChAb3dlbmwxMzEpCiAgICogRGF0ZTogMTUgT2N0IDIwMjAKICAgKiBSZWZlcmVuY2VzOgogICAqIGh0dHBzOi8vd3d3LmNzLmNtdS5lZHUvfmRzdC9BZG9iZS9HYWxsZXJ5L2Fub24yMWp1bDAxLXBkZi1lbmNyeXB0aW9uLnR4dAogICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2xpb2pzL3BkZmtpdC9ibG9iL21hc3Rlci9saWIvc2VjdXJpdHkuanMKICAgKiBodHRwOi8vd3d3LmZwZGYub3JnL2VuL3NjcmlwdC9zY3JpcHQzNy5waHAKICAgKi92YXIgUD17cHJpbnQ6NCxtb2RpZnk6OCxjb3B5OjE2LCJhbm5vdC1mb3JtcyI6MzJ9O2Z1bmN0aW9uIGsodCxlLHIsbil7dGhpcy52PTEsdGhpcy5yPTI7dmFyIGk9MTkyO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodm9pZCAwIT09UC5wZXJtKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBwZXJtaXNzaW9uOiAiK3QpO2krPVBbdF19KSksdGhpcy5wYWRkaW5nPSIowr9OXk51wopBZFwwTlbDv8O6AVxiLi5cMMK2w5BoPsKAL1xmwqnDvmRTaXoiO3ZhciBhPShlK3RoaXMucGFkZGluZykuc3Vic3RyKDAsMzIpLG89KHIrdGhpcy5wYWRkaW5nKS5zdWJzdHIoMCwzMik7dGhpcy5PPXRoaXMucHJvY2Vzc093bmVyUGFzc3dvcmQoYSxvKSx0aGlzLlA9LSgxKygyNTVeaSkpLHRoaXMuZW5jcnlwdGlvbktleT1BKGErdGhpcy5PK3RoaXMubHNiRmlyc3RXb3JkKHRoaXMuUCkrdGhpcy5oZXhUb0J5dGVzKG4pKS5zdWJzdHIoMCw1KSx0aGlzLlU9Xyh0aGlzLmVuY3J5cHRpb25LZXksdGhpcy5wYWRkaW5nKX1mdW5jdGlvbiBGKHQpe2lmKC9bXlx1MDAwMC1cdTAwZmZdLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBQREYgTmFtZSBPYmplY3Q6ICIrdCsiLCBPbmx5IGFjY2VwdCBBU0NJSSBjaGFyYWN0ZXJzLiIpO2Zvcih2YXIgZT0iIixyPXQubGVuZ3RoLG49MDtuPHI7bisrKXt2YXIgaT10LmNoYXJDb2RlQXQobik7aWYoaTwzM3x8MzU9PT1pfHwzNz09PWl8fDQwPT09aXx8NDE9PT1pfHw0Nz09PWl8fDYwPT09aXx8NjI9PT1pfHw5MT09PWl8fDkzPT09aXx8MTIzPT09aXx8MTI1PT09aXx8aT4xMjYpZSs9IiMiKygiMCIraS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtlbHNlIGUrPXRbbl19cmV0dXJuIGV9ZnVuY3Rpb24gSSh0KXtpZigib2JqZWN0IiE9PWUodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIENvbnRleHQgcGFzc2VkIHRvIGluaXRpYWxpemUgUHViU3ViIChqc1BERi1tb2R1bGUpIik7dmFyIG49e307dGhpcy5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLHIpe2lmKHI9cnx8ITEsInN0cmluZyIhPXR5cGVvZiB0fHwiZnVuY3Rpb24iIT10eXBlb2YgZXx8ImJvb2xlYW4iIT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBQdWJTdWIuc3Vic2NyaWJlIChqc1BERi1tb2R1bGUpIik7bi5oYXNPd25Qcm9wZXJ0eSh0KXx8KG5bdF09e30pO3ZhciBpPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzUpO3JldHVybiBuW3RdW2ldPVtlLCEhcl0saX0sdGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gbilpZihuW2VdW3RdKXJldHVybiBkZWxldGUgbltlXVt0XSwwPT09T2JqZWN0LmtleXMobltlXSkubGVuZ3RoJiZkZWxldGUgbltlXSwhMDtyZXR1cm4hMX0sdGhpcy5wdWJsaXNoPWZ1bmN0aW9uKGUpe2lmKG4uaGFzT3duUHJvcGVydHkoZSkpe3ZhciBhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxvPVtdO2Zvcih2YXIgcyBpbiBuW2VdKXt2YXIgYz1uW2VdW3NdO3RyeXtjWzBdLmFwcGx5KHQsYSl9Y2F0Y2godCl7ci5jb25zb2xlJiZpLmVycm9yKCJqc1BERiBQdWJTdWIgRXJyb3IiLHQubWVzc2FnZSx0KX1jWzFdJiZvLnB1c2gocyl9by5sZW5ndGgmJm8uZm9yRWFjaCh0aGlzLnVuc3Vic2NyaWJlKX19LHRoaXMuZ2V0VG9waWNzPWZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIEModCl7aWYoISh0aGlzIGluc3RhbmNlb2YgQykpcmV0dXJuIG5ldyBDKHQpO3ZhciBlPSJvcGFjaXR5LHN0cm9rZS1vcGFjaXR5Ii5zcGxpdCgiLCIpO2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJmUuaW5kZXhPZihyKT49MCYmKHRoaXNbcl09dFtyXSk7dGhpcy5pZD0iIix0aGlzLm9iamVjdE51bWJlcj0tMX1mdW5jdGlvbiBqKHQsZSl7dGhpcy5nU3RhdGU9dCx0aGlzLm1hdHJpeD1lLHRoaXMuaWQ9IiIsdGhpcy5vYmplY3ROdW1iZXI9LTF9ZnVuY3Rpb24gTyh0LGUscixuLGkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE8pKXJldHVybiBuZXcgTyh0LGUscixuLGkpO3RoaXMudHlwZT0iYXhpYWwiPT09dD8yOjMsdGhpcy5jb29yZHM9ZSx0aGlzLmNvbG9ycz1yLGouY2FsbCh0aGlzLG4saSl9ZnVuY3Rpb24gQih0LGUscixuLGkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEIpKXJldHVybiBuZXcgQih0LGUscixuLGkpO3RoaXMuYm91bmRpbmdCb3g9dCx0aGlzLnhTdGVwPWUsdGhpcy55U3RlcD1yLHRoaXMuc3RyZWFtPSIiLHRoaXMuY2xvbmVJbmRleD0wLGouY2FsbCh0aGlzLG4saSl9ZnVuY3Rpb24gTSh0KXt2YXIgbixhPSJzdHJpbmciPT10eXBlb2YgYXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToicCIsbz1hcmd1bWVudHNbMV0scz1hcmd1bWVudHNbMl0sYz1hcmd1bWVudHNbM10sZj1bXSxkPTEscD0xNixnPSJTIixtPW51bGw7Im9iamVjdCI9PT1lKHQ9dHx8e30pJiYoYT10Lm9yaWVudGF0aW9uLG89dC51bml0fHxvLHM9dC5mb3JtYXR8fHMsYz10LmNvbXByZXNzfHx0LmNvbXByZXNzUGRmfHxjLG51bGwhPT0obT10LmVuY3J5cHRpb258fG51bGwpJiYobS51c2VyUGFzc3dvcmQ9bS51c2VyUGFzc3dvcmR8fCIiLG0ub3duZXJQYXNzd29yZD1tLm93bmVyUGFzc3dvcmR8fCIiLG0udXNlclBlcm1pc3Npb25zPW0udXNlclBlcm1pc3Npb25zfHxbXSksZD0ibnVtYmVyIj09dHlwZW9mIHQudXNlclVuaXQ\/TWF0aC5hYnModC51c2VyVW5pdCk6MSx2b2lkIDAhPT10LnByZWNpc2lvbiYmKG49dC5wcmVjaXNpb24pLHZvaWQgMCE9PXQuZmxvYXRQcmVjaXNpb24mJihwPXQuZmxvYXRQcmVjaXNpb24pLGc9dC5kZWZhdWx0UGF0aE9wZXJhdGlvbnx8IlMiKSxmPXQuZmlsdGVyc3x8KCEwPT09Yz9bIkZsYXRlRW5jb2RlIl06Ziksbz1vfHwibW0iLGE9KCIiKyhhfHwiUCIpKS50b0xvd2VyQ2FzZSgpO3ZhciB2PXQucHV0T25seVVzZWRGb250c3x8ITEsYj17fSx5PXtpbnRlcm5hbDp7fSxfX3ByaXZhdGVfXzp7fX07eS5fX3ByaXZhdGVfXy5QdWJTdWI9STt2YXIgdz0iMS4zIixOPXkuX19wcml2YXRlX18uZ2V0UGRmVmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiB3fTt5Ll9fcHJpdmF0ZV9fLnNldFBkZlZlcnNpb249ZnVuY3Rpb24odCl7dz10fTt2YXIgTD17YTA6WzIzODMuOTQsMzM3MC4zOV0sYTE6WzE2ODMuNzgsMjM4My45NF0sYTI6WzExOTAuNTUsMTY4My43OF0sYTM6Wzg0MS44OSwxMTkwLjU1XSxhNDpbNTk1LjI4LDg0MS44OV0sYTU6WzQxOS41Myw1OTUuMjhdLGE2OlsyOTcuNjQsNDE5LjUzXSxhNzpbMjA5Ljc2LDI5Ny42NF0sYTg6WzE0Ny40LDIwOS43Nl0sYTk6WzEwNC44OCwxNDcuNF0sYTEwOls3My43LDEwNC44OF0sYjA6WzI4MzQuNjUsNDAwOC4xOV0sYjE6WzIwMDQuMDksMjgzNC42NV0sYjI6WzE0MTcuMzIsMjAwNC4wOV0sYjM6WzEwMDAuNjMsMTQxNy4zMl0sYjQ6WzcwOC42NiwxMDAwLjYzXSxiNTpbNDk4LjksNzA4LjY2XSxiNjpbMzU0LjMzLDQ5OC45XSxiNzpbMjQ5LjQ1LDM1NC4zM10sYjg6WzE3NS43NSwyNDkuNDVdLGI5OlsxMjQuNzIsMTc1Ljc1XSxiMTA6Wzg3Ljg3LDEyNC43Ml0sYzA6WzI1OTkuMzcsMzY3Ni41NF0sYzE6WzE4MzYuODUsMjU5OS4zN10sYzI6WzEyOTguMjcsMTgzNi44NV0sYzM6WzkxOC40MywxMjk4LjI3XSxjNDpbNjQ5LjEzLDkxOC40M10sYzU6WzQ1OS4yMSw2NDkuMTNdLGM2OlszMjMuMTUsNDU5LjIxXSxjNzpbMjI5LjYxLDMyMy4xNV0sYzg6WzE2MS41NywyMjkuNjFdLGM5OlsxMTMuMzksMTYxLjU3XSxjMTA6Wzc5LjM3LDExMy4zOV0sZGw6WzMxMS44MSw2MjMuNjJdLGxldHRlcjpbNjEyLDc5Ml0sImdvdmVybm1lbnQtbGV0dGVyIjpbNTc2LDc1Nl0sbGVnYWw6WzYxMiwxMDA4XSwianVuaW9yLWxlZ2FsIjpbNTc2LDM2MF0sbGVkZ2VyOlsxMjI0LDc5Ml0sdGFibG9pZDpbNzkyLDEyMjRdLCJjcmVkaXQtY2FyZCI6WzE1MywyNDNdfTt5Ll9fcHJpdmF0ZV9fLmdldFBhZ2VGb3JtYXRzPWZ1bmN0aW9uKCl7cmV0dXJuIEx9O3ZhciBBPXkuX19wcml2YXRlX18uZ2V0UGFnZUZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gTFt0XX07cz1zfHwiYTQiO3ZhciB4PXtDT01QQVQ6ImNvbXBhdCIsQURWQU5DRUQ6ImFkdmFuY2VkIn0sUz14LkNPTVBBVDtmdW5jdGlvbiBfKCl7dGhpcy5zYXZlR3JhcGhpY3NTdGF0ZSgpLGh0KG5ldyBWdChfdCwwLDAsLV90LDAsUnIoKSpfdCkudG9TdHJpbmcoKSsiIGNtIiksdGhpcy5zZXRGb250U2l6ZSh0aGlzLmdldEZvbnRTaXplKCkvX3QpLGc9Im4iLFM9eC5BRFZBTkNFRH1mdW5jdGlvbiBQKCl7dGhpcy5yZXN0b3JlR3JhcGhpY3NTdGF0ZSgpLGc9IlMiLFM9eC5DT01QQVR9dmFyIGo9eS5fX3ByaXZhdGVfXy5jb21iaW5lRm9udFN0eWxlQW5kRm9udFdlaWdodD1mdW5jdGlvbih0LGUpe2lmKCJib2xkIj09dCYmIm5vcm1hbCI9PWV8fCJib2xkIj09dCYmNDAwPT1lfHwibm9ybWFsIj09dCYmIml0YWxpYyI9PWV8fCJib2xkIj09dCYmIml0YWxpYyI9PWUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIENvbWJpbmF0aW9uIG9mIGZvbnR3ZWlnaHQgYW5kIGZvbnRzdHlsZSIpO3JldHVybiBlJiYodD00MDA9PWV8fCJub3JtYWwiPT09ZT8iaXRhbGljIj09PXQ\/Iml0YWxpYyI6Im5vcm1hbCI6NzAwIT1lJiYiYm9sZCIhPT1lfHwibm9ybWFsIiE9PXQ\/KDcwMD09ZT8iYm9sZCI6ZSkrIiIrdDoiYm9sZCIpLHR9O3kuYWR2YW5jZWRBUEk9ZnVuY3Rpb24odCl7dmFyIGU9Uz09PXguQ09NUEFUO3JldHVybiBlJiZfLmNhbGwodGhpcyksImZ1bmN0aW9uIiE9dHlwZW9mIHR8fCh0KHRoaXMpLGUmJlAuY2FsbCh0aGlzKSksdGhpc30seS5jb21wYXRBUEk9ZnVuY3Rpb24odCl7dmFyIGU9Uz09PXguQURWQU5DRUQ7cmV0dXJuIGUmJlAuY2FsbCh0aGlzKSwiZnVuY3Rpb24iIT10eXBlb2YgdHx8KHQodGhpcyksZSYmXy5jYWxsKHRoaXMpKSx0aGlzfSx5LmlzQWR2YW5jZWRBUEk9ZnVuY3Rpb24oKXtyZXR1cm4gUz09PXguQURWQU5DRUR9O3ZhciBFLHE9ZnVuY3Rpb24odCl7aWYoUyE9PXguQURWQU5DRUQpdGhyb3cgbmV3IEVycm9yKHQrIiBpcyBvbmx5IGF2YWlsYWJsZSBpbiAnYWR2YW5jZWQnIEFQSSBtb2RlLiBZb3UgbmVlZCB0byBjYWxsIGFkdmFuY2VkQVBJKCkgZmlyc3QuIil9LEQ9eS5yb3VuZFRvUHJlY2lzaW9uPXkuX19wcml2YXRlX18ucm91bmRUb1ByZWNpc2lvbj1mdW5jdGlvbih0LGUpe3ZhciByPW58fGU7aWYoaXNOYU4odCl8fGlzTmFOKHIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYucm91bmRUb1ByZWNpc2lvbiIpO3JldHVybiB0LnRvRml4ZWQocikucmVwbGFjZSgvMCskLywiIil9O0U9eS5ocGY9eS5fX3ByaXZhdGVfXy5ocGY9Im51bWJlciI9PXR5cGVvZiBwP2Z1bmN0aW9uKHQpe2lmKGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuaHBmIik7cmV0dXJuIEQodCxwKX06InNtYXJ0Ij09PXA\/ZnVuY3Rpb24odCl7aWYoaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5ocGYiKTtyZXR1cm4gRCh0LHQ+LTEmJnQ8MT8xNjo1KX06ZnVuY3Rpb24odCl7aWYoaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5ocGYiKTtyZXR1cm4gRCh0LDE2KX07dmFyIFI9eS5mMj15Ll9fcHJpdmF0ZV9fLmYyPWZ1bmN0aW9uKHQpe2lmKGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuZjIiKTtyZXR1cm4gRCh0LDIpfSxUPXkuX19wcml2YXRlX18uZjM9ZnVuY3Rpb24odCl7aWYoaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5mMyIpO3JldHVybiBEKHQsMyl9LFU9eS5zY2FsZT15Ll9fcHJpdmF0ZV9fLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuc2NhbGUiKTtyZXR1cm4gUz09PXguQ09NUEFUP3QqX3Q6Uz09PXguQURWQU5DRUQ\/dDp2b2lkIDB9LHo9ZnVuY3Rpb24odCl7cmV0dXJuIFM9PT14LkNPTVBBVD9ScigpLXQ6Uz09PXguQURWQU5DRUQ\/dDp2b2lkIDB9LEg9ZnVuY3Rpb24odCl7cmV0dXJuIFUoeih0KSl9O3kuX19wcml2YXRlX18uc2V0UHJlY2lzaW9uPXkuc2V0UHJlY2lzaW9uPWZ1bmN0aW9uKHQpeyJudW1iZXIiPT10eXBlb2YgcGFyc2VJbnQodCwxMCkmJihuPXBhcnNlSW50KHQsMTApKX07dmFyIFcsVj0iMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLEc9eS5fX3ByaXZhdGVfXy5nZXRGaWxlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gVn0sWT15Ll9fcHJpdmF0ZV9fLnNldEZpbGVJZD1mdW5jdGlvbih0KXtyZXR1cm4gVj12b2lkIDAhPT10JiYvXlthLWZBLUYwLTldezMyfSQvLnRlc3QodCk\/dC50b1VwcGVyQ2FzZSgpOlYuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4iQUJDREVGMDEyMzQ1Njc4OSIuY2hhckF0KE1hdGguZmxvb3IoMTYqTWF0aC5yYW5kb20oKSkpfSkpLmpvaW4oIiIpLG51bGwhPT1tJiYoWWU9bmV3IGsobS51c2VyUGVybWlzc2lvbnMsbS51c2VyUGFzc3dvcmQsbS5vd25lclBhc3N3b3JkLFYpKSxWfTt5LnNldEZpbGVJZD1mdW5jdGlvbih0KXtyZXR1cm4gWSh0KSx0aGlzfSx5LmdldEZpbGVJZD1mdW5jdGlvbigpe3JldHVybiBHKCl9O3ZhciBKPXkuX19wcml2YXRlX18uY29udmVydERhdGVUb1BERkRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpLHI9ZTwwPyIrIjoiLSIsbj1NYXRoLmZsb29yKE1hdGguYWJzKGUvNjApKSxpPU1hdGguYWJzKGUlNjApLGE9W3IsUShuKSwiJyIsUShpKSwiJyJdLmpvaW4oIiIpO3JldHVyblsiRDoiLHQuZ2V0RnVsbFllYXIoKSxRKHQuZ2V0TW9udGgoKSsxKSxRKHQuZ2V0RGF0ZSgpKSxRKHQuZ2V0SG91cnMoKSksUSh0LmdldE1pbnV0ZXMoKSksUSh0LmdldFNlY29uZHMoKSksYV0uam9pbigiIil9LFg9eS5fX3ByaXZhdGVfXy5jb252ZXJ0UERGRGF0ZVRvRGF0ZT1mdW5jdGlvbih0KXt2YXIgZT1wYXJzZUludCh0LnN1YnN0cigyLDQpLDEwKSxyPXBhcnNlSW50KHQuc3Vic3RyKDYsMiksMTApLTEsbj1wYXJzZUludCh0LnN1YnN0cig4LDIpLDEwKSxpPXBhcnNlSW50KHQuc3Vic3RyKDEwLDIpLDEwKSxhPXBhcnNlSW50KHQuc3Vic3RyKDEyLDIpLDEwKSxvPXBhcnNlSW50KHQuc3Vic3RyKDE0LDIpLDEwKTtyZXR1cm4gbmV3IERhdGUoZSxyLG4saSxhLG8sMCl9LEs9eS5fX3ByaXZhdGVfXy5zZXRDcmVhdGlvbkRhdGU9ZnVuY3Rpb24odCl7dmFyIGU7aWYodm9pZCAwPT09dCYmKHQ9bmV3IERhdGUpLHQgaW5zdGFuY2VvZiBEYXRlKWU9Sih0KTtlbHNle2lmKCEvXkQ6KDIwWzAtMl1bMC05XXwyMDNbMC03XXwxOVs3LTldWzAtOV0pKDBbMC05XXwxWzAtMl0pKFswLTJdWzAtOV18M1swLTFdKSgwWzAtOV18MVswLTldfDJbMC0zXSkoMFswLTldfFsxLTVdWzAtOV0pKDBbMC05XXxbMS01XVswLTldKShcKzBbMC05XXxcKzFbMC00XXwtMFswLTldfC0xWzAtMV0pJygwWzAtOV18WzEtNV1bMC05XSknPyQvLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5zZXRDcmVhdGlvbkRhdGUiKTtlPXR9cmV0dXJuIFc9ZX0sWj15Ll9fcHJpdmF0ZV9fLmdldENyZWF0aW9uRGF0ZT1mdW5jdGlvbih0KXt2YXIgZT1XO3JldHVybiJqc0RhdGUiPT09dCYmKGU9WChXKSksZX07eS5zZXRDcmVhdGlvbkRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIEsodCksdGhpc30seS5nZXRDcmVhdGlvbkRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIFoodCl9O3ZhciAkLFE9eS5fX3ByaXZhdGVfXy5wYWRkMj1mdW5jdGlvbih0KXtyZXR1cm4oIjAiK3BhcnNlSW50KHQpKS5zbGljZSgtMil9LHR0PXkuX19wcml2YXRlX18ucGFkZDJIZXg9ZnVuY3Rpb24odCl7cmV0dXJuKCIwMCIrKHQ9dC50b1N0cmluZygpKSkuc3Vic3RyKHQubGVuZ3RoKX0sZXQ9MCxydD1bXSxudD1bXSxpdD0wLGF0PVtdLG90PVtdLHN0PSExLGN0PW50LHV0PWZ1bmN0aW9uKCl7ZXQ9MCxpdD0wLG50PVtdLHJ0PVtdLGF0PVtdLFF0PUt0KCksdGU9S3QoKX07eS5fX3ByaXZhdGVfXy5zZXRDdXN0b21PdXRwdXREZXN0aW5hdGlvbj1mdW5jdGlvbih0KXtzdD0hMCxjdD10fTt2YXIgbHQ9ZnVuY3Rpb24odCl7c3R8fChjdD10KX07eS5fX3ByaXZhdGVfXy5yZXNldEN1c3RvbU91dHB1dERlc3RpbmF0aW9uPWZ1bmN0aW9uKCl7c3Q9ITEsY3Q9bnR9O3ZhciBodD15Ll9fcHJpdmF0ZV9fLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gdD10LnRvU3RyaW5nKCksaXQrPXQubGVuZ3RoKzEsY3QucHVzaCh0KSxjdH0sZnQ9eS5fX3ByaXZhdGVfXy53cml0ZT1mdW5jdGlvbih0KXtyZXR1cm4gaHQoMT09PWFyZ3VtZW50cy5sZW5ndGg\/dC50b1N0cmluZygpOkFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCIgIikpfSxkdD15Ll9fcHJpdmF0ZV9fLmdldEFycmF5QnVmZmVyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheUJ1ZmZlcihlKSxuPW5ldyBVaW50OEFycmF5KHIpO2UtLTspbltlXT10LmNoYXJDb2RlQXQoZSk7cmV0dXJuIHJ9LHB0PVtbIkhlbHZldGljYSIsImhlbHZldGljYSIsIm5vcm1hbCIsIldpbkFuc2lFbmNvZGluZyJdLFsiSGVsdmV0aWNhLUJvbGQiLCJoZWx2ZXRpY2EiLCJib2xkIiwiV2luQW5zaUVuY29kaW5nIl0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIsImhlbHZldGljYSIsIml0YWxpYyIsIldpbkFuc2lFbmNvZGluZyJdLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIiwiaGVsdmV0aWNhIiwiYm9sZGl0YWxpYyIsIldpbkFuc2lFbmNvZGluZyJdLFsiQ291cmllciIsImNvdXJpZXIiLCJub3JtYWwiLCJXaW5BbnNpRW5jb2RpbmciXSxbIkNvdXJpZXItQm9sZCIsImNvdXJpZXIiLCJib2xkIiwiV2luQW5zaUVuY29kaW5nIl0sWyJDb3VyaWVyLU9ibGlxdWUiLCJjb3VyaWVyIiwiaXRhbGljIiwiV2luQW5zaUVuY29kaW5nIl0sWyJDb3VyaWVyLUJvbGRPYmxpcXVlIiwiY291cmllciIsImJvbGRpdGFsaWMiLCJXaW5BbnNpRW5jb2RpbmciXSxbIlRpbWVzLVJvbWFuIiwidGltZXMiLCJub3JtYWwiLCJXaW5BbnNpRW5jb2RpbmciXSxbIlRpbWVzLUJvbGQiLCJ0aW1lcyIsImJvbGQiLCJXaW5BbnNpRW5jb2RpbmciXSxbIlRpbWVzLUl0YWxpYyIsInRpbWVzIiwiaXRhbGljIiwiV2luQW5zaUVuY29kaW5nIl0sWyJUaW1lcy1Cb2xkSXRhbGljIiwidGltZXMiLCJib2xkaXRhbGljIiwiV2luQW5zaUVuY29kaW5nIl0sWyJaYXBmRGluZ2JhdHMiLCJ6YXBmZGluZ2JhdHMiLCJub3JtYWwiLG51bGxdLFsiU3ltYm9sIiwic3ltYm9sIiwibm9ybWFsIixudWxsXV07eS5fX3ByaXZhdGVfXy5nZXRTdGFuZGFyZEZvbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHB0fTt2YXIgZ3Q9dC5mb250U2l6ZXx8MTY7eS5fX3ByaXZhdGVfXy5zZXRGb250U2l6ZT15LnNldEZvbnRTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBndD1TPT09eC5BRFZBTkNFRD90L190OnQsdGhpc307dmFyIG10LHZ0PXkuX19wcml2YXRlX18uZ2V0Rm9udFNpemU9eS5nZXRGb250U2l6ZT1mdW5jdGlvbigpe3JldHVybiBTPT09eC5DT01QQVQ\/Z3Q6Z3QqX3R9LGJ0PXQuUjJMfHwhMTt5Ll9fcHJpdmF0ZV9fLnNldFIyTD15LnNldFIyTD1mdW5jdGlvbih0KXtyZXR1cm4gYnQ9dCx0aGlzfSx5Ll9fcHJpdmF0ZV9fLmdldFIyTD15LmdldFIyTD1mdW5jdGlvbigpe3JldHVybiBidH07dmFyIHl0LHd0PXkuX19wcml2YXRlX18uc2V0Wm9vbU1vZGU9ZnVuY3Rpb24odCl7dmFyIGU9W3ZvaWQgMCxudWxsLCJmdWxsd2lkdGgiLCJmdWxsaGVpZ2h0IiwiZnVsbHBhZ2UiLCJvcmlnaW5hbCJdO2lmKC9eKD86XGQrXC5cZCp8XGQqXC5cZCt8XGQrKSUkLy50ZXN0KHQpKW10PXQ7ZWxzZSBpZihpc05hTih0KSl7aWYoLTE9PT1lLmluZGV4T2YodCkpdGhyb3cgbmV3IEVycm9yKCd6b29tIG11c3QgYmUgSW50ZWdlciAoZS5nLiAyKSwgYSBwZXJjZW50YWdlIFZhbHVlIChlLmcuIDMwMCUpIG9yIGZ1bGx3aWR0aCwgZnVsbGhlaWdodCwgZnVsbHBhZ2UsIG9yaWdpbmFsLiAiJyt0KyciIGlzIG5vdCByZWNvZ25pemVkLicpO210PXR9ZWxzZSBtdD1wYXJzZUludCh0LDEwKX07eS5fX3ByaXZhdGVfXy5nZXRab29tTW9kZT1mdW5jdGlvbigpe3JldHVybiBtdH07dmFyIE50LEx0PXkuX19wcml2YXRlX18uc2V0UGFnZU1vZGU9ZnVuY3Rpb24odCl7aWYoLTE9PVt2b2lkIDAsbnVsbCwiVXNlTm9uZSIsIlVzZU91dGxpbmVzIiwiVXNlVGh1bWJzIiwiRnVsbFNjcmVlbiJdLmluZGV4T2YodCkpdGhyb3cgbmV3IEVycm9yKCdQYWdlIG1vZGUgbXVzdCBiZSBvbmUgb2YgVXNlTm9uZSwgVXNlT3V0bGluZXMsIFVzZVRodW1icywgb3IgRnVsbFNjcmVlbi4gIicrdCsnIiBpcyBub3QgcmVjb2duaXplZC4nKTt5dD10fTt5Ll9fcHJpdmF0ZV9fLmdldFBhZ2VNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHl0fTt2YXIgQXQ9eS5fX3ByaXZhdGVfXy5zZXRMYXlvdXRNb2RlPWZ1bmN0aW9uKHQpe2lmKC0xPT1bdm9pZCAwLG51bGwsImNvbnRpbnVvdXMiLCJzaW5nbGUiLCJ0d29sZWZ0IiwidHdvcmlnaHQiLCJ0d28iXS5pbmRleE9mKHQpKXRocm93IG5ldyBFcnJvcignTGF5b3V0IG1vZGUgbXVzdCBiZSBvbmUgb2YgY29udGludW91cywgc2luZ2xlLCB0d29sZWZ0LCB0d29yaWdodC4gIicrdCsnIiBpcyBub3QgcmVjb2duaXplZC4nKTtOdD10fTt5Ll9fcHJpdmF0ZV9fLmdldExheW91dE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gTnR9LHkuX19wcml2YXRlX18uc2V0RGlzcGxheU1vZGU9eS5zZXREaXNwbGF5TW9kZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHd0KHQpLEF0KGUpLEx0KHIpLHRoaXN9O3ZhciB4dD17dGl0bGU6IiIsc3ViamVjdDoiIixhdXRob3I6IiIsa2V5d29yZHM6IiIsY3JlYXRvcjoiIn07eS5fX3ByaXZhdGVfXy5nZXREb2N1bWVudFByb3BlcnR5PWZ1bmN0aW9uKHQpe2lmKC0xPT09T2JqZWN0LmtleXMoeHQpLmluZGV4T2YodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5nZXREb2N1bWVudFByb3BlcnR5Iik7cmV0dXJuIHh0W3RdfSx5Ll9fcHJpdmF0ZV9fLmdldERvY3VtZW50UHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiB4dH0seS5fX3ByaXZhdGVfXy5zZXREb2N1bWVudFByb3BlcnRpZXM9eS5zZXRQcm9wZXJ0aWVzPXkuc2V0RG9jdW1lbnRQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB4dCl4dC5oYXNPd25Qcm9wZXJ0eShlKSYmdFtlXSYmKHh0W2VdPXRbZV0pO3JldHVybiB0aGlzfSx5Ll9fcHJpdmF0ZV9fLnNldERvY3VtZW50UHJvcGVydHk9ZnVuY3Rpb24odCxlKXtpZigtMT09PU9iamVjdC5rZXlzKHh0KS5pbmRleE9mKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLnNldERvY3VtZW50UHJvcGVydHkiKTtyZXR1cm4geHRbdF09ZX07dmFyIFN0LF90LFB0LGt0LEZ0LEl0PXt9LEN0PXt9LGp0PVtdLE90PXt9LEJ0PXt9LE10PXt9LEV0PXt9LHF0PW51bGwsRHQ9MCxSdD1bXSxUdD1uZXcgSSh5KSxVdD10LmhvdGZpeGVzfHxbXSx6dD17fSxIdD17fSxXdD1bXSxWdD1mdW5jdGlvbiB0KGUscixuLGksYSxvKXtpZighKHRoaXMgaW5zdGFuY2VvZiB0KSlyZXR1cm4gbmV3IHQoZSxyLG4saSxhLG8pO2lzTmFOKGUpJiYoZT0xKSxpc05hTihyKSYmKHI9MCksaXNOYU4obikmJihuPTApLGlzTmFOKGkpJiYoaT0xKSxpc05hTihhKSYmKGE9MCksaXNOYU4obykmJihvPTApLHRoaXMuX21hdHJpeD1bZSxyLG4saSxhLG9dfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVnQucHJvdG90eXBlLCJzeCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXRyaXhbMF19LHNldDpmdW5jdGlvbih0KXt0aGlzLl9tYXRyaXhbMF09dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVnQucHJvdG90eXBlLCJzaHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF0cml4WzFdfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbWF0cml4WzFdPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwic2h4Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFsyXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFsyXT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsInN5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFszXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFszXT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsInR4Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFs0XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFs0XT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsInR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFs1XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFs1XT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF0cml4WzBdfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbWF0cml4WzBdPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwiYiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXRyaXhbMV19LHNldDpmdW5jdGlvbih0KXt0aGlzLl9tYXRyaXhbMV09dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVnQucHJvdG90eXBlLCJjIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFsyXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFsyXT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsImQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF0cml4WzNdfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbWF0cml4WzNdPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwiZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXRyaXhbNF19LHNldDpmdW5jdGlvbih0KXt0aGlzLl9tYXRyaXhbNF09dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVnQucHJvdG90eXBlLCJmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hdHJpeFs1XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hdHJpeFs1XT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdC5wcm90b3R5cGUsInJvdGF0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguYXRhbjIodGhpcy5zaHgsdGhpcy5zeCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwic2NhbGVYIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVjb21wb3NlKCkuc2NhbGUuc3h9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwic2NhbGVZIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVjb21wb3NlKCkuc2NhbGUuc3l9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ0LnByb3RvdHlwZSwiaXNJZGVudGl0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5zeCYmKDA9PT10aGlzLnNoeSYmKDA9PT10aGlzLnNoeCYmKDE9PT10aGlzLnN5JiYoMD09PXRoaXMudHgmJjA9PT10aGlzLnR5KSkpKX19KSxWdC5wcm90b3R5cGUuam9pbj1mdW5jdGlvbih0KXtyZXR1cm5bdGhpcy5zeCx0aGlzLnNoeSx0aGlzLnNoeCx0aGlzLnN5LHRoaXMudHgsdGhpcy50eV0ubWFwKEUpLmpvaW4odCl9LFZ0LnByb3RvdHlwZS5tdWx0aXBseT1mdW5jdGlvbih0KXt2YXIgZT10LnN4KnRoaXMuc3grdC5zaHkqdGhpcy5zaHgscj10LnN4KnRoaXMuc2h5K3Quc2h5KnRoaXMuc3ksbj10LnNoeCp0aGlzLnN4K3Quc3kqdGhpcy5zaHgsaT10LnNoeCp0aGlzLnNoeSt0LnN5KnRoaXMuc3ksYT10LnR4KnRoaXMuc3grdC50eSp0aGlzLnNoeCt0aGlzLnR4LG89dC50eCp0aGlzLnNoeSt0LnR5KnRoaXMuc3krdGhpcy50eTtyZXR1cm4gbmV3IFZ0KGUscixuLGksYSxvKX0sVnQucHJvdG90eXBlLmRlY29tcG9zZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3gsZT10aGlzLnNoeSxyPXRoaXMuc2h4LG49dGhpcy5zeSxpPXRoaXMudHgsYT10aGlzLnR5LG89TWF0aC5zcXJ0KHQqdCtlKmUpLHM9KHQvPW8pKnIrKGUvPW8pKm47ci09dCpzLG4tPWUqczt2YXIgYz1NYXRoLnNxcnQocipyK24qbik7cmV0dXJuIHMvPWMsdCoobi89Yyk8ZSooci89YykmJih0PS10LGU9LWUscz0tcyxvPS1vKSx7c2NhbGU6bmV3IFZ0KG8sMCwwLGMsMCwwKSx0cmFuc2xhdGU6bmV3IFZ0KDEsMCwwLDEsaSxhKSxyb3RhdGU6bmV3IFZ0KHQsZSwtZSx0LDAsMCksc2tldzpuZXcgVnQoMSwwLHMsMSwwLDApfX0sVnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmpvaW4oIiAiKX0sVnQucHJvdG90eXBlLmludmVyc2VkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zeCxlPXRoaXMuc2h5LHI9dGhpcy5zaHgsbj10aGlzLnN5LGk9dGhpcy50eCxhPXRoaXMudHksbz0xLyh0Km4tZSpyKSxzPW4qbyxjPS1lKm8sdT0tcipvLGw9dCpvO3JldHVybiBuZXcgVnQocyxjLHUsbCwtcyppLXUqYSwtYyppLWwqYSl9LFZ0LnByb3RvdHlwZS5hcHBseVRvUG9pbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC54KnRoaXMuc3grdC55KnRoaXMuc2h4K3RoaXMudHgscj10LngqdGhpcy5zaHkrdC55KnRoaXMuc3krdGhpcy50eTtyZXR1cm4gbmV3IENyKGUscil9LFZ0LnByb3RvdHlwZS5hcHBseVRvUmVjdGFuZ2xlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYXBwbHlUb1BvaW50KHQpLHI9dGhpcy5hcHBseVRvUG9pbnQobmV3IENyKHQueCt0LncsdC55K3QuaCkpO3JldHVybiBuZXcganIoZS54LGUueSxyLngtZS54LHIueS1lLnkpfSxWdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnN4LGU9dGhpcy5zaHkscj10aGlzLnNoeCxuPXRoaXMuc3ksaT10aGlzLnR4LGE9dGhpcy50eTtyZXR1cm4gbmV3IFZ0KHQsZSxyLG4saSxhKX0seS5NYXRyaXg9VnQ7dmFyIEd0PXkubWF0cml4TXVsdD1mdW5jdGlvbih0LGUpe3JldHVybiBlLm11bHRpcGx5KHQpfSxZdD1uZXcgVnQoMSwwLDAsMSwwLDApO3kudW5pdE1hdHJpeD15LmlkZW50aXR5TWF0cml4PVl0O3ZhciBKdD1mdW5jdGlvbih0LGUpe2lmKCFCdFt0XSl7dmFyIHI9KGUgaW5zdGFuY2VvZiBPPyJTaCI6IlAiKSsoT2JqZWN0LmtleXMoT3QpLmxlbmd0aCsxKS50b1N0cmluZygxMCk7ZS5pZD1yLEJ0W3RdPXIsT3Rbcl09ZSxUdC5wdWJsaXNoKCJhZGRQYXR0ZXJuIixlKX19O3kuU2hhZGluZ1BhdHRlcm49Tyx5LlRpbGluZ1BhdHRlcm49Qix5LmFkZFNoYWRpbmdQYXR0ZXJuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHEoImFkZFNoYWRpbmdQYXR0ZXJuKCkiKSxKdCh0LGUpLHRoaXN9LHkuYmVnaW5UaWxpbmdQYXR0ZXJuPWZ1bmN0aW9uKHQpe3EoImJlZ2luVGlsaW5nUGF0dGVybigpIiksQnIodC5ib3VuZGluZ0JveFswXSx0LmJvdW5kaW5nQm94WzFdLHQuYm91bmRpbmdCb3hbMl0tdC5ib3VuZGluZ0JveFswXSx0LmJvdW5kaW5nQm94WzNdLXQuYm91bmRpbmdCb3hbMV0sdC5tYXRyaXgpfSx5LmVuZFRpbGluZ1BhdHRlcm49ZnVuY3Rpb24odCxlKXtxKCJlbmRUaWxpbmdQYXR0ZXJuKCkiKSxlLnN0cmVhbT1vdFskXS5qb2luKCJcbiIpLEp0KHQsZSksVHQucHVibGlzaCgiZW5kVGlsaW5nUGF0dGVybiIsZSksV3QucG9wKCkucmVzdG9yZSgpfTt2YXIgWHQ9eS5fX3ByaXZhdGVfXy5uZXdPYmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD1LdCgpO3JldHVybiBadCh0LCEwKSx0fSxLdD15Ll9fcHJpdmF0ZV9fLm5ld09iamVjdERlZmVycmVkPWZ1bmN0aW9uKCl7cmV0dXJuIGV0KysscnRbZXRdPWZ1bmN0aW9uKCl7cmV0dXJuIGl0fSxldH0sWnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT0iYm9vbGVhbiI9PXR5cGVvZiBlJiZlLHJ0W3RdPWl0LGUmJmh0KHQrIiAwIG9iaiIpLHR9LCR0PXkuX19wcml2YXRlX18ubmV3QWRkaXRpb25hbE9iamVjdD1mdW5jdGlvbigpe3ZhciB0PXtvYmpJZDpLdCgpLGNvbnRlbnQ6IiJ9O3JldHVybiBhdC5wdXNoKHQpLHR9LFF0PUt0KCksdGU9S3QoKSxlZT15Ll9fcHJpdmF0ZV9fLmRlY29kZUNvbG9yU3RyaW5nPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQoIiAiKTtpZigyIT09ZS5sZW5ndGh8fCJnIiE9PWVbMV0mJiJHIiE9PWVbMV0pe2lmKDU9PT1lLmxlbmd0aCYmKCJrIj09PWVbNF18fCJLIj09PWVbNF0pKXtlPVsoMS1lWzBdKSooMS1lWzNdKSwoMS1lWzFdKSooMS1lWzNdKSwoMS1lWzJdKSooMS1lWzNdKSwiciJdfX1lbHNle3ZhciByPXBhcnNlRmxvYXQoZVswXSk7ZT1bcixyLHIsInIiXX1mb3IodmFyIG49IiMiLGk9MDtpPDM7aSsrKW4rPSgiMCIrTWF0aC5mbG9vcigyNTUqcGFyc2VGbG9hdChlW2ldKSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7cmV0dXJuIG59LHJlPXkuX19wcml2YXRlX18uZW5jb2RlQ29sb3JTdHJpbmc9ZnVuY3Rpb24odCl7dmFyIHI7InN0cmluZyI9PXR5cGVvZiB0JiYodD17Y2gxOnR9KTt2YXIgbj10LmNoMSxpPXQuY2gyLGE9dC5jaDMsbz10LmNoNCxzPSJkcmF3Ij09PXQucGRmQ29sb3JUeXBlP1siRyIsIlJHIiwiSyJdOlsiZyIsInJnIiwiayJdO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIiMiIT09bi5jaGFyQXQoMCkpe3ZhciBjPW5ldyBoKG4pO2lmKGMub2spbj1jLnRvSGV4KCk7ZWxzZSBpZighL15cZCpcLj9cZCokLy50ZXN0KG4pKXRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2xvciAiJytuKyciIHBhc3NlZCB0byBqc1BERi5lbmNvZGVDb2xvclN0cmluZy4nKX1pZigic3RyaW5nIj09dHlwZW9mIG4mJi9eI1swLTlBLUZhLWZdezN9JC8udGVzdChuKSYmKG49IiMiK25bMV0rblsxXStuWzJdK25bMl0rblszXStuWzNdKSwic3RyaW5nIj09dHlwZW9mIG4mJi9eI1swLTlBLUZhLWZdezZ9JC8udGVzdChuKSl7dmFyIHU9cGFyc2VJbnQobi5zdWJzdHIoMSksMTYpO249dT4+MTYmMjU1LGk9dT4+OCYyNTUsYT0yNTUmdX1pZih2b2lkIDA9PT1pfHx2b2lkIDA9PT1vJiZuPT09aSYmaT09PWEpaWYoInN0cmluZyI9PXR5cGVvZiBuKXI9bisiICIrc1swXTtlbHNlIHN3aXRjaCh0LnByZWNpc2lvbil7Y2FzZSAyOnI9UihuLzI1NSkrIiAiK3NbMF07YnJlYWs7Y2FzZSAzOmRlZmF1bHQ6cj1UKG4vMjU1KSsiICIrc1swXX1lbHNlIGlmKHZvaWQgMD09PW98fCJvYmplY3QiPT09ZShvKSl7aWYobyYmIWlzTmFOKG8uYSkmJjA9PT1vLmEpcmV0dXJuIHI9WyIxLiIsIjEuIiwiMS4iLHNbMV1dLmpvaW4oIiAiKTtpZigic3RyaW5nIj09dHlwZW9mIG4pcj1bbixpLGEsc1sxXV0uam9pbigiICIpO2Vsc2Ugc3dpdGNoKHQucHJlY2lzaW9uKXtjYXNlIDI6cj1bUihuLzI1NSksUihpLzI1NSksUihhLzI1NSksc1sxXV0uam9pbigiICIpO2JyZWFrO2RlZmF1bHQ6Y2FzZSAzOnI9W1Qobi8yNTUpLFQoaS8yNTUpLFQoYS8yNTUpLHNbMV1dLmpvaW4oIiAiKX19ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIG4pcj1bbixpLGEsbyxzWzJdXS5qb2luKCIgIik7ZWxzZSBzd2l0Y2godC5wcmVjaXNpb24pe2Nhc2UgMjpyPVtSKG4pLFIoaSksUihhKSxSKG8pLHNbMl1dLmpvaW4oIiAiKTticmVhaztjYXNlIDM6ZGVmYXVsdDpyPVtUKG4pLFQoaSksVChhKSxUKG8pLHNbMl1dLmpvaW4oIiAiKX1yZXR1cm4gcn0sbmU9eS5fX3ByaXZhdGVfXy5nZXRGaWx0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGllPXkuX19wcml2YXRlX18ucHV0U3RyZWFtPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fHt9KS5kYXRhfHwiIixyPXQuZmlsdGVyc3x8bmUoKSxuPXQuYWxyZWFkeUFwcGxpZWRGaWx0ZXJzfHxbXSxpPXQuYWRkTGVuZ3RoMXx8ITEsYT1lLmxlbmd0aCxvPXQub2JqZWN0SWQscz1mdW5jdGlvbih0KXtyZXR1cm4gdH07aWYobnVsbCE9PW0mJnZvaWQgMD09PW8pdGhyb3cgbmV3IEVycm9yKCJPYmplY3RJZCBtdXN0IGJlIHBhc3NlZCB0byBwdXRTdHJlYW0gZm9yIGZpbGUgZW5jcnlwdGlvbiIpO251bGwhPT1tJiYocz1ZZS5lbmNyeXB0b3IobywwKSk7dmFyIGM9e307ITA9PT1yJiYocj1bIkZsYXRlRW5jb2RlIl0pO3ZhciB1PXQuYWRkaXRpb25hbEtleVZhbHVlc3x8W10sbD0oYz12b2lkIDAhPT1NLkFQSS5wcm9jZXNzRGF0YUJ5RmlsdGVycz9NLkFQSS5wcm9jZXNzRGF0YUJ5RmlsdGVycyhlLHIpOntkYXRhOmUscmV2ZXJzZUNoYWluOltdfSkucmV2ZXJzZUNoYWluKyhBcnJheS5pc0FycmF5KG4pP24uam9pbigiICIpOm4udG9TdHJpbmcoKSk7aWYoMCE9PWMuZGF0YS5sZW5ndGgmJih1LnB1c2goe2tleToiTGVuZ3RoIix2YWx1ZTpjLmRhdGEubGVuZ3RofSksITA9PT1pJiZ1LnB1c2goe2tleToiTGVuZ3RoMSIsdmFsdWU6YX0pKSwwIT1sLmxlbmd0aClpZihsLnNwbGl0KCIvIikubGVuZ3RoLTE9PTEpdS5wdXNoKHtrZXk6IkZpbHRlciIsdmFsdWU6bH0pO2Vsc2V7dS5wdXNoKHtrZXk6IkZpbHRlciIsdmFsdWU6IlsiK2wrIl0ifSk7Zm9yKHZhciBoPTA7aDx1Lmxlbmd0aDtoKz0xKWlmKCJEZWNvZGVQYXJtcyI9PT11W2hdLmtleSl7Zm9yKHZhciBmPVtdLGQ9MDtkPGMucmV2ZXJzZUNoYWluLnNwbGl0KCIvIikubGVuZ3RoLTE7ZCs9MSlmLnB1c2goIm51bGwiKTtmLnB1c2godVtoXS52YWx1ZSksdVtoXS52YWx1ZT0iWyIrZi5qb2luKCIgIikrIl0ifX1odCgiPDwiKTtmb3IodmFyIHA9MDtwPHUubGVuZ3RoO3ArKylodCgiLyIrdVtwXS5rZXkrIiAiK3VbcF0udmFsdWUpO2h0KCI+PiIpLDAhPT1jLmRhdGEubGVuZ3RoJiYoaHQoInN0cmVhbSIpLGh0KHMoYy5kYXRhKSksaHQoImVuZHN0cmVhbSIpKX0sYWU9eS5fX3ByaXZhdGVfXy5wdXRQYWdlPWZ1bmN0aW9uKHQpe3ZhciBlPXQubnVtYmVyLHI9dC5kYXRhLG49dC5vYmpJZCxpPXQuY29udGVudHNPYmpJZDtadChuLCEwKSxodCgiPDwvVHlwZSAvUGFnZSIpLGh0KCIvUGFyZW50ICIrdC5yb290RGljdGlvbmFyeU9iaklkKyIgMCBSIiksaHQoIi9SZXNvdXJjZXMgIit0LnJlc291cmNlRGljdGlvbmFyeU9iaklkKyIgMCBSIiksaHQoIi9NZWRpYUJveCBbIitwYXJzZUZsb2F0KEUodC5tZWRpYUJveC5ib3R0b21MZWZ0WCkpKyIgIitwYXJzZUZsb2F0KEUodC5tZWRpYUJveC5ib3R0b21MZWZ0WSkpKyIgIitFKHQubWVkaWFCb3gudG9wUmlnaHRYKSsiICIrRSh0Lm1lZGlhQm94LnRvcFJpZ2h0WSkrIl0iKSxudWxsIT09dC5jcm9wQm94JiZodCgiL0Nyb3BCb3ggWyIrRSh0LmNyb3BCb3guYm90dG9tTGVmdFgpKyIgIitFKHQuY3JvcEJveC5ib3R0b21MZWZ0WSkrIiAiK0UodC5jcm9wQm94LnRvcFJpZ2h0WCkrIiAiK0UodC5jcm9wQm94LnRvcFJpZ2h0WSkrIl0iKSxudWxsIT09dC5ibGVlZEJveCYmaHQoIi9CbGVlZEJveCBbIitFKHQuYmxlZWRCb3guYm90dG9tTGVmdFgpKyIgIitFKHQuYmxlZWRCb3guYm90dG9tTGVmdFkpKyIgIitFKHQuYmxlZWRCb3gudG9wUmlnaHRYKSsiICIrRSh0LmJsZWVkQm94LnRvcFJpZ2h0WSkrIl0iKSxudWxsIT09dC50cmltQm94JiZodCgiL1RyaW1Cb3ggWyIrRSh0LnRyaW1Cb3guYm90dG9tTGVmdFgpKyIgIitFKHQudHJpbUJveC5ib3R0b21MZWZ0WSkrIiAiK0UodC50cmltQm94LnRvcFJpZ2h0WCkrIiAiK0UodC50cmltQm94LnRvcFJpZ2h0WSkrIl0iKSxudWxsIT09dC5hcnRCb3gmJmh0KCIvQXJ0Qm94IFsiK0UodC5hcnRCb3guYm90dG9tTGVmdFgpKyIgIitFKHQuYXJ0Qm94LmJvdHRvbUxlZnRZKSsiICIrRSh0LmFydEJveC50b3BSaWdodFgpKyIgIitFKHQuYXJ0Qm94LnRvcFJpZ2h0WSkrIl0iKSwibnVtYmVyIj09dHlwZW9mIHQudXNlclVuaXQmJjEhPT10LnVzZXJVbml0JiZodCgiL1VzZXJVbml0ICIrdC51c2VyVW5pdCksVHQucHVibGlzaCgicHV0UGFnZSIse29iaklkOm4scGFnZUNvbnRleHQ6UnRbZV0scGFnZU51bWJlcjplLHBhZ2U6cn0pLGh0KCIvQ29udGVudHMgIitpKyIgMCBSIiksaHQoIj4+IiksaHQoImVuZG9iaiIpO3ZhciBhPXIuam9pbigiXG4iKTtyZXR1cm4gUz09PXguQURWQU5DRUQmJihhKz0iXG5RIiksWnQoaSwhMCksaWUoe2RhdGE6YSxmaWx0ZXJzOm5lKCksb2JqZWN0SWQ6aX0pLGh0KCJlbmRvYmoiKSxufSxvZT15Ll9fcHJpdmF0ZV9fLnB1dFBhZ2VzPWZ1bmN0aW9uKCl7dmFyIHQsZSxyPVtdO2Zvcih0PTE7dDw9RHQ7dCsrKVJ0W3RdLm9iaklkPUt0KCksUnRbdF0uY29udGVudHNPYmpJZD1LdCgpO2Zvcih0PTE7dDw9RHQ7dCsrKXIucHVzaChhZSh7bnVtYmVyOnQsZGF0YTpvdFt0XSxvYmpJZDpSdFt0XS5vYmpJZCxjb250ZW50c09iaklkOlJ0W3RdLmNvbnRlbnRzT2JqSWQsbWVkaWFCb3g6UnRbdF0ubWVkaWFCb3gsY3JvcEJveDpSdFt0XS5jcm9wQm94LGJsZWVkQm94OlJ0W3RdLmJsZWVkQm94LHRyaW1Cb3g6UnRbdF0udHJpbUJveCxhcnRCb3g6UnRbdF0uYXJ0Qm94LHVzZXJVbml0OlJ0W3RdLnVzZXJVbml0LHJvb3REaWN0aW9uYXJ5T2JqSWQ6UXQscmVzb3VyY2VEaWN0aW9uYXJ5T2JqSWQ6dGV9KSk7WnQoUXQsITApLGh0KCI8PC9UeXBlIC9QYWdlcyIpO3ZhciBuPSIvS2lkcyBbIjtmb3IoZT0wO2U8RHQ7ZSsrKW4rPXJbZV0rIiAwIFIgIjtodChuKyJdIiksaHQoIi9Db3VudCAiK0R0KSxodCgiPj4iKSxodCgiZW5kb2JqIiksVHQucHVibGlzaCgicG9zdFB1dFBhZ2VzIil9LHNlPWZ1bmN0aW9uKHQpe1R0LnB1Ymxpc2goInB1dEZvbnQiLHtmb250OnQsb3V0Omh0LG5ld09iamVjdDpYdCxwdXRTdHJlYW06aWV9KSwhMCE9PXQuaXNBbHJlYWR5UHV0dGVkJiYodC5vYmplY3ROdW1iZXI9WHQoKSxodCgiPDwiKSxodCgiL1R5cGUgL0ZvbnQiKSxodCgiL0Jhc2VGb250IC8iK0YodC5wb3N0U2NyaXB0TmFtZSkpLGh0KCIvU3VidHlwZSAvVHlwZTEiKSwic3RyaW5nIj09dHlwZW9mIHQuZW5jb2RpbmcmJmh0KCIvRW5jb2RpbmcgLyIrdC5lbmNvZGluZyksaHQoIi9GaXJzdENoYXIgMzIiKSxodCgiL0xhc3RDaGFyIDI1NSIpLGh0KCI+PiIpLGh0KCJlbmRvYmoiKSl9LGNlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIEl0KUl0Lmhhc093blByb3BlcnR5KHQpJiYoITE9PT12fHwhMD09PXYmJmIuaGFzT3duUHJvcGVydHkodCkpJiZzZShJdFt0XSl9LHVlPWZ1bmN0aW9uKHQpe3Qub2JqZWN0TnVtYmVyPVh0KCk7dmFyIGU9W107ZS5wdXNoKHtrZXk6IlR5cGUiLHZhbHVlOiIvWE9iamVjdCJ9KSxlLnB1c2goe2tleToiU3VidHlwZSIsdmFsdWU6Ii9Gb3JtIn0pLGUucHVzaCh7a2V5OiJCQm94Iix2YWx1ZToiWyIrW0UodC54KSxFKHQueSksRSh0LngrdC53aWR0aCksRSh0LnkrdC5oZWlnaHQpXS5qb2luKCIgIikrIl0ifSksZS5wdXNoKHtrZXk6Ik1hdHJpeCIsdmFsdWU6IlsiK3QubWF0cml4LnRvU3RyaW5nKCkrIl0ifSk7dmFyIHI9dC5wYWdlc1sxXS5qb2luKCJcbiIpO2llKHtkYXRhOnIsYWRkaXRpb25hbEtleVZhbHVlczplLG9iamVjdElkOnQub2JqZWN0TnVtYmVyfSksaHQoImVuZG9iaiIpfSxsZT1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB6dCl6dC5oYXNPd25Qcm9wZXJ0eSh0KSYmdWUoenRbdF0pfSxoZT1mdW5jdGlvbih0LGUpe3ZhciByLG49W10saT0xLyhlLTEpO2ZvcihyPTA7cjwxO3IrPWkpbi5wdXNoKHIpO2lmKG4ucHVzaCgxKSwwIT10WzBdLm9mZnNldCl7dmFyIGE9e29mZnNldDowLGNvbG9yOnRbMF0uY29sb3J9O3QudW5zaGlmdChhKX1pZigxIT10W3QubGVuZ3RoLTFdLm9mZnNldCl7dmFyIG89e29mZnNldDoxLGNvbG9yOnRbdC5sZW5ndGgtMV0uY29sb3J9O3QucHVzaChvKX1mb3IodmFyIHM9IiIsYz0wLHU9MDt1PG4ubGVuZ3RoO3UrKyl7Zm9yKHI9blt1XTtyPnRbYysxXS5vZmZzZXQ7KWMrKzt2YXIgbD10W2NdLm9mZnNldCxoPShyLWwpLyh0W2MrMV0ub2Zmc2V0LWwpLGY9dFtjXS5jb2xvcixkPXRbYysxXS5jb2xvcjtzKz10dChNYXRoLnJvdW5kKCgxLWgpKmZbMF0raCpkWzBdKS50b1N0cmluZygxNikpK3R0KE1hdGgucm91bmQoKDEtaCkqZlsxXStoKmRbMV0pLnRvU3RyaW5nKDE2KSkrdHQoTWF0aC5yb3VuZCgoMS1oKSpmWzJdK2gqZFsyXSkudG9TdHJpbmcoMTYpKX1yZXR1cm4gcy50cmltKCl9LGZlPWZ1bmN0aW9uKHQsZSl7ZXx8KGU9MjEpO3ZhciByPVh0KCksbj1oZSh0LmNvbG9ycyxlKSxpPVtdO2kucHVzaCh7a2V5OiJGdW5jdGlvblR5cGUiLHZhbHVlOiIwIn0pLGkucHVzaCh7a2V5OiJEb21haW4iLHZhbHVlOiJbMC4wIDEuMF0ifSksaS5wdXNoKHtrZXk6IlNpemUiLHZhbHVlOiJbIitlKyJdIn0pLGkucHVzaCh7a2V5OiJCaXRzUGVyU2FtcGxlIix2YWx1ZToiOCJ9KSxpLnB1c2goe2tleToiUmFuZ2UiLHZhbHVlOiJbMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjBdIn0pLGkucHVzaCh7a2V5OiJEZWNvZGUiLHZhbHVlOiJbMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjBdIn0pLGllKHtkYXRhOm4sYWRkaXRpb25hbEtleVZhbHVlczppLGFscmVhZHlBcHBsaWVkRmlsdGVyczpbIi9BU0NJSUhleERlY29kZSJdLG9iamVjdElkOnJ9KSxodCgiZW5kb2JqIiksdC5vYmplY3ROdW1iZXI9WHQoKSxodCgiPDwgL1NoYWRpbmdUeXBlICIrdC50eXBlKSxodCgiL0NvbG9yU3BhY2UgL0RldmljZVJHQiIpO3ZhciBhPSIvQ29vcmRzIFsiK0UocGFyc2VGbG9hdCh0LmNvb3Jkc1swXSkpKyIgIitFKHBhcnNlRmxvYXQodC5jb29yZHNbMV0pKSsiICI7Mj09PXQudHlwZT9hKz1FKHBhcnNlRmxvYXQodC5jb29yZHNbMl0pKSsiICIrRShwYXJzZUZsb2F0KHQuY29vcmRzWzNdKSk6YSs9RShwYXJzZUZsb2F0KHQuY29vcmRzWzJdKSkrIiAiK0UocGFyc2VGbG9hdCh0LmNvb3Jkc1szXSkpKyIgIitFKHBhcnNlRmxvYXQodC5jb29yZHNbNF0pKSsiICIrRShwYXJzZUZsb2F0KHQuY29vcmRzWzVdKSksaHQoYSs9Il0iKSx0Lm1hdHJpeCYmaHQoIi9NYXRyaXggWyIrdC5tYXRyaXgudG9TdHJpbmcoKSsiXSIpLGh0KCIvRnVuY3Rpb24gIityKyIgMCBSIiksaHQoIi9FeHRlbmQgW3RydWUgdHJ1ZV0iKSxodCgiPj4iKSxodCgiZW5kb2JqIil9LGRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9S3QoKSxuPVh0KCk7ZS5wdXNoKHtyZXNvdXJjZXNPaWQ6cixvYmplY3RPaWQ6bn0pLHQub2JqZWN0TnVtYmVyPW47dmFyIGk9W107aS5wdXNoKHtrZXk6IlR5cGUiLHZhbHVlOiIvUGF0dGVybiJ9KSxpLnB1c2goe2tleToiUGF0dGVyblR5cGUiLHZhbHVlOiIxIn0pLGkucHVzaCh7a2V5OiJQYWludFR5cGUiLHZhbHVlOiIxIn0pLGkucHVzaCh7a2V5OiJUaWxpbmdUeXBlIix2YWx1ZToiMSJ9KSxpLnB1c2goe2tleToiQkJveCIsdmFsdWU6IlsiK3QuYm91bmRpbmdCb3gubWFwKEUpLmpvaW4oIiAiKSsiXSJ9KSxpLnB1c2goe2tleToiWFN0ZXAiLHZhbHVlOkUodC54U3RlcCl9KSxpLnB1c2goe2tleToiWVN0ZXAiLHZhbHVlOkUodC55U3RlcCl9KSxpLnB1c2goe2tleToiUmVzb3VyY2VzIix2YWx1ZTpyKyIgMCBSIn0pLHQubWF0cml4JiZpLnB1c2goe2tleToiTWF0cml4Iix2YWx1ZToiWyIrdC5tYXRyaXgudG9TdHJpbmcoKSsiXSJ9KSxpZSh7ZGF0YTp0LnN0cmVhbSxhZGRpdGlvbmFsS2V5VmFsdWVzOmksb2JqZWN0SWQ6dC5vYmplY3ROdW1iZXJ9KSxodCgiZW5kb2JqIil9LHBlPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlIGluIE90KU90Lmhhc093blByb3BlcnR5KGUpJiYoT3RbZV1pbnN0YW5jZW9mIE8\/ZmUoT3RbZV0pOk90W2VdaW5zdGFuY2VvZiBCJiZkZShPdFtlXSx0KSl9LGdlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0Lm9iamVjdE51bWJlcj1YdCgpLGh0KCI8PCIpLHQpc3dpdGNoKGUpe2Nhc2Uib3BhY2l0eSI6aHQoIi9jYSAiK1IodFtlXSkpO2JyZWFrO2Nhc2Uic3Ryb2tlLW9wYWNpdHkiOmh0KCIvQ0EgIitSKHRbZV0pKX1odCgiPj4iKSxodCgiZW5kb2JqIil9LG1lPWZ1bmN0aW9uKCl7dmFyIHQ7Zm9yKHQgaW4gTXQpTXQuaGFzT3duUHJvcGVydHkodCkmJmdlKE10W3RdKX0sdmU9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gaHQoIi9YT2JqZWN0IDw8IiksenQpenQuaGFzT3duUHJvcGVydHkodCkmJnp0W3RdLm9iamVjdE51bWJlcj49MCYmaHQoIi8iK3QrIiAiK3p0W3RdLm9iamVjdE51bWJlcisiIDAgUiIpO1R0LnB1Ymxpc2goInB1dFhvYmplY3REaWN0IiksaHQoIj4+Iil9LGJlPWZ1bmN0aW9uKCl7WWUub2lkPVh0KCksaHQoIjw8IiksaHQoIi9GaWx0ZXIgL1N0YW5kYXJkIiksaHQoIi9WICIrWWUudiksaHQoIi9SICIrWWUuciksaHQoIi9VIDwiK1llLnRvSGV4U3RyaW5nKFllLlUpKyI+IiksaHQoIi9PIDwiK1llLnRvSGV4U3RyaW5nKFllLk8pKyI+IiksaHQoIi9QICIrWWUuUCksaHQoIj4+IiksaHQoImVuZG9iaiIpfSx5ZT1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiBodCgiL0ZvbnQgPDwiKSxJdClJdC5oYXNPd25Qcm9wZXJ0eSh0KSYmKCExPT09dnx8ITA9PT12JiZiLmhhc093blByb3BlcnR5KHQpKSYmaHQoIi8iK3QrIiAiK0l0W3RdLm9iamVjdE51bWJlcisiIDAgUiIpO2h0KCI+PiIpfSx3ZT1mdW5jdGlvbigpe2lmKE9iamVjdC5rZXlzKE90KS5sZW5ndGg+MCl7Zm9yKHZhciB0IGluIGh0KCIvU2hhZGluZyA8PCIpLE90KU90Lmhhc093blByb3BlcnR5KHQpJiZPdFt0XWluc3RhbmNlb2YgTyYmT3RbdF0ub2JqZWN0TnVtYmVyPj0wJiZodCgiLyIrdCsiICIrT3RbdF0ub2JqZWN0TnVtYmVyKyIgMCBSIik7VHQucHVibGlzaCgicHV0U2hhZGluZ1BhdHRlcm5EaWN0IiksaHQoIj4+Iil9fSxOZT1mdW5jdGlvbih0KXtpZihPYmplY3Qua2V5cyhPdCkubGVuZ3RoPjApe2Zvcih2YXIgZSBpbiBodCgiL1BhdHRlcm4gPDwiKSxPdClPdC5oYXNPd25Qcm9wZXJ0eShlKSYmT3RbZV1pbnN0YW5jZW9mIHkuVGlsaW5nUGF0dGVybiYmT3RbZV0ub2JqZWN0TnVtYmVyPj0wJiZPdFtlXS5vYmplY3ROdW1iZXI8dCYmaHQoIi8iK2UrIiAiK090W2VdLm9iamVjdE51bWJlcisiIDAgUiIpO1R0LnB1Ymxpc2goInB1dFRpbGluZ1BhdHRlcm5EaWN0IiksaHQoIj4+Iil9fSxMZT1mdW5jdGlvbigpe2lmKE9iamVjdC5rZXlzKE10KS5sZW5ndGg+MCl7dmFyIHQ7Zm9yKHQgaW4gaHQoIi9FeHRHU3RhdGUgPDwiKSxNdClNdC5oYXNPd25Qcm9wZXJ0eSh0KSYmTXRbdF0ub2JqZWN0TnVtYmVyPj0wJiZodCgiLyIrdCsiICIrTXRbdF0ub2JqZWN0TnVtYmVyKyIgMCBSIik7VHQucHVibGlzaCgicHV0R1N0YXRlRGljdCIpLGh0KCI+PiIpfX0sQWU9ZnVuY3Rpb24odCl7WnQodC5yZXNvdXJjZXNPaWQsITApLGh0KCI8PCIpLGh0KCIvUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0iKSx5ZSgpLHdlKCksTmUodC5vYmplY3RPaWQpLExlKCksdmUoKSxodCgiPj4iKSxodCgiZW5kb2JqIil9LHhlPWZ1bmN0aW9uKCl7dmFyIHQ9W107Y2UoKSxtZSgpLGxlKCkscGUodCksVHQucHVibGlzaCgicHV0UmVzb3VyY2VzIiksdC5mb3JFYWNoKEFlKSxBZSh7cmVzb3VyY2VzT2lkOnRlLG9iamVjdE9pZDpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0pLFR0LnB1Ymxpc2goInBvc3RQdXRSZXNvdXJjZXMiKX0sU2U9ZnVuY3Rpb24oKXtUdC5wdWJsaXNoKCJwdXRBZGRpdGlvbmFsT2JqZWN0cyIpO2Zvcih2YXIgdD0wO3Q8YXQubGVuZ3RoO3QrKyl7dmFyIGU9YXRbdF07WnQoZS5vYmpJZCwhMCksaHQoZS5jb250ZW50KSxodCgiZW5kb2JqIil9VHQucHVibGlzaCgicG9zdFB1dEFkZGl0aW9uYWxPYmplY3RzIil9LF9lPWZ1bmN0aW9uKHQpe0N0W3QuZm9udE5hbWVdPUN0W3QuZm9udE5hbWVdfHx7fSxDdFt0LmZvbnROYW1lXVt0LmZvbnRTdHlsZV09dC5pZH0sUGU9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT17aWQ6IkYiKyhPYmplY3Qua2V5cyhJdCkubGVuZ3RoKzEpLnRvU3RyaW5nKDEwKSxwb3N0U2NyaXB0TmFtZTp0LGZvbnROYW1lOmUsZm9udFN0eWxlOnIsZW5jb2Rpbmc6bixpc1N0YW5kYXJkRm9udDppfHwhMSxtZXRhZGF0YTp7fX07cmV0dXJuIFR0LnB1Ymxpc2goImFkZEZvbnQiLHtmb250OmEsaW5zdGFuY2U6dGhpc30pLEl0W2EuaWRdPWEsX2UoYSksYS5pZH0sa2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj1wdC5sZW5ndGg7ZTxyO2UrKyl7dmFyIG49UGUuY2FsbCh0aGlzLHRbZV1bMF0sdFtlXVsxXSx0W2VdWzJdLHB0W2VdWzNdLCEwKTshMT09PXYmJihiW25dPSEwKTt2YXIgaT10W2VdWzBdLnNwbGl0KCItIik7X2Uoe2lkOm4sZm9udE5hbWU6aVswXSxmb250U3R5bGU6aVsxXXx8IiJ9KX1UdC5wdWJsaXNoKCJhZGRGb250cyIse2ZvbnRzOkl0LGRpY3Rpb25hcnk6Q3R9KX0sRmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9vPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt2YXIgZT10LnN0YWNrfHwiIjt+ZS5pbmRleE9mKCIgYXQgIikmJihlPWUuc3BsaXQoIiBhdCAiKVsxXSk7dmFyIG49IkVycm9yIGluIGZ1bmN0aW9uICIrZS5zcGxpdCgiXG4iKVswXS5zcGxpdCgiPCIpWzBdKyI6ICIrdC5tZXNzYWdlO2lmKCFyLmNvbnNvbGUpdGhyb3cgbmV3IEVycm9yKG4pO3IuY29uc29sZS5lcnJvcihuLHQpLHIuYWxlcnQmJmFsZXJ0KG4pfX0sdC5mb28uYmFyPXQsdC5mb299LEllPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGEsbyxzLGMsdSxsO2lmKGk9KGU9ZXx8e30pLnNvdXJjZUVuY29kaW5nfHwiVW5pY29kZSIsbz1lLm91dHB1dEVuY29kaW5nLChlLmF1dG9lbmNvZGV8fG8pJiZJdFtTdF0ubWV0YWRhdGEmJkl0W1N0XS5tZXRhZGF0YVtpXSYmSXRbU3RdLm1ldGFkYXRhW2ldLmVuY29kaW5nJiYoYT1JdFtTdF0ubWV0YWRhdGFbaV0uZW5jb2RpbmcsIW8mJkl0W1N0XS5lbmNvZGluZyYmKG89SXRbU3RdLmVuY29kaW5nKSwhbyYmYS5jb2RlUGFnZXMmJihvPWEuY29kZVBhZ2VzWzBdKSwic3RyaW5nIj09dHlwZW9mIG8mJihvPWFbb10pLG8pKXtmb3IoYz0hMSxzPVtdLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspKHU9b1t0LmNoYXJDb2RlQXQocildKT9zLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh1KSk6cy5wdXNoKHRbcl0pLHNbcl0uY2hhckNvZGVBdCgwKT4+OCYmKGM9ITApO3Q9cy5qb2luKCIiKX1mb3Iocj10Lmxlbmd0aDt2b2lkIDA9PT1jJiYwIT09cjspdC5jaGFyQ29kZUF0KHItMSk+PjgmJihjPSEwKSxyLS07aWYoIWMpcmV0dXJuIHQ7Zm9yKHM9ZS5ub0JPTT9bXTpbMjU0LDI1NV0scj0wLG49dC5sZW5ndGg7cjxuO3IrKyl7aWYoKGw9KHU9dC5jaGFyQ29kZUF0KHIpKT4+OCk+PjgpdGhyb3cgbmV3IEVycm9yKCJDaGFyYWN0ZXIgYXQgcG9zaXRpb24gIityKyIgb2Ygc3RyaW5nICciK3QrIicgZXhjZWVkcyAxNmJpdHMuIENhbm5vdCBiZSBlbmNvZGVkIGludG8gVUNTLTIgQkUiKTtzLnB1c2gobCkscy5wdXNoKHUtKGw8PDgpKX1yZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSh2b2lkIDAscyl9LENlPXkuX19wcml2YXRlX18ucGRmRXNjYXBlPXkucGRmRXNjYXBlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEllKHQsZSkucmVwbGFjZSgvXFwvZywiXFxcXCIpLnJlcGxhY2UoL1woL2csIlxcKCIpLnJlcGxhY2UoL1wpL2csIlxcKSIpfSxqZT15Ll9fcHJpdmF0ZV9fLmJlZ2luUGFnZT1mdW5jdGlvbih0KXtvdFsrK0R0XT1bXSxSdFtEdF09e29iaklkOjAsY29udGVudHNPYmpJZDowLHVzZXJVbml0Ok51bWJlcihkKSxhcnRCb3g6bnVsbCxibGVlZEJveDpudWxsLGNyb3BCb3g6bnVsbCx0cmltQm94Om51bGwsbWVkaWFCb3g6e2JvdHRvbUxlZnRYOjAsYm90dG9tTGVmdFk6MCx0b3BSaWdodFg6TnVtYmVyKHRbMF0pLHRvcFJpZ2h0WTpOdW1iZXIodFsxXSl9fSxNZShEdCksbHQob3RbJF0pfSxPZT1mdW5jdGlvbih0LGUpe3ZhciByLG4sbztzd2l0Y2goYT1lfHxhLCJzdHJpbmciPT10eXBlb2YgdCYmKHI9QSh0LnRvTG93ZXJDYXNlKCkpLEFycmF5LmlzQXJyYXkocikmJihuPXJbMF0sbz1yWzFdKSksQXJyYXkuaXNBcnJheSh0KSYmKG49dFswXSpfdCxvPXRbMV0qX3QpLGlzTmFOKG4pJiYobj1zWzBdLG89c1sxXSksKG4+MTQ0MDB8fG8+MTQ0MDApJiYoaS53YXJuKCJBIHBhZ2UgaW4gYSBQREYgY2FuIG5vdCBiZSB3aWRlciBvciB0YWxsZXIgdGhhbiAxNDQwMCB1c2VyVW5pdC4ganNQREYgbGltaXRzIHRoZSB3aWR0aC9oZWlnaHQgdG8gMTQ0MDAiKSxuPU1hdGgubWluKDE0NDAwLG4pLG89TWF0aC5taW4oMTQ0MDAsbykpLHM9W24sb10sYS5zdWJzdHIoMCwxKSl7Y2FzZSJsIjpvPm4mJihzPVtvLG5dKTticmVhaztjYXNlInAiOm4+byYmKHM9W28sbl0pfWplKHMpLHByKGZyKSxodChMciksMCE9PWtyJiZodChrcisiIEoiKSwwIT09RnImJmh0KEZyKyIgaiIpLFR0LnB1Ymxpc2goImFkZFBhZ2UiLHtwYWdlTnVtYmVyOkR0fSl9LEJlPWZ1bmN0aW9uKHQpe3Q+MCYmdDw9RHQmJihvdC5zcGxpY2UodCwxKSxSdC5zcGxpY2UodCwxKSxEdC0tLCQ+RHQmJigkPUR0KSx0aGlzLnNldFBhZ2UoJCkpfSxNZT1mdW5jdGlvbih0KXt0PjAmJnQ8PUR0JiYoJD10KX0sRWU9eS5fX3ByaXZhdGVfXy5nZXROdW1iZXJPZlBhZ2VzPXkuZ2V0TnVtYmVyT2ZQYWdlcz1mdW5jdGlvbigpe3JldHVybiBvdC5sZW5ndGgtMX0scWU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGE9dm9pZCAwO3JldHVybiByPXJ8fHt9LHQ9dm9pZCAwIT09dD90Okl0W1N0XS5mb250TmFtZSxlPXZvaWQgMCE9PWU\/ZTpJdFtTdF0uZm9udFN0eWxlLG49dC50b0xvd2VyQ2FzZSgpLHZvaWQgMCE9PUN0W25dJiZ2b2lkIDAhPT1DdFtuXVtlXT9hPUN0W25dW2VdOnZvaWQgMCE9PUN0W3RdJiZ2b2lkIDAhPT1DdFt0XVtlXT9hPUN0W3RdW2VdOiExPT09ci5kaXNhYmxlV2FybmluZyYmaS53YXJuKCJVbmFibGUgdG8gbG9vayB1cCBmb250IGxhYmVsIGZvciBmb250ICciK3QrIicsICciK2UrIicuIFJlZmVyIHRvIGdldEZvbnRMaXN0KCkgZm9yIGF2YWlsYWJsZSBmb250cy4iKSxhfHxyLm5vRmFsbGJhY2t8fG51bGw9PShhPUN0LnRpbWVzW2VdKSYmKGE9Q3QudGltZXMubm9ybWFsKSxhfSxEZT15Ll9fcHJpdmF0ZV9fLnB1dEluZm89ZnVuY3Rpb24oKXt2YXIgdD1YdCgpLGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9O2Zvcih2YXIgciBpbiBudWxsIT09bSYmKGU9WWUuZW5jcnlwdG9yKHQsMCkpLGh0KCI8PCIpLGh0KCIvUHJvZHVjZXIgKCIrQ2UoZSgianNQREYgIitNLnZlcnNpb24pKSsiKSIpLHh0KXh0Lmhhc093blByb3BlcnR5KHIpJiZ4dFtyXSYmaHQoIi8iK3Iuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKStyLnN1YnN0cigxKSsiICgiK0NlKGUoeHRbcl0pKSsiKSIpO2h0KCIvQ3JlYXRpb25EYXRlICgiK0NlKGUoVykpKyIpIiksaHQoIj4+IiksaHQoImVuZG9iaiIpfSxSZT15Ll9fcHJpdmF0ZV9fLnB1dENhdGFsb2c9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9dHx8e30pLnJvb3REaWN0aW9uYXJ5T2JqSWR8fFF0O3N3aXRjaChYdCgpLGh0KCI8PCIpLGh0KCIvVHlwZSAvQ2F0YWxvZyIpLGh0KCIvUGFnZXMgIitlKyIgMCBSIiksbXR8fChtdD0iZnVsbHdpZHRoIiksbXQpe2Nhc2UiZnVsbHdpZHRoIjpodCgiL09wZW5BY3Rpb24gWzMgMCBSIC9GaXRIIG51bGxdIik7YnJlYWs7Y2FzZSJmdWxsaGVpZ2h0IjpodCgiL09wZW5BY3Rpb24gWzMgMCBSIC9GaXRWIG51bGxdIik7YnJlYWs7Y2FzZSJmdWxscGFnZSI6aHQoIi9PcGVuQWN0aW9uIFszIDAgUiAvRml0XSIpO2JyZWFrO2Nhc2Uib3JpZ2luYWwiOmh0KCIvT3BlbkFjdGlvbiBbMyAwIFIgL1hZWiBudWxsIG51bGwgMV0iKTticmVhaztkZWZhdWx0OnZhciByPSIiK210OyIlIj09PXIuc3Vic3RyKHIubGVuZ3RoLTEpJiYobXQ9cGFyc2VJbnQobXQpLzEwMCksIm51bWJlciI9PXR5cGVvZiBtdCYmaHQoIi9PcGVuQWN0aW9uIFszIDAgUiAvWFlaIG51bGwgbnVsbCAiK1IobXQpKyJdIil9c3dpdGNoKE50fHwoTnQ9ImNvbnRpbnVvdXMiKSxOdCl7Y2FzZSJjb250aW51b3VzIjpodCgiL1BhZ2VMYXlvdXQgL09uZUNvbHVtbiIpO2JyZWFrO2Nhc2Uic2luZ2xlIjpodCgiL1BhZ2VMYXlvdXQgL1NpbmdsZVBhZ2UiKTticmVhaztjYXNlInR3byI6Y2FzZSJ0d29sZWZ0IjpodCgiL1BhZ2VMYXlvdXQgL1R3b0NvbHVtbkxlZnQiKTticmVhaztjYXNlInR3b3JpZ2h0IjpodCgiL1BhZ2VMYXlvdXQgL1R3b0NvbHVtblJpZ2h0Iil9eXQmJmh0KCIvUGFnZU1vZGUgLyIreXQpLFR0LnB1Ymxpc2goInB1dENhdGFsb2ciKSxodCgiPj4iKSxodCgiZW5kb2JqIil9LFRlPXkuX19wcml2YXRlX18ucHV0VHJhaWxlcj1mdW5jdGlvbigpe2h0KCJ0cmFpbGVyIiksaHQoIjw8IiksaHQoIi9TaXplICIrKGV0KzEpKSxodCgiL1Jvb3QgIitldCsiIDAgUiIpLGh0KCIvSW5mbyAiKyhldC0xKSsiIDAgUiIpLG51bGwhPT1tJiZodCgiL0VuY3J5cHQgIitZZS5vaWQrIiAwIFIiKSxodCgiL0lEIFsgPCIrVisiPiA8IitWKyI+IF0iKSxodCgiPj4iKX0sVWU9eS5fX3ByaXZhdGVfXy5wdXRIZWFkZXI9ZnVuY3Rpb24oKXtodCgiJVBERi0iK3cpLGh0KCIlwrrDn8Ksw6AiKX0semU9eS5fX3ByaXZhdGVfXy5wdXRYUmVmPWZ1bmN0aW9uKCl7dmFyIHQ9IjAwMDAwMDAwMDAiO2h0KCJ4cmVmIiksaHQoIjAgIisoZXQrMSkpLGh0KCIwMDAwMDAwMDAwIDY1NTM1IGYgIik7Zm9yKHZhciBlPTE7ZTw9ZXQ7ZSsrKXsiZnVuY3Rpb24iPT10eXBlb2YgcnRbZV0\/aHQoKHQrcnRbZV0oKSkuc2xpY2UoLTEwKSsiIDAwMDAwIG4gIik6dm9pZCAwIT09cnRbZV0\/aHQoKHQrcnRbZV0pLnNsaWNlKC0xMCkrIiAwMDAwMCBuICIpOmh0KCIwMDAwMDAwMDAwIDAwMDAwIG4gIil9fSxIZT15Ll9fcHJpdmF0ZV9fLmJ1aWxkRG9jdW1lbnQ9ZnVuY3Rpb24oKXt1dCgpLGx0KG50KSxUdC5wdWJsaXNoKCJidWlsZERvY3VtZW50IiksVWUoKSxvZSgpLFNlKCkseGUoKSxudWxsIT09bSYmYmUoKSxEZSgpLFJlKCk7dmFyIHQ9aXQ7cmV0dXJuIHplKCksVGUoKSxodCgic3RhcnR4cmVmIiksaHQoIiIrdCksaHQoIiUlRU9GIiksbHQob3RbJF0pLG50LmpvaW4oIlxuIil9LFdlPXkuX19wcml2YXRlX18uZ2V0QmxvYj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEJsb2IoW2R0KHQpXSx7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pfSxWZT15Lm91dHB1dD15Ll9fcHJpdmF0ZV9fLm91dHB1dD1GZSgoZnVuY3Rpb24odCxlKXtzd2l0Y2goInN0cmluZyI9PXR5cGVvZihlPWV8fHt9KT9lPXtmaWxlbmFtZTplfTplLmZpbGVuYW1lPWUuZmlsZW5hbWV8fCJnZW5lcmF0ZWQucGRmIix0KXtjYXNlIHZvaWQgMDpyZXR1cm4gSGUoKTtjYXNlInNhdmUiOnkuc2F2ZShlLmZpbGVuYW1lKTticmVhaztjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gZHQoSGUoKSk7Y2FzZSJibG9iIjpyZXR1cm4gV2UoSGUoKSk7Y2FzZSJibG9idXJpIjpjYXNlImJsb2J1cmwiOmlmKHZvaWQgMCE9PXIuVVJMJiYiZnVuY3Rpb24iPT10eXBlb2Ygci5VUkwuY3JlYXRlT2JqZWN0VVJMKXJldHVybiByLlVSTCYmci5VUkwuY3JlYXRlT2JqZWN0VVJMKFdlKEhlKCkpKXx8dm9pZCAwO2kud2FybigiYmxvYnVybCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtLCBiZWNhdXNlIFVSTC5jcmVhdGVPYmplY3RVUkwgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuIik7YnJlYWs7Y2FzZSJkYXRhdXJpc3RyaW5nIjpjYXNlImRhdGF1cmxzdHJpbmciOnZhciBuPSIiLGE9SGUoKTt0cnl7bj11KGEpfWNhdGNoKHQpe249dSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpKX1yZXR1cm4iZGF0YTphcHBsaWNhdGlvbi9wZGY7ZmlsZW5hbWU9IitlLmZpbGVuYW1lKyI7YmFzZTY0LCIrbjtjYXNlInBkZm9iamVjdG5ld3dpbmRvdyI6aWYoIltvYmplY3QgV2luZG93XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpe3ZhciBvPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wZGZvYmplY3QvMi4xLjEvcGRmb2JqZWN0Lm1pbi5qcyIscz0nIGludGVncml0eT0ic2hhNTEyLTR6ZS9hOS80anF1K3RYOWRmT3FKWVN2eVlkNU02cXVtLzNIcENMcisvSnFmMHdoYzM3VlVia3BOR0hSNy84cFNuQ0Z3NDdUMWZtSXB3QlY3VXlTaDNnPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiJztlLnBkZk9iamVjdFVybCYmKG89ZS5wZGZPYmplY3RVcmwscz0iIik7dmFyIGM9JzxodG1sPjxzdHlsZT5odG1sLCBib2R5IHsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyB9IGlmcmFtZSB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogMDt9ICA8L3N0eWxlPjxib2R5PjxzY3JpcHQgc3JjPSInK28rJyInK3MrJz48XC9zY3JpcHQ+PHNjcmlwdCA+UERGT2JqZWN0LmVtYmVkKCInK3RoaXMub3V0cHV0KCJkYXRhdXJsc3RyaW5nIikrJyIsICcrSlNPTi5zdHJpbmdpZnkoZSkrIik7PFwvc2NyaXB0PjwvYm9keT48L2h0bWw+IixsPXIub3BlbigpO3JldHVybiBudWxsIT09bCYmbC5kb2N1bWVudC53cml0ZShjKSxsfXRocm93IG5ldyBFcnJvcigiVGhlIG9wdGlvbiBwZGZvYmplY3RuZXd3aW5kb3cganVzdCB3b3JrcyBpbiBhIGJyb3dzZXItZW52aXJvbm1lbnQuIik7Y2FzZSJwZGZqc25ld3dpbmRvdyI6aWYoIltvYmplY3QgV2luZG93XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpe3ZhciBoPSc8aHRtbD48c3R5bGU+aHRtbCwgYm9keSB7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgfSBpZnJhbWUgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7fSAgPC9zdHlsZT48Ym9keT48aWZyYW1lIGlkPSJwZGZWaWV3ZXIiIHNyYz0iJysoZS5wZGZKc1VybHx8ImV4YW1wbGVzL1BERi5qcy93ZWIvdmlld2VyLmh0bWwiKSsiP2ZpbGU9JmRvd25sb2FkTmFtZT0iK2UuZmlsZW5hbWUrJyIgd2lkdGg9IjUwMHB4IiBoZWlnaHQ9IjQwMHB4IiAvPjwvYm9keT48L2h0bWw+JyxmPXIub3BlbigpO2lmKG51bGwhPT1mKXtmLmRvY3VtZW50LndyaXRlKGgpO3ZhciBkPXRoaXM7Zi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3BkZlZpZXdlciIpLm9ubG9hZD1mdW5jdGlvbigpe2YuZG9jdW1lbnQudGl0bGU9ZS5maWxlbmFtZSxmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjcGRmVmlld2VyIikuY29udGVudFdpbmRvdy5QREZWaWV3ZXJBcHBsaWNhdGlvbi5vcGVuKGQub3V0cHV0KCJibG9idXJsIikpfX1yZXR1cm4gZn10aHJvdyBuZXcgRXJyb3IoIlRoZSBvcHRpb24gcGRmanNuZXd3aW5kb3cganVzdCB3b3JrcyBpbiBhIGJyb3dzZXItZW52aXJvbm1lbnQuIik7Y2FzZSJkYXRhdXJsbmV3d2luZG93IjppZigiW29iamVjdCBXaW5kb3ddIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBvcHRpb24gZGF0YXVybG5ld3dpbmRvdyBqdXN0IHdvcmtzIGluIGEgYnJvd3Nlci1lbnZpcm9ubWVudC4iKTt2YXIgcD0nPGh0bWw+PHN0eWxlPmh0bWwsIGJvZHkgeyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IH0gaWZyYW1lIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAwO30gIDwvc3R5bGU+PGJvZHk+PGlmcmFtZSBzcmM9IicrdGhpcy5vdXRwdXQoImRhdGF1cmlzdHJpbmciLGUpKyciPjwvaWZyYW1lPjwvYm9keT48L2h0bWw+JyxnPXIub3BlbigpO2lmKG51bGwhPT1nJiYoZy5kb2N1bWVudC53cml0ZShwKSxnLmRvY3VtZW50LnRpdGxlPWUuZmlsZW5hbWUpLGd8fCJ1bmRlZmluZWQiPT10eXBlb2Ygc2FmYXJpKXJldHVybiBnO2JyZWFrO2Nhc2UiZGF0YXVyaSI6Y2FzZSJkYXRhdXJsIjpyZXR1cm4gci5kb2N1bWVudC5sb2NhdGlvbi5ocmVmPXRoaXMub3V0cHV0KCJkYXRhdXJpc3RyaW5nIixlKTtkZWZhdWx0OnJldHVybiBudWxsfX0pKSxHZT1mdW5jdGlvbih0KXtyZXR1cm4hMD09PUFycmF5LmlzQXJyYXkoVXQpJiZVdC5pbmRleE9mKHQpPi0xfTtzd2l0Y2gobyl7Y2FzZSJwdCI6X3Q9MTticmVhaztjYXNlIm1tIjpfdD03Mi8yNS40O2JyZWFrO2Nhc2UiY20iOl90PTcyLzIuNTQ7YnJlYWs7Y2FzZSJpbiI6X3Q9NzI7YnJlYWs7Y2FzZSJweCI6X3Q9MT09R2UoInB4X3NjYWxpbmciKT8uNzU6OTYvNzI7YnJlYWs7Y2FzZSJwYyI6Y2FzZSJlbSI6X3Q9MTI7YnJlYWs7Y2FzZSJleCI6X3Q9NjticmVhaztkZWZhdWx0OmlmKCJudW1iZXIiIT10eXBlb2Ygbyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdW5pdDogIitvKTtfdD1vfXZhciBZZT1udWxsO0soKSxZKCk7dmFyIEplPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bT9ZZS5lbmNyeXB0b3IodCwwKTpmdW5jdGlvbih0KXtyZXR1cm4gdH19LFhlPXkuX19wcml2YXRlX18uZ2V0UGFnZUluZm89eS5nZXRQYWdlSW5mbz1mdW5jdGlvbih0KXtpZihpc05hTih0KXx8dCUxIT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuZ2V0UGFnZUluZm8iKTtyZXR1cm57b2JqSWQ6UnRbdF0ub2JqSWQscGFnZU51bWJlcjp0LHBhZ2VDb250ZXh0OlJ0W3RdfX0sS2U9eS5fX3ByaXZhdGVfXy5nZXRQYWdlSW5mb0J5T2JqSWQ9ZnVuY3Rpb24odCl7aWYoaXNOYU4odCl8fHQlMSE9MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGpzUERGLmdldFBhZ2VJbmZvQnlPYmpJZCIpO2Zvcih2YXIgZSBpbiBSdClpZihSdFtlXS5vYmpJZD09PXQpYnJlYWs7cmV0dXJuIFhlKGUpfSxaZT15Ll9fcHJpdmF0ZV9fLmdldEN1cnJlbnRQYWdlSW5mbz15LmdldEN1cnJlbnRQYWdlSW5mbz1mdW5jdGlvbigpe3JldHVybntvYmpJZDpSdFskXS5vYmpJZCxwYWdlTnVtYmVyOiQscGFnZUNvbnRleHQ6UnRbJF19fTt5LmFkZFBhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gT2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXN9LHkuc2V0UGFnZT1mdW5jdGlvbigpe3JldHVybiBNZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbHQuY2FsbCh0aGlzLG90WyRdKSx0aGlzfSx5Lmluc2VydFBhZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkUGFnZSgpLHRoaXMubW92ZVBhZ2UoJCx0KSx0aGlzfSx5Lm1vdmVQYWdlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbjtpZih0PmUpe3I9b3RbdF0sbj1SdFt0XTtmb3IodmFyIGk9dDtpPmU7aS0tKW90W2ldPW90W2ktMV0sUnRbaV09UnRbaS0xXTtvdFtlXT1yLFJ0W2VdPW4sdGhpcy5zZXRQYWdlKGUpfWVsc2UgaWYodDxlKXtyPW90W3RdLG49UnRbdF07Zm9yKHZhciBhPXQ7YTxlO2ErKylvdFthXT1vdFthKzFdLFJ0W2FdPVJ0W2ErMV07b3RbZV09cixSdFtlXT1uLHRoaXMuc2V0UGFnZShlKX1yZXR1cm4gdGhpc30seS5kZWxldGVQYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIEJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzfSx5Ll9fcHJpdmF0ZV9fLnRleHQ9eS50ZXh0PWZ1bmN0aW9uKHQscixuLGksYSl7dmFyIG8scyxjLHUsbCxoLGYsZCxwLGc9KGk9aXx8e30pLnNjb3BlfHx0aGlzO2lmKCJudW1iZXIiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiByJiYoInN0cmluZyI9PXR5cGVvZiBufHxBcnJheS5pc0FycmF5KG4pKSl7dmFyIG09bjtuPXIscj10LHQ9bX1pZihhcmd1bWVudHNbM11pbnN0YW5jZW9mIFZ0PT0hMT8oYz1hcmd1bWVudHNbNF0sdT1hcmd1bWVudHNbNV0sIm9iamVjdCI9PT1lKGY9YXJndW1lbnRzWzNdKSYmbnVsbCE9PWZ8fCgic3RyaW5nIj09dHlwZW9mIGMmJih1PWMsYz1udWxsKSwic3RyaW5nIj09dHlwZW9mIGYmJih1PWYsZj1udWxsKSwibnVtYmVyIj09dHlwZW9mIGYmJihjPWYsZj1udWxsKSxpPXtmbGFnczpmLGFuZ2xlOmMsYWxpZ246dX0pKToocSgiVGhlIHRyYW5zZm9ybSBwYXJhbWV0ZXIgb2YgdGV4dCgpIHdpdGggYSBNYXRyaXggdmFsdWUiKSxwPWEpLGlzTmFOKHIpfHxpc05hTihuKXx8bnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi50ZXh0Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiBnO3ZhciB2PSIiLHk9ITEsdz0ibnVtYmVyIj09dHlwZW9mIGkubGluZUhlaWdodEZhY3Rvcj9pLmxpbmVIZWlnaHRGYWN0b3I6aHIsTj1nLmludGVybmFsLnNjYWxlRmFjdG9yO2Z1bmN0aW9uIEwodCl7cmV0dXJuIHQ9dC5zcGxpdCgiXHQiKS5qb2luKEFycmF5KGkuVGFiTGVufHw5KS5qb2luKCIgIikpLENlKHQsZil9ZnVuY3Rpb24gQSh0KXtmb3IodmFyIGUscj10LmNvbmNhdCgpLG49W10saT1yLmxlbmd0aDtpLS07KSJzdHJpbmciPT10eXBlb2YoZT1yLnNoaWZ0KCkpP24ucHVzaChlKTpBcnJheS5pc0FycmF5KHQpJiYoMT09PWUubGVuZ3RofHx2b2lkIDA9PT1lWzFdJiZ2b2lkIDA9PT1lWzJdKT9uLnB1c2goZVswXSk6bi5wdXNoKFtlWzBdLGVbMV0sZVsyXV0pO3JldHVybiBufWZ1bmN0aW9uIF8odCxlKXt2YXIgcjtpZigic3RyaW5nIj09dHlwZW9mIHQpcj1lKHQpWzBdO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBuLGksYT10LmNvbmNhdCgpLG89W10scz1hLmxlbmd0aDtzLS07KSJzdHJpbmciPT10eXBlb2Yobj1hLnNoaWZ0KCkpP28ucHVzaChlKG4pWzBdKTpBcnJheS5pc0FycmF5KG4pJiYic3RyaW5nIj09dHlwZW9mIG5bMF0mJihpPWUoblswXSxuWzFdLG5bMl0pLG8ucHVzaChbaVswXSxpWzFdLGlbMl1dKSk7cj1vfXJldHVybiByfXZhciBQPSExLGs9ITA7aWYoInN0cmluZyI9PXR5cGVvZiB0KVA9ITA7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgRj10LmNvbmNhdCgpO3M9W107Zm9yKHZhciBJLEM9Ri5sZW5ndGg7Qy0tOykoInN0cmluZyIhPXR5cGVvZihJPUYuc2hpZnQoKSl8fEFycmF5LmlzQXJyYXkoSSkmJiJzdHJpbmciIT10eXBlb2YgSVswXSkmJihrPSExKTtQPWt9aWYoITE9PT1QKXRocm93IG5ldyBFcnJvcignVHlwZSBvZiB0ZXh0IG11c3QgYmUgc3RyaW5nIG9yIEFycmF5LiAiJyt0KyciIGlzIG5vdCByZWNvZ25pemVkLicpOyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5tYXRjaCgvW1xyP1xuXS8pP3Quc3BsaXQoL1xyXG58XHJ8XG4vZyk6W3RdKTt2YXIgaj1ndC9nLmludGVybmFsLnNjYWxlRmFjdG9yLE89aioody0xKTtzd2l0Y2goaS5iYXNlbGluZSl7Y2FzZSJib3R0b20iOm4tPU87YnJlYWs7Y2FzZSJ0b3AiOm4rPWotTzticmVhaztjYXNlImhhbmdpbmciOm4rPWotMipPO2JyZWFrO2Nhc2UibWlkZGxlIjpuKz1qLzItT31pZigoaD1pLm1heFdpZHRofHwwKT4wJiYoInN0cmluZyI9PXR5cGVvZiB0P3Q9Zy5zcGxpdFRleHRUb1NpemUodCxoKToiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpJiYodD10LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZy5zcGxpdFRleHRUb1NpemUoZSxoKSl9KSxbXSkpKSxvPXt0ZXh0OnQseDpyLHk6bixvcHRpb25zOmksbXV0ZXg6e3BkZkVzY2FwZTpDZSxhY3RpdmVGb250S2V5OlN0LGZvbnRzOkl0LGFjdGl2ZUZvbnRTaXplOmd0fX0sVHQucHVibGlzaCgicHJlUHJvY2Vzc1RleHQiLG8pLHQ9by50ZXh0LGM9KGk9by5vcHRpb25zKS5hbmdsZSxwIGluc3RhbmNlb2YgVnQ9PSExJiZjJiYibnVtYmVyIj09dHlwZW9mIGMpe2MqPU1hdGguUEkvMTgwLDA9PT1pLnJvdGF0aW9uRGlyZWN0aW9uJiYoYz0tYyksUz09PXguQURWQU5DRUQmJihjPS1jKTt2YXIgQj1NYXRoLmNvcyhjKSxNPU1hdGguc2luKGMpO3A9bmV3IFZ0KEIsTSwtTSxCLDAsMCl9ZWxzZSBjJiZjIGluc3RhbmNlb2YgVnQmJihwPWMpO1MhPT14LkFEVkFOQ0VEfHxwfHwocD1ZdCksdm9pZCAwIT09KGw9aS5jaGFyU3BhY2V8fF9yKSYmKHYrPUUoVShsKSkrIiBUY1xuIix0aGlzLnNldENoYXJTcGFjZSh0aGlzLmdldENoYXJTcGFjZSgpfHwwKSksdm9pZCAwIT09KGQ9aS5ob3Jpem9udGFsU2NhbGUpJiYodis9RSgxMDAqZCkrIiBUelxuIik7aS5sYW5nO3ZhciBEPS0xLFI9dm9pZCAwIT09aS5yZW5kZXJpbmdNb2RlP2kucmVuZGVyaW5nTW9kZTppLnN0cm9rZSxUPWcuaW50ZXJuYWwuZ2V0Q3VycmVudFBhZ2VJbmZvKCkucGFnZUNvbnRleHQ7c3dpdGNoKFIpe2Nhc2UgMDpjYXNlITE6Y2FzZSJmaWxsIjpEPTA7YnJlYWs7Y2FzZSAxOmNhc2UhMDpjYXNlInN0cm9rZSI6RD0xO2JyZWFrO2Nhc2UgMjpjYXNlImZpbGxUaGVuU3Ryb2tlIjpEPTI7YnJlYWs7Y2FzZSAzOmNhc2UiaW52aXNpYmxlIjpEPTM7YnJlYWs7Y2FzZSA0OmNhc2UiZmlsbEFuZEFkZEZvckNsaXBwaW5nIjpEPTQ7YnJlYWs7Y2FzZSA1OmNhc2Uic3Ryb2tlQW5kQWRkUGF0aEZvckNsaXBwaW5nIjpEPTU7YnJlYWs7Y2FzZSA2OmNhc2UiZmlsbFRoZW5TdHJva2VBbmRBZGRUb1BhdGhGb3JDbGlwcGluZyI6RD02O2JyZWFrO2Nhc2UgNzpjYXNlImFkZFRvUGF0aEZvckNsaXBwaW5nIjpEPTd9dmFyIHo9dm9pZCAwIT09VC51c2VkUmVuZGVyaW5nTW9kZT9ULnVzZWRSZW5kZXJpbmdNb2RlOi0xOy0xIT09RD92Kz1EKyIgVHJcbiI6LTEhPT16JiYodis9IjAgVHJcbiIpLC0xIT09RCYmKFQudXNlZFJlbmRlcmluZ01vZGU9RCksdT1pLmFsaWdufHwibGVmdCI7dmFyIEgsVz1ndCp3LFY9Zy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpLEc9SXRbU3RdO2w9aS5jaGFyU3BhY2V8fF9yLGg9aS5tYXhXaWR0aHx8MCxmPU9iamVjdC5hc3NpZ24oe2F1dG9lbmNvZGU6ITAsbm9CT006ITB9LGkuZmxhZ3MpO3ZhciBZPVtdO2lmKCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe3ZhciBKO3M9QSh0KSwibGVmdCIhPT11JiYoSD1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGcuZ2V0U3RyaW5nVW5pdFdpZHRoKHQse2ZvbnQ6RyxjaGFyU3BhY2U6bCxmb250U2l6ZTpndCxkb0tlcm5pbmc6ITF9KSpndC9OfSkpKTt2YXIgWCxLPTA7aWYoInJpZ2h0Ij09PXUpe3ItPUhbMF0sdD1bXSxDPXMubGVuZ3RoO2Zvcih2YXIgWj0wO1o8QztaKyspMD09PVo\/KFg9YnIociksSj15cihuKSk6KFg9VShLLUhbWl0pLEo9LVcpLHQucHVzaChbc1taXSxYLEpdKSxLPUhbWl19ZWxzZSBpZigiY2VudGVyIj09PXUpe3ItPUhbMF0vMix0PVtdLEM9cy5sZW5ndGg7Zm9yKHZhciAkPTA7JDxDOyQrKykwPT09JD8oWD1icihyKSxKPXlyKG4pKTooWD1VKChLLUhbJF0pLzIpLEo9LVcpLHQucHVzaChbc1skXSxYLEpdKSxLPUhbJF19ZWxzZSBpZigibGVmdCI9PT11KXt0PVtdLEM9cy5sZW5ndGg7Zm9yKHZhciBRPTA7UTxDO1ErKyl0LnB1c2goc1tRXSl9ZWxzZXtpZigianVzdGlmeSIhPT11KXRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIGFsaWdubWVudCBvcHRpb24sIHVzZSAibGVmdCIsICJjZW50ZXIiLCAicmlnaHQiIG9yICJqdXN0aWZ5Ii4nKTt0PVtdLEM9cy5sZW5ndGgsaD0wIT09aD9oOlY7Zm9yKHZhciB0dD0wO3R0PEM7dHQrKylKPTA9PT10dD95cihuKTotVyxYPTA9PT10dD9icihyKTowLHR0PEMtMT9ZLnB1c2goRShVKChoLUhbdHRdKS8oc1t0dF0uc3BsaXQoIiAiKS5sZW5ndGgtMSkpKSk6WS5wdXNoKDApLHQucHVzaChbc1t0dF0sWCxKXSl9fXZhciBldD0iYm9vbGVhbiI9PXR5cGVvZiBpLlIyTD9pLlIyTDpidDshMD09PWV0JiYodD1fKHQsKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bdC5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpLGUscl19KSkpLG89e3RleHQ6dCx4OnIseTpuLG9wdGlvbnM6aSxtdXRleDp7cGRmRXNjYXBlOkNlLGFjdGl2ZUZvbnRLZXk6U3QsZm9udHM6SXQsYWN0aXZlRm9udFNpemU6Z3R9fSxUdC5wdWJsaXNoKCJwb3N0UHJvY2Vzc1RleHQiLG8pLHQ9by50ZXh0LHk9by5tdXRleC5pc0hleHx8ITE7dmFyIHJ0PUl0W1N0XS5lbmNvZGluZzsiV2luQW5zaUVuY29kaW5nIiE9PXJ0JiYiU3RhbmRhcmRFbmNvZGluZyIhPT1ydHx8KHQ9Xyh0LChmdW5jdGlvbih0LGUscil7cmV0dXJuW0wodCksZSxyXX0pKSkscz1BKHQpLHQ9W107Zm9yKHZhciBudCxpdCxhdCxvdD0wLHN0PTEsY3Q9QXJyYXkuaXNBcnJheShzWzBdKT9zdDpvdCx1dD0iIixsdD1mdW5jdGlvbih0LGUscil7dmFyIG49IiI7cmV0dXJuIHIgaW5zdGFuY2VvZiBWdD8ocj0ibnVtYmVyIj09dHlwZW9mIGkuYW5nbGU\/R3QocixuZXcgVnQoMSwwLDAsMSx0LGUpKTpHdChuZXcgVnQoMSwwLDAsMSx0LGUpLHIpLFM9PT14LkFEVkFOQ0VEJiYocj1HdChuZXcgVnQoMSwwLDAsLTEsMCwwKSxyKSksbj1yLmpvaW4oIiAiKSsiIFRtXG4iKTpuPUUodCkrIiAiK0UoZSkrIiBUZFxuIixufSxmdD0wO2Z0PHMubGVuZ3RoO2Z0Kyspe3N3aXRjaCh1dD0iIixjdCl7Y2FzZSBzdDphdD0oeT8iPCI6IigiKStzW2Z0XVswXSsoeT8iPiI6IikiKSxudD1wYXJzZUZsb2F0KHNbZnRdWzFdKSxpdD1wYXJzZUZsb2F0KHNbZnRdWzJdKTticmVhaztjYXNlIG90OmF0PSh5PyI8IjoiKCIpK3NbZnRdKyh5PyI+IjoiKSIpLG50PWJyKHIpLGl0PXlyKG4pfXZvaWQgMCE9PVkmJnZvaWQgMCE9PVlbZnRdJiYodXQ9WVtmdF0rIiBUd1xuIiksMD09PWZ0P3QucHVzaCh1dCtsdChudCxpdCxwKSthdCk6Y3Q9PT1vdD90LnB1c2godXQrYXQpOmN0PT09c3QmJnQucHVzaCh1dCtsdChudCxpdCxwKSthdCl9dD1jdD09PW90P3Quam9pbigiIFRqXG5UKiAiKTp0LmpvaW4oIiBUalxuIiksdCs9IiBUalxuIjt2YXIgZHQ9IkJUXG4vIjtyZXR1cm4gZHQrPVN0KyIgIitndCsiIFRmXG4iLGR0Kz1FKGd0KncpKyIgVExcbiIsZHQrPXhyKyJcbiIsZHQrPXYsZHQrPXQsaHQoZHQrPSJFVCIpLGJbU3RdPSEwLGd9O3ZhciAkZT15Ll9fcHJpdmF0ZV9fLmNsaXA9eS5jbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBodCgiZXZlbm9kZCI9PT10PyJXKiI6IlciKSx0aGlzfTt5LmNsaXBFdmVuT2RkPWZ1bmN0aW9uKCl7cmV0dXJuICRlKCJldmVub2RkIil9LHkuX19wcml2YXRlX18uZGlzY2FyZFBhdGg9eS5kaXNjYXJkUGF0aD1mdW5jdGlvbigpe3JldHVybiBodCgibiIpLHRoaXN9O3ZhciBRZT15Ll9fcHJpdmF0ZV9fLmlzVmFsaWRTdHlsZT1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4tMSE9PVt2b2lkIDAsbnVsbCwiUyIsIkQiLCJGIiwiREYiLCJGRCIsImYiLCJmKiIsIkIiLCJCKiIsIm4iXS5pbmRleE9mKHQpJiYoZT0hMCksZX07eS5fX3ByaXZhdGVfXy5zZXREZWZhdWx0UGF0aE9wZXJhdGlvbj15LnNldERlZmF1bHRQYXRoT3BlcmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBRZSh0KSYmKGc9dCksdGhpc307dmFyIHRyPXkuX19wcml2YXRlX18uZ2V0U3R5bGU9eS5nZXRTdHlsZT1mdW5jdGlvbih0KXt2YXIgZT1nO3N3aXRjaCh0KXtjYXNlIkQiOmNhc2UiUyI6ZT0iUyI7YnJlYWs7Y2FzZSJGIjplPSJmIjticmVhaztjYXNlIkZEIjpjYXNlIkRGIjplPSJCIjticmVhaztjYXNlImYiOmNhc2UiZioiOmNhc2UiQiI6Y2FzZSJCKiI6ZT10fXJldHVybiBlfSxlcj15LmNsb3NlPWZ1bmN0aW9uKCl7cmV0dXJuIGh0KCJoIiksdGhpc307eS5zdHJva2U9ZnVuY3Rpb24oKXtyZXR1cm4gaHQoIlMiKSx0aGlzfSx5LmZpbGw9ZnVuY3Rpb24odCl7cmV0dXJuIHJyKCJmIix0KSx0aGlzfSx5LmZpbGxFdmVuT2RkPWZ1bmN0aW9uKHQpe3JldHVybiBycigiZioiLHQpLHRoaXN9LHkuZmlsbFN0cm9rZT1mdW5jdGlvbih0KXtyZXR1cm4gcnIoIkIiLHQpLHRoaXN9LHkuZmlsbFN0cm9rZUV2ZW5PZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHJyKCJCKiIsdCksdGhpc307dmFyIHJyPWZ1bmN0aW9uKHQscil7Im9iamVjdCI9PT1lKHIpP2FyKHIsdCk6aHQodCl9LG5yPWZ1bmN0aW9uKHQpe251bGw9PT10fHxTPT09eC5BRFZBTkNFRCYmdm9pZCAwPT09dHx8KHQ9dHIodCksaHQodCkpfTtmdW5jdGlvbiBpcih0LGUscixuLGkpe3ZhciBhPW5ldyBCKGV8fHRoaXMuYm91bmRpbmdCb3gscnx8dGhpcy54U3RlcCxufHx0aGlzLnlTdGVwLHRoaXMuZ1N0YXRlLGl8fHRoaXMubWF0cml4KTthLnN0cmVhbT10aGlzLnN0cmVhbTt2YXIgbz10KyIkJCIrdGhpcy5jbG9uZUluZGV4KysrIiQkIjtyZXR1cm4gSnQobyxhKSxhfXZhciBhcj1mdW5jdGlvbih0LGUpe3ZhciByPUJ0W3Qua2V5XSxuPU90W3JdO2lmKG4gaW5zdGFuY2VvZiBPKWh0KCJxIiksaHQob3IoZSkpLG4uZ1N0YXRlJiZ5LnNldEdTdGF0ZShuLmdTdGF0ZSksaHQodC5tYXRyaXgudG9TdHJpbmcoKSsiIGNtIiksaHQoIi8iK3IrIiBzaCIpLGh0KCJRIik7ZWxzZSBpZihuIGluc3RhbmNlb2YgQil7dmFyIGk9bmV3IFZ0KDEsMCwwLC0xLDAsUnIoKSk7dC5tYXRyaXgmJihpPWkubXVsdGlwbHkodC5tYXRyaXh8fFl0KSxyPWlyLmNhbGwobix0LmtleSx0LmJvdW5kaW5nQm94LHQueFN0ZXAsdC55U3RlcCxpKS5pZCksaHQoInEiKSxodCgiL1BhdHRlcm4gY3MiKSxodCgiLyIrcisiIHNjbiIpLG4uZ1N0YXRlJiZ5LnNldEdTdGF0ZShuLmdTdGF0ZSksaHQoZSksaHQoIlEiKX19LG9yPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlImYiOmNhc2UiRiI6cmV0dXJuIlcgbiI7Y2FzZSJmKiI6cmV0dXJuIlcqIG4iO2Nhc2UiQiI6cmV0dXJuIlcgUyI7Y2FzZSJCKiI6cmV0dXJuIlcqIFMiO2Nhc2UiUyI6cmV0dXJuIlcgUyI7Y2FzZSJuIjpyZXR1cm4iVyBuIn19LHNyPXkubW92ZVRvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGh0KEUoVSh0KSkrIiAiK0UoSChlKSkrIiBtIiksdGhpc30sY3I9eS5saW5lVG89ZnVuY3Rpb24odCxlKXtyZXR1cm4gaHQoRShVKHQpKSsiICIrRShIKGUpKSsiIGwiKSx0aGlzfSx1cj15LmN1cnZlVG89ZnVuY3Rpb24odCxlLHIsbixpLGEpe3JldHVybiBodChbRShVKHQpKSxFKEgoZSkpLEUoVShyKSksRShIKG4pKSxFKFUoaSkpLEUoSChhKSksImMiXS5qb2luKCIgIikpLHRoaXN9O3kuX19wcml2YXRlX18ubGluZT15LmxpbmU9ZnVuY3Rpb24odCxlLHIsbixpKXtpZihpc05hTih0KXx8aXNOYU4oZSl8fGlzTmFOKHIpfHxpc05hTihuKXx8IVFlKGkpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmxpbmUiKTtyZXR1cm4gUz09PXguQ09NUEFUP3RoaXMubGluZXMoW1tyLXQsbi1lXV0sdCxlLFsxLDFdLGl8fCJTIik6dGhpcy5saW5lcyhbW3ItdCxuLWVdXSx0LGUsWzEsMV0pLnN0cm9rZSgpfSx5Ll9fcHJpdmF0ZV9fLmxpbmVzPXkubGluZXM9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvLHMsYyx1LGwsaCxmLGQscCxnLG0sdjtpZigibnVtYmVyIj09dHlwZW9mIHQmJih2PXIscj1lLGU9dCx0PXYpLG49bnx8WzEsMV0sYT1hfHwhMSxpc05hTihlKXx8aXNOYU4ocil8fCFBcnJheS5pc0FycmF5KHQpfHwhQXJyYXkuaXNBcnJheShuKXx8IVFlKGkpfHwiYm9vbGVhbiIhPXR5cGVvZiBhKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmxpbmVzIik7Zm9yKHNyKGUsciksbz1uWzBdLHM9blsxXSx1PXQubGVuZ3RoLGc9ZSxtPXIsYz0wO2M8dTtjKyspMj09PShsPXRbY10pLmxlbmd0aD8oZz1sWzBdKm8rZyxtPWxbMV0qcyttLGNyKGcsbSkpOihoPWxbMF0qbytnLGY9bFsxXSpzK20sZD1sWzJdKm8rZyxwPWxbM10qcyttLGc9bFs0XSpvK2csbT1sWzVdKnMrbSx1cihoLGYsZCxwLGcsbSkpO3JldHVybiBhJiZlcigpLG5yKGkpLHRoaXN9LHkucGF0aD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXSxuPXIuYztzd2l0Y2goci5vcCl7Y2FzZSJtIjpzcihuWzBdLG5bMV0pO2JyZWFrO2Nhc2UibCI6Y3IoblswXSxuWzFdKTticmVhaztjYXNlImMiOnVyLmFwcGx5KHRoaXMsbik7YnJlYWs7Y2FzZSJoIjplcigpfX1yZXR1cm4gdGhpc30seS5fX3ByaXZhdGVfXy5yZWN0PXkucmVjdD1mdW5jdGlvbih0LGUscixuLGkpe2lmKGlzTmFOKHQpfHxpc05hTihlKXx8aXNOYU4ocil8fGlzTmFOKG4pfHwhUWUoaSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYucmVjdCIpO3JldHVybiBTPT09eC5DT01QQVQmJihuPS1uKSxodChbRShVKHQpKSxFKEgoZSkpLEUoVShyKSksRShVKG4pKSwicmUiXS5qb2luKCIgIikpLG5yKGkpLHRoaXN9LHkuX19wcml2YXRlX18udHJpYW5nbGU9eS50cmlhbmdsZT1mdW5jdGlvbih0LGUscixuLGksYSxvKXtpZihpc05hTih0KXx8aXNOYU4oZSl8fGlzTmFOKHIpfHxpc05hTihuKXx8aXNOYU4oaSl8fGlzTmFOKGEpfHwhUWUobykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYudHJpYW5nbGUiKTtyZXR1cm4gdGhpcy5saW5lcyhbW3ItdCxuLWVdLFtpLXIsYS1uXSxbdC1pLGUtYV1dLHQsZSxbMSwxXSxvLCEwKSx0aGlzfSx5Ll9fcHJpdmF0ZV9fLnJvdW5kZWRSZWN0PXkucm91bmRlZFJlY3Q9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7aWYoaXNOYU4odCl8fGlzTmFOKGUpfHxpc05hTihyKXx8aXNOYU4obil8fGlzTmFOKGkpfHxpc05hTihhKXx8IVFlKG8pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLnJvdW5kZWRSZWN0Iik7dmFyIHM9NC8zKihNYXRoLlNRUlQyLTEpO3JldHVybiBpPU1hdGgubWluKGksLjUqciksYT1NYXRoLm1pbihhLC41Km4pLHRoaXMubGluZXMoW1tyLTIqaSwwXSxbaSpzLDAsaSxhLWEqcyxpLGFdLFswLG4tMiphXSxbMCxhKnMsLWkqcyxhLC1pLGFdLFsyKmktciwwXSxbLWkqcywwLC1pLC1hKnMsLWksLWFdLFswLDIqYS1uXSxbMCwtYSpzLGkqcywtYSxpLC1hXV0sdCtpLGUsWzEsMV0sbywhMCksdGhpc30seS5fX3ByaXZhdGVfXy5lbGxpcHNlPXkuZWxsaXBzZT1mdW5jdGlvbih0LGUscixuLGkpe2lmKGlzTmFOKHQpfHxpc05hTihlKXx8aXNOYU4ocil8fGlzTmFOKG4pfHwhUWUoaSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuZWxsaXBzZSIpO3ZhciBhPTQvMyooTWF0aC5TUVJUMi0xKSpyLG89NC8zKihNYXRoLlNRUlQyLTEpKm47cmV0dXJuIHNyKHQrcixlKSx1cih0K3IsZS1vLHQrYSxlLW4sdCxlLW4pLHVyKHQtYSxlLW4sdC1yLGUtbyx0LXIsZSksdXIodC1yLGUrbyx0LWEsZStuLHQsZStuKSx1cih0K2EsZStuLHQrcixlK28sdCtyLGUpLG5yKGkpLHRoaXN9LHkuX19wcml2YXRlX18uY2lyY2xlPXkuY2lyY2xlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKGlzTmFOKHQpfHxpc05hTihlKXx8aXNOYU4ocil8fCFRZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jaXJjbGUiKTtyZXR1cm4gdGhpcy5lbGxpcHNlKHQsZSxyLHIsbil9LHkuc2V0Rm9udD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHImJihlPWooZSxyKSksU3Q9cWUodCxlLHtkaXNhYmxlV2FybmluZzohMX0pLHRoaXN9O3ZhciBscj15Ll9fcHJpdmF0ZV9fLmdldEZvbnQ9eS5nZXRGb250PWZ1bmN0aW9uKCl7cmV0dXJuIEl0W3FlLmFwcGx5KHksYXJndW1lbnRzKV19O3kuX19wcml2YXRlX18uZ2V0Rm9udExpc3Q9eS5nZXRGb250TGlzdD1mdW5jdGlvbigpe3ZhciB0LGUscj17fTtmb3IodCBpbiBDdClpZihDdC5oYXNPd25Qcm9wZXJ0eSh0KSlmb3IoZSBpbiByW3RdPVtdLEN0W3RdKUN0W3RdLmhhc093blByb3BlcnR5KGUpJiZyW3RdLnB1c2goZSk7cmV0dXJuIHJ9LHkuYWRkRm9udD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPVsiU3RhbmRhcmRFbmNvZGluZyIsIk1hY1JvbWFuRW5jb2RpbmciLCJJZGVudGl0eS1IIiwiV2luQW5zaUVuY29kaW5nIl07cmV0dXJuIGFyZ3VtZW50c1szXSYmLTEhPT1hLmluZGV4T2YoYXJndW1lbnRzWzNdKT9pPWFyZ3VtZW50c1szXTphcmd1bWVudHNbM10mJi0xPT1hLmluZGV4T2YoYXJndW1lbnRzWzNdKSYmKHI9aihyLG4pKSxpPWl8fCJJZGVudGl0eS1IIixQZS5jYWxsKHRoaXMsdCxlLHIsaSl9O3ZhciBocixmcj10LmxpbmVXaWR0aHx8LjIwMDAyNSxkcj15Ll9fcHJpdmF0ZV9fLmdldExpbmVXaWR0aD15LmdldExpbmVXaWR0aD1mdW5jdGlvbigpe3JldHVybiBmcn0scHI9eS5fX3ByaXZhdGVfXy5zZXRMaW5lV2lkdGg9eS5zZXRMaW5lV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZyPXQsaHQoRShVKHQpKSsiIHciKSx0aGlzfTt5Ll9fcHJpdmF0ZV9fLnNldExpbmVEYXNoPU0uQVBJLnNldExpbmVEYXNoPU0uQVBJLnNldExpbmVEYXNoUGF0dGVybj1mdW5jdGlvbih0LGUpe2lmKHQ9dHx8W10sZT1lfHwwLGlzTmFOKGUpfHwhQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5zZXRMaW5lRGFzaCIpO3JldHVybiB0PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gRShVKHQpKX0pKS5qb2luKCIgIiksZT1FKFUoZSkpLGh0KCJbIit0KyJdICIrZSsiIGQiKSx0aGlzfTt2YXIgZ3I9eS5fX3ByaXZhdGVfXy5nZXRMaW5lSGVpZ2h0PXkuZ2V0TGluZUhlaWdodD1mdW5jdGlvbigpe3JldHVybiBndCpocn07eS5fX3ByaXZhdGVfXy5nZXRMaW5lSGVpZ2h0PXkuZ2V0TGluZUhlaWdodD1mdW5jdGlvbigpe3JldHVybiBndCpocn07dmFyIG1yPXkuX19wcml2YXRlX18uc2V0TGluZUhlaWdodEZhY3Rvcj15LnNldExpbmVIZWlnaHRGYWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZih0PXR8fDEuMTUpJiYoaHI9dCksdGhpc30sdnI9eS5fX3ByaXZhdGVfXy5nZXRMaW5lSGVpZ2h0RmFjdG9yPXkuZ2V0TGluZUhlaWdodEZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBocn07bXIodC5saW5lSGVpZ2h0KTt2YXIgYnI9eS5fX3ByaXZhdGVfXy5nZXRIb3Jpem9udGFsQ29vcmRpbmF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gVSh0KX0seXI9eS5fX3ByaXZhdGVfXy5nZXRWZXJ0aWNhbENvb3JkaW5hdGU9ZnVuY3Rpb24odCl7cmV0dXJuIFM9PT14LkFEVkFOQ0VEP3Q6UnRbJF0ubWVkaWFCb3gudG9wUmlnaHRZLVJ0WyRdLm1lZGlhQm94LmJvdHRvbUxlZnRZLVUodCl9LHdyPXkuX19wcml2YXRlX18uZ2V0SG9yaXpvbnRhbENvb3JkaW5hdGVTdHJpbmc9eS5nZXRIb3Jpem9udGFsQ29vcmRpbmF0ZVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gRShicih0KSl9LE5yPXkuX19wcml2YXRlX18uZ2V0VmVydGljYWxDb29yZGluYXRlU3RyaW5nPXkuZ2V0VmVydGljYWxDb29yZGluYXRlU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBFKHlyKHQpKX0sTHI9dC5zdHJva2VDb2xvcnx8IjAgRyI7eS5fX3ByaXZhdGVfXy5nZXRTdHJva2VDb2xvcj15LmdldERyYXdDb2xvcj1mdW5jdGlvbigpe3JldHVybiBlZShMcil9LHkuX19wcml2YXRlX18uc2V0U3Ryb2tlQ29sb3I9eS5zZXREcmF3Q29sb3I9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIExyPXJlKHtjaDE6dCxjaDI6ZSxjaDM6cixjaDQ6bixwZGZDb2xvclR5cGU6ImRyYXciLHByZWNpc2lvbjoyfSksaHQoTHIpLHRoaXN9O3ZhciBBcj10LmZpbGxDb2xvcnx8IjAgZyI7eS5fX3ByaXZhdGVfXy5nZXRGaWxsQ29sb3I9eS5nZXRGaWxsQ29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gZWUoQXIpfSx5Ll9fcHJpdmF0ZV9fLnNldEZpbGxDb2xvcj15LnNldEZpbGxDb2xvcj1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gQXI9cmUoe2NoMTp0LGNoMjplLGNoMzpyLGNoNDpuLHBkZkNvbG9yVHlwZToiZmlsbCIscHJlY2lzaW9uOjJ9KSxodChBciksdGhpc307dmFyIHhyPXQudGV4dENvbG9yfHwiMCBnIixTcj15Ll9fcHJpdmF0ZV9fLmdldFRleHRDb2xvcj15LmdldFRleHRDb2xvcj1mdW5jdGlvbigpe3JldHVybiBlZSh4cil9O3kuX19wcml2YXRlX18uc2V0VGV4dENvbG9yPXkuc2V0VGV4dENvbG9yPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB4cj1yZSh7Y2gxOnQsY2gyOmUsY2gzOnIsY2g0Om4scGRmQ29sb3JUeXBlOiJ0ZXh0IixwcmVjaXNpb246M30pLHRoaXN9O3ZhciBfcj10LmNoYXJTcGFjZSxQcj15Ll9fcHJpdmF0ZV9fLmdldENoYXJTcGFjZT15LmdldENoYXJTcGFjZT1mdW5jdGlvbigpe3JldHVybiBwYXJzZUZsb2F0KF9yfHwwKX07eS5fX3ByaXZhdGVfXy5zZXRDaGFyU3BhY2U9eS5zZXRDaGFyU3BhY2U9ZnVuY3Rpb24odCl7aWYoaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5zZXRDaGFyU3BhY2UiKTtyZXR1cm4gX3I9dCx0aGlzfTt2YXIga3I9MDt5LkNhcEpvaW5TdHlsZXM9ezA6MCxidXR0OjAsYnV0OjAsbWl0ZXI6MCwxOjEscm91bmQ6MSxyb3VuZGVkOjEsY2lyY2xlOjEsMjoyLHByb2plY3Rpbmc6Mixwcm9qZWN0OjIsc3F1YXJlOjIsYmV2ZWw6Mn0seS5fX3ByaXZhdGVfXy5zZXRMaW5lQ2FwPXkuc2V0TGluZUNhcD1mdW5jdGlvbih0KXt2YXIgZT15LkNhcEpvaW5TdHlsZXNbdF07aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIkxpbmUgY2FwIHN0eWxlIG9mICciK3QrIicgaXMgbm90IHJlY29nbml6ZWQuIFNlZSBvciBleHRlbmQgLkNhcEpvaW5TdHlsZXMgcHJvcGVydHkgZm9yIHZhbGlkIHN0eWxlcyIpO3JldHVybiBrcj1lLGh0KGUrIiBKIiksdGhpc307dmFyIEZyPTA7eS5fX3ByaXZhdGVfXy5zZXRMaW5lSm9pbj15LnNldExpbmVKb2luPWZ1bmN0aW9uKHQpe3ZhciBlPXkuQ2FwSm9pblN0eWxlc1t0XTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTGluZSBqb2luIHN0eWxlIG9mICciK3QrIicgaXMgbm90IHJlY29nbml6ZWQuIFNlZSBvciBleHRlbmQgLkNhcEpvaW5TdHlsZXMgcHJvcGVydHkgZm9yIHZhbGlkIHN0eWxlcyIpO3JldHVybiBGcj1lLGh0KGUrIiBqIiksdGhpc30seS5fX3ByaXZhdGVfXy5zZXRMaW5lTWl0ZXJMaW1pdD15Ll9fcHJpdmF0ZV9fLnNldE1pdGVyTGltaXQ9eS5zZXRMaW5lTWl0ZXJMaW1pdD15LnNldE1pdGVyTGltaXQ9ZnVuY3Rpb24odCl7aWYodD10fHwwLGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuc2V0TGluZU1pdGVyTGltaXQiKTtyZXR1cm4gaHQoRShVKHQpKSsiIE0iKSx0aGlzfSx5LkdTdGF0ZT1DLHkuc2V0R1N0YXRlPWZ1bmN0aW9uKHQpeyh0PSJzdHJpbmciPT10eXBlb2YgdD9NdFtFdFt0XV06SXIobnVsbCx0KSkuZXF1YWxzKHF0KXx8KGh0KCIvIit0LmlkKyIgZ3MiKSxxdD10KX07dmFyIElyPWZ1bmN0aW9uKHQsZSl7aWYoIXR8fCFFdFt0XSl7dmFyIHI9ITE7Zm9yKHZhciBuIGluIE10KWlmKE10Lmhhc093blByb3BlcnR5KG4pJiZNdFtuXS5lcXVhbHMoZSkpe3I9ITA7YnJlYWt9aWYocillPU10W25dO2Vsc2V7dmFyIGk9IkdTIisoT2JqZWN0LmtleXMoTXQpLmxlbmd0aCsxKS50b1N0cmluZygxMCk7TXRbaV09ZSxlLmlkPWl9cmV0dXJuIHQmJihFdFt0XT1lLmlkKSxUdC5wdWJsaXNoKCJhZGRHU3RhdGUiLGUpLGV9fTt5LmFkZEdTdGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBJcih0LGUpLHRoaXN9LHkuc2F2ZUdyYXBoaWNzU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gaHQoInEiKSxqdC5wdXNoKHtrZXk6U3Qsc2l6ZTpndCxjb2xvcjp4cn0pLHRoaXN9LHkucmVzdG9yZUdyYXBoaWNzU3RhdGU9ZnVuY3Rpb24oKXtodCgiUSIpO3ZhciB0PWp0LnBvcCgpO3JldHVybiBTdD10LmtleSxndD10LnNpemUseHI9dC5jb2xvcixxdD1udWxsLHRoaXN9LHkuc2V0Q3VycmVudFRyYW5zZm9ybWF0aW9uTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBodCh0LnRvU3RyaW5nKCkrIiBjbSIpLHRoaXN9LHkuY29tbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gaHQoIiMiK3QpLHRoaXN9O3ZhciBDcj1mdW5jdGlvbih0LGUpe3ZhciByPXR8fDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIngiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24odCl7aXNOYU4odCl8fChyPXBhcnNlRmxvYXQodCkpfX0pO3ZhciBuPWV8fDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBufSxzZXQ6ZnVuY3Rpb24odCl7aXNOYU4odCl8fChuPXBhcnNlRmxvYXQodCkpfX0pO3ZhciBpPSJwdCI7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ0eXBlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sc2V0OmZ1bmN0aW9uKHQpe2k9dC50b1N0cmluZygpfX0pLHRoaXN9LGpyPWZ1bmN0aW9uKHQsZSxyLG4pe0NyLmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0icmVjdCI7dmFyIGk9cnx8MDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHNldDpmdW5jdGlvbih0KXtpc05hTih0KXx8KGk9cGFyc2VGbG9hdCh0KSl9fSk7dmFyIGE9bnx8MDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhfSxzZXQ6ZnVuY3Rpb24odCl7aXNOYU4odCl8fChhPXBhcnNlRmxvYXQodCkpfX0pLHRoaXN9LE9yPWZ1bmN0aW9uKCl7dGhpcy5wYWdlPUR0LHRoaXMuY3VycmVudFBhZ2U9JCx0aGlzLnBhZ2VzPW90LnNsaWNlKDApLHRoaXMucGFnZXNDb250ZXh0PVJ0LnNsaWNlKDApLHRoaXMueD1QdCx0aGlzLnk9a3QsdGhpcy5tYXRyaXg9RnQsdGhpcy53aWR0aD1xcigkKSx0aGlzLmhlaWdodD1ScigkKSx0aGlzLm91dHB1dERlc3RpbmF0aW9uPWN0LHRoaXMuaWQ9IiIsdGhpcy5vYmplY3ROdW1iZXI9LTF9O09yLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7RHQ9dGhpcy5wYWdlLCQ9dGhpcy5jdXJyZW50UGFnZSxSdD10aGlzLnBhZ2VzQ29udGV4dCxvdD10aGlzLnBhZ2VzLFB0PXRoaXMueCxrdD10aGlzLnksRnQ9dGhpcy5tYXRyaXgsRHIoJCx0aGlzLndpZHRoKSxUcigkLHRoaXMuaGVpZ2h0KSxjdD10aGlzLm91dHB1dERlc3RpbmF0aW9ufTt2YXIgQnI9ZnVuY3Rpb24odCxlLHIsbixpKXtXdC5wdXNoKG5ldyBPciksRHQ9JD0wLG90PVtdLFB0PXQsa3Q9ZSxGdD1pLGplKFtyLG5dKX0sTXI9ZnVuY3Rpb24odCl7aWYoSHRbdF0pV3QucG9wKCkucmVzdG9yZSgpO2Vsc2V7dmFyIGU9bmV3IE9yLHI9IlhvIisoT2JqZWN0LmtleXMoenQpLmxlbmd0aCsxKS50b1N0cmluZygxMCk7ZS5pZD1yLEh0W3RdPXIsenRbcl09ZSxUdC5wdWJsaXNoKCJhZGRGb3JtT2JqZWN0IixlKSxXdC5wb3AoKS5yZXN0b3JlKCl9fTtmb3IodmFyIEVyIGluIHkuYmVnaW5Gb3JtT2JqZWN0PWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIEJyKHQsZSxyLG4saSksdGhpc30seS5lbmRGb3JtT2JqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBNcih0KSx0aGlzfSx5LmRvRm9ybU9iamVjdD1mdW5jdGlvbih0LGUpe3ZhciByPXp0W0h0W3RdXTtyZXR1cm4gaHQoInEiKSxodChlLnRvU3RyaW5nKCkrIiBjbSIpLGh0KCIvIityLmlkKyIgRG8iKSxodCgiUSIpLHRoaXN9LHkuZ2V0Rm9ybU9iamVjdD1mdW5jdGlvbih0KXt2YXIgZT16dFtIdFt0XV07cmV0dXJue3g6ZS54LHk6ZS55LHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0LG1hdHJpeDplLm1hdHJpeH19LHkuc2F2ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0PXR8fCJnZW5lcmF0ZWQucGRmIiwoZT1lfHx7fSkucmV0dXJuUHJvbWlzZT1lLnJldHVyblByb21pc2V8fCExLCExPT09ZS5yZXR1cm5Qcm9taXNlPyhsKFdlKEhlKCkpLHQpLCJmdW5jdGlvbiI9PXR5cGVvZiBsLnVubG9hZCYmci5zZXRUaW1lb3V0JiZzZXRUaW1lb3V0KGwudW5sb2FkLDkxMSksdGhpcyk6bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dHJ5e3ZhciBpPWwoV2UoSGUoKSksdCk7ImZ1bmN0aW9uIj09dHlwZW9mIGwudW5sb2FkJiZyLnNldFRpbWVvdXQmJnNldFRpbWVvdXQobC51bmxvYWQsOTExKSxlKGkpfWNhdGNoKHQpe24odC5tZXNzYWdlKX19KSl9LE0uQVBJKU0uQVBJLmhhc093blByb3BlcnR5KEVyKSYmKCJldmVudHMiPT09RXImJk0uQVBJLmV2ZW50cy5sZW5ndGg\/ZnVuY3Rpb24odCxlKXt2YXIgcixuLGk7Zm9yKGk9ZS5sZW5ndGgtMTstMSE9PWk7aS0tKXI9ZVtpXVswXSxuPWVbaV1bMV0sdC5zdWJzY3JpYmUuYXBwbHkodCxbcl0uY29uY2F0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP1tuXTpuKSl9KFR0LE0uQVBJLmV2ZW50cyk6eVtFcl09TS5BUElbRXJdKTt2YXIgcXI9eS5nZXRQYWdlV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuKFJ0W3Q9dHx8JF0ubWVkaWFCb3gudG9wUmlnaHRYLVJ0W3RdLm1lZGlhQm94LmJvdHRvbUxlZnRYKS9fdH0sRHI9eS5zZXRQYWdlV2lkdGg9ZnVuY3Rpb24odCxlKXtSdFt0XS5tZWRpYUJveC50b3BSaWdodFg9ZSpfdCtSdFt0XS5tZWRpYUJveC5ib3R0b21MZWZ0WH0sUnI9eS5nZXRQYWdlSGVpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybihSdFt0PXR8fCRdLm1lZGlhQm94LnRvcFJpZ2h0WS1SdFt0XS5tZWRpYUJveC5ib3R0b21MZWZ0WSkvX3R9LFRyPXkuc2V0UGFnZUhlaWdodD1mdW5jdGlvbih0LGUpe1J0W3RdLm1lZGlhQm94LnRvcFJpZ2h0WT1lKl90K1J0W3RdLm1lZGlhQm94LmJvdHRvbUxlZnRZfTtyZXR1cm4geS5pbnRlcm5hbD17cGRmRXNjYXBlOkNlLGdldFN0eWxlOnRyLGdldEZvbnQ6bHIsZ2V0Rm9udFNpemU6dnQsZ2V0Q2hhclNwYWNlOlByLGdldFRleHRDb2xvcjpTcixnZXRMaW5lSGVpZ2h0OmdyLGdldExpbmVIZWlnaHRGYWN0b3I6dnIsZ2V0TGluZVdpZHRoOmRyLHdyaXRlOmZ0LGdldEhvcml6b250YWxDb29yZGluYXRlOmJyLGdldFZlcnRpY2FsQ29vcmRpbmF0ZTp5cixnZXRDb29yZGluYXRlU3RyaW5nOndyLGdldFZlcnRpY2FsQ29vcmRpbmF0ZVN0cmluZzpOcixjb2xsZWN0aW9uczp7fSxuZXdPYmplY3Q6WHQsbmV3QWRkaXRpb25hbE9iamVjdDokdCxuZXdPYmplY3REZWZlcnJlZDpLdCxuZXdPYmplY3REZWZlcnJlZEJlZ2luOlp0LGdldEZpbHRlcnM6bmUscHV0U3RyZWFtOmllLGV2ZW50czpUdCxzY2FsZUZhY3RvcjpfdCxwYWdlU2l6ZTp7Z2V0V2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gcXIoJCl9LHNldFdpZHRoOmZ1bmN0aW9uKHQpe0RyKCQsdCl9LGdldEhlaWdodDpmdW5jdGlvbigpe3JldHVybiBScigkKX0sc2V0SGVpZ2h0OmZ1bmN0aW9uKHQpe1RyKCQsdCl9fSxlbmNyeXB0aW9uT3B0aW9uczptLGVuY3J5cHRpb246WWUsZ2V0RW5jcnlwdG9yOkplLG91dHB1dDpWZSxnZXROdW1iZXJPZlBhZ2VzOkVlLHBhZ2VzOm90LG91dDpodCxmMjpSLGYzOlQsZ2V0UGFnZUluZm86WGUsZ2V0UGFnZUluZm9CeU9iaklkOktlLGdldEN1cnJlbnRQYWdlSW5mbzpaZSxnZXRQREZWZXJzaW9uOk4sUG9pbnQ6Q3IsUmVjdGFuZ2xlOmpyLE1hdHJpeDpWdCxoYXNIb3RmaXg6R2V9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LmludGVybmFsLnBhZ2VTaXplLCJ3aWR0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBxcigkKX0sc2V0OmZ1bmN0aW9uKHQpe0RyKCQsdCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHkuaW50ZXJuYWwucGFnZVNpemUsImhlaWdodCIse2dldDpmdW5jdGlvbigpe3JldHVybiBScigkKX0sc2V0OmZ1bmN0aW9uKHQpe1RyKCQsdCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksa2UuY2FsbCh5LHB0KSxTdD0iRjEiLE9lKHMsYSksVHQucHVibGlzaCgiaW5pdGlhbGl6ZWQiKSx5fWsucHJvdG90eXBlLmxzYkZpcnN0V29yZD1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0Pj4wJjI1NSx0Pj44JjI1NSx0Pj4xNiYyNTUsdD4+MjQmMjU1KX0say5wcm90b3R5cGUudG9IZXhTdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKCIwIisoMjU1JnQuY2hhckNvZGVBdCgwKSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMil9KSkuam9pbigiIil9LGsucHJvdG90eXBlLmhleFRvQnl0ZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MDtyPHQubGVuZ3RoO3IrPTIpZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zdWJzdHIociwyKSwxNikpKTtyZXR1cm4gZS5qb2luKCIiKX0say5wcm90b3R5cGUucHJvY2Vzc093bmVyUGFzc3dvcmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gXyhBKGUpLnN1YnN0cigwLDUpLHQpfSxrLnByb3RvdHlwZS5lbmNyeXB0b3I9ZnVuY3Rpb24odCxlKXt2YXIgcj1BKHRoaXMuZW5jcnlwdGlvbktleStTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZ0LHQ+PjgmMjU1LHQ+PjE2JjI1NSwyNTUmZSxlPj44JjI1NSkpLnN1YnN0cigwLDEwKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIF8ocix0KX19LEMucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXt2YXIgcixuPSJpZCxvYmplY3ROdW1iZXIsZXF1YWxzIjtpZighdHx8ZSh0KSE9PWUodGhpcykpcmV0dXJuITE7dmFyIGk9MDtmb3IociBpbiB0aGlzKWlmKCEobi5pbmRleE9mKHIpPj0wKSl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShyKSYmIXQuaGFzT3duUHJvcGVydHkocikpcmV0dXJuITE7aWYodGhpc1tyXSE9PXRbcl0pcmV0dXJuITE7aSsrfWZvcihyIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmbi5pbmRleE9mKHIpPDAmJmktLTtyZXR1cm4gMD09PWl9LE0uQVBJPXtldmVudHM6W119LE0udmVyc2lvbj0iMi41LjEiO3ZhciBFPU0uQVBJLHE9MSxEPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC9cKC9nLCJcXCgiKS5yZXBsYWNlKC9cKS9nLCJcXCkiKX0sUj1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cXFxcL2csIlxcIikucmVwbGFjZSgvXFxcKC9nLCIoIikucmVwbGFjZSgvXFxcKS9nLCIpIil9LFQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgyKX0sVT1mdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDUpfTtFLl9fYWNyb2Zvcm1fXz17fTt2YXIgej1mdW5jdGlvbih0LGUpe3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9LEg9ZnVuY3Rpb24odCl7cmV0dXJuIHQqcX0sVz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgY3Qscj1MdC5pbnRlcm5hbC5nZXRIZWlnaHQodCl8fDAsbj1MdC5pbnRlcm5hbC5nZXRXaWR0aCh0KXx8MDtyZXR1cm4gZS5CQm94PVswLDAsTnVtYmVyKFQobikpLE51bWJlcihUKHIpKV0sZX0sVj1FLl9fYWNyb2Zvcm1fXy5zZXRCaXQ9ZnVuY3Rpb24odCxlKXtpZih0PXR8fDAsZT1lfHwwLGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5BUEkuX19hY3JvZm9ybV9fLnNldEJpdCIpO3JldHVybiB0fD0xPDxlfSxHPUUuX19hY3JvZm9ybV9fLmNsZWFyQml0PWZ1bmN0aW9uKHQsZSl7aWYodD10fHwwLGU9ZXx8MCxpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuQVBJLl9fYWNyb2Zvcm1fXy5jbGVhckJpdCIpO3JldHVybiB0Jj1+KDE8PGUpfSxZPUUuX19hY3JvZm9ybV9fLmdldEJpdD1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5BUEkuX19hY3JvZm9ybV9fLmdldEJpdCIpO3JldHVybiAwPT0odCYxPDxlKT8wOjF9LEo9RS5fX2Fjcm9mb3JtX18uZ2V0Qml0Rm9yUGRmPWZ1bmN0aW9uKHQsZSl7aWYoaXNOYU4odCl8fGlzTmFOKGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLkFQSS5fX2Fjcm9mb3JtX18uZ2V0Qml0Rm9yUGRmIik7cmV0dXJuIFkodCxlLTEpfSxYPUUuX19hY3JvZm9ybV9fLnNldEJpdEZvclBkZj1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5BUEkuX19hY3JvZm9ybV9fLnNldEJpdEZvclBkZiIpO3JldHVybiBWKHQsZS0xKX0sSz1FLl9fYWNyb2Zvcm1fXy5jbGVhckJpdEZvclBkZj1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5BUEkuX19hY3JvZm9ybV9fLmNsZWFyQml0Rm9yUGRmIik7cmV0dXJuIEcodCxlLTEpfSxaPUUuX19hY3JvZm9ybV9fLmNhbGN1bGF0ZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5pbnRlcm5hbC5nZXRIb3Jpem9udGFsQ29vcmRpbmF0ZSxuPWUuaW50ZXJuYWwuZ2V0VmVydGljYWxDb29yZGluYXRlLGk9dFswXSxhPXRbMV0sbz10WzJdLHM9dFszXSxjPXt9O3JldHVybiBjLmxvd2VyTGVmdF9YPXIoaSl8fDAsYy5sb3dlckxlZnRfWT1uKGErcyl8fDAsYy51cHBlclJpZ2h0X1g9cihpK28pfHwwLGMudXBwZXJSaWdodF9ZPW4oYSl8fDAsW051bWJlcihUKGMubG93ZXJMZWZ0X1gpKSxOdW1iZXIoVChjLmxvd2VyTGVmdF9ZKSksTnVtYmVyKFQoYy51cHBlclJpZ2h0X1gpKSxOdW1iZXIoVChjLnVwcGVyUmlnaHRfWSkpXX0sJD1mdW5jdGlvbih0KXtpZih0LmFwcGVhcmFuY2VTdHJlYW1Db250ZW50KXJldHVybiB0LmFwcGVhcmFuY2VTdHJlYW1Db250ZW50O2lmKHQuVnx8dC5EVil7dmFyIGU9W10scj10Ll9WfHx0LkRWLG49USh0LHIpLGk9dC5zY29wZS5pbnRlcm5hbC5nZXRGb250KHQuZm9udE5hbWUsdC5mb250U3R5bGUpLmlkO2UucHVzaCgiL1R4IEJNQyIpLGUucHVzaCgicSIpLGUucHVzaCgiQlQiKSxlLnB1c2godC5zY29wZS5fX3ByaXZhdGVfXy5lbmNvZGVDb2xvclN0cmluZyh0LmNvbG9yKSksZS5wdXNoKCIvIitpKyIgIitUKG4uZm9udFNpemUpKyIgVGYiKSxlLnB1c2goIjEgMCAwIDEgMCAwIFRtIiksZS5wdXNoKG4udGV4dCksZS5wdXNoKCJFVCIpLGUucHVzaCgiUSIpLGUucHVzaCgiRU1DIik7dmFyIGE9Vyh0KTtyZXR1cm4gYS5zY29wZT10LnNjb3BlLGEuc3RyZWFtPWUuam9pbigiXG4iKSxhfX0sUT1mdW5jdGlvbih0LGUpe3ZhciByPTA9PT10LmZvbnRTaXplP3QubWF4Rm9udFNpemU6dC5mb250U2l6ZSxuPXt0ZXh0OiIiLGZvbnRTaXplOiIifSxpPShlPSIpIj09KGU9IigiPT1lLnN1YnN0cigwLDEpP2Uuc3Vic3RyKDEpOmUpLnN1YnN0cihlLmxlbmd0aC0xKT9lLnN1YnN0cigwLGUubGVuZ3RoLTEpOmUpLnNwbGl0KCIgIik7aT10Lm11bHRpbGluZT9pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BsaXQoIlxuIil9KSk6aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pKTt2YXIgYT1yLG89THQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpfHwwO289bzwwPy1vOm87dmFyIHM9THQuaW50ZXJuYWwuZ2V0V2lkdGgodCl8fDA7cz1zPDA\/LXM6czt2YXIgYz1mdW5jdGlvbihlLHIsbil7aWYoZSsxPGkubGVuZ3RoKXt2YXIgYT1yKyIgIitpW2UrMV1bMF07cmV0dXJuIHR0KGEsdCxuKS53aWR0aDw9cy00fXJldHVybiExfTthKys7dDpmb3IoO2E+MDspe2U9IiIsYS0tO3ZhciB1LGwsaD10dCgiMyIsdCxhKS5oZWlnaHQsZj10Lm11bHRpbGluZT9vLWE6KG8taCkvMixkPWYrPTIscD0wLGc9MCxtPTA7aWYoYTw9MCl7ZT0iKC4uLikgVGpcbiIsZSs9IiUgV2lkdGggb2YgVGV4dDogIit0dChlLHQsYT0xMikud2lkdGgrIiwgRmllbGRXaWR0aDoiK3MrIlxuIjticmVha31mb3IodmFyIHY9IiIsYj0wLHk9MDt5PGkubGVuZ3RoO3krKylpZihpLmhhc093blByb3BlcnR5KHkpKXt2YXIgdz0hMTtpZigxIT09aVt5XS5sZW5ndGgmJm0hPT1pW3ldLmxlbmd0aC0xKXtpZigoaCsyKSooYisyKSsyPm8pY29udGludWUgdDt2Kz1pW3ldW21dLHc9ITAsZz15LHktLX1lbHNle3Y9IiAiPT0odis9aVt5XVttXSsiICIpLnN1YnN0cih2Lmxlbmd0aC0xKT92LnN1YnN0cigwLHYubGVuZ3RoLTEpOnY7dmFyIE49cGFyc2VJbnQoeSksTD1jKE4sdixhKSxBPXk+PWkubGVuZ3RoLTE7aWYoTCYmIUEpe3YrPSIgIixtPTA7Y29udGludWV9aWYoTHx8QSl7aWYoQSlnPU47ZWxzZSBpZih0Lm11bHRpbGluZSYmKGgrMikqKGIrMikrMj5vKWNvbnRpbnVlIHR9ZWxzZXtpZighdC5tdWx0aWxpbmUpY29udGludWUgdDtpZigoaCsyKSooYisyKSsyPm8pY29udGludWUgdDtnPU59fWZvcih2YXIgeD0iIixTPXA7Uzw9ZztTKyspe3ZhciBfPWlbU107aWYodC5tdWx0aWxpbmUpe2lmKFM9PT1nKXt4Kz1fW21dKyIgIixtPShtKzEpJV8ubGVuZ3RoO2NvbnRpbnVlfWlmKFM9PT1wKXt4Kz1fW18ubGVuZ3RoLTFdKyIgIjtjb250aW51ZX19eCs9X1swXSsiICJ9c3dpdGNoKHg9IiAiPT14LnN1YnN0cih4Lmxlbmd0aC0xKT94LnN1YnN0cigwLHgubGVuZ3RoLTEpOngsbD10dCh4LHQsYSkud2lkdGgsdC50ZXh0QWxpZ24pe2Nhc2UicmlnaHQiOnU9cy1sLTI7YnJlYWs7Y2FzZSJjZW50ZXIiOnU9KHMtbCkvMjticmVhaztjYXNlImxlZnQiOmRlZmF1bHQ6dT0yfWUrPVQodSkrIiAiK1QoZCkrIiBUZFxuIixlKz0iKCIrRCh4KSsiKSBUalxuIixlKz0tVCh1KSsiIDAgVGRcbiIsZD0tKGErMiksbD0wLHA9dz9nOmcrMSxiKyssdj0iIn1lbHNlO2JyZWFrfXJldHVybiBuLnRleHQ9ZSxuLmZvbnRTaXplPWEsbn0sdHQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuc2NvcGUuaW50ZXJuYWwuZ2V0Rm9udChlLmZvbnROYW1lLGUuZm9udFN0eWxlKSxpPWUuc2NvcGUuZ2V0U3RyaW5nVW5pdFdpZHRoKHQse2ZvbnQ6bixmb250U2l6ZTpwYXJzZUZsb2F0KHIpLGNoYXJTcGFjZTowfSkqcGFyc2VGbG9hdChyKTtyZXR1cm57aGVpZ2h0OmUuc2NvcGUuZ2V0U3RyaW5nVW5pdFdpZHRoKCIzIix7Zm9udDpuLGZvbnRTaXplOnBhcnNlRmxvYXQociksY2hhclNwYWNlOjB9KSpwYXJzZUZsb2F0KHIpKjEuNSx3aWR0aDppfX0sZXQ9e2ZpZWxkczpbXSx4Rm9ybXM6W10sYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdDpudWxsLHByaW50ZWRPdXQ6ITEsaW50ZXJuYWw6bnVsbCxpc0luaXRpYWxpemVkOiExfSxydD1mdW5jdGlvbih0LGUpe3ZhciByPXt0eXBlOiJyZWZlcmVuY2UiLG9iamVjdDp0fTt2b2lkIDA9PT1lLmludGVybmFsLmdldFBhZ2VJbmZvKHQucGFnZSkucGFnZUNvbnRleHQuYW5ub3RhdGlvbnMuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PXIudHlwZSYmdC5vYmplY3Q9PT1yLm9iamVjdH0pKSYmZS5pbnRlcm5hbC5nZXRQYWdlSW5mbyh0LnBhZ2UpLnBhZ2VDb250ZXh0LmFubm90YXRpb25zLnB1c2gocil9LG50PWZ1bmN0aW9uKHQscil7Zm9yKHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIGk9bixhPXRbbl07ci5pbnRlcm5hbC5uZXdPYmplY3REZWZlcnJlZEJlZ2luKGEub2JqSWQsITApLCJvYmplY3QiPT09ZShhKSYmImZ1bmN0aW9uIj09dHlwZW9mIGEucHV0U3RyZWFtJiZhLnB1dFN0cmVhbSgpLGRlbGV0ZSB0W2ldfX0saXQ9ZnVuY3Rpb24odCxyKXtpZihyLnNjb3BlPXQsdm9pZCAwIT09dC5pbnRlcm5hbCYmKHZvaWQgMD09PXQuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW58fCExPT09dC5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5pc0luaXRpYWxpemVkKSl7aWYobHQuRmllbGROdW09MCx0LmludGVybmFsLmFjcm9mb3JtUGx1Z2luPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXQpKSx0LmludGVybmFsLmFjcm9mb3JtUGx1Z2luLmFjcm9Gb3JtRGljdGlvbmFyeVJvb3QpdGhyb3cgbmV3IEVycm9yKCJFeGNlcHRpb24gd2hpbGUgY3JlYXRpbmcgQWNyb2Zvcm1EaWN0aW9uYXJ5Iik7cT10LmludGVybmFsLnNjYWxlRmFjdG9yLHQuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdD1uZXcgdXQsdC5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5hY3JvRm9ybURpY3Rpb25hcnlSb290LnNjb3BlPXQsdC5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5hY3JvRm9ybURpY3Rpb25hcnlSb290Ll9ldmVudElEPXQuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicG9zdFB1dFJlc291cmNlcyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3QuaW50ZXJuYWwuZXZlbnRzLnVuc3Vic2NyaWJlKHQuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5fZXZlbnRJRCksZGVsZXRlIHQuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5fZXZlbnRJRCx0LmludGVybmFsLmFjcm9mb3JtUGx1Z2luLnByaW50ZWRPdXQ9ITB9KHQpfSkpLHQuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgiYnVpbGREb2N1bWVudCIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3QuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5vYmpJZD12b2lkIDA7dmFyIGU9dC5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5hY3JvRm9ybURpY3Rpb25hcnlSb290LkZpZWxkcztmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbj1lW3JdO24ub2JqSWQ9dm9pZCAwLG4uaGFzQW5ub3RhdGlvbiYmcnQobix0KX19KHQpfSkpLHQuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicHV0Q2F0YWxvZyIsKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdCl0aHJvdyBuZXcgRXJyb3IoInB1dENhdGFsb2dDYWxsYmFjazogUm9vdCBtaXNzaW5nLiIpO3QuaW50ZXJuYWwud3JpdGUoIi9BY3JvRm9ybSAiK3QuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5vYmpJZCsiIDAgUiIpfSh0KX0pKSx0LmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInBvc3RQdXRQYWdlcyIsKGZ1bmN0aW9uKHIpeyFmdW5jdGlvbih0LHIpe3ZhciBuPSF0O2Zvcih2YXIgaSBpbiB0fHwoci5pbnRlcm5hbC5uZXdPYmplY3REZWZlcnJlZEJlZ2luKHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5vYmpJZCwhMCksci5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5hY3JvRm9ybURpY3Rpb25hcnlSb290LnB1dFN0cmVhbSgpKSx0PXR8fHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdC5LaWRzKWlmKHQuaGFzT3duUHJvcGVydHkoaSkpe3ZhciBhPXRbaV0sbz1bXSxzPWEuUmVjdDtpZihhLlJlY3QmJihhLlJlY3Q9WihhLlJlY3QscikpLHIuaW50ZXJuYWwubmV3T2JqZWN0RGVmZXJyZWRCZWdpbihhLm9iaklkLCEwKSxhLkRBPUx0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlU3RyZWFtKGEpLCJvYmplY3QiPT09ZShhKSYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZ2V0S2V5VmFsdWVMaXN0Rm9yU3RyZWFtJiYobz1hLmdldEtleVZhbHVlTGlzdEZvclN0cmVhbSgpKSxhLlJlY3Q9cyxhLmhhc0FwcGVhcmFuY2VTdHJlYW0mJiFhLmFwcGVhcmFuY2VTdHJlYW1Db250ZW50KXt2YXIgYz0kKGEpO28ucHVzaCh7a2V5OiJBUCIsdmFsdWU6Ijw8L04gIitjKyI+PiJ9KSxyLmludGVybmFsLmFjcm9mb3JtUGx1Z2luLnhGb3Jtcy5wdXNoKGMpfWlmKGEuYXBwZWFyYW5jZVN0cmVhbUNvbnRlbnQpe3ZhciB1PSIiO2Zvcih2YXIgbCBpbiBhLmFwcGVhcmFuY2VTdHJlYW1Db250ZW50KWlmKGEuYXBwZWFyYW5jZVN0cmVhbUNvbnRlbnQuaGFzT3duUHJvcGVydHkobCkpe3ZhciBoPWEuYXBwZWFyYW5jZVN0cmVhbUNvbnRlbnRbbF07aWYodSs9Ii8iK2wrIiAiLHUrPSI8PCIsT2JqZWN0LmtleXMoaCkubGVuZ3RoPj0xfHxBcnJheS5pc0FycmF5KGgpKXtmb3IodmFyIGkgaW4gaClpZihoLmhhc093blByb3BlcnR5KGkpKXt2YXIgZj1oW2ldOyJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoZj1mLmNhbGwocixhKSksdSs9Ii8iK2krIiAiK2YrIiAiLHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4ueEZvcm1zLmluZGV4T2YoZik+PTB8fHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4ueEZvcm1zLnB1c2goZil9fWVsc2UiZnVuY3Rpb24iPT10eXBlb2YoZj1oKSYmKGY9Zi5jYWxsKHIsYSkpLHUrPSIvIitpKyIgIitmLHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4ueEZvcm1zLmluZGV4T2YoZik+PTB8fHIuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4ueEZvcm1zLnB1c2goZik7dSs9Ij4+In1vLnB1c2goe2tleToiQVAiLHZhbHVlOiI8PFxuIit1KyI+PiJ9KX1yLmludGVybmFsLnB1dFN0cmVhbSh7YWRkaXRpb25hbEtleVZhbHVlczpvLG9iamVjdElkOmEub2JqSWR9KSxyLmludGVybmFsLm91dCgiZW5kb2JqIil9biYmbnQoci5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi54Rm9ybXMscil9KHIsdCl9KSksdC5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5pc0luaXRpYWxpemVkPSEwfX0sYXQ9RS5fX2Fjcm9mb3JtX18uYXJyYXlUb1BkZkFycmF5PWZ1bmN0aW9uKHQscixuKXt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm4gdH07aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBhPSJbIixvPTA7bzx0Lmxlbmd0aDtvKyspc3dpdGNoKDAhPT1vJiYoYSs9IiAiKSxlKHRbb10pKXtjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlIm9iamVjdCI6YSs9dFtvXS50b1N0cmluZygpO2JyZWFrO2Nhc2Uic3RyaW5nIjoiLyIhPT10W29dLnN1YnN0cigwLDEpPyh2b2lkIDAhPT1yJiZuJiYoaT1uLmludGVybmFsLmdldEVuY3J5cHRvcihyKSksYSs9IigiK0QoaSh0W29dLnRvU3RyaW5nKCkpKSsiKSIpOmErPXRbb10udG9TdHJpbmcoKX1yZXR1cm4gYSs9Il0ifXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8ganNQREYuX19hY3JvZm9ybV9fLmFycmF5VG9QZGZBcnJheSIpfTt2YXIgb3Q9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiB0fTtyZXR1cm4gdm9pZCAwIT09ZSYmciYmKG49ci5pbnRlcm5hbC5nZXRFbmNyeXB0b3IoZSkpLCh0PXR8fCIiKS50b1N0cmluZygpLHQ9IigiK0Qobih0KSkrIikifSxzdD1mdW5jdGlvbigpe3RoaXMuX29iaklkPXZvaWQgMCx0aGlzLl9zY29wZT12b2lkIDAsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm9iaklkIix7Z2V0OmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy5fb2JqSWQpe2lmKHZvaWQgMD09PXRoaXMuc2NvcGUpcmV0dXJuO3RoaXMuX29iaklkPXRoaXMuc2NvcGUuaW50ZXJuYWwubmV3T2JqZWN0RGVmZXJyZWQoKX1yZXR1cm4gdGhpcy5fb2JqSWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9vYmpJZD10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzY29wZSIse3ZhbHVlOnRoaXMuX3Njb3BlLHdyaXRhYmxlOiEwfSl9O3N0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9iaklkKyIgMCBSIn0sc3QucHJvdG90eXBlLnB1dFN0cmVhbT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0S2V5VmFsdWVMaXN0Rm9yU3RyZWFtKCk7dGhpcy5zY29wZS5pbnRlcm5hbC5wdXRTdHJlYW0oe2RhdGE6dGhpcy5zdHJlYW0sYWRkaXRpb25hbEtleVZhbHVlczp0LG9iamVjdElkOnRoaXMub2JqSWR9KSx0aGlzLnNjb3BlLmludGVybmFsLm91dCgiZW5kb2JqIil9LHN0LnByb3RvdHlwZS5nZXRLZXlWYWx1ZUxpc3RGb3JTdHJlYW09ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuImNvbnRlbnQiIT10JiYiYXBwZWFyYW5jZVN0cmVhbUNvbnRlbnQiIT10JiYic2NvcGUiIT10JiYib2JqSWQiIT10JiYiXyIhPXQuc3Vic3RyaW5nKDAsMSl9KSk7Zm9yKHZhciByIGluIGUpaWYoITE9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsZVtyXSkuY29uZmlndXJhYmxlKXt2YXIgbj1lW3JdLGk9dGhpc1tuXTtpJiYoQXJyYXkuaXNBcnJheShpKT90LnB1c2goe2tleTpuLHZhbHVlOmF0KGksdGhpcy5vYmpJZCx0aGlzLnNjb3BlKX0pOmkgaW5zdGFuY2VvZiBzdD8oaS5zY29wZT10aGlzLnNjb3BlLHQucHVzaCh7a2V5Om4sdmFsdWU6aS5vYmpJZCsiIDAgUiJ9KSk6ImZ1bmN0aW9uIiE9dHlwZW9mIGkmJnQucHVzaCh7a2V5Om4sdmFsdWU6aX0pKX1yZXR1cm4gdH07dmFyIGN0PWZ1bmN0aW9uKCl7c3QuY2FsbCh0aGlzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiVHlwZSIse3ZhbHVlOiIvWE9iamVjdCIsY29uZmlndXJhYmxlOiExLHdyaXRhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIlN1YnR5cGUiLHt2YWx1ZToiL0Zvcm0iLGNvbmZpZ3VyYWJsZTohMSx3cml0YWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJGb3JtVHlwZSIse3ZhbHVlOjEsY29uZmlndXJhYmxlOiExLHdyaXRhYmxlOiEwfSk7dmFyIHQsZT1bXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiQkJveCIse2NvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2V0OmZ1bmN0aW9uKHQpe2U9dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiUmVzb3VyY2VzIix7dmFsdWU6IjIgMCBSIixjb25maWd1cmFibGU6ITEsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic3RyZWFtIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsc2V0OmZ1bmN0aW9uKGUpe3Q9ZS50cmltKCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0fHxudWxsfX0pfTt6KGN0LHN0KTt2YXIgdXQ9ZnVuY3Rpb24oKXtzdC5jYWxsKHRoaXMpO3ZhciB0LGU9W107T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIktpZHMiLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5sZW5ndGg+MD9lOnZvaWQgMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiRmllbGRzIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkRBIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7aWYodCl7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9O3JldHVybiB0aGlzLnNjb3BlJiYoZT10aGlzLnNjb3BlLmludGVybmFsLmdldEVuY3J5cHRvcih0aGlzLm9iaklkKSksIigiK0QoZSh0KSkrIikifX0sc2V0OmZ1bmN0aW9uKGUpe3Q9ZX19KX07eih1dCxzdCk7dmFyIGx0PWZ1bmN0aW9uIHQoKXtzdC5jYWxsKHRoaXMpO3ZhciBlPTQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkYiLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKGlzTmFOKHQpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSAiJyt0KyciIGZvciBhdHRyaWJ1dGUgRiBzdXBwbGllZC4nKTtlPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNob3dXaGVuUHJpbnRlZCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKEooZSwzKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GPVgoZSwzKTp0aGlzLkY9SyhlLDMpfX0pO3ZhciByPTA7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkZmIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldDpmdW5jdGlvbih0KXtpZihpc05hTih0KSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgIicrdCsnIiBmb3IgYXR0cmlidXRlIEZmIHN1cHBsaWVkLicpO3I9dH19KTt2YXIgbj1bXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiUmVjdCIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe2lmKDAhPT1uLmxlbmd0aClyZXR1cm4gbn0sc2V0OmZ1bmN0aW9uKHQpe249dm9pZCAwIT09dD90OltdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ4Iix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIW58fGlzTmFOKG5bMF0pPzA6blswXX0sc2V0OmZ1bmN0aW9uKHQpe25bMF09dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywieSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiFufHxpc05hTihuWzFdKT8wOm5bMV19LHNldDpmdW5jdGlvbih0KXtuWzFdPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIndpZHRoIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIW58fGlzTmFOKG5bMl0pPzA6blsyXX0sc2V0OmZ1bmN0aW9uKHQpe25bMl09dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaGVpZ2h0Iix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIW58fGlzTmFOKG5bM10pPzA6blszXX0sc2V0OmZ1bmN0aW9uKHQpe25bM109dH19KTt2YXIgaT0iIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiRlQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sc2V0OmZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIi9CdG4iOmNhc2UiL1R4IjpjYXNlIi9DaCI6Y2FzZSIvU2lnIjppPXQ7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgIicrdCsnIiBmb3IgYXR0cmlidXRlIEZUIHN1cHBsaWVkLicpfX19KTt2YXIgYT1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJUIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7aWYoIWF8fGEubGVuZ3RoPDEpe2lmKHRoaXMgaW5zdGFuY2VvZiBidClyZXR1cm47YT0iRmllbGRPYmplY3QiK3QuRmllbGROdW0rK312YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4gdH07cmV0dXJuIHRoaXMuc2NvcGUmJihlPXRoaXMuc2NvcGUuaW50ZXJuYWwuZ2V0RW5jcnlwdG9yKHRoaXMub2JqSWQpKSwiKCIrRChlKGEpKSsiKSJ9LHNldDpmdW5jdGlvbih0KXthPXQudG9TdHJpbmcoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZmllbGROYW1lIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbih0KXthPXR9fSk7dmFyIG89ImhlbHZldGljYSI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImZvbnROYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldDpmdW5jdGlvbih0KXtvPXR9fSk7dmFyIHM9Im5vcm1hbCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImZvbnRTdHlsZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzfSxzZXQ6ZnVuY3Rpb24odCl7cz10fX0pO3ZhciBjPTA7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImZvbnRTaXplIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNldDpmdW5jdGlvbih0KXtjPXR9fSk7dmFyIHU9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtYXhGb250U2l6ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT11PzUwL3E6dX0sc2V0OmZ1bmN0aW9uKHQpe3U9dH19KTt2YXIgbD0iYmxhY2siO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2xvciIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsfSxzZXQ6ZnVuY3Rpb24odCl7bD10fX0pO3ZhciBoPSIvRjEgMCBUZiAwIGciO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJEQSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe2lmKCEoIWh8fHRoaXMgaW5zdGFuY2VvZiBidHx8dGhpcyBpbnN0YW5jZW9mIHd0KSlyZXR1cm4gb3QoaCx0aGlzLm9iaklkLHRoaXMuc2NvcGUpfSxzZXQ6ZnVuY3Rpb24odCl7dD10LnRvU3RyaW5nKCksaD10fX0pO3ZhciBmPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkRWIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7aWYoZilyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGd0PT0hMT9vdChmLHRoaXMub2JqSWQsdGhpcy5zY29wZSk6Zn0sc2V0OmZ1bmN0aW9uKHQpe3Q9dC50b1N0cmluZygpLGY9dGhpcyBpbnN0YW5jZW9mIGd0PT0hMT8iKCI9PT10LnN1YnN0cigwLDEpP1IodC5zdWJzdHIoMSx0Lmxlbmd0aC0yKSk6Uih0KTp0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZWZhdWx0VmFsdWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGd0PT0hMD9SKGYuc3Vic3RyKDEsZi5sZW5ndGgtMSkpOmZ9LHNldDpmdW5jdGlvbih0KXt0PXQudG9TdHJpbmcoKSxmPXRoaXMgaW5zdGFuY2VvZiBndD09ITA\/Ii8iK3Q6dH19KTt2YXIgZD1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJfViIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe2lmKGQpcmV0dXJuIGR9LHNldDpmdW5jdGlvbih0KXt0aGlzLlY9dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiViIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe2lmKGQpcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBndD09ITE\/b3QoZCx0aGlzLm9iaklkLHRoaXMuc2NvcGUpOmR9LHNldDpmdW5jdGlvbih0KXt0PXQudG9TdHJpbmcoKSxkPXRoaXMgaW5zdGFuY2VvZiBndD09ITE\/IigiPT09dC5zdWJzdHIoMCwxKT9SKHQuc3Vic3RyKDEsdC5sZW5ndGgtMikpOlIodCk6dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGd0PT0hMD9SKGQuc3Vic3RyKDEsZC5sZW5ndGgtMSkpOmR9LHNldDpmdW5jdGlvbih0KXt0PXQudG9TdHJpbmcoKSxkPXRoaXMgaW5zdGFuY2VvZiBndD09ITA\/Ii8iK3Q6dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaGFzQW5ub3RhdGlvbiIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLlJlY3R9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIlR5cGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBbm5vdGF0aW9uPyIvQW5ub3QiOm51bGx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIlN1YnR5cGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBbm5vdGF0aW9uPyIvV2lkZ2V0IjpudWxsfX0pO3ZhciBwLGc9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImhhc0FwcGVhcmFuY2VTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKHQpe3Q9Qm9vbGVhbih0KSxnPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihwKXJldHVybiBwfSxzZXQ6ZnVuY3Rpb24odCl7cD10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyZWFkT25seSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKEoodGhpcy5GZiwxKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMSk6dGhpcy5GZj1LKHRoaXMuRmYsMSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInJlcXVpcmVkIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDIpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwyKTp0aGlzLkZmPUsodGhpcy5GZiwyKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibm9FeHBvcnQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMykpfSxzZXQ6ZnVuY3Rpb24odCl7ITA9PT1Cb29sZWFuKHQpP3RoaXMuRmY9WCh0aGlzLkZmLDMpOnRoaXMuRmY9Syh0aGlzLkZmLDMpfX0pO3ZhciBtPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIlEiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtpZihudWxsIT09bSlyZXR1cm4gbX0sc2V0OmZ1bmN0aW9uKHQpe2lmKC0xPT09WzAsMSwyXS5pbmRleE9mKHQpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSAiJyt0KyciIGZvciBhdHRyaWJ1dGUgUSBzdXBwbGllZC4nKTttPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRleHRBbGlnbiIse2dldDpmdW5jdGlvbigpe3ZhciB0O3N3aXRjaChtKXtjYXNlIDA6ZGVmYXVsdDp0PSJsZWZ0IjticmVhaztjYXNlIDE6dD0iY2VudGVyIjticmVhaztjYXNlIDI6dD0icmlnaHQifXJldHVybiB0fSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxzZXQ6ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UicmlnaHQiOmNhc2UgMjptPTI7YnJlYWs7Y2FzZSJjZW50ZXIiOmNhc2UgMTptPTE7YnJlYWs7Y2FzZSJsZWZ0IjpjYXNlIDA6ZGVmYXVsdDptPTB9fX0pfTt6KGx0LHN0KTt2YXIgaHQ9ZnVuY3Rpb24oKXtsdC5jYWxsKHRoaXMpLHRoaXMuRlQ9Ii9DaCIsdGhpcy5WPSIoKSIsdGhpcy5mb250TmFtZT0iemFwZmRpbmdiYXRzIjt2YXIgdD0wO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJUSSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ0b3BJbmRleCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pO3ZhciBlPVtdO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJPcHQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYXQoZSx0aGlzLm9iaklkLHRoaXMuc2NvcGUpfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHIsbjtuPVtdLCJzdHJpbmciPT10eXBlb2Yocj10KSYmKG49ZnVuY3Rpb24odCxlLHIpe3J8fChyPTEpO2Zvcih2YXIgbixpPVtdO249ZS5leGVjKHQpOylpLnB1c2gobltyXSk7cmV0dXJuIGl9KHIsL1woKC4qPylcKS9nKSksZT1ufX0pLHRoaXMuZ2V0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBlfSx0aGlzLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7ZT10LHRoaXMuc29ydCYmZS5zb3J0KCl9LHRoaXMuYWRkT3B0aW9uPWZ1bmN0aW9uKHQpe3Q9KHQ9dHx8IiIpLnRvU3RyaW5nKCksZS5wdXNoKHQpLHRoaXMuc29ydCYmZS5zb3J0KCl9LHRoaXMucmVtb3ZlT3B0aW9uPWZ1bmN0aW9uKHQscil7Zm9yKHI9cnx8ITEsdD0odD10fHwiIikudG9TdHJpbmcoKTstMSE9PWUuaW5kZXhPZih0KSYmKGUuc3BsaWNlKGUuaW5kZXhPZih0KSwxKSwhMSE9PXIpOyk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29tYm8iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMTgpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwxOCk6dGhpcy5GZj1LKHRoaXMuRmYsMTgpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJlZGl0Iix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDE5KSl9LHNldDpmdW5jdGlvbih0KXshMD09PXRoaXMuY29tYm8mJighMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMTkpOnRoaXMuRmY9Syh0aGlzLkZmLDE5KSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNvcnQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMjApKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT8odGhpcy5GZj1YKHRoaXMuRmYsMjApLGUuc29ydCgpKTp0aGlzLkZmPUsodGhpcy5GZiwyMCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm11bHRpU2VsZWN0Iix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDIyKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjIpOnRoaXMuRmY9Syh0aGlzLkZmLDIyKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZG9Ob3RTcGVsbENoZWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDIzKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjMpOnRoaXMuRmY9Syh0aGlzLkZmLDIzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29tbWl0T25TZWxDaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMjcpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwyNyk6dGhpcy5GZj1LKHRoaXMuRmYsMjcpfX0pLHRoaXMuaGFzQXBwZWFyYW5jZVN0cmVhbT0hMX07eihodCxsdCk7dmFyIGZ0PWZ1bmN0aW9uKCl7aHQuY2FsbCh0aGlzKSx0aGlzLmZvbnROYW1lPSJoZWx2ZXRpY2EiLHRoaXMuY29tYm89ITF9O3ooZnQsaHQpO3ZhciBkdD1mdW5jdGlvbigpe2Z0LmNhbGwodGhpcyksdGhpcy5jb21ibz0hMH07eihkdCxmdCk7dmFyIHB0PWZ1bmN0aW9uKCl7ZHQuY2FsbCh0aGlzKSx0aGlzLmVkaXQ9ITB9O3oocHQsZHQpO3ZhciBndD1mdW5jdGlvbigpe2x0LmNhbGwodGhpcyksdGhpcy5GVD0iL0J0biIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5vVG9nZ2xlVG9PZmYiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMTUpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwxNSk6dGhpcy5GZj1LKHRoaXMuRmYsMTUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyYWRpbyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKEoodGhpcy5GZiwxNikpfSxzZXQ6ZnVuY3Rpb24odCl7ITA9PT1Cb29sZWFuKHQpP3RoaXMuRmY9WCh0aGlzLkZmLDE2KTp0aGlzLkZmPUsodGhpcy5GZiwxNil9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInB1c2hCdXR0b24iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMTcpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwxNyk6dGhpcy5GZj1LKHRoaXMuRmYsMTcpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyYWRpb0lzVW5pc29uIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDI2KSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjYpOnRoaXMuRmY9Syh0aGlzLkZmLDI2KX19KTt2YXIgdCxyPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJNSyIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQpe3JldHVybiB0fTtpZih0aGlzLnNjb3BlJiYodD10aGlzLnNjb3BlLmludGVybmFsLmdldEVuY3J5cHRvcih0aGlzLm9iaklkKSksMCE9PU9iamVjdC5rZXlzKHIpLmxlbmd0aCl7dmFyIGUsbj1bXTtmb3IoZSBpbiBuLnB1c2goIjw8IiksciluLnB1c2goIi8iK2UrIiAoIitEKHQocltlXSkpKyIpIik7cmV0dXJuIG4ucHVzaCgiPj4iKSxuLmpvaW4oIlxuIil9fSxzZXQ6ZnVuY3Rpb24odCl7Im9iamVjdCI9PT1lKHQpJiYocj10KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY2FwdGlvbiIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkNBfHwiIn0sc2V0OmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHIuQ0E9dCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkFTIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihlKXt0PWV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImFwcGVhcmFuY2VTdGF0ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0LnN1YnN0cigxLHQubGVuZ3RoLTEpfSxzZXQ6ZnVuY3Rpb24oZSl7dD0iLyIrZX19KX07eihndCxsdCk7dmFyIG10PWZ1bmN0aW9uKCl7Z3QuY2FsbCh0aGlzKSx0aGlzLnB1c2hCdXR0b249ITB9O3oobXQsZ3QpO3ZhciB2dD1mdW5jdGlvbigpe2d0LmNhbGwodGhpcyksdGhpcy5yYWRpbz0hMCx0aGlzLnB1c2hCdXR0b249ITE7dmFyIHQ9W107T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIktpZHMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKGUpe3Q9dm9pZCAwIT09ZT9lOltdfX0pfTt6KHZ0LGd0KTt2YXIgYnQ9ZnVuY3Rpb24oKXt2YXIgdCxyO2x0LmNhbGwodGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIlBhcmVudCIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJvcHRpb25OYW1lIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldDpmdW5jdGlvbih0KXtyPXR9fSk7dmFyIG4saT17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiTUsiLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4gdH07dGhpcy5zY29wZSYmKHQ9dGhpcy5zY29wZS5pbnRlcm5hbC5nZXRFbmNyeXB0b3IodGhpcy5vYmpJZCkpO3ZhciBlLHI9W107Zm9yKGUgaW4gci5wdXNoKCI8PCIpLGkpci5wdXNoKCIvIitlKyIgKCIrRCh0KGlbZV0pKSsiKSIpO3JldHVybiByLnB1c2goIj4+Iiksci5qb2luKCJcbiIpfSxzZXQ6ZnVuY3Rpb24odCl7Im9iamVjdCI9PT1lKHQpJiYoaT10KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY2FwdGlvbiIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLkNBfHwiIn0sc2V0OmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKGkuQ0E9dCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIkFTIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldDpmdW5jdGlvbih0KXtuPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImFwcGVhcmFuY2VTdGF0ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnN1YnN0cigxLG4ubGVuZ3RoLTEpfSxzZXQ6ZnVuY3Rpb24odCl7bj0iLyIrdH19KSx0aGlzLmNhcHRpb249ImwiLHRoaXMuYXBwZWFyYW5jZVN0YXRlPSJPZmYiLHRoaXMuX0FwcGVhcmFuY2VUeXBlPUx0LlJhZGlvQnV0dG9uLkNpcmNsZSx0aGlzLmFwcGVhcmFuY2VTdHJlYW1Db250ZW50PXRoaXMuX0FwcGVhcmFuY2VUeXBlLmNyZWF0ZUFwcGVhcmFuY2VTdHJlYW0odGhpcy5vcHRpb25OYW1lKX07eihidCxsdCksdnQucHJvdG90eXBlLnNldEFwcGVhcmFuY2U9ZnVuY3Rpb24odCl7aWYoISgiY3JlYXRlQXBwZWFyYW5jZVN0cmVhbSJpbiB0KXx8ISgiZ2V0Q0EiaW4gdCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBhc3NpZ24gQXBwZWFyYW5jZSB0byBSYWRpb0J1dHRvbi4gQXBwZWFyYW5jZSB3YXMgSW52YWxpZCEiKTtmb3IodmFyIGUgaW4gdGhpcy5LaWRzKWlmKHRoaXMuS2lkcy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIHI9dGhpcy5LaWRzW2VdO3IuYXBwZWFyYW5jZVN0cmVhbUNvbnRlbnQ9dC5jcmVhdGVBcHBlYXJhbmNlU3RyZWFtKHIub3B0aW9uTmFtZSksci5jYXB0aW9uPXQuZ2V0Q0EoKX19LHZ0LnByb3RvdHlwZS5jcmVhdGVPcHRpb249ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGJ0O3JldHVybiBlLlBhcmVudD10aGlzLGUub3B0aW9uTmFtZT10LHRoaXMuS2lkcy5wdXNoKGUpLEF0LmNhbGwodGhpcy5zY29wZSxlKSxlfTt2YXIgeXQ9ZnVuY3Rpb24oKXtndC5jYWxsKHRoaXMpLHRoaXMuZm9udE5hbWU9InphcGZkaW5nYmF0cyIsdGhpcy5jYXB0aW9uPSIzIix0aGlzLmFwcGVhcmFuY2VTdGF0ZT0iT24iLHRoaXMudmFsdWU9Ik9uIix0aGlzLnRleHRBbGlnbj0iY2VudGVyIix0aGlzLmFwcGVhcmFuY2VTdHJlYW1Db250ZW50PUx0LkNoZWNrQm94LmNyZWF0ZUFwcGVhcmFuY2VTdHJlYW0oKX07eih5dCxndCk7dmFyIHd0PWZ1bmN0aW9uKCl7bHQuY2FsbCh0aGlzKSx0aGlzLkZUPSIvVHgiLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtdWx0aWxpbmUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMTMpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwxMyk6dGhpcy5GZj1LKHRoaXMuRmYsMTMpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJmaWxlU2VsZWN0Iix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDIxKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjEpOnRoaXMuRmY9Syh0aGlzLkZmLDIxKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZG9Ob3RTcGVsbENoZWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDIzKSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjMpOnRoaXMuRmY9Syh0aGlzLkZmLDIzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZG9Ob3RTY3JvbGwiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMjQpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwyNCk6dGhpcy5GZj1LKHRoaXMuRmYsMjQpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb21iIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oSih0aGlzLkZmLDI1KSl9LHNldDpmdW5jdGlvbih0KXshMD09PUJvb2xlYW4odCk\/dGhpcy5GZj1YKHRoaXMuRmYsMjUpOnRoaXMuRmY9Syh0aGlzLkZmLDI1KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicmljaFRleHQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMjYpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwyNik6dGhpcy5GZj1LKHRoaXMuRmYsMjYpfX0pO3ZhciB0PW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIk1heExlbiIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtYXhMZW5ndGgiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0PWUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJoYXNBcHBlYXJhbmNlU3RyZWFtIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVnx8dGhpcy5EVn19KX07eih3dCxsdCk7dmFyIE50PWZ1bmN0aW9uKCl7d3QuY2FsbCh0aGlzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFzc3dvcmQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbihKKHRoaXMuRmYsMTQpKX0sc2V0OmZ1bmN0aW9uKHQpeyEwPT09Qm9vbGVhbih0KT90aGlzLkZmPVgodGhpcy5GZiwxNCk6dGhpcy5GZj1LKHRoaXMuRmYsMTQpfX0pLHRoaXMucGFzc3dvcmQ9ITB9O3ooTnQsd3QpO3ZhciBMdD17Q2hlY2tCb3g6e2NyZWF0ZUFwcGVhcmFuY2VTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm57Tjp7T246THQuQ2hlY2tCb3guWWVzTm9ybWFsfSxEOntPbjpMdC5DaGVja0JveC5ZZXNQdXNoRG93bixPZmY6THQuQ2hlY2tCb3guT2ZmUHVzaERvd259fX0sWWVzUHVzaERvd246ZnVuY3Rpb24odCl7dmFyIGU9Vyh0KTtlLnNjb3BlPXQuc2NvcGU7dmFyIHI9W10sbj10LnNjb3BlLmludGVybmFsLmdldEZvbnQodC5mb250TmFtZSx0LmZvbnRTdHlsZSkuaWQsaT10LnNjb3BlLl9fcHJpdmF0ZV9fLmVuY29kZUNvbG9yU3RyaW5nKHQuY29sb3IpLGE9USh0LHQuY2FwdGlvbik7cmV0dXJuIHIucHVzaCgiMC43NDkwMjMgZyIpLHIucHVzaCgiMCAwICIrVChMdC5pbnRlcm5hbC5nZXRXaWR0aCh0KSkrIiAiK1QoTHQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpKSsiIHJlIiksci5wdXNoKCJmIiksci5wdXNoKCJCTUMiKSxyLnB1c2goInEiKSxyLnB1c2goIjAgMCAxIHJnIiksci5wdXNoKCIvIituKyIgIitUKGEuZm9udFNpemUpKyIgVGYgIitpKSxyLnB1c2goIkJUIiksci5wdXNoKGEudGV4dCksci5wdXNoKCJFVCIpLHIucHVzaCgiUSIpLHIucHVzaCgiRU1DIiksZS5zdHJlYW09ci5qb2luKCJcbiIpLGV9LFllc05vcm1hbDpmdW5jdGlvbih0KXt2YXIgZT1XKHQpO2Uuc2NvcGU9dC5zY29wZTt2YXIgcj10LnNjb3BlLmludGVybmFsLmdldEZvbnQodC5mb250TmFtZSx0LmZvbnRTdHlsZSkuaWQsbj10LnNjb3BlLl9fcHJpdmF0ZV9fLmVuY29kZUNvbG9yU3RyaW5nKHQuY29sb3IpLGk9W10sYT1MdC5pbnRlcm5hbC5nZXRIZWlnaHQodCksbz1MdC5pbnRlcm5hbC5nZXRXaWR0aCh0KSxzPVEodCx0LmNhcHRpb24pO3JldHVybiBpLnB1c2goIjEgZyIpLGkucHVzaCgiMCAwICIrVChvKSsiICIrVChhKSsiIHJlIiksaS5wdXNoKCJmIiksaS5wdXNoKCJxIiksaS5wdXNoKCIwIDAgMSByZyIpLGkucHVzaCgiMCAwICIrVChvLTEpKyIgIitUKGEtMSkrIiByZSIpLGkucHVzaCgiVyIpLGkucHVzaCgibiIpLGkucHVzaCgiMCBnIiksaS5wdXNoKCJCVCIpLGkucHVzaCgiLyIrcisiICIrVChzLmZvbnRTaXplKSsiIFRmICIrbiksaS5wdXNoKHMudGV4dCksaS5wdXNoKCJFVCIpLGkucHVzaCgiUSIpLGUuc3RyZWFtPWkuam9pbigiXG4iKSxlfSxPZmZQdXNoRG93bjpmdW5jdGlvbih0KXt2YXIgZT1XKHQpO2Uuc2NvcGU9dC5zY29wZTt2YXIgcj1bXTtyZXR1cm4gci5wdXNoKCIwLjc0OTAyMyBnIiksci5wdXNoKCIwIDAgIitUKEx0LmludGVybmFsLmdldFdpZHRoKHQpKSsiICIrVChMdC5pbnRlcm5hbC5nZXRIZWlnaHQodCkpKyIgcmUiKSxyLnB1c2goImYiKSxlLnN0cmVhbT1yLmpvaW4oIlxuIiksZX19LFJhZGlvQnV0dG9uOntDaXJjbGU6e2NyZWF0ZUFwcGVhcmFuY2VTdHJlYW06ZnVuY3Rpb24odCl7dmFyIGU9e0Q6e09mZjpMdC5SYWRpb0J1dHRvbi5DaXJjbGUuT2ZmUHVzaERvd259LE46e319O3JldHVybiBlLk5bdF09THQuUmFkaW9CdXR0b24uQ2lyY2xlLlllc05vcm1hbCxlLkRbdF09THQuUmFkaW9CdXR0b24uQ2lyY2xlLlllc1B1c2hEb3duLGV9LGdldENBOmZ1bmN0aW9uKCl7cmV0dXJuImwifSxZZXNOb3JtYWw6ZnVuY3Rpb24odCl7dmFyIGU9Vyh0KTtlLnNjb3BlPXQuc2NvcGU7dmFyIHI9W10sbj1MdC5pbnRlcm5hbC5nZXRXaWR0aCh0KTw9THQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpP0x0LmludGVybmFsLmdldFdpZHRoKHQpLzQ6THQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpLzQ7bj1OdW1iZXIoKC45Km4pLnRvRml4ZWQoNSkpO3ZhciBpPUx0LmludGVybmFsLkJlemllcl9DLGE9TnVtYmVyKChuKmkpLnRvRml4ZWQoNSkpO3JldHVybiByLnB1c2goInEiKSxyLnB1c2goIjEgMCAwIDEgIitVKEx0LmludGVybmFsLmdldFdpZHRoKHQpLzIpKyIgIitVKEx0LmludGVybmFsLmdldEhlaWdodCh0KS8yKSsiIGNtIiksci5wdXNoKG4rIiAwIG0iKSxyLnB1c2gobisiICIrYSsiICIrYSsiICIrbisiIDAgIituKyIgYyIpLHIucHVzaCgiLSIrYSsiICIrbisiIC0iK24rIiAiK2ErIiAtIituKyIgMCBjIiksci5wdXNoKCItIituKyIgLSIrYSsiIC0iK2ErIiAtIituKyIgMCAtIituKyIgYyIpLHIucHVzaChhKyIgLSIrbisiICIrbisiIC0iK2ErIiAiK24rIiAwIGMiKSxyLnB1c2goImYiKSxyLnB1c2goIlEiKSxlLnN0cmVhbT1yLmpvaW4oIlxuIiksZX0sWWVzUHVzaERvd246ZnVuY3Rpb24odCl7dmFyIGU9Vyh0KTtlLnNjb3BlPXQuc2NvcGU7dmFyIHI9W10sbj1MdC5pbnRlcm5hbC5nZXRXaWR0aCh0KTw9THQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpP0x0LmludGVybmFsLmdldFdpZHRoKHQpLzQ6THQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpLzQ7bj1OdW1iZXIoKC45Km4pLnRvRml4ZWQoNSkpO3ZhciBpPU51bWJlcigoMipuKS50b0ZpeGVkKDUpKSxhPU51bWJlcigoaSpMdC5pbnRlcm5hbC5CZXppZXJfQykudG9GaXhlZCg1KSksbz1OdW1iZXIoKG4qTHQuaW50ZXJuYWwuQmV6aWVyX0MpLnRvRml4ZWQoNSkpO3JldHVybiByLnB1c2goIjAuNzQ5MDIzIGciKSxyLnB1c2goInEiKSxyLnB1c2goIjEgMCAwIDEgIitVKEx0LmludGVybmFsLmdldFdpZHRoKHQpLzIpKyIgIitVKEx0LmludGVybmFsLmdldEhlaWdodCh0KS8yKSsiIGNtIiksci5wdXNoKGkrIiAwIG0iKSxyLnB1c2goaSsiICIrYSsiICIrYSsiICIraSsiIDAgIitpKyIgYyIpLHIucHVzaCgiLSIrYSsiICIraSsiIC0iK2krIiAiK2ErIiAtIitpKyIgMCBjIiksci5wdXNoKCItIitpKyIgLSIrYSsiIC0iK2ErIiAtIitpKyIgMCAtIitpKyIgYyIpLHIucHVzaChhKyIgLSIraSsiICIraSsiIC0iK2ErIiAiK2krIiAwIGMiKSxyLnB1c2goImYiKSxyLnB1c2goIlEiKSxyLnB1c2goIjAgZyIpLHIucHVzaCgicSIpLHIucHVzaCgiMSAwIDAgMSAiK1UoTHQuaW50ZXJuYWwuZ2V0V2lkdGgodCkvMikrIiAiK1UoTHQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpLzIpKyIgY20iKSxyLnB1c2gobisiIDAgbSIpLHIucHVzaChuKyIgIitvKyIgIitvKyIgIituKyIgMCAiK24rIiBjIiksci5wdXNoKCItIitvKyIgIituKyIgLSIrbisiICIrbysiIC0iK24rIiAwIGMiKSxyLnB1c2goIi0iK24rIiAtIitvKyIgLSIrbysiIC0iK24rIiAwIC0iK24rIiBjIiksci5wdXNoKG8rIiAtIituKyIgIituKyIgLSIrbysiICIrbisiIDAgYyIpLHIucHVzaCgiZiIpLHIucHVzaCgiUSIpLGUuc3RyZWFtPXIuam9pbigiXG4iKSxlfSxPZmZQdXNoRG93bjpmdW5jdGlvbih0KXt2YXIgZT1XKHQpO2Uuc2NvcGU9dC5zY29wZTt2YXIgcj1bXSxuPUx0LmludGVybmFsLmdldFdpZHRoKHQpPD1MdC5pbnRlcm5hbC5nZXRIZWlnaHQodCk\/THQuaW50ZXJuYWwuZ2V0V2lkdGgodCkvNDpMdC5pbnRlcm5hbC5nZXRIZWlnaHQodCkvNDtuPU51bWJlcigoLjkqbikudG9GaXhlZCg1KSk7dmFyIGk9TnVtYmVyKCgyKm4pLnRvRml4ZWQoNSkpLGE9TnVtYmVyKChpKkx0LmludGVybmFsLkJlemllcl9DKS50b0ZpeGVkKDUpKTtyZXR1cm4gci5wdXNoKCIwLjc0OTAyMyBnIiksci5wdXNoKCJxIiksci5wdXNoKCIxIDAgMCAxICIrVShMdC5pbnRlcm5hbC5nZXRXaWR0aCh0KS8yKSsiICIrVShMdC5pbnRlcm5hbC5nZXRIZWlnaHQodCkvMikrIiBjbSIpLHIucHVzaChpKyIgMCBtIiksci5wdXNoKGkrIiAiK2ErIiAiK2ErIiAiK2krIiAwICIraSsiIGMiKSxyLnB1c2goIi0iK2ErIiAiK2krIiAtIitpKyIgIithKyIgLSIraSsiIDAgYyIpLHIucHVzaCgiLSIraSsiIC0iK2ErIiAtIithKyIgLSIraSsiIDAgLSIraSsiIGMiKSxyLnB1c2goYSsiIC0iK2krIiAiK2krIiAtIithKyIgIitpKyIgMCBjIiksci5wdXNoKCJmIiksci5wdXNoKCJRIiksZS5zdHJlYW09ci5qb2luKCJcbiIpLGV9fSxDcm9zczp7Y3JlYXRlQXBwZWFyYW5jZVN0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT17RDp7T2ZmOkx0LlJhZGlvQnV0dG9uLkNyb3NzLk9mZlB1c2hEb3dufSxOOnt9fTtyZXR1cm4gZS5OW3RdPUx0LlJhZGlvQnV0dG9uLkNyb3NzLlllc05vcm1hbCxlLkRbdF09THQuUmFkaW9CdXR0b24uQ3Jvc3MuWWVzUHVzaERvd24sZX0sZ2V0Q0E6ZnVuY3Rpb24oKXtyZXR1cm4iOCJ9LFllc05vcm1hbDpmdW5jdGlvbih0KXt2YXIgZT1XKHQpO2Uuc2NvcGU9dC5zY29wZTt2YXIgcj1bXSxuPUx0LmludGVybmFsLmNhbGN1bGF0ZUNyb3NzKHQpO3JldHVybiByLnB1c2goInEiKSxyLnB1c2goIjEgMSAiK1QoTHQuaW50ZXJuYWwuZ2V0V2lkdGgodCktMikrIiAiK1QoTHQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpLTIpKyIgcmUiKSxyLnB1c2goIlciKSxyLnB1c2goIm4iKSxyLnB1c2goVChuLngxLngpKyIgIitUKG4ueDEueSkrIiBtIiksci5wdXNoKFQobi54Mi54KSsiICIrVChuLngyLnkpKyIgbCIpLHIucHVzaChUKG4ueDQueCkrIiAiK1Qobi54NC55KSsiIG0iKSxyLnB1c2goVChuLngzLngpKyIgIitUKG4ueDMueSkrIiBsIiksci5wdXNoKCJzIiksci5wdXNoKCJRIiksZS5zdHJlYW09ci5qb2luKCJcbiIpLGV9LFllc1B1c2hEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPVcodCk7ZS5zY29wZT10LnNjb3BlO3ZhciByPUx0LmludGVybmFsLmNhbGN1bGF0ZUNyb3NzKHQpLG49W107cmV0dXJuIG4ucHVzaCgiMC43NDkwMjMgZyIpLG4ucHVzaCgiMCAwICIrVChMdC5pbnRlcm5hbC5nZXRXaWR0aCh0KSkrIiAiK1QoTHQuaW50ZXJuYWwuZ2V0SGVpZ2h0KHQpKSsiIHJlIiksbi5wdXNoKCJmIiksbi5wdXNoKCJxIiksbi5wdXNoKCIxIDEgIitUKEx0LmludGVybmFsLmdldFdpZHRoKHQpLTIpKyIgIitUKEx0LmludGVybmFsLmdldEhlaWdodCh0KS0yKSsiIHJlIiksbi5wdXNoKCJXIiksbi5wdXNoKCJuIiksbi5wdXNoKFQoci54MS54KSsiICIrVChyLngxLnkpKyIgbSIpLG4ucHVzaChUKHIueDIueCkrIiAiK1Qoci54Mi55KSsiIGwiKSxuLnB1c2goVChyLng0LngpKyIgIitUKHIueDQueSkrIiBtIiksbi5wdXNoKFQoci54My54KSsiICIrVChyLngzLnkpKyIgbCIpLG4ucHVzaCgicyIpLG4ucHVzaCgiUSIpLGUuc3RyZWFtPW4uam9pbigiXG4iKSxlfSxPZmZQdXNoRG93bjpmdW5jdGlvbih0KXt2YXIgZT1XKHQpO2Uuc2NvcGU9dC5zY29wZTt2YXIgcj1bXTtyZXR1cm4gci5wdXNoKCIwLjc0OTAyMyBnIiksci5wdXNoKCIwIDAgIitUKEx0LmludGVybmFsLmdldFdpZHRoKHQpKSsiICIrVChMdC5pbnRlcm5hbC5nZXRIZWlnaHQodCkpKyIgcmUiKSxyLnB1c2goImYiKSxlLnN0cmVhbT1yLmpvaW4oIlxuIiksZX19fSxjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZVN0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT10LnNjb3BlLmludGVybmFsLmdldEZvbnQodC5mb250TmFtZSx0LmZvbnRTdHlsZSkuaWQscj10LnNjb3BlLl9fcHJpdmF0ZV9fLmVuY29kZUNvbG9yU3RyaW5nKHQuY29sb3IpO3JldHVybiIvIitlKyIgIit0LmZvbnRTaXplKyIgVGYgIityfX07THQuaW50ZXJuYWw9e0Jlemllcl9DOi41NTE5MTUwMjQ0OTQsY2FsY3VsYXRlQ3Jvc3M6ZnVuY3Rpb24odCl7dmFyIGU9THQuaW50ZXJuYWwuZ2V0V2lkdGgodCkscj1MdC5pbnRlcm5hbC5nZXRIZWlnaHQodCksbj1NYXRoLm1pbihlLHIpO3JldHVybnt4MTp7eDooZS1uKS8yLHk6KHItbikvMitufSx4Mjp7eDooZS1uKS8yK24seTooci1uKS8yfSx4Mzp7eDooZS1uKS8yLHk6KHItbikvMn0seDQ6e3g6KGUtbikvMituLHk6KHItbikvMitufX19fSxMdC5pbnRlcm5hbC5nZXRXaWR0aD1mdW5jdGlvbih0KXt2YXIgcj0wO3JldHVybiJvYmplY3QiPT09ZSh0KSYmKHI9SCh0LlJlY3RbMl0pKSxyfSxMdC5pbnRlcm5hbC5nZXRIZWlnaHQ9ZnVuY3Rpb24odCl7dmFyIHI9MDtyZXR1cm4ib2JqZWN0Ij09PWUodCkmJihyPUgodC5SZWN0WzNdKSkscn07dmFyIEF0PUUuYWRkRmllbGQ9ZnVuY3Rpb24odCl7aWYoaXQodGhpcyx0KSwhKHQgaW5zdGFuY2VvZiBsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBqc1BERi5hZGRGaWVsZC4iKTt2YXIgZTtyZXR1cm4oZT10KS5zY29wZS5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5wcmludGVkT3V0JiYoZS5zY29wZS5pbnRlcm5hbC5hY3JvZm9ybVBsdWdpbi5wcmludGVkT3V0PSExLGUuc2NvcGUuaW50ZXJuYWwuYWNyb2Zvcm1QbHVnaW4uYWNyb0Zvcm1EaWN0aW9uYXJ5Um9vdD1udWxsKSxlLnNjb3BlLmludGVybmFsLmFjcm9mb3JtUGx1Z2luLmFjcm9Gb3JtRGljdGlvbmFyeVJvb3QuRmllbGRzLnB1c2goZSksdC5wYWdlPXQuc2NvcGUuaW50ZXJuYWwuZ2V0Q3VycmVudFBhZ2VJbmZvKCkucGFnZU51bWJlcix0aGlzfTtFLkFjcm9Gb3JtQ2hvaWNlRmllbGQ9aHQsRS5BY3JvRm9ybUxpc3RCb3g9ZnQsRS5BY3JvRm9ybUNvbWJvQm94PWR0LEUuQWNyb0Zvcm1FZGl0Qm94PXB0LEUuQWNyb0Zvcm1CdXR0b249Z3QsRS5BY3JvRm9ybVB1c2hCdXR0b249bXQsRS5BY3JvRm9ybVJhZGlvQnV0dG9uPXZ0LEUuQWNyb0Zvcm1DaGVja0JveD15dCxFLkFjcm9Gb3JtVGV4dEZpZWxkPXd0LEUuQWNyb0Zvcm1QYXNzd29yZEZpZWxkPU50LEUuQWNyb0Zvcm1BcHBlYXJhbmNlPUx0LEUuQWNyb0Zvcm09e0Nob2ljZUZpZWxkOmh0LExpc3RCb3g6ZnQsQ29tYm9Cb3g6ZHQsRWRpdEJveDpwdCxCdXR0b246Z3QsUHVzaEJ1dHRvbjptdCxSYWRpb0J1dHRvbjp2dCxDaGVja0JveDp5dCxUZXh0RmllbGQ6d3QsUGFzc3dvcmRGaWVsZDpOdCxBcHBlYXJhbmNlOkx0fSxNLkFjcm9Gb3JtPXtDaG9pY2VGaWVsZDpodCxMaXN0Qm94OmZ0LENvbWJvQm94OmR0LEVkaXRCb3g6cHQsQnV0dG9uOmd0LFB1c2hCdXR0b246bXQsUmFkaW9CdXR0b246dnQsQ2hlY2tCb3g6eXQsVGV4dEZpZWxkOnd0LFBhc3N3b3JkRmllbGQ6TnQsQXBwZWFyYW5jZTpMdH07dmFyIHh0PU0uQWNyb0Zvcm07ZnVuY3Rpb24gU3QodCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cix0fSkse30pfSFmdW5jdGlvbih0KXt0Ll9fYWRkaW1hZ2VfXz17fTt2YXIgcj0iVU5LTk9XTiIsbj17UE5HOltbMTM3LDgwLDc4LDcxXV0sVElGRjpbWzc3LDc3LDAsNDJdLFs3Myw3Myw0MiwwXV0sSlBFRzpbWzI1NSwyMTYsMjU1LDIyNCx2b2lkIDAsdm9pZCAwLDc0LDcwLDczLDcwLDBdLFsyNTUsMjE2LDI1NSwyMjUsdm9pZCAwLHZvaWQgMCw2OSwxMjAsMTA1LDEwMiwwLDBdLFsyNTUsMjE2LDI1NSwyMTldLFsyNTUsMjE2LDI1NSwyMzhdXSxKUEVHMjAwMDpbWzAsMCwwLDEyLDEwNiw4MCwzMiwzMl1dLEdJRjg3YTpbWzcxLDczLDcwLDU2LDU1LDk3XV0sR0lGODlhOltbNzEsNzMsNzAsNTYsNTcsOTddXSxXRUJQOltbODIsNzMsNzAsNzAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLDg3LDY5LDY2LDgwXV0sQk1QOltbNjYsNzddLFs2Niw2NV0sWzY3LDczXSxbNjcsODBdLFs3Myw2N10sWzgwLDg0XV19LGk9dC5fX2FkZGltYWdlX18uZ2V0SW1hZ2VGaWxlVHlwZUJ5SW1hZ2VEYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIGksYSxvLHMsYyx1PXI7aWYoIlJHQkEiPT09KGU9ZXx8cil8fHZvaWQgMCE9PXQuZGF0YSYmdC5kYXRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkmJiJoZWlnaHQiaW4gdCYmIndpZHRoImluIHQpcmV0dXJuIlJHQkEiO2lmKHgodCkpZm9yKGMgaW4gbilmb3Iobz1uW2NdLGk9MDtpPG8ubGVuZ3RoO2krPTEpe2ZvcihzPSEwLGE9MDthPG9baV0ubGVuZ3RoO2ErPTEpaWYodm9pZCAwIT09b1tpXVthXSYmb1tpXVthXSE9PXRbYV0pe3M9ITE7YnJlYWt9aWYoITA9PT1zKXt1PWM7YnJlYWt9fWVsc2UgZm9yKGMgaW4gbilmb3Iobz1uW2NdLGk9MDtpPG8ubGVuZ3RoO2krPTEpe2ZvcihzPSEwLGE9MDthPG9baV0ubGVuZ3RoO2ErPTEpaWYodm9pZCAwIT09b1tpXVthXSYmb1tpXVthXSE9PXQuY2hhckNvZGVBdChhKSl7cz0hMTticmVha31pZighMD09PXMpe3U9YzticmVha319cmV0dXJuIHU9PT1yJiZlIT09ciYmKHU9ZSksdX0sYT1mdW5jdGlvbiB0KGUpe2Zvcih2YXIgcj10aGlzLmludGVybmFsLndyaXRlLG49dGhpcy5pbnRlcm5hbC5wdXRTdHJlYW0saT0oMCx0aGlzLmludGVybmFsLmdldEZpbHRlcnMpKCk7LTEhPT1pLmluZGV4T2YoIkZsYXRlRW5jb2RlIik7KWkuc3BsaWNlKGkuaW5kZXhPZigiRmxhdGVFbmNvZGUiKSwxKTtlLm9iamVjdElkPXRoaXMuaW50ZXJuYWwubmV3T2JqZWN0KCk7dmFyIGE9W107aWYoYS5wdXNoKHtrZXk6IlR5cGUiLHZhbHVlOiIvWE9iamVjdCJ9KSxhLnB1c2goe2tleToiU3VidHlwZSIsdmFsdWU6Ii9JbWFnZSJ9KSxhLnB1c2goe2tleToiV2lkdGgiLHZhbHVlOmUud2lkdGh9KSxhLnB1c2goe2tleToiSGVpZ2h0Iix2YWx1ZTplLmhlaWdodH0pLGUuY29sb3JTcGFjZT09PWIuSU5ERVhFRD9hLnB1c2goe2tleToiQ29sb3JTcGFjZSIsdmFsdWU6IlsvSW5kZXhlZCAvRGV2aWNlUkdCICIrKGUucGFsZXR0ZS5sZW5ndGgvMy0xKSsiICIrKCJzTWFzayJpbiBlJiZ2b2lkIDAhPT1lLnNNYXNrP2Uub2JqZWN0SWQrMjplLm9iamVjdElkKzEpKyIgMCBSXSJ9KTooYS5wdXNoKHtrZXk6IkNvbG9yU3BhY2UiLHZhbHVlOiIvIitlLmNvbG9yU3BhY2V9KSxlLmNvbG9yU3BhY2U9PT1iLkRFVklDRV9DTVlLJiZhLnB1c2goe2tleToiRGVjb2RlIix2YWx1ZToiWzEgMCAxIDAgMSAwIDEgMF0ifSkpLGEucHVzaCh7a2V5OiJCaXRzUGVyQ29tcG9uZW50Iix2YWx1ZTplLmJpdHNQZXJDb21wb25lbnR9KSwiZGVjb2RlUGFyYW1ldGVycyJpbiBlJiZ2b2lkIDAhPT1lLmRlY29kZVBhcmFtZXRlcnMmJmEucHVzaCh7a2V5OiJEZWNvZGVQYXJtcyIsdmFsdWU6Ijw8IitlLmRlY29kZVBhcmFtZXRlcnMrIj4+In0pLCJ0cmFuc3BhcmVuY3kiaW4gZSYmQXJyYXkuaXNBcnJheShlLnRyYW5zcGFyZW5jeSkpe2Zvcih2YXIgbz0iIixzPTAsYz1lLnRyYW5zcGFyZW5jeS5sZW5ndGg7czxjO3MrKylvKz1lLnRyYW5zcGFyZW5jeVtzXSsiICIrZS50cmFuc3BhcmVuY3lbc10rIiAiO2EucHVzaCh7a2V5OiJNYXNrIix2YWx1ZToiWyIrbysiXSJ9KX12b2lkIDAhPT1lLnNNYXNrJiZhLnB1c2goe2tleToiU01hc2siLHZhbHVlOmUub2JqZWN0SWQrMSsiIDAgUiJ9KTt2YXIgdT12b2lkIDAhPT1lLmZpbHRlcj9bIi8iK2UuZmlsdGVyXTp2b2lkIDA7aWYobih7ZGF0YTplLmRhdGEsYWRkaXRpb25hbEtleVZhbHVlczphLGFscmVhZHlBcHBsaWVkRmlsdGVyczp1LG9iamVjdElkOmUub2JqZWN0SWR9KSxyKCJlbmRvYmoiKSwic01hc2siaW4gZSYmdm9pZCAwIT09ZS5zTWFzayl7dmFyIGw9Ii9QcmVkaWN0b3IgIitlLnByZWRpY3RvcisiIC9Db2xvcnMgMSAvQml0c1BlckNvbXBvbmVudCAiK2UuYml0c1BlckNvbXBvbmVudCsiIC9Db2x1bW5zICIrZS53aWR0aCxoPXt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodCxjb2xvclNwYWNlOiJEZXZpY2VHcmF5IixiaXRzUGVyQ29tcG9uZW50OmUuYml0c1BlckNvbXBvbmVudCxkZWNvZGVQYXJhbWV0ZXJzOmwsZGF0YTplLnNNYXNrfTsiZmlsdGVyImluIGUmJihoLmZpbHRlcj1lLmZpbHRlciksdC5jYWxsKHRoaXMsaCl9aWYoZS5jb2xvclNwYWNlPT09Yi5JTkRFWEVEKXt2YXIgZj10aGlzLmludGVybmFsLm5ld09iamVjdCgpO24oe2RhdGE6XyhuZXcgVWludDhBcnJheShlLnBhbGV0dGUpKSxvYmplY3RJZDpmfSkscigiZW5kb2JqIil9fSxvPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pbnRlcm5hbC5jb2xsZWN0aW9ucy5hZGRJbWFnZV9pbWFnZXM7Zm9yKHZhciBlIGluIHQpYS5jYWxsKHRoaXMsdFtlXSl9LHM9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuaW50ZXJuYWwuY29sbGVjdGlvbnMuYWRkSW1hZ2VfaW1hZ2VzLHI9dGhpcy5pbnRlcm5hbC53cml0ZTtmb3IodmFyIG4gaW4gZSlyKCIvSSIrKHQ9ZVtuXSkuaW5kZXgsdC5vYmplY3RJZCwiMCIsIlIiKX0sdT1mdW5jdGlvbigpe3RoaXMuaW50ZXJuYWwuY29sbGVjdGlvbnMuYWRkSW1hZ2VfaW1hZ2VzfHwodGhpcy5pbnRlcm5hbC5jb2xsZWN0aW9ucy5hZGRJbWFnZV9pbWFnZXM9e30sdGhpcy5pbnRlcm5hbC5ldmVudHMuc3Vic2NyaWJlKCJwdXRSZXNvdXJjZXMiLG8pLHRoaXMuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicHV0WG9iamVjdERpY3QiLHMpKX0sbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaW50ZXJuYWwuY29sbGVjdGlvbnMuYWRkSW1hZ2VfaW1hZ2VzO3JldHVybiB1LmNhbGwodGhpcyksdH0saD1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmludGVybmFsLmNvbGxlY3Rpb25zLmFkZEltYWdlX2ltYWdlcykubGVuZ3RofSxmPWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0WyJwcm9jZXNzIitlLnRvVXBwZXJDYXNlKCldfSxkPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT09ZSh0KSYmMT09PXQubm9kZVR5cGV9LHA9ZnVuY3Rpb24oZSxyKXtpZigiSU1HIj09PWUubm9kZU5hbWUmJmUuaGFzQXR0cmlidXRlKCJzcmMiKSl7dmFyIG49IiIrZS5nZXRBdHRyaWJ1dGUoInNyYyIpO2lmKDA9PT1uLmluZGV4T2YoImRhdGE6aW1hZ2UvIikpcmV0dXJuIGModW5lc2NhcGUobikuc3BsaXQoImJhc2U2NCwiKS5wb3AoKSk7dmFyIGk9dC5sb2FkRmlsZShuLCEwKTtpZih2b2lkIDAhPT1pKXJldHVybiBpfWlmKCJDQU5WQVMiPT09ZS5ub2RlTmFtZSl7aWYoMD09PWUud2lkdGh8fDA9PT1lLmhlaWdodCl0aHJvdyBuZXcgRXJyb3IoIkdpdmVuIGNhbnZhcyBtdXN0IGhhdmUgZGF0YS4gQ2FudmFzIHdpZHRoOiAiK2Uud2lkdGgrIiwgaGVpZ2h0OiAiK2UuaGVpZ2h0KTt2YXIgYTtzd2l0Y2gocil7Y2FzZSJQTkciOmE9ImltYWdlL3BuZyI7YnJlYWs7Y2FzZSJXRUJQIjphPSJpbWFnZS93ZWJwIjticmVhaztjYXNlIkpQRUciOmNhc2UiSlBHIjpkZWZhdWx0OmE9ImltYWdlL2pwZWcifXJldHVybiBjKGUudG9EYXRhVVJMKGEsMSkuc3BsaXQoImJhc2U2NCwiKS5wb3AoKSl9fSxnPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW50ZXJuYWwuY29sbGVjdGlvbnMuYWRkSW1hZ2VfaW1hZ2VzO2lmKGUpZm9yKHZhciByIGluIGUpaWYodD09PWVbcl0uYWxpYXMpcmV0dXJuIGVbcl19LG09ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0fHxlfHwodD0tOTYsZT0tOTYpLHQ8MCYmKHQ9LTEqci53aWR0aCo3Mi90L3RoaXMuaW50ZXJuYWwuc2NhbGVGYWN0b3IpLGU8MCYmKGU9LTEqci5oZWlnaHQqNzIvZS90aGlzLmludGVybmFsLnNjYWxlRmFjdG9yKSwwPT09dCYmKHQ9ZSpyLndpZHRoL3IuaGVpZ2h0KSwwPT09ZSYmKGU9dCpyLmhlaWdodC9yLndpZHRoKSxbdCxlXX0sdj1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89bS5jYWxsKHRoaXMscixuLGkpLHM9dGhpcy5pbnRlcm5hbC5nZXRDb29yZGluYXRlU3RyaW5nLGM9dGhpcy5pbnRlcm5hbC5nZXRWZXJ0aWNhbENvb3JkaW5hdGVTdHJpbmcsdT1sLmNhbGwodGhpcyk7aWYocj1vWzBdLG49b1sxXSx1W2kuaW5kZXhdPWksYSl7YSo9TWF0aC5QSS8xODA7dmFyIGg9TWF0aC5jb3MoYSksZj1NYXRoLnNpbihhKSxkPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoNCl9LHA9W2QoaCksZChmKSxkKC0xKmYpLGQoaCksMCwwLCJjbSJdfXRoaXMuaW50ZXJuYWwud3JpdGUoInEiKSxhPyh0aGlzLmludGVybmFsLndyaXRlKFsxLCIwIiwiMCIsMSxzKHQpLGMoZStuKSwiY20iXS5qb2luKCIgIikpLHRoaXMuaW50ZXJuYWwud3JpdGUocC5qb2luKCIgIikpLHRoaXMuaW50ZXJuYWwud3JpdGUoW3MociksIjAiLCIwIixzKG4pLCIwIiwiMCIsImNtIl0uam9pbigiICIpKSk6dGhpcy5pbnRlcm5hbC53cml0ZShbcyhyKSwiMCIsIjAiLHMobikscyh0KSxjKGUrbiksImNtIl0uam9pbigiICIpKSx0aGlzLmlzQWR2YW5jZWRBUEkoKSYmdGhpcy5pbnRlcm5hbC53cml0ZShbMSwwLDAsLTEsMCwwLCJjbSJdLmpvaW4oIiAiKSksdGhpcy5pbnRlcm5hbC53cml0ZSgiL0kiK2kuaW5kZXgrIiBEbyIpLHRoaXMuaW50ZXJuYWwud3JpdGUoIlEiKX0sYj10LmNvbG9yX3NwYWNlcz17REVWSUNFX1JHQjoiRGV2aWNlUkdCIixERVZJQ0VfR1JBWToiRGV2aWNlR3JheSIsREVWSUNFX0NNWUs6IkRldmljZUNNWUsiLENBTF9HUkVZOiJDYWxHcmF5IixDQUxfUkdCOiJDYWxSR0IiLExBQjoiTGFiIixJQ0NfQkFTRUQ6IklDQ0Jhc2VkIixJTkRFWEVEOiJJbmRleGVkIixQQVRURVJOOiJQYXR0ZXJuIixTRVBBUkFUSU9OOiJTZXBhcmF0aW9uIixERVZJQ0VfTjoiRGV2aWNlTiJ9O3QuZGVjb2RlPXtEQ1RfREVDT0RFOiJEQ1REZWNvZGUiLEZMQVRFX0RFQ09ERToiRmxhdGVEZWNvZGUiLExaV19ERUNPREU6IkxaV0RlY29kZSIsSlBYX0RFQ09ERToiSlBYRGVjb2RlIixKQklHMl9ERUNPREU6IkpCSUcyRGVjb2RlIixBU0NJSTg1X0RFQ09ERToiQVNDSUk4NURlY29kZSIsQVNDSUlfSEVYX0RFQ09ERToiQVNDSUlIZXhEZWNvZGUiLFJVTl9MRU5HVEhfREVDT0RFOiJSdW5MZW5ndGhEZWNvZGUiLENDSVRUX0ZBWF9ERUNPREU6IkNDSVRURmF4RGVjb2RlIn07dmFyIHk9dC5pbWFnZV9jb21wcmVzc2lvbj17Tk9ORToiTk9ORSIsRkFTVDoiRkFTVCIsTUVESVVNOiJNRURJVU0iLFNMT1c6IlNMT1cifSx3PXQuX19hZGRpbWFnZV9fLnNIYXNoQ29kZT1mdW5jdGlvbih0KXt2YXIgZSxyLG49MDtpZigic3RyaW5nIj09dHlwZW9mIHQpZm9yKHI9dC5sZW5ndGgsZT0wO2U8cjtlKyspbj0objw8NSktbit0LmNoYXJDb2RlQXQoZSksbnw9MDtlbHNlIGlmKHgodCkpZm9yKHI9dC5ieXRlTGVuZ3RoLzIsZT0wO2U8cjtlKyspbj0objw8NSktbit0W2VdLG58PTA7cmV0dXJuIG59LE49dC5fX2FkZGltYWdlX18udmFsaWRhdGVTdHJpbmdBc0Jhc2U2ND1mdW5jdGlvbih0KXsodD10fHwiIikudG9TdHJpbmcoKS50cmltKCk7dmFyIGU9ITA7cmV0dXJuIDA9PT10Lmxlbmd0aCYmKGU9ITEpLHQubGVuZ3RoJTQhPTAmJihlPSExKSwhMT09PS9eW0EtWmEtejAtOSsvXSskLy50ZXN0KHQuc3Vic3RyKDAsdC5sZW5ndGgtMikpJiYoZT0hMSksITE9PT0vXltBLVphLXowLTkvXVtBLVphLXowLTkrL118W0EtWmEtejAtOSsvXT18PT0kLy50ZXN0KHQuc3Vic3RyKC0yKSkmJihlPSExKSxlfSxMPXQuX19hZGRpbWFnZV9fLmV4dHJhY3RJbWFnZUZyb21EYXRhVXJsPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fCIiKS5zcGxpdCgiYmFzZTY0LCIpLHI9bnVsbDtpZigyPT09ZS5sZW5ndGgpe3ZhciBuPS9eZGF0YTooXHcqXC9cdyopOyooY2hhcnNldD0oPyFjaGFyc2V0PSlbXHc9LV0qKSo7KiQvLmV4ZWMoZVswXSk7QXJyYXkuaXNBcnJheShuKSYmKHI9e21pbWVUeXBlOm5bMV0sY2hhcnNldDpuWzJdLGRhdGE6ZVsxXX0pfXJldHVybiByfSxBPXQuX19hZGRpbWFnZV9fLnN1cHBvcnRzQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXl9O3QuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuIEEoKSYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfTt2YXIgeD10Ll9fYWRkaW1hZ2VfXy5pc0FycmF5QnVmZmVyVmlldz1mdW5jdGlvbih0KXtyZXR1cm4gQSgpJiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQzMkFycmF5JiYodCBpbnN0YW5jZW9mIEludDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSl9LFM9dC5fX2FkZGltYWdlX18uYmluYXJ5U3RyaW5nVG9VaW50OEFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09dC5jaGFyQ29kZUF0KG4pO3JldHVybiByfSxfPXQuX19hZGRpbWFnZV9fLmFycmF5QnVmZmVyVG9CaW5hcnlTdHJpbmc9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLHI9eCh0KT90Om5ldyBVaW50OEFycmF5KHQpLG49MDtuPHIubGVuZ3RoO24rPTgxOTIpZSs9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHIuc3ViYXJyYXkobixuKzgxOTIpKTtyZXR1cm4gZX07dC5hZGRJbWFnZT1mdW5jdGlvbigpe3ZhciB0LG4saSxhLG8scyxjLGwsaDtpZigibnVtYmVyIj09dHlwZW9mIGFyZ3VtZW50c1sxXT8obj1yLGk9YXJndW1lbnRzWzFdLGE9YXJndW1lbnRzWzJdLG89YXJndW1lbnRzWzNdLHM9YXJndW1lbnRzWzRdLGM9YXJndW1lbnRzWzVdLGw9YXJndW1lbnRzWzZdLGg9YXJndW1lbnRzWzddKToobj1hcmd1bWVudHNbMV0saT1hcmd1bWVudHNbMl0sYT1hcmd1bWVudHNbM10sbz1hcmd1bWVudHNbNF0scz1hcmd1bWVudHNbNV0sYz1hcmd1bWVudHNbNl0sbD1hcmd1bWVudHNbN10saD1hcmd1bWVudHNbOF0pLCJvYmplY3QiPT09ZSh0PWFyZ3VtZW50c1swXSkmJiFkKHQpJiYiaW1hZ2VEYXRhImluIHQpe3ZhciBmPXQ7dD1mLmltYWdlRGF0YSxuPWYuZm9ybWF0fHxufHxyLGk9Zi54fHxpfHwwLGE9Zi55fHxhfHwwLG89Zi53fHxmLndpZHRofHxvLHM9Zi5ofHxmLmhlaWdodHx8cyxjPWYuYWxpYXN8fGMsbD1mLmNvbXByZXNzaW9ufHxsLGg9Zi5yb3RhdGlvbnx8Zi5hbmdsZXx8aH12YXIgcD10aGlzLmludGVybmFsLmdldEZpbHRlcnMoKTtpZih2b2lkIDA9PT1sJiYtMSE9PXAuaW5kZXhPZigiRmxhdGVFbmNvZGUiKSYmKGw9IlNMT1ciKSxpc05hTihpKXx8aXNOYU4oYSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvb3JkaW5hdGVzIHBhc3NlZCB0byBqc1BERi5hZGRJbWFnZSIpO3UuY2FsbCh0aGlzKTt2YXIgZz1QLmNhbGwodGhpcyx0LG4sYyxsKTtyZXR1cm4gdi5jYWxsKHRoaXMsaSxhLG8scyxnLGgpLHRoaXN9O3ZhciBQPWZ1bmN0aW9uKGUsbixhLG8pe3ZhciBzLGMsdTtpZigic3RyaW5nIj09dHlwZW9mIGUmJmkoZSk9PT1yKXtlPXVuZXNjYXBlKGUpO3ZhciBsPWsoZSwhMSk7KCIiIT09bHx8dm9pZCAwIT09KGw9dC5sb2FkRmlsZShlLCEwKSkpJiYoZT1sKX1pZihkKGUpJiYoZT1wKGUsbikpLG49aShlLG4pLCFmKG4pKXRocm93IG5ldyBFcnJvcigiYWRkSW1hZ2UgZG9lcyBub3Qgc3VwcG9ydCBmaWxlcyBvZiB0eXBlICciK24rIicsIHBsZWFzZSBlbnN1cmUgdGhhdCBhIHBsdWdpbiBmb3IgJyIrbisiJyBzdXBwb3J0IGlzIGFkZGVkLiIpO2lmKChudWxsPT0odT1hKXx8MD09PXUubGVuZ3RoKSYmKGE9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHx4KHQpP3codCk6eCh0LmRhdGEpP3codC5kYXRhKTpudWxsfShlKSksKHM9Zy5jYWxsKHRoaXMsYSkpfHwoQSgpJiYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJSR0JBIj09PW58fChjPWUsZT1TKGUpKSkscz10aGlzWyJwcm9jZXNzIituLnRvVXBwZXJDYXNlKCldKGUsaC5jYWxsKHRoaXMpLGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS50b1VwcGVyQ2FzZSgpKSxlIGluIHQuaW1hZ2VfY29tcHJlc3Npb24\/ZTp5Lk5PTkV9KG8pLGMpKSwhcyl0aHJvdyBuZXcgRXJyb3IoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHByb2Nlc3NpbmcgdGhlIGltYWdlLiIpO3JldHVybiBzfSxrPXQuX19hZGRpbWFnZV9fLmNvbnZlcnRCYXNlNjRUb0JpbmFyeVN0cmluZz1mdW5jdGlvbih0LGUpe3ZhciByO2U9ImJvb2xlYW4iIT10eXBlb2YgZXx8ZTt2YXIgbixpPSIiO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7bj1udWxsIT09KHI9TCh0KSk\/ci5kYXRhOnQ7dHJ5e2k9YyhuKX1jYXRjaCh0KXtpZihlKXRocm93IE4obik\/bmV3IEVycm9yKCJhdG9iLUVycm9yIGluIGpzUERGLmNvbnZlcnRCYXNlNjRUb0JpbmFyeVN0cmluZyAiK3QubWVzc2FnZSk6bmV3IEVycm9yKCJTdXBwbGllZCBEYXRhIGlzIG5vdCBhIHZhbGlkIGJhc2U2NC1TdHJpbmcganNQREYuY29udmVydEJhc2U2NFRvQmluYXJ5U3RyaW5nICIpfX1yZXR1cm4gaX07dC5nZXRJbWFnZVByb3BlcnRpZXM9ZnVuY3Rpb24oZSl7dmFyIG4sYSxvPSIiO2lmKGQoZSkmJihlPXAoZSkpLCJzdHJpbmciPT10eXBlb2YgZSYmaShlKT09PXImJigiIj09PShvPWsoZSwhMSkpJiYobz10LmxvYWRGaWxlKGUpfHwiIiksZT1vKSxhPWkoZSksIWYoYSkpdGhyb3cgbmV3IEVycm9yKCJhZGRJbWFnZSBkb2VzIG5vdCBzdXBwb3J0IGZpbGVzIG9mIHR5cGUgJyIrYSsiJywgcGxlYXNlIGVuc3VyZSB0aGF0IGEgcGx1Z2luIGZvciAnIithKyInIHN1cHBvcnQgaXMgYWRkZWQuIik7aWYoIUEoKXx8ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPVMoZSkpLCEobj10aGlzWyJwcm9jZXNzIithLnRvVXBwZXJDYXNlKCldKGUpKSl0aHJvdyBuZXcgRXJyb3IoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHByb2Nlc3NpbmcgdGhlIGltYWdlIik7cmV0dXJuIG4uZmlsZVR5cGU9YSxufX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAoYykgMjAxNCBTdGV2ZW4gU3B1bmdpbiAoVHdlbHZlVG9uZSBMTEMpICBzdGV2ZW5AdHdlbHZldG9uZS50dgogICAqCiAgICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogICAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogICAqLwpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtpZih2b2lkIDAhPT10JiYiIiE9dClyZXR1cm4hMH07TS5BUEkuZXZlbnRzLnB1c2goWyJhZGRQYWdlIixmdW5jdGlvbih0KXt0aGlzLmludGVybmFsLmdldFBhZ2VJbmZvKHQucGFnZU51bWJlcikucGFnZUNvbnRleHQuYW5ub3RhdGlvbnM9W119XSksdC5ldmVudHMucHVzaChbInB1dFBhZ2UiLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcixuLGksYT10aGlzLmludGVybmFsLmdldENvb3JkaW5hdGVTdHJpbmcsbz10aGlzLmludGVybmFsLmdldFZlcnRpY2FsQ29vcmRpbmF0ZVN0cmluZyxzPXRoaXMuaW50ZXJuYWwuZ2V0UGFnZUluZm9CeU9iaklkKHQub2JqSWQpLGM9dC5wYWdlQ29udGV4dC5hbm5vdGF0aW9ucyx1PSExLGw9MDtsPGMubGVuZ3RoJiYhdTtsKyspc3dpdGNoKChyPWNbbF0pLnR5cGUpe2Nhc2UibGluayI6KGUoci5vcHRpb25zLnVybCl8fGUoci5vcHRpb25zLnBhZ2VOdW1iZXIpKSYmKHU9ITApO2JyZWFrO2Nhc2UicmVmZXJlbmNlIjpjYXNlInRleHQiOmNhc2UiZnJlZXRleHQiOnU9ITB9aWYoMCE9dSl7dGhpcy5pbnRlcm5hbC53cml0ZSgiL0Fubm90cyBbIik7Zm9yKHZhciBoPTA7aDxjLmxlbmd0aDtoKyspe3I9Y1toXTt2YXIgZj10aGlzLmludGVybmFsLnBkZkVzY2FwZSxkPXRoaXMuaW50ZXJuYWwuZ2V0RW5jcnlwdG9yKHQub2JqSWQpO3N3aXRjaChyLnR5cGUpe2Nhc2UicmVmZXJlbmNlIjp0aGlzLmludGVybmFsLndyaXRlKCIgIityLm9iamVjdC5vYmpJZCsiIDAgUiAiKTticmVhaztjYXNlInRleHQiOnZhciBwPXRoaXMuaW50ZXJuYWwubmV3QWRkaXRpb25hbE9iamVjdCgpLGc9dGhpcy5pbnRlcm5hbC5uZXdBZGRpdGlvbmFsT2JqZWN0KCksbT10aGlzLmludGVybmFsLmdldEVuY3J5cHRvcihwLm9iaklkKSx2PXIudGl0bGV8fCJOb3RlIjtpPSI8PC9UeXBlIC9Bbm5vdCAvU3VidHlwZSAvVGV4dCAiKyhuPSIvUmVjdCBbIithKHIuYm91bmRzLngpKyIgIitvKHIuYm91bmRzLnkrci5ib3VuZHMuaCkrIiAiK2Eoci5ib3VuZHMueCtyLmJvdW5kcy53KSsiICIrbyhyLmJvdW5kcy55KSsiXSAiKSsiL0NvbnRlbnRzICgiK2YobShyLmNvbnRlbnRzKSkrIikiLGkrPSIgL1BvcHVwICIrZy5vYmpJZCsiIDAgUiIsaSs9IiAvUCAiK3Mub2JqSWQrIiAwIFIiLGkrPSIgL1QgKCIrZihtKHYpKSsiKSA+PiIscC5jb250ZW50PWk7dmFyIGI9cC5vYmpJZCsiIDAgUiI7aT0iPDwvVHlwZSAvQW5ub3QgL1N1YnR5cGUgL1BvcHVwICIrKG49Ii9SZWN0IFsiK2Eoci5ib3VuZHMueCszMCkrIiAiK28oci5ib3VuZHMueStyLmJvdW5kcy5oKSsiICIrYShyLmJvdW5kcy54K3IuYm91bmRzLncrMzApKyIgIitvKHIuYm91bmRzLnkpKyJdICIpKyIgL1BhcmVudCAiK2Isci5vcGVuJiYoaSs9IiAvT3BlbiB0cnVlIiksaSs9IiA+PiIsZy5jb250ZW50PWksdGhpcy5pbnRlcm5hbC53cml0ZShwLm9iaklkLCIwIFIiLGcub2JqSWQsIjAgUiIpO2JyZWFrO2Nhc2UiZnJlZXRleHQiOm49Ii9SZWN0IFsiK2Eoci5ib3VuZHMueCkrIiAiK28oci5ib3VuZHMueSkrIiAiK2Eoci5ib3VuZHMueCtyLmJvdW5kcy53KSsiICIrbyhyLmJvdW5kcy55K3IuYm91bmRzLmgpKyJdICI7dmFyIHk9ci5jb2xvcnx8IiMwMDAwMDAiO2k9Ijw8L1R5cGUgL0Fubm90IC9TdWJ0eXBlIC9GcmVlVGV4dCAiK24rIi9Db250ZW50cyAoIitmKGQoci5jb250ZW50cykpKyIpIixpKz0iIC9EUyhmb250OiBIZWx2ZXRpY2Esc2Fucy1zZXJpZiAxMi4wcHQ7IHRleHQtYWxpZ246bGVmdDsgY29sb3I6IyIreSsiKSIsaSs9IiAvQm9yZGVyIFswIDAgMF0iLGkrPSIgPj4iLHRoaXMuaW50ZXJuYWwud3JpdGUoaSk7YnJlYWs7Y2FzZSJsaW5rIjppZihyLm9wdGlvbnMubmFtZSl7dmFyIHc9dGhpcy5hbm5vdGF0aW9ucy5fbmFtZU1hcFtyLm9wdGlvbnMubmFtZV07ci5vcHRpb25zLnBhZ2VOdW1iZXI9dy5wYWdlLHIub3B0aW9ucy50b3A9dy55fWVsc2Ugci5vcHRpb25zLnRvcHx8KHIub3B0aW9ucy50b3A9MCk7aWYobj0iL1JlY3QgWyIrci5maW5hbEJvdW5kcy54KyIgIityLmZpbmFsQm91bmRzLnkrIiAiK3IuZmluYWxCb3VuZHMudysiICIrci5maW5hbEJvdW5kcy5oKyJdICIsaT0iIixyLm9wdGlvbnMudXJsKWk9Ijw8L1R5cGUgL0Fubm90IC9TdWJ0eXBlIC9MaW5rICIrbisiL0JvcmRlciBbMCAwIDBdIC9BIDw8L1MgL1VSSSAvVVJJICgiK2YoZChyLm9wdGlvbnMudXJsKSkrIikgPj4iO2Vsc2UgaWYoci5vcHRpb25zLnBhZ2VOdW1iZXIpe3N3aXRjaChpPSI8PC9UeXBlIC9Bbm5vdCAvU3VidHlwZSAvTGluayAiK24rIi9Cb3JkZXIgWzAgMCAwXSAvRGVzdCBbIit0aGlzLmludGVybmFsLmdldFBhZ2VJbmZvKHIub3B0aW9ucy5wYWdlTnVtYmVyKS5vYmpJZCsiIDAgUiIsci5vcHRpb25zLm1hZ0ZhY3Rvcj1yLm9wdGlvbnMubWFnRmFjdG9yfHwiWFlaIixyLm9wdGlvbnMubWFnRmFjdG9yKXtjYXNlIkZpdCI6aSs9IiAvRml0XSI7YnJlYWs7Y2FzZSJGaXRIIjppKz0iIC9GaXRIICIrci5vcHRpb25zLnRvcCsiXSI7YnJlYWs7Y2FzZSJGaXRWIjpyLm9wdGlvbnMubGVmdD1yLm9wdGlvbnMubGVmdHx8MCxpKz0iIC9GaXRWICIrci5vcHRpb25zLmxlZnQrIl0iO2JyZWFrO2Nhc2UiWFlaIjpkZWZhdWx0OnZhciBOPW8oci5vcHRpb25zLnRvcCk7ci5vcHRpb25zLmxlZnQ9ci5vcHRpb25zLmxlZnR8fDAsdm9pZCAwPT09ci5vcHRpb25zLnpvb20mJihyLm9wdGlvbnMuem9vbT0wKSxpKz0iIC9YWVogIityLm9wdGlvbnMubGVmdCsiICIrTisiICIrci5vcHRpb25zLnpvb20rIl0ifX0iIiE9aSYmKGkrPSIgPj4iLHRoaXMuaW50ZXJuYWwud3JpdGUoaSkpfX10aGlzLmludGVybmFsLndyaXRlKCJdIil9fV0pLHQuY3JlYXRlQW5ub3RhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmludGVybmFsLmdldEN1cnJlbnRQYWdlSW5mbygpO3N3aXRjaCh0LnR5cGUpe2Nhc2UibGluayI6dGhpcy5saW5rKHQuYm91bmRzLngsdC5ib3VuZHMueSx0LmJvdW5kcy53LHQuYm91bmRzLmgsdCk7YnJlYWs7Y2FzZSJ0ZXh0IjpjYXNlImZyZWV0ZXh0IjplLnBhZ2VDb250ZXh0LmFubm90YXRpb25zLnB1c2godCl9fSx0Lmxpbms9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT10aGlzLmludGVybmFsLmdldEN1cnJlbnRQYWdlSW5mbygpLG89dGhpcy5pbnRlcm5hbC5nZXRDb29yZGluYXRlU3RyaW5nLHM9dGhpcy5pbnRlcm5hbC5nZXRWZXJ0aWNhbENvb3JkaW5hdGVTdHJpbmc7YS5wYWdlQ29udGV4dC5hbm5vdGF0aW9ucy5wdXNoKHtmaW5hbEJvdW5kczp7eDpvKHQpLHk6cyhlKSx3Om8odCtyKSxoOnMoZStuKX0sb3B0aW9uczppLHR5cGU6ImxpbmsifSl9LHQudGV4dFdpdGhMaW5rPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGEsbz10aGlzLmdldFRleHRXaWR0aCh0KSxzPXRoaXMuaW50ZXJuYWwuZ2V0TGluZUhlaWdodCgpL3RoaXMuaW50ZXJuYWwuc2NhbGVGYWN0b3I7aWYodm9pZCAwIT09bi5tYXhXaWR0aCl7YT1uLm1heFdpZHRoO3ZhciBjPXRoaXMuc3BsaXRUZXh0VG9TaXplKHQsYSkubGVuZ3RoO2k9TWF0aC5jZWlsKHMqYyl9ZWxzZSBhPW8saT1zO3JldHVybiB0aGlzLnRleHQodCxlLHIsbikscis9LjIqcywiY2VudGVyIj09PW4uYWxpZ24mJihlLT1vLzIpLCJyaWdodCI9PT1uLmFsaWduJiYoZS09byksdGhpcy5saW5rKGUsci1zLGEsaSxuKSxvfSx0LmdldFRleHRXaWR0aD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmludGVybmFsLmdldEZvbnRTaXplKCk7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nVW5pdFdpZHRoKHQpKmUvdGhpcy5pbnRlcm5hbC5zY2FsZUZhY3Rvcn19KE0uQVBJKSwKLyoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQXJhcyBBYmJhc2kKICAgKgogICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KICAgKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UKICAgKi8KZnVuY3Rpb24odCl7dmFyIGU9ezE1Njk6WzY1MTUyXSwxNTcwOls2NTE1Myw2NTE1NF0sMTU3MTpbNjUxNTUsNjUxNTZdLDE1NzI6WzY1MTU3LDY1MTU4XSwxNTczOls2NTE1OSw2NTE2MF0sMTU3NDpbNjUxNjEsNjUxNjIsNjUxNjMsNjUxNjRdLDE1NzU6WzY1MTY1LDY1MTY2XSwxNTc2Ols2NTE2Nyw2NTE2OCw2NTE2OSw2NTE3MF0sMTU3NzpbNjUxNzEsNjUxNzJdLDE1Nzg6WzY1MTczLDY1MTc0LDY1MTc1LDY1MTc2XSwxNTc5Ols2NTE3Nyw2NTE3OCw2NTE3OSw2NTE4MF0sMTU4MDpbNjUxODEsNjUxODIsNjUxODMsNjUxODRdLDE1ODE6WzY1MTg1LDY1MTg2LDY1MTg3LDY1MTg4XSwxNTgyOls2NTE4OSw2NTE5MCw2NTE5MSw2NTE5Ml0sMTU4MzpbNjUxOTMsNjUxOTRdLDE1ODQ6WzY1MTk1LDY1MTk2XSwxNTg1Ols2NTE5Nyw2NTE5OF0sMTU4NjpbNjUxOTksNjUyMDBdLDE1ODc6WzY1MjAxLDY1MjAyLDY1MjAzLDY1MjA0XSwxNTg4Ols2NTIwNSw2NTIwNiw2NTIwNyw2NTIwOF0sMTU4OTpbNjUyMDksNjUyMTAsNjUyMTEsNjUyMTJdLDE1OTA6WzY1MjEzLDY1MjE0LDY1MjE1LDY1MjE2XSwxNTkxOls2NTIxNyw2NTIxOCw2NTIxOSw2NTIyMF0sMTU5MjpbNjUyMjEsNjUyMjIsNjUyMjMsNjUyMjRdLDE1OTM6WzY1MjI1LDY1MjI2LDY1MjI3LDY1MjI4XSwxNTk0Ols2NTIyOSw2NTIzMCw2NTIzMSw2NTIzMl0sMTYwMTpbNjUyMzMsNjUyMzQsNjUyMzUsNjUyMzZdLDE2MDI6WzY1MjM3LDY1MjM4LDY1MjM5LDY1MjQwXSwxNjAzOls2NTI0MSw2NTI0Miw2NTI0Myw2NTI0NF0sMTYwNDpbNjUyNDUsNjUyNDYsNjUyNDcsNjUyNDhdLDE2MDU6WzY1MjQ5LDY1MjUwLDY1MjUxLDY1MjUyXSwxNjA2Ols2NTI1Myw2NTI1NCw2NTI1NSw2NTI1Nl0sMTYwNzpbNjUyNTcsNjUyNTgsNjUyNTksNjUyNjBdLDE2MDg6WzY1MjYxLDY1MjYyXSwxNjA5Ols2NTI2Myw2NTI2NCw2NDQ4OCw2NDQ4OV0sMTYxMDpbNjUyNjUsNjUyNjYsNjUyNjcsNjUyNjhdLDE2NDk6WzY0MzM2LDY0MzM3XSwxNjU1Ols2NDQ3N10sMTY1NzpbNjQzNTgsNjQzNTksNjQzNjAsNjQzNjFdLDE2NTg6WzY0MzUwLDY0MzUxLDY0MzUyLDY0MzUzXSwxNjU5Ols2NDMzOCw2NDMzOSw2NDM0MCw2NDM0MV0sMTY2MjpbNjQzNDIsNjQzNDMsNjQzNDQsNjQzNDVdLDE2NjM6WzY0MzU0LDY0MzU1LDY0MzU2LDY0MzU3XSwxNjY0Ols2NDM0Niw2NDM0Nyw2NDM0OCw2NDM0OV0sMTY2NzpbNjQzNzQsNjQzNzUsNjQzNzYsNjQzNzddLDE2Njg6WzY0MzcwLDY0MzcxLDY0MzcyLDY0MzczXSwxNjcwOls2NDM3OCw2NDM3OSw2NDM4MCw2NDM4MV0sMTY3MTpbNjQzODIsNjQzODMsNjQzODQsNjQzODVdLDE2NzI6WzY0MzkyLDY0MzkzXSwxNjc2Ols2NDM4OCw2NDM4OV0sMTY3NzpbNjQzODYsNjQzODddLDE2Nzg6WzY0MzkwLDY0MzkxXSwxNjgxOls2NDM5Niw2NDM5N10sMTY4ODpbNjQzOTQsNjQzOTVdLDE3MDA6WzY0MzYyLDY0MzYzLDY0MzY0LDY0MzY1XSwxNzAyOls2NDM2Niw2NDM2Nyw2NDM2OCw2NDM2OV0sMTcwNTpbNjQzOTgsNjQzOTksNjQ0MDAsNjQ0MDFdLDE3MDk6WzY0NDY3LDY0NDY4LDY0NDY5LDY0NDcwXSwxNzExOls2NDQwMiw2NDQwMyw2NDQwNCw2NDQwNV0sMTcxMzpbNjQ0MTAsNjQ0MTEsNjQ0MTIsNjQ0MTNdLDE3MTU6WzY0NDA2LDY0NDA3LDY0NDA4LDY0NDA5XSwxNzIyOls2NDQxNCw2NDQxNV0sMTcyMzpbNjQ0MTYsNjQ0MTcsNjQ0MTgsNjQ0MTldLDE3MjY6WzY0NDI2LDY0NDI3LDY0NDI4LDY0NDI5XSwxNzI4Ols2NDQyMCw2NDQyMV0sMTcyOTpbNjQ0MjIsNjQ0MjMsNjQ0MjQsNjQ0MjVdLDE3MzM6WzY0NDgwLDY0NDgxXSwxNzM0Ols2NDQ3Myw2NDQ3NF0sMTczNTpbNjQ0NzEsNjQ0NzJdLDE3MzY6WzY0NDc1LDY0NDc2XSwxNzM3Ols2NDQ4Miw2NDQ4M10sMTczOTpbNjQ0NzgsNjQ0NzldLDE3NDA6WzY0NTA4LDY0NTA5LDY0NTEwLDY0NTExXSwxNzQ0Ols2NDQ4NCw2NDQ4NSw2NDQ4Niw2NDQ4N10sMTc0NjpbNjQ0MzAsNjQ0MzFdLDE3NDc6WzY0NDMyLDY0NDMzXX0scj17NjUyNDc6ezY1MTU0OjY1MjY5LDY1MTU2OjY1MjcxLDY1MTYwOjY1MjczLDY1MTY2OjY1Mjc1fSw2NTI0ODp7NjUxNTQ6NjUyNzAsNjUxNTY6NjUyNzIsNjUxNjA6NjUyNzQsNjUxNjY6NjUyNzZ9LDY1MTY1Ons2NTI0Nzp7NjUyNDg6ezY1MjU4OjY1MDEwfX19LDE2MTc6ezE2MTI6NjQ2MDYsMTYxMzo2NDYwNywxNjE0OjY0NjA4LDE2MTU6NjQ2MDksMTYxNjo2NDYxMH19LG49ezE2MTI6NjQ2MDYsMTYxMzo2NDYwNywxNjE0OjY0NjA4LDE2MTU6NjQ2MDksMTYxNjo2NDYxMH0saT1bMTU3MCwxNTcxLDE1NzMsMTU3NV07dC5fX2FyYWJpY1BhcnNlcl9fPXt9O3ZhciBhPXQuX19hcmFiaWNQYXJzZXJfXy5pc0luQXJhYmljU3Vic3RpdHV0aW9uQT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09ZVt0LmNoYXJDb2RlQXQoMCldfSxvPXQuX19hcmFiaWNQYXJzZXJfXy5pc0FyYWJpY0xldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9eW1x1MDYwMC1cdTA2RkZcdTA3NTAtXHUwNzdGXHUwOEEwLVx1MDhGRlx1RkI1MC1cdUZERkZcdUZFNzAtXHVGRUZGXSskLy50ZXN0KHQpfSxzPXQuX19hcmFiaWNQYXJzZXJfXy5pc0FyYWJpY0VuZExldHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbyh0KSYmYSh0KSYmZVt0LmNoYXJDb2RlQXQoMCldLmxlbmd0aDw9Mn0sYz10Ll9fYXJhYmljUGFyc2VyX18uaXNBcmFiaWNBbGZMZXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkmJmkuaW5kZXhPZih0LmNoYXJDb2RlQXQoMCkpPj0wfTt0Ll9fYXJhYmljUGFyc2VyX18uYXJhYmljTGV0dGVySGFzSXNvbGF0ZWRGb3JtPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQpJiZhKHQpJiZlW3QuY2hhckNvZGVBdCgwKV0ubGVuZ3RoPj0xfTt2YXIgdT10Ll9fYXJhYmljUGFyc2VyX18uYXJhYmljTGV0dGVySGFzRmluYWxGb3JtPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQpJiZhKHQpJiZlW3QuY2hhckNvZGVBdCgwKV0ubGVuZ3RoPj0yfTt0Ll9fYXJhYmljUGFyc2VyX18uYXJhYmljTGV0dGVySGFzSW5pdGlhbEZvcm09ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkmJmEodCkmJmVbdC5jaGFyQ29kZUF0KDApXS5sZW5ndGg+PTN9O3ZhciBsPXQuX19hcmFiaWNQYXJzZXJfXy5hcmFiaWNMZXR0ZXJIYXNNZWRpYWxGb3JtPWZ1bmN0aW9uKHQpe3JldHVybiBvKHQpJiZhKHQpJiY0PT1lW3QuY2hhckNvZGVBdCgwKV0ubGVuZ3RofSxoPXQuX19hcmFiaWNQYXJzZXJfXy5yZXNvbHZlTGlnYXR1cmVzPWZ1bmN0aW9uKHQpe3ZhciBlPTAsbj1yLGk9IiIsYT0wO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKz0xKXZvaWQgMCE9PW5bdC5jaGFyQ29kZUF0KGUpXT8oYSsrLCJudW1iZXIiPT10eXBlb2Yobj1uW3QuY2hhckNvZGVBdChlKV0pJiYoaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuKSxuPXIsYT0wKSxlPT09dC5sZW5ndGgtMSYmKG49cixpKz10LmNoYXJBdChlLShhLTEpKSxlLT1hLTEsYT0wKSk6KG49cixpKz10LmNoYXJBdChlLWEpLGUtPWEsYT0wKTtyZXR1cm4gaX07dC5fX2FyYWJpY1BhcnNlcl9fLmlzQXJhYmljRGlhY3JpdGljPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiZ2b2lkIDAhPT1uW3QuY2hhckNvZGVBdCgwKV19O3ZhciBmPXQuX19hcmFiaWNQYXJzZXJfXy5nZXRDb3JyZWN0Rm9ybT1mdW5jdGlvbih0LGUscil7cmV0dXJuIG8odCk\/ITE9PT1hKHQpPy0xOiF1KHQpfHwhbyhlKSYmIW8ocil8fCFvKHIpJiZzKGUpfHxzKHQpJiYhbyhlKXx8cyh0KSYmYyhlKXx8cyh0KSYmcyhlKT8wOmwodCkmJm8oZSkmJiFzKGUpJiZvKHIpJiZ1KHIpPzM6cyh0KXx8IW8ocik\/MToyOi0xfSxkPWZ1bmN0aW9uKHQpe3ZhciByPTAsbj0wLGk9MCxhPSIiLHM9IiIsYz0iIix1PSh0PXR8fCIiKS5zcGxpdCgiXFxzKyIpLGw9W107Zm9yKHI9MDtyPHUubGVuZ3RoO3IrPTEpe2ZvcihsLnB1c2goIiIpLG49MDtuPHVbcl0ubGVuZ3RoO24rPTEpYT11W3JdW25dLHM9dVtyXVtuLTFdLGM9dVtyXVtuKzFdLG8oYSk\/KGk9ZihhLHMsYyksbFtyXSs9LTEhPT1pP1N0cmluZy5mcm9tQ2hhckNvZGUoZVthLmNoYXJDb2RlQXQoMCldW2ldKTphKTpsW3JdKz1hO2xbcl09aChsW3JdKX1yZXR1cm4gbC5qb2luKCIgIil9LHA9dC5fX2FyYWJpY1BhcnNlcl9fLnByb2Nlc3NBcmFiaWM9dC5wcm9jZXNzQXJhYmljPWZ1bmN0aW9uKCl7dmFyIHQsZT0ic3RyaW5nIj09dHlwZW9mIGFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06YXJndW1lbnRzWzBdLnRleHQscj1bXTtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgbj0wO2ZvcihyPVtdLG49MDtuPGUubGVuZ3RoO24rPTEpQXJyYXkuaXNBcnJheShlW25dKT9yLnB1c2goW2QoZVtuXVswXSksZVtuXVsxXSxlW25dWzJdXSk6ci5wdXNoKFtkKGVbbl0pXSk7dD1yfWVsc2UgdD1kKGUpO3JldHVybiJzdHJpbmciPT10eXBlb2YgYXJndW1lbnRzWzBdP3Q6KGFyZ3VtZW50c1swXS50ZXh0PXQsYXJndW1lbnRzWzBdKX07dC5ldmVudHMucHVzaChbInByZVByb2Nlc3NUZXh0IixwXSl9KE0uQVBJKSwKLyoqIEBsaWNlbnNlCiAgICoganNQREYgQXV0b3ByaW50IFBsdWdpbgogICAqCiAgICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogICAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogICAqLwpmdW5jdGlvbih0KXt0LmF1dG9QcmludD1mdW5jdGlvbih0KXt2YXIgZTtzd2l0Y2goKHQ9dHx8e30pLnZhcmlhbnQ9dC52YXJpYW50fHwibm9uLWNvbmZvcm0iLHQudmFyaWFudCl7Y2FzZSJqYXZhc2NyaXB0Ijp0aGlzLmFkZEpTKCJwcmludCh7fSk7Iik7YnJlYWs7Y2FzZSJub24tY29uZm9ybSI6ZGVmYXVsdDp0aGlzLmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInBvc3RQdXRSZXNvdXJjZXMiLChmdW5jdGlvbigpe2U9dGhpcy5pbnRlcm5hbC5uZXdPYmplY3QoKSx0aGlzLmludGVybmFsLm91dCgiPDwiKSx0aGlzLmludGVybmFsLm91dCgiL1MgL05hbWVkIiksdGhpcy5pbnRlcm5hbC5vdXQoIi9UeXBlIC9BY3Rpb24iKSx0aGlzLmludGVybmFsLm91dCgiL04gL1ByaW50IiksdGhpcy5pbnRlcm5hbC5vdXQoIj4+IiksdGhpcy5pbnRlcm5hbC5vdXQoImVuZG9iaiIpfSkpLHRoaXMuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicHV0Q2F0YWxvZyIsKGZ1bmN0aW9uKCl7dGhpcy5pbnRlcm5hbC5vdXQoIi9PcGVuQWN0aW9uICIrZSsiIDAgUiIpfSkpfXJldHVybiB0aGlzfX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAoYykgMjAxNCBTdGV2ZW4gU3B1bmdpbiAoVHdlbHZlVG9uZSBMTEMpICBzdGV2ZW5AdHdlbHZldG9uZS50dgogICAqCiAgICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogICAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogICAqLwpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3ZhciB0PXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGRmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihlKXt0PWV9fSk7dmFyIGU9MTUwO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ3aWR0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBlfSxzZXQ6ZnVuY3Rpb24odCl7ZT1pc05hTih0KXx8ITE9PT1OdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDA\/MTUwOnQsdGhpcy5nZXRDb250ZXh0KCIyZCIpLnBhZ2VXcmFwWEVuYWJsZWQmJih0aGlzLmdldENvbnRleHQoIjJkIikucGFnZVdyYXBYPWUrMSl9fSk7dmFyIHI9MzAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJoZWlnaHQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0OmZ1bmN0aW9uKHQpe3I9aXNOYU4odCl8fCExPT09TnVtYmVyLmlzSW50ZWdlcih0KXx8dDwwPzMwMDp0LHRoaXMuZ2V0Q29udGV4dCgiMmQiKS5wYWdlV3JhcFlFbmFibGVkJiYodGhpcy5nZXRDb250ZXh0KCIyZCIpLnBhZ2VXcmFwWT1yKzEpfX0pO3ZhciBuPVtdO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjaGlsZE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldDpmdW5jdGlvbih0KXtuPXR9fSk7dmFyIGk9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInN0eWxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHNldDpmdW5jdGlvbih0KXtpPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt9KX07ZS5wcm90b3R5cGUuZ2V0Q29udGV4dD1mdW5jdGlvbih0LGUpe3ZhciByO2lmKCIyZCIhPT0odD10fHwiMmQiKSlyZXR1cm4gbnVsbDtmb3IociBpbiBlKXRoaXMucGRmLmNvbnRleHQyZC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXMucGRmLmNvbnRleHQyZFtyXT1lW3JdKTtyZXR1cm4gdGhpcy5wZGYuY29udGV4dDJkLl9jYW52YXM9dGhpcyx0aGlzLnBkZi5jb250ZXh0MmR9LGUucHJvdG90eXBlLnRvRGF0YVVSTD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidG9EYXRhVVJMIGlzIG5vdCBpbXBsZW1lbnRlZC4iKX0sdC5ldmVudHMucHVzaChbImluaXRpYWxpemVkIixmdW5jdGlvbigpe3RoaXMuY2FudmFzPW5ldyBlLHRoaXMuY2FudmFzLnBkZj10aGlzfV0pfShNLkFQSSksZnVuY3Rpb24odCl7dmFyIHI9e2xlZnQ6MCx0b3A6MCxib3R0b206MCxyaWdodDowfSxuPSExLGk9ZnVuY3Rpb24oKXt2b2lkIDA9PT10aGlzLmludGVybmFsLl9fY2VsbF9fJiYodGhpcy5pbnRlcm5hbC5fX2NlbGxfXz17fSx0aGlzLmludGVybmFsLl9fY2VsbF9fLnBhZGRpbmc9Myx0aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckZ1bmN0aW9uPXZvaWQgMCx0aGlzLmludGVybmFsLl9fY2VsbF9fLm1hcmdpbnM9T2JqZWN0LmFzc2lnbih7fSxyKSx0aGlzLmludGVybmFsLl9fY2VsbF9fLm1hcmdpbnMud2lkdGg9dGhpcy5nZXRQYWdlV2lkdGgoKSxhLmNhbGwodGhpcykpfSxhPWZ1bmN0aW9uKCl7dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5sYXN0Q2VsbD1uZXcgbyx0aGlzLmludGVybmFsLl9fY2VsbF9fLnBhZ2VzPTF9LG89ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF07T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIngiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pO3ZhciBlPWFyZ3VtZW50c1sxXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywieSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNldDpmdW5jdGlvbih0KXtlPXR9fSk7dmFyIHI9YXJndW1lbnRzWzJdO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ3aWR0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldDpmdW5jdGlvbih0KXtyPXR9fSk7dmFyIG49YXJndW1lbnRzWzNdO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJoZWlnaHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBufSxzZXQ6ZnVuY3Rpb24odCl7bj10fX0pO3ZhciBpPWFyZ3VtZW50c1s0XTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidGV4dCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHNldDpmdW5jdGlvbih0KXtpPXR9fSk7dmFyIGE9YXJndW1lbnRzWzVdO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsaW5lTnVtYmVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sc2V0OmZ1bmN0aW9uKHQpe2E9dH19KTt2YXIgbz1hcmd1bWVudHNbNl07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJhbGlnbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldDpmdW5jdGlvbih0KXtvPXR9fSksdGhpc307by5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8odGhpcy54LHRoaXMueSx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LHRoaXMudGV4dCx0aGlzLmxpbmVOdW1iZXIsdGhpcy5hbGlnbil9LG8ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy54LHRoaXMueSx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LHRoaXMudGV4dCx0aGlzLmxpbmVOdW1iZXIsdGhpcy5hbGlnbl19LHQuc2V0SGVhZGVyRnVuY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGkuY2FsbCh0aGlzKSx0aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckZ1bmN0aW9uPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwLHRoaXN9LHQuZ2V0VGV4dERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlKXtpLmNhbGwodGhpcyk7dmFyIHI9KGU9ZXx8e30pLmZvbnRTaXplfHx0aGlzLmdldEZvbnRTaXplKCksbj1lLmZvbnR8fHRoaXMuZ2V0Rm9udCgpLGE9ZS5zY2FsZUZhY3Rvcnx8dGhpcy5pbnRlcm5hbC5zY2FsZUZhY3RvcixvPTAscz0wLGM9MCx1PXRoaXM7aWYoIUFycmF5LmlzQXJyYXkodCkmJiJzdHJpbmciIT10eXBlb2YgdCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiZ2V0VGV4dERpbWVuc2lvbnMgZXhwZWN0cyB0ZXh0LXBhcmFtZXRlciB0byBiZSBvZiB0eXBlIFN0cmluZyBvciB0eXBlIE51bWJlciBvciBhbiBBcnJheSBvZiBTdHJpbmdzLiIpO3Q9U3RyaW5nKHQpfXZhciBsPWUubWF4V2lkdGg7bD4wPyJzdHJpbmciPT10eXBlb2YgdD90PXRoaXMuc3BsaXRUZXh0VG9TaXplKHQsbCk6IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSYmKHQ9dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KHUuc3BsaXRUZXh0VG9TaXplKGUsbCkpfSksW10pKTp0PUFycmF5LmlzQXJyYXkodCk\/dDpbdF07Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspbzwoYz10aGlzLmdldFN0cmluZ1VuaXRXaWR0aCh0W2hdLHtmb250Om59KSpyKSYmKG89Yyk7cmV0dXJuIDAhPT1vJiYocz10Lmxlbmd0aCkse3c6by89YSxoOk1hdGgubWF4KChzKnIqdGhpcy5nZXRMaW5lSGVpZ2h0RmFjdG9yKCktcioodGhpcy5nZXRMaW5lSGVpZ2h0RmFjdG9yKCktMSkpL2EsMCl9fSx0LmNlbGxBZGRQYWdlPWZ1bmN0aW9uKCl7aS5jYWxsKHRoaXMpLHRoaXMuYWRkUGFnZSgpO3ZhciB0PXRoaXMuaW50ZXJuYWwuX19jZWxsX18ubWFyZ2luc3x8cjtyZXR1cm4gdGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5sYXN0Q2VsbD1uZXcgbyh0LmxlZnQsdC50b3Asdm9pZCAwLHZvaWQgMCksdGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5wYWdlcys9MSx0aGlzfTt2YXIgcz10LmNlbGw9ZnVuY3Rpb24oKXt2YXIgdDt0PWFyZ3VtZW50c1swXWluc3RhbmNlb2Ygbz9hcmd1bWVudHNbMF06bmV3IG8oYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0sYXJndW1lbnRzWzNdLGFyZ3VtZW50c1s0XSxhcmd1bWVudHNbNV0pLGkuY2FsbCh0aGlzKTt2YXIgZT10aGlzLmludGVybmFsLl9fY2VsbF9fLmxhc3RDZWxsLGE9dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5wYWRkaW5nLHM9dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5tYXJnaW5zfHxyLGM9dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy50YWJsZUhlYWRlclJvdyx1PXRoaXMuaW50ZXJuYWwuX19jZWxsX18ucHJpbnRIZWFkZXJzO3JldHVybiB2b2lkIDAhPT1lLmxpbmVOdW1iZXImJihlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXI\/KHQueD0oZS54fHwwKSsoZS53aWR0aHx8MCksdC55PWUueXx8MCk6ZS55K2UuaGVpZ2h0K3QuaGVpZ2h0K3MuYm90dG9tPnRoaXMuZ2V0UGFnZUhlaWdodCgpPyh0aGlzLmNlbGxBZGRQYWdlKCksdC55PXMudG9wLHUmJmMmJih0aGlzLnByaW50SGVhZGVyUm93KHQubGluZU51bWJlciwhMCksdC55Kz1jWzBdLmhlaWdodCkpOnQueT1lLnkrZS5oZWlnaHR8fHQueSksdm9pZCAwIT09dC50ZXh0WzBdJiYodGhpcy5yZWN0KHQueCx0LnksdC53aWR0aCx0LmhlaWdodCwhMD09PW4\/IkZEIjp2b2lkIDApLCJyaWdodCI9PT10LmFsaWduP3RoaXMudGV4dCh0LnRleHQsdC54K3Qud2lkdGgtYSx0LnkrYSx7YWxpZ246InJpZ2h0IixiYXNlbGluZToidG9wIn0pOiJjZW50ZXIiPT09dC5hbGlnbj90aGlzLnRleHQodC50ZXh0LHQueCt0LndpZHRoLzIsdC55K2Ese2FsaWduOiJjZW50ZXIiLGJhc2VsaW5lOiJ0b3AiLG1heFdpZHRoOnQud2lkdGgtYS1hfSk6dGhpcy50ZXh0KHQudGV4dCx0LngrYSx0LnkrYSx7YWxpZ246ImxlZnQiLGJhc2VsaW5lOiJ0b3AiLG1heFdpZHRoOnQud2lkdGgtYS1hfSkpLHRoaXMuaW50ZXJuYWwuX19jZWxsX18ubGFzdENlbGw9dCx0aGlzfTt0LnRhYmxlPWZ1bmN0aW9uKHQsbix1LGwsaCl7aWYoaS5jYWxsKHRoaXMpLCF1KXRocm93IG5ldyBFcnJvcigiTm8gZGF0YSBmb3IgUERGIHRhYmxlLiIpO3ZhciBmLGQscCxnLG09W10sdj1bXSxiPVtdLHk9e30sdz17fSxOPVtdLEw9W10sQT0oaD1ofHx7fSkuYXV0b1NpemV8fCExLHg9ITEhPT1oLnByaW50SGVhZGVycyxTPWguY3NzJiZ2b2lkIDAhPT1oLmNzc1siZm9udC1zaXplIl0\/MTYqaC5jc3NbImZvbnQtc2l6ZSJdOmguZm9udFNpemV8fDEyLF89aC5tYXJnaW5zfHxPYmplY3QuYXNzaWduKHt3aWR0aDp0aGlzLmdldFBhZ2VXaWR0aCgpfSxyKSxQPSJudW1iZXIiPT10eXBlb2YgaC5wYWRkaW5nP2gucGFkZGluZzozLGs9aC5oZWFkZXJCYWNrZ3JvdW5kQ29sb3J8fCIjYzhjOGM4IixGPWguaGVhZGVyVGV4dENvbG9yfHwiIzAwMCI7aWYoYS5jYWxsKHRoaXMpLHRoaXMuaW50ZXJuYWwuX19jZWxsX18ucHJpbnRIZWFkZXJzPXgsdGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5tYXJnaW5zPV8sdGhpcy5pbnRlcm5hbC5fX2NlbGxfXy50YWJsZV9mb250X3NpemU9Uyx0aGlzLmludGVybmFsLl9fY2VsbF9fLnBhZGRpbmc9UCx0aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckJhY2tncm91bmRDb2xvcj1rLHRoaXMuaW50ZXJuYWwuX19jZWxsX18uaGVhZGVyVGV4dENvbG9yPUYsdGhpcy5zZXRGb250U2l6ZShTKSxudWxsPT1sKXY9bT1PYmplY3Qua2V5cyh1WzBdKSxiPW0ubWFwKChmdW5jdGlvbigpe3JldHVybiJsZWZ0In0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkmJiJvYmplY3QiPT09ZShsWzBdKSlmb3IobT1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pKSx2PWwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcm9tcHR8fHQubmFtZXx8IiJ9KSksYj1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWxpZ258fCJsZWZ0In0pKSxmPTA7ZjxsLmxlbmd0aDtmKz0xKXdbbFtmXS5uYW1lXT1sW2ZdLndpZHRoKigxOS4wNDk5NzYvMjUuNCk7ZWxzZSBBcnJheS5pc0FycmF5KGwpJiYic3RyaW5nIj09dHlwZW9mIGxbMF0mJih2PW09bCxiPW0ubWFwKChmdW5jdGlvbigpe3JldHVybiJsZWZ0In0pKSk7aWYoQXx8QXJyYXkuaXNBcnJheShsKSYmInN0cmluZyI9PXR5cGVvZiBsWzBdKWZvcihmPTA7ZjxtLmxlbmd0aDtmKz0xKXtmb3IoeVtnPW1bZl1dPXUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdFtnXX0pKSx0aGlzLnNldEZvbnQodm9pZCAwLCJib2xkIiksTi5wdXNoKHRoaXMuZ2V0VGV4dERpbWVuc2lvbnModltmXSx7Zm9udFNpemU6dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy50YWJsZV9mb250X3NpemUsc2NhbGVGYWN0b3I6dGhpcy5pbnRlcm5hbC5zY2FsZUZhY3Rvcn0pLncpLGQ9eVtnXSx0aGlzLnNldEZvbnQodm9pZCAwLCJub3JtYWwiKSxwPTA7cDxkLmxlbmd0aDtwKz0xKU4ucHVzaCh0aGlzLmdldFRleHREaW1lbnNpb25zKGRbcF0se2ZvbnRTaXplOnRoaXMuaW50ZXJuYWwuX19jZWxsX18udGFibGVfZm9udF9zaXplLHNjYWxlRmFjdG9yOnRoaXMuaW50ZXJuYWwuc2NhbGVGYWN0b3J9KS53KTt3W2ddPU1hdGgubWF4LmFwcGx5KG51bGwsTikrUCtQLE49W119aWYoeCl7dmFyIEk9e307Zm9yKGY9MDtmPG0ubGVuZ3RoO2YrPTEpSVttW2ZdXT17fSxJW21bZl1dLnRleHQ9dltmXSxJW21bZl1dLmFsaWduPWJbZl07dmFyIEM9Yy5jYWxsKHRoaXMsSSx3KTtMPW0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8odCxuLHdbZV0sQyxJW2VdLnRleHQsdm9pZCAwLElbZV0uYWxpZ24pfSkpLHRoaXMuc2V0VGFibGVIZWFkZXJSb3coTCksdGhpcy5wcmludEhlYWRlclJvdygxLCExKX12YXIgaj1sLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlLm5hbWVdPWUuYWxpZ24sdH0pLHt9KTtmb3IoZj0wO2Y8dS5sZW5ndGg7Zis9MSl7InJvd1N0YXJ0ImluIGgmJmgucm93U3RhcnQgaW5zdGFuY2VvZiBGdW5jdGlvbiYmaC5yb3dTdGFydCh7cm93OmYsZGF0YTp1W2ZdfSx0aGlzKTt2YXIgTz1jLmNhbGwodGhpcyx1W2ZdLHcpO2ZvcihwPTA7cDxtLmxlbmd0aDtwKz0xKXt2YXIgQj11W2ZdW21bcF1dOyJjZWxsU3RhcnQiaW4gaCYmaC5jZWxsU3RhcnQgaW5zdGFuY2VvZiBGdW5jdGlvbiYmaC5jZWxsU3RhcnQoe3JvdzpmLGNvbDpwLGRhdGE6Qn0sdGhpcykscy5jYWxsKHRoaXMsbmV3IG8odCxuLHdbbVtwXV0sTyxCLGYrMixqW21bcF1dKSl9fXJldHVybiB0aGlzLmludGVybmFsLl9fY2VsbF9fLnRhYmxlX3g9dCx0aGlzLmludGVybmFsLl9fY2VsbF9fLnRhYmxlX3k9bix0aGlzfTt2YXIgYz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuaW50ZXJuYWwuX19jZWxsX18ucGFkZGluZyxuPXRoaXMuaW50ZXJuYWwuX19jZWxsX18udGFibGVfZm9udF9zaXplLGk9dGhpcy5pbnRlcm5hbC5zY2FsZUZhY3RvcjtyZXR1cm4gT2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihuKXt2YXIgaT10W25dO3JldHVybiB0aGlzLnNwbGl0VGV4dFRvU2l6ZShpLmhhc093blByb3BlcnR5KCJ0ZXh0Iik\/aS50ZXh0OmksZVtuXS1yLXIpfSksdGhpcykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRMaW5lSGVpZ2h0RmFjdG9yKCkqdC5sZW5ndGgqbi9pK3Ircn0pLHRoaXMpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlKX0pLDApfTt0LnNldFRhYmxlSGVhZGVyUm93PWZ1bmN0aW9uKHQpe2kuY2FsbCh0aGlzKSx0aGlzLmludGVybmFsLl9fY2VsbF9fLnRhYmxlSGVhZGVyUm93PXR9LHQucHJpbnRIZWFkZXJSb3c9ZnVuY3Rpb24odCxlKXtpZihpLmNhbGwodGhpcyksIXRoaXMuaW50ZXJuYWwuX19jZWxsX18udGFibGVIZWFkZXJSb3cpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eSB0YWJsZUhlYWRlclJvdyBkb2VzIG5vdCBleGlzdC4iKTt2YXIgcjtpZihuPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckZ1bmN0aW9uKXt2YXIgYT10aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckZ1bmN0aW9uKHRoaXMsdGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5wYWdlcyk7dGhpcy5pbnRlcm5hbC5fX2NlbGxfXy5sYXN0Q2VsbD1uZXcgbyhhWzBdLGFbMV0sYVsyXSxhWzNdLHZvaWQgMCwtMSl9dGhpcy5zZXRGb250KHZvaWQgMCwiYm9sZCIpO2Zvcih2YXIgYz1bXSx1PTA7dTx0aGlzLmludGVybmFsLl9fY2VsbF9fLnRhYmxlSGVhZGVyUm93Lmxlbmd0aDt1Kz0xKXtyPXRoaXMuaW50ZXJuYWwuX19jZWxsX18udGFibGVIZWFkZXJSb3dbdV0uY2xvbmUoKSxlJiYoci55PXRoaXMuaW50ZXJuYWwuX19jZWxsX18ubWFyZ2lucy50b3B8fDAsYy5wdXNoKHIpKSxyLmxpbmVOdW1iZXI9dDt2YXIgbD10aGlzLmdldFRleHRDb2xvcigpO3RoaXMuc2V0VGV4dENvbG9yKHRoaXMuaW50ZXJuYWwuX19jZWxsX18uaGVhZGVyVGV4dENvbG9yKSx0aGlzLnNldEZpbGxDb2xvcih0aGlzLmludGVybmFsLl9fY2VsbF9fLmhlYWRlckJhY2tncm91bmRDb2xvcikscy5jYWxsKHRoaXMsciksdGhpcy5zZXRUZXh0Q29sb3IobCl9Yy5sZW5ndGg+MCYmdGhpcy5zZXRUYWJsZUhlYWRlclJvdyhjKSx0aGlzLnNldEZvbnQodm9pZCAwLCJub3JtYWwiKSxuPSExfX0oTS5BUEkpO3ZhciBfdD17aXRhbGljOlsiaXRhbGljIiwib2JsaXF1ZSIsIm5vcm1hbCJdLG9ibGlxdWU6WyJvYmxpcXVlIiwiaXRhbGljIiwibm9ybWFsIl0sbm9ybWFsOlsibm9ybWFsIiwib2JsaXF1ZSIsIml0YWxpYyJdfSxQdD1bInVsdHJhLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWktY29uZGVuc2VkIiwibm9ybWFsIiwic2VtaS1leHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1leHBhbmRlZCJdLGt0PVN0KFB0KSxGdD1bMTAwLDIwMCwzMDAsNDAwLDUwMCw2MDAsNzAwLDgwMCw5MDBdLEl0PVN0KEZ0KTtmdW5jdGlvbiBDdCh0KXt2YXIgZT10LmZhbWlseS5yZXBsYWNlKC8ifCcvZywiIikudG9Mb3dlckNhc2UoKSxyPWZ1bmN0aW9uKHQpe3JldHVybiBfdFt0PXR8fCJub3JtYWwiXT90OiJub3JtYWwifSh0LnN0eWxlKSxuPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiA0MDA7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Pj0xMDAmJnQ8PTkwMCYmdCUxMDA9PTA\/dDo0MDA7aWYoL15cZDAwJC8udGVzdCh0KSlyZXR1cm4gcGFyc2VJbnQodCk7c3dpdGNoKHQpe2Nhc2UiYm9sZCI6cmV0dXJuIDcwMDtjYXNlIm5vcm1hbCI6ZGVmYXVsdDpyZXR1cm4gNDAwfX0odC53ZWlnaHQpLGk9ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBrdFt0PXR8fCJub3JtYWwiXT90OiJub3JtYWwifSh0LnN0cmV0Y2gpO3JldHVybntmYW1pbHk6ZSxzdHlsZTpyLHdlaWdodDpuLHN0cmV0Y2g6aSxzcmM6dC5zcmN8fFtdLHJlZjp0LnJlZnx8e25hbWU6ZSxzdHlsZTpbaSxyLG5dLmpvaW4oIiAiKX19fWZ1bmN0aW9uIGp0KHQsZSxyLG4pe3ZhciBpO2ZvcihpPXI7aT49MCYmaTxlLmxlbmd0aDtpKz1uKWlmKHRbZVtpXV0pcmV0dXJuIHRbZVtpXV07Zm9yKGk9cjtpPj0wJiZpPGUubGVuZ3RoO2ktPW4paWYodFtlW2ldXSlyZXR1cm4gdFtlW2ldXX12YXIgT3Q9eyJzYW5zLXNlcmlmIjoiaGVsdmV0aWNhIixmaXhlZDoiY291cmllciIsbW9ub3NwYWNlOiJjb3VyaWVyIix0ZXJtaW5hbDoiY291cmllciIsY3Vyc2l2ZToidGltZXMiLGZhbnRhc3k6InRpbWVzIixzZXJpZjoidGltZXMifSxCdD17Y2FwdGlvbjoidGltZXMiLGljb246InRpbWVzIixtZW51OiJ0aW1lcyIsIm1lc3NhZ2UtYm94IjoidGltZXMiLCJzbWFsbC1jYXB0aW9uIjoidGltZXMiLCJzdGF0dXMtYmFyIjoidGltZXMifTtmdW5jdGlvbiBNdCh0KXtyZXR1cm5bdC5zdHJldGNoLHQuc3R5bGUsdC53ZWlnaHQsdC5mYW1pbHldLmpvaW4oIiAiKX1mdW5jdGlvbiBFdCh0LGUscil7Zm9yKHZhciBuPShyPXJ8fHt9KS5kZWZhdWx0Rm9udEZhbWlseXx8InRpbWVzIixpPU9iamVjdC5hc3NpZ24oe30sT3Qsci5nZW5lcmljRm9udEZhbWlsaWVzfHx7fSksYT1udWxsLG89bnVsbCxzPTA7czxlLmxlbmd0aDsrK3MpaWYoaVsoYT1DdChlW3NdKSkuZmFtaWx5XSYmKGEuZmFtaWx5PWlbYS5mYW1pbHldKSx0Lmhhc093blByb3BlcnR5KGEuZmFtaWx5KSl7bz10W2EuZmFtaWx5XTticmVha31pZighKG89b3x8dFtuXSkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBhIGZvbnQtZmFtaWx5IGZvciB0aGUgcnVsZSAnIitNdChhKSsiJyBhbmQgZGVmYXVsdCBmYW1pbHkgJyIrbisiJy4iKTtpZihvPWZ1bmN0aW9uKHQsZSl7aWYoZVt0XSlyZXR1cm4gZVt0XTt2YXIgcj1rdFt0XSxuPXI8PWt0Lm5vcm1hbD8tMToxLGk9anQoZSxQdCxyLG4pO2lmKCFpKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyBmb250LXN0cmV0Y2ggdmFsdWUgZm9yICIrdCk7cmV0dXJuIGl9KGEuc3RyZXRjaCxvKSxvPWZ1bmN0aW9uKHQsZSl7aWYoZVt0XSlyZXR1cm4gZVt0XTtmb3IodmFyIHI9X3RbdF0sbj0wO248ci5sZW5ndGg7KytuKWlmKGVbcltuXV0pcmV0dXJuIGVbcltuXV07dGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIGZvbnQtc3R5bGUgZm9yICIrdCl9KGEuc3R5bGUsbyksIShvPWZ1bmN0aW9uKHQsZSl7aWYoZVt0XSlyZXR1cm4gZVt0XTtpZig0MDA9PT10JiZlWzUwMF0pcmV0dXJuIGVbNTAwXTtpZig1MDA9PT10JiZlWzQwMF0pcmV0dXJuIGVbNDAwXTt2YXIgcj1JdFt0XSxuPWp0KGUsRnQscix0PDQwMD8tMToxKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgZm9udC13ZWlnaHQgZm9yIHZhbHVlICIrdCk7cmV0dXJuIG59KGEud2VpZ2h0LG8pKSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byByZXNvbHZlIGEgZm9udCBmb3IgdGhlIHJ1bGUgJyIrTXQoYSkrIicuIik7cmV0dXJuIG99ZnVuY3Rpb24gcXQodCl7cmV0dXJuIHQudHJpbUxlZnQoKX1mdW5jdGlvbiBEdCh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZih0LmNoYXJBdChyKT09PWUpcmV0dXJuW3Quc3Vic3RyaW5nKDAsciksdC5zdWJzdHJpbmcocisxKV07cis9MX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBSdCh0KXt2YXIgZT10Lm1hdGNoKC9eKC1bYS16X118W2Etel9dKVthLXowLTlfLV0qL2kpO3JldHVybiBudWxsPT09ZT9udWxsOltlWzBdLHQuc3Vic3RyaW5nKGVbMF0ubGVuZ3RoKV19dmFyIFR0PVsidGltZXMiXTshZnVuY3Rpb24odCl7dmFyIHIsbixhLG8scyxjLHUsbCxmLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8e30sdGhpcy5pc1N0cm9rZVRyYW5zcGFyZW50PXQuaXNTdHJva2VUcmFuc3BhcmVudHx8ITEsdGhpcy5zdHJva2VPcGFjaXR5PXQuc3Ryb2tlT3BhY2l0eXx8MSx0aGlzLnN0cm9rZVN0eWxlPXQuc3Ryb2tlU3R5bGV8fCIjMDAwMDAwIix0aGlzLmZpbGxTdHlsZT10LmZpbGxTdHlsZXx8IiMwMDAwMDAiLHRoaXMuaXNGaWxsVHJhbnNwYXJlbnQ9dC5pc0ZpbGxUcmFuc3BhcmVudHx8ITEsdGhpcy5maWxsT3BhY2l0eT10LmZpbGxPcGFjaXR5fHwxLHRoaXMuZm9udD10LmZvbnR8fCIxMHB4IHNhbnMtc2VyaWYiLHRoaXMudGV4dEJhc2VsaW5lPXQudGV4dEJhc2VsaW5lfHwiYWxwaGFiZXRpYyIsdGhpcy50ZXh0QWxpZ249dC50ZXh0QWxpZ258fCJsZWZ0Iix0aGlzLmxpbmVXaWR0aD10LmxpbmVXaWR0aHx8MSx0aGlzLmxpbmVKb2luPXQubGluZUpvaW58fCJtaXRlciIsdGhpcy5saW5lQ2FwPXQubGluZUNhcHx8ImJ1dHQiLHRoaXMucGF0aD10LnBhdGh8fFtdLHRoaXMudHJhbnNmb3JtPXZvaWQgMCE9PXQudHJhbnNmb3JtP3QudHJhbnNmb3JtLmNsb25lKCk6bmV3IGwsdGhpcy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb258fCJub3JtYWwiLHRoaXMuZ2xvYmFsQWxwaGE9dC5nbG9iYWxBbHBoYXx8MSx0aGlzLmNsaXBfcGF0aD10LmNsaXBfcGF0aHx8W10sdGhpcy5jdXJyZW50UG9pbnQ9dC5jdXJyZW50UG9pbnR8fG5ldyBjLHRoaXMubWl0ZXJMaW1pdD10Lm1pdGVyTGltaXR8fDEwLHRoaXMubGFzdFBvaW50PXQubGFzdFBvaW50fHxuZXcgYyx0aGlzLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR8fDAsdGhpcy5saW5lRGFzaD10LmxpbmVEYXNofHxbXSx0aGlzLm1hcmdpbj10Lm1hcmdpbnx8WzAsMCwwLDBdLHRoaXMucHJldlBhZ2VMYXN0RWxlbU9mZnNldD10LnByZXZQYWdlTGFzdEVsZW1PZmZzZXR8fDAsdGhpcy5pZ25vcmVDbGVhclJlY3Q9ImJvb2xlYW4iIT10eXBlb2YgdC5pZ25vcmVDbGVhclJlY3R8fHQuaWdub3JlQ2xlYXJSZWN0LHRoaXN9O3QuZXZlbnRzLnB1c2goWyJpbml0aWFsaXplZCIsZnVuY3Rpb24oKXt0aGlzLmNvbnRleHQyZD1uZXcgcCh0aGlzKSxyPXRoaXMuaW50ZXJuYWwuZjIsbj10aGlzLmludGVybmFsLmdldENvb3JkaW5hdGVTdHJpbmcsYT10aGlzLmludGVybmFsLmdldFZlcnRpY2FsQ29vcmRpbmF0ZVN0cmluZyxvPXRoaXMuaW50ZXJuYWwuZ2V0SG9yaXpvbnRhbENvb3JkaW5hdGUscz10aGlzLmludGVybmFsLmdldFZlcnRpY2FsQ29vcmRpbmF0ZSxjPXRoaXMuaW50ZXJuYWwuUG9pbnQsdT10aGlzLmludGVybmFsLlJlY3RhbmdsZSxsPXRoaXMuaW50ZXJuYWwuTWF0cml4LGY9bmV3IGR9XSk7dmFyIHA9ZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImNhbnZhcyIse2dldDpmdW5jdGlvbigpe3JldHVybntwYXJlbnROb2RlOiExLHN0eWxlOiExfX19KTt2YXIgZT10O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwZGYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX19KTt2YXIgcj0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFnZVdyYXBYRW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24odCl7cj1Cb29sZWFuKHQpfX0pO3ZhciBuPSExO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwYWdlV3JhcFlFbmFibGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldDpmdW5jdGlvbih0KXtuPUJvb2xlYW4odCl9fSk7dmFyIGk9MDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicG9zWCIse2dldDpmdW5jdGlvbigpe3JldHVybiBpfSxzZXQ6ZnVuY3Rpb24odCl7aXNOYU4odCl8fChpPXQpfX0pO3ZhciBhPTA7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBvc1kiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sc2V0OmZ1bmN0aW9uKHQpe2lzTmFOKHQpfHwoYT10KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWFyZ2luIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYubWFyZ2lufSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU7Im51bWJlciI9PXR5cGVvZiB0P2U9W3QsdCx0LHRdOigoZT1uZXcgQXJyYXkoNCkpWzBdPXRbMF0sZVsxXT10Lmxlbmd0aD49Mj90WzFdOmVbMF0sZVsyXT10Lmxlbmd0aD49Mz90WzJdOmVbMF0sZVszXT10Lmxlbmd0aD49ND90WzNdOmVbMV0pLGYubWFyZ2luPWV9fSk7dmFyIG89ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImF1dG9QYWdpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb30sc2V0OmZ1bmN0aW9uKHQpe289dH19KTt2YXIgcz0wO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsYXN0QnJlYWsiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc30sc2V0OmZ1bmN0aW9uKHQpe3M9dH19KTt2YXIgYz1bXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFnZUJyZWFrcyIse2dldDpmdW5jdGlvbigpe3JldHVybiBjfSxzZXQ6ZnVuY3Rpb24odCl7Yz10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjdHgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sc2V0OmZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBkJiYoZj10KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBmLnBhdGh9LHNldDpmdW5jdGlvbih0KXtmLnBhdGg9dH19KTt2YXIgdT1bXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY3R4U3RhY2siLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sc2V0OmZ1bmN0aW9uKHQpe3U9dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZmlsbFN0eWxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3R4LmZpbGxTdHlsZX0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlO2U9Zyh0KSx0aGlzLmN0eC5maWxsU3R5bGU9ZS5zdHlsZSx0aGlzLmN0eC5pc0ZpbGxUcmFuc3BhcmVudD0wPT09ZS5hLHRoaXMuY3R4LmZpbGxPcGFjaXR5PWUuYSx0aGlzLnBkZi5zZXRGaWxsQ29sb3IoZS5yLGUuZyxlLmIse2E6ZS5hfSksdGhpcy5wZGYuc2V0VGV4dENvbG9yKGUucixlLmcsZS5iLHthOmUuYX0pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzdHJva2VTdHlsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC5zdHJva2VTdHlsZX0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPWcodCk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9ZS5zdHlsZSx0aGlzLmN0eC5pc1N0cm9rZVRyYW5zcGFyZW50PTA9PT1lLmEsdGhpcy5jdHguc3Ryb2tlT3BhY2l0eT1lLmEsMD09PWUuYT90aGlzLnBkZi5zZXREcmF3Q29sb3IoMjU1LDI1NSwyNTUpOihlLmEsdGhpcy5wZGYuc2V0RHJhd0NvbG9yKGUucixlLmcsZS5iKSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImxpbmVDYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHgubGluZUNhcH0sc2V0OmZ1bmN0aW9uKHQpey0xIT09WyJidXR0Iiwicm91bmQiLCJzcXVhcmUiXS5pbmRleE9mKHQpJiYodGhpcy5jdHgubGluZUNhcD10LHRoaXMucGRmLnNldExpbmVDYXAodCkpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsaW5lV2lkdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHgubGluZVdpZHRofSxzZXQ6ZnVuY3Rpb24odCl7aXNOYU4odCl8fCh0aGlzLmN0eC5saW5lV2lkdGg9dCx0aGlzLnBkZi5zZXRMaW5lV2lkdGgodCkpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsaW5lSm9pbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC5saW5lSm9pbn0sc2V0OmZ1bmN0aW9uKHQpey0xIT09WyJiZXZlbCIsInJvdW5kIiwibWl0ZXIiXS5pbmRleE9mKHQpJiYodGhpcy5jdHgubGluZUpvaW49dCx0aGlzLnBkZi5zZXRMaW5lSm9pbih0KSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm1pdGVyTGltaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHgubWl0ZXJMaW1pdH0sc2V0OmZ1bmN0aW9uKHQpe2lzTmFOKHQpfHwodGhpcy5jdHgubWl0ZXJMaW1pdD10LHRoaXMucGRmLnNldE1pdGVyTGltaXQodCkpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ0ZXh0QmFzZWxpbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHgudGV4dEJhc2VsaW5lfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5jdHgudGV4dEJhc2VsaW5lPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRleHRBbGlnbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC50ZXh0QWxpZ259LHNldDpmdW5jdGlvbih0KXstMSE9PVsicmlnaHQiLCJlbmQiLCJjZW50ZXIiLCJsZWZ0Iiwic3RhcnQiXS5pbmRleE9mKHQpJiYodGhpcy5jdHgudGV4dEFsaWduPXQpfX0pO3ZhciBsPW51bGw7ZnVuY3Rpb24gaCh0LGUpe2lmKG51bGw9PT1sKXt2YXIgcj1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dFtyXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj1udWxsO3N3aXRjaCh0KXtjYXNlImJvbGQiOm49e2ZhbWlseTpyLHdlaWdodDoiYm9sZCJ9O2JyZWFrO2Nhc2UiaXRhbGljIjpuPXtmYW1pbHk6cixzdHlsZToiaXRhbGljIn07YnJlYWs7Y2FzZSJib2xkaXRhbGljIjpuPXtmYW1pbHk6cix3ZWlnaHQ6ImJvbGQiLHN0eWxlOiJpdGFsaWMifTticmVhaztjYXNlIiI6Y2FzZSJub3JtYWwiOm49e2ZhbWlseTpyfX1udWxsIT09biYmKG4ucmVmPXtuYW1lOnIsc3R5bGU6dH0sZS5wdXNoKG4pKX0pKX0pKSxlfSh0LmdldEZvbnRMaXN0KCkpO2w9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQubGVuZ3RoOysrcil7dmFyIG49Q3QodFtyXSksaT1uLmZhbWlseSxhPW4uc3RyZXRjaCxvPW4uc3R5bGUscz1uLndlaWdodDtlW2ldPWVbaV18fHt9LGVbaV1bYV09ZVtpXVthXXx8e30sZVtpXVthXVtvXT1lW2ldW2FdW29dfHx7fSxlW2ldW2FdW29dW3NdPW59cmV0dXJuIGV9KHIuY29uY2F0KGUpKX1yZXR1cm4gbH12YXIgcD1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJmb250RmFjZXMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sc2V0OmZ1bmN0aW9uKHQpe2w9bnVsbCxwPXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImZvbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZm9udH0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlO2lmKHRoaXMuY3R4LmZvbnQ9dCxudWxsIT09KGU9L15ccyooPz0oPzooPzpbLWEtel0rXHMqKXswLDJ9KGl0YWxpY3xvYmxpcXVlKSk\/KSg\/PSg\/Oig\/OlstYS16XStccyopezAsMn0oc21hbGwtY2FwcykpPykoPz0oPzooPzpbLWEtel0rXHMqKXswLDJ9KGJvbGQoPzplcik\/fGxpZ2h0ZXJ8WzEtOV0wMCkpPykoPzooPzpub3JtYWx8XDF8XDJ8XDMpXHMqKXswLDN9KCg\/Onh4Py0pPyg\/OnNtYWxsfGxhcmdlKXxtZWRpdW18c21hbGxlcnxsYXJnZXJ8Wy5cZF0rKD86XCV8aW58W2NlbV1tfGV4fHBbY3R4XSkpKD86XHMqXC9ccyoobm9ybWFsfFsuXGRdKyg\/OlwlfGlufFtjZW1dbXxleHxwW2N0eF0pKSk\/XHMqKFstXyxcIlwnXHNhLXpdKz8pXHMqJC9pLmV4ZWModCkpKXt2YXIgcj1lWzFdLG49KGVbMl0sZVszXSksaT1lWzRdLGE9KGVbNV0sZVs2XSksbz0vXihbLlxkXSspKCg\/OiV8aW58W2NlbV1tfGV4fHBbY3R4XSkpJC9pLmV4ZWMoaSlbMl07aT0icHgiPT09bz9NYXRoLmZsb29yKHBhcnNlRmxvYXQoaSkqdGhpcy5wZGYuaW50ZXJuYWwuc2NhbGVGYWN0b3IpOiJlbSI9PT1vP01hdGguZmxvb3IocGFyc2VGbG9hdChpKSp0aGlzLnBkZi5nZXRGb250U2l6ZSgpKTpNYXRoLmZsb29yKHBhcnNlRmxvYXQoaSkqdGhpcy5wZGYuaW50ZXJuYWwuc2NhbGVGYWN0b3IpLHRoaXMucGRmLnNldEZvbnRTaXplKGkpO3ZhciBzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj1bXSxpPXQudHJpbSgpO2lmKCIiPT09aSlyZXR1cm4gVHQ7aWYoaSBpbiBCdClyZXR1cm5bQnRbaV1dO2Zvcig7IiIhPT1pOyl7c3dpdGNoKHI9bnVsbCxlPShpPXF0KGkpKS5jaGFyQXQoMCkpe2Nhc2UnIic6Y2FzZSInIjpyPUR0KGkuc3Vic3RyaW5nKDEpLGUpO2JyZWFrO2RlZmF1bHQ6cj1SdChpKX1pZihudWxsPT09cilyZXR1cm4gVHQ7aWYobi5wdXNoKHJbMF0pLCIiIT09KGk9cXQoclsxXSkpJiYiLCIhPT1pLmNoYXJBdCgwKSlyZXR1cm4gVHQ7aT1pLnJlcGxhY2UoL14sLywiIil9cmV0dXJuIG59KGEpO2lmKHRoaXMuZm9udEZhY2VzKXt2YXIgYz1FdChoKHRoaXMucGRmLHRoaXMuZm9udEZhY2VzKSxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2ZhbWlseTp0LHN0cmV0Y2g6Im5vcm1hbCIsd2VpZ2h0Om4sc3R5bGU6cn19KSkpO3RoaXMucGRmLnNldEZvbnQoYy5yZWYubmFtZSxjLnJlZi5zdHlsZSl9ZWxzZXt2YXIgdT0iIjsoImJvbGQiPT09bnx8cGFyc2VJbnQobiwxMCk+PTcwMHx8ImJvbGQiPT09cikmJih1PSJib2xkIiksIml0YWxpYyI9PT1yJiYodSs9Iml0YWxpYyIpLDA9PT11Lmxlbmd0aCYmKHU9Im5vcm1hbCIpO2Zvcih2YXIgbD0iIixmPXthcmlhbDoiSGVsdmV0aWNhIixBcmlhbDoiSGVsdmV0aWNhIix2ZXJkYW5hOiJIZWx2ZXRpY2EiLFZlcmRhbmE6IkhlbHZldGljYSIsaGVsdmV0aWNhOiJIZWx2ZXRpY2EiLEhlbHZldGljYToiSGVsdmV0aWNhIiwic2Fucy1zZXJpZiI6IkhlbHZldGljYSIsZml4ZWQ6IkNvdXJpZXIiLG1vbm9zcGFjZToiQ291cmllciIsdGVybWluYWw6IkNvdXJpZXIiLGN1cnNpdmU6IlRpbWVzIixmYW50YXN5OiJUaW1lcyIsc2VyaWY6IlRpbWVzIn0sZD0wO2Q8cy5sZW5ndGg7ZCsrKXtpZih2b2lkIDAhPT10aGlzLnBkZi5pbnRlcm5hbC5nZXRGb250KHNbZF0sdSx7bm9GYWxsYmFjazohMCxkaXNhYmxlV2FybmluZzohMH0pKXtsPXNbZF07YnJlYWt9aWYoImJvbGRpdGFsaWMiPT09dSYmdm9pZCAwIT09dGhpcy5wZGYuaW50ZXJuYWwuZ2V0Rm9udChzW2RdLCJib2xkIix7bm9GYWxsYmFjazohMCxkaXNhYmxlV2FybmluZzohMH0pKWw9c1tkXSx1PSJib2xkIjtlbHNlIGlmKHZvaWQgMCE9PXRoaXMucGRmLmludGVybmFsLmdldEZvbnQoc1tkXSwibm9ybWFsIix7bm9GYWxsYmFjazohMCxkaXNhYmxlV2FybmluZzohMH0pKXtsPXNbZF0sdT0ibm9ybWFsIjticmVha319aWYoIiI9PT1sKWZvcih2YXIgcD0wO3A8cy5sZW5ndGg7cCsrKWlmKGZbc1twXV0pe2w9ZltzW3BdXTticmVha31sPSIiPT09bD8iVGltZXMiOmwsdGhpcy5wZGYuc2V0Rm9udChsLHUpfX19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb259LHNldDpmdW5jdGlvbih0KXt0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZ2xvYmFsQWxwaGEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2xvYmFsQWxwaGF9LHNldDpmdW5jdGlvbih0KXt0aGlzLmN0eC5nbG9iYWxBbHBoYT10fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsaW5lRGFzaE9mZnNldCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC5saW5lRGFzaE9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmxpbmVEYXNoT2Zmc2V0PXQsVC5jYWxsKHRoaXMpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJsaW5lRGFzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN0eC5saW5lRGFzaH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmxpbmVEYXNoPXQsVC5jYWxsKHRoaXMpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZ25vcmVDbGVhclJlY3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguaWdub3JlQ2xlYXJSZWN0fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5jdHguaWdub3JlQ2xlYXJSZWN0PUJvb2xlYW4odCl9fSl9O3AucHJvdG90eXBlLnNldExpbmVEYXNoPWZ1bmN0aW9uKHQpe3RoaXMubGluZURhc2g9dH0scC5wcm90b3R5cGUuZ2V0TGluZURhc2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lRGFzaC5sZW5ndGglMj90aGlzLmxpbmVEYXNoLmNvbmNhdCh0aGlzLmxpbmVEYXNoKTp0aGlzLmxpbmVEYXNoLnNsaWNlKCl9LHAucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oKXtBLmNhbGwodGhpcywiZmlsbCIsITEpfSxwLnByb3RvdHlwZS5zdHJva2U9ZnVuY3Rpb24oKXtBLmNhbGwodGhpcywic3Ryb2tlIiwhMSl9LHAucHJvdG90eXBlLmJlZ2luUGF0aD1mdW5jdGlvbigpe3RoaXMucGF0aD1be3R5cGU6ImJlZ2luIn1dfSxwLnByb3RvdHlwZS5tb3ZlVG89ZnVuY3Rpb24odCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgaS5lcnJvcigianNQREYuY29udGV4dDJkLm1vdmVUbzogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLm1vdmVUbyIpO3ZhciByPXRoaXMuY3R4LnRyYW5zZm9ybS5hcHBseVRvUG9pbnQobmV3IGModCxlKSk7dGhpcy5wYXRoLnB1c2goe3R5cGU6Im10Iix4OnIueCx5OnIueX0pLHRoaXMuY3R4Lmxhc3RQb2ludD1uZXcgYyh0LGUpfSxwLnByb3RvdHlwZS5jbG9zZVBhdGg9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgYygwLDApLHI9MDtmb3Iocj10aGlzLnBhdGgubGVuZ3RoLTE7LTEhPT1yO3ItLSlpZigiYmVnaW4iPT09dGhpcy5wYXRoW3JdLnR5cGUmJiJvYmplY3QiPT09ZSh0aGlzLnBhdGhbcisxXSkmJiJudW1iZXIiPT10eXBlb2YgdGhpcy5wYXRoW3IrMV0ueCl7dD1uZXcgYyh0aGlzLnBhdGhbcisxXS54LHRoaXMucGF0aFtyKzFdLnkpO2JyZWFrfXRoaXMucGF0aC5wdXNoKHt0eXBlOiJjbG9zZSJ9KSx0aGlzLmN0eC5sYXN0UG9pbnQ9bmV3IGModC54LHQueSl9LHAucHJvdG90eXBlLmxpbmVUbz1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQubGluZVRvOiBJbnZhbGlkIGFyZ3VtZW50cyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jb250ZXh0MmQubGluZVRvIik7dmFyIHI9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9Qb2ludChuZXcgYyh0LGUpKTt0aGlzLnBhdGgucHVzaCh7dHlwZToibHQiLHg6ci54LHk6ci55fSksdGhpcy5jdHgubGFzdFBvaW50PW5ldyBjKHIueCxyLnkpfSxwLnByb3RvdHlwZS5jbGlwPWZ1bmN0aW9uKCl7dGhpcy5jdHguY2xpcF9wYXRoPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXRoKSksQS5jYWxsKHRoaXMsbnVsbCwhMCl9LHAucHJvdG90eXBlLnF1YWRyYXRpY0N1cnZlVG89ZnVuY3Rpb24odCxlLHIsbil7aWYoaXNOYU4ocil8fGlzTmFOKG4pfHxpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgaS5lcnJvcigianNQREYuY29udGV4dDJkLnF1YWRyYXRpY0N1cnZlVG86IEludmFsaWQgYXJndW1lbnRzIixhcmd1bWVudHMpLG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmNvbnRleHQyZC5xdWFkcmF0aWNDdXJ2ZVRvIik7dmFyIGE9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9Qb2ludChuZXcgYyhyLG4pKSxvPXRoaXMuY3R4LnRyYW5zZm9ybS5hcHBseVRvUG9pbnQobmV3IGModCxlKSk7dGhpcy5wYXRoLnB1c2goe3R5cGU6InFjdCIseDE6by54LHkxOm8ueSx4OmEueCx5OmEueX0pLHRoaXMuY3R4Lmxhc3RQb2ludD1uZXcgYyhhLngsYS55KX0scC5wcm90b3R5cGUuYmV6aWVyQ3VydmVUbz1mdW5jdGlvbih0LGUscixuLGEsbyl7aWYoaXNOYU4oYSl8fGlzTmFOKG8pfHxpc05hTih0KXx8aXNOYU4oZSl8fGlzTmFOKHIpfHxpc05hTihuKSl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQuYmV6aWVyQ3VydmVUbzogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLmJlemllckN1cnZlVG8iKTt2YXIgcz10aGlzLmN0eC50cmFuc2Zvcm0uYXBwbHlUb1BvaW50KG5ldyBjKGEsbykpLHU9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9Qb2ludChuZXcgYyh0LGUpKSxsPXRoaXMuY3R4LnRyYW5zZm9ybS5hcHBseVRvUG9pbnQobmV3IGMocixuKSk7dGhpcy5wYXRoLnB1c2goe3R5cGU6ImJjdCIseDE6dS54LHkxOnUueSx4MjpsLngseTI6bC55LHg6cy54LHk6cy55fSksdGhpcy5jdHgubGFzdFBvaW50PW5ldyBjKHMueCxzLnkpfSxwLnByb3RvdHlwZS5hcmM9ZnVuY3Rpb24odCxlLHIsbixhLG8pe2lmKGlzTmFOKHQpfHxpc05hTihlKXx8aXNOYU4ocil8fGlzTmFOKG4pfHxpc05hTihhKSl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQuYXJjOiBJbnZhbGlkIGFyZ3VtZW50cyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jb250ZXh0MmQuYXJjIik7aWYobz1Cb29sZWFuKG8pLCF0aGlzLmN0eC50cmFuc2Zvcm0uaXNJZGVudGl0eSl7dmFyIHM9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9Qb2ludChuZXcgYyh0LGUpKTt0PXMueCxlPXMueTt2YXIgdT10aGlzLmN0eC50cmFuc2Zvcm0uYXBwbHlUb1BvaW50KG5ldyBjKDAscikpLGw9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9Qb2ludChuZXcgYygwLDApKTtyPU1hdGguc3FydChNYXRoLnBvdyh1LngtbC54LDIpK01hdGgucG93KHUueS1sLnksMikpfU1hdGguYWJzKGEtbik+PTIqTWF0aC5QSSYmKG49MCxhPTIqTWF0aC5QSSksdGhpcy5wYXRoLnB1c2goe3R5cGU6ImFyYyIseDp0LHk6ZSxyYWRpdXM6cixzdGFydEFuZ2xlOm4sZW5kQW5nbGU6YSxjb3VudGVyY2xvY2t3aXNlOm99KX0scC5wcm90b3R5cGUuYXJjVG89ZnVuY3Rpb24odCxlLHIsbixpKXt0aHJvdyBuZXcgRXJyb3IoImFyY1RvIG5vdCBpbXBsZW1lbnRlZC4iKX0scC5wcm90b3R5cGUucmVjdD1mdW5jdGlvbih0LGUscixuKXtpZihpc05hTih0KXx8aXNOYU4oZSl8fGlzTmFOKHIpfHxpc05hTihuKSl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQucmVjdDogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLnJlY3QiKTt0aGlzLm1vdmVUbyh0LGUpLHRoaXMubGluZVRvKHQrcixlKSx0aGlzLmxpbmVUbyh0K3IsZStuKSx0aGlzLmxpbmVUbyh0LGUrbiksdGhpcy5saW5lVG8odCxlKSx0aGlzLmxpbmVUbyh0K3IsZSksdGhpcy5saW5lVG8odCxlKX0scC5wcm90b3R5cGUuZmlsbFJlY3Q9ZnVuY3Rpb24odCxlLHIsbil7aWYoaXNOYU4odCl8fGlzTmFOKGUpfHxpc05hTihyKXx8aXNOYU4obikpdGhyb3cgaS5lcnJvcigianNQREYuY29udGV4dDJkLmZpbGxSZWN0OiBJbnZhbGlkIGFyZ3VtZW50cyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jb250ZXh0MmQuZmlsbFJlY3QiKTtpZighbS5jYWxsKHRoaXMpKXt2YXIgYT17fTsiYnV0dCIhPT10aGlzLmxpbmVDYXAmJihhLmxpbmVDYXA9dGhpcy5saW5lQ2FwLHRoaXMubGluZUNhcD0iYnV0dCIpLCJtaXRlciIhPT10aGlzLmxpbmVKb2luJiYoYS5saW5lSm9pbj10aGlzLmxpbmVKb2luLHRoaXMubGluZUpvaW49Im1pdGVyIiksdGhpcy5iZWdpblBhdGgoKSx0aGlzLnJlY3QodCxlLHIsbiksdGhpcy5maWxsKCksYS5oYXNPd25Qcm9wZXJ0eSgibGluZUNhcCIpJiYodGhpcy5saW5lQ2FwPWEubGluZUNhcCksYS5oYXNPd25Qcm9wZXJ0eSgibGluZUpvaW4iKSYmKHRoaXMubGluZUpvaW49YS5saW5lSm9pbil9fSxwLnByb3RvdHlwZS5zdHJva2VSZWN0PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKGlzTmFOKHQpfHxpc05hTihlKXx8aXNOYU4ocil8fGlzTmFOKG4pKXRocm93IGkuZXJyb3IoImpzUERGLmNvbnRleHQyZC5zdHJva2VSZWN0OiBJbnZhbGlkIGFyZ3VtZW50cyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jb250ZXh0MmQuc3Ryb2tlUmVjdCIpO3YuY2FsbCh0aGlzKXx8KHRoaXMuYmVnaW5QYXRoKCksdGhpcy5yZWN0KHQsZSxyLG4pLHRoaXMuc3Ryb2tlKCkpfSxwLnByb3RvdHlwZS5jbGVhclJlY3Q9ZnVuY3Rpb24odCxlLHIsbil7aWYoaXNOYU4odCl8fGlzTmFOKGUpfHxpc05hTihyKXx8aXNOYU4obikpdGhyb3cgaS5lcnJvcigianNQREYuY29udGV4dDJkLmNsZWFyUmVjdDogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLmNsZWFyUmVjdCIpO3RoaXMuaWdub3JlQ2xlYXJSZWN0fHwodGhpcy5maWxsU3R5bGU9IiNmZmZmZmYiLHRoaXMuZmlsbFJlY3QodCxlLHIsbikpfSxwLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKHQpe3Q9ImJvb2xlYW4iIT10eXBlb2YgdHx8dDtmb3IodmFyIGU9dGhpcy5wZGYuaW50ZXJuYWwuZ2V0Q3VycmVudFBhZ2VJbmZvKCkucGFnZU51bWJlcixyPTA7cjx0aGlzLnBkZi5pbnRlcm5hbC5nZXROdW1iZXJPZlBhZ2VzKCk7cisrKXRoaXMucGRmLnNldFBhZ2UocisxKSx0aGlzLnBkZi5pbnRlcm5hbC5vdXQoInEiKTtpZih0aGlzLnBkZi5zZXRQYWdlKGUpLHQpe3RoaXMuY3R4LmZvbnRTaXplPXRoaXMucGRmLmludGVybmFsLmdldEZvbnRTaXplKCk7dmFyIG49bmV3IGQodGhpcy5jdHgpO3RoaXMuY3R4U3RhY2sucHVzaCh0aGlzLmN0eCksdGhpcy5jdHg9bn19LHAucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24odCl7dD0iYm9vbGVhbiIhPXR5cGVvZiB0fHx0O2Zvcih2YXIgZT10aGlzLnBkZi5pbnRlcm5hbC5nZXRDdXJyZW50UGFnZUluZm8oKS5wYWdlTnVtYmVyLHI9MDtyPHRoaXMucGRmLmludGVybmFsLmdldE51bWJlck9mUGFnZXMoKTtyKyspdGhpcy5wZGYuc2V0UGFnZShyKzEpLHRoaXMucGRmLmludGVybmFsLm91dCgiUSIpO3RoaXMucGRmLnNldFBhZ2UoZSksdCYmMCE9PXRoaXMuY3R4U3RhY2subGVuZ3RoJiYodGhpcy5jdHg9dGhpcy5jdHhTdGFjay5wb3AoKSx0aGlzLmZpbGxTdHlsZT10aGlzLmN0eC5maWxsU3R5bGUsdGhpcy5zdHJva2VTdHlsZT10aGlzLmN0eC5zdHJva2VTdHlsZSx0aGlzLmZvbnQ9dGhpcy5jdHguZm9udCx0aGlzLmxpbmVDYXA9dGhpcy5jdHgubGluZUNhcCx0aGlzLmxpbmVXaWR0aD10aGlzLmN0eC5saW5lV2lkdGgsdGhpcy5saW5lSm9pbj10aGlzLmN0eC5saW5lSm9pbix0aGlzLmxpbmVEYXNoPXRoaXMuY3R4LmxpbmVEYXNoLHRoaXMubGluZURhc2hPZmZzZXQ9dGhpcy5jdHgubGluZURhc2hPZmZzZXQpfSxwLnByb3RvdHlwZS50b0RhdGFVUkw9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRvRGF0YVVybCBub3QgaW1wbGVtZW50ZWQuIil9O3ZhciBnPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpO2lmKCEwPT09dC5pc0NhbnZhc0dyYWRpZW50JiYodD10LmdldENvbG9yKCkpLCF0KXJldHVybntyOjAsZzowLGI6MCxhOjAsc3R5bGU6dH07aWYoL3RyYW5zcGFyZW50fHJnYmFccypcKFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKjArXHMqXCkvLnRlc3QodCkpZT0wLHI9MCxuPTAsaT0wO2Vsc2V7dmFyIGE9L3JnYlxzKlwoXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccypcKS8uZXhlYyh0KTtpZihudWxsIT09YSllPXBhcnNlSW50KGFbMV0pLHI9cGFyc2VJbnQoYVsyXSksbj1wYXJzZUludChhWzNdKSxpPTE7ZWxzZSBpZihudWxsIT09KGE9L3JnYmFccypcKFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihbXGQuXSspXHMqXCkvLmV4ZWModCkpKWU9cGFyc2VJbnQoYVsxXSkscj1wYXJzZUludChhWzJdKSxuPXBhcnNlSW50KGFbM10pLGk9cGFyc2VGbG9hdChhWzRdKTtlbHNle2lmKGk9MSwic3RyaW5nIj09dHlwZW9mIHQmJiIjIiE9PXQuY2hhckF0KDApKXt2YXIgbz1uZXcgaCh0KTt0PW8ub2s\/by50b0hleCgpOiIjMDAwMDAwIn00PT09dC5sZW5ndGg\/KGU9dC5zdWJzdHJpbmcoMSwyKSxlKz1lLHI9dC5zdWJzdHJpbmcoMiwzKSxyKz1yLG49dC5zdWJzdHJpbmcoMyw0KSxuKz1uKTooZT10LnN1YnN0cmluZygxLDMpLHI9dC5zdWJzdHJpbmcoMyw1KSxuPXQuc3Vic3RyaW5nKDUsNykpLGU9cGFyc2VJbnQoZSwxNikscj1wYXJzZUludChyLDE2KSxuPXBhcnNlSW50KG4sMTYpfX1yZXR1cm57cjplLGc6cixiOm4sYTppLHN0eWxlOnR9fSxtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3R4LmlzRmlsbFRyYW5zcGFyZW50fHwwPT10aGlzLmdsb2JhbEFscGhhfSx2PWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5jdHguaXNTdHJva2VUcmFuc3BhcmVudHx8MD09dGhpcy5nbG9iYWxBbHBoYSl9O3AucHJvdG90eXBlLmZpbGxUZXh0PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKGlzTmFOKGUpfHxpc05hTihyKXx8InN0cmluZyIhPXR5cGVvZiB0KXRocm93IGkuZXJyb3IoImpzUERGLmNvbnRleHQyZC5maWxsVGV4dDogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLmZpbGxUZXh0Iik7aWYobj1pc05hTihuKT92b2lkIDA6biwhbS5jYWxsKHRoaXMpKXt2YXIgYT1xKHRoaXMuY3R4LnRyYW5zZm9ybS5yb3RhdGlvbiksbz10aGlzLmN0eC50cmFuc2Zvcm0uc2NhbGVYO0MuY2FsbCh0aGlzLHt0ZXh0OnQseDplLHk6cixzY2FsZTpvLGFuZ2xlOmEsYWxpZ246dGhpcy50ZXh0QWxpZ24sbWF4V2lkdGg6bn0pfX0scC5wcm90b3R5cGUuc3Ryb2tlVGV4dD1mdW5jdGlvbih0LGUscixuKXtpZihpc05hTihlKXx8aXNOYU4ocil8fCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQuc3Ryb2tlVGV4dDogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLnN0cm9rZVRleHQiKTtpZighdi5jYWxsKHRoaXMpKXtuPWlzTmFOKG4pP3ZvaWQgMDpuO3ZhciBhPXEodGhpcy5jdHgudHJhbnNmb3JtLnJvdGF0aW9uKSxvPXRoaXMuY3R4LnRyYW5zZm9ybS5zY2FsZVg7Qy5jYWxsKHRoaXMse3RleHQ6dCx4OmUseTpyLHNjYWxlOm8scmVuZGVyaW5nTW9kZToic3Ryb2tlIixhbmdsZTphLGFsaWduOnRoaXMudGV4dEFsaWduLG1heFdpZHRoOm59KX19LHAucHJvdG90eXBlLm1lYXN1cmVUZXh0PWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQubWVhc3VyZVRleHQ6IEludmFsaWQgYXJndW1lbnRzIixhcmd1bWVudHMpLG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmNvbnRleHQyZC5tZWFzdXJlVGV4dCIpO3ZhciBlPXRoaXMucGRmLHI9dGhpcy5wZGYuaW50ZXJuYWwuc2NhbGVGYWN0b3Isbj1lLmludGVybmFsLmdldEZvbnRTaXplKCksYT1lLmdldFN0cmluZ1VuaXRXaWR0aCh0KSpuL2UuaW50ZXJuYWwuc2NhbGVGYWN0b3Isbz1mdW5jdGlvbih0KXt2YXIgZT0odD10fHx7fSkud2lkdGh8fDA7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ3aWR0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiBlfX0pLHRoaXN9O3JldHVybiBuZXcgbyh7d2lkdGg6YSo9TWF0aC5yb3VuZCg5NipyLzcyKjFlNCkvMWU0fSl9LHAucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQsZSl7aWYoaXNOYU4odCl8fGlzTmFOKGUpKXRocm93IGkuZXJyb3IoImpzUERGLmNvbnRleHQyZC5zY2FsZTogSW52YWxpZCBhcmd1bWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8ganNQREYuY29udGV4dDJkLnNjYWxlIik7dmFyIHI9bmV3IGwodCwwLDAsZSwwLDApO3RoaXMuY3R4LnRyYW5zZm9ybT10aGlzLmN0eC50cmFuc2Zvcm0ubXVsdGlwbHkocil9LHAucHJvdG90eXBlLnJvdGF0ZT1mdW5jdGlvbih0KXtpZihpc05hTih0KSl0aHJvdyBpLmVycm9yKCJqc1BERi5jb250ZXh0MmQucm90YXRlOiBJbnZhbGlkIGFyZ3VtZW50cyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHBhc3NlZCB0byBqc1BERi5jb250ZXh0MmQucm90YXRlIik7dmFyIGU9bmV3IGwoTWF0aC5jb3ModCksTWF0aC5zaW4odCksLU1hdGguc2luKHQpLE1hdGguY29zKHQpLDAsMCk7dGhpcy5jdHgudHJhbnNmb3JtPXRoaXMuY3R4LnRyYW5zZm9ybS5tdWx0aXBseShlKX0scC5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSl7aWYoaXNOYU4odCl8fGlzTmFOKGUpKXRocm93IGkuZXJyb3IoImpzUERGLmNvbnRleHQyZC50cmFuc2xhdGU6IEludmFsaWQgYXJndW1lbnRzIixhcmd1bWVudHMpLG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmNvbnRleHQyZC50cmFuc2xhdGUiKTt2YXIgcj1uZXcgbCgxLDAsMCwxLHQsZSk7dGhpcy5jdHgudHJhbnNmb3JtPXRoaXMuY3R4LnRyYW5zZm9ybS5tdWx0aXBseShyKX0scC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyLG4sYSxvKXtpZihpc05hTih0KXx8aXNOYU4oZSl8fGlzTmFOKHIpfHxpc05hTihuKXx8aXNOYU4oYSl8fGlzTmFOKG8pKXRocm93IGkuZXJyb3IoImpzUERGLmNvbnRleHQyZC50cmFuc2Zvcm06IEludmFsaWQgYXJndW1lbnRzIixhcmd1bWVudHMpLG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudHMgcGFzc2VkIHRvIGpzUERGLmNvbnRleHQyZC50cmFuc2Zvcm0iKTt2YXIgcz1uZXcgbCh0LGUscixuLGEsbyk7dGhpcy5jdHgudHJhbnNmb3JtPXRoaXMuY3R4LnRyYW5zZm9ybS5tdWx0aXBseShzKX0scC5wcm90b3R5cGUuc2V0VHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXt0PWlzTmFOKHQpPzE6dCxlPWlzTmFOKGUpPzA6ZSxyPWlzTmFOKHIpPzA6cixuPWlzTmFOKG4pPzE6bixpPWlzTmFOKGkpPzA6aSxhPWlzTmFOKGEpPzA6YSx0aGlzLmN0eC50cmFuc2Zvcm09bmV3IGwodCxlLHIsbixpLGEpfTt2YXIgYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcmdpblswXT4wfHx0aGlzLm1hcmdpblsxXT4wfHx0aGlzLm1hcmdpblsyXT4wfHx0aGlzLm1hcmdpblszXT4wfTtwLnByb3RvdHlwZS5kcmF3SW1hZ2U9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGMpe3ZhciBoPXRoaXMucGRmLmdldEltYWdlUHJvcGVydGllcyh0KSxmPTEsZD0xLHA9MSxnPTE7dm9pZCAwIT09biYmdm9pZCAwIT09cyYmKHA9cy9uLGc9Yy9pLGY9aC53aWR0aC9uKnMvbixkPWguaGVpZ2h0L2kqYy9pKSx2b2lkIDA9PT1hJiYoYT1lLG89cixlPTAscj0wKSx2b2lkIDAhPT1uJiZ2b2lkIDA9PT1zJiYocz1uLGM9aSksdm9pZCAwPT09biYmdm9pZCAwPT09cyYmKHM9aC53aWR0aCxjPWguaGVpZ2h0KTtmb3IodmFyIG0sdj10aGlzLmN0eC50cmFuc2Zvcm0uZGVjb21wb3NlKCksdz1xKHYucm90YXRlLnNoeCksQT1uZXcgbCxTPShBPShBPShBPUEubXVsdGlwbHkodi50cmFuc2xhdGUpKS5tdWx0aXBseSh2LnNrZXcpKS5tdWx0aXBseSh2LnNjYWxlKSkuYXBwbHlUb1JlY3RhbmdsZShuZXcgdShhLWUqcCxvLXIqZyxuKmYsaSpkKSksXz15LmNhbGwodGhpcyxTKSxQPVtdLGs9MDtrPF8ubGVuZ3RoO2srPTEpLTE9PT1QLmluZGV4T2YoX1trXSkmJlAucHVzaChfW2tdKTtpZihMKFApLHRoaXMuYXV0b1BhZ2luZylmb3IodmFyIEY9UFswXSxJPVBbUC5sZW5ndGgtMV0sQz1GO0M8SSsxO0MrKyl7dGhpcy5wZGYuc2V0UGFnZShDKTt2YXIgaj10aGlzLnBkZi5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aC10aGlzLm1hcmdpblszXS10aGlzLm1hcmdpblsxXSxPPTE9PT1DP3RoaXMucG9zWSt0aGlzLm1hcmdpblswXTp0aGlzLm1hcmdpblswXSxCPXRoaXMucGRmLmludGVybmFsLnBhZ2VTaXplLmhlaWdodC10aGlzLnBvc1ktdGhpcy5tYXJnaW5bMF0tdGhpcy5tYXJnaW5bMl0sTT10aGlzLnBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQtdGhpcy5tYXJnaW5bMF0tdGhpcy5tYXJnaW5bMl0sRT0xPT09Qz8wOkIrKEMtMikqTTtpZigwIT09dGhpcy5jdHguY2xpcF9wYXRoLmxlbmd0aCl7dmFyIEQ9dGhpcy5wYXRoO209SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmN0eC5jbGlwX3BhdGgpKSx0aGlzLnBhdGg9TihtLHRoaXMucG9zWCt0aGlzLm1hcmdpblszXSwtRStPK3RoaXMuY3R4LnByZXZQYWdlTGFzdEVsZW1PZmZzZXQpLHguY2FsbCh0aGlzLCJmaWxsIiwhMCksdGhpcy5wYXRoPUR9dmFyIFI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShTKSk7Uj1OKFtSXSx0aGlzLnBvc1grdGhpcy5tYXJnaW5bM10sLUUrTyt0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0KVswXTt2YXIgVD0oQz5GfHxDPEkpJiZiLmNhbGwodGhpcyk7VCYmKHRoaXMucGRmLnNhdmVHcmFwaGljc1N0YXRlKCksdGhpcy5wZGYucmVjdCh0aGlzLm1hcmdpblszXSx0aGlzLm1hcmdpblswXSxqLE0sbnVsbCkuY2xpcCgpLmRpc2NhcmRQYXRoKCkpLHRoaXMucGRmLmFkZEltYWdlKHQsIkpQRUciLFIueCxSLnksUi53LFIuaCxudWxsLG51bGwsdyksVCYmdGhpcy5wZGYucmVzdG9yZUdyYXBoaWNzU3RhdGUoKX1lbHNlIHRoaXMucGRmLmFkZEltYWdlKHQsIkpQRUciLFMueCxTLnksUy53LFMuaCxudWxsLG51bGwsdyl9O3ZhciB5PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bXTtlPWV8fHRoaXMucGRmLmludGVybmFsLnBhZ2VTaXplLndpZHRoLHI9cnx8dGhpcy5wZGYuaW50ZXJuYWwucGFnZVNpemUuaGVpZ2h0LXRoaXMubWFyZ2luWzBdLXRoaXMubWFyZ2luWzJdO3ZhciBpPXRoaXMucG9zWSt0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0O3N3aXRjaCh0LnR5cGUpe2RlZmF1bHQ6Y2FzZSJtdCI6Y2FzZSJsdCI6bi5wdXNoKE1hdGguZmxvb3IoKHQueStpKS9yKSsxKTticmVhaztjYXNlImFyYyI6bi5wdXNoKE1hdGguZmxvb3IoKHQueStpLXQucmFkaXVzKS9yKSsxKSxuLnB1c2goTWF0aC5mbG9vcigodC55K2krdC5yYWRpdXMpL3IpKzEpO2JyZWFrO2Nhc2UicWN0Ijp2YXIgYT1EKHRoaXMuY3R4Lmxhc3RQb2ludC54LHRoaXMuY3R4Lmxhc3RQb2ludC55LHQueDEsdC55MSx0LngsdC55KTtuLnB1c2goTWF0aC5mbG9vcigoYS55K2kpL3IpKzEpLG4ucHVzaChNYXRoLmZsb29yKChhLnkrYS5oK2kpL3IpKzEpO2JyZWFrO2Nhc2UiYmN0Ijp2YXIgbz1SKHRoaXMuY3R4Lmxhc3RQb2ludC54LHRoaXMuY3R4Lmxhc3RQb2ludC55LHQueDEsdC55MSx0LngyLHQueTIsdC54LHQueSk7bi5wdXNoKE1hdGguZmxvb3IoKG8ueStpKS9yKSsxKSxuLnB1c2goTWF0aC5mbG9vcigoby55K28uaCtpKS9yKSsxKTticmVhaztjYXNlInJlY3QiOm4ucHVzaChNYXRoLmZsb29yKCh0LnkraSkvcikrMSksbi5wdXNoKE1hdGguZmxvb3IoKHQueSt0LmgraSkvcikrMSl9Zm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKz0xKWZvcig7dGhpcy5wZGYuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpPG5bc107KXcuY2FsbCh0aGlzKTtyZXR1cm4gbn0sdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZmlsbFN0eWxlLGU9dGhpcy5zdHJva2VTdHlsZSxyPXRoaXMuZm9udCxuPXRoaXMubGluZUNhcCxpPXRoaXMubGluZVdpZHRoLGE9dGhpcy5saW5lSm9pbjt0aGlzLnBkZi5hZGRQYWdlKCksdGhpcy5maWxsU3R5bGU9dCx0aGlzLnN0cm9rZVN0eWxlPWUsdGhpcy5mb250PXIsdGhpcy5saW5lQ2FwPW4sdGhpcy5saW5lV2lkdGg9aSx0aGlzLmxpbmVKb2luPWF9LE49ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXN3aXRjaCh0W25dLnR5cGUpe2Nhc2UiYmN0Ijp0W25dLngyKz1lLHRbbl0ueTIrPXI7Y2FzZSJxY3QiOnRbbl0ueDErPWUsdFtuXS55MSs9cjtjYXNlIm10IjpjYXNlImx0IjpjYXNlImFyYyI6ZGVmYXVsdDp0W25dLngrPWUsdFtuXS55Kz1yfXJldHVybiB0fSxMPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKX0sQT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGk9dGhpcy5maWxsU3R5bGUsYT10aGlzLnN0cm9rZVN0eWxlLG89dGhpcy5saW5lQ2FwLHM9dGhpcy5saW5lV2lkdGgsYz1NYXRoLmFicyhzKnRoaXMuY3R4LnRyYW5zZm9ybS5zY2FsZVgpLHU9dGhpcy5saW5lSm9pbixsPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXRoKSksaD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF0aCkpLGY9W10sZD0wO2Q8aC5sZW5ndGg7ZCsrKWlmKHZvaWQgMCE9PWhbZF0ueClmb3IodmFyIHA9eS5jYWxsKHRoaXMsaFtkXSksZz0wO2c8cC5sZW5ndGg7Zys9MSktMT09PWYuaW5kZXhPZihwW2ddKSYmZi5wdXNoKHBbZ10pO2Zvcih2YXIgbT0wO208Zi5sZW5ndGg7bSsrKWZvcig7dGhpcy5wZGYuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpPGZbbV07KXcuY2FsbCh0aGlzKTtpZihMKGYpLHRoaXMuYXV0b1BhZ2luZylmb3IodmFyIHY9ZlswXSxBPWZbZi5sZW5ndGgtMV0sUz12O1M8QSsxO1MrKyl7dGhpcy5wZGYuc2V0UGFnZShTKSx0aGlzLmZpbGxTdHlsZT1pLHRoaXMuc3Ryb2tlU3R5bGU9YSx0aGlzLmxpbmVDYXA9byx0aGlzLmxpbmVXaWR0aD1jLHRoaXMubGluZUpvaW49dTt2YXIgXz10aGlzLnBkZi5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aC10aGlzLm1hcmdpblszXS10aGlzLm1hcmdpblsxXSxQPTE9PT1TP3RoaXMucG9zWSt0aGlzLm1hcmdpblswXTp0aGlzLm1hcmdpblswXSxrPXRoaXMucGRmLmludGVybmFsLnBhZ2VTaXplLmhlaWdodC10aGlzLnBvc1ktdGhpcy5tYXJnaW5bMF0tdGhpcy5tYXJnaW5bMl0sRj10aGlzLnBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQtdGhpcy5tYXJnaW5bMF0tdGhpcy5tYXJnaW5bMl0sST0xPT09Uz8wOmsrKFMtMikqRjtpZigwIT09dGhpcy5jdHguY2xpcF9wYXRoLmxlbmd0aCl7dmFyIEM9dGhpcy5wYXRoO3I9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmN0eC5jbGlwX3BhdGgpKSx0aGlzLnBhdGg9TihyLHRoaXMucG9zWCt0aGlzLm1hcmdpblszXSwtSStQK3RoaXMuY3R4LnByZXZQYWdlTGFzdEVsZW1PZmZzZXQpLHguY2FsbCh0aGlzLHQsITApLHRoaXMucGF0aD1DfWlmKG49SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsKSksdGhpcy5wYXRoPU4obix0aGlzLnBvc1grdGhpcy5tYXJnaW5bM10sLUkrUCt0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0KSwhMT09PWV8fDA9PT1TKXt2YXIgaj0oUz52fHxTPEEpJiZiLmNhbGwodGhpcyk7aiYmKHRoaXMucGRmLnNhdmVHcmFwaGljc1N0YXRlKCksdGhpcy5wZGYucmVjdCh0aGlzLm1hcmdpblszXSx0aGlzLm1hcmdpblswXSxfLEYsbnVsbCkuY2xpcCgpLmRpc2NhcmRQYXRoKCkpLHguY2FsbCh0aGlzLHQsZSksaiYmdGhpcy5wZGYucmVzdG9yZUdyYXBoaWNzU3RhdGUoKX10aGlzLmxpbmVXaWR0aD1zfWVsc2UgdGhpcy5saW5lV2lkdGg9Yyx4LmNhbGwodGhpcyx0LGUpLHRoaXMubGluZVdpZHRoPXM7dGhpcy5wYXRoPWx9LHg9ZnVuY3Rpb24odCxlKXtpZigoInN0cm9rZSIhPT10fHxlfHwhdi5jYWxsKHRoaXMpKSYmKCJzdHJva2UiPT09dHx8ZXx8IW0uY2FsbCh0aGlzKSkpe2Zvcih2YXIgcixuLGk9W10sYT10aGlzLnBhdGgsbz0wO288YS5sZW5ndGg7bysrKXt2YXIgcz1hW29dO3N3aXRjaChzLnR5cGUpe2Nhc2UiYmVnaW4iOmkucHVzaCh7YmVnaW46ITB9KTticmVhaztjYXNlImNsb3NlIjppLnB1c2goe2Nsb3NlOiEwfSk7YnJlYWs7Y2FzZSJtdCI6aS5wdXNoKHtzdGFydDpzLGRlbHRhczpbXSxhYnM6W119KTticmVhaztjYXNlImx0Ijp2YXIgYz1pLmxlbmd0aDtpZihhW28tMV0mJiFpc05hTihhW28tMV0ueCkmJihyPVtzLngtYVtvLTFdLngscy55LWFbby0xXS55XSxjPjApKWZvcig7Yz49MDtjLS0paWYoITAhPT1pW2MtMV0uY2xvc2UmJiEwIT09aVtjLTFdLmJlZ2luKXtpW2MtMV0uZGVsdGFzLnB1c2gociksaVtjLTFdLmFicy5wdXNoKHMpO2JyZWFrfWJyZWFrO2Nhc2UiYmN0IjpyPVtzLngxLWFbby0xXS54LHMueTEtYVtvLTFdLnkscy54Mi1hW28tMV0ueCxzLnkyLWFbby0xXS55LHMueC1hW28tMV0ueCxzLnktYVtvLTFdLnldLGlbaS5sZW5ndGgtMV0uZGVsdGFzLnB1c2gocik7YnJlYWs7Y2FzZSJxY3QiOnZhciB1PWFbby0xXS54KzIvMyoocy54MS1hW28tMV0ueCksbD1hW28tMV0ueSsyLzMqKHMueTEtYVtvLTFdLnkpLGg9cy54KzIvMyoocy54MS1zLngpLGY9cy55KzIvMyoocy55MS1zLnkpLGQ9cy54LHA9cy55O3I9W3UtYVtvLTFdLngsbC1hW28tMV0ueSxoLWFbby0xXS54LGYtYVtvLTFdLnksZC1hW28tMV0ueCxwLWFbby0xXS55XSxpW2kubGVuZ3RoLTFdLmRlbHRhcy5wdXNoKHIpO2JyZWFrO2Nhc2UiYXJjIjppLnB1c2goe2RlbHRhczpbXSxhYnM6W10sYXJjOiEwfSksQXJyYXkuaXNBcnJheShpW2kubGVuZ3RoLTFdLmFicykmJmlbaS5sZW5ndGgtMV0uYWJzLnB1c2gocyl9fW49ZT9udWxsOiJzdHJva2UiPT09dD8ic3Ryb2tlIjoiZmlsbCI7Zm9yKHZhciBnPSExLGI9MDtiPGkubGVuZ3RoO2IrKylpZihpW2JdLmFyYylmb3IodmFyIHk9aVtiXS5hYnMsdz0wO3c8eS5sZW5ndGg7dysrKXt2YXIgTj15W3ddOyJhcmMiPT09Ti50eXBlP1AuY2FsbCh0aGlzLE4ueCxOLnksTi5yYWRpdXMsTi5zdGFydEFuZ2xlLE4uZW5kQW5nbGUsTi5jb3VudGVyY2xvY2t3aXNlLHZvaWQgMCxlLCFnKTpqLmNhbGwodGhpcyxOLngsTi55KSxnPSEwfWVsc2UgaWYoITA9PT1pW2JdLmNsb3NlKXRoaXMucGRmLmludGVybmFsLm91dCgiaCIpLGc9ITE7ZWxzZSBpZighMCE9PWlbYl0uYmVnaW4pe3ZhciBMPWlbYl0uc3RhcnQueCxBPWlbYl0uc3RhcnQueTtPLmNhbGwodGhpcyxpW2JdLmRlbHRhcyxMLEEpLGc9ITB9biYmay5jYWxsKHRoaXMsbiksZSYmRi5jYWxsKHRoaXMpfX0sUz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBkZi5pbnRlcm5hbC5nZXRGb250U2l6ZSgpL3RoaXMucGRmLmludGVybmFsLnNjYWxlRmFjdG9yLHI9ZSoodGhpcy5wZGYuaW50ZXJuYWwuZ2V0TGluZUhlaWdodEZhY3RvcigpLTEpO3N3aXRjaCh0aGlzLmN0eC50ZXh0QmFzZWxpbmUpe2Nhc2UiYm90dG9tIjpyZXR1cm4gdC1yO2Nhc2UidG9wIjpyZXR1cm4gdCtlLXI7Y2FzZSJoYW5naW5nIjpyZXR1cm4gdCtlLTIqcjtjYXNlIm1pZGRsZSI6cmV0dXJuIHQrZS8yLXI7Y2FzZSJpZGVvZ3JhcGhpYyI6cmV0dXJuIHQ7Y2FzZSJhbHBoYWJldGljIjpkZWZhdWx0OnJldHVybiB0fX0sXz1mdW5jdGlvbih0KXtyZXR1cm4gdCt0aGlzLnBkZi5pbnRlcm5hbC5nZXRGb250U2l6ZSgpL3RoaXMucGRmLmludGVybmFsLnNjYWxlRmFjdG9yKih0aGlzLnBkZi5pbnRlcm5hbC5nZXRMaW5lSGVpZ2h0RmFjdG9yKCktMSl9O3AucHJvdG90eXBlLmNyZWF0ZUxpbmVhckdyYWRpZW50PWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9O3JldHVybiB0LmNvbG9yU3RvcHM9W10sdC5hZGRDb2xvclN0b3A9ZnVuY3Rpb24odCxlKXt0aGlzLmNvbG9yU3RvcHMucHVzaChbdCxlXSl9LHQuZ2V0Q29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuY29sb3JTdG9wcy5sZW5ndGg\/IiMwMDAwMDAiOnRoaXMuY29sb3JTdG9wc1swXVsxXX0sdC5pc0NhbnZhc0dyYWRpZW50PSEwLHR9LHAucHJvdG90eXBlLmNyZWF0ZVBhdHRlcm49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jcmVhdGVMaW5lYXJHcmFkaWVudCgpfSxwLnByb3RvdHlwZS5jcmVhdGVSYWRpYWxHcmFkaWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNyZWF0ZUxpbmVhckdyYWRpZW50KCl9O3ZhciBQPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxjKXtmb3IodmFyIHU9TS5jYWxsKHRoaXMscixuLGksYSksbD0wO2w8dS5sZW5ndGg7bCsrKXt2YXIgaD11W2xdOzA9PT1sJiYoYz9JLmNhbGwodGhpcyxoLngxK3QsaC55MStlKTpqLmNhbGwodGhpcyxoLngxK3QsaC55MStlKSksQi5jYWxsKHRoaXMsdCxlLGgueDIsaC55MixoLngzLGgueTMsaC54NCxoLnk0KX1zP0YuY2FsbCh0aGlzKTprLmNhbGwodGhpcyxvKX0saz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJzdHJva2UiOnRoaXMucGRmLmludGVybmFsLm91dCgiUyIpO2JyZWFrO2Nhc2UiZmlsbCI6dGhpcy5wZGYuaW50ZXJuYWwub3V0KCJmIil9fSxGPWZ1bmN0aW9uKCl7dGhpcy5wZGYuY2xpcCgpLHRoaXMucGRmLmRpc2NhcmRQYXRoKCl9LEk9ZnVuY3Rpb24odCxlKXt0aGlzLnBkZi5pbnRlcm5hbC5vdXQobih0KSsiICIrYShlKSsiIG0iKX0sQz1mdW5jdGlvbih0KXt2YXIgZTtzd2l0Y2godC5hbGlnbil7Y2FzZSJyaWdodCI6Y2FzZSJlbmQiOmU9InJpZ2h0IjticmVhaztjYXNlImNlbnRlciI6ZT0iY2VudGVyIjticmVhaztjYXNlImxlZnQiOmNhc2Uic3RhcnQiOmRlZmF1bHQ6ZT0ibGVmdCJ9dmFyIHI9dGhpcy5wZGYuZ2V0VGV4dERpbWVuc2lvbnModC50ZXh0KSxuPVMuY2FsbCh0aGlzLHQueSksaT1fLmNhbGwodGhpcyxuKS1yLmgsYT10aGlzLmN0eC50cmFuc2Zvcm0uYXBwbHlUb1BvaW50KG5ldyBjKHQueCxuKSksbz10aGlzLmN0eC50cmFuc2Zvcm0uZGVjb21wb3NlKCkscz1uZXcgbDtzPShzPShzPXMubXVsdGlwbHkoby50cmFuc2xhdGUpKS5tdWx0aXBseShvLnNrZXcpKS5tdWx0aXBseShvLnNjYWxlKTtmb3IodmFyIGgsZixkLHA9dGhpcy5jdHgudHJhbnNmb3JtLmFwcGx5VG9SZWN0YW5nbGUobmV3IHUodC54LG4sci53LHIuaCkpLGc9cy5hcHBseVRvUmVjdGFuZ2xlKG5ldyB1KHQueCxpLHIudyxyLmgpKSxtPXkuY2FsbCh0aGlzLGcpLHY9W10sdz0wO3c8bS5sZW5ndGg7dys9MSktMT09PXYuaW5kZXhPZihtW3ddKSYmdi5wdXNoKG1bd10pO2lmKEwodiksdGhpcy5hdXRvUGFnaW5nKWZvcih2YXIgQT12WzBdLFA9dlt2Lmxlbmd0aC0xXSxrPUE7azxQKzE7aysrKXt0aGlzLnBkZi5zZXRQYWdlKGspO3ZhciBGPTE9PT1rP3RoaXMucG9zWSt0aGlzLm1hcmdpblswXTp0aGlzLm1hcmdpblswXSxJPXRoaXMucGRmLmludGVybmFsLnBhZ2VTaXplLmhlaWdodC10aGlzLnBvc1ktdGhpcy5tYXJnaW5bMF0tdGhpcy5tYXJnaW5bMl0sQz10aGlzLnBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQtdGhpcy5tYXJnaW5bMl0saj1DLXRoaXMubWFyZ2luWzBdLE89dGhpcy5wZGYuaW50ZXJuYWwucGFnZVNpemUud2lkdGgtdGhpcy5tYXJnaW5bMV0sQj1PLXRoaXMubWFyZ2luWzNdLE09MT09PWs\/MDpJKyhrLTIpKmo7aWYoMCE9PXRoaXMuY3R4LmNsaXBfcGF0aC5sZW5ndGgpe3ZhciBFPXRoaXMucGF0aDtoPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jdHguY2xpcF9wYXRoKSksdGhpcy5wYXRoPU4oaCx0aGlzLnBvc1grdGhpcy5tYXJnaW5bM10sLTEqTStGKSx4LmNhbGwodGhpcywiZmlsbCIsITApLHRoaXMucGF0aD1FfXZhciBxPU4oW0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZykpXSx0aGlzLnBvc1grdGhpcy5tYXJnaW5bM10sLU0rRit0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0KVswXTt0LnNjYWxlPj0uMDEmJihmPXRoaXMucGRmLmludGVybmFsLmdldEZvbnRTaXplKCksdGhpcy5wZGYuc2V0Rm9udFNpemUoZip0LnNjYWxlKSxkPXRoaXMubGluZVdpZHRoLHRoaXMubGluZVdpZHRoPWQqdC5zY2FsZSk7dmFyIEQ9InRleHQiIT09dGhpcy5hdXRvUGFnaW5nO2lmKER8fHEueStxLmg8PUMpe2lmKER8fHEueT49RiYmcS54PD1PKXt2YXIgUj1EP3QudGV4dDp0aGlzLnBkZi5zcGxpdFRleHRUb1NpemUodC50ZXh0LHQubWF4V2lkdGh8fE8tcS54KVswXSxUPU4oW0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocCkpXSx0aGlzLnBvc1grdGhpcy5tYXJnaW5bM10sLU0rRit0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0KVswXSxVPUQmJihrPkF8fGs8UCkmJmIuY2FsbCh0aGlzKTtVJiYodGhpcy5wZGYuc2F2ZUdyYXBoaWNzU3RhdGUoKSx0aGlzLnBkZi5yZWN0KHRoaXMubWFyZ2luWzNdLHRoaXMubWFyZ2luWzBdLEIsaixudWxsKS5jbGlwKCkuZGlzY2FyZFBhdGgoKSksdGhpcy5wZGYudGV4dChSLFQueCxULnkse2FuZ2xlOnQuYW5nbGUsYWxpZ246ZSxyZW5kZXJpbmdNb2RlOnQucmVuZGVyaW5nTW9kZX0pLFUmJnRoaXMucGRmLnJlc3RvcmVHcmFwaGljc1N0YXRlKCl9fWVsc2UgcS55PEMmJih0aGlzLmN0eC5wcmV2UGFnZUxhc3RFbGVtT2Zmc2V0Kz1DLXEueSk7dC5zY2FsZT49LjAxJiYodGhpcy5wZGYuc2V0Rm9udFNpemUoZiksdGhpcy5saW5lV2lkdGg9ZCl9ZWxzZSB0LnNjYWxlPj0uMDEmJihmPXRoaXMucGRmLmludGVybmFsLmdldEZvbnRTaXplKCksdGhpcy5wZGYuc2V0Rm9udFNpemUoZip0LnNjYWxlKSxkPXRoaXMubGluZVdpZHRoLHRoaXMubGluZVdpZHRoPWQqdC5zY2FsZSksdGhpcy5wZGYudGV4dCh0LnRleHQsYS54K3RoaXMucG9zWCxhLnkrdGhpcy5wb3NZLHthbmdsZTp0LmFuZ2xlLGFsaWduOmUscmVuZGVyaW5nTW9kZTp0LnJlbmRlcmluZ01vZGUsbWF4V2lkdGg6dC5tYXhXaWR0aH0pLHQuc2NhbGU+PS4wMSYmKHRoaXMucGRmLnNldEZvbnRTaXplKGYpLHRoaXMubGluZVdpZHRoPWQpfSxqPWZ1bmN0aW9uKHQsZSxyLGkpe3I9cnx8MCxpPWl8fDAsdGhpcy5wZGYuaW50ZXJuYWwub3V0KG4odCtyKSsiICIrYShlK2kpKyIgbCIpfSxPPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5wZGYubGluZXModCxlLHIsbnVsbCxudWxsKX0sQj1mdW5jdGlvbih0LGUsbixpLGEsYyx1LGwpe3RoaXMucGRmLmludGVybmFsLm91dChbcihvKG4rdCkpLHIocyhpK2UpKSxyKG8oYSt0KSkscihzKGMrZSkpLHIobyh1K3QpKSxyKHMobCtlKSksImMiXS5qb2luKCIgIikpfSxNPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT0yKk1hdGguUEksYT1NYXRoLlBJLzI7ZT5yOyllLT1pO3ZhciBvPU1hdGguYWJzKHItZSk7bzxpJiZuJiYobz1pLW8pO2Zvcih2YXIgcz1bXSxjPW4\/LTE6MSx1PWU7bz4xZS01Oyl7dmFyIGw9dStjKk1hdGgubWluKG8sYSk7cy5wdXNoKEUuY2FsbCh0aGlzLHQsdSxsKSksby09TWF0aC5hYnMobC11KSx1PWx9cmV0dXJuIHN9LEU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPShyLWUpLzIsaT10Kk1hdGguY29zKG4pLGE9dCpNYXRoLnNpbihuKSxvPWkscz0tYSxjPW8qbytzKnMsdT1jK28qaStzKmEsbD00LzMqKE1hdGguc3FydCgyKmMqdSktdSkvKG8qYS1zKmkpLGg9by1sKnMsZj1zK2wqbyxkPWgscD0tZixnPW4rZSxtPU1hdGguY29zKGcpLHY9TWF0aC5zaW4oZyk7cmV0dXJue3gxOnQqTWF0aC5jb3MoZSkseTE6dCpNYXRoLnNpbihlKSx4MjpoKm0tZip2LHkyOmgqditmKm0seDM6ZCptLXAqdix5MzpkKnYrcCptLHg0OnQqTWF0aC5jb3MocikseTQ6dCpNYXRoLnNpbihyKX19LHE9ZnVuY3Rpb24odCl7cmV0dXJuIDE4MCp0L01hdGguUEl9LEQ9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvPXQrLjUqKHItdCkscz1lKy41KihuLWUpLGM9aSsuNSooci1pKSxsPWErLjUqKG4tYSksaD1NYXRoLm1pbih0LGksbyxjKSxmPU1hdGgubWF4KHQsaSxvLGMpLGQ9TWF0aC5taW4oZSxhLHMsbCkscD1NYXRoLm1heChlLGEscyxsKTtyZXR1cm4gbmV3IHUoaCxkLGYtaCxwLWQpfSxSPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyl7dmFyIGMsbCxoLGYsZCxwLGcsbSx2LGIseSx3LE4sTCxBPXItdCx4PW4tZSxTPWktcixfPWEtbixQPW8taSxrPXMtYTtmb3IobD0wO2w8NDE7bCsrKXY9KGc9KGg9dCsoYz1sLzQwKSpBKStjKigoZD1yK2MqUyktaCkpK2MqKGQrYyooaStjKlAtZCktZyksYj0obT0oZj1lK2MqeCkrYyooKHA9bitjKl8pLWYpKStjKihwK2MqKGErYyprLXApLW0pLDA9PWw\/KHk9dix3PWIsTj12LEw9Yik6KHk9TWF0aC5taW4oeSx2KSx3PU1hdGgubWluKHcsYiksTj1NYXRoLm1heChOLHYpLEw9TWF0aC5tYXgoTCxiKSk7cmV0dXJuIG5ldyB1KE1hdGgucm91bmQoeSksTWF0aC5yb3VuZCh3KSxNYXRoLnJvdW5kKE4teSksTWF0aC5yb3VuZChMLXcpKX0sVD1mdW5jdGlvbigpe2lmKHRoaXMucHJldkxpbmVEYXNofHx0aGlzLmN0eC5saW5lRGFzaC5sZW5ndGh8fHRoaXMuY3R4LmxpbmVEYXNoT2Zmc2V0KXt2YXIgdCxlLHI9KHQ9dGhpcy5jdHgubGluZURhc2gsZT10aGlzLmN0eC5saW5lRGFzaE9mZnNldCxKU09OLnN0cmluZ2lmeSh7bGluZURhc2g6dCxsaW5lRGFzaE9mZnNldDplfSkpO3RoaXMucHJldkxpbmVEYXNoIT09ciYmKHRoaXMucGRmLnNldExpbmVEYXNoKHRoaXMuY3R4LmxpbmVEYXNoLHRoaXMuY3R4LmxpbmVEYXNoT2Zmc2V0KSx0aGlzLnByZXZMaW5lRGFzaD1yKX19fShNLkFQSSk7dHJ5e3JlcXVpcmUoIndvcmtlcl90aHJlYWRzIikuV29ya2VyfWNhdGNoKHQpe312YXIgVXQ9VWludDhBcnJheSx6dD1VaW50MTZBcnJheSxIdD1VaW50MzJBcnJheSxXdD1uZXcgVXQoWzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMCwwLDAsMF0pLFZ0PW5ldyBVdChbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdKSxHdD1uZXcgVXQoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxZdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcgenQoMzEpLG49MDtuPDMxOysrbilyW25dPWUrPTE8PHRbbi0xXTt2YXIgaT1uZXcgSHQoclszMF0pO2ZvcihuPTE7bjwzMDsrK24pZm9yKHZhciBhPXJbbl07YTxyW24rMV07KythKWlbYV09YS1yW25dPDw1fG47cmV0dXJuW3IsaV19LEp0PVl0KFd0LDIpLFh0PUp0WzBdLEt0PUp0WzFdO1h0WzI4XT0yNTgsS3RbMjU4XT0yODtmb3IodmFyIFp0PVl0KFZ0LDApLCR0PVp0WzBdLFF0PVp0WzFdLHRlPW5ldyB6dCgzMjc2OCksZWU9MDtlZTwzMjc2ODsrK2VlKXt2YXIgcmU9KDQzNjkwJmVlKT4+PjF8KDIxODQ1JmVlKTw8MTtyZT0oNjE2ODAmKHJlPSg1MjQyOCZyZSk+Pj4yfCgxMzEwNyZyZSk8PDIpKT4+PjR8KDM4NTUmcmUpPDw0LHRlW2VlXT0oKDY1MjgwJnJlKT4+Pjh8KDI1NSZyZSk8PDgpPj4+MX12YXIgbmU9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPTAsYT1uZXcgenQoZSk7aTxuOysraSkrK2FbdFtpXS0xXTt2YXIgbyxzPW5ldyB6dChlKTtmb3IoaT0wO2k8ZTsrK2kpc1tpXT1zW2ktMV0rYVtpLTFdPDwxO2lmKHIpe289bmV3IHp0KDE8PGUpO3ZhciBjPTE1LWU7Zm9yKGk9MDtpPG47KytpKWlmKHRbaV0pZm9yKHZhciB1PWk8PDR8dFtpXSxsPWUtdFtpXSxoPXNbdFtpXS0xXSsrPDxsLGY9aHwoMTw8bCktMTtoPD1mOysraClvW3RlW2hdPj4+Y109dX1lbHNlIGZvcihvPW5ldyB6dChuKSxpPTA7aTxuOysraSlvW2ldPXRlW3NbdFtpXS0xXSsrXT4+PjE1LXRbaV07cmV0dXJuIG99LGllPW5ldyBVdCgyODgpO2ZvcihlZT0wO2VlPDE0NDsrK2VlKWllW2VlXT04O2ZvcihlZT0xNDQ7ZWU8MjU2OysrZWUpaWVbZWVdPTk7Zm9yKGVlPTI1NjtlZTwyODA7KytlZSlpZVtlZV09Nztmb3IoZWU9MjgwO2VlPDI4ODsrK2VlKWllW2VlXT04O3ZhciBhZT1uZXcgVXQoMzIpO2ZvcihlZT0wO2VlPDMyOysrZWUpYWVbZWVdPTU7dmFyIG9lPW5lKGllLDksMCksc2U9bmUoaWUsOSwxKSxjZT1uZShhZSw1LDApLHVlPW5lKGFlLDUsMSksbGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRbMF0scj0xO3I8dC5sZW5ndGg7KytyKXRbcl0+ZSYmKGU9dFtyXSk7cmV0dXJuIGV9LGhlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLzg+PjA7cmV0dXJuKHRbbl18dFtuKzFdPDw4KT4+Pig3JmUpJnJ9LGZlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS84Pj4wO3JldHVybih0W3JdfHRbcisxXTw8OHx0W3IrMl08PDE2KT4+Pig3JmUpfSxkZT1mdW5jdGlvbih0KXtyZXR1cm4odC84Pj4wKSsoNyZ0JiYxKX0scGU9ZnVuY3Rpb24odCxlLHIpeyhudWxsPT1lfHxlPDApJiYoZT0wKSwobnVsbD09cnx8cj50Lmxlbmd0aCkmJihyPXQubGVuZ3RoKTt2YXIgbj1uZXcodCBpbnN0YW5jZW9mIHp0P3p0OnQgaW5zdGFuY2VvZiBIdD9IdDpVdCkoci1lKTtyZXR1cm4gbi5zZXQodC5zdWJhcnJheShlLHIpKSxufSxnZT1mdW5jdGlvbih0LGUscil7cjw8PTcmZTt2YXIgbj1lLzg+PjA7dFtuXXw9cix0W24rMV18PXI+Pj44fSxtZT1mdW5jdGlvbih0LGUscil7cjw8PTcmZTt2YXIgbj1lLzg+PjA7dFtuXXw9cix0W24rMV18PXI+Pj44LHRbbisyXXw9cj4+PjE2fSx2ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDsrK24pdFtuXSYmci5wdXNoKHtzOm4sZjp0W25dfSk7dmFyIGk9ci5sZW5ndGgsYT1yLnNsaWNlKCk7aWYoIWkpcmV0dXJuW25ldyBVdCgwKSwwXTtpZigxPT1pKXt2YXIgbz1uZXcgVXQoclswXS5zKzEpO3JldHVybiBvW3JbMF0uc109MSxbbywxXX1yLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZi1lLmZ9KSksci5wdXNoKHtzOi0xLGY6MjUwMDF9KTt2YXIgcz1yWzBdLGM9clsxXSx1PTAsbD0xLGg9Mjtmb3IoclswXT17czotMSxmOnMuZitjLmYsbDpzLHI6Y307bCE9aS0xOylzPXJbclt1XS5mPHJbaF0uZj91Kys6aCsrXSxjPXJbdSE9bCYmclt1XS5mPHJbaF0uZj91Kys6aCsrXSxyW2wrK109e3M6LTEsZjpzLmYrYy5mLGw6cyxyOmN9O3ZhciBmPWFbMF0ucztmb3Iobj0xO248aTsrK24pYVtuXS5zPmYmJihmPWFbbl0ucyk7dmFyIGQ9bmV3IHp0KGYrMSkscD1iZShyW2wtMV0sZCwwKTtpZihwPmUpe249MDt2YXIgZz0wLG09cC1lLHY9MTw8bTtmb3IoYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBkW2Uuc10tZFt0LnNdfHx0LmYtZS5mfSkpO248aTsrK24pe3ZhciBiPWFbbl0ucztpZighKGRbYl0+ZSkpYnJlYWs7Zys9di0oMTw8cC1kW2JdKSxkW2JdPWV9Zm9yKGc+Pj49bTtnPjA7KXt2YXIgeT1hW25dLnM7ZFt5XTxlP2ctPTE8PGUtZFt5XSsrLTE6KytufWZvcig7bj49MCYmZzstLW4pe3ZhciB3PWFbbl0ucztkW3ddPT1lJiYoLS1kW3ddLCsrZyl9cD1lfXJldHVybltuZXcgVXQoZCkscF19LGJlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4tMT09dC5zP01hdGgubWF4KGJlKHQubCxlLHIrMSksYmUodC5yLGUscisxKSk6ZVt0LnNdPXJ9LHllPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlJiYhdFstLWVdOyk7Zm9yKHZhciByPW5ldyB6dCgrK2UpLG49MCxpPXRbMF0sYT0xLG89ZnVuY3Rpb24odCl7cltuKytdPXR9LHM9MTtzPD1lOysrcylpZih0W3NdPT1pJiZzIT1lKSsrYTtlbHNle2lmKCFpJiZhPjIpe2Zvcig7YT4xMzg7YS09MTM4KW8oMzI3NTQpO2E+MiYmKG8oYT4xMD9hLTExPDw1fDI4NjkwOmEtMzw8NXwxMjMwNSksYT0wKX1lbHNlIGlmKGE+Myl7Zm9yKG8oaSksLS1hO2E+NjthLT02KW8oODMwNCk7YT4yJiYobyhhLTM8PDV8ODIwOCksYT0wKX1mb3IoO2EtLTspbyhpKTthPTEsaT10W3NdfXJldHVybltyLnN1YmFycmF5KDAsbiksZV19LHdlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wO248ZS5sZW5ndGg7KytuKXIrPXRbbl0qZVtuXTtyZXR1cm4gcn0sTmU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIubGVuZ3RoLGk9ZGUoZSsyKTt0W2ldPTI1NSZuLHRbaSsxXT1uPj4+OCx0W2krMl09MjU1XnRbaV0sdFtpKzNdPTI1NV50W2krMV07Zm9yKHZhciBhPTA7YTxuOysrYSl0W2krYSs0XT1yW2FdO3JldHVybiA4KihpKzQrbil9LExlPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxjLHUsbCl7Z2UoZSxsKyssciksKytpWzI1Nl07Zm9yKHZhciBoPXZlKGksMTUpLGY9aFswXSxkPWhbMV0scD12ZShhLDE1KSxnPXBbMF0sbT1wWzFdLHY9eWUoZiksYj12WzBdLHk9dlsxXSx3PXllKGcpLE49d1swXSxMPXdbMV0sQT1uZXcgenQoMTkpLHg9MDt4PGIubGVuZ3RoOysreClBWzMxJmJbeF1dKys7Zm9yKHg9MDt4PE4ubGVuZ3RoOysreClBWzMxJk5beF1dKys7Zm9yKHZhciBTPXZlKEEsNyksXz1TWzBdLFA9U1sxXSxrPTE5O2s+NCYmIV9bR3Rbay0xXV07LS1rKTt2YXIgRixJLEMsaixPPXUrNTw8MyxCPXdlKGksaWUpK3dlKGEsYWUpK28sTT13ZShpLGYpK3dlKGEsZykrbysxNCszKmsrd2UoQSxfKSsoMipBWzE2XSszKkFbMTddKzcqQVsxOF0pO2lmKE88PUImJk88PU0pcmV0dXJuIE5lKGUsbCx0LnN1YmFycmF5KGMsYyt1KSk7aWYoZ2UoZSxsLDErKE08QikpLGwrPTIsTTxCKXtGPW5lKGYsZCwwKSxJPWYsQz1uZShnLG0sMCksaj1nO3ZhciBFPW5lKF8sUCwwKTtnZShlLGwseS0yNTcpLGdlKGUsbCs1LEwtMSksZ2UoZSxsKzEwLGstNCksbCs9MTQ7Zm9yKHg9MDt4PGs7Kyt4KWdlKGUsbCszKngsX1tHdFt4XV0pO2wrPTMqaztmb3IodmFyIHE9W2IsTl0sRD0wO0Q8MjsrK0Qpe3ZhciBSPXFbRF07Zm9yKHg9MDt4PFIubGVuZ3RoOysreCl7dmFyIFQ9MzEmUlt4XTtnZShlLGwsRVtUXSksbCs9X1tUXSxUPjE1JiYoZ2UoZSxsLFJbeF0+Pj41JjEyNyksbCs9Ult4XT4+PjEyKX19fWVsc2UgRj1vZSxJPWllLEM9Y2Usaj1hZTtmb3IoeD0wO3g8czsrK3gpaWYoblt4XT4yNTUpe1Q9blt4XT4+PjE4JjMxO21lKGUsbCxGW1QrMjU3XSksbCs9SVtUKzI1N10sVD43JiYoZ2UoZSxsLG5beF0+Pj4yMyYzMSksbCs9V3RbVF0pO3ZhciBVPTMxJm5beF07bWUoZSxsLENbVV0pLGwrPWpbVV0sVT4zJiYobWUoZSxsLG5beF0+Pj41JjgxOTEpLGwrPVZ0W1VdKX1lbHNlIG1lKGUsbCxGW25beF1dKSxsKz1JW25beF1dO3JldHVybiBtZShlLGwsRlsyNTZdKSxsK0lbMjU2XX0sQWU9bmV3IEh0KFs2NTU0MCwxMzEwODAsMTMxMDg4LDEzMTEwNCwyNjIxNzYsMTA0ODcwNCwxMDQ4ODMyLDIxMTQ1NjAsMjExNzYzMl0pLHhlPW5ldyBVdCgwKSxTZT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBmdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89dC5sZW5ndGgscz1uZXcgVXQobitvKzUqKDErTWF0aC5mbG9vcihvLzdlMykpK2kpLGM9cy5zdWJhcnJheShuLHMubGVuZ3RoLWkpLHU9MDtpZighZXx8bzw4KWZvcih2YXIgbD0wO2w8PW87bCs9NjU1MzUpe3ZhciBoPWwrNjU1MzU7aDxvP3U9TmUoYyx1LHQuc3ViYXJyYXkobCxoKSk6KGNbbF09YSx1PU5lKGMsdSx0LnN1YmFycmF5KGwsbykpKX1lbHNle2Zvcih2YXIgZj1BZVtlLTFdLGQ9Zj4+PjEzLHA9ODE5MSZmLGc9KDE8PHIpLTEsbT1uZXcgenQoMzI3NjgpLHY9bmV3IHp0KGcrMSksYj1NYXRoLmNlaWwoci8zKSx5PTIqYix3PWZ1bmN0aW9uKGUpe3JldHVybih0W2VdXnRbZSsxXTw8Yl50W2UrMl08PHkpJmd9LE49bmV3IEh0KDI1ZTMpLEw9bmV3IHp0KDI4OCksQT1uZXcgenQoMzIpLHg9MCxTPTAsXz0obD0wLDApLFA9MCxrPTA7bDxvOysrbCl7dmFyIEY9dyhsKSxJPTMyNzY3JmwsQz12W0ZdO2lmKG1bSV09Qyx2W0ZdPUksUDw9bCl7dmFyIGo9by1sO2lmKCh4PjdlM3x8Xz4yNDU3NikmJmo+NDIzKXt1PUxlKHQsYywwLE4sTCxBLFMsXyxrLGwtayx1KSxfPXg9Uz0wLGs9bDtmb3IodmFyIE89MDtPPDI4NjsrK08pTFtPXT0wO2ZvcihPPTA7TzwzMDsrK08pQVtPXT0wfXZhciBCPTIsTT0wLEU9cCxxPUktQyYzMjc2NztpZihqPjImJkY9PXcobC1xKSlmb3IodmFyIEQ9TWF0aC5taW4oZCxqKS0xLFI9TWF0aC5taW4oMzI3NjcsbCksVD1NYXRoLm1pbigyNTgsaik7cTw9UiYmLS1FJiZJIT1DOyl7aWYodFtsK0JdPT10W2wrQi1xXSl7Zm9yKHZhciBVPTA7VTxUJiZ0W2wrVV09PXRbbCtVLXFdOysrVSk7aWYoVT5CKXtpZihCPVUsTT1xLFU+RClicmVhazt2YXIgej1NYXRoLm1pbihxLFUtMiksSD0wO2ZvcihPPTA7Tzx6OysrTyl7dmFyIFc9bC1xK08rMzI3NjgmMzI3NjcsVj1XLW1bV10rMzI3NjgmMzI3Njc7Vj5IJiYoSD1WLEM9Vyl9fX1xKz0oST1DKS0oQz1tW0ldKSszMjc2OCYzMjc2N31pZihNKXtOW18rK109MjY4NDM1NDU2fEt0W0JdPDwxOHxRdFtNXTt2YXIgRz0zMSZLdFtCXSxZPTMxJlF0W01dO1MrPVd0W0ddK1Z0W1ldLCsrTFsyNTcrR10sKytBW1ldLFA9bCtCLCsreH1lbHNlIE5bXysrXT10W2xdLCsrTFt0W2xdXX19dT1MZSh0LGMsYSxOLEwsQSxTLF8sayxsLWssdSksYXx8KHU9TmUoYyx1LHhlKSl9cmV0dXJuIHBlKHMsMCxuK2RlKHUpK2kpfSh0LG51bGw9PWUubGV2ZWw\/NjplLmxldmVsLG51bGw9PWUubWVtP01hdGguY2VpbCgxLjUqTWF0aC5tYXgoOCxNYXRoLm1pbigxMyxNYXRoLmxvZyh0Lmxlbmd0aCkpKSk6MTIrZS5tZW0scixuLCFpKX07ZnVuY3Rpb24gX2UodCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgdD0xLGU9MDtyZXR1cm57cDpmdW5jdGlvbihyKXtmb3IodmFyIG49dCxpPWUsYT1yLmxlbmd0aCxvPTA7byE9YTspe2Zvcih2YXIgcz1NYXRoLm1pbihvKzU1NTIsYSk7bzxzOysrbylpKz1uKz1yW29dO24lPTY1NTIxLGklPTY1NTIxfXQ9bixlPWl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4odD4+Pjg8PDE2fCgyNTUmZSk8PDh8ZT4+PjgpKzIqKCgyNTUmdCk8PDIzKX19fSgpO3IucCh0KTt2YXIgbj1TZSh0LGUsMiw0KTtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1lLmxldmVsLG49MD09cj8wOnI8Nj8xOjk9PXI\/MzoyO3RbMF09MTIwLHRbMV09bjw8Nnwobj8zMi0yKm46MSl9KG4sZSksZnVuY3Rpb24odCxlLHIpe2Zvcig7cjsrK2UpdFtlXT1yLHI+Pj49OH0obixuLmxlbmd0aC00LHIuZCgpKSxufWZ1bmN0aW9uIFBlKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Lmxlbmd0aCxpPSFlfHxyLGE9IXJ8fHIuaTtyfHwocj17fSksZXx8KGU9bmV3IFV0KDMqbikpO3ZhciBvPWZ1bmN0aW9uKHQpe3ZhciByPWUubGVuZ3RoO2lmKHQ+cil7dmFyIG49bmV3IFV0KE1hdGgubWF4KDIqcix0KSk7bi5zZXQoZSksZT1ufX0scz1yLmZ8fDAsYz1yLnB8fDAsdT1yLmJ8fDAsbD1yLmwsaD1yLmQsZj1yLm0sZD1yLm4scD04Km47ZG97aWYoIWwpe3IuZj1zPWhlKHQsYywxKTt2YXIgZz1oZSh0LGMrMSwzKTtpZihjKz0zLCFnKXt2YXIgbT10WyhQPWRlKGMpKzQpLTRdfHRbUC0zXTw8OCx2PVArbTtpZih2Pm4pe2lmKGEpdGhyb3cidW5leHBlY3RlZCBFT0YiO2JyZWFrfWkmJm8odSttKSxlLnNldCh0LnN1YmFycmF5KFAsdiksdSksci5iPXUrPW0sci5wPWM9OCp2O2NvbnRpbnVlfWlmKDE9PWcpbD1zZSxoPXVlLGY9OSxkPTU7ZWxzZXtpZigyIT1nKXRocm93ImludmFsaWQgYmxvY2sgdHlwZSI7dmFyIGI9aGUodCxjLDMxKSsyNTcseT1oZSh0LGMrMTAsMTUpKzQsdz1iK2hlKHQsYys1LDMxKSsxO2MrPTE0O2Zvcih2YXIgTj1uZXcgVXQodyksTD1uZXcgVXQoMTkpLEE9MDtBPHk7KytBKUxbR3RbQV1dPWhlKHQsYyszKkEsNyk7Yys9Myp5O3ZhciB4PWxlKEwpLFM9KDE8PHgpLTE7aWYoIWEmJmMrdyooeCs3KT5wKWJyZWFrO3ZhciBfPW5lKEwseCwxKTtmb3IoQT0wO0E8dzspe3ZhciBQLGs9X1toZSh0LGMsUyldO2lmKGMrPTE1JmssKFA9az4+PjQpPDE2KU5bQSsrXT1QO2Vsc2V7dmFyIEY9MCxJPTA7Zm9yKDE2PT1QPyhJPTMraGUodCxjLDMpLGMrPTIsRj1OW0EtMV0pOjE3PT1QPyhJPTMraGUodCxjLDcpLGMrPTMpOjE4PT1QJiYoST0xMStoZSh0LGMsMTI3KSxjKz03KTtJLS07KU5bQSsrXT1GfX12YXIgQz1OLnN1YmFycmF5KDAsYiksaj1OLnN1YmFycmF5KGIpO2Y9bGUoQyksZD1sZShqKSxsPW5lKEMsZiwxKSxoPW5lKGosZCwxKX1pZihjPnApdGhyb3cidW5leHBlY3RlZCBFT0YifWkmJm8odSsxMzEwNzIpO2Zvcih2YXIgTz0oMTw8ZiktMSxCPSgxPDxkKS0xLE09ZitkKzE4O2F8fGMrTTxwOyl7dmFyIEU9KEY9bFtmZSh0LGMpJk9dKT4+PjQ7aWYoKGMrPTE1JkYpPnApdGhyb3cidW5leHBlY3RlZCBFT0YiO2lmKCFGKXRocm93ImludmFsaWQgbGVuZ3RoL2xpdGVyYWwiO2lmKEU8MjU2KWVbdSsrXT1FO2Vsc2V7aWYoMjU2PT1FKXtsPW51bGw7YnJlYWt9dmFyIHE9RS0yNTQ7aWYoRT4yNjQpe3ZhciBEPVd0W0E9RS0yNTddO3E9aGUodCxjLCgxPDxEKS0xKStYdFtBXSxjKz1EfXZhciBSPWhbZmUodCxjKSZCXSxUPVI+Pj40O2lmKCFSKXRocm93ImludmFsaWQgZGlzdGFuY2UiO2MrPTE1JlI7aj0kdFtUXTtpZihUPjMpe0Q9VnRbVF07ais9ZmUodCxjKSYoMTw8RCktMSxjKz1EfWlmKGM+cCl0aHJvdyJ1bmV4cGVjdGVkIEVPRiI7aSYmbyh1KzEzMTA3Mik7Zm9yKHZhciBVPXUrcTt1PFU7dSs9NCllW3VdPWVbdS1qXSxlW3UrMV09ZVt1KzEtal0sZVt1KzJdPWVbdSsyLWpdLGVbdSszXT1lW3UrMy1qXTt1PVV9fXIubD1sLHIucD1jLHIuYj11LGwmJihzPTEsci5tPWYsci5kPWgsci5uPWQpfXdoaWxlKCFzKTtyZXR1cm4gdT09ZS5sZW5ndGg\/ZTpwZShlLDAsdSl9KChmdW5jdGlvbih0KXtpZig4IT0oMTUmdFswXSl8fHRbMF0+Pj40Pjd8fCh0WzBdPDw4fHRbMV0pJTMxKXRocm93ImludmFsaWQgemxpYiBkYXRhIjtpZigzMiZ0WzFdKXRocm93ImludmFsaWQgemxpYiBkYXRhOiBwcmVzZXQgZGljdGlvbmFyaWVzIG5vdCBzdXBwb3J0ZWQifSh0KSx0LnN1YmFycmF5KDIsLTQpKSxlKX0KLyoqCiAgICogQGxpY2Vuc2UKICAgKiBqc1BERiBmaWx0ZXJzIFBsdWdJbgogICAqIENvcHlyaWdodCAoYykgMjAxNCBBcmFzIEFiYmFzaQogICAqCiAgICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogICAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogICAqLyFmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG8scyxjLHUsbDtmb3IoL1teXHgwMC1ceEZGXS8udGVzdCh0KSxyPVtdLG49MCxpPSh0Kz1lPSJcMFwwXDBcMCIuc2xpY2UodC5sZW5ndGglNHx8NCkpLmxlbmd0aDtpPm47bis9NCkwIT09KGE9KHQuY2hhckNvZGVBdChuKTw8MjQpKyh0LmNoYXJDb2RlQXQobisxKTw8MTYpKyh0LmNoYXJDb2RlQXQobisyKTw8OCkrdC5jaGFyQ29kZUF0KG4rMykpPyhvPShhPSgoYT0oKGE9KChhPShhLShsPWElODUpKS84NSktKHU9YSU4NSkpLzg1KS0oYz1hJTg1KSkvODUpLShzPWElODUpKS84NSklODUsci5wdXNoKG8rMzMscyszMyxjKzMzLHUrMzMsbCszMykpOnIucHVzaCgxMjIpO3JldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lO3I+MDtyLS0pdC5wb3AoKX0ocixlLmxlbmd0aCksU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcscikrIn4+In0scj1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG89U3RyaW5nLHM9Imxlbmd0aCIsYz0yNTUsdT0iY2hhckNvZGVBdCIsbD0ic2xpY2UiLGg9InJlcGxhY2UiO2Zvcih0W2xdKC0yKSx0PXRbbF0oMCwtMilbaF0oL1xzL2csIiIpW2hdKCJ6IiwiISEhISEiKSxuPVtdLGk9MCxhPSh0Kz1lPSJ1dXV1dSJbbF0odFtzXSU1fHw1KSlbc107YT5pO2krPTUpcj01MjIwMDYyNSoodFt1XShpKS0zMykrNjE0MTI1Kih0W3VdKGkrMSktMzMpKzcyMjUqKHRbdV0oaSsyKS0zMykrODUqKHRbdV0oaSszKS0zMykrKHRbdV0oaSs0KS0zMyksbi5wdXNoKGMmcj4+MjQsYyZyPj4xNixjJnI+PjgsYyZyKTtyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZTtyPjA7ci0tKXQucG9wKCl9KG4sZVtzXSksby5mcm9tQ2hhckNvZGUuYXBwbHkobyxuKX0sbj1mdW5jdGlvbih0KXt2YXIgZT1uZXcgUmVnRXhwKC9eKFswLTlBLUZhLWZdezJ9KSskLyk7aWYoLTEhPT0odD10LnJlcGxhY2UoL1xzL2csIiIpKS5pbmRleE9mKCI+IikmJih0PXQuc3Vic3RyKDAsdC5pbmRleE9mKCI+IikpKSx0Lmxlbmd0aCUyJiYodCs9IjAiKSwhMT09PWUudGVzdCh0KSlyZXR1cm4iIjtmb3IodmFyIHI9IiIsbj0wO248dC5sZW5ndGg7bis9MilyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCIweCIrKHRbbl0rdFtuKzFdKSk7cmV0dXJuIHJ9LGk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxyPXQubGVuZ3RoO3ItLTspZVtyXT10LmNoYXJDb2RlQXQocik7cmV0dXJuIHQ9KGU9X2UoZSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSksIiIpfTt0LnByb2Nlc3NEYXRhQnlGaWx0ZXJzPWZ1bmN0aW9uKHQsYSl7dmFyIG89MCxzPXR8fCIiLGM9W107Zm9yKCJzdHJpbmciPT10eXBlb2YoYT1hfHxbXSkmJihhPVthXSksbz0wO288YS5sZW5ndGg7bys9MSlzd2l0Y2goYVtvXSl7Y2FzZSJBU0NJSTg1RGVjb2RlIjpjYXNlIi9BU0NJSTg1RGVjb2RlIjpzPXIocyksYy5wdXNoKCIvQVNDSUk4NUVuY29kZSIpO2JyZWFrO2Nhc2UiQVNDSUk4NUVuY29kZSI6Y2FzZSIvQVNDSUk4NUVuY29kZSI6cz1lKHMpLGMucHVzaCgiL0FTQ0lJODVEZWNvZGUiKTticmVhaztjYXNlIkFTQ0lJSGV4RGVjb2RlIjpjYXNlIi9BU0NJSUhleERlY29kZSI6cz1uKHMpLGMucHVzaCgiL0FTQ0lJSGV4RW5jb2RlIik7YnJlYWs7Y2FzZSJBU0NJSUhleEVuY29kZSI6Y2FzZSIvQVNDSUlIZXhFbmNvZGUiOnM9cy5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4oIjAiK3QuY2hhckNvZGVBdCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpfSkpLmpvaW4oIiIpKyI+IixjLnB1c2goIi9BU0NJSUhleERlY29kZSIpO2JyZWFrO2Nhc2UiRmxhdGVFbmNvZGUiOmNhc2UiL0ZsYXRlRW5jb2RlIjpzPWkocyksYy5wdXNoKCIvRmxhdGVEZWNvZGUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcignVGhlIGZpbHRlcjogIicrYVtvXSsnIiBpcyBub3QgaW1wbGVtZW50ZWQnKX1yZXR1cm57ZGF0YTpzLHJldmVyc2VDaGFpbjpjLnJldmVyc2UoKS5qb2luKCIgIil9fX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqIGpzUERGIGZpbGVsb2FkaW5nIFBsdWdJbgogICAqIENvcHlyaWdodCAoYykgMjAxOCBBcmFzIEFiYmFzaSAoYXJhcy5hYmJhc2lAZ21haWwuY29tKQogICAqCiAgICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogICAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogICAqLwpmdW5jdGlvbih0KXt0LmxvYWRGaWxlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2U9ITEhPT1lLHI9ImZ1bmN0aW9uIj09dHlwZW9mIHI\/cjpmdW5jdGlvbigpe307dmFyIG49dm9pZCAwO3RyeXtuPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3QsaT0wLGE9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgscj1bXSxuPVN0cmluZy5mcm9tQ2hhckNvZGU7Zm9yKGk9MDtpPGU7aSs9MSlyLnB1c2gobigyNTUmdC5jaGFyQ29kZUF0KGkpKSk7cmV0dXJuIHIuam9pbigiIil9O2lmKG4ub3BlbigiR0VUIix0LCFlKSxuLm92ZXJyaWRlTWltZVR5cGUoInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQiKSwhMT09PWUmJihuLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PW4uc3RhdHVzP3IoYSh0aGlzLnJlc3BvbnNlVGV4dCkpOnIodm9pZCAwKX0pLG4uc2VuZChudWxsKSxlJiYyMDA9PT1uLnN0YXR1cylyZXR1cm4gYShuLnJlc3BvbnNlVGV4dCl9KHQsZSxyKX1jYXRjaCh0KXt9cmV0dXJuIG59KHQsZSxyKX0sdC5sb2FkSW1hZ2VGaWxlPXQubG9hZEZpbGV9KE0uQVBJKSxmdW5jdGlvbihuKXtmdW5jdGlvbiBpKCl7cmV0dXJuKHIuaHRtbDJjYW52YXM\/UHJvbWlzZS5yZXNvbHZlKHIuaHRtbDJjYW52YXMpOiJvYmplY3QiPT09KHZvaWQgMD09PXQ\/InVuZGVmaW5lZCI6ZSh0KSkmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP25ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe3RyeXt0KHJlcXVpcmUoImh0bWwyY2FudmFzIikpfWNhdGNoKHQpe2UodCl9fSkpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dHJ5e3JlcXVpcmUoWyJodG1sMmNhbnZhcyJdLHQpfWNhdGNoKHQpe2UodCl9fSkpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiQ291bGQgbm90IGxvYWQgaHRtbDJjYW52YXMiKSkpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDb3VsZCBub3QgbG9hZCBodG1sMmNhbnZhczogIit0KSl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmYXVsdD90LmRlZmF1bHQ6dH0pKX1mdW5jdGlvbiBhKCl7cmV0dXJuKHIuRE9NUHVyaWZ5P1Byb21pc2UucmVzb2x2ZShyLkRPTVB1cmlmeSk6Im9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjplKHQpKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dHJ5e3QocmVxdWlyZSgiZG9tcHVyaWZ5IikpfWNhdGNoKHQpe2UodCl9fSkpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dHJ5e3JlcXVpcmUoWyJkb21wdXJpZnkiXSx0KX1jYXRjaCh0KXtlKHQpfX0pKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNvdWxkIG5vdCBsb2FkIGRvbXB1cmlmeSIpKSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNvdWxkIG5vdCBsb2FkIGRvbXB1cmlmeTogIit0KSl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmYXVsdD90LmRlZmF1bHQ6dH0pKX12YXIgbz1mdW5jdGlvbih0KXt2YXIgcj1lKHQpO3JldHVybiJ1bmRlZmluZWQiPT09cj8idW5kZWZpbmVkIjoic3RyaW5nIj09PXJ8fHQgaW5zdGFuY2VvZiBTdHJpbmc\/InN0cmluZyI6Im51bWJlciI9PT1yfHx0IGluc3RhbmNlb2YgTnVtYmVyPyJudW1iZXIiOiJmdW5jdGlvbiI9PT1yfHx0IGluc3RhbmNlb2YgRnVuY3Rpb24\/ImZ1bmN0aW9uIjp0JiZ0LmNvbnN0cnVjdG9yPT09QXJyYXk\/ImFycmF5Ijp0JiYxPT09dC5ub2RlVHlwZT8iZWxlbWVudCI6Im9iamVjdCI9PT1yPyJvYmplY3QiOiJ1bmtub3duIn0scz1mdW5jdGlvbih0LGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7Zm9yKHZhciBuIGluIGUuY2xhc3NOYW1lJiYoci5jbGFzc05hbWU9ZS5jbGFzc05hbWUpLGUuaW5uZXJIVE1MJiZlLmRvbXB1cmlmeSYmKHIuaW5uZXJIVE1MPWUuZG9tcHVyaWZ5LnNhbml0aXplKGUuaW5uZXJIVE1MKSksZS5zdHlsZSlyLnN0eWxlW25dPWUuc3R5bGVbbl07cmV0dXJuIHJ9LGM9ZnVuY3Rpb24gdChlKXt2YXIgcj1PYmplY3QuYXNzaWduKHQuY29udmVydChQcm9taXNlLnJlc29sdmUoKSksSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnRlbXBsYXRlKSkpLG49dC5jb252ZXJ0KFByb21pc2UucmVzb2x2ZSgpLHIpO3JldHVybiBuPShuPW4uc2V0UHJvZ3Jlc3MoMSx0LDEsW3RdKSkuc2V0KGUpfTsoYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShQcm9taXNlLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWMsYy5jb252ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWV8fGMucHJvdG90eXBlLHR9LGMudGVtcGxhdGU9e3Byb3A6e3NyYzpudWxsLGNvbnRhaW5lcjpudWxsLG92ZXJsYXk6bnVsbCxjYW52YXM6bnVsbCxpbWc6bnVsbCxwZGY6bnVsbCxwYWdlU2l6ZTpudWxsLGNhbGxiYWNrOmZ1bmN0aW9uKCl7fX0scHJvZ3Jlc3M6e3ZhbDowLHN0YXRlOm51bGwsbjowLHN0YWNrOltdfSxvcHQ6e2ZpbGVuYW1lOiJmaWxlLnBkZiIsbWFyZ2luOlswLDAsMCwwXSxlbmFibGVMaW5rczohMCx4OjAseTowLGh0bWwyY2FudmFzOnt9LGpzUERGOnt9LGJhY2tncm91bmRDb2xvcjoidHJhbnNwYXJlbnQifX0sYy5wcm90b3R5cGUuZnJvbT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRoZW4oKGZ1bmN0aW9uKCl7c3dpdGNoKGU9ZXx8ZnVuY3Rpb24odCl7c3dpdGNoKG8odCkpe2Nhc2Uic3RyaW5nIjpyZXR1cm4ic3RyaW5nIjtjYXNlImVsZW1lbnQiOnJldHVybiJjYW52YXMiPT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyJjYW52YXMiOiJlbGVtZW50IjtkZWZhdWx0OnJldHVybiJ1bmtub3duIn19KHQpKXtjYXNlInN0cmluZyI6cmV0dXJuIHRoaXMudGhlbihhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXQoe3NyYzpzKCJkaXYiLHtpbm5lckhUTUw6dCxkb21wdXJpZnk6ZX0pfSl9KSk7Y2FzZSJlbGVtZW50IjpyZXR1cm4gdGhpcy5zZXQoe3NyYzp0fSk7Y2FzZSJjYW52YXMiOnJldHVybiB0aGlzLnNldCh7Y2FudmFzOnR9KTtjYXNlImltZyI6cmV0dXJuIHRoaXMuc2V0KHtpbWc6dH0pO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZXJyb3IoIlVua25vd24gc291cmNlIHR5cGUuIil9fSkpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJjb250YWluZXIiOnJldHVybiB0aGlzLnRvQ29udGFpbmVyKCk7Y2FzZSJjYW52YXMiOnJldHVybiB0aGlzLnRvQ2FudmFzKCk7Y2FzZSJpbWciOnJldHVybiB0aGlzLnRvSW1nKCk7Y2FzZSJwZGYiOnJldHVybiB0aGlzLnRvUGRmKCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5lcnJvcigiSW52YWxpZCB0YXJnZXQuIil9fSxjLnByb3RvdHlwZS50b0NvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRoZW5MaXN0KFtmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3Auc3JjfHx0aGlzLmVycm9yKCJDYW5ub3QgZHVwbGljYXRlIC0gbm8gc291cmNlIEhUTUwuIil9LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcC5wYWdlU2l6ZXx8dGhpcy5zZXRQYWdlU2l6ZSgpfV0pLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ9e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsZGlzcGxheToiaW5saW5lLWJsb2NrIix3aWR0aDooIm51bWJlciIhPXR5cGVvZiB0aGlzLm9wdC53aWR0aHx8aXNOYU4odGhpcy5vcHQud2lkdGgpfHwibnVtYmVyIiE9dHlwZW9mIHRoaXMub3B0LndpbmRvd1dpZHRofHxpc05hTih0aGlzLm9wdC53aW5kb3dXaWR0aCk\/TWF0aC5tYXgodGhpcy5wcm9wLnNyYy5jbGllbnRXaWR0aCx0aGlzLnByb3Auc3JjLnNjcm9sbFdpZHRoLHRoaXMucHJvcC5zcmMub2Zmc2V0V2lkdGgpOnRoaXMub3B0LndpbmRvd1dpZHRoKSsicHgiLGxlZnQ6MCxyaWdodDowLHRvcDowLG1hcmdpbjoiYXV0byIsYmFja2dyb3VuZENvbG9yOnRoaXMub3B0LmJhY2tncm91bmRDb2xvcn0sZT1mdW5jdGlvbiB0KGUscil7Zm9yKHZhciBuPTM9PT1lLm5vZGVUeXBlP2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUubm9kZVZhbHVlKTplLmNsb25lTm9kZSghMSksaT1lLmZpcnN0Q2hpbGQ7aTtpPWkubmV4dFNpYmxpbmcpITAhPT1yJiYxPT09aS5ub2RlVHlwZSYmIlNDUklQVCI9PT1pLm5vZGVOYW1lfHxuLmFwcGVuZENoaWxkKHQoaSxyKSk7cmV0dXJuIDE9PT1lLm5vZGVUeXBlJiYoIkNBTlZBUyI9PT1lLm5vZGVOYW1lPyhuLndpZHRoPWUud2lkdGgsbi5oZWlnaHQ9ZS5oZWlnaHQsbi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShlLDAsMCkpOiJURVhUQVJFQSIhPT1lLm5vZGVOYW1lJiYiU0VMRUNUIiE9PWUubm9kZU5hbWV8fChuLnZhbHVlPWUudmFsdWUpLG4uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKGZ1bmN0aW9uKCl7bi5zY3JvbGxUb3A9ZS5zY3JvbGxUb3Asbi5zY3JvbGxMZWZ0PWUuc2Nyb2xsTGVmdH0pLCEwKSksbn0odGhpcy5wcm9wLnNyYyx0aGlzLm9wdC5odG1sMmNhbnZhcy5qYXZhc2NyaXB0RW5hYmxlZCk7IkJPRFkiPT09ZS50YWdOYW1lJiYodC5oZWlnaHQ9TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpKyJweCIpLHRoaXMucHJvcC5vdmVybGF5PXMoImRpdiIse2NsYXNzTmFtZToiaHRtbDJwZGZfX292ZXJsYXkiLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQiLG92ZXJmbG93OiJoaWRkZW4iLHpJbmRleDoxZTMsbGVmdDoiLTEwMDAwMHB4IixyaWdodDowLGJvdHRvbTowLHRvcDowfX0pLHRoaXMucHJvcC5jb250YWluZXI9cygiZGl2Iix7Y2xhc3NOYW1lOiJodG1sMnBkZl9fY29udGFpbmVyIixzdHlsZTp0fSksdGhpcy5wcm9wLmNvbnRhaW5lci5hcHBlbmRDaGlsZChlKSx0aGlzLnByb3AuY29udGFpbmVyLmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQocygiZGl2Iix7c3R5bGU6e2NsZWFyOiJib3RoIixib3JkZXI6IjAgbm9uZSB0cmFuc3BhcmVudCIsbWFyZ2luOjAscGFkZGluZzowLGhlaWdodDowfX0pKSx0aGlzLnByb3AuY29udGFpbmVyLnN0eWxlLmZsb2F0PSJub25lIix0aGlzLnByb3Aub3ZlcmxheS5hcHBlbmRDaGlsZCh0aGlzLnByb3AuY29udGFpbmVyKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucHJvcC5vdmVybGF5KSx0aGlzLnByb3AuY29udGFpbmVyLmZpcnN0Q2hpbGQuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLnByb3AuY29udGFpbmVyLmhlaWdodD1NYXRoLm1heCh0aGlzLnByb3AuY29udGFpbmVyLmZpcnN0Q2hpbGQuY2xpZW50SGVpZ2h0LHRoaXMucHJvcC5jb250YWluZXIuZmlyc3RDaGlsZC5zY3JvbGxIZWlnaHQsdGhpcy5wcm9wLmNvbnRhaW5lci5maXJzdENoaWxkLm9mZnNldEhlaWdodCkrInB4In0pKX0sYy5wcm90b3R5cGUudG9DYW52YXM9ZnVuY3Rpb24oKXt2YXIgdD1bZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLnByb3AuY29udGFpbmVyKXx8dGhpcy50b0NvbnRhaW5lcigpfV07cmV0dXJuIHRoaXMudGhlbkxpc3QodCkudGhlbihpKS50aGVuKChmdW5jdGlvbih0KXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LHRoaXMub3B0Lmh0bWwyY2FudmFzKTtyZXR1cm4gZGVsZXRlIGUub25yZW5kZXJlZCx0KHRoaXMucHJvcC5jb250YWluZXIsZSl9KSkudGhlbigoZnVuY3Rpb24odCl7KHRoaXMub3B0Lmh0bWwyY2FudmFzLm9ucmVuZGVyZWR8fGZ1bmN0aW9uKCl7fSkodCksdGhpcy5wcm9wLmNhbnZhcz10LGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5wcm9wLm92ZXJsYXkpfSkpfSxjLnByb3RvdHlwZS50b0NvbnRleHQyZD1mdW5jdGlvbigpe3ZhciB0PVtmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRoaXMucHJvcC5jb250YWluZXIpfHx0aGlzLnRvQ29udGFpbmVyKCl9XTtyZXR1cm4gdGhpcy50aGVuTGlzdCh0KS50aGVuKGkpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0LmpzUERGLHI9dGhpcy5vcHQuZm9udEZhY2VzLG49Im51bWJlciIhPXR5cGVvZiB0aGlzLm9wdC53aWR0aHx8aXNOYU4odGhpcy5vcHQud2lkdGgpfHwibnVtYmVyIiE9dHlwZW9mIHRoaXMub3B0LndpbmRvd1dpZHRofHxpc05hTih0aGlzLm9wdC53aW5kb3dXaWR0aCk\/MTp0aGlzLm9wdC53aWR0aC90aGlzLm9wdC53aW5kb3dXaWR0aCxpPU9iamVjdC5hc3NpZ24oe2FzeW5jOiEwLGFsbG93VGFpbnQ6ITAsc2NhbGU6bixzY3JvbGxYOnRoaXMub3B0LnNjcm9sbFh8fDAsc2Nyb2xsWTp0aGlzLm9wdC5zY3JvbGxZfHwwLGJhY2tncm91bmRDb2xvcjoiI2ZmZmZmZiIsaW1hZ2VUaW1lb3V0OjE1ZTMsbG9nZ2luZzohMCxwcm94eTpudWxsLHJlbW92ZUNvbnRhaW5lcjohMCxmb3JlaWduT2JqZWN0UmVuZGVyaW5nOiExLHVzZUNPUlM6ITF9LHRoaXMub3B0Lmh0bWwyY2FudmFzKTtpZihkZWxldGUgaS5vbnJlbmRlcmVkLGUuY29udGV4dDJkLmF1dG9QYWdpbmc9dm9pZCAwPT09dGhpcy5vcHQuYXV0b1BhZ2luZ3x8dGhpcy5vcHQuYXV0b1BhZ2luZyxlLmNvbnRleHQyZC5wb3NYPXRoaXMub3B0LngsZS5jb250ZXh0MmQucG9zWT10aGlzLm9wdC55LGUuY29udGV4dDJkLm1hcmdpbj10aGlzLm9wdC5tYXJnaW4sZS5jb250ZXh0MmQuZm9udEZhY2VzPXIscilmb3IodmFyIGE9MDthPHIubGVuZ3RoOysrYSl7dmFyIG89clthXSxzPW8uc3JjLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiJ0cnVldHlwZSI9PT10LmZvcm1hdH0pKTtzJiZlLmFkZEZvbnQocy51cmwsby5yZWYubmFtZSxvLnJlZi5zdHlsZSl9cmV0dXJuIGkud2luZG93SGVpZ2h0PWkud2luZG93SGVpZ2h0fHwwLGkud2luZG93SGVpZ2h0PTA9PWkud2luZG93SGVpZ2h0P01hdGgubWF4KHRoaXMucHJvcC5jb250YWluZXIuY2xpZW50SGVpZ2h0LHRoaXMucHJvcC5jb250YWluZXIuc2Nyb2xsSGVpZ2h0LHRoaXMucHJvcC5jb250YWluZXIub2Zmc2V0SGVpZ2h0KTppLndpbmRvd0hlaWdodCxlLmNvbnRleHQyZC5zYXZlKCEwKSx0KHRoaXMucHJvcC5jb250YWluZXIsaSl9KSkudGhlbigoZnVuY3Rpb24odCl7dGhpcy5vcHQuanNQREYuY29udGV4dDJkLnJlc3RvcmUoITApLCh0aGlzLm9wdC5odG1sMmNhbnZhcy5vbnJlbmRlcmVkfHxmdW5jdGlvbigpe30pKHQpLHRoaXMucHJvcC5jYW52YXM9dCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucHJvcC5vdmVybGF5KX0pKX0sYy5wcm90b3R5cGUudG9JbWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aGVuTGlzdChbZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wLmNhbnZhc3x8dGhpcy50b0NhbnZhcygpfV0pLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wcm9wLmNhbnZhcy50b0RhdGFVUkwoImltYWdlLyIrdGhpcy5vcHQuaW1hZ2UudHlwZSx0aGlzLm9wdC5pbWFnZS5xdWFsaXR5KTt0aGlzLnByb3AuaW1nPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpLHRoaXMucHJvcC5pbWcuc3JjPXR9KSl9LGMucHJvdG90eXBlLnRvUGRmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGhlbkxpc3QoW2Z1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9Db250ZXh0MmQoKX1dKS50aGVuKChmdW5jdGlvbigpe3RoaXMucHJvcC5wZGY9dGhpcy5wcm9wLnBkZnx8dGhpcy5vcHQuanNQREZ9KSl9LGMucHJvdG90eXBlLm91dHB1dD1mdW5jdGlvbih0LGUscil7cmV0dXJuImltZyI9PT0ocj1yfHwicGRmIikudG9Mb3dlckNhc2UoKXx8ImltYWdlIj09PXIudG9Mb3dlckNhc2UoKT90aGlzLm91dHB1dEltZyh0LGUpOnRoaXMub3V0cHV0UGRmKHQsZSl9LGMucHJvdG90eXBlLm91dHB1dFBkZj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRoZW5MaXN0KFtmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3AucGRmfHx0aGlzLnRvUGRmKCl9XSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wLnBkZi5vdXRwdXQodCxlKX0pKX0sYy5wcm90b3R5cGUub3V0cHV0SW1nPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW5MaXN0KFtmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3AuaW1nfHx0aGlzLnRvSW1nKCl9XSkudGhlbigoZnVuY3Rpb24oKXtzd2l0Y2godCl7Y2FzZSB2b2lkIDA6Y2FzZSJpbWciOnJldHVybiB0aGlzLnByb3AuaW1nO2Nhc2UiZGF0YXVyaXN0cmluZyI6Y2FzZSJkYXRhdXJsc3RyaW5nIjpyZXR1cm4gdGhpcy5wcm9wLmltZy5zcmM7Y2FzZSJkYXRhdXJpIjpjYXNlImRhdGF1cmwiOnJldHVybiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmPXRoaXMucHJvcC5pbWcuc3JjO2RlZmF1bHQ6dGhyb3cnSW1hZ2Ugb3V0cHV0IHR5cGUgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkLid9fSkpfSxjLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW5MaXN0KFtmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3AucGRmfHx0aGlzLnRvUGRmKCl9XSkuc2V0KHQ\/e2ZpbGVuYW1lOnR9Om51bGwpLnRoZW4oKGZ1bmN0aW9uKCl7dGhpcy5wcm9wLnBkZi5zYXZlKHRoaXMub3B0LmZpbGVuYW1lKX0pKX0sYy5wcm90b3R5cGUuZG9DYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRoZW5MaXN0KFtmdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3AucGRmfHx0aGlzLnRvUGRmKCl9XSkudGhlbigoZnVuY3Rpb24oKXt0aGlzLnByb3AuY2FsbGJhY2sodGhpcy5wcm9wLnBkZil9KSl9LGMucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZigib2JqZWN0IiE9PW8odCkpcmV0dXJuIHRoaXM7dmFyIGU9T2JqZWN0LmtleXModHx8e30pLm1hcCgoZnVuY3Rpb24oZSl7aWYoZSBpbiBjLnRlbXBsYXRlLnByb3ApcmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5wcm9wW2VdPXRbZV19O3N3aXRjaChlKXtjYXNlIm1hcmdpbiI6cmV0dXJuIHRoaXMuc2V0TWFyZ2luLmJpbmQodGhpcyx0Lm1hcmdpbik7Y2FzZSJqc1BERiI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0LmpzUERGPXQuanNQREYsdGhpcy5zZXRQYWdlU2l6ZSgpfTtjYXNlInBhZ2VTaXplIjpyZXR1cm4gdGhpcy5zZXRQYWdlU2l6ZS5iaW5kKHRoaXMsdC5wYWdlU2l6ZSk7ZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLm9wdFtlXT10W2VdfX19KSx0aGlzKTtyZXR1cm4gdGhpcy50aGVuKChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRoZW5MaXN0KGUpfSkpfSxjLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50aGVuKChmdW5jdGlvbigpe3ZhciByPXQgaW4gYy50ZW1wbGF0ZS5wcm9wP3RoaXMucHJvcFt0XTp0aGlzLm9wdFt0XTtyZXR1cm4gZT9lKHIpOnJ9KSl9LGMucHJvdG90eXBlLnNldE1hcmdpbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKChmdW5jdGlvbigpe3N3aXRjaChvKHQpKXtjYXNlIm51bWJlciI6dD1bdCx0LHQsdF07Y2FzZSJhcnJheSI6aWYoMj09PXQubGVuZ3RoJiYodD1bdFswXSx0WzFdLHRbMF0sdFsxXV0pLDQ9PT10Lmxlbmd0aClicmVhaztkZWZhdWx0OnJldHVybiB0aGlzLmVycm9yKCJJbnZhbGlkIG1hcmdpbiBhcnJheS4iKX10aGlzLm9wdC5tYXJnaW49dH0pKS50aGVuKHRoaXMuc2V0UGFnZVNpemUpfSxjLnByb3RvdHlwZS5zZXRQYWdlU2l6ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodCplLzcyKjk2KX1yZXR1cm4gdGhpcy50aGVuKChmdW5jdGlvbigpeyh0PXR8fE0uZ2V0UGFnZVNpemUodGhpcy5vcHQuanNQREYpKS5oYXNPd25Qcm9wZXJ0eSgiaW5uZXIiKXx8KHQuaW5uZXI9e3dpZHRoOnQud2lkdGgtdGhpcy5vcHQubWFyZ2luWzFdLXRoaXMub3B0Lm1hcmdpblszXSxoZWlnaHQ6dC5oZWlnaHQtdGhpcy5vcHQubWFyZ2luWzBdLXRoaXMub3B0Lm1hcmdpblsyXX0sdC5pbm5lci5weD17d2lkdGg6ZSh0LmlubmVyLndpZHRoLHQuayksaGVpZ2h0OmUodC5pbm5lci5oZWlnaHQsdC5rKX0sdC5pbm5lci5yYXRpbz10LmlubmVyLmhlaWdodC90LmlubmVyLndpZHRoKSx0aGlzLnByb3AucGFnZVNpemU9dH0pKX0sYy5wcm90b3R5cGUuc2V0UHJvZ3Jlc3M9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG51bGwhPXQmJih0aGlzLnByb2dyZXNzLnZhbD10KSxudWxsIT1lJiYodGhpcy5wcm9ncmVzcy5zdGF0ZT1lKSxudWxsIT1yJiYodGhpcy5wcm9ncmVzcy5uPXIpLG51bGwhPW4mJih0aGlzLnByb2dyZXNzLnN0YWNrPW4pLHRoaXMucHJvZ3Jlc3MucmF0aW89dGhpcy5wcm9ncmVzcy52YWwvdGhpcy5wcm9ncmVzcy5zdGF0ZSx0aGlzfSxjLnByb3RvdHlwZS51cGRhdGVQcm9ncmVzcz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5zZXRQcm9ncmVzcyh0P3RoaXMucHJvZ3Jlc3MudmFsK3Q6bnVsbCxlfHxudWxsLHI\/dGhpcy5wcm9ncmVzcy5uK3I6bnVsbCxuP3RoaXMucHJvZ3Jlc3Muc3RhY2suY29uY2F0KG4pOm51bGwpfSxjLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy50aGVuQ29yZSh0LGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIudXBkYXRlUHJvZ3Jlc3MobnVsbCxudWxsLDEsW3RdKSxQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwodGhpcywoZnVuY3Rpb24oZSl7cmV0dXJuIHIudXBkYXRlUHJvZ3Jlc3MobnVsbCx0KSxlfSkpLnRoZW4odCxlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gci51cGRhdGVQcm9ncmVzcygxKSx0fSkpfSkpfSxjLnByb3RvdHlwZS50aGVuQ29yZT1mdW5jdGlvbih0LGUscil7cj1yfHxQcm9taXNlLnByb3RvdHlwZS50aGVuO3QmJih0PXQuYmluZCh0aGlzKSksZSYmKGU9ZS5iaW5kKHRoaXMpKTt2YXIgbj0tMSE9PVByb21pc2UudG9TdHJpbmcoKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikmJiJQcm9taXNlIj09PVByb21pc2UubmFtZT90aGlzOmMuY29udmVydChPYmplY3QuYXNzaWduKHt9LHRoaXMpLFByb21pc2UucHJvdG90eXBlKSxpPXIuY2FsbChuLHQsZSk7cmV0dXJuIGMuY29udmVydChpLHRoaXMuX19wcm90b19fKX0sYy5wcm90b3R5cGUudGhlbkV4dGVybmFsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFByb21pc2UucHJvdG90eXBlLnRoZW4uY2FsbCh0aGlzLHQsZSl9LGMucHJvdG90eXBlLnRoZW5MaXN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1lLnRoZW5Db3JlKHQpfSkpLGV9LGMucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3QmJih0PXQuYmluZCh0aGlzKSk7dmFyIGU9UHJvbWlzZS5wcm90b3R5cGUuY2F0Y2guY2FsbCh0aGlzLHQpO3JldHVybiBjLmNvbnZlcnQoZSx0aGlzKX0sYy5wcm90b3R5cGUuY2F0Y2hFeHRlcm5hbD1mdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2guY2FsbCh0aGlzLHQpfSxjLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKChmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcih0KX0pKX0sYy5wcm90b3R5cGUudXNpbmc9Yy5wcm90b3R5cGUuc2V0LGMucHJvdG90eXBlLnNhdmVBcz1jLnByb3RvdHlwZS5zYXZlLGMucHJvdG90eXBlLmV4cG9ydD1jLnByb3RvdHlwZS5vdXRwdXQsYy5wcm90b3R5cGUucnVuPWMucHJvdG90eXBlLnRoZW4sTS5nZXRQYWdlU2l6ZT1mdW5jdGlvbih0LHIsbil7aWYoIm9iamVjdCI9PT1lKHQpKXt2YXIgaT10O3Q9aS5vcmllbnRhdGlvbixyPWkudW5pdHx8cixuPWkuZm9ybWF0fHxufXI9cnx8Im1tIixuPW58fCJhNCIsdD0oIiIrKHR8fCJQIikpLnRvTG93ZXJDYXNlKCk7dmFyIGEsbz0oIiIrbikudG9Mb3dlckNhc2UoKSxzPXthMDpbMjM4My45NCwzMzcwLjM5XSxhMTpbMTY4My43OCwyMzgzLjk0XSxhMjpbMTE5MC41NSwxNjgzLjc4XSxhMzpbODQxLjg5LDExOTAuNTVdLGE0Ols1OTUuMjgsODQxLjg5XSxhNTpbNDE5LjUzLDU5NS4yOF0sYTY6WzI5Ny42NCw0MTkuNTNdLGE3OlsyMDkuNzYsMjk3LjY0XSxhODpbMTQ3LjQsMjA5Ljc2XSxhOTpbMTA0Ljg4LDE0Ny40XSxhMTA6WzczLjcsMTA0Ljg4XSxiMDpbMjgzNC42NSw0MDA4LjE5XSxiMTpbMjAwNC4wOSwyODM0LjY1XSxiMjpbMTQxNy4zMiwyMDA0LjA5XSxiMzpbMTAwMC42MywxNDE3LjMyXSxiNDpbNzA4LjY2LDEwMDAuNjNdLGI1Ols0OTguOSw3MDguNjZdLGI2OlszNTQuMzMsNDk4LjldLGI3OlsyNDkuNDUsMzU0LjMzXSxiODpbMTc1Ljc1LDI0OS40NV0sYjk6WzEyNC43MiwxNzUuNzVdLGIxMDpbODcuODcsMTI0LjcyXSxjMDpbMjU5OS4zNywzNjc2LjU0XSxjMTpbMTgzNi44NSwyNTk5LjM3XSxjMjpbMTI5OC4yNywxODM2Ljg1XSxjMzpbOTE4LjQzLDEyOTguMjddLGM0Ols2NDkuMTMsOTE4LjQzXSxjNTpbNDU5LjIxLDY0OS4xM10sYzY6WzMyMy4xNSw0NTkuMjFdLGM3OlsyMjkuNjEsMzIzLjE1XSxjODpbMTYxLjU3LDIyOS42MV0sYzk6WzExMy4zOSwxNjEuNTddLGMxMDpbNzkuMzcsMTEzLjM5XSxkbDpbMzExLjgxLDYyMy42Ml0sbGV0dGVyOls2MTIsNzkyXSwiZ292ZXJubWVudC1sZXR0ZXIiOls1NzYsNzU2XSxsZWdhbDpbNjEyLDEwMDhdLCJqdW5pb3ItbGVnYWwiOls1NzYsMzYwXSxsZWRnZXI6WzEyMjQsNzkyXSx0YWJsb2lkOls3OTIsMTIyNF0sImNyZWRpdC1jYXJkIjpbMTUzLDI0M119O3N3aXRjaChyKXtjYXNlInB0IjphPTE7YnJlYWs7Y2FzZSJtbSI6YT03Mi8yNS40O2JyZWFrO2Nhc2UiY20iOmE9NzIvMi41NDticmVhaztjYXNlImluIjphPTcyO2JyZWFrO2Nhc2UicHgiOmE9Ljc1O2JyZWFrO2Nhc2UicGMiOmNhc2UiZW0iOmE9MTI7YnJlYWs7Y2FzZSJleCI6YT02O2JyZWFrO2RlZmF1bHQ6dGhyb3ciSW52YWxpZCB1bml0OiAiK3J9dmFyIGMsdT0wLGw9MDtpZihzLmhhc093blByb3BlcnR5KG8pKXU9c1tvXVsxXS9hLGw9c1tvXVswXS9hO2Vsc2UgdHJ5e3U9blsxXSxsPW5bMF19Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGZvcm1hdDogIituKX1pZigicCI9PT10fHwicG9ydHJhaXQiPT09dCl0PSJwIixsPnUmJihjPWwsbD11LHU9Yyk7ZWxzZXtpZigibCIhPT10JiYibGFuZHNjYXBlIiE9PXQpdGhyb3ciSW52YWxpZCBvcmllbnRhdGlvbjogIit0O3Q9ImwiLHU+bCYmKGM9bCxsPXUsdT1jKX1yZXR1cm57d2lkdGg6bCxoZWlnaHQ6dSx1bml0OnIsazphLG9yaWVudGF0aW9uOnR9fSxuLmh0bWw9ZnVuY3Rpb24odCxlKXsoZT1lfHx7fSkuY2FsbGJhY2s9ZS5jYWxsYmFja3x8ZnVuY3Rpb24oKXt9LGUuaHRtbDJjYW52YXM9ZS5odG1sMmNhbnZhc3x8e30sZS5odG1sMmNhbnZhcy5jYW52YXM9ZS5odG1sMmNhbnZhcy5jYW52YXN8fHRoaXMuY2FudmFzLGUuanNQREY9ZS5qc1BERnx8dGhpcyxlLmZvbnRGYWNlcz1lLmZvbnRGYWNlcz9lLmZvbnRGYWNlcy5tYXAoQ3QpOm51bGw7dmFyIHI9bmV3IGMoZSk7cmV0dXJuIGUud29ya2VyP3I6ci5mcm9tKHQpLmRvQ2FsbGJhY2soKX19KE0uQVBJKSwKLyoqCiAgICogQGxpY2Vuc2UKICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAqIENvcHlyaWdodCAoYykgMjAxMyBZb3Vzc2VmIEJlZGRhZCwgeW91c3NlZi5iZWRkYWRAZ21haWwuY29tCiAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiAgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAogICAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogICAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICAgKgogICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiAgICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAgICoKICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICAgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKICAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAogICAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKICAgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCiAgICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCiAgICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgKi8KZnVuY3Rpb24odCl7dmFyIGUscixuO3QuYWRkSlM9ZnVuY3Rpb24odCl7cmV0dXJuIG49dCx0aGlzLmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInBvc3RQdXRSZXNvdXJjZXMiLChmdW5jdGlvbigpe2U9dGhpcy5pbnRlcm5hbC5uZXdPYmplY3QoKSx0aGlzLmludGVybmFsLm91dCgiPDwiKSx0aGlzLmludGVybmFsLm91dCgiL05hbWVzIFsoRW1iZWRkZWRKUykgIisoZSsxKSsiIDAgUl0iKSx0aGlzLmludGVybmFsLm91dCgiPj4iKSx0aGlzLmludGVybmFsLm91dCgiZW5kb2JqIikscj10aGlzLmludGVybmFsLm5ld09iamVjdCgpLHRoaXMuaW50ZXJuYWwub3V0KCI8PCIpLHRoaXMuaW50ZXJuYWwub3V0KCIvUyAvSmF2YVNjcmlwdCIpLHRoaXMuaW50ZXJuYWwub3V0KCIvSlMgKCIrbisiKSIpLHRoaXMuaW50ZXJuYWwub3V0KCI+PiIpLHRoaXMuaW50ZXJuYWwub3V0KCJlbmRvYmoiKX0pKSx0aGlzLmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInB1dENhdGFsb2ciLChmdW5jdGlvbigpe3ZvaWQgMCE9PWUmJnZvaWQgMCE9PXImJnRoaXMuaW50ZXJuYWwub3V0KCIvTmFtZXMgPDwvSmF2YVNjcmlwdCAiK2UrIiAwIFI+PiIpfSkpLHRoaXN9fShNLkFQSSksCi8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IChjKSAyMDE0IFN0ZXZlbiBTcHVuZ2luIChUd2VsdmVUb25lIExMQykgIHN0ZXZlbkB0d2VsdmV0b25lLnR2CiAgICoKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICovCmZ1bmN0aW9uKHQpe3ZhciBlO3QuZXZlbnRzLnB1c2goWyJwb3N0UHV0UmVzb3VyY2VzIixmdW5jdGlvbigpe3ZhciB0PXRoaXMscj0vXihcZCspIDAgb2JqJC87aWYodGhpcy5vdXRsaW5lLnJvb3QuY2hpbGRyZW4ubGVuZ3RoPjApZm9yKHZhciBuPXQub3V0bGluZS5yZW5kZXIoKS5zcGxpdCgvXHJcbi8pLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIGE9bltpXSxvPXIuZXhlYyhhKTtpZihudWxsIT1vKXt2YXIgcz1vWzFdO3QuaW50ZXJuYWwubmV3T2JqZWN0RGVmZXJyZWRCZWdpbihzLCExKX10LmludGVybmFsLndyaXRlKGEpfWlmKHRoaXMub3V0bGluZS5jcmVhdGVOYW1lZERlc3RpbmF0aW9ucyl7dmFyIGM9dGhpcy5pbnRlcm5hbC5wYWdlcy5sZW5ndGgsdT1bXTtmb3IoaT0wO2k8YztpKyspe3ZhciBsPXQuaW50ZXJuYWwubmV3T2JqZWN0KCk7dS5wdXNoKGwpO3ZhciBoPXQuaW50ZXJuYWwuZ2V0UGFnZUluZm8oaSsxKTt0LmludGVybmFsLndyaXRlKCI8PCAvRFsiK2gub2JqSWQrIiAwIFIgL1hZWiBudWxsIG51bGwgbnVsbF0+PiBlbmRvYmoiKX12YXIgZj10LmludGVybmFsLm5ld09iamVjdCgpO3QuaW50ZXJuYWwud3JpdGUoIjw8IC9OYW1lcyBbICIpO2ZvcihpPTA7aTx1Lmxlbmd0aDtpKyspdC5pbnRlcm5hbC53cml0ZSgiKHBhZ2VfIisoaSsxKSsiKSIrdVtpXSsiIDAgUiIpO3QuaW50ZXJuYWwud3JpdGUoIiBdID4+IiwiZW5kb2JqIiksZT10LmludGVybmFsLm5ld09iamVjdCgpLHQuaW50ZXJuYWwud3JpdGUoIjw8IC9EZXN0cyAiK2YrIiAwIFIiKSx0LmludGVybmFsLndyaXRlKCI+PiIsImVuZG9iaiIpfX1dKSx0LmV2ZW50cy5wdXNoKFsicHV0Q2F0YWxvZyIsZnVuY3Rpb24oKXt0aGlzLm91dGxpbmUucm9vdC5jaGlsZHJlbi5sZW5ndGg+MCYmKHRoaXMuaW50ZXJuYWwud3JpdGUoIi9PdXRsaW5lcyIsdGhpcy5vdXRsaW5lLm1ha2VSZWYodGhpcy5vdXRsaW5lLnJvb3QpKSx0aGlzLm91dGxpbmUuY3JlYXRlTmFtZWREZXN0aW5hdGlvbnMmJnRoaXMuaW50ZXJuYWwud3JpdGUoIi9OYW1lcyAiK2UrIiAwIFIiKSl9XSksdC5ldmVudHMucHVzaChbImluaXRpYWxpemVkIixmdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5vdXRsaW5lPXtjcmVhdGVOYW1lZERlc3RpbmF0aW9uczohMSxyb290OntjaGlsZHJlbjpbXX19LHQub3V0bGluZS5hZGQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXt0aXRsZTplLG9wdGlvbnM6cixjaGlsZHJlbjpbXX07cmV0dXJuIG51bGw9PXQmJih0PXRoaXMucm9vdCksdC5jaGlsZHJlbi5wdXNoKG4pLG59LHQub3V0bGluZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHg9e30sdGhpcy5jdHgudmFsPSIiLHRoaXMuY3R4LnBkZj10LHRoaXMuZ2VuSWRzX3IodGhpcy5yb290KSx0aGlzLnJlbmRlclJvb3QodGhpcy5yb290KSx0aGlzLnJlbmRlckl0ZW1zKHRoaXMucm9vdCksdGhpcy5jdHgudmFsfSx0Lm91dGxpbmUuZ2VuSWRzX3I9ZnVuY3Rpb24oZSl7ZS5pZD10LmludGVybmFsLm5ld09iamVjdERlZmVycmVkKCk7Zm9yKHZhciByPTA7cjxlLmNoaWxkcmVuLmxlbmd0aDtyKyspdGhpcy5nZW5JZHNfcihlLmNoaWxkcmVuW3JdKX0sdC5vdXRsaW5lLnJlbmRlclJvb3Q9ZnVuY3Rpb24odCl7dGhpcy5vYmpTdGFydCh0KSx0aGlzLmxpbmUoIi9UeXBlIC9PdXRsaW5lcyIpLHQuY2hpbGRyZW4ubGVuZ3RoPjAmJih0aGlzLmxpbmUoIi9GaXJzdCAiK3RoaXMubWFrZVJlZih0LmNoaWxkcmVuWzBdKSksdGhpcy5saW5lKCIvTGFzdCAiK3RoaXMubWFrZVJlZih0LmNoaWxkcmVuW3QuY2hpbGRyZW4ubGVuZ3RoLTFdKSkpLHRoaXMubGluZSgiL0NvdW50ICIrdGhpcy5jb3VudF9yKHtjb3VudDowfSx0KSksdGhpcy5vYmpFbmQoKX0sdC5vdXRsaW5lLnJlbmRlckl0ZW1zPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj10aGlzLmN0eC5wZGYuaW50ZXJuYWwuZ2V0VmVydGljYWxDb29yZGluYXRlU3RyaW5nLG49MDtuPGUuY2hpbGRyZW4ubGVuZ3RoO24rKyl7dmFyIGk9ZS5jaGlsZHJlbltuXTt0aGlzLm9ialN0YXJ0KGkpLHRoaXMubGluZSgiL1RpdGxlICIrdGhpcy5tYWtlU3RyaW5nKGkudGl0bGUpKSx0aGlzLmxpbmUoIi9QYXJlbnQgIit0aGlzLm1ha2VSZWYoZSkpLG4+MCYmdGhpcy5saW5lKCIvUHJldiAiK3RoaXMubWFrZVJlZihlLmNoaWxkcmVuW24tMV0pKSxuPGUuY2hpbGRyZW4ubGVuZ3RoLTEmJnRoaXMubGluZSgiL05leHQgIit0aGlzLm1ha2VSZWYoZS5jaGlsZHJlbltuKzFdKSksaS5jaGlsZHJlbi5sZW5ndGg+MCYmKHRoaXMubGluZSgiL0ZpcnN0ICIrdGhpcy5tYWtlUmVmKGkuY2hpbGRyZW5bMF0pKSx0aGlzLmxpbmUoIi9MYXN0ICIrdGhpcy5tYWtlUmVmKGkuY2hpbGRyZW5baS5jaGlsZHJlbi5sZW5ndGgtMV0pKSk7dmFyIGE9dGhpcy5jb3VudD10aGlzLmNvdW50X3Ioe2NvdW50OjB9LGkpO2lmKGE+MCYmdGhpcy5saW5lKCIvQ291bnQgIithKSxpLm9wdGlvbnMmJmkub3B0aW9ucy5wYWdlTnVtYmVyKXt2YXIgbz10LmludGVybmFsLmdldFBhZ2VJbmZvKGkub3B0aW9ucy5wYWdlTnVtYmVyKTt0aGlzLmxpbmUoIi9EZXN0IFsiK28ub2JqSWQrIiAwIFIgL1hZWiAwICIrcigwKSsiIDBdIil9dGhpcy5vYmpFbmQoKX1mb3IodmFyIHM9MDtzPGUuY2hpbGRyZW4ubGVuZ3RoO3MrKyl0aGlzLnJlbmRlckl0ZW1zKGUuY2hpbGRyZW5bc10pfSx0Lm91dGxpbmUubGluZT1mdW5jdGlvbih0KXt0aGlzLmN0eC52YWwrPXQrIlxyXG4ifSx0Lm91dGxpbmUubWFrZVJlZj1mdW5jdGlvbih0KXtyZXR1cm4gdC5pZCsiIDAgUiJ9LHQub3V0bGluZS5tYWtlU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiIoIit0LmludGVybmFsLnBkZkVzY2FwZShlKSsiKSJ9LHQub3V0bGluZS5vYmpTdGFydD1mdW5jdGlvbih0KXt0aGlzLmN0eC52YWwrPSJcclxuIit0LmlkKyIgMCBvYmpcclxuPDxcclxuIn0sdC5vdXRsaW5lLm9iakVuZD1mdW5jdGlvbigpe3RoaXMuY3R4LnZhbCs9Ij4+IFxyXG5lbmRvYmpcclxuIn0sdC5vdXRsaW5lLmNvdW50X3I9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPGUuY2hpbGRyZW4ubGVuZ3RoO3IrKyl0LmNvdW50KyssdGhpcy5jb3VudF9yKHQsZS5jaGlsZHJlbltyXSk7cmV0dXJuIHQuY291bnR9fV0pfShNLkFQSSksCi8qKgogICAqIEBsaWNlbnNlCiAgICoKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICovCmZ1bmN0aW9uKHQpe3ZhciBlPVsxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5XTt0LnByb2Nlc3NKUEVHPWZ1bmN0aW9uKHQscixuLGksYSxvKXt2YXIgcyxjPXRoaXMuZGVjb2RlLkRDVF9ERUNPREUsdT1udWxsO2lmKCJzdHJpbmciPT10eXBlb2YgdHx8dGhpcy5fX2FkZGltYWdlX18uaXNBcnJheUJ1ZmZlcih0KXx8dGhpcy5fX2FkZGltYWdlX18uaXNBcnJheUJ1ZmZlclZpZXcodCkpe3N3aXRjaCh0PWF8fHQsdD10aGlzLl9fYWRkaW1hZ2VfXy5pc0FycmF5QnVmZmVyKHQpP25ldyBVaW50OEFycmF5KHQpOnQsKHM9ZnVuY3Rpb24odCl7Zm9yKHZhciByLG49MjU2KnQuY2hhckNvZGVBdCg0KSt0LmNoYXJDb2RlQXQoNSksaT10Lmxlbmd0aCxhPXt3aWR0aDowLGhlaWdodDowLG51bWNvbXBvbmVudHM6MX0sbz00O288aTtvKz0yKXtpZihvKz1uLC0xIT09ZS5pbmRleE9mKHQuY2hhckNvZGVBdChvKzEpKSl7cj0yNTYqdC5jaGFyQ29kZUF0KG8rNSkrdC5jaGFyQ29kZUF0KG8rNiksYT17d2lkdGg6MjU2KnQuY2hhckNvZGVBdChvKzcpK3QuY2hhckNvZGVBdChvKzgpLGhlaWdodDpyLG51bWNvbXBvbmVudHM6dC5jaGFyQ29kZUF0KG8rOSl9O2JyZWFrfW49MjU2KnQuY2hhckNvZGVBdChvKzIpK3QuY2hhckNvZGVBdChvKzMpfXJldHVybiBhfSh0PXRoaXMuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXJWaWV3KHQpP3RoaXMuX19hZGRpbWFnZV9fLmFycmF5QnVmZmVyVG9CaW5hcnlTdHJpbmcodCk6dCkpLm51bWNvbXBvbmVudHMpe2Nhc2UgMTpvPXRoaXMuY29sb3Jfc3BhY2VzLkRFVklDRV9HUkFZO2JyZWFrO2Nhc2UgNDpvPXRoaXMuY29sb3Jfc3BhY2VzLkRFVklDRV9DTVlLO2JyZWFrO2Nhc2UgMzpvPXRoaXMuY29sb3Jfc3BhY2VzLkRFVklDRV9SR0J9dT17ZGF0YTp0LHdpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0LGNvbG9yU3BhY2U6byxiaXRzUGVyQ29tcG9uZW50OjgsZmlsdGVyOmMsaW5kZXg6cixhbGlhczpufX1yZXR1cm4gdX19KE0uQVBJKTt2YXIga2UsRmUsSWUsQ2UsamUsT2U9ZnVuY3Rpb24oKXt2YXIgdCxlLG47ZnVuY3Rpb24gaSh0KXt2YXIgZSxyLG4saSxhLG8scyxjLHUsbCxoLGYsZCxwO2Zvcih0aGlzLmRhdGE9dCx0aGlzLnBvcz04LHRoaXMucGFsZXR0ZT1bXSx0aGlzLmltZ0RhdGE9W10sdGhpcy50cmFuc3BhcmVuY3k9e30sdGhpcy5hbmltYXRpb249bnVsbCx0aGlzLnRleHQ9e30sbz1udWxsOzspe3N3aXRjaChlPXRoaXMucmVhZFVJbnQzMigpLHU9ZnVuY3Rpb24oKXt2YXIgdCxlO2ZvcihlPVtdLHQ9MDt0PDQ7Kyt0KWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZGF0YVt0aGlzLnBvcysrXSkpO3JldHVybiBlfS5jYWxsKHRoaXMpLmpvaW4oIiIpKXtjYXNlIklIRFIiOnRoaXMud2lkdGg9dGhpcy5yZWFkVUludDMyKCksdGhpcy5oZWlnaHQ9dGhpcy5yZWFkVUludDMyKCksdGhpcy5iaXRzPXRoaXMuZGF0YVt0aGlzLnBvcysrXSx0aGlzLmNvbG9yVHlwZT10aGlzLmRhdGFbdGhpcy5wb3MrK10sdGhpcy5jb21wcmVzc2lvbk1ldGhvZD10aGlzLmRhdGFbdGhpcy5wb3MrK10sdGhpcy5maWx0ZXJNZXRob2Q9dGhpcy5kYXRhW3RoaXMucG9zKytdLHRoaXMuaW50ZXJsYWNlTWV0aG9kPXRoaXMuZGF0YVt0aGlzLnBvcysrXTticmVhaztjYXNlImFjVEwiOnRoaXMuYW5pbWF0aW9uPXtudW1GcmFtZXM6dGhpcy5yZWFkVUludDMyKCksbnVtUGxheXM6dGhpcy5yZWFkVUludDMyKCl8fDEvMCxmcmFtZXM6W119O2JyZWFrO2Nhc2UiUExURSI6dGhpcy5wYWxldHRlPXRoaXMucmVhZChlKTticmVhaztjYXNlImZjVEwiOm8mJnRoaXMuYW5pbWF0aW9uLmZyYW1lcy5wdXNoKG8pLHRoaXMucG9zKz00LG89e3dpZHRoOnRoaXMucmVhZFVJbnQzMigpLGhlaWdodDp0aGlzLnJlYWRVSW50MzIoKSx4T2Zmc2V0OnRoaXMucmVhZFVJbnQzMigpLHlPZmZzZXQ6dGhpcy5yZWFkVUludDMyKCl9LGE9dGhpcy5yZWFkVUludDE2KCksaT10aGlzLnJlYWRVSW50MTYoKXx8MTAwLG8uZGVsYXk9MWUzKmEvaSxvLmRpc3Bvc2VPcD10aGlzLmRhdGFbdGhpcy5wb3MrK10sby5ibGVuZE9wPXRoaXMuZGF0YVt0aGlzLnBvcysrXSxvLmRhdGE9W107YnJlYWs7Y2FzZSJJREFUIjpjYXNlImZkQVQiOmZvcigiZmRBVCI9PT11JiYodGhpcy5wb3MrPTQsZS09NCksdD0obnVsbCE9bz9vLmRhdGE6dm9pZCAwKXx8dGhpcy5pbWdEYXRhLGY9MDswPD1lP2Y8ZTpmPmU7MDw9ZT8rK2Y6LS1mKXQucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pO2JyZWFrO2Nhc2UidFJOUyI6c3dpdGNoKHRoaXMudHJhbnNwYXJlbmN5PXt9LHRoaXMuY29sb3JUeXBlKXtjYXNlIDM6aWYobj10aGlzLnBhbGV0dGUubGVuZ3RoLzMsdGhpcy50cmFuc3BhcmVuY3kuaW5kZXhlZD10aGlzLnJlYWQoZSksdGhpcy50cmFuc3BhcmVuY3kuaW5kZXhlZC5sZW5ndGg+bil0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdHJhbnNwYXJlbnQgY29sb3JzIHRoYW4gcGFsZXR0ZSBzaXplIik7aWYoKGw9bi10aGlzLnRyYW5zcGFyZW5jeS5pbmRleGVkLmxlbmd0aCk+MClmb3IoZD0wOzA8PWw\/ZDxsOmQ+bDswPD1sPysrZDotLWQpdGhpcy50cmFuc3BhcmVuY3kuaW5kZXhlZC5wdXNoKDI1NSk7YnJlYWs7Y2FzZSAwOnRoaXMudHJhbnNwYXJlbmN5LmdyYXlzY2FsZT10aGlzLnJlYWQoZSlbMF07YnJlYWs7Y2FzZSAyOnRoaXMudHJhbnNwYXJlbmN5LnJnYj10aGlzLnJlYWQoZSl9YnJlYWs7Y2FzZSJ0RVh0IjpzPShoPXRoaXMucmVhZChlKSkuaW5kZXhPZigwKSxjPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGguc2xpY2UoMCxzKSksdGhpcy50ZXh0W2NdPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGguc2xpY2UocysxKSk7YnJlYWs7Y2FzZSJJRU5EIjpyZXR1cm4gbyYmdGhpcy5hbmltYXRpb24uZnJhbWVzLnB1c2gobyksdGhpcy5jb2xvcnM9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb2xvclR5cGUpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA0OnJldHVybiAxO2Nhc2UgMjpjYXNlIDY6cmV0dXJuIDN9fS5jYWxsKHRoaXMpLHRoaXMuaGFzQWxwaGFDaGFubmVsPTQ9PT0ocD10aGlzLmNvbG9yVHlwZSl8fDY9PT1wLHI9dGhpcy5jb2xvcnMrKHRoaXMuaGFzQWxwaGFDaGFubmVsPzE6MCksdGhpcy5waXhlbEJpdGxlbmd0aD10aGlzLmJpdHMqcix0aGlzLmNvbG9yU3BhY2U9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5jb2xvcnMpe2Nhc2UgMTpyZXR1cm4iRGV2aWNlR3JheSI7Y2FzZSAzOnJldHVybiJEZXZpY2VSR0IifX0uY2FsbCh0aGlzKSx2b2lkKHRoaXMuaW1nRGF0YT1uZXcgVWludDhBcnJheSh0aGlzLmltZ0RhdGEpKTtkZWZhdWx0OnRoaXMucG9zKz1lfWlmKHRoaXMucG9zKz00LHRoaXMucG9zPnRoaXMuZGF0YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbmNvbXBsZXRlIG9yIGNvcnJ1cHQgUE5HIGZpbGUiKX19aS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0KXt2YXIgZSxyO2ZvcihyPVtdLGU9MDswPD10P2U8dDplPnQ7MDw9dD8rK2U6LS1lKXIucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pO3JldHVybiByfSxpLnByb3RvdHlwZS5yZWFkVUludDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVt0aGlzLnBvcysrXTw8MjR8dGhpcy5kYXRhW3RoaXMucG9zKytdPDwxNnx0aGlzLmRhdGFbdGhpcy5wb3MrK108PDh8dGhpcy5kYXRhW3RoaXMucG9zKytdfSxpLnByb3RvdHlwZS5yZWFkVUludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVt0aGlzLnBvcysrXTw8OHx0aGlzLmRhdGFbdGhpcy5wb3MrK119LGkucHJvdG90eXBlLmRlY29kZVBpeGVscz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBpeGVsQml0bGVuZ3RoLzgscj1uZXcgVWludDhBcnJheSh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KmUpLG49MCxpPXRoaXM7aWYobnVsbD09dCYmKHQ9dGhpcy5pbWdEYXRhKSwwPT09dC5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2Z1bmN0aW9uIGEoYSxvLHMsYyl7dmFyIHUsbCxoLGYsZCxwLGcsbSx2LGIseSx3LE4sTCxBLHgsUyxfLFAsayxGLEk9TWF0aC5jZWlsKChpLndpZHRoLWEpL3MpLEM9TWF0aC5jZWlsKChpLmhlaWdodC1vKS9jKSxqPWkud2lkdGg9PUkmJmkuaGVpZ2h0PT1DO2ZvcihMPWUqSSx3PWo\/cjpuZXcgVWludDhBcnJheShMKkMpLHA9dC5sZW5ndGgsTj0wLGw9MDtOPEMmJm48cDspe3N3aXRjaCh0W24rK10pe2Nhc2UgMDpmb3IoZj1TPTA7UzxMO2Y9Uys9MSl3W2wrK109dFtuKytdO2JyZWFrO2Nhc2UgMTpmb3IoZj1fPTA7XzxMO2Y9Xys9MSl1PXRbbisrXSxkPWY8ZT8wOndbbC1lXSx3W2wrK109KHUrZCklMjU2O2JyZWFrO2Nhc2UgMjpmb3IoZj1QPTA7UDxMO2Y9UCs9MSl1PXRbbisrXSxoPShmLWYlZSkvZSxBPU4mJndbKE4tMSkqTCtoKmUrZiVlXSx3W2wrK109KEErdSklMjU2O2JyZWFrO2Nhc2UgMzpmb3IoZj1rPTA7azxMO2Y9ays9MSl1PXRbbisrXSxoPShmLWYlZSkvZSxkPWY8ZT8wOndbbC1lXSxBPU4mJndbKE4tMSkqTCtoKmUrZiVlXSx3W2wrK109KHUrTWF0aC5mbG9vcigoZCtBKS8yKSklMjU2O2JyZWFrO2Nhc2UgNDpmb3IoZj1GPTA7RjxMO2Y9Ris9MSl1PXRbbisrXSxoPShmLWYlZSkvZSxkPWY8ZT8wOndbbC1lXSwwPT09Tj9BPXg9MDooQT13WyhOLTEpKkwraCplK2YlZV0seD1oJiZ3WyhOLTEpKkwrKGgtMSkqZStmJWVdKSxnPWQrQS14LG09TWF0aC5hYnMoZy1kKSxiPU1hdGguYWJzKGctQSkseT1NYXRoLmFicyhnLXgpLHY9bTw9YiYmbTw9eT9kOmI8PXk\/QTp4LHdbbCsrXT0odSt2KSUyNTY7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZmlsdGVyIGFsZ29yaXRobTogIit0W24tMV0pfWlmKCFqKXt2YXIgTz0oKG8rTipjKSppLndpZHRoK2EpKmUsQj1OKkw7Zm9yKGY9MDtmPEk7Zis9MSl7Zm9yKHZhciBNPTA7TTxlO00rPTEpcltPKytdPXdbQisrXTtPKz0ocy0xKSplfX1OKyt9fXJldHVybiB0PVBlKHQpLDE9PWkuaW50ZXJsYWNlTWV0aG9kPyhhKDAsMCw4LDgpLGEoNCwwLDgsOCksYSgwLDQsNCw4KSxhKDIsMCw0LDQpLGEoMCwyLDIsNCksYSgxLDAsMiwyKSxhKDAsMSwxLDIpKTphKDAsMCwxLDEpLHJ9LGkucHJvdG90eXBlLmRlY29kZVBhbGV0dGU9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLGEsbyxzLGM7Zm9yKHI9dGhpcy5wYWxldHRlLGE9dGhpcy50cmFuc3BhcmVuY3kuaW5kZXhlZHx8W10saT1uZXcgVWludDhBcnJheSgoYS5sZW5ndGh8fDApK3IubGVuZ3RoKSxuPTAsdD0wLGU9bz0wLHM9ci5sZW5ndGg7bzxzO2U9bys9MylpW24rK109cltlXSxpW24rK109cltlKzFdLGlbbisrXT1yW2UrMl0saVtuKytdPW51bGwhPShjPWFbdCsrXSk\/YzoyNTU7cmV0dXJuIGl9LGkucHJvdG90eXBlLmNvcHlUb0ltYWdlRGF0YT1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxhLG8scyxjLHUsbCxoLGY7aWYobj10aGlzLmNvbG9ycyxsPW51bGwscj10aGlzLmhhc0FscGhhQ2hhbm5lbCx0aGlzLnBhbGV0dGUubGVuZ3RoJiYobD1udWxsIT0oZj10aGlzLl9kZWNvZGVkUGFsZXR0ZSk\/Zjp0aGlzLl9kZWNvZGVkUGFsZXR0ZT10aGlzLmRlY29kZVBhbGV0dGUoKSxuPTQscj0hMCksdT0oaT10LmRhdGF8fHQpLmxlbmd0aCxvPWx8fGUsYT1zPTAsMT09PW4pZm9yKDthPHU7KWM9bD80KmVbYS80XTpzLGg9b1tjKytdLGlbYSsrXT1oLGlbYSsrXT1oLGlbYSsrXT1oLGlbYSsrXT1yP29bYysrXToyNTUscz1jO2Vsc2UgZm9yKDthPHU7KWM9bD80KmVbYS80XTpzLGlbYSsrXT1vW2MrK10saVthKytdPW9bYysrXSxpW2ErK109b1tjKytdLGlbYSsrXT1yP29bYysrXToyNTUscz1jfSxpLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD1uZXcgVWludDhBcnJheSh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KjQpLHRoaXMuY29weVRvSW1hZ2VEYXRhKHQsdGhpcy5kZWNvZGVQaXhlbHMoKSksdH07dmFyIGE9ZnVuY3Rpb24oKXtpZigiW29iamVjdCBXaW5kb3ddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSl7dHJ5e2U9ci5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxuPWUuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMH1yZXR1cm4hMX07cmV0dXJuIGEoKSx0PWZ1bmN0aW9uKHQpe3ZhciByO2lmKCEwPT09YSgpKXJldHVybiBuLndpZHRoPXQud2lkdGgsbi5oZWlnaHQ9dC5oZWlnaHQsbi5jbGVhclJlY3QoMCwwLHQud2lkdGgsdC5oZWlnaHQpLG4ucHV0SW1hZ2VEYXRhKHQsMCwwKSwocj1uZXcgSW1hZ2UpLnNyYz1lLnRvRGF0YVVSTCgpLHI7dGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCByZXF1aXJlcyBhIEJyb3dzZXIgd2l0aCBDYW52YXMtY2FwYWJpbGl0eS4iKX0saS5wcm90b3R5cGUuZGVjb2RlRnJhbWVzPWZ1bmN0aW9uKGUpe3ZhciByLG4saSxhLG8scyxjLHU7aWYodGhpcy5hbmltYXRpb24pe2Zvcih1PVtdLG49bz0wLHM9KGM9dGhpcy5hbmltYXRpb24uZnJhbWVzKS5sZW5ndGg7bzxzO249KytvKXI9Y1tuXSxpPWUuY3JlYXRlSW1hZ2VEYXRhKHIud2lkdGgsci5oZWlnaHQpLGE9dGhpcy5kZWNvZGVQaXhlbHMobmV3IFVpbnQ4QXJyYXkoci5kYXRhKSksdGhpcy5jb3B5VG9JbWFnZURhdGEoaSxhKSxyLmltYWdlRGF0YT1pLHUucHVzaChyLmltYWdlPXQoaSkpO3JldHVybiB1fX0saS5wcm90b3R5cGUucmVuZGVyRnJhbWU9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGk7cmV0dXJuIHI9KG49dGhpcy5hbmltYXRpb24uZnJhbWVzKVtlXSxpPW5bZS0xXSwwPT09ZSYmdC5jbGVhclJlY3QoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLDE9PT0obnVsbCE9aT9pLmRpc3Bvc2VPcDp2b2lkIDApP3QuY2xlYXJSZWN0KGkueE9mZnNldCxpLnlPZmZzZXQsaS53aWR0aCxpLmhlaWdodCk6Mj09PShudWxsIT1pP2kuZGlzcG9zZU9wOnZvaWQgMCkmJnQucHV0SW1hZ2VEYXRhKGkuaW1hZ2VEYXRhLGkueE9mZnNldCxpLnlPZmZzZXQpLDA9PT1yLmJsZW5kT3AmJnQuY2xlYXJSZWN0KHIueE9mZnNldCxyLnlPZmZzZXQsci53aWR0aCxyLmhlaWdodCksdC5kcmF3SW1hZ2Uoci5pbWFnZSxyLnhPZmZzZXQsci55T2Zmc2V0KX0saS5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG8scz10aGlzO3JldHVybiByPTAsbz10aGlzLmFuaW1hdGlvbixpPW8ubnVtRnJhbWVzLG49by5mcmFtZXMsYT1vLm51bVBsYXlzLChlPWZ1bmN0aW9uKCl7dmFyIG8sYztpZihvPXIrKyVpLGM9bltvXSxzLnJlbmRlckZyYW1lKHQsbyksaT4xJiZyL2k8YSlyZXR1cm4gcy5hbmltYXRpb24uX3RpbWVvdXQ9c2V0VGltZW91dChlLGMuZGVsYXkpfSkoKX0saS5wcm90b3R5cGUuc3RvcEFuaW1hdGlvbj1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBjbGVhclRpbWVvdXQobnVsbCE9KHQ9dGhpcy5hbmltYXRpb24pP3QuX3RpbWVvdXQ6dm9pZCAwKX0saS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuIHQuX3BuZyYmdC5fcG5nLnN0b3BBbmltYXRpb24oKSx0Ll9wbmc9dGhpcyx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsZT10LmdldENvbnRleHQoIjJkIiksdGhpcy5hbmltYXRpb24\/KHRoaXMuZGVjb2RlRnJhbWVzKGUpLHRoaXMuYW5pbWF0ZShlKSk6KHI9ZS5jcmVhdGVJbWFnZURhdGEodGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5jb3B5VG9JbWFnZURhdGEocix0aGlzLmRlY29kZVBpeGVscygpKSxlLnB1dEltYWdlRGF0YShyLDAsMCkpfSxpfSgpOwovKioKICAgKiBAbGljZW5zZQogICAqCiAgICogQ29weXJpZ2h0IChjKSAyMDE0IEphbWVzIFJvYmIsIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW1lc2Jyb2JiCiAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiAgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAogICAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogICAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICAgKgogICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiAgICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAgICoKICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICAgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKICAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAogICAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKICAgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCiAgICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCiAgICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgKi8KLyoqCiAgICogQGxpY2Vuc2UKICAgKiAoYykgRGVhbiBNY05hbWVlIDxkZWFuQGdtYWlsLmNvbT4sIDIwMTMuCiAgICoKICAgKiBodHRwczovL2dpdGh1Yi5jb20vZGVhbm0vb21nZ2lmCiAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAgICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCiAgICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKICAgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKICAgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICoKICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogICAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAqCiAgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICAgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICAgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICAgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAgICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKICAgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCiAgICogSU4gVEhFIFNPRlRXQVJFLgogICAqCiAgICogb21nZ2lmIGlzIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIEdJRiA4OWEgZW5jb2RlciBhbmQgZGVjb2RlciwKICAgKiBpbmNsdWRpbmcgYW5pbWF0aW9uIGFuZCBjb21wcmVzc2lvbi4gIEl0IGRvZXMgbm90IHJlbHkgb24gYW55IHNwZWNpZmljCiAgICogdW5kZXJseWluZyBzeXN0ZW0sIHNvIHNob3VsZCBydW4gaW4gdGhlIGJyb3dzZXIsIE5vZGUsIG9yIFBsYXNrLgogICAqLwpmdW5jdGlvbiBCZSh0KXt2YXIgZT0wO2lmKDcxIT09dFtlKytdfHw3MyE9PXRbZSsrXXx8NzAhPT10W2UrK118fDU2IT09dFtlKytdfHw1NiE9KHRbZSsrXSsxJjI1Myl8fDk3IT09dFtlKytdKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBHSUYgODdhLzg5YSBoZWFkZXIuIik7dmFyIHI9dFtlKytdfHRbZSsrXTw8OCxuPXRbZSsrXXx0W2UrK108PDgsaT10W2UrK10sYT1pPj43LG89MTw8KDcmaSkrMTt0W2UrK107dFtlKytdO3ZhciBzPW51bGwsYz1udWxsO2EmJihzPWUsYz1vLGUrPTMqbyk7dmFyIHU9ITAsbD1bXSxoPTAsZj1udWxsLGQ9MCxwPW51bGw7Zm9yKHRoaXMud2lkdGg9cix0aGlzLmhlaWdodD1uO3UmJmU8dC5sZW5ndGg7KXN3aXRjaCh0W2UrK10pe2Nhc2UgMzM6c3dpdGNoKHRbZSsrXSl7Y2FzZSAyNTU6aWYoMTEhPT10W2VdfHw3OD09dFtlKzFdJiY2OT09dFtlKzJdJiY4ND09dFtlKzNdJiY4Mz09dFtlKzRdJiY2Nz09dFtlKzVdJiY2NT09dFtlKzZdJiY4MD09dFtlKzddJiY2OT09dFtlKzhdJiY1MD09dFtlKzldJiY0Nj09dFtlKzEwXSYmNDg9PXRbZSsxMV0mJjM9PXRbZSsxMl0mJjE9PXRbZSsxM10mJjA9PXRbZSsxNl0pZSs9MTQscD10W2UrK118dFtlKytdPDw4LGUrKztlbHNlIGZvcihlKz0xMjs7KXtpZighKChQPXRbZSsrXSk+PTApKXRocm93IEVycm9yKCJJbnZhbGlkIGJsb2NrIHNpemUiKTtpZigwPT09UClicmVhaztlKz1QfWJyZWFrO2Nhc2UgMjQ5OmlmKDQhPT10W2UrK118fDAhPT10W2UrNF0pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGdyYXBoaWNzIGV4dGVuc2lvbiBibG9jay4iKTt2YXIgZz10W2UrK107aD10W2UrK118dFtlKytdPDw4LGY9dFtlKytdLDA9PSgxJmcpJiYoZj1udWxsKSxkPWc+PjImNyxlKys7YnJlYWs7Y2FzZSAyNTQ6Zm9yKDs7KXtpZighKChQPXRbZSsrXSk+PTApKXRocm93IEVycm9yKCJJbnZhbGlkIGJsb2NrIHNpemUiKTtpZigwPT09UClicmVhaztlKz1QfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGdyYXBoaWMgY29udHJvbCBsYWJlbDogMHgiK3RbZS0xXS50b1N0cmluZygxNikpfWJyZWFrO2Nhc2UgNDQ6dmFyIG09dFtlKytdfHRbZSsrXTw8OCx2PXRbZSsrXXx0W2UrK108PDgsYj10W2UrK118dFtlKytdPDw4LHk9dFtlKytdfHRbZSsrXTw8OCx3PXRbZSsrXSxOPXc+PjYmMSxMPTE8PCg3JncpKzEsQT1zLHg9YyxTPSExO2lmKHc+Pjcpe1M9ITA7QT1lLHg9TCxlKz0zKkx9dmFyIF89ZTtmb3IoZSsrOzspe3ZhciBQO2lmKCEoKFA9dFtlKytdKT49MCkpdGhyb3cgRXJyb3IoIkludmFsaWQgYmxvY2sgc2l6ZSIpO2lmKDA9PT1QKWJyZWFrO2UrPVB9bC5wdXNoKHt4Om0seTp2LHdpZHRoOmIsaGVpZ2h0OnksaGFzX2xvY2FsX3BhbGV0dGU6UyxwYWxldHRlX29mZnNldDpBLHBhbGV0dGVfc2l6ZTp4LGRhdGFfb2Zmc2V0Ol8sZGF0YV9sZW5ndGg6ZS1fLHRyYW5zcGFyZW50X2luZGV4OmYsaW50ZXJsYWNlZDohIU4sZGVsYXk6aCxkaXNwb3NhbDpkfSk7YnJlYWs7Y2FzZSA1OTp1PSExO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGdpZiBibG9jazogMHgiK3RbZS0xXS50b1N0cmluZygxNikpfXRoaXMubnVtRnJhbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGwubGVuZ3RofSx0aGlzLmxvb3BDb3VudD1mdW5jdGlvbigpe3JldHVybiBwfSx0aGlzLmZyYW1lSW5mbz1mdW5jdGlvbih0KXtpZih0PDB8fHQ+PWwubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRnJhbWUgaW5kZXggb3V0IG9mIHJhbmdlLiIpO3JldHVybiBsW3RdfSx0aGlzLmRlY29kZUFuZEJsaXRGcmFtZUJHUkE9ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLmZyYW1lSW5mbyhlKSxhPWkud2lkdGgqaS5oZWlnaHQsbz1uZXcgVWludDhBcnJheShhKTtNZSh0LGkuZGF0YV9vZmZzZXQsbyxhKTt2YXIgcz1pLnBhbGV0dGVfb2Zmc2V0LGM9aS50cmFuc3BhcmVudF9pbmRleDtudWxsPT09YyYmKGM9MjU2KTt2YXIgdT1pLndpZHRoLGw9ci11LGg9dSxmPTQqKGkueSpyK2kueCksZD00KigoaS55K2kuaGVpZ2h0KSpyK2kueCkscD1mLGc9NCpsOyEwPT09aS5pbnRlcmxhY2VkJiYoZys9NCpyKjcpO2Zvcih2YXIgbT04LHY9MCxiPW8ubGVuZ3RoO3Y8YjsrK3Ype3ZhciB5PW9bdl07aWYoMD09PWgmJihoPXUsKHArPWcpPj1kJiYoZz00KmwrNCpyKihtLTEpLHA9ZisodStsKSoobTw8MSksbT4+PTEpKSx5PT09YylwKz00O2Vsc2V7dmFyIHc9dFtzKzMqeV0sTj10W3MrMyp5KzFdLEw9dFtzKzMqeSsyXTtuW3ArK109TCxuW3ArK109TixuW3ArK109dyxuW3ArK109MjU1fS0taH19LHRoaXMuZGVjb2RlQW5kQmxpdEZyYW1lUkdCQT1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMuZnJhbWVJbmZvKGUpLGE9aS53aWR0aCppLmhlaWdodCxvPW5ldyBVaW50OEFycmF5KGEpO01lKHQsaS5kYXRhX29mZnNldCxvLGEpO3ZhciBzPWkucGFsZXR0ZV9vZmZzZXQsYz1pLnRyYW5zcGFyZW50X2luZGV4O251bGw9PT1jJiYoYz0yNTYpO3ZhciB1PWkud2lkdGgsbD1yLXUsaD11LGY9NCooaS55KnIraS54KSxkPTQqKChpLnkraS5oZWlnaHQpKnIraS54KSxwPWYsZz00Kmw7ITA9PT1pLmludGVybGFjZWQmJihnKz00KnIqNyk7Zm9yKHZhciBtPTgsdj0wLGI9by5sZW5ndGg7djxiOysrdil7dmFyIHk9b1t2XTtpZigwPT09aCYmKGg9dSwocCs9Zyk+PWQmJihnPTQqbCs0KnIqKG0tMSkscD1mKyh1K2wpKihtPDwxKSxtPj49MSkpLHk9PT1jKXArPTQ7ZWxzZXt2YXIgdz10W3MrMyp5XSxOPXRbcyszKnkrMV0sTD10W3MrMyp5KzJdO25bcCsrXT13LG5bcCsrXT1OLG5bcCsrXT1MLG5bcCsrXT0yNTV9LS1ofX19ZnVuY3Rpb24gTWUodCxlLHIsbil7Zm9yKHZhciBhPXRbZSsrXSxvPTE8PGEscz1vKzEsYz1zKzEsdT1hKzEsbD0oMTw8dSktMSxoPTAsZj0wLGQ9MCxwPXRbZSsrXSxnPW5ldyBJbnQzMkFycmF5KDQwOTYpLG09bnVsbDs7KXtmb3IoO2g8MTYmJjAhPT1wOylmfD10W2UrK108PGgsaCs9OCwxPT09cD9wPXRbZSsrXTotLXA7aWYoaDx1KWJyZWFrO3ZhciB2PWYmbDtpZihmPj49dSxoLT11LHYhPT1vKXtpZih2PT09cylicmVhaztmb3IodmFyIGI9djxjP3Y6bSx5PTAsdz1iO3c+bzspdz1nW3ddPj44LCsreTt2YXIgTj13O2lmKGQreSsoYiE9PXY\/MTowKT5uKXJldHVybiB2b2lkIGkubG9nKCJXYXJuaW5nLCBnaWYgc3RyZWFtIGxvbmdlciB0aGFuIGV4cGVjdGVkLiIpO3JbZCsrXT1OO3ZhciBMPWQrPXk7Zm9yKGIhPT12JiYocltkKytdPU4pLHc9Yjt5LS07KXc9Z1t3XSxyWy0tTF09MjU1Jncsdz4+PTg7bnVsbCE9PW0mJmM8NDA5NiYmKGdbYysrXT1tPDw4fE4sYz49bCsxJiZ1PDEyJiYoKyt1LGw9bDw8MXwxKSksbT12fWVsc2UgYz1zKzEsbD0oMTw8KHU9YSsxKSktMSxtPW51bGx9cmV0dXJuIGQhPT1uJiZpLmxvZygiV2FybmluZywgZ2lmIHN0cmVhbSBzaG9ydGVyIHRoYW4gZXhwZWN0ZWQuIikscn0KLyoqCiAgICogQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAwOCwgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQKICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICAgbWV0OgoKICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgIAogICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIAogICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAgCiAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgbm9yIHRoZSBuYW1lcyBvZiBpdHMgCiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIAogICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCiAgICBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgICBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCiAgICBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIAogICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKICAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCiAgICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKICAgIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovZnVuY3Rpb24gRWUodCl7dmFyIGUscixuLGksYSxvPU1hdGguZmxvb3Iscz1uZXcgQXJyYXkoNjQpLGM9bmV3IEFycmF5KDY0KSx1PW5ldyBBcnJheSg2NCksbD1uZXcgQXJyYXkoNjQpLGg9bmV3IEFycmF5KDY1NTM1KSxmPW5ldyBBcnJheSg2NTUzNSksZD1uZXcgQXJyYXkoNjQpLHA9bmV3IEFycmF5KDY0KSxnPVtdLG09MCx2PTcsYj1uZXcgQXJyYXkoNjQpLHk9bmV3IEFycmF5KDY0KSx3PW5ldyBBcnJheSg2NCksTj1uZXcgQXJyYXkoMjU2KSxMPW5ldyBBcnJheSgyMDQ4KSxBPVswLDEsNSw2LDE0LDE1LDI3LDI4LDIsNCw3LDEzLDE2LDI2LDI5LDQyLDMsOCwxMiwxNywyNSwzMCw0MSw0Myw5LDExLDE4LDI0LDMxLDQwLDQ0LDUzLDEwLDE5LDIzLDMyLDM5LDQ1LDUyLDU0LDIwLDIyLDMzLDM4LDQ2LDUxLDU1LDYwLDIxLDM0LDM3LDQ3LDUwLDU2LDU5LDYxLDM1LDM2LDQ4LDQ5LDU3LDU4LDYyLDYzXSx4PVswLDAsMSw1LDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDBdLFM9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdLF89WzAsMCwyLDEsMywzLDIsNCwzLDUsNSw0LDQsMCwwLDEsMTI1XSxQPVsxLDIsMywwLDQsMTcsNSwxOCwzMyw0OSw2NSw2LDE5LDgxLDk3LDcsMzQsMTEzLDIwLDUwLDEyOSwxNDUsMTYxLDgsMzUsNjYsMTc3LDE5MywyMSw4MiwyMDksMjQwLDM2LDUxLDk4LDExNCwxMzAsOSwxMCwyMiwyMywyNCwyNSwyNiwzNywzOCwzOSw0MCw0MSw0Miw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTBdLGs9WzAsMCwzLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMF0sRj1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMV0sST1bMCwwLDIsMSwyLDQsNCwzLDQsNyw1LDQsNCwwLDEsMiwxMTldLEM9WzAsMSwyLDMsMTcsNCw1LDMzLDQ5LDYsMTgsNjUsODEsNyw5NywxMTMsMTksMzQsNTAsMTI5LDgsMjAsNjYsMTQ1LDE2MSwxNzcsMTkzLDksMzUsNTEsODIsMjQwLDIxLDk4LDExNCwyMDksMTAsMjIsMzYsNTIsMjI1LDM3LDI0MSwyMywyNCwyNSwyNiwzOCwzOSw0MCw0MSw0Miw1Myw1NCw1NSw1Niw1Nyw1OCw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MF07ZnVuY3Rpb24gaih0LGUpe2Zvcih2YXIgcj0wLG49MCxpPW5ldyBBcnJheSxhPTE7YTw9MTY7YSsrKXtmb3IodmFyIG89MTtvPD10W2FdO28rKylpW2Vbbl1dPVtdLGlbZVtuXV1bMF09cixpW2Vbbl1dWzFdPWEsbisrLHIrKztyKj0yfXJldHVybiBpfWZ1bmN0aW9uIE8odCl7Zm9yKHZhciBlPXRbMF0scj10WzFdLTE7cj49MDspZSYxPDxyJiYobXw9MTw8diksci0tLC0tdjwwJiYoMjU1PT1tPyhCKDI1NSksQigwKSk6QihtKSx2PTcsbT0wKX1mdW5jdGlvbiBCKHQpe2cucHVzaCh0KX1mdW5jdGlvbiBNKHQpe0IodD4+OCYyNTUpLEIoMjU1JnQpfWZ1bmN0aW9uIEUodCxlLHIsbixpKXtmb3IodmFyIGEsbz1pWzBdLHM9aVsyNDBdLGM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxvLHMsYyx1LGwsaCxmPTA7Zm9yKGw9MDtsPDg7KytsKXtyPXRbZl0sbj10W2YrMV0saT10W2YrMl0sYT10W2YrM10sbz10W2YrNF0scz10W2YrNV0sYz10W2YrNl07dmFyIHA9cisodT10W2YrN10pLGc9ci11LG09bitjLHY9bi1jLGI9aStzLHk9aS1zLHc9YStvLE49YS1vLEw9cCt3LEE9cC13LHg9bStiLFM9bS1iO3RbZl09TCt4LHRbZis0XT1MLXg7dmFyIF89LjcwNzEwNjc4MSooUytBKTt0W2YrMl09QStfLHRbZis2XT1BLV87dmFyIFA9LjM4MjY4MzQzMyooKEw9Tit5KS0oUz12K2cpKSxrPS41NDExOTYxKkwrUCxGPTEuMzA2NTYyOTY1KlMrUCxJPS43MDcxMDY3ODEqKHg9eSt2KSxDPWcrSSxqPWctSTt0W2YrNV09aitrLHRbZiszXT1qLWssdFtmKzFdPUMrRix0W2YrN109Qy1GLGYrPTh9Zm9yKGY9MCxsPTA7bDw4OysrbCl7cj10W2ZdLG49dFtmKzhdLGk9dFtmKzE2XSxhPXRbZisyNF0sbz10W2YrMzJdLHM9dFtmKzQwXSxjPXRbZis0OF07dmFyIE89cisodT10W2YrNTZdKSxCPXItdSxNPW4rYyxFPW4tYyxxPWkrcyxEPWktcyxSPWErbyxUPWEtbyxVPU8rUix6PU8tUixIPU0rcSxXPU0tcTt0W2ZdPVUrSCx0W2YrMzJdPVUtSDt2YXIgVj0uNzA3MTA2NzgxKihXK3opO3RbZisxNl09eitWLHRbZis0OF09ei1WO3ZhciBHPS4zODI2ODM0MzMqKChVPVQrRCktKFc9RStCKSksWT0uNTQxMTk2MSpVK0csSj0xLjMwNjU2Mjk2NSpXK0csWD0uNzA3MTA2NzgxKihIPUQrRSksSz1CK1gsWj1CLVg7dFtmKzQwXT1aK1ksdFtmKzI0XT1aLVksdFtmKzhdPUsrSix0W2YrNTZdPUstSixmKyt9Zm9yKGw9MDtsPDY0OysrbCloPXRbbF0qZVtsXSxkW2xdPWg+MD9oKy41fDA6aC0uNXwwO3JldHVybiBkfSh0LGUpLHU9MDt1PDY0OysrdSlwW0FbdV1dPWNbdV07dmFyIGw9cFswXS1yO3I9cFswXSwwPT1sP08oblswXSk6KE8obltmW2E9MzI3NjcrbF1dKSxPKGhbYV0pKTtmb3IodmFyIGc9NjM7Zz4wJiYwPT1wW2ddOylnLS07aWYoMD09ZylyZXR1cm4gTyhvKSxyO2Zvcih2YXIgbSx2PTE7djw9Zzspe2Zvcih2YXIgYj12OzA9PXBbdl0mJnY8PWc7KSsrdjt2YXIgeT12LWI7aWYoeT49MTYpe209eT4+NDtmb3IodmFyIHc9MTt3PD1tOysrdylPKHMpO3kmPTE1fWE9MzI3NjcrcFt2XSxPKGlbKHk8PDQpK2ZbYV1dKSxPKGhbYV0pLHYrK31yZXR1cm4gNjMhPWcmJk8obykscn1mdW5jdGlvbiBxKHQpeyh0PU1hdGgubWluKE1hdGgubWF4KHQsMSksMTAwKSxhIT10KSYmKCFmdW5jdGlvbih0KXtmb3IodmFyIGU9WzE2LDExLDEwLDE2LDI0LDQwLDUxLDYxLDEyLDEyLDE0LDE5LDI2LDU4LDYwLDU1LDE0LDEzLDE2LDI0LDQwLDU3LDY5LDU2LDE0LDE3LDIyLDI5LDUxLDg3LDgwLDYyLDE4LDIyLDM3LDU2LDY4LDEwOSwxMDMsNzcsMjQsMzUsNTUsNjQsODEsMTA0LDExMyw5Miw0OSw2NCw3OCw4NywxMDMsMTIxLDEyMCwxMDEsNzIsOTIsOTUsOTgsMTEyLDEwMCwxMDMsOTldLHI9MDtyPDY0O3IrKyl7dmFyIG49bygoZVtyXSp0KzUwKS8xMDApO249TWF0aC5taW4oTWF0aC5tYXgobiwxKSwyNTUpLHNbQVtyXV09bn1mb3IodmFyIGk9WzE3LDE4LDI0LDQ3LDk5LDk5LDk5LDk5LDE4LDIxLDI2LDY2LDk5LDk5LDk5LDk5LDI0LDI2LDU2LDk5LDk5LDk5LDk5LDk5LDQ3LDY2LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5LDk5XSxhPTA7YTw2NDthKyspe3ZhciBoPW8oKGlbYV0qdCs1MCkvMTAwKTtoPU1hdGgubWluKE1hdGgubWF4KGgsMSksMjU1KSxjW0FbYV1dPWh9Zm9yKHZhciBmPVsxLDEuMzg3MDM5ODQ1LDEuMzA2NTYyOTY1LDEuMTc1ODc1NjAyLDEsLjc4NTY5NDk1OCwuNTQxMTk2MSwuMjc1ODk5Mzc5XSxkPTAscD0wO3A8ODtwKyspZm9yKHZhciBnPTA7Zzw4O2crKyl1W2RdPTEvKHNbQVtkXV0qZltwXSpmW2ddKjgpLGxbZF09MS8oY1tBW2RdXSpmW3BdKmZbZ10qOCksZCsrfSh0PDUwP01hdGguZmxvb3IoNWUzL3QpOk1hdGguZmxvb3IoMjAwLTIqdCkpLGE9dCl9dGhpcy5lbmNvZGU9ZnVuY3Rpb24odCxhKXthJiZxKGEpLGc9bmV3IEFycmF5LG09MCx2PTcsTSg2NTQ5NiksTSg2NTUwNCksTSgxNiksQig3NCksQig3MCksQig3MyksQig3MCksQigwKSxCKDEpLEIoMSksQigwKSxNKDEpLE0oMSksQigwKSxCKDApLGZ1bmN0aW9uKCl7TSg2NTQ5OSksTSgxMzIpLEIoMCk7Zm9yKHZhciB0PTA7dDw2NDt0KyspQihzW3RdKTtCKDEpO2Zvcih2YXIgZT0wO2U8NjQ7ZSsrKUIoY1tlXSl9KCksZnVuY3Rpb24odCxlKXtNKDY1NDcyKSxNKDE3KSxCKDgpLE0oZSksTSh0KSxCKDMpLEIoMSksQigxNyksQigwKSxCKDIpLEIoMTcpLEIoMSksQigzKSxCKDE3KSxCKDEpfSh0LndpZHRoLHQuaGVpZ2h0KSxmdW5jdGlvbigpe00oNjU0NzYpLE0oNDE4KSxCKDApO2Zvcih2YXIgdD0wO3Q8MTY7dCsrKUIoeFt0KzFdKTtmb3IodmFyIGU9MDtlPD0xMTtlKyspQihTW2VdKTtCKDE2KTtmb3IodmFyIHI9MDtyPDE2O3IrKylCKF9bcisxXSk7Zm9yKHZhciBuPTA7bjw9MTYxO24rKylCKFBbbl0pO0IoMSk7Zm9yKHZhciBpPTA7aTwxNjtpKyspQihrW2krMV0pO2Zvcih2YXIgYT0wO2E8PTExO2ErKylCKEZbYV0pO0IoMTcpO2Zvcih2YXIgbz0wO288MTY7bysrKUIoSVtvKzFdKTtmb3IodmFyIHM9MDtzPD0xNjE7cysrKUIoQ1tzXSl9KCksTSg2NTQ5OCksTSgxMiksQigzKSxCKDEpLEIoMCksQigyKSxCKDE3KSxCKDMpLEIoMTcpLEIoMCksQig2MyksQigwKTt2YXIgbz0wLGg9MCxmPTA7bT0wLHY9Nyx0aGlzLmVuY29kZS5kaXNwbGF5TmFtZT0iX2VuY29kZV8iO2Zvcih2YXIgZCxwLE4sQSxqLEQsUixULFUsej10LmRhdGEsSD10LndpZHRoLFc9dC5oZWlnaHQsVj00KkgsRz0wO0c8Vzspe2ZvcihkPTA7ZDxWOyl7Zm9yKGo9VipHK2QsUj0tMSxUPTAsVT0wO1U8NjQ7VSsrKUQ9aisoVD1VPj4zKSpWKyhSPTQqKDcmVSkpLEcrVD49VyYmKEQtPVYqKEcrMStULVcpKSxkK1I+PVYmJihELT1kK1ItVis0KSxwPXpbRCsrXSxOPXpbRCsrXSxBPXpbRCsrXSxiW1VdPShMW3BdK0xbTisyNTY+PjBdK0xbQSs1MTI+PjBdPj4xNiktMTI4LHlbVV09KExbcCs3Njg+PjBdK0xbTisxMDI0Pj4wXStMW0ErMTI4MD4+MF0+PjE2KS0xMjgsd1tVXT0oTFtwKzEyODA+PjBdK0xbTisxNTM2Pj4wXStMW0ErMTc5Mj4+MF0+PjE2KS0xMjg7bz1FKGIsdSxvLGUsbiksaD1FKHksbCxoLHIsaSksZj1FKHcsbCxmLHIsaSksZCs9MzJ9Rys9OH1pZih2Pj0wKXt2YXIgWT1bXTtZWzFdPXYrMSxZWzBdPSgxPDx2KzEpLTEsTyhZKX1yZXR1cm4gTSg2NTQ5NyksbmV3IFVpbnQ4QXJyYXkoZyl9LHQ9dHx8NTAsZnVuY3Rpb24oKXtmb3IodmFyIHQ9U3RyaW5nLmZyb21DaGFyQ29kZSxlPTA7ZTwyNTY7ZSsrKU5bZV09dChlKX0oKSxlPWooeCxTKSxyPWooayxGKSxuPWooXyxQKSxpPWooSSxDKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0xLGU9MixyPTE7cjw9MTU7cisrKXtmb3IodmFyIG49dDtuPGU7bisrKWZbMzI3Njcrbl09cixoWzMyNzY3K25dPVtdLGhbMzI3Njcrbl1bMV09cixoWzMyNzY3K25dWzBdPW47Zm9yKHZhciBpPS0oZS0xKTtpPD0tdDtpKyspZlszMjc2NytpXT1yLGhbMzI3NjcraV09W10saFszMjc2NytpXVsxXT1yLGhbMzI3NjcraV1bMF09ZS0xK2k7dDw8PTEsZTw8PTF9fSgpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwyNTY7dCsrKUxbdF09MTk1OTUqdCxMW3QrMjU2Pj4wXT0zODQ3MCp0LExbdCs1MTI+PjBdPTc0NzEqdCszMjc2OCxMW3QrNzY4Pj4wXT0tMTEwNTkqdCxMW3QrMTAyND4+MF09LTIxNzA5KnQsTFt0KzEyODA+PjBdPTMyNzY4KnQrODQyMTM3NSxMW3QrMTUzNj4+MF09LTI3NDM5KnQsTFt0KzE3OTI+PjBdPS01MzI5KnR9KCkscSh0KX0KLyoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQXJhcyBBYmJhc2kKICAgKgogICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KICAgKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UKICAgKi9mdW5jdGlvbiBxZSh0LGUpe2lmKHRoaXMucG9zPTAsdGhpcy5idWZmZXI9dCx0aGlzLmRhdGF2PW5ldyBEYXRhVmlldyh0LmJ1ZmZlciksdGhpcy5pc193aXRoX2FscGhhPSEhZSx0aGlzLmJvdHRvbV91cD0hMCx0aGlzLmZsYWc9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJ1ZmZlclswXSkrU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJ1ZmZlclsxXSksdGhpcy5wb3MrPTIsLTE9PT1bIkJNIiwiQkEiLCJDSSIsIkNQIiwiSUMiLCJQVCJdLmluZGV4T2YodGhpcy5mbGFnKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgQk1QIEZpbGUiKTt0aGlzLnBhcnNlSGVhZGVyKCksdGhpcy5wYXJzZUJHUigpfWZ1bmN0aW9uIERlKHQpe2Z1bmN0aW9uIGUodCl7aWYoIXQpdGhyb3cgRXJyb3IoImFzc2VydCA6UCIpfWZ1bmN0aW9uIHIodCxlLHIpe2Zvcih2YXIgbj0wOzQ+bjtuKyspaWYodFtlK25dIT1yLmNoYXJDb2RlQXQobikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbih0LGUscixuLGkpe2Zvcih2YXIgYT0wO2E8aTthKyspdFtlK2FdPXJbbithXX1mdW5jdGlvbiBpKHQsZSxyLG4pe2Zvcih2YXIgaT0wO2k8bjtpKyspdFtlK2ldPXJ9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbmV3IEludDMyQXJyYXkodCl9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj1bXSxuPTA7bjx0O24rKylyLnB1c2gobmV3IGUpO3JldHVybiByfWZ1bmN0aW9uIHModCxlKXt2YXIgcj1bXTtyZXR1cm4gZnVuY3Rpb24gdChyLG4saSl7Zm9yKHZhciBhPWlbbl0sbz0wO288YSYmKHIucHVzaChpLmxlbmd0aD5uKzE\/W106bmV3IGUpLCEoaS5sZW5ndGg8bisxKSk7bysrKXQocltvXSxuKzEsaSl9KHIsMCx0KSxyfXZhciBjPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztmdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciByPTE8PGUtMT4+PjA7dCZyOylyPj4+PTE7cmV0dXJuIHI\/KHQmci0xKStyOnR9ZnVuY3Rpb24gdSh0LHIsbixpLGEpe2UoIShpJW4pKTtkb3t0W3IrKGktPW4pXT1hfXdoaWxlKDA8aSl9ZnVuY3Rpb24gbCh0LHIsbixpLG8pe2lmKGUoMjMyOD49byksNTEyPj1vKXZhciBzPWEoNTEyKTtlbHNlIGlmKG51bGw9PShzPWEobykpKXJldHVybiAwO3JldHVybiBmdW5jdGlvbih0LHIsbixpLG8scyl7dmFyIGwsZixkPXIscD0xPDxuLGc9YSgxNiksbT1hKDE2KTtmb3IoZSgwIT1vKSxlKG51bGwhPWkpLGUobnVsbCE9dCksZSgwPG4pLGY9MDtmPG87KytmKXtpZigxNTxpW2ZdKXJldHVybiAwOysrZ1tpW2ZdXX1pZihnWzBdPT1vKXJldHVybiAwO2ZvcihtWzFdPTAsbD0xOzE1Pmw7KytsKXtpZihnW2xdPjE8PGwpcmV0dXJuIDA7bVtsKzFdPW1bbF0rZ1tsXX1mb3IoZj0wO2Y8bzsrK2YpbD1pW2ZdLDA8aVtmXSYmKHNbbVtsXSsrXT1mKTtpZigxPT1tWzE1XSlyZXR1cm4oaT1uZXcgaCkuZz0wLGkudmFsdWU9c1swXSx1KHQsZCwxLHAsaSkscDt2YXIgdixiPS0xLHk9cC0xLHc9MCxOPTEsTD0xLEE9MTw8bjtmb3IoZj0wLGw9MSxvPTI7bDw9bjsrK2wsbzw8PTEpe2lmKE4rPUw8PD0xLDA+KEwtPWdbbF0pKXJldHVybiAwO2Zvcig7MDxnW2xdOy0tZ1tsXSkoaT1uZXcgaCkuZz1sLGkudmFsdWU9c1tmKytdLHUodCxkK3csbyxBLGkpLHc9Yyh3LGwpfWZvcihsPW4rMSxvPTI7MTU+PWw7KytsLG88PD0xKXtpZihOKz1MPDw9MSwwPihMLT1nW2xdKSlyZXR1cm4gMDtmb3IoOzA8Z1tsXTstLWdbbF0pe2lmKGk9bmV3IGgsKHcmeSkhPWIpe2ZvcihkKz1BLHY9MTw8KGI9bCktbjsxNT5iJiYhKDA+PSh2LT1nW2JdKSk7KSsrYix2PDw9MTtwKz1BPTE8PCh2PWItbiksdFtyKyhiPXcmeSldLmc9dituLHRbcitiXS52YWx1ZT1kLXItYn1pLmc9bC1uLGkudmFsdWU9c1tmKytdLHUodCxkKyh3Pj5uKSxvLEEsaSksdz1jKHcsbCl9fXJldHVybiBOIT0yKm1bMTVdLTE\/MDpwfSh0LHIsbixpLG8scyl9ZnVuY3Rpb24gaCgpe3RoaXMudmFsdWU9dGhpcy5nPTB9ZnVuY3Rpb24gZigpe3RoaXMudmFsdWU9dGhpcy5nPTB9ZnVuY3Rpb24gZCgpe3RoaXMuRz1vKDUsaCksdGhpcy5IPWEoNSksdGhpcy5qYz10aGlzLlFiPXRoaXMucWI9dGhpcy5uZD0wLHRoaXMucGQ9byhEcixmKX1mdW5jdGlvbiBwKHQscixuLGkpe2UobnVsbCE9dCksZShudWxsIT1yKSxlKDIxNDc0ODM2NDg+aSksdC5DYT0yNTQsdC5JPTAsdC5iPS04LHQuS2E9MCx0Lm9hPXIsdC5wYT1uLHQuSmQ9cix0LlljPW4raSx0LlpjPTQ8PWk\/bitpLTQrMTpuLF8odCl9ZnVuY3Rpb24gZyh0LGUpe2Zvcih2YXIgcj0wOzA8ZS0tOylyfD1rKHQsMTI4KTw8ZTtyZXR1cm4gcn1mdW5jdGlvbiBtKHQsZSl7dmFyIHI9Zyh0LGUpO3JldHVybiBQKHQpPy1yOnJ9ZnVuY3Rpb24gdih0LHIsbixpKXt2YXIgYSxvPTA7Zm9yKGUobnVsbCE9dCksZShudWxsIT1yKSxlKDQyOTQ5NjcyODg+aSksdC5TYj1pLHQuUmE9MCx0LnU9MCx0Lmg9MCw0PGkmJihpPTQpLGE9MDthPGk7KythKW8rPXJbbithXTw8OCphO3QuUmE9byx0LmJiPWksdC5vYT1yLHQucGE9bn1mdW5jdGlvbiBiKHQpe2Zvcig7ODw9dC51JiZ0LmJiPHQuU2I7KXQuUmE+Pj49OCx0LlJhKz10Lm9hW3QucGErdC5iYl08PFVyLTg+Pj4wLCsrdC5iYix0LnUtPTg7QSh0KSYmKHQuaD0xLHQudT0wKX1mdW5jdGlvbiB5KHQscil7aWYoZSgwPD1yKSwhdC5oJiZyPD1Ucil7dmFyIG49TCh0KSZScltyXTtyZXR1cm4gdC51Kz1yLGIodCksbn1yZXR1cm4gdC5oPTEsdC51PTB9ZnVuY3Rpb24gdygpe3RoaXMuYj10aGlzLkNhPXRoaXMuST0wLHRoaXMub2E9W10sdGhpcy5wYT0wLHRoaXMuSmQ9W10sdGhpcy5ZYz0wLHRoaXMuWmM9W10sdGhpcy5LYT0wfWZ1bmN0aW9uIE4oKXt0aGlzLlJhPTAsdGhpcy5vYT1bXSx0aGlzLmg9dGhpcy51PXRoaXMuYmI9dGhpcy5TYj10aGlzLnBhPTB9ZnVuY3Rpb24gTCh0KXtyZXR1cm4gdC5SYT4+Pih0LnUmVXItMSk+Pj4wfWZ1bmN0aW9uIEEodCl7cmV0dXJuIGUodC5iYjw9dC5TYiksdC5ofHx0LmJiPT10LlNiJiZ0LnU+VXJ9ZnVuY3Rpb24geCh0LGUpe3QudT1lLHQuaD1BKHQpfWZ1bmN0aW9uIFModCl7dC51Pj16ciYmKGUodC51Pj16ciksYih0KSl9ZnVuY3Rpb24gXyh0KXtlKG51bGwhPXQmJm51bGwhPXQub2EpLHQucGE8dC5aYz8odC5JPSh0Lm9hW3QucGErK118dC5JPDw4KT4+PjAsdC5iKz04KTooZShudWxsIT10JiZudWxsIT10Lm9hKSx0LnBhPHQuWWM\/KHQuYis9OCx0Lkk9dC5vYVt0LnBhKytdfHQuSTw8OCk6dC5LYT90LmI9MDoodC5JPDw9OCx0LmIrPTgsdC5LYT0xKSl9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gZyh0LDEpfWZ1bmN0aW9uIGsodCxlKXt2YXIgcj10LkNhOzA+dC5iJiZfKHQpO3ZhciBuPXQuYixpPXIqZT4+PjgsYT0odC5JPj4+bj5pKSswO2ZvcihhPyhyLT1pLHQuSS09aSsxPDxuPj4+MCk6cj1pKzEsbj1yLGk9MDsyNTY8PW47KWkrPTgsbj4+PTg7cmV0dXJuIG49N15pK0hyW25dLHQuYi09bix0LkNhPShyPDxuKS0xLGF9ZnVuY3Rpb24gRih0LGUscil7dFtlKzBdPXI+PjI0JjI1NSx0W2UrMV09cj4+MTYmMjU1LHRbZSsyXT1yPj44JjI1NSx0W2UrM109cj4+MCYyNTV9ZnVuY3Rpb24gSSh0LGUpe3JldHVybiB0W2UrMF08PDB8dFtlKzFdPDw4fWZ1bmN0aW9uIEModCxlKXtyZXR1cm4gSSh0LGUpfHRbZSsyXTw8MTZ9ZnVuY3Rpb24gaih0LGUpe3JldHVybiBJKHQsZSl8SSh0LGUrMik8PDE2fWZ1bmN0aW9uIE8odCxyKXt2YXIgbj0xPDxyO3JldHVybiBlKG51bGwhPXQpLGUoMDxyKSx0Llg9YShuKSxudWxsPT10Llg\/MDoodC5NYj0zMi1yLHQuWGE9ciwxKX1mdW5jdGlvbiBCKHQscil7ZShudWxsIT10KSxlKG51bGwhPXIpLGUodC5YYT09ci5YYSksbihyLlgsMCx0LlgsMCwxPDxyLlhhKX1mdW5jdGlvbiBNKCl7dGhpcy5YPVtdLHRoaXMuWGE9dGhpcy5NYj0wfWZ1bmN0aW9uIEUodCxyLG4saSl7ZShudWxsIT1uKSxlKG51bGwhPWkpO3ZhciBhPW5bMF0sbz1pWzBdO3JldHVybiAwPT1hJiYoYT0odCpvK3IvMikvciksMD09byYmKG89KHIqYSt0LzIpL3QpLDA+PWF8fDA+PW8\/MDooblswXT1hLGlbMF09bywxKX1mdW5jdGlvbiBxKHQsZSl7cmV0dXJuIHQrKDE8PGUpLTE+Pj5lfWZ1bmN0aW9uIEQodCxlKXtyZXR1cm4oKDQyNzgyNTUzNjAmdCkrKDQyNzgyNTUzNjAmZSk+Pj4wJjQyNzgyNTUzNjApKygoMTY3MTE5MzUmdCkrKDE2NzExOTM1JmUpPj4+MCYxNjcxMTkzNSk+Pj4wfWZ1bmN0aW9uIFIoZSxyKXt0W3JdPWZ1bmN0aW9uKHIsbixpLGEsbyxzLGMpe3ZhciB1O2Zvcih1PTA7dTxvOysrdSl7dmFyIGw9dFtlXShzW2MrdS0xXSxpLGErdSk7c1tjK3VdPUQocltuK3VdLGwpfX19ZnVuY3Rpb24gVCgpe3RoaXMudWQ9dGhpcy5oZD10aGlzLmpkPTB9ZnVuY3Rpb24gVSh0LGUpe3JldHVybigoNDI3ODEyNDI4NiYodF5lKSk+Pj4xKSsodCZlKT4+PjB9ZnVuY3Rpb24geih0KXtyZXR1cm4gMDw9dCYmMjU2PnQ\/dDowPnQ\/MDoyNTU8dD8yNTU6dm9pZCAwfWZ1bmN0aW9uIEgodCxlKXtyZXR1cm4geih0Kyh0LWUrLjU+PjEpKX1mdW5jdGlvbiBXKHQsZSxyKXtyZXR1cm4gTWF0aC5hYnMoZS1yKS1NYXRoLmFicyh0LXIpfWZ1bmN0aW9uIFYodCxlLHIsbixpLGEsbyl7Zm9yKG49YVtvLTFdLHI9MDtyPGk7KytyKWFbbytyXT1uPUQodFtlK3JdLG4pfWZ1bmN0aW9uIEcodCxlLHIsbixpKXt2YXIgYTtmb3IoYT0wO2E8cjsrK2Epe3ZhciBvPXRbZSthXSxzPW8+PjgmMjU1LGM9MTY3MTE5MzUmKGM9KGM9MTY3MTE5MzUmbykrKChzPDwxNikrcykpO25baSthXT0oNDI3ODI1NTM2MCZvKStjPj4+MH19ZnVuY3Rpb24gWSh0LGUpe2UuamQ9dD4+MCYyNTUsZS5oZD10Pj44JjI1NSxlLnVkPXQ+PjE2JjI1NX1mdW5jdGlvbiBKKHQsZSxyLG4saSxhKXt2YXIgbztmb3Iobz0wO288bjsrK28pe3ZhciBzPWVbcitvXSxjPXM+Pj44LHU9cyxsPTI1NSYobD0obD1zPj4+MTYpKygodC5qZDw8MjQ+PjI0KSooYzw8MjQ+PjI0KT4+PjUpKTt1PTI1NSYodT0odT11KygodC5oZDw8MjQ+PjI0KSooYzw8MjQ+PjI0KT4+PjUpKSsoKHQudWQ8PDI0Pj4yNCkqKGw8PDI0Pj4yNCk+Pj41KSk7aVthK29dPSg0Mjc4MjU1MzYwJnMpKyhsPDwxNikrdX19ZnVuY3Rpb24gWChlLHIsbixpLGEpe3Rbcl09ZnVuY3Rpb24odCxlLHIsbixvLHMsYyx1LGwpe2ZvcihuPWM7bjx1Oysrbilmb3IoYz0wO2M8bDsrK2Mpb1tzKytdPWEocltpKHRbZSsrXSldKX0sdFtlXT1mdW5jdGlvbihlLHIsbyxzLGMsdSxsKXt2YXIgaD04Pj5lLmIsZj1lLkVhLGQ9ZS5LWzBdLHA9ZS53O2lmKDg+aClmb3IoZT0oMTw8ZS5iKS0xLHA9KDE8PGgpLTE7cjxvOysrcil7dmFyIGcsbT0wO2ZvcihnPTA7ZzxmOysrZylnJmV8fChtPWkoc1tjKytdKSksdVtsKytdPWEoZFttJnBdKSxtPj49aH1lbHNlIHRbIlZQOExNYXBDb2xvciIrbl0ocyxjLGQscCx1LGwscixvLGYpfX1mdW5jdGlvbiBLKHQsZSxyLG4saSl7Zm9yKHI9ZStyO2U8cjspe3ZhciBhPXRbZSsrXTtuW2krK109YT4+MTYmMjU1LG5baSsrXT1hPj44JjI1NSxuW2krK109YT4+MCYyNTV9fWZ1bmN0aW9uIFoodCxlLHIsbixpKXtmb3Iocj1lK3I7ZTxyOyl7dmFyIGE9dFtlKytdO25baSsrXT1hPj4xNiYyNTUsbltpKytdPWE+PjgmMjU1LG5baSsrXT1hPj4wJjI1NSxuW2krK109YT4+MjQmMjU1fX1mdW5jdGlvbiAkKHQsZSxyLG4saSl7Zm9yKHI9ZStyO2U8cjspe3ZhciBhPShvPXRbZSsrXSk+PjE2JjI0MHxvPj4xMiYxNSxvPW8+PjAmMjQwfG8+PjI4JjE1O25baSsrXT1hLG5baSsrXT1vfX1mdW5jdGlvbiBRKHQsZSxyLG4saSl7Zm9yKHI9ZStyO2U8cjspe3ZhciBhPShvPXRbZSsrXSk+PjE2JjI0OHxvPj4xMyY3LG89bz4+NSYyMjR8bz4+MyYzMTtuW2krK109YSxuW2krK109b319ZnVuY3Rpb24gdHQodCxlLHIsbixpKXtmb3Iocj1lK3I7ZTxyOyl7dmFyIGE9dFtlKytdO25baSsrXT1hPj4wJjI1NSxuW2krK109YT4+OCYyNTUsbltpKytdPWE+PjE2JjI1NX19ZnVuY3Rpb24gZXQodCxlLHIsaSxhLG8pe2lmKDA9PW8pZm9yKHI9ZStyO2U8cjspRihpLCgobz10W2UrK10pWzBdPj4yNHxvWzFdPj44JjY1MjgwfG9bMl08PDgmMTY3MTE2ODB8b1szXTw8MjQpPj4+MCksYSs9MzI7ZWxzZSBuKGksYSx0LGUscil9ZnVuY3Rpb24gcnQoZSxyKXt0W3JdWzBdPXRbZSsiMCJdLHRbcl1bMV09dFtlKyIxIl0sdFtyXVsyXT10W2UrIjIiXSx0W3JdWzNdPXRbZSsiMyJdLHRbcl1bNF09dFtlKyI0Il0sdFtyXVs1XT10W2UrIjUiXSx0W3JdWzZdPXRbZSsiNiJdLHRbcl1bN109dFtlKyI3Il0sdFtyXVs4XT10W2UrIjgiXSx0W3JdWzldPXRbZSsiOSJdLHRbcl1bMTBdPXRbZSsiMTAiXSx0W3JdWzExXT10W2UrIjExIl0sdFtyXVsxMl09dFtlKyIxMiJdLHRbcl1bMTNdPXRbZSsiMTMiXSx0W3JdWzE0XT10W2UrIjAiXSx0W3JdWzE1XT10W2UrIjAiXX1mdW5jdGlvbiBudCh0KXtyZXR1cm4gdD09SG58fHQ9PVdufHx0PT1Wbnx8dD09R259ZnVuY3Rpb24gaXQoKXt0aGlzLmViPVtdLHRoaXMuc2l6ZT10aGlzLkE9dGhpcy5mYj0wfWZ1bmN0aW9uIGF0KCl7dGhpcy55PVtdLHRoaXMuZj1bXSx0aGlzLmVhPVtdLHRoaXMuRj1bXSx0aGlzLlRjPXRoaXMuRWQ9dGhpcy5DZD10aGlzLkZkPXRoaXMubGI9dGhpcy5EYj10aGlzLkFiPXRoaXMuZmE9dGhpcy5KPXRoaXMuVz10aGlzLk49dGhpcy5PPTB9ZnVuY3Rpb24gb3QoKXt0aGlzLlJkPXRoaXMuaGVpZ2h0PXRoaXMud2lkdGg9dGhpcy5TPTAsdGhpcy5mPXt9LHRoaXMuZi5SR0JBPW5ldyBpdCx0aGlzLmYua2I9bmV3IGF0LHRoaXMuc2Q9bnVsbH1mdW5jdGlvbiBzdCgpe3RoaXMud2lkdGg9WzBdLHRoaXMuaGVpZ2h0PVswXSx0aGlzLlBkPVswXSx0aGlzLlFkPVswXSx0aGlzLmZvcm1hdD1bMF19ZnVuY3Rpb24gY3QoKXt0aGlzLklkPXRoaXMuZmQ9dGhpcy5NZD10aGlzLmhiPXRoaXMuaWI9dGhpcy5kYT10aGlzLmJkPXRoaXMuY2Q9dGhpcy5qPXRoaXMudj10aGlzLkRhPXRoaXMuU2Q9dGhpcy5vYj0wfWZ1bmN0aW9uIHV0KHQpe3JldHVybiBhbGVydCgidG9kbzpXZWJQU2FtcGxlclByb2Nlc3NQbGFuZSIpLHQuVH1mdW5jdGlvbiBsdCh0LGUpe3ZhciByPXQuVCxpPWUuYmEuZi5SR0JBLGE9aS5lYixvPWkuZmIrdC5rYSppLkEscz12aVtlLmJhLlNdLGM9dC55LHU9dC5PLGw9dC5mLGg9dC5OLGY9dC5lYSxkPXQuVyxwPWUuY2MsZz1lLmRjLG09ZS5NYyx2PWUuTmMsYj10LmthLHk9dC5rYSt0LlQsdz10LlUsTj13KzE+PjE7Zm9yKDA9PWI\/cyhjLHUsbnVsbCxudWxsLGwsaCxmLGQsbCxoLGYsZCxhLG8sbnVsbCxudWxsLHcpOihzKGUuZWMsZS5mYyxjLHUscCxnLG0sdixsLGgsZixkLGEsby1pLkEsYSxvLHcpLCsrcik7YisyPHk7Yis9MilwPWwsZz1oLG09Zix2PWQsaCs9dC5SYyxkKz10LlJjLG8rPTIqaS5BLHMoYywodSs9Mip0LmZhKS10LmZhLGMsdSxwLGcsbSx2LGwsaCxmLGQsYSxvLWkuQSxhLG8sdyk7cmV0dXJuIHUrPXQuZmEsdC5qK3k8dC5vPyhuKGUuZWMsZS5mYyxjLHUsdyksbihlLmNjLGUuZGMsbCxoLE4pLG4oZS5NYyxlLk5jLGYsZCxOKSxyLS0pOjEmeXx8cyhjLHUsbnVsbCxudWxsLGwsaCxmLGQsbCxoLGYsZCxhLG8raS5BLG51bGwsbnVsbCx3KSxyfWZ1bmN0aW9uIGh0KHQscixuKXt2YXIgaT10LkYsYT1bdC5KXTtpZihudWxsIT1pKXt2YXIgbz10LlUscz1yLmJhLlMsYz1zPT1Ubnx8cz09Vm47cj1yLmJhLmYuUkdCQTt2YXIgdT1bMF0sbD10LmthO3VbMF09dC5ULHQuS2ImJigwPT1sPy0tdVswXTooLS1sLGFbMF0tPXQud2lkdGgpLHQuait0LmthK3QuVD09dC5vJiYodVswXT10Lm8tdC5qLWwpKTt2YXIgaD1yLmViO2w9ci5mYitsKnIuQTt0PVNuKGksYVswXSx0LndpZHRoLG8sdSxoLGwrKGM\/MDozKSxyLkEpLGUobj09dSksdCYmbnQocykmJkFuKGgsbCxjLG8sdSxyLkEpfXJldHVybiAwfWZ1bmN0aW9uIGZ0KHQpe3ZhciBlPXQubWEscj1lLmJhLlMsbj0xMT5yLGk9cj09cW58fHI9PVJufHxyPT1Ubnx8cj09VW58fDEyPT1yfHxudChyKTtpZihlLm1lbW9yeT1udWxsLGUuSWI9bnVsbCxlLkpiPW51bGwsZS5OZD1udWxsLCFNcihlLk9hLHQsaT8xMToxMikpcmV0dXJuIDA7aWYoaSYmbnQocikmJmJyKCksdC5kYSlhbGVydCgidG9kbzp1c2Vfc2NhbGluZyIpO2Vsc2V7aWYobil7aWYoZS5JYj11dCx0LktiKXtpZihyPXQuVSsxPj4xLGUubWVtb3J5PWEodC5VKzIqciksbnVsbD09ZS5tZW1vcnkpcmV0dXJuIDA7ZS5lYz1lLm1lbW9yeSxlLmZjPTAsZS5jYz1lLmVjLGUuZGM9ZS5mYyt0LlUsZS5NYz1lLmNjLGUuTmM9ZS5kYytyLGUuSWI9bHQsYnIoKX19ZWxzZSBhbGVydCgidG9kbzpFbWl0WVVWIik7aSYmKGUuSmI9aHQsbiYmbXIoKSl9aWYobiYmIUNpKXtmb3IodD0wOzI1Nj50OysrdClqaVt0XT04OTg1OCoodC0xMjgpK19pPj5TaSxNaVt0XT0tMjIwMTQqKHQtMTI4KStfaSxCaVt0XT0tNDU3NzMqKHQtMTI4KSxPaVt0XT0xMTM2MTgqKHQtMTI4KStfaT4+U2k7Zm9yKHQ9UGk7dDxraTsrK3QpZT03NjI4MyoodC0xNikrX2k+PlNpLEVpW3QtUGldPVZ0KGUsMjU1KSxxaVt0LVBpXT1WdChlKzg+PjQsMTUpO0NpPTF9cmV0dXJuIDF9ZnVuY3Rpb24gZHQodCl7dmFyIHI9dC5tYSxuPXQuVSxpPXQuVDtyZXR1cm4gZSghKDEmdC5rYSkpLDA+PW58fDA+PWk\/MDoobj1yLkliKHQsciksbnVsbCE9ci5KYiYmci5KYih0LHIsbiksci5EYys9biwxKX1mdW5jdGlvbiBwdCh0KXt0Lm1hLm1lbW9yeT1udWxsfWZ1bmN0aW9uIGd0KHQsZSxyLG4pe3JldHVybiA0NyE9eSh0LDgpPzA6KGVbMF09eSh0LDE0KSsxLHJbMF09eSh0LDE0KSsxLG5bMF09eSh0LDEpLDAhPXkodCwzKT8wOiF0LmgpfWZ1bmN0aW9uIG10KHQsZSl7aWYoND50KXJldHVybiB0KzE7dmFyIHI9dC0yPj4xO3JldHVybigyKygxJnQpPDxyKSt5KGUscikrMX1mdW5jdGlvbiB2dCh0LGUpe3JldHVybiAxMjA8ZT9lLTEyMDoxPD0ocj0oKHI9JG5bZS0xXSk+PjQpKnQrKDgtKDE1JnIpKSk\/cjoxO3ZhciByfWZ1bmN0aW9uIGJ0KHQsZSxyKXt2YXIgbj1MKHIpLGk9dFtlKz0yNTUmbl0uZy04O3JldHVybiAwPGkmJih4KHIsci51KzgpLG49TChyKSxlKz10W2VdLnZhbHVlLGUrPW4mKDE8PGkpLTEpLHgocixyLnUrdFtlXS5nKSx0W2VdLnZhbHVlfWZ1bmN0aW9uIHl0KHQscixuKXtyZXR1cm4gbi5nKz10Lmcsbi52YWx1ZSs9dC52YWx1ZTw8cj4+PjAsZSg4Pj1uLmcpLHQuZ31mdW5jdGlvbiB3dCh0LHIsbil7dmFyIGk9dC54YztyZXR1cm4gZSgocj0wPT1pPzA6dC52Y1t0Lm1kKihuPj5pKSsocj4+aSldKTx0LldiKSx0LllhW3JdfWZ1bmN0aW9uIE50KHQscixpLGEpe3ZhciBvPXQuYWIscz10LmMqcixjPXQuQztyPWMrcjt2YXIgdT1pLGw9YTtmb3IoYT10LlRhLGk9dC5VYTswPG8tLTspe3ZhciBoPXQuZ2Nbb10sZj1jLGQ9cixwPXUsZz1sLG09KGw9YSx1PWksaC5FYSk7c3dpdGNoKGUoZjxkKSxlKGQ8PWgubmMpLGguaGMpe2Nhc2UgMjpHcihwLGcsKGQtZikqbSxsLHUpO2JyZWFrO2Nhc2UgMDp2YXIgdj1mLGI9ZCx5PWwsdz11LE49KF89aCkuRWE7MD09diYmKFdyKHAsZyxudWxsLG51bGwsMSx5LHcpLFYocCxnKzEsMCwwLE4tMSx5LHcrMSksZys9Tix3Kz1OLCsrdik7Zm9yKHZhciBMPTE8PF8uYixBPUwtMSx4PXEoTixfLmIpLFM9Xy5LLF89Xy53Kyh2Pj5fLmIpKng7djxiOyl7dmFyIFA9UyxrPV8sRj0xO2ZvcihWcihwLGcseSx3LU4sMSx5LHcpO0Y8Tjspe3ZhciBJPShGJn5BKStMO0k+TiYmKEk9TiksKDAsWnJbUFtrKytdPj44JjE1XSkocCxnKyArRix5LHcrRi1OLEktRix5LHcrRiksRj1JfWcrPU4sdys9TiwrK3YmQXx8KF8rPXgpfWQhPWgubmMmJm4obCx1LW0sbCx1KyhkLWYtMSkqbSxtKTticmVhaztjYXNlIDE6Zm9yKG09cCxiPWcsTj0ocD1oLkVhKS0odz1wJn4oeT0oZz0xPDxoLmIpLTEpKSx2PXEocCxoLmIpLEw9aC5LLGg9aC53KyhmPj5oLmIpKnY7ZjxkOyl7Zm9yKEE9TCx4PWgsUz1uZXcgVCxfPWIrdyxQPWIrcDtiPF87KVkoQVt4KytdLFMpLCRyKFMsbSxiLGcsbCx1KSxiKz1nLHUrPWc7YjxQJiYoWShBW3grK10sUyksJHIoUyxtLGIsTixsLHUpLGIrPU4sdSs9TiksKytmJnl8fChoKz12KX1icmVhaztjYXNlIDM6aWYocD09bCYmZz09dSYmMDxoLmIpe2ZvcihiPWwscD1tPXUrKGQtZikqbS0odz0oZC1mKSpxKGguRWEsaC5iKSksZz1sLHk9dSx2PVtdLHc9KE49dyktMTswPD13Oy0tdyl2W3ddPWdbeSt3XTtmb3Iodz1OLTE7MDw9dzstLXcpYltwK3ddPXZbd107WXIoaCxmLGQsbCxtLGwsdSl9ZWxzZSBZcihoLGYsZCxwLGcsbCx1KX11PWEsbD1pfWwhPWkmJm4oYSxpLHUsbCxzKX1mdW5jdGlvbiBMdCh0LHIpe3ZhciBuPXQuVixpPXQuQmErdC5jKnQuQyxhPXItdC5DO2lmKGUocjw9dC5sLm8pLGUoMTY+PWEpLDA8YSl7dmFyIG89dC5sLHM9dC5UYSxjPXQuVWEsdT1vLndpZHRoO2lmKE50KHQsYSxuLGkpLGE9Yz1bY10sZSgobj10LkMpPChpPXIpKSxlKG8udjxvLnZhKSxpPm8ubyYmKGk9by5vKSxuPG8uail7dmFyIGw9by5qLW47bj1vLmo7YVswXSs9bCp1fWlmKG4+PWk\/bj0wOihhWzBdKz00Km8udixvLmthPW4tby5qLG8uVT1vLnZhLW8udixvLlQ9aS1uLG49MSksbil7aWYoYz1jWzBdLDExPihuPXQuY2EpLlMpe3ZhciBoPW4uZi5SR0JBLGY9KGk9bi5TLGE9by5VLG89by5ULGw9aC5lYixoLkEpLGQ9bztmb3IoaD1oLmZiK3QuTWEqaC5BOzA8ZC0tOyl7dmFyIHA9cyxnPWMsbT1hLHY9bCxiPWg7c3dpdGNoKGkpe2Nhc2UgRW46UXIocCxnLG0sdixiKTticmVhaztjYXNlIHFuOnRuKHAsZyxtLHYsYik7YnJlYWs7Y2FzZSBIbjp0bihwLGcsbSx2LGIpLEFuKHYsYiwwLG0sMSwwKTticmVhaztjYXNlIERuOm5uKHAsZyxtLHYsYik7YnJlYWs7Y2FzZSBSbjpldChwLGcsbSx2LGIsMSk7YnJlYWs7Y2FzZSBXbjpldChwLGcsbSx2LGIsMSksQW4odixiLDAsbSwxLDApO2JyZWFrO2Nhc2UgVG46ZXQocCxnLG0sdixiLDApO2JyZWFrO2Nhc2UgVm46ZXQocCxnLG0sdixiLDApLEFuKHYsYiwxLG0sMSwwKTticmVhaztjYXNlIFVuOmVuKHAsZyxtLHYsYik7YnJlYWs7Y2FzZSBHbjplbihwLGcsbSx2LGIpLHhuKHYsYixtLDEsMCk7YnJlYWs7Y2FzZSB6bjpybihwLGcsbSx2LGIpO2JyZWFrO2RlZmF1bHQ6ZSgwKX1jKz11LGgrPWZ9dC5NYSs9b31lbHNlIGFsZXJ0KCJ0b2RvOkVtaXRSZXNjYWxlZFJvd3NZVVZBIik7ZSh0Lk1hPD1uLmhlaWdodCl9fXQuQz1yLGUodC5DPD10LmkpfWZ1bmN0aW9uIEF0KHQpe3ZhciBlO2lmKDA8dC51YSlyZXR1cm4gMDtmb3IoZT0wO2U8dC5XYjsrK2Upe3ZhciByPXQuWWFbZV0uRyxuPXQuWWFbZV0uSDtpZigwPHJbMV1bblsxXSswXS5nfHwwPHJbMl1bblsyXSswXS5nfHwwPHJbM11bblszXSswXS5nKXJldHVybiAwfXJldHVybiAxfWZ1bmN0aW9uIHh0KHQscixuLGksYSxvKXtpZigwIT10Llope3ZhciBzPXQucWQsYz10LnJkO2ZvcihlKG51bGwhPW1pW3QuWl0pO3I8bjsrK3IpbWlbdC5aXShzLGMsaSxhLGksYSxvKSxzPWksYz1hLGErPW87dC5xZD1zLHQucmQ9Y319ZnVuY3Rpb24gU3QodCxyKXt2YXIgbj10LmwubWEsaT0wPT1uLlp8fDE9PW4uWj90Lmwuajp0LkM7aT10LkM8aT9pOnQuQztpZihlKHI8PXQubC5vKSxyPmkpe3ZhciBhPXQubC53aWR0aCxvPW4uY2Escz1uLnRiK2EqaSxjPXQuVix1PXQuQmErdC5jKmksbD10LmdjO2UoMT09dC5hYiksZSgzPT1sWzBdLmhjKSxYcihsWzBdLGkscixjLHUsbyxzKSx4dChuLGkscixvLHMsYSl9dC5DPXQuTWE9cn1mdW5jdGlvbiBfdCh0LHIsbixpLGEsbyxzKXt2YXIgYz10LiQvaSx1PXQuJCVpLGw9dC5tLGg9dC5zLGY9bit0LiQsZD1mO2E9bitpKmE7dmFyIHA9bitpKm8sZz0yODAraC51YSxtPXQuUGI\/YzoxNjc3NzIxNix2PTA8aC51YT9oLldhOm51bGwsYj1oLndjLHk9ZjxwP3d0KGgsdSxjKTpudWxsO2UodC5DPG8pLGUocDw9YSk7dmFyIHc9ITE7dDpmb3IoOzspe2Zvcig7d3x8ZjxwOyl7dmFyIE49MDtpZihjPj1tKXt2YXIgXz1mLW47ZSgobT10KS5QYiksbS53ZD1tLm0sbS54ZD1fLDA8bS5zLnVhJiZCKG0ucy5XYSxtLnMudmIpLG09Yyt0aX1pZih1JmJ8fCh5PXd0KGgsdSxjKSksZShudWxsIT15KSx5LlFiJiYocltmXT15LnFiLHc9ITApLCF3KWlmKFMobCkseS5qYyl7Tj1sLF89cjt2YXIgUD1mLGs9eS5wZFtMKE4pJkRyLTFdO2UoeS5qYyksMjU2PmsuZz8oeChOLE4udStrLmcpLF9bUF09ay52YWx1ZSxOPTApOih4KE4sTi51K2suZy0yNTYpLGUoMjU2PD1rLnZhbHVlKSxOPWsudmFsdWUpLDA9PU4mJih3PSEwKX1lbHNlIE49YnQoeS5HWzBdLHkuSFswXSxsKTtpZihsLmgpYnJlYWs7aWYod3x8MjU2Pk4pe2lmKCF3KWlmKHkubmQpcltmXT0oeS5xYnxOPDw4KT4+PjA7ZWxzZXtpZihTKGwpLHc9YnQoeS5HWzFdLHkuSFsxXSxsKSxTKGwpLF89YnQoeS5HWzJdLHkuSFsyXSxsKSxQPWJ0KHkuR1szXSx5LkhbM10sbCksbC5oKWJyZWFrO3JbZl09KFA8PDI0fHc8PDE2fE48PDh8Xyk+Pj4wfWlmKHc9ITEsKytmLCsrdT49aSYmKHU9MCwrK2MsbnVsbCE9cyYmYzw9byYmIShjJTE2KSYmcyh0LGMpLG51bGwhPXYpKWZvcig7ZDxmOylOPXJbZCsrXSx2LlhbKDUwNjgzMjgyOSpOJjQyOTQ5NjcyOTUpPj4+di5NYl09Tn1lbHNlIGlmKDI4MD5OKXtpZihOPW10KE4tMjU2LGwpLF89YnQoeS5HWzRdLHkuSFs0XSxsKSxTKGwpLF89dnQoaSxfPW10KF8sbCkpLGwuaClicmVhaztpZihmLW48X3x8YS1mPE4pYnJlYWsgdDtmb3IoUD0wO1A8TjsrK1ApcltmK1BdPXJbZitQLV9dO2ZvcihmKz1OLHUrPU47dT49aTspdS09aSwrK2MsbnVsbCE9cyYmYzw9byYmIShjJTE2KSYmcyh0LGMpO2lmKGUoZjw9YSksdSZiJiYoeT13dChoLHUsYykpLG51bGwhPXYpZm9yKDtkPGY7KU49cltkKytdLHYuWFsoNTA2ODMyODI5Kk4mNDI5NDk2NzI5NSk+Pj52Lk1iXT1OfWVsc2V7aWYoIShOPGcpKWJyZWFrIHQ7Zm9yKHc9Ti0yODAsZShudWxsIT12KTtkPGY7KU49cltkKytdLHYuWFsoNTA2ODMyODI5Kk4mNDI5NDk2NzI5NSk+Pj52Lk1iXT1OO049ZixlKCEodz4+PihfPXYpLlhhKSkscltOXT1fLlhbd10sdz0hMH13fHxlKGwuaD09QShsKSl9aWYodC5QYiYmbC5oJiZmPGEpZSh0Lm0uaCksdC5hPTUsdC5tPXQud2QsdC4kPXQueGQsMDx0LnMudWEmJkIodC5zLnZiLHQucy5XYSk7ZWxzZXtpZihsLmgpYnJlYWsgdDtudWxsIT1zJiZzKHQsYz5vP286YyksdC5hPTAsdC4kPWYtbn1yZXR1cm4gMX1yZXR1cm4gdC5hPTMsMH1mdW5jdGlvbiBQdCh0KXtlKG51bGwhPXQpLHQudmM9bnVsbCx0LnljPW51bGwsdC5ZYT1udWxsO3ZhciByPXQuV2E7bnVsbCE9ciYmKHIuWD1udWxsKSx0LnZiPW51bGwsZShudWxsIT10KX1mdW5jdGlvbiBrdCgpe3ZhciBlPW5ldyBvcjtyZXR1cm4gbnVsbD09ZT9udWxsOihlLmE9MCxlLnhiPWdpLHJ0KCJQcmVkaWN0b3IiLCJWUDhMUHJlZGljdG9ycyIpLHJ0KCJQcmVkaWN0b3IiLCJWUDhMUHJlZGljdG9yc19DIikscnQoIlByZWRpY3RvckFkZCIsIlZQOExQcmVkaWN0b3JzQWRkIikscnQoIlByZWRpY3RvckFkZCIsIlZQOExQcmVkaWN0b3JzQWRkX0MiKSxHcj1HLCRyPUosUXI9Syx0bj1aLGVuPSQscm49USxubj10dCx0LlZQOExNYXBDb2xvcjMyYj1Kcix0LlZQOExNYXBDb2xvcjhiPUtyLGUpfWZ1bmN0aW9uIEZ0KHQscixuLHMsYyl7dmFyIHU9MSxmPVt0XSxwPVtyXSxnPXMubSxtPXMucyx2PW51bGwsYj0wO3Q6Zm9yKDs7KXtpZihuKWZvcig7dSYmeShnLDEpOyl7dmFyIHc9ZixOPXAsQT1zLF89MSxQPUEubSxrPUEuZ2NbQS5hYl0sRj15KFAsMik7aWYoQS5PYyYxPDxGKXU9MDtlbHNle3N3aXRjaChBLk9jfD0xPDxGLGsuaGM9RixrLkVhPXdbMF0say5uYz1OWzBdLGsuSz1bbnVsbF0sKytBLmFiLGUoND49QS5hYiksRil7Y2FzZSAwOmNhc2UgMTprLmI9eShQLDMpKzIsXz1GdChxKGsuRWEsay5iKSxxKGsubmMsay5iKSwwLEEsay5LKSxrLks9ay5LWzBdO2JyZWFrO2Nhc2UgMzp2YXIgSSxDPXkoUCw4KSsxLGo9MTY8Qz8wOjQ8Qz8xOjI8Qz8yOjM7aWYod1swXT1xKGsuRWEsaiksay5iPWosST1fPUZ0KEMsMSwwLEEsay5LKSl7dmFyIEIsTT1DLEU9ayxSPTE8PCg4Pj5FLmIpLFQ9YShSKTtpZihudWxsPT1UKUk9MDtlbHNle3ZhciBVPUUuS1swXSx6PUUudztmb3IoVFswXT1FLktbMF1bMF0sQj0xO0I8MSpNOysrQilUW0JdPUQoVVt6K0JdLFRbQi0xXSk7Zm9yKDtCPDQqUjsrK0IpVFtCXT0wO0UuS1swXT1udWxsLEUuS1swXT1ULEk9MX19Xz1JO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OmUoMCl9dT1ffX1pZihmPWZbMF0scD1wWzBdLHUmJnkoZywxKSYmISh1PTE8PShiPXkoZyw0KSkmJjExPj1iKSl7cy5hPTM7YnJlYWsgdH12YXIgSDtpZihIPXUpZTp7dmFyIFcsVixHLFk9cyxKPWYsWD1wLEs9YixaPW4sJD1ZLm0sUT1ZLnMsdHQ9W251bGxdLGV0PTEscnQ9MCxudD1RbltLXTtyOmZvcig7Oyl7aWYoWiYmeSgkLDEpKXt2YXIgaXQ9eSgkLDMpKzIsYXQ9cShKLGl0KSxvdD1xKFgsaXQpLHN0PWF0Km90O2lmKCFGdChhdCxvdCwwLFksdHQpKWJyZWFrIHI7Zm9yKHR0PXR0WzBdLFEueGM9aXQsVz0wO1c8c3Q7KytXKXt2YXIgY3Q9dHRbV10+PjgmNjU1MzU7dHRbV109Y3QsY3Q+PWV0JiYoZXQ9Y3QrMSl9fWlmKCQuaClicmVhayByO2ZvcihWPTA7NT5WOysrVil7dmFyIHV0PVhuW1ZdOyFWJiYwPEsmJih1dCs9MTw8SykscnQ8dXQmJihydD11dCl9dmFyIGx0PW8oZXQqbnQsaCksaHQ9ZXQsZnQ9byhodCxkKTtpZihudWxsPT1mdCl2YXIgZHQ9bnVsbDtlbHNlIGUoNjU1MzY+PWh0KSxkdD1mdDt2YXIgcHQ9YShydCk7aWYobnVsbD09ZHR8fG51bGw9PXB0fHxudWxsPT1sdCl7WS5hPTE7YnJlYWsgcn12YXIgZ3Q9bHQ7Zm9yKFc9Rz0wO1c8ZXQ7KytXKXt2YXIgbXQ9ZHRbV10sdnQ9bXQuRyxidD1tdC5ILHd0PTAsTnQ9MSxMdD0wO2ZvcihWPTA7NT5WOysrVil7dXQ9WG5bVl0sdnRbVl09Z3QsYnRbVl09RywhViYmMDxLJiYodXQrPTE8PEspO246e3ZhciBBdCx4dD11dCxTdD1ZLGt0PXB0LEl0PWd0LEN0PUcsanQ9MCxPdD1TdC5tLEJ0PXkoT3QsMSk7aWYoaShrdCwwLDAseHQpLEJ0KXt2YXIgTXQ9eShPdCwxKSsxLEV0PXkoT3QsMSkscXQ9eShPdCwwPT1FdD8xOjgpO2t0W3F0XT0xLDI9PU10JiYoa3RbcXQ9eShPdCw4KV09MSk7dmFyIER0PTF9ZWxzZXt2YXIgUnQ9YSgxOSksVHQ9eShPdCw0KSs0O2lmKDE5PFR0KXtTdC5hPTM7dmFyIFV0PTA7YnJlYWsgbn1mb3IoQXQ9MDtBdDxUdDsrK0F0KVJ0W1puW0F0XV09eShPdCwzKTt2YXIgenQ9dm9pZCAwLEh0PXZvaWQgMCxXdD1TdCxWdD1SdCxHdD14dCxZdD1rdCxKdD0wLFh0PVd0Lm0sS3Q9OCxadD1vKDEyOCxoKTtpOmZvcig7bChadCwwLDcsVnQsMTkpOyl7aWYoeShYdCwxKSl7dmFyICR0PTIrMip5KFh0LDMpO2lmKCh6dD0yK3koWHQsJHQpKT5HdClicmVhayBpfWVsc2UgenQ9R3Q7Zm9yKEh0PTA7SHQ8R3QmJnp0LS07KXtTKFh0KTt2YXIgUXQ9WnRbMCsoMTI3JkwoWHQpKV07eChYdCxYdC51K1F0LmcpO3ZhciB0ZT1RdC52YWx1ZTtpZigxNj50ZSlZdFtIdCsrXT10ZSwwIT10ZSYmKEt0PXRlKTtlbHNle3ZhciBlZT0xNj09dGUscmU9dGUtMTYsbmU9Sm5bcmVdLGllPXkoWHQsWW5bcmVdKStuZTtpZihIdCtpZT5HdClicmVhayBpO2Zvcih2YXIgYWU9ZWU\/S3Q6MDswPGllLS07KVl0W0h0KytdPWFlfX1KdD0xO2JyZWFrIGl9SnR8fChXdC5hPTMpLER0PUp0fShEdD1EdCYmIU90LmgpJiYoanQ9bChJdCxDdCw4LGt0LHh0KSksRHQmJjAhPWp0P1V0PWp0OihTdC5hPTMsVXQ9MCl9aWYoMD09VXQpYnJlYWsgcjtpZihOdCYmMT09S25bVl0mJihOdD0wPT1ndFtHXS5nKSx3dCs9Z3RbR10uZyxHKz1VdCwzPj1WKXt2YXIgb2Usc2U9cHRbMF07Zm9yKG9lPTE7b2U8dXQ7KytvZSlwdFtvZV0+c2UmJihzZT1wdFtvZV0pO0x0Kz1zZX19aWYobXQubmQ9TnQsbXQuUWI9MCxOdCYmKG10LnFiPSh2dFszXVtidFszXSswXS52YWx1ZTw8MjR8dnRbMV1bYnRbMV0rMF0udmFsdWU8PDE2fHZ0WzJdW2J0WzJdKzBdLnZhbHVlKT4+PjAsMD09d3QmJjI1Nj52dFswXVtidFswXSswXS52YWx1ZSYmKG10LlFiPTEsbXQucWIrPXZ0WzBdW2J0WzBdKzBdLnZhbHVlPDw4KSksbXQuamM9IW10LlFiJiY2Pkx0LG10LmpjKXt2YXIgY2UsdWU9bXQ7Zm9yKGNlPTA7Y2U8RHI7KytjZSl7dmFyIGxlPWNlLGhlPXVlLnBkW2xlXSxmZT11ZS5HWzBdW3VlLkhbMF0rbGVdOzI1Njw9ZmUudmFsdWU\/KGhlLmc9ZmUuZysyNTYsaGUudmFsdWU9ZmUudmFsdWUpOihoZS5nPTAsaGUudmFsdWU9MCxsZT4+PXl0KGZlLDgsaGUpLGxlPj49eXQodWUuR1sxXVt1ZS5IWzFdK2xlXSwxNixoZSksbGU+Pj15dCh1ZS5HWzJdW3VlLkhbMl0rbGVdLDAsaGUpLHl0KHVlLkdbM11bdWUuSFszXStsZV0sMjQsaGUpKX19fVEudmM9dHQsUS5XYj1ldCxRLllhPWR0LFEueWM9bHQsSD0xO2JyZWFrIGV9SD0wfWlmKCEodT1IKSl7cy5hPTM7YnJlYWsgdH1pZigwPGIpe2lmKG0udWE9MTw8YiwhTyhtLldhLGIpKXtzLmE9MSx1PTA7YnJlYWsgdH19ZWxzZSBtLnVhPTA7dmFyIGRlPXMscGU9ZixnZT1wLG1lPWRlLnMsdmU9bWUueGM7aWYoZGUuYz1wZSxkZS5pPWdlLG1lLm1kPXEocGUsdmUpLG1lLndjPTA9PXZlPy0xOigxPDx2ZSktMSxuKXtzLnhiPXBpO2JyZWFrIHR9aWYobnVsbD09KHY9YShmKnApKSl7cy5hPTEsdT0wO2JyZWFrIHR9dT0odT1fdChzLHYsMCxmLHAscCxudWxsKSkmJiFnLmg7YnJlYWsgdH1yZXR1cm4gdT8obnVsbCE9Yz9jWzBdPXY6KGUobnVsbD09diksZShuKSkscy4kPTAsbnx8UHQobSkpOlB0KG0pLHV9ZnVuY3Rpb24gSXQodCxyKXt2YXIgbj10LmMqdC5pLGk9bityKzE2KnI7cmV0dXJuIGUodC5jPD1yKSx0LlY9YShpKSxudWxsPT10LlY\/KHQuVGE9bnVsbCx0LlVhPTAsdC5hPTEsMCk6KHQuVGE9dC5WLHQuVWE9dC5CYStuK3IsMSl9ZnVuY3Rpb24gQ3QodCxyKXt2YXIgbj10LkMsaT1yLW4sYT10LlYsbz10LkJhK3QuYypuO2ZvcihlKHI8PXQubC5vKTswPGk7KXt2YXIgcz0xNjxpPzE2OmksYz10LmwubWEsdT10Lmwud2lkdGgsbD11KnMsaD1jLmNhLGY9Yy50Yit1Km4sZD10LlRhLHA9dC5VYTtOdCh0LHMsYSxvKSxfbihkLHAsaCxmLGwpLHh0KGMsbixuK3MsaCxmLHUpLGktPXMsYSs9cyp0LmMsbis9c31lKG49PXIpLHQuQz10Lk1hPXJ9ZnVuY3Rpb24ganQoKXt0aGlzLnViPXRoaXMueWQ9dGhpcy50ZD10aGlzLlJiPTB9ZnVuY3Rpb24gT3QoKXt0aGlzLktkPXRoaXMuTGQ9dGhpcy5VZD10aGlzLlRkPXRoaXMuaT10aGlzLmM9MH1mdW5jdGlvbiBCdCgpe3RoaXMuRmI9dGhpcy5CYj10aGlzLkNiPTAsdGhpcy5aYj1hKDQpLHRoaXMuTGI9YSg0KX1mdW5jdGlvbiBNdCgpe3RoaXMuWWI9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbil7Zm9yKHZhciBpPW5bcl0sYT0wO2E8aSYmKGUucHVzaChuLmxlbmd0aD5yKzE\/W106MCksIShuLmxlbmd0aDxyKzEpKTthKyspdChlW2FdLHIrMSxuKX0odCwwLFszLDExXSksdH0oKX1mdW5jdGlvbiBFdCgpe3RoaXMuamI9YSgzKSx0aGlzLldjPXMoWzQsOF0sTXQpLHRoaXMuWGM9cyhbNCwxN10sTXQpfWZ1bmN0aW9uIHF0KCl7dGhpcy5QYz10aGlzLndiPXRoaXMuVGI9dGhpcy56ZD0wLHRoaXMudmQ9bmV3IGEoNCksdGhpcy5vZD1uZXcgYSg0KX1mdW5jdGlvbiBEdCgpe3RoaXMubGQ9dGhpcy5MYT10aGlzLmRkPXRoaXMudGM9MH1mdW5jdGlvbiBSdCgpe3RoaXMuTmE9dGhpcy5sYT0wfWZ1bmN0aW9uIFR0KCl7dGhpcy5TYz1bMCwwXSx0aGlzLkViPVswLDBdLHRoaXMuUWM9WzAsMF0sdGhpcy5pYT10aGlzLmxjPTB9ZnVuY3Rpb24gVXQoKXt0aGlzLmFkPWEoMzg0KSx0aGlzLlphPTAsdGhpcy5PYj1hKDE2KSx0aGlzLiRiPXRoaXMuQWQ9dGhpcy5pYT10aGlzLkdjPXRoaXMuSGM9dGhpcy5EZD0wfWZ1bmN0aW9uIHp0KCl7dGhpcy51Yz10aGlzLk09dGhpcy5OYj0wLHRoaXMud2E9QXJyYXkobmV3IER0KSx0aGlzLlk9MCx0aGlzLnlhPUFycmF5KG5ldyBVdCksdGhpcy5hYT0wLHRoaXMubD1uZXcgR3R9ZnVuY3Rpb24gSHQoKXt0aGlzLnk9YSgxNiksdGhpcy5mPWEoOCksdGhpcy5lYT1hKDgpfWZ1bmN0aW9uIFd0KCl7dGhpcy5jYj10aGlzLmE9MCx0aGlzLnNjPSIiLHRoaXMubT1uZXcgdyx0aGlzLk9kPW5ldyBqdCx0aGlzLktjPW5ldyBPdCx0aGlzLmVkPW5ldyBxdCx0aGlzLlFhPW5ldyBCdCx0aGlzLkljPXRoaXMuJGM9dGhpcy5BYT0wLHRoaXMuRD1uZXcgenQsdGhpcy5YYj10aGlzLlZhPXRoaXMuSGI9dGhpcy56Yj10aGlzLnliPXRoaXMuVWI9dGhpcy56YT0wLHRoaXMuSmM9byg4LHcpLHRoaXMuaWE9MCx0aGlzLnBiPW8oNCxUdCksdGhpcy5QYT1uZXcgRXQsdGhpcy5CZD10aGlzLmtjPTAsdGhpcy5BYz1bXSx0aGlzLkJjPTAsdGhpcy56Yz1bMCwwLDAsMF0sdGhpcy5HZD1BcnJheShuZXcgSHQpLHRoaXMuSGQ9MCx0aGlzLnJiPUFycmF5KG5ldyBSdCksdGhpcy5zYj0wLHRoaXMud2E9QXJyYXkobmV3IER0KSx0aGlzLlk9MCx0aGlzLm9jPVtdLHRoaXMucGM9MCx0aGlzLnNhPVtdLHRoaXMudGE9MCx0aGlzLnFhPVtdLHRoaXMucmE9MCx0aGlzLkhhPVtdLHRoaXMuQj10aGlzLlI9dGhpcy5JYT0wLHRoaXMuRWM9W10sdGhpcy5NPXRoaXMuamE9dGhpcy5WYj10aGlzLkZjPTAsdGhpcy55YT1BcnJheShuZXcgVXQpLHRoaXMuTD10aGlzLmFhPTAsdGhpcy5nZD1zKFs0LDJdLER0KSx0aGlzLmdhPW51bGwsdGhpcy5GYT1bXSx0aGlzLkNjPXRoaXMucWM9dGhpcy5QPTAsdGhpcy5HYj1bXSx0aGlzLlVjPTAsdGhpcy5tYj1bXSx0aGlzLm5iPTAsdGhpcy5yYz1bXSx0aGlzLkdhPXRoaXMuVmM9MH1mdW5jdGlvbiBWdCh0LGUpe3JldHVybiAwPnQ\/MDp0PmU\/ZTp0fWZ1bmN0aW9uIEd0KCl7dGhpcy5UPXRoaXMuVT10aGlzLmthPXRoaXMuaGVpZ2h0PXRoaXMud2lkdGg9MCx0aGlzLnk9W10sdGhpcy5mPVtdLHRoaXMuZWE9W10sdGhpcy5SYz10aGlzLmZhPXRoaXMuVz10aGlzLk49dGhpcy5PPTAsdGhpcy5tYT0idm9pZCIsdGhpcy5wdXQ9IlZQOElvUHV0SG9vayIsdGhpcy5hYz0iVlA4SW9TZXR1cEhvb2siLHRoaXMuYmM9IlZQOElvVGVhcmRvd25Ib29rIix0aGlzLmhhPXRoaXMuS2I9MCx0aGlzLmRhdGE9W10sdGhpcy5oYj10aGlzLmliPXRoaXMuZGE9dGhpcy5vPXRoaXMuaj10aGlzLnZhPXRoaXMudj10aGlzLkRhPXRoaXMub2I9dGhpcy53PTAsdGhpcy5GPVtdLHRoaXMuSj0wfWZ1bmN0aW9uIFl0KCl7dmFyIHQ9bmV3IFd0O3JldHVybiBudWxsIT10JiYodC5hPTAsdC5zYz0iT0siLHQuY2I9MCx0LlhiPTAsbml8fChuaT1adCkpLHR9ZnVuY3Rpb24gSnQodCxlLHIpe3JldHVybiAwPT10LmEmJih0LmE9ZSx0LnNjPXIsdC5jYj0wKSwwfWZ1bmN0aW9uIFh0KHQsZSxyKXtyZXR1cm4gMzw9ciYmMTU3PT10W2UrMF0mJjE9PXRbZSsxXSYmNDI9PXRbZSsyXX1mdW5jdGlvbiBLdCh0LHIpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYodC5hPTAsdC5zYz0iT0siLG51bGw9PXIpcmV0dXJuIEp0KHQsMiwibnVsbCBWUDhJbyBwYXNzZWQgdG8gVlA4R2V0SGVhZGVycygpIik7dmFyIG49ci5kYXRhLGE9ci53LG89ci5oYTtpZig0Pm8pcmV0dXJuIEp0KHQsNywiVHJ1bmNhdGVkIGhlYWRlci4iKTt2YXIgcz1uW2ErMF18blthKzFdPDw4fG5bYSsyXTw8MTYsYz10Lk9kO2lmKGMuUmI9ISgxJnMpLGMudGQ9cz4+MSY3LGMueWQ9cz4+NCYxLGMudWI9cz4+NSwzPGMudGQpcmV0dXJuIEp0KHQsMywiSW5jb3JyZWN0IGtleWZyYW1lIHBhcmFtZXRlcnMuIik7aWYoIWMueWQpcmV0dXJuIEp0KHQsNCwiRnJhbWUgbm90IGRpc3BsYXlhYmxlLiIpO2ErPTMsby09Mzt2YXIgdT10LktjO2lmKGMuUmIpe2lmKDc+bylyZXR1cm4gSnQodCw3LCJjYW5ub3QgcGFyc2UgcGljdHVyZSBoZWFkZXIiKTtpZighWHQobixhLG8pKXJldHVybiBKdCh0LDMsIkJhZCBjb2RlIHdvcmQiKTt1LmM9MTYzODMmKG5bYSs0XTw8OHxuW2ErM10pLHUuVGQ9blthKzRdPj42LHUuaT0xNjM4MyYoblthKzZdPDw4fG5bYSs1XSksdS5VZD1uW2ErNl0+PjYsYSs9NyxvLT03LHQuemE9dS5jKzE1Pj40LHQuVWI9dS5pKzE1Pj40LHIud2lkdGg9dS5jLHIuaGVpZ2h0PXUuaSxyLkRhPTAsci5qPTAsci52PTAsci52YT1yLndpZHRoLHIubz1yLmhlaWdodCxyLmRhPTAsci5pYj1yLndpZHRoLHIuaGI9ci5oZWlnaHQsci5VPXIud2lkdGgsci5UPXIuaGVpZ2h0LGkoKHM9dC5QYSkuamIsMCwyNTUscy5qYi5sZW5ndGgpLGUobnVsbCE9KHM9dC5RYSkpLHMuQ2I9MCxzLkJiPTAscy5GYj0xLGkocy5aYiwwLDAscy5aYi5sZW5ndGgpLGkocy5MYiwwLDAscy5MYil9aWYoYy51Yj5vKXJldHVybiBKdCh0LDcsImJhZCBwYXJ0aXRpb24gbGVuZ3RoIik7cChzPXQubSxuLGEsYy51YiksYSs9Yy51YixvLT1jLnViLGMuUmImJih1LkxkPVAocyksdS5LZD1QKHMpKSx1PXQuUWE7dmFyIGwsaD10LlBhO2lmKGUobnVsbCE9cyksZShudWxsIT11KSx1LkNiPVAocyksdS5DYil7aWYodS5CYj1QKHMpLFAocykpe2Zvcih1LkZiPVAocyksbD0wOzQ+bDsrK2wpdS5aYltsXT1QKHMpP20ocyw3KTowO2ZvcihsPTA7ND5sOysrbCl1LkxiW2xdPVAocyk\/bShzLDYpOjB9aWYodS5CYilmb3IobD0wOzM+bDsrK2wpaC5qYltsXT1QKHMpP2cocyw4KToyNTV9ZWxzZSB1LkJiPTA7aWYocy5LYSlyZXR1cm4gSnQodCwzLCJjYW5ub3QgcGFyc2Ugc2VnbWVudCBoZWFkZXIiKTtpZigodT10LmVkKS56ZD1QKHMpLHUuVGI9ZyhzLDYpLHUud2I9ZyhzLDMpLHUuUGM9UChzKSx1LlBjJiZQKHMpKXtmb3IoaD0wOzQ+aDsrK2gpUChzKSYmKHUudmRbaF09bShzLDYpKTtmb3IoaD0wOzQ+aDsrK2gpUChzKSYmKHUub2RbaF09bShzLDYpKX1pZih0Lkw9MD09dS5UYj8wOnUuemQ\/MToyLHMuS2EpcmV0dXJuIEp0KHQsMywiY2Fubm90IHBhcnNlIGZpbHRlciBoZWFkZXIiKTt2YXIgZj1vO2lmKG89bD1hLGE9bCtmLHU9Zix0LlhiPSgxPDxnKHQubSwyKSktMSxmPDMqKGg9dC5YYikpbj03O2Vsc2V7Zm9yKGwrPTMqaCx1LT0zKmgsZj0wO2Y8aDsrK2Ype3ZhciBkPW5bbyswXXxuW28rMV08PDh8bltvKzJdPDwxNjtkPnUmJihkPXUpLHAodC5KY1srZl0sbixsLGQpLGwrPWQsdS09ZCxvKz0zfXAodC5KY1sraF0sbixsLHUpLG49bDxhPzA6NX1pZigwIT1uKXJldHVybiBKdCh0LG4sImNhbm5vdCBwYXJzZSBwYXJ0aXRpb25zIik7Zm9yKG49ZyhsPXQubSw3KSxvPVAobCk\/bShsLDQpOjAsYT1QKGwpP20obCw0KTowLHU9UChsKT9tKGwsNCk6MCxoPVAobCk\/bShsLDQpOjAsbD1QKGwpP20obCw0KTowLGY9dC5RYSxkPTA7ND5kOysrZCl7aWYoZi5DYil7dmFyIHY9Zi5aYltkXTtmLkZifHwodis9bil9ZWxzZXtpZigwPGQpe3QucGJbZF09dC5wYlswXTtjb250aW51ZX12PW59dmFyIGI9dC5wYltkXTtiLlNjWzBdPWVpW1Z0KHYrbywxMjcpXSxiLlNjWzFdPXJpW1Z0KHYrMCwxMjcpXSxiLkViWzBdPTIqZWlbVnQodithLDEyNyldLGIuRWJbMV09MTAxNTgxKnJpW1Z0KHYrdSwxMjcpXT4+MTYsOD5iLkViWzFdJiYoYi5FYlsxXT04KSxiLlFjWzBdPWVpW1Z0KHYraCwxMTcpXSxiLlFjWzFdPXJpW1Z0KHYrbCwxMjcpXSxiLmxjPXYrbH1pZighYy5SYilyZXR1cm4gSnQodCw0LCJOb3QgYSBrZXkgZnJhbWUuIik7Zm9yKFAocyksYz10LlBhLG49MDs0Pm47KytuKXtmb3Iobz0wOzg+bzsrK28pZm9yKGE9MDszPmE7KythKWZvcih1PTA7MTE+dTsrK3UpaD1rKHMsdWlbbl1bb11bYV1bdV0pP2cocyw4KTpzaVtuXVtvXVthXVt1XSxjLldjW25dW29dLlliW2FdW3VdPWg7Zm9yKG89MDsxNz5vOysrbyljLlhjW25dW29dPWMuV2Nbbl1bbGlbb11dfXJldHVybiB0LmtjPVAocyksdC5rYyYmKHQuQmQ9ZyhzLDgpKSx0LmNiPTF9ZnVuY3Rpb24gWnQodCxlLHIsbixpLGEsbyl7dmFyIHM9ZVtpXS5ZYltyXTtmb3Iocj0wOzE2Pmk7KytpKXtpZighayh0LHNbciswXSkpcmV0dXJuIGk7Zm9yKDshayh0LHNbcisxXSk7KWlmKHM9ZVsrK2ldLlliWzBdLHI9MCwxNj09aSlyZXR1cm4gMTY7dmFyIGM9ZVtpKzFdLlliO2lmKGsodCxzW3IrMl0pKXt2YXIgdT10LGw9MDtpZihrKHUsKGY9cylbKGg9cikrM10pKWlmKGsodSxmW2grNl0pKXtmb3Iocz0wLGg9MioobD1rKHUsZltoKzhdKSkrKGY9ayh1LGZbaCs5K2xdKSksbD0wLGY9aWlbaF07ZltzXTsrK3MpbCs9bCtrKHUsZltzXSk7bCs9MysoODw8aCl9ZWxzZSBrKHUsZltoKzddKT8obD03KzIqayh1LDE2NSksbCs9ayh1LDE0NSkpOmw9NStrKHUsMTU5KTtlbHNlIGw9ayh1LGZbaCs0XSk\/MytrKHUsZltoKzVdKToyO3M9Y1syXX1lbHNlIGw9MSxzPWNbMV07Yz1vK2FpW2ldLDA+KHU9dCkuYiYmXyh1KTt2YXIgaCxmPXUuYixkPShoPXUuQ2E+PjEpLSh1Lkk+PmYpPj4zMTstLXUuYix1LkNhKz1kLHUuQ2F8PTEsdS5JLT0oaCsxJmQpPDxmLGFbY109KChsXmQpLWQpKm5bKDA8aSkrMF19cmV0dXJuIDE2fWZ1bmN0aW9uICR0KHQpe3ZhciBlPXQucmJbdC5zYi0xXTtlLmxhPTAsZS5OYT0wLGkodC56YywwLDAsdC56Yy5sZW5ndGgpLHQuamE9MH1mdW5jdGlvbiBRdCh0LHIpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYobnVsbD09cilyZXR1cm4gSnQodCwyLCJOVUxMIFZQOElvIHBhcmFtZXRlciBpbiBWUDhEZWNvZGUoKS4iKTtpZighdC5jYiYmIUt0KHQscikpcmV0dXJuIDA7aWYoZSh0LmNiKSxudWxsPT1yLmFjfHxyLmFjKHIpKXtyLm9iJiYodC5MPTApO3ZhciBzPVJpW3QuTF07aWYoMj09dC5MPyh0LnliPTAsdC56Yj0wKToodC55Yj1yLnYtcz4+NCx0LnpiPXIuai1zPj40LDA+dC55YiYmKHQueWI9MCksMD50LnpiJiYodC56Yj0wKSksdC5WYT1yLm8rMTUrcz4+NCx0LkhiPXIudmErMTUrcz4+NCx0LkhiPnQuemEmJih0LkhiPXQuemEpLHQuVmE+dC5VYiYmKHQuVmE9dC5VYiksMDx0Lkwpe3ZhciBjPXQuZWQ7Zm9yKHM9MDs0PnM7KytzKXt2YXIgdTtpZih0LlFhLkNiKXt2YXIgbD10LlFhLkxiW3NdO3QuUWEuRmJ8fChsKz1jLlRiKX1lbHNlIGw9Yy5UYjtmb3IodT0wOzE+PXU7Kyt1KXt2YXIgaD10LmdkW3NdW3VdLGY9bDtpZihjLlBjJiYoZis9Yy52ZFswXSx1JiYoZis9Yy5vZFswXSkpLDA8KGY9MD5mPzA6NjM8Zj82MzpmKSl7dmFyIGQ9ZjswPGMud2ImJigoZD00PGMud2I\/ZD4+MjpkPj4xKT45LWMud2ImJihkPTktYy53YikpLDE+ZCYmKGQ9MSksaC5kZD1kLGgudGM9MipmK2QsaC5sZD00MDw9Zj8yOjE1PD1mPzE6MH1lbHNlIGgudGM9MDtoLkxhPXV9fX1zPTB9ZWxzZSBKdCh0LDYsIkZyYW1lIHNldHVwIGZhaWxlZCIpLHM9dC5hO2lmKHM9MD09cyl7aWYocyl7dC4kYz0wLDA8dC5BYXx8KHQuSWM9VWkpO3Q6e3M9dC5JYztjPTQqKGQ9dC56YSk7dmFyIHA9MzIqZCxnPWQrMSxtPTA8dC5MP2QqKDA8dC5BYT8yOjEpOjAsdj0oMj09dC5BYT8yOjEpKmQ7aWYoKGg9Yys4MzIrKHU9MyooMTYqcytSaVt0LkxdKS8yKnApKyhsPW51bGwhPXQuRmEmJjA8dC5GYS5sZW5ndGg\/dC5LYy5jKnQuS2MuaTowKSkhPWgpcz0wO2Vsc2V7aWYoaD50LlZiKXtpZih0LlZiPTAsdC5FYz1hKGgpLHQuRmM9MCxudWxsPT10LkVjKXtzPUp0KHQsMSwibm8gbWVtb3J5IGR1cmluZyBmcmFtZSBpbml0aWFsaXphdGlvbi4iKTticmVhayB0fXQuVmI9aH1oPXQuRWMsZj10LkZjLHQuQWM9aCx0LkJjPWYsZis9Yyx0LkdkPW8ocCxIdCksdC5IZD0wLHQucmI9byhnKzEsUnQpLHQuc2I9MSx0LndhPW0\/byhtLER0KTpudWxsLHQuWT0wLHQuRC5OYj0wLHQuRC53YT10LndhLHQuRC5ZPXQuWSwwPHQuQWEmJih0LkQuWSs9ZCksZSghMCksdC5vYz1oLHQucGM9ZixmKz04MzIsdC55YT1vKHYsVXQpLHQuYWE9MCx0LkQueWE9dC55YSx0LkQuYWE9dC5hYSwyPT10LkFhJiYodC5ELmFhKz1kKSx0LlI9MTYqZCx0LkI9OCpkLGQ9KHA9UmlbdC5MXSkqdC5SLHA9cC8yKnQuQix0LnNhPWgsdC50YT1mK2QsdC5xYT10LnNhLHQucmE9dC50YSsxNipzKnQuUitwLHQuSGE9dC5xYSx0LklhPXQucmErOCpzKnQuQitwLHQuJGM9MCxmKz11LHQubWI9bD9oOm51bGwsdC5uYj1sP2Y6bnVsbCxlKGYrbDw9dC5GYyt0LlZiKSwkdCh0KSxpKHQuQWMsdC5CYywwLGMpLHM9MX19aWYocyl7aWYoci5rYT0wLHIueT10LnNhLHIuTz10LnRhLHIuZj10LnFhLHIuTj10LnJhLHIuZWE9dC5IYSxyLlZkPXQuSWEsci5mYT10LlIsci5SYz10LkIsci5GPW51bGwsci5KPTAsIUNuKXtmb3Iocz0tMjU1OzI1NT49czsrK3MpUG5bMjU1K3NdPTA+cz8tczpzO2ZvcihzPS0xMDIwOzEwMjA+PXM7KytzKWtuWzEwMjArc109LTEyOD5zPy0xMjg6MTI3PHM\/MTI3OnM7Zm9yKHM9LTExMjsxMTI+PXM7KytzKUZuWzExMitzXT0tMTY+cz8tMTY6MTU8cz8xNTpzO2ZvcihzPS0yNTU7NTEwPj1zOysrcylJblsyNTUrc109MD5zPzA6MjU1PHM\/MjU1OnM7Q249MX1hbj11ZSxvbj1hZSxjbj1vZSx1bj1zZSxsbj1jZSxzbj1pZSxobj1KZSxmbj1YZSxkbj0kZSxwbj1RZSxnbj1LZSxtbj1aZSx2bj10cixibj1lcix5bj16ZSx3bj1IZSxObj1XZSxMbj1WZSxmaVswXT14ZSxmaVsxXT1oZSxmaVsyXT1MZSxmaVszXT1BZSxmaVs0XT1TZSxmaVs1XT1QZSxmaVs2XT1fZSxmaVs3XT1rZSxmaVs4XT1JZSxmaVs5XT1GZSxoaVswXT12ZSxoaVsxXT1kZSxoaVsyXT1wZSxoaVszXT1nZSxoaVs0XT1iZSxoaVs1XT15ZSxoaVs2XT13ZSxkaVswXT1CZSxkaVsxXT1mZSxkaVsyXT1DZSxkaVszXT1qZSxkaVs0XT1FZSxkaVs1XT1NZSxkaVs2XT1xZSxzPTF9ZWxzZSBzPTB9cyYmKHM9ZnVuY3Rpb24odCxyKXtmb3IodC5NPTA7dC5NPHQuVmE7Kyt0Lk0pe3ZhciBvLHM9dC5KY1t0Lk0mdC5YYl0sYz10Lm0sdT10O2ZvcihvPTA7bzx1LnphOysrbyl7dmFyIGw9YyxoPXUsZj1oLkFjLGQ9aC5CYys0Km8scD1oLnpjLGc9aC55YVtoLmFhK29dO2lmKGguUWEuQmI\/Zy4kYj1rKGwsaC5QYS5qYlswXSk\/MitrKGwsaC5QYS5qYlsyXSk6ayhsLGguUGEuamJbMV0pOmcuJGI9MCxoLmtjJiYoZy5BZD1rKGwsaC5CZCkpLGcuWmE9IWsobCwxNDUpKzAsZy5aYSl7dmFyIG09Zy5PYix2PTA7Zm9yKGg9MDs0Pmg7KytoKXt2YXIgYix5PXBbMCtoXTtmb3IoYj0wOzQ+YjsrK2Ipe3k9Y2lbZltkK2JdXVt5XTtmb3IodmFyIHc9b2lbayhsLHlbMF0pXTswPHc7KXc9b2lbMip3K2sobCx5W3ddKV07eT0tdyxmW2QrYl09eX1uKG0sdixmLGQsNCksdis9NCxwWzAraF09eX19ZWxzZSB5PWsobCwxNTYpP2sobCwxMjgpPzE6MzprKGwsMTYzKT8yOjAsZy5PYlswXT15LGkoZixkLHksNCksaShwLDAseSw0KTtnLkRkPWsobCwxNDIpP2sobCwxMTQpP2sobCwxODMpPzE6MzoyOjB9aWYodS5tLkthKXJldHVybiBKdCh0LDcsIlByZW1hdHVyZSBlbmQtb2YtcGFydGl0aW9uMCBlbmNvdW50ZXJlZC4iKTtmb3IoO3QuamE8dC56YTsrK3QuamEpe2lmKHU9cyxsPShjPXQpLnJiW2Muc2ItMV0sZj1jLnJiW2Muc2IrYy5qYV0sbz1jLnlhW2MuYWErYy5qYV0sZD1jLmtjP28uQWQ6MClsLmxhPWYubGE9MCxvLlphfHwobC5OYT1mLk5hPTApLG8uSGM9MCxvLkdjPTAsby5pYT0wO2Vsc2V7dmFyIE4sTDtsPWYsZj11LGQ9Yy5QYS5YYyxwPWMueWFbYy5hYStjLmphXSxnPWMucGJbcC4kYl07aWYoaD1wLmFkLG09MCx2PWMucmJbYy5zYi0xXSx5PWI9MCxpKGgsbSwwLDM4NCkscC5aYSl2YXIgQT0wLHg9ZFszXTtlbHNle3c9YSgxNik7dmFyIFM9bC5OYSt2Lk5hO2lmKFM9bmkoZixkWzFdLFMsZy5FYiwwLHcsMCksbC5OYT12Lk5hPSgwPFMpKzAsMTxTKWFuKHcsMCxoLG0pO2Vsc2V7dmFyIF89d1swXSszPj4zO2Zvcih3PTA7MjU2Pnc7dys9MTYpaFttK3ddPV99QT0xLHg9ZFswXX12YXIgUD0xNSZsLmxhLEY9MTUmdi5sYTtmb3Iodz0wOzQ+dzsrK3cpe3ZhciBJPTEmRjtmb3IoXz1MPTA7ND5fOysrXylQPVA+PjF8KEk9KFM9bmkoZix4LFM9SSsoMSZQKSxnLlNjLEEsaCxtKSk+QSk8PDcsTD1MPDwyfCgzPFM\/MzoxPFM\/MjowIT1oW20rMF0pLG0rPTE2O1A+Pj00LEY9Rj4+MXxJPDw3LGI9KGI8PDh8TCk+Pj4wfWZvcih4PVAsQT1GPj40LE49MDs0Pk47Tis9Mil7Zm9yKEw9MCxQPWwubGE+PjQrTixGPXYubGE+PjQrTix3PTA7Mj53Oysrdyl7Zm9yKEk9MSZGLF89MDsyPl87KytfKVM9SSsoMSZQKSxQPVA+PjF8KEk9MDwoUz1uaShmLGRbMl0sUyxnLlFjLDAsaCxtKSkpPDwzLEw9TDw8MnwoMzxTPzM6MTxTPzI6MCE9aFttKzBdKSxtKz0xNjtQPj49MixGPUY+PjF8STw8NX15fD1MPDw0Kk4seHw9UDw8NDw8TixBfD0oMjQwJkYpPDxOfWwubGE9eCx2LmxhPUEscC5IYz1iLHAuR2M9eSxwLmlhPTQzNjkwJnk\/MDpnLmlhLGQ9IShifHkpfWlmKDA8Yy5MJiYoYy53YVtjLlkrYy5qYV09Yy5nZFtvLiRiXVtvLlphXSxjLndhW2MuWStjLmphXS5MYXw9IWQpLHUuS2EpcmV0dXJuIEp0KHQsNywiUHJlbWF0dXJlIGVuZC1vZi1maWxlIGVuY291bnRlcmVkLiIpfWlmKCR0KHQpLGM9cix1PTEsbz0ocz10KS5ELGw9MDxzLkwmJnMuTT49cy56YiYmcy5NPD1zLlZhLDA9PXMuQWEpdDp7aWYoby5NPXMuTSxvLnVjPWwsT3IocyxvKSx1PTEsbz0oTD1zLkQpLk5iLGw9KHk9Umlbcy5MXSkqcy5SLGY9eS8yKnMuQix3PTE2Km8qcy5SLF89OCpvKnMuQixkPXMuc2EscD1zLnRhLWwrdyxnPXMucWEsaD1zLnJhLWYrXyxtPXMuSGEsdj1zLklhLWYrXyxGPTA9PShQPUwuTSksYj1QPj1zLlZhLTEsMj09cy5BYSYmT3IocyxMKSxMLnVjKWZvcihJPShTPXMpLkQuTSxlKFMuRC51YyksTD1TLnliO0w8Uy5IYjsrK0wpe0E9TCx4PUk7dmFyIEM9KGo9KFU9UykuRCkuTmI7Tj1VLlI7dmFyIGo9ai53YVtqLlkrQV0sTz1VLnNhLEI9VS50YSsxNipDKk4rMTYqQSxNPWouZGQsRT1qLnRjO2lmKDAhPUUpaWYoZSgzPD1FKSwxPT1VLkwpMDxBJiZ3bihPLEIsTixFKzQpLGouTGEmJkxuKE8sQixOLEUpLDA8eCYmeW4oTyxCLE4sRSs0KSxqLkxhJiZObihPLEIsTixFKTtlbHNle3ZhciBxPVUuQixEPVUucWEsUj1VLnJhKzgqQypxKzgqQSxUPVUuSGEsVT1VLklhKzgqQypxKzgqQTtDPWoubGQ7MDxBJiYoZm4oTyxCLE4sRSs0LE0sQykscG4oRCxSLFQsVSxxLEUrNCxNLEMpKSxqLkxhJiYobW4oTyxCLE4sRSxNLEMpLGJuKEQsUixULFUscSxFLE0sQykpLDA8eCYmKGhuKE8sQixOLEUrNCxNLEMpLGRuKEQsUixULFUscSxFKzQsTSxDKSksai5MYSYmKGduKE8sQixOLEUsTSxDKSx2bihELFIsVCxVLHEsRSxNLEMpKX19aWYocy5pYSYmYWxlcnQoInRvZG86RGl0aGVyUm93IiksbnVsbCE9Yy5wdXQpe2lmKEw9MTYqUCxQPTE2KihQKzEpLEY\/KGMueT1zLnNhLGMuTz1zLnRhK3csYy5mPXMucWEsYy5OPXMucmErXyxjLmVhPXMuSGEsYy5XPXMuSWErXyk6KEwtPXksYy55PWQsYy5PPXAsYy5mPWcsYy5OPWgsYy5lYT1tLGMuVz12KSxifHwoUC09eSksUD5jLm8mJihQPWMubyksYy5GPW51bGwsYy5KPW51bGwsbnVsbCE9cy5GYSYmMDxzLkZhLmxlbmd0aCYmTDxQJiYoYy5KPWhyKHMsYyxMLFAtTCksYy5GPXMubWIsbnVsbD09Yy5GJiYwPT1jLkYubGVuZ3RoKSl7dT1KdChzLDMsIkNvdWxkIG5vdCBkZWNvZGUgYWxwaGEgZGF0YS4iKTticmVhayB0fUw8Yy5qJiYoeT1jLmotTCxMPWMuaixlKCEoMSZ5KSksYy5PKz1zLlIqeSxjLk4rPXMuQiooeT4+MSksYy5XKz1zLkIqKHk+PjEpLG51bGwhPWMuRiYmKGMuSis9Yy53aWR0aCp5KSksTDxQJiYoYy5PKz1jLnYsYy5OKz1jLnY+PjEsYy5XKz1jLnY+PjEsbnVsbCE9Yy5GJiYoYy5KKz1jLnYpLGMua2E9TC1jLmosYy5VPWMudmEtYy52LGMuVD1QLUwsdT1jLnB1dChjKSl9bysxIT1zLkljfHxifHwobihzLnNhLHMudGEtbCxkLHArMTYqcy5SLGwpLG4ocy5xYSxzLnJhLWYsZyxoKzgqcy5CLGYpLG4ocy5IYSxzLklhLWYsbSx2Kzgqcy5CLGYpKX1pZighdSlyZXR1cm4gSnQodCw2LCJPdXRwdXQgYWJvcnRlZC4iKX1yZXR1cm4gMX0odCxyKSksbnVsbCE9ci5iYyYmci5iYyhyKSxzJj0xfXJldHVybiBzPyh0LmNiPTAscyk6MH1mdW5jdGlvbiB0ZSh0LGUscixuLGkpe2k9dFtlK3IrMzIqbl0rKGk+PjMpLHRbZStyKzMyKm5dPS0yNTYmaT8wPmk\/MDoyNTU6aX1mdW5jdGlvbiBlZSh0LGUscixuLGksYSl7dGUodCxlLDAscixuK2kpLHRlKHQsZSwxLHIsbithKSx0ZSh0LGUsMixyLG4tYSksdGUodCxlLDMscixuLWkpfWZ1bmN0aW9uIHJlKHQpe3JldHVybigyMDA5MSp0Pj4xNikrdH1mdW5jdGlvbiBuZSh0LGUscixuKXt2YXIgaSxvPTAscz1hKDE2KTtmb3IoaT0wOzQ+aTsrK2kpe3ZhciBjPXRbZSswXSt0W2UrOF0sdT10W2UrMF0tdFtlKzhdLGw9KDM1NDY4KnRbZSs0XT4+MTYpLXJlKHRbZSsxMl0pLGg9cmUodFtlKzRdKSsoMzU0NjgqdFtlKzEyXT4+MTYpO3NbbyswXT1jK2gsc1tvKzFdPXUrbCxzW28rMl09dS1sLHNbbyszXT1jLWgsbys9NCxlKyt9Zm9yKGk9bz0wOzQ+aTsrK2kpYz0odD1zW28rMF0rNCkrc1tvKzhdLHU9dC1zW28rOF0sbD0oMzU0Njgqc1tvKzRdPj4xNiktcmUoc1tvKzEyXSksdGUocixuLDAsMCxjKyhoPXJlKHNbbys0XSkrKDM1NDY4KnNbbysxMl0+PjE2KSkpLHRlKHIsbiwxLDAsdStsKSx0ZShyLG4sMiwwLHUtbCksdGUocixuLDMsMCxjLWgpLG8rKyxuKz0zMn1mdW5jdGlvbiBpZSh0LGUscixuKXt2YXIgaT10W2UrMF0rNCxhPTM1NDY4KnRbZSs0XT4+MTYsbz1yZSh0W2UrNF0pLHM9MzU0NjgqdFtlKzFdPj4xNjtlZShyLG4sMCxpK28sdD1yZSh0W2UrMV0pLHMpLGVlKHIsbiwxLGkrYSx0LHMpLGVlKHIsbiwyLGktYSx0LHMpLGVlKHIsbiwzLGktbyx0LHMpfWZ1bmN0aW9uIGFlKHQsZSxyLG4saSl7bmUodCxlLHIsbiksaSYmbmUodCxlKzE2LHIsbis0KX1mdW5jdGlvbiBvZSh0LGUscixuKXtvbih0LGUrMCxyLG4sMSksb24odCxlKzMyLHIsbisxMjgsMSl9ZnVuY3Rpb24gc2UodCxlLHIsbil7dmFyIGk7Zm9yKHQ9dFtlKzBdKzQsaT0wOzQ+aTsrK2kpZm9yKGU9MDs0PmU7KytlKXRlKHIsbixlLGksdCl9ZnVuY3Rpb24gY2UodCxlLHIsbil7dFtlKzBdJiZ1bih0LGUrMCxyLG4pLHRbZSsxNl0mJnVuKHQsZSsxNixyLG4rNCksdFtlKzMyXSYmdW4odCxlKzMyLHIsbisxMjgpLHRbZSs0OF0mJnVuKHQsZSs0OCxyLG4rMTI4KzQpfWZ1bmN0aW9uIHVlKHQsZSxyLG4pe3ZhciBpLG89YSgxNik7Zm9yKGk9MDs0Pmk7KytpKXt2YXIgcz10W2UrMCtpXSt0W2UrMTIraV0sYz10W2UrNCtpXSt0W2UrOCtpXSx1PXRbZSs0K2ldLXRbZSs4K2ldLGw9dFtlKzAraV0tdFtlKzEyK2ldO29bMCtpXT1zK2Msb1s4K2ldPXMtYyxvWzQraV09bCt1LG9bMTIraV09bC11fWZvcihpPTA7ND5pOysraSlzPSh0PW9bMCs0KmldKzMpK29bMys0KmldLGM9b1sxKzQqaV0rb1syKzQqaV0sdT1vWzErNCppXS1vWzIrNCppXSxsPXQtb1szKzQqaV0scltuKzBdPXMrYz4+MyxyW24rMTZdPWwrdT4+MyxyW24rMzJdPXMtYz4+MyxyW24rNDhdPWwtdT4+MyxuKz02NH1mdW5jdGlvbiBsZSh0LGUscil7dmFyIG4saT1lLTMyLGE9Qm4sbz0yNTUtdFtpLTFdO2ZvcihuPTA7bjxyOysrbil7dmFyIHMsYz1hLHU9byt0W2UtMV07Zm9yKHM9MDtzPHI7KytzKXRbZStzXT1jW3UrdFtpK3NdXTtlKz0zMn19ZnVuY3Rpb24gaGUodCxlKXtsZSh0LGUsNCl9ZnVuY3Rpb24gZmUodCxlKXtsZSh0LGUsOCl9ZnVuY3Rpb24gZGUodCxlKXtsZSh0LGUsMTYpfWZ1bmN0aW9uIHBlKHQsZSl7dmFyIHI7Zm9yKHI9MDsxNj5yOysrciluKHQsZSszMipyLHQsZS0zMiwxNil9ZnVuY3Rpb24gZ2UodCxlKXt2YXIgcjtmb3Iocj0xNjswPHI7LS1yKWkodCxlLHRbZS0xXSwxNiksZSs9MzJ9ZnVuY3Rpb24gbWUodCxlLHIpe3ZhciBuO2ZvcihuPTA7MTY+bjsrK24paShlLHIrMzIqbix0LDE2KX1mdW5jdGlvbiB2ZSh0LGUpe3ZhciByLG49MTY7Zm9yKHI9MDsxNj5yOysrciluKz10W2UtMSszMipyXSt0W2Urci0zMl07bWUobj4+NSx0LGUpfWZ1bmN0aW9uIGJlKHQsZSl7dmFyIHIsbj04O2ZvcihyPTA7MTY+cjsrK3Ipbis9dFtlLTErMzIqcl07bWUobj4+NCx0LGUpfWZ1bmN0aW9uIHllKHQsZSl7dmFyIHIsbj04O2ZvcihyPTA7MTY+cjsrK3Ipbis9dFtlK3ItMzJdO21lKG4+PjQsdCxlKX1mdW5jdGlvbiB3ZSh0LGUpe21lKDEyOCx0LGUpfWZ1bmN0aW9uIE5lKHQsZSxyKXtyZXR1cm4gdCsyKmUrcisyPj4yfWZ1bmN0aW9uIExlKHQsZSl7dmFyIHIsaT1lLTMyO2k9bmV3IFVpbnQ4QXJyYXkoW05lKHRbaS0xXSx0W2krMF0sdFtpKzFdKSxOZSh0W2krMF0sdFtpKzFdLHRbaSsyXSksTmUodFtpKzFdLHRbaSsyXSx0W2krM10pLE5lKHRbaSsyXSx0W2krM10sdFtpKzRdKV0pO2ZvcihyPTA7ND5yOysrciluKHQsZSszMipyLGksMCxpLmxlbmd0aCl9ZnVuY3Rpb24gQWUodCxlKXt2YXIgcj10W2UtMV0sbj10W2UtMSszMl0saT10W2UtMSs2NF0sYT10W2UtMSs5Nl07Rih0LGUrMCwxNjg0MzAwOSpOZSh0W2UtMS0zMl0scixuKSksRih0LGUrMzIsMTY4NDMwMDkqTmUocixuLGkpKSxGKHQsZSs2NCwxNjg0MzAwOSpOZShuLGksYSkpLEYodCxlKzk2LDE2ODQzMDA5Kk5lKGksYSxhKSl9ZnVuY3Rpb24geGUodCxlKXt2YXIgcixuPTQ7Zm9yKHI9MDs0PnI7KytyKW4rPXRbZStyLTMyXSt0W2UtMSszMipyXTtmb3Iobj4+PTMscj0wOzQ+cjsrK3IpaSh0LGUrMzIqcixuLDQpfWZ1bmN0aW9uIFNlKHQsZSl7dmFyIHI9dFtlLTErMF0sbj10W2UtMSszMl0saT10W2UtMSs2NF0sYT10W2UtMS0zMl0sbz10W2UrMC0zMl0scz10W2UrMS0zMl0sYz10W2UrMi0zMl0sdT10W2UrMy0zMl07dFtlKzArOTZdPU5lKG4saSx0W2UtMSs5Nl0pLHRbZSsxKzk2XT10W2UrMCs2NF09TmUocixuLGkpLHRbZSsyKzk2XT10W2UrMSs2NF09dFtlKzArMzJdPU5lKGEscixuKSx0W2UrMys5Nl09dFtlKzIrNjRdPXRbZSsxKzMyXT10W2UrMCswXT1OZShvLGEsciksdFtlKzMrNjRdPXRbZSsyKzMyXT10W2UrMSswXT1OZShzLG8sYSksdFtlKzMrMzJdPXRbZSsyKzBdPU5lKGMscyxvKSx0W2UrMyswXT1OZSh1LGMscyl9ZnVuY3Rpb24gX2UodCxlKXt2YXIgcj10W2UrMS0zMl0sbj10W2UrMi0zMl0saT10W2UrMy0zMl0sYT10W2UrNC0zMl0sbz10W2UrNS0zMl0scz10W2UrNi0zMl0sYz10W2UrNy0zMl07dFtlKzArMF09TmUodFtlKzAtMzJdLHIsbiksdFtlKzErMF09dFtlKzArMzJdPU5lKHIsbixpKSx0W2UrMiswXT10W2UrMSszMl09dFtlKzArNjRdPU5lKG4saSxhKSx0W2UrMyswXT10W2UrMiszMl09dFtlKzErNjRdPXRbZSswKzk2XT1OZShpLGEsbyksdFtlKzMrMzJdPXRbZSsyKzY0XT10W2UrMSs5Nl09TmUoYSxvLHMpLHRbZSszKzY0XT10W2UrMis5Nl09TmUobyxzLGMpLHRbZSszKzk2XT1OZShzLGMsYyl9ZnVuY3Rpb24gUGUodCxlKXt2YXIgcj10W2UtMSswXSxuPXRbZS0xKzMyXSxpPXRbZS0xKzY0XSxhPXRbZS0xLTMyXSxvPXRbZSswLTMyXSxzPXRbZSsxLTMyXSxjPXRbZSsyLTMyXSx1PXRbZSszLTMyXTt0W2UrMCswXT10W2UrMSs2NF09YStvKzE+PjEsdFtlKzErMF09dFtlKzIrNjRdPW8rcysxPj4xLHRbZSsyKzBdPXRbZSszKzY0XT1zK2MrMT4+MSx0W2UrMyswXT1jK3UrMT4+MSx0W2UrMCs5Nl09TmUoaSxuLHIpLHRbZSswKzY0XT1OZShuLHIsYSksdFtlKzArMzJdPXRbZSsxKzk2XT1OZShyLGEsbyksdFtlKzErMzJdPXRbZSsyKzk2XT1OZShhLG8scyksdFtlKzIrMzJdPXRbZSszKzk2XT1OZShvLHMsYyksdFtlKzMrMzJdPU5lKHMsYyx1KX1mdW5jdGlvbiBrZSh0LGUpe3ZhciByPXRbZSswLTMyXSxuPXRbZSsxLTMyXSxpPXRbZSsyLTMyXSxhPXRbZSszLTMyXSxvPXRbZSs0LTMyXSxzPXRbZSs1LTMyXSxjPXRbZSs2LTMyXSx1PXRbZSs3LTMyXTt0W2UrMCswXT1yK24rMT4+MSx0W2UrMSswXT10W2UrMCs2NF09bitpKzE+PjEsdFtlKzIrMF09dFtlKzErNjRdPWkrYSsxPj4xLHRbZSszKzBdPXRbZSsyKzY0XT1hK28rMT4+MSx0W2UrMCszMl09TmUocixuLGkpLHRbZSsxKzMyXT10W2UrMCs5Nl09TmUobixpLGEpLHRbZSsyKzMyXT10W2UrMSs5Nl09TmUoaSxhLG8pLHRbZSszKzMyXT10W2UrMis5Nl09TmUoYSxvLHMpLHRbZSszKzY0XT1OZShvLHMsYyksdFtlKzMrOTZdPU5lKHMsYyx1KX1mdW5jdGlvbiBGZSh0LGUpe3ZhciByPXRbZS0xKzBdLG49dFtlLTErMzJdLGk9dFtlLTErNjRdLGE9dFtlLTErOTZdO3RbZSswKzBdPXIrbisxPj4xLHRbZSsyKzBdPXRbZSswKzMyXT1uK2krMT4+MSx0W2UrMiszMl09dFtlKzArNjRdPWkrYSsxPj4xLHRbZSsxKzBdPU5lKHIsbixpKSx0W2UrMyswXT10W2UrMSszMl09TmUobixpLGEpLHRbZSszKzMyXT10W2UrMSs2NF09TmUoaSxhLGEpLHRbZSszKzY0XT10W2UrMis2NF09dFtlKzArOTZdPXRbZSsxKzk2XT10W2UrMis5Nl09dFtlKzMrOTZdPWF9ZnVuY3Rpb24gSWUodCxlKXt2YXIgcj10W2UtMSswXSxuPXRbZS0xKzMyXSxpPXRbZS0xKzY0XSxhPXRbZS0xKzk2XSxvPXRbZS0xLTMyXSxzPXRbZSswLTMyXSxjPXRbZSsxLTMyXSx1PXRbZSsyLTMyXTt0W2UrMCswXT10W2UrMiszMl09citvKzE+PjEsdFtlKzArMzJdPXRbZSsyKzY0XT1uK3IrMT4+MSx0W2UrMCs2NF09dFtlKzIrOTZdPWkrbisxPj4xLHRbZSswKzk2XT1hK2krMT4+MSx0W2UrMyswXT1OZShzLGMsdSksdFtlKzIrMF09TmUobyxzLGMpLHRbZSsxKzBdPXRbZSszKzMyXT1OZShyLG8scyksdFtlKzErMzJdPXRbZSszKzY0XT1OZShuLHIsbyksdFtlKzErNjRdPXRbZSszKzk2XT1OZShpLG4sciksdFtlKzErOTZdPU5lKGEsaSxuKX1mdW5jdGlvbiBDZSh0LGUpe3ZhciByO2ZvcihyPTA7OD5yOysrciluKHQsZSszMipyLHQsZS0zMiw4KX1mdW5jdGlvbiBqZSh0LGUpe3ZhciByO2ZvcihyPTA7OD5yOysrcilpKHQsZSx0W2UtMV0sOCksZSs9MzJ9ZnVuY3Rpb24gT2UodCxlLHIpe3ZhciBuO2ZvcihuPTA7OD5uOysrbilpKGUsciszMipuLHQsOCl9ZnVuY3Rpb24gQmUodCxlKXt2YXIgcixuPTg7Zm9yKHI9MDs4PnI7KytyKW4rPXRbZStyLTMyXSt0W2UtMSszMipyXTtPZShuPj40LHQsZSl9ZnVuY3Rpb24gTWUodCxlKXt2YXIgcixuPTQ7Zm9yKHI9MDs4PnI7KytyKW4rPXRbZStyLTMyXTtPZShuPj4zLHQsZSl9ZnVuY3Rpb24gRWUodCxlKXt2YXIgcixuPTQ7Zm9yKHI9MDs4PnI7KytyKW4rPXRbZS0xKzMyKnJdO09lKG4+PjMsdCxlKX1mdW5jdGlvbiBxZSh0LGUpe09lKDEyOCx0LGUpfWZ1bmN0aW9uIERlKHQsZSxyKXt2YXIgbj10W2Utcl0saT10W2UrMF0sYT0zKihpLW4pK2puWzEwMjArdFtlLTIqcl0tdFtlK3JdXSxvPU9uWzExMisoYSs0Pj4zKV07dFtlLXJdPUJuWzI1NStuK09uWzExMisoYSszPj4zKV1dLHRbZSswXT1CblsyNTUraS1vXX1mdW5jdGlvbiBSZSh0LGUscixuKXt2YXIgaT10W2UrMF0sYT10W2Urcl07cmV0dXJuIE1uWzI1NSt0W2UtMipyXS10W2Utcl1dPm58fE1uWzI1NSthLWldPm59ZnVuY3Rpb24gVGUodCxlLHIsbil7cmV0dXJuIDQqTW5bMjU1K3RbZS1yXS10W2UrMF1dK01uWzI1NSt0W2UtMipyXS10W2Urcl1dPD1ufWZ1bmN0aW9uIFVlKHQsZSxyLG4saSl7dmFyIGE9dFtlLTMqcl0sbz10W2UtMipyXSxzPXRbZS1yXSxjPXRbZSswXSx1PXRbZStyXSxsPXRbZSsyKnJdLGg9dFtlKzMqcl07cmV0dXJuIDQqTW5bMjU1K3MtY10rTW5bMjU1K28tdV0+bj8wOk1uWzI1NSt0W2UtNCpyXS1hXTw9aSYmTW5bMjU1K2Etb108PWkmJk1uWzI1NStvLXNdPD1pJiZNblsyNTUraC1sXTw9aSYmTW5bMjU1K2wtdV08PWkmJk1uWzI1NSt1LWNdPD1pfWZ1bmN0aW9uIHplKHQsZSxyLG4pe3ZhciBpPTIqbisxO2ZvcihuPTA7MTY+bjsrK24pVGUodCxlK24scixpKSYmRGUodCxlK24scil9ZnVuY3Rpb24gSGUodCxlLHIsbil7dmFyIGk9MipuKzE7Zm9yKG49MDsxNj5uOysrbilUZSh0LGUrbipyLDEsaSkmJkRlKHQsZStuKnIsMSl9ZnVuY3Rpb24gV2UodCxlLHIsbil7dmFyIGk7Zm9yKGk9MzswPGk7LS1pKXplKHQsZSs9NCpyLHIsbil9ZnVuY3Rpb24gVmUodCxlLHIsbil7dmFyIGk7Zm9yKGk9MzswPGk7LS1pKUhlKHQsZSs9NCxyLG4pfWZ1bmN0aW9uIEdlKHQsZSxyLG4saSxhLG8scyl7Zm9yKGE9MiphKzE7MDxpLS07KXtpZihVZSh0LGUscixhLG8pKWlmKFJlKHQsZSxyLHMpKURlKHQsZSxyKTtlbHNle3ZhciBjPXQsdT1lLGw9cixoPWNbdS0yKmxdLGY9Y1t1LWxdLGQ9Y1t1KzBdLHA9Y1t1K2xdLGc9Y1t1KzIqbF0sbT0yNyooYj1qblsxMDIwKzMqKGQtZikram5bMTAyMCtoLXBdXSkrNjM+Pjcsdj0xOCpiKzYzPj43LGI9OSpiKzYzPj43O2NbdS0zKmxdPUJuWzI1NStjW3UtMypsXStiXSxjW3UtMipsXT1CblsyNTUraCt2XSxjW3UtbF09Qm5bMjU1K2YrbV0sY1t1KzBdPUJuWzI1NStkLW1dLGNbdStsXT1CblsyNTUrcC12XSxjW3UrMipsXT1CblsyNTUrZy1iXX1lKz1ufX1mdW5jdGlvbiBZZSh0LGUscixuLGksYSxvLHMpe2ZvcihhPTIqYSsxOzA8aS0tOyl7aWYoVWUodCxlLHIsYSxvKSlpZihSZSh0LGUscixzKSlEZSh0LGUscik7ZWxzZXt2YXIgYz10LHU9ZSxsPXIsaD1jW3UtbF0sZj1jW3UrMF0sZD1jW3UrbF0scD1PblsxMTIrKChnPTMqKGYtaCkpKzQ+PjMpXSxnPU9uWzExMisoZyszPj4zKV0sbT1wKzE+PjE7Y1t1LTIqbF09Qm5bMjU1K2NbdS0yKmxdK21dLGNbdS1sXT1CblsyNTUraCtnXSxjW3UrMF09Qm5bMjU1K2YtcF0sY1t1K2xdPUJuWzI1NStkLW1dfWUrPW59fWZ1bmN0aW9uIEplKHQsZSxyLG4saSxhKXtHZSh0LGUsciwxLDE2LG4saSxhKX1mdW5jdGlvbiBYZSh0LGUscixuLGksYSl7R2UodCxlLDEsciwxNixuLGksYSl9ZnVuY3Rpb24gS2UodCxlLHIsbixpLGEpe3ZhciBvO2ZvcihvPTM7MDxvOy0tbylZZSh0LGUrPTQqcixyLDEsMTYsbixpLGEpfWZ1bmN0aW9uIFplKHQsZSxyLG4saSxhKXt2YXIgbztmb3Iobz0zOzA8bzstLW8pWWUodCxlKz00LDEsciwxNixuLGksYSl9ZnVuY3Rpb24gJGUodCxlLHIsbixpLGEsbyxzKXtHZSh0LGUsaSwxLDgsYSxvLHMpLEdlKHIsbixpLDEsOCxhLG8scyl9ZnVuY3Rpb24gUWUodCxlLHIsbixpLGEsbyxzKXtHZSh0LGUsMSxpLDgsYSxvLHMpLEdlKHIsbiwxLGksOCxhLG8scyl9ZnVuY3Rpb24gdHIodCxlLHIsbixpLGEsbyxzKXtZZSh0LGUrNCppLGksMSw4LGEsbyxzKSxZZShyLG4rNCppLGksMSw4LGEsbyxzKX1mdW5jdGlvbiBlcih0LGUscixuLGksYSxvLHMpe1llKHQsZSs0LDEsaSw4LGEsbyxzKSxZZShyLG4rNCwxLGksOCxhLG8scyl9ZnVuY3Rpb24gcnIoKXt0aGlzLmJhPW5ldyBvdCx0aGlzLmVjPVtdLHRoaXMuY2M9W10sdGhpcy5NYz1bXSx0aGlzLkRjPXRoaXMuTmM9dGhpcy5kYz10aGlzLmZjPTAsdGhpcy5PYT1uZXcgY3QsdGhpcy5tZW1vcnk9MCx0aGlzLkliPSJPdXRwdXRGdW5jIix0aGlzLkpiPSJPdXRwdXRBbHBoYUZ1bmMiLHRoaXMuTmQ9Ik91dHB1dFJvd0Z1bmMifWZ1bmN0aW9uIG5yKCl7dGhpcy5kYXRhPVtdLHRoaXMub2Zmc2V0PXRoaXMua2Q9dGhpcy5oYT10aGlzLnc9MCx0aGlzLm5hPVtdLHRoaXMueGE9dGhpcy5nYj10aGlzLkphPXRoaXMuU2E9dGhpcy5QPTB9ZnVuY3Rpb24gaXIoKXt0aGlzLm5jPXRoaXMuRWE9dGhpcy5iPXRoaXMuaGM9MCx0aGlzLks9W10sdGhpcy53PTB9ZnVuY3Rpb24gYXIoKXt0aGlzLnVhPTAsdGhpcy5XYT1uZXcgTSx0aGlzLnZiPW5ldyBNLHRoaXMubWQ9dGhpcy54Yz10aGlzLndjPTAsdGhpcy52Yz1bXSx0aGlzLldiPTAsdGhpcy5ZYT1uZXcgZCx0aGlzLnljPW5ldyBofWZ1bmN0aW9uIG9yKCl7dGhpcy54Yj10aGlzLmE9MCx0aGlzLmw9bmV3IEd0LHRoaXMuY2E9bmV3IG90LHRoaXMuVj1bXSx0aGlzLkJhPTAsdGhpcy5UYT1bXSx0aGlzLlVhPTAsdGhpcy5tPW5ldyBOLHRoaXMuUGI9MCx0aGlzLndkPW5ldyBOLHRoaXMuTWE9dGhpcy4kPXRoaXMuQz10aGlzLmk9dGhpcy5jPXRoaXMueGQ9MCx0aGlzLnM9bmV3IGFyLHRoaXMuYWI9MCx0aGlzLmdjPW8oNCxpciksdGhpcy5PYz0wfWZ1bmN0aW9uIHNyKCl7dGhpcy5MYz10aGlzLlo9dGhpcy4kYT10aGlzLmk9dGhpcy5jPTAsdGhpcy5sPW5ldyBHdCx0aGlzLmljPTAsdGhpcy5jYT1bXSx0aGlzLnRiPTAsdGhpcy5xZD1udWxsLHRoaXMucmQ9MH1mdW5jdGlvbiBjcih0LGUscixuLGksYSxvKXtmb3IodD1udWxsPT10PzA6dFtlKzBdLGU9MDtlPG87KytlKWlbYStlXT10K3JbbitlXSYyNTUsdD1pW2ErZV19ZnVuY3Rpb24gdXIodCxlLHIsbixpLGEsbyl7dmFyIHM7aWYobnVsbD09dCljcihudWxsLG51bGwscixuLGksYSxvKTtlbHNlIGZvcihzPTA7czxvOysrcylpW2Erc109dFtlK3NdK3JbbitzXSYyNTV9ZnVuY3Rpb24gbHIodCxlLHIsbixpLGEsbyl7aWYobnVsbD09dCljcihudWxsLG51bGwscixuLGksYSxvKTtlbHNle3ZhciBzLGM9dFtlKzBdLHU9YyxsPWM7Zm9yKHM9MDtzPG87KytzKXU9bCsoYz10W2Urc10pLXUsbD1yW24rc10rKC0yNTYmdT8wPnU\/MDoyNTU6dSkmMjU1LHU9YyxpW2Erc109bH19ZnVuY3Rpb24gaHIodCxyLGksbyl7dmFyIHM9ci53aWR0aCxjPXIubztpZihlKG51bGwhPXQmJm51bGwhPXIpLDA+aXx8MD49b3x8aStvPmMpcmV0dXJuIG51bGw7aWYoIXQuQ2Mpe2lmKG51bGw9PXQuZ2Epe3ZhciB1O2lmKHQuZ2E9bmV3IHNyLCh1PW51bGw9PXQuZ2EpfHwodT1yLndpZHRoKnIubyxlKDA9PXQuR2IubGVuZ3RoKSx0LkdiPWEodSksdC5VYz0wLG51bGw9PXQuR2I\/dT0wOih0Lm1iPXQuR2IsdC5uYj10LlVjLHQucmM9bnVsbCx1PTEpLHU9IXUpLCF1KXt1PXQuZ2E7dmFyIGw9dC5GYSxoPXQuUCxmPXQucWMsZD10Lm1iLHA9dC5uYixnPWgrMSxtPWYtMSxiPXUubDtpZihlKG51bGwhPWwmJm51bGwhPWQmJm51bGwhPXIpLG1pWzBdPW51bGwsbWlbMV09Y3IsbWlbMl09dXIsbWlbM109bHIsdS5jYT1kLHUudGI9cCx1LmM9ci53aWR0aCx1Lmk9ci5oZWlnaHQsZSgwPHUuYyYmMDx1LmkpLDE+PWYpcj0wO2Vsc2UgaWYodS4kYT1sW2grMF0+PjAmMyx1Llo9bFtoKzBdPj4yJjMsdS5MYz1sW2grMF0+PjQmMyxoPWxbaCswXT4+NiYzLDA+dS4kYXx8MTx1LiRhfHw0PD11Llp8fDE8dS5MY3x8aClyPTA7ZWxzZSBpZihiLnB1dD1kdCxiLmFjPWZ0LGIuYmM9cHQsYi5tYT11LGIud2lkdGg9ci53aWR0aCxiLmhlaWdodD1yLmhlaWdodCxiLkRhPXIuRGEsYi52PXIudixiLnZhPXIudmEsYi5qPXIuaixiLm89ci5vLHUuJGEpdDp7ZSgxPT11LiRhKSxyPWt0KCk7ZTpmb3IoOzspe2lmKG51bGw9PXIpe3I9MDticmVhayB0fWlmKGUobnVsbCE9dSksdS5tYz1yLHIuYz11LmMsci5pPXUuaSxyLmw9dS5sLHIubC5tYT11LHIubC53aWR0aD11LmMsci5sLmhlaWdodD11Lmksci5hPTAsdihyLm0sbCxnLG0pLCFGdCh1LmMsdS5pLDEscixudWxsKSlicmVhayBlO2lmKDE9PXIuYWImJjM9PXIuZ2NbMF0uaGMmJkF0KHIucyk\/KHUuaWM9MSxsPXIuYypyLmksci5UYT1udWxsLHIuVWE9MCxyLlY9YShsKSxyLkJhPTAsbnVsbD09ci5WPyhyLmE9MSxyPTApOnI9MSk6KHUuaWM9MCxyPUl0KHIsdS5jKSksIXIpYnJlYWsgZTtyPTE7YnJlYWsgdH11Lm1jPW51bGwscj0wfWVsc2Ugcj1tPj11LmMqdS5pO3U9IXJ9aWYodSlyZXR1cm4gbnVsbDsxIT10LmdhLkxjP3QuR2E9MDpvPWMtaX1lKG51bGwhPXQuZ2EpLGUoaStvPD1jKTt0OntpZihyPShsPXQuZ2EpLmMsYz1sLmwubywwPT1sLiRhKXtpZihnPXQucmMsbT10LlZjLGI9dC5GYSxoPXQuUCsxK2kqcixmPXQubWIsZD10Lm5iK2kqcixlKGg8PXQuUCt0LnFjKSwwIT1sLlopZm9yKGUobnVsbCE9bWlbbC5aXSksdT0wO3U8bzsrK3UpbWlbbC5aXShnLG0sYixoLGYsZCxyKSxnPWYsbT1kLGQrPXIsaCs9cjtlbHNlIGZvcih1PTA7dTxvOysrdSluKGYsZCxiLGgsciksZz1mLG09ZCxkKz1yLGgrPXI7dC5yYz1nLHQuVmM9bX1lbHNle2lmKGUobnVsbCE9bC5tYykscj1pK28sZShudWxsIT0odT1sLm1jKSksZShyPD11LmkpLHUuQz49cilyPTE7ZWxzZSBpZihsLmljfHxtcigpLGwuaWMpe2w9dS5WLGc9dS5CYSxtPXUuYzt2YXIgeT11Lmksdz0oYj0xLGg9dS4kL20sZj11LiQlbSxkPXUubSxwPXUucyx1LiQpLE49bSp5LEw9bSpyLHg9cC53YyxfPXc8TD93dChwLGYsaCk6bnVsbDtlKHc8PU4pLGUocjw9eSksZShBdChwKSk7ZTpmb3IoOzspe2Zvcig7IWQuaCYmdzxMOyl7aWYoZiZ4fHwoXz13dChwLGYsaCkpLGUobnVsbCE9XyksUyhkKSwyNTY+KHk9YnQoXy5HWzBdLF8uSFswXSxkKSkpbFtnK3ddPXksKyt3LCsrZj49bSYmKGY9MCwrK2g8PXImJiEoaCUxNikmJlN0KHUsaCkpO2Vsc2V7aWYoISgyODA+eSkpe2I9MDticmVhayBlfXk9bXQoeS0yNTYsZCk7dmFyIFAsaz1idChfLkdbNF0sXy5IWzRdLGQpO2lmKFMoZCksISh3Pj0oaz12dChtLGs9bXQoayxkKSkpJiZOLXc+PXkpKXtiPTA7YnJlYWsgZX1mb3IoUD0wO1A8eTsrK1ApbFtnK3crUF09bFtnK3crUC1rXTtmb3Iodys9eSxmKz15O2Y+PW07KWYtPW0sKytoPD1yJiYhKGglMTYpJiZTdCh1LGgpO3c8TCYmZiZ4JiYoXz13dChwLGYsaCkpfWUoZC5oPT1BKGQpKX1TdCh1LGg+cj9yOmgpO2JyZWFrIGV9IWJ8fGQuaCYmdzxOPyhiPTAsdS5hPWQuaD81OjMpOnUuJD13LHI9Yn1lbHNlIHI9X3QodSx1LlYsdS5CYSx1LmMsdS5pLHIsQ3QpO2lmKCFyKXtvPTA7YnJlYWsgdH19aStvPj1jJiYodC5DYz0xKSxvPTF9aWYoIW8pcmV0dXJuIG51bGw7aWYodC5DYyYmKG51bGwhPShvPXQuZ2EpJiYoby5tYz1udWxsKSx0LmdhPW51bGwsMDx0LkdhKSlyZXR1cm4gYWxlcnQoInRvZG86V2ViUERlcXVhbnRpemVMZXZlbHMiKSxudWxsfXJldHVybiB0Lm5iK2kqc31mdW5jdGlvbiBmcih0LGUscixuLGksYSl7Zm9yKDswPGktLTspe3ZhciBvLHM9dCxjPWUrKHI\/MTowKSx1PXQsbD1lKyhyPzA6Myk7Zm9yKG89MDtvPG47KytvKXt2YXIgaD11W2wrNCpvXTsyNTUhPWgmJihoKj0zMjg5NyxzW2MrNCpvKzBdPXNbYys0Km8rMF0qaD4+MjMsc1tjKzQqbysxXT1zW2MrNCpvKzFdKmg+PjIzLHNbYys0Km8rMl09c1tjKzQqbysyXSpoPj4yMyl9ZSs9YX19ZnVuY3Rpb24gZHIodCxlLHIsbixpKXtmb3IoOzA8bi0tOyl7dmFyIGE7Zm9yKGE9MDthPHI7KythKXt2YXIgbz10W2UrMiphKzBdLHM9MTUmKHU9dFtlKzIqYSsxXSksYz00MzY5KnMsdT0oMjQwJnV8dT4+NCkqYz4+MTY7dFtlKzIqYSswXT0oMjQwJm98bz4+NCkqYz4+MTYmMjQwfCgxNSZvfG88PDQpKmM+PjE2Pj40JjE1LHRbZSsyKmErMV09MjQwJnV8c31lKz1pfX1mdW5jdGlvbiBwcih0LGUscixuLGksYSxvLHMpe3ZhciBjLHUsbD0yNTU7Zm9yKHU9MDt1PGk7Kyt1KXtmb3IoYz0wO2M8bjsrK2Mpe3ZhciBoPXRbZStjXTthW28rNCpjXT1oLGwmPWh9ZSs9cixvKz1zfXJldHVybiAyNTUhPWx9ZnVuY3Rpb24gZ3IodCxlLHIsbixpKXt2YXIgYTtmb3IoYT0wO2E8aTsrK2EpcltuK2FdPXRbZSthXT4+OH1mdW5jdGlvbiBtcigpe0FuPWZyLHhuPWRyLFNuPXByLF9uPWdyfWZ1bmN0aW9uIHZyKHIsbixpKXt0W3JdPWZ1bmN0aW9uKHQscixhLG8scyxjLHUsbCxoLGYsZCxwLGcsbSx2LGIseSl7dmFyIHcsTj15LTE+PjEsTD1zW2MrMF18dVtsKzBdPDwxNixBPWhbZiswXXxkW3ArMF08PDE2O2UobnVsbCE9dCk7dmFyIHg9MypMK0ErMTMxMDc0Pj4yO2ZvcihuKHRbciswXSwyNTUmeCx4Pj4xNixnLG0pLG51bGwhPWEmJih4PTMqQStMKzEzMTA3ND4+MixuKGFbbyswXSwyNTUmeCx4Pj4xNix2LGIpKSx3PTE7dzw9TjsrK3cpe3ZhciBTPXNbYyt3XXx1W2wrd108PDE2LF89aFtmK3ddfGRbcCt3XTw8MTYsUD1MK1MrQStfKzUyNDI5NixrPVArMiooUytBKT4+Mzt4PWsrTD4+MSxMPShQPVArMiooTCtfKT4+MykrUz4+MSxuKHRbcisyKnctMV0sMjU1JngseD4+MTYsZyxtKygyKnctMSkqaSksbih0W3IrMip3LTBdLDI1NSZMLEw+PjE2LGcsbSsoMip3LTApKmkpLG51bGwhPWEmJih4PVArQT4+MSxMPWsrXz4+MSxuKGFbbysyKnctMV0sMjU1JngseD4+MTYsdixiKygyKnctMSkqaSksbihhW28rMip3KzBdLDI1NSZMLEw+PjE2LHYsYisoMip3KzApKmkpKSxMPVMsQT1ffTEmeXx8KHg9MypMK0ErMTMxMDc0Pj4yLG4odFtyK3ktMV0sMjU1JngseD4+MTYsZyxtKyh5LTEpKmkpLG51bGwhPWEmJih4PTMqQStMKzEzMTA3ND4+MixuKGFbbyt5LTFdLDI1NSZ4LHg+PjE2LHYsYisoeS0xKSppKSkpfX1mdW5jdGlvbiBicigpe3ZpW0VuXT1iaSx2aVtxbl09d2ksdmlbRG5dPXlpLHZpW1JuXT1OaSx2aVtUbl09TGksdmlbVW5dPUFpLHZpW3puXT14aSx2aVtIbl09d2ksdmlbV25dPU5pLHZpW1ZuXT1MaSx2aVtHbl09QWl9ZnVuY3Rpb24geXIodCl7cmV0dXJuIHQmfklpPzA+dD8wOjI1NTp0Pj5GaX1mdW5jdGlvbiB3cih0LGUpe3JldHVybiB5cigoMTkwNzcqdD4+OCkrKDI2MTQ5KmU+PjgpLTE0MjM0KX1mdW5jdGlvbiBOcih0LGUscil7cmV0dXJuIHlyKCgxOTA3Nyp0Pj44KS0oNjQxOSplPj44KS0oMTMzMjAqcj4+OCkrODcwOCl9ZnVuY3Rpb24gTHIodCxlKXtyZXR1cm4geXIoKDE5MDc3KnQ+PjgpKygzMzA1MCplPj44KS0xNzY4NSl9ZnVuY3Rpb24gQXIodCxlLHIsbixpKXtuW2krMF09d3IodCxyKSxuW2krMV09TnIodCxlLHIpLG5baSsyXT1Mcih0LGUpfWZ1bmN0aW9uIHhyKHQsZSxyLG4saSl7bltpKzBdPUxyKHQsZSksbltpKzFdPU5yKHQsZSxyKSxuW2krMl09d3IodCxyKX1mdW5jdGlvbiBTcih0LGUscixuLGkpe3ZhciBhPU5yKHQsZSxyKTtlPWE8PDMmMjI0fExyKHQsZSk+PjMsbltpKzBdPTI0OCZ3cih0LHIpfGE+PjUsbltpKzFdPWV9ZnVuY3Rpb24gX3IodCxlLHIsbixpKXt2YXIgYT0yNDAmTHIodCxlKXwxNTtuW2krMF09MjQwJndyKHQscil8TnIodCxlLHIpPj40LG5baSsxXT1hfWZ1bmN0aW9uIFByKHQsZSxyLG4saSl7bltpKzBdPTI1NSxBcih0LGUscixuLGkrMSl9ZnVuY3Rpb24ga3IodCxlLHIsbixpKXt4cih0LGUscixuLGkpLG5baSszXT0yNTV9ZnVuY3Rpb24gRnIodCxlLHIsbixpKXtBcih0LGUscixuLGkpLG5baSszXT0yNTV9ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gMD50PzA6dD5lP2U6dH1mdW5jdGlvbiBJcihlLHIsbil7dFtlXT1mdW5jdGlvbih0LGUsaSxhLG8scyxjLHUsbCl7Zm9yKHZhciBoPXUrKC0yJmwpKm47dSE9aDspcih0W2UrMF0saVthKzBdLG9bcyswXSxjLHUpLHIodFtlKzFdLGlbYSswXSxvW3MrMF0sYyx1K24pLGUrPTIsKythLCsrcyx1Kz0yKm47MSZsJiZyKHRbZSswXSxpW2ErMF0sb1tzKzBdLGMsdSl9fWZ1bmN0aW9uIENyKHQsZSxyKXtyZXR1cm4gMD09cj8wPT10PzA9PWU\/Njo1OjA9PWU\/NDowOnJ9ZnVuY3Rpb24ganIodCxlLHIsbixpKXtzd2l0Y2godD4+PjMwKXtjYXNlIDM6b24oZSxyLG4saSwwKTticmVhaztjYXNlIDI6c24oZSxyLG4saSk7YnJlYWs7Y2FzZSAxOnVuKGUscixuLGkpfX1mdW5jdGlvbiBPcih0LGUpe3ZhciByLGEsbz1lLk0scz1lLk5iLGM9dC5vYyx1PXQucGMrNDAsbD10Lm9jLGg9dC5wYys1ODQsZj10Lm9jLGQ9dC5wYys2MDA7Zm9yKHI9MDsxNj5yOysrciljW3UrMzIqci0xXT0xMjk7Zm9yKHI9MDs4PnI7KytyKWxbaCszMipyLTFdPTEyOSxmW2QrMzIqci0xXT0xMjk7Zm9yKDA8bz9jW3UtMS0zMl09bFtoLTEtMzJdPWZbZC0xLTMyXT0xMjk6KGkoYyx1LTMyLTEsMTI3LDIxKSxpKGwsaC0zMi0xLDEyNyw5KSxpKGYsZC0zMi0xLDEyNyw5KSksYT0wO2E8dC56YTsrK2Epe3ZhciBwPWUueWFbZS5hYSthXTtpZigwPGEpe2ZvcihyPS0xOzE2PnI7KytyKW4oYyx1KzMyKnItNCxjLHUrMzIqcisxMiw0KTtmb3Iocj0tMTs4PnI7KytyKW4obCxoKzMyKnItNCxsLGgrMzIqcis0LDQpLG4oZixkKzMyKnItNCxmLGQrMzIqcis0LDQpfXZhciBnPXQuR2QsbT10LkhkK2Esdj1wLmFkLGI9cC5IYztpZigwPG8mJihuKGMsdS0zMixnW21dLnksMCwxNiksbihsLGgtMzIsZ1ttXS5mLDAsOCksbihmLGQtMzIsZ1ttXS5lYSwwLDgpKSxwLlphKXt2YXIgeT1jLHc9dS0zMisxNjtmb3IoMDxvJiYoYT49dC56YS0xP2koeSx3LGdbbV0ueVsxNV0sNCk6bih5LHcsZ1ttKzFdLnksMCw0KSkscj0wOzQ+cjtyKyspeVt3KzEyOCtyXT15W3crMjU2K3JdPXlbdyszODQrcl09eVt3KzArcl07Zm9yKHI9MDsxNj5yOysrcixiPDw9Mil5PWMsdz11K0RpW3JdLGZpW3AuT2Jbcl1dKHksdyksanIoYix2LDE2KityLHksdyl9ZWxzZSBpZih5PUNyKGEsbyxwLk9iWzBdKSxoaVt5XShjLHUpLDAhPWIpZm9yKHI9MDsxNj5yOysrcixiPDw9MilqcihiLHYsMTYqK3IsYyx1K0RpW3JdKTtmb3Iocj1wLkdjLHk9Q3IoYSxvLHAuRGQpLGRpW3ldKGwsaCksZGlbeV0oZixkKSxiPXYseT1sLHc9aCwyNTUmKHA9cj4+MCkmJigxNzAmcD9jbihiLDI1Nix5LHcpOmxuKGIsMjU2LHksdykpLHA9ZixiPWQsMjU1JihyPj49OCkmJigxNzAmcj9jbih2LDMyMCxwLGIpOmxuKHYsMzIwLHAsYikpLG88dC5VYi0xJiYobihnW21dLnksMCxjLHUrNDgwLDE2KSxuKGdbbV0uZiwwLGwsaCsyMjQsOCksbihnW21dLmVhLDAsZixkKzIyNCw4KSkscj04KnMqdC5CLGc9dC5zYSxtPXQudGErMTYqYSsxNipzKnQuUix2PXQucWEscD10LnJhKzgqYStyLGI9dC5IYSx5PXQuSWErOCphK3Iscj0wOzE2PnI7KytyKW4oZyxtK3IqdC5SLGMsdSszMipyLDE2KTtmb3Iocj0wOzg+cjsrK3Ipbih2LHArcip0LkIsbCxoKzMyKnIsOCksbihiLHkrcip0LkIsZixkKzMyKnIsOCl9fWZ1bmN0aW9uIEJyKHQsbixpLGEsbyxzLGMsdSxsKXt2YXIgaD1bMF0sZj1bMF0sZD0wLHA9bnVsbCE9bD9sLmtkOjAsZz1udWxsIT1sP2w6bmV3IG5yO2lmKG51bGw9PXR8fDEyPmkpcmV0dXJuIDc7Zy5kYXRhPXQsZy53PW4sZy5oYT1pLG49W25dLGk9W2ldLGcuZ2I9W2cuZ2JdO3Q6e3ZhciBtPW4sYj1pLHk9Zy5nYjtpZihlKG51bGwhPXQpLGUobnVsbCE9YiksZShudWxsIT15KSx5WzBdPTAsMTI8PWJbMF0mJiFyKHQsbVswXSwiUklGRiIpKXtpZihyKHQsbVswXSs4LCJXRUJQIikpe3k9MzticmVhayB0fXZhciB3PWoodCxtWzBdKzQpO2lmKDEyPnd8fDQyOTQ5NjcyODY8dyl7eT0zO2JyZWFrIHR9aWYocCYmdz5iWzBdLTgpe3k9NzticmVhayB0fXlbMF09dyxtWzBdKz0xMixiWzBdLT0xMn15PTB9aWYoMCE9eSlyZXR1cm4geTtmb3Iodz0wPGcuZ2JbMF0saT1pWzBdOzspe3Q6e3ZhciBMPXQ7Yj1uLHk9aTt2YXIgQT1oLHg9ZixTPW09WzBdO2lmKChrPWQ9W2RdKVswXT0wLDg+eVswXSl5PTc7ZWxzZXtpZighcihMLGJbMF0sIlZQOFgiKSl7aWYoMTAhPWooTCxiWzBdKzQpKXt5PTM7YnJlYWsgdH1pZigxOD55WzBdKXt5PTc7YnJlYWsgdH12YXIgXz1qKEwsYlswXSs4KSxQPTErQyhMLGJbMF0rMTIpO2lmKDIxNDc0ODM2NDg8PVAqKEw9MStDKEwsYlswXSsxNSkpKXt5PTM7YnJlYWsgdH1udWxsIT1TJiYoU1swXT1fKSxudWxsIT1BJiYoQVswXT1QKSxudWxsIT14JiYoeFswXT1MKSxiWzBdKz0xOCx5WzBdLT0xOCxrWzBdPTF9eT0wfX1pZihkPWRbMF0sbT1tWzBdLDAhPXkpcmV0dXJuIHk7aWYoYj0hISgyJm0pLCF3JiZkKXJldHVybiAzO2lmKG51bGwhPXMmJihzWzBdPSEhKDE2Jm0pKSxudWxsIT1jJiYoY1swXT1iKSxudWxsIT11JiYodVswXT0wKSxjPWhbMF0sbT1mWzBdLGQmJmImJm51bGw9PWwpe3k9MDticmVha31pZig0Pmkpe3k9NzticmVha31pZih3JiZkfHwhdyYmIWQmJiFyKHQsblswXSwiQUxQSCIpKXtpPVtpXSxnLm5hPVtnLm5hXSxnLlA9W2cuUF0sZy5TYT1bZy5TYV07dDp7Xz10LHk9bix3PWk7dmFyIGs9Zy5nYjtBPWcubmEseD1nLlAsUz1nLlNhO1A9MjIsZShudWxsIT1fKSxlKG51bGwhPXcpLEw9eVswXTt2YXIgRj13WzBdO2ZvcihlKG51bGwhPUEpLGUobnVsbCE9UyksQVswXT1udWxsLHhbMF09bnVsbCxTWzBdPTA7Oyl7aWYoeVswXT1MLHdbMF09Riw4PkYpe3k9NzticmVhayB0fXZhciBJPWooXyxMKzQpO2lmKDQyOTQ5NjcyODY8SSl7eT0zO2JyZWFrIHR9dmFyIE89OCtJKzEmLTI7aWYoUCs9TywwPGsmJlA+ayl7eT0zO2JyZWFrIHR9aWYoIXIoXyxMLCJWUDggIil8fCFyKF8sTCwiVlA4TCIpKXt5PTA7YnJlYWsgdH1pZihGWzBdPE8pe3k9NzticmVhayB0fXIoXyxMLCJBTFBIIil8fChBWzBdPV8seFswXT1MKzgsU1swXT1JKSxMKz1PLEYtPU99fWlmKGk9aVswXSxnLm5hPWcubmFbMF0sZy5QPWcuUFswXSxnLlNhPWcuU2FbMF0sMCE9eSlicmVha31pPVtpXSxnLkphPVtnLkphXSxnLnhhPVtnLnhhXTt0OmlmKGs9dCx5PW4sdz1pLEE9Zy5nYlswXSx4PWcuSmEsUz1nLnhhLF89eVswXSxMPSFyKGssXywiVlA4ICIpLFA9IXIoayxfLCJWUDhMIiksZShudWxsIT1rKSxlKG51bGwhPXcpLGUobnVsbCE9eCksZShudWxsIT1TKSw4PndbMF0peT03O2Vsc2V7aWYoTHx8UCl7aWYoaz1qKGssXys0KSwxMjw9QSYmaz5BLTEyKXt5PTM7YnJlYWsgdH1pZihwJiZrPndbMF0tOCl7eT03O2JyZWFrIHR9eFswXT1rLHlbMF0rPTgsd1swXS09OCxTWzBdPVB9ZWxzZSBTWzBdPTU8PXdbMF0mJjQ3PT1rW18rMF0mJiEoa1tfKzRdPj41KSx4WzBdPXdbMF07eT0wfWlmKGk9aVswXSxnLkphPWcuSmFbMF0sZy54YT1nLnhhWzBdLG49blswXSwwIT15KWJyZWFrO2lmKDQyOTQ5NjcyODY8Zy5KYSlyZXR1cm4gMztpZihudWxsPT11fHxifHwodVswXT1nLnhhPzI6MSksYz1bY10sbT1bbV0sZy54YSl7aWYoNT5pKXt5PTc7YnJlYWt9dT1jLHA9bSxiPXMsbnVsbD09dHx8NT5pP3Q9MDo1PD1pJiY0Nz09dFtuKzBdJiYhKHRbbis0XT4+NSk\/KHc9WzBdLGs9WzBdLEE9WzBdLHYoeD1uZXcgTix0LG4saSksZ3QoeCx3LGssQSk\/KG51bGwhPXUmJih1WzBdPXdbMF0pLG51bGwhPXAmJihwWzBdPWtbMF0pLG51bGwhPWImJihiWzBdPUFbMF0pLHQ9MSk6dD0wKTp0PTB9ZWxzZXtpZigxMD5pKXt5PTc7YnJlYWt9dT1tLG51bGw9PXR8fDEwPml8fCFYdCh0LG4rMyxpLTMpP3Q9MDoocD10W24rMF18dFtuKzFdPDw4fHRbbisyXTw8MTYsYj0xNjM4MyYodFtuKzddPDw4fHRbbis2XSksdD0xNjM4MyYodFtuKzldPDw4fHRbbis4XSksMSZwfHwzPChwPj4xJjcpfHwhKHA+PjQmMSl8fHA+PjU+PWcuSmF8fCFifHwhdD90PTA6KGMmJihjWzBdPWIpLHUmJih1WzBdPXQpLHQ9MSkpfWlmKCF0KXJldHVybiAzO2lmKGM9Y1swXSxtPW1bMF0sZCYmKGhbMF0hPWN8fGZbMF0hPW0pKXJldHVybiAzO251bGwhPWwmJihsWzBdPWcsbC5vZmZzZXQ9bi1sLncsZSg0Mjk0OTY3Mjg2Pm4tbC53KSxlKGwub2Zmc2V0PT1sLmhhLWkpKTticmVha31yZXR1cm4gMD09eXx8Nz09eSYmZCYmbnVsbD09bD8obnVsbCE9cyYmKHNbMF18PW51bGwhPWcubmEmJjA8Zy5uYS5sZW5ndGgpLG51bGwhPWEmJihhWzBdPWMpLG51bGwhPW8mJihvWzBdPW0pLDApOnl9ZnVuY3Rpb24gTXIodCxlLHIpe3ZhciBuPWUud2lkdGgsaT1lLmhlaWdodCxhPTAsbz0wLHM9bixjPWk7aWYoZS5EYT1udWxsIT10JiYwPHQuRGEsZS5EYSYmKHM9dC5jZCxjPXQuYmQsYT10LnYsbz10LmosMTE+cnx8KGEmPS0yLG8mPS0yKSwwPmF8fDA+b3x8MD49c3x8MD49Y3x8YStzPm58fG8rYz5pKSlyZXR1cm4gMDtpZihlLnY9YSxlLmo9byxlLnZhPWErcyxlLm89bytjLGUuVT1zLGUuVD1jLGUuZGE9bnVsbCE9dCYmMDx0LmRhLGUuZGEpe2lmKCFFKHMsYyxyPVt0LmliXSxhPVt0LmhiXSkpcmV0dXJuIDA7ZS5pYj1yWzBdLGUuaGI9YVswXX1yZXR1cm4gZS5vYj1udWxsIT10JiZ0Lm9iLGUuS2I9bnVsbD09dHx8IXQuU2QsZS5kYSYmKGUub2I9ZS5pYjwzKm4vNCYmZS5oYjwzKmkvNCxlLktiPTApLDF9ZnVuY3Rpb24gRXIodCl7aWYobnVsbD09dClyZXR1cm4gMjtpZigxMT50LlMpe3ZhciBlPXQuZi5SR0JBO2UuZmIrPSh0LmhlaWdodC0xKSplLkEsZS5BPS1lLkF9ZWxzZSBlPXQuZi5rYix0PXQuaGVpZ2h0LGUuTys9KHQtMSkqZS5mYSxlLmZhPS1lLmZhLGUuTis9KHQtMT4+MSkqZS5BYixlLkFiPS1lLkFiLGUuVys9KHQtMT4+MSkqZS5EYixlLkRiPS1lLkRiLG51bGwhPWUuRiYmKGUuSis9KHQtMSkqZS5sYixlLmxiPS1lLmxiKTtyZXR1cm4gMH1mdW5jdGlvbiBxcih0LGUscixuKXtpZihudWxsPT1ufHwwPj10fHwwPj1lKXJldHVybiAyO2lmKG51bGwhPXIpe2lmKHIuRGEpe3ZhciBpPXIuY2Qsbz1yLmJkLHM9LTImci52LGM9LTImci5qO2lmKDA+c3x8MD5jfHwwPj1pfHwwPj1vfHxzK2k+dHx8YytvPmUpcmV0dXJuIDI7dD1pLGU9b31pZihyLmRhKXtpZighRSh0LGUsaT1bci5pYl0sbz1bci5oYl0pKXJldHVybiAyO3Q9aVswXSxlPW9bMF19fW4ud2lkdGg9dCxuLmhlaWdodD1lO3Q6e3ZhciB1PW4ud2lkdGgsbD1uLmhlaWdodDtpZih0PW4uUywwPj11fHwwPj1sfHwhKHQ+PUVuJiYxMz50KSl0PTI7ZWxzZXtpZigwPj1uLlJkJiZudWxsPT1uLnNkKXtzPW89aT1lPTA7dmFyIGg9KGM9dSp6aVt0XSkqbDtpZigxMT50fHwobz0obCsxKS8yKihlPSh1KzEpLzIpLDEyPT10JiYocz0oaT11KSpsKSksbnVsbD09KGw9YShoKzIqbytzKSkpe3Q9MTticmVhayB0fW4uc2Q9bCwxMT50PygodT1uLmYuUkdCQSkuZWI9bCx1LmZiPTAsdS5BPWMsdS5zaXplPWgpOigodT1uLmYua2IpLnk9bCx1Lk89MCx1LmZhPWMsdS5GZD1oLHUuZj1sLHUuTj0wK2gsdS5BYj1lLHUuQ2Q9byx1LmVhPWwsdS5XPTAraCtvLHUuRGI9ZSx1LkVkPW8sMTI9PXQmJih1LkY9bCx1Lko9MCtoKzIqbyksdS5UYz1zLHUubGI9aSl9aWYoZT0xLGk9bi5TLG89bi53aWR0aCxzPW4uaGVpZ2h0LGk+PUVuJiYxMz5pKWlmKDExPmkpdD1uLmYuUkdCQSxlJj0oYz1NYXRoLmFicyh0LkEpKSoocy0xKStvPD10LnNpemUsZSY9Yz49byp6aVtpXSxlJj1udWxsIT10LmViO2Vsc2V7dD1uLmYua2IsYz0obysxKS8yLGg9KHMrMSkvMix1PU1hdGguYWJzKHQuZmEpO2w9TWF0aC5hYnModC5BYik7dmFyIGY9TWF0aC5hYnModC5EYiksZD1NYXRoLmFicyh0LmxiKSxwPWQqKHMtMSkrbztlJj11KihzLTEpK288PXQuRmQsZSY9bCooaC0xKStjPD10LkNkLGU9KGUmPWYqKGgtMSkrYzw9dC5FZCkmdT49byZsPj1jJmY+PWMsZSY9bnVsbCE9dC55LGUmPW51bGwhPXQuZixlJj1udWxsIT10LmVhLDEyPT1pJiYoZSY9ZD49byxlJj1wPD10LlRjLGUmPW51bGwhPXQuRil9ZWxzZSBlPTA7dD1lPzA6Mn19cmV0dXJuIDAhPXR8fG51bGwhPXImJnIuZmQmJih0PUVyKG4pKSx0fXZhciBEcj02NCxScj1bMCwxLDMsNywxNSwzMSw2MywxMjcsMjU1LDUxMSwxMDIzLDIwNDcsNDA5NSw4MTkxLDE2MzgzLDMyNzY3LDY1NTM1LDEzMTA3MSwyNjIxNDMsNTI0Mjg3LDEwNDg1NzUsMjA5NzE1MSw0MTk0MzAzLDgzODg2MDcsMTY3NzcyMTVdLFRyPTI0LFVyPTMyLHpyPTgsSHI9WzAsMCwxLDEsMiwyLDIsMiwzLDMsMywzLDMsMywzLDMsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDcsNyw3LDddO1IoIlByZWRpY3RvcjAiLCJQcmVkaWN0b3JBZGQwIiksdC5QcmVkaWN0b3IwPWZ1bmN0aW9uKCl7cmV0dXJuIDQyNzgxOTAwODB9LHQuUHJlZGljdG9yMT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5QcmVkaWN0b3IyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZVtyKzBdfSx0LlByZWRpY3RvcjM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlW3IrMV19LHQuUHJlZGljdG9yND1mdW5jdGlvbih0LGUscil7cmV0dXJuIGVbci0xXX0sdC5QcmVkaWN0b3I1PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gVShVKHQsZVtyKzFdKSxlW3IrMF0pfSx0LlByZWRpY3RvcjY9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBVKHQsZVtyLTFdKX0sdC5QcmVkaWN0b3I3PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gVSh0LGVbciswXSl9LHQuUHJlZGljdG9yOD1mdW5jdGlvbih0LGUscil7cmV0dXJuIFUoZVtyLTFdLGVbciswXSl9LHQuUHJlZGljdG9yOT1mdW5jdGlvbih0LGUscil7cmV0dXJuIFUoZVtyKzBdLGVbcisxXSl9LHQuUHJlZGljdG9yMTA9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBVKFUodCxlW3ItMV0pLFUoZVtyKzBdLGVbcisxXSkpfSx0LlByZWRpY3RvcjExPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lW3IrMF07cmV0dXJuIDA+PVcobj4+MjQmMjU1LHQ+PjI0JjI1NSwoZT1lW3ItMV0pPj4yNCYyNTUpK1cobj4+MTYmMjU1LHQ+PjE2JjI1NSxlPj4xNiYyNTUpK1cobj4+OCYyNTUsdD4+OCYyNTUsZT4+OCYyNTUpK1coMjU1Jm4sMjU1JnQsMjU1JmUpP246dH0sdC5QcmVkaWN0b3IxMj1mdW5jdGlvbih0LGUscil7dmFyIG49ZVtyKzBdO3JldHVybih6KCh0Pj4yNCYyNTUpKyhuPj4yNCYyNTUpLSgoZT1lW3ItMV0pPj4yNCYyNTUpKTw8MjR8eigodD4+MTYmMjU1KSsobj4+MTYmMjU1KS0oZT4+MTYmMjU1KSk8PDE2fHooKHQ+PjgmMjU1KSsobj4+OCYyNTUpLShlPj44JjI1NSkpPDw4fHooKDI1NSZ0KSsoMjU1Jm4pLSgyNTUmZSkpKT4+PjB9LHQuUHJlZGljdG9yMTM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbci0xXTtyZXR1cm4oSCgodD1VKHQsZVtyKzBdKSk+PjI0JjI1NSxuPj4yNCYyNTUpPDwyNHxIKHQ+PjE2JjI1NSxuPj4xNiYyNTUpPDwxNnxIKHQ+PjgmMjU1LG4+PjgmMjU1KTw8OHxIKHQ+PjAmMjU1LG4+PjAmMjU1KSk+Pj4wfTt2YXIgV3I9dC5QcmVkaWN0b3JBZGQwO3QuUHJlZGljdG9yQWRkMT1WLFIoIlByZWRpY3RvcjIiLCJQcmVkaWN0b3JBZGQyIiksUigiUHJlZGljdG9yMyIsIlByZWRpY3RvckFkZDMiKSxSKCJQcmVkaWN0b3I0IiwiUHJlZGljdG9yQWRkNCIpLFIoIlByZWRpY3RvcjUiLCJQcmVkaWN0b3JBZGQ1IiksUigiUHJlZGljdG9yNiIsIlByZWRpY3RvckFkZDYiKSxSKCJQcmVkaWN0b3I3IiwiUHJlZGljdG9yQWRkNyIpLFIoIlByZWRpY3RvcjgiLCJQcmVkaWN0b3JBZGQ4IiksUigiUHJlZGljdG9yOSIsIlByZWRpY3RvckFkZDkiKSxSKCJQcmVkaWN0b3IxMCIsIlByZWRpY3RvckFkZDEwIiksUigiUHJlZGljdG9yMTEiLCJQcmVkaWN0b3JBZGQxMSIpLFIoIlByZWRpY3RvcjEyIiwiUHJlZGljdG9yQWRkMTIiKSxSKCJQcmVkaWN0b3IxMyIsIlByZWRpY3RvckFkZDEzIik7dmFyIFZyPXQuUHJlZGljdG9yQWRkMjtYKCJDb2xvckluZGV4SW52ZXJzZVRyYW5zZm9ybSIsIk1hcEFSR0IiLCIzMmIiLChmdW5jdGlvbih0KXtyZXR1cm4gdD4+OCYyNTV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSksWCgiVlA4TENvbG9ySW5kZXhJbnZlcnNlVHJhbnNmb3JtQWxwaGEiLCJNYXBBbHBoYSIsIjhiIiwoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQ+PjgmMjU1fSkpO3ZhciBHcixZcj10LkNvbG9ySW5kZXhJbnZlcnNlVHJhbnNmb3JtLEpyPXQuTWFwQVJHQixYcj10LlZQOExDb2xvckluZGV4SW52ZXJzZVRyYW5zZm9ybUFscGhhLEtyPXQuTWFwQWxwaGEsWnI9dC5WUDhMUHJlZGljdG9yc0FkZD1bXTtaci5sZW5ndGg9MTYsKHQuVlA4TFByZWRpY3RvcnM9W10pLmxlbmd0aD0xNiwodC5WUDhMUHJlZGljdG9yc0FkZF9DPVtdKS5sZW5ndGg9MTYsKHQuVlA4TFByZWRpY3RvcnNfQz1bXSkubGVuZ3RoPTE2O3ZhciAkcixRcix0bixlbixybixubixhbixvbixzbixjbix1bixsbixobixmbixkbixwbixnbixtbix2bixibix5bix3bixObixMbixBbix4bixTbixfbixQbj1hKDUxMSksa249YSgyMDQxKSxGbj1hKDIyNSksSW49YSg3NjcpLENuPTAsam49a24sT249Rm4sQm49SW4sTW49UG4sRW49MCxxbj0xLERuPTIsUm49MyxUbj00LFVuPTUsem49NixIbj03LFduPTgsVm49OSxHbj0xMCxZbj1bMiwzLDddLEpuPVszLDMsMTFdLFhuPVsyODAsMjU2LDI1NiwyNTYsNDBdLEtuPVswLDEsMSwxLDBdLFpuPVsxNywxOCwwLDEsMiwzLDQsNSwxNiw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1XSwkbj1bMjQsNywyMywyNSw0MCw2LDM5LDQxLDIyLDI2LDM4LDQyLDU2LDUsNTUsNTcsMjEsMjcsNTQsNTgsMzcsNDMsNzIsNCw3MSw3MywyMCwyOCw1Myw1OSw3MCw3NCwzNiw0NCw4OCw2OSw3NSw1Miw2MCwzLDg3LDg5LDE5LDI5LDg2LDkwLDM1LDQ1LDY4LDc2LDg1LDkxLDUxLDYxLDEwNCwyLDEwMywxMDUsMTgsMzAsMTAyLDEwNiwzNCw0Niw4NCw5Miw2Nyw3NywxMDEsMTA3LDUwLDYyLDEyMCwxLDExOSwxMjEsODMsOTMsMTcsMzEsMTAwLDEwOCw2Niw3OCwxMTgsMTIyLDMzLDQ3LDExNywxMjMsNDksNjMsOTksMTA5LDgyLDk0LDAsMTE2LDEyNCw2NSw3OSwxNiwzMiw5OCwxMTAsNDgsMTE1LDEyNSw4MSw5NSw2NCwxMTQsMTI2LDk3LDExMSw4MCwxMTMsMTI3LDk2LDExMl0sUW49WzI5NTQsMjk1NiwyOTU4LDI5NjIsMjk3MCwyOTg2LDMwMTgsMzA4MiwzMjEyLDM0NjgsMzk4MCw1MDA0XSx0aT04LGVpPVs0LDUsNiw3LDgsOSwxMCwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxNywxOCwxOSwyMCwyMCwyMSwyMSwyMiwyMiwyMywyMywyNCwyNSwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MSw5Myw5NSw5Niw5OCwxMDAsMTAxLDEwMiwxMDQsMTA2LDEwOCwxMTAsMTEyLDExNCwxMTYsMTE4LDEyMiwxMjQsMTI2LDEyOCwxMzAsMTMyLDEzNCwxMzYsMTM4LDE0MCwxNDMsMTQ1LDE0OCwxNTEsMTU0LDE1N10scmk9WzQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDYwLDYyLDY0LDY2LDY4LDcwLDcyLDc0LDc2LDc4LDgwLDgyLDg0LDg2LDg4LDkwLDkyLDk0LDk2LDk4LDEwMCwxMDIsMTA0LDEwNiwxMDgsMTEwLDExMiwxMTQsMTE2LDExOSwxMjIsMTI1LDEyOCwxMzEsMTM0LDEzNywxNDAsMTQzLDE0NiwxNDksMTUyLDE1NSwxNTgsMTYxLDE2NCwxNjcsMTcwLDE3MywxNzcsMTgxLDE4NSwxODksMTkzLDE5NywyMDEsMjA1LDIwOSwyMTMsMjE3LDIyMSwyMjUsMjI5LDIzNCwyMzksMjQ1LDI0OSwyNTQsMjU5LDI2NCwyNjksMjc0LDI3OSwyODRdLG5pPW51bGwsaWk9W1sxNzMsMTQ4LDE0MCwwXSxbMTc2LDE1NSwxNDAsMTM1LDBdLFsxODAsMTU3LDE0MSwxMzQsMTMwLDBdLFsyNTQsMjU0LDI0MywyMzAsMTk2LDE3NywxNTMsMTQwLDEzMywxMzAsMTI5LDBdXSxhaT1bMCwxLDQsOCw1LDIsMyw2LDksMTIsMTMsMTAsNywxMSwxNCwxNV0sb2k9Wy0wLDEsLTEsMiwtMiwzLDQsNiwtMyw1LC00LC01LC02LDcsLTcsOCwtOCwtOV0sc2k9W1tbWzEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF1dLFtbMjUzLDEzNiwyNTQsMjU1LDIyOCwyMTksMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzE4OSwxMjksMjQyLDI1NSwyMjcsMjEzLDI1NSwyMTksMTI4LDEyOCwxMjhdLFsxMDYsMTI2LDIyNywyNTIsMjE0LDIwOSwyNTUsMjU1LDEyOCwxMjgsMTI4XV0sW1sxLDk4LDI0OCwyNTUsMjM2LDIyNiwyNTUsMjU1LDEyOCwxMjgsMTI4XSxbMTgxLDEzMywyMzgsMjU0LDIyMSwyMzQsMjU1LDE1NCwxMjgsMTI4LDEyOF0sWzc4LDEzNCwyMDIsMjQ3LDE5OCwxODAsMjU1LDIxOSwxMjgsMTI4LDEyOF1dLFtbMSwxODUsMjQ5LDI1NSwyNDMsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsxODQsMTUwLDI0NywyNTUsMjM2LDIyNCwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbNzcsMTEwLDIxNiwyNTUsMjM2LDIzMCwxMjgsMTI4LDEyOCwxMjgsMTI4XV0sW1sxLDEwMSwyNTEsMjU1LDI0MSwyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzE3MCwxMzksMjQxLDI1MiwyMzYsMjA5LDI1NSwyNTUsMTI4LDEyOCwxMjhdLFszNywxMTYsMTk2LDI0MywyMjgsMjU1LDI1NSwyNTUsMTI4LDEyOCwxMjhdXSxbWzEsMjA0LDI1NCwyNTUsMjQ1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMjA3LDE2MCwyNTAsMjU1LDIzOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzEwMiwxMDMsMjMxLDI1NSwyMTEsMTcxLDEyOCwxMjgsMTI4LDEyOCwxMjhdXSxbWzEsMTUyLDI1MiwyNTUsMjQwLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMTc3LDEzNSwyNDMsMjU1LDIzNCwyMjUsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzgwLDEyOSwyMTEsMjU1LDE5NCwyMjQsMTI4LDEyOCwxMjgsMTI4LDEyOF1dLFtbMSwxLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMjQ2LDEsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XV1dLFtbWzE5OCwzNSwyMzcsMjIzLDE5MywxODcsMTYyLDE2MCwxNDUsMTU1LDYyXSxbMTMxLDQ1LDE5OCwyMjEsMTcyLDE3NiwyMjAsMTU3LDI1MiwyMjEsMV0sWzY4LDQ3LDE0NiwyMDgsMTQ5LDE2NywyMjEsMTYyLDI1NSwyMjMsMTI4XV0sW1sxLDE0OSwyNDEsMjU1LDIyMSwyMjQsMjU1LDI1NSwxMjgsMTI4LDEyOF0sWzE4NCwxNDEsMjM0LDI1MywyMjIsMjIwLDI1NSwxOTksMTI4LDEyOCwxMjhdLFs4MSw5OSwxODEsMjQyLDE3NiwxOTAsMjQ5LDIwMiwyNTUsMjU1LDEyOF1dLFtbMSwxMjksMjMyLDI1MywyMTQsMTk3LDI0MiwxOTYsMjU1LDI1NSwxMjhdLFs5OSwxMjEsMjEwLDI1MCwyMDEsMTk4LDI1NSwyMDIsMTI4LDEyOCwxMjhdLFsyMyw5MSwxNjMsMjQyLDE3MCwxODcsMjQ3LDIxMCwyNTUsMjU1LDEyOF1dLFtbMSwyMDAsMjQ2LDI1NSwyMzQsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsxMDksMTc4LDI0MSwyNTUsMjMxLDI0NSwyNTUsMjU1LDEyOCwxMjgsMTI4XSxbNDQsMTMwLDIwMSwyNTMsMjA1LDE5MiwyNTUsMjU1LDEyOCwxMjgsMTI4XV0sW1sxLDEzMiwyMzksMjUxLDIxOSwyMDksMjU1LDE2NSwxMjgsMTI4LDEyOF0sWzk0LDEzNiwyMjUsMjUxLDIxOCwxOTAsMjU1LDI1NSwxMjgsMTI4LDEyOF0sWzIyLDEwMCwxNzQsMjQ1LDE4NiwxNjEsMjU1LDE5OSwxMjgsMTI4LDEyOF1dLFtbMSwxODIsMjQ5LDI1NSwyMzIsMjM1LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsxMjQsMTQzLDI0MSwyNTUsMjI3LDIzNCwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMzUsNzcsMTgxLDI1MSwxOTMsMjExLDI1NSwyMDUsMTI4LDEyOCwxMjhdXSxbWzEsMTU3LDI0NywyNTUsMjM2LDIzMSwyNTUsMjU1LDEyOCwxMjgsMTI4XSxbMTIxLDE0MSwyMzUsMjU1LDIyNSwyMjcsMjU1LDI1NSwxMjgsMTI4LDEyOF0sWzQ1LDk5LDE4OCwyNTEsMTk1LDIxNywyNTUsMjI0LDEyOCwxMjgsMTI4XV0sW1sxLDEsMjUxLDI1NSwyMTMsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsyMDMsMSwyNDgsMjU1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzEzNywxLDE3NywyNTUsMjI0LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4XV1dLFtbWzI1Myw5LDI0OCwyNTEsMjA3LDIwOCwyNTUsMTkyLDEyOCwxMjgsMTI4XSxbMTc1LDEzLDIyNCwyNDMsMTkzLDE4NSwyNDksMTk4LDI1NSwyNTUsMTI4XSxbNzMsMTcsMTcxLDIyMSwxNjEsMTc5LDIzNiwxNjcsMjU1LDIzNCwxMjhdXSxbWzEsOTUsMjQ3LDI1MywyMTIsMTgzLDI1NSwyNTUsMTI4LDEyOCwxMjhdLFsyMzksOTAsMjQ0LDI1MCwyMTEsMjA5LDI1NSwyNTUsMTI4LDEyOCwxMjhdLFsxNTUsNzcsMTk1LDI0OCwxODgsMTk1LDI1NSwyNTUsMTI4LDEyOCwxMjhdXSxbWzEsMjQsMjM5LDI1MSwyMTgsMjE5LDI1NSwyMDUsMTI4LDEyOCwxMjhdLFsyMDEsNTEsMjE5LDI1NSwxOTYsMTg2LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFs2OSw0NiwxOTAsMjM5LDIwMSwyMTgsMjU1LDIyOCwxMjgsMTI4LDEyOF1dLFtbMSwxOTEsMjUxLDI1NSwyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsyMjMsMTY1LDI0OSwyNTUsMjEzLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMTQxLDEyNCwyNDgsMjU1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF1dLFtbMSwxNiwyNDgsMjU1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzE5MCwzNiwyMzAsMjU1LDIzNiwyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzE0OSwxLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XV0sW1sxLDIyNiwyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzI0NywxOTIsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsyNDAsMTI4LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XV0sW1sxLDEzNCwyNTIsMjU1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzIxMyw2MiwyNTAsMjU1LDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzU1LDkzLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XV0sW1sxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XSxbMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdXV0sW1tbMjAyLDI0LDIxMywyMzUsMTg2LDE5MSwyMjAsMTYwLDI0MCwxNzUsMjU1XSxbMTI2LDM4LDE4MiwyMzIsMTY5LDE4NCwyMjgsMTc0LDI1NSwxODcsMTI4XSxbNjEsNDYsMTM4LDIxOSwxNTEsMTc4LDI0MCwxNzAsMjU1LDIxNiwxMjhdXSxbWzEsMTEyLDIzMCwyNTAsMTk5LDE5MSwyNDcsMTU5LDI1NSwyNTUsMTI4XSxbMTY2LDEwOSwyMjgsMjUyLDIxMSwyMTUsMjU1LDE3NCwxMjgsMTI4LDEyOF0sWzM5LDc3LDE2MiwyMzIsMTcyLDE4MCwyNDUsMTc4LDI1NSwyNTUsMTI4XV0sW1sxLDUyLDIyMCwyNDYsMTk4LDE5OSwyNDksMjIwLDI1NSwyNTUsMTI4XSxbMTI0LDc0LDE5MSwyNDMsMTgzLDE5MywyNTAsMjIxLDI1NSwyNTUsMTI4XSxbMjQsNzEsMTMwLDIxOSwxNTQsMTcwLDI0MywxODIsMjU1LDI1NSwxMjhdXSxbWzEsMTgyLDIyNSwyNDksMjE5LDI0MCwyNTUsMjI0LDEyOCwxMjgsMTI4XSxbMTQ5LDE1MCwyMjYsMjUyLDIxNiwyMDUsMjU1LDE3MSwxMjgsMTI4LDEyOF0sWzI4LDEwOCwxNzAsMjQyLDE4MywxOTQsMjU0LDIyMywyNTUsMjU1LDEyOF1dLFtbMSw4MSwyMzAsMjUyLDIwNCwyMDMsMjU1LDE5MiwxMjgsMTI4LDEyOF0sWzEyMywxMDIsMjA5LDI0NywxODgsMTk2LDI1NSwyMzMsMTI4LDEyOCwxMjhdLFsyMCw5NSwxNTMsMjQzLDE2NCwxNzMsMjU1LDIwMywxMjgsMTI4LDEyOF1dLFtbMSwyMjIsMjQ4LDI1NSwyMTYsMjEzLDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsxNjgsMTc1LDI0NiwyNTIsMjM1LDIwNSwyNTUsMjU1LDEyOCwxMjgsMTI4XSxbNDcsMTE2LDIxNSwyNTUsMjExLDIxMiwyNTUsMjU1LDEyOCwxMjgsMTI4XV0sW1sxLDEyMSwyMzYsMjUzLDIxMiwyMTQsMjU1LDI1NSwxMjgsMTI4LDEyOF0sWzE0MSw4NCwyMTMsMjUyLDIwMSwyMDIsMjU1LDIxOSwxMjgsMTI4LDEyOF0sWzQyLDgwLDE2MCwyNDAsMTYyLDE4NSwyNTUsMjA1LDEyOCwxMjgsMTI4XV0sW1sxLDEsMjU1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjhdLFsyNDQsMSwyNTUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOF0sWzIzOCwxLDI1NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4XV1dXSxjaT1bW1syMzEsMTIwLDQ4LDg5LDExNSwxMTMsMTIwLDE1MiwxMTJdLFsxNTIsMTc5LDY0LDEyNiwxNzAsMTE4LDQ2LDcwLDk1XSxbMTc1LDY5LDE0Myw4MCw4NSw4Miw3MiwxNTUsMTAzXSxbNTYsNTgsMTAsMTcxLDIxOCwxODksMTcsMTMsMTUyXSxbMTE0LDI2LDE3LDE2Myw0NCwxOTUsMjEsMTAsMTczXSxbMTIxLDI0LDgwLDE5NSwyNiw2Miw0NCw2NCw4NV0sWzE0NCw3MSwxMCwzOCwxNzEsMjEzLDE0NCwzNCwyNl0sWzE3MCw0Niw1NSwxOSwxMzYsMTYwLDMzLDIwNiw3MV0sWzYzLDIwLDgsMTE0LDExNCwyMDgsMTIsOSwyMjZdLFs4MSw0MCwxMSw5NiwxODIsODQsMjksMTYsMzZdXSxbWzEzNCwxODMsODksMTM3LDk4LDEwMSwxMDYsMTY1LDE0OF0sWzcyLDE4NywxMDAsMTMwLDE1NywxMTEsMzIsNzUsODBdLFs2NiwxMDIsMTY3LDk5LDc0LDYyLDQwLDIzNCwxMjhdLFs0MSw1Myw5LDE3OCwyNDEsMTQxLDI2LDgsMTA3XSxbNzQsNDMsMjYsMTQ2LDczLDE2Niw0OSwyMywxNTddLFs2NSwzOCwxMDUsMTYwLDUxLDUyLDMxLDExNSwxMjhdLFsxMDQsNzksMTIsMjcsMjE3LDI1NSw4NywxNyw3XSxbODcsNjgsNzEsNDQsMTE0LDUxLDE1LDE4NiwyM10sWzQ3LDQxLDE0LDExMCwxODIsMTgzLDIxLDE3LDE5NF0sWzY2LDQ1LDI1LDEwMiwxOTcsMTg5LDIzLDE4LDIyXV0sW1s4OCw4OCwxNDcsMTUwLDQyLDQ2LDQ1LDE5NiwyMDVdLFs0Myw5NywxODMsMTE3LDg1LDM4LDM1LDE3OSw2MV0sWzM5LDUzLDIwMCw4NywyNiwyMSw0MywyMzIsMTcxXSxbNTYsMzQsNTEsMTA0LDExNCwxMDIsMjksOTMsNzddLFszOSwyOCw4NSwxNzEsNTgsMTY1LDkwLDk4LDY0XSxbMzQsMjIsMTE2LDIwNiwyMywzNCw0MywxNjYsNzNdLFsxMDcsNTQsMzIsMjYsNTEsMSw4MSw0MywzMV0sWzY4LDI1LDEwNiwyMiw2NCwxNzEsMzYsMjI1LDExNF0sWzM0LDE5LDIxLDEwMiwxMzIsMTg4LDE2LDc2LDEyNF0sWzYyLDE4LDc4LDk1LDg1LDU3LDUwLDQ4LDUxXV0sW1sxOTMsMTAxLDM1LDE1OSwyMTUsMTExLDg5LDQ2LDExMV0sWzYwLDE0OCwzMSwxNzIsMjE5LDIyOCwyMSwxOCwxMTFdLFsxMTIsMTEzLDc3LDg1LDE3OSwyNTUsMzgsMTIwLDExNF0sWzQwLDQyLDEsMTk2LDI0NSwyMDksMTAsMjUsMTA5XSxbODgsNDMsMjksMTQwLDE2NiwyMTMsMzcsNDMsMTU0XSxbNjEsNjMsMzAsMTU1LDY3LDQ1LDY4LDEsMjA5XSxbMTAwLDgwLDgsNDMsMTU0LDEsNTEsMjYsNzFdLFsxNDIsNzgsNzgsMTYsMjU1LDEyOCwzNCwxOTcsMTcxXSxbNDEsNDAsNSwxMDIsMjExLDE4Myw0LDEsMjIxXSxbNTEsNTAsMTcsMTY4LDIwOSwxOTIsMjMsMjUsODJdXSxbWzEzOCwzMSwzNiwxNzEsMjcsMTY2LDM4LDQ0LDIyOV0sWzY3LDg3LDU4LDE2OSw4MiwxMTUsMjYsNTksMTc5XSxbNjMsNTksOTAsMTgwLDU5LDE2Niw5Myw3MywxNTRdLFs0MCw0MCwyMSwxMTYsMTQzLDIwOSwzNCwzOSwxNzVdLFs0NywxNSwxNiwxODMsMzQsMjIzLDQ5LDQ1LDE4M10sWzQ2LDE3LDMzLDE4Myw2LDk4LDE1LDMyLDE4M10sWzU3LDQ2LDIyLDI0LDEyOCwxLDU0LDE3LDM3XSxbNjUsMzIsNzMsMTE1LDI4LDEyOCwyMywxMjgsMjA1XSxbNDAsMyw5LDExNSw1MSwxOTIsMTgsNiwyMjNdLFs4NywzNyw5LDExNSw1OSw3Nyw2NCwyMSw0N11dLFtbMTA0LDU1LDQ0LDIxOCw5LDU0LDUzLDEzMCwyMjZdLFs2NCw5MCw3MCwyMDUsNDAsNDEsMjMsMjYsNTddLFs1NCw1NywxMTIsMTg0LDUsNDEsMzgsMTY2LDIxM10sWzMwLDM0LDI2LDEzMywxNTIsMTE2LDEwLDMyLDEzNF0sWzM5LDE5LDUzLDIyMSwyNiwxMTQsMzIsNzMsMjU1XSxbMzEsOSw2NSwyMzQsMiwxNSwxLDExOCw3M10sWzc1LDMyLDEyLDUxLDE5MiwyNTUsMTYwLDQzLDUxXSxbODgsMzEsMzUsNjcsMTAyLDg1LDU1LDE4Niw4NV0sWzU2LDIxLDIzLDExMSw1OSwyMDUsNDUsMzcsMTkyXSxbNTUsMzgsNzAsMTI0LDczLDEwMiwxLDM0LDk4XV0sW1sxMjUsOTgsNDIsODgsMTA0LDg1LDExNywxNzUsODJdLFs5NSw4NCw1Myw4OSwxMjgsMTAwLDExMywxMDEsNDVdLFs3NSw3OSwxMjMsNDcsNTEsMTI4LDgxLDE3MSwxXSxbNTcsMTcsNSw3MSwxMDIsNTcsNTMsNDEsNDldLFszOCwzMywxMywxMjEsNTcsNzMsMjYsMSw4NV0sWzQxLDEwLDY3LDEzOCw3NywxMTAsOTAsNDcsMTE0XSxbMTE1LDIxLDIsMTAsMTAyLDI1NSwxNjYsMjMsNl0sWzEwMSwyOSwxNiwxMCw4NSwxMjgsMTAxLDE5NiwyNl0sWzU3LDE4LDEwLDEwMiwxMDIsMjEzLDM0LDIwLDQzXSxbMTE3LDIwLDE1LDM2LDE2MywxMjgsNjgsMSwyNl1dLFtbMTAyLDYxLDcxLDM3LDM0LDUzLDMxLDI0MywxOTJdLFs2OSw2MCw3MSwzOCw3MywxMTksMjgsMjIyLDM3XSxbNjgsNDUsMTI4LDM0LDEsNDcsMTEsMjQ1LDE3MV0sWzYyLDE3LDE5LDcwLDE0Niw4NSw1NSw2Miw3MF0sWzM3LDQzLDM3LDE1NCwxMDAsMTYzLDg1LDE2MCwxXSxbNjMsOSw5MiwxMzYsMjgsNjQsMzIsMjAxLDg1XSxbNzUsMTUsOSw5LDY0LDI1NSwxODQsMTE5LDE2XSxbODYsNiwyOCw1LDY0LDI1NSwyNSwyNDgsMV0sWzU2LDgsMTcsMTMyLDEzNywyNTUsNTUsMTE2LDEyOF0sWzU4LDE1LDIwLDgyLDEzNSw1NywyNiwxMjEsNDBdXSxbWzE2NCw1MCwzMSwxMzcsMTU0LDEzMywyNSwzNSwyMThdLFs1MSwxMDMsNDQsMTMxLDEzMSwxMjMsMzEsNiwxNThdLFs4Niw0MCw2NCwxMzUsMTQ4LDIyNCw0NSwxODMsMTI4XSxbMjIsMjYsMTcsMTMxLDI0MCwxNTQsMTQsMSwyMDldLFs0NSwxNiwyMSw5MSw2NCwyMjIsNywxLDE5N10sWzU2LDIxLDM5LDE1NSw2MCwxMzgsMjMsMTAyLDIxM10sWzgzLDEyLDEzLDU0LDE5MiwyNTUsNjgsNDcsMjhdLFs4NSwyNiw4NSw4NSwxMjgsMTI4LDMyLDE0NiwxNzFdLFsxOCwxMSw3LDYzLDE0NCwxNzEsNCw0LDI0Nl0sWzM1LDI3LDEwLDE0NiwxNzQsMTcxLDEyLDI2LDEyOF1dLFtbMTkwLDgwLDM1LDk5LDE4MCw4MCwxMjYsNTQsNDVdLFs4NSwxMjYsNDcsODcsMTc2LDUxLDQxLDIwLDMyXSxbMTAxLDc1LDEyOCwxMzksMTE4LDE0NiwxMTYsMTI4LDg1XSxbNTYsNDEsMTUsMTc2LDIzNiw4NSwzNyw5LDYyXSxbNzEsMzAsMTcsMTE5LDExOCwyNTUsMTcsMTgsMTM4XSxbMTAxLDM4LDYwLDEzOCw1NSw3MCw0MywyNiwxNDJdLFsxNDYsMzYsMTksMzAsMTcxLDI1NSw5NywyNywyMF0sWzEzOCw0NSw2MSw2MiwyMTksMSw4MSwxODgsNjRdLFszMiw0MSwyMCwxMTcsMTUxLDE0MiwyMCwyMSwxNjNdLFsxMTIsMTksMTIsNjEsMTk1LDEyOCw0OCw0LDI0XV1dLHVpPVtbW1syNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzE3NiwyNDYsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyMjMsMjQxLDI1MiwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjQ5LDI1MywyNTMsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI0NCwyNTIsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzIzNCwyNTQsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTMsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjQ2LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjM5LDI1MywyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NCwyNTUsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNDgsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTEsMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1MywyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1MSwyNTQsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTQsMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjU0LDI1MywyNTUsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUwLDI1NSwyNTQsMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dXSxbW1syMTcsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjI1LDI1MiwyNDEsMjUzLDI1NSwyNTUsMjU0LDI1NSwyNTUsMjU1LDI1NV0sWzIzNCwyNTAsMjQxLDI1MCwyNTMsMjU1LDI1MywyNTQsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyMjMsMjU0LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjM4LDI1MywyNTQsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI0OCwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI0OSwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjUzLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjQ3LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTMsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTIsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1NCwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1MywyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjU0LDI1MywyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dXSxbW1sxODYsMjUxLDI1MCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjM0LDI1MSwyNDQsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1MSwyNTEsMjQzLDI1MywyNTQsMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTMsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyMzYsMjUzLDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUxLDI1MywyNTMsMjU0LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1NCwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NCwyNTQsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU0LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dXSxbW1syNDgsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUwLDI1NCwyNTIsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI0OCwyNTQsMjQ5LDI1MywyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTMsMjUzLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNDYsMjUzLDI1MywyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUyLDI1NCwyNTEsMjU0LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1NCwyNTIsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI0OCwyNTQsMjUzLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTMsMjU1LDI1NCwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjUxLDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjQ1LDI1MSwyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1MywyNTMsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTEsMjUzLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTIsMjUzLDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dLFtbMjU1LDI1MiwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI0OSwyNTUsMjU0LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTUsMjU1LDI1NCwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XV0sW1syNTUsMjU1LDI1MywyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjUwLDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0sWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdXSxbWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTVdLFsyNTQsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1XSxbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV1dXV0sbGk9WzAsMSwyLDMsNiw0LDUsNiw2LDYsNiw2LDYsNiw2LDcsMF0saGk9W10sZmk9W10sZGk9W10scGk9MSxnaT0yLG1pPVtdLHZpPVtdO3ZyKCJVcHNhbXBsZVJnYkxpbmVQYWlyIixBciwzKSx2cigiVXBzYW1wbGVCZ3JMaW5lUGFpciIseHIsMyksdnIoIlVwc2FtcGxlUmdiYUxpbmVQYWlyIixGciw0KSx2cigiVXBzYW1wbGVCZ3JhTGluZVBhaXIiLGtyLDQpLHZyKCJVcHNhbXBsZUFyZ2JMaW5lUGFpciIsUHIsNCksdnIoIlVwc2FtcGxlUmdiYTQ0NDRMaW5lUGFpciIsX3IsMiksdnIoIlVwc2FtcGxlUmdiNTY1TGluZVBhaXIiLFNyLDIpO3ZhciBiaT10LlVwc2FtcGxlUmdiTGluZVBhaXIseWk9dC5VcHNhbXBsZUJnckxpbmVQYWlyLHdpPXQuVXBzYW1wbGVSZ2JhTGluZVBhaXIsTmk9dC5VcHNhbXBsZUJncmFMaW5lUGFpcixMaT10LlVwc2FtcGxlQXJnYkxpbmVQYWlyLEFpPXQuVXBzYW1wbGVSZ2JhNDQ0NExpbmVQYWlyLHhpPXQuVXBzYW1wbGVSZ2I1NjVMaW5lUGFpcixTaT0xNixfaT0xPDxTaS0xLFBpPS0yMjcsa2k9NDgyLEZpPTYsSWk9KDI1Njw8RmkpLTEsQ2k9MCxqaT1hKDI1NiksT2k9YSgyNTYpLEJpPWEoMjU2KSxNaT1hKDI1NiksRWk9YShraS1QaSkscWk9YShraS1QaSk7SXIoIll1dlRvUmdiUm93IixBciwzKSxJcigiWXV2VG9CZ3JSb3ciLHhyLDMpLElyKCJZdXZUb1JnYmFSb3ciLEZyLDQpLElyKCJZdXZUb0JncmFSb3ciLGtyLDQpLElyKCJZdXZUb0FyZ2JSb3ciLFByLDQpLElyKCJZdXZUb1JnYmE0NDQ0Um93IixfciwyKSxJcigiWXV2VG9SZ2I1NjVSb3ciLFNyLDIpO3ZhciBEaT1bMCw0LDgsMTIsMTI4LDEzMiwxMzYsMTQwLDI1NiwyNjAsMjY0LDI2OCwzODQsMzg4LDM5MiwzOTZdLFJpPVswLDIsOF0sVGk9WzgsNyw2LDQsNCwyLDIsMiwxLDEsMSwxXSxVaT0xO3RoaXMuV2ViUERlY29kZVJHQkE9ZnVuY3Rpb24odCxyLG4saSxhKXt2YXIgbz1xbixzPW5ldyBycixjPW5ldyBvdDtzLmJhPWMsYy5TPW8sYy53aWR0aD1bYy53aWR0aF0sYy5oZWlnaHQ9W2MuaGVpZ2h0XTt2YXIgdT1jLndpZHRoLGw9Yy5oZWlnaHQsaD1uZXcgc3Q7aWYobnVsbD09aHx8bnVsbD09dCl2YXIgZj0yO2Vsc2UgZShudWxsIT1oKSxmPUJyKHQscixuLGgud2lkdGgsaC5oZWlnaHQsaC5QZCxoLlFkLGguZm9ybWF0LG51bGwpO2lmKDAhPWY\/dT0wOihudWxsIT11JiYodVswXT1oLndpZHRoWzBdKSxudWxsIT1sJiYobFswXT1oLmhlaWdodFswXSksdT0xKSx1KXtjLndpZHRoPWMud2lkdGhbMF0sYy5oZWlnaHQ9Yy5oZWlnaHRbMF0sbnVsbCE9aSYmKGlbMF09Yy53aWR0aCksbnVsbCE9YSYmKGFbMF09Yy5oZWlnaHQpO3Q6e2lmKGk9bmV3IEd0LChhPW5ldyBucikuZGF0YT10LGEudz1yLGEuaGE9bixhLmtkPTEscj1bMF0sZShudWxsIT1hKSwoMD09KHQ9QnIoYS5kYXRhLGEudyxhLmhhLG51bGwsbnVsbCxudWxsLHIsbnVsbCxhKSl8fDc9PXQpJiZyWzBdJiYodD00KSwwPT0ocj10KSl7aWYoZShudWxsIT1zKSxpLmRhdGE9YS5kYXRhLGkudz1hLncrYS5vZmZzZXQsaS5oYT1hLmhhLWEub2Zmc2V0LGkucHV0PWR0LGkuYWM9ZnQsaS5iYz1wdCxpLm1hPXMsYS54YSl7aWYobnVsbD09KHQ9a3QoKSkpe3M9MTticmVhayB0fWlmKGZ1bmN0aW9uKHQscil7dmFyIG49WzBdLGk9WzBdLGE9WzBdO2U6Zm9yKDs7KXtpZihudWxsPT10KXJldHVybiAwO2lmKG51bGw9PXIpcmV0dXJuIHQuYT0yLDA7aWYodC5sPXIsdC5hPTAsdih0Lm0sci5kYXRhLHIudyxyLmhhKSwhZ3QodC5tLG4saSxhKSl7dC5hPTM7YnJlYWsgZX1pZih0LnhiPWdpLHIud2lkdGg9blswXSxyLmhlaWdodD1pWzBdLCFGdChuWzBdLGlbMF0sMSx0LG51bGwpKWJyZWFrIGU7cmV0dXJuIDF9cmV0dXJuIGUoMCE9dC5hKSwwfSh0LGkpKXtpZihpPTA9PShyPXFyKGkud2lkdGgsaS5oZWlnaHQscy5PYSxzLmJhKSkpe2U6e2k9dDtyOmZvcig7Oyl7aWYobnVsbD09aSl7aT0wO2JyZWFrIGV9aWYoZShudWxsIT1pLnMueWMpLGUobnVsbCE9aS5zLllhKSxlKDA8aS5zLldiKSxlKG51bGwhPShuPWkubCkpLGUobnVsbCE9KGE9bi5tYSkpLDAhPWkueGIpe2lmKGkuY2E9YS5iYSxpLnRiPWEudGIsZShudWxsIT1pLmNhKSwhTXIoYS5PYSxuLFJuKSl7aS5hPTI7YnJlYWsgcn1pZighSXQoaSxuLndpZHRoKSlicmVhayByO2lmKG4uZGEpYnJlYWsgcjtpZigobi5kYXx8bnQoaS5jYS5TKSkmJm1yKCksMTE+aS5jYS5TfHwoYWxlcnQoInRvZG86V2ViUEluaXRDb252ZXJ0QVJHQlRvWVVWIiksbnVsbCE9aS5jYS5mLmtiLkYmJm1yKCkpLGkuUGImJjA8aS5zLnVhJiZudWxsPT1pLnMudmIuWCYmIU8oaS5zLnZiLGkucy5XYS5YYSkpe2kuYT0xO2JyZWFrIHJ9aS54Yj0wfWlmKCFfdChpLGkuVixpLkJhLGkuYyxpLmksbi5vLEx0KSlicmVhayByO2EuRGM9aS5NYSxpPTE7YnJlYWsgZX1lKDAhPWkuYSksaT0wfWk9IWl9aSYmKHI9dC5hKX1lbHNlIHI9dC5hfWVsc2V7aWYobnVsbD09KHQ9bmV3IFl0KSl7cz0xO2JyZWFrIHR9aWYodC5GYT1hLm5hLHQuUD1hLlAsdC5xYz1hLlNhLEt0KHQsaSkpe2lmKDA9PShyPXFyKGkud2lkdGgsaS5oZWlnaHQscy5PYSxzLmJhKSkpe2lmKHQuQWE9MCxuPXMuT2EsZShudWxsIT0oYT10KSksbnVsbCE9bil7aWYoMDwodT0wPih1PW4uTWQpPzA6MTAwPHU\/MjU1OjI1NSp1LzEwMCkpe2ZvcihsPWg9MDs0Pmw7KytsKTEyPihmPWEucGJbbF0pLmxjJiYoZi5pYT11KlRpWzA+Zi5sYz8wOmYubGNdPj4zKSxofD1mLmlhO2gmJihhbGVydCgidG9kbzpWUDhJbml0UmFuZG9tIiksYS5pYT0xKX1hLkdhPW4uSWQsMTAwPGEuR2E\/YS5HYT0xMDA6MD5hLkdhJiYoYS5HYT0wKX1RdCh0LGkpfHwocj10LmEpfX1lbHNlIHI9dC5hfTA9PXImJm51bGwhPXMuT2EmJnMuT2EuZmQmJihyPUVyKHMuYmEpKX1zPXJ9bz0wIT1zP251bGw6MTE+bz9jLmYuUkdCQS5lYjpjLmYua2IueX1lbHNlIG89bnVsbDtyZXR1cm4gb307dmFyIHppPVszLDQsMyw0LDQsMiwyLDQsNCw0LDIsMSwxXX07ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgcj0iIixuPTA7bjw0O24rKylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbZSsrXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gbCh0LGUpe3JldHVybih0W2UrMF08PDB8dFtlKzFdPDw4fHRbZSsyXTw8MTYpPj4+MH1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuKHRbZSswXTw8MHx0W2UrMV08PDh8dFtlKzJdPDwxNnx0W2UrM108PDI0KT4+PjB9bmV3IGM7dmFyIGY9WzBdLGQ9WzBdLHA9W10sZz1uZXcgYyxtPXQsdj1mdW5jdGlvbih0LGUpe3ZhciByPXt9LG49MCxpPSExLGE9MCxvPTA7aWYoci5mcmFtZXM9W10sIQovKiogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBEb21pbmlrIEhvbWJlcmdlcgogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAgIGh0dHBzOi8vd2VicGpzLmFwcHNwb3QuY29tCiAgICBXZWJQUmlmZlBhcnNlciBkb21pbmlraGxiZ0BnbWFpbC5jb20KICAgICovCmZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT0wO2k8bjtpKyspaWYodFtlK2ldIT1yLmNoYXJDb2RlQXQoaSkpcmV0dXJuITA7cmV0dXJuITF9KHQsZSwiUklGRiIsNCkpe3ZhciBzLGM7aCh0LGUrPTQpO2ZvcihlKz04O2U8dC5sZW5ndGg7KXt2YXIgZj11KHQsZSksZD1oKHQsZSs9NCk7ZSs9NDt2YXIgcD1kKygxJmQpO3N3aXRjaChmKXtjYXNlIlZQOCAiOmNhc2UiVlA4TCI6dm9pZCAwPT09ci5mcmFtZXNbbl0mJihyLmZyYW1lc1tuXT17fSk7KHY9ci5mcmFtZXNbbl0pLnNyY19vZmY9aT9vOmUtOCx2LnNyY19zaXplPWErZCs4LG4rKyxpJiYoaT0hMSxhPTAsbz0wKTticmVhaztjYXNlIlZQOFgiOih2PXIuaGVhZGVyPXt9KS5mZWF0dXJlX2ZsYWdzPXRbZV07dmFyIGc9ZSs0O3YuY2FudmFzX3dpZHRoPTErbCh0LGcpO2crPTM7di5jYW52YXNfaGVpZ2h0PTErbCh0LGcpO2crPTM7YnJlYWs7Y2FzZSJBTFBIIjppPSEwLGE9cCs4LG89ZS04O2JyZWFrO2Nhc2UiQU5JTSI6KHY9ci5oZWFkZXIpLmJnY29sb3I9aCh0LGUpO2c9ZSs0O3YubG9vcF9jb3VudD0ocz10KVsoYz1nKSswXTw8MHxzW2MrMV08PDg7Zys9MjticmVhaztjYXNlIkFOTUYiOnZhciBtLHY7KHY9ci5mcmFtZXNbbl09e30pLm9mZnNldF94PTIqbCh0LGUpLGUrPTMsdi5vZmZzZXRfeT0yKmwodCxlKSxlKz0zLHYud2lkdGg9MStsKHQsZSksZSs9Myx2LmhlaWdodD0xK2wodCxlKSxlKz0zLHYuZHVyYXRpb249bCh0LGUpLGUrPTMsbT10W2UrK10sdi5kaXNwb3NlPTEmbSx2LmJsZW5kPW0+PjEmMX0iQU5NRiIhPWYmJihlKz1wKX1yZXR1cm4gcn19KG0sMCk7di5yZXNwb25zZT1tLHYucmdiYW91dHB1dD0hMCx2LmRhdGF1cmw9ITE7dmFyIGI9di5oZWFkZXI\/di5oZWFkZXI6bnVsbCx5PXYuZnJhbWVzP3YuZnJhbWVzOm51bGw7aWYoYil7Yi5sb29wX2NvdW50ZXI9Yi5sb29wX2NvdW50LGY9W2IuY2FudmFzX2hlaWdodF0sZD1bYi5jYW52YXNfd2lkdGhdO2Zvcih2YXIgdz0wO3c8eS5sZW5ndGgmJjAhPXlbd10uYmxlbmQ7dysrKTt9dmFyIE49eVswXSxMPWcuV2ViUERlY29kZVJHQkEobSxOLnNyY19vZmYsTi5zcmNfc2l6ZSxkLGYpO04ucmdiYT1MLE4uaW1nd2lkdGg9ZFswXSxOLmltZ2hlaWdodD1mWzBdO2Zvcih2YXIgQT0wO0E8ZFswXSpmWzBdKjQ7QSsrKXBbQV09TFtBXTtyZXR1cm4gdGhpcy53aWR0aD1kLHRoaXMuaGVpZ2h0PWYsdGhpcy5kYXRhPXAsdGhpc30hZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0scj1mdW5jdGlvbihlLHIsaSx1KXt2YXIgbD00LGg9bztzd2l0Y2godSl7Y2FzZSB0LmltYWdlX2NvbXByZXNzaW9uLkZBU1Q6bD0xLGg9YTticmVhaztjYXNlIHQuaW1hZ2VfY29tcHJlc3Npb24uTUVESVVNOmw9NixoPXM7YnJlYWs7Y2FzZSB0LmltYWdlX2NvbXByZXNzaW9uLlNMT1c6bD05LGg9Y312YXIgZj1fZShlPW4oZSxyLGksaCkse2xldmVsOmx9KTtyZXR1cm4gdC5fX2FkZGltYWdlX18uYXJyYXlCdWZmZXJUb0JpbmFyeVN0cmluZyhmKX0sbj1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGksYSxvLHM9dC5sZW5ndGgvZSxjPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoK3MpLHU9bCgpLGY9MDtmPHM7Zis9MSl7aWYobz1mKmUsaT10LnN1YmFycmF5KG8sbytlKSxuKWMuc2V0KG4oaSxyLGEpLG8rZik7ZWxzZXtmb3IodmFyIGQscD11Lmxlbmd0aCxnPVtdO2Q8cDtkKz0xKWdbZF09dVtkXShpLHIsYSk7dmFyIG09aChnLmNvbmNhdCgpKTtjLnNldChnW21dLG8rZil9YT1pfXJldHVybiBjfSxpPWZ1bmN0aW9uKHQpe3ZhciBlPUFycmF5LmFwcGx5KFtdLHQpO3JldHVybiBlLnVuc2hpZnQoMCksZX0sYT1mdW5jdGlvbih0LGUpe3ZhciByLG49W10saT10Lmxlbmd0aDtuWzBdPTE7Zm9yKHZhciBhPTA7YTxpO2ErPTEpcj10W2EtZV18fDAsblthKzFdPXRbYV0tcisyNTYmMjU1O3JldHVybiBufSxvPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPVtdLGE9dC5sZW5ndGg7aVswXT0yO2Zvcih2YXIgbz0wO288YTtvKz0xKW49ciYmcltvXXx8MCxpW28rMV09dFtvXS1uKzI1NiYyNTU7cmV0dXJuIGl9LHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksYT1bXSxvPXQubGVuZ3RoO2FbMF09Mztmb3IodmFyIHM9MDtzPG87cys9MSluPXRbcy1lXXx8MCxpPXImJnJbc118fDAsYVtzKzFdPXRbc10rMjU2LShuK2k+Pj4xKSYyNTU7cmV0dXJuIGF9LGM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksYSxvLHM9W10sYz10Lmxlbmd0aDtzWzBdPTQ7Zm9yKHZhciBsPTA7bDxjO2wrPTEpbj10W2wtZV18fDAsaT1yJiZyW2xdfHwwLGE9ciYmcltsLWVdfHwwLG89dShuLGksYSksc1tsKzFdPXRbbF0tbysyNTYmMjU1O3JldHVybiBzfSx1PWZ1bmN0aW9uKHQsZSxyKXtpZih0PT09ZSYmZT09PXIpcmV0dXJuIHQ7dmFyIG49TWF0aC5hYnMoZS1yKSxpPU1hdGguYWJzKHQtciksYT1NYXRoLmFicyh0K2Utci1yKTtyZXR1cm4gbjw9aSYmbjw9YT90Omk8PWE\/ZTpyfSxsPWZ1bmN0aW9uKCl7cmV0dXJuW2ksYSxvLHMsY119LGg9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtNYXRoLmFicyhlKX0pLDApfSkpO3JldHVybiBlLmluZGV4T2YoTWF0aC5taW4uYXBwbHkobnVsbCxlKSl9O3QucHJvY2Vzc1BORz1mdW5jdGlvbihuLGksYSxvKXt2YXIgcyxjLHUsbCxoLGYsZCxwLGcsbSx2LGIseSx3LE4sTD10aGlzLmRlY29kZS5GTEFURV9ERUNPREUsQT0iIjtpZih0aGlzLl9fYWRkaW1hZ2VfXy5pc0FycmF5QnVmZmVyKG4pJiYobj1uZXcgVWludDhBcnJheShuKSksdGhpcy5fX2FkZGltYWdlX18uaXNBcnJheUJ1ZmZlclZpZXcobikpe2lmKG49KHU9bmV3IE9lKG4pKS5pbWdEYXRhLGM9dS5iaXRzLHM9dS5jb2xvclNwYWNlLGg9dS5jb2xvcnMsLTEhPT1bNCw2XS5pbmRleE9mKHUuY29sb3JUeXBlKSl7aWYoOD09PXUuYml0cyl7Zz0ocD0zMj09dS5waXhlbEJpdGxlbmd0aD9uZXcgVWludDMyQXJyYXkodS5kZWNvZGVQaXhlbHMoKS5idWZmZXIpOjE2PT11LnBpeGVsQml0bGVuZ3RoP25ldyBVaW50MTZBcnJheSh1LmRlY29kZVBpeGVscygpLmJ1ZmZlcik6bmV3IFVpbnQ4QXJyYXkodS5kZWNvZGVQaXhlbHMoKS5idWZmZXIpKS5sZW5ndGgsdj1uZXcgVWludDhBcnJheShnKnUuY29sb3JzKSxtPW5ldyBVaW50OEFycmF5KGcpO3ZhciB4LFM9dS5waXhlbEJpdGxlbmd0aC11LmJpdHM7Zm9yKHc9MCxOPTA7dzxnO3crKyl7Zm9yKHk9cFt3XSx4PTA7eDxTOyl2W04rK109eT4+PngmMjU1LHgrPXUuYml0czttW3ddPXk+Pj54JjI1NX19aWYoMTY9PT11LmJpdHMpe2c9KHA9bmV3IFVpbnQzMkFycmF5KHUuZGVjb2RlUGl4ZWxzKCkuYnVmZmVyKSkubGVuZ3RoLHY9bmV3IFVpbnQ4QXJyYXkoZyooMzIvdS5waXhlbEJpdGxlbmd0aCkqdS5jb2xvcnMpLG09bmV3IFVpbnQ4QXJyYXkoZyooMzIvdS5waXhlbEJpdGxlbmd0aCkpLGI9dS5jb2xvcnM+MSx3PTAsTj0wO2Zvcih2YXIgXz0wO3c8ZzspeT1wW3crK10sdltOKytdPXk+Pj4wJjI1NSxiJiYodltOKytdPXk+Pj4xNiYyNTUseT1wW3crK10sdltOKytdPXk+Pj4wJjI1NSksbVtfKytdPXk+Pj4xNiYyNTU7Yz04fW8hPT10LmltYWdlX2NvbXByZXNzaW9uLk5PTkUmJmUoKT8obj1yKHYsdS53aWR0aCp1LmNvbG9ycyx1LmNvbG9ycyxvKSxkPXIobSx1LndpZHRoLDEsbykpOihuPXYsZD1tLEw9dm9pZCAwKX1pZigzPT09dS5jb2xvclR5cGUmJihzPXRoaXMuY29sb3Jfc3BhY2VzLklOREVYRUQsZj11LnBhbGV0dGUsdS50cmFuc3BhcmVuY3kuaW5kZXhlZCkpe3ZhciBQPXUudHJhbnNwYXJlbmN5LmluZGV4ZWQsaz0wO2Zvcih3PTAsZz1QLmxlbmd0aDt3PGc7Kyt3KWsrPVBbd107aWYoKGsvPTI1NSk9PT1nLTEmJi0xIT09UC5pbmRleE9mKDApKWw9W1AuaW5kZXhPZigwKV07ZWxzZSBpZihrIT09Zyl7Zm9yKHA9dS5kZWNvZGVQaXhlbHMoKSxtPW5ldyBVaW50OEFycmF5KHAubGVuZ3RoKSx3PTAsZz1wLmxlbmd0aDt3PGc7dysrKW1bd109UFtwW3ddXTtkPXIobSx1LndpZHRoLDEpfX12YXIgRj1mdW5jdGlvbihlKXt2YXIgcjtzd2l0Y2goZSl7Y2FzZSB0LmltYWdlX2NvbXByZXNzaW9uLkZBU1Q6cj0xMTticmVhaztjYXNlIHQuaW1hZ2VfY29tcHJlc3Npb24uTUVESVVNOnI9MTM7YnJlYWs7Y2FzZSB0LmltYWdlX2NvbXByZXNzaW9uLlNMT1c6cj0xNDticmVhaztkZWZhdWx0OnI9MTJ9cmV0dXJuIHJ9KG8pO3JldHVybiBMPT09dGhpcy5kZWNvZGUuRkxBVEVfREVDT0RFJiYoQT0iL1ByZWRpY3RvciAiK0YrIiAiKSxBKz0iL0NvbG9ycyAiK2grIiAvQml0c1BlckNvbXBvbmVudCAiK2MrIiAvQ29sdW1ucyAiK3Uud2lkdGgsKHRoaXMuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXIobil8fHRoaXMuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXJWaWV3KG4pKSYmKG49dGhpcy5fX2FkZGltYWdlX18uYXJyYXlCdWZmZXJUb0JpbmFyeVN0cmluZyhuKSksKGQmJnRoaXMuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXIoZCl8fHRoaXMuX19hZGRpbWFnZV9fLmlzQXJyYXlCdWZmZXJWaWV3KGQpKSYmKGQ9dGhpcy5fX2FkZGltYWdlX18uYXJyYXlCdWZmZXJUb0JpbmFyeVN0cmluZyhkKSkse2FsaWFzOmEsZGF0YTpuLGluZGV4OmksZmlsdGVyOkwsZGVjb2RlUGFyYW1ldGVyczpBLHRyYW5zcGFyZW5jeTpsLHBhbGV0dGU6ZixzTWFzazpkLHByZWRpY3RvcjpGLHdpZHRoOnUud2lkdGgsaGVpZ2h0OnUuaGVpZ2h0LGJpdHNQZXJDb21wb25lbnQ6Yyxjb2xvclNwYWNlOnN9fX19KE0uQVBJKSxmdW5jdGlvbih0KXt0LnByb2Nlc3NHSUY4OUE9ZnVuY3Rpb24oZSxyLG4saSl7dmFyIGE9bmV3IEJlKGUpLG89YS53aWR0aCxzPWEuaGVpZ2h0LGM9W107YS5kZWNvZGVBbmRCbGl0RnJhbWVSR0JBKDAsYyk7dmFyIHU9e2RhdGE6Yyx3aWR0aDpvLGhlaWdodDpzfSxsPW5ldyBFZSgxMDApLmVuY29kZSh1LDEwMCk7cmV0dXJuIHQucHJvY2Vzc0pQRUcuY2FsbCh0aGlzLGwscixuLGkpfSx0LnByb2Nlc3NHSUY4N0E9dC5wcm9jZXNzR0lGODlBfShNLkFQSSkscWUucHJvdG90eXBlLnBhcnNlSGVhZGVyPWZ1bmN0aW9uKCl7aWYodGhpcy5maWxlU2l6ZT10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5yZXNlcnZlZD10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5vZmZzZXQ9dGhpcy5kYXRhdi5nZXRVaW50MzIodGhpcy5wb3MsITApLHRoaXMucG9zKz00LHRoaXMuaGVhZGVyU2l6ZT10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy53aWR0aD10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5oZWlnaHQ9dGhpcy5kYXRhdi5nZXRJbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5wbGFuZXM9dGhpcy5kYXRhdi5nZXRVaW50MTYodGhpcy5wb3MsITApLHRoaXMucG9zKz0yLHRoaXMuYml0UFA9dGhpcy5kYXRhdi5nZXRVaW50MTYodGhpcy5wb3MsITApLHRoaXMucG9zKz0yLHRoaXMuY29tcHJlc3M9dGhpcy5kYXRhdi5nZXRVaW50MzIodGhpcy5wb3MsITApLHRoaXMucG9zKz00LHRoaXMucmF3U2l6ZT10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5ocj10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy52cj10aGlzLmRhdGF2LmdldFVpbnQzMih0aGlzLnBvcywhMCksdGhpcy5wb3MrPTQsdGhpcy5jb2xvcnM9dGhpcy5kYXRhdi5nZXRVaW50MzIodGhpcy5wb3MsITApLHRoaXMucG9zKz00LHRoaXMuaW1wb3J0YW50Q29sb3JzPXRoaXMuZGF0YXYuZ2V0VWludDMyKHRoaXMucG9zLCEwKSx0aGlzLnBvcys9NCwxNj09PXRoaXMuYml0UFAmJnRoaXMuaXNfd2l0aF9hbHBoYSYmKHRoaXMuYml0UFA9MTUpLHRoaXMuYml0UFA8MTUpe3ZhciB0PTA9PT10aGlzLmNvbG9ycz8xPDx0aGlzLmJpdFBQOnRoaXMuY29sb3JzO3RoaXMucGFsZXR0ZT1uZXcgQXJyYXkodCk7Zm9yKHZhciBlPTA7ZTx0O2UrKyl7dmFyIHI9dGhpcy5kYXRhdi5nZXRVaW50OCh0aGlzLnBvcysrLCEwKSxuPXRoaXMuZGF0YXYuZ2V0VWludDgodGhpcy5wb3MrKywhMCksaT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLGE9dGhpcy5kYXRhdi5nZXRVaW50OCh0aGlzLnBvcysrLCEwKTt0aGlzLnBhbGV0dGVbZV09e3JlZDppLGdyZWVuOm4sYmx1ZTpyLHF1YWQ6YX19fXRoaXMuaGVpZ2h0PDAmJih0aGlzLmhlaWdodCo9LTEsdGhpcy5ib3R0b21fdXA9ITEpfSxxZS5wcm90b3R5cGUucGFyc2VCR1I9ZnVuY3Rpb24oKXt0aGlzLnBvcz10aGlzLm9mZnNldDt0cnl7dmFyIHQ9ImJpdCIrdGhpcy5iaXRQUCxlPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQqNDt0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZSksdGhpc1t0XSgpfWNhdGNoKHQpe2kubG9nKCJiaXQgZGVjb2RlIGVycm9yOiIrdCl9fSxxZS5wcm90b3R5cGUuYml0MT1mdW5jdGlvbigpe3ZhciB0LGU9TWF0aC5jZWlsKHRoaXMud2lkdGgvOCkscj1lJTQ7Zm9yKHQ9dGhpcy5oZWlnaHQtMTt0Pj0wO3QtLSl7Zm9yKHZhciBuPXRoaXMuYm90dG9tX3VwP3Q6dGhpcy5oZWlnaHQtMS10LGk9MDtpPGU7aSsrKWZvcih2YXIgYT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLG89bip0aGlzLndpZHRoKjQrOCppKjQscz0wO3M8OCYmOCppK3M8dGhpcy53aWR0aDtzKyspe3ZhciBjPXRoaXMucGFsZXR0ZVthPj43LXMmMV07dGhpcy5kYXRhW28rNCpzXT1jLmJsdWUsdGhpcy5kYXRhW28rNCpzKzFdPWMuZ3JlZW4sdGhpcy5kYXRhW28rNCpzKzJdPWMucmVkLHRoaXMuZGF0YVtvKzQqcyszXT0yNTV9MCE9PXImJih0aGlzLnBvcys9NC1yKX19LHFlLnByb3RvdHlwZS5iaXQ0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PU1hdGguY2VpbCh0aGlzLndpZHRoLzIpLGU9dCU0LHI9dGhpcy5oZWlnaHQtMTtyPj0wO3ItLSl7Zm9yKHZhciBuPXRoaXMuYm90dG9tX3VwP3I6dGhpcy5oZWlnaHQtMS1yLGk9MDtpPHQ7aSsrKXt2YXIgYT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLG89bip0aGlzLndpZHRoKjQrMippKjQscz1hPj40LGM9MTUmYSx1PXRoaXMucGFsZXR0ZVtzXTtpZih0aGlzLmRhdGFbb109dS5ibHVlLHRoaXMuZGF0YVtvKzFdPXUuZ3JlZW4sdGhpcy5kYXRhW28rMl09dS5yZWQsdGhpcy5kYXRhW28rM109MjU1LDIqaSsxPj10aGlzLndpZHRoKWJyZWFrO3U9dGhpcy5wYWxldHRlW2NdLHRoaXMuZGF0YVtvKzRdPXUuYmx1ZSx0aGlzLmRhdGFbbys0KzFdPXUuZ3JlZW4sdGhpcy5kYXRhW28rNCsyXT11LnJlZCx0aGlzLmRhdGFbbys0KzNdPTI1NX0wIT09ZSYmKHRoaXMucG9zKz00LWUpfX0scWUucHJvdG90eXBlLmJpdDg9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53aWR0aCU0LGU9dGhpcy5oZWlnaHQtMTtlPj0wO2UtLSl7Zm9yKHZhciByPXRoaXMuYm90dG9tX3VwP2U6dGhpcy5oZWlnaHQtMS1lLG49MDtuPHRoaXMud2lkdGg7bisrKXt2YXIgaT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLGE9cip0aGlzLndpZHRoKjQrNCpuO2lmKGk8dGhpcy5wYWxldHRlLmxlbmd0aCl7dmFyIG89dGhpcy5wYWxldHRlW2ldO3RoaXMuZGF0YVthXT1vLnJlZCx0aGlzLmRhdGFbYSsxXT1vLmdyZWVuLHRoaXMuZGF0YVthKzJdPW8uYmx1ZSx0aGlzLmRhdGFbYSszXT0yNTV9ZWxzZSB0aGlzLmRhdGFbYV09MjU1LHRoaXMuZGF0YVthKzFdPTI1NSx0aGlzLmRhdGFbYSsyXT0yNTUsdGhpcy5kYXRhW2ErM109MjU1fTAhPT10JiYodGhpcy5wb3MrPTQtdCl9fSxxZS5wcm90b3R5cGUuYml0MTU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53aWR0aCUzLGU9cGFyc2VJbnQoIjExMTExIiwyKSxyPXRoaXMuaGVpZ2h0LTE7cj49MDtyLS0pe2Zvcih2YXIgbj10aGlzLmJvdHRvbV91cD9yOnRoaXMuaGVpZ2h0LTEtcixpPTA7aTx0aGlzLndpZHRoO2krKyl7dmFyIGE9dGhpcy5kYXRhdi5nZXRVaW50MTYodGhpcy5wb3MsITApO3RoaXMucG9zKz0yO3ZhciBvPShhJmUpL2UqMjU1fDAscz0oYT4+NSZlKS9lKjI1NXwwLGM9KGE+PjEwJmUpL2UqMjU1fDAsdT1hPj4xNT8yNTU6MCxsPW4qdGhpcy53aWR0aCo0KzQqaTt0aGlzLmRhdGFbbF09Yyx0aGlzLmRhdGFbbCsxXT1zLHRoaXMuZGF0YVtsKzJdPW8sdGhpcy5kYXRhW2wrM109dX10aGlzLnBvcys9dH19LHFlLnByb3RvdHlwZS5iaXQxNj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndpZHRoJTMsZT1wYXJzZUludCgiMTExMTEiLDIpLHI9cGFyc2VJbnQoIjExMTExMSIsMiksbj10aGlzLmhlaWdodC0xO24+PTA7bi0tKXtmb3IodmFyIGk9dGhpcy5ib3R0b21fdXA\/bjp0aGlzLmhlaWdodC0xLW4sYT0wO2E8dGhpcy53aWR0aDthKyspe3ZhciBvPXRoaXMuZGF0YXYuZ2V0VWludDE2KHRoaXMucG9zLCEwKTt0aGlzLnBvcys9Mjt2YXIgcz0obyZlKS9lKjI1NXwwLGM9KG8+PjUmcikvcioyNTV8MCx1PShvPj4xMSkvZSoyNTV8MCxsPWkqdGhpcy53aWR0aCo0KzQqYTt0aGlzLmRhdGFbbF09dSx0aGlzLmRhdGFbbCsxXT1jLHRoaXMuZGF0YVtsKzJdPXMsdGhpcy5kYXRhW2wrM109MjU1fXRoaXMucG9zKz10fX0scWUucHJvdG90eXBlLmJpdDI0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuaGVpZ2h0LTE7dD49MDt0LS0pe2Zvcih2YXIgZT10aGlzLmJvdHRvbV91cD90OnRoaXMuaGVpZ2h0LTEtdCxyPTA7cjx0aGlzLndpZHRoO3IrKyl7dmFyIG49dGhpcy5kYXRhdi5nZXRVaW50OCh0aGlzLnBvcysrLCEwKSxpPXRoaXMuZGF0YXYuZ2V0VWludDgodGhpcy5wb3MrKywhMCksYT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLG89ZSp0aGlzLndpZHRoKjQrNCpyO3RoaXMuZGF0YVtvXT1hLHRoaXMuZGF0YVtvKzFdPWksdGhpcy5kYXRhW28rMl09bix0aGlzLmRhdGFbbyszXT0yNTV9dGhpcy5wb3MrPXRoaXMud2lkdGglNH19LHFlLnByb3RvdHlwZS5iaXQzMj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmhlaWdodC0xO3Q+PTA7dC0tKWZvcih2YXIgZT10aGlzLmJvdHRvbV91cD90OnRoaXMuaGVpZ2h0LTEtdCxyPTA7cjx0aGlzLndpZHRoO3IrKyl7dmFyIG49dGhpcy5kYXRhdi5nZXRVaW50OCh0aGlzLnBvcysrLCEwKSxpPXRoaXMuZGF0YXYuZ2V0VWludDgodGhpcy5wb3MrKywhMCksYT10aGlzLmRhdGF2LmdldFVpbnQ4KHRoaXMucG9zKyssITApLG89dGhpcy5kYXRhdi5nZXRVaW50OCh0aGlzLnBvcysrLCEwKSxzPWUqdGhpcy53aWR0aCo0KzQqcjt0aGlzLmRhdGFbc109YSx0aGlzLmRhdGFbcysxXT1pLHRoaXMuZGF0YVtzKzJdPW4sdGhpcy5kYXRhW3MrM109b319LHFlLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX0sCi8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IChjKSAyMDE4IEFyYXMgQWJiYXNpCiAgICoKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICovCmZ1bmN0aW9uKHQpe3QucHJvY2Vzc0JNUD1mdW5jdGlvbihlLHIsbixpKXt2YXIgYT1uZXcgcWUoZSwhMSksbz1hLndpZHRoLHM9YS5oZWlnaHQsYz17ZGF0YTphLmdldERhdGEoKSx3aWR0aDpvLGhlaWdodDpzfSx1PW5ldyBFZSgxMDApLmVuY29kZShjLDEwMCk7cmV0dXJuIHQucHJvY2Vzc0pQRUcuY2FsbCh0aGlzLHUscixuLGkpfX0oTS5BUEkpLERlLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX0sCi8qKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IChjKSAyMDE5IEFyYXMgQWJiYXNpCiAgICoKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICovCmZ1bmN0aW9uKHQpe3QucHJvY2Vzc1dFQlA9ZnVuY3Rpb24oZSxyLG4saSl7dmFyIGE9bmV3IERlKGUsITEpLG89YS53aWR0aCxzPWEuaGVpZ2h0LGM9e2RhdGE6YS5nZXREYXRhKCksd2lkdGg6byxoZWlnaHQ6c30sdT1uZXcgRWUoMTAwKS5lbmNvZGUoYywxMDApO3JldHVybiB0LnByb2Nlc3NKUEVHLmNhbGwodGhpcyx1LHIsbixpKX19KE0uQVBJKSwKLyoqCiAgICogQGxpY2Vuc2UKICAgKgogICAqIENvcHlyaWdodCAoYykgMjAyMSBBbnR0aSBQYWxvbGEsIGh0dHBzOi8vZ2l0aHViLmNvbS9QYW50dXJhCiAgICoKICAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICAgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiAgICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAogICAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogICAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICAgKgogICAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiAgICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAgICoKICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICAgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKICAgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAogICAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKICAgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCiAgICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCiAgICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgKi8KZnVuY3Rpb24odCl7dC5wcm9jZXNzUkdCQT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPXQuZGF0YSxpPW4ubGVuZ3RoLGE9bmV3IFVpbnQ4QXJyYXkoaS80KjMpLG89bmV3IFVpbnQ4QXJyYXkoaS80KSxzPTAsYz0wLHU9MDt1PGk7dSs9NCl7dmFyIGw9blt1XSxoPW5bdSsxXSxmPW5bdSsyXSxkPW5bdSszXTthW3MrK109bCxhW3MrK109aCxhW3MrK109ZixvW2MrK109ZH12YXIgcD10aGlzLl9fYWRkaW1hZ2VfXy5hcnJheUJ1ZmZlclRvQmluYXJ5U3RyaW5nKGEpO3JldHVybnthbHBoYTp0aGlzLl9fYWRkaW1hZ2VfXy5hcnJheUJ1ZmZlclRvQmluYXJ5U3RyaW5nKG8pLGRhdGE6cCxpbmRleDplLGFsaWFzOnIsY29sb3JTcGFjZToiRGV2aWNlUkdCIixiaXRzUGVyQ29tcG9uZW50Ojgsd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KICAgKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UKICAgKi8KZnVuY3Rpb24odCl7dC5zZXRMYW5ndWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5pbnRlcm5hbC5sYW5ndWFnZVNldHRpbmdzJiYodGhpcy5pbnRlcm5hbC5sYW5ndWFnZVNldHRpbmdzPXt9LHRoaXMuaW50ZXJuYWwubGFuZ3VhZ2VTZXR0aW5ncy5pc1N1YnNjcmliZWQ9ITEpLHZvaWQgMCE9PXthZjoiQWZyaWthYW5zIixzcToiQWxiYW5pYW4iLGFyOiJBcmFiaWMgKFN0YW5kYXJkKSIsImFyLURaIjoiQXJhYmljIChBbGdlcmlhKSIsImFyLUJIIjoiQXJhYmljIChCYWhyYWluKSIsImFyLUVHIjoiQXJhYmljIChFZ3lwdCkiLCJhci1JUSI6IkFyYWJpYyAoSXJhcSkiLCJhci1KTyI6IkFyYWJpYyAoSm9yZGFuKSIsImFyLUtXIjoiQXJhYmljIChLdXdhaXQpIiwiYXItTEIiOiJBcmFiaWMgKExlYmFub24pIiwiYXItTFkiOiJBcmFiaWMgKExpYnlhKSIsImFyLU1BIjoiQXJhYmljIChNb3JvY2NvKSIsImFyLU9NIjoiQXJhYmljIChPbWFuKSIsImFyLVFBIjoiQXJhYmljIChRYXRhcikiLCJhci1TQSI6IkFyYWJpYyAoU2F1ZGkgQXJhYmlhKSIsImFyLVNZIjoiQXJhYmljIChTeXJpYSkiLCJhci1UTiI6IkFyYWJpYyAoVHVuaXNpYSkiLCJhci1BRSI6IkFyYWJpYyAoVS5BLkUuKSIsImFyLVlFIjoiQXJhYmljIChZZW1lbikiLGFuOiJBcmFnb25lc2UiLGh5OiJBcm1lbmlhbiIsYXM6IkFzc2FtZXNlIixhc3Q6IkFzdHVyaWFuIixhejoiQXplcmJhaWphbmkiLGV1OiJCYXNxdWUiLGJlOiJCZWxhcnVzaWFuIixibjoiQmVuZ2FsaSIsYnM6IkJvc25pYW4iLGJyOiJCcmV0b24iLGJnOiJCdWxnYXJpYW4iLG15OiJCdXJtZXNlIixjYToiQ2F0YWxhbiIsY2g6IkNoYW1vcnJvIixjZToiQ2hlY2hlbiIsemg6IkNoaW5lc2UiLCJ6aC1ISyI6IkNoaW5lc2UgKEhvbmcgS29uZykiLCJ6aC1DTiI6IkNoaW5lc2UgKFBSQykiLCJ6aC1TRyI6IkNoaW5lc2UgKFNpbmdhcG9yZSkiLCJ6aC1UVyI6IkNoaW5lc2UgKFRhaXdhbikiLGN2OiJDaHV2YXNoIixjbzoiQ29yc2ljYW4iLGNyOiJDcmVlIixocjoiQ3JvYXRpYW4iLGNzOiJDemVjaCIsZGE6IkRhbmlzaCIsbmw6IkR1dGNoIChTdGFuZGFyZCkiLCJubC1CRSI6IkR1dGNoIChCZWxnaWFuKSIsZW46IkVuZ2xpc2giLCJlbi1BVSI6IkVuZ2xpc2ggKEF1c3RyYWxpYSkiLCJlbi1CWiI6IkVuZ2xpc2ggKEJlbGl6ZSkiLCJlbi1DQSI6IkVuZ2xpc2ggKENhbmFkYSkiLCJlbi1JRSI6IkVuZ2xpc2ggKElyZWxhbmQpIiwiZW4tSk0iOiJFbmdsaXNoIChKYW1haWNhKSIsImVuLU5aIjoiRW5nbGlzaCAoTmV3IFplYWxhbmQpIiwiZW4tUEgiOiJFbmdsaXNoIChQaGlsaXBwaW5lcykiLCJlbi1aQSI6IkVuZ2xpc2ggKFNvdXRoIEFmcmljYSkiLCJlbi1UVCI6IkVuZ2xpc2ggKFRyaW5pZGFkICYgVG9iYWdvKSIsImVuLUdCIjoiRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pIiwiZW4tVVMiOiJFbmdsaXNoIChVbml0ZWQgU3RhdGVzKSIsImVuLVpXIjoiRW5nbGlzaCAoWmltYmFid2UpIixlbzoiRXNwZXJhbnRvIixldDoiRXN0b25pYW4iLGZvOiJGYWVyb2VzZSIsZmo6IkZpamlhbiIsZmk6IkZpbm5pc2giLGZyOiJGcmVuY2ggKFN0YW5kYXJkKSIsImZyLUJFIjoiRnJlbmNoIChCZWxnaXVtKSIsImZyLUNBIjoiRnJlbmNoIChDYW5hZGEpIiwiZnItRlIiOiJGcmVuY2ggKEZyYW5jZSkiLCJmci1MVSI6IkZyZW5jaCAoTHV4ZW1ib3VyZykiLCJmci1NQyI6IkZyZW5jaCAoTW9uYWNvKSIsImZyLUNIIjoiRnJlbmNoIChTd2l0emVybGFuZCkiLGZ5OiJGcmlzaWFuIixmdXI6IkZyaXVsaWFuIixnZDoiR2FlbGljIChTY290cykiLCJnZC1JRSI6IkdhZWxpYyAoSXJpc2gpIixnbDoiR2FsYWNpYW4iLGthOiJHZW9yZ2lhbiIsZGU6Ikdlcm1hbiAoU3RhbmRhcmQpIiwiZGUtQVQiOiJHZXJtYW4gKEF1c3RyaWEpIiwiZGUtREUiOiJHZXJtYW4gKEdlcm1hbnkpIiwiZGUtTEkiOiJHZXJtYW4gKExpZWNodGVuc3RlaW4pIiwiZGUtTFUiOiJHZXJtYW4gKEx1eGVtYm91cmcpIiwiZGUtQ0giOiJHZXJtYW4gKFN3aXR6ZXJsYW5kKSIsZWw6IkdyZWVrIixndToiR3VqdXJhdGkiLGh0OiJIYWl0aWFuIixoZToiSGVicmV3IixoaToiSGluZGkiLGh1OiJIdW5nYXJpYW4iLGlzOiJJY2VsYW5kaWMiLGlkOiJJbmRvbmVzaWFuIixpdToiSW51a3RpdHV0IixnYToiSXJpc2giLGl0OiJJdGFsaWFuIChTdGFuZGFyZCkiLCJpdC1DSCI6Ikl0YWxpYW4gKFN3aXR6ZXJsYW5kKSIsamE6IkphcGFuZXNlIixrbjoiS2FubmFkYSIsa3M6Ikthc2htaXJpIixrazoiS2F6YWtoIixrbToiS2htZXIiLGt5OiJLaXJnaGl6Iix0bGg6IktsaW5nb24iLGtvOiJLb3JlYW4iLCJrby1LUCI6IktvcmVhbiAoTm9ydGggS29yZWEpIiwia28tS1IiOiJLb3JlYW4gKFNvdXRoIEtvcmVhKSIsbGE6IkxhdGluIixsdjoiTGF0dmlhbiIsbHQ6IkxpdGh1YW5pYW4iLGxiOiJMdXhlbWJvdXJnaXNoIixtazoiTm9ydGggTWFjZWRvbmlhIixtczoiTWFsYXkiLG1sOiJNYWxheWFsYW0iLG10OiJNYWx0ZXNlIixtaToiTWFvcmkiLG1yOiJNYXJhdGhpIixtbzoiTW9sZGF2aWFuIixudjoiTmF2YWpvIixuZzoiTmRvbmdhIixuZToiTmVwYWxpIixubzoiTm9yd2VnaWFuIixuYjoiTm9yd2VnaWFuIChCb2ttYWwpIixubjoiTm9yd2VnaWFuIChOeW5vcnNrKSIsb2M6Ik9jY2l0YW4iLG9yOiJPcml5YSIsb206Ik9yb21vIixmYToiUGVyc2lhbiIsImZhLUlSIjoiUGVyc2lhbi9JcmFuIixwbDoiUG9saXNoIixwdDoiUG9ydHVndWVzZSIsInB0LUJSIjoiUG9ydHVndWVzZSAoQnJhemlsKSIscGE6IlB1bmphYmkiLCJwYS1JTiI6IlB1bmphYmkgKEluZGlhKSIsInBhLVBLIjoiUHVuamFiaSAoUGFraXN0YW4pIixxdToiUXVlY2h1YSIscm06IlJoYWV0by1Sb21hbmljIixybzoiUm9tYW5pYW4iLCJyby1NTyI6IlJvbWFuaWFuIChNb2xkYXZpYSkiLHJ1OiJSdXNzaWFuIiwicnUtTU8iOiJSdXNzaWFuIChNb2xkYXZpYSkiLHN6OiJTYW1pIChMYXBwaXNoKSIsc2c6IlNhbmdvIixzYToiU2Fuc2tyaXQiLHNjOiJTYXJkaW5pYW4iLHNkOiJTaW5kaGkiLHNpOiJTaW5naGFsZXNlIixzcjoiU2VyYmlhbiIsc2s6IlNsb3ZhayIsc2w6IlNsb3ZlbmlhbiIsc286IlNvbWFuaSIsc2I6IlNvcmJpYW4iLGVzOiJTcGFuaXNoIiwiZXMtQVIiOiJTcGFuaXNoIChBcmdlbnRpbmEpIiwiZXMtQk8iOiJTcGFuaXNoIChCb2xpdmlhKSIsImVzLUNMIjoiU3BhbmlzaCAoQ2hpbGUpIiwiZXMtQ08iOiJTcGFuaXNoIChDb2xvbWJpYSkiLCJlcy1DUiI6IlNwYW5pc2ggKENvc3RhIFJpY2EpIiwiZXMtRE8iOiJTcGFuaXNoIChEb21pbmljYW4gUmVwdWJsaWMpIiwiZXMtRUMiOiJTcGFuaXNoIChFY3VhZG9yKSIsImVzLVNWIjoiU3BhbmlzaCAoRWwgU2FsdmFkb3IpIiwiZXMtR1QiOiJTcGFuaXNoIChHdWF0ZW1hbGEpIiwiZXMtSE4iOiJTcGFuaXNoIChIb25kdXJhcykiLCJlcy1NWCI6IlNwYW5pc2ggKE1leGljbykiLCJlcy1OSSI6IlNwYW5pc2ggKE5pY2FyYWd1YSkiLCJlcy1QQSI6IlNwYW5pc2ggKFBhbmFtYSkiLCJlcy1QWSI6IlNwYW5pc2ggKFBhcmFndWF5KSIsImVzLVBFIjoiU3BhbmlzaCAoUGVydSkiLCJlcy1QUiI6IlNwYW5pc2ggKFB1ZXJ0byBSaWNvKSIsImVzLUVTIjoiU3BhbmlzaCAoU3BhaW4pIiwiZXMtVVkiOiJTcGFuaXNoIChVcnVndWF5KSIsImVzLVZFIjoiU3BhbmlzaCAoVmVuZXp1ZWxhKSIsc3g6IlN1dHUiLHN3OiJTd2FoaWxpIixzdjoiU3dlZGlzaCIsInN2LUZJIjoiU3dlZGlzaCAoRmlubGFuZCkiLCJzdi1TViI6IlN3ZWRpc2ggKFN3ZWRlbikiLHRhOiJUYW1pbCIsdHQ6IlRhdGFyIix0ZToiVGVsdWdhIix0aDoiVGhhaSIsdGlnOiJUaWdyZSIsdHM6IlRzb25nYSIsdG46IlRzd2FuYSIsdHI6IlR1cmtpc2giLHRrOiJUdXJrbWVuIix1azoiVWtyYWluaWFuIixoc2I6IlVwcGVyIFNvcmJpYW4iLHVyOiJVcmR1Iix2ZToiVmVuZGEiLHZpOiJWaWV0bmFtZXNlIix2bzoiVm9sYXB1ayIsd2E6IldhbGxvb24iLGN5OiJXZWxzaCIseGg6Ilhob3NhIixqaToiWWlkZGlzaCIsenU6Ilp1bHUifVt0XSYmKHRoaXMuaW50ZXJuYWwubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZUNvZGU9dCwhMT09PXRoaXMuaW50ZXJuYWwubGFuZ3VhZ2VTZXR0aW5ncy5pc1N1YnNjcmliZWQmJih0aGlzLmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInB1dENhdGFsb2ciLChmdW5jdGlvbigpe3RoaXMuaW50ZXJuYWwud3JpdGUoIi9MYW5nICgiK3RoaXMuaW50ZXJuYWwubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZUNvZGUrIikiKX0pKSx0aGlzLmludGVybmFsLmxhbmd1YWdlU2V0dGluZ3MuaXNTdWJzY3JpYmVkPSEwKSksdGhpc319KE0uQVBJKSxrZT1NLkFQSSxGZT1rZS5nZXRDaGFyV2lkdGhzQXJyYXk9ZnVuY3Rpb24odCxyKXt2YXIgbixpLGE9KHI9cnx8e30pLmZvbnR8fHRoaXMuaW50ZXJuYWwuZ2V0Rm9udCgpLG89ci5mb250U2l6ZXx8dGhpcy5pbnRlcm5hbC5nZXRGb250U2l6ZSgpLHM9ci5jaGFyU3BhY2V8fHRoaXMuaW50ZXJuYWwuZ2V0Q2hhclNwYWNlKCksYz1yLndpZHRocz9yLndpZHRoczphLm1ldGFkYXRhLlVuaWNvZGUud2lkdGhzLHU9Yy5mb2Y\/Yy5mb2Y6MSxsPXIua2VybmluZz9yLmtlcm5pbmc6YS5tZXRhZGF0YS5Vbmljb2RlLmtlcm5pbmcsaD1sLmZvZj9sLmZvZjoxLGY9ITEhPT1yLmRvS2VybmluZyxkPTAscD10Lmxlbmd0aCxnPTAsbT1jWzBdfHx1LHY9W107Zm9yKG49MDtuPHA7bisrKWk9dC5jaGFyQ29kZUF0KG4pLCJmdW5jdGlvbiI9PXR5cGVvZiBhLm1ldGFkYXRhLndpZHRoT2ZTdHJpbmc\/di5wdXNoKChhLm1ldGFkYXRhLndpZHRoT2ZHbHlwaChhLm1ldGFkYXRhLmNoYXJhY3RlclRvR2x5cGgoaSkpK3MqKDFlMy9vKXx8MCkvMWUzKTooZD1mJiYib2JqZWN0Ij09PWUobFtpXSkmJiFpc05hTihwYXJzZUludChsW2ldW2ddLDEwKSk\/bFtpXVtnXS9oOjAsdi5wdXNoKChjW2ldfHxtKS91K2QpKSxnPWk7cmV0dXJuIHZ9LEllPWtlLmdldFN0cmluZ1VuaXRXaWR0aD1mdW5jdGlvbih0LGUpe3ZhciByPShlPWV8fHt9KS5mb250U2l6ZXx8dGhpcy5pbnRlcm5hbC5nZXRGb250U2l6ZSgpLG49ZS5mb250fHx0aGlzLmludGVybmFsLmdldEZvbnQoKSxpPWUuY2hhclNwYWNlfHx0aGlzLmludGVybmFsLmdldENoYXJTcGFjZSgpO3JldHVybiBrZS5wcm9jZXNzQXJhYmljJiYodD1rZS5wcm9jZXNzQXJhYmljKHQpKSwiZnVuY3Rpb24iPT10eXBlb2Ygbi5tZXRhZGF0YS53aWR0aE9mU3RyaW5nP24ubWV0YWRhdGEud2lkdGhPZlN0cmluZyh0LHIsaSkvcjpGZS5hcHBseSh0aGlzLGFyZ3VtZW50cykucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX0sQ2U9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPVtdLGE9MCxvPXQubGVuZ3RoLHM9MDthIT09byYmcytlW2FdPHI7KXMrPWVbYV0sYSsrO2kucHVzaCh0LnNsaWNlKDAsYSkpO3ZhciBjPWE7Zm9yKHM9MDthIT09bzspcytlW2FdPm4mJihpLnB1c2godC5zbGljZShjLGEpKSxzPTAsYz1hKSxzKz1lW2FdLGErKztyZXR1cm4gYyE9PWEmJmkucHVzaCh0LnNsaWNlKGMsYSkpLGl9LGplPWZ1bmN0aW9uKHQsZSxyKXtyfHwocj17fSk7dmFyIG4saSxhLG8scyxjLHUsbD1bXSxoPVtsXSxmPXIudGV4dEluZGVudHx8MCxkPTAscD0wLGc9dC5zcGxpdCgiICIpLG09RmUuYXBwbHkodGhpcyxbIiAiLHJdKVswXTtpZihjPS0xPT09ci5saW5lSW5kZW50P2dbMF0ubGVuZ3RoKzI6ci5saW5lSW5kZW50fHwwKXt2YXIgdj1BcnJheShjKS5qb2luKCIgIiksYj1bXTtnLm1hcCgoZnVuY3Rpb24odCl7KHQ9dC5zcGxpdCgvXHMqXG4vKSkubGVuZ3RoPjE\/Yj1iLmNvbmNhdCh0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4oZSYmdC5sZW5ndGg\/IlxuIjoiIikrdH0pKSk6Yi5wdXNoKHRbMF0pfSkpLGc9YixjPUllLmFwcGx5KHRoaXMsW3Yscl0pfWZvcihhPTAsbz1nLmxlbmd0aDthPG87YSsrKXt2YXIgeT0wO2lmKG49Z1thXSxjJiYiXG4iPT1uWzBdJiYobj1uLnN1YnN0cigxKSx5PTEpLGYrZCsocD0oaT1GZS5hcHBseSh0aGlzLFtuLHJdKSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKSk+ZXx8eSl7aWYocD5lKXtmb3Iocz1DZS5hcHBseSh0aGlzLFtuLGksZS0oZitkKSxlXSksbC5wdXNoKHMuc2hpZnQoKSksbD1bcy5wb3AoKV07cy5sZW5ndGg7KWgucHVzaChbcy5zaGlmdCgpXSk7cD1pLnNsaWNlKG4ubGVuZ3RoLShsWzBdP2xbMF0ubGVuZ3RoOjApKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfWVsc2UgbD1bbl07aC5wdXNoKGwpLGY9cCtjLGQ9bX1lbHNlIGwucHVzaChuKSxmKz1kK3AsZD1tfXJldHVybiB1PWM\/ZnVuY3Rpb24odCxlKXtyZXR1cm4oZT92OiIiKSt0LmpvaW4oIiAiKX06ZnVuY3Rpb24odCl7cmV0dXJuIHQuam9pbigiICIpfSxoLm1hcCh1KX0sa2Uuc3BsaXRUZXh0VG9TaXplPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPShyPXJ8fHt9KS5mb250U2l6ZXx8dGhpcy5pbnRlcm5hbC5nZXRGb250U2l6ZSgpLGE9ZnVuY3Rpb24odCl7aWYodC53aWR0aHMmJnQua2VybmluZylyZXR1cm57d2lkdGhzOnQud2lkdGhzLGtlcm5pbmc6dC5rZXJuaW5nfTt2YXIgZT10aGlzLmludGVybmFsLmdldEZvbnQodC5mb250TmFtZSx0LmZvbnRTdHlsZSk7cmV0dXJuIGUubWV0YWRhdGEuVW5pY29kZT97d2lkdGhzOmUubWV0YWRhdGEuVW5pY29kZS53aWR0aHN8fHswOjF9LGtlcm5pbmc6ZS5tZXRhZGF0YS5Vbmljb2RlLmtlcm5pbmd8fHt9fTp7Zm9udDplLm1ldGFkYXRhLGZvbnRTaXplOnRoaXMuaW50ZXJuYWwuZ2V0Rm9udFNpemUoKSxjaGFyU3BhY2U6dGhpcy5pbnRlcm5hbC5nZXRDaGFyU3BhY2UoKX19LmNhbGwodGhpcyxyKTtuPUFycmF5LmlzQXJyYXkodCk\/dDpTdHJpbmcodCkuc3BsaXQoL1xyP1xuLyk7dmFyIG89MSp0aGlzLmludGVybmFsLnNjYWxlRmFjdG9yKmUvaTthLnRleHRJbmRlbnQ9ci50ZXh0SW5kZW50PzEqci50ZXh0SW5kZW50KnRoaXMuaW50ZXJuYWwuc2NhbGVGYWN0b3IvaTowLGEubGluZUluZGVudD1yLmxpbmVJbmRlbnQ7dmFyIHMsYyx1PVtdO2ZvcihzPTAsYz1uLmxlbmd0aDtzPGM7cysrKXU9dS5jb25jYXQoamUuYXBwbHkodGhpcyxbbltzXSxvLGFdKSk7cmV0dXJuIHV9LGZ1bmN0aW9uKHQpe3QuX19mb250bWV0cmljc19fPXQuX19mb250bWV0cmljc19ffHx7fTtmb3IodmFyIHI9ImtsbW5vcHFyc3R1dnd4eXoiLG49e30saT17fSxhPTA7YTxyLmxlbmd0aDthKyspbltyW2FdXT0iMDEyMzQ1Njc4OWFiY2RlZiJbYV0saVsiMDEyMzQ1Njc4OWFiY2RlZiJbYV1dPXJbYV07dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuIjB4IitwYXJzZUludCh0LDEwKS50b1N0cmluZygxNil9LHM9dC5fX2ZvbnRtZXRyaWNzX18uY29tcHJlc3M9ZnVuY3Rpb24odCl7dmFyIHIsbixhLGMsdT1bInsiXTtmb3IodmFyIGwgaW4gdCl7aWYocj10W2xdLGlzTmFOKHBhcnNlSW50KGwsMTApKT9uPSInIitsKyInIjoobD1wYXJzZUludChsLDEwKSxuPShuPW8obCkuc2xpY2UoMikpLnNsaWNlKDAsLTEpK2lbbi5zbGljZSgtMSldKSwibnVtYmVyIj09dHlwZW9mIHIpcjwwPyhhPW8ocikuc2xpY2UoMyksYz0iLSIpOihhPW8ocikuc2xpY2UoMiksYz0iIiksYT1jK2Euc2xpY2UoMCwtMSkraVthLnNsaWNlKC0xKV07ZWxzZXtpZigib2JqZWN0IiE9PWUocikpdGhyb3cgbmV3IEVycm9yKCJEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCB2YWx1ZSB0eXBlICIrZShyKSsiLiIpO2E9cyhyKX11LnB1c2gobithKX1yZXR1cm4gdS5wdXNoKCJ9IiksdS5qb2luKCIiKX0sYz10Ll9fZm9udG1ldHJpY3NfXy51bmNvbXByZXNzPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHVuY29tcHJlc3MuIik7Zm9yKHZhciBlLHIsaSxhLG89e30scz0xLGM9byx1PVtdLGw9IiIsaD0iIixmPXQubGVuZ3RoLTEsZD0xO2Q8ZjtkKz0xKSInIj09KGE9dFtkXSk\/ZT8oaT1lLmpvaW4oIiIpLGU9dm9pZCAwKTplPVtdOmU\/ZS5wdXNoKGEpOiJ7Ij09YT8odS5wdXNoKFtjLGldKSxjPXt9LGk9dm9pZCAwKToifSI9PWE\/KChyPXUucG9wKCkpWzBdW3JbMV1dPWMsaT12b2lkIDAsYz1yWzBdKToiLSI9PWE\/cz0tMTp2b2lkIDA9PT1pP24uaGFzT3duUHJvcGVydHkoYSk\/KGwrPW5bYV0saT1wYXJzZUludChsLDE2KSpzLHM9MSxsPSIiKTpsKz1hOm4uaGFzT3duUHJvcGVydHkoYSk\/KGgrPW5bYV0sY1tpXT1wYXJzZUludChoLDE2KSpzLHM9MSxpPXZvaWQgMCxoPSIiKTpoKz1hO3JldHVybiBvfSx1PXtjb2RlUGFnZXM6WyJXaW5BbnNpRW5jb2RpbmciXSxXaW5BbnNpRW5jb2Rpbmc6YygiezE5bThuMjAxbjlxMjAxbzlyMjAxczlsMjAxdDltMjAxdThtMjAxdzluMjAxeDlvMjAxeThvMjAyazhxMjAybDhyMjAybTlwMjAycThwMjBhdzhrMjAzazh0MjAzdDh2MjAzdTl2MmNxOHMyMTJtOXQxNW04dzE1bjl3MmR3OXMxNms4dTE2bDl1MTdzOXoxN3g4eTE3eTl5fSIpfSxsPXtVbmljb2RlOntDb3VyaWVyOnUsIkNvdXJpZXItQm9sZCI6dSwiQ291cmllci1Cb2xkT2JsaXF1ZSI6dSwiQ291cmllci1PYmxpcXVlIjp1LEhlbHZldGljYTp1LCJIZWx2ZXRpY2EtQm9sZCI6dSwiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjp1LCJIZWx2ZXRpY2EtT2JsaXF1ZSI6dSwiVGltZXMtUm9tYW4iOnUsIlRpbWVzLUJvbGQiOnUsIlRpbWVzLUJvbGRJdGFsaWMiOnUsIlRpbWVzLUl0YWxpYyI6dX19LGg9e1VuaWNvZGU6eyJDb3VyaWVyLU9ibGlxdWUiOmMoInsnd2lkdGhzJ3trM3cnZm9mJzZvfSdrZXJuaW5nJ3snZm9mJy02b319IiksIlRpbWVzLUJvbGRJdGFsaWMiOmMoInsnd2lkdGhzJ3trM28ycTR5Y3gycjIwMW4zbTIwMW82bzIwMXMybDIwMXQybDIwMXUybDIwMXczbTIwMXgzbTIwMXkzbTJrMXQybDJyMjAybTJuMm4zbTJvM20ycDVuMjAycTZvMnIxdzJzMmwydDJsMnUzbTJ2M3QydzF0MngybDJ5MXQyejF3M2szbTNsM20zbTNtM24zbTNvM20zcDNtM3EzbTNyM20zczNtMjAzdDJsMjAzdTJsM3YybDN3M3QzeDN0M3kzdDN6M200azVuNGw0bTRtNG00bjRtNG80czRwNG00cTRtNHI0czRzNHk0dDJyNHUzbTR2NG00dzN4NHg1dDR5NHM0ejRzNWszeDVsNHM1bTRtNW4zcjVvM3g1cDRzNXE0bTVyNXQ1czRtNXQzeDV1M3g1djJsNXcxdzV4Mmw1eTN0NXozbTZrMmw2bDNtNm0zbTZuMnc2bzNtNnAydzZxMmw2cjNtNnMzcjZ0MXc2dTF3NnYzbTZ3MXc2eDR5NnkzcjZ6M203azNtN2wzbTdtMnI3bjJyN28xdzdwM3I3cTJ3N3I0bTdzM203dDJ3N3Uycjd2Mm43dzFxN3gybjd5M3QyMDJsM21jbDRtYWwycmFtM21hbjNtYW8zbWFwM21hcjNtYXMybGF0NHVhdTF1YXYzbWF3M3dheTR1YXoybGJrMnNibDN0J2ZvZic2b2JvMmxicDN0YnEzbWJyMXRiczJsYnUxeWJ2M21iejNtY2s0bTIwMmszbWNtNG1jbjRtY280bWNwNG1jcTV5Y3I0bWNzNG1jdDRtY3U0bWN2NG1jdzJyMm0zcmN5MnJjejJyZGw0c2RtNHNkbjRzZG80c2RwNHNkcTRzZHM0c2R0NHNkdTRzZHY0c2R3NHNkejNtZWszbWVsM21lbTNtZW4zbWVvM21lcDNtZXE0c2VyMndlczJ3ZXQyd2V1MndldjJ3ZXcxd2V4MXdleTF3ZXoxd2ZsM3JmbTNtZm4zbWZvM21mcDNtZnEzbWZyM3RmczNtZnQzcmZ1M3JmdjNyZnczcmZ6MncyMDNrNm8yMTJtNm8yZHcybDJjcTJsM3QzbTN1MmwxN3MzeDE5bTNtfSdrZXJuaW5nJ3tjbHs0cXU1a3Q1cXQ1cnMxN3NzNXRzfTIwMXN7MjAxc3N9MjAxdHtja3M0bHNjbXNjbnNjb3NjcHNjbHMyd3UyeXUyMDF0c30yMDF4ezJ3dTJ5dX0ya3syMDF0c30yd3s0cXg1a3g1b3U1cXg1cnMxN3N1NXR1fTJ4ezE3c3U1dHU1b3V9Mnl7NHF4NWt4NW91NXF4NXJzMTdzczV0c30nZm9mJy02b2ZuezE3c3c1dHc1b3U1cXc1cnN9N3R7Y2tzY2xzY21zY25zY29zY3BzNGxzfTN1ezE3c3U1dHU1b3M1cXN9M3Z7MTdzdTV0dTVvczVxc303cHsxN3N1NXR1fWNrezRxdTVrdDVxdDVyczE3c3M1dHN9NGx7NHF1NWt0NXF0NXJzMTdzczV0c31jbXs0cXU1a3Q1cXQ1cnMxN3NzNXRzfWNuezRxdTVrdDVxdDVyczE3c3M1dHN9Y297NHF1NWt0NXF0NXJzMTdzczV0c31jcHs0cXU1a3Q1cXQ1cnMxN3NzNXRzfTZsezRxdTVvdTVxdzVydDE3c3U1dHV9NXF7Y2t1Y2x1Y211Y251Y291Y3B1NGx1fTVye2NrdWNsdWNtdWNudWNvdWNwdTRsdX03cXtja3NjbHNjbXNjbnNjb3NjcHM0bHN9NnB7NHF1NW91NXF3NXJ0MTdzdzV0d31la3s0cXU1b3U1cXc1cnQxN3N1NXR1fWVsezRxdTVvdTVxdzVydDE3c3U1dHV9ZW17NHF1NW91NXF3NXJ0MTdzdTV0dX1lbns0cXU1b3U1cXc1cnQxN3N1NXR1fWVvezRxdTVvdTVxdzVydDE3c3U1dHV9ZXB7NHF1NW91NXF3NXJ0MTdzdTV0dX1lc3sxN3NzNXRzNXFzNHF1fWV0ezRxdTVvdTVxdzVydDE3c3c1dHd9ZXV7NHF1NW91NXF3NXJ0MTdzczV0c31ldnsxN3NzNXRzNXFzNHF1fTZ6ezE3c3c1dHc1b3U1cXc1cnN9Zm17MTdzdzV0dzVvdTVxdzVyc303bnsyMDF0c31mb3sxN3N3NXR3NW91NXF3NXJzfWZwezE3c3c1dHc1b3U1cXc1cnN9ZnF7MTdzdzV0dzVvdTVxdzVyc303cntja3NjbHNjbXNjbnNjb3NjcHM0bHN9ZnN7MTdzdzV0dzVvdTVxdzVyc31mdHsxN3N1NXR1fWZ1ezE3c3U1dHV9ZnZ7MTdzdTV0dX1md3sxN3N1NXR1fWZ6e2Nrc2Nsc2Ntc2Nuc2Nvc2NwczRsc319fSIpLCJIZWx2ZXRpY2EtQm9sZCI6Yygieyd3aWR0aHMne2szczJxNHNjeDF3MjAxbjNyMjAxbzZvMjAxczF3MjAxdDF3MjAxdTF3MjAxdzNtMjAxeDNtMjAxeTNtMmsxdzJsMmwyMDJtMm4ybjNyMm8zcjJwNXQyMDJxNm8ycjFzMnMybDJ0MmwydTJyMnYzdTJ3MXcyeDJsMnkxdzJ6MXczazNyM2wzcjNtM3IzbjNyM28zcjNwM3IzcTNyM3IzcjNzM3IyMDN0MmwyMDN1MmwzdjJsM3czdTN4M3UzeTN1M3ozeDRrNmw0bDRzNG00czRuNHM0bzRzNHA0bTRxM3g0cjR5NHM0czR0MXc0dTNyNHY0czR3M3g0eDVuNHk0czR6NHk1azRtNWw0eTVtNHM1bjRtNW8zeDVwNHM1cTRtNXI1eTVzNG01dDRtNXUzeDV2Mmw1dzF3NXgybDV5M3U1ejNyNmsybDZsM3I2bTN4Nm4zcjZvM3g2cDNyNnEybDZyM3g2czN4NnQxdzZ1MXc2djNyNncxdzZ4NXQ2eTN4NnozeDdrM3g3bDN4N20ycjduM3I3bzJsN3AzeDdxM3I3cjR5N3Mzcjd0M3I3dTNtN3Yycjd3MXc3eDJyN3kzdTIwMmwzcmNsNHNhbDJsYW0zcmFuM3JhbzNyYXAzcmFyM3JhczJsYXQ0dGF1MnBhdjNyYXczdWF5NHRhejJsYmsyc2JsM3UnZm9mJzZvYm8ybGJwM3hicTNyYnIxd2JzMmxidTJvYnYzcmJ6M3hjazRzMjAyazNyY200c2NuNHNjbzRzY3A0c2NxNm9jcjRzY3M0bWN0NG1jdTRtY3Y0bWN3MXcybTJ6Y3kxd2N6MXdkbDRzZG00eWRuNHlkbzR5ZHA0eWRxNHlkczR5ZHQ0c2R1NHNkdjRzZHc0c2R6M3hlazNyZWwzcmVtM3JlbjNyZW8zcmVwM3JlcTV0ZXIzcmVzM3JldDNyZXUzcmV2M3JldzF3ZXgxd2V5MXdlejF3ZmwzeGZtM3hmbjN4Zm8zeGZwM3hmcTN4ZnIzdWZzM3hmdDN4ZnUzeGZ2M3hmdzN4ZnozcjIwM2s2bzIxMm02bzJkdzJsMmNxMmwzdDNyM3UybDE3czRtMTltM3J9J2tlcm5pbmcne2NsezRxczVrdTVvdDVxczE3c3Y1dHZ9MjAxdHsyd3c0d3kyeXd9MjAxd3sya3N9MjAxeHsyd3c0d3kyeXd9Mmt7MjAxdHMyMDF4c30yd3s3cXM0cXU1a3c1b3M1cXc1cnMxN3N1NXR1N3RzZnpzfTJ4ezVvdzVxc30yeXs3cXM0cXU1a3c1b3M1cXc1cnMxN3N1NXR1N3RzZnpzfSdmb2YnLTZvN3B7MTdzdTV0dTVvdH1ja3s0cXM1a3U1b3Q1cXMxN3N2NXR2fTRsezRxczVrdTVvdDVxczE3c3Y1dHZ9Y217NHFzNWt1NW90NXFzMTdzdjV0dn1jbns0cXM1a3U1b3Q1cXMxN3N2NXR2fWNvezRxczVrdTVvdDVxczE3c3Y1dHZ9Y3B7NHFzNWt1NW90NXFzMTdzdjV0dn02bHsxN3N0NXR0NW9zfTE3c3sya3djbHZjbXZjbnZjb3ZjcHY0bHY0d3dja3Z9NW97Mmt1Y2x0Y210Y250Y290Y3B0NGx0NHd0Y2t0fTVxezJrc2Nsc2Ntc2Nuc2Nvc2NwczRsczR3dmNrc301cnsya3M0d3N9NXR7Mmt3Y2x2Y212Y252Y292Y3B2NGx2NHd3Y2t2fWVvezE3c3Q1dHQ1b3N9ZnV7MTdzdTV0dTVvdH02cHsxN3NzNXRzfWVrezE3c3Q1dHQ1b3N9ZWx7MTdzdDV0dDVvc31lbXsxN3N0NXR0NW9zfWVuezE3c3Q1dHQ1b3N9Nm97MjAxdHN9ZXB7MTdzdDV0dDVvc31lc3sxN3NzNXRzfWV0ezE3c3M1dHN9ZXV7MTdzczV0c31ldnsxN3NzNXRzfTZ6ezE3c3U1dHU1b3M1cXR9Zm17MTdzdTV0dTVvczVxdH1mbnsxN3N1NXR1NW9zNXF0fWZvezE3c3U1dHU1b3M1cXR9ZnB7MTdzdTV0dTVvczVxdH1mcXsxN3N1NXR1NW9zNXF0fWZzezE3c3U1dHU1b3M1cXR9ZnR7MTdzdTV0dTVvdH03bXs1b3N9ZnZ7MTdzdTV0dTVvdH1md3sxN3N1NXR1NW90fX19IiksQ291cmllcjpjKCJ7J3dpZHRocyd7azN3J2ZvZic2b30na2VybmluZyd7J2ZvZictNm99fSIpLCJDb3VyaWVyLUJvbGRPYmxpcXVlIjpjKCJ7J3dpZHRocyd7azN3J2ZvZic2b30na2VybmluZyd7J2ZvZictNm99fSIpLCJUaW1lcy1Cb2xkIjpjKCJ7J3dpZHRocyd7azNxMnE1bmN4MnIyMDFuM20yMDFvNm8yMDFzMmwyMDF0MmwyMDF1MmwyMDF3M20yMDF4M20yMDF5M20yazF0MmwybDIwMm0ybjJuM20ybzNtMnA2bzIwMnE2bzJyMXcyczJsMnQybDJ1M20ydjN0MncxdDJ4MmwyeTF0MnoxdzNrM20zbDNtM20zbTNuM20zbzNtM3AzbTNxM20zcjNtM3MzbTIwM3QybDIwM3UybDN2MmwzdzN0M3gzdDN5M3QzejNtNGs1eDRsNHM0bTRtNG40czRvNHM0cDRtNHEzeDRyNHk0czR5NHQycjR1M200djR5NHc0bTR4NXk0eTRzNHo0eTVrM3g1bDR5NW00czVuM3I1bzRtNXA0czVxNHM1cjZvNXM0czV0NHM1dTRtNXYybDV3MXc1eDJsNXkzdTV6M202azJsNmwzbTZtM3I2bjJ3Nm8zcjZwMnc2cTJsNnIzbTZzM3I2dDF3NnUybDZ2M3I2dzF3Nng1bjZ5M3I2ejNtN2szcjdsM3I3bTJ3N24ycjdvMmw3cDNyN3EzbTdyNHM3czNtN3QzbTd1Mnc3djJyN3cxcTd4MnI3eTNvMjAybDNtY2w0c2FsMmxhbTNtYW4zbWFvM21hcDNtYXIzbWFzMmxhdDR1YXUxeWF2M21hdzN0YXk0dWF6MmxiazJzYmwzdCdmb2YnNm9ibzJsYnAzcmJyMXRiczJsYnUybGJ2M21iejNtY2s0czIwMmszbWNtNHNjbjRzY280c2NwNHNjcTZvY3I0c2NzNG1jdDRtY3U0bWN2NG1jdzJyMm0zcmN5MnJjejJyZGw0c2RtNHlkbjR5ZG80eWRwNHlkcTR5ZHM0eWR0NHNkdTRzZHY0c2R3NHNkejNyZWszbWVsM21lbTNtZW4zbWVvM21lcDNtZXE0c2VyMndlczJ3ZXQyd2V1MndldjJ3ZXcxd2V4MXdleTF3ZXoxd2ZsM3JmbTNtZm4zbWZvM21mcDNtZnEzbWZyM3RmczNtZnQzcmZ1M3JmdjNyZnczcmZ6M20yMDNrNm8yMTJtNm8yZHcybDJjcTJsM3QzbTN1MmwxN3M0czE5bTNtfSdrZXJuaW5nJ3tjbHs0cXQ1a3M1b3Q1cXk1cncxN3N2NXR2fTIwMXR7Y2tzNGxzY21zY25zY29zY3BzY2xzNHd2fTJrezIwMXRzfTJ3ezRxdTVrdTdtdTVvczVxeDVydTE3c3U1dHV9Mnh7MTdzdTV0dTVvdTVxc30yeXs0cXY1a3Y3bXU1b3Q1cXo1cnUxN3N1NXR1fSdmb2YnLTZvN3R7Y2tzY2xzY21zY25zY29zY3BzNGxzfTN1ezE3c3U1dHU1b3M1cXV9M3Z7MTdzdTV0dTVvczVxdX1mdXsxN3N1NXR1NW91NXF1fTdwezE3c3U1dHU1b3U1cXV9Y2t7NHF0NWtzNW90NXF5NXJ3MTdzdjV0dn00bHs0cXQ1a3M1b3Q1cXk1cncxN3N2NXR2fWNtezRxdDVrczVvdDVxeTVydzE3c3Y1dHZ9Y257NHF0NWtzNW90NXF5NXJ3MTdzdjV0dn1jb3s0cXQ1a3M1b3Q1cXk1cncxN3N2NXR2fWNwezRxdDVrczVvdDVxeTVydzE3c3Y1dHZ9Nmx7MTdzdDV0dDVvdTVxdX0xN3N7Y2t1Y2x1Y211Y251Y291Y3B1NGx1NHd1fTVve2NrdWNsdWNtdWNudWNvdWNwdTRsdTR3dX01cXtja3pjbHpjbXpjbnpjb3pjcHo0bHo0d3V9NXJ7Y2t4Y2x4Y214Y254Y294Y3B4NGx4NHd1fTV0e2NrdWNsdWNtdWNudWNvdWNwdTRsdTR3dX03cXtja3VjbHVjbXVjbnVjb3VjcHU0bHV9NnB7MTdzdzV0dzVvdTVxdX1la3sxN3N0NXR0NXF1fWVsezE3c3Q1dHQ1b3U1cXV9ZW17MTdzdDV0dDVxdX1lbnsxN3N0NXR0NXF1fWVvezE3c3Q1dHQ1cXV9ZXB7MTdzdDV0dDVvdTVxdX1lc3sxN3NzNXRzNXF1fWV0ezE3c3c1dHc1b3U1cXV9ZXV7MTdzdzV0dzVvdTVxdX1ldnsxN3NzNXRzNXF1fTZ6ezE3c3c1dHc1b3U1cXU1cnN9Zm17MTdzdzV0dzVvdTVxdTVyc31mbnsxN3N3NXR3NW91NXF1NXJzfWZvezE3c3c1dHc1b3U1cXU1cnN9ZnB7MTdzdzV0dzVvdTVxdTVyc31mcXsxN3N3NXR3NW91NXF1NXJzfTdye2NrdGNsdGNtdGNudGNvdGNwdDRsdDVvc31mc3sxN3N3NXR3NW91NXF1NXJzfWZ0ezE3c3U1dHU1b3U1cXV9N217NW9zfWZ2ezE3c3U1dHU1b3U1cXV9Znd7MTdzdTV0dTVvdTVxdX1mentja3NjbHNjbXNjbnNjb3NjcHM0bHN9fX0iKSxTeW1ib2w6Yygieyd3aWR0aHMne2szdWF3NHIxOW0zbTJrMXQybDJsMjAybTJ5Mm4zbTJwNW4yMDJxNm8zazNtMnMybDJ0MmwydjNyMncxdDNtM20yeTF0Mnoxd2JrMnNibDNyJ2ZvZic2bzNuM20zbzNtM3AzbTNxM20zcjNtM3MzbTN0M20zdTF3M3YxdzN3M3IzeDNyM3kzcjN6MndicDN0M2wzbTV2Mmw1eDJsNXozbTJxNHlmcjNyN3Yzazd3MW83eDNrfSdrZXJuaW5nJ3snZm9mJy02b319IiksSGVsdmV0aWNhOmMoInsnd2lkdGhzJ3trM3AycTRtY3gxdzIwMW4zcjIwMW82bzIwMXMxcTIwMXQxcTIwMXUxcTIwMXcybDIwMXgybDIwMXkybDJrMXcybDF3MjAybTJuMm4zcjJvM3IycDV0MjAycTZvMnIxbjJzMmwydDJsMnUycjJ2M3UydzF3MngybDJ5MXcyejF3M2szcjNsM3IzbTNyM24zcjNvM3IzcDNyM3EzcjNyM3IzczNyMjAzdDJsMjAzdTJsM3YxdzN3M3UzeDN1M3kzdTN6M3I0azZwNGw0bTRtNG00bjRzNG80czRwNG00cTN4NHI0eTRzNHM0dDF3NHUzbTR2NG00dzNyNHg1bjR5NHM0ejR5NWs0bTVsNHk1bTRzNW40bTVvM3g1cDRzNXE0bTVyNXk1czRtNXQ0bTV1M3g1djF3NXcxdzV4MXc1eTJ6NXozcjZrMmw2bDNyNm0zcjZuM202bzNyNnAzcjZxMXc2cjNyNnMzcjZ0MXE2dTFxNnYzbTZ3MXE2eDVuNnkzcjZ6M3I3azNyN2wzcjdtMmw3bjNtN28xdzdwM3I3cTNtN3I0czdzM203dDNtN3UzbTd2Mmw3dzF1N3gybDd5M3UyMDJsM3JjbDRtYWwybGFtM3JhbjNyYW8zcmFwM3JhcjNyYXMybGF0NHRhdTJwYXYzcmF3M3VheTR0YXoybGJrMnNibDN1J2ZvZic2b2JvMmxicDNyYnIxd2JzMmxidTJvYnYzcmJ6M3hjazRtMjAyazNyY200bWNuNG1jbzRtY3A0bWNxNm9jcjRzY3M0bWN0NG1jdTRtY3Y0bWN3MXcybTJuY3kxd2N6MXdkbDRzZG00eWRuNHlkbzR5ZHA0eWRxNHlkczR5ZHQ0c2R1NHNkdjRzZHc0c2R6M3hlazNyZWwzcmVtM3JlbjNyZW8zcmVwM3JlcTV0ZXIzbWVzM3JldDNyZXUzcmV2M3JldzF3ZXgxd2V5MXdlejF3ZmwzcmZtM3JmbjNyZm8zcmZwM3JmcTNyZnIzdWZzM3hmdDNyZnUzcmZ2M3JmdzNyZnozbTIwM2s2bzIxMm02bzJkdzJsMmNxMmwzdDNyM3UxdzE3czRtMTltM3J9J2tlcm5pbmcnezVxezR3dn1jbHs0cXM1a3c1b3c1cXMxN3N2NXR2fTIwMXR7Mnd1NHcxazJ5dX0yMDF4ezJ3dTR3eTJ5dX0xN3N7Mmt0Y2x1Y211Y251NG90Y3B1NGx1NHd5Y291Y2t1fTJ3ezdxczRxejVrMW0xN3N5NW93NXF4NXJzZnN1NXR5N3R1Znp1fTJ4ezE3c3k1dHk1b3k1cXN9Mnl7N3FzNHF6NWsxbTE3c3k1b3c1cXg1cnNmc3U1dHk3dHVmenV9J2ZvZictNm83cHsxN3N2NXR2NW93fWNrezRxczVrdzVvdzVxczE3c3Y1dHZ9NGx7NHFzNWt3NW93NXFzMTdzdjV0dn1jbXs0cXM1a3c1b3c1cXMxN3N2NXR2fWNuezRxczVrdzVvdzVxczE3c3Y1dHZ9Y297NHFzNWt3NW93NXFzMTdzdjV0dn1jcHs0cXM1a3c1b3c1cXMxN3N2NXR2fTZsezE3c3k1dHk1b3d9ZG97MTdzdDV0dH00ensxN3N0NXR0fTdze2ZzdH1kbXsxN3N0NXR0fWRuezE3c3Q1dHR9NW97Y2t3Y2x3Y213Y253Y293Y3B3NGx3NHd2fWRwezE3c3Q1dHR9ZHF7MTdzdDV0dH03dHs1b3d9ZHN7MTdzdDV0dH01dHsya3RjbHVjbXVjbnU0b3RjcHU0bHU0d3ljb3Vja3V9ZnV7MTdzdjV0djVvd302cHsxN3N5NXR5NW93NXFzfWVrezE3c3k1dHk1b3d9ZWx7MTdzeTV0eTVvd31lbXsxN3N5NXR5NW93fWVuezV0eX1lb3sxN3N5NXR5NW93fWVwezE3c3k1dHk1b3d9ZXN7MTdzeTV0eTVxc31ldHsxN3N5NXR5NW93NXFzfWV1ezE3c3k1dHk1b3c1cXN9ZXZ7MTdzeTV0eTVvdzVxc302ensxN3N5NXR5NW93NXFzfWZtezE3c3k1dHk1b3c1cXN9Zm57MTdzeTV0eTVvdzVxc31mb3sxN3N5NXR5NW93NXFzfWZwezE3c3k1dHk1cXN9ZnF7MTdzeTV0eTVvdzVxc303cns1b3d9ZnN7MTdzeTV0eTVvdzVxc31mdHsxN3N2NXR2NW93fTdtezVvd31mdnsxN3N2NXR2NW93fWZ3ezE3c3Y1dHY1b3d9fX0iKSwiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjpjKCJ7J3dpZHRocyd7azNzMnE0c2N4MXcyMDFuM3IyMDFvNm8yMDFzMXcyMDF0MXcyMDF1MXcyMDF3M20yMDF4M20yMDF5M20yazF3MmwybDIwMm0ybjJuM3IybzNyMnA1dDIwMnE2bzJyMXMyczJsMnQybDJ1MnIydjN1MncxdzJ4MmwyeTF3MnoxdzNrM3IzbDNyM20zcjNuM3IzbzNyM3AzcjNxM3IzcjNyM3MzcjIwM3QybDIwM3UybDN2MmwzdzN1M3gzdTN5M3UzejN4NGs2bDRsNHM0bTRzNG40czRvNHM0cDRtNHEzeDRyNHk0czRzNHQxdzR1M3I0djRzNHczeDR4NW40eTRzNHo0eTVrNG01bDR5NW00czVuNG01bzN4NXA0czVxNG01cjV5NXM0bTV0NG01dTN4NXYybDV3MXc1eDJsNXkzdTV6M3I2azJsNmwzcjZtM3g2bjNyNm8zeDZwM3I2cTJsNnIzeDZzM3g2dDF3NnUxdzZ2M3I2dzF3Nng1dDZ5M3g2ejN4N2szeDdsM3g3bTJyN24zcjdvMmw3cDN4N3EzcjdyNHk3czNyN3Qzcjd1M203djJyN3cxdzd4MnI3eTN1MjAybDNyY2w0c2FsMmxhbTNyYW4zcmFvM3JhcDNyYXIzcmFzMmxhdDR0YXUycGF2M3JhdzN1YXk0dGF6MmxiazJzYmwzdSdmb2YnNm9ibzJsYnAzeGJxM3JicjF3YnMybGJ1Mm9idjNyYnozeGNrNHMyMDJrM3JjbTRzY240c2NvNHNjcDRzY3E2b2NyNHNjczRtY3Q0bWN1NG1jdjRtY3cxdzJtMnpjeTF3Y3oxd2RsNHNkbTR5ZG40eWRvNHlkcDR5ZHE0eWRzNHlkdDRzZHU0c2R2NHNkdzRzZHozeGVrM3JlbDNyZW0zcmVuM3JlbzNyZXAzcmVxNXRlcjNyZXMzcmV0M3JldTNyZXYzcmV3MXdleDF3ZXkxd2V6MXdmbDN4Zm0zeGZuM3hmbzN4ZnAzeGZxM3hmcjN1ZnMzeGZ0M3hmdTN4ZnYzeGZ3M3hmejNyMjAzazZvMjEybTZvMmR3MmwyY3EybDN0M3IzdTJsMTdzNG0xOW0zcn0na2VybmluZyd7Y2x7NHFzNWt1NW90NXFzMTdzdjV0dn0yMDF0ezJ3dzR3eTJ5d30yMDF3ezJrc30yMDF4ezJ3dzR3eTJ5d30ya3syMDF0czIwMXhzfTJ3ezdxczRxdTVrdzVvczVxdzVyczE3c3U1dHU3dHNmenN9Mnh7NW93NXFzfTJ5ezdxczRxdTVrdzVvczVxdzVyczE3c3U1dHU3dHNmenN9J2ZvZictNm83cHsxN3N1NXR1NW90fWNrezRxczVrdTVvdDVxczE3c3Y1dHZ9NGx7NHFzNWt1NW90NXFzMTdzdjV0dn1jbXs0cXM1a3U1b3Q1cXMxN3N2NXR2fWNuezRxczVrdTVvdDVxczE3c3Y1dHZ9Y297NHFzNWt1NW90NXFzMTdzdjV0dn1jcHs0cXM1a3U1b3Q1cXMxN3N2NXR2fTZsezE3c3Q1dHQ1b3N9MTdzezJrd2NsdmNtdmNudmNvdmNwdjRsdjR3d2Nrdn01b3sya3VjbHRjbXRjbnRjb3RjcHQ0bHQ0d3Rja3R9NXF7MmtzY2xzY21zY25zY29zY3BzNGxzNHd2Y2tzfTVyezJrczR3c301dHsya3djbHZjbXZjbnZjb3ZjcHY0bHY0d3dja3Z9ZW97MTdzdDV0dDVvc31mdXsxN3N1NXR1NW90fTZwezE3c3M1dHN9ZWt7MTdzdDV0dDVvc31lbHsxN3N0NXR0NW9zfWVtezE3c3Q1dHQ1b3N9ZW57MTdzdDV0dDVvc302b3syMDF0c31lcHsxN3N0NXR0NW9zfWVzezE3c3M1dHN9ZXR7MTdzczV0c31ldXsxN3NzNXRzfWV2ezE3c3M1dHN9Nnp7MTdzdTV0dTVvczVxdH1mbXsxN3N1NXR1NW9zNXF0fWZuezE3c3U1dHU1b3M1cXR9Zm97MTdzdTV0dTVvczVxdH1mcHsxN3N1NXR1NW9zNXF0fWZxezE3c3U1dHU1b3M1cXR9ZnN7MTdzdTV0dTVvczVxdH1mdHsxN3N1NXR1NW90fTdtezVvc31mdnsxN3N1NXR1NW90fWZ3ezE3c3U1dHU1b3R9fX0iKSxaYXBmRGluZ2JhdHM6Yygieyd3aWR0aHMne2s0dTJrMXcnZm9mJzZvfSdrZXJuaW5nJ3snZm9mJy02b319IiksIkNvdXJpZXItQm9sZCI6Yygieyd3aWR0aHMne2szdydmb2YnNm99J2tlcm5pbmcneydmb2YnLTZvfX0iKSwiVGltZXMtSXRhbGljIjpjKCJ7J3dpZHRocyd7azNuMnE0eWN4MmwyMDFuM20yMDFvNXQyMDFzMmwyMDF0MmwyMDF1MmwyMDF3M3IyMDF4M3IyMDF5M3IyazF0MmwybDIwMm0ybjJuM20ybzNtMnA1bjIwMnE1dDJyMXAyczJsMnQybDJ1M20ydjRuMncxdDJ4MmwyeTF0MnoxdzNrM20zbDNtM20zbTNuM20zbzNtM3AzbTNxM20zcjNtM3MzbTIwM3QybDIwM3UybDN2MmwzdzRuM3g0bjN5NG4zejNtNGs1dzRsM3g0bTN4NG40bTRvNHM0cDN4NHEzeDRyNHM0czRzNHQybDR1Mnc0djRtNHczcjR4NW40eTRtNHo0czVrM3g1bDRzNW0zeDVuM201bzNyNXA0czVxM3g1cjVuNXMzeDV0M3I1dTNyNXYycjV3MXc1eDJyNXkydTV6M202azJsNmwzbTZtM202bjJ3Nm8zbTZwMnc2cTF3NnIzbTZzM202dDF3NnUxdzZ2Mnc2dzF3Nng0czZ5M202ejNtN2szbTdsM203bTJyN24ycjdvMXc3cDNtN3EydzdyNG03czJ3N3Qydzd1MnI3djJzN3cxdjd4MnM3eTNxMjAybDNtY2wzeGFsMnJhbTNtYW4zbWFvM21hcDNtYXIzbWFzMmxhdDR3YXUxdmF2M21hdzRuYXk0d2F6MmxiazJzYmw0bidmb2YnNm9ibzJsYnAzbWJxM29icjF0YnMybGJ1MXpidjNtYnozbWNrM3gyMDJrM21jbTN4Y24zeGNvM3hjcDN4Y3E1dGNyNG1jczN4Y3QzeGN1M3hjdjN4Y3cybDJtMnVjeTJsY3oybGRsNG1kbTRzZG40c2RvNHNkcDRzZHE0c2RzNHNkdDRzZHU0c2R2NHNkdzRzZHozbWVrM21lbDNtZW0zbWVuM21lbzNtZXAzbWVxNG1lcjJ3ZXMyd2V0MndldTJ3ZXYyd2V3MXdleDF3ZXkxd2V6MXdmbDNtZm0zbWZuM21mbzNtZnAzbWZxM21mcjRuZnMzbWZ0M21mdTNtZnYzbWZ3M21mejJ3MjAzazZvMjEybTZtMmR3MmwyY3EybDN0M20zdTJsMTdzM3IxOW0zbX0na2VybmluZyd7Y2x7NWt0NHF3fTIwMXN7MjAxc3d9MjAxdHsyMDF0dzJ3eTJ5eTZxLXR9MjAxeHsyd3kyeXl9Mmt7MjAxdHd9Mnd7N3FzNHF5N3JzNWt5N213NW9zNXF4NXJ1MTdzdTV0dX0yeHsxN3NzNXRzNW9zfTJ5ezdxczRxeTdyczVreTdtdzVvczVxeDVydTE3c3U1dHV9J2ZvZictNm82dHsxN3NzNXRzNXFzfTd0ezVvc30zdns1cXN9N3B7MTdzdTV0dTVxc31ja3s1a3Q0cXd9NGx7NWt0NHF3fWNtezVrdDRxd31jbns1a3Q0cXd9Y297NWt0NHF3fWNwezVrdDRxd302bHs0cXM1a3M1b3U1cXc1cnUxN3N1NXR1fTE3c3sya3N9NXF7Y2t2Y2x2Y212Y252Y292Y3B2NGx2fTVye2NrdWNsdWNtdWNudWNvdWNwdTRsdX01dHsya3N9NnB7NHFzNWtzNW91NXF3NXJ1MTdzdTV0dX1la3s0cXM1a3M1b3U1cXc1cnUxN3N1NXR1fWVsezRxczVrczVvdTVxdzVydTE3c3U1dHV9ZW17NHFzNWtzNW91NXF3NXJ1MTdzdTV0dX1lbns0cXM1a3M1b3U1cXc1cnUxN3N1NXR1fWVvezRxczVrczVvdTVxdzVydTE3c3U1dHV9ZXB7NHFzNWtzNW91NXF3NXJ1MTdzdTV0dX1lc3s1a3M1cXM0cXN9ZXR7NHFzNWtzNW91NXF3NXJ1MTdzdTV0dX1ldXs0cXM1a3M1cXc1cnUxN3N1NXR1fWV2ezVrczVxczRxc31leHsxN3NzNXRzNXFzfTZ6ezRxdjVrczVvdTVxdzVydTE3c3U1dHV9Zm17NHF2NWtzNW91NXF3NXJ1MTdzdTV0dX1mbns0cXY1a3M1b3U1cXc1cnUxN3N1NXR1fWZvezRxdjVrczVvdTVxdzVydTE3c3U1dHV9ZnB7NHF2NWtzNW91NXF3NXJ1MTdzdTV0dX1mcXs0cXY1a3M1b3U1cXc1cnUxN3N1NXR1fTdyezVvc31mc3s0cXY1a3M1b3U1cXc1cnUxN3N1NXR1fWZ0ezE3c3U1dHU1cXN9ZnV7MTdzdTV0dTVxc31mdnsxN3N1NXR1NXFzfWZ3ezE3c3U1dHU1cXN9fX0iKSwiVGltZXMtUm9tYW4iOmMoInsnd2lkdGhzJ3trM24ycTR5Y3gybDIwMW4zbTIwMW82bzIwMXMybDIwMXQybDIwMXUybDIwMXcydzIwMXgydzIwMXkydzJrMXQybDJsMjAybTJuMm4zbTJvM20ycDVuMjAycTZvMnIxbTJzMmwydDJsMnUzbTJ2M3MydzF0MngybDJ5MXQyejF3M2szbTNsM20zbTNtM24zbTNvM20zcDNtM3EzbTNyM20zczNtMjAzdDJsMjAzdTJsM3YxdzN3M3MzeDNzM3kzczN6Mnc0azV3NGw0czRtNG00bjRtNG80czRwM3g0cTNyNHI0czRzNHM0dDJsNHUycjR2NHM0dzN4NHg1dDR5NHM0ejRzNWszcjVsNHM1bTRtNW4zcjVvM3g1cDRzNXE0czVyNXk1czRzNXQ0czV1M3g1djJsNXcxdzV4Mmw1eTJ6NXozbTZrMmw2bDJ3Nm0zbTZuMnc2bzNtNnAydzZxMmw2cjNtNnMzbTZ0MXc2dTF3NnYzbTZ3MXc2eDR5NnkzbTZ6M203azNtN2wzbTdtMmw3bjJyN28xdzdwM203cTNtN3I0czdzM203dDNtN3Uydzd2M2s3dzFvN3gzazd5M3EyMDJsM21jbDRzYWwybGFtM21hbjNtYW8zbWFwM21hcjNtYXMybGF0NHdhdTF2YXYzbWF3M3NheTR3YXoybGJrMnNibDNzJ2ZvZic2b2JvMmxicDNtYnEyeGJyMXRiczJsYnUxemJ2M21iejJ3Y2s0czIwMmszbWNtNHNjbjRzY280c2NwNHNjcTV0Y3I0bWNzM3hjdDN4Y3UzeGN2M3hjdzJsMm0ydGN5MmxjejJsZGw0c2RtNHNkbjRzZG80c2RwNHNkcTRzZHM0c2R0NHNkdTRzZHY0c2R3NHNkejNtZWsyd2VsMndlbTJ3ZW4yd2VvMndlcDJ3ZXE0bWVyMndlczJ3ZXQyd2V1MndldjJ3ZXcxd2V4MXdleTF3ZXoxd2ZsM21mbTNtZm4zbWZvM21mcDNtZnEzbWZyM3NmczNtZnQzbWZ1M21mdjNtZnczbWZ6M20yMDNrNm8yMTJtNm0yZHcybDJjcTJsM3QzbTN1MXcxN3M0czE5bTNtfSdrZXJuaW5nJ3tjbHs0cXM1a3UxN3N3NW91NXF5NXJ3MjAxc3M1dHcyMDF3c30yMDFzezIwMXNzfTIwMXR7Y2t3NGx3Y213Y253Y293Y3B3Y2x3NHd1MjAxdHN9Mmt7MjAxdHN9Mnd7NHFzNWt3NW9zNXF4NXJ1MTdzeDV0eH0yeHsxN3N3NXR3NW91NXF1fTJ5ezRxczVrdzVvczVxeDVydTE3c3g1dHh9J2ZvZictNm83dHtja3VjbHVjbXVjbnVjb3VjcHU0bHU1b3M1cnN9M3V7MTdzdTV0dTVxc30zdnsxN3N1NXR1NXFzfTdwezE3c3c1dHc1cXN9Y2t7NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9NGx7NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9Y217NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9Y257NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9Y297NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9Y3B7NHFzNWt1MTdzdzVvdTVxeTVydzIwMXNzNXR3MjAxd3N9Nmx7MTdzdTV0dTVvczVxdzVyc30xN3N7Mmt0Y2x2Y212Y252Y292Y3B2NGx2NHd1Y2t2fTVve2Nrd2Nsd2Ntd2Nud2Nvd2NwdzRsdzR3dX01cXtja3ljbHljbXljbnljb3ljcHk0bHk0d3U1bXN9NXJ7Y2t0Y2x0Y210Y250Y290Y3B0NGx0NHdzfTV0ezJrdGNsdmNtdmNudmNvdmNwdjRsdjR3dWNrdn03cXtja3NjbHNjbXNjbnNjb3NjcHM0bHN9NnB7MTdzdTV0dTVxdzVyc31la3s1cXM1cnN9ZWx7MTdzdTV0dTVvczVxdzVyc31lbXsxN3N1NXR1NW9zNXFzNXJzfWVuezE3c3U1cXM1cnN9ZW97NXFzNXJzfWVwezE3c3U1dHU1b3M1cXc1cnN9ZXN7NXFzfWV0ezE3c3U1dHU1cXc1cnN9ZXV7MTdzdTV0dTVxczVyc31ldns1cXN9Nnp7MTdzdjV0djVvczVxeDVyc31mbXs1b3M1cXQ1cnN9Zm57MTdzdjV0djVvczVxeDVyc31mb3sxN3N2NXR2NW9zNXF4NXJzfWZwezVvczVxdDVyc31mcXs1b3M1cXQ1cnN9N3J7Y2t1Y2x1Y211Y251Y291Y3B1NGx1NW9zfWZzezE3c3Y1dHY1b3M1cXg1cnN9ZnR7MTdzczV0czVxc31mdXsxN3N3NXR3NXFzfWZ2ezE3c3c1dHc1cXN9Znd7MTdzczV0czVxc31mentja3VjbHVjbXVjbnVjb3VjcHU0bHU1b3M1cnN9fX0iKSwiSGVsdmV0aWNhLU9ibGlxdWUiOmMoInsnd2lkdGhzJ3trM3AycTRtY3gxdzIwMW4zcjIwMW82bzIwMXMxcTIwMXQxcTIwMXUxcTIwMXcybDIwMXgybDIwMXkybDJrMXcybDF3MjAybTJuMm4zcjJvM3IycDV0MjAycTZvMnIxbjJzMmwydDJsMnUycjJ2M3UydzF3MngybDJ5MXcyejF3M2szcjNsM3IzbTNyM24zcjNvM3IzcDNyM3EzcjNyM3IzczNyMjAzdDJsMjAzdTJsM3YxdzN3M3UzeDN1M3kzdTN6M3I0azZwNGw0bTRtNG00bjRzNG80czRwNG00cTN4NHI0eTRzNHM0dDF3NHUzbTR2NG00dzNyNHg1bjR5NHM0ejR5NWs0bTVsNHk1bTRzNW40bTVvM3g1cDRzNXE0bTVyNXk1czRtNXQ0bTV1M3g1djF3NXcxdzV4MXc1eTJ6NXozcjZrMmw2bDNyNm0zcjZuM202bzNyNnAzcjZxMXc2cjNyNnMzcjZ0MXE2dTFxNnYzbTZ3MXE2eDVuNnkzcjZ6M3I3azNyN2wzcjdtMmw3bjNtN28xdzdwM3I3cTNtN3I0czdzM203dDNtN3UzbTd2Mmw3dzF1N3gybDd5M3UyMDJsM3JjbDRtYWwybGFtM3JhbjNyYW8zcmFwM3JhcjNyYXMybGF0NHRhdTJwYXYzcmF3M3VheTR0YXoybGJrMnNibDN1J2ZvZic2b2JvMmxicDNyYnIxd2JzMmxidTJvYnYzcmJ6M3hjazRtMjAyazNyY200bWNuNG1jbzRtY3A0bWNxNm9jcjRzY3M0bWN0NG1jdTRtY3Y0bWN3MXcybTJuY3kxd2N6MXdkbDRzZG00eWRuNHlkbzR5ZHA0eWRxNHlkczR5ZHQ0c2R1NHNkdjRzZHc0c2R6M3hlazNyZWwzcmVtM3JlbjNyZW8zcmVwM3JlcTV0ZXIzbWVzM3JldDNyZXUzcmV2M3JldzF3ZXgxd2V5MXdlejF3ZmwzcmZtM3JmbjNyZm8zcmZwM3JmcTNyZnIzdWZzM3hmdDNyZnUzcmZ2M3JmdzNyZnozbTIwM2s2bzIxMm02bzJkdzJsMmNxMmwzdDNyM3UxdzE3czRtMTltM3J9J2tlcm5pbmcnezVxezR3dn1jbHs0cXM1a3c1b3c1cXMxN3N2NXR2fTIwMXR7Mnd1NHcxazJ5dX0yMDF4ezJ3dTR3eTJ5dX0xN3N7Mmt0Y2x1Y211Y251NG90Y3B1NGx1NHd5Y291Y2t1fTJ3ezdxczRxejVrMW0xN3N5NW93NXF4NXJzZnN1NXR5N3R1Znp1fTJ4ezE3c3k1dHk1b3k1cXN9Mnl7N3FzNHF6NWsxbTE3c3k1b3c1cXg1cnNmc3U1dHk3dHVmenV9J2ZvZictNm83cHsxN3N2NXR2NW93fWNrezRxczVrdzVvdzVxczE3c3Y1dHZ9NGx7NHFzNWt3NW93NXFzMTdzdjV0dn1jbXs0cXM1a3c1b3c1cXMxN3N2NXR2fWNuezRxczVrdzVvdzVxczE3c3Y1dHZ9Y297NHFzNWt3NW93NXFzMTdzdjV0dn1jcHs0cXM1a3c1b3c1cXMxN3N2NXR2fTZsezE3c3k1dHk1b3d9ZG97MTdzdDV0dH00ensxN3N0NXR0fTdze2ZzdH1kbXsxN3N0NXR0fWRuezE3c3Q1dHR9NW97Y2t3Y2x3Y213Y253Y293Y3B3NGx3NHd2fWRwezE3c3Q1dHR9ZHF7MTdzdDV0dH03dHs1b3d9ZHN7MTdzdDV0dH01dHsya3RjbHVjbXVjbnU0b3RjcHU0bHU0d3ljb3Vja3V9ZnV7MTdzdjV0djVvd302cHsxN3N5NXR5NW93NXFzfWVrezE3c3k1dHk1b3d9ZWx7MTdzeTV0eTVvd31lbXsxN3N5NXR5NW93fWVuezV0eX1lb3sxN3N5NXR5NW93fWVwezE3c3k1dHk1b3d9ZXN7MTdzeTV0eTVxc31ldHsxN3N5NXR5NW93NXFzfWV1ezE3c3k1dHk1b3c1cXN9ZXZ7MTdzeTV0eTVvdzVxc302ensxN3N5NXR5NW93NXFzfWZtezE3c3k1dHk1b3c1cXN9Zm57MTdzeTV0eTVvdzVxc31mb3sxN3N5NXR5NW93NXFzfWZwezE3c3k1dHk1cXN9ZnF7MTdzeTV0eTVvdzVxc303cns1b3d9ZnN7MTdzeTV0eTVvdzVxc31mdHsxN3N2NXR2NW93fTdtezVvd31mdnsxN3N2NXR2NW93fWZ3ezE3c3Y1dHY1b3d9fX0iKX19O3QuZXZlbnRzLnB1c2goWyJhZGRGb250IixmdW5jdGlvbih0KXt2YXIgZT10LmZvbnQscj1oLlVuaWNvZGVbZS5wb3N0U2NyaXB0TmFtZV07ciYmKGUubWV0YWRhdGEuVW5pY29kZT17fSxlLm1ldGFkYXRhLlVuaWNvZGUud2lkdGhzPXIud2lkdGhzLGUubWV0YWRhdGEuVW5pY29kZS5rZXJuaW5nPXIua2VybmluZyk7dmFyIG49bC5Vbmljb2RlW2UucG9zdFNjcmlwdE5hbWVdO24mJihlLm1ldGFkYXRhLlVuaWNvZGUuZW5jb2Rpbmc9bixlLmVuY29kaW5nPW4uY29kZVBhZ2VzWzBdKX1dKX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KICAgKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UKICAgKi8KZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkoZSksbj0wO248ZTtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9O3QuQVBJLmV2ZW50cy5wdXNoKFsiYWRkRm9udCIsZnVuY3Rpb24ocil7dmFyIG49dm9pZCAwLGk9ci5mb250LGE9ci5pbnN0YW5jZTtpZighaS5pc1N0YW5kYXJkRm9udCl7aWYodm9pZCAwPT09YSl0aHJvdyBuZXcgRXJyb3IoIkZvbnQgZG9lcyBub3QgZXhpc3QgaW4gdkZTLCBpbXBvcnQgZm9udHMgb3IgcmVtb3ZlIGRlY2xhcmF0aW9uIGRvYy5hZGRGb250KCciK2kucG9zdFNjcmlwdE5hbWUrIicpLiIpO2lmKCJzdHJpbmciIT10eXBlb2Yobj0hMT09PWEuZXhpc3RzRmlsZUluVkZTKGkucG9zdFNjcmlwdE5hbWUpP2EubG9hZEZpbGUoaS5wb3N0U2NyaXB0TmFtZSk6YS5nZXRGaWxlRnJvbVZGUyhpLnBvc3RTY3JpcHROYW1lKSkpdGhyb3cgbmV3IEVycm9yKCJGb250IGlzIG5vdCBzdG9yZWQgYXMgc3RyaW5nLWRhdGEgaW4gdkZTLCBpbXBvcnQgZm9udHMgb3IgcmVtb3ZlIGRlY2xhcmF0aW9uIGRvYy5hZGRGb250KCciK2kucG9zdFNjcmlwdE5hbWUrIicpLiIpOyFmdW5jdGlvbihyLG4pe249L15ceDAwXHgwMVx4MDBceDAwLy50ZXN0KG4pP2Uobik6ZShjKG4pKSxyLm1ldGFkYXRhPXQuQVBJLlRURkZvbnQub3BlbihuKSxyLm1ldGFkYXRhLlVuaWNvZGU9ci5tZXRhZGF0YS5Vbmljb2RlfHx7ZW5jb2Rpbmc6e30sa2VybmluZzp7fSx3aWR0aHM6W119LHIubWV0YWRhdGEuZ2x5SWRzVXNlZD1bMF19KGksbil9fV0pfShNKSxmdW5jdGlvbihuKXtmdW5jdGlvbiBhKCl7cmV0dXJuKHIuY2Fudmc\/UHJvbWlzZS5yZXNvbHZlKHIuY2FudmcpOiJvYmplY3QiPT09KHZvaWQgMD09PXQ\/InVuZGVmaW5lZCI6ZSh0KSkmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP25ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe3RyeXt0KHJlcXVpcmUoImNhbnZnIikpfWNhdGNoKHQpe2UodCl9fSkpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dHJ5e3JlcXVpcmUoWyJjYW52ZyJdLHQpfWNhdGNoKHQpe2UodCl9fSkpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiQ291bGQgbm90IGxvYWQgY2FudmciKSkpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDb3VsZCBub3QgbG9hZCBjYW52ZzogIit0KSl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVmYXVsdD90LmRlZmF1bHQ6dH0pKX1uLmFkZFN2Z0FzSW1hZ2U9ZnVuY3Rpb24odCxlLHIsbixvLHMsYyx1KXtpZihpc05hTihlKXx8aXNOYU4ocikpdGhyb3cgaS5lcnJvcigianNQREYuYWRkU3ZnQXNJbWFnZTogSW52YWxpZCBjb29yZGluYXRlcyIsYXJndW1lbnRzKSxuZXcgRXJyb3IoIkludmFsaWQgY29vcmRpbmF0ZXMgcGFzc2VkIHRvIGpzUERGLmFkZFN2Z0FzSW1hZ2UiKTtpZihpc05hTihuKXx8aXNOYU4obykpdGhyb3cgaS5lcnJvcigianNQREYuYWRkU3ZnQXNJbWFnZTogSW52YWxpZCBtZWFzdXJlbWVudHMiLGFyZ3VtZW50cyksbmV3IEVycm9yKCJJbnZhbGlkIG1lYXN1cmVtZW50cyAod2lkdGggYW5kL29yIGhlaWdodCkgcGFzc2VkIHRvIGpzUERGLmFkZFN2Z0FzSW1hZ2UiKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtsLndpZHRoPW4sbC5oZWlnaHQ9bzt2YXIgaD1sLmdldENvbnRleHQoIjJkIik7aC5maWxsU3R5bGU9IiNmZmYiLGguZmlsbFJlY3QoMCwwLGwud2lkdGgsbC5oZWlnaHQpO3ZhciBmPXtpZ25vcmVNb3VzZTohMCxpZ25vcmVBbmltYXRpb246ITAsaWdub3JlRGltZW5zaW9uczohMH0sZD10aGlzO3JldHVybiBhKCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZnJvbVN0cmluZyhoLHQsZil9KSwoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJDb3VsZCBub3QgbG9hZCBjYW52Zy4iKSl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVuZGVyKGYpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ZC5hZGRJbWFnZShsLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsMSksZSxyLG4sbyxjLHUpfSkpfX0oTS5BUEkpLAovKioKICAgKiBAbGljZW5zZQogICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICogQ29weXJpZ2h0IChjKSAyMDEzIEVkdWFyZG8gTWVuZXplcyBkZSBNb3JhaXMsIGVkdWFyZG8ubW9yYWlzQHVzcC5icgogICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiAgICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogICAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKICAgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KICAgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICAgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICoKICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQogICAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAqCiAgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAgICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAgICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKICAgKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCiAgICogTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgogICAqIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgogICAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICovCmZ1bmN0aW9uKHQpe3QucHV0VG90YWxQYWdlcz1mdW5jdGlvbih0KXt2YXIgZSxyPTA7cGFyc2VJbnQodGhpcy5pbnRlcm5hbC5nZXRGb250KCkuaWQuc3Vic3RyKDEpLDEwKTwxNT8oZT1uZXcgUmVnRXhwKHQsImciKSxyPXRoaXMuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpKTooZT1uZXcgUmVnRXhwKHRoaXMucGRmRXNjYXBlMTYodCx0aGlzLmludGVybmFsLmdldEZvbnQoKSksImciKSxyPXRoaXMucGRmRXNjYXBlMTYodGhpcy5pbnRlcm5hbC5nZXROdW1iZXJPZlBhZ2VzKCkrIiIsdGhpcy5pbnRlcm5hbC5nZXRGb250KCkpKTtmb3IodmFyIG49MTtuPD10aGlzLmludGVybmFsLmdldE51bWJlck9mUGFnZXMoKTtuKyspZm9yKHZhciBpPTA7aTx0aGlzLmludGVybmFsLnBhZ2VzW25dLmxlbmd0aDtpKyspdGhpcy5pbnRlcm5hbC5wYWdlc1tuXVtpXT10aGlzLmludGVybmFsLnBhZ2VzW25dW2ldLnJlcGxhY2UoZSxyKTtyZXR1cm4gdGhpc319KE0uQVBJKSxmdW5jdGlvbih0KXt0LnZpZXdlclByZWZlcmVuY2VzPWZ1bmN0aW9uKHQscil7dmFyIG47dD10fHx7fSxyPXJ8fCExO3ZhciBpLGEsbyxzPXtIaWRlVG9vbGJhcjp7ZGVmYXVsdFZhbHVlOiExLHZhbHVlOiExLHR5cGU6ImJvb2xlYW4iLGV4cGxpY2l0U2V0OiExLHZhbHVlU2V0OlshMCwhMV0scGRmVmVyc2lvbjoxLjN9LEhpZGVNZW51YmFyOntkZWZhdWx0VmFsdWU6ITEsdmFsdWU6ITEsdHlwZToiYm9vbGVhbiIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyEwLCExXSxwZGZWZXJzaW9uOjEuM30sSGlkZVdpbmRvd1VJOntkZWZhdWx0VmFsdWU6ITEsdmFsdWU6ITEsdHlwZToiYm9vbGVhbiIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyEwLCExXSxwZGZWZXJzaW9uOjEuM30sRml0V2luZG93OntkZWZhdWx0VmFsdWU6ITEsdmFsdWU6ITEsdHlwZToiYm9vbGVhbiIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyEwLCExXSxwZGZWZXJzaW9uOjEuM30sQ2VudGVyV2luZG93OntkZWZhdWx0VmFsdWU6ITEsdmFsdWU6ITEsdHlwZToiYm9vbGVhbiIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyEwLCExXSxwZGZWZXJzaW9uOjEuM30sRGlzcGxheURvY1RpdGxlOntkZWZhdWx0VmFsdWU6ITEsdmFsdWU6ITEsdHlwZToiYm9vbGVhbiIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyEwLCExXSxwZGZWZXJzaW9uOjEuNH0sTm9uRnVsbFNjcmVlblBhZ2VNb2RlOntkZWZhdWx0VmFsdWU6IlVzZU5vbmUiLHZhbHVlOiJVc2VOb25lIix0eXBlOiJuYW1lIixleHBsaWNpdFNldDohMSx2YWx1ZVNldDpbIlVzZU5vbmUiLCJVc2VPdXRsaW5lcyIsIlVzZVRodW1icyIsIlVzZU9DIl0scGRmVmVyc2lvbjoxLjN9LERpcmVjdGlvbjp7ZGVmYXVsdFZhbHVlOiJMMlIiLHZhbHVlOiJMMlIiLHR5cGU6Im5hbWUiLGV4cGxpY2l0U2V0OiExLHZhbHVlU2V0OlsiTDJSIiwiUjJMIl0scGRmVmVyc2lvbjoxLjN9LFZpZXdBcmVhOntkZWZhdWx0VmFsdWU6IkNyb3BCb3giLHZhbHVlOiJDcm9wQm94Iix0eXBlOiJuYW1lIixleHBsaWNpdFNldDohMSx2YWx1ZVNldDpbIk1lZGlhQm94IiwiQ3JvcEJveCIsIlRyaW1Cb3giLCJCbGVlZEJveCIsIkFydEJveCJdLHBkZlZlcnNpb246MS40fSxWaWV3Q2xpcDp7ZGVmYXVsdFZhbHVlOiJDcm9wQm94Iix2YWx1ZToiQ3JvcEJveCIsdHlwZToibmFtZSIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyJNZWRpYUJveCIsIkNyb3BCb3giLCJUcmltQm94IiwiQmxlZWRCb3giLCJBcnRCb3giXSxwZGZWZXJzaW9uOjEuNH0sUHJpbnRBcmVhOntkZWZhdWx0VmFsdWU6IkNyb3BCb3giLHZhbHVlOiJDcm9wQm94Iix0eXBlOiJuYW1lIixleHBsaWNpdFNldDohMSx2YWx1ZVNldDpbIk1lZGlhQm94IiwiQ3JvcEJveCIsIlRyaW1Cb3giLCJCbGVlZEJveCIsIkFydEJveCJdLHBkZlZlcnNpb246MS40fSxQcmludENsaXA6e2RlZmF1bHRWYWx1ZToiQ3JvcEJveCIsdmFsdWU6IkNyb3BCb3giLHR5cGU6Im5hbWUiLGV4cGxpY2l0U2V0OiExLHZhbHVlU2V0OlsiTWVkaWFCb3giLCJDcm9wQm94IiwiVHJpbUJveCIsIkJsZWVkQm94IiwiQXJ0Qm94Il0scGRmVmVyc2lvbjoxLjR9LFByaW50U2NhbGluZzp7ZGVmYXVsdFZhbHVlOiJBcHBEZWZhdWx0Iix2YWx1ZToiQXBwRGVmYXVsdCIsdHlwZToibmFtZSIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyJBcHBEZWZhdWx0IiwiTm9uZSJdLHBkZlZlcnNpb246MS42fSxEdXBsZXg6e2RlZmF1bHRWYWx1ZToiIix2YWx1ZToibm9uZSIsdHlwZToibmFtZSIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6WyJTaW1wbGV4IiwiRHVwbGV4RmxpcFNob3J0RWRnZSIsIkR1cGxleEZsaXBMb25nRWRnZSIsIm5vbmUiXSxwZGZWZXJzaW9uOjEuN30sUGlja1RyYXlCeVBERlNpemU6e2RlZmF1bHRWYWx1ZTohMSx2YWx1ZTohMSx0eXBlOiJib29sZWFuIixleHBsaWNpdFNldDohMSx2YWx1ZVNldDpbITAsITFdLHBkZlZlcnNpb246MS43fSxQcmludFBhZ2VSYW5nZTp7ZGVmYXVsdFZhbHVlOiIiLHZhbHVlOiIiLHR5cGU6ImFycmF5IixleHBsaWNpdFNldDohMSx2YWx1ZVNldDpudWxsLHBkZlZlcnNpb246MS43fSxOdW1Db3BpZXM6e2RlZmF1bHRWYWx1ZToxLHZhbHVlOjEsdHlwZToiaW50ZWdlciIsZXhwbGljaXRTZXQ6ITEsdmFsdWVTZXQ6bnVsbCxwZGZWZXJzaW9uOjEuN319LGM9T2JqZWN0LmtleXMocyksdT1bXSxsPTAsaD0wLGY9MDtmdW5jdGlvbiBkKHQsZSl7dmFyIHIsbj0hMTtmb3Iocj0wO3I8dC5sZW5ndGg7cis9MSl0W3JdPT09ZSYmKG49ITApO3JldHVybiBufWlmKHZvaWQgMD09PXRoaXMuaW50ZXJuYWwudmlld2VycHJlZmVyZW5jZXMmJih0aGlzLmludGVybmFsLnZpZXdlcnByZWZlcmVuY2VzPXt9LHRoaXMuaW50ZXJuYWwudmlld2VycHJlZmVyZW5jZXMuY29uZmlndXJhdGlvbj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMpKSx0aGlzLmludGVybmFsLnZpZXdlcnByZWZlcmVuY2VzLmlzU3Vic2NyaWJlZD0hMSksbj10aGlzLmludGVybmFsLnZpZXdlcnByZWZlcmVuY2VzLmNvbmZpZ3VyYXRpb24sInJlc2V0Ij09PXR8fCEwPT09cil7dmFyIHA9Yy5sZW5ndGg7Zm9yKGY9MDtmPHA7Zis9MSluW2NbZl1dLnZhbHVlPW5bY1tmXV0uZGVmYXVsdFZhbHVlLG5bY1tmXV0uZXhwbGljaXRTZXQ9ITF9aWYoIm9iamVjdCI9PT1lKHQpKWZvcihhIGluIHQpaWYobz10W2FdLGQoYyxhKSYmdm9pZCAwIT09byl7aWYoImJvb2xlYW4iPT09blthXS50eXBlJiYiYm9vbGVhbiI9PXR5cGVvZiBvKW5bYV0udmFsdWU9bztlbHNlIGlmKCJuYW1lIj09PW5bYV0udHlwZSYmZChuW2FdLnZhbHVlU2V0LG8pKW5bYV0udmFsdWU9bztlbHNlIGlmKCJpbnRlZ2VyIj09PW5bYV0udHlwZSYmTnVtYmVyLmlzSW50ZWdlcihvKSluW2FdLnZhbHVlPW87ZWxzZSBpZigiYXJyYXkiPT09blthXS50eXBlKXtmb3IobD0wO2w8by5sZW5ndGg7bCs9MSlpZihpPSEwLDE9PT1vW2xdLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBvW2xdWzBdKXUucHVzaChTdHJpbmcob1tsXS0xKSk7ZWxzZSBpZihvW2xdLmxlbmd0aD4xKXtmb3IoaD0wO2g8b1tsXS5sZW5ndGg7aCs9MSkibnVtYmVyIiE9dHlwZW9mIG9bbF1baF0mJihpPSExKTshMD09PWkmJnUucHVzaChbb1tsXVswXS0xLG9bbF1bMV0tMV0uam9pbigiICIpKX1uW2FdLnZhbHVlPSJbIit1LmpvaW4oIiAiKSsiXSJ9ZWxzZSBuW2FdLnZhbHVlPW5bYV0uZGVmYXVsdFZhbHVlO25bYV0uZXhwbGljaXRTZXQ9ITB9cmV0dXJuITE9PT10aGlzLmludGVybmFsLnZpZXdlcnByZWZlcmVuY2VzLmlzU3Vic2NyaWJlZCYmKHRoaXMuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicHV0Q2F0YWxvZyIsKGZ1bmN0aW9uKCl7dmFyIHQsZT1bXTtmb3IodCBpbiBuKSEwPT09blt0XS5leHBsaWNpdFNldCYmKCJuYW1lIj09PW5bdF0udHlwZT9lLnB1c2goIi8iK3QrIiAvIituW3RdLnZhbHVlKTplLnB1c2goIi8iK3QrIiAiK25bdF0udmFsdWUpKTswIT09ZS5sZW5ndGgmJnRoaXMuaW50ZXJuYWwud3JpdGUoIi9WaWV3ZXJQcmVmZXJlbmNlc1xuPDxcbiIrZS5qb2luKCJcbiIpKyJcbj4+Iil9KSksdGhpcy5pbnRlcm5hbC52aWV3ZXJwcmVmZXJlbmNlcy5pc1N1YnNjcmliZWQ9ITApLHRoaXMuaW50ZXJuYWwudmlld2VycHJlZmVyZW5jZXMuY29uZmlndXJhdGlvbj1uLHRoaXN9fShNLkFQSSksCi8qKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAqIEBsaWNlbnNlCiAgICoganNQREYgWE1QIG1ldGFkYXRhIHBsdWdpbgogICAqIENvcHlyaWdodCAoYykgMjAxNiBKdXNzaSBVdHVuZW4sIHUtanVzc2lAc3VvbWkyNC5maQogICAqCiAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiAgICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogICAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKICAgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KICAgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICAgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICoKICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQogICAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAqCiAgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAgICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAgICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKICAgKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCiAgICogTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgogICAqIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgogICAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICovCmZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7dmFyIHQ9JzxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6anNwZGY9IicrdGhpcy5pbnRlcm5hbC5fX21ldGFkYXRhX18ubmFtZXNwYWNldXJpKyciPjxqc3BkZjptZXRhZGF0YT4nLGU9dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KCc8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj4nKSkscj11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpLG49dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaW50ZXJuYWwuX19tZXRhZGF0YV9fLm1ldGFkYXRhKSksaT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoIjwvanNwZGY6bWV0YWRhdGE+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPiIpKSxhPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCgiPC94OnhtcG1ldGE+IikpLG89ci5sZW5ndGgrbi5sZW5ndGgraS5sZW5ndGgrZS5sZW5ndGgrYS5sZW5ndGg7dGhpcy5pbnRlcm5hbC5fX21ldGFkYXRhX18ubWV0YWRhdGFfb2JqZWN0X251bWJlcj10aGlzLmludGVybmFsLm5ld09iamVjdCgpLHRoaXMuaW50ZXJuYWwud3JpdGUoIjw8IC9UeXBlIC9NZXRhZGF0YSAvU3VidHlwZSAvWE1MIC9MZW5ndGggIitvKyIgPj4iKSx0aGlzLmludGVybmFsLndyaXRlKCJzdHJlYW0iKSx0aGlzLmludGVybmFsLndyaXRlKGUrcituK2krYSksdGhpcy5pbnRlcm5hbC53cml0ZSgiZW5kc3RyZWFtIiksdGhpcy5pbnRlcm5hbC53cml0ZSgiZW5kb2JqIil9LHI9ZnVuY3Rpb24oKXt0aGlzLmludGVybmFsLl9fbWV0YWRhdGFfXy5tZXRhZGF0YV9vYmplY3RfbnVtYmVyJiZ0aGlzLmludGVybmFsLndyaXRlKCIvTWV0YWRhdGEgIit0aGlzLmludGVybmFsLl9fbWV0YWRhdGFfXy5tZXRhZGF0YV9vYmplY3RfbnVtYmVyKyIgMCBSIil9O3QuYWRkTWV0YWRhdGE9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5pbnRlcm5hbC5fX21ldGFkYXRhX18mJih0aGlzLmludGVybmFsLl9fbWV0YWRhdGFfXz17bWV0YWRhdGE6dCxuYW1lc3BhY2V1cmk6bnx8Imh0dHA6Ly9qc3BkZi5kZWZhdWx0Lm5hbWVzcGFjZXVyaS8ifSx0aGlzLmludGVybmFsLmV2ZW50cy5zdWJzY3JpYmUoInB1dENhdGFsb2ciLHIpLHRoaXMuaW50ZXJuYWwuZXZlbnRzLnN1YnNjcmliZSgicG9zdFB1dFJlc291cmNlcyIsZSkpLHRoaXN9fShNLkFQSSksZnVuY3Rpb24odCl7dmFyIGU9dC5BUEkscj1lLnBkZkVzY2FwZTE2PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49ZS5tZXRhZGF0YS5Vbmljb2RlLndpZHRocyxpPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCJdLGE9WyIiXSxvPTAscz10Lmxlbmd0aDtvPHM7KytvKXtpZihyPWUubWV0YWRhdGEuY2hhcmFjdGVyVG9HbHlwaCh0LmNoYXJDb2RlQXQobykpLGUubWV0YWRhdGEuZ2x5SWRzVXNlZC5wdXNoKHIpLGUubWV0YWRhdGEudG9Vbmljb2RlW3JdPXQuY2hhckNvZGVBdChvKSwtMT09bi5pbmRleE9mKHIpJiYobi5wdXNoKHIpLG4ucHVzaChbcGFyc2VJbnQoZS5tZXRhZGF0YS53aWR0aE9mR2x5cGgociksMTApXSkpLCIwIj09cilyZXR1cm4gYS5qb2luKCIiKTtyPXIudG9TdHJpbmcoMTYpLGEucHVzaChpWzQtci5sZW5ndGhdLHIpfXJldHVybiBhLmpvaW4oIiIpfSxuPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzO2ZvcihhPSIvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW5cbjEyIGRpY3QgYmVnaW5cbmJlZ2luY21hcFxuL0NJRFN5c3RlbUluZm8gPDxcbiAgL1JlZ2lzdHJ5IChBZG9iZSlcbiAgL09yZGVyaW5nIChVQ1MpXG4gIC9TdXBwbGVtZW50IDBcbj4+IGRlZlxuL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmXG4vQ01hcFR5cGUgMiBkZWZcbjEgYmVnaW5jb2Rlc3BhY2VyYW5nZVxuPDAwMDA+PGZmZmY+XG5lbmRjb2Rlc3BhY2VyYW5nZSIsbj1bXSxvPTAscz0ocj1PYmplY3Qua2V5cyh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSkpLmxlbmd0aDtvPHM7bysrKWU9cltvXSxuLmxlbmd0aD49MTAwJiYoYSs9IlxuIituLmxlbmd0aCsiIGJlZ2luYmZjaGFyXG4iK24uam9pbigiXG4iKSsiXG5lbmRiZmNoYXIiLG49W10pLHZvaWQgMCE9PXRbZV0mJm51bGwhPT10W2VdJiYiZnVuY3Rpb24iPT10eXBlb2YgdFtlXS50b1N0cmluZyYmKGk9KCIwMDAwIit0W2VdLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpLGU9KCIwMDAwIisoK2UpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpLG4ucHVzaCgiPCIrZSsiPjwiK2krIj4iKSk7cmV0dXJuIG4ubGVuZ3RoJiYoYSs9IlxuIituLmxlbmd0aCsiIGJlZ2luYmZjaGFyXG4iK24uam9pbigiXG4iKSsiXG5lbmRiZmNoYXJcbiIpLGErPSJlbmRjbWFwXG5DTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3BcbmVuZFxuZW5kIn07ZS5ldmVudHMucHVzaChbInB1dEZvbnQiLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgcj1lLmZvbnQsaT1lLm91dCxhPWUubmV3T2JqZWN0LG89ZS5wdXRTdHJlYW07aWYoci5tZXRhZGF0YSBpbnN0YW5jZW9mIHQuQVBJLlRURkZvbnQmJiJJZGVudGl0eS1IIj09PXIuZW5jb2Rpbmcpe2Zvcih2YXIgcz1yLm1ldGFkYXRhLlVuaWNvZGUud2lkdGhzLGM9ci5tZXRhZGF0YS5zdWJzZXQuZW5jb2RlKHIubWV0YWRhdGEuZ2x5SWRzVXNlZCwxKSx1PSIiLGw9MDtsPGMubGVuZ3RoO2wrKyl1Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbbF0pO3ZhciBoPWEoKTtvKHtkYXRhOnUsYWRkTGVuZ3RoMTohMCxvYmplY3RJZDpofSksaSgiZW5kb2JqIik7dmFyIGY9YSgpO28oe2RhdGE6bihyLm1ldGFkYXRhLnRvVW5pY29kZSksYWRkTGVuZ3RoMTohMCxvYmplY3RJZDpmfSksaSgiZW5kb2JqIik7dmFyIGQ9YSgpO2koIjw8IiksaSgiL1R5cGUgL0ZvbnREZXNjcmlwdG9yIiksaSgiL0ZvbnROYW1lIC8iK0Yoci5mb250TmFtZSkpLGkoIi9Gb250RmlsZTIgIitoKyIgMCBSIiksaSgiL0ZvbnRCQm94ICIrdC5BUEkuUERGT2JqZWN0LmNvbnZlcnQoci5tZXRhZGF0YS5iYm94KSksaSgiL0ZsYWdzICIrci5tZXRhZGF0YS5mbGFncyksaSgiL1N0ZW1WICIrci5tZXRhZGF0YS5zdGVtViksaSgiL0l0YWxpY0FuZ2xlICIrci5tZXRhZGF0YS5pdGFsaWNBbmdsZSksaSgiL0FzY2VudCAiK3IubWV0YWRhdGEuYXNjZW5kZXIpLGkoIi9EZXNjZW50ICIrci5tZXRhZGF0YS5kZWNlbmRlciksaSgiL0NhcEhlaWdodCAiK3IubWV0YWRhdGEuY2FwSGVpZ2h0KSxpKCI+PiIpLGkoImVuZG9iaiIpO3ZhciBwPWEoKTtpKCI8PCIpLGkoIi9UeXBlIC9Gb250IiksaSgiL0Jhc2VGb250IC8iK0Yoci5mb250TmFtZSkpLGkoIi9Gb250RGVzY3JpcHRvciAiK2QrIiAwIFIiKSxpKCIvVyAiK3QuQVBJLlBERk9iamVjdC5jb252ZXJ0KHMpKSxpKCIvQ0lEVG9HSURNYXAgL0lkZW50aXR5IiksaSgiL0RXIDEwMDAiKSxpKCIvU3VidHlwZSAvQ0lERm9udFR5cGUyIiksaSgiL0NJRFN5c3RlbUluZm8iKSxpKCI8PCIpLGkoIi9TdXBwbGVtZW50IDAiKSxpKCIvUmVnaXN0cnkgKEFkb2JlKSIpLGkoIi9PcmRlcmluZyAoIityLmVuY29kaW5nKyIpIiksaSgiPj4iKSxpKCI+PiIpLGkoImVuZG9iaiIpLHIub2JqZWN0TnVtYmVyPWEoKSxpKCI8PCIpLGkoIi9UeXBlIC9Gb250IiksaSgiL1N1YnR5cGUgL1R5cGUwIiksaSgiL1RvVW5pY29kZSAiK2YrIiAwIFIiKSxpKCIvQmFzZUZvbnQgLyIrRihyLmZvbnROYW1lKSksaSgiL0VuY29kaW5nIC8iK3IuZW5jb2RpbmcpLGkoIi9EZXNjZW5kYW50Rm9udHMgWyIrcCsiIDAgUl0iKSxpKCI+PiIpLGkoImVuZG9iaiIpLHIuaXNBbHJlYWR5UHV0dGVkPSEwfX0oZSl9XSk7ZS5ldmVudHMucHVzaChbInB1dEZvbnQiLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgcj1lLmZvbnQsaT1lLm91dCxhPWUubmV3T2JqZWN0LG89ZS5wdXRTdHJlYW07aWYoci5tZXRhZGF0YSBpbnN0YW5jZW9mIHQuQVBJLlRURkZvbnQmJiJXaW5BbnNpRW5jb2RpbmciPT09ci5lbmNvZGluZyl7Zm9yKHZhciBzPXIubWV0YWRhdGEucmF3RGF0YSxjPSIiLHU9MDt1PHMubGVuZ3RoO3UrKyljKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHNbdV0pO3ZhciBsPWEoKTtvKHtkYXRhOmMsYWRkTGVuZ3RoMTohMCxvYmplY3RJZDpsfSksaSgiZW5kb2JqIik7dmFyIGg9YSgpO28oe2RhdGE6bihyLm1ldGFkYXRhLnRvVW5pY29kZSksYWRkTGVuZ3RoMTohMCxvYmplY3RJZDpofSksaSgiZW5kb2JqIik7dmFyIGY9YSgpO2koIjw8IiksaSgiL0Rlc2NlbnQgIityLm1ldGFkYXRhLmRlY2VuZGVyKSxpKCIvQ2FwSGVpZ2h0ICIrci5tZXRhZGF0YS5jYXBIZWlnaHQpLGkoIi9TdGVtViAiK3IubWV0YWRhdGEuc3RlbVYpLGkoIi9UeXBlIC9Gb250RGVzY3JpcHRvciIpLGkoIi9Gb250RmlsZTIgIitsKyIgMCBSIiksaSgiL0ZsYWdzIDk2IiksaSgiL0ZvbnRCQm94ICIrdC5BUEkuUERGT2JqZWN0LmNvbnZlcnQoci5tZXRhZGF0YS5iYm94KSksaSgiL0ZvbnROYW1lIC8iK0Yoci5mb250TmFtZSkpLGkoIi9JdGFsaWNBbmdsZSAiK3IubWV0YWRhdGEuaXRhbGljQW5nbGUpLGkoIi9Bc2NlbnQgIityLm1ldGFkYXRhLmFzY2VuZGVyKSxpKCI+PiIpLGkoImVuZG9iaiIpLHIub2JqZWN0TnVtYmVyPWEoKTtmb3IodmFyIGQ9MDtkPHIubWV0YWRhdGEuaG10eC53aWR0aHMubGVuZ3RoO2QrKylyLm1ldGFkYXRhLmhtdHgud2lkdGhzW2RdPXBhcnNlSW50KHIubWV0YWRhdGEuaG10eC53aWR0aHNbZF0qKDFlMy9yLm1ldGFkYXRhLmhlYWQudW5pdHNQZXJFbSkpO2koIjw8L1N1YnR5cGUvVHJ1ZVR5cGUvVHlwZS9Gb250L1RvVW5pY29kZSAiK2grIiAwIFIvQmFzZUZvbnQvIitGKHIuZm9udE5hbWUpKyIvRm9udERlc2NyaXB0b3IgIitmKyIgMCBSL0VuY29kaW5nLyIrci5lbmNvZGluZysiIC9GaXJzdENoYXIgMjkgL0xhc3RDaGFyIDI1NSAvV2lkdGhzICIrdC5BUEkuUERGT2JqZWN0LmNvbnZlcnQoci5tZXRhZGF0YS5obXR4LndpZHRocykrIj4+IiksaSgiZW5kb2JqIiksci5pc0FscmVhZHlQdXR0ZWQ9ITB9fShlKX1dKTt2YXIgaT1mdW5jdGlvbih0KXt2YXIgZSxuPXQudGV4dHx8IiIsaT10LngsYT10Lnksbz10Lm9wdGlvbnN8fHt9LHM9dC5tdXRleHx8e30sYz1zLnBkZkVzY2FwZSx1PXMuYWN0aXZlRm9udEtleSxsPXMuZm9udHMsaD11LGY9IiIsZD0wLHA9IiIsZz1sW2hdLmVuY29kaW5nO2lmKCJJZGVudGl0eS1IIiE9PWxbaF0uZW5jb2RpbmcpcmV0dXJue3RleHQ6bix4OmkseTphLG9wdGlvbnM6byxtdXRleDpzfTtmb3IocD1uLGg9dSxBcnJheS5pc0FycmF5KG4pJiYocD1uWzBdKSxkPTA7ZDxwLmxlbmd0aDtkKz0xKWxbaF0ubWV0YWRhdGEuaGFzT3duUHJvcGVydHkoImNtYXAiKSYmKGU9bFtoXS5tZXRhZGF0YS5jbWFwLnVuaWNvZGUuY29kZU1hcFtwW2RdLmNoYXJDb2RlQXQoMCldKSxlfHxwW2RdLmNoYXJDb2RlQXQoMCk8MjU2JiZsW2hdLm1ldGFkYXRhLmhhc093blByb3BlcnR5KCJVbmljb2RlIik\/Zis9cFtkXTpmKz0iIjt2YXIgbT0iIjtyZXR1cm4gcGFyc2VJbnQoaC5zbGljZSgxKSk8MTR8fCJXaW5BbnNpRW5jb2RpbmciPT09Zz9tPWMoZixoKS5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KX0pKS5qb2luKCIiKToiSWRlbnRpdHktSCI9PT1nJiYobT1yKGYsbFtoXSkpLHMuaXNIZXg9ITAse3RleHQ6bSx4OmkseTphLG9wdGlvbnM6byxtdXRleDpzfX07ZS5ldmVudHMucHVzaChbInBvc3RQcm9jZXNzVGV4dCIsZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0fHwiIixyPVtdLG49e3RleHQ6ZSx4OnQueCx5OnQueSxvcHRpb25zOnQub3B0aW9ucyxtdXRleDp0Lm11dGV4fTtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgYT0wO2ZvcihhPTA7YTxlLmxlbmd0aDthKz0xKUFycmF5LmlzQXJyYXkoZVthXSkmJjM9PT1lW2FdLmxlbmd0aD9yLnB1c2goW2koT2JqZWN0LmFzc2lnbih7fSxuLHt0ZXh0OmVbYV1bMF19KSkudGV4dCxlW2FdWzFdLGVbYV1bMl1dKTpyLnB1c2goaShPYmplY3QuYXNzaWduKHt9LG4se3RleHQ6ZVthXX0pKS50ZXh0KTt0LnRleHQ9cn1lbHNlIHQudGV4dD1pKE9iamVjdC5hc3NpZ24oe30sbix7dGV4dDplfSkpLnRleHR9XSl9KE0pLAovKioKICAgKiBAbGljZW5zZQogICAqIGpzUERGIHZpcnR1YWwgRmlsZVN5c3RlbSBmdW5jdGlvbmFsaXR5CiAgICoKICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAgICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAgICovCmZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuaW50ZXJuYWwudkZTJiYodGhpcy5pbnRlcm5hbC52RlM9e30pLCEwfTt0LmV4aXN0c0ZpbGVJblZGUz1mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRoaXMpLHZvaWQgMCE9PXRoaXMuaW50ZXJuYWwudkZTW3RdfSx0LmFkZEZpbGVUb1ZGUz1mdW5jdGlvbih0LHIpe3JldHVybiBlLmNhbGwodGhpcyksdGhpcy5pbnRlcm5hbC52RlNbdF09cix0aGlzfSx0LmdldEZpbGVGcm9tVkZTPWZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcyksdm9pZCAwIT09dGhpcy5pbnRlcm5hbC52RlNbdF0\/dGhpcy5pbnRlcm5hbC52RlNbdF06bnVsbH19KE0uQVBJKSwKLyoqCiAgICogQGxpY2Vuc2UKICAgKiBVbmljb2RlIEJpZGkgRW5naW5lIGJhc2VkIG9uIHRoZSB3b3JrIG9mIEFsZXggU2hlbnNpcyAoQGFzdGhlbnNpcykKICAgKiBNSVQgTGljZW5zZQogICAqLwpmdW5jdGlvbih0KXt0Ll9fYmlkaUVuZ2luZV9fPXQucHJvdG90eXBlLl9fYmlkaUVuZ2luZV9fPWZ1bmN0aW9uKHQpe3ZhciByLG4saSxhLG8scyxjLHU9ZSxsPVtbMCwzLDAsMSwwLDAsMF0sWzAsMywwLDEsMiwyLDBdLFswLDMsMCwxNywyLDAsMV0sWzAsMyw1LDUsNCwxLDBdLFswLDMsMjEsMjEsNCwwLDFdLFswLDMsNSw1LDQsMiwwXV0saD1bWzIsMCwxLDEsMCwxLDBdLFsyLDAsMSwxLDAsMiwwXSxbMiwwLDIsMSwzLDIsMF0sWzIsMCwyLDMzLDMsMSwxXV0sZj17TDowLFI6MSxFTjoyLEFOOjMsTjo0LEI6NSxTOjZ9LGQ9ezA6MCw1OjEsNjoyLDc6MywzMjo0LDI1MTo1LDI1NDo2LDI1NTo3fSxwPVsiKCIsIikiLCIoIiwiPCIsIj4iLCI8IiwiWyIsIl0iLCJbIiwieyIsIn0iLCJ7IiwiwqsiLCLCuyIsIsKrIiwi4oC5Iiwi4oC6Iiwi4oC5Iiwi4oGFIiwi4oGGIiwi4oGFIiwi4oG9Iiwi4oG+Iiwi4oG9Iiwi4oKNIiwi4oKOIiwi4oKNIiwi4omkIiwi4omlIiwi4omkIiwi4oypIiwi4oyqIiwi4oypIiwi77mZIiwi77maIiwi77mZIiwi77mbIiwi77mcIiwi77mbIiwi77mdIiwi77meIiwi77mdIiwi77mkIiwi77mlIiwi77mkIl0sZz1uZXcgUmVnRXhwKC9eKFsxLTR8OV18MVswLTldfDJbMC05XXwzWzAxNjhdfDRbMDQ1ODldfDVbMDEyXXw3Wzc4XXwxNTl8MTZbMC05XXwxN1swLTJdfDIxWzU2OV18MjJbMDM0ODldfDI1MCkkLyksbT0hMSx2PTA7dGhpcy5fX2JpZGlFbmdpbmVfXz17fTt2YXIgYj1mdW5jdGlvbih0KXt2YXIgZT10LmNoYXJDb2RlQXQoKSxyPWU+Pjgsbj1kW3JdO3JldHVybiB2b2lkIDAhPT1uP3VbMjU2Km4rKDI1NSZlKV06MjUyPT09cnx8MjUzPT09cj8iQUwiOmcudGVzdChyKT8iTCI6OD09PXI\/IlIiOiJOIn0seT1mdW5jdGlvbih0KXtmb3IodmFyIGUscj0wO3I8dC5sZW5ndGg7cisrKXtpZigiTCI9PT0oZT1iKHQuY2hhckF0KHIpKSkpcmV0dXJuITE7aWYoIlIiPT09ZSlyZXR1cm4hMH1yZXR1cm4hMX0sdz1mdW5jdGlvbih0LGUsbyxzKXt2YXIgYyx1LGwsaCxmPWVbc107c3dpdGNoKGYpe2Nhc2UiTCI6Y2FzZSJSIjptPSExO2JyZWFrO2Nhc2UiTiI6Y2FzZSJBTiI6YnJlYWs7Y2FzZSJFTiI6bSYmKGY9IkFOIik7YnJlYWs7Y2FzZSJBTCI6bT0hMCxmPSJSIjticmVhaztjYXNlIldTIjpmPSJOIjticmVhaztjYXNlIkNTIjpzPDF8fHMrMT49ZS5sZW5ndGh8fCJFTiIhPT0oYz1vW3MtMV0pJiYiQU4iIT09Y3x8IkVOIiE9PSh1PWVbcysxXSkmJiJBTiIhPT11P2Y9Ik4iOm0mJih1PSJBTiIpLGY9dT09PWM\/dToiTiI7YnJlYWs7Y2FzZSJFUyI6Zj0iRU4iPT09KGM9cz4wP29bcy0xXToiQiIpJiZzKzE8ZS5sZW5ndGgmJiJFTiI9PT1lW3MrMV0\/IkVOIjoiTiI7YnJlYWs7Y2FzZSJFVCI6aWYocz4wJiYiRU4iPT09b1tzLTFdKXtmPSJFTiI7YnJlYWt9aWYobSl7Zj0iTiI7YnJlYWt9Zm9yKGw9cysxLGg9ZS5sZW5ndGg7bDxoJiYiRVQiPT09ZVtsXTspbCsrO2Y9bDxoJiYiRU4iPT09ZVtsXT8iRU4iOiJOIjticmVhaztjYXNlIk5TTSI6aWYoaSYmIWEpe2ZvcihoPWUubGVuZ3RoLGw9cysxO2w8aCYmIk5TTSI9PT1lW2xdOylsKys7aWYobDxoKXt2YXIgZD10W3NdLHA9ZD49MTQyNSYmZDw9MjMwM3x8NjQyODY9PT1kO2lmKGM9ZVtsXSxwJiYoIlIiPT09Y3x8IkFMIj09PWMpKXtmPSJSIjticmVha319fWY9czwxfHwiQiI9PT0oYz1lW3MtMV0pPyJOIjpvW3MtMV07YnJlYWs7Y2FzZSJCIjptPSExLHI9ITAsZj12O2JyZWFrO2Nhc2UiUyI6bj0hMCxmPSJOIjticmVhaztjYXNlIkxSRSI6Y2FzZSJSTEUiOmNhc2UiTFJPIjpjYXNlIlJMTyI6Y2FzZSJQREYiOm09ITE7YnJlYWs7Y2FzZSJCTiI6Zj0iTiJ9cmV0dXJuIGZ9LE49ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuc3BsaXQoIiIpO3JldHVybiByJiZMKG4scix7aGlMZXZlbDp2fSksbi5yZXZlcnNlKCksZSYmZS5yZXZlcnNlKCksbi5qb2luKCIiKX0sTD1mdW5jdGlvbih0LGUsaSl7dmFyIGEsbyxzLGMsdSxkPS0xLHA9dC5sZW5ndGgsZz0wLHk9W10sTj12P2g6bCxMPVtdO2ZvcihtPSExLHI9ITEsbj0hMSxvPTA7bzxwO28rKylMW29dPWIodFtvXSk7Zm9yKHM9MDtzPHA7cysrKXtpZih1PWcseVtzXT13KHQsTCx5LHMpLGE9MjQwJihnPU5bdV1bZlt5W3NdXV0pLGcmPTE1LGVbc109Yz1OW2ddWzVdLGE+MClpZigxNj09PWEpe2ZvcihvPWQ7bzxzO28rKyllW29dPTE7ZD0tMX1lbHNlIGQ9LTE7aWYoTltnXVs2XSktMT09PWQmJihkPXMpO2Vsc2UgaWYoZD4tMSl7Zm9yKG89ZDtvPHM7bysrKWVbb109YztkPS0xfSJCIj09PUxbc10mJihlW3NdPTApLGkuaGlMZXZlbHw9Y31uJiZmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPTA7bjxyO24rKylpZigiUyI9PT10W25dKXtlW25dPXY7Zm9yKHZhciBpPW4tMTtpPj0wJiYiV1MiPT09dFtpXTtpLS0pZVtpXT12fX0oTCxlLHApfSxBPWZ1bmN0aW9uKHQsZSxuLGksYSl7aWYoIShhLmhpTGV2ZWw8dCkpe2lmKDE9PT10JiYxPT09diYmIXIpcmV0dXJuIGUucmV2ZXJzZSgpLHZvaWQobiYmbi5yZXZlcnNlKCkpO2Zvcih2YXIgbyxzLGMsdSxsPWUubGVuZ3RoLGg9MDtoPGw7KXtpZihpW2hdPj10KXtmb3IoYz1oKzE7YzxsJiZpW2NdPj10OyljKys7Zm9yKHU9aCxzPWMtMTt1PHM7dSsrLHMtLSlvPWVbdV0sZVt1XT1lW3NdLGVbc109byxuJiYobz1uW3VdLG5bdV09bltzXSxuW3NdPW8pO2g9Y31oKyt9fX0seD1mdW5jdGlvbih0LGUscil7dmFyIG49dC5zcGxpdCgiIiksaT17aGlMZXZlbDp2fTtyZXR1cm4gcnx8KHI9W10pLEwobixyLGkpLGZ1bmN0aW9uKHQsZSxyKXtpZigwIT09ci5oaUxldmVsJiZjKWZvcih2YXIgbixpPTA7aTx0Lmxlbmd0aDtpKyspMT09PWVbaV0mJihuPXAuaW5kZXhPZih0W2ldKSk+PTAmJih0W2ldPXBbbisxXSl9KG4scixpKSxBKDIsbixlLHIsaSksQSgxLG4sZSxyLGkpLG4uam9pbigiIil9O3JldHVybiB0aGlzLl9fYmlkaUVuZ2luZV9fLmRvQmlkaVJlb3JkZXI9ZnVuY3Rpb24odCxlLHIpe2lmKGZ1bmN0aW9uKHQsZSl7aWYoZSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllW3JdPXI7dm9pZCAwPT09YSYmKGE9eSh0KSksdm9pZCAwPT09cyYmKHM9eSh0KSl9KHQsZSksaXx8IW98fHMpaWYoaSYmbyYmYV5zKXY9YT8xOjAsdD1OKHQsZSxyKTtlbHNlIGlmKCFpJiZvJiZzKXY9YT8xOjAsdD14KHQsZSxyKSx0PU4odCxlKTtlbHNlIGlmKCFpfHxhfHxvfHxzKXtpZihpJiYhbyYmYV5zKXQ9Tih0LGUpLGE\/KHY9MCx0PXgodCxlLHIpKToodj0xLHQ9eCh0LGUsciksdD1OKHQsZSkpO2Vsc2UgaWYoaSYmYSYmIW8mJnMpdj0xLHQ9eCh0LGUsciksdD1OKHQsZSk7ZWxzZSBpZighaSYmIW8mJmFecyl7dmFyIG49YzthPyh2PTEsdD14KHQsZSxyKSx2PTAsYz0hMSx0PXgodCxlLHIpLGM9bik6KHY9MCx0PXgodCxlLHIpLHQ9Tih0LGUpLHY9MSxjPSExLHQ9eCh0LGUsciksYz1uLHQ9Tih0LGUpKX19ZWxzZSB2PTAsdD14KHQsZSxyKTtlbHNlIHY9YT8xOjAsdD14KHQsZSxyKTtyZXR1cm4gdH0sdGhpcy5fX2JpZGlFbmdpbmVfXy5zZXRPcHRpb25zPWZ1bmN0aW9uKHQpe3QmJihpPXQuaXNJbnB1dFZpc3VhbCxvPXQuaXNPdXRwdXRWaXN1YWwsYT10LmlzSW5wdXRSdGwscz10LmlzT3V0cHV0UnRsLGM9dC5pc1N5bW1ldHJpY1N3YXBwaW5nKX0sdGhpcy5fX2JpZGlFbmdpbmVfXy5zZXRPcHRpb25zKHQpLHRoaXMuX19iaWRpRW5naW5lX199O3ZhciBlPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk4iLCJOIiwiRVQiLCJFVCIsIkVUIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTiIsIk4iLCJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk4iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk4iLCJOIiwiTiIsIk4iLCJMIiwiTiIsIk4iLCJCTiIsIk4iLCJOIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJOIiwiTCIsIk4iLCJOIiwiTiIsIkVOIiwiTCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiRVQiLCJOIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiUiIsIk5TTSIsIlIiLCJOU00iLCJOU00iLCJSIiwiTlNNIiwiTlNNIiwiUiIsIk5TTSIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJSIiwiUiIsIlIiLCJSIiwiUiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiTiIsIk4iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJOIiwiTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJFVCIsIkFOIiwiQU4iLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJOIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk4iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTiIsIkFMIiwiQUwiLCJOU00iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOIiwiTiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIlIiLCJSIiwiTiIsIk4iLCJOIiwiTiIsIlIiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIldTIiwiV1MiLCJXUyIsIldTIiwiV1MiLCJXUyIsIldTIiwiV1MiLCJXUyIsIldTIiwiV1MiLCJCTiIsIkJOIiwiQk4iLCJMIiwiUiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIldTIiwiQiIsIkxSRSIsIlJMRSIsIlBERiIsIkxSTyIsIlJMTyIsIkNTIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIkNTIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJXUyIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJOIiwiTFJJIiwiUkxJIiwiRlNJIiwiUERJIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiRU4iLCJMIiwiTiIsIk4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFUyIsIkVTIiwiTiIsIk4iLCJOIiwiTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRVMiLCJFUyIsIk4iLCJOIiwiTiIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJOIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiUiIsIk5TTSIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJFUyIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJOIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJOIiwiUiIsIk4iLCJSIiwiUiIsIk4iLCJSIiwiUiIsIk4iLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiUiIsIlIiLCJSIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJDUyIsIk4iLCJDUyIsIk4iLCJOIiwiQ1MiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJFVCIsIk4iLCJOIiwiRVMiLCJFUyIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiRVQiLCJFVCIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOIiwiTiIsIkJOIiwiTiIsIk4iLCJOIiwiRVQiLCJFVCIsIkVUIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJOIiwiTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk4iLCJOIiwiTCIsIkwiLCJMIiwiTiIsIk4iLCJOIiwiRVQiLCJFVCIsIk4iLCJOIiwiTiIsIkVUIiwiRVQiLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIiwiTiIsIk4iLCJOIl0scj1uZXcgdC5fX2JpZGlFbmdpbmVfXyh7aXNJbnB1dFZpc3VhbDohMH0pO3QuQVBJLmV2ZW50cy5wdXNoKFsicG9zdFByb2Nlc3NUZXh0IixmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsbj0odC54LHQueSx0Lm9wdGlvbnN8fHt9KSxpPSh0Lm11dGV4LG4ubGFuZyxbXSk7aWYobi5pc0lucHV0VmlzdWFsPSJib29sZWFuIiE9dHlwZW9mIG4uaXNJbnB1dFZpc3VhbHx8bi5pc0lucHV0VmlzdWFsLHIuc2V0T3B0aW9ucyhuKSwiW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXt2YXIgYT0wO2ZvcihpPVtdLGE9MDthPGUubGVuZ3RoO2ErPTEpIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlW2FdKT9pLnB1c2goW3IuZG9CaWRpUmVvcmRlcihlW2FdWzBdKSxlW2FdWzFdLGVbYV1bMl1dKTppLnB1c2goW3IuZG9CaWRpUmVvcmRlcihlW2FdKV0pO3QudGV4dD1pfWVsc2UgdC50ZXh0PXIuZG9CaWRpUmVvcmRlcihlKTtyLnNldE9wdGlvbnMoe2lzSW5wdXRWaXN1YWw6ITB9KX1dKX0oTSksTS5BUEkuVFRGRm9udD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU7aWYodGhpcy5yYXdEYXRhPXQsZT10aGlzLmNvbnRlbnRzPW5ldyBUZSh0KSx0aGlzLmNvbnRlbnRzLnBvcz00LCJ0dGNmIj09PWUucmVhZFN0cmluZyg0KSl0aHJvdyBuZXcgRXJyb3IoIlRUQ0Ygbm90IHN1cHBvcnRlZC4iKTtlLnBvcz0wLHRoaXMucGFyc2UoKSx0aGlzLnN1YnNldD1uZXcgYXIodGhpcyksdGhpcy5yZWdpc3RlclRURigpfXJldHVybiB0Lm9wZW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KGUpfSx0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpcmVjdG9yeT1uZXcgVWUodGhpcy5jb250ZW50cyksdGhpcy5oZWFkPW5ldyBXZSh0aGlzKSx0aGlzLm5hbWU9bmV3IFplKHRoaXMpLHRoaXMuY21hcD1uZXcgR2UodGhpcyksdGhpcy50b1VuaWNvZGU9e30sdGhpcy5oaGVhPW5ldyBZZSh0aGlzKSx0aGlzLm1heHA9bmV3ICRlKHRoaXMpLHRoaXMuaG10eD1uZXcgUWUodGhpcyksdGhpcy5wb3N0PW5ldyBYZSh0aGlzKSx0aGlzLm9zMj1uZXcgSmUodGhpcyksdGhpcy5sb2NhPW5ldyBpcih0aGlzKSx0aGlzLmdseWY9bmV3IGVyKHRoaXMpLHRoaXMuYXNjZW5kZXI9dGhpcy5vczIuZXhpc3RzJiZ0aGlzLm9zMi5hc2NlbmRlcnx8dGhpcy5oaGVhLmFzY2VuZGVyLHRoaXMuZGVjZW5kZXI9dGhpcy5vczIuZXhpc3RzJiZ0aGlzLm9zMi5kZWNlbmRlcnx8dGhpcy5oaGVhLmRlY2VuZGVyLHRoaXMubGluZUdhcD10aGlzLm9zMi5leGlzdHMmJnRoaXMub3MyLmxpbmVHYXB8fHRoaXMuaGhlYS5saW5lR2FwLHRoaXMuYmJveD1bdGhpcy5oZWFkLnhNaW4sdGhpcy5oZWFkLnlNaW4sdGhpcy5oZWFkLnhNYXgsdGhpcy5oZWFkLnlNYXhdfSx0LnByb3RvdHlwZS5yZWdpc3RlclRURj1mdW5jdGlvbigpe3ZhciB0LGUscixuLGk7aWYodGhpcy5zY2FsZUZhY3Rvcj0xZTMvdGhpcy5oZWFkLnVuaXRzUGVyRW0sdGhpcy5iYm94PWZ1bmN0aW9uKCl7dmFyIGUscixuLGk7Zm9yKGk9W10sZT0wLHI9KG49dGhpcy5iYm94KS5sZW5ndGg7ZTxyO2UrKyl0PW5bZV0saS5wdXNoKE1hdGgucm91bmQodCp0aGlzLnNjYWxlRmFjdG9yKSk7cmV0dXJuIGl9LmNhbGwodGhpcyksdGhpcy5zdGVtVj0wLHRoaXMucG9zdC5leGlzdHM\/KHI9MjU1JihuPXRoaXMucG9zdC5pdGFsaWNfYW5nbGUpLDAhPSgzMjc2OCYoZT1uPj4xNikpJiYoZT0tKDErKDY1NTM1XmUpKSksdGhpcy5pdGFsaWNBbmdsZT0rKGUrIi4iK3IpKTp0aGlzLml0YWxpY0FuZ2xlPTAsdGhpcy5hc2NlbmRlcj1NYXRoLnJvdW5kKHRoaXMuYXNjZW5kZXIqdGhpcy5zY2FsZUZhY3RvciksdGhpcy5kZWNlbmRlcj1NYXRoLnJvdW5kKHRoaXMuZGVjZW5kZXIqdGhpcy5zY2FsZUZhY3RvciksdGhpcy5saW5lR2FwPU1hdGgucm91bmQodGhpcy5saW5lR2FwKnRoaXMuc2NhbGVGYWN0b3IpLHRoaXMuY2FwSGVpZ2h0PXRoaXMub3MyLmV4aXN0cyYmdGhpcy5vczIuY2FwSGVpZ2h0fHx0aGlzLmFzY2VuZGVyLHRoaXMueEhlaWdodD10aGlzLm9zMi5leGlzdHMmJnRoaXMub3MyLnhIZWlnaHR8fDAsdGhpcy5mYW1pbHlDbGFzcz0odGhpcy5vczIuZXhpc3RzJiZ0aGlzLm9zMi5mYW1pbHlDbGFzc3x8MCk+PjgsdGhpcy5pc1NlcmlmPTE9PT0oaT10aGlzLmZhbWlseUNsYXNzKXx8Mj09PWl8fDM9PT1pfHw0PT09aXx8NT09PWl8fDc9PT1pLHRoaXMuaXNTY3JpcHQ9MTA9PT10aGlzLmZhbWlseUNsYXNzLHRoaXMuZmxhZ3M9MCx0aGlzLnBvc3QuaXNGaXhlZFBpdGNoJiYodGhpcy5mbGFnc3w9MSksdGhpcy5pc1NlcmlmJiYodGhpcy5mbGFnc3w9MiksdGhpcy5pc1NjcmlwdCYmKHRoaXMuZmxhZ3N8PTgpLDAhPT10aGlzLml0YWxpY0FuZ2xlJiYodGhpcy5mbGFnc3w9NjQpLHRoaXMuZmxhZ3N8PTMyLCF0aGlzLmNtYXAudW5pY29kZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHVuaWNvZGUgY21hcCBmb3IgZm9udCIpfSx0LnByb3RvdHlwZS5jaGFyYWN0ZXJUb0dseXBoPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybihudWxsIT0oZT10aGlzLmNtYXAudW5pY29kZSk\/ZS5jb2RlTWFwW3RdOnZvaWQgMCl8fDB9LHQucHJvdG90eXBlLndpZHRoT2ZHbHlwaD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT0xZTMvdGhpcy5oZWFkLnVuaXRzUGVyRW0sdGhpcy5obXR4LmZvckdseXBoKHQpLmFkdmFuY2UqZX0sdC5wcm90b3R5cGUud2lkdGhPZlN0cmluZz1mdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG87Zm9yKGE9MCxpPTAsbz0odD0iIit0KS5sZW5ndGg7MDw9bz9pPG86aT5vO2k9MDw9bz8rK2k6LS1pKW49dC5jaGFyQ29kZUF0KGkpLGErPXRoaXMud2lkdGhPZkdseXBoKHRoaXMuY2hhcmFjdGVyVG9HbHlwaChuKSkrciooMWUzL2UpfHwwO3JldHVybiBhKihlLzFlMyl9LHQucHJvdG90eXBlLmxpbmVIZWlnaHQ9ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4gbnVsbD09ZSYmKGU9ITEpLHI9ZT90aGlzLmxpbmVHYXA6MCwodGhpcy5hc2NlbmRlcityLXRoaXMuZGVjZW5kZXIpLzFlMyp0fSx0fSgpO3ZhciBSZSxUZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kYXRhPW51bGwhPXQ\/dDpbXSx0aGlzLnBvcz0wLHRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9cmV0dXJuIHQucHJvdG90eXBlLnJlYWRCeXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVt0aGlzLnBvcysrXX0sdC5wcm90b3R5cGUud3JpdGVCeXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGFbdGhpcy5wb3MrK109dH0sdC5wcm90b3R5cGUucmVhZFVJbnQzMj1mdW5jdGlvbigpe3JldHVybiAxNjc3NzIxNip0aGlzLnJlYWRCeXRlKCkrKHRoaXMucmVhZEJ5dGUoKTw8MTYpKyh0aGlzLnJlYWRCeXRlKCk8PDgpK3RoaXMucmVhZEJ5dGUoKX0sdC5wcm90b3R5cGUud3JpdGVVSW50MzI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud3JpdGVCeXRlKHQ+Pj4yNCYyNTUpLHRoaXMud3JpdGVCeXRlKHQ+PjE2JjI1NSksdGhpcy53cml0ZUJ5dGUodD4+OCYyNTUpLHRoaXMud3JpdGVCeXRlKDI1NSZ0KX0sdC5wcm90b3R5cGUucmVhZEludDMyPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5yZWFkVUludDMyKCkpPj0yMTQ3NDgzNjQ4P3QtNDI5NDk2NzI5Njp0fSx0LnByb3RvdHlwZS53cml0ZUludDMyPWZ1bmN0aW9uKHQpe3JldHVybiB0PDAmJih0Kz00Mjk0OTY3Mjk2KSx0aGlzLndyaXRlVUludDMyKHQpfSx0LnByb3RvdHlwZS5yZWFkVUludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEJ5dGUoKTw8OHx0aGlzLnJlYWRCeXRlKCl9LHQucHJvdG90eXBlLndyaXRlVUludDE2PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndyaXRlQnl0ZSh0Pj44JjI1NSksdGhpcy53cml0ZUJ5dGUoMjU1JnQpfSx0LnByb3RvdHlwZS5yZWFkSW50MTY9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLnJlYWRVSW50MTYoKSk+PTMyNzY4P3QtNjU1MzY6dH0sdC5wcm90b3R5cGUud3JpdGVJbnQxNj1mdW5jdGlvbih0KXtyZXR1cm4gdDwwJiYodCs9NjU1MzYpLHRoaXMud3JpdGVVSW50MTYodCl9LHQucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24odCl7dmFyIGUscjtmb3Iocj1bXSxlPTA7MDw9dD9lPHQ6ZT50O2U9MDw9dD8rK2U6LS1lKXJbZV09U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLnJlYWRCeXRlKCkpO3JldHVybiByLmpvaW4oIiIpfSx0LnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbih0KXt2YXIgZSxyLG47Zm9yKG49W10sZT0wLHI9dC5sZW5ndGg7MDw9cj9lPHI6ZT5yO2U9MDw9cj8rK2U6LS1lKW4ucHVzaCh0aGlzLndyaXRlQnl0ZSh0LmNoYXJDb2RlQXQoZSkpKTtyZXR1cm4gbn0sdC5wcm90b3R5cGUucmVhZFNob3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEludDE2KCl9LHQucHJvdG90eXBlLndyaXRlU2hvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud3JpdGVJbnQxNih0KX0sdC5wcm90b3R5cGUucmVhZExvbmdMb25nPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4saSxhLG8scztyZXR1cm4gdD10aGlzLnJlYWRCeXRlKCksZT10aGlzLnJlYWRCeXRlKCkscj10aGlzLnJlYWRCeXRlKCksbj10aGlzLnJlYWRCeXRlKCksaT10aGlzLnJlYWRCeXRlKCksYT10aGlzLnJlYWRCeXRlKCksbz10aGlzLnJlYWRCeXRlKCkscz10aGlzLnJlYWRCeXRlKCksMTI4JnQ\/LTEqKDcyMDU3NTk0MDM3OTI3OTQwKigyNTVedCkrMjgxNDc0OTc2NzEwNjU2KigyNTVeZSkrMTA5OTUxMTYyNzc3NiooMjU1XnIpKzQyOTQ5NjcyOTYqKDI1NV5uKSsxNjc3NzIxNiooMjU1XmkpKzY1NTM2KigyNTVeYSkrMjU2KigyNTVebykrKDI1NV5zKSsxKTo3MjA1NzU5NDAzNzkyNzk0MCp0KzI4MTQ3NDk3NjcxMDY1NiplKzEwOTk1MTE2Mjc3NzYqcis0Mjk0OTY3Mjk2Km4rMTY3NzcyMTYqaSs2NTUzNiphKzI1NipvK3N9LHQucHJvdG90eXBlLndyaXRlTG9uZ0xvbmc9ZnVuY3Rpb24odCl7dmFyIGUscjtyZXR1cm4gZT1NYXRoLmZsb29yKHQvNDI5NDk2NzI5Nikscj00Mjk0OTY3Mjk1JnQsdGhpcy53cml0ZUJ5dGUoZT4+MjQmMjU1KSx0aGlzLndyaXRlQnl0ZShlPj4xNiYyNTUpLHRoaXMud3JpdGVCeXRlKGU+PjgmMjU1KSx0aGlzLndyaXRlQnl0ZSgyNTUmZSksdGhpcy53cml0ZUJ5dGUocj4+MjQmMjU1KSx0aGlzLndyaXRlQnl0ZShyPj4xNiYyNTUpLHRoaXMud3JpdGVCeXRlKHI+PjgmMjU1KSx0aGlzLndyaXRlQnl0ZSgyNTUmcil9LHQucHJvdG90eXBlLnJlYWRJbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoKX0sdC5wcm90b3R5cGUud3JpdGVJbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud3JpdGVJbnQzMih0KX0sdC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0KXt2YXIgZSxyO2ZvcihlPVtdLHI9MDswPD10P3I8dDpyPnQ7cj0wPD10PysrcjotLXIpZS5wdXNoKHRoaXMucmVhZEJ5dGUoKSk7cmV0dXJuIGV9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpO2ZvcihpPVtdLHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspZT10W3JdLGkucHVzaCh0aGlzLndyaXRlQnl0ZShlKSk7cmV0dXJuIGl9LHR9KCksVWU9ZnVuY3Rpb24oKXt2YXIgdDtmdW5jdGlvbiBlKHQpe3ZhciBlLHIsbjtmb3IodGhpcy5zY2FsYXJUeXBlPXQucmVhZEludCgpLHRoaXMudGFibGVDb3VudD10LnJlYWRTaG9ydCgpLHRoaXMuc2VhcmNoUmFuZ2U9dC5yZWFkU2hvcnQoKSx0aGlzLmVudHJ5U2VsZWN0b3I9dC5yZWFkU2hvcnQoKSx0aGlzLnJhbmdlU2hpZnQ9dC5yZWFkU2hvcnQoKSx0aGlzLnRhYmxlcz17fSxyPTAsbj10aGlzLnRhYmxlQ291bnQ7MDw9bj9yPG46cj5uO3I9MDw9bj8rK3I6LS1yKWU9e3RhZzp0LnJlYWRTdHJpbmcoNCksY2hlY2tzdW06dC5yZWFkSW50KCksb2Zmc2V0OnQucmVhZEludCgpLGxlbmd0aDp0LnJlYWRJbnQoKX0sdGhpcy50YWJsZXNbZS50YWddPWV9cmV0dXJuIGUucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihlKXt2YXIgcixuLGksYSxvLHMsYyx1LGwsaCxmLGQscDtmb3IocCBpbiBmPU9iamVjdC5rZXlzKGUpLmxlbmd0aCxzPU1hdGgubG9nKDIpLGw9MTYqTWF0aC5mbG9vcihNYXRoLmxvZyhmKS9zKSxhPU1hdGguZmxvb3IobC9zKSx1PTE2KmYtbCwobj1uZXcgVGUpLndyaXRlSW50KHRoaXMuc2NhbGFyVHlwZSksbi53cml0ZVNob3J0KGYpLG4ud3JpdGVTaG9ydChsKSxuLndyaXRlU2hvcnQoYSksbi53cml0ZVNob3J0KHUpLGk9MTYqZixjPW4ucG9zK2ksbz1udWxsLGQ9W10sZSlmb3IoaD1lW3BdLG4ud3JpdGVTdHJpbmcocCksbi53cml0ZUludCh0KGgpKSxuLndyaXRlSW50KGMpLG4ud3JpdGVJbnQoaC5sZW5ndGgpLGQ9ZC5jb25jYXQoaCksImhlYWQiPT09cCYmKG89YyksYys9aC5sZW5ndGg7YyU0OylkLnB1c2goMCksYysrO3JldHVybiBuLndyaXRlKGQpLHI9Mjk4MTE0NjU1NC10KG4uZGF0YSksbi5wb3M9bys4LG4ud3JpdGVVSW50MzIociksbi5kYXRhfSx0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpO2Zvcih0PXRyLmNhbGwodCk7dC5sZW5ndGglNDspdC5wdXNoKDApO2ZvcihuPW5ldyBUZSh0KSxyPTAsZT0wLGk9dC5sZW5ndGg7ZTxpO2U9ZSs9NClyKz1uLnJlYWRVSW50MzIoKTtyZXR1cm4gNDI5NDk2NzI5NSZyfSxlfSgpLHplPXt9Lmhhc093blByb3BlcnR5LEhlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGUpemUuY2FsbChlLHIpJiYodFtyXT1lW3JdKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXJldHVybiBuLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgbix0Ll9fc3VwZXJfXz1lLnByb3RvdHlwZSx0fSxXZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9ImhlYWQiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBvcz10aGlzLm9mZnNldCx0aGlzLnZlcnNpb249dC5yZWFkSW50KCksdGhpcy5yZXZpc2lvbj10LnJlYWRJbnQoKSx0aGlzLmNoZWNrU3VtQWRqdXN0bWVudD10LnJlYWRJbnQoKSx0aGlzLm1hZ2ljTnVtYmVyPXQucmVhZEludCgpLHRoaXMuZmxhZ3M9dC5yZWFkU2hvcnQoKSx0aGlzLnVuaXRzUGVyRW09dC5yZWFkU2hvcnQoKSx0aGlzLmNyZWF0ZWQ9dC5yZWFkTG9uZ0xvbmcoKSx0aGlzLm1vZGlmaWVkPXQucmVhZExvbmdMb25nKCksdGhpcy54TWluPXQucmVhZFNob3J0KCksdGhpcy55TWluPXQucmVhZFNob3J0KCksdGhpcy54TWF4PXQucmVhZFNob3J0KCksdGhpcy55TWF4PXQucmVhZFNob3J0KCksdGhpcy5tYWNTdHlsZT10LnJlYWRTaG9ydCgpLHRoaXMubG93ZXN0UmVjUFBFTT10LnJlYWRTaG9ydCgpLHRoaXMuZm9udERpcmVjdGlvbkhpbnQ9dC5yZWFkU2hvcnQoKSx0aGlzLmluZGV4VG9Mb2NGb3JtYXQ9dC5yZWFkU2hvcnQoKSx0aGlzLmdseXBoRGF0YUZvcm1hdD10LnJlYWRTaG9ydCgpfSxlLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuKGU9bmV3IFRlKS53cml0ZUludCh0aGlzLnZlcnNpb24pLGUud3JpdGVJbnQodGhpcy5yZXZpc2lvbiksZS53cml0ZUludCh0aGlzLmNoZWNrU3VtQWRqdXN0bWVudCksZS53cml0ZUludCh0aGlzLm1hZ2ljTnVtYmVyKSxlLndyaXRlU2hvcnQodGhpcy5mbGFncyksZS53cml0ZVNob3J0KHRoaXMudW5pdHNQZXJFbSksZS53cml0ZUxvbmdMb25nKHRoaXMuY3JlYXRlZCksZS53cml0ZUxvbmdMb25nKHRoaXMubW9kaWZpZWQpLGUud3JpdGVTaG9ydCh0aGlzLnhNaW4pLGUud3JpdGVTaG9ydCh0aGlzLnlNaW4pLGUud3JpdGVTaG9ydCh0aGlzLnhNYXgpLGUud3JpdGVTaG9ydCh0aGlzLnlNYXgpLGUud3JpdGVTaG9ydCh0aGlzLm1hY1N0eWxlKSxlLndyaXRlU2hvcnQodGhpcy5sb3dlc3RSZWNQUEVNKSxlLndyaXRlU2hvcnQodGhpcy5mb250RGlyZWN0aW9uSGludCksZS53cml0ZVNob3J0KHQpLGUud3JpdGVTaG9ydCh0aGlzLmdseXBoRGF0YUZvcm1hdCksZS5kYXRhfSxlfShSZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU7dGhpcy5maWxlPXQsZT10aGlzLmZpbGUuZGlyZWN0b3J5LnRhYmxlc1t0aGlzLnRhZ10sdGhpcy5leGlzdHM9ISFlLGUmJih0aGlzLm9mZnNldD1lLm9mZnNldCx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLnBhcnNlKHRoaXMuZmlsZS5jb250ZW50cykpfXJldHVybiB0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yYXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5leGlzdHM\/KHRoaXMuZmlsZS5jb250ZW50cy5wb3M9dGhpcy5vZmZzZXQsdGhpcy5maWxlLmNvbnRlbnRzLnJlYWQodGhpcy5sZW5ndGgpKTpudWxsfSx0fSgpKSxWZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgcixuLGksYSxvLHMsYyx1LGwsaCxmLGQscCxnLG0sdixiO3N3aXRjaCh0aGlzLnBsYXRmb3JtSUQ9dC5yZWFkVUludDE2KCksdGhpcy5lbmNvZGluZ0lEPXQucmVhZFNob3J0KCksdGhpcy5vZmZzZXQ9ZSt0LnJlYWRJbnQoKSxsPXQucG9zLHQucG9zPXRoaXMub2Zmc2V0LHRoaXMuZm9ybWF0PXQucmVhZFVJbnQxNigpLHRoaXMubGVuZ3RoPXQucmVhZFVJbnQxNigpLHRoaXMubGFuZ3VhZ2U9dC5yZWFkVUludDE2KCksdGhpcy5pc1VuaWNvZGU9Mz09PXRoaXMucGxhdGZvcm1JRCYmMT09PXRoaXMuZW5jb2RpbmdJRCYmND09PXRoaXMuZm9ybWF0fHwwPT09dGhpcy5wbGF0Zm9ybUlEJiY0PT09dGhpcy5mb3JtYXQsdGhpcy5jb2RlTWFwPXt9LHRoaXMuZm9ybWF0KXtjYXNlIDA6Zm9yKHM9MDtzPDI1NjsrK3MpdGhpcy5jb2RlTWFwW3NdPXQucmVhZEJ5dGUoKTticmVhaztjYXNlIDQ6Zm9yKGY9dC5yZWFkVUludDE2KCksaD1mLzIsdC5wb3MrPTYsaT1mdW5jdGlvbigpe3ZhciBlLHI7Zm9yKHI9W10scz1lPTA7MDw9aD9lPGg6ZT5oO3M9MDw9aD8rK2U6LS1lKXIucHVzaCh0LnJlYWRVSW50MTYoKSk7cmV0dXJuIHJ9KCksdC5wb3MrPTIscD1mdW5jdGlvbigpe3ZhciBlLHI7Zm9yKHI9W10scz1lPTA7MDw9aD9lPGg6ZT5oO3M9MDw9aD8rK2U6LS1lKXIucHVzaCh0LnJlYWRVSW50MTYoKSk7cmV0dXJuIHJ9KCksYz1mdW5jdGlvbigpe3ZhciBlLHI7Zm9yKHI9W10scz1lPTA7MDw9aD9lPGg6ZT5oO3M9MDw9aD8rK2U6LS1lKXIucHVzaCh0LnJlYWRVSW50MTYoKSk7cmV0dXJuIHJ9KCksdT1mdW5jdGlvbigpe3ZhciBlLHI7Zm9yKHI9W10scz1lPTA7MDw9aD9lPGg6ZT5oO3M9MDw9aD8rK2U6LS1lKXIucHVzaCh0LnJlYWRVSW50MTYoKSk7cmV0dXJuIHJ9KCksbj0odGhpcy5sZW5ndGgtdC5wb3MrdGhpcy5vZmZzZXQpLzIsbz1mdW5jdGlvbigpe3ZhciBlLHI7Zm9yKHI9W10scz1lPTA7MDw9bj9lPG46ZT5uO3M9MDw9bj8rK2U6LS1lKXIucHVzaCh0LnJlYWRVSW50MTYoKSk7cmV0dXJuIHJ9KCkscz1tPTAsYj1pLmxlbmd0aDttPGI7cz0rK20pZm9yKGc9aVtzXSxyPXY9ZD1wW3NdO2Q8PWc\/djw9Zzp2Pj1nO3I9ZDw9Zz8rK3Y6LS12KTA9PT11W3NdP2E9citjW3NdOjAhPT0oYT1vW3Vbc10vMisoci1kKS0oaC1zKV18fDApJiYoYSs9Y1tzXSksdGhpcy5jb2RlTWFwW3JdPTY1NTM1JmF9dC5wb3M9bH1yZXR1cm4gdC5lbmNvZGU9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxvLHMsYyx1LGwsaCxmLGQscCxnLG0sdixiLHksdyxOLEwsQSx4LFMsXyxQLGssRixJLEMsaixPLEIsTSxFLHEsRCxSLFQsVSx6LEgsVyxWLEcsWTtzd2l0Y2goRj1uZXcgVGUsYT1PYmplY3Qua2V5cyh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSksZSl7Y2FzZSJtYWNyb21hbiI6Zm9yKHA9MCxnPWZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKGQ9MDtkPDI1NjsrK2QpdC5wdXNoKDApO3JldHVybiB0fSgpLHY9ezA6MH0saT17fSxJPTAsQj1hLmxlbmd0aDtJPEI7SSsrKW51bGw9PXZbVz10W249YVtJXV1dJiYodltXXT0rK3ApLGlbbl09e29sZDp0W25dLG5ldzp2W3Rbbl1dfSxnW25dPXZbdFtuXV07cmV0dXJuIEYud3JpdGVVSW50MTYoMSksRi53cml0ZVVJbnQxNigwKSxGLndyaXRlVUludDMyKDEyKSxGLndyaXRlVUludDE2KDApLEYud3JpdGVVSW50MTYoMjYyKSxGLndyaXRlVUludDE2KDApLEYud3JpdGUoZykse2NoYXJNYXA6aSxzdWJ0YWJsZTpGLmRhdGEsbWF4R2x5cGhJRDpwKzF9O2Nhc2UidW5pY29kZSI6Zm9yKFA9W10sbD1bXSxiPTAsdj17fSxyPXt9LG09Yz1udWxsLEM9MCxNPWEubGVuZ3RoO0M8TTtDKyspbnVsbD09dlt3PXRbbj1hW0NdXV0mJih2W3ddPSsrYikscltuXT17b2xkOncsbmV3OnZbd119LG89dlt3XS1uLG51bGwhPW0mJm89PT1jfHwobSYmbC5wdXNoKG0pLFAucHVzaChuKSxjPW8pLG09bjtmb3IobSYmbC5wdXNoKG0pLGwucHVzaCg2NTUzNSksUC5wdXNoKDY1NTM1KSxTPTIqKHg9UC5sZW5ndGgpLEE9MipNYXRoLnBvdyhNYXRoLmxvZyh4KS9NYXRoLkxOMiwyKSxoPU1hdGgubG9nKEEvMikvTWF0aC5MTjIsTD0yKngtQSxzPVtdLE49W10sZj1bXSxkPWo9MCxFPVAubGVuZ3RoO2o8RTtkPSsrail7aWYoXz1QW2RdLHU9bFtkXSw2NTUzNT09PV8pe3MucHVzaCgwKSxOLnB1c2goMCk7YnJlYWt9aWYoXy0oaz1yW19dLm5ldyk+PTMyNzY4KWZvcihzLnB1c2goMCksTi5wdXNoKDIqKGYubGVuZ3RoK3gtZCkpLG49Tz1fO188PXU\/Tzw9dTpPPj11O249Xzw9dT8rK086LS1PKWYucHVzaChyW25dLm5ldyk7ZWxzZSBzLnB1c2goay1fKSxOLnB1c2goMCl9Zm9yKEYud3JpdGVVSW50MTYoMyksRi53cml0ZVVJbnQxNigxKSxGLndyaXRlVUludDMyKDEyKSxGLndyaXRlVUludDE2KDQpLEYud3JpdGVVSW50MTYoMTYrOCp4KzIqZi5sZW5ndGgpLEYud3JpdGVVSW50MTYoMCksRi53cml0ZVVJbnQxNihTKSxGLndyaXRlVUludDE2KEEpLEYud3JpdGVVSW50MTYoaCksRi53cml0ZVVJbnQxNihMKSx6PTAscT1sLmxlbmd0aDt6PHE7eisrKW49bFt6XSxGLndyaXRlVUludDE2KG4pO2ZvcihGLndyaXRlVUludDE2KDApLEg9MCxEPVAubGVuZ3RoO0g8RDtIKyspbj1QW0hdLEYud3JpdGVVSW50MTYobik7Zm9yKFY9MCxSPXMubGVuZ3RoO1Y8UjtWKyspbz1zW1ZdLEYud3JpdGVVSW50MTYobyk7Zm9yKEc9MCxUPU4ubGVuZ3RoO0c8VDtHKyspeT1OW0ddLEYud3JpdGVVSW50MTYoeSk7Zm9yKFk9MCxVPWYubGVuZ3RoO1k8VTtZKyspcD1mW1ldLEYud3JpdGVVSW50MTYocCk7cmV0dXJue2NoYXJNYXA6cixzdWJ0YWJsZTpGLmRhdGEsbWF4R2x5cGhJRDpiKzF9fX0sdH0oKSxHZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9ImNtYXAiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtmb3IodC5wb3M9dGhpcy5vZmZzZXQsdGhpcy52ZXJzaW9uPXQucmVhZFVJbnQxNigpLG49dC5yZWFkVUludDE2KCksdGhpcy50YWJsZXM9W10sdGhpcy51bmljb2RlPW51bGwscj0wOzA8PW4\/cjxuOnI+bjtyPTA8PW4\/KytyOi0tcillPW5ldyBWZSh0LHRoaXMub2Zmc2V0KSx0aGlzLnRhYmxlcy5wdXNoKGUpLGUuaXNVbmljb2RlJiZudWxsPT10aGlzLnVuaWNvZGUmJih0aGlzLnVuaWNvZGU9ZSk7cmV0dXJuITB9LGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbjtyZXR1cm4gbnVsbD09ZSYmKGU9Im1hY3JvbWFuIikscj1WZS5lbmNvZGUodCxlKSwobj1uZXcgVGUpLndyaXRlVUludDE2KDApLG4ud3JpdGVVSW50MTYoMSksci50YWJsZT1uLmRhdGEuY29uY2F0KHIuc3VidGFibGUpLHJ9LGV9KFJlKSxZZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9ImhoZWEiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBvcz10aGlzLm9mZnNldCx0aGlzLnZlcnNpb249dC5yZWFkSW50KCksdGhpcy5hc2NlbmRlcj10LnJlYWRTaG9ydCgpLHRoaXMuZGVjZW5kZXI9dC5yZWFkU2hvcnQoKSx0aGlzLmxpbmVHYXA9dC5yZWFkU2hvcnQoKSx0aGlzLmFkdmFuY2VXaWR0aE1heD10LnJlYWRTaG9ydCgpLHRoaXMubWluTGVmdFNpZGVCZWFyaW5nPXQucmVhZFNob3J0KCksdGhpcy5taW5SaWdodFNpZGVCZWFyaW5nPXQucmVhZFNob3J0KCksdGhpcy54TWF4RXh0ZW50PXQucmVhZFNob3J0KCksdGhpcy5jYXJldFNsb3BlUmlzZT10LnJlYWRTaG9ydCgpLHRoaXMuY2FyZXRTbG9wZVJ1bj10LnJlYWRTaG9ydCgpLHRoaXMuY2FyZXRPZmZzZXQ9dC5yZWFkU2hvcnQoKSx0LnBvcys9OCx0aGlzLm1ldHJpY0RhdGFGb3JtYXQ9dC5yZWFkU2hvcnQoKSx0aGlzLm51bWJlck9mTWV0cmljcz10LnJlYWRVSW50MTYoKX0sZX0oUmUpLEplPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gZS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBIZShlLHQpLGUucHJvdG90eXBlLnRhZz0iT1MvMiIsZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7aWYodC5wb3M9dGhpcy5vZmZzZXQsdGhpcy52ZXJzaW9uPXQucmVhZFVJbnQxNigpLHRoaXMuYXZlcmFnZUNoYXJXaWR0aD10LnJlYWRTaG9ydCgpLHRoaXMud2VpZ2h0Q2xhc3M9dC5yZWFkVUludDE2KCksdGhpcy53aWR0aENsYXNzPXQucmVhZFVJbnQxNigpLHRoaXMudHlwZT10LnJlYWRTaG9ydCgpLHRoaXMueVN1YnNjcmlwdFhTaXplPXQucmVhZFNob3J0KCksdGhpcy55U3Vic2NyaXB0WVNpemU9dC5yZWFkU2hvcnQoKSx0aGlzLnlTdWJzY3JpcHRYT2Zmc2V0PXQucmVhZFNob3J0KCksdGhpcy55U3Vic2NyaXB0WU9mZnNldD10LnJlYWRTaG9ydCgpLHRoaXMueVN1cGVyc2NyaXB0WFNpemU9dC5yZWFkU2hvcnQoKSx0aGlzLnlTdXBlcnNjcmlwdFlTaXplPXQucmVhZFNob3J0KCksdGhpcy55U3VwZXJzY3JpcHRYT2Zmc2V0PXQucmVhZFNob3J0KCksdGhpcy55U3VwZXJzY3JpcHRZT2Zmc2V0PXQucmVhZFNob3J0KCksdGhpcy55U3RyaWtlb3V0U2l6ZT10LnJlYWRTaG9ydCgpLHRoaXMueVN0cmlrZW91dFBvc2l0aW9uPXQucmVhZFNob3J0KCksdGhpcy5mYW1pbHlDbGFzcz10LnJlYWRTaG9ydCgpLHRoaXMucGFub3NlPWZ1bmN0aW9uKCl7dmFyIGUscjtmb3Iocj1bXSxlPTA7ZTwxMDsrK2Upci5wdXNoKHQucmVhZEJ5dGUoKSk7cmV0dXJuIHJ9KCksdGhpcy5jaGFyUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgZSxyO2ZvcihyPVtdLGU9MDtlPDQ7KytlKXIucHVzaCh0LnJlYWRJbnQoKSk7cmV0dXJuIHJ9KCksdGhpcy52ZW5kb3JJRD10LnJlYWRTdHJpbmcoNCksdGhpcy5zZWxlY3Rpb249dC5yZWFkU2hvcnQoKSx0aGlzLmZpcnN0Q2hhckluZGV4PXQucmVhZFNob3J0KCksdGhpcy5sYXN0Q2hhckluZGV4PXQucmVhZFNob3J0KCksdGhpcy52ZXJzaW9uPjAmJih0aGlzLmFzY2VudD10LnJlYWRTaG9ydCgpLHRoaXMuZGVzY2VudD10LnJlYWRTaG9ydCgpLHRoaXMubGluZUdhcD10LnJlYWRTaG9ydCgpLHRoaXMud2luQXNjZW50PXQucmVhZFNob3J0KCksdGhpcy53aW5EZXNjZW50PXQucmVhZFNob3J0KCksdGhpcy5jb2RlUGFnZVJhbmdlPWZ1bmN0aW9uKCl7dmFyIGUscjtmb3Iocj1bXSxlPTA7ZTwyO2U9KytlKXIucHVzaCh0LnJlYWRJbnQoKSk7cmV0dXJuIHJ9KCksdGhpcy52ZXJzaW9uPjEpKXJldHVybiB0aGlzLnhIZWlnaHQ9dC5yZWFkU2hvcnQoKSx0aGlzLmNhcEhlaWdodD10LnJlYWRTaG9ydCgpLHRoaXMuZGVmYXVsdENoYXI9dC5yZWFkU2hvcnQoKSx0aGlzLmJyZWFrQ2hhcj10LnJlYWRTaG9ydCgpLHRoaXMubWF4Q29udGV4dD10LnJlYWRTaG9ydCgpfSxlfShSZSksWGU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBlLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIEhlKGUsdCksZS5wcm90b3R5cGUudGFnPSJwb3N0IixlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZSxyLG47c3dpdGNoKHQucG9zPXRoaXMub2Zmc2V0LHRoaXMuZm9ybWF0PXQucmVhZEludCgpLHRoaXMuaXRhbGljQW5nbGU9dC5yZWFkSW50KCksdGhpcy51bmRlcmxpbmVQb3NpdGlvbj10LnJlYWRTaG9ydCgpLHRoaXMudW5kZXJsaW5lVGhpY2tuZXNzPXQucmVhZFNob3J0KCksdGhpcy5pc0ZpeGVkUGl0Y2g9dC5yZWFkSW50KCksdGhpcy5taW5NZW1UeXBlNDI9dC5yZWFkSW50KCksdGhpcy5tYXhNZW1UeXBlNDI9dC5yZWFkSW50KCksdGhpcy5taW5NZW1UeXBlMT10LnJlYWRJbnQoKSx0aGlzLm1heE1lbVR5cGUxPXQucmVhZEludCgpLHRoaXMuZm9ybWF0KXtjYXNlIDY1NTM2OmJyZWFrO2Nhc2UgMTMxMDcyOnZhciBpO2ZvcihyPXQucmVhZFVJbnQxNigpLHRoaXMuZ2x5cGhOYW1lSW5kZXg9W10saT0wOzA8PXI\/aTxyOmk+cjtpPTA8PXI\/KytpOi0taSl0aGlzLmdseXBoTmFtZUluZGV4LnB1c2godC5yZWFkVUludDE2KCkpO2Zvcih0aGlzLm5hbWVzPVtdLG49W107dC5wb3M8dGhpcy5vZmZzZXQrdGhpcy5sZW5ndGg7KWU9dC5yZWFkQnl0ZSgpLG4ucHVzaCh0aGlzLm5hbWVzLnB1c2godC5yZWFkU3RyaW5nKGUpKSk7cmV0dXJuIG47Y2FzZSAxNTE1NTI6cmV0dXJuIHI9dC5yZWFkVUludDE2KCksdGhpcy5vZmZzZXRzPXQucmVhZChyKTtjYXNlIDE5NjYwODpicmVhaztjYXNlIDI2MjE0NDpyZXR1cm4gdGhpcy5tYXA9ZnVuY3Rpb24oKXt2YXIgZSxyLG47Zm9yKG49W10saT1lPTAscj10aGlzLmZpbGUubWF4cC5udW1HbHlwaHM7MDw9cj9lPHI6ZT5yO2k9MDw9cj8rK2U6LS1lKW4ucHVzaCh0LnJlYWRVSW50MzIoKSk7cmV0dXJuIG59LmNhbGwodGhpcyl9fSxlfShSZSksS2U9ZnVuY3Rpb24odCxlKXt0aGlzLnJhdz10LHRoaXMubGVuZ3RoPXQubGVuZ3RoLHRoaXMucGxhdGZvcm1JRD1lLnBsYXRmb3JtSUQsdGhpcy5lbmNvZGluZ0lEPWUuZW5jb2RpbmdJRCx0aGlzLmxhbmd1YWdlSUQ9ZS5sYW5ndWFnZUlEfSxaZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9Im5hbWUiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzLGMsdSxsLGg7Zm9yKHQucG9zPXRoaXMub2Zmc2V0LHQucmVhZFNob3J0KCksZT10LnJlYWRTaG9ydCgpLG89dC5yZWFkU2hvcnQoKSxyPVtdLGk9MDswPD1lP2k8ZTppPmU7aT0wPD1lPysraTotLWkpci5wdXNoKHtwbGF0Zm9ybUlEOnQucmVhZFNob3J0KCksZW5jb2RpbmdJRDp0LnJlYWRTaG9ydCgpLGxhbmd1YWdlSUQ6dC5yZWFkU2hvcnQoKSxuYW1lSUQ6dC5yZWFkU2hvcnQoKSxsZW5ndGg6dC5yZWFkU2hvcnQoKSxvZmZzZXQ6dGhpcy5vZmZzZXQrbyt0LnJlYWRTaG9ydCgpfSk7Zm9yKHM9e30saT11PTAsbD1yLmxlbmd0aDt1PGw7aT0rK3Upbj1yW2ldLHQucG9zPW4ub2Zmc2V0LGM9dC5yZWFkU3RyaW5nKG4ubGVuZ3RoKSxhPW5ldyBLZShjLG4pLG51bGw9PXNbaD1uLm5hbWVJRF0mJihzW2hdPVtdKSxzW24ubmFtZUlEXS5wdXNoKGEpO3RoaXMuc3RyaW5ncz1zLHRoaXMuY29weXJpZ2h0PXNbMF0sdGhpcy5mb250RmFtaWx5PXNbMV0sdGhpcy5mb250U3ViZmFtaWx5PXNbMl0sdGhpcy51bmlxdWVTdWJmYW1pbHk9c1szXSx0aGlzLmZvbnROYW1lPXNbNF0sdGhpcy52ZXJzaW9uPXNbNV07dHJ5e3RoaXMucG9zdHNjcmlwdE5hbWU9c1s2XVswXS5yYXcucmVwbGFjZSgvW1x4MDAtXHgxOVx4ODAtXHhmZl0vZywiIil9Y2F0Y2godCl7dGhpcy5wb3N0c2NyaXB0TmFtZT1zWzRdWzBdLnJhdy5yZXBsYWNlKC9bXHgwMC1ceDE5XHg4MC1ceGZmXS9nLCIiKX1yZXR1cm4gdGhpcy50cmFkZW1hcms9c1s3XSx0aGlzLm1hbnVmYWN0dXJlcj1zWzhdLHRoaXMuZGVzaWduZXI9c1s5XSx0aGlzLmRlc2NyaXB0aW9uPXNbMTBdLHRoaXMudmVuZG9yVXJsPXNbMTFdLHRoaXMuZGVzaWduZXJVcmw9c1sxMl0sdGhpcy5saWNlbnNlPXNbMTNdLHRoaXMubGljZW5zZVVybD1zWzE0XSx0aGlzLnByZWZlcnJlZEZhbWlseT1zWzE1XSx0aGlzLnByZWZlcnJlZFN1YmZhbWlseT1zWzE3XSx0aGlzLmNvbXBhdGlibGVGdWxsPXNbMThdLHRoaXMuc2FtcGxlVGV4dD1zWzE5XX0sZX0oUmUpLCRlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gZS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBIZShlLHQpLGUucHJvdG90eXBlLnRhZz0ibWF4cCIsZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zPXRoaXMub2Zmc2V0LHRoaXMudmVyc2lvbj10LnJlYWRJbnQoKSx0aGlzLm51bUdseXBocz10LnJlYWRVSW50MTYoKSx0aGlzLm1heFBvaW50cz10LnJlYWRVSW50MTYoKSx0aGlzLm1heENvbnRvdXJzPXQucmVhZFVJbnQxNigpLHRoaXMubWF4Q29tcG9zaXRlUG9pbnRzPXQucmVhZFVJbnQxNigpLHRoaXMubWF4Q29tcG9uZW50Q29udG91cnM9dC5yZWFkVUludDE2KCksdGhpcy5tYXhab25lcz10LnJlYWRVSW50MTYoKSx0aGlzLm1heFR3aWxpZ2h0UG9pbnRzPXQucmVhZFVJbnQxNigpLHRoaXMubWF4U3RvcmFnZT10LnJlYWRVSW50MTYoKSx0aGlzLm1heEZ1bmN0aW9uRGVmcz10LnJlYWRVSW50MTYoKSx0aGlzLm1heEluc3RydWN0aW9uRGVmcz10LnJlYWRVSW50MTYoKSx0aGlzLm1heFN0YWNrRWxlbWVudHM9dC5yZWFkVUludDE2KCksdGhpcy5tYXhTaXplT2ZJbnN0cnVjdGlvbnM9dC5yZWFkVUludDE2KCksdGhpcy5tYXhDb21wb25lbnRFbGVtZW50cz10LnJlYWRVSW50MTYoKSx0aGlzLm1heENvbXBvbmVudERlcHRoPXQucmVhZFVJbnQxNigpfSxlfShSZSksUWU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBlLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIEhlKGUsdCksZS5wcm90b3R5cGUudGFnPSJobXR4IixlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG8scztmb3IodC5wb3M9dGhpcy5vZmZzZXQsdGhpcy5tZXRyaWNzPVtdLGU9MCxvPXRoaXMuZmlsZS5oaGVhLm51bWJlck9mTWV0cmljczswPD1vP2U8bzplPm87ZT0wPD1vPysrZTotLWUpdGhpcy5tZXRyaWNzLnB1c2goe2FkdmFuY2U6dC5yZWFkVUludDE2KCksbHNiOnQucmVhZEludDE2KCl9KTtmb3Iobj10aGlzLmZpbGUubWF4cC5udW1HbHlwaHMtdGhpcy5maWxlLmhoZWEubnVtYmVyT2ZNZXRyaWNzLHRoaXMubGVmdFNpZGVCZWFyaW5ncz1mdW5jdGlvbigpe3ZhciByLGk7Zm9yKGk9W10sZT1yPTA7MDw9bj9yPG46cj5uO2U9MDw9bj8rK3I6LS1yKWkucHVzaCh0LnJlYWRJbnQxNigpKTtyZXR1cm4gaX0oKSx0aGlzLndpZHRocz1mdW5jdGlvbigpe3ZhciB0LGUscixuO2ZvcihuPVtdLHQ9MCxlPShyPXRoaXMubWV0cmljcykubGVuZ3RoO3Q8ZTt0KyspaT1yW3RdLG4ucHVzaChpLmFkdmFuY2UpO3JldHVybiBufS5jYWxsKHRoaXMpLHI9dGhpcy53aWR0aHNbdGhpcy53aWR0aHMubGVuZ3RoLTFdLHM9W10sZT1hPTA7MDw9bj9hPG46YT5uO2U9MDw9bj8rK2E6LS1hKXMucHVzaCh0aGlzLndpZHRocy5wdXNoKHIpKTtyZXR1cm4gc30sZS5wcm90b3R5cGUuZm9yR2x5cGg9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gdGhpcy5tZXRyaWNzP3RoaXMubWV0cmljc1t0XTp7YWR2YW5jZTp0aGlzLm1ldHJpY3NbdGhpcy5tZXRyaWNzLmxlbmd0aC0xXS5hZHZhbmNlLGxzYjp0aGlzLmxlZnRTaWRlQmVhcmluZ3NbdC10aGlzLm1ldHJpY3MubGVuZ3RoXX19LGV9KFJlKSx0cj1bXS5zbGljZSxlcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9ImdseWYiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGU9e319LGUucHJvdG90eXBlLmdseXBoRm9yPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzLGMsdSxsO3JldHVybiB0IGluIHRoaXMuY2FjaGU\/dGhpcy5jYWNoZVt0XTooaT10aGlzLmZpbGUubG9jYSxlPXRoaXMuZmlsZS5jb250ZW50cyxyPWkuaW5kZXhPZih0KSwwPT09KG49aS5sZW5ndGhPZih0KSk\/dGhpcy5jYWNoZVt0XT1udWxsOihlLnBvcz10aGlzLm9mZnNldCtyLGE9KG89bmV3IFRlKGUucmVhZChuKSkpLnJlYWRTaG9ydCgpLGM9by5yZWFkU2hvcnQoKSxsPW8ucmVhZFNob3J0KCkscz1vLnJlYWRTaG9ydCgpLHU9by5yZWFkU2hvcnQoKSx0aGlzLmNhY2hlW3RdPS0xPT09YT9uZXcgbnIobyxjLGwscyx1KTpuZXcgcnIobyxhLGMsbCxzLHUpLHRoaXMuY2FjaGVbdF0pKX0sZS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGEsbyxzO2ZvcihhPVtdLGk9W10sbz0wLHM9ZS5sZW5ndGg7bzxzO28rKyluPXRbZVtvXV0saS5wdXNoKGEubGVuZ3RoKSxuJiYoYT1hLmNvbmNhdChuLmVuY29kZShyKSkpO3JldHVybiBpLnB1c2goYS5sZW5ndGgpLHt0YWJsZTphLG9mZnNldHM6aX19LGV9KFJlKSxycj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLHIsbixpLGEpe3RoaXMucmF3PXQsdGhpcy5udW1iZXJPZkNvbnRvdXJzPWUsdGhpcy54TWluPXIsdGhpcy55TWluPW4sdGhpcy54TWF4PWksdGhpcy55TWF4PWEsdGhpcy5jb21wb3VuZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmF3LmRhdGF9LHR9KCksbnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxyLG4saSl7dmFyIGEsbztmb3IodGhpcy5yYXc9dCx0aGlzLnhNaW49ZSx0aGlzLnlNaW49cix0aGlzLnhNYXg9bix0aGlzLnlNYXg9aSx0aGlzLmNvbXBvdW5kPSEwLHRoaXMuZ2x5cGhJRHM9W10sdGhpcy5nbHlwaE9mZnNldHM9W10sYT10aGlzLnJhdztvPWEucmVhZFNob3J0KCksdGhpcy5nbHlwaE9mZnNldHMucHVzaChhLnBvcyksdGhpcy5nbHlwaElEcy5wdXNoKGEucmVhZFVJbnQxNigpKSwzMiZvOylhLnBvcys9MSZvPzQ6MiwxMjgmbz9hLnBvcys9ODo2NCZvP2EucG9zKz00OjgmbyYmKGEucG9zKz0yKX1yZXR1cm4gMSw4LDMyLDY0LDEyOCx0LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oKXt2YXIgdCxlLHI7Zm9yKGU9bmV3IFRlKHRyLmNhbGwodGhpcy5yYXcuZGF0YSkpLHQ9MCxyPXRoaXMuZ2x5cGhJRHMubGVuZ3RoO3Q8cjsrK3QpZS5wb3M9dGhpcy5nbHlwaE9mZnNldHNbdF07cmV0dXJuIGUuZGF0YX0sdH0oKSxpcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIGUuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gSGUoZSx0KSxlLnByb3RvdHlwZS50YWc9ImxvY2EiLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuIHQucG9zPXRoaXMub2Zmc2V0LGU9dGhpcy5maWxlLmhlYWQuaW5kZXhUb0xvY0Zvcm1hdCx0aGlzLm9mZnNldHM9MD09PWU\/ZnVuY3Rpb24oKXt2YXIgZSxuO2ZvcihuPVtdLHI9MCxlPXRoaXMubGVuZ3RoO3I8ZTtyKz0yKW4ucHVzaCgyKnQucmVhZFVJbnQxNigpKTtyZXR1cm4gbn0uY2FsbCh0aGlzKTpmdW5jdGlvbigpe3ZhciBlLG47Zm9yKG49W10scj0wLGU9dGhpcy5sZW5ndGg7cjxlO3IrPTQpbi5wdXNoKHQucmVhZFVJbnQzMigpKTtyZXR1cm4gbn0uY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vZmZzZXRzW3RdfSxlLnByb3RvdHlwZS5sZW5ndGhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vZmZzZXRzW3QrMV0tdGhpcy5vZmZzZXRzW3RdfSxlLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IFVpbnQzMkFycmF5KHRoaXMub2Zmc2V0cy5sZW5ndGgpLG49MCxpPTAsYT0wO2E8ci5sZW5ndGg7KythKWlmKHJbYV09bixpPGUubGVuZ3RoJiZlW2ldPT1hKXsrK2ksclthXT1uO3ZhciBvPXRoaXMub2Zmc2V0c1thXSxzPXRoaXMub2Zmc2V0c1thKzFdLW87cz4wJiYobis9cyl9Zm9yKHZhciBjPW5ldyBBcnJheSg0KnIubGVuZ3RoKSx1PTA7dTxyLmxlbmd0aDsrK3UpY1s0KnUrM109MjU1JnJbdV0sY1s0KnUrMl09KDY1MjgwJnJbdV0pPj44LGNbNCp1KzFdPSgxNjcxMTY4MCZyW3VdKT4+MTYsY1s0KnVdPSg0Mjc4MTkwMDgwJnJbdV0pPj4yNDtyZXR1cm4gY30sZX0oUmUpLGFyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZvbnQ9dCx0aGlzLnN1YnNldD17fSx0aGlzLnVuaWNvZGVzPXt9LHRoaXMubmV4dD0zM31yZXR1cm4gdC5wcm90b3R5cGUuZ2VuZXJhdGVDbWFwPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4saTtmb3IoZSBpbiBuPXRoaXMuZm9udC5jbWFwLnRhYmxlc1swXS5jb2RlTWFwLHQ9e30saT10aGlzLnN1YnNldClyPWlbZV0sdFtlXT1uW3JdO3JldHVybiB0fSx0LnByb3RvdHlwZS5nbHlwaHNGb3I9ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHM7Zm9yKG49e30sYT0wLG89dC5sZW5ndGg7YTxvO2ErKyluW2k9dFthXV09dGhpcy5mb250LmdseWYuZ2x5cGhGb3IoaSk7Zm9yKGkgaW4gZT1bXSxuKShudWxsIT0ocj1uW2ldKT9yLmNvbXBvdW5kOnZvaWQgMCkmJmUucHVzaC5hcHBseShlLHIuZ2x5cGhJRHMpO2lmKGUubGVuZ3RoPjApZm9yKGkgaW4gcz10aGlzLmdseXBoc0ZvcihlKSlyPXNbaV0sbltpXT1yO3JldHVybiBufSx0LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxvLHMsYyx1LGwsaCxmLGQscCxnLG07Zm9yKG4gaW4gcj1HZS5lbmNvZGUodGhpcy5nZW5lcmF0ZUNtYXAoKSwidW5pY29kZSIpLGE9dGhpcy5nbHlwaHNGb3IodCksZj17MDowfSxtPXIuY2hhck1hcClmWyhzPW1bbl0pLm9sZF09cy5uZXc7Zm9yKGQgaW4gaD1yLm1heEdseXBoSUQsYSlkIGluIGZ8fChmW2RdPWgrKyk7cmV0dXJuIHU9ZnVuY3Rpb24odCl7dmFyIGUscjtmb3IoZSBpbiByPXt9LHQpclt0W2VdXT1lO3JldHVybiByfShmKSxsPU9iamVjdC5rZXlzKHUpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKSxwPWZ1bmN0aW9uKCl7dmFyIHQsZSxyO2ZvcihyPVtdLHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kyspbz1sW3RdLHIucHVzaCh1W29dKTtyZXR1cm4gcn0oKSxpPXRoaXMuZm9udC5nbHlmLmVuY29kZShhLHAsZiksYz10aGlzLmZvbnQubG9jYS5lbmNvZGUoaS5vZmZzZXRzLHApLGc9e2NtYXA6dGhpcy5mb250LmNtYXAucmF3KCksZ2x5ZjppLnRhYmxlLGxvY2E6YyxobXR4OnRoaXMuZm9udC5obXR4LnJhdygpLGhoZWE6dGhpcy5mb250LmhoZWEucmF3KCksbWF4cDp0aGlzLmZvbnQubWF4cC5yYXcoKSxwb3N0OnRoaXMuZm9udC5wb3N0LnJhdygpLG5hbWU6dGhpcy5mb250Lm5hbWUucmF3KCksaGVhZDp0aGlzLmZvbnQuaGVhZC5lbmNvZGUoZSl9LHRoaXMuZm9udC5vczIuZXhpc3RzJiYoZ1siT1MvMiJdPXRoaXMuZm9udC5vczIucmF3KCkpLHRoaXMuZm9udC5kaXJlY3RvcnkuZW5jb2RlKGcpfSx0fSgpO00uQVBJLlBERk9iamVjdD1mdW5jdGlvbigpe3ZhciB0O2Z1bmN0aW9uIGUoKXt9cmV0dXJuIHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4oQXJyYXkoZSsxKS5qb2luKCIwIikrdCkuc2xpY2UoLWUpfSxlLmNvbnZlcnQ9ZnVuY3Rpb24ocil7dmFyIG4saSxhLG87aWYoQXJyYXkuaXNBcnJheShyKSlyZXR1cm4iWyIrZnVuY3Rpb24oKXt2YXIgdCxpLGE7Zm9yKGE9W10sdD0wLGk9ci5sZW5ndGg7dDxpO3QrKyluPXJbdF0sYS5wdXNoKGUuY29udmVydChuKSk7cmV0dXJuIGF9KCkuam9pbigiICIpKyJdIjtpZigic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIi8iK3I7aWYobnVsbCE9cj9yLmlzU3RyaW5nOnZvaWQgMClyZXR1cm4iKCIrcisiKSI7aWYociBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIihEOiIrdChyLmdldFVUQ0Z1bGxZZWFyKCksNCkrdChyLmdldFVUQ01vbnRoKCksMikrdChyLmdldFVUQ0RhdGUoKSwyKSt0KHIuZ2V0VVRDSG91cnMoKSwyKSt0KHIuZ2V0VVRDTWludXRlcygpLDIpK3Qoci5nZXRVVENTZWNvbmRzKCksMikrIlopIjtpZigiW29iamVjdCBPYmplY3RdIj09PXt9LnRvU3RyaW5nLmNhbGwocikpe2ZvcihpIGluIGE9WyI8PCJdLHIpbz1yW2ldLGEucHVzaCgiLyIraSsiICIrZS5jb252ZXJ0KG8pKTtyZXR1cm4gYS5wdXNoKCI+PiIpLGEuam9pbigiXG4iKX1yZXR1cm4iIityfSxlfSgpLHQuQWNyb0Zvcm09eHQsdC5BY3JvRm9ybUFwcGVhcmFuY2U9THQsdC5BY3JvRm9ybUJ1dHRvbj1ndCx0LkFjcm9Gb3JtQ2hlY2tCb3g9eXQsdC5BY3JvRm9ybUNob2ljZUZpZWxkPWh0LHQuQWNyb0Zvcm1Db21ib0JveD1kdCx0LkFjcm9Gb3JtRWRpdEJveD1wdCx0LkFjcm9Gb3JtTGlzdEJveD1mdCx0LkFjcm9Gb3JtUGFzc3dvcmRGaWVsZD1OdCx0LkFjcm9Gb3JtUHVzaEJ1dHRvbj1tdCx0LkFjcm9Gb3JtUmFkaW9CdXR0b249dnQsdC5BY3JvRm9ybVRleHRGaWVsZD13dCx0LkdTdGF0ZT1DLHQuU2hhZGluZ1BhdHRlcm49Tyx0LlRpbGluZ1BhdHRlcm49Qix0LmRlZmF1bHQ9TSx0LmpzUERGPU0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1qc3BkZi51bWQubWluLmpzLm1hcAoK\"),function(c){return c.charCodeAt(0)}));var s=document.createElement(\"script\");s.textContent=t;document.head.appendChild(s);})();\n<\/script>\n<script>\n(function(){var t=new TextDecoder().decode(Uint8Array.from(atob(\"LyoganNQREYtQXV0b1RhYmxlIDMuOC4yLCBNSVQtTGl6ZW56ICovCi8qIQogKiAKICogICAgICAgICAgICAgICBqc1BERiBBdXRvVGFibGUgcGx1Z2luIHYzLjguMgogKgogKiAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNCBTaW1vbiBCZW5ndHNzb24sIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW1vbmJlbmd0c3Nvbi9qc1BERi1BdXRvVGFibGUKICogICAgICAgICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAqICAgICAgICAgICAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAqCiAqLwohZnVuY3Rpb24odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoImpzcGRmIil9Y2F0Y2godCl7fX0oKSk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbImpzcGRmIl0sZSk7ZWxzZXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM\/ZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gcmVxdWlyZSgianNwZGYiKX1jYXRjaCh0KXt9fSgpKTplKHQuanNwZGYpO2Zvcih2YXIgbyBpbiBuKSgib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM\/ZXhwb3J0czp0KVtvXT1uW29dfX0oInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dm9pZCAwIT09dGhpcz90aGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY\/c2VsZjpnbG9iYWwsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17MTcyOmZ1bmN0aW9uKHQsZSl7dmFyIG4sbz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KG49ZnVuY3Rpb24odCxlKXtyZXR1cm4gbj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSl9LG4odCxlKX0sZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBvKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fW4odCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihvLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbyl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5DZWxsSG9va0RhdGE9ZS5Ib29rRGF0YT12b2lkIDA7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe3RoaXMudGFibGU9ZSx0aGlzLnBhZ2VOdW1iZXI9ZS5wYWdlTnVtYmVyLHRoaXMucGFnZUNvdW50PXRoaXMucGFnZU51bWJlcix0aGlzLnNldHRpbmdzPWUuc2V0dGluZ3MsdGhpcy5jdXJzb3I9bix0aGlzLmRvYz10LmdldERvY3VtZW50KCl9O2UuSG9va0RhdGE9cjt2YXIgaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixvLHIsaSxsKXt2YXIgYT10LmNhbGwodGhpcyxlLG4sbCl8fHRoaXM7cmV0dXJuIGEuY2VsbD1vLGEucm93PXIsYS5jb2x1bW49aSxhLnNlY3Rpb249ci5zZWN0aW9uLGF9cmV0dXJuIG8oZSx0KSxlfShyKTtlLkNlbGxIb29rRGF0YT1pfSwzNDA6ZnVuY3Rpb24odCxlLG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDQpLHI9bigxMzYpLGk9big3NDQpLGw9big3NzYpLGE9big2NjQpLHM9big5NzIpO2UuZGVmYXVsdD1mdW5jdGlvbih0KXt0LkFQSS5hdXRvVGFibGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTsxPT09ZS5sZW5ndGg\/dD1lWzBdOihjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBhdXRvVGFibGUgaW5pdGlhdGlvbiIpLCh0PWVbMl18fHt9KS5jb2x1bW5zPWVbMF0sdC5ib2R5PWVbMV0pO3ZhciBvPSgwLGwucGFyc2VJbnB1dCkodGhpcyx0KSxyPSgwLHMuY3JlYXRlVGFibGUpKHRoaXMsbyk7cmV0dXJuKDAsYS5kcmF3VGFibGUpKHRoaXMsciksdGhpc30sdC5BUEkubGFzdEF1dG9UYWJsZT0hMSx0LkFQSS5wcmV2aW91c0F1dG9UYWJsZT0hMSx0LkFQSS5hdXRvVGFibGUucHJldmlvdXM9ITEsdC5BUEkuYXV0b1RhYmxlVGV4dD1mdW5jdGlvbih0LGUsbixvKXsoMCxyLmRlZmF1bHQpKHQsZSxuLG8sdGhpcyl9LHQuQVBJLmF1dG9UYWJsZVNldERlZmF1bHRzPWZ1bmN0aW9uKHQpe3JldHVybiBpLkRvY0hhbmRsZXIuc2V0RGVmYXVsdHModCx0aGlzKSx0aGlzfSx0LmF1dG9UYWJsZVNldERlZmF1bHRzPWZ1bmN0aW9uKHQsZSl7aS5Eb2NIYW5kbGVyLnNldERlZmF1bHRzKHQsZSl9LHQuQVBJLmF1dG9UYWJsZUh0bWxUb0pzb249ZnVuY3Rpb24odCxlKXt2YXIgbjtpZih2b2lkIDA9PT1lJiYoZT0hMSksInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNhbm5vdCBydW4gYXV0b1RhYmxlSHRtbFRvSnNvbiBpbiBub24gYnJvd3NlciBlbnZpcm9ubWVudCIpLG51bGw7dmFyIHI9bmV3IGkuRG9jSGFuZGxlcih0aGlzKSxsPSgwLG8ucGFyc2VIdG1sKShyLHQsd2luZG93LGUsITEpLGE9bC5oZWFkLHM9bC5ib2R5O3JldHVybntjb2x1bW5zOihudWxsPT09KG49YVswXSl8fHZvaWQgMD09PW4\/dm9pZCAwOm4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb250ZW50fSkpKXx8W10scm93czpzLGRhdGE6c319LHQuQVBJLmF1dG9UYWJsZUVuZFBvc1k9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBmdW5jdGlvbjogYXV0b1RhYmxlRW5kUG9zWS4gVXNlIGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSBpbnN0ZWFkLiIpO3ZhciB0PXRoaXMubGFzdEF1dG9UYWJsZTtyZXR1cm4gdCYmdC5maW5hbFk\/dC5maW5hbFk6MH0sdC5BUEkuYXV0b1RhYmxlQWRkUGFnZUNvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlVzZSBvZiBkZXByZWNhdGVkIGZ1bmN0aW9uOiBhdXRvVGFibGVBZGRQYWdlQ29udGVudC4gVXNlIGpzUERGLmF1dG9UYWJsZVNldERlZmF1bHRzKHtkaWREcmF3UGFnZTogKCkgPT4ge319KSBpbnN0ZWFkLiIpLHQuQVBJLmF1dG9UYWJsZS5nbG9iYWxEZWZhdWx0c3x8KHQuQVBJLmF1dG9UYWJsZS5nbG9iYWxEZWZhdWx0cz17fSksdC5BUEkuYXV0b1RhYmxlLmdsb2JhbERlZmF1bHRzLmFkZFBhZ2VDb250ZW50PWUsdGhpc30sdC5BUEkuYXV0b1RhYmxlQWRkUGFnZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBmdW5jdGlvbjogYXV0b1RhYmxlQWRkUGFnZS4gVXNlIGRvYy5hZGRQYWdlKCkiKSx0aGlzLmFkZFBhZ2UoKSx0aGlzfX19LDEzNjpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmRlZmF1bHQ9ZnVuY3Rpb24odCxlLG4sbyxyKXtvPW98fHt9O3ZhciBpPXIuaW50ZXJuYWwuc2NhbGVGYWN0b3IsbD1yLmludGVybmFsLmdldEZvbnRTaXplKCkvaSxhPWwqKHIuZ2V0TGluZUhlaWdodEZhY3Rvcj9yLmdldExpbmVIZWlnaHRGYWN0b3IoKToxLjE1KSxzPSIiLHU9MTtpZigibWlkZGxlIiE9PW8udmFsaWduJiYiYm90dG9tIiE9PW8udmFsaWduJiYiY2VudGVyIiE9PW8uaGFsaWduJiYicmlnaHQiIT09by5oYWxpZ258fCh1PShzPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KC9cclxufFxyfFxuL2cpOnQpLmxlbmd0aHx8MSksbis9bCooMi0xLjE1KSwibWlkZGxlIj09PW8udmFsaWduP24tPXUvMiphOiJib3R0b20iPT09by52YWxpZ24mJihuLT11KmEpLCJjZW50ZXIiPT09by5oYWxpZ258fCJyaWdodCI9PT1vLmhhbGlnbil7dmFyIGQ9bDtpZigiY2VudGVyIj09PW8uaGFsaWduJiYoZCo9LjUpLHMmJnU+PTEpe2Zvcih2YXIgaD0wO2g8cy5sZW5ndGg7aCsrKXIudGV4dChzW2hdLGUtci5nZXRTdHJpbmdVbml0V2lkdGgoc1toXSkqZCxuKSxuKz1hO3JldHVybiByfWUtPXIuZ2V0U3RyaW5nVW5pdFdpZHRoKHQpKmR9cmV0dXJuImp1c3RpZnkiPT09by5oYWxpZ24\/ci50ZXh0KHQsZSxuLHttYXhXaWR0aDpvLm1heFdpZHRofHwxMDAsYWxpZ246Imp1c3RpZnkifSk6ci50ZXh0KHQsZSxuKSxyfX0sNDIwOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUpe3ZhciBuPXQ+MCxvPWV8fDA9PT1lO3JldHVybiBuJiZvPyJERiI6bj8iUyI6bz8iRiI6bnVsbH1mdW5jdGlvbiBvKHQsZSl7dmFyIG4sbyxyLGk7aWYodD10fHxlLEFycmF5LmlzQXJyYXkodCkpe2lmKHQubGVuZ3RoPj00KXJldHVybnt0b3A6dFswXSxyaWdodDp0WzFdLGJvdHRvbTp0WzJdLGxlZnQ6dFszXX07aWYoMz09PXQubGVuZ3RoKXJldHVybnt0b3A6dFswXSxyaWdodDp0WzFdLGJvdHRvbTp0WzJdLGxlZnQ6dFsxXX07aWYoMj09PXQubGVuZ3RoKXJldHVybnt0b3A6dFswXSxyaWdodDp0WzFdLGJvdHRvbTp0WzBdLGxlZnQ6dFsxXX07dD0xPT09dC5sZW5ndGg\/dFswXTplfXJldHVybiJvYmplY3QiPT10eXBlb2YgdD8oIm51bWJlciI9PXR5cGVvZiB0LnZlcnRpY2FsJiYodC50b3A9dC52ZXJ0aWNhbCx0LmJvdHRvbT10LnZlcnRpY2FsKSwibnVtYmVyIj09dHlwZW9mIHQuaG9yaXpvbnRhbCYmKHQucmlnaHQ9dC5ob3Jpem9udGFsLHQubGVmdD10Lmhvcml6b250YWwpLHtsZWZ0Om51bGwhPT0obj10LmxlZnQpJiZ2b2lkIDAhPT1uP246ZSx0b3A6bnVsbCE9PShvPXQudG9wKSYmdm9pZCAwIT09bz9vOmUscmlnaHQ6bnVsbCE9PShyPXQucmlnaHQpJiZ2b2lkIDAhPT1yP3I6ZSxib3R0b206bnVsbCE9PShpPXQuYm90dG9tKSYmdm9pZCAwIT09aT9pOmV9KTooIm51bWJlciIhPXR5cGVvZiB0JiYodD1lKSx7dG9wOnQscmlnaHQ6dCxib3R0b206dCxsZWZ0OnR9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5nZXRQYWdlQXZhaWxhYmxlV2lkdGg9ZS5wYXJzZVNwYWNpbmc9ZS5nZXRGaWxsU3R5bGU9ZS5hZGRUYWJsZUJvcmRlcj1lLmdldFN0cmluZ1dpZHRoPXZvaWQgMCxlLmdldFN0cmluZ1dpZHRoPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5hcHBseVN0eWxlcyhlLCEwKSwoQXJyYXkuaXNBcnJheSh0KT90Olt0XSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5nZXRUZXh0V2lkdGgodCl9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSksMCl9LGUuYWRkVGFibGVCb3JkZXI9ZnVuY3Rpb24odCxlLG8scil7dmFyIGk9ZS5zZXR0aW5ncy50YWJsZUxpbmVXaWR0aCxsPWUuc2V0dGluZ3MudGFibGVMaW5lQ29sb3I7dC5hcHBseVN0eWxlcyh7bGluZVdpZHRoOmksbGluZUNvbG9yOmx9KTt2YXIgYT1uKGksITEpO2EmJnQucmVjdChvLngsby55LGUuZ2V0V2lkdGgodC5wYWdlU2l6ZSgpLndpZHRoKSxyLnktby55LGEpfSxlLmdldEZpbGxTdHlsZT1uLGUucGFyc2VTcGFjaW5nPW8sZS5nZXRQYWdlQXZhaWxhYmxlV2lkdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj1vKGUuc2V0dGluZ3MubWFyZ2luLDApO3JldHVybiB0LnBhZ2VTaXplKCkud2lkdGgtKG4ubGVmdCtuLnJpZ2h0KX19LDc5NjpmdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pfSxuKHQsZSl9LGZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbygpe3RoaXMuY29uc3RydWN0b3I9dH1uKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU\/T2JqZWN0LmNyZWF0ZShlKTooby5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG8pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZ2V0VGhlbWU9ZS5kZWZhdWx0U3R5bGVzPWUuSHRtbFJvd0lucHV0PXZvaWQgMDt2YXIgcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZWxlbWVudD1lLG59cmV0dXJuIG8oZSx0KSxlfShBcnJheSk7ZS5IdG1sUm93SW5wdXQ9cixlLmRlZmF1bHRTdHlsZXM9ZnVuY3Rpb24odCl7cmV0dXJue2ZvbnQ6ImhlbHZldGljYSIsZm9udFN0eWxlOiJub3JtYWwiLG92ZXJmbG93OiJsaW5lYnJlYWsiLGZpbGxDb2xvcjohMSx0ZXh0Q29sb3I6MjAsaGFsaWduOiJsZWZ0Iix2YWxpZ246InRvcCIsZm9udFNpemU6MTAsY2VsbFBhZGRpbmc6NS90LGxpbmVDb2xvcjoyMDAsbGluZVdpZHRoOjAsY2VsbFdpZHRoOiJhdXRvIixtaW5DZWxsSGVpZ2h0OjAsbWluQ2VsbFdpZHRoOjB9fSxlLmdldFRoZW1lPWZ1bmN0aW9uKHQpe3JldHVybntzdHJpcGVkOnt0YWJsZTp7ZmlsbENvbG9yOjI1NSx0ZXh0Q29sb3I6ODAsZm9udFN0eWxlOiJub3JtYWwifSxoZWFkOnt0ZXh0Q29sb3I6MjU1LGZpbGxDb2xvcjpbNDEsMTI4LDE4NV0sZm9udFN0eWxlOiJib2xkIn0sYm9keTp7fSxmb290Ont0ZXh0Q29sb3I6MjU1LGZpbGxDb2xvcjpbNDEsMTI4LDE4NV0sZm9udFN0eWxlOiJib2xkIn0sYWx0ZXJuYXRlUm93OntmaWxsQ29sb3I6MjQ1fX0sZ3JpZDp7dGFibGU6e2ZpbGxDb2xvcjoyNTUsdGV4dENvbG9yOjgwLGZvbnRTdHlsZToibm9ybWFsIixsaW5lV2lkdGg6LjF9LGhlYWQ6e3RleHRDb2xvcjoyNTUsZmlsbENvbG9yOlsyNiwxODgsMTU2XSxmb250U3R5bGU6ImJvbGQiLGxpbmVXaWR0aDowfSxib2R5Ont9LGZvb3Q6e3RleHRDb2xvcjoyNTUsZmlsbENvbG9yOlsyNiwxODgsMTU2XSxmb250U3R5bGU6ImJvbGQiLGxpbmVXaWR0aDowfSxhbHRlcm5hdGVSb3c6e319LHBsYWluOntoZWFkOntmb250U3R5bGU6ImJvbGQifSxmb290Ontmb250U3R5bGU6ImJvbGQifX19W3RdfX0sOTAzOmZ1bmN0aW9uKHQsZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5wYXJzZUNzcz12b2lkIDA7dmFyIG89big0MjApO2Z1bmN0aW9uIHIodCxlKXt2YXIgbj1pKHQsZSk7aWYoIW4pcmV0dXJuIG51bGw7dmFyIG89bi5tYXRjaCgvXnJnYmE\/XCgoXGQrKSxccyooXGQrKSxccyooXGQrKSg\/OixccyooXGQqXC4\/XGQqKSk\/XCkkLyk7aWYoIW98fCFBcnJheS5pc0FycmF5KG8pKXJldHVybiBudWxsO3ZhciByPVtwYXJzZUludChvWzFdKSxwYXJzZUludChvWzJdKSxwYXJzZUludChvWzNdKV07cmV0dXJuIDA9PT1wYXJzZUludChvWzRdKXx8aXNOYU4oclswXSl8fGlzTmFOKHJbMV0pfHxpc05hTihyWzJdKT9udWxsOnJ9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPWUodCk7cmV0dXJuInJnYmEoMCwgMCwgMCwgMCkiPT09bnx8InRyYW5zcGFyZW50Ij09PW58fCJpbml0aWFsIj09PW58fCJpbmhlcml0Ij09PW4\/bnVsbD09dC5wYXJlbnRFbGVtZW50P251bGw6aSh0LnBhcmVudEVsZW1lbnQsZSk6bn1lLnBhcnNlQ3NzPWZ1bmN0aW9uKHQsZSxuLGksbCl7dmFyIGE9e30scz05Ni83Mix1PXIoZSwoZnVuY3Rpb24odCl7cmV0dXJuIGwuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5iYWNrZ3JvdW5kQ29sb3J9KSk7bnVsbCE9dSYmKGEuZmlsbENvbG9yPXUpO3ZhciBkPXIoZSwoZnVuY3Rpb24odCl7cmV0dXJuIGwuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5jb2xvcn0pKTtudWxsIT1kJiYoYS50ZXh0Q29sb3I9ZCk7dmFyIGg9ZnVuY3Rpb24odCxlKXt2YXIgbj1bdC5wYWRkaW5nVG9wLHQucGFkZGluZ1JpZ2h0LHQucGFkZGluZ0JvdHRvbSx0LnBhZGRpbmdMZWZ0XSxyPTk2Lyg3Mi9lKSxpPShwYXJzZUludCh0LmxpbmVIZWlnaHQpLXBhcnNlSW50KHQuZm9udFNpemUpKS9lLzIsbD1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHR8fCIwIikvcn0pKSxhPSgwLG8ucGFyc2VTcGFjaW5nKShsLDApO2k+YS50b3AmJihhLnRvcD1pKTtpPmEuYm90dG9tJiYoYS5ib3R0b209aSk7cmV0dXJuIGF9KGksbik7aCYmKGEuY2VsbFBhZGRpbmc9aCk7dmFyIGM9ImJvcmRlclRvcENvbG9yIixmPXMqbixnPWkuYm9yZGVyVG9wV2lkdGg7aWYoaS5ib3JkZXJCb3R0b21XaWR0aD09PWcmJmkuYm9yZGVyUmlnaHRXaWR0aD09PWcmJmkuYm9yZGVyTGVmdFdpZHRoPT09Zyl7dmFyIHA9KHBhcnNlRmxvYXQoZyl8fDApL2Y7cCYmKGEubGluZVdpZHRoPXApfWVsc2UgYS5saW5lV2lkdGg9e3RvcDoocGFyc2VGbG9hdChpLmJvcmRlclRvcFdpZHRoKXx8MCkvZixyaWdodDoocGFyc2VGbG9hdChpLmJvcmRlclJpZ2h0V2lkdGgpfHwwKS9mLGJvdHRvbToocGFyc2VGbG9hdChpLmJvcmRlckJvdHRvbVdpZHRoKXx8MCkvZixsZWZ0OihwYXJzZUZsb2F0KGkuYm9yZGVyTGVmdFdpZHRoKXx8MCkvZn0sYS5saW5lV2lkdGgudG9wfHwoYS5saW5lV2lkdGgucmlnaHQ\/Yz0iYm9yZGVyUmlnaHRDb2xvciI6YS5saW5lV2lkdGguYm90dG9tP2M9ImJvcmRlckJvdHRvbUNvbG9yIjphLmxpbmVXaWR0aC5sZWZ0JiYoYz0iYm9yZGVyTGVmdENvbG9yIikpO2NvbnNvbGUubG9nKGEubGluZVdpZHRoKTt2YXIgeT1yKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBsLmdldENvbXB1dGVkU3R5bGUodClbY119KSk7bnVsbCE9eSYmKGEubGluZUNvbG9yPXkpO3ZhciB2PVsibGVmdCIsInJpZ2h0IiwiY2VudGVyIiwianVzdGlmeSJdOy0xIT09di5pbmRleE9mKGkudGV4dEFsaWduKSYmKGEuaGFsaWduPWkudGV4dEFsaWduKSwtMSE9PSh2PVsibWlkZGxlIiwiYm90dG9tIiwidG9wIl0pLmluZGV4T2YoaS52ZXJ0aWNhbEFsaWduKSYmKGEudmFsaWduPWkudmVydGljYWxBbGlnbik7dmFyIG09cGFyc2VJbnQoaS5mb250U2l6ZXx8IiIpO2lzTmFOKG0pfHwoYS5mb250U2l6ZT1tL3MpO3ZhciBiPWZ1bmN0aW9uKHQpe3ZhciBlPSIiOygiYm9sZCI9PT10LmZvbnRXZWlnaHR8fCJib2xkZXIiPT09dC5mb250V2VpZ2h0fHxwYXJzZUludCh0LmZvbnRXZWlnaHQpPj03MDApJiYoZT0iYm9sZCIpOyJpdGFsaWMiIT09dC5mb250U3R5bGUmJiJvYmxpcXVlIiE9PXQuZm9udFN0eWxlfHwoZSs9Iml0YWxpYyIpO3JldHVybiBlfShpKTtiJiYoYS5mb250U3R5bGU9Yik7dmFyIHc9KGkuZm9udEZhbWlseXx8IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuLTEhPT10LmluZGV4T2YodykmJihhLmZvbnQ9dyksYX19LDc0NDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkRvY0hhbmRsZXI9dm9pZCAwO3ZhciBuPXt9LG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuanNQREZEb2N1bWVudD10LHRoaXMudXNlclN0eWxlcz17dGV4dENvbG9yOnQuZ2V0VGV4dENvbG9yP3RoaXMuanNQREZEb2N1bWVudC5nZXRUZXh0Q29sb3IoKTowLGZvbnRTaXplOnQuaW50ZXJuYWwuZ2V0Rm9udFNpemUoKSxmb250U3R5bGU6dC5pbnRlcm5hbC5nZXRGb250KCkuZm9udFN0eWxlLGZvbnQ6dC5pbnRlcm5hbC5nZXRGb250KCkuZm9udE5hbWUsbGluZVdpZHRoOnQuZ2V0TGluZVdpZHRoP3RoaXMuanNQREZEb2N1bWVudC5nZXRMaW5lV2lkdGgoKTowLGxpbmVDb2xvcjp0LmdldERyYXdDb2xvcj90aGlzLmpzUERGRG9jdW1lbnQuZ2V0RHJhd0NvbG9yKCk6MH19cmV0dXJuIHQuc2V0RGVmYXVsdHM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1udWxsKSxlP2UuX19hdXRvVGFibGVEb2N1bWVudERlZmF1bHRzPXQ6bj10fSx0LnVuaWZ5Q29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk\/dDoibnVtYmVyIj09dHlwZW9mIHQ\/W3QsdCx0XToic3RyaW5nIj09dHlwZW9mIHQ\/W3RdOm51bGx9LHQucHJvdG90eXBlLmFwcGx5U3R5bGVzPWZ1bmN0aW9uKGUsbil7dmFyIG8scixpO3ZvaWQgMD09PW4mJihuPSExKSxlLmZvbnRTdHlsZSYmdGhpcy5qc1BERkRvY3VtZW50LnNldEZvbnRTdHlsZSYmdGhpcy5qc1BERkRvY3VtZW50LnNldEZvbnRTdHlsZShlLmZvbnRTdHlsZSk7dmFyIGw9dGhpcy5qc1BERkRvY3VtZW50LmludGVybmFsLmdldEZvbnQoKSxhPWwuZm9udFN0eWxlLHM9bC5mb250TmFtZTtpZihlLmZvbnQmJihzPWUuZm9udCksZS5mb250U3R5bGUpe2E9ZS5mb250U3R5bGU7dmFyIHU9dGhpcy5nZXRGb250TGlzdCgpW3NdO3UmJi0xPT09dS5pbmRleE9mKGEpJiYodGhpcy5qc1BERkRvY3VtZW50LnNldEZvbnRTdHlsZSYmdGhpcy5qc1BERkRvY3VtZW50LnNldEZvbnRTdHlsZSh1WzBdKSxhPXVbMF0pfWlmKHRoaXMuanNQREZEb2N1bWVudC5zZXRGb250KHMsYSksZS5mb250U2l6ZSYmdGhpcy5qc1BERkRvY3VtZW50LnNldEZvbnRTaXplKGUuZm9udFNpemUpLCFuKXt2YXIgZD10LnVuaWZ5Q29sb3IoZS5maWxsQ29sb3IpO2QmJihvPXRoaXMuanNQREZEb2N1bWVudCkuc2V0RmlsbENvbG9yLmFwcGx5KG8sZCksKGQ9dC51bmlmeUNvbG9yKGUudGV4dENvbG9yKSkmJihyPXRoaXMuanNQREZEb2N1bWVudCkuc2V0VGV4dENvbG9yLmFwcGx5KHIsZCksKGQ9dC51bmlmeUNvbG9yKGUubGluZUNvbG9yKSkmJihpPXRoaXMuanNQREZEb2N1bWVudCkuc2V0RHJhd0NvbG9yLmFwcGx5KGksZCksIm51bWJlciI9PXR5cGVvZiBlLmxpbmVXaWR0aCYmdGhpcy5qc1BERkRvY3VtZW50LnNldExpbmVXaWR0aChlLmxpbmVXaWR0aCl9fSx0LnByb3RvdHlwZS5zcGxpdFRleHRUb1NpemU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmpzUERGRG9jdW1lbnQuc3BsaXRUZXh0VG9TaXplKHQsZSxuKX0sdC5wcm90b3R5cGUucmVjdD1mdW5jdGlvbih0LGUsbixvLHIpe3JldHVybiB0aGlzLmpzUERGRG9jdW1lbnQucmVjdCh0LGUsbixvLHIpfSx0LnByb3RvdHlwZS5nZXRMYXN0QXV0b1RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuanNQREZEb2N1bWVudC5sYXN0QXV0b1RhYmxlfHxudWxsfSx0LnByb3RvdHlwZS5nZXRUZXh0V2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuanNQREZEb2N1bWVudC5nZXRUZXh0V2lkdGgodCl9LHQucHJvdG90eXBlLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuanNQREZEb2N1bWVudH0sdC5wcm90b3R5cGUuc2V0UGFnZT1mdW5jdGlvbih0KXt0aGlzLmpzUERGRG9jdW1lbnQuc2V0UGFnZSh0KX0sdC5wcm90b3R5cGUuYWRkUGFnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpzUERGRG9jdW1lbnQuYWRkUGFnZSgpfSx0LnByb3RvdHlwZS5nZXRGb250TGlzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmpzUERGRG9jdW1lbnQuZ2V0Rm9udExpc3QoKX0sdC5wcm90b3R5cGUuZ2V0R2xvYmFsT3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBufHx7fX0sdC5wcm90b3R5cGUuZ2V0RG9jdW1lbnRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuanNQREZEb2N1bWVudC5fX2F1dG9UYWJsZURvY3VtZW50RGVmYXVsdHN8fHt9fSx0LnByb3RvdHlwZS5wYWdlU2l6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuanNQREZEb2N1bWVudC5pbnRlcm5hbC5wYWdlU2l6ZTtyZXR1cm4gbnVsbD09dC53aWR0aCYmKHQ9e3dpZHRoOnQuZ2V0V2lkdGgoKSxoZWlnaHQ6dC5nZXRIZWlnaHQoKX0pLHR9LHQucHJvdG90eXBlLnNjYWxlRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuanNQREZEb2N1bWVudC5pbnRlcm5hbC5zY2FsZUZhY3Rvcn0sdC5wcm90b3R5cGUuZ2V0TGluZUhlaWdodEZhY3Rvcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuanNQREZEb2N1bWVudDtyZXR1cm4gdC5nZXRMaW5lSGVpZ2h0RmFjdG9yP3QuZ2V0TGluZUhlaWdodEZhY3RvcigpOjEuMTV9LHQucHJvdG90eXBlLmdldExpbmVIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQvdGhpcy5zY2FsZUZhY3RvcigpKnRoaXMuZ2V0TGluZUhlaWdodEZhY3RvcigpfSx0LnByb3RvdHlwZS5wYWdlTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5qc1BERkRvY3VtZW50LmludGVybmFsLmdldEN1cnJlbnRQYWdlSW5mbygpO3JldHVybiB0P3QucGFnZU51bWJlcjp0aGlzLmpzUERGRG9jdW1lbnQuaW50ZXJuYWwuZ2V0TnVtYmVyT2ZQYWdlcygpfSx0fSgpO2UuRG9jSGFuZGxlcj1vfSw0OmZ1bmN0aW9uKHQsZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5wYXJzZUh0bWw9dm9pZCAwO3ZhciBvPW4oOTAzKSxyPW4oNzk2KTtmdW5jdGlvbiBpKHQsZSxuLGksYSxzKXtmb3IodmFyIHU9bmV3IHIuSHRtbFJvd0lucHV0KGkpLGQ9MDtkPGkuY2VsbHMubGVuZ3RoO2QrKyl7dmFyIGg9aS5jZWxsc1tkXSxjPW4uZ2V0Q29tcHV0ZWRTdHlsZShoKTtpZihhfHwibm9uZSIhPT1jLmRpc3BsYXkpe3ZhciBmPXZvaWQgMDtzJiYoZj0oMCxvLnBhcnNlQ3NzKSh0LGgsZSxjLG4pKSx1LnB1c2goe3Jvd1NwYW46aC5yb3dTcGFuLGNvbFNwYW46aC5jb2xTcGFuLHN0eWxlczpmLF9lbGVtZW50OmgsY29udGVudDpsKGgpfSl9fXZhciBnPW4uZ2V0Q29tcHV0ZWRTdHlsZShpKTtpZih1Lmxlbmd0aD4wJiYoYXx8Im5vbmUiIT09Zy5kaXNwbGF5KSlyZXR1cm4gdX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQuY2xvbmVOb2RlKCEwKTtyZXR1cm4gZS5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvICsvZywiICIpLGUuaW5uZXJIVE1MPWUuaW5uZXJIVE1MLnNwbGl0KC88YnIuKj8+LykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50cmltKCl9KSkuam9pbigiXG4iKSxlLmlubmVyVGV4dHx8ZS50ZXh0Q29udGVudHx8IiJ9ZS5wYXJzZUh0bWw9ZnVuY3Rpb24odCxlLG4sbyxyKXt2YXIgbCxhLHM7dm9pZCAwPT09byYmKG89ITEpLHZvaWQgMD09PXImJihyPSExKSxzPSJzdHJpbmciPT10eXBlb2YgZT9uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk6ZTt2YXIgdT1PYmplY3Qua2V5cyh0LmdldEZvbnRMaXN0KCkpLGQ9dC5zY2FsZUZhY3RvcigpLGg9W10sYz1bXSxmPVtdO2lmKCFzKXJldHVybiBjb25zb2xlLmVycm9yKCJIdG1sIHRhYmxlIGNvdWxkIG5vdCBiZSBmb3VuZCB3aXRoIGlucHV0OiAiLGUpLHtoZWFkOmgsYm9keTpjLGZvb3Q6Zn07Zm9yKHZhciBnPTA7ZzxzLnJvd3MubGVuZ3RoO2crKyl7dmFyIHA9cy5yb3dzW2ddLHk9bnVsbD09PShhPW51bGw9PT0obD1udWxsPT1wP3ZvaWQgMDpwLnBhcmVudEVsZW1lbnQpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnRhZ05hbWUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvTG93ZXJDYXNlKCksdj1pKHUsZCxuLHAsbyxyKTt2JiYoInRoZWFkIj09PXk\/aC5wdXNoKHYpOiJ0Zm9vdCI9PT15P2YucHVzaCh2KTpjLnB1c2godikpfXJldHVybntoZWFkOmgsYm9keTpjLGZvb3Q6Zn19fSw3NzY6ZnVuY3Rpb24odCxlLG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnBhcnNlSW5wdXQ9dm9pZCAwO3ZhciBvPW4oNCkscj1uKDM1NiksaT1uKDQyMCksbD1uKDc0NCksYT1uKDc5Mik7ZS5wYXJzZUlucHV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IGwuRG9jSGFuZGxlcih0KSxzPW4uZ2V0RG9jdW1lbnRPcHRpb25zKCksdT1uLmdldEdsb2JhbE9wdGlvbnMoKTsoMCxhLmRlZmF1bHQpKG4sdSxzLGUpO3ZhciBkLGg9KDAsci5hc3NpZ24pKHt9LHUscyxlKTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKGQ9d2luZG93KTt2YXIgYz1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvPXtzdHlsZXM6e30saGVhZFN0eWxlczp7fSxib2R5U3R5bGVzOnt9LGZvb3RTdHlsZXM6e30sYWx0ZXJuYXRlUm93U3R5bGVzOnt9LGNvbHVtblN0eWxlczp7fX0saT1mdW5jdGlvbihpKXtpZigiY29sdW1uU3R5bGVzIj09PWkpe3ZhciBsPXRbaV0sYT1lW2ldLHM9bltpXTtvLmNvbHVtblN0eWxlcz0oMCxyLmFzc2lnbikoe30sbCxhLHMpfWVsc2V7dmFyIHU9W3QsZSxuXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0W2ldfHx7fX0pKTtvW2ldPSgwLHIuYXNzaWduKSh7fSx1WzBdLHVbMV0sdVsyXSl9fSxsPTAsYT1PYmplY3Qua2V5cyhvKTtsPGEubGVuZ3RoO2wrKyl7aShhW2xdKX1yZXR1cm4gb30odSxzLGUpLGY9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgbz17ZGlkUGFyc2VDZWxsOltdLHdpbGxEcmF3Q2VsbDpbXSxkaWREcmF3Q2VsbDpbXSx3aWxsRHJhd1BhZ2U6W10sZGlkRHJhd1BhZ2U6W119LHI9MCxpPVt0LGUsbl07cjxpLmxlbmd0aDtyKyspe3ZhciBsPWlbcl07bC5kaWRQYXJzZUNlbGwmJm8uZGlkUGFyc2VDZWxsLnB1c2gobC5kaWRQYXJzZUNlbGwpLGwud2lsbERyYXdDZWxsJiZvLndpbGxEcmF3Q2VsbC5wdXNoKGwud2lsbERyYXdDZWxsKSxsLmRpZERyYXdDZWxsJiZvLmRpZERyYXdDZWxsLnB1c2gobC5kaWREcmF3Q2VsbCksbC53aWxsRHJhd1BhZ2UmJm8ud2lsbERyYXdQYWdlLnB1c2gobC53aWxsRHJhd1BhZ2UpLGwuZGlkRHJhd1BhZ2UmJm8uZGlkRHJhd1BhZ2UucHVzaChsLmRpZERyYXdQYWdlKX1yZXR1cm4gb30odSxzLGUpLGc9ZnVuY3Rpb24odCxlKXt2YXIgbixvLHIsbCxhLHMsdSxkLGgsYyxmLGcscCx5LHY9KDAsaS5wYXJzZVNwYWNpbmcpKGUubWFyZ2luLDQwL3Quc2NhbGVGYWN0b3IoKSksbT1udWxsIT09KG49ZnVuY3Rpb24odCxlKXt2YXIgbj10LmdldExhc3RBdXRvVGFibGUoKSxvPXQuc2NhbGVGYWN0b3IoKSxyPXQucGFnZU51bWJlcigpLGk9ITE7aWYobiYmbi5zdGFydFBhZ2VOdW1iZXIpe2k9bi5zdGFydFBhZ2VOdW1iZXIrbi5wYWdlTnVtYmVyLTE9PT1yfWlmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZTtpZigobnVsbD09ZXx8ITE9PT1lKSYmaSYmbnVsbCE9KG51bGw9PW4\/dm9pZCAwOm4uZmluYWxZKSlyZXR1cm4gbi5maW5hbFkrMjAvbztyZXR1cm4gbnVsbH0odCxlLnN0YXJ0WSkpJiZ2b2lkIDAhPT1uP246di50b3A7cD0hMD09PWUuc2hvd0Zvb3Q\/ImV2ZXJ5UGFnZSI6ITE9PT1lLnNob3dGb290PyJuZXZlciI6bnVsbCE9PShvPWUuc2hvd0Zvb3QpJiZ2b2lkIDAhPT1vP286ImV2ZXJ5UGFnZSI7eT0hMD09PWUuc2hvd0hlYWQ\/ImV2ZXJ5UGFnZSI6ITE9PT1lLnNob3dIZWFkPyJuZXZlciI6bnVsbCE9PShyPWUuc2hvd0hlYWQpJiZ2b2lkIDAhPT1yP3I6ImV2ZXJ5UGFnZSI7dmFyIGI9bnVsbCE9PShsPWUudXNlQ3NzKSYmdm9pZCAwIT09bCYmbCx3PWUudGhlbWV8fChiPyJwbGFpbiI6InN0cmlwZWQiKSxQPSEhZS5ob3Jpem9udGFsUGFnZUJyZWFrLFM9bnVsbCE9PShhPWUuaG9yaXpvbnRhbFBhZ2VCcmVha1JlcGVhdCkmJnZvaWQgMCE9PWE\/YTpudWxsO3JldHVybntpbmNsdWRlSGlkZGVuSHRtbDpudWxsIT09KHM9ZS5pbmNsdWRlSGlkZGVuSHRtbCkmJnZvaWQgMCE9PXMmJnMsdXNlQ3NzOmIsdGhlbWU6dyxzdGFydFk6bSxtYXJnaW46dixwYWdlQnJlYWs6bnVsbCE9PSh1PWUucGFnZUJyZWFrKSYmdm9pZCAwIT09dT91OiJhdXRvIixyb3dQYWdlQnJlYWs6bnVsbCE9PShkPWUucm93UGFnZUJyZWFrKSYmdm9pZCAwIT09ZD9kOiJhdXRvIix0YWJsZVdpZHRoOm51bGwhPT0oaD1lLnRhYmxlV2lkdGgpJiZ2b2lkIDAhPT1oP2g6ImF1dG8iLHNob3dIZWFkOnksc2hvd0Zvb3Q6cCx0YWJsZUxpbmVXaWR0aDpudWxsIT09KGM9ZS50YWJsZUxpbmVXaWR0aCkmJnZvaWQgMCE9PWM\/YzowLHRhYmxlTGluZUNvbG9yOm51bGwhPT0oZj1lLnRhYmxlTGluZUNvbG9yKSYmdm9pZCAwIT09Zj9mOjIwMCxob3Jpem9udGFsUGFnZUJyZWFrOlAsaG9yaXpvbnRhbFBhZ2VCcmVha1JlcGVhdDpTLGhvcml6b250YWxQYWdlQnJlYWtCZWhhdmlvdXI6bnVsbCE9PShnPWUuaG9yaXpvbnRhbFBhZ2VCcmVha0JlaGF2aW91cikmJnZvaWQgMCE9PWc\/ZzoiYWZ0ZXJBbGxSb3dzIn19KG4saCkscD1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZS5oZWFkfHxbXSxpPWUuYm9keXx8W10sbD1lLmZvb3R8fFtdO2lmKGUuaHRtbCl7dmFyIGE9ZS5pbmNsdWRlSGlkZGVuSHRtbDtpZihuKXt2YXIgcz0oMCxvLnBhcnNlSHRtbCkodCxlLmh0bWwsbixhLGUudXNlQ3NzKXx8e307cj1zLmhlYWR8fHIsaT1zLmJvZHl8fHIsbD1zLmZvb3R8fHJ9ZWxzZSBjb25zb2xlLmVycm9yKCJDYW5ub3QgcGFyc2UgaHRtbCBpbiBub24gYnJvd3NlciBlbnZpcm9ubWVudCIpfXZhciB1PWUuY29sdW1uc3x8ZnVuY3Rpb24odCxlLG4pe3ZhciBvPXRbMF18fGVbMF18fG5bMF18fFtdLHI9W107cmV0dXJuIE9iamVjdC5rZXlzKG8pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIl9lbGVtZW50IiE9PXR9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGUsbj0xOyJvYmplY3QiIT10eXBlb2YoZT1BcnJheS5pc0FycmF5KG8pP29bcGFyc2VJbnQodCldOm9bdF0pfHxBcnJheS5pc0FycmF5KGUpfHwobj0obnVsbD09ZT92b2lkIDA6ZS5jb2xTcGFuKXx8MSk7Zm9yKHZhciBpPTA7aTxuO2krKyl7dmFyIGw9e2RhdGFLZXk6QXJyYXkuaXNBcnJheShvKT9yLmxlbmd0aDp0KyhpPjA\/Il8iLmNvbmNhdChpKToiIil9O3IucHVzaChsKX19KSkscn0ocixpLGwpO3JldHVybntjb2x1bW5zOnUsaGVhZDpyLGJvZHk6aSxmb290Omx9fShuLGgsZCk7cmV0dXJue2lkOmUudGFibGVJZCxjb250ZW50OnAsaG9va3M6ZixzdHlsZXM6YyxzZXR0aW5nczpnfX19LDc5MjpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7dC5yb3dIZWlnaHQ\/KGNvbnNvbGUuZXJyb3IoIlVzZSBvZiBkZXByZWNhdGVkIHN0eWxlIHJvd0hlaWdodC4gSXQgaXMgcmVuYW1lZCB0byBtaW5DZWxsSGVpZ2h0LiIpLHQubWluQ2VsbEhlaWdodHx8KHQubWluQ2VsbEhlaWdodD10LnJvd0hlaWdodCkpOnQuY29sdW1uV2lkdGgmJihjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBzdHlsZSBjb2x1bW5XaWR0aC4gSXQgaXMgcmVuYW1lZCB0byBjZWxsV2lkdGguIiksdC5jZWxsV2lkdGh8fCh0LmNlbGxXaWR0aD10LmNvbHVtbldpZHRoKSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZGVmYXVsdD1mdW5jdGlvbih0LGUsbyxyKXtmb3IodmFyIGk9ZnVuY3Rpb24oZSl7ZSYmIm9iamVjdCIhPXR5cGVvZiBlJiZjb25zb2xlLmVycm9yKCJUaGUgb3B0aW9ucyBwYXJhbWV0ZXIgc2hvdWxkIGJlIG9mIHR5cGUgb2JqZWN0LCBpczogIit0eXBlb2YgZSksdm9pZCAwIT09ZS5leHRlbmRXaWR0aCYmKGUudGFibGVXaWR0aD1lLmV4dGVuZFdpZHRoPyJhdXRvIjoid3JhcCIsY29uc29sZS5lcnJvcigiVXNlIG9mIGRlcHJlY2F0ZWQgb3B0aW9uOiBleHRlbmRXaWR0aCwgdXNlIHRhYmxlV2lkdGggaW5zdGVhZC4iKSksdm9pZCAwIT09ZS5tYXJnaW5zJiYodm9pZCAwPT09ZS5tYXJnaW4mJihlLm1hcmdpbj1lLm1hcmdpbnMpLGNvbnNvbGUuZXJyb3IoIlVzZSBvZiBkZXByZWNhdGVkIG9wdGlvbjogbWFyZ2lucywgdXNlIG1hcmdpbiBpbnN0ZWFkLiIpKSxlLnN0YXJ0WSYmIm51bWJlciIhPXR5cGVvZiBlLnN0YXJ0WSYmKGNvbnNvbGUuZXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHN0YXJ0WSBvcHRpb24iLGUuc3RhcnRZKSxkZWxldGUgZS5zdGFydFkpLCFlLmRpZERyYXdQYWdlJiYoZS5hZnRlclBhZ2VDb250ZW50fHxlLmJlZm9yZVBhZ2VDb250ZW50fHxlLmFmdGVyUGFnZUFkZCkmJihjb25zb2xlLmVycm9yKCJUaGUgYWZ0ZXJQYWdlQ29udGVudCwgYmVmb3JlUGFnZUNvbnRlbnQgYW5kIGFmdGVyUGFnZUFkZCBob29rcyBhcmUgZGVwcmVjYXRlZC4gVXNlIGRpZERyYXdQYWdlIGluc3RlYWQiKSxlLmRpZERyYXdQYWdlPWZ1bmN0aW9uKG4pe3QuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKSxlLmJlZm9yZVBhZ2VDb250ZW50JiZlLmJlZm9yZVBhZ2VDb250ZW50KG4pLHQuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKSxlLmFmdGVyUGFnZUNvbnRlbnQmJmUuYWZ0ZXJQYWdlQ29udGVudChuKSx0LmFwcGx5U3R5bGVzKHQudXNlclN0eWxlcyksZS5hZnRlclBhZ2VBZGQmJm4ucGFnZU51bWJlcj4xJiZuLmFmdGVyUGFnZUFkZChuKSx0LmFwcGx5U3R5bGVzKHQudXNlclN0eWxlcyl9KSxbImNyZWF0ZWRIZWFkZXJDZWxsIiwiZHJhd0hlYWRlclJvdyIsImRyYXdSb3ciLCJkcmF3SGVhZGVyQ2VsbCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF0mJmNvbnNvbGUuZXJyb3IoJ1RoZSAiJy5jb25jYXQodCwnIiBob29rIGhhcyBjaGFuZ2VkIGluIHZlcnNpb24gMy4wLCBjaGVjayB0aGUgY2hhbmdlbG9nIGZvciBob3cgdG8gbWlncmF0ZS4nKSl9KSksW1sic2hvd0Zvb3QiLCJzaG93Rm9vdGVyIl0sWyJzaG93SGVhZCIsInNob3dIZWFkZXIiXSxbImRpZERyYXdQYWdlIiwiYWRkUGFnZUNvbnRlbnQiXSxbImRpZFBhcnNlQ2VsbCIsImNyZWF0ZWRDZWxsIl0sWyJoZWFkU3R5bGVzIiwiaGVhZGVyU3R5bGVzIl1dLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXRbMF0sbz10WzFdO2Vbb10mJihjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBvcHRpb24gIi5jb25jYXQobywiLiBVc2UgIikuY29uY2F0KG4sIiBpbnN0ZWFkIikpLGVbbl09ZVtvXSl9KSksW1sicGFkZGluZyIsImNlbGxQYWRkaW5nIl0sWyJsaW5lSGVpZ2h0Iiwicm93SGVpZ2h0Il0sImZvbnRTaXplIiwib3ZlcmZsb3ciXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIHQ\/dDp0WzBdLG89InN0cmluZyI9PXR5cGVvZiB0P3Q6dFsxXTt2b2lkIDAhPT1lW25dJiYodm9pZCAwPT09ZS5zdHlsZXNbb10mJihlLnN0eWxlc1tvXT1lW25dKSxjb25zb2xlLmVycm9yKCJVc2Ugb2YgZGVwcmVjYXRlZCBvcHRpb246ICIrbisiLCB1c2UgdGhlIHN0eWxlICIrbysiIGluc3RlYWQuIikpfSkpO2Zvcih2YXIgbz0wLHI9WyJzdHlsZXMiLCJib2R5U3R5bGVzIiwiaGVhZFN0eWxlcyIsImZvb3RTdHlsZXMiXTtvPHIubGVuZ3RoO28rKyl7bihlW3Jbb11dfHx7fSl9Zm9yKHZhciBpPWUuY29sdW1uU3R5bGVzfHx7fSxsPTAsYT1PYmplY3Qua2V5cyhpKTtsPGEubGVuZ3RoO2wrKyl7bihpW2FbbF1dfHx7fSl9fSxsPTAsYT1bZSxvLHJdO2w8YS5sZW5ndGg7bCsrKXtpKGFbbF0pfX19LDI2MDpmdW5jdGlvbih0LGUsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuQ29sdW1uPWUuQ2VsbD1lLlJvdz1lLlRhYmxlPXZvaWQgMDt2YXIgbz1uKDc5Nikscj1uKDE3MiksaT1uKDQyMCksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnBhZ2VOdW1iZXI9MSx0aGlzLnBhZ2VDb3VudD0xLHRoaXMuaWQ9dC5pZCx0aGlzLnNldHRpbmdzPXQuc2V0dGluZ3MsdGhpcy5zdHlsZXM9dC5zdHlsZXMsdGhpcy5ob29rcz10Lmhvb2tzLHRoaXMuY29sdW1ucz1lLmNvbHVtbnMsdGhpcy5oZWFkPWUuaGVhZCx0aGlzLmJvZHk9ZS5ib2R5LHRoaXMuZm9vdD1lLmZvb3R9cmV0dXJuIHQucHJvdG90eXBlLmdldEhlYWRIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGVhZC5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5nZXRNYXhDZWxsSGVpZ2h0KHQpfSksMCl9LHQucHJvdG90eXBlLmdldEZvb3RIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZm9vdC5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5nZXRNYXhDZWxsSGVpZ2h0KHQpfSksMCl9LHQucHJvdG90eXBlLmFsbFJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmNvbmNhdCh0aGlzLmJvZHkpLmNvbmNhdCh0aGlzLmZvb3QpfSx0LnByb3RvdHlwZS5jYWxsQ2VsbEhvb2tzPWZ1bmN0aW9uKHQsZSxuLG8saSxsKXtmb3IodmFyIGE9MCxzPWU7YTxzLmxlbmd0aDthKyspe3ZhciB1PSExPT09KDAsc1thXSkobmV3IHIuQ2VsbEhvb2tEYXRhKHQsdGhpcyxuLG8saSxsKSk7aWYobi50ZXh0PUFycmF5LmlzQXJyYXkobi50ZXh0KT9uLnRleHQ6W24udGV4dF0sdSlyZXR1cm4hMX1yZXR1cm4hMH0sdC5wcm90b3R5cGUuY2FsbEVuZFBhZ2VIb29rcz1mdW5jdGlvbih0LGUpe3QuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKTtmb3IodmFyIG49MCxvPXRoaXMuaG9va3MuZGlkRHJhd1BhZ2U7bjxvLmxlbmd0aDtuKyspeygwLG9bbl0pKG5ldyByLkhvb2tEYXRhKHQsdGhpcyxlKSl9fSx0LnByb3RvdHlwZS5jYWxsV2lsbERyYXdQYWdlSG9va3M9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MCxvPXRoaXMuaG9va3Mud2lsbERyYXdQYWdlO248by5sZW5ndGg7bisrKXsoMCxvW25dKShuZXcgci5Ib29rRGF0YSh0LHRoaXMsZSkpfX0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpcmV0dXJuIHRoaXMuc2V0dGluZ3MudGFibGVXaWR0aDtpZigid3JhcCI9PT10aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpcmV0dXJuIHRoaXMuY29sdW1ucy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS53cmFwcGVkV2lkdGh9KSwwKTt2YXIgZT10aGlzLnNldHRpbmdzLm1hcmdpbjtyZXR1cm4gdC1lLmxlZnQtZS5yaWdodH0sdH0oKTtlLlRhYmxlPWw7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIsaSl7dm9pZCAwPT09aSYmKGk9ITEpLHRoaXMuaGVpZ2h0PTAsdGhpcy5yYXc9dCx0IGluc3RhbmNlb2Ygby5IdG1sUm93SW5wdXQmJih0aGlzLnJhdz10Ll9lbGVtZW50LHRoaXMuZWxlbWVudD10Ll9lbGVtZW50KSx0aGlzLmluZGV4PWUsdGhpcy5zZWN0aW9uPW4sdGhpcy5jZWxscz1yLHRoaXMuc3BhbnNNdWx0aXBsZVBhZ2VzPWl9cmV0dXJuIHQucHJvdG90eXBlLmdldE1heENlbGxIZWlnaHQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7dmFyIG87cmV0dXJuIE1hdGgubWF4KHQsKG51bGw9PT0obz1lLmNlbGxzW24uaW5kZXhdKXx8dm9pZCAwPT09bz92b2lkIDA6by5oZWlnaHQpfHwwKX0pLDApfSx0LnByb3RvdHlwZS5oYXNSb3dTcGFuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgbj1lLmNlbGxzW3QuaW5kZXhdO3JldHVybiEhbiYmbi5yb3dTcGFuPjF9KSkubGVuZ3RoPjB9LHQucHJvdG90eXBlLmNhbkVudGlyZVJvd0ZpdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldE1heENlbGxIZWlnaHQoZSk8PXR9LHQucHJvdG90eXBlLmdldE1pbmltdW1Sb3dIZWlnaHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxvKXt2YXIgcj1uLmNlbGxzW28uaW5kZXhdO2lmKCFyKXJldHVybiAwO3ZhciBpPWUuZ2V0TGluZUhlaWdodChyLnN0eWxlcy5mb250U2l6ZSksbD1yLnBhZGRpbmcoInZlcnRpY2FsIikraTtyZXR1cm4gbD50P2w6dH0pLDApfSx0fSgpO2UuUm93PWE7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2YXIgbyxyO3RoaXMuY29udGVudEhlaWdodD0wLHRoaXMuY29udGVudFdpZHRoPTAsdGhpcy53cmFwcGVkV2lkdGg9MCx0aGlzLm1pblJlYWRhYmxlV2lkdGg9MCx0aGlzLm1pbldpZHRoPTAsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy54PTAsdGhpcy55PTAsdGhpcy5zdHlsZXM9ZSx0aGlzLnNlY3Rpb249bix0aGlzLnJhdz10O3ZhciBpPXQ7bnVsbD09dHx8Im9iamVjdCIhPXR5cGVvZiB0fHxBcnJheS5pc0FycmF5KHQpPyh0aGlzLnJvd1NwYW49MSx0aGlzLmNvbFNwYW49MSk6KHRoaXMucm93U3Bhbj10LnJvd1NwYW58fDEsdGhpcy5jb2xTcGFuPXQuY29sU3Bhbnx8MSxpPW51bGwhPT0ocj1udWxsIT09KG89dC5jb250ZW50KSYmdm9pZCAwIT09bz9vOnQudGl0bGUpJiZ2b2lkIDAhPT1yP3I6dCx0Ll9lbGVtZW50JiYodGhpcy5yYXc9dC5fZWxlbWVudCkpO3ZhciBsPW51bGwhPWk\/IiIraToiIjt0aGlzLnRleHQ9bC5zcGxpdCgvXHJcbnxccnxcbi9nKX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0VGV4dFBvcz1mdW5jdGlvbigpe3ZhciB0LGU7aWYoInRvcCI9PT10aGlzLnN0eWxlcy52YWxpZ24pdD10aGlzLnkrdGhpcy5wYWRkaW5nKCJ0b3AiKTtlbHNlIGlmKCJib3R0b20iPT09dGhpcy5zdHlsZXMudmFsaWduKXQ9dGhpcy55K3RoaXMuaGVpZ2h0LXRoaXMucGFkZGluZygiYm90dG9tIik7ZWxzZXt2YXIgbj10aGlzLmhlaWdodC10aGlzLnBhZGRpbmcoInZlcnRpY2FsIik7dD10aGlzLnkrbi8yK3RoaXMucGFkZGluZygidG9wIil9aWYoInJpZ2h0Ij09PXRoaXMuc3R5bGVzLmhhbGlnbillPXRoaXMueCt0aGlzLndpZHRoLXRoaXMucGFkZGluZygicmlnaHQiKTtlbHNlIGlmKCJjZW50ZXIiPT09dGhpcy5zdHlsZXMuaGFsaWduKXt2YXIgbz10aGlzLndpZHRoLXRoaXMucGFkZGluZygiaG9yaXpvbnRhbCIpO2U9dGhpcy54K28vMit0aGlzLnBhZGRpbmcoImxlZnQiKX1lbHNlIGU9dGhpcy54K3RoaXMucGFkZGluZygibGVmdCIpO3JldHVybnt4OmUseTp0fX0sdC5wcm90b3R5cGUuZ2V0Q29udGVudEhlaWdodD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTEuMTUpO3ZhciBuPShBcnJheS5pc0FycmF5KHRoaXMudGV4dCk\/dGhpcy50ZXh0Lmxlbmd0aDoxKSoodGhpcy5zdHlsZXMuZm9udFNpemUvdCplKSt0aGlzLnBhZGRpbmcoInZlcnRpY2FsIik7cmV0dXJuIE1hdGgubWF4KG4sdGhpcy5zdHlsZXMubWluQ2VsbEhlaWdodCl9LHQucHJvdG90eXBlLnBhZGRpbmc9ZnVuY3Rpb24odCl7dmFyIGU9KDAsaS5wYXJzZVNwYWNpbmcpKHRoaXMuc3R5bGVzLmNlbGxQYWRkaW5nLDApO3JldHVybiJ2ZXJ0aWNhbCI9PT10P2UudG9wK2UuYm90dG9tOiJob3Jpem9udGFsIj09PXQ\/ZS5sZWZ0K2UucmlnaHQ6ZVt0XX0sdH0oKTtlLkNlbGw9czt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMud3JhcHBlZFdpZHRoPTAsdGhpcy5taW5SZWFkYWJsZVdpZHRoPTAsdGhpcy5taW5XaWR0aD0wLHRoaXMud2lkdGg9MCx0aGlzLmRhdGFLZXk9dCx0aGlzLnJhdz1lLHRoaXMuaW5kZXg9bn1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0TWF4Q3VzdG9tQ2VsbFdpZHRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49MCxvPXQuYWxsUm93cygpO248by5sZW5ndGg7bisrKXt2YXIgcj1vW25dLmNlbGxzW3RoaXMuaW5kZXhdO3ImJiJudW1iZXIiPT10eXBlb2Ygci5zdHlsZXMuY2VsbFdpZHRoJiYoZT1NYXRoLm1heChlLHIuc3R5bGVzLmNlbGxXaWR0aCkpfXJldHVybiBlfSx0fSgpO2UuQ29sdW1uPXV9LDM1NjpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmFzc2lnbj12b2lkIDAsZS5hc3NpZ249ZnVuY3Rpb24odCxlLG4sbyxyKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgaT1PYmplY3QodCksbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspe3ZhciBhPWFyZ3VtZW50c1tsXTtpZihudWxsIT1hKWZvcih2YXIgcyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHMpJiYoaVtzXT1hW3NdKX1yZXR1cm4gaX19LDk3MjpmdW5jdGlvbih0LGUsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuY3JlYXRlVGFibGU9dm9pZCAwO3ZhciBvPW4oNzQ0KSxyPW4oMjYwKSxpPW4oMzI0KSxsPW4oNzk2KSxhPW4oMzU2KTtmdW5jdGlvbiBzKHQsZSxuLG8saSxsKXt2YXIgYT17fTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUscyl7Zm9yKHZhciB1PTAsaD17fSxjPTAsZj0wLGc9MCxwPW47ZzxwLmxlbmd0aDtnKyspe3ZhciB5PXBbZ107aWYobnVsbD09YVt5LmluZGV4XXx8MD09PWFbeS5pbmRleF0ubGVmdClpZigwPT09Zil7dmFyIHY9dm9pZCAwLG09e307Im9iamVjdCIhPXR5cGVvZih2PUFycmF5LmlzQXJyYXkoZSk\/ZVt5LmluZGV4LWMtdV06ZVt5LmRhdGFLZXldKXx8QXJyYXkuaXNBcnJheSh2KXx8KG09KG51bGw9PXY\/dm9pZCAwOnYuc3R5bGVzKXx8e30pO3ZhciBiPWQodCx5LHMsaSxvLGwsbSksdz1uZXcgci5DZWxsKHYsYix0KTtoW3kuZGF0YUtleV09dyxoW3kuaW5kZXhdPXcsZj13LmNvbFNwYW4tMSxhW3kuaW5kZXhdPXtsZWZ0Oncucm93U3Bhbi0xLHRpbWVzOmZ9fWVsc2UgZi0tLGMrKztlbHNlIGFbeS5pbmRleF0ubGVmdC0tLGY9YVt5LmluZGV4XS50aW1lcyx1Kyt9cmV0dXJuIG5ldyByLlJvdyhlLHMsdCxoKX0pKX1mdW5jdGlvbiB1KHQsZSl7dmFyIG49e307cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYobnVsbCE9dC5yYXcpe3ZhciBvPWZ1bmN0aW9uKHQsZSl7aWYoImhlYWQiPT09dCl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXJldHVybiBlLmhlYWRlcnx8ZS50aXRsZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZX1lbHNlIGlmKCJmb290Ij09PXQmJiJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4gZS5mb290ZXI7cmV0dXJuIG51bGx9KGUsdC5yYXcpO251bGwhPW8mJihuW3QuZGF0YUtleV09byl9fSkpLE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wP246bnVsbH1mdW5jdGlvbiBkKHQsZSxuLG8scixpLHMpe3ZhciB1LGQ9KDAsbC5nZXRUaGVtZSkobyk7ImhlYWQiPT09dD91PXIuaGVhZFN0eWxlczoiYm9keSI9PT10P3U9ci5ib2R5U3R5bGVzOiJmb290Ij09PXQmJih1PXIuZm9vdFN0eWxlcyk7dmFyIGg9KDAsYS5hc3NpZ24pKHt9LGQudGFibGUsZFt0XSxyLnN0eWxlcyx1KSxjPXIuY29sdW1uU3R5bGVzW2UuZGF0YUtleV18fHIuY29sdW1uU3R5bGVzW2UuaW5kZXhdfHx7fSxmPSJib2R5Ij09PXQ\/Yzp7fSxnPSJib2R5Ij09PXQmJm4lMj09MD8oMCxhLmFzc2lnbikoe30sZC5hbHRlcm5hdGVSb3csci5hbHRlcm5hdGVSb3dTdHlsZXMpOnt9LHA9KDAsbC5kZWZhdWx0U3R5bGVzKShpKSx5PSgwLGEuYXNzaWduKSh7fSxwLGgsZyxmKTtyZXR1cm4oMCxhLmFzc2lnbikoeSxzKX1lLmNyZWF0ZVRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IG8uRG9jSGFuZGxlcih0KSxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5jb250ZW50LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0LGUpe3ZhciBuLG8saTtyZXR1cm4gaT0ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT0obz1udWxsIT09KG49dC5kYXRhS2V5KSYmdm9pZCAwIT09bj9uOnQua2V5KSYmdm9pZCAwIT09bz9vOmUsbmV3IHIuQ29sdW1uKGksdCxlKX0pKX0obi5jb2x1bW5zKTtpZigwPT09bi5oZWFkLmxlbmd0aCl7KGk9dShvLCJoZWFkIikpJiZuLmhlYWQucHVzaChpKX1pZigwPT09bi5mb290Lmxlbmd0aCl7dmFyIGk7KGk9dShvLCJmb290IikpJiZuLmZvb3QucHVzaChpKX12YXIgbD10LnNldHRpbmdzLnRoZW1lLGE9dC5zdHlsZXM7cmV0dXJue2NvbHVtbnM6byxoZWFkOnMoImhlYWQiLG4uaGVhZCxvLGEsbCxlKSxib2R5OnMoImJvZHkiLG4uYm9keSxvLGEsbCxlKSxmb290OnMoImZvb3QiLG4uZm9vdCxvLGEsbCxlKX19KGUsbi5zY2FsZUZhY3RvcigpKSxhPW5ldyByLlRhYmxlKGUsbCk7cmV0dXJuKDAsaS5jYWxjdWxhdGVXaWR0aHMpKG4sYSksbi5hcHBseVN0eWxlcyhuLnVzZXJTdHlsZXMpLGF9fSw2NjQ6ZnVuY3Rpb24odCxlLG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmFkZFBhZ2U9ZS5kcmF3VGFibGU9dm9pZCAwO3ZhciBvPW4oNDIwKSxyPW4oMjYwKSxpPW4oNzQ0KSxsPW4oMzU2KSxhPW4oMTM2KSxzPW4oMjI0KTtmdW5jdGlvbiB1KHQsZSxuLG8pe3ZhciByPWUuc2V0dGluZ3M7dC5hcHBseVN0eWxlcyh0LnVzZXJTdHlsZXMpLCJmaXJzdFBhZ2UiIT09ci5zaG93SGVhZCYmImV2ZXJ5UGFnZSIhPT1yLnNob3dIZWFkfHxlLmhlYWQuZm9yRWFjaCgoZnVuY3Rpb24ocil7cmV0dXJuIGcodCxlLHIsbixvKX0pKX1mdW5jdGlvbiBkKHQsZSxuLG8scixpKXt0LmFwcGx5U3R5bGVzKHQudXNlclN0eWxlcyksaT1udWxsIT1pP2k6ZS5ib2R5Lmxlbmd0aDt2YXIgbD1NYXRoLm1pbihuK2ksZS5ib2R5Lmxlbmd0aCksYT0tMTtyZXR1cm4gZS5ib2R5LnNsaWNlKG4sbCkuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt2YXIgcz1uK2w9PT1lLmJvZHkubGVuZ3RoLTEsdT15KHQsZSxzLG8pO2kuY2FuRW50aXJlUm93Rml0KHUscikmJihnKHQsZSxpLG8sciksYT1uK2wpfSkpLGF9ZnVuY3Rpb24gaCh0LGUsbixvKXt2YXIgcj1lLnNldHRpbmdzO3QuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKSwibGFzdFBhZ2UiIT09ci5zaG93Rm9vdCYmImV2ZXJ5UGFnZSIhPT1yLnNob3dGb290fHxlLmZvb3QuZm9yRWFjaCgoZnVuY3Rpb24ocil7cmV0dXJuIGcodCxlLHIsbixvKX0pKX1mdW5jdGlvbiBjKHQsZSxuKXt2YXIgbz1uLmdldExpbmVIZWlnaHQodC5zdHlsZXMuZm9udFNpemUpLHI9dC5wYWRkaW5nKCJ2ZXJ0aWNhbCIpLGk9TWF0aC5mbG9vcigoZS1yKS9vKTtyZXR1cm4gTWF0aC5tYXgoMCxpKX1mdW5jdGlvbiBmKHQsZSxuLG8saSxhLHMpe3ZhciB1PXkodCxlLG8sYSk7aWYobi5jYW5FbnRpcmVSb3dGaXQodSxzKSlnKHQsZSxuLGEscyk7ZWxzZSBpZihmdW5jdGlvbih0LGUsbixvKXt2YXIgcj10LnBhZ2VTaXplKCkuaGVpZ2h0LGk9by5zZXR0aW5ncy5tYXJnaW4sbD1yLShpLnRvcCtpLmJvdHRvbSk7ImJvZHkiPT09ZS5zZWN0aW9uJiYobC09by5nZXRIZWFkSGVpZ2h0KG8uY29sdW1ucykrby5nZXRGb290SGVpZ2h0KG8uY29sdW1ucykpO3ZhciBhPWUuZ2V0TWluaW11bVJvd0hlaWdodChvLmNvbHVtbnMsdCkscz1hPG47aWYoYT5sKXJldHVybiBjb25zb2xlLmVycm9yKCJXaWxsIG5vdCBiZSBhYmxlIHRvIHByaW50IHJvdyAiLmNvbmNhdChlLmluZGV4LCIgY29ycmVjdGx5IHNpbmNlIGl0J3MgbWluaW11bSBoZWlnaHQgaXMgbGFyZ2VyIHRoYW4gcGFnZSBoZWlnaHQiKSksITA7aWYoIXMpcmV0dXJuITE7dmFyIHU9ZS5oYXNSb3dTcGFuKG8uY29sdW1ucyk7cmV0dXJuIGUuZ2V0TWF4Q2VsbEhlaWdodChvLmNvbHVtbnMpPmw\/KHUmJmNvbnNvbGUuZXJyb3IoIlRoZSBjb250ZW50IG9mIHJvdyAiLmNvbmNhdChlLmluZGV4LCIgd2lsbCBub3QgYmUgZHJhd24gY29ycmVjdGx5IHNpbmNlIGRyYXdpbmcgcm93cyB3aXRoIGEgaGVpZ2h0IGxhcmdlciB0aGFuIHRoZSBwYWdlIGhlaWdodCBhbmQgaGFzIGNlbGxzIHdpdGggcm93c3BhbnMgaXMgbm90IHN1cHBvcnRlZC4iKSksITApOiF1JiYiYXZvaWQiIT09by5zZXR0aW5ncy5yb3dQYWdlQnJlYWt9KHQsbix1LGUpKXt2YXIgZD1mdW5jdGlvbih0LGUsbixvKXt2YXIgaT17fTt0LnNwYW5zTXVsdGlwbGVQYWdlcz0hMCx0LmhlaWdodD0wO2Zvcih2YXIgYT0wLHM9MCx1PW4uY29sdW1ucztzPHUubGVuZ3RoO3MrKyl7dmFyIGQ9dVtzXTtpZihiPXQuY2VsbHNbZC5pbmRleF0pe0FycmF5LmlzQXJyYXkoYi50ZXh0KXx8KGIudGV4dD1bYi50ZXh0XSk7dmFyIGg9bmV3IHIuQ2VsbChiLnJhdyxiLnN0eWxlcyxiLnNlY3Rpb24pOyhoPSgwLGwuYXNzaWduKShoLGIpKS50ZXh0PVtdO3ZhciBmPWMoYixlLG8pO2IudGV4dC5sZW5ndGg+ZiYmKGgudGV4dD1iLnRleHQuc3BsaWNlKGYsYi50ZXh0Lmxlbmd0aCkpO3ZhciBnPW8uc2NhbGVGYWN0b3IoKSxwPW8uZ2V0TGluZUhlaWdodEZhY3RvcigpO2IuY29udGVudEhlaWdodD1iLmdldENvbnRlbnRIZWlnaHQoZyxwKSxiLmNvbnRlbnRIZWlnaHQ+PWUmJihiLmNvbnRlbnRIZWlnaHQ9ZSxoLnN0eWxlcy5taW5DZWxsSGVpZ2h0LT1lKSxiLmNvbnRlbnRIZWlnaHQ+dC5oZWlnaHQmJih0LmhlaWdodD1iLmNvbnRlbnRIZWlnaHQpLGguY29udGVudEhlaWdodD1oLmdldENvbnRlbnRIZWlnaHQoZyxwKSxoLmNvbnRlbnRIZWlnaHQ+YSYmKGE9aC5jb250ZW50SGVpZ2h0KSxpW2QuaW5kZXhdPWh9fXZhciB5PW5ldyByLlJvdyh0LnJhdywtMSx0LnNlY3Rpb24saSwhMCk7eS5oZWlnaHQ9YTtmb3IodmFyIHY9MCxtPW4uY29sdW1uczt2PG0ubGVuZ3RoO3YrKyl7dmFyIGI7ZD1tW3ZdLChoPXkuY2VsbHNbZC5pbmRleF0pJiYoaC5oZWlnaHQ9eS5oZWlnaHQpLChiPXQuY2VsbHNbZC5pbmRleF0pJiYoYi5oZWlnaHQ9dC5oZWlnaHQpfXJldHVybiB5fShuLHUsZSx0KTtnKHQsZSxuLGEscyksdih0LGUsaSxhLHMpLGYodCxlLGQsbyxpLGEscyl9ZWxzZSB2KHQsZSxpLGEscyksZih0LGUsbixvLGksYSxzKX1mdW5jdGlvbiBnKHQsZSxuLG8scil7by54PWUuc2V0dGluZ3MubWFyZ2luLmxlZnQ7Zm9yKHZhciBpPTAsbD1yO2k8bC5sZW5ndGg7aSsrKXt2YXIgcz1sW2ldLHU9bi5jZWxsc1tzLmluZGV4XTtpZih1KWlmKHQuYXBwbHlTdHlsZXModS5zdHlsZXMpLHUueD1vLngsdS55PW8ueSwhMSE9PWUuY2FsbENlbGxIb29rcyh0LGUuaG9va3Mud2lsbERyYXdDZWxsLHUsbixzLG8pKXtwKHQsdSxvKTt2YXIgZD11LmdldFRleHRQb3MoKTsoMCxhLmRlZmF1bHQpKHUudGV4dCxkLngsZC55LHtoYWxpZ246dS5zdHlsZXMuaGFsaWduLHZhbGlnbjp1LnN0eWxlcy52YWxpZ24sbWF4V2lkdGg6TWF0aC5jZWlsKHUud2lkdGgtdS5wYWRkaW5nKCJsZWZ0IiktdS5wYWRkaW5nKCJyaWdodCIpKX0sdC5nZXREb2N1bWVudCgpKSxlLmNhbGxDZWxsSG9va3ModCxlLmhvb2tzLmRpZERyYXdDZWxsLHUsbixzLG8pLG8ueCs9cy53aWR0aH1lbHNlIG8ueCs9cy53aWR0aDtlbHNlIG8ueCs9cy53aWR0aH1vLnkrPW4uaGVpZ2h0fWZ1bmN0aW9uIHAodCxlLG4pe3ZhciByPWUuc3R5bGVzO2lmKHQuZ2V0RG9jdW1lbnQoKS5zZXRGaWxsQ29sb3IodC5nZXREb2N1bWVudCgpLmdldEZpbGxDb2xvcigpKSwibnVtYmVyIj09dHlwZW9mIHIubGluZVdpZHRoKXt2YXIgaT0oMCxvLmdldEZpbGxTdHlsZSkoci5saW5lV2lkdGgsci5maWxsQ29sb3IpO2kmJnQucmVjdChlLngsbi55LGUud2lkdGgsZS5oZWlnaHQsaSl9ZWxzZSJvYmplY3QiPT10eXBlb2Ygci5saW5lV2lkdGgmJihyLmZpbGxDb2xvciYmdC5yZWN0KGUueCxuLnksZS53aWR0aCxlLmhlaWdodCwiRiIpLGZ1bmN0aW9uKHQsZSxuLG8pe3ZhciByLGksbCxhO28udG9wJiYocj1uLngsaT1uLnksbD1uLngrZS53aWR0aCxhPW4ueSxvLnJpZ2h0JiYobCs9LjUqby5yaWdodCksby5sZWZ0JiYoci09LjUqby5sZWZ0KSxzKG8udG9wLHIsaSxsLGEpKTtvLmJvdHRvbSYmKHI9bi54LGk9bi55K2UuaGVpZ2h0LGw9bi54K2Uud2lkdGgsYT1uLnkrZS5oZWlnaHQsby5yaWdodCYmKGwrPS41Km8ucmlnaHQpLG8ubGVmdCYmKHItPS41Km8ubGVmdCkscyhvLmJvdHRvbSxyLGksbCxhKSk7by5sZWZ0JiYocj1uLngsaT1uLnksbD1uLngsYT1uLnkrZS5oZWlnaHQsby50b3AmJihpLT0uNSpvLnRvcCksby5ib3R0b20mJihhKz0uNSpvLmJvdHRvbSkscyhvLmxlZnQscixpLGwsYSkpO28ucmlnaHQmJihyPW4ueCtlLndpZHRoLGk9bi55LGw9bi54K2Uud2lkdGgsYT1uLnkrZS5oZWlnaHQsby50b3AmJihpLT0uNSpvLnRvcCksby5ib3R0b20mJihhKz0uNSpvLmJvdHRvbSkscyhvLnJpZ2h0LHIsaSxsLGEpKTtmdW5jdGlvbiBzKGUsbixvLHIsaSl7dC5nZXREb2N1bWVudCgpLnNldExpbmVXaWR0aChlKSx0LmdldERvY3VtZW50KCkubGluZShuLG8scixpLCJTIil9fSh0LGUsbixyLmxpbmVXaWR0aCkpfWZ1bmN0aW9uIHkodCxlLG4sbyl7dmFyIHI9ZS5zZXR0aW5ncy5tYXJnaW4uYm90dG9tLGk9ZS5zZXR0aW5ncy5zaG93Rm9vdDtyZXR1cm4oImV2ZXJ5UGFnZSI9PT1pfHwibGFzdFBhZ2UiPT09aSYmbikmJihyKz1lLmdldEZvb3RIZWlnaHQoZS5jb2x1bW5zKSksdC5wYWdlU2l6ZSgpLmhlaWdodC1vLnktcn1mdW5jdGlvbiB2KHQsZSxuLHIsaSxsKXt2b2lkIDA9PT1pJiYoaT1bXSksdm9pZCAwPT09bCYmKGw9ITEpLHQuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKSwiZXZlcnlQYWdlIiE9PWUuc2V0dGluZ3Muc2hvd0Zvb3R8fGx8fGUuZm9vdC5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZyh0LGUsbixyLGkpfSkpLGUuY2FsbEVuZFBhZ2VIb29rcyh0LHIpO3ZhciBhPWUuc2V0dGluZ3MubWFyZ2luOygwLG8uYWRkVGFibGVCb3JkZXIpKHQsZSxuLHIpLG0odCksZS5wYWdlTnVtYmVyKyssZS5wYWdlQ291bnQrKyxyLng9YS5sZWZ0LHIueT1hLnRvcCxuLnk9YS50b3AsZS5jYWxsV2lsbERyYXdQYWdlSG9va3ModCxyKSwiZXZlcnlQYWdlIj09PWUuc2V0dGluZ3Muc2hvd0hlYWQmJihlLmhlYWQuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGcodCxlLG4scixpKX0pKSx0LmFwcGx5U3R5bGVzKHQudXNlclN0eWxlcykpfWZ1bmN0aW9uIG0odCl7dmFyIGU9dC5wYWdlTnVtYmVyKCk7cmV0dXJuIHQuc2V0UGFnZShlKzEpLHQucGFnZU51bWJlcigpPT09ZSYmKHQuYWRkUGFnZSgpLCEwKX1lLmRyYXdUYWJsZT1mdW5jdGlvbih0LGUpe3ZhciBuPWUuc2V0dGluZ3Mscj1uLnN0YXJ0WSxhPW4ubWFyZ2luLGM9e3g6YS5sZWZ0LHk6cn0scD1lLmdldEhlYWRIZWlnaHQoZS5jb2x1bW5zKStlLmdldEZvb3RIZWlnaHQoZS5jb2x1bW5zKSx5PXIrYS5ib3R0b20rcDsiYXZvaWQiPT09bi5wYWdlQnJlYWsmJih5Kz1lLmJvZHkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuaGVpZ2h0fSksMCkpO3ZhciBiPW5ldyBpLkRvY0hhbmRsZXIodCk7KCJhbHdheXMiPT09bi5wYWdlQnJlYWt8fG51bGwhPW4uc3RhcnRZJiZ5PmIucGFnZVNpemUoKS5oZWlnaHQpJiYobShiKSxjLnk9YS50b3ApLGUuY2FsbFdpbGxEcmF3UGFnZUhvb2tzKGIsYyk7dmFyIHc9KDAsbC5hc3NpZ24pKHt9LGMpO2Uuc3RhcnRQYWdlTnVtYmVyPWIucGFnZU51bWJlcigpLG4uaG9yaXpvbnRhbFBhZ2VCcmVhaz9mdW5jdGlvbih0LGUsbixvKXt2YXIgcj0oMCxzLmNhbGN1bGF0ZUFsbENvbHVtbnNDYW5GaXRJblBhZ2UpKHQsZSksaT1lLnNldHRpbmdzO2lmKCJhZnRlckFsbFJvd3MiPT09aS5ob3Jpem9udGFsUGFnZUJyZWFrQmVoYXZpb3VyKXIuZm9yRWFjaCgoZnVuY3Rpb24ocixpKXt0LmFwcGx5U3R5bGVzKHQudXNlclN0eWxlcyksaT4wP3YodCxlLG4sbyxyLmNvbHVtbnMsITApOnUodCxlLG8sci5jb2x1bW5zKSxmdW5jdGlvbih0LGUsbixvLHIpe3QuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKSxlLmJvZHkuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt2YXIgYT1sPT09ZS5ib2R5Lmxlbmd0aC0xO2YodCxlLGksYSxuLG8scil9KSl9KHQsZSxuLG8sci5jb2x1bW5zKSxoKHQsZSxvLHIuY29sdW1ucyl9KSk7ZWxzZSBmb3IodmFyIGw9LTEsYT1yWzBdLGM9ZnVuY3Rpb24oKXt2YXIgaT1sO2lmKGEpe3QuYXBwbHlTdHlsZXModC51c2VyU3R5bGVzKTt2YXIgcz1hLmNvbHVtbnM7bD49MD92KHQsZSxuLG8scywhMCk6dSh0LGUsbyxzKSxpPWQodCxlLGwrMSxvLHMpLGgodCxlLG8scyl9dmFyIGM9aS1sO3Iuc2xpY2UoMSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dC5hcHBseVN0eWxlcyh0LnVzZXJTdHlsZXMpLHYodCxlLG4sbyxyLmNvbHVtbnMsITApLGQodCxlLGwrMSxvLHIuY29sdW1ucyxjKSxoKHQsZSxvLHIuY29sdW1ucyl9KSksbD1pfTtsPGUuYm9keS5sZW5ndGgtMTspYygpfShiLGUsdyxjKTooYi5hcHBseVN0eWxlcyhiLnVzZXJTdHlsZXMpLCJmaXJzdFBhZ2UiIT09bi5zaG93SGVhZCYmImV2ZXJ5UGFnZSIhPT1uLnNob3dIZWFkfHxlLmhlYWQuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGcoYixlLHQsYyxlLmNvbHVtbnMpfSkpLGIuYXBwbHlTdHlsZXMoYi51c2VyU3R5bGVzKSxlLmJvZHkuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXt2YXIgbz1uPT09ZS5ib2R5Lmxlbmd0aC0xO2YoYixlLHQsbyx3LGMsZS5jb2x1bW5zKX0pKSxiLmFwcGx5U3R5bGVzKGIudXNlclN0eWxlcyksImxhc3RQYWdlIiE9PW4uc2hvd0Zvb3QmJiJldmVyeVBhZ2UiIT09bi5zaG93Rm9vdHx8ZS5mb290LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBnKGIsZSx0LGMsZS5jb2x1bW5zKX0pKSksKDAsby5hZGRUYWJsZUJvcmRlcikoYixlLHcsYyksZS5jYWxsRW5kUGFnZUhvb2tzKGIsYyksZS5maW5hbFk9Yy55LHQubGFzdEF1dG9UYWJsZT1lLHQucHJldmlvdXNBdXRvVGFibGU9ZSx0LmF1dG9UYWJsZSYmKHQuYXV0b1RhYmxlLnByZXZpb3VzPWUpLGIuYXBwbHlTdHlsZXMoYi51c2VyU3R5bGVzKX0sZS5hZGRQYWdlPXZ9LDIyNDpmdW5jdGlvbih0LGUsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuY2FsY3VsYXRlQWxsQ29sdW1uc0NhbkZpdEluUGFnZT12b2lkIDA7dmFyIG89big0MjApO2Z1bmN0aW9uIHIodCxlLG4pe3ZhciByO3ZvaWQgMD09PW4mJihuPXt9KTt2YXIgaT0oMCxvLmdldFBhZ2VBdmFpbGFibGVXaWR0aCkodCxlKSxsPW5ldyBNYXAsYT1bXSxzPVtdLHU9W107ZS5zZXR0aW5ncy5ob3Jpem9udGFsUGFnZUJyZWFrUmVwZWF0LEFycmF5LmlzQXJyYXkoZS5zZXR0aW5ncy5ob3Jpem9udGFsUGFnZUJyZWFrUmVwZWF0KT91PWUuc2V0dGluZ3MuaG9yaXpvbnRhbFBhZ2VCcmVha1JlcGVhdDoic3RyaW5nIiE9dHlwZW9mIGUuc2V0dGluZ3MuaG9yaXpvbnRhbFBhZ2VCcmVha1JlcGVhdCYmIm51bWJlciIhPXR5cGVvZiBlLnNldHRpbmdzLmhvcml6b250YWxQYWdlQnJlYWtSZXBlYXR8fCh1PVtlLnNldHRpbmdzLmhvcml6b250YWxQYWdlQnJlYWtSZXBlYXRdKSx1LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuY29sdW1ucy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kYXRhS2V5PT09dHx8ZS5pbmRleD09PXR9KSk7biYmIWwuaGFzKG4uaW5kZXgpJiYobC5zZXQobi5pbmRleCwhMCksYS5wdXNoKG4uaW5kZXgpLHMucHVzaChlLmNvbHVtbnNbbi5pbmRleF0pLGktPW4ud3JhcHBlZFdpZHRoKX0pKTtmb3IodmFyIGQ9ITAsaD1udWxsIT09KHI9bnVsbD09bj92b2lkIDA6bi5zdGFydCkmJnZvaWQgMCE9PXI\/cjowO2g8ZS5jb2x1bW5zLmxlbmd0aDspaWYobC5oYXMoaCkpaCsrO2Vsc2V7dmFyIGM9ZS5jb2x1bW5zW2hdLndyYXBwZWRXaWR0aDtpZighKGR8fGk+PWMpKWJyZWFrO2Q9ITEsYS5wdXNoKGgpLHMucHVzaChlLmNvbHVtbnNbaF0pLGktPWMsaCsrfXJldHVybntjb2xJbmRleGVzOmEsY29sdW1uczpzLGxhc3RJbmRleDpoLTF9fWUuY2FsY3VsYXRlQWxsQ29sdW1uc0NhbkZpdEluUGFnZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bXSxvPTA7bzxlLmNvbHVtbnMubGVuZ3RoO28rKyl7dmFyIGk9cih0LGUse3N0YXJ0Om99KTtpLmNvbHVtbnMubGVuZ3RoJiYobi5wdXNoKGkpLG89aS5sYXN0SW5kZXgpfXJldHVybiBufX0sMzI0OmZ1bmN0aW9uKHQsZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5lbGxpcHNpemU9ZS5yZXNpemVDb2x1bW5zPWUuY2FsY3VsYXRlV2lkdGhzPXZvaWQgMDt2YXIgbz1uKDQyMCk7ZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBvPWUsaT10LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLndyYXBwZWRXaWR0aH0pLDApLGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGE9dFtsXSxzPW8qKGEud3JhcHBlZFdpZHRoL2kpLHU9YS53aWR0aCtzLGQ9bihhKSxoPXU8ZD9kOnU7ZS09aC1hLndpZHRoLGEud2lkdGg9aH1pZihlPU1hdGgucm91bmQoMWUxMCplKS8xZTEwKXt2YXIgYz10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIShlPDApfHx0LndpZHRoPm4odCl9KSk7Yy5sZW5ndGgmJihlPXIoYyxlLG4pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSxuLHIsaSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbD0xZTQqci5zY2FsZUZhY3RvcigpO2lmKGU9TWF0aC5jZWlsKGUqbCkvbCxlPj0oMCxvLmdldFN0cmluZ1dpZHRoKSh0LG4scikpcmV0dXJuIHQ7Zm9yKDtlPCgwLG8uZ2V0U3RyaW5nV2lkdGgpKHQraSxuLHIpJiYhKHQubGVuZ3RoPD0xKTspdD10LnN1YnN0cmluZygwLHQubGVuZ3RoLTEpO3JldHVybiB0LnRyaW0oKStpfSh0LGUsbixyLGkpfSkpfWUuY2FsY3VsYXRlV2lkdGhzPWZ1bmN0aW9uKHQsZSl7IWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zY2FsZUZhY3RvcigpLHI9ZS5zZXR0aW5ncy5ob3Jpem9udGFsUGFnZUJyZWFrLGk9KDAsby5nZXRQYWdlQXZhaWxhYmxlV2lkdGgpKHQsZSk7ZS5hbGxSb3dzKCkuZm9yRWFjaCgoZnVuY3Rpb24obCl7Zm9yKHZhciBhPTAscz1lLmNvbHVtbnM7YTxzLmxlbmd0aDthKyspe3ZhciB1PXNbYV0sZD1sLmNlbGxzW3UuaW5kZXhdO2lmKGQpe3ZhciBoPWUuaG9va3MuZGlkUGFyc2VDZWxsO2UuY2FsbENlbGxIb29rcyh0LGgsZCxsLHUsbnVsbCk7dmFyIGM9ZC5wYWRkaW5nKCJob3Jpem9udGFsIik7ZC5jb250ZW50V2lkdGg9KDAsby5nZXRTdHJpbmdXaWR0aCkoZC50ZXh0LGQuc3R5bGVzLHQpK2M7dmFyIGY9KDAsby5nZXRTdHJpbmdXaWR0aCkoZC50ZXh0LmpvaW4oIiAiKS5zcGxpdCgvXHMrLyksZC5zdHlsZXMsdCk7aWYoZC5taW5SZWFkYWJsZVdpZHRoPWYrZC5wYWRkaW5nKCJob3Jpem9udGFsIiksIm51bWJlciI9PXR5cGVvZiBkLnN0eWxlcy5jZWxsV2lkdGgpZC5taW5XaWR0aD1kLnN0eWxlcy5jZWxsV2lkdGgsZC53cmFwcGVkV2lkdGg9ZC5zdHlsZXMuY2VsbFdpZHRoO2Vsc2UgaWYoIndyYXAiPT09ZC5zdHlsZXMuY2VsbFdpZHRofHwhMD09PXIpZC5jb250ZW50V2lkdGg+aT8oZC5taW5XaWR0aD1pLGQud3JhcHBlZFdpZHRoPWkpOihkLm1pbldpZHRoPWQuY29udGVudFdpZHRoLGQud3JhcHBlZFdpZHRoPWQuY29udGVudFdpZHRoKTtlbHNle3ZhciBnPTEwL247ZC5taW5XaWR0aD1kLnN0eWxlcy5taW5DZWxsV2lkdGh8fGcsZC53cmFwcGVkV2lkdGg9ZC5jb250ZW50V2lkdGgsZC5taW5XaWR0aD5kLndyYXBwZWRXaWR0aCYmKGQud3JhcHBlZFdpZHRoPWQubWluV2lkdGgpfX19fSkpLGUuYWxsUm93cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLG89ZS5jb2x1bW5zO248by5sZW5ndGg7bisrKXt2YXIgcj1vW25dLGk9dC5jZWxsc1tyLmluZGV4XTtpZihpJiYxPT09aS5jb2xTcGFuKXIud3JhcHBlZFdpZHRoPU1hdGgubWF4KHIud3JhcHBlZFdpZHRoLGkud3JhcHBlZFdpZHRoKSxyLm1pbldpZHRoPU1hdGgubWF4KHIubWluV2lkdGgsaS5taW5XaWR0aCksci5taW5SZWFkYWJsZVdpZHRoPU1hdGgubWF4KHIubWluUmVhZGFibGVXaWR0aCxpLm1pblJlYWRhYmxlV2lkdGgpO2Vsc2V7dmFyIGw9ZS5zdHlsZXMuY29sdW1uU3R5bGVzW3IuZGF0YUtleV18fGUuc3R5bGVzLmNvbHVtblN0eWxlc1tyLmluZGV4XXx8e30sYT1sLmNlbGxXaWR0aHx8bC5taW5DZWxsV2lkdGg7YSYmIm51bWJlciI9PXR5cGVvZiBhJiYoci5taW5XaWR0aD1hLHIud3JhcHBlZFdpZHRoPWEpfWkmJihpLmNvbFNwYW4+MSYmIXIubWluV2lkdGgmJihyLm1pbldpZHRoPWkubWluV2lkdGgpLGkuY29sU3Bhbj4xJiYhci53cmFwcGVkV2lkdGgmJihyLndyYXBwZWRXaWR0aD1pLm1pbldpZHRoKSl9fSkpfSh0LGUpO3ZhciBuPVtdLGw9MDtlLmNvbHVtbnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG89dC5nZXRNYXhDdXN0b21DZWxsV2lkdGgoZSk7bz90LndpZHRoPW86KHQud2lkdGg9dC53cmFwcGVkV2lkdGgsbi5wdXNoKHQpKSxsKz10LndpZHRofSkpO3ZhciBhPWUuZ2V0V2lkdGgodC5wYWdlU2l6ZSgpLndpZHRoKS1sO2EmJihhPXIobixhLChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgodC5taW5SZWFkYWJsZVdpZHRoLHQubWluV2lkdGgpfSkpKSxhJiYoYT1yKG4sYSwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWluV2lkdGh9KSkpLGE9TWF0aC5hYnMoYSksIWUuc2V0dGluZ3MuaG9yaXpvbnRhbFBhZ2VCcmVhayYmYT4uMS90LnNjYWxlRmFjdG9yKCkmJihhPWE8MT9hOk1hdGgucm91bmQoYSksY29uc29sZS53YXJuKCJPZiB0aGUgdGFibGUgY29udGVudCwgIi5jb25jYXQoYSwiIHVuaXRzIHdpZHRoIGNvdWxkIG5vdCBmaXQgcGFnZSIpKSksZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuYWxsUm93cygpLG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIG89ZVtuXSxyPW51bGwsaT0wLGw9MCxhPTA7YTx0LmNvbHVtbnMubGVuZ3RoO2ErKyl7dmFyIHM9dC5jb2x1bW5zW2FdO2lmKChsLT0xKT4xJiZ0LmNvbHVtbnNbYSsxXSlpKz1zLndpZHRoLGRlbGV0ZSBvLmNlbGxzW3MuaW5kZXhdO2Vsc2UgaWYocil7dmFyIHU9cjtkZWxldGUgby5jZWxsc1tzLmluZGV4XSxyPW51bGwsdS53aWR0aD1zLndpZHRoK2l9ZWxzZXtpZighKHU9by5jZWxsc1tzLmluZGV4XSkpY29udGludWU7aWYobD11LmNvbFNwYW4saT0wLHUuY29sU3Bhbj4xKXtyPXUsaSs9cy53aWR0aDtjb250aW51ZX11LndpZHRoPXMud2lkdGgraX19fShlKSxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj17Y291bnQ6MCxoZWlnaHQ6MH0sbz0wLHI9dC5hbGxSb3dzKCk7bzxyLmxlbmd0aDtvKyspe2Zvcih2YXIgbD1yW29dLGE9MCxzPXQuY29sdW1uczthPHMubGVuZ3RoO2ErKyl7dmFyIHU9c1thXSxkPWwuY2VsbHNbdS5pbmRleF07aWYoZCl7ZS5hcHBseVN0eWxlcyhkLnN0eWxlcywhMCk7dmFyIGg9ZC53aWR0aC1kLnBhZGRpbmcoImhvcml6b250YWwiKTtpZigibGluZWJyZWFrIj09PWQuc3R5bGVzLm92ZXJmbG93KWQudGV4dD1lLnNwbGl0VGV4dFRvU2l6ZShkLnRleHQsaCsxL2Uuc2NhbGVGYWN0b3IoKSx7Zm9udFNpemU6ZC5zdHlsZXMuZm9udFNpemV9KTtlbHNlIGlmKCJlbGxpcHNpemUiPT09ZC5zdHlsZXMub3ZlcmZsb3cpZC50ZXh0PWkoZC50ZXh0LGgsZC5zdHlsZXMsZSwiLi4uIik7ZWxzZSBpZigiaGlkZGVuIj09PWQuc3R5bGVzLm92ZXJmbG93KWQudGV4dD1pKGQudGV4dCxoLGQuc3R5bGVzLGUsIiIpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGQuc3R5bGVzLm92ZXJmbG93KXt2YXIgYz1kLnN0eWxlcy5vdmVyZmxvdyhkLnRleHQsaCk7ZC50ZXh0PSJzdHJpbmciPT10eXBlb2YgYz9bY106Y31kLmNvbnRlbnRIZWlnaHQ9ZC5nZXRDb250ZW50SGVpZ2h0KGUuc2NhbGVGYWN0b3IoKSxlLmdldExpbmVIZWlnaHRGYWN0b3IoKSk7dmFyIGY9ZC5jb250ZW50SGVpZ2h0L2Qucm93U3BhbjtkLnJvd1NwYW4+MSYmbi5jb3VudCpuLmhlaWdodDxmKmQucm93U3Bhbj9uPXtoZWlnaHQ6Zixjb3VudDpkLnJvd1NwYW59Om4mJm4uY291bnQ+MCYmbi5oZWlnaHQ+ZiYmKGY9bi5oZWlnaHQpLGY+bC5oZWlnaHQmJihsLmhlaWdodD1mKX19bi5jb3VudC0tfX0oZSx0KSxmdW5jdGlvbih0KXtmb3IodmFyIGU9e30sbj0xLG89dC5hbGxSb3dzKCkscj0wO3I8by5sZW5ndGg7cisrKWZvcih2YXIgaT1vW3JdLGw9MCxhPXQuY29sdW1ucztsPGEubGVuZ3RoO2wrKyl7dmFyIHM9YVtsXSx1PWVbcy5pbmRleF07aWYobj4xKW4tLSxkZWxldGUgaS5jZWxsc1tzLmluZGV4XTtlbHNlIGlmKHUpdS5jZWxsLmhlaWdodCs9aS5oZWlnaHQsbj11LmNlbGwuY29sU3BhbixkZWxldGUgaS5jZWxsc1tzLmluZGV4XSx1LmxlZnQtLSx1LmxlZnQ8PTEmJmRlbGV0ZSBlW3MuaW5kZXhdO2Vsc2V7dmFyIGQ9aS5jZWxsc1tzLmluZGV4XTtpZighZCljb250aW51ZTtpZihkLmhlaWdodD1pLmhlaWdodCxkLnJvd1NwYW4+MSl7dmFyIGg9by5sZW5ndGgtcixjPWQucm93U3Bhbj5oP2g6ZC5yb3dTcGFuO2Vbcy5pbmRleF09e2NlbGw6ZCxsZWZ0OmMscm93Oml9fX19fShlKX0sZS5yZXNpemVDb2x1bW5zPXIsZS5lbGxpcHNpemU9aX0sOTY0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PXQpe3ZhciBuPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICd1bmRlZmluZWQnIik7dGhyb3cgbi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixufWUuZXhwb3J0cz10fX0sbj17fTtmdW5jdGlvbiBvKHQpe3ZhciByPW5bdF07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBpPW5bdF09e2V4cG9ydHM6e319O3JldHVybiBlW3RdLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLG8pLGkuZXhwb3J0c312YXIgcj17fTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1yO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkNlbGw9dC5Db2x1bW49dC5Sb3c9dC5UYWJsZT10LkNlbGxIb29rRGF0YT10Ll9fZHJhd1RhYmxlPXQuX19jcmVhdGVUYWJsZT10LmFwcGx5UGx1Z2luPXZvaWQgMDt2YXIgZT1vKDM0MCksbj1vKDc3NiksaT1vKDY2NCksbD1vKDk3MiksYT1vKDI2MCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlRhYmxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5UYWJsZX19KTt2YXIgcz1vKDE3Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNlbGxIb29rRGF0YSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuQ2VsbEhvb2tEYXRhfX0pO3ZhciB1PW8oMjYwKTtmdW5jdGlvbiBkKHQpeygwLGUuZGVmYXVsdCkodCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNlbGwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1LkNlbGx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNvbHVtbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuQ29sdW1ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1LlJvd319KSx0LmFwcGx5UGx1Z2luPWQsdC5fX2NyZWF0ZVRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIG89KDAsbi5wYXJzZUlucHV0KSh0LGUpO3JldHVybigwLGwuY3JlYXRlVGFibGUpKHQsbyl9LHQuX19kcmF3VGFibGU9ZnVuY3Rpb24odCxlKXsoMCxpLmRyYXdUYWJsZSkodCxlKX07dHJ5e3ZhciBoPW8oOTY0KTtoLmpzUERGJiYoaD1oLmpzUERGKSxkKGgpfWNhdGNoKHQpe310LmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2YXIgbz0oMCxuLnBhcnNlSW5wdXQpKHQsZSkscj0oMCxsLmNyZWF0ZVRhYmxlKSh0LG8pOygwLGkuZHJhd1RhYmxlKSh0LHIpfX0oKSxyfSgpfSkpOwo=\"),function(c){return c.charCodeAt(0)}));var s=document.createElement(\"script\");s.textContent=t;document.head.appendChild(s);})();\n<\/script>\n<script>\nconst FONT_REG = \"AAEAAAAOAIAAAwBgR0RFRlMiTHcAAIi0AAAB5kdQT1PWFTa8AACKnAAAMzBHU1VCUl1cGgAAvcwAAAkQT1MvMmFwFmMAAAFoAAAAYGNtYXCkLHfBAAAJRAAABCZnYXNwAAAAEAAAiKwAAAAIZ2x5ZngknBMAABEsAABo3mhlYWQwrAOMAAAA7AAAADZoaGVhB8YDqQAAASQAAAAkaG10eK0tSZkAAAHIAAAHfGxvY2GtIceZAAANbAAAA8BtYXhwAewAuAAAAUgAAAAgbmFtZUH5ZKsAAHoMAAACkHBvc3Qv2HwOAAB8nAAADA8AAQAAAAQBBmidBA1fDzz1AAED6AAAAADm2F9wAAAAAObYX3D\/wv78BCEDxwAAAAYAAgAAAAAAAAABAAAD4P7KAAAEWv\/C\/qUEIQABAAAAAAAAAAAAAAAAAAAB3wABAAAB3wBVAAUAYQAEAAEAAAAAAAAAAAAAAAAAAwABAAQCJgGQAAUAAAKKAlgAAABLAooCWAAAAV4AMgEvAAAAAAAAAAAAAAAAgAAALwAAAEoAAAAAAAAAAEdPT0cAwAANIhUD4P7KAAAD9AE2IAAAkwAAAAAB+AK8AAAAIAAYAicASwKYAB4CmAAeApgAHgKYAB4CmAAeApgAHgKYAB4CmAAeA5AAHgJbAEsCzQAwAs0AMAKwAEsCxQAIAjUASwI1AEsCNQBLAjUASwI1AEsCFwBLAvYAMAKpAEsA6gBLAOoACgDq\/+wA6v\/0AOoACgH1ABwCSABLAg8ASwIPAEsDSQBLArMASwKzAEsDBgAwAwYAMAMGADADBgAwAwYAMAMIACIDBgAwBFoAMAJEAEsCRABLAwYAMAJSAEsCRAAtAjEAHgKPAEQCjwBEAo8ARAKPAEQCjwBEAp0AFgPIABsCWwAmAkQAFAJEABQCHQAtAiAAMwIgADMCIAAzAiAAMwIgADMCIAAzAiAAMwOSADMCcgBGAjwAMQI8ADECcwAxAmsAMQI4ADECOAAxAjgAMQI4ADECOAAxAVQAFQIuACYCPwBGAPAAPgDfAEYA3wAFAN\/\/5wDf\/+8A3wA+AN8ABQDz\/+UA4\/\/lAfgARgDfAEYBZgBGA3sARgI+AEYCPgBGAlEAMQJRADECUQAxAlEAMQJRADECVQAoAlEAMQPTADECcgBGAnIARgJzADEBcgBGAfYAKwKTAEcBiAAiAj0APQI9AD0CPQA9Aj0APQI9AD0CDwAYAvsAGAHwABQCLAAVAiwAFQIsABUBygAkAjMAFQIzABUB3gAzAcoAMQKsADABOAAgAkAAQAJPADMCXwAlAmIAQQJ0ADcCFgAbAmAAQAJ0AD8AzAAcAUoAIQFKABoBQQAVAMwAHAFKACEBSgAaAUEAFQGv\/+gC6QAcAsIAHAMsABoAzAAcAUoAIQFKABoBQQAVAQoAAAEKAAACWAAAAMYAKgC2AAQAygAqAOMAGQI2ACoA+gBEAPoARAIMACMCDAAtAMYAKgFoADwB4AA+AyQALgGIABwBiAAcAh0ASAKdAEgDaQBIApQASAF1ADABdQAmAasAVAGrADQBOgBLAToAPAC8AAQBXAAEAW8AHgFvAB4A0gAeANIAHgHEACwBxAAyARQALQEUADMBIwAmAJ8AJgL8ABQC\/AAUA+0ATALeACoCSwAlAkoALQMaADMB+AA0AwQAGwFXACcA6gBLAOoASwI8ADECFQBBAkQALQMDABcCWQAuAloAHwGHABwCJgAuAiYATQImAFoCJgBMAiYASwImAGMCJgBkAiYAJQImADoCJv\/2Am4AJgJIAEYDEgApA1kAKAJ1ACgDDAArAnUAKANZACgCdQAoAwwAJQJ1ACgD5wAoA0sAKwL8ABQC\/AAUAvwAFAL8ABQC\/AAUAvwAFAL8ABQC\/AAUAvwAFAL8ABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMgAYANUAAADVAAABMwAQAPAADwFOABABfQAQAOQAAAInAEsCmAAeApgAHgKYAB4CmAAeApgAHgOQAB4DkAAeAs0AMALNADACzQAwAs0AMAKwAEsCsABLAsUACALFAAgCNQBLAjUASwI1AEsCNQBLAjUASwI1AEsC5gAwAvYAMAL2ADAC9gAwAvYAMALtACgA6gBLArcASwDq\/+kA6gBDAOr\/xwDq\/+EA6v\/oAfUAHAJIAEsCSABLAg8ASwIPABACDwBLAg8ASwIPAEsCKQAUArMASwKzAEsCswBLArMASwKzAEsDBgAwAwYAMAMGADADBgAwAlIASwJSAEsCUgBLAlIASwJEAC0CRAAtAkQALQJEAC0CRAAtAqYASwIxAB4CMQAeAjEAHgIxAB4CjwBEAo8ARAKPAEQCjwBEAo8ARAKPAEQCjwBEA8gAGwPIABsDyAAbA8gAGwPIABsCRAAUAkQAFAJEABQCRAAUAkQAFAIdAC0CHQAtAh0ALQIdAC0CIAAzAiAAMwIgADMCIAAzA5IAMwOSADMCPAAxAjwAMQI8ADECPAAxAnMAMQLFADECowAxAjgAMQI4ADECOAAxAjgAMQI4ADECOAAxAjgAKwIuACYCLgAmAi4AJgIuACYCbgAoAPAAPgDfAEYA3\/\/kAN\/\/wgDf\/9wA3\/\/ZAb8APgDz\/+UA4\/\/lAfgARgH4AEYA3wBGAN8ABQEyAEYA3wBAAWYARgD7AAkCPgBGAj4ARgI+AEYCPgBGAj4ARgJRADECUQAxAlEAMQJRADEBcgBGAXIARgFyAEYBcgBBAfYAKwH2ACsB9gArAfYAKwH2ACsBiAAiAYgAIgGIACIBiAAiAj0APQI9AD0CPQA9Aj0APQI9AD0CPQA9Aj0APQL7ABgC+wAYAvsAGAL7ABgC+wAYAiwAFQIsABUCLAAVAiwAFQHKACQBygAkAcoAJAHKACQBCgAAAQoAAAJYAAAAxgAqAU3\/1ADqAEsCEwApAy8AIAJvACgEGgBLAn8ANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAEAEzABAAAAABAAMAAQAAAAwABAQaAAAAYgBAAAUAIgANAC8AOQB+AKwBBwEbASMBMwE3AUgBWwFlAX4BjwGSAf0CGwI3AlkCxwLaAt0DAQMEAwgehR6eHvMe+SAUIBogHiAgICIgJiA6IEQgqCCsILogvSETISIhkSGTIhIiFf\/\/AAAADQAgADAAOgCgAK4BCgEeASYBNgE5AUoBXgFoAY8BkgH8AhgCNwJZAsYC2gLcAwADAwMIHoAenh7yHvggEyAYIBwgICAiICYgOSBEIKggrCC5IL0hEyEiIZEhkyISIhX\/\/wCOAAAATwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/kwAqAAAAAP9O\/x4AAP4uAAD99\/34\/e0AAOKsAAAAAOCZAAAAAOGe4ITgeuCE4E3hGeAkAADhA+Cq36ffUN9S3sPevgABAAAAYAAAAHwBBAEcAc4B8AH6AhQCFgI0AlYCZAAAAAACjAKOAAAAAAKQAAACkAAAAAAAAAKMAAAClAKWAAAClgKaAAAAAAAAAAAAAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAmQChAL8AqADPAOAAxADAAK8AsACnANQAnQCrAJwAqQCeAJ8A2gDYANkAowDDAAEACgALAA0ADwAUABUAFgAXABwAHQAeACAAIQAjACsALQAuAC8AMAAxADYANwA4ADkAOwCzAKoAtADeAK4BBQA8AEQARQBHAEkATgBPAFAAUQBYAFoAWwBdAF4AYABoAGoAawBsAG4AbwB0AHUAdgB3AHoAsQDLALIA3ACaAKIAzQDRAM4A0gDMAMYBBADHAH0AuwDdAMgBCgDKANsAlgCXAQYA3wDFAKUBCwCVAH4AvACTAJIAlACkAAYAAgAEAAgABQAHAAkADAATABAAEQASABsAGAAZABoADgAiACcAJAAlACkAJgDWACgANQAyADMANAA6ACwAbQBAAD0APgBCAD8AQQBDAEYATQBKAEsATABXAFMAVABVAEgAXwBkAGEAYgBmAGMA1wBlAHMAcABxAHIAeABpAHkBEAFmAAMBZQERAWcBFQFrARcBbQEWAWwBGQFvARoBcAEgAXUBHQFyAR8BdAEhAXYBHgFzASQBeQEmAXsBJQF6AScBfAEuAYIBLAGAASoBfwEtAYEBKwBSASkBgwExAYcBMwGJATUBiwE0AYoBNgGMATcBjQE5AY8BOwGRAToBkAE8AZIBQAGWAT4BlAE\/AZUAKgBnAUIBmAFEAZoBQwGZAUYBnAFIAZ4BRwGdAU0BogFMAaEBVQGqAVIBpwFQAaUBVAGpAVEBpgFTAagBWAGtAVwBsQFdAWEBtQFjAbcBYgG2ARMBaQFJAZ8BTgGjAQcB3gEJAd0BWgGvAVcBrAFZAa4BXgGyAV8BswC5ALoAtQC3ALgAtgHCAb8AAAAAABQALwA7AEcAUwBfAGsAdwCDAKYA3wENAVUBeAGlAbsBxwHTAd8B6wH\/AjQCTAJYAmMCbgJ5AoQCowK+As0C2QLzAwkDFQNHA1MDXwNrA3cDzAPYBBsEPgRiBKAEzAUVBSYFSgVWBWIFbgV6BY4FqgXFBdoF5gX8BkAGTAZYBmQGcAZ8BocG8gcpB1oHpgfcCCsIZghyCH4IigiWCLUJKAlLCWcJcwl+CYkJlAmfCaoJ0QnoCf8KCwoXClAKcwp\/CrEKvQrJCtUK4QszCz8LmgvQDAcMPgxZDJ4M7w0PDTMNPw1LDVcNYw11DZENqA2+DcoN1g3sDh8OKw5dDo8OwQ7RDv8PRQ9gD5kP4Q\/zEEEQiRCSEJsQpBCtELUQvRDFEM0Q2xDqEPkRCREaEUMRgBGYEZgRmBGYEa4RuxHHEdMR4xIAEh0SWRKWEqwSyBLqExkTJxM0EzwTSRNWE2ITgxOjE+gULBQ9FE0UWhRtFIAUkxSgFK0UxxTfFO8U\/hURFR4VZBWrFiIWgBadFxYXbxe+F+QYEBgdGDEYcBjKGTUZghnIGe4Z9hoKGhcaMBpcGm8afxqPGqka0RrgGvMbGBt+G5gbrhvIG+Ab+RwQHCscQxxpHIscuhzoHRcdRh12HaUd1B4CHjkecB6VHqseuR7HHtYe\/B8gHywfUR9fH20ffB+ZH78f4yAIIBAgHiAuIFQgeCCFIKUguSDUIOAg7CD4ITAhUyFfIY0hmSGlIbEh1CHgIegiFSIrIjciQyJPIloijiLOIwMjDyMbIycjTCNYI2QjbyN6I4UjsCO7I9oj9SQBJBAkGyQnJDMkPyRaJHAkfCSIJJQktiToJPQlACUMJTglRCVQJVwlpSWxJb0mISYtJmYmdyaDJqwmuCbcJugm9CcAJ0YnUideJ3onhieSJ54nqie\/J8sn1yfjJ+8oBSgRKB0oKShtKHkohCjlKVApXCmNKZkppSmxKecp8yoyKm0qeSqFKpEqnCr4KzMrpiuyK74ryiv2LBIsHiwpLDQsaix1LIEsqCy\/LNYs4izuLPotBi0RLR0tNS1YLWQtcC18Laot3C3oLfQt\/y4aLiUuMC47LoAujC6XLvgvBC8kLzAvai92L5ovpi+yL70v\/jAKMBYwMjA+MEowVjBiMHgwhDCQMJswsTC8MMcw0zDTMNMw0zDpMRUxIjE7MW4xnTGpMeYyCzIhMi8yPTJQMmgydzKHMqQyyjLuMvozEjMpM1AzdTOLM5kzpzO6M8kz2TP2NBw0QDRMNF80bwACAEsAAAHcArwAAwAHAAAzESERJSERIUsBkf61AQX++wK8\/UQ5AkoAAgAeAAACegK8AAcACgAAMwEzASMnIQclAwMeAQJZAQFZQP7WQQFSfH0CvP1EtLT4AVv+pQD\/\/wAeAAACegOjAiYAAQAAAAcA\/wDiAAD\/\/wAeAAACegOFAiYAAQAAAAcBAQDBAAD\/\/wAeAAACegOGAiYAAQAAAAcBAADEAAD\/\/wAeAAACegNrAiYAAQAAAAcA\/QDMAAD\/\/wAeAAACegOjAiYAAQAAAAcA\/gDiAAD\/\/wAeAAACegPHAiYAAQAAAAcBAgDkAAD\/\/wAeAAACegNbAiYAAQAAAAcBAwDAAAAAAgAeAAADVgK8AA8AEgAAMwEhFSEVIRUhFSEVITUhByURAx4BjwGp\/t8BA\/79ASH+i\/7zWgFn5gK8Q\/dC\/UOfn+IBlf5rAAMASwAAAiwCvAAUAB0AJgAAMxEzMhYWFRQGBwYHFhcWFhUUBgYjJzMyNjU0JiMjNTMyNjU0JiMjS\/ZKYTAvJRQUHhsmLTRlSqqhR09RR5+cREdHR5kCvC9RMjZIEwoGBRAXTjA1VzNGQzw7R0NANzVAAAEAMP\/0Ap4CyAAdAAAFIiYmNTQ2NjMyFhcjJiYjIgYGFRQWFjMyNjczBgYBe2aVUFCVZniWFV0QYlRLbjw8bktUYhBdFZYMW6NsbKNbcmhBT0WBWlqBRU1AZXIAAQAw\/vwCngLIADEAAAE1MzI2NTQmIyM1JicmJjQ2NjMyFhcjJiYjIgYGFBYWMzI2NzMGBwYHFTYWFhUUBgYjASRcIyEhIzFLOUtQUJVmeJYVXRBiVEtuPDxuS1RiEF0VS0dwJjohHzcj\/vw1GBgWF2gIJC2j2KNbcmhBT0WBtIFFTUBlOTYDNAEVLCAfLRgAAgBLAAACgAK8AAoAFQAAMxEzMhYWFRQGBiMnMzI2NjU0JiYjI0vOe59NTZ97enhmeDQ0eGZ4ArxVnW5snFRGQ31WWH5EAAIACAAAApUCvAAOAB0AABM1MxEzMhYWFRQGBiMjERczMjY2NTQmJiMjFTMVIwhYznufTU2fe85UeGZ4NDR4ZnjJyQE3TAE5VZ1ubJxUATfxQ31WWH5E80wAAAEASwAAAfwCvAALAAAzESEVIRUhFSEVIRVLAbH+owE\/\/sEBXQK8RfRE+kX\/\/wBLAAAB\/AOjAiYADwAAAAcA\/wC5AAD\/\/wBLAAAB\/AOGAiYADwAAAAcBAACbAAD\/\/wBLAAAB\/ANrAiYADwAAAAcA\/QCjAAD\/\/wBLAAAB\/AOjAiYADwAAAAcA\/gC5AAAAAQBLAAAB9QK8AAkAADMRIRUhFSEVIRFLAar+qgEj\/t0CvEX2RP7DAAEAMP\/0ArsCyAAiAAAFIiYmNTQ2NjMyFhcjJiYjIgYGFBYWMzI2NyM1IREjJw4CAXhilFJTmWh2nhZhDmhTTXM+Pm9IcHIIygEgTQcZQVgMW6Jsa6RccWU\/SkWAsoFEhHFC\/opzKTkdAAABAEsAAAJeArwACwAAIREhESMRMxEhETMRAgr+lVRUAWtUAUL+vgK8\/ssBNf1EAAABAEsAAACfArwAAwAAMxEzEUtUArz9RP\/\/AAoAAADfA6MCJgAXAAAABgD\/CgD\/\/\/\/sAAAA\/gOGAiYAFwAAAAYBAOwA\/\/\/\/9AAAAPcDawImABcAAAAGAP30AP\/\/AAoAAADfA6MCJgAXAAAABgD+CgAAAQAc\/\/QBqgK8ABIAABciJiY1MxQWFjMyNjY1ETMRFAbnP1sxVRczKyoxFVRnDDBaPiM5ISA3IwID\/f1eZwABAEsAAAIxArwACwAAMxEzEQEzAQEjAwcRS1QBJGr+\/AEIZt5OArz+wwE9\/un+WwFkU\/7vAAABAEsAAAHlArwABQAAMxEzESEVS1QBRgK8\/YdDAP\/\/AEsAAAHlArwCJgAeAAAABwClAQMACAABAEsAAAL\/ArwADAAAMxEzExMzESMRAyMDEUti9\/hjVOc\/5gK8\/hcB6f1EAib+PAHC\/dwAAQBLAAACaAK8AAkAADMRMwERMxEjARFLVAF1VFT+iwK8\/c8CMf1EAjH9z\/\/\/AEsAAAJoA1sCJgAhAAAABwEDAM0AAAACADD\/9ALXAsgADwAfAAAFIiYmNTQ2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFgGDZZlVVZllZ5hVVZhnTHM\/P3NMS3M\/P3MMW6Nsa6NcXKNrbKNbSkWBWlqBRESBWlqBRQD\/\/wAw\/\/QC1wOjAiYAIwAAAAcA\/wEYAAD\/\/wAw\/\/QC1wOGAiYAIwAAAAcBAAD6AAD\/\/wAw\/\/QC1wNrAiYAIwAAAAcA\/QECAAD\/\/wAw\/\/QC1wOjAiYAIwAAAAcA\/gEYAAAAAwAi\/\/QC5gLIAB0AKQA1AAAzNyYnJjU0NjYzMhcWFzczBxYXFhUUBgYjIicmJwc3ASYnJiMiBgYUFxYXMjY2NCcmJwEWFxYiXRUPK1WZZWdMExA0WV4VECpVmGdlTBMQMzoBbw0POkxLcz8gB9ZMcz8fCAj+kQ0POWkZH1Fsa6NcLgsOO2oZHlJrbKNbLgoNOacBoAsJIkSBtEAQdkWBtEEODf5gCwgjAP\/\/ADD\/9ALXA1sCJgAjAAAABwEDAPYAAAACADD\/9AQhAsgAHQAtAAAFIi4CNTQ+AjMyFhc1IRUhFSEVIRUhFSE1DgInMjY2NTQmJiMiBgYVFBYWAYRJfF0yMl18SVCHLAGa\/roBKP7YAUb+Zh5QXzVJc0REc0lHdEREdAw0YYRRUIVgNUI\/dUX0RPpFdCk6HUpFgVpagUREgVpagUUAAAIASwAAAiACvAAMABUAADMRMzIWFhUUBgYjIxERMzI2NTQmIyNL5FNrMzNqVJCPVEhIVI8CvDdcOzldOP7gAWdKPUFHAAACAEsAAAIgArwADgAXAAAzETMVMzIWFhUUBgYjIxU1MzI2NTQmIyNLVJJSajMyalOSkFNISFOQArySNVw7OVw2k9lIPUBGAAACADD\/oQLXAsgAFAAnAAAFJwYjIiYmNTQ2NjMyFhYVFAcGBxclMjcnMxc2NzY0JiYjIgYGFBYWAj1BN0JlmVVVmWVnmFUqJ0BY\/uUqJYBhaSsbHz9zTEtzPz9zX2YTW6Nsa6NcXKNrbFFJLYqdC8ikITZAtIFERIG0gUUAAgBLAAACIAK8ABIAGwAAMxEzMhYWFRQGBwYHEyMDIiMjEREzMjY1NCYjI0viUmgyMzUTF5ljjgMDiohQS0lThwK8N1w6OF4cCgb+0wEh\/t8BY049PkkAAAEALf\/0AhYCyAAyAAAFIiYmNTMUFhYzMjY2NTQuAicmJjU0NjYzMhYWFSM0JiYjJgYGFRQeAhceAhUUBgYBKk1yPlgmSTYvQyMjPE8rU041Y0RDYzhYHj0uJjshHTdKLTNPLTVoDDhkQilFKR82IikzIBkOHFRDOVYxMlc5HTglARsyJCIqHRgPETFMOzJZOAAAAQAeAAACFAK8AAcAADMRIzUhFSMR79EB9tECd0VF\/YkAAAEARP\/0AkwCvAAVAAAFIiYmNREzERQWFjMyNjY1ETMRFAYGAUdIdUZULVA0NU4sVEZ2DDp3XQG6\/kVEVigoVkQBu\/5GXXc6\/\/8ARP\/0AkwDowImADEAAAAHAP8A3AAA\/\/8ARP\/0AkwDhgImADEAAAAHAQAAvgAA\/\/8ARP\/0AkwDawImADEAAAAHAP0AxgAA\/\/8ARP\/0AkwDowImADEAAAAHAP4A3AAAAAEAFgAAAoYCvAAGAAAhATMTEzMBAR3++Vvd31n++QK8\/Z0CY\/1EAAABABsAAAOvArwADAAAMwMzExMzExMzAyMDA9vAWperXqeZWsRgp6sCvP2oAlj9pgJa\/UQCQ\/29AAEAJgAAAjQCvAALAAAzEwMzExMzAxMjAwMm1tZfrKRe1tdfraMBYQFb\/ukBF\/6i\/qIBGv7mAAEAFAAAAi8CvAAIAAAzEQMzExMzAxH45F+vr17jAQoBsv6eAWL+Tv72\/\/8AFAAAAi8DowImADkAAAAHAP8AtwAAAAEALQAAAfACvAAJAAAzNQEhNSEVASEVLQFd\/qgBuv6iAWJCAjFJQv3PSQAAAgAz\/\/QB5AIEACAALwAAFyImJjU0NjYzMzQmJiMiBgcjPgIzMhYWFREjJw4DJzI+AjU1IyIGBhUUFhbqPVIoNWFChR03KTBGCFYGPV4zRl0uSwUKHyo1FSM5KBV+MTwaGTEMK0cqM0clLz8gMC82SSczWz7+yFkVJRsQRx0zPiIDFykaGygW\/\/8AM\/\/0AeQC3wImADwAAAAHAPgAogAA\/\/8AM\/\/0AeQCuQImADwAAAAHAPkAhAAA\/\/8AM\/\/0AeQCngImADwAAAAHAPUAjAAA\/\/8AM\/\/0AeQC3wImADwAAAAHAPcAogAA\/\/8AM\/\/0AeQDCAImADwAAAAHAPoApAAA\/\/8AM\/\/0AeQCoQImADwAAAAGAPt2AAADADP\/9ANnAgQANQBDAEsAABciJiY1NDY2MzM0JiYjIgYHIz4CMzIWFzY2MzIWFhUVFAchHgIzMjY3Mw4CIyImJw4CJzI2Njc1IyIGBhUUFhYlISYmIyIGBuw+Uik1X0CIHDYoLUQIVwY9WzJBWhggYDpIZjcB\/n4CLUcmOEQQUgw8WzpDah8UOkwnK0MpA38vOxoZLwESATAEUz0mRC0MK0cqM0cjMEAgMC82SScwKywvQms+FQsOO04nNS4xTSw\/NyI2HkctSisPFicbGigX8UVMIUAAAgBG\/\/QCQgLQABIAIgAABSImJicHIxEzETY2MzIWFhQGBicyNjY1NCYmIyIGBhUUFhYBTitFNBEHTFQYWkJJbj09blMxTCsrTDEyTCoqTAwZKhxTAtD+1Sc4RXeYeERJMFU6OVYwMFY5OlUwAAABADH\/9AILAgQAHwAABSImJjU0NjYzMhYXIyYmIyIGBhUUHgIzMjY2NzMGBgEpR3FAQHFHWngQVgpONStKLBosOyAkOigHVhB5DEJ3TlB2Q11OLzQrVj8vSTAZFy4fTF8AAAEAMf78AgsCBAA1AAATNTMyNjU0JiMjNSYnJiY1NDY2MzIWFyMmJiMiBgYVFB4CMzI2NjczBgcGBxU2FhYVFAYGI9tcIyEhIzEyKjlAQHFHWngQVgpONStKLBosOyAkOigHVhA8NksmOiEfNyP+\/DUYGBYXaAYZIXdOUHZDXU4vNCtWPy9JMBkXLh9MLyoFNQEVLCAfLRgAAgAx\/\/QCLQLQABIAIgAABSImJjQ2NjMyFhcRMxEjJw4CJzI2NjU0JiYjIgYGFRQWFgEkSW48PG9JPl0ZVEwHEDJGJDJMKipMMjFMKipMDEV4mHdEMi0BK\/0wUxkrG0kwVTo5VjAwVjk6VTAAAgAx\/\/QCOgLEACQANAAABSImJjU0NjYzMhYXJiYnJicHNTcmJzMWFzcVBxYXHgIVFAYGJzI2NjU0JiYjIgYGFRQWFgEzS3VCQnRILlcgDSUXCAmGXx0jVBYTg1sJCCgyF0V3SS9QMDBPMC9QLzBPDEV3S011Qx8jIUIgCgsvOSEeHRIULjkgCQo1bnA3VH9HRy5XPDtVLS5UOzxXLgACADH\/9AINAgQAHAAlAAAFIiYmNTQ2NjMyFhYVFRQHIRYXFhYzMjY3Mw4CAyEmJiMiBgcGASNHbT49b0hKZzcB\/ncDFBZJKjVFD1MMPFnaATcDVUArSRYRDEJ3T1B2QkJrQBULDjUlKiovKC1IKQE2RU4nJR7\/\/wAx\/\/QCDQLfAiYASQAAAAcA+AC2AAD\/\/wAx\/\/QCDQK5AiYASQAAAAcA+QCYAAD\/\/wAx\/\/QCDQKeAiYASQAAAAcA9QCgAAD\/\/wAx\/\/QCDQLfAiYASQAAAAcA9wC2AAAAAQAVAAABNQLQABQAADMRIzUzNTQ2NjMzFSMiBhUVMxUjEWJNTSA\/LjksJSF\/fwGxR04wPR1IHiZMR\/5PAAADACb\/GAITAgQAMgBCAE4AAAUiJiY1NDY3NjcmJyYnNTcmJyY0NjYzMhczFQcWFxYUBgYjIicHFhceAhceAhUUBgYDBgcGFRQWFjI2NjU0JicmNzI2NTQmIyIGFRQWAQ1EaToTGAsRFA4SDlYWDhcvWD8sI7hfAwMXLlg\/KiI0BAMKIj0yRVMlL2KeJw0QJkRWPiI0STgpNj4+NjVBQOgjSDUXNBkNCwgKDA0XVRMZKGRQMQw\/BAUFKGRRMAsuAwIHCggEBSZALCtNMgEHExcdGCEsFhgsHiMvBATKODY1ODg1NjgAAAEARgAAAgIC0AAVAAAzETMRNjYzMhYWFREjETQmIyIGBhURRlQZWzY6Vi5TQD0rRSgC0P7TLTQvYEn+1AEjTE0qTjn+9QACAD4AAACyAtUAAwAPAAAzETMRAyImNTQ2MzIWFRQGTlQqGSEhGRgiIgH4\/ggCYyEZGR8fGRkhAAEARgAAAJoB+AADAAAzETMRRlQB+P4I\/\/8ABQAAANoC3wImAFIAAAAGAPgFAP\/\/\/+cAAAD5ArkCJgBSAAAABgD55wD\/\/\/\/vAAAA8gKeAiYAUgAAAAYA9e8A\/\/8APgAAAKICnwImAFIAAAAGAPY+AP\/\/AAUAAADaAt8CJgBSAAAABgD3BQAAAv\/l\/yQAtgLVAAwAGAAABzUzMjY1ETMRFAYGIxMiJjU0NjMyFhUUBhsnJiBUID8uZBkhIRkYISHcSB8lAkj9tjA9HQM\/IRkZHx8ZGSEAAf\/l\/yQApgH4AAwAAAc1MzI2NREzERQGBiMbJyYgVCA\/LtxIHyUCSP22MD0dAAEARgAAAecC0AAKAAAhAxEjETMRNzMHEwF84lRUzWfe9wEE\/vwC0P5T1eX+7QABAEYAAACaAtAAAwAAMxEzEUZUAtD9MP\/\/AEYAAAFJAtAAJgBbAAAABwClAKwAAAABAEYAAAM+AgQAJgAAMxEzFzY2MzIWFhc2NjMyFhYVESMRNCYjIgYGFREjETQmIyIGBhURRkwFGFEwJz8wDxpbNDpXL1M+OCc+JFQ+OSY9JAH4SCctFSshLjMvX0n+0wEkTEwpTjn+9AEkTEwpTjn+9AABAEYAAAIBAgQAFQAAMxEzFzY2MzIWFhURIxE0JiMiBgYVEUZMBBhZOTtWMFRDPSpCJwH4WC81L19J\/tMBJExMKU05\/vP\/\/wBGAAACAQKhAiYAXgAAAAcA+wCYAAAAAgAx\/\/QCIQIEAA8AHwAABSImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhYBJ0ZwQEFxRkhvQUJwRytKLi1JLCpLLS1JDEF3T1F3QUF3UFB3QUgrVj9AVSsrVUA\/VisA\/\/8AMf\/0AiEC3wImAGAAAAAHAPgAvwAA\/\/8AMf\/0AiECuQImAGAAAAAHAPkAoQAA\/\/8AMf\/0AiECngImAGAAAAAHAPUAqQAA\/\/8AMf\/0AiEC3wImAGAAAAAHAPcAvwAAAAMAKP\/0AiwCBAAaACYAMwAAMzcmJyY1NDY2MhcWFzczBxYXFhQGBiInJicHNxMmJyYiBgYVFBcWFzI2NjU0JyYnAxYXFihCDQsgQXGOOAsKHk9CDQsgQXGOOAsKHSrqCAklVkouFwGJLEotFgEC6ggJJEwRFDtPUXdBIAcHIkwREzygd0EhBgcijAEPBgYVK1VAPysDUytWP0ArAgP+8QYFFgD\/\/wAx\/\/QCIQKhAiYAYAAAAAcA+wCTAAAAAwAx\/\/QDqAIEACYANQA9AAAFIiYmNDY2MzIWFzY2MzIWFhUVFAchHgIzMjY3Mw4CIyImJwYGJzI2NjU0JiYiBgYVFBYWJSEmJiMiBgYBKEdwQEFxR0NoHR9qRUlpNgH+dwMuRyg4SA9SDDxcPUNpHx5pRCtKLi1JVkstLUkBIgE3A1Y\/KEUtDEF3oHdBOzc2PEJrQBULDjpOJjUuMU0sPDU1PEgrVj9AVSsrVUA\/VivuRU4hQgACAEb\/JAJCAgQAEgAiAAAXETMXPgIzMhYWFAYGIyImJxETMjY2NTQmJiMiBgYVFBYWRkwHEDJGLUptPT1uSj1dGaoxTCsrTDEyTCoqTNwC1FIYKxtGd5h3RDIt\/tEBGTBVOjlWMDBWOTpVMAACAEb\/JAJCAtAAEwAjAAAXETMRPgIzMhYWFRQGBiMiJicREzI2NjU0JiYjIgYGFRQWFkZTEDJGLUptPT1uSj1dGaoxTCsrTDEyTCoqTNwDrP7WGCsbRXhMTHdEMi3+0QEZMFU6OVYwMFY5OlUwAAIAMf8kAi0CBAASACIAAAURBgYjIiYmNDY2MzIWFhc3MxEDMjY2NTQmJiMiBgYVFBYWAdkYW0FKbjw8b0krRTQQCEz\/MkwqKkwyMUwqKkzcAS4nN0V3mHdFGCscU\/0sARkwVTo5VjAwVjk6VTAAAQBGAAABWQIEAA8AADMRMxc+AjMVIyIOAhURRkwGETVLMB8gOi0ZAfhgIjAaWBEmQTD+\/AAAAQAr\/\/QBwwIEAC8AAAUiJiYnMx4CMzI2NjU0JiYnLgM1NDY2MzIWFyMmJiMiBhUUFhYXHgIVFAYGAQQ\/XTcGVgUgNygjLhcdOCghQDIdLFM3UWQJUwU3MC8xGzUnMlIzL1YMKkszGiwbFSQVHyATBwYUITAjK0MmTkomKyYfFB8WBwkeOzYvRicAAQBH\/\/YCbQLcADgAAAUiJiczFhYzMjY1NCYnJiY1NDY3NzY2NTQmIyIGFREjETQ2NjMyFhYVFA4DFRQWFhcWFhUUBgYBtFVsCFMFPTMwNS05TkQdFSoVHUY+SUdTNGZLRl8xHCorHBMxLEk\/LVIKX1QzPi8pJi0TGzguHicOHA4jGy41UUX+AQIHPmA3LEotJC8fGBoTDxkYDxlLOS9JKAAAAQAiAAABYAJyABQAACEiJiY1ESM1MzczFTMVIxEUFjMzFQEMLUIjWFgLSZKSJjA2HEM5ARlHenpH\/ucvIUgAAAEAPf\/0AfgB+AAVAAAXIiYmNREzERQWMzI2NjURMxEjJwYG\/TpXL1RCPCpEJ1RMBRdaDC5gSAEu\/ttLTClNOAEO\/ghYLzUA\/\/8APf\/0AfgC3wImAG8AAAAHAPgArQAA\/\/8APf\/0AfgCuQImAG8AAAAHAPkAjwAA\/\/8APf\/0AfgCngImAG8AAAAHAPUAlwAA\/\/8APf\/0AfgC3wImAG8AAAAHAPcArQAAAAEAGAAAAfcB+AAGAAAzAzMTEzMD179YmJlWvwH4\/lkBp\/4IAAEAGAAAAuIB+AAMAAAzAzMTEzMTEzMDIwMDrJRUbHVfd2pVk1Z7fAH4\/nIBjv50AYz+CAGf\/mEAAQAUAAAB3AH4AAsAADM3JzMXNzMHFyMnBxSrq1yIilqrq1qKiPz8zs78\/M\/PAAEAFf8kAhcB+AAIAAAXEyMDMxMTMwF9ex3GW6SsV\/6+3AEUAcD+fwGB\/Sz\/\/wAV\/yQCFwLfAiYAdwAAAAcA+ACrAAD\/\/wAV\/yQCFwKeAiYAdwAAAAcA9QCVAAAAAQAkAAABoAH4AAkAADM1ASE1IRUBIRUkARf+7gFy\/ugBHUUBbUZF\/pNGAAACABUAAAH1AtAAFgAiAAAzESM1MzU0NjYzMxUjIgYVFSERIxEjEQEiJjU0NjMyFhUUBmJNTSA\/LjIlJSEBLlTaAQUYIiIYGSEhAbFHTjA9HUgeJkz+CAGx\/k8CWCEZGR8fGRkhAP\/\/ABUAAAHuAtAAJgBOAAAABwBbAVQAAAACADMBWwGhAsUAEgAfAAATIiYmNTQ2NjMyFhc3MxEjJwYGJzI2NjU0JiMiBhUUFtowTCsrSy8zRA8HPDwHDkQiITQfQzEvQ0MBWy5TNTZRLSsgRf6iRSEqNR85KD1DQzw9RAAAAgAxAVwBmgLIAA8AHwAAEyImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhbkNVEtLlE1NlEuL1I1HzMfHzMfHjMdHTIBXC5SNjdSLS1SNzZSLjcdOSkqOR4eOSopOR0AAAIAMP\/0AnwCyAAPAB8AAAUiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiMiBgYVFBYWAVdchUZGhVxcg0ZGg108XjY2Xjw8XzU1Xwxbo2xso1tbo2xso1tKRYFaWoFERIFaWoFFAAABACAAAADtArwABgAAMxEHNTczEZh4lDkCXh48QP1EAAEAQAAAAhECyAAfAAAzNT4DNTQmJiMiBgYVIz4CMzIWFhUUDgMHIRVAR4FkORo5MC8+H1EBOWRAP2A3KURTVyYBVTs4cnFsMiU\/KClDKEVjNC9cRjFiXVZMH0YAAQAz\/\/QCDwLIADEAAAUiJiYnMx4CMzI2NjU0JiYjIzUzMjY1NCYjIgYHIz4CMzIWFhUUBgYHHgIVFAYGASVDbUACVQElRjExQiIvTy80NEVOPT47RgVVAzhgQURcLxo0KClBJjVoDDFiSShDKCY\/JzE9HUdAOC4+RDU5WDEwUDAkPzAKCC5LMTlhOwACACUAAAJDArwACgANAAAhNSE1ATMRMxUjFSUhEQGI\/p0BVGJoaP6nAQqWQQHl\/iRKluABfwABAEH\/9AIpArwAJQAABSImJiczFhYzMjY2NTQmJiMiBgcjEyEVIQc2NjMyHgIVFA4CATdIaT0IUgxWQzJHJyhGLzlQFFE6AXL+zycZUzc0VDwhIT5aDDRaODhGLlAxM04rMicBfknXHSUkQlg0M1lFJwACADf\/9AI1AsgAIQAwAAAFIi4CNTQ2NjMyFhYXIyYmIyIGBgcVPgIzMhYWFRQGBicyNjY1NCYmIgYGFRQWFgFGTGg+HUB5VUJfOAZOCk07NFQxBBA5UDE7aEE5bFAuSSkpSVxKKytKDDlfeD50r2MzVjU4PUGFZwcfNiA4ZUQ7bERKKUctL0YnKkcsLUcoAAABABsAAAHxArwABgAAMwEhNSEVAYoBEf6AAdb+8gJ0SD\/9gwADAED\/9AIgAsgAHQApADUAAAUiJiY1NDY2NyYmNTQ2NjMyFhYVFAYHHgIVFAYGJzI2NTQmIyIGFRQWEzI2NTQmIyIGFRQWATBEbEAiPSg4PTZjRUZjNT04KT0hP21ET01VR0dVTk4\/SklAP0lJDDNbPCtKNwsUVDE0VDIyVDQxVBQLN0orPFszSkk8REZGRDxJAVVCNDs8PDs0QgACAD\/\/9AI9AsgAIQAwAAAFIiYmJzMWFjMyNjY3NQ4CIyImJjU0NjYzMh4CFRQGBgMyNjY1NCYmIgYGFRQWFgEvQl43Bk4KTDo1UjMDDzpPMTtpQTpsSktoPxw\/eVAuSisrSlxJKipJDDNXNDg9QINlDB82IDhlRDtsRDlfeD5zsGMBUSpIKy5GKClGLi9GJ\/\/\/ABwAAACiAWACBwCVAAD+oP\/\/ACEAAAEiAWYCBwCWAAD+oP\/\/ABr\/+wEoAWYCBwCXAAD+oP\/\/ABUAAAExAVwCBwCYAAD+oP\/\/ABwBYACiAsACBgCVAAD\/\/wAhAWABIgLGAgYAlgAA\/\/8AGgFbASgCxgIGAJcAAP\/\/ABUBYAExArwCBgCYAAAAAf\/oAAAB1AK8AAMAACMBMwEYAZdV\/mgCvP1E\/\/8AHAAAAsECwAAmAJUAAAAmAJFoAAAHAJYBn\/6g\/\/8AHAAAArICwAAmAJUAAAAmAJFoAAAHAJgBgf6g\/\/8AGgAAAxwCxgAmAJcAAAAnAJEA0gAAAAcAmAHr\/qAAAQAcAWAAogLAAAYAABMRBzU3MxFfQ1osAWABHhIqKv6gAAEAIQFgASICxgAZAAATNTc2NjU0JiMiBgcjNjYzMhYWFRQGBwczFSNwHScgFxoeBEMDQj4mNx0xL1G1AWAwXBgyIh0eHxwuQB0wHik9Izw2AAABABoBWwEoAsYAKwAAEyImJzMeAjMyNjU0JiMjNTMyNjU0JiMiBgcjPgIzMhYVFAYHFRYWFRQGoT1FBUMDEh0RHiMnHS4tHSUiHRwhBT8DITopNkojHh0nSAFbNzQVGQodGRsdKRwbGR0ZFhwtGjosHygIAgkpISg5AAIAFQFgATECvAAKAA0AABM1IzU3MxUzFSMVJzM1waykSi4uqGsBYEIy6OQ2QnicAAEAKv\/7AJ0AbQALAAAXIiY1NDYzMhYVFAZkGSEhGRkgIAUhGBghIRgYIQAAAQAE\/4UAlQBiAAMAABc3MwcEOldXe93dAP\/\/ACr\/+wCdAgQAJgCcAAAABwCcAAABl\/\/\/ABj\/hQC2AgQAJwCcABkBlwAGAJ0UAP\/\/ACr\/+wINAG0AJwCcALgAAAAnAJwBcAAAAAYAnAAAAAIARP\/7ALYCvAADAA8AADcDMwMHIiY1NDYzMhYVFAZaClsKJBghIRgaHx\/HAfX+C8whGBghIRgYIQACAET\/QwC2AgQAAwAPAAATMxMjEzIWFRQGIyImNTQ2WkcKWy0aHx8aGCEhATf+DALBIRgYISEYGCEAAgAj\/\/sB3wLIAB0AKQAANyczMj4CNTQmJiMiBgYVIzQ2NjMyFhYVFAYGIwcHIiY1NDYzMhYVFAaeBB8qTTsjJEAqKkAjUDhkQUFlOT9uSAMlGSEhGRkgIMmcCx88MCo8ICA5KDxaMjJcP0pcKmLOIRgYISEYGCEAAgAt\/zcB6QIEAB0AKQAAARcjIg4CFRQWFjMyNjY1MxQGBiMiJiY1NDY2Mzc3MhYVFAYjIiY1NDYBbgQfKk07IyRAKis\/I1A5Y0FBZTk\/b0cCJhgiIhgZICABNZsLIDswKT0gIDonPFoyMlw\/SlwqYc8hGBghIRgYIQABACoBHQCdAY8ACwAAEyImNTQ2MzIWFRQGZBkhIRkZICABHSEYGSAgGRghAAEAPADVASwBxgAPAAA3IiYmNTQ2NjMyFhYVFAYGsyA3ICA3ICI3ICA31SA3ISI3ICA3IiE3IAAAAQA+AWgBowLdABEAABM3Byc3JzcXJzMHNxcHFwcnF9EMfCOLiiF+DkQPfSCKiyF9DgFomVc9PTw7V5mZVzo+PTtWmQACAC4AAAL1AsIAGwAfAAAhNyMHIzcjNTM3IzUzNzMHMzczBzMVIwczFSMHAzM3IwGyKdIpUCmLmyKUpClQKdIpTymJmCKPnynp0iLSxcXFS6NKxcXFxUqjS8UBEKMAAQAc\/6EBagL8AAMAABcTMwMc+1P7XwNb\/KUAAAEAHP+hAWoC\/AADAAAFIwMzAWpT+1NfA1v\/\/wBIAQQB1AFLAAYA1fsAAAEASAEEAlQBSwADAAATNSEVSAIMAQRHRwAAAQBIAQQDIAFLAAMAABM1IRVIAtgBBEdHAAABAEj\/jQJM\/9wAAwAAFzUhFUgCBHNPTwABADD\/bwFPAysAEwAAFy4CNTQ2NjczFQ4CFRQWFhcV+TZcNzdcNlY9WzMzXDyRNI+yaWmykDMIPJSpXV2plDwIAAABACb\/bwFFAysAEwAAFyM1PgI1NCYmJzUzHgIVFAYGfFY9WzMzWz1WN1s3N1uRCDyUqV1dqZQ8CDOQsmlpso8AAQBU\/2gBdwMrADEAAAUiJjU0NjY1NCYmJzU+AjU0JiY1NDYzMxUjIgYVFBYWFRQGBxUWFhUUBgYVFBYzMxUBQURUCwsSLisrLhILC1RENicpLAsKNDs7NAoLLCknmEtLIjc7JhktIghECCEuGSc5NyJMSkgnLh01Oyg0TQ0CDU01Jzs1Hi4nSAAAAQA0\/2gBVwMrADEAABcjNTMyNjU0JiY1NDY3NSYmNTQ2NjU0JiMjNTMyFhUUBgYVFBYWFxUOAhUUFhYVFAZqNicpLAoLNTo6NQsKLCknNkRUCwsTLioqLhMLC1SYSCcuHjU7JzVNDQINTTQoOzUdLidISkwiNzknGS4hCEQIIi0ZJjs3IktLAAEAS\/9pAP4DKwAHAAAXETMVIxEzFUuzZGSXA8JF\/MlGAAABADz\/aQDvAysABwAAFyM1MxEjNTPvs2Rks5dGAzdFAAEABP+HAJsAagADAAAXNzMHBDleW3nj4wAAAgAE\/4cBOwBqAAMABwAAFzczBzM3MwcEOV5bZTheWnnj4+PjAAACAB4B1gFRArwAAwAHAAATNzMHIzczB7pbPDn6Wjw4Adbm5ubmAAIAHgHWAVECvAADAAcAABMHIzczByM3tVs8OfpaPDgCvObm5uYAAQAeAdYAtAK8AAMAABM3MwceWjw4Adbm5gABAB4B1gC0ArwAAwAAEwcjN7RaPDgCvObmAAIALAB4AZIB1gAFAAsAACUnNzMHFyEnNzMHFwE\/YWFTZGT++2FhU2RkeK+vr6+vr6+vAAACADIAeAGYAdYABQALAAA3IzcnMxcXIzcnMxeFU2RkU2FRU2RkU2F4r6+vr6+vrwABAC0AeADhAdYABQAANyc3MwcXjmFhU2RkeK+vr68AAAEAMwB4AOcB1gAFAAA3IzcnMxeGU2RkU2F4r6+vAAIAJgInAP0C8wADAAcAABMnMwcjJzMHuQxQCsILUAsCJ8zMzMwAAQAmAicAeQLzAAMAABMnMwczDVMMAifMzAADABT\/9ALoAsgAEwAiADEAAAUyPgI1NC4CIyIOAhUUHgITFSIGFRUzFSMmJjU0NjYzFSIGFRUzFSMmJjU0NjYBfkuDZDg4ZINLS4NkODhkgzciGz9zBwcdONIhHD9yCAceOQw4ZINLS4NkODhkg0tLg2Q4Ae8zIyMfayI7GDI+HjMjIx9rIjsYMj4eAAMAFP\/0AugCyAATACIAMQAAASIOAhUUHgIzMj4CNTQuAgM1MjY1NSM1MxYWFRQGBiM1MjY1NSM1MxYWFRQGBgF+S4NkODhkg0tLg2Q4OGSDNyIbP3MIBh050SEcP3MIBh44Asg4ZINLS4NkODhkg0tLg2Q4\/hEzIyMfayI7GDE\/HjMjIx9rIjsYMT8eAAACAEz\/OQOhAoAARABUAAAFIiYmNTQ+AjMyFhYVFA4CIyInJicGBwYjIiY1ND4CMzIXFhc3MwMGFjMyPgI1NCYmIyIOAhUUFhYzMjY3FwYGAzI2Njc2JiYjIg4CFRQWAa5poFlHgrRtbqNaGzZOMzwaEgMXIzZAS1QiP1c2PSQWCg1HMgcXJSAxIRBKiV5bl248SYhdK1UlDi1iFitGLgUFFjIoJzwqFjbHU5loarWITFWYZDpuWDUlGSEjFyVcTzdkTy4gFB5H\/uEqNS5KVilZfURCd51bXIBDERE5ExIBAS5RNidAJyM6SCY2QgAAAgAq\/\/QCxQLIADEAPgAAIScGBwYjIiYmNTQ2NzY3JicmNTQ2NjMyFhYHIzQmIyIGFRQWFxc2NzY3NzMHBgcGBxcBBgcGFRQWFjMyNzY3AltaLjE+TUdrOykpICscDxQsUTk3USwBUzknLjUkItkHCBYZH1ktGxoPDpT+NDseIidGLjsuJCVcMRgfNWBBMlUhGRIfHCYuLUcoKUgvLS8xJiA+JdwLDSIrN1AyKRYTlgFoGCQoNylCJhoUKQABACX\/nAIBArwAEAAABREjIiYmNTQ2NjMzESMRIxEBGwpRaTIzaVDwSlJkAYs1XDk6Wzb84ALe\/SIAAgAt\/xgCHALIAD0AVAAABSImJiczFBYWMxY2NTQuAicuAjU0NjcmJjU0NjYzMhYWFSM0JiYjJgYVFB4CFx4CFRQGBxYWFRYGBhM2NjU0LgInJiYnBgYVFB4DFxYWASJCZDcBWB49LjlJHTdKLTJQLRwcDQ42Y0RDYzhYHj0uOUkdN0otM08tHB0ODQE2Y0EPDyI8TSsXJhAPDxYoNkAiFyboMlg4HTglATw1IiocGA8RMUw6JUQcEy0cOVYxMlc5HTglATw1IiocGA8RMUw6JUUbEy0cOFcxAVAPJxYpMh8ZDwgRCQ8mFyAsHxcUDAcSAAADADP\/\/ALnAsAADwAtAD0AAAUiJiY1NDY2MzIWFhUUBgYnIiYmNTQ2NjMyFhcjJiYjIgYGFRQWFjMyNjczBgYHMjY2NTQmJiMiBgYVFBYWAY1nnFdXnGdnm1hYm2c7Yzs7YztKcBNNDkYtJ0AnJ0AnL0MPTRNwSl+JS0uJX16KS0uKBFugZ2igWlqgaGegW3s3aElJaDdPSi0vJ0w5OE0mLyxGUVZRj11fj1BQj19dj1EABAA0ATMBxALIAA8AHgAtADUAABMiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiIGBhUUFhY3JyMVIzUzMhYVFAcGBxcnMzI2NCYjI\/07WzMzWzs6WjMzWjoxRygoR2JJKChJWTUUL18iJxMNEjqBLA0REQ0sATM0XDo7WzU1Wzs6XDQkK0swMUorK0oxMEsrPFRU1yMfHhEMBFZ6DBwLAAACABsBXALSArwABwAUAAATNTMVIxEjERMRMxMTMxEjEQMjAxEb9VlD0lVxdlA+cjBwAoc1Nf7VASv+1QFg\/u8BEf6gAQb++gEI\/vgAAgAnAbwBLwLIAA8AGwAAEyImJjU0NjYzMhYWFRQGBicyNjU0JiMiBhUUFqskPCQlPCQkOyQkPCQYKyoYGSopAbwhPCgqPCEhPCooPCE+JCQkJCQkJCQAAAEAS\/+cAJ8C0AADAAAXETMRS1RkAzT8zAAAAgBL\/5wAnwLQAAMABwAAExEzEQMRMxFLVFRUAYMBTf6z\/hkBTf6zAAEAMf+YAgsCYAApAAAFNSYnJiY1NDY3Njc1MxUWFxYXIyYmIyIGBhUUHgIzMjY2NzMGBwYHFQECMCg5QEA5KDBRPy08EFYKTjUrSiwaLDsgJDooB1YQPC4+aF8GGCF3TlB2IhgGX18IIy9OLzQrVj8vSTAZFy4fTC8kCV8AAAIAQQBbAdQB+QApADkAACUiJyYnByc3JicmNDc2Nyc3FzY3NjMyFxYXNxcHFhcWFAcGBxcHJwYHBicyNjY1NCYmIyIGBhUUFhYBCjMnBwY7JzoEBBcXBQU8Jz0GBycyMSgGBzwnPAUFFxcFBDsnPAcHKDEXLB0dLBcYLBsbLHkWAwQ7KDoHCCdsKAcIOyg9BAQVFQQFPig8BwcobCcHBzsoPQUEFkEXMScoMRcXMSgnMRcAAAMALf+pAhYDFwAyAD0ASAAAFzUmJyYmNTMUFhcWFxEmJyYmNTQ2NzY3NTMVFhcWFhUjNCYnJicVFhceAhUUBgcGBxU1Njc2NjU0JicmJyc1BgcGBhUUFhcW\/zMoOT5YJiUUGwwNU041MiQvRS0lMThYHh4RFhESM08tNTQrPh8YISMjHhogRRQQHiEdHBJXTQYUHGRCKUUUDAUBDgQEHFRDOVYZEgRRUQUSGVc5HTgTCgTwBgYRMUw7MlkcFwRMkwMMDzYiKTMQDgts2wMHDjIkIioOCwABABf\/9ALUAsgANQAANzUzJjU0NyM1MzY3NjYzMhYXIyYmIyIGBwYHMxUhBhUUFyEVIxYXFhYzMjY3MwYGIyImJyYnF1ECAlFaChMolWZ4lhVdEGJUS24eCgf+\/vcCAgEJ\/gcKHm5LVGIQXRWWeGaVKBMK8j8WFxgWPiwmUVtyaEFPRUAWGT4WGBcWPxkVQUVNQGVyW1IlLAAAAQAuAAACHgLIADEAADM1PgI1NCcmJyM1MyYnJjU0NjYzMhYWFyMmJiMiBgYVFBYXFBczFSMWFRYVFAYHIRVYGSUVCQEBcl0MCAk2YD9HXTIDTQNHQiM9JRIMAcCtAQkjJgFtNxwzPysiHwIDOx0hIio+XDM4XTg6TR09MSNBIAEBOwECICExVSZGAAABAB8AAAI6ArwAGAAANzUzNScjNTMDMxMTMwMzFSMHFTMVIxUjNTvIHqqKpl+vr16liqoeyMhUqj0jOjwBPP6eAWL+xDw6Iz2qqgD\/\/wAc\/6EBagL8AAYAqQAAAAEALgBIAfcB\/AALAAA3NSM1MzUzFTMVIxXtv79Lv79It0e2tke3AAABAE0BBAHZAUsAAwAAEzUhFU0BjAEER0cAAAEAWgBqAcsB3AALAAA3JzcnNxc3FwcXByeMMoaAM4CGMoaBM4FqMoeBMoGHMoeAMoAAAwBMAFkB2gHtAAMADwAbAAA3NSEVByImNTQ2MzIWFRQGAyImNTQ2MzIWFRQGTAGOxhkhIRkZICAZGSEhGRkgIP9HR6YhGBghIRgYIQEiIRgYISEYGCEAAAIASwCXAdoBrwADAAcAABM1IRUFNSEVSwGP\/nEBjwFnSEjQSEgAAQBjACsBwgH4AAUAADc3JzMXB2P19Wv09Cvm5+fmAAABAGQAKwHDAfgABQAAJSMnNzMHAcNr9PRr9Svm5+cAAAIAJQAAAgAB3gALAA8AADc1IzUzNTMVMxUjFQU1IRXtyMhLyMj+7QHbfY1HjY1HjX1AQAABADoA+AHsAYgAGQAAJSIuAiMiBgcjPgIzMh4CMzI2NzMOAgFmHCwnJhYbIQVAByQ4Ix0tJiYVHCEEQAYkOPgVGxUmHTA\/HxUaFSUeMD8gAAH\/9gDfAjABsAAFAAAlNSE1IRUB3P4aAjrfjkPRAAEAJgDSAkkCvAAGAAA3EzMTIwMDJutN61a7vNIB6v4WAYf+eQAAAQBG\/yQCAwHwABYAABcRMxEUFjMyNjY1ETMRIycGBiMiJicVRlRBPytDJ1RMBRhbOR83FtwCzP7nTU4qUDkBAf4QWC42EBDwAAAFACn\/9ALpAscAAwATACMAMwBDAAAzATMBBSImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhYBIiYmNTQ2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFpEBl1T+aQFlLUgrK0gtLkcqKkguGCgZGCgYFykZGSj+ly1IKytJLS1IKipJLRgoGBgoFxcqGRkpArz9RAwpTDM0SykpSzQzTClBFy4iIy4XFy4jIi4XAUIpTDM0SykpSzQzTClBFy4iIy8XFy8jIi4XAAABACgAAAMxArwACQAAEwEzAQcBESMRASgBbi0Bbjb+21L+2gFUAWj+mDYBI\/2\/AkP+3AAAAQAoAEQCTQJqAAkAADcnASE1IRcRIxFnOAGf\/loCBSBLSTgBnksf\/fkBoAABACv\/5gLnAscACQAAEzUhATcBFQEnASsCQ\/7cNQFo\/pg2ASIBLk8BFDb+piz+pTcBEQAAAQAoAEICTQJoAAkAABMBETMRByE1IQFnAZtLIP37Aab+YQJj\/mUBoP35H0sBngAAAQAoAAADMQK8AAkAABM3AREzEQEXASMoNgEmUgElNv6SLQFoNf7cAkP9vwEjNv6YAAABACgAQgJNAmgACQAAARcBIRUhJxEzEQIOOP5hAab9+yBLAmM4\/mJLHwIH\/mAAAQAl\/+YC4QLHAAkAAAEhAQcBNQEXASEC4f3AASI2\/pgBaDX+3AJDAS7+7zcBWywBWjb+7AAAAQAoADgCTQJeAAkAACUBESMRNyEVIQECDv5lSyACBf5aAZ89AZv+YAIHH0v+YgAAAQAo\/+YDvwLHAA8AABM1ARcBIQE3ARUBJwEhAQcoAVE5\/usCrf7rOQFR\/q85ARP9VwETOQFBLAFaMv7nARky\/qYs\/qUyARj+6DIAAAEAKwAAAyECvAAPAAA3NwURBSclMwUHJRElFwUjKy8BI\/7dLwFkLQFlL\/7dASMv\/pst8TjBAezBOPHxOMH+FME48QAAAgAU\/\/QC6ALIABMAHQAABSIuAjU0PgIzMh4CFRQOAiczERc3JyMHFzcBfkuDZDg4ZINLS4NkODhkg25HfS62MbYufQw4ZINLS4NkODhjg0xLg2Q4twECey60tC57AAIAFP\/0AugCyAATAB0AAAUiLgI1ND4CMzIeAhUUDgInNxUzESchFTMHAX5Lg2Q4OGSDS0uDZDg4ZIOyu0Ej\/wC0vAw4ZINLS4NkODhjhEtLg2Q417m1AQAjQLoAAgAU\/\/QC6ALIABMAHQAABSIuAjU0PgIzMh4CFRQOAic3NScHFyEVIQcBfkuDZDg4ZINLS4NkODhkg0u2ti6A\/vgBCIAMOGSDS0uDZDg4Y4RLS4NkOJ21MrQufkN9AAIAFP\/0AugCyAATAB0AAAEyHgIVFA4CIyIuAjU0PgIHBxcjFSE3ESMVAX5Lg2Q4OGSDS0uDZDg4ZIMcL7y0AQAjQQLIOGSDS0uEYzg4ZINLS4NkONctukAjAQC1AAACABT\/9ALoAsgAEwAdAAABMh4CFRQOAiMiLgI1ND4CFxEnBxczNycHEQF+S4NkODhkg0tLg2Q4OGSDKH0utjG2Ln0CyDhkg0tMg2M4OGSDS0uDZDi3\/v57LrS0LnsBAgACABT\/9ALoAsgAEwAdAAABMh4CFRQOAiMiLgI1ND4CFwc1IxEXITUjNwF+S4NkODhkg0tLg2Q4OGSDsrtBIwEAtLwCyDhkg0tLg2Q4OGOES0uDZDjXubX\/ACNAugAAAgAU\/\/QC6ALIABMAHQAABSIuAjU0PgIzMh4CFRQOAic3JyE1ITcnBxUBfkuDZDg4ZINLS4NkODhkg0sugAEI\/viALrYMOGSDS0uEYzg4ZINLS4NkOJ0vfUN+LrQyAAIAFP\/0AugCyAATAB0AAAUiLgI1ND4CMzIeAhUUDgI3NyczNSEHETM1AX5Lg2Q4OGSDS0uDZDg4ZIMcL7y0\/wAjQQw4ZINLS4RjODhkg0tLg2Q41y26QCP\/ALUAAgAU\/\/QC6ALIABMAIwAABSIuAjU0PgIzMh4CFRQOAic3JzMHFzc1JwcXIzcnBxUBfkuDZDg4ZINLS4NkODhkg54zXPlcM4CAM1z5XDOBDDhkg0tLg2Q4OGOES0uDZDiwKHFxKKEyoShxcSihMgACABT\/9ALoAsgAEwAjAAAFIi4CNTQ+AjMyHgIVFA4CJzM3Jwc1FzcnIwcXNxUnBwF+S4NkODhkg0tLg2Q4OGOEYzGjKHJyKKMxoyhycigMOGSDS0uDZDg4ZINLS4NkOJeAM1v2WzOAgDNb9lszAAIAAAI6AQMCngALABcAABMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBjIVHR0VFB4ejBUdHRUUHR0COh0VFB4eFBUdHRUUHh4UFR0AAQAAAjsAZAKfAAsAABMiJjU0NjMyFhUUBjIUHh4UFB4eAjseFBQeHhQUHgABAAACIwDVAt8ABAAAEyc3MRfMzAzJAiN0SIAAAQAAAiMA1QLfAAQAABMnNzEXCQnJDAIjPIBIAAEAAAImARICuQAFAAARNTcXFSeJiYkCJkJRUUJUAAIAAAI6ANIDCAALABcAABMiJjU0NjMyFhUUBicyNjU0JiMiBhUUFmkrPj4rLD09LBghIRgXIiICOjcwMDc3MDA3KyEbHB8fHBshAAABAAACOgEuAqEAFQAAEyImJiMiBgcjNjYzMhYWMzI2NzMGBs4bJB8VEBcDMQczJRsjIBURFwMxBjQCOhgXFhcyMxcYFxYxNAABAAACUgFbApEAAwAAETUhFQFbAlI\/PwACAAADBwEDA2sACwAXAAATIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAYyFR0dFRQeHowVHR0VFB0dAwcdFRQeHhQVHR0VFB4eFBUdAAEAAALnANUDowAEAAATJzcxF8zMDMkC53RIfwABAAAC5wDVA6MABAAAEyc3MRcJCckMAuc9f0gAAQAAAvMBEgOGAAUAABE1NxcVJ4mJiQLzQlFRQlQAAQAAAvUBGQOFABEAABMiJiY1NTMUFjMyNjUzFRQGBowuPiAyKjAwKjMhPgL1IzskDiUpKSUOJDsjAAIAAAL5ANIDxwALABcAABMiJjU0NjMyFhUUBicyNjU0JiMiBhUUFmkrPj4rLD09LBghIRgXIiIC+TcwMDc3MDA3KyEbHB8fHBshAAABAAAC9AEuA1sAFQAAEyImJiMiBgcjNjYzMhYWMzI2NzMGBs4bJB8VEBcDMQczJRsjIBURFwMxBjQC9BgXFhcyMxcYFxYxNAACABgCOwEbAp8ACwAXAAATIiY1NDYzMhYVFAYjIiY1NDYzMhYVFAbqFR0dFRQdHbUUHR0UFR0dAjsdFRQeHhQVHR0VFB4eFBUd\/\/8AAAIjANUC3wAGAPcAAAABAAACIwDVAt8ABAAAEyc3MRcJCckMAiM8gEgAAQAQAicBIgK6AAUAABM1NxcVJxCJiYkCJ0JRUUJUAAACAA8CLQDhAvsACwAXAAATIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBZ4Kz4+Kyw9PSwYISEYFyIiAi03MDA3NzAwNyshGxwfHxwbIQAAAQAQAigBPgKPABUAABMiJiYjIgYHIzY2MzIWFjMyNjczBgbeGyQfFRAXAzEHMyUbIyAVERcDMQY0AigYFxYXMjMXGBcWMTQAAQAQAlABbAKPAAMAABM1IRUQAVwCUD8\/AAABAAD+\/QDkAAcAFAAAETUzMjY1NCYjIzUzFTYWFhUUBgYjXCMhISMxOCY6IR82I\/79NRgYFhd4RgEVLCAfLRgAAgBLAAAB3AK8AAMABwAAMxEhESUhESFLAZH+tQEF\/vsCvP1EOQJKAAIAHgAAAnoCvAAHAAoAADMBMwEjJyEHJQMDHgECWQEBWUD+1kEBUnx9Arz9RLS0+AFb\/qUA\/\/8AHgAAAnoDowImAQ0AAAAHAdUA4gAA\/\/8AHgAAAnoDhQImAQ0AAAAHAdkAwQAA\/\/8AHgAAAnoDWwImAQ0AAAAHAdwAnwAAAAIAHv81An0CvAAdACAAADMBMwEHBgYVFBYzMjY3FQYGIyImJjU0Njc2NychByUDAx4BAlkBATojHSEbDiMQECcUHjYiFhoTHjz+1kEBUnx9Arz9RBwRJBMXGggHOAYHEyoiGCsVEA+ptPgBW\/6lAAACAB4AAANWArwADwASAAAzASEVIRUhFSEVIRUhNSEHJREDHgGPAan+3wED\/v0BIf6L\/vNaAWfmArxD90L9Q5+f4gGV\/mv\/\/wAeAAADVgOjAiYBEgAAAAcB1QHGAAAAAQAw\/\/QCngLIAB0AAAUiJiY1NDY2MzIWFyMmJiMiBgYVFBYWMzI2NzMGBgF7ZpVQUJVmeJYVXRBiVEtuPDxuS1RiEF0Vlgxbo2xso1tyaEFPRYFaWoFFTUBlcv\/\/ADD\/9AKeA6MCJgEUAAAABwHVAPwAAP\/\/ADD\/9AKeA4UCJgEUAAAABwHYAN4AAP\/\/ADD\/9AKeA2ICJgEUAAAABwHTATUAAAACAEsAAAKAArwACgAVAAAzETMyFhYVFAYGIyczMjY2NTQmJiMjS857n01Nn3t6eGZ4NDR4ZngCvFWdbmycVEZDfVZYfkT\/\/wBLAAACgAOFAiYBGAAAAAcB2ACNAAD\/\/wAIAAAClQK8AgYBGwAAAAIACAAAApUCvAAOAB0AABM1MxEzMhYWFRQGBiMjERczMjY2NTQmJiMjFTMVIwhYznufTU2fe85UeGZ4NDR4ZnjJyQE3TAE5VZ1ubJxUATfxQ31WWH5E80wAAAEASwAAAfwCvAALAAAzESEVIRUhFSEVIRVLAbH+owE\/\/sEBXQK8RfRE+kX\/\/wBLAAAB\/AOFAiYBHAAAAAcB2QCYAAD\/\/wBLAAAB\/AOFAiYBHAAAAAcB2ACbAAD\/\/wBLAAAB\/ANiAiYBHAAAAAcB0wDyAAD\/\/wBLAAAB\/ANbAiYBHAAAAAYB3HYAAAEAS\/81Af8CvAAiAAAzESEVIRUhFSEVIRUHBgYVFBYzMjY3FQYGIyImJjU0Njc2N0sBsf6jAT\/+wQFdOiMdIRsOIxAQJxQeNiIWGgwRArxF9ET6RRwRJBMXGggHOAYHEyoiGCsVCgoAAgAw\/\/QCtwLIAB0AKAAABSIuAjU0NjchJicmJiMiBgcjPgIzMhYWFRQGBhMhBhYWMzI2Njc2AW5JdVQsAQECKwMcH2tEUXMWXhRWf09ik1JTlI3+KwE6aEUyV0ETEAwuVnlMDRwQUDk+Qk9IQ2U4W6RubKJZATtMazsiQTAqAAABADD\/9AK7AsgAIgAABSImJjU0NjYzMhYXIyYmIyIGBhQWFjMyNjcjNSERIycOAgF4YpRSU5lodp4WYQ5oU01zPj5vSHByCMoBIE0HGUFYDFuibGukXHFlP0pFgLKBRIRxQv6Kcyk5HQD\/\/wAw\/\/QCuwOFAiYBIwAAAAcB2QDwAAD\/\/wAw\/xICuwLIAiYBIwAAAAcB0AFMAAD\/\/wAw\/\/QCuwNiAiYBIwAAAAcB0wFKAAAAAgAoAAACxQK8ABMAFwAAEzUzNTMVITUzFTMVIxEjESERIxEzFSE1KEVUAWtURUVU\/pVUVAFrAe9MgYGBgUz+EQFC\/r4B72hoAAABAEsAAACfArwAAwAAMxEzEUtUArz9RP\/\/AEv\/9AJsArwAJgEoAAAABwEvAMIAAP\/\/\/+kAAAECA4UCJgEoAAAABgHZ6QD\/\/wBDAAAApwNiAiYBKAAAAAYB00MA\/\/\/\/xwAAASIDWwImASgAAAAGAdzHAAAB\/+H\/NgCiArwAGgAAFyImJjU0Njc2NxEzESMHBgYVFBYzMjY3FQYGVx42IhYaFiRUAjgjHSEbDiMQECfKEyoiGCsVEhECrP1EGxEkExcaCAc4BgcA\/\/\/\/6AAAARYDWwImASgAAAAGAdvoAAABABz\/9AGqArwAEgAAFyImJjUzFBYWMzI2NjURMxEUBuc\/WzFVFzMrKjEVVGcMMFo+IzkhIDcjAgP9\/V5nAAEASwAAAjECvAALAAAzETMRATMBASMDBxFLVAEkav78AQhm3k4CvP7DAT3+6f5bAWRT\/u8A\/\/8AS\/8SAjECvAImATAAAAAHAdAA9gAAAAEASwAAAeUCvAAFAAAzETMRIRVLVAFGArz9h0MA\/\/8AEAAAAeUDowImATIAAAAGAdUQAP\/\/AEsAAAHlAs0CJgEyAAAABwHIAQ\/\/+P\/\/AEv\/EgHlArwCJgEyAAAABwHQAPkAAP\/\/AEsAAAHlArwCJgEyAAAABwG7AQMACAABABQAAAH\/ArwADQAAEzU3ETMRNxUHESEVIREUUVR5eQFG\/mYBHEMfAT7+4S5DLv7pQwE7AAABAEsAAAJoArwACQAAMxEzAREzESMBEUtUAXVUVP6LArz9zwIx\/UQCMf3P\/\/8ASwAAAmgDowImATgAAAAHAdUA7wAA\/\/8ASwAAAmgDhQImATgAAAAHAdgA0QAA\/\/8AS\/8SAmgCvAImATgAAAAHAdABKgAAAAEAS\/8kAmgCvAATAAAzETMBETMRFAYGIyM1MzI2NTUBEUtUAXVUID8uNCcmIP6LArz9zwIx\/PIwPR1IHyVQAjH9zwAAAgAw\/\/QC1wLIAA8AHwAABSImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhYBg2WZVVWZZWeYVVWYZ0xzPz9zTEtzPz9zDFujbGujXFyja2yjW0pFgVpagUREgVpagUUA\/\/8AMP\/0AtcDhQImAT0AAAAHAdkA9wAA\/\/8AMP\/0AtcDhgImAT0AAAAHAdYBFQAA\/\/8AMP\/0AtcDWwImAT0AAAAHAdwA1QAAAAIASwAAAiACvAASABsAADMRMzIWFhUUBgcGBxMjAyIjIxERMzI2NTQmIyNL4lJoMjM1ExeZY44DA4qIUEtJU4cCvDdcOjheHAoG\/tMBIf7fAWNOPT5JAP\/\/AEsAAAIgA6MCJgFBAAAABwHVALcAAP\/\/AEsAAAIgA4UCJgFBAAAABwHYAJkAAP\/\/AEv\/EgIgArwCJgFBAAAABwHQAPIAAAABAC3\/9AIWAsgAMgAABSImJjUzFBYWMzI2NjU0LgInJiY1NDY2MzIWFhUjNCYmIyYGBhUUHgIXHgIVFAYGASpNcj5YJkk2L0MjIzxPK1NONWNEQ2M4WB49LiY7IR03Si0zTy01aAw4ZEIpRSkfNiIpMyAZDhxUQzlWMTJXOR04JQEbMiQiKh0YDxExTDsyWTgA\/\/8ALf\/0AhYDowImAUUAAAAHAdUAtQAA\/\/8ALf\/0AhYDhQImAUUAAAAHAdgAlwAAAAEALf78AhYCyABIAAATNTMyNjU0JiMjNSYnJiY1MxQWFjMyNjY1NC4CJyYmNTQ2NjMyFhYVIzQmJiMmBgYVFB4CFx4CFRQGBwYHFTYWFhUUBgYj5VwjISEjMT0vOT5YJkk2L0MjIzxPK1NONWNEQ2M4WB49LiY7IR03Si0zTy01NCo7JjohHzcj\/vw1GBgWF2cEFxxkQilFKR82IikzIBkOHFRDOVYxMlc5HTglARsyJCIqHRgPETFMOzJZHBYFNQEVLCAfLRj\/\/wAt\/xICFgLIAiYBRQAAAAcB0AD4AAAAAQBL\/\/sCeAK8ACcAAAUiJjUzFBYzMjY2NTQmIyM1NyMiBhURIxE0NjYzIRUHMzIWFhUUBgYBqGVqUzlDLzcYU0lzyvsmIVQgPy4Bcc4TSWk4Ml0FbGk9UihCJk1TO8kgJv3RAjIwPR1AyzNiRUNjNgAAAQAeAAACFAK8AAcAADMRIzUhFSMR79EB9tECd0VF\/YkA\/\/8AHgAAAhQDhQImAUsAAAAHAd4AfwDMAAEAHv78AhQCvAAcAAAzESM1IRUjESMVNhYWFRQGBiMjNTMyNjU0JiMjNe\/RAfbRDCY6IR82I2xcIyEhIzECd0VF\/YlAARUsIB8tGDUYGBYXcv\/\/AB7\/EgIUArwCJgFLAAAABwHQAOcAAAABAET\/9AJMArwAFQAABSImJjURMxEUFhYzMjY2NREzERQGBgFHSHVGVC1QNDVOLFRGdgw6d10Buv5FRFYoKFZEAbv+Rl13Ov\/\/AET\/9AJMA4UCJgFPAAAABwHZALsAAP\/\/AET\/9AJMA4YCJgFPAAAABwHWANkAAP\/\/AET\/9AJMA1sCJgFPAAAABwHcAJkAAAABAET\/NQJMArwALgAABSImJjU0Njc2NyYnJiY1ETMRFBYWMzI2NjURMxEUBgcGBwcGBhUUFjMyNjcVBgYBRx42IhYaBwkpIztGVC1QNDVOLFRGOyMoKyQcIRsOIxAQKMsTKiIYKxUGBgcSHXddAbr+RURWKChWRAG7\/kZddx0RBxURJBMXGggHOAYH\/\/8ARP\/0AkwDxwImAU8AAAAHAdoA3gAA\/\/8ARP\/0AkwDWwImAU8AAAAHAdsAugAAAAEAGwAAA68CvAAMAAAzAzMTEzMTEzMDIwMD28Bal6tep5laxGCnqwK8\/agCWP2mAlr9RAJD\/b3\/\/wAbAAADrwOjAiYBVgAAAAcB1QF7AAD\/\/wAbAAADrwOGAiYBVgAAAAcB1wFdAAD\/\/wAbAAADrwNrAiYBVgAAAAcB0gFlAAD\/\/wAbAAADrwOjAiYBVgAAAAcB1AF7AAAAAQAUAAACLwK8AAgAADMRAzMTEzMDEfjkX6+vXuMBCgGy\/p4BYv5O\/vb\/\/wAUAAACLwOGAiYBWwAAAAcB1wCZAAD\/\/wAUAAACLwNrAiYBWwAAAAcB0gChAAD\/\/wAUAAACLwOjAiYBWwAAAAcB1AC3AAD\/\/wAUAAACLwNbAiYBWwAAAAcB2wCVAAAAAQAtAAAB8AK8AAkAADM1ASE1IRUBIRUtAV3+qAG6\/qIBYkICMUlC\/c9JAP\/\/AC0AAAHwA6MCJgFgAAAABwHVAKQAAP\/\/AC0AAAHwA4UCJgFgAAAABwHYAIYAAP\/\/AC0AAAHwA2ICJgFgAAAABwHTAN0AAAACADP\/9AHkAgQAIAAvAAAXIiYmNTQ2NjMzNCYmIyIGByM+AjMyFhYVESMnDgMnMj4CNTUjIgYGFRQWFuo9Uig1YUKFHTcpMEYIVgY9XjNGXS5LBQofKjUVIzkoFX4xPBoZMQwrRyozRyUvPyAwLzZJJzNbPv7IWRUlGxBHHTM+IgMXKRobKBb\/\/wAz\/\/QB5ALDAiYBZAAAAAcBywCBAAD\/\/wAz\/\/QB5AKRAiYBZAAAAAYBzl8AAAIAM\/81AecCBAA2AEUAABciJiY1NDY2MzM0JiYjIgYHIz4CMzIWFhURBwYGFRQWMzI2NxUGBiMiJiY1NDY3NjcnDgMnMj4CNTUjIgYGFRQWFuo9Uig1YUKFHTcpMEYIVgY9XjNGXS46Ix0hGw4jEBAnFB42IhYaGCoECh8qNRUjOSgVfjE8GhkxDCtHKjNHJS8\/IDAvNkknM1s+\/sgcESQTFxoIBzgGBxMqIhgrFRQTRhUlGxBHHTM+IgMXKRobKBYAAwAz\/\/QDZwIEADUAQwBLAAAXIiYmNTQ2NjMzNCYmIyIGByM+AjMyFhc2NjMyFhYVFRQHIR4CMzI2NzMOAiMiJicOAicyNjY3NSMiBgYVFBYWJSEmJiMiBgbsPlIpNV9AiBw2KC1ECFcGPVsyQVoYIGA6SGY3Af5+Ai1HJjhEEFIMPFs6Q2ofFDpMJytDKQN\/LzsaGS8BEgEwBFM9JkQtDCtHKjNHIzBAIDAvNkknMCssL0JrPhULDjtOJzUuMU0sPzciNh5HLUorDxYnGxooF\/FFTCFA\/\/8AM\/\/0A2cC3wImAWgAAAAHAcYBXwAAAAEAMf\/0AgsCBAAfAAAFIiYmNTQ2NjMyFhcjJiYjIgYGFRQeAjMyNjY3MwYGASlHcUBAcUdaeBBWCk41K0osGiw7ICQ6KAdWEHkMQndOUHZDXU4vNCtWPy9JMBkXLh9MXwD\/\/wAx\/\/QCCwLfAiYBagAAAAcBxgCzAAD\/\/wAx\/\/QCCwLGAiYBagAAAAcBygCVAAD\/\/wAx\/\/QCCwKfAiYBagAAAAcBxADsAAAAAgAx\/\/QCLQLQABIAIgAABSImJjQ2NjMyFhcRMxEjJw4CJzI2NjU0JiYjIgYGFRQWFgEkSW48PG9JPl0ZVEwHEDJGJDJMKipMMjFMKipMDEV4mHdEMi0BK\/0wUxkrG0kwVTo5VjAwVjk6VTD\/\/wAx\/\/QCuwLhACYBbgAAAAcByAJYAAwAAgAx\/\/QCewLQABoAKgAAATUzNTMVMxUjESMnDgIjIiYmNDY2MzIWFzUDMjY2NTQmJiMiBgYVFBYWAUuOVE5OTAcQMkYuSW48PG9JPl0ZqzJMKipMMjFMKipMAjpBVVVB\/cZTGSsbRXiYd0QyLZX+AzBVOjlWMDBWOTpVMAAAAgAx\/\/QCDQIEABwAJQAABSImJjU0NjYzMhYWFRUUByEWFxYWMzI2NzMOAgMhJiYjIgYHBgEjR20+PW9ISmc3Af53AxQWSSo1RQ9TDDxZ2gE3A1VAK0kWEQxCd09QdkJCa0AVCw41JSoqLygtSCkBNkVOJyUe\/\/8AMf\/0Ag0CwwImAXEAAAAHAcsAlQAA\/\/8AMf\/0Ag0CxgImAXEAAAAHAcoAmAAA\/\/8AMf\/0Ag0CnwImAXEAAAAHAcQA7wAA\/\/8AMf\/0Ag0CkQImAXEAAAAGAc5zAAACADH\/QAINAgQANAA9AAAFIiYmNTQ3NjcmJyYmNTQ2NjMyFhYVFRQHIRYXFhYzMjY3MwYGBwYHBwYGFRQWMzI2NxUGBgMhJiYjIgYHBgFDHjYiCwsZLyc3Pj1vSEpnNwH+dwMUFkkqNUUPUww8LAwMIiMdIRsOIxAQJ9MBNwNVQCtJFhHAEyoiGBYVFQYYIXdPUHZCQmtAFQsONSUqKi8oLUgUBgQQESQTFxoIBzgGBwHqRU4nJR4AAgAr\/\/QCCAIEABsAJAAAATIWFhUUBgYiJiY1NTQ3ISYnJiYjIgYHIz4CEyEWFjMyNjc2ARVHbT8+bpJoNwEBigMUF0kqNUQQUw07Wtr+yQJVQCtJFxECBEJ2UE93QkJsPxULDjYlKSovKS5HKv7KRk0nJh4AAAMAJv8YAhMCBAAyAEIATgAABSImJjU0Njc2NyYnJic1NyYnJjQ2NjMyFzMVBxYXFhQGBiMiJwcWFx4CFx4CFRQGBgMGBwYVFBYWMjY2NTQmJyY3MjY1NCYjIgYVFBYBDURpOhMYCxEUDhIOVhYOFy9YPywjuF8DAxcuWD8qIjQEAwoiPTJFUyUvYp4nDRAmRFY+IjRJOCk2Pj42NUFA6CNINRc0GQ0LCAoMDRdVExkoZFAxDD8EBQUoZFEwCy4DAgcKCAQFJkAsK00yAQcTFx0YISwWGCweIy8EBMo4NjU4ODU2OAD\/\/wAm\/xgCEwLDAiYBeAAAAAcBywCAAAD\/\/wAm\/xgCEwLsAiYBeAAAAAcBzwDbAAD\/\/wAm\/xgCEwKfAiYBeAAAAAcBxADaAAAAAQAoAAACMQLQAB0AABM1MzUzFTMVIxU2NjMyFhYVESMRNCYjIgYGFREjEShNVI+PGVs2OlYuU0A9KkYoVAI6QVVVQZctNC9gSf7UASNMTSpOOf71AjoAAAIAPgAAALIC1QADAA8AADMRMxEDIiY1NDYzMhYVFAZOVCoZISEZGCIiAfj+CAJjIRkZHx8ZGSEAAQBGAAAAmgH4AAMAADMRMxFGVAH4\/gj\/\/\/\/kAAAA\/QLDAiYBfgAAAAYBy+QA\/\/\/\/wgAAAR0CkQImAX4AAAAGAc7CAAAC\/9z\/NQCiAp8AGQAhAAAXIiYmNTQ2NzY3ETMRBwYGFRQWMzI2NxUGBgImNDYyFhQGUh42IhYaFiRUOiMdIRsOIxAQJwoeHigeHssTKiIYKxUSEQHp\/ggcESQTFxoIBzgGBwMGHigeHigeAP\/\/\/9kAAAEHAqECJgF+AAAABgHN2QD\/\/wA+\/yQBgwLVACYBfQAAAAcBhADNAAAAAv\/l\/yQAtgLVAAwAGAAABzUzMjY1ETMRFAYGIxMiJjU0NjMyFhUUBhsnJiBUID8uZBkhIRkYISHcSB8lAkj9tjA9HQM\/IRkZHx8ZGSEAAf\/l\/yQApgH4AAwAAAc1MzI2NREzERQGBiMbJyYgVCA\/LtxIHyUCSP22MD0dAAEARgAAAecC0AAKAAAhAxEjETMRNzMHEwF84lRUzWfe9wEE\/vwC0P5T1eX+7f\/\/AEb\/EgHnAtACJgGGAAAABwHQAMwAAAABAEYAAACaAtAAAwAAMxEzEUZUAtD9MP\/\/AAUAAADaA7cCJgGIAAAABwHGAAUA2P\/\/AEYAAAEoAuEAJgGIAAAABwHIAMUADP\/\/AED\/EgCgAtACJgGIAAAABgHQQAD\/\/wBGAAABSQLQACYBiAAAAAcBuwCsAAAAAQAJAAAA8gLQAAsAABM1NxEzETcVBxEjEQlKVEtLVAFLQx4BJP7\/H0Qf\/nUBaQAAAQBGAAACAQIEABUAADMRMxc2NjMyFhYVESMRNCYjIgYGFRFGTAQYWTk7VjBUQz0qQicB+FgvNS9fSf7TASRMTClNOf7z\/\/8ARgAAAgEC3wImAY4AAAAHAcYAxAAA\/\/8ARgAAAgECxgImAY4AAAAHAcoApgAA\/\/8ARv8SAgECBAImAY4AAAAHAdAA7gAAAAEARv8kAgECBAAeAAAzETMXNjYzMhYWFREUBgYjIzUzMjY1ETQmIyIGBhURRkwEGFk5O1YwID8uNCcmIEM9KkInAfhYLzUvX0n+gTA9HUgfJQF0TEwpTTn+8wAAAgAx\/\/QCIQIEAA8AHwAABSImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhYBJ0ZwQEFxRkhvQUJwRytKLi1JLCpLLS1JDEF3T1F3QUF3UFB3QUgrVj9AVSsrVUA\/VisA\/\/8AMf\/0AiECwwImAZMAAAAHAcsAngAA\/\/8AMf\/0AiECwgImAZMAAAAHAccAvAAI\/\/8AMf\/0AiECkQImAZMAAAAGAc58AAABAEYAAAFZAgQADwAAMxEzFz4CMxUjIg4CFRFGTAYRNUswHyA6LRkB+GAiMBpYESZBMP78AP\/\/AEYAAAFZAt8CJgGXAAAABgHGcQD\/\/wBGAAABZQLGAiYBlwAAAAYBylMA\/\/8AQf8SAVkCBAImAZcAAAAGAdBBAAABACv\/9AHDAgQALwAABSImJiczHgIzMjY2NTQmJicuAzU0NjYzMhYXIyYmIyIGFRQWFhceAhUUBgYBBD9dNwZWBSA3KCMuFx04KCFAMh0sUzdRZAlTBTcwLzEbNScyUjMvVgwqSzMaLBsVJBUfIBMHBhQhMCMrQyZOSiYrJh8UHxYHCR47Ni9GJ\/\/\/ACv\/9AHDAt8CJgGbAAAABwHGAI4AAP\/\/ACv\/9AHDAsYCJgGbAAAABgHKcAAAAQAr\/vwBwwIEAEUAABM1MzI2NTQmIyM1JicmJiczHgIzMjY2NTQmJicuAzU0NjYzMhYXIyYmIyIGFRQWFhceAhUUBgcGBxU2FhYVFAYGI7dcIyEhIzEqIS83BlYFIDcoIy4XHTgoIUAyHSxTN1FkCVMFNzAvMRs1JzJSMy8rIywmOiEfNyP+\/DUYGBYXaAQPFUszGiwbFSQVHyATBwYUITAjK0MmTkomKyYfFB8WBwkeOzYvRhMQAzUBFSwgHy0YAP\/\/ACv\/EgHDAgQCJgGbAAAABwHQAMoAAAABACIAAAFgAnIAFAAAISImJjURIzUzNzMVMxUjERQWMzMVAQwtQiNYWAtJkpImMDYcQzkBGUd6ekf+5y8hSAD\/\/wAiAAABbQLdAiYBoAAAAAcByAEKAAgAAQAi\/vwBlgJyACkAABM1MzI2NTQmIyM1JicmJjURIzUzNzMVMxUjERQWMzMVIxU2FhYVFAYGI7JcIyEhIzERDiEjWFgLSZKSJjA2RSY6IR83I\/78NRgYFhd2BAYOQzkBGUd6ekf+5y8hSEABFSwgHy0YAP\/\/ACL\/EgFgAnICJgGgAAAABwHQAMUAAAABAD3\/9AH4AfgAFQAAFyImJjURMxEUFjMyNjY1ETMRIycGBv06Vy9UQjwqRCdUTAUXWgwuYEgBLv7bS0wpTTgBDv4IWC81AP\/\/AD3\/9AH4AsMCJgGkAAAABwHLAIwAAP\/\/AD3\/9AH4AsICJgGkAAAABwHHAKoACP\/\/AD3\/9AH4ApECJgGkAAAABgHOagAAAQA9\/zUB+wH4ACsAABciJiY1ETMRFBYzMjY2NREzEQcGBhUUFjMyNjcVBgYjIiYmNTQ2NzY3JwYG\/TpXL1RCPCpEJ1Q6Ix0hGw4jEBAnFB42IhYaGCkEF1oMLmBIAS7+20tMKU04AQ7+CBwRJBMXGggHOAYHEyoiGCsVFBNFLzUA\/\/8APf\/0AfgDCAImAaQAAAAHAcwArwAA\/\/8APf\/0AfgCoQImAaQAAAAHAc0AgQAAAAEAGAAAAuIB+AAMAAAzAzMTEzMTEzMDIwMDrJRUbHVfd2pVk1Z7fAH4\/nIBjv50AYz+CAGf\/mH\/\/wAYAAAC4gLfAiYBqwAAAAcBxgETAAD\/\/wAYAAAC4gK5AiYBqwAAAAcByQD0AAD\/\/wAYAAAC4gKeAiYBqwAAAAcBwwD8AAD\/\/wAYAAAC4gLfAiYBqwAAAAcBxQETAAAAAQAV\/yQCFwH4AAgAABcTIwMzExMzAX17HcZbpKxX\/r7cARQBwP5\/AYH9LP\/\/ABX\/JAIXArkCJgGwAAAABwHJAI0AAP\/\/ABX\/JAIXAt8CJgGwAAAABwHFAKsAAP\/\/ABX\/JAIXAqECJgGwAAAABgHNfwAAAQAkAAABoAH4AAkAADM1ASE1IRUBIRUkARf+7gFy\/ugBHUUBbUZF\/pNGAP\/\/ACQAAAGgAt8CJgG0AAAABgHGeQD\/\/wAkAAABoALGAiYBtAAAAAYBylsA\/\/8AJAAAAaACnwImAbQAAAAHAcQAsgAAAAEAKgEdAJ0BjwALAAATIiY1NDYzMhYVFAZkGSEhGRkgIAEdIRgZICAZGCEAAf\/U\/0EBTAL+ABoAAAc3MzI2NxMjNzM3NjYzByIGBwczByMDDgIjLAYWHh8EOEgGSgUJamMGPDsFBXgGejgFJEAvv0YdJgIURjBZUUcuNTBG\/ewwPRwAAAEAS\/+cAJ8C0AADAAAXETMRS1RkAzT8zAAAAQAp\/v0B6QMMAAsAABMTBzUXJzMHNxUnE+AIv78IUwi+vgj+\/QLrB0MI8PAIQwf9FQABACD\/9ALUArwAIgAABSImJzUHNTc1BzU3NTMVNxUHFTcVBxUWFjMyPgI1MxQGBgFqJVMspKSmpla3t7W1FSYTSmlCH1ZLnwwKCu4oPChrKjoq5c8uOy5rLTwtwQQEL1qEVI7AYQACACgAAAJKArwAGAAhAAA3NTM1IzUzETMyFhYVFAYGIyMVMxUjFSM1NzMyNjU0JiMjKFdXV9xSajMyaVSI399UVIdTSEhTh35DZUUBUTVcOzhcNmVDfn7tSD1BSQD\/\/wBL\/\/QD5gK8ACYBQQAAAAcBmwIjAAAAAQA1\/\/QCUwK8ACsAAAUiJjU1MjY2NzY3ITUhNDU1ITUhFSMVFBUzFSMGBw4CIxUUFjMyNjUzBgYBKmRlYHM5CQMC\/roBSv62Ah6FhYkEBQ5Bb1M4Qz45TgFnDG9jkA0nJw4RPAYHZj09ZgcGPBoWMTsZWEBNSD9jZgACAAACOgEDAp4ACwAXAAATIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAYyFR0dFRQeHowVHR0VFB0dAjodFRQeHhQVHR0VFB4eFBUdAAEAAAI7AGQCnwALAAATIiY1NDYzMhYVFAYyFB4eFBQeHgI7HhQUHh4UFB4AAQAAAiMA1QLfAAQAABMnNzEXzMwMyQIjdEiAAAEAAAIjANUC3wAEAAATJzcxFwkJyQwCIzyASAACAAACJQEjAroAAwAHAAATNzMHIzczB5JISVnKQklSAiWVlZWVAAEAAAIfAGMC1QANAAARNTI2NTUjNTMWFhUUBhoWMFgFBjQCHygTExVTGiYUNC4AAAEAAAImARICuQAFAAARNTcXFSeJiYkCJkJRUUJUAAEAAAIzARICxgAFAAATJzUXNxWJiYmJAjNSQVRUQQAAAQAAAjMBGQLDABEAABMiJiY1NTMUFjMyNjUzFRQGBowuPiAyKjAwKjMhPgIzIzskDiUpKSUOJDsjAAIAAAI6ANIDCAALABcAABMiJjU0NjMyFhUUBicyNjU0JiMiBhUUFmkrPj4rLD09LBghIRgXIiICOjcwMDc3MDA3KyEbHB8fHBshAAABAAACOgEuAqEAFQAAEyImJiMiBgcjNjYzMhYWMzI2NzMGBs4bJB8VEBcDMQczJRsjIBURFwMxBjQCOhgXFhcyMxcYFxYxNAABAAACUgFbApEAAwAAETUhFQFbAlI\/PwABAAACNgBjAuwADQAAExUiBhUVMxUjJiY1NDZjGRcwWAUGNALsKBMTFVMaJxM0LgABAAD\/EgBg\/84ADQAAFTUyNjU1IzUzFhYVFAYZFS1WBQQy7igdHA5NFCYQPDYAAQAA\/zUAwQArABcAABciJiY1NDY2NzcXBwYGFRQWMzI2NxUGBnYeNiIWMys1FTojHSEbDiMQECfLEyoiGCsqExcrHBEkExcaCAc4BgcAAgAAAwcBAwNrAAsAFwAAEyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGMhUdHRUUHh6MFR0dFRQdHQMHHRUUHh4UFR0dFRQeHhQVHQABAAAC\/gBkA2IACwAAEyImNTQ2MzIWFRQGMhQeHhQUHh4C\/h4UFB4eFBQeAAEAAALnANUDowAEAAATJzcxF8zMDMkC53RIfwABAAAC5wDVA6MABAAAEyc3MRcJCckMAuc9f0gAAgAAAvEBIwOGAAMABwAAEzczByM3MweSSElZykJJUgLxlZWVlQABAAAC8wESA4YABQAAETU3FxUniYmJAvNCUVFCVAABAAAC8gESA4UABQAAEyc1FzcViYmJiQLyUkFUVEEAAAEAAAL1ARkDhQARAAATIiYmNTUzFBYzMjY1MxUUBgaMLj4gMiowMCozIT4C9SM7JA4lKSklDiQ7IwACAAAC+QDSA8cACwAXAAATIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBZpKz4+Kyw9PSwYISEYFyIiAvk3MDA3NzAwNyshGxwfHxwbIQAAAQAAAvQBLgNbABUAABMiJiYjIgYHIzY2MzIWFjMyNjczBgbOGyQfFRAXAzEHMyUbIyAVERcDMQY0AvQYFxYXMjMXGBcWMTQAAQAAAxwBWwNbAAMAABE1IRUBWwMcPz8AAgAQAiUBMwK6AAMABwAAEzczByM3MweiSElZykJJUgIllZWVlQABABACJgEiArkABQAAEyc1FzcVmYmJiQImUkFUVEEAAAAAAAAOAK4AAwABBAkAAACoAAAAAwABBAkAAQAOAKgAAwABBAkAAgAOALYAAwABBAkAAwAyAMQAAwABBAkABAAeAPYAAwABBAkABQA6ARQAAwABBAkABgAcAU4AAwABBAkADgA2AWoAAwABBAkBCAAYAaAAAwABBAkBCQAMAbgAAwABBAkBDQAOALYAAwABBAkBFAAIAcQAAwABBAkBGgAMAcwAAwABBAkBGwAKAdgAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQA0ACAAVABoAGUAIABEAE0AIABTAGEAbgBzACAAUAByAG8AagBlAGMAdAAgAEEAdQB0AGgAbwByAHMAIAAoAGgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AZwBvAG8AZwBsAGUAZgBvAG4AdABzAC8AZABtAC0AZgBvAG4AdABzACkARABNACAAUwBhAG4AcwBSAGUAZwB1AGwAYQByADQALgAwADAANAA7AEcATwBPAEcAOwBEAE0AUwBhAG4AcwAtAFIAZQBnAHUAbABhAHIARABNACAAUwBhAG4AcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADQALgAwADAANAA7AGcAZgB0AG8AbwBsAHMAWwAwAC4AOQAuADMAMABdAEQATQBTAGEAbgBzAC0AUgBlAGcAdQBsAGEAcgBoAHQAdABwAHMAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABPAHAAdABpAGMAYQBsACAAcwBpAHoAZQBXAGUAaQBnAGgAdAAxADQAcAB0AEkAdABhAGwAaQBjAFIAbwBtAGEAbgACAAAAAAAA\/5wAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAd8AAAAkAMkBAgDHAGIArQBjAK4AkAAlACYAZAAnAOkAKABlAMgAygDLACkAKgArACwAzADNAM4AzwAtAC4ALwEDADAAMQBmADIA0ADRAGcA0wCRAK8AsAAzAO0ANAA1ADYANwA4ANQA1QBoANYAOQA6ADsAPADrAD0ARABpAGsAbABqAG4AbQCgAEUARgBvAEcA6gBIAHAAcgBzAHEASQBKAEsATADXAHQAdgB3AQQAdQBNAQUATgBPAQYAUABRAHgAUgB5AHsAfAB6AKEAfQCxAFMA7gBUAFUAVgCJAFcAWAB+AIAAgQB\/AFkAWgBbAFwA7AC6AF0AwADBAJ0AngATABQAFQAWABcAGAAZABoAGwAcAQcBCAEJAQoBCwEMAQ0BDgC8APQA9QD2AQ8BEAERARIAAwETARQAEQAPAB0AHgCrAAQAowAiAKIAwwCHAA0ABgASAD8AEACyALMAQgALAAwAXgBgAD4AQADEAMUAtAC1ALYAtwCpAKoAvgC\/AAUACgEVARYAIwAJAIgAhgCLAIoAjACDAF8A6ACEAL0ABwEXAIUAlgEYAA4A7wDwALgAIAAhAB8AkwBhAKQAQQEZAAgBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AI4AQwCNANgA3QDZANoA3gE9AT4BPwFAAUEBQgFDAUQBRQD9AP8BRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgD4AVMBVAFVAVYBVwFYAPoBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAOIBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIA5AD7AXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgC7AYcBiAGJAYoA5gGLAYwBjQGOAY8BkAGRAZIA\/gEAAZMBlAGVAQEBlgGXAZgBmQGaAZsBnAGdAPkBngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsADjAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG\/AOUA\/AHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYA5wHXAdgB2QHaAdsApgHcAIIB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoA3wDhBkFicmV2ZQRMZG90CWkubG9jbFRSSwd1bmkwMjM3BGxkb3QIb25lLmRub20IdHdvLmRub20KdGhyZWUuZG5vbQlmb3VyLmRub20Ib25lLm51bXIIdHdvLm51bXIKdGhyZWUubnVtcglmb3VyLm51bXIHdW5pMDBCOQd1bmkwMEIyB3VuaTAwQjMHdW5pMjA3NAd1bmkwMEEwAkNSEXF1b3RlZGJsbGVmdC5zczA4EnF1b3RlZGJscmlnaHQuc3MwOARFdXJvB3VuaTIyMTUHdW5pMDBCNQdhcnJvd3VwB3VuaTIxOTcKYXJyb3dyaWdodAd1bmkyMTk4CWFycm93ZG93bgd1bmkyMTk5CWFycm93bGVmdAd1bmkyMTk2CWFycm93Ym90aAlhcnJvd3VwZG4MYXJyb3d1cC5zczA4DHVuaTIxOTcuc3MwOA9hcnJvd3JpZ2h0LnNzMDgMdW5pMjE5OC5zczA4DmFycm93ZG93bi5zczA4DHVuaTIxOTkuc3MwOA5hcnJvd2xlZnQuc3MwOAx1bmkyMTk2LnNzMDgOYXJyb3dib3RoLnNzMDgOYXJyb3d1cGRuLnNzMDgHdW5pMDMwOAd1bmkwMzA3CWdyYXZlY29tYglhY3V0ZWNvbWIHdW5pMDMwMgd1bmkwMzBBCXRpbGRlY29tYgd1bmkwMzA0DHVuaTAzMDguY2FzZQ5ncmF2ZWNvbWIuY2FzZQ5hY3V0ZWNvbWIuY2FzZQx1bmkwMzAyLmNhc2UMdW5pMDMwNi5jYXNlDHVuaTAzMEEuY2FzZQ50aWxkZWNvbWIuY2FzZQkubm90ZGVmLjEDQS4xCEFhY3V0ZS4xCEFicmV2ZS4xB0FtYWNyb24HQW9nb25lawRBRS4xB0FFYWN1dGUDQy4xCkNkb3RhY2NlbnQDRC4xBkRjYXJvbgZEY3JvYXQFRXRoLjEDRS4xBkVicmV2ZQZFY2Fyb24KRWRvdGFjY2VudAdFbWFjcm9uB0VvZ29uZWsHdW5pMDE4RgNHLjEHdW5pMDEyMgpHZG90YWNjZW50BEhiYXIDSS4xAklKBklicmV2ZQdJbWFjcm9uB0lvZ29uZWsGSXRpbGRlA0ouMQNLLjEHdW5pMDEzNgNMLjEGTGFjdXRlBkxjYXJvbgd1bmkwMTNCBkxkb3QuMQNOLjEGTmFjdXRlBk5jYXJvbgd1bmkwMTQ1A0VuZwNPLjEGT2JyZXZlDU9odW5nYXJ1bWxhdXQHT21hY3JvbgNSLjEGUmFjdXRlBlJjYXJvbgd1bmkwMTU2A1MuMQZTYWN1dGUHdW5pMDIxOAd1bmkxRTlFA1QuMQZUY2Fyb24HdW5pMDE2Mgd1bmkwMjFBA1UuMQZVYnJldmUNVWh1bmdhcnVtbGF1dAdVbWFjcm9uB1VvZ29uZWsFVXJpbmcGVXRpbGRlA1cuMQZXYWN1dGULV2NpcmN1bWZsZXgJV2RpZXJlc2lzBldncmF2ZQNZLjELWWNpcmN1bWZsZXgGWWdyYXZlB3VuaTFFRjgDWi4xBlphY3V0ZQpaZG90YWNjZW50A2EuMQZhYnJldmUHYW1hY3Jvbgdhb2dvbmVrBGFlLjEHYWVhY3V0ZQNjLjEKY2RvdGFjY2VudANkLjEGZGNhcm9uA2UuMQZlYnJldmUGZWNhcm9uCmVkb3RhY2NlbnQHZW1hY3Jvbgdlb2dvbmVrB3VuaTAyNTkDZy4xB3VuaTAxMjMKZ2RvdGFjY2VudARoYmFyA2kuMQpkb3RsZXNzaS4xBmlicmV2ZQdpbWFjcm9uB2lvZ29uZWsGaXRpbGRlAmlqA2ouMQl1bmkwMjM3LjEDay4xB3VuaTAxMzcDbC4xBmxhY3V0ZQZsY2Fyb24HdW5pMDEzQwZsZG90LjEDbi4xBm5hY3V0ZQZuY2Fyb24HdW5pMDE0NgNlbmcDby4xBm9icmV2ZQ1vaHVuZ2FydW1sYXV0B29tYWNyb24Dci4xBnJhY3V0ZQZyY2Fyb24HdW5pMDE1NwNzLjEGc2FjdXRlB3VuaTAyMTkDdC4xBnRjYXJvbgd1bmkwMTYzB3VuaTAyMUIDdS4xBnVicmV2ZQ11aHVuZ2FydW1sYXV0B3VtYWNyb24HdW9nb25lawV1cmluZwZ1dGlsZGUDdy4xBndhY3V0ZQt3Y2lyY3VtZmxleAl3ZGllcmVzaXMGd2dyYXZlA3kuMQt5Y2lyY3VtZmxleAZ5Z3JhdmUHdW5pMUVGOQN6LjEGemFjdXRlCnpkb3RhY2NlbnQHc3BhY2UuMQl1bmkwMEEwLjEEQ1IuMRBwZXJpb2RjZW50ZXJlZC4xB3VuaTIxMTMHdW5pMjBCQQd1bmkyMEJEB3VuaTIwQTgHdW5pMjBCOQl1bmkwMzA4LjEJdW5pMDMwNy4xC2dyYXZlY29tYi4xC2FjdXRlY29tYi4xB3VuaTAzMEILdW5pMDMwQy5hbHQJdW5pMDMwMi4xB3VuaTAzMEMHdW5pMDMwNgl1bmkwMzBBLjELdGlsZGVjb21iLjEJdW5pMDMwNC4xB3VuaTAzMTIHdW5pMDMyNgd1bmkwMzI4DnVuaTAzMDguY2FzZS4xDHVuaTAzMDcuY2FzZRBncmF2ZWNvbWIuY2FzZS4xEGFjdXRlY29tYi5jYXNlLjEMdW5pMDMwQi5jYXNlDnVuaTAzMDIuY2FzZS4xDHVuaTAzMEMuY2FzZQ51bmkwMzA2LmNhc2UuMQ51bmkwMzBBLmNhc2UuMRB0aWxkZWNvbWIuY2FzZS4xDHVuaTAzMDQuY2FzZQAAAQAB\/\/8ADwABAAIADgAAAZ4AAAG+AAIAQgABAAkAAQALABMAAQAVABUAAQAXABsAAQAdAB8AAQAhACoAAQAtADUAAQA3ADcAAQA5AEMAAQBFAEcAAQBJAE0AAQBPAFcAAQBaAFwAAQBeAGcAAQBrAGwAAQBuAHMAAQB1AHUAAQB3AHoAAQB7AHwAAgDNAM0AAQDPANAAAQDSANIAAQD1APUAAwD3APgAAwD7APwAAwENAREAAQETARMAAQEVARcAAQEZARoAAQEdASEAAQEkASYAAQEpAS4AAQExATEAAQEzATcAAQE5ATwAAQE+AUAAAQFCAUQAAQFGAUkAAQFMAU4AAQFQAVUAAQFXAVoAAQFcAV8AAQFhAWMAAQFlAWcAAQFpAWkAAQFrAW0AAQFvAXAAAQFyAXcAAQF5AXwAAQF+AYMAAQGHAYcAAQGJAY0AAQGPAZEAAQGUAZYAAQGYAZoAAQGcAZ8AAQGhAaMAAQGlAaoAAQGsAa8AAQGxAbMAAQG1AbcAAQHBAcEAAQHDAcMAAwHFAcYAAwHNAc4AAwHRAdEAAwAIAAIAEAAYAAEAAgB7AHwAAQAEAAEBGQABAAQAAQEaAAEAAgAAAAwAAAAaAAEABQD1APcA+AD7APwAAQAFAcMBxQHGAc0BzgAAAAEAAAAKADgAdgACREZMVAAObGF0bgAeAAQAAAAA\/\/8AAwAAAAEAAgAEAAAAAP\/\/AAMAAwAEAAUABmtlcm4AJm1hcmsALm1rbWsANmtlcm4AJm1hcmsALm1rbWsANgAAAAIAAAADAAAAAgABAAQAAAACAAIABQAGAA4kWCYqJlYtsjJUAAIACAACAAoZPAABAR4ABAAAAIoB3AHcAdwB3AHcAdwB3AHcAioYXhheAmwD9AKmA1wDhgOwA7AD9AP0A\/QD9AP0A+ID9AQaBOwFMgVEBaYFpgWmBaYFpgWwBgYGYAdKB0oLBgeoB6gHqAeoB6gHqAeoCMgI4ge+B74IyAjICMgIyAjIB9gIVgi0CGQIqgi0CLQItAjiCOII4gjiCOIIwgjiCMgI4gjiCRAJGgk0CWIJwAnKCmQKegrgCuAK4AsGCwwLbgwkDIIMsA0yDagPEg+ED+4P9A\/6EAgQjBAOEHAQfhCMELYQvBDSETARqhJkE+4YrBisGKwUyBVSFigWmhbcFtwW5hcEFuYXBBciFyIXKBcoFz4X3BheGGgYbhisGLoZCBkSGSgAAgAfAAEACAAAAAoADgAIABQAFAANABwAHwAOACMAKQASACsALAAZAC4ALgAbADAARgAcAEkAUAAzAFgAWAA7AFoAWgA8AF0AbgA9AHQAegBPAH8AfwBWAIEAiABXAI0AjQBfAI8AjwBgAJEAkQBhAJUAlQBiAJwApABjAKcApwBsAKkArwBtALEAsgB0ALUAuwB2AL0AvQB9AL8AwAB+AMMAxACAANAA0ACCANIA0gCDANQA1wCEANkA2gCIABMATv\/vAHT\/zQB\/\/9gAgP\/iAIL\/7ACD\/+0AhP\/ZAIX\/3QCG\/+YAh\/\/iAIj\/2ACj\/9kAp\/+lAKr\/xACw\/94Asf\/HAMP\/7wDU\/9sA1v\/rABAAAf\/0AAL\/9AAD\/\/QABP\/0AAX\/9AAG\/\/QAB\/\/0AAj\/9AAJ\/9sAMP\/vADb\/7AA3\/+wAOP\/pADn\/4gA6\/+IAiP\/rAA4AOP\/RAG8AAABwAAAAcQAAAHIAAABzAAAAgf\/vAIb\/4gCd\/9gAqf\/XAKr\/5gCu\/9UAsP+9ALL\/4QAtAAH\/uQAC\/7kAA\/+5AAT\/uQAF\/7kABv+5AAf\/uQAI\/7kACf+IABz\/xwA8\/94APf\/eAD7\/3gA\/\/94AQP\/eAEH\/3gBC\/94AQ\/\/eAEX\/6wBG\/+sAR\/\/rAEj\/6wBJ\/+sASv\/rAEv\/6wBM\/+sATf\/rAE8AAABg\/+sAYf\/rAGL\/6wBj\/+sAZP\/rAGb\/6wBn\/+sAav\/rAGz\/7ACH\/+8AnP\/EAJ3\/xACg\/8QArv\/YAMP\/2ADE\/+wA1v\/sAAoAAf\/iAAL\/4gAD\/+IABP\/iAAX\/4gAG\/+IAB\/\/iAAj\/4gCc\/+wAoP\/sAAoAdP\/iAH\/\/6QCC\/+wAg\/\/rAIX\/5ACH\/+IAiP\/jAKP\/8gDE\/\/IA1P\/OAAwAdP+9AH\/\/2QCA\/+EAg\/\/eAIT\/6wCF\/+MAhv\/PAIj\/xwCj\/+MAp\/+jAKr\/2ADU\/8cABACc\/94AoP\/eAKn\/1wCu\/9gACQA4\/9EAgf\/vAIb\/4gCd\/9gAqf\/XAKr\/5gCu\/9UAsP+9ALL\/4QA0AAH\/qAAC\/6gAA\/+oAAT\/qAAF\/6gABv+oAAf\/qAAI\/6gACf96ABz\/swA4\/+IAOf\/0ADr\/9AA7\/+wAPP\/pAD3\/6QA+\/+kAP\/\/pAED\/6QBB\/+kAQv\/pAEP\/6QBF\/+MARv\/jAEf\/4wBI\/+MASf\/jAEr\/4wBL\/+MATP\/jAE3\/4wBP\/9sAYP\/jAGH\/4wBi\/+MAY\/\/jAGT\/4wBm\/+MAZ\/\/jAGr\/4wCD\/8cAhP\/vAIf\/9ACc\/7oAnf+tAKD\/ugCp\/7EArv+zALD\/4gDD\/9EAxP\/ZANT\/7wARAAH\/zwAC\/88AA\/\/PAAT\/zwAF\/88ABv\/PAAf\/zwAI\/88AMP+2ADb\/zwA3\/9gAOP+6ADn\/uwA6\/7sAnP\/HAKD\/xwCw\/9kABACD\/+MAhP\/sAIf\/7wDU\/+8AGAAc\/60AZf+mAGj\/zgB0\/8QAdv\/RAH\/\/2wCB\/+0Agv\/qAIP\/xACH\/94AiP\/vAJ3\/sACf\/80Aov\/RAKMAFACk\/58Aqf\/DAKoABACu\/8QAsf\/iAMP\/nwDE\/84A1P\/FANb\/xAACAKn\/4gCu\/9gAFQAc\/8QAdP\/vAH\/\/2QCB\/+YAgv\/vAIP\/qgCE\/+YAhf\/eAIYAFACH\/90AiP\/kAJ3\/uQCe\/+IAov\/hAKn\/sQCqAAYArv+dAMP\/pQDE\/8QA1P\/HANb\/uwAWABz\/2AAo\/+wAZf\/NAHT\/7wB\/\/9gAgf\/mAIL\/6gCD\/84AhP\/eAIX\/2ACH\/9gAiP\/jAJ3\/xACf\/+EAov\/iAKn\/xACu\/7oAsf\/iAMP\/sADE\/84A1P\/HANb\/1QA6AAv\/0QAM\/9EAFf\/RACP\/0QAk\/9EAJf\/RACb\/0QAn\/9EAKf\/RACr\/0QAt\/9EAPP\/rAD3\/6wA+\/+sAP\/\/rAED\/6wBB\/+sAQv\/rAEP\/6wBF\/+EARv\/hAEf\/4QBI\/+EASf\/hAEr\/4QBL\/+EATP\/hAE3\/4QBPAAAAYP\/hAGH\/4QBi\/+EAY\/\/hAGT\/4QBm\/+EAZ\/\/hAGr\/4QBs\/+8Ab\/\/pAHD\/6QBx\/+kAcv\/pAHP\/6QB0\/+IAdf\/iAHf\/6wB4\/+sAef\/rAH\/\/1wCC\/+wAg\/\/OAIT\/1wCF\/9kAh\/\/YAIj\/2ACj\/+sAw\/\/mANb\/2QAXABz\/rwAo\/88AdP\/WAH\/\/2ACB\/+YAgv\/RAIP\/tgCE\/9EAhf\/PAIf\/zwCI\/9kAnf\/AAJ7\/4QCf\/9wAov\/hAKT\/pwCp\/8MArv+6ALH\/zgDD\/5IAxP+6ANT\/uQDW\/8QABQBEAAAAdP\/tAIb\/5gCn\/98Aqv\/XAAYAdP\/wAIb\/7wCj\/+IAp\/\/pAKr\/1QCw\/\/wAHwA8\/+wAPf\/sAD7\/7AA\/\/+wAQP\/sAEH\/7ABC\/+wAQ\/\/sAEX\/7ABG\/+wAR\/\/sAEj\/7ABJ\/+wASv\/sAEv\/7ABM\/+wATf\/sAE\/\/2ABg\/+wAYf\/sAGL\/7ABj\/+wAZP\/sAGb\/7ABn\/+wAav\/sAGz\/7QCD\/+wAnP\/iAKD\/4gDD\/9sAAwBYABQAdAADAKoAAAARAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAGAAAABhAAAAYgAAAGMAAABkAAAAZgAAAGcAAABqAAAAAgBRAAAAbP\/jAAMAdP\/2AKf\/6QCq\/9gAAQB0\/+oABgB0\/+wAdv\/pAIb\/2QCj\/+wAp\/\/pAKr\/zQALAHT\/5wB2\/+sAgP\/YAIb\/uwCI\/+8Ao\/\/iAKf\/3gCp\/\/UAqv+xALD\/1wCy\/84AAgBYABoAqv\/ZAAYAZf\/tAGwAAACBAAcAggADAJ3\/4QCeABEACwB0\/+UAd\/\/rAHj\/6wB5\/+sAgP\/vAIb\/0QCI\/+wAo\/\/jAKf\/2wCq\/84AsP\/9ABcARf\/0AEb\/9ABH\/\/QASP\/0AEn\/9ABK\/\/QAS\/\/0AEz\/9ABN\/\/QAYP\/0AGH\/9ABi\/\/QAY\/\/0AGT\/9ABm\/\/QAZ\/\/0AGr\/9AB0\/88Ad\/\/SAHj\/0gB5\/9IAhv\/ZAKf\/xAACAIEAHgCdADQAJgA8\/+cAPf\/nAD7\/5wA\/\/+cAQP\/nAEH\/5wBC\/+cAQ\/\/nAEX\/5wBG\/+cAR\/\/nAEj\/5wBJ\/+cASv\/nAEv\/5wBM\/+cATf\/nAE4AFABP\/+sAYP\/nAGH\/5wBi\/+cAY\/\/nAGT\/5wBl\/+oAZv\/nAGf\/5wBq\/+cAbP\/mAG4AAwCBAAMAg\/\/sAJz\/2ACd\/84AoP\/YAKT\/0QDD\/88AxP\/tAAUAg\/\/vAIf\/7wCd\/+IApP\/mAMP\/2AAZADz\/\/QA9\/\/0APv\/9AD\/\/\/QBA\/\/0AQf\/9AEL\/\/QBD\/\/0ARf\/rAEb\/6wBH\/+sASP\/rAEn\/6wBK\/+sAS\/\/rAEz\/6wBN\/+sAYP\/rAGH\/6wBi\/+sAY\/\/rAGT\/6wBm\/+sAZ\/\/rAGr\/6wAJAGX\/1wCD\/+IAhgAEAJ3\/wwCk\/8UAqf\/YAMP\/xQDE\/\/0A1v\/vAAEAg\/\/mABgAAf\/YAAL\/2AAD\/9gABP\/YAAX\/2AAG\/9gAB\/\/YAAj\/2AAJ\/9IAMP\/bADb\/2QA3\/9gAOP\/XADn\/2AA6\/9gAgf\/2AIb\/8gCc\/9gAnf\/iAKD\/2ACp\/9gAqv\/ZAK7\/xACw\/9kALQAL\/\/YADP\/2ABX\/9gAj\/\/YAJP\/2ACX\/9gAm\/\/YAJ\/\/2ACn\/9gAq\/\/YALf\/2ADD\/6gA2\/94AN\/\/mADn\/1QA6\/9UARf\/vAEb\/7wBH\/+8ASP\/vAEn\/7wBK\/+8AS\/\/vAEz\/7wBN\/+8ATgADAGD\/7wBh\/+8AYv\/vAGP\/7wBk\/+8AZv\/vAGf\/7wBq\/+8AdAADAHYAAwB\/\/\/YAg\/\/vAIb\/7wCH\/+8AiP\/2AKgABADU\/+YA1v\/vANf\/5gAXAAH\/2AAC\/9gAA\/\/YAAT\/2AAF\/9gABv\/YAAf\/2AAI\/9gACf\/jADD\/3gA2\/9sAN\/\/iADj\/2AA5\/88AOv\/PAID\/7wCG\/+8AiP\/jAKf\/7ACp\/9EAqv\/ZAMP\/4wDg\/+8ACwAw\/9gANv\/bADf\/6wA5\/+IAOv\/iAHf\/6wB4\/+sAef\/rAKf\/1QDEACcA4P\/8ACAAAf\/VAAL\/1QAD\/9UABP\/VAAX\/1QAG\/9UAB\/\/VAAj\/1QAJ\/94AMP\/vADb\/3gA3\/94AOP\/YADn\/0gA6\/9IAT\/\/9AHX\/7wB3\/+8AeP\/vAHn\/7wCB\/+8Ahv\/vAIj\/4wCn\/+EAqAAEAKn\/4gCu\/88AuP\/rALr\/6wC\/\/+8AwP\/vAMP\/5gAdAAH\/2QAC\/9kAA\/\/ZAAT\/2QAF\/9kABv\/ZAAf\/2QAI\/9kACf\/RADD\/3gA2\/94AN\/\/YADj\/0AA5\/8UAOv\/FAE\/\/7wCB\/+YAhP\/sAIb\/5gCI\/+wAnP\/ZAKD\/2QCn\/+EAqf\/ZAKr\/5QCu\/9gAsP\/iAMP\/5gDg\/+8AWgAB\/6kAAv+pAAP\/qQAE\/6kABf+pAAb\/qQAH\/6kACP+pAAv\/5gAM\/+YAFf\/mABz\/2AAj\/+YAJP\/mACX\/5gAm\/+YAJ\/\/mACj\/5QAp\/+YAKv\/mAC3\/5gA2ABQANwADADz\/3gA9\/94APv\/eAD\/\/3gBA\/94AQf\/eAEL\/3gBD\/94ARf\/FAEb\/xQBH\/8UASP\/FAEn\/xQBK\/8UAS\/\/FAEz\/xQBN\/8UATgADAE\/\/1ABS\/+YAXf\/mAF7\/5gBf\/+YAYP\/FAGH\/xQBi\/8UAY\/\/FAGT\/xQBm\/8UAZ\/\/FAGj\/3gBq\/8UAa\/\/mAGz\/wQB\/\/\/IAgAAEAIH\/5gCC\/+YAg\/\/FAIT\/4wCF\/+YAh\/\/vAIj\/5gCc\/8QAnf\/OAJ\/\/2wCg\/8QApP++AKn\/qQCr\/94ArP\/eAK3\/3gCu\/8cAtf\/EALb\/xAC7\/88Avf\/PAL8AHgDAAB4Aw\/+ZAMT\/0QDN\/9kA1P\/mANX\/3gDW\/+YA1\/\/eANr\/2wAcAAH\/4gAC\/+IAA\/\/iAAT\/4gAF\/+IABv\/iAAf\/4gAI\/+IACf\/jADD\/3gA2\/90AN\/\/YADj\/2AA5\/88AOv\/PAHX\/7wCA\/+wAgf\/vAIb\/5gCI\/+MAp\/\/iAKn\/3gCq\/9kArv\/VALD\/1wC4\/+wAuv\/sAMP\/5gAaAAH\/0AAC\/9AAA\/\/QAAT\/0AAF\/9AABv\/QAAf\/0AAI\/9AACf\/PADD\/3gA2\/+IAN\/\/ZADj\/zQA5\/84AOv\/OAID\/7wCB\/+8Agv\/vAIb\/5gCH\/+8AnP\/iAKD\/4gCp\/84Aqv\/iAK7\/zgCw\/98AAQCR\/5wAAQCR\/4gAAwCK\/4gAiwAAAIz\/agABAI8AAAAYAAv\/7AAM\/+wAFf\/sACP\/7AAk\/+wAJf\/sACb\/7AAn\/+wAKf\/sACr\/7AAt\/+wAMP+wADb\/uQA3\/80AOf+2ADr\/tgBu\/+IAdP\/PAHX\/4gB3\/80AeP\/NAHn\/zQCq\/8sA4P\/UAAMANv\/iADn\/4QA6\/+EAAwAw\/88AOf\/9ADr\/\/QAKAHT\/2AB\/\/9gAgP\/pAIX\/4gCG\/+IAiP\/iAKP\/2QCq\/8QAsf\/OANr\/xAABAKf\/+gAFADD\/0QA2\/+EAN\/\/iADn\/4QA6\/+EAFwAB\/7oAAv+6AAP\/ugAE\/7oABf+6AAb\/ugAH\/7oACP+6AAn\/nQAc\/88AOP\/sAJz\/pQCd\/7oAoP+lAKT\/kgCp\/7kArv+mALD\/ygC1\/9gAtv\/YALwAAAC+AAAAw\/\/HAB4AMP\/FADn\/xQA6\/8UARf\/sAEb\/7ABH\/+wASP\/sAEn\/7ABK\/+wAS\/\/sAEz\/7ABN\/+wAYP\/sAGH\/7ABi\/+wAY\/\/sAGT\/7ABm\/+wAZ\/\/sAGr\/7AB0\/+YAegAUAIX\/2QCG\/+YAiP\/mAKP\/2QCq\/+EAtQAnALYAJwDg\/+gALgAB\/6UAAv+lAAP\/pQAE\/6UABf+lAAb\/pQAH\/6UACP+lAAn\/jwAc\/7sAPP\/yAD3\/8gA+\/\/IAP\/\/yAED\/8gBB\/\/IAQv\/yAEP\/8gBF\/+kARv\/pAEf\/6QBI\/+kASf\/pAEr\/6QBL\/+kATP\/pAE3\/6QBg\/+kAYf\/pAGL\/6QBj\/+kAZP\/pAGb\/6QBn\/+kAav\/pAGz\/4wCD\/5wAhP\/fAIX\/4QCH\/+IAof\/6AKT\/pgCp\/5gArv+gAMP\/zQDE\/9cAYgAKADkAC\/\/iAAz\/4gANADkADwA5ABAAOQARADkAEgA5ABMAOQAUADkAFf\/iABYAOQAXADkAGAA5ABkAPAAaACsAGwA5ABz\/2AAdADkAHgA5AB8AOQAgADkAIQA5ACIAOQAj\/+IAJP\/iACX\/4gAm\/+IAJ\/\/iACj\/4gAp\/+IAKv\/iACsAOQAsADkALf\/iAC4AOQAwABQANgAeADcAAwA5ABUAOgAVADz\/zQA9\/80APv\/NAD\/\/zQBA\/80AQf\/NAEL\/zQBD\/80ARf\/RAEb\/0QBH\/9EASP\/RAEn\/0QBK\/9EAS\/\/RAEz\/0QBN\/9EAT\/\/fAFL\/7gBd\/+4AXv\/uAF\/\/7gBg\/9EAYf\/RAGL\/0QBj\/9EAZP\/RAGb\/0QBn\/9EAav\/RAGv\/7gBs\/+IAf\/\/sAIL\/2QCD\/7sAhP\/iAIX\/4wCH\/94AiP\/ZAJz\/igCd\/8QAoP+KAKT\/wwCn\/\/oAqf+IAKv\/wACs\/8AArf\/AAK7\/awC1\/6cAtv+nAMP\/oADE\/84AywA5AMwAOQDU\/8cA1f\/AADYAC\/\/vAAz\/7wAV\/+8AI\/\/vACT\/7wAl\/+8AJv\/vACf\/7wAp\/+8AKv\/vAC3\/7wAw\/\/kANv\/EADf\/xwA5\/7oAOv+6AEX\/8gBG\/\/IAR\/\/yAEj\/8gBJ\/\/IASv\/yAEv\/8gBM\/\/IATf\/yAGD\/8gBh\/\/IAYv\/yAGP\/8gBk\/\/IAZv\/yAGf\/8gBq\/\/IAf\/\/jAIX\/4QCG\/+YAh\/\/ZAIj\/4gCdADkAo\/\/iAKr\/dwCr\/+IArP\/iAK3\/4gCuACkAtQAvALYALwC3\/7MAuP+6ALn\/swC6\/7oAv\/+lAMD\/pQDV\/+IAIgAL\/9UADP\/VABX\/1QAj\/9UAJP\/VACX\/1QAm\/9UAJ\/\/VACn\/1QAq\/9UALf\/VADD\/xAAx\/9gAMv\/YADP\/2AA0\/9gANf\/YADb\/nQA3\/7oAOf+6ADr\/ugBYAAgAf\/\/EAID\/zQCD\/80AhP\/VAIX\/sQCG\/94Ah\/\/VAIj\/ugCj\/88Ap\/+gAKr\/WgDE\/9gANQAB\/94AAv\/eAAP\/3gAE\/94ABf\/eAAb\/3gAH\/94ACP\/eAAv\/vQAM\/70AFf+9ACP\/vQAk\/70AJf+9ACb\/vQAn\/70AKf+9ACr\/vQAt\/70APP\/XAD3\/1wA+\/9cAP\/\/XAED\/1wBB\/9cAQv\/XAEP\/1wBF\/9cARv\/XAEf\/1wBI\/9cASf\/XAEr\/1wBL\/9cATP\/XAE3\/1wBg\/9cAYf\/XAGL\/1wBj\/9cAZP\/XAGb\/1wBn\/9cAav\/XAGz\/7ABu\/+8Af\/\/ZAIP\/2QCF\/+IAh\/\/XAIj\/4QDD\/9kAxP\/YABwAC\/\/hAAz\/4QAV\/+EAI\/\/hACT\/4QAl\/+EAJv\/hACf\/4QAp\/+EAKv\/hAC3\/4QBF\/84ARv\/OAEf\/zgBI\/84ASf\/OAEr\/zgBL\/84ATP\/OAE3\/zgBg\/84AYf\/OAGL\/zgBj\/84AZP\/OAGb\/zgBn\/84Aav\/OABAAAf\/HAAL\/xwAD\/8cABP\/HAAX\/xwAG\/8cAB\/\/HAAj\/xwAJ\/70AMP\/iADf\/4gA5\/84AOv\/OAJz\/zgCd\/+EAoP\/OAAIAo\/\/9AKr\/rwAHABz\/sACD\/7oAhP\/hAIf\/7wCk\/68Aqf+cAMP\/pwAHABz\/vgCD\/9wAhP\/XAIf\/2ACp\/4kAw\/+cAMT\/zQABAIb\/2QAFABz\/ugCD\/8sAhP\/iAIYAHgDD\/7AAJwAB\/9MAAv\/TAAP\/0wAE\/9MABf\/TAAb\/0wAH\/9MACP\/TAAn\/xAAw\/8cANv\/EADf\/1wA4\/8cAOf+nADr\/pwB1\/+8Ad\/\/sAHj\/7AB5\/+wAgP\/\/AIH\/2wCC\/+wAg\/\/vAIb\/wACH\/+YAnP\/iAJ3\/3wCg\/+IAo\/\/iAKf\/3wCp\/84Aqv\/OAK7\/xACw\/7sAv\/\/PAMD\/zwDZ\/88A2v\/iAOD\/2AAgAAv\/\/QAM\/\/0AFf\/9ACP\/\/QAk\/\/0AJf\/9ACb\/\/QAn\/\/0AKf\/9ACr\/\/QAt\/\/0AMP\/VADb\/zQA3\/+EAOf\/DADr\/wwB0\/\/0Adf\/9AHf\/\/QB4\/\/0Aef\/9AIP\/\/ACG\/+YAiP\/sAKP\/2ACn\/9oAqv\/VALj\/+AC6\/\/gAv\/\/SAMD\/0gDg\/+kAAgA4\/+wAsP\/iAAEAhgAVAA8AAf\/bAAL\/2wAD\/9sABP\/bAAX\/2wAG\/9sAB\/\/bAAj\/2wAw\/8UANv\/HADf\/xwA5\/7kAOv+5AIb\/zACp\/9EAAwCG\/8UAqf\/PAKr\/zwATAAH\/6wAC\/+sAA\/\/rAAT\/6wAF\/+sABv\/rAAf\/6wAI\/+sACf\/MADD\/xAA2\/7sAN\/\/VADj\/2QA5\/8QAOv\/EAHf\/7wB4\/+8Aef\/vAIb\/3gACAID\/5gCG\/94ABQCG\/9gAnP\/EAKD\/xACw\/8UAw\/+9AAIAsP\/YAMP\/2AACCAgABAAACK4J0gAiAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+wAAAAAAAD\/7AAAAAD\/\/f\/vAAAAAAAAAAAAAAAA\/9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/84AAP\/PAAAAAP\/nAAAAAP\/cAAAAAAAAAAD\/z\/\/iAAAAAAAAAAD\/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9gAAAAAAAD\/7QAAAAD\/6\/\/sAAAAAAAAAAAAAAAA\/9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/z\/\/sAAAAAAAAAAAAAAAAAAAAAAAA\/+X\/2P\/s\/+IAAP\/1AAAAAP+3\/8QAAP+6AAD\/2f+x\/+IAAP\/WAAAAAAAAAAAAAAAA\/8P\/nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/\/EAAAAAAAD\/9gAAAAAAAP\/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/\/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+8AAP\/hAAAAAP\/9AAAAAP\/vAAAAAAAAAAD\/7AAAAAAAAAAAAAAAAAAAAAAAAAAA\/+v\/vwAA\/+IAAAAAAAAAAP+c\/8P\/4v+6AAD\/4v+R\/7sAAP\/OAAAAAAAAAAAAAP\/S\/8T\/iAAAAAAAAAAA\/6n\/z\/+3AAD\/2f\/l\/7cAAAAA\/+z\/2AAA\/7r\/7wAA\/8X\/r\/\/i\/+z\/f\/+tAAAAAAAAACcAAAAAAAAAAAAA\/9EAAP\/hAAAAAAAAAAAAAAAAAAAAAAAA\/+MAAAAAAAD\/4QAAAAAAAP+5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/iAAAAAP\/vAAAAAP\/vAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAAAA\/83\/5\/\/PAAD\/7\/\/y\/7oAAAAAAAD\/7wAA\/9kAAAAA\/9n\/1wAAAAD\/n\/+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+sAAAAAAAD\/7QAAAAAAAP\/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+0AAP\/uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAP\/eAAAAAAAAAAAAAAAAAAAAAAAA\/6b\/3P+2AAD\/x\/\/O\/7EAAAAA\/87\/7wAA\/7v\/ywAA\/87\/pv\/e\/9n\/nf+wAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+IAAP\/FAAAAAP\/ZAAAAAP\/OAAAAAAAAAAAAAAAAAAAAAAAAAAD\/2QAAAAAAAAAA\/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/9AAAAAAAAP\/YAAAAAAAAAAAAAAAAAAAAAAAA\/\/IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+IAAP\/yAAAAAAAAAAAAAP\/jAAAAAP\/v\/+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4wAAAAAAAAAA\/9\/\/1\/\/qAAAAAP\/vAAAAAAAA\/84AAAAA\/\/b\/4gAA\/8QAAP\/rAAAAAAAA\/9gAAAAAAAAAAAAAAAAAAAAAAAD\/4gAA\/+wAAAAAAAAAAP+t\/9gAAP+6AAD\/3v+wAAAAAAAAAAAAAAAAAAAAAP+3AAD\/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9wAAP\/8AAAAAAAAAAAAAAAAAAAAAAAA\/+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9UAAAAAAAAAAAAA\/8MAAAAAAAAAAAAAAAAAAAAAAAD\/2AAAAAD\/owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/7\/\/5f\/IAAD\/4\/\/0\/58AAAAAAAD\/4gAA\/8cAAAAA\/9n\/w\/\/sAAD\/gv+wAAAAAAAAAAAAAAAAAAAAAgAbAAEACAAAAAsADgAIABUAGwAMAB0AJwATACkAKQAeAC4ANwAfADkARwApAEkATQA4AE8AUAA9AFoAWwA\/AF0AZABBAGYAaQBJAGsAbABNAG4AbgBPAHUAdQBQAHcAegBRAIAAgABVAJwAnABWAKAAoABXAKsArQBYALgAuABbALoAuwBcAL0AvQBeAL8AwABfAMsAzABhAM8A0ABjANUA1QBlAAIAMAABAAgABQALAAwACAANAA4AAgAVABUAGQAdAB0AGwAeAB8ACQAjACcAAgApACkAAgAuAC4AGgAvAC8ADAAwADAAEgAxADUABAA2ADYAIQA3ADcADQA5ADoACgA7ADsAEwA8AEIABgBDAEMAAQBEAEQAAwBFAEYADgBHAEcADwBJAE0AAQBPAE8AFQBQAFAABwBaAFoAHgBbAFsADwBdAF8ABwBgAGQAAwBmAGYAAwBnAGcAAQBoAGkAAwBrAGsAFgBsAGwAEABuAG4AFwB1AHUAEQB3AHkACwB6AHoAGACcAJwAHACgAKAAHACrAK0AFAC4ALgAIAC6ALoAIAC7ALsAHQC9AL0AHQC\/AMAAHwDPAM8ADADQANAACADVANUAFAACADQAAQAIAAgACQAJABUACgAKAAEACwAMAAMADQANAAEADwAUAAEAFQAVAAMAFgAbAAEAHQAiAAEAIwAnAAMAKQAqAAMAKwAsAAEALQAtAAMALgAuAAEALwAvAAwAMAAwABAAMQA1AAUANgA2ABsANwA3AA0AOQA6AAoAPABDAAQARABEAAkARQBNAAIATwBPABIAUABQAAkAUQBRAB0AUgBSAAYAWgBbAAkAXQBfAAYAYABkAAIAZgBnAAIAagBqAAIAawBrAAYAbABsAA4AbgBuABMAbwBzAAcAdQB1AA8AdwB5AAsAegB6ABQAewB7ABwAnACcABYAoACgABYAqwCtABEAuwC7ABcAvAC8ABgAvQC9ABcAvgC+ABgAvwDAABoAywDMAAEAzwDPAAwA1QDVABEA4ADgABkABAAAAAEACAABAeAADAABDiAAlAACABYAAQAJAAAACwATAAkAFQAVABIAFwAbABMAHQAfABgAIQAqABsALQA1ACUANwA3AC4AOQBDAC8ARQBHADoASQBNAD0ATwBQAEIAUgBXAEQAWgBcAEoAXgBnAE0AawBsAFcAbwBzAFkAdQB1AF4AdwB6AF8AzQDNAGMAzwDQAGQA0gDSAGYAZwvUC84L1AvUC9QLzgvUC9QA0AvsC+wL8gv4C\/4A1gv+C\/4A1gwKDBAA3AwQDBAA3AwcDCgMKAw6DDoMQADiDEAMQADiDEAMQADoDEAMdgxMDFIMWADuDFgMWADuDGQMdgxwDIIMiAD0DIgMiAD0DIgMiAD6DKAMoAymDKwBAAysDKwBAAzKAQYM1gEMDNYM1gzWAQwM6Az0DPQNBg0GDQwBEg0MDQwBEgEYDQwBHg0eDSoNMAEkDTANMAEkDTwNTg1IDU4NWgygDEwBKgEwAAECMQK8AAEBJAOjAAEAdQOjAAEBgwOjAAECAQK8AAEBRwOjAAEBDQLdAAEBygH4AAEBIQLdAAEAcgLQAAEAcALdAAEBKgLdAAEBKwH4AAEB6gH4AAEBGALdAAEBnQK8AAEBLQK8AAYAEAABAAoAAAABAAwAGgABDEwMegABAAUA9QD3APgA+wD8AAEAAgD3APgAAgAIAAIACgAuAAEAFAAEAAAABQAeAB4AHgAeAB4AAgABATMBNwAAAAEBIv\/iAAIEqAAEAAAFdgZGABwAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAP\/sAAD\/\/f\/vAAAAAAAAAAAAAAAAAAAAAAAAAAD\/zgAA\/88AAAAA\/+cAAAAA\/9wAAAAAAAD\/zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/2AAAAAAAAP\/tAAD\/6\/\/sAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/zwAAAAD\/5f\/Y\/+z\/4gAA\/\/UAAAAA\/7f\/xAAA\/7oAAP\/Z\/7EAAP\/WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/8QAAAAAAAP\/2AAAAAP\/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7wAA\/+EAAAAA\/\/0AAAAA\/+8AAAAAAAD\/7AAAAAD\/6\/+\/AAD\/4gAAAAAAAAAA\/5z\/w\/\/i\/7oAAP\/i\/5EAAP\/OAAAAAAAAAAD\/qf\/P\/7cAAP\/Z\/+X\/twAAAAD\/7P\/YAAD\/uv\/vAAD\/r\/\/i\/+z\/fwAAAAD\/0QAA\/+EAAAAAAAAAAAAAAAAAAAAAAAD\/4wAAAAD\/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+IAAAAA\/+8AAAAA\/+8AAAAAAAAAAAAAAAD\/zf\/n\/88AAP\/v\/\/L\/ugAAAAAAAP\/vAAD\/2QAAAAD\/1wAAAAD\/nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/6wAAAAAAAP\/tAAAAAP\/qAAAAAAAAAAD\/7QAA\/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAAAAAAD\/pv\/c\/7YAAP\/H\/87\/sQAAAAD\/zv\/vAAD\/u\/\/LAAD\/pv\/e\/9n\/nQAAAAAAAP\/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/9AAAAAAAAAAAAAD\/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAA\/\/IAAAAAAAAAAAAA\/+MAAAAA\/+\/\/7wAAAAAAAAAAAAAAAAAAAAD\/3\/\/X\/+oAAAAA\/+8AAAAAAAD\/zgAAAAD\/9v\/iAAAAAP\/rAAAAAAAAAAD\/3AAA\/\/wAAAAAAAAAAAAAAAAAAAAAAAD\/4wAAAAAAAAAAAAAAAAABAGUBDQEOAQ8BEAERARUBFgEXARkBGgEiASQBJgEqASsBLAEtAS4BMQEzATQBNQE2ATcBOQE6AT4BPwFAAUIBQwFGAUcBSAFMAU0BTgFQAVEBUgFTAVQBVQFXAVgBWQFaAVwBXQFeAV8BYQFiAWMBZQFmAWcBaQFrAWwBbQFvAXABcgFzAXQBdQF2AXcBeQF6AXsBhwGJAYsBjwGQAZEBlAGVAZYBmAGZAZoBnAGdAZ4BnwGhAaIBowGsAa0BrgGvAbEBsgGzAbUBtgG3AAIAIgENAREABQEVARcACAEZARoAAgEiASIAAgEkASQAGAEmASYAGAExATEAGgEzATcACQE+AUAAAgFCAUMAGQFGAUgADAFMAU4AEgFQAVUABAFXAVoADQFcAV8ACgFhAWMAEwFlAWcABgFpAWkAAQFrAW0ADgFvAW8ADwFwAXAAAwFyAXcAAQF5AXsAFAGHAYcAGwGJAYkADwGLAYsADwGPAZEABwGUAZYAAwGYAZoAFQGcAZ8AEAGhAaMAFgGsAa8AEQGxAbMACwG1AbcAFwACACYBDQERAAgBEwETABQBFQEXAAMBGQEZAAEBHQEhAAEBJAEkAAMBJgEmAAMBKgEsAAEBLgEuAAEBMQExAAEBMwE2AAEBOQE6AAEBPgFAAAMBQgFDAAEBRgFIAAwBTAFOABABUAFVAAUBVwFaAA0BXAFfAAoBZQFnAAQBaQFpAAQBawFtAAIBbwFwAAIBcgF3AAIBeQF7ABEBfgF+AAYBhwGHAAkBiQGJAAkBiwGLAAkBjwGRAAYBlAGWAAIBmAGaAAYBnAGfAA4BoQGjABIBpQGqAAcBrAGvAA8BsQGzAAsBtQG3ABMABAAAAAEACAABAAwAHAACAPIBEgABAAYBwwHFAcYBzQHOAdEAAgAjAQ0BEQAAARMBEwAFARUBFwAGARkBGgAJAR0BIQALASQBJgAQASkBLgATATEBMQAZATMBNwAaATkBPAAfAT4BQAAjAUIBRAAmAUYBSQApAUwBTgAtAVABVQAwAVcBWgA2AVwBXwA6AWEBYwA+AWUBZwBBAWkBaQBEAWsBbQBFAW8BcABIAXIBdwBKAXkBfABQAX4BgwBUAYcBhwBaAYkBjQBbAY8BkQBgAZQBlgBjAZgBmgBmAZwBnwBpAaUBqgBtAawBrwBzAbEBswB3AbUBtwB6AAYAAAPqAAAD8AAAA\/AAAAP2AAAD\/AABABoAAQC+AAAAfQH8AgIB9gICAfwCAgH8AgIB\/AICAggAAAIOAAACFAAAAhQAAAIaAAACIAAAAiYCLAImAiwCJgIsAiYCLAImAiwCMgAAAjIAAAIyAAACOAI+AjgCPgI4Aj4COAI+AjgCPgI4Aj4CRAAAAkoAAAJQAAACUAAAAlAAAAJWAAACXAAAAmIAAAJiAAACYgAAAmgAAAJoAAACaAAAApgAAAKeAAACngAAAm4AAAJ0AAACdAAAAnQAAAJ6AAACegAAAnoAAAKAAoYCgAKGAoAChgKAAoYCgAKGAoAChgKSAAACjAAAAowAAAKSAAACngAAAp4AAAKYAAACngAAAqQAAAKqAAACqgAAArACtgKwArYCsAK2ArwAAALCAAACyAAAAsgAAALOAAACzgAAAtQC2gLUAtoC1ALaAtQC2gLUAtoC4ALmAvIAAALsAAAC8gAAAvgAAAL+AwQC\/gMEAv4DBAL+AwQC\/gMEAAADCgMQAAADFgAAAxwAAAMcAAADHAAAAyIAAAMoAAADLgAAAy4AAAM0AzoDNAM6AzQDOgNAAAADRgAAA0YAAANMAAADUgAAA1IAAANSAAADWANeA1gDXgNYA14DWANeA1gDXgNYA14DagAAA2QAAANkAAADagAAA3YAAANwAAADdgAAA3wAAAOCAAADggAAAAEBTQOjAAEBTQK8AAECegAAAAECMQOjAAEBZwOjAAEBZwK8AAEBFgK8AAEBKwK8AAEBJAK8AAEB\/AAAAAEBfAK8AAEAdQK8AAEAnwABAAEBJgK8AAEAewOjAAEAewK8AAEAlQK8AAEBWgOjAAEBWgK8AAEBgwK8AAEBIAOjAAEBIAK8AAEBGQK8AAEBRwK8AAEBjwAAAAEB5gK8AAEB5gOjAAEBIgOjAAEBIgK8AAEBDwOjAAEBDwK8AAEBDQH4AAEB5AAAAAEBygLdAAEBHgLdAAEBHgH4AAEBPALQAAEBIQH4AAEBiwAMAAEBFwAAAAEArQHsAAEBDQLwAAEBDAH4AAEAoQLQAAEAcAH4AAEAmgAAAAEAogABAAEA\/ALQAAEAcAO2AAEAcALQAAEAfQLQAAEBLwLdAAEBLwH4AAEBKgH4AAEBlAADAAEA3ALdAAEA3AH4AAEA+QLdAAEA+QH4AAEBGAH4AAEB+AAAAAEBfQH4AAEBfQLdAAEBFgLdAAEBFgH4AAEA5ALdAAEA5AH4AAYAEAABAAoAAQABAAwAGgABACIAUAABAAUBwwHFAcYBzQHOAAEAAgHFAcYABQAAABYAAAAcAAAAHAAAACIAAAAoAAEAgQH4AAEAawH4AAEAlwH4AAEArgH4AAIABgAGAAEAawLdAAEAAAAKARYDDAACREZMVAAObGF0bgAkAAQAAAAA\/\/8ABgAAAAEAAgADAAQABQA0AAhBWkUgAEhDQVQgAFxDUlQgAHBLQVogAIRNT0wgAJhST00gAKxUQVQgAMBUUksgANQAAP\/\/AAcABgAHAAgACQAKAAsADAAA\/\/8ABwANAA4ADwAQABEAEgATAAD\/\/wAHABQAFQAWABcAGAAZABoAAP\/\/AAcAGwAcAB0AHgAfACAAIQAA\/\/8ABwAiACMAJAAlACYAJwAoAAD\/\/wAHACkAKgArACwALQAuAC8AAP\/\/AAcAMAAxADIAMwA0ADUANgAA\/\/8ABwA3ADgAOQA6ADsAPAA9AAD\/\/wAHAD4APwBAAEEAQgBDAEQARWNhbHQBymNjbXABuGRub20B2GZyYWMB3mxpZ2EB5G51bXIB8GNhbHQBymNjbXABoGRub20B2GZyYWMB3mxpZ2EB5GxvY2wBrG51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wB6m51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wBsm51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wB6m51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wB6m51bXIB8GNhbHQBymNjbXABuGRub20B2GZyYWMB3mxpZ2EB5GxvY2wBwm51bXIB8GNhbHQBymNjbXABuGRub20B2GZyYWMB3mxpZ2EB5GxvY2wBwm51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wB6m51bXIB8GNhbHQBymNjbXAB0GRub20B2GZyYWMB3mxpZ2EB5GxvY2wB6m51bXIB8AAAAAQAAAACAAIADAAAAAEADwAAAAEABAAAAAMAAAACAAwAAAACAA8ADgAAAAEACwAAAAIAAAACAAAAAQAIAAAAAQAJAAAAAQAKAAAAAQADAAAAAQAHABAAIgByAIgArgDCAQQBJAFEAVIBagGmAc4FPgWQBawFxgAGAAAAAQAIAAIAVgUsABAAIAACAAAANgACAAIAUQBRAAEAWABYAAEAAQD1AAgAAQAAAAEAAQAAAAAAAQABAAEABAAAAAEAAQABAAEAAAABAAEAAAABAAgAAQAGAAEAAQACAFEAWAACAAAAAQAIAAEACgACABIAGAABAAIAewB8AAIATgBRAAIATgBbAAEAAAABAAgAAQAGAAUAAQABAFEABgAAAAEACAABAAoAAgASACYAAQACAB4AWwABAAQAAAACAKUAAQAeAAEAAAAGAAEABAAAAAIApQABAFsAAQAAAAUABAAAAAEACAABABIAAQAIAAEABABcAAIApQABAAEAWwAEAAAAAQAIAAEAEgABAAgAAQAEAB8AAgClAAEAAQAeAAEAAAABAAgAAQAUAA0AAQAAAAEACAABAAYACQACAAEAgACDAAAABAAAAAEACAABACwAAgAKACAAAgAGAA4AkwADAKkAgwCSAAMAqQCBAAEABACUAAMAqQCDAAEAAgCAAIIABAAIAAEACAABABoAAQAIAAIABgAMAHsAAgBRAHwAAgBbAAEAAQBOAAQAAAABAAgAAQNgAAIACgMMABQAKgBcAI4AwADyASQBUAF4AZ4BxAHmAggCKgJMAm4CkAKsAsQC2gLwAPMAGABrAGsAYAB1AK4AWwBJAE4AbgCuAGsAUQBPAFAAbgCuAGsAYABvAF4ARwBJAFsA7AAYAGsAawBgAHUArgBeAGAAawBuAFAArgBJADwAbABuAK4AawBgAG8AXgBHAEkAWwDyABgAawBrAGAAdQCuAF4AYABrAG4AUACuAHUASQBsAG4ArgBrAGAAbwBeAEcASQBbAO4AGABrAGsAYAB1AK4AbABgAG8AbgBQAK4ASQA8AGwAbgCuAGsAYABvAF4ARwBJAFsA8AAYAGsAawBgAHUArgBsAGAAbwBuAFAArgB1AEkAbABuAK4AawBgAG8AXgBHAEkAWwD0ABUAawBrAGAAdQCuAG8AaACuAEcAYAB1AF4ArgBrAGAAbwBeAEcASQBbAO0AEwBrAGsAYAB1AK4AawBRAE8AUABuAK4AawBgAG8AXgBHAEkAWwDvABIAawBrAGAAdQCuAEcAYAB1AF4ArgBrAGAAbwBeAEcASQBbAPEAEgBrAGsAYAB1AK4AWwBJAE4AbgCuAGsAYABvAF4ARwBJAFsA6QAQAGsAawBgAHUArgBbAEkATgBuAK4AawBRAE8AUABuAOIAEABrAGsAYAB1AK4AXgBgAGsAbgBQAK4ASQA8AGwAbgDoABAAawBrAGAAdQCuAF4AYABrAG4AUACuAHUASQBsAG4A5AAQAGsAawBgAHUArgBsAGAAbwBuAFAArgBJADwAbABuAOYAEABrAGsAYAB1AK4AbABgAG8AbgBQAK4AdQBJAGwAbgDrABAAawBrAGAAdQCuAG8AaACuAGsAYABvAF4ARwBJAFsA6gANAGsAawBgAHUArgBvAGgArgBHAGAAdQBeAOMACwBrAGsAYAB1AK4AawBRAE8AUABuAOUACgBrAGsAYAB1AK4ARwBgAHUAXgDnAAoAawBrAGAAdQCuAFsASQBOAG4A4QAIAGsAawBgAHUArgBvAGgAAgAGAC4AwgATAG8AYABuAEkArgBFAFsAYABsAEkArgBrAGAAbwBeAEcASQBbAMEAEgBvAGAAbgBJAK4AYABoAEkAXgCuAGsAYABvAF4ARwBJAFsAAQACADwAagAGAAAAAQAIAAIAWgAQABQAHAACAAAAOAACAAAAAQGBAAEAAQACAAQBwwHDAAEBxQHGAAEBzQHOAAEB0QHRAAIAAQAEAAAAAQABAAEAAQAAAA0AAgAAAAEACAABAAgAAQAOAAEAAQGBAAIBfgHRAAEAAAABAAgAAQAGAAEAAQAEAUgBTQGeAaIAAQAAAAEACAACABwACwENAQ4BDwG4AbkBugHDAcUBxgHNAc4AAQALAAEAAgADAJkAmgCbAPUA9wD4APsA\/A==\";\nconst FONT_BOLD = \"AAEAAAAOAIAAAwBgR0RFRlNNTHcAAIhEAAAB5kdQT1PypTz5AACKLAAAMypHU1VCUl1cGgAAvVgAAAkQT1MvMmI4FnsAAAFoAAAAYGNtYXCkLHfBAAAJRAAABCZnYXNwAAAAEAAAiDwAAAAIZ2x5ZiOov+cAABEsAABoaGhlYWQwrgOLAAAA7AAAADZoaGVhB8gDiAAAASQAAAAkaG10eNbeRzkAAAHIAAAHfGxvY2GQzKstAAANbAAAA8BtYXhwAewAtQAAAUgAAAAgbmFtZUQ9ZMsAAHmUAAACmHBvc3Qv2HwOAAB8LAAADA8AAQAAAAQBBrdG8H1fDzz1AAED6AAAAADm2F9wAAAAAObYX3D\/xv70BB8DzgAAAAYAAgAAAAAAAAABAAAD4P7KAAAET\/\/G\/o8EHwABAAAAAAAAAAAAAAAAAAAB3wABAAAB3wBVAAUAXgAEAAEAAAAAAAAAAAAAAAAAAwABAAQCPgJYAAUAAAKKAlgAAABLAooCWAAAAV4AMgEvAAAAAAAAAAAAAAAAgAAALwAAAEoAAAAAAAAAAEdPT0cAwAANIhUD4P7KAAAD9AE2IAAAkwAAAAAB+AK8AAAAIAAYAh4ARwK4ABkCuAAZArgAGQK4ABkCuAAZArgAGQK4ABkCuAAZA6cAGQJ0AEcC3AAuAtwALgK9AEcCzAAGAkIARwJCAEcCQgBHAkIARwJCAEcCJgBHAwQALgLAAEcBBQBHAQUAEAEF\/\/IBBf\/vAQUAEAIRAB0CeQBHAiUARwIlAEcDaQBHAs4ARwLOAEcDDQAuAw0ALgMNAC4DDQAuAw0ALgMJABwDDQAuBE8ALgJcAEcCXABHAw0ALgJsAEcCVQAtAksAHAKkAEACpABAAqQAQAKkAEACpABAArcAEQPrABoCigAhAmoAEAJqABACNwAwAj4AMwI+ADMCPgAzAj4AMwI+ADMCPgAzAj4AMwOnADMChgBDAlQAMgJUADIChgAyAnoAMgJQADICUAAyAlAAMgJQADICUAAyAWoAFAJJACoCXQBDAQgAOAD+AEMA\/gANAP7\/7wD+\/+wA\/gBDAP4ADQEJ\/+MA+P\/jAiwAQwD+AEMBrABDA54AQwJcAEMCXABDAl0AMgJdADICXQAyAl0AMgJdADICUwAgAl0AMgPRADIChgBDAoYAQwKGADIBjQBDAgsAKAK4AEQBpQAgAlwAPAJcADwCXAA8AlwAPAJcADwCKgATAyMAEwIlABQCTgAUAk4AFAJOABQB4QAiAlQAFAJoABQB8gAzAd4AMgK6AC4BXAAfAkEANgJXADECfgArAmoAQQJ5ADMCGAAcAnEAPQJ5ADwA5AAZAWAAIQFcABUBVQAZAOQAGQFgACEBXAAVAVUAGQHp\/\/YDRAAZAx8AGQN7ABUA5AAZAWAAIQFcABUBVQAZAPQAAAD0AAACWAAAAOwAKwDjABEA7wArAQcAHQKMACsBIwBGASMARgIWACECFgAqAOwAKwF7ADkB9wBEA0kAJAGhABgBoQAYAjUATAKwAEwDiQBMAsIATAGLAC4BiwAhAcoAVgHKADwBZgBHAWYAOADrABEBpwARAawAHgGsAB4A8gAeAPIAHgHvACoB7wAyAS0ALAEtADQBWAAnALoAJwL8ABQC\/AAUBAoATAL\/ACkCeQAhAmAALQMUAC4B\/AAvAzIAGwFlACYBBQBHAQUARwJUADICKAA\/AlUALQMQABYCbAAqAnwAGQGfABgCOwAtAjsATgI7AFgCOwBKAjsASwI7AGACOwBgAjsAKAI7ACYCO\/\/3ApUAJAJlAEMDZAAqA2gAJAKGACwDDAAqAooALANwACgCigAsAwwAJgKKACwDxgAoAzcAKgL8ABQC\/AAUAvwAFAL8ABQC\/AAUAvwAFAL8ABQC\/AAUAvwAFAL8ABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQARAOQAAADkAAABOgANAPcADAFtAAsBiwANAP8AAAIeAEcCuAAZArgAGQK4ABkCuAAZArgAGQOnABkDpwAZAtwALgLcAC4C3AAuAtwALgK9AEcCvQBHAswABgLMAAYCQgBHAkIARwJCAEcCQgBHAkIARwJCAEcC9QAuAwQALgMEAC4DBAAuAwQALgL+ACABBQBHAvEARwEF\/+oBBQBHAQX\/ygEF\/+wBBf\/dAhEAHQJ5AEcCeQBHAiUARwIlABYCJQBHAiUARwIlAEcCPgAWAs4ARwLOAEcCzgBHAs4ARwLOAEcDDQAuAw0ALgMNAC4DDQAuAmwARwJsAEcCbABHAmwARwJVAC0CVQAtAlUALQJVAC0CVQAtAs0ARwJLABwCSwAcAksAHAJLABwCpABAAqQAQAKkAEACpABAAqQAQAKkAEACpABAA+sAGgPrABoD6wAaA+sAGgPrABoCagAQAmoAEAJqABACagAQAmoAEAI3ADACNwAwAjcAMAI3ADACPgAzAj4AMwI+ADMCPgAzA6cAMwOnADMCVAAyAlQAMgJUADICVAAyAoYAMgLpADICqgAyAlAAMgJQADICUAAyAlAAMgJQADICUAAyAlAALAJJACoCSQAqAkkAKgJJACoCgAAdAQgAOAD+AEMA\/v\/nAP7\/xgD+\/+kA\/v\/UAe8AOAEJ\/+MA+P\/jAiwAQwIsAEMA\/gBDAP4ADQFgAEMA\/gBDAawAQwEaAAoCXABDAlwAQwJcAEMCXABDAlYAQwJdADICXQAyAl0AMgJdADIBjQBDAY0AQwGNAEMBjQBDAgsAKAILACgCCwAoAgsAKAILACgBpQAgAaUAIAGlACABpQAgAlwAPAJcADwCXAA8AlwAPAJcADwCXAA8AlwAPAMjABMDIwATAyMAEwMjABMDIwATAk4AFAJOABQCTgAUAk4AFAHhACIB4QAiAeEAIgHhACIA9AAAAPQAAAJYAAAA7AArAU7\/zAEFAEcCRgAtAzcAFwKFAB8ETwBHAm4ALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXUADQE6AA0AAAABAAMAAQAAAAwABAQaAAAAYgBAAAUAIgANAC8AOQB+AKwBBwEbASMBMwE3AUgBWwFlAX4BjwGSAf0CGwI3AlkCxwLaAt0DAQMEAwgehR6eHvMe+SAUIBogHiAgICIgJiA6IEQgqCCsILogvSETISIhkSGTIhIiFf\/\/AAAADQAgADAAOgCgAK4BCgEeASYBNgE5AUoBXgFoAY8BkgH8AhgCNwJZAsYC2gLcAwADAwMIHoAenh7yHvggEyAYIBwgICAiICYgOSBEIKggrCC5IL0hEyEiIZEhkyISIhX\/\/wCOAAAATwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/kwAqAAAAAP9O\/x4AAP4uAAD99\/34\/e0AAOKsAAAAAOCZAAAAAOGe4ITgeuCE4E3hGeAkAADhA+Cq36ffUN9S3sPevgABAAAAYAAAAHwBBAEcAc4B8AH6AhQCFgI0AlYCZAAAAAACjAKOAAAAAAKQAAACkAAAAAAAAAKMAAAClAKWAAAClgKaAAAAAAAAAAAAAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAmQChAL8AqADPAOAAxADAAK8AsACnANQAnQCrAJwAqQCeAJ8A2gDYANkAowDDAAEACgALAA0ADwAUABUAFgAXABwAHQAeACAAIQAjACsALQAuAC8AMAAxADYANwA4ADkAOwCzAKoAtADeAK4BBQA8AEQARQBHAEkATgBPAFAAUQBYAFoAWwBdAF4AYABoAGoAawBsAG4AbwB0AHUAdgB3AHoAsQDLALIA3ACaAKIAzQDRAM4A0gDMAMYBBADHAH0AuwDdAMgBCgDKANsAlgCXAQYA3wDFAKUBCwCVAH4AvACTAJIAlACkAAYAAgAEAAgABQAHAAkADAATABAAEQASABsAGAAZABoADgAiACcAJAAlACkAJgDWACgANQAyADMANAA6ACwAbQBAAD0APgBCAD8AQQBDAEYATQBKAEsATABXAFMAVABVAEgAXwBkAGEAYgBmAGMA1wBlAHMAcABxAHIAeABpAHkBEAFmAAMBZQERAWcBFQFrARcBbQEWAWwBGQFvARoBcAEgAXUBHQFyAR8BdAEhAXYBHgFzASQBeQEmAXsBJQF6AScBfAEuAYIBLAGAASoBfwEtAYEBKwBSASkBgwExAYcBMwGJATUBiwE0AYoBNgGMATcBjQE5AY8BOwGRAToBkAE8AZIBQAGWAT4BlAE\/AZUAKgBnAUIBmAFEAZoBQwGZAUYBnAFIAZ4BRwGdAU0BogFMAaEBVQGqAVIBpwFQAaUBVAGpAVEBpgFTAagBWAGtAVwBsQFdAWEBtQFjAbcBYgG2ARMBaQFJAZ8BTgGjAQcB3gEJAd0BWgGvAVcBrAFZAa4BXgGyAV8BswC5ALoAtQC3ALgAtgHCAb8AAAAAABQALwA7AEcAUwBfAGsAdwCDAKUA3QELAVQBdwGkAboBxgHSAd4B6gH+AjMCSwJXAmICbQJ4AoMCogK8AssC1wLxAwcDEwNFA1EDXQNpA3UDygPWBBkEPARgBJ0ExwURBSIFRgVSBV4FagV2BYoFpgW\/BdMF3wX1BjkGRQZRBl0GaQZ1BoAG6wcjB1QHoAfUCCMIXghqCHYIggiOCK0JGwk+CVoJZglxCXwJhwmSCZ0JxAnbCfEJ\/QoJCkIKZQpxCqMKrwq7CscK0wsgCywLigvAC\/cMLgxIDI4M3Az7DR8NKw03DUMNTw1hDX0NlA2qDbYNwg3YDgoOFg5IDnoOrA68DuoPMA9LD4QPzQ\/fEC0QdRB+EIcQkBCZEKEQqRCxELkQxxDXEOcQ9xEIETERbhGGEYYRhhGGEZwRqRG1EcER0RHuEgsSRxKFEpsStxLZEwgTFhMjEysTNxNDE08TcBOQE9UUGRQqFDsUSBRbFG8UgxSQFJ0UtxTPFN8U7hUBFQ4VVBWbFhEWbhaMFwYXXxeuF9IX\/hgLGB8YXRi3GSQZcBmvGdUZ3RnxGf0aFhpCGlUaZRp1Go8atxrGGtka\/htkG34blButG8Ub3hv1HA8cJxxJHGkcmBzGHPQdIx1SHYEdrx3dHhQeSx5wHoYelB6iHrEe1x77HwcfLB86H0gfVx90H5ofvh\/jH+sf+SAJIC8gUyBgIIAglCCvILsgxyDTIQshLSE5IWchcyF\/IYshriG6IcIh7yIFIhEiHSIpIjQiaCKnItwi6CL0IwAjJSMxIz0jSCNTI14jiSOUI7MjzSPZI+gj8yP\/JAskFyQxJEckUyRfJGskjSS\/JMsk1yTjJQ0lGSUlJTEleyWHJZMl+CYEJj0mTiZaJoMmjyazJr8myybXJx0nKSc1J1EnXSdpJ3UngSeVJ6EnrSe5J8Un2yfnJ\/Mn\/yhDKE8oWii7KSYpMiljKW8peymHKbspxyoEKj8qSypXKmMqbirKKwUrcyt+K4orlivCK94r6iv1LAAsOCxDLE8sdiyNLKMsryy7LMcs0yzeLOotAS0kLTAtPC1ILXYtqC20LcAtyy3lLfAt+y4GLkwuWC5jLsQu0C7vLvsvMy8\/L2Mvby97L4Yvxy\/TL94v+jAGMBIwHjAqMEAwTDBYMGMweTCEMI8wmzCbMJswmzCxMN0w6jEDMTYxZTFxMaoxzzHlMfMyATIUMiwyOzJLMmgyjjKyMr4y1jLuMxUzOjNQM14zbDN\/M44znjO7M+E0BTQRNCQ0NAACAEcAAAHYArwAAwAHAAAzESERJSERIUcBkf61AQX++wK8\/UQ5AkoAAgAZAAACnwK8AAcACgAAMwEzASMnIQcBAwMZAQCGAQB\/Ov7qOgEvamoCvP1EpaUBBAEs\/tT\/\/wAZAAACnwO2AiYAAQAAAAcA\/wDqAAD\/\/wAZAAACnwOSAiYAAQAAAAcBAQDEAAD\/\/wAZAAACnwOUAiYAAQAAAAcBAADMAAD\/\/wAZAAACnwN5AiYAAQAAAAcA\/QDJAAD\/\/wAZAAACnwO2AiYAAQAAAAcA\/gDqAAD\/\/wAZAAACnwPOAiYAAQAAAAcBAgDsAAD\/\/wAZAAACnwNqAiYAAQAAAAcBAwC3AAAAAgAZAAADcAK8AA8AEgAAMwEhFSEVMxUjFSEVITUjByURAxkBfgHZ\/u709AES\/nb+TQFLywK8X8xc1l+OjusBdP6MAAADAEcAAAJIArwAEwAbACQAADMRITIWFhQGBwYHFhcWFhUUBgYjJzMyNjQmIyM1MzI2NTQmIyNHARJKYzIuJRMTHholLDVmSqSSO0JEO5CJOjw8O4gCvC5RakgTCQYGEBhNLzdXMWI4ZDtbNS8uNQAAAQAu\/\/QCrgLIAB0AAAUiJiY1NDY2MzIWFyMmJiMiBgYVFBYWMzI2NzMGBgF+aJdRUZdofZ4VhA5WSUJfMzNfQklWDoQUnwxbo2tso1x7cDtEPXNPT3E9PzhqeQABAC7++AKuAsgAMgAAATUzMjY1NCYjIzUmJyYmNTQ2NjMyFhcjJiYjIgYGFBYWMzI2NzMGBwYHFTIWFhUUBgYjARxsHRwcHTpKOUxRUZdofZ4VhA5WSUJfMzNfQklWDoQUT0drIzskIzsj\/vhGEhUSEm4IIy2ja2yjXHtwO0Q9c55xPT84ajw2BisVLyQjLxgAAAIARwAAAo8CvAAKABUAADMRMzIWFhUUBgYjJzMyNjY1NCYmIyNH4nqfTU2fempkW2ktLWlbZAK8Vp1sap1WZjtvTU5vPQACAAYAAAKeArwADgAdAAATNTMRMzIWFhUUBgYjIxEXMzI2NjU0JiYjIxUzFSMGT+J6oE1NoHrieGRbai0taltktLQBKmcBK1adbGqdVgEqxDtvTU5vPcZnAAABAEcAAAILArwACwAAMxEhFSEVIRUhFSEVRwHE\/rQBLv7SAUwCvGHJX9Jh\/\/8ARwAAAgsDtgImAA8AAAAHAP8AtwAA\/\/8ARwAAAgsDlAImAA8AAAAHAQAAmQAA\/\/8ARwAAAgsDeQImAA8AAAAHAP0AlQAA\/\/8ARwAAAgsDtgImAA8AAAAHAP4AtwAAAAEARwAAAgYCvAAJAAAzESEVIRUhFSERRwG\/\/rkBC\/71ArxhzV\/+0QABAC7\/9ALKAsgAIgAABSImJjU0NjYzMhYXIyYmIyIGBhQWFjMyNjcjNSERIycOAgF4Y5VSVJ1seqEYhw9YRkdlNTViQmJkCbUBLm4KFzxRDFqhbGulXXVoNDo9c55yO25YW\/6BYCIxGQAAAQBHAAACeQK8AAsAACERIREjETMRIREzEQIB\/r54eAFCeAE0\/swCvP7aASb9RAAAAQBHAAAAvwK8AAMAADMRMxFHeAK8\/UT\/\/wAQAAAA9AO2AiYAFwAAAAYA\/xAA\/\/\/\/8gAAARMDlAImABcAAAAGAQDyAP\/\/\/+8AAAEWA3kCJgAXAAAABgD97wD\/\/wAQAAAA9AO2AiYAFwAAAAYA\/hAAAAEAHf\/0AcsCvAASAAAXIiYmNTMUFhYzMjY2NREzERQG+UNjNngUKyIiKBN4cQwzYUUhMhsaLx8B9f4LZm0AAQBHAAACYgK8AAsAADMRMxEBMwEBIwMHFUd4AQiV\/v0BCZLMRQK8\/t8BIf7q\/loBSkv\/AAEARwAAAfcCvAAFAAAzETMRIRVHeAE4Arz9ol4A\/\/8ARwAAAfcCvAImAB4AAAAHAKUBAQATAAEARwAAAyICvAAMAAAzETMTEzMRIxEDIwMRR47g3o94xl7HArz+PAHE\/UQB7v50AYv+EwABAEcAAAKIArwACQAAMxEzAREzESMBEUd4AVF4eP6vArz+BgH6\/UQB+f4H\/\/8ARwAAAogDagImACEAAAAHAQMAwgAAAAIALv\/0At8CyAAPAB8AAAUiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiMiBgYVFBYWAYZlm1hYm2VnnFZWnGZDZDY2ZENDZDc3ZAxbo2xro1xco2tso1tsPXJPT3I9PXJPT3I9AP\/\/AC7\/9ALfA7YCJgAjAAAABwD\/ARUAAP\/\/AC7\/9ALfA5QCJgAjAAAABwEAAPcAAP\/\/AC7\/9ALfA3kCJgAjAAAABwD9APMAAP\/\/AC7\/9ALfA7YCJgAjAAAABwD+ARUAAAADABz\/9ALtAsgAHQApADUAADM3JicmNTQ2NjMyFxYXNzMHFhcWFRQGBiMiJyYnBzcyNjY0JyYnARYXFicBJicmIyIGBhQXFhxfEw4sV5tmZ04KCyl0XRQQK1ebZ2ZNDQsq9URjNxsEBP7EBgcxeQE8BQUyRENjOBwDbhccUWxro1wuBwcwbBgdUmtso1suBwgxYD1ynjkHCP6SBQMfagFtAwQePXKeOQYA\/\/8ALv\/0At8DagImACMAAAAHAQMA4gAAAAIALv\/0BBgCyAAdAC0AAAUiLgI1ND4CMzIWFzUhFSEVIRUhFSEVITUOAicyNjY1NCYmIyIGBhUUFhYBg0l9XDMzXHxJRnsnAa7+ygEY\/ugBNv5SGklXJ0BlPDxlQD9mOztmDDRhhFFQhWA1ODRgYclf0mFeIjAYbD1yT09yPT1yT09yPQAAAgBHAAACOwK8AAwAFQAAMxEzMhYWFRQGBiMjEREzMjY1NCYjI0f8VG42NG5WhH1HPj5HfQK8OWA+OmE7\/vEBcT81Nz4AAAIARwAAAjsCvAAOABcAADMRMxUzMhYWFRQGBiMjFTUzMjY1NCYjI0d4hVRtNjRtVoV\/RT4+RX8CvIk4YD06YDqK6z41Nj0AAAIALv+XAt8CyAAUACYAAAUnBiMiJiY1NDY2MzIWFhUUBwYHFyUyNyczFzY3NjQmJiIGBhQWFgIyRDA4ZZtYWJtlZ5xWKyI5Z\/7HFRR3ilgcEhs2ZIZkNzdkaWoNW6Nsa6NcXKNrbFFBK57JA7qHGiY5nnI9PXKecj0AAgBHAAACPQK8ABAAGQAAMxEzMhYWFRQGBwYHEyMDIxERMzI2NTQmIyNH+1NtNTQ3DxKSiYRxe0M\/PkR7Arw5Xzw4YB0IBv7bARb+6gFvQTU0PwAAAQAt\/\/QCJwLIADIAAAUiJiYnMxQWFjMyNjY1NC4CJyYmNTQ2NjMyFhYXIy4CIyYGBhUUHgIXHgIVFAYGATJMdkIBfyE7KiQ1HR82RidTVDppRUZpPQGAARoxIx4vGxkwQCY0VTI4bAw2ZEUjNyAXKx0hKx4XDRxXST1YMTJZPhotHQEVJx0cJRkWDRExTj42XTkAAAEAHAAAAi8CvAAHAAAzESM1IRUjEerOAhPOAlthYf2lAAABAED\/9AJkArwAFQAABSImJjURMxEUFhYzMjY2NREzERQGBgFQTHtJeCZFLzBFJXhKfgw8fF4Bsv5NOUolJUo5AbP+Tl58PP\/\/AED\/9AJkA7YCJgAxAAAABwD\/AN8AAP\/\/AED\/9AJkA5QCJgAxAAAABwEAAMEAAP\/\/AED\/9AJkA3kCJgAxAAAABwD9AL4AAP\/\/AED\/9AJkA7YCJgAxAAAABwD+AN8AAAABABEAAAKmArwABgAAIQEzExMzAQES\/v+Bycx\/\/v4CvP2\/AkH9RAAAAQAaAAAD0gK8AAwAADMDMxMTMxMTMwMjAwPUuoCDmIWThIG\/jpCUArz9zQIz\/cwCNP1EAhL97gABACEAAAJpArwACwAAMxMDMxc3MwMTIycHI9rcip+TiNreiqGTAWIBWvv7\/qH+o\/7+AAEAEAAAAlsCvAAIAAAzNQMzExMzAxX56Yienofq\/AHA\/rcBSf5A\/P\/\/ABAAAAJbA7YCJgA5AAAABwD\/AMMAAAABADAAAAIHArwACQAAMzUBITUhFQEhFTABSv64AdP+tAFOXAH7ZVz+BWUAAAIAM\/\/0AgECBAAgAC4AABciJiY1NDY2MzM0JiYjIgYHIz4CMzIWFhURIycOAycyPgI3NSMiBgYUFhbrPlIoMWBGfxYuJCk6B3YGPGM7R2Q1ZgwKHygzBR0tIRIDbyMuFBQmDCpGKTBGJyg1GiUmNk0rMVtA\/shRFCIZDl8VJzAbAhEgKh4QAP\/\/ADP\/9AIBAvECJgA8AAAABwD4AKkAAP\/\/ADP\/9AIBAs0CJgA8AAAABwD5AIsAAP\/\/ADP\/9AIBArECJgA8AAAABwD1AIcAAP\/\/ADP\/9AIBAvECJgA8AAAABwD3AKkAAP\/\/ADP\/9AIBAxYCJgA8AAAABwD6AKsAAP\/\/ADP\/9AIBArMCJgA8AAAABgD7cAAAAwAz\/\/QDewIEADUAQwBLAAAXIiYmNTQ2NjMzNCYmIyIGByM+AjMyFhc2NjMyFhYVFRQHIR4CMzI2NzMOAiMiJicOAicyNjY3NSMiBgYVFBYWJTMmJiMiBgbzP1YrMF9FhBUuJCY5BncGPGE5PlobIVs2Smw8Av6MAyQ6IS04DncNQF88QmohFDtKHyQ3IwVxIy0UFCUBHPwDRTIfNyYMKkYqMEcmKDQaJSQ1TSooJCQoQm9FFgwNLD0fKiIxUC44MB4wGl8jPCMJESAUFh8R2Tg+GzQAAAIAQ\/\/0AlUC0AATACMAAAUiJiYnByMRMxE2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFgFjKEAwEA1reBhSPUdtPz5tYCpCJSVCKitBJSVBDBUlGEYC0P7eJTFFd01LeERoKUcwL0goKEgvMEcpAAABADL\/9AIjAgQAHwAABSImJjU0NjYzMhYXIyYmIyIGBhUUHgIzMjY2NzMGBgEySnVBQXVLXoASfgo\/KyU9IxQlMBwdLyEHfhKADEN3TE93RGNWJiwmSDMnPCkWEyYaVGUAAAEAMv74AiMCBAA1AAATNTMyNjU0JiMjNSYnJiY1NDY2MzIWFyMmJiMiBgYVFB4CMzI2NjczBgcGBxUyFhYVFAYGI9hsHRwcHToyKjtBQXVLXoASfgo\/KyU9IxQlMBwdLyEHfhJANEgjOyQjOyP++EYSFRISbgYZIXdMT3dEY1YmLCZIMyc8KRYTJhpUMikILBUvJCMvGAAAAgAy\/\/QCRALQABIAIAAABSImJjQ2NjMyFhcRMxEjJw4CJzI2NjQmJiMiBgYUFhYBI0ZuPT5vRjlVGXhsDBAuQBIrQiQkQispQiUlQgxEeJh3RSsnAR79MEkWJxhoKUheSCgoSF5IKQACADL\/9AJIAsUAJQAzAAAFIiYmNTQ2NjMyFhcmJyYnBzU3JicmJzMWFzcVBxYXHgIVFAYGJzI2NjQmJiMiBgYUFhYBOk14Q0J1SilIHg0SERWBUgMCGx9yEhF7SQMDJi8XR3pKJ0InJ0InKEEoKEIMRXVKS3VCFxohIR4dK0obAwMcGg8RKUoYBAQ0bW0zWoRIZiZHYkYmJkZiRyYAAAIAMv\/0AiQCBAAcACUAAAUiJiY1NDY2MzIWFhUVFAchFhcWFjMyNjczDgIDISYmIyIGBwYBL0tyQD9zTEpuPAL+hgMPET0mKjcNeg5AXsABAQJGNCU+EgwMQXZNUHhEQm9FFgwNJh0iIyQeL0srATg3PyIhFv\/\/ADL\/9AIkAvECJgBJAAAABwD4ALoAAP\/\/ADL\/9AIkAs0CJgBJAAAABwD5AJwAAP\/\/ADL\/9AIkArECJgBJAAAABwD1AJkAAP\/\/ADL\/9AIkAvECJgBJAAAABwD3ALoAAAABABQAAAFGAtAAFAAAMxEjNTM1NDY2MzMVIyIGFRUzFSMRXEhIJ0ozPCohHXJyAZNlNzpHIGYbITZl\/m0AAAMAKv8YAiICBAAyAEMASwAABSImJjU0Njc2NyYnJic1NyYnJjU0NjYzMhczFQcWFRQGBiMiJwcWFx4CFx4CFRQGBicGBwYVFBYWMzI2NjU0JicmNjY0JiIGFBYBF0drOx8gAQIQDBQNWBQOGDBbPywjvFkXMFo\/JR8oAgIKITYrQ1QoMWSTGg0TITkkIzQdKj4tTTQ0VjY26CNHNR87GgEBBwgMDRdcEhgpMjNSMgxLBigyMlMxCScBAQYJCAQFJkAtLE4y+Q0QGBkaIxITIhgeJQQD6S5WLS1WLgABAEMAAAIhAtAAFQAAMxEzETY2MzIWFhURIxE0JiMiBgYVEUN4GVY2PlYtdzc4JDoiAtD+2ikxM2NK\/twBGUFEI0Ev\/vUAAgA4AAAA0ALVAAMADwAAMxEzEQMiJjU0NjMyFhUUBkh4PCErKyEhKysB+P4IAkgpHh8nJx8eKQABAEMAAAC7AfgAAwAAMxEzEUN4Afj+CP\/\/AA0AAADxAvECJgBSAAAABgD4DQD\/\/\/\/vAAABEALNAiYAUgAAAAYA+e8A\/\/\/\/7AAAARMCsQImAFIAAAAGAPXsAP\/\/AEMAAAC7ArICJgBSAAAABgD2QwD\/\/wANAAAA8QLxAiYAUgAAAAYA9w0AAAL\/4\/8kANIC1QAMABgAAAc1MzI2NREzERQGBiMTIiY1NDYzMhYVFAYdKSIceChJM2kiKioiISoq3GYbIQIy\/c06RyADJCkeHycnHx4pAAH\/4\/8kAMIB+AAMAAAHNTMyNjURMxEUBgYjHSkiHHgoSTPcZhshAjL9zTpHIAABAEMAAAIeAtAACgAAIScVIxEzETczBxMBiM14eLaP0O7+\/gLQ\/lnP5\/7vAAEAQwAAALsC0AADAAAzETMRQ3gC0P0w\/\/8AQwAAAY4C0AAmAFsAAAAHAKUAzAAAAAEAQwAAA2ICBAAmAAAzETMXNjYzMhYWFzY2MzIWFhURIxE0JiMiBgYVESMRNCYjIgYGFRFDagoYTzMmPS8PHFo1P1gudzQzIzUedzQ0ITUeAfhFJisUKB4qMDNjSP7aARpARCJBL\/70ARpARCJBL\/70AAEAQwAAAiACBAAVAAAzETMXNjYzMhYWFREjETQmIyIGBhURQ2oJF1Y7PVYveDg3JDkhAfhULDQzYkn+2gEbP0QiQS7+8\/\/\/AEMAAAIgArMCJgBeAAAABwD7AJgAAAACADL\/9AIrAgQADwAfAAAFIiYmNTQ2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFgEuSHNBQnNISHNBQnNIJDskIzskIzwkJDsMQ3dNT3dDQ3ZPT3ZDZyRINTVHJCRHNTVIJAD\/\/wAy\/\/QCKwLxAiYAYAAAAAcA+AC9AAD\/\/wAy\/\/QCKwLNAiYAYAAAAAcA+QCfAAD\/\/wAy\/\/QCKwKxAiYAYAAAAAcA9QCbAAD\/\/wAy\/\/QCKwLxAiYAYAAAAAcA9wC9AAAAAwAg\/\/QCMwIEABsAJgAxAAAzNyYnJjU0NjYyFxYXNzMHFhcWFAYGIyInJicHNzI2NjU0JwcWFxYnNyYnJiMiBgYVFCBEDQohQ3OQOQcGGmFFDQohQnNJRzkHBhqoJDskDb0DAx1QuwICHiQjPCRPERM7TU93QyEFBB5QEBI7nnZDIgMFHlskSDUvIdsCAhJS2gECEiRHNS4A\/\/8AMv\/0AisCswImAGAAAAAHAPsAhAAAAAMAMv\/0A6UCBAAnADcAPwAABSImJjU0NjYzMhYXNjYzMhYWFRQGByEeAjMyNjczDgIjIiYnBgYnMjY2NTQmJiMiBgYVFBYWJSEmJiMiBgYBLkhzQUJzSD1hHiFlP0ttPQEC\/ocCJTskLToNdwxBYD0\/ZSEfYT0kOyQjOyQjPCQkOwEhAQADRjMhOCYMQ3ZPTndDMS4tMkJvRQoYDSw9HyoiMVAuMSwsMWckSDU1RyQkRzU1SCTRNz8bNAAAAgBD\/yQCVQIEABIAIgAAFxEzFz4CMzIWFhQGBiMiJicREzI2NjU0JiYjIgYGFRQWFkNrDRAtQSpHbT4\/bUY5VRqPKkIlJUIqK0ElJUHcAtRJFicYRneYd0QrKP7dATgoSC8wSCgoSC8wRykAAgBD\/yQCVQLQABMAIwAAFxEzET4CMzIWFhUUBgYjIiYnERMyNjY1NCYmIyIGBhUUFhZDeBAtQCtHbT4\/bUY5VRqPKkIlJUIqK0ElJUHcA6z+3xYnGEV4TEx3RCso\/t0BOChILzBIKChILzBHKQACADL\/JAJEAgQAEgAhAAAFEQYGIyImJjQ2NjMyFhYXNzMRATI2NjU0JiYjIgYGFBYWAcwYUzxHbj4+b0YnPzARDGz++CtCJCRCKylCJSVC3AElJDFFd5h3RRUlGUf9LAE4KUgvMEcoKEheSCkAAAEAQwAAAXYCBAAPAAAzETMXPgIzFSMiDgIVFUNrCxI2SSwqHjYnFgH4XiEvGn8PITkr8QABACj\/9AHbAgQALwAABSImJiczHgIzMjY2NTQmJicuAzU0NjYzMhYXIyYmIyIGFRQWFhceAhUWBgYBDENjOQV4BRotHx4mEhoxIiRDNR8vWT5YaQlyBS4mJykZMCM4VjIBM1wMK00yFSMUERwQGBoPBwcVIDIkLEYpUUkcHx0YDxkRCAseOjUwSikAAAEARP\/2ApcC3AA3AAAFIiYnMxYWMzI2NTQmJyYmNTQ+AzU0JiMiBhURIxE0NjYzMhYWFRQOAxUUFhYXFhYVFAYGAdBacgpyBDMrKConNlBHGicmGj41QT53O3BQSWc2GiYnGRAtKkpBMVkKYVcrMyUhHygSHDstHSUcGiEXJy5HPv4NAf5BZDkuTy8hLB4YGBAMFhYOG0w6MkwqAAEAIAAAAXcCfQAUAAAhIiYmNTUjNTM3MxUzFSMVFBYzMxUBHjNLKlZWDmqJiSEnPiBKP+plhYVl6iYdZgAAAQA8\/\/QCGQH4ABUAABciJiY1ETMRFBYzMjY2NREzESMnBgb+PVcueDc4JDkheGoJF1cMMWNJASf+5UFDIkEvAQ3+CFQsNAD\/\/wA8\/\/QCGQLxAiYAbwAAAAcA+AC3AAD\/\/wA8\/\/QCGQLNAiYAbwAAAAcA+QCZAAD\/\/wA8\/\/QCGQKxAiYAbwAAAAcA9QCVAAD\/\/wA8\/\/QCGQLxAiYAbwAAAAcA9wC3AAAAAQATAAACFwH4AAYAADMDMxMTMwPNun6FhXy6Afj+egGG\/ggAAQATAAADEAH4AAwAADMDMxMTMxMTMwMjAwOnlHdcaIZoXXeUfG5vAfj+jAF0\/owBdP4IAYD+gAABABQAAAISAfgACwAAMzcnMxc3MwcXIycHFLKygX5+gbKygX5+\/Py3t\/z8t7cAAQAU\/yQCOgH4AAgAABcTIwMzExMzAYB7HsmDlo5\/\/sXcARQBwP6qAVb9LP\/\/ABT\/JAI6AvECJgB3AAAABwD4ALUAAP\/\/ABT\/JAI6ArECJgB3AAAABwD1AJQAAAABACIAAAG2AfgACQAAMzUBITUhFQEhFSIBBf7\/AYv++AENYQEzZGH+zGMAAAIAFAAAAh0C0QAWACIAADMRIzUzNTQ2NjMzFSMiBhUVIREjESMREyImNTQ2MzIWFRQGW0dHKEozNSMhHgE5eMH+ISsrISIqKgGTZTc6RyBmGyE2\/ggBk\/5tAkQpHh8nJx8eKf\/\/ABQAAAIlAtAAJgBOAAAABwBbAWoAAAACADMBXAG2AsYAEgAfAAATIiYmNTQ2NjMyFhc3MxEjJwYGJzI2NjU0JiMiBhUUFtwwTSwsSy8wQBAIVVUID0AVHC0bOiooOjoBXC1SNjdRLSQcOv6hOhwjSRkxIjQ4OTM0OAAAAgAyAVwBrALIAA8AHwAAEyImJjU0NjYzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhbuOFUvMFU4OFYvMFY4GisaGisaGioZGSoBXC5TNjZSLS1SNjZTLkoZMCMlMBkZMCUjMBkAAAIALv\/0AowCyAAPAB8AAAUiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiMiBgYVFBYWAV5fiElJiF9eh0lJh181Ui0tUjU1Ui0tUgxbo2xso1tbo2xso1tsPXJPT3I9PXJPT3I9AAABAB8AAAEWArwABgAAMxEHNTczEZt8rEsCMyBdTP1EAAEANgAAAhgCyAAfAAAzNT4DNTQmJiMiBgYVIz4CMzIWFhUUDgMHIRU2Q3piOBYvJyY1GnQCPmpCR2Q2Iz5NUiYBOVc1amhkLh40ICI5JExmMzReQC9bVU9HHmMAAQAx\/\/QCGgLIADEAAAUiJiYnMx4CMzI2NjU0JiYjIzUzMjY1NCYjIgYHIz4CMzIWFhUUBgYHHgIVFAYGASpEcEMCdgEfOiknNxwmQio0NDdGNTEzOwN2AztmREdiMx4zIic9IzdrDDFlTSM5IR40ICczGmMzMSkyPCw\/XTIyVDInQCsKCC5HLzlhOgACACsAAAJcArwACgANAAAhNSE1ATMRMxUjFSUzEQGG\/qUBSohfX\/6v4YVgAdf+MmmF7gFKAAABAEH\/9AI1ArwAJQAABSImJiczFhYzMjY2NTQmJiMiBgcjEyEVIQc2NjMyHgIVFA4CAT1LbT4GdQlINik6ISE6Ji9DD3Q6AYL+2CAXTDE3VDodJEFbDDVdOyw7J0MqK0AjKyABi2mtGR8mQlcwNltEJgACADP\/9AI9AsgAIQAxAAAFIi4CNTQ2NjMyFhYXIyYmIyIGBgcVPgIzMhYWFRQGBicyNjY1NCYmIyIGBhUUFhYBSk5rQB5Ce1dIYzgGcAk\/Mi1GKAMQNkcpO2U\/PG5QJzwjIz0nJj0kJD0MOmF4P3WtYDdaNS8zOHBWBx0tGjdmRT9sQmciOiUnOiAhOiUmOiIAAAEAHAAAAfcCvAAGAAAzASE1IRUBdwEF\/qAB2\/79AlVnVv2aAAMAPf\/0AjUCyAAdACkANQAABSImJjU0NjY3JiY1NDY2MzIWFhUUBgceAhUUBgYnMjY1NCYjIgYVFBYTMjY1NCYjIgYVFBYBOUdyQx44JTE5NmlMTGg2OTEmNx9EcUdCQ0c+PklFQjY9PTY2PT0MM10\/Kkg1DRZPMTNUNDRUMzBRFQ02Ryo\/XTNlQTI4PT04MkEBQzkrMTU1MSw4AAIAPP\/0AkUCyAAhADAAAAUiJiYnMxYWMzI2Njc1DgIjIiYmNTQ2NjMyHgIVFAYGAzI2NjU0JiYiBgYVFBYWATFHYzgFbwk\/Mi5EKQIPNkcpOmc+PG5IT2tAHUF7UiY9JCQ9TjwjIz0MN1s0LzM3b1QLHC4aN2ZFP2xCOmF4P3SuYAFrITskJjshIjkmJzog\/\/8AGQAAALoBYAIHAJUAAP6g\/\/8AIQAAAToBaAIHAJYAAP6g\/\/8AFf\/7AT4BaAIHAJcAAP6g\/\/8AGQAAAUIBXAIHAJgAAP6g\/\/8AGQFgALoCwAIGAJUAAP\/\/ACEBYAE6AsgCBgCWAAD\/\/wAVAVsBPgLIAgYAlwAA\/\/8AGQFgAUICvAIGAJgAAAAB\/\/YAAAH5ArwAAwAAIwEzAQoBjXb+cwK8\/UT\/\/wAZAAADHgLAACYAlQAAACcAkQCAAAAABwCWAeT+oP\/\/ABkAAAMMAsAAJgCVAAAAJwCRAIAAAAAHAJgByv6g\/\/8AFQAAA2gCyAAmAJcAAAAnAJEA3AAAAAcAmAIm\/qAAAQAZAWAAugLAAAYAABMRBzU3MxFeRWs2AWABCBA5L\/6gAAEAIQFgAToCyAAZAAATNTc2NjU0JiMiBgcjNjYzMhYWFRQGBwczFSV0HCMZEhQYA10ES0UsOx40NUmyAWBEVBYsHBYYGhgyRB8xHSc6ITBJAAABABUBWwE+AsgAKwAAEyImJzMeAjMyNjU0JiMjNTMyNjU0JiMiBgcjPgIzMhYVFAYHFRYWFRQGrUlKBV8CDhcOFxwgGCkmGB4aFxcaA1gCIkEwPU4kHyAnTwFbPDYRFQgYFRcYLxcXFBgVFB4xHjstHycHAwkoISo5AAIAGQFgAUICvAAKAA0AABM1IzU3MxUzFSMVJzM1wKedZCgopVEBYD4\/391BPn97AAEAK\/\/7AMIAiwALAAAXIiY1NDYzMhYVFAZ3IioqIiEqKgUqHR8qKh8dKgAAAQAR\/4UAvwB5AAMAABc3MwcROXVfe\/T0AP\/\/ACv\/+wDCAgUAJgCcAAAABwCcAAABev\/\/AB3\/hQDaAgUAJwCcABgBegAGAJ0MAP\/\/ACv\/+wJhAIsAJwCcANAAAAAnAJwBnwAAAAYAnAAAAAIARv\/7AN0CvAADAA8AADcDMwMHIiY1NDYzMhYVFAZfDoENMyErKyEiKSncAeD+IOEqHR8qKh8dKgACAEb\/QwDdAgQAAwAPAAATMxMjEzIWFRQGIyImNTQ2X2YNgUEiKSkiISsrASP+IALBKh4fKSkfHioAAgAh\/\/sB7ALIAB0AKQAANyczMj4CNTQmJiMiBgYVIzQ2NjMyFhYVFAYGIwcHIiY1NDYzMhYVFAaTBCsnRTQeHDMjIzQccjhoRkNoOjxrRQM1ISsrISIqKtugCRsxJyMwGhowITxeNTJdQkZaLFDgKh0fKiofHSoAAgAq\/zcB9gIEAB0AKQAAARcjIg4CFRQWFjMyNjY1MxYGBiMiJiY1NDY2Mzc3MhYVFAYjIiY1NDYBgwQrJ0U0Hhw0IiQzHHIBOWdHQ2g6PGxEAzUhKyshIioqASOfChoxKCEyGhswIDxdNTFeQUdaLE\/hKh4fKSkfHioAAAEAKwEDAMIBkwALAAATIiY1NDYzMhYVFAZ3IioqIiEqKgEDKh0gKSkgHSoAAQA5AMkBQgHSAA8AADciJiY1NDY2MzIWFhUUBga9JD0jIzwlJT0jIz3JIzwlJjwjIzwmJTwjAAABAEQBaAG2AuAAEQAAEzcHJzcnNxcnMwc3FwcXBycX0hFxLoSEK3UTWhR0KoSFLHMSAWiPV1A2M05XkJBXTTY1TlaPAAIAJAAAAx8C0AAbAB8AACE3IwcjNyM1MzcjNTM3MwczNzMHMxUjBzMVIwcDMzcjAbsmvyVxJY2kH5GnJXElvyVwJYKYH4SbJfO+H76zs7NrlmuxsbGxa5ZrswEelgABABj\/lAGIAwcAAwAAFxMzAxj7dftsA3P8jQAAAQAY\/5QBiAMHAAMAAAUjAzMBiHX7dWwDc\/\/\/AEsA9QHpAVkABgDV\/QAAAQBMAPUCZAFZAAMAADc1IRVMAhj1ZGQAAQBMAPUDPQFZAAMAADc1IRVMAvH1ZGQAAQBM\/2gCd\/\/aAAMAABc1IRVMAiuYcnIAAQAu\/28BagMrABMAABcuAjU0NjY3MxUOAhUUFhYXFfE3WDQ0WDd5PFkwMFk8kTeTsGRksJQ2Cz+VpllZppU\/CwAAAQAh\/28BXQMrABMAABcjNT4CNTQmJic1Mx4CFRQGBpp5PVgxMVg9eThYMzNYkQs\/laZZWaaVPws2lLBkZLCTAAEAVv9XAY4DKwAxAAAFIiY1NDY2NTQmJic1PgI1NCYmNTQ2MzMVIyIGFRQWFhUUBgcVFhYVFAYGFRQWMzMVAVBLXQoLEywoKCwTCwpdSz4oJSYLCTQ6OjQJCyYlKKlSUCI4OiMYKRsFYAYaKRkkODgiUFJkIycaNDsmNEwMAgxLNiU7NBonI2QAAAEAPP9XAXMDKwAxAAAXIzUzMjY1NCYmNTQ2NzUmJjU0NjY1NCYjIzUzMhYVFAYGFRQWFhcVDgIVFBYWFRQGej4oJSUJCjQ5OTQKCSUlKD5LXQoLEy0mJi0TCwpdqWQjJxo0OyU2SwwCDEw0Jjs0GicjZFJQIjg4JBkpGgZgBRspGCM6OCJQUgABAEf\/WQEuAysABwAAFxEzFSMRMxVH53d3pwPSYvzzYwAAAQA4\/1kBIAMrAAcAAAUjNTMRIzUzASDod3fop2MDDWIAAAEAEf+OAMcAgwADAAAXNzMHETd\/Y3L19QAAAgAR\/44BgwCDAAMABwAAFzczBzM3MwcRN39jajZ\/Y3L19fX1AAACAB4BwwGOArwAAwAHAAATNzMHITczB9hjUzf+x2NTNgHD+fn5+QAAAgAeAcMBjgK8AAMABwAAEwcjNyEHIzfUZFI3ATljUzYCvPn5+fkAAAEAHgHDANQCvAADAAATNzMHHmNTNgHD+fkAAQAeAcMA1AK8AAMAABMHIzfUY1M2Arz5+QACACoAeAG9AdYABQALAAAlJzczBxchJzczBxcBS1tbcl5e\/slcXHJfX3ivr6+vr6+vrwAAAgAyAHgBxQHWAAUACwAANyM3JzMXFyM3JzMXpHJfX3JcaXJfX3JceK+vr6+vr68AAQAsAHgA+QHWAAUAADcnNzMHF4dbW3JeXnivr6+vAAABADQAeAEBAdYABQAANyM3JzMXpnJeXnJbeK+vrwACACcCHQExAvMAAwAHAAATJzMHIyczB9QMaQvzDGoMAh3W1tbWAAEAJwIdAJIC8wADAAATJzMHNA1rDAId1tYAAwAU\/\/QC6ALIABMAIgAxAAAFMj4CNTQuAiMiDgIVFB4CExUiBhUVMxUjJiY1NDY2MxUiBhUVMxUjJiY1NDY2AX5Lg2Q4OGSDS0uDZDg4ZIM3Hhw\/eQgJHjvdHhs+eQgJHjwMOGSDS0uDZDg4ZINLS4NkOAHwOSIiGXIhOxowQSE5IiIZciI6GjBBIQADABT\/9ALoAsgAEwAiADEAAAEiDgIVFB4CMzI+AjU0LgIDNTI2NTUjNTMWFhUUBgYjNTI2NTUjNTMWFhUUBgYBfkuDZDg4ZINLS4NkODhkgzcfGz95CQgeO90eHD95CQgeOwLIOGSDS0uDZDg4ZINLS4NkOP4QOSIiGXIhOxovQiE5IiIZciE7Gi9CIQAAAgBM\/y4DvwKMAEMAUwAABSImJjU0PgIyFhYVFA4CIyInJicGBwYjIiY1ND4CMzIXFhc3MwMGFjMyPgI1NCYmIyIOAhUUFhYzMjY3FwYGAzI2Njc2JiYjIg4CFRQWAbhtpFtKiLriqF0eOlQ3Qx4RBRYhNT9KVCI+VjQ7IhMKDGIvBxMiHSsdD0eDW1mTbDtFgVktWCUTLmgQJTwnAwMUKSEgMiQTLdJWnWttuotOWJtmPG9ZNSgVGyAVI1tON2RPLh4RG0D+8CcwKkRQJ1N3QEBzmVhXfEESEU4VEwEkKUctITQfHjA+IS03AAACACn\/9ALnAsgAMAA9AAAhJwYHBiMiJiY1NDY3NjcmJyY1NDY2MhYWByM0JiMiBhUUFhcXNjc2NzczBwYHBgcXAQYHBhUUFhYzMjc2NwJWTigrQlNLbz0pKhwmGQwUL1l+Vi4BdC4hJiwgH8UEBBMUGHslGhoNDpz+GywZHyE+KTcsGxlOJRUgNWFBMlYhFxAdGSYqMEssLkwwJicoIRo3IsUGBx8nLkgzKhYUnAFVEx0kMCI3IBkOGgABACH\/nAIzArwAEAAABREjIiYmNTQ2NjMhESMRIxEBHhBSaTIyaVIBJWZKZAGBOF84OV45\/OACxP08AAACAC3\/GAIyAsgAPQBUAAAFIiYmJzMeAhcWNjU0LgInLgI1NDY3JiY1NDY2MzIWFhcjLgIjJgYVFB4CFx4CFRQGBxYWFRYGBhM2NjU0LgInJiYnBgYVFB4DFxYWASxFajsCgAEZMSMuOxowPyY0VTIcGw0OO2lFRmk9AYABGjEjLTsZMEAmNFUyHB0ODQE7aSsLDBswQScTHg0LDBEgLDceEh\/oMlo9Gi0cAQEvKh0jFxUMEjJPOydFHBQuHT1YMTJZPhotHQEvKhwkFxUNETJOPCZGHBMvHDxaMQFoDR4SHikcGA0HDQcMHxIXIxoWEwsGDgAAAwAu\/\/sC5wLDAA8ALQA9AAAFIiYmNTQ2NjMyFhYVFAYGJyImJjU0NjYzMhYXIyYmIyIGBhUUFhYzMjY3MwYGBzI2NjU0JiYjIgYGFRQWFgGKZ55XV55naJxZWZxoPWM7O2M9TXASags3JSE0Hx80ISc1C2oScE1dh0lJh11ch0pKhwVboWhpoFtboGlooVuAN2ZIR2c3UkwkJyFBMS9CISgiSFRTT4xcXoxOTotfXIxPAAQALwEoAc0CyAAPAB0ALAA1AAATIiYmNTQ2NjMyFhYVFAYGJzI2NjQmJiMiBgYUFhY3JyMVIzUzMhYVFAcGBxcnMzI2NTQmIyP\/PV41NV49PF01NV08MEcoKEcwMUgoKEhTLw85ZiIoFAoPN4ElCw4OCyUBKDVfPD1dNjZdPTxfNSwqSmBJKipJYEoqO1BQ1iQgHhIJBVR6CgwLCQAAAgAbAVwDAgK8AAcAFAAAEzUhFSMRIxETETMXNzMRIzUHIycVGwEHVlvmdmBnblNmP2MCdEhI\/ugBGP7oAWDz8\/6g8PDy8gAAAgAmAa0BPwLIAA8AGwAAEyImJjU0NjYzMhYWFRQGBicyNjU0JiMiBhUUFrImQCYnQCYmPycnQCYVJiUVFiUkAa0jPyssPyMjPywrPyNOICAfICAfICAAAAEAR\/+cAL8C0AADAAAXETMRR3hkAzT8zAAAAgBH\/5wAvwLQAAMABwAAExEzEQMRMxFHeHh4AYgBSP64\/hQBSP64AAEAMv+YAiMCYAApAAAXNSYnJiY1NDY3Njc1MxUWFxYXIyYmIyIGBhUUHgIzMjY2NzMGBwYHFfsqIztBQTsjKm87LEASfgo\/KyU9IxQlMBwdLyEHfhJALDtoYQgVIXdMT3ciFQhhYQoiMlYmLCZIMyc8KRYTJhpUMiMLYQACAD8AUgHpAgMAKgA5AAAlIicmJwcnNyYnJjU0NzY3JzcXNjc2MhcWFzcXBxYXFhUUBwYHFwcnBgcGJzI2NjU0JiYiBgYVFBYWARQ3KgIBPjM6BAQYGQQEOzM\/AgIqbCsBAT4zOgUFGBkEBDkzPQICKzYWJxoaJywnGRgodxYBAT00OQYGKDY3KAcGOjQ\/AQEVFQEBPzQ6BgcoNzYoBgY5ND4CARZPFSwiIywVFSwjIiwVAAADAC3\/qQInAxcAMgA9AEgAAAU1JicmJiczFBYXFhc1JicmJjU0Njc2NzUzFRYXFhYXIyYmJyYnFRYXHgIVFAYHBgcVNTY3NjY1NCYnJicnNQYHBgYVFBYXFgEIMyo7QgF\/IR4NEBERU1Q6NSgyQzAnND0BgAEaGAoMEBE0VTI4Ni1BFREaHR8bEBNDDQsYGxkYDFdNBhMbZEUjNxAHBN0FBhxXST1YGRIFUFEFEhlZPhotDwUExQUGETFOPjZdHBgETLICCAsrHSErDwkIjbACBQsnHRwlDAcAAAEAFv\/0AuICyAA1AAA3NTMmNTQ3IzUzNjc2NjMyFhcjJiYjIgYHBgczFSMGFRQXMxUjFhcWFjMyNjczBgYjIiYnJicWTgEBTloKEiiWaH2fFIMOV0lBYBkGBNnnAgLn2QQGGWBBSVYOhBSffWiWKBMK7koSExQTSikkUVx7cDtEPTkMDEoTFBMSSg0LOT0\/OGp5W1IkKQAAAQAqAAACMQLIACwAADM1PgI1NCcjNTMmJyY1NDY2MzIWFhcjJiYjIgYGFRQXFhczFSMWFRQGByEVTxokFAVyVwkGCTplQkxiNANvAjo4HjQfCQgKvKQEICYBZUgaNT8rFhVTGBogJEFfMzphOzJBGTQoHBwcHVMUFSxTJGAAAQAZAAACZAK8ABgAADc1MzUnIzUzAzMTEzMDMxUjBxUzFSMVIzU6yCOleZqHn56Hm3mkJMjIeJ1TDERTASn+twFJ\/tdTRAxTnZ0A\/\/8AGP+UAYgDBwAGAKkAAAABAC0AQQINAgMACwAANzUjNTM1MxUzFSMV6by8Z729Qa9kr69krwAAAQBOAPUB7AFZAAMAADc1IRVOAZ71ZGQAAQBYAFwB4wHoAAsAADcnNyc3FzcXBxcHJ55GfntHe39Hf3xIe1xHf3xGe39Hf3tHewADAEoAMAHxAhcAAwAPABsAADc1IRUHIiY1NDYzMhYVFAYDIiY1NDYzMhYVFAZKAafTISsrISIpKSIhKyshIikp8GRkwCoeHioqHh4qAVcqHR8qKh8dKgAAAgBLAIAB7wHEAAMABwAAEzUhFQU1IRVLAaT+XAGkAVtpadtpaQABAGAAMgHbAfgABQAANzcnMxcHYOTkmOPjMuPj4+MAAAEAYAAyAdsB+AAFAAAlIyc3MwcB25jj45jkMuPj4wAAAgAoAAACEgIEAAsADwAANzUjNTM1MxUzFSMVBTUhFerCwmbCwv7YAeqcgmSCgmSCnFxcAAEAJgDnAhUBlgAZAAAlIi4CIyIGByM+AjMyHgIzMjY3Mw4CAXMfLykmFxohBVkJLEIoIDApJxUbIQRbCC1D5xUbFCMfPEwlFRoVIyA8TSUAAf\/3AM0CRAG0AAUAACU1ITUhFQHM\/isCTc2KXecAAQAkAMoCcQK8AAYAADcTMxMjAwMk7nLtea2uygHy\/g4Baf6XAAABAEP\/JAIiAfAAFgAAFxEzERQWMzI2NjURMxEjJwYGIyImJxVDeDY5JjkheGsIGFg6FSYP3ALM\/vJCRyRDMAEA\/hBUKzUJCuMAAAUAKv\/0AzoCxwADABMAIwAzAEMAADMBMwEFIiYmNTQ2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFgEiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiMiBgYVFBYWrgGNdv5zAW0vTS4uTS8xSy0tTDEVIhQUIRUUIhQUIf5YME0tLU4vMEwtLUwxFSITEyIUFCMUFCICvP1EDCtPNjdOKytONzZPK1QVKR4fKBUVKB8eKRUBICpQNjZPKipPNjZQKlQVKR4eKhUVKh4eKRUAAAEAJAAAA0QCvAAJAAATATMBBwERIxEBJAFtRgFtTP71cv71AVgBZP6cTAEH\/e0CFP75AAABACwAPgJeAnEACQAANycBITUhFxEjEXxQAXv+hQIAMmo+TwF7aTH9\/wF3AAEAKv\/oAuYCzAAJAAATNSElNwEVASclKgIT\/vpLAWT+nEwBBQEjbfBM\/rFG\/rFN7gAAAQAsADsCXgJuAAkAABMBETMRByE1IQF8AXhqMv4AAXv+hQJu\/ogBd\/3\/MWkBewAAAQAoAAADSAK8AAkAABM3AREzEQEXASMoTAELcgELTP6TRgFkS\/75AhT97QEHTP6cAAABACwAOwJeAm4ACQAAARcBIRUhJxEzEQIOUP6FAXv+ADJpAm5P\/oVpMQIB\/okAAQAm\/+gC4gLMAAkAAAEhBQcBNQEXBSEC4v3vAQVM\/pwBZEv++gITASPuTQFPRgFPTPAAAAEALAAyAl4CZQAJAAAlAREjETchFSEBAg7+h2kyAgD+hQF7MgF4\/okCATFp\/oUAAAEAKP\/wA54CwgAPAAATNQEXByEnNwEVASc3IRcHKAEzTecCROdNATP+zU3p\/bjpTQE2RgFGQfLyQf66Rv66QfT0QQAAAQAqAAADDgK9AA8AADc3FxEHJyUzBQcnETcXBSMqP\/z8PwFPRQFQQPv7QP6wReBMpQGwpk3f302l\/lGlTOAAAAIAFP\/0AugCyAATAB0AAAUiLgI1ND4CMzIeAhUUDgInMzUXNycjBxc3AX5Lg2Q4OGSDS0uDZDg4ZIN1VXA2tzS2NXEMOGSDS0uDZDg4Y4NMS4NkOLP1bza0tDZvAAACABT\/9ALoAsgAEwAdAAAFIi4CNTQ+AjMyHgIVFA4CJzcVMxEnIRUzBwF+S4NkODhkg0tLg2Q4OGSDrbBLJf75qa8MOGSDS0uDZDg4Y4RLS4NkONKvqgEHJEqvAAIAFP\/0AugCyAATAB0AAAUiLgI1ND4CMzIeAhUUDgInNzUnBxcjFTMHAX5Lg2Q4OGSDS0uDZDg4ZINHtLQ2dPr6dAw4ZINLS4NkODhjhEtLg2Q4m7U1tTVzUHEAAgAU\/\/QC6ALIABMAHQAAATIeAhUUDgIjIi4CNTQ+AgcHFyMVITcRIxUBfkuDZDg4ZINLS4NkODhkgxc3r6kBByVLAsg4ZINLS4RjODhkg0tLg2Q40jevSiQBB6oAAAIAFP\/0AugCyAATAB0AAAEyHgIVFA4CIyIuAjU0PgIXFScHFzM3Jwc1AX5Lg2Q4OGSDS0uDZDg4ZIMhcTW2NLc2cALIOGSDS0yDYzg4ZINLS4NkOLP1bza0tDZv9QACABT\/9ALoAsgAEwAdAAABMh4CFRQOAiMiLgI1ND4CFwc1IxEXITUjNwF+S4NkODhkg0tLg2Q4OGSDrbBLJQEHqa8CyDhkg0tLg2Q4OGOES0uDZDjSr6r++SRKrwAAAgAU\/\/QC6ALIABMAHQAABSIuAjU0PgIzMh4CFRQOAic3JzM1IzcnBxUBfkuDZDg4ZINLS4NkODhkg082dPr6dDa0DDhkg0tLhGM4OGSDS0uDZDibNnFQczW1NQACABT\/9ALoAsgAEwAdAAAFIi4CNTQ+AjMyHgIVFA4CNzcnMzUhBxEzNQF+S4NkODhkg0tLg2Q4OGSDFzevqf75JUsMOGSDS0uEYzg4ZINLS4NkONI3r0ok\/vmqAAIAFP\/0AugCyAATACMAAAUiLgI1ND4CMzIeAhUUDgInNyczBxc3NScHFyM3JwcVAX5Lg2Q4OGSDS0uDZDg4ZIOmPVv2Wz2Kizxb9ls8iww4ZINLS4NkODhjhEtLg2Q4pS5vby6rNaoubm4uqjUAAgAU\/\/QC6ALIABMAIwAABSIuAjU0PgIzMh4CFRQOAiczNycHNRc3JyMHFzcVJwcBfkuDZDg4ZINLS4NkODhjhGQ0qy5ubi6rNKwvbm4vDDhkg0tLg2Q4OGSDS0uDZDiEijxZ8lk8ioo8WfJZPAACAAACOgEnArEACwAXAAATIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAY8GiIiGhgjI5gZIiIZGSIiAjoiGRkjIxkZIiIZGSMjGRkiAAEAAAI7AHcCsgALAAATIiY1NDYzMhYVFAY8GSMjGRgjIwI7IhkZIyMZGSIAAQAAAiMA5ALxAAQAABMnNzEX2dkO1gIjcV19AAEAAAIjAOQC8QAEAAATJzcxFwsL1g4CI1F9XQABAAACJgEhAs0ABQAAETU3FxUnkJGRAiZXUFBXUwACAAACOgDgAxYACwAXAAATIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBZwLkJCLi9BQS8WHx4XFSAgAjo6NDM7OzM0OjceGRodHRoZHgAAAQAAAjoBVwKzABUAABMiJiYjIgYHIzY2MzIWFjMyNjczBgblHCciFBEXA0EJPCwcJyIUERcDQgk9AjoXFxYXPjoXFxcWPTsAAQAAAlIBcQKnAAMAABE1IRUBcQJSVVUAAgAAAwIBJwN5AAsAFwAAEyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGPBoiIhoYIyOYGSIiGRkiIgMCIhkZIyMZGSIiGRkjIxkZIgABAAAC5wDkA7YABAAAEyc3MRfZ2Q7WAudxXn4AAQAAAucA5AO2AAQAABMnNzEXCwvWDgLnUX5eAAEAAALsASEDlAAFAAARNTcXFSeQkZEC7FdRUVdTAAEAAALuATIDkgARAAATIiYmNTUzFBYzMjY1MxUUBgaYL0QlQCgwMSdCJkQC7iVDLBAiJyciEC1CJQACAAAC8QDgA84ACwAXAAATIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBZwLkJCLi9BQS8WHx4XFSAgAvE7MzQ7OzQzOzceGRodHRoZHgAAAQAAAvABVwNqABUAABMiJiYjIgYHIzY2MzIWFjMyNjczBgblHCciFBEXA0EJPCwcJyIUERcDQgk9AvAXFxYXPjsXFxYXPjsAAgARAjYBOQKtAAsAFwAAEyImNTQ2MzIWFRQGIyImNTQ2MzIWFRQG\/RkiIhkZIyPKGSIiGRoiIgI2IhkZIyMZGSIiGRkjIxkZIv\/\/AAACIwDkAvEABgD3AAAAAQAAAiMA5ALxAAQAABMnNzEXCwvWDgIjUX1dAAEADQIgAS4CyAAFAAATNTcXFScNkJGRAiBXUVFXUwAAAgAMAiUA7AMCAAsAFwAAEyImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWfC5CQi4vQUEvFh8fFhYfHwIlOzM0Ozs0Mzs3HhkaHR0aGR4AAAEACwIkAWECngAVAAATIiYmIyIGByM2NjMyFhYzMjY3MwYG8BwnIhQRFwNBCjssHCciFBEYA0AIPQIkFxcWFz47FxcWFz47AAEADQJFAX4CmwADAAATNSEVDQFxAkVWVgAAAQAA\/voA\/wAHABQAABE1MzI2NTQmIyM1MxUyFhYVFAYGI2wdHBwdOksjOyQjOiP++kYSFRISfDsVLyQjLxgAAAIARwAAAdgCvAADAAcAADMRIRElIREhRwGR\/rUBBf77Arz9RDkCSgACABkAAAKfArwABwAKAAAzATMBIychBwEDAxkBAIYBAH86\/uo6AS9qagK8\/USlpQEEASz+1P\/\/ABkAAAKfA7YCJgENAAAABwHVAOoAAP\/\/ABkAAAKfA5ICJgENAAAABwHZAMQAAP\/\/ABkAAAKfA2cCJgENAAAABwHcAKQAAAACABn\/LwKkArwAHQAgAAAzATMBBwYGFRQWMzI2NxUGBiMiJiY1NDY3NjcnIQcBAwMZAQCGAQA1JB0dGA8lEhIsFyI8JBkeCw43\/uo6AS9qagK8\/UQaEiESFBYIB0kGCBYtJBsvGAgJnKUBBAEs\/tQAAgAZAAADcAK8AA8AEgAAMwEhFSEVMxUjFSEVITUjByURAxkBfgHZ\/u709AES\/nb+TQFLywK8X8xc1l+OjusBdP6MAP\/\/ABkAAANwA7YCJgESAAAABwHVAcUAAAABAC7\/9AKuAsgAHQAABSImJjU0NjYzMhYXIyYmIyIGBhUUFhYzMjY3MwYGAX5ol1FRl2h9nhWEDlZJQl8zM19CSVYOhBSfDFuja2yjXHtwO0Q9c09PcT0\/OGp5\/\/8ALv\/0Aq4DtgImARQAAAAHAdUA\/AAA\/\/8ALv\/0Aq4DkwImARQAAAAHAdgA3gAA\/\/8ALv\/0Aq4DdAImARQAAAAHAdMBMgAAAAIARwAAAo8CvAAKABUAADMRMzIWFhUUBgYjJzMyNjY1NCYmIyNH4nqfTU2fempkW2ktLWlbZAK8Vp1sap1WZjtvTU5vPf\/\/AEcAAAKPA5MCJgEYAAAABwHYAI4AAP\/\/AAYAAAKeArwCBgEbAAAAAgAGAAACngK8AA4AHQAAEzUzETMyFhYVFAYGIyMRFzMyNjY1NCYmIyMVMxUjBk\/ieqBNTaB64nhkW2otLWpbZLS0ASpnAStWnWxqnVYBKsQ7b01Obz3GZwAAAQBHAAACCwK8AAsAADMRIRUhFSEVIRUhFUcBxP60AS7+0gFMArxhyV\/SYf\/\/AEcAAAILA5ICJgEcAAAABwHZAJEAAP\/\/AEcAAAILA5MCJgEcAAAABwHYAJkAAP\/\/AEcAAAILA3QCJgEcAAAABwHTAO0AAP\/\/AEcAAAILA2cCJgEcAAAABgHccAAAAQBH\/y8CEAK8ACIAADMRIRUhFSEVIRUhFQcGBhUUFjMyNjcVBgYjIiYmNTQ2NzY3RwHE\/rQBLv7SAUw1JB0dGA8lEhIsFyI8JBkeBQYCvGHJX9JhGhIhEhQWCAdJBggWLSQbLxgEBAACAC7\/9ALGAsgAHQAoAAAFIi4CNTQ2NyEmJyYmIyIGByM+AjMyFhYVFAYGEyEeAjMyNjY3NgF3S3lXLgIBAhMDFxtcO0NgFIkUWYJRZJdTU5dn\/m0BMlk6K0s4EAwML1h8Tg4eEEAuNDc\/OURoOlujbWyjWgEyPFgwHTcpIAABAC7\/9ALKAsgAIgAABSImJjU0NjYzMhYXIyYmIyIGBhQWFjMyNjcjNSERIycOAgF4Y5VSVJ1seqEYhw9YRkdlNTViQmJkCbUBLm4KFzxRDFqhbGulXXVoNDo9c55yO25YW\/6BYCIxGQD\/\/wAu\/\/QCygOSAiYBIwAAAAcB2QDqAAD\/\/wAu\/vQCygLIAiYBIwAAAAcB0AFHAAD\/\/wAu\/\/QCygN0AiYBIwAAAAcB0wFGAAAAAgAgAAAC3gK8ABMAFwAAEzUzNTMVITUzFTMVIxEjESERIxEzFSE1IEZ4AUJ4RkZ4\/r54eAFCAe5ibGxsbGL+EgE0\/swB7lhYAAABAEcAAAC\/ArwAAwAAMxEzEUd4Arz9RP\/\/AEf\/9AKrArwAJgEoAAAABwEvAOAAAP\/\/\/+oAAAEcA5ICJgEoAAAABgHZ6gD\/\/wBHAAAAvwN0AiYBKAAAAAYB00cA\/\/\/\/ygAAATsDZwImASgAAAAGAdzKAAAB\/+z\/MADDArwAGgAAFyImJjU0Njc2NxEzESMHBgYVFBYzMjY3FQYGbiI8JBkeDxV4AzMkHR0YDyUSEizQFi0kGy8YDAwCq\/1EGRIhEhQWCAdJBggA\/\/\/\/3QAAATQDagImASgAAAAGAdvdAAABAB3\/9AHLArwAEgAAFyImJjUzFBYWMzI2NjURMxEUBvlDYzZ4FCsiIigTeHEMM2FFITIbGi8fAfX+C2ZtAAEARwAAAmICvAALAAAzETMRATMBASMDBxVHeAEIlf79AQmSzEUCvP7fASH+6v5aAUpL\/\/\/\/AEf+9AJiArwCJgEwAAAABwHQAQEAAAABAEcAAAH3ArwABQAAMxEzESEVR3gBOAK8\/aJeAP\/\/ABYAAAH3A7YCJgEyAAAABgHVFgD\/\/wBHAAAB9wLNAiYBMgAAAAcByAEv\/\/j\/\/wBH\/vQB9wK8AiYBMgAAAAcB0AD7AAD\/\/wBHAAAB9wK8AiYBMgAAAAcBuwEBABMAAQAWAAACEAK8AA0AABM1NxEzETcVBxUhFSERFkl4a2sBOf5PAQ9jGQEx\/vglYyXzXgEoAAEARwAAAogCvAAJAAAzETMBETMRIwERR3gBUXh4\/q8CvP4GAfr9RAH5\/gf\/\/wBHAAACiAO2AiYBOAAAAAcB1QD1AAD\/\/wBHAAACiAOTAiYBOAAAAAcB2ADXAAD\/\/wBH\/vQCiAK8AiYBOAAAAAcB0AEsAAAAAQBH\/yQCiAK8ABMAADMRMwERMxEUBgYjIzUzMjY1NQERR3gBUXgoSTQ6KCId\/q8CvP4GAfr9CTpHIGYbIDsB+f4HAAACAC7\/9ALfAsgADwAfAAAFIiYmNTQ2NjMyFhYVFAYGJzI2NjU0JiYjIgYGFRQWFgGGZZtYWJtlZ5xWVpxmQ2Q2NmRDQ2Q3N2QMW6Nsa6NcXKNrbKNbbD1yT09yPT1yT09yPQD\/\/wAu\/\/QC3wOSAiYBPQAAAAcB2QDvAAD\/\/wAu\/\/QC3wObAiYBPQAAAAcB1gEDAAD\/\/wAu\/\/QC3wNnAiYBPQAAAAcB3ADOAAAAAgBHAAACPQK8ABAAGQAAMxEzMhYWFRQGBwYHEyMDIxERMzI2NTQmIyNH+1NtNTQ3DxKSiYRxe0M\/PkR7Arw5Xzw4YB0IBv7bARb+6gFvQTU0PwD\/\/wBHAAACPQO2AiYBQQAAAAcB1QC7AAD\/\/wBHAAACPQOTAiYBQQAAAAcB2ACdAAD\/\/wBH\/vQCPQK8AiYBQQAAAAcB0ADyAAAAAQAt\/\/QCJwLIADIAAAUiJiYnMxQWFjMyNjY1NC4CJyYmNTQ2NjMyFhYXIy4CIyYGBhUUHgIXHgIVFAYGATJMdkIBfyE7KiQ1HR82RidTVDppRUZpPQGAARoxIx4vGxkwQCY0VTI4bAw2ZEUjNyAXKx0hKx4XDRxXST1YMTJZPhotHQEVJx0cJRkWDRExTj42XTkA\/\/8ALf\/0AicDtgImAUUAAAAHAdUAtgAA\/\/8ALf\/0AicDkwImAUUAAAAHAdgAmAAAAAEALf74AicCyABIAAATNTMyNjU0JiMjNSYnJiYnMxQWFjMyNjY1NC4CJyYmNTQ2NjMyFhYXIy4CIyYGBhUUHgIXHgIVFAYHBgcVMhYWFRQGBiPebB0cHB06OC07QgF\/ITsqJDUdHzZGJ1NUOmlFRmk9AYABGjEjHi8bGTBAJjRVMjg2KDYjOyQjOyP++EYSFRISbAUVG2RFIzcgFysdISseFw0cV0k9WDEyWT4aLR0BFScdHCUZFg0RMU4+Nl0cFQYsFS8kIy8YAP\/\/AC3+9AInAsgCJgFFAAAABwHQAPUAAAABAEf\/+wKfArwAJwAABSImNTMUFjMyNjY1NCYjIzU3IyIGFREjETQ2NjMhFQczMhYWFRQGBgHHaW92LTYlLBNGQWyk3yIdeCdKMwGAsRBEXzI0YAVwbDRFITghRENQpxwh\/ecCGzpHIFuxNWA\/R2U1AAABABwAAAIvArwABwAAMxEjNSEVIxHqzgITzgJbYWH9pQD\/\/wAcAAACLwOTAiYBSwAAAAcB3gCIAMwAAQAc\/vgCLwK8ABwAADMRIzUhFSMRIxUyFhYVFAYGIyM1MzI2NTQmIyM16s4CE84SIzskIzojf2wdHBwdOgJbYWH9pTYVLyQjLxhGEhUSEncA\/\/8AHP70Ai8CvAImAUsAAAAHAdAA6QAAAAEAQP\/0AmQCvAAVAAAFIiYmNREzERQWFjMyNjY1ETMRFAYGAVBMe0l4JkUvMEUleEp+DDx8XgGy\/k05SiUlSjkBs\/5OXnw8\/\/8AQP\/0AmQDkgImAU8AAAAHAdkAuQAA\/\/8AQP\/0AmQDmwImAU8AAAAHAdYAzgAA\/\/8AQP\/0AmQDZwImAU8AAAAHAdwAmQAAAAEAQP8wAmQCvAAuAAAFIiYmNTQ2NzY3JicmJjURMxEUFhYzMjY2NREzERQGBwYHBwYGFRQWMzI2NxUGBgFOIjwkGR4CAiIePkl4JkUvMEUleEo\/JCgmJB0dGA8lEhIs0BYtJBsvGAECBw8efF4Bsv5NOUolJUo5AbP+Tl58HhEHExIhEhQWCAdJBgj\/\/wBA\/\/QCZAPOAiYBTwAAAAcB2gDiAAD\/\/wBA\/\/QCZANqAiYBTwAAAAcB2wCsAAAAAQAaAAAD0gK8AAwAADMDMxMTMxMTMwMjAwPUuoCDmIWThIG\/jpCUArz9zQIz\/cwCNP1EAhL97v\/\/ABoAAAPSA7YCJgFWAAAABwHVAYQAAP\/\/ABoAAAPSA5QCJgFWAAAABwHXAWYAAP\/\/ABoAAAPSA3kCJgFWAAAABwHSAWMAAP\/\/ABoAAAPSA7YCJgFWAAAABwHUAYQAAAABABAAAAJbArwACAAAMzUDMxMTMwMV+emInp6H6vwBwP63AUn+QPz\/\/wAQAAACWwOUAiYBWwAAAAcB1wClAAD\/\/wAQAAACWwN5AiYBWwAAAAcB0gCiAAD\/\/wAQAAACWwO2AiYBWwAAAAcB1ADDAAD\/\/wAQAAACWwNqAiYBWwAAAAcB2wCQAAAAAQAwAAACBwK8AAkAADM1ASE1IRUBIRUwAUr+uAHT\/rQBTlwB+2Vc\/gVlAP\/\/ADAAAAIHA7YCJgFgAAAABwHVAKkAAP\/\/ADAAAAIHA5MCJgFgAAAABwHYAIsAAP\/\/ADAAAAIHA3QCJgFgAAAABwHTAOAAAAACADP\/9AIBAgQAIAAuAAAXIiYmNTQ2NjMzNCYmIyIGByM+AjMyFhYVESMnDgMnMj4CNzUjIgYGFBYW6z5SKDFgRn8WLiQpOgd2BjxjO0dkNWYMCh8oMwUdLSESA28jLhQUJgwqRikwRicoNRolJjZNKzFbQP7IURQiGQ5fFScwGwIRICoeEAD\/\/wAz\/\/QCAQLWAiYBZAAAAAcBywCDAAD\/\/wAz\/\/QCAQKnAiYBZAAAAAYBzmIAAAIAM\/8vAgYCBAA2AEQAABciJiY1NDY2MzM0JiYjIgYHIz4CMzIWFhURBwYGFRQWMzI2NxUGBiMiJiY1NDY3NjcnDgMnMj4CNzUjIgYGFBYW6z5SKDFgRn8WLiQpOgd2BjxjO0dkNTUkHR0YDyUSEiwXIjwkGR4UHgkKHygzBR0tIRIDbyMuFBQmDCpGKTBGJyg1GiUmNk0rMVtA\/sgaEiESFBYIB0kGCBYtJBsvGA8QOhQiGQ5fFScwGwIRICoeEAAAAwAz\/\/QDewIEADUAQwBLAAAXIiYmNTQ2NjMzNCYmIyIGByM+AjMyFhc2NjMyFhYVFRQHIR4CMzI2NzMOAiMiJicOAicyNjY3NSMiBgYVFBYWJTMmJiMiBgbzP1YrMF9FhBUuJCY5BncGPGE5PlobIVs2Smw8Av6MAyQ6IS04DncNQF88QmohFDtKHyQ3IwVxIy0UFCUBHPwDRTIfNyYMKkYqMEcmKDQaJSQ1TSooJCQoQm9FFgwNLD0fKiIxUC44MB4wGl8jPCMJESAUFh8R2Tg+GzQA\/\/8AM\/\/0A3sC8QImAWgAAAAHAcYBYgAAAAEAMv\/0AiMCBAAfAAAFIiYmNTQ2NjMyFhcjJiYjIgYGFRQeAjMyNjY3MwYGATJKdUFBdUtegBJ+Cj8rJT0jFCUwHB0vIQd+EoAMQ3dMT3dEY1YmLCZIMyc8KRYTJhpUZQD\/\/wAy\/\/QCIwLxAiYBagAAAAcBxgC4AAD\/\/wAy\/\/QCIwLaAiYBagAAAAcBygCaAAD\/\/wAy\/\/QCIwKyAiYBagAAAAcBxADuAAAAAgAy\/\/QCRALQABIAIAAABSImJjQ2NjMyFhcRMxEjJw4CJzI2NjQmJiMiBgYUFhYBI0ZuPT5vRjlVGXhsDBAuQBIrQiQkQispQiUlQgxEeJh3RSsnAR79MEkWJxhoKUheSCgoSF5IKf\/\/ADL\/9ALfAuEAJgFuAAAABwHIAm8ADAACADL\/9AKNAtAAGgAoAAABNTM1MxUzFSMRIycOAiMiJiY0NjYzMhYXNQMyNjY0JiYjIgYGFBYWAUGLeElJbAwQLkArRm49Pm9GOVUZkCtCJCRCKylCJSVCAjZMTk5M\/cpJFicYRHiYd0UrJ4T+JilIXkgoKEheSCkAAAIAMv\/0AiQCBAAcACUAAAUiJiY1NDY2MzIWFhUVFAchFhcWFjMyNjczDgIDISYmIyIGBwYBL0tyQD9zTEpuPAL+hgMPET0mKjcNeg5AXsABAQJGNCU+EgwMQXZNUHhEQm9FFgwNJh0iIyQeL0srATg3PyIhFv\/\/ADL\/9AIkAtYCJgFxAAAABwHLAJQAAP\/\/ADL\/9AIkAtoCJgFxAAAABwHKAJwAAP\/\/ADL\/9AIkArICJgFxAAAABwHEAPEAAP\/\/ADL\/9AIkAqcCJgFxAAAABgHOdAAAAgAy\/zoCJAIEADQAPQAABSImJjU0NzY3JicmJjU0NjYzMhYWFRUUByEWFxYWMzI2NzMGBgcGBwcGBhUUFjMyNjcVBgYDISYmIyIGBwYBRSI8JA0KFiUgOUA\/c0xKbjwC\/oYDDxE9Jio3DXoOQC8OEBskHR0YDyUSEiyyAQECRjQlPhIMxhYtJBsYExMIEyB2TVB4REJvRRYMDSYdIiMkHi9LFQcFDRIhEhQWCAdJBggB8jc\/IiEWAAIALP\/0Ah8CBAAbACQAAAEyFhYUBgYjIiYmNTQ2NyEmJyYmIyIGByM+AhMhFhYzMjY3NgEhS3JBQHJNSm48AQEBewMPEj0mKjYOeg8\/XsD+\/wJGNCY9EwsCBEJ1nHlEQXBECxcOJh0hJCQeL0os\/sc2PyIiFgADACr\/GAIiAgQAMgBDAEsAAAUiJiY1NDY3NjcmJyYnNTcmJyY1NDY2MzIXMxUHFhUUBgYjIicHFhceAhceAhUUBgYnBgcGFRQWFjMyNjY1NCYnJjY2NCYiBhQWARdHazsfIAECEAwUDVgUDhgwWz8sI7xZFzBaPyUfKAICCiE2K0NUKDFkkxoNEyE5JCM0HSo+LU00NFY2NugjRzUfOxoBAQcIDA0XXBIYKTIzUjIMSwYoMjJTMQknAQEGCQgEBSZALSxOMvkNEBgZGiMSEyIYHiUEA+kuVi0tVi7\/\/wAq\/xgCIgLWAiYBeAAAAAYBy34A\/\/8AKv8YAiIDBAImAXgAAAAHAc8A3wAA\/\/8AKv8YAiICsgImAXgAAAAHAcQA2wAAAAEAHQAAAkQC0AAdAAATNTM1MxUzFSMVNjYzMhYWFREjETQmIyIGBhURIxEdSXiLixlWNj5WLXc3OCQ7IXgCNkxOTkyMKTEzY0r+3AEZQUQjQS\/+9QI2AAACADgAAADQAtUAAwAPAAAzETMRAyImNTQ2MzIWFRQGSHg8ISsrISErKwH4\/ggCSCkeHycnHx4pAAEAQwAAALsB+AADAAAzETMRQ3gB+P4I\/\/\/\/5wAAARkC1gImAX4AAAAGAcvnAP\/\/\/8YAAAE3AqcCJgF+AAAABgHOxgAAAv\/p\/y8AwAKyABkAIwAAFyImJjU0Njc2NxEzEQcGBhUUFjMyNjcVBgYDIiY0NjMyFhQGayI8JBkeDhV4NSQdHRgPJRISLAMZIyMZGCMj0RYtJBsvGAsMAen+CBoSIRIUFggHSQYIAwwiMiMjMiIA\/\/\/\/1AAAASsCswImAX4AAAAGAc3UAP\/\/ADj\/JAG5AtUAJgF9AAAABwGEAOcAAAAC\/+P\/JADSAtUADAAYAAAHNTMyNjURMxEUBgYjEyImNTQ2MzIWFRQGHSkiHHgoSTNpIioqIiEqKtxmGyECMv3NOkcgAyQpHh8nJx8eKQAB\/+P\/JADCAfgADAAABzUzMjY1ETMRFAYGIx0pIhx4KEkz3GYbIQIy\/c06RyAAAQBDAAACHgLQAAoAACEnFSMRMxE3MwcTAYjNeHi2j9Du\/v4C0P5Zz+f+7\/\/\/AEP+9AIeAtACJgGGAAAABwHQANsAAAABAEMAAAC7AtAAAwAAMxEzEUN4AtD9MP\/\/AA0AAADxA8kCJgGIAAAABwHGAA0A2P\/\/AEMAAAFWAuEAJgGIAAAABwHIAOYADP\/\/AEP+9AC7AtACJgGIAAAABgHQRAD\/\/wBDAAABjgLQACYBiAAAAAcBuwDMAAAAAQAKAAABEALQAAsAABM1NxEzFTcVBxEjEQpHeEdHeAEsYxkBKPwZZBn+kAFFAAEAQwAAAiACBAAVAAAzETMXNjYzMhYWFREjETQmIyIGBhURQ2oJF1Y7PVYveDg3JDkhAfhULDQzYkn+2gEbP0QiQS7+8\/\/\/AEMAAAIgAvECJgGOAAAABwHGANEAAP\/\/AEMAAAIgAtoCJgGOAAAABwHKALMAAP\/\/AEP+9AIgAgQCJgGOAAAABwHQAPQAAAABAEP\/JAIgAgQAHgAAMxEzFzY2MzIWFhURFAYGIyM1MzI2NRE0JiMiBgYVEUNqCRdWOz1WLyhKMzooIh04NyQ5IQH4VCw0M2JJ\/p86RyBmGyEBVUBDIkEu\/vMAAAIAMv\/0AisCBAAPAB8AAAUiJiY1NDY2MzIWFhUUBgYnMjY2NTQmJiMiBgYVFBYWAS5Ic0FCc0hIc0FCc0gkOyQjOyQjPCQkOwxDd01Pd0NDdk9PdkNnJEg1NUckJEc1NUgkAP\/\/ADL\/9AIrAtYCJgGTAAAABwHLAJcAAP\/\/ADL\/9AIrAtcCJgGTAAAABwHHAKwACP\/\/ADL\/9AIrAqcCJgGTAAAABgHOdgAAAQBDAAABdgIEAA8AADMRMxc+AjMVIyIOAhUVQ2sLEjZJLCoeNicWAfheIS8afw8hOSvx\/\/8AQwAAAXYC8QImAZcAAAAGAcZ6AP\/\/AEMAAAF9AtoCJgGXAAAABgHKXAD\/\/wBD\/vQBdgIEAiYBlwAAAAYB0EMAAAEAKP\/0AdsCBAAvAAAFIiYmJzMeAjMyNjY1NCYmJy4DNTQ2NjMyFhcjJiYjIgYVFBYWFx4CFRYGBgEMQ2M5BXgFGi0fHiYSGjEiJEM1Hy9ZPlhpCXIFLiYnKRkwIzhWMgEzXAwrTTIVIxQRHBAYGg8HBxUgMiQsRilRSRwfHRgPGREICx46NTBKKQD\/\/wAo\/\/QB2wLxAiYBmwAAAAcBxgCSAAD\/\/wAo\/\/QB2wLaAiYBmwAAAAYBynQAAAEAKP74AdsCBABFAAATNTMyNjU0JiMjNSYnJiYnMx4CMzI2NjU0JiYnLgM1NDY2MzIWFyMmJiMiBhUUFhYXHgIVFgYHBgcVMhYWFRQGBiOzbB0cHB06KyIyOQV4BRotHx4mEhoxIiRDNR8vWT5YaQlyBS4mJykZMCM4VjIBMy4hKSM7JCM7I\/74RhIVEhJtBQ8VTTIVIxQRHBAYGg8HBxUgMiQsRilRSRwfHRgPGREICx46NTBKFA8ELBUvJCMvGAD\/\/wAo\/vQB2wIEAiYBmwAAAAcB0ADKAAAAAQAgAAABdwJ9ABQAACEiJiY1NSM1MzczFTMVIxUUFjMzFQEeM0sqVlYOaomJISc+IEo\/6mWFhWXqJh1mAP\/\/ACAAAAGaAvECJgGgAAAABwHIASoAHAABACD++AG8An0AKQAAEzUzMjY1NCYjIzUmJyYmNTUjNTM3MxUzFSMVFBYzMxUjFTIWFhUUBgYjvWwdHBwdOhYTJipWVg5qiYkhJz46IzskIzsj\/vhGEhUSEnsECBBKP+plhYVl6iYdZjYVLyQjLxj\/\/wAg\/vQBdwJ9AiYBoAAAAAcB0ADUAAAAAQA8\/\/QCGQH4ABUAABciJiY1ETMRFBYzMjY2NREzESMnBgb+PVcueDc4JDkheGoJF1cMMWNJASf+5UFDIkEvAQ3+CFQsNAD\/\/wA8\/\/QCGQLWAiYBpAAAAAcBywCQAAD\/\/wA8\/\/QCGQLXAiYBpAAAAAcBxwClAAj\/\/wA8\/\/QCGQKnAiYBpAAAAAYBznAAAAEAPP8vAh4B+AArAAAXIiYmNREzERQWMzI2NjURMxEHBgYVFBYzMjY3FQYGIyImJjU0Njc2NycGBv49Vy54NzgkOSF4NSQdHRgPJRISLBciPCQZHhMcBxdXDDFjSQEn\/uVBQyJBLwEN\/ggaEiESFBYIB0kGCBYtJBsvGA8OPyw0AP\/\/ADz\/9AIZAxYCJgGkAAAABwHMALkAAP\/\/ADz\/9AIZArMCJgGkAAAABgHNfgAAAQATAAADEAH4AAwAADMDMxMTMxMTMwMjAwOnlHdcaIZoXXeUfG5vAfj+jAF0\/owBdP4IAYD+gP\/\/ABMAAAMQAvECJgGrAAAABwHGAR8AAP\/\/ABMAAAMQAs0CJgGrAAAABwHJAQEAAP\/\/ABMAAAMQArECJgGrAAAABwHDAP4AAP\/\/ABMAAAMQAvECJgGrAAAABwHFAR8AAAABABT\/JAI6AfgACAAAFxMjAzMTEzMBgHseyYOWjn\/+xdwBFAHA\/qoBVv0s\/\/8AFP8kAjoCzQImAbAAAAAHAckAlwAA\/\/8AFP8kAjoC8QImAbAAAAAHAcUAtQAA\/\/8AFP8kAjoCswImAbAAAAAGAc18AAABACIAAAG2AfgACQAAMzUBITUhFQEhFSIBBf7\/AYv++AENYQEzZGH+zGMA\/\/8AIgAAAbYC8QImAbQAAAAGAcZ9AP\/\/ACIAAAG2AtoCJgG0AAAABgHKXwD\/\/wAiAAABtgKyAiYBtAAAAAcBxACzAAAAAQArAQMAwgGTAAsAABMiJjU0NjMyFhUUBnciKioiISoqAQMqHSApKSAdKgAB\/8z\/IgFTAwUAGgAABzczMjY3EyM3Mzc2NjMHIgYHBzMHIwMOAiM0CRkYGgM3QAlBBAp0bQkzMgUEaAlpNwYuTTTeZRkeAgZkJWBYZiUtJWT9+jlFHgAAAQBH\/5wAvwLQAAMAABcRMxFHeGQDNPzMAAABAC3++gIZAxAACwAAExMHNRcnMwc3FScT5wzGxgx3C8bGC\/76AtsKXQry8gpdCv0lAAEAF\/\/0AucCvAAiAAAFIiYnNQc1NzUHNTc1MxU3FQcVNxUHFRYWMzI+AjUzFAYGAXYtZTeUlJaWe6KioaEVJhNHXzkYekuiDAwM6SBPIFYhTCLVuSVPJFYjTyOkBAQvV3tMlsZhAAIAHwAAAmMCvAAYACEAADc1MzUjNTMRMzIWFhUUBgYjIxUzFSMVIzUTMzI2NTQmIyMfWlpa81RuNTNtV3vDw3h4eEQ8PER4bF1UXwFAN108OF84VF1sbAEQPTM1P\/\/\/AEf\/9AQfArwAJgFBAAAABwGbAkQAAAABAC\/\/9AJHArwAJwAABSImNTUyNjY3NjchNSE1ITUhFSMVMxUjBgcOAiMVFBYzMjY1MwYGASZobl5wNwkCAv7NATf+yQIYcXF2AwUOQGtPLDgzLXADaQxxa4sKIyIKC05cU1NcThcTMD4dRTRBPDZjawACAAACOgEnArEACwAXAAATIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAY8GiIiGhgjI5gZIiIZGSIiAjoiGRkjIxkZIiIZGSMjGRkiAAEAAAI7AHcCsgALAAATIiY1NDYzMhYVFAY8GSMjGRgjIwI7IhkZIyMZGSIAAQAAAiMA5ALxAAQAABMnNzEX2dkO1gIjcV19AAEAAAIjAOQC8QAEAAATJzcxFwsL1g4CI1F9XQACAAACIQFYAs8AAwAHAAATNzMHIzczB6VQY2byRmJbAiGurq6uAAEAAAIHAHAC1QANAAARNTI2NTUjNTMWFhUUBhkWL2QGBjkCBzITExJkHCsXNzkAAAEAAAImASECzQAFAAARNTcXFSeQkZECJldQUFdTAAEAAAIzASEC2gAFAAATJzUXNxWQkJCRAjNQV1VVVwAAAQAAAjMBMgLWABEAABMiJiY1NTMUFjMyNjUzFRQGBpgvRCVAKDAxJ0ImRAIzJUIsECInJyIQLEMkAAIAAAI6AOADFgALABcAABMiJjU0NjMyFhUUBicyNjU0JiMiBhUUFnAuQkIuL0FBLxYfHhcVICACOjo0Mzs7MzQ6Nx4ZGh0dGhkeAAABAAACOgFXArMAFQAAEyImJiMiBgcjNjYzMhYWMzI2NzMGBuUcJyIUERcDQQk8LBwnIhQRFwNCCT0COhcXFhc+OhcXFxY9OwABAAACUgFxAqcAAwAAETUhFQFxAlJVVQABAAACNgBwAwQADQAAExUiBhUVMxUjJiY1NDZwGBcvZAYGOQMEMxITE2McKxY4OQABAAH+9AB3\/9IADQAAEzUyNjU1IzUzFhYVFAYFGRc0aAgGOv70Mx4eD2AYMBQ\/QwABAAD\/LwDXADkAFwAAFyImJjU0NjY3NxcHBgYVFBYzMjY3FQYGgiI8JBk7MzAbNSQdHRgPJRISLNEWLSQbLy8WFDkaEiESFBYIB0kGCAACAAADAgEnA3kACwAXAAATIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAY8GiIiGhgjI5gZIiIZGSIiAwIiGRkjIxkZIiIZGSMjGRkiAAEAAAL8AHcDdAALAAATIiY1NDYzMhYVFAY8GSMjGRgjIwL8IxkZIyMZGSMAAQAAAucA5AO2AAQAABMnNzEX2dkO1gLncV5+AAEAAALnAOQDtgAEAAATJzcxFwsL1g4C51F+XgACAAAC7QFYA5sAAwAHAAATNzMHIzczB6VQY2byRmJbAu2urq6uAAEAAALsASEDlAAFAAARNTcXFSeQkZEC7FdRUVdTAAEAAALrASEDkwAFAAATJzUXNxWQkJCRAutRV1VVVwAAAQAAAu4BMgOSABEAABMiJiY1NTMUFjMyNjUzFRQGBpgvRCVAKDAxJ0ImRALuJUMsECInJyIQLUIlAAIAAALxAOADzgALABcAABMiJjU0NjMyFhUUBicyNjU0JiMiBhUUFnAuQkIuL0FBLxYfHhcVICAC8TszNDs7NDM7Nx4ZGh0dGhkeAAABAAAC8AFXA2oAFQAAEyImJiMiBgcjNjYzMhYWMzI2NzMGBuUcJyIUERcDQQk8LBwnIhQRFwNCCT0C8BcXFhc+OxcXFhc+OwABAAADEQFxA2cAAwAAETUhFQFxAxFWVgACAA0CIQFlAs8AAwAHAAATNzMHIzczB7JQY2byRWNbAiGurq6uAAEADQIfAS4CxwAFAAATJzUXNxWdkJCRAh9RV1VVVwAAAAAOAK4AAwABBAkAAACoAAAAAwABBAkAAQAgAKgAAwABBAkAAgAOAMgAAwABBAkAAwA0ANYAAwABBAkABAAgAKgAAwABBAkABQA6AQoAAwABBAkABgAeAUQAAwABBAkADgA2AWIAAwABBAkBCAAYAZgAAwABBAkBCQAMAbAAAwABBAkBDwAQAbwAAwABBAkBFAAIAcwAAwABBAkBGgAMAdQAAwABBAkBGwAKAeAAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQA0ACAAVABoAGUAIABEAE0AIABTAGEAbgBzACAAUAByAG8AagBlAGMAdAAgAEEAdQB0AGgAbwByAHMAIAAoAGgAdAB0AHAAcwA6AC8ALwBnAGkAdABoAHUAYgAuAGMAbwBtAC8AZwBvAG8AZwBsAGUAZgBvAG4AdABzAC8AZABtAC0AZgBvAG4AdABzACkARABNACAAUwBhAG4AcwAgAFMAZQBtAGkAQgBvAGwAZABSAGUAZwB1AGwAYQByADQALgAwADAANAA7AEcATwBPAEcAOwBEAE0AUwBhAG4AcwAtAFMAZQBtAGkAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAANAAuADAAMAA0ADsAZwBmAHQAbwBvAGwAcwBbADAALgA5AC4AMwAwAF0ARABNAFMAYQBuAHMALQBTAGUAbQBpAEIAbwBsAGQAaAB0AHQAcABzADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwATwBwAHQAaQBjAGEAbAAgAHMAaQB6AGUAVwBlAGkAZwBoAHQAUwBlAG0AaQBCAG8AbABkADEANABwAHQASQB0AGEAbABpAGMAUgBvAG0AYQBuAAIAAAAAAAD\/nAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAB3wAAACQAyQECAMcAYgCtAGMArgCQACUAJgBkACcA6QAoAGUAyADKAMsAKQAqACsALADMAM0AzgDPAC0ALgAvAQMAMAAxAGYAMgDQANEAZwDTAJEArwCwADMA7QA0ADUANgA3ADgA1ADVAGgA1gA5ADoAOwA8AOsAPQBEAGkAawBsAGoAbgBtAKAARQBGAG8ARwDqAEgAcAByAHMAcQBJAEoASwBMANcAdAB2AHcBBAB1AE0BBQBOAE8BBgBQAFEAeABSAHkAewB8AHoAoQB9ALEAUwDuAFQAVQBWAIkAVwBYAH4AgACBAH8AWQBaAFsAXADsALoAXQDAAMEAnQCeABMAFAAVABYAFwAYABkAGgAbABwBBwEIAQkBCgELAQwBDQEOALwA9AD1APYBDwEQAREBEgADARMBFAARAA8AHQAeAKsABACjACIAogDDAIcADQAGABIAPwAQALIAswBCAAsADABeAGAAPgBAAMQAxQC0ALUAtgC3AKkAqgC+AL8ABQAKARUBFgAjAAkAiACGAIsAigCMAIMAXwDoAIQAvQAHARcAhQCWARgADgDvAPAAuAAgACEAHwCTAGEApABBARkACAEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwAjgBDAI0A2ADdANkA2gDeAT0BPgE\/AUABQQFCAUMBRAFFAP0A\/wFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAPgBUwFUAVUBVgFXAVgA+gFZAVoBWwFcAV0BXgFfAWABYQFiAWMA4gFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgDkAPsBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGALsBhwGIAYkBigDmAYsBjAGNAY4BjwGQAZEBkgD+AQABkwGUAZUBAQGWAZcBmAGZAZoBmwGcAZ0A+QGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAOMBsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8A5QD8AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gDnAdcB2AHZAdoB2wCmAdwAggHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gDfAOEGQWJyZXZlBExkb3QJaS5sb2NsVFJLB3VuaTAyMzcEbGRvdAhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQhvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcgd1bmkwMEI5B3VuaTAwQjIHdW5pMDBCMwd1bmkyMDc0B3VuaTAwQTACQ1IRcXVvdGVkYmxsZWZ0LnNzMDgScXVvdGVkYmxyaWdodC5zczA4BEV1cm8HdW5pMjIxNQd1bmkwMEI1B2Fycm93dXAHdW5pMjE5NwphcnJvd3JpZ2h0B3VuaTIxOTgJYXJyb3dkb3duB3VuaTIxOTkJYXJyb3dsZWZ0B3VuaTIxOTYJYXJyb3dib3RoCWFycm93dXBkbgxhcnJvd3VwLnNzMDgMdW5pMjE5Ny5zczA4D2Fycm93cmlnaHQuc3MwOAx1bmkyMTk4LnNzMDgOYXJyb3dkb3duLnNzMDgMdW5pMjE5OS5zczA4DmFycm93bGVmdC5zczA4DHVuaTIxOTYuc3MwOA5hcnJvd2JvdGguc3MwOA5hcnJvd3VwZG4uc3MwOAd1bmkwMzA4B3VuaTAzMDcJZ3JhdmVjb21iCWFjdXRlY29tYgd1bmkwMzAyB3VuaTAzMEEJdGlsZGVjb21iB3VuaTAzMDQMdW5pMDMwOC5jYXNlDmdyYXZlY29tYi5jYXNlDmFjdXRlY29tYi5jYXNlDHVuaTAzMDIuY2FzZQx1bmkwMzA2LmNhc2UMdW5pMDMwQS5jYXNlDnRpbGRlY29tYi5jYXNlCS5ub3RkZWYuMQNBLjEIQWFjdXRlLjEIQWJyZXZlLjEHQW1hY3JvbgdBb2dvbmVrBEFFLjEHQUVhY3V0ZQNDLjEKQ2RvdGFjY2VudANELjEGRGNhcm9uBkRjcm9hdAVFdGguMQNFLjEGRWJyZXZlBkVjYXJvbgpFZG90YWNjZW50B0VtYWNyb24HRW9nb25lawd1bmkwMThGA0cuMQd1bmkwMTIyCkdkb3RhY2NlbnQESGJhcgNJLjECSUoGSWJyZXZlB0ltYWNyb24HSW9nb25lawZJdGlsZGUDSi4xA0suMQd1bmkwMTM2A0wuMQZMYWN1dGUGTGNhcm9uB3VuaTAxM0IGTGRvdC4xA04uMQZOYWN1dGUGTmNhcm9uB3VuaTAxNDUDRW5nA08uMQZPYnJldmUNT2h1bmdhcnVtbGF1dAdPbWFjcm9uA1IuMQZSYWN1dGUGUmNhcm9uB3VuaTAxNTYDUy4xBlNhY3V0ZQd1bmkwMjE4B3VuaTFFOUUDVC4xBlRjYXJvbgd1bmkwMTYyB3VuaTAyMUEDVS4xBlVicmV2ZQ1VaHVuZ2FydW1sYXV0B1VtYWNyb24HVW9nb25lawVVcmluZwZVdGlsZGUDVy4xBldhY3V0ZQtXY2lyY3VtZmxleAlXZGllcmVzaXMGV2dyYXZlA1kuMQtZY2lyY3VtZmxleAZZZ3JhdmUHdW5pMUVGOANaLjEGWmFjdXRlClpkb3RhY2NlbnQDYS4xBmFicmV2ZQdhbWFjcm9uB2FvZ29uZWsEYWUuMQdhZWFjdXRlA2MuMQpjZG90YWNjZW50A2QuMQZkY2Fyb24DZS4xBmVicmV2ZQZlY2Fyb24KZWRvdGFjY2VudAdlbWFjcm9uB2VvZ29uZWsHdW5pMDI1OQNnLjEHdW5pMDEyMwpnZG90YWNjZW50BGhiYXIDaS4xCmRvdGxlc3NpLjEGaWJyZXZlB2ltYWNyb24HaW9nb25lawZpdGlsZGUCaWoDai4xCXVuaTAyMzcuMQNrLjEHdW5pMDEzNwNsLjEGbGFjdXRlBmxjYXJvbgd1bmkwMTNDBmxkb3QuMQNuLjEGbmFjdXRlBm5jYXJvbgd1bmkwMTQ2A2VuZwNvLjEGb2JyZXZlDW9odW5nYXJ1bWxhdXQHb21hY3JvbgNyLjEGcmFjdXRlBnJjYXJvbgd1bmkwMTU3A3MuMQZzYWN1dGUHdW5pMDIxOQN0LjEGdGNhcm9uB3VuaTAxNjMHdW5pMDIxQgN1LjEGdWJyZXZlDXVodW5nYXJ1bWxhdXQHdW1hY3Jvbgd1b2dvbmVrBXVyaW5nBnV0aWxkZQN3LjEGd2FjdXRlC3djaXJjdW1mbGV4CXdkaWVyZXNpcwZ3Z3JhdmUDeS4xC3ljaXJjdW1mbGV4BnlncmF2ZQd1bmkxRUY5A3ouMQZ6YWN1dGUKemRvdGFjY2VudAdzcGFjZS4xCXVuaTAwQTAuMQRDUi4xEHBlcmlvZGNlbnRlcmVkLjEHdW5pMjExMwd1bmkyMEJBB3VuaTIwQkQHdW5pMjBBOAd1bmkyMEI5CXVuaTAzMDguMQl1bmkwMzA3LjELZ3JhdmVjb21iLjELYWN1dGVjb21iLjEHdW5pMDMwQgt1bmkwMzBDLmFsdAl1bmkwMzAyLjEHdW5pMDMwQwd1bmkwMzA2CXVuaTAzMEEuMQt0aWxkZWNvbWIuMQl1bmkwMzA0LjEHdW5pMDMxMgd1bmkwMzI2B3VuaTAzMjgOdW5pMDMwOC5jYXNlLjEMdW5pMDMwNy5jYXNlEGdyYXZlY29tYi5jYXNlLjEQYWN1dGVjb21iLmNhc2UuMQx1bmkwMzBCLmNhc2UOdW5pMDMwMi5jYXNlLjEMdW5pMDMwQy5jYXNlDnVuaTAzMDYuY2FzZS4xDnVuaTAzMEEuY2FzZS4xEHRpbGRlY29tYi5jYXNlLjEMdW5pMDMwNC5jYXNlAAABAAH\/\/wAPAAEAAgAOAAABngAAAb4AAgBCAAEACQABAAsAEwABABUAFQABABcAGwABAB0AHwABACEAKgABAC0ANQABADcANwABADkAQwABAEUARwABAEkATQABAE8AVwABAFoAXAABAF4AZwABAGsAbAABAG4AcwABAHUAdQABAHcAegABAHsAfAACAM0AzQABAM8A0AABANIA0gABAPUA9QADAPcA+AADAPsA\/AADAQ0BEQABARMBEwABARUBFwABARkBGgABAR0BIQABASQBJgABASkBLgABATEBMQABATMBNwABATkBPAABAT4BQAABAUIBRAABAUYBSQABAUwBTgABAVABVQABAVcBWgABAVwBXwABAWEBYwABAWUBZwABAWkBaQABAWsBbQABAW8BcAABAXIBdwABAXkBfAABAX4BgwABAYcBhwABAYkBjQABAY8BkQABAZQBlgABAZgBmgABAZwBnwABAaEBowABAaUBqgABAawBrwABAbEBswABAbUBtwABAcEBwQABAcMBwwADAcUBxgADAc0BzgADAdEB0QADAAgAAgAQABgAAQACAHsAfAABAAQAAQEqAAEABAABATQAAQACAAAADAAAABoAAQAFAPUA9wD4APsA\/AABAAUBwwHFAcYBzQHOAAAAAQAAAAoAOAB2AAJERkxUAA5sYXRuAB4ABAAAAAD\/\/wADAAAAAQACAAQAAAAA\/\/8AAwADAAQABQAGa2VybgAmbWFyawAubWttawA2a2VybgAmbWFyawAubWttawA2AAAAAgAAAAMAAAACAAEABAAAAAIAAgAFAAYADiRYJh4mSi2mMk4AAgAIAAIAChk8AAEBHgAEAAAAigHcAdwB3AHcAdwB3AHcAdwCKhheGF4CbAP0AqYDXAOGA7ADsAP0A\/QD9AP0A\/QD4gP0BBoE7AUyBUQFpgWmBaYFpgWmBbAGBgZgB0oHSgsGB6gHqAeoB6gHqAeoB6gIyAjiB74HvgjICMgIyAjICMgH2AhWCLQIZAiqCLQItAi0COII4gjiCOII4gjCCOIIyAjiCOIJEAkaCTQJYgnACcoKZAp6CuAK4ArgCwYLDAtuDCQMggywDTINqA8SD4QP7g\/0D\/oQCBCMEA4QcBB+EIwQthC8ENIRMBGqEmQT7hisGKwYrBTIFVIWKBaaFtwW3BbmFwQW5hcEFyIXIhcoFygXPhfcGF4YaBhuGKwYuhkIGRIZKAACAB8AAQAIAAAACgAOAAgAFAAUAA0AHAAfAA4AIwApABIAKwAsABkALgAuABsAMABGABwASQBQADMAWABYADsAWgBaADwAXQBuAD0AdAB6AE8AfwB\/AFYAgQCIAFcAjQCNAF8AjwCPAGAAkQCRAGEAlQCVAGIAnACkAGMApwCnAGwAqQCvAG0AsQCyAHQAtQC7AHYAvQC9AH0AvwDAAH4AwwDEAIAA0ADQAIIA0gDSAIMA1ADXAIQA2QDaAIgAEwBO\/\/YAdP\/JAH\/\/2ACA\/+IAgv\/sAIP\/8ACE\/90Ahf\/hAIb\/8QCH\/+YAiP\/cAKP\/3QCn\/6EAqv\/EALD\/7ACx\/84Aw\/\/2ANT\/4gDW\/+cAEAAB\/\/kAAv\/5AAP\/+QAE\/\/kABf\/5AAb\/+QAH\/\/kACP\/5AAn\/4gAw\/\/YANv\/rADf\/7AA4\/+oAOf\/iADr\/4gCI\/\/QADgA4\/84AbwAAAHAAAABxAAAAcgAAAHMAAACB\/\/YAhv\/iAJ3\/2ACp\/9MAqv\/xAK7\/5wCw\/8QAsv\/dAC0AAf+1AAL\/tQAD\/7UABP+1AAX\/tQAG\/7UAB\/+1AAj\/tQAJ\/4gAHP\/OADz\/1wA9\/9cAPv\/XAD\/\/1wBA\/9cAQf\/XAEL\/1wBD\/9cARf\/nAEb\/5wBH\/+cASP\/nAEn\/5wBK\/+cAS\/\/nAEz\/5wBN\/+cATwAAAGD\/5wBh\/+cAYv\/nAGP\/5wBk\/+cAZv\/nAGf\/5wBq\/+cAbP\/sAIf\/9gCc\/8QAnf\/EAKD\/xACu\/9gAw\/\/YAMT\/7ADW\/+wACgAB\/+IAAv\/iAAP\/4gAE\/+IABf\/iAAb\/4gAH\/+IACP\/iAJz\/7ACg\/+wACgB0\/+IAf\/\/mAIL\/7ACD\/+cAhf\/fAIf\/4gCI\/+cAo\/\/xAMT\/8gDU\/84ADAB0\/8QAf\/\/dAID\/3QCD\/+wAhP\/pAIX\/5QCG\/9MAiP\/OAKP\/5wCn\/5wAqv\/YANT\/zgAEAJz\/7ACg\/+wAqf\/TAK7\/2AAJADj\/zgCB\/\/YAhv\/iAJ3\/2ACp\/9MAqv\/xAK7\/5wCw\/8QAsv\/dADQAAf+zAAL\/swAD\/7MABP+zAAX\/swAG\/7MAB\/+zAAj\/swAJ\/4gAHP+6ADj\/4gA5\/\/kAOv\/5ADv\/7AA8\/+IAPf\/iAD7\/4gA\/\/+IAQP\/iAEH\/4gBC\/+IAQ\/\/iAEX\/5gBG\/+YAR\/\/mAEj\/5gBJ\/+YASv\/mAEv\/5gBM\/+YATf\/mAE\/\/2QBg\/+YAYf\/mAGL\/5gBj\/+YAZP\/mAGb\/5gBn\/+YAav\/mAIP\/zgCE\/\/YAh\/\/5AJz\/ugCd\/6YAoP+6AKn\/tQCu\/7oAsP\/iAMP\/2ADE\/90A1P\/2ABEAAf\/TAAL\/0wAD\/9MABP\/TAAX\/0wAG\/9MAB\/\/TAAj\/0wAw\/8QANv\/TADf\/2AA4\/7oAOf+\/ADr\/vwCc\/84AoP\/OALD\/3QAEAIP\/5wCE\/+wAh\/\/2ANT\/9gAYABz\/pgBl\/6YAaP\/SAHT\/xAB2\/9gAf\/\/iAIH\/9QCC\/\/MAg\/\/EAIf\/7ACI\/\/YAnf+wAJ\/\/yQCi\/9gAowAUAKT\/pgCp\/78AqgAPAK7\/xACx\/+IAw\/+mAMT\/zgDU\/8kA1v\/EAAIAqf\/iAK7\/2AAVABz\/xAB0\/\/YAf\/\/dAIH\/8QCC\/\/YAg\/+1AIT\/8QCF\/+wAhgAUAIf\/3wCI\/+kAnf+1AJ7\/4gCi\/90Aqf+1AKoAFACu\/6EAw\/+hAMT\/xADU\/84A1v+\/ABYAHP\/YACj\/7ABl\/8sAdP\/2AH\/\/2ACB\/\/EAgv\/rAIP\/zgCE\/+wAhf\/YAIf\/2ACI\/+UAnf\/EAJ\/\/3QCi\/+IAqf\/EAK7\/ugCx\/+IAw\/+wAMT\/zgDU\/84A1v\/nADoAC\/\/OAAz\/zgAV\/84AI\/\/OACT\/zgAl\/84AJv\/OACf\/zgAp\/84AKv\/OAC3\/zgA8\/+cAPf\/nAD7\/5wA\/\/+cAQP\/nAEH\/5wBC\/+cAQ\/\/nAEX\/3QBG\/90AR\/\/dAEj\/3QBJ\/90ASv\/dAEv\/3QBM\/90ATf\/dAE8AAABg\/90AYf\/dAGL\/3QBj\/90AZP\/dAGb\/3QBn\/90Aav\/dAGz\/7gBv\/+IAcP\/iAHH\/4gBy\/+IAc\/\/iAHT\/4gB1\/+IAd\/\/nAHj\/5wB5\/+cAf\/\/TAIL\/7ACD\/84AhP\/TAIX\/3QCH\/9gAiP\/YAKP\/5wDD\/\/EA1v\/dABcAHP+rACj\/0gB0\/9sAf\/\/YAIH\/8QCC\/9gAg\/+rAIT\/2ACF\/9MAh\/\/TAIj\/3QCd\/7UAnv\/dAJ\/\/zgCi\/90ApP+rAKn\/vwCu\/7oAsf\/OAMP\/kgDE\/7oA1P+1ANb\/xAAFAEQAAAB0\/\/AAhv\/xAKf\/2ACq\/9MABgB0\/+8Ahv\/2AKP\/4gCn\/+IAqv\/OALD\/8QAfADz\/7AA9\/+wAPv\/sAD\/\/7ABA\/+wAQf\/sAEL\/7ABD\/+wARf\/sAEb\/7ABH\/+wASP\/sAEn\/7ABK\/+wAS\/\/sAEz\/7ABN\/+wAT\/\/YAGD\/7ABh\/+wAYv\/sAGP\/7ABk\/+wAZv\/sAGf\/7ABq\/+wAbP\/vAIP\/7ACc\/+IAoP\/iAMP\/4gADAFgAFAB0AAoAqgAAABEARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAAYAAAAGEAAABiAAAAYwAAAGQAAABmAAAAZwAAAGoAAAACAFEAAABs\/+cAAwB0\/\/oAp\/\/iAKr\/2AABAHT\/8wAGAHT\/7AB2\/+AAhv\/dAKP\/7ACn\/+IAqv\/JAAsAdP\/oAHb\/5wCA\/9gAhv+\/AIj\/9gCj\/+IAp\/\/TAKn\/8QCq\/7UAsP\/TALL\/zgACAFgAHgCq\/90ABgBl\/\/UAbAAAAIEAGQCCAAoAnf\/dAJ4ACgALAHT\/6AB3\/+cAeP\/nAHn\/5wCA\/\/YAhv\/YAIj\/7ACj\/+cAp\/\/aAKr\/zgCw\/\/YAFwBF\/\/kARv\/5AEf\/+QBI\/\/kASf\/5AEr\/+QBL\/\/kATP\/5AE3\/+QBg\/\/kAYf\/5AGL\/+QBj\/\/kAZP\/5AGb\/+QBn\/\/kAav\/5AHT\/0wB3\/90AeP\/dAHn\/3QCG\/90Ap\/\/EAAIAgQAeAJ0AHgAmADz\/4wA9\/+MAPv\/jAD\/\/4wBA\/+MAQf\/jAEL\/4wBD\/+MARf\/oAEb\/6ABH\/+gASP\/oAEn\/6ABK\/+gAS\/\/oAEz\/6ABN\/+gATgAUAE\/\/5wBg\/+gAYf\/oAGL\/6ABj\/+gAZP\/oAGX\/8wBm\/+gAZ\/\/oAGr\/6ABs\/+wAbgAKAIEACgCD\/+wAnP\/YAJ3\/zgCg\/9gApP\/YAMP\/0wDE\/+8ABQCD\/\/YAh\/\/2AJ3\/4gCk\/\/EAw\/\/YABkAPP\/2AD3\/9gA+\/\/YAP\/\/2AED\/9gBB\/\/YAQv\/2AEP\/9gBF\/+cARv\/nAEf\/5wBI\/+cASf\/nAEr\/5wBL\/+cATP\/nAE3\/5wBg\/+cAYf\/nAGL\/5wBj\/+cAZP\/nAGb\/5wBn\/+cAav\/nAAkAZf\/oAIP\/4gCGAA8Anf+\/AKT\/yQCp\/9gAw\/\/JAMT\/9gDW\/\/YAAQCD\/\/EAGAAB\/9gAAv\/YAAP\/2AAE\/9gABf\/YAAb\/2AAH\/9gACP\/YAAn\/3QAw\/+IANv\/dADf\/2AA4\/9MAOf\/YADr\/2ACB\/\/oAhv\/4AJz\/2ACd\/+IAoP\/YAKn\/2ACq\/90Arv\/EALD\/3QAtAAv\/+gAM\/\/oAFf\/6ACP\/+gAk\/\/oAJf\/6ACb\/+gAn\/\/oAKf\/6ACr\/+gAt\/\/oAMP\/zADb\/7AA3\/\/EAOf\/nADr\/5wBF\/\/YARv\/2AEf\/9gBI\/\/YASf\/2AEr\/9gBL\/\/YATP\/2AE3\/9gBOAAoAYP\/2AGH\/9gBi\/\/YAY\/\/2AGT\/9gBm\/\/YAZ\/\/2AGr\/9gB0AAoAdgAKAH\/\/+gCD\/\/YAhv\/2AIf\/9gCI\/\/oAqAAPANT\/8QDW\/\/YA1\/\/xABcAAf\/cAAL\/3AAD\/9wABP\/cAAX\/3AAG\/9wAB\/\/cAAj\/3AAJ\/+cAMP\/sADb\/4gA3\/94AOP\/YADn\/0wA6\/9MAgP\/2AIb\/9gCI\/+cAp\/\/sAKn\/2ACq\/90Aw\/\/nAOD\/9gALADD\/2AA2\/+IAN\/\/nADn\/4gA6\/+IAd\/\/nAHj\/5wB5\/+cAp\/\/OAMQAIwDg\/\/EAIAAB\/9cAAv\/XAAP\/1wAE\/9cABf\/XAAb\/1wAH\/9cACP\/XAAn\/7AAw\/\/YANv\/sADf\/7AA4\/9gAOf\/dADr\/3QBP\/\/YAdf\/2AHf\/9gB4\/\/YAef\/2AIH\/9gCG\/\/YAiP\/nAKf\/3QCoAA8Aqf\/iAK7\/0wC4\/+cAuv\/nAL\/\/9gDA\/\/YAw\/\/xAB0AAf\/dAAL\/3QAD\/90ABP\/dAAX\/3QAG\/90AB\/\/dAAj\/3QAJ\/9gAMP\/sADb\/7AA3\/9gAOP\/UADn\/yQA6\/8kAT\/\/2AIH\/8QCE\/+wAhv\/xAIj\/7ACc\/90AoP\/dAKf\/3QCp\/90Aqv\/sAK7\/2ACw\/+IAw\/\/xAOD\/9gBaAAH\/sAAC\/7AAA\/+wAAT\/sAAF\/7AABv+wAAf\/sAAI\/7AAC\/\/xAAz\/8QAV\/\/EAHP\/YACP\/8QAk\/\/EAJf\/xACb\/8QAn\/\/EAKP\/sACn\/8QAq\/\/EALf\/xADYAFAA3AAoAPP\/sAD3\/7AA+\/+wAP\/\/sAED\/7ABB\/+wAQv\/sAEP\/7ABF\/80ARv\/NAEf\/zQBI\/80ASf\/NAEr\/zQBL\/80ATP\/NAE3\/zQBOAAoAT\/\/JAFL\/8QBd\/\/EAXv\/xAF\/\/8QBg\/80AYf\/NAGL\/zQBj\/80AZP\/NAGb\/zQBn\/80AaP\/sAGr\/zQBr\/\/EAbP\/TAH\/\/+ACAAA8Agf\/xAIL\/8QCD\/8kAhP\/nAIX\/8QCH\/\/YAiP\/xAJz\/xACd\/84An\/\/iAKD\/xACk\/8kAqf+wAKv\/7ACs\/+wArf\/sAK7\/zgC1\/8QAtv\/EALv\/0wC9\/9MAvwAeAMAAHgDD\/6sAxP\/YAM3\/3QDU\/\/EA1f\/sANb\/8QDX\/+wA2v\/iABwAAf\/mAAL\/5gAD\/+YABP\/mAAX\/5gAG\/+YAB\/\/mAAj\/5gAJ\/+cAMP\/sADb\/3wA3\/9gAOP\/YADn\/0wA6\/9MAdf\/2AID\/7ACB\/\/YAhv\/xAIj\/5wCn\/+IAqf\/sAKr\/3QCu\/84AsP\/TALj\/7AC6\/+wAw\/\/xABoAAf\/RAAL\/0QAD\/9EABP\/RAAX\/0QAG\/9EAB\/\/RAAj\/0QAJ\/9MAMP\/sADb\/4gA3\/9sAOP\/JADn\/zgA6\/84AgP\/2AIH\/9gCC\/\/YAhv\/xAIf\/9gCc\/+IAoP\/iAKn\/zgCq\/+IArv\/OALD\/2AABAJH\/nAABAJH\/gAADAIr\/fACLAAAAjP9iAAEAjwAAABgAC\/\/sAAz\/7AAV\/+wAI\/\/sACT\/7AAl\/+wAJv\/sACf\/7AAp\/+wAKv\/sAC3\/7AAw\/7AANv+1ADf\/yQA5\/6sAOv+rAG7\/4gB0\/9MAdf\/iAHf\/yQB4\/8kAef\/JAKr\/xADg\/8kAAwA2\/+IAOf\/dADr\/3QADADD\/0wA5\/\/YAOv\/2AAoAdP\/YAH\/\/2ACA\/+IAhf\/iAIb\/4gCI\/+IAo\/\/dAKr\/xACx\/84A2v\/EAAEAp\/\/sAAUAMP\/YADb\/3QA3\/+IAOf\/dADr\/3QAXAAH\/ugAC\/7oAA\/+6AAT\/ugAF\/7oABv+6AAf\/ugAI\/7oACf+hABz\/0wA4\/+wAnP+hAJ3\/ugCg\/6EApP+SAKn\/tQCu\/6YAsP+\/ALX\/2AC2\/9gAvAAAAL4AAADD\/84AHgAw\/8kAOf\/JADr\/yQBF\/+wARv\/sAEf\/7ABI\/+wASf\/sAEr\/7ABL\/+wATP\/sAE3\/7ABg\/+wAYf\/sAGL\/7ABj\/+wAZP\/sAGb\/7ABn\/+wAav\/sAHT\/8QB6ABQAhf\/dAIb\/8QCI\/\/EAo\/\/dAKr\/3QC1ACMAtgAjAOD\/5wAuAAH\/oQAC\/6EAA\/+hAAT\/oQAF\/6EABv+hAAf\/oQAI\/6EACf+IABz\/vwA8\/+cAPf\/nAD7\/5wA\/\/+cAQP\/nAEH\/5wBC\/+cAQ\/\/nAEX\/4gBG\/+IAR\/\/iAEj\/4gBJ\/+IASv\/iAEv\/4gBM\/+IATf\/iAGD\/4gBh\/+IAYv\/iAGP\/4gBk\/+IAZv\/iAGf\/4gBq\/+IAbP\/nAIP\/nACE\/9gAhf\/dAIf\/4gCh\/+wApP+mAKn\/jQCu\/6sAw\/\/JAMT\/0wBiAAoAMgAL\/+IADP\/iAA0AMgAPADIAEAAyABEAMgASADIAEwAyABQAMgAV\/+IAFgAyABcAMgAYADIAGQA8ABoAMgAbADIAHP\/YAB0AMgAeADIAHwAyACAAMgAhADIAIgAyACP\/4gAk\/+IAJf\/iACb\/4gAn\/+IAKP\/iACn\/4gAq\/+IAKwAyACwAMgAt\/+IALgAyADAAFAA2AB4ANwAKADkAGQA6ABkAPP\/JAD3\/yQA+\/8kAP\/\/JAED\/yQBB\/8kAQv\/JAEP\/yQBF\/88ARv\/PAEf\/zwBI\/88ASf\/PAEr\/zwBL\/88ATP\/PAE3\/zwBP\/9gAUv\/tAF3\/7QBe\/+0AX\/\/tAGD\/zwBh\/88AYv\/PAGP\/zwBk\/88AZv\/PAGf\/zwBq\/88Aa\/\/tAGz\/4gB\/\/+wAgv\/dAIP\/vwCE\/+IAhf\/nAIf\/7ACI\/90AnP+JAJ3\/xACg\/4kApP+\/AKf\/7ACp\/4gAq\/\/GAKz\/xgCt\/8YArv9vALX\/qwC2\/6sAw\/+rAMT\/zgDLADIAzAAyANT\/zgDV\/8YANgAL\/\/YADP\/2ABX\/9gAj\/\/YAJP\/2ACX\/9gAm\/\/YAJ\/\/2ACn\/9gAq\/\/YALf\/2ADD\/5wA2\/8QAN\/\/OADn\/ugA6\/7oARf\/nAEb\/5wBH\/+cASP\/nAEn\/5wBK\/+cAS\/\/nAEz\/5wBN\/+cAYP\/nAGH\/5wBi\/+cAY\/\/nAGT\/5wBm\/+cAZ\/\/nAGr\/5wB\/\/+cAhf\/dAIb\/8QCH\/90AiP\/iAJ0AMgCj\/+IAqv9+AKv\/4gCs\/+IArf\/iAK4ALQC1ACgAtgAoALf\/ugC4\/7oAuf+6ALr\/ugC\/\/6EAwP+hANX\/4gAiAAv\/5wAM\/+cAFf\/nACP\/5wAk\/+cAJf\/nACb\/5wAn\/+cAKf\/nACr\/5wAt\/+cAMP\/EADH\/2AAy\/9gAM\/\/YADT\/2AA1\/9gANv+hADf\/ugA5\/7oAOv+6AFgAHgB\/\/8QAgP\/JAIP\/yQCE\/84Ahf+1AIb\/7ACH\/84AiP+6AKP\/0wCn\/6sAqv9lAMT\/2AA1AAH\/7AAC\/+wAA\/\/sAAT\/7AAF\/+wABv\/sAAf\/7AAI\/+wAC\/\/EAAz\/xAAV\/8QAI\/\/EACT\/xAAl\/8QAJv\/EACf\/xAAp\/8QAKv\/EAC3\/xAA8\/9MAPf\/TAD7\/0wA\/\/9MAQP\/TAEH\/0wBC\/9MAQ\/\/TAEX\/0wBG\/9MAR\/\/TAEj\/0wBJ\/9MASv\/TAEv\/0wBM\/9MATf\/TAGD\/0wBh\/9MAYv\/TAGP\/0wBk\/9MAZv\/TAGf\/0wBq\/9MAbP\/sAG7\/9gB\/\/90Ag\/\/dAIX\/4gCH\/9MAiP\/dAMP\/3QDE\/9gAHAAL\/90ADP\/dABX\/3QAj\/90AJP\/dACX\/3QAm\/90AJ\/\/dACn\/3QAq\/90ALf\/dAEX\/zgBG\/84AR\/\/OAEj\/zgBJ\/84ASv\/OAEv\/zgBM\/84ATf\/OAGD\/zgBh\/84AYv\/OAGP\/zgBk\/84AZv\/OAGf\/zgBq\/84AEAAB\/84AAv\/OAAP\/zgAE\/84ABf\/OAAb\/zgAH\/84ACP\/OAAn\/xAAw\/+IAN\/\/iADn\/zgA6\/84AnP\/OAJ3\/3QCg\/84AAgCj\/\/YAqv+rAAcAHP+wAIP\/ugCE\/90Ah\/\/2AKT\/qwCp\/5wAw\/+rAAcAHP+wAIP\/zgCE\/9MAh\/\/YAKn\/jQDD\/5wAxP\/JAAEAhv\/dAAUAHP+6AIP\/xACE\/+IAhgAeAMP\/sAAnAAH\/1QAC\/9UAA\/\/VAAT\/1QAF\/9UABv\/VAAf\/1QAI\/9UACf\/EADD\/zgA2\/8QAN\/\/TADj\/zgA5\/6sAOv+rAHX\/9gB3\/+wAeP\/sAHn\/7ACA\/\/sAgf\/iAIL\/7ACD\/\/YAhv\/OAIf\/8QCc\/+IAnf\/YAKD\/4gCj\/+IAp\/\/YAKn\/zgCq\/84Arv\/EALD\/vwC\/\/9MAwP\/TANn\/0wDa\/+IA4P\/YACAAC\/\/2AAz\/9gAV\/\/YAI\/\/2ACT\/9gAl\/\/YAJv\/2ACf\/9gAp\/\/YAKv\/2AC3\/9gAw\/84ANv\/JADf\/3QA5\/78AOv+\/AHT\/9gB1\/\/YAd\/\/2AHj\/9gB5\/\/YAg\/\/xAIb\/8QCI\/+wAo\/\/YAKf\/xACq\/84AuP\/iALr\/4gC\/\/8QAwP\/EAOD\/4gACADj\/7ACw\/+IAAQCGABkADwAB\/+IAAv\/iAAP\/4gAE\/+IABf\/iAAb\/4gAH\/+IACP\/iADD\/yQA2\/84AN\/\/OADn\/tQA6\/7UAhv\/iAKn\/2AADAIb\/yQCp\/9MAqv\/TABMAAf\/nAAL\/5wAD\/+cABP\/nAAX\/5wAG\/+cAB\/\/nAAj\/5wAJ\/+IAMP\/EADb\/vwA3\/+cAOP\/dADn\/xAA6\/8QAd\/\/2AHj\/9gB5\/\/YAhv\/sAAIAgP\/xAIb\/7AAFAIb\/2ACc\/8QAoP\/EALD\/yQDD\/8QAAgCw\/9gAw\/\/YAAIICAAEAAAIrgnSACIAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/6QAAAAAAAP\/sAAAAAP\/2\/\/YAAAAAAAAAAAAAAAD\/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/0gAA\/9IAAAAA\/+MAAAAA\/+UAAAAAAAAAAP\/T\/+IAAAAAAAAAAP\/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/1AAAAAAAAP\/uAAAAAP\/j\/+wAAAAAAAAAAAAAAAD\/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/T\/+wAAAAAAAAAAAAAAAAAAAAAAAD\/6P\/Y\/+z\/4gAA\/\/YAAAAA\/7D\/xAAA\/7oAAP\/d\/7X\/4gAA\/9AAAAAAAAAAAAAAAAD\/v\/+mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7wAAAAAAAP\/6AAAAAAAA\/\/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/9gAA\/90AAAAA\/\/YAAAAA\/\/YAAAAAAAAAAP\/sAAAAAAAAAAAAAAAAAAAAAAAAAAD\/6v\/BAAD\/4gAAAAAAAAAA\/5z\/v\/\/i\/7oAAP\/i\/43\/vwAA\/84AAAAAAAAAAAAA\/8T\/xP+IAAAAAAAAAAD\/p\/\/S\/7AAAP\/d\/+T\/sAAAAAD\/7P\/YAAD\/uv\/2AAD\/yf+r\/+L\/7P+D\/6YAAAAAAAAAIwAAAAAAAAAAAAD\/1AAA\/9oAAAAAAAAAAAAAAAAAAAAAAAD\/5wAAAAAAAP\/dAAAAAAAA\/7UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/+IAAAAA\/\/YAAAAA\/\/YAAAAAAAAAAAAAAAAAAAAAAAAAAP\/sAAAAAAAAAAD\/y\/\/j\/8gAAP\/2\/\/j\/ugAAAAAAAP\/2AAD\/3QAAAAD\/3f\/TAAAAAP+m\/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/\/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/5wAAAAAAAP\/wAAAAAAAA\/+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/7gAA\/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/sAAAAAAAA\/+wAAAAAAAAAAAAAAAAAAAAAAAD\/pv\/l\/60AAP\/O\/87\/tQAAAAD\/zv\/2AAD\/v\/\/IAAD\/zv+m\/+z\/3f+h\/7AAAAAAAAAAAAAAAAAAAAAAAAAAAP\/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAA\/8kAAAAA\/90AAAAA\/84AAAAAAAAAAAAAAAAAAAAAAAAAAP\/dAAAAAAAAAAD\/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/0AAAAAAAA\/9gAAAAAAAAAAAAAAAAAAAAAAAD\/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAA\/+4AAAAAAAAAAAAA\/+cAAAAA\/\/b\/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/nAAAAAAAAAAD\/2P\/P\/+AAAAAA\/\/YAAAAAAAD\/zgAAAAD\/+v\/iAAD\/xAAA\/+cAAAAAAAD\/2AAAAAAAAAAAAAAAAAAAAAAAAP\/iAAD\/7AAAAAAAAAAA\/6b\/2AAA\/7oAAP\/s\/7AAAAAAAAAAAAAAAAAAAAAA\/7AAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/2AAA\/\/EAAAAAAAAAAAAAAAAAAAAAAAD\/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/zgAAAAAAAAAAAAD\/vwAAAAAAAAAAAAAAAAAAAAAAAP\/YAAAAAP+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/w\/\/o\/8IAAP\/m\/\/n\/pgAAAAAAAP\/iAAD\/zgAAAAD\/3f+\/\/+wAAP+N\/7AAAAAAAAAAAAAAAAAAAAACABsAAQAIAAAACwAOAAgAFQAbAAwAHQAnABMAKQApAB4ALgA3AB8AOQBHACkASQBNADgATwBQAD0AWgBbAD8AXQBkAEEAZgBpAEkAawBsAE0AbgBuAE8AdQB1AFAAdwB6AFEAgACAAFUAnACcAFYAoACgAFcAqwCtAFgAuAC4AFsAugC7AFwAvQC9AF4AvwDAAF8AywDMAGEAzwDQAGMA1QDVAGUAAgAwAAEACAAFAAsADAAIAA0ADgACABUAFQAZAB0AHQAbAB4AHwAJACMAJwACACkAKQACAC4ALgAaAC8ALwAMADAAMAASADEANQAEADYANgAhADcANwANADkAOgAKADsAOwATADwAQgAGAEMAQwABAEQARAADAEUARgAOAEcARwAPAEkATQABAE8ATwAVAFAAUAAHAFoAWgAeAFsAWwAPAF0AXwAHAGAAZAADAGYAZgADAGcAZwABAGgAaQADAGsAawAWAGwAbAAQAG4AbgAXAHUAdQARAHcAeQALAHoAegAYAJwAnAAcAKAAoAAcAKsArQAUALgAuAAgALoAugAgALsAuwAdAL0AvQAdAL8AwAAfAM8AzwAMANAA0AAIANUA1QAUAAIANAABAAgACAAJAAkAFQAKAAoAAQALAAwAAwANAA0AAQAPABQAAQAVABUAAwAWABsAAQAdACIAAQAjACcAAwApACoAAwArACwAAQAtAC0AAwAuAC4AAQAvAC8ADAAwADAAEAAxADUABQA2ADYAGwA3ADcADQA5ADoACgA8AEMABABEAEQACQBFAE0AAgBPAE8AEgBQAFAACQBRAFEAHQBSAFIABgBaAFsACQBdAF8ABgBgAGQAAgBmAGcAAgBqAGoAAgBrAGsABgBsAGwADgBuAG4AEwBvAHMABwB1AHUADwB3AHkACwB6AHoAFAB7AHsAHACcAJwAFgCgAKAAFgCrAK0AEQC7ALsAFwC8ALwAGAC9AL0AFwC+AL4AGAC\/AMAAGgDLAMwAAQDPAM8ADADVANUAEQDgAOAAGQAEAAAAAQAIAAEB1AAMAAEOGgCUAAIAFgABAAkAAAALABMACQAVABUAEgAXABsAEwAdAB8AGAAhACoAGwAtADUAJQA3ADcALgA5AEMALwBFAEcAOgBJAE0APQBPAFAAQgBSAFcARABaAFwASgBeAGcATQBrAGwAVwBvAHMAWQB1AHUAXgB3AHoAXwDNAM0AYwDPANAAZADSANIAZgBnC8gLwgvIC8gLyAvCC8gLyADQC+AL4AvmDDoL7ADWC+wL7ADWC\/gL\/gDcC\/4L\/gDcDAoMFgwWDCgMKAwuAOIMLgwuAOIMLgwuAOgMLgw6DEYMTAxSAO4MUgxSAO4MXgxwDGoMfAyCAPQMggyCAPQMggyCAPoMmgyaDKAMpgEADKYMpgEADMQM7gzQAQYM0AzQDNABBgziDO4M7g0ADQANBgEMDQYNBgEMDJoNBgESDRgNJA0qARgNKg0qARgNNg1IDUINSA1UDJoMRgEeASQAAQI4ArwAAQEpA7YAAQCDA7YAAQGHA7YAAQH9ArwAAQFSA7YAAQEbAu8AAQHUAfgAAQEsAu8AAQB\/Au8AAQEvAu8AAQHpAfgAAQEpAu8AAQGiArwAAQE\/ArwABgAQAAEACgAAAAEADAAaAAEMUgyAAAEABQD1APcA+AD7APwAAQACAPcA+AACAAgAAgAKAC4AAQAUAAQAAAAFAB4AHgAeAB4AHgACAAEBMwE3AAAAAQEi\/+IAAgSoAAQAAAV2BkYAHAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/pAAAAAAAA\/+wAAP\/2\/\/YAAAAAAAAAAAAAAAAAAAAAAAAAAP\/SAAD\/0gAAAAD\/4wAAAAD\/5QAAAAAAAP\/TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/UAAAAAAAA\/+4AAP\/j\/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP\/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/TAAAAAP\/o\/9j\/7P\/iAAD\/9gAAAAD\/sP\/EAAD\/ugAA\/93\/tQAA\/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/vAAAAAAAA\/\/oAAAAA\/\/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/2AAD\/3QAAAAD\/9gAAAAD\/9gAAAAAAAP\/sAAAAAP\/q\/8EAAP\/iAAAAAAAAAAD\/nP+\/\/+L\/ugAA\/+L\/jQAA\/84AAAAAAAAAAP+n\/9L\/sAAA\/93\/5P+wAAAAAP\/s\/9gAAP+6\/\/YAAP+r\/+L\/7P+DAAAAAP\/UAAD\/2gAAAAAAAAAAAAAAAAAAAAAAAP\/nAAAAAP\/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/4gAAAAD\/9gAAAAD\/9gAAAAAAAAAAAAAAAP\/L\/+P\/yAAA\/\/b\/+P+6AAAAAAAA\/\/YAAP\/dAAAAAP\/TAAAAAP+mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/\/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/nAAAAAAAA\/\/AAAAAA\/+8AAAAAAAAAAP\/uAAD\/6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/sAAAAAAAAAAAAAP+m\/+X\/rQAA\/87\/zv+1AAAAAP\/O\/\/YAAP+\/\/8gAAP+m\/+z\/3f+hAAAAAAAA\/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/0AAAAAAAAAAAAAP\/zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP\/iAAD\/7gAAAAAAAAAAAAD\/5wAAAAD\/9v\/2AAAAAAAAAAAAAAAAAAAAAP\/Y\/8\/\/4AAAAAD\/9gAAAAAAAP\/OAAAAAP\/6\/+IAAAAA\/+cAAAAAAAAAAP\/YAAD\/8QAAAAAAAAAAAAAAAAAAAAAAAP\/nAAAAAAAAAAAAAAAAAAEAZQENAQ4BDwEQAREBFQEWARcBGQEaASIBJAEmASoBKwEsAS0BLgExATMBNAE1ATYBNwE5AToBPgE\/AUABQgFDAUYBRwFIAUwBTQFOAVABUQFSAVMBVAFVAVcBWAFZAVoBXAFdAV4BXwFhAWIBYwFlAWYBZwFpAWsBbAFtAW8BcAFyAXMBdAF1AXYBdwF5AXoBewGHAYkBiwGPAZABkQGUAZUBlgGYAZkBmgGcAZ0BngGfAaEBogGjAawBrQGuAa8BsQGyAbMBtQG2AbcAAgAiAQ0BEQAFARUBFwAIARkBGgACASIBIgACASQBJAAYASYBJgAYATEBMQAaATMBNwAJAT4BQAACAUIBQwAZAUYBSAAMAUwBTgASAVABVQAEAVcBWgANAVwBXwAKAWEBYwATAWUBZwAGAWkBaQABAWsBbQAOAW8BbwAPAXABcAADAXIBdwABAXkBewAUAYcBhwAbAYkBiQAPAYsBiwAPAY8BkQAHAZQBlgADAZgBmgAVAZwBnwAQAaEBowAWAawBrwARAbEBswALAbUBtwAXAAIAJgENAREACAETARMAFAEVARcAAwEZARkAAQEdASEAAQEkASQAAwEmASYAAwEqASwAAQEuAS4AAQExATEAAQEzATYAAQE5AToAAQE+AUAAAwFCAUMAAQFGAUgADAFMAU4AEAFQAVUABQFXAVoADQFcAV8ACgFlAWcABAFpAWkABAFrAW0AAgFvAXAAAgFyAXcAAgF5AXsAEQF+AX4ABgGHAYcACQGJAYkACQGLAYsACQGPAZEABgGUAZYAAgGYAZoABgGcAZ8ADgGhAaMAEgGlAaoABwGsAa8ADwGxAbMACwG1AbcAEwAEAAAAAQAIAAEADAAcAAIA8gESAAEABgHDAcUBxgHNAc4B0QACACMBDQERAAABEwETAAUBFQEXAAYBGQEaAAkBHQEhAAsBJAEmABABKQEuABMBMQExABkBMwE3ABoBOQE8AB8BPgFAACMBQgFEACYBRgFJACkBTAFOAC0BUAFVADABVwFaADYBXAFfADoBYQFjAD4BZQFnAEEBaQFpAEQBawFtAEUBbwFwAEgBcgF3AEoBeQF8AFABfgGDAFQBhwGHAFoBiQGNAFsBjwGRAGABlAGWAGMBmAGaAGYBnAGfAGkBpQGqAG0BrAGvAHMBsQGzAHcBtQG3AHoABgAAA\/AAAAP2AAAD9gAAA\/wAAAQCAAEAGgABANIAAAB9AfwCAgH2AgIB\/AICAfwCAgH8AgICCAAAAg4AAAIUAAACFAAAAhoAAAJuAAACIAImAiACJgIgAiYCIAImAiACJgIsAAACLAAAAiwAAAIyAjgCMgI4AjICOAIyAjgCMgI4AjICOAI+AAACRAAAAkoAAAJKAAACSgAAAlAAAAJWAAACXAAAAlwAAAJcAAACYgAAAmIAAAJiAAACaAAAAm4AAAJuAAACdAAAAnoAAAJ6AAACegAAAoAAAAKAAAACgAAAAoYCjAKGAowChgKMAoYCjAKGAowChgKMApgAAAKSAAACkgAAApgAAAKkAAACpAAAAp4AAAKkAAACqgAAArAAAAKwAAACtgK8ArYCvAK2ArwCwgAAAsgAAALOAAACzgAAAtQAAALUAAAC2gLgAtoC4ALaAuAC2gLgAtoC4ALmAuwC+AAAAvIAAAL4AAAC\/gAAAwQDCgMEAwoDBAMKAwQDCgMEAwoAAAMQAxYAAAMcAAADIgAAAyIAAAMiAAADKAAAAy4AAAM0AAADNAAAAzoDQAM6A0ADOgNAA0YAAANMAAADTAAAA1IAAANYAAADWAAAA1gAAANeA2QDXgNkA14DZANeA2QDXgNkA14DZANwAAADagAAA2oAAANwAAADfAAAA3YAAAN8AAADggAAA4gAAAOIAAAAAQFcA7YAAQFcArwAAQKfAAAAAQI4A7YAAQFuA7YAAQFuArwAAQEeArwAAQEpArwAAQILAAAAAQGCArwAAQCDArwAAQC\/AAEAAQE9ArwAAQCIA7YAAQCIArwAAQChArwAAQFnA7YAAQFnArwAAQGHArwAAQEtA7YAAQEtArwAAQEoA7YAAQEoArwAAQEmArwAAQFSArwAAQGfAAEAAQH2ArwAAQH2A7YAAQE2A7YAAQE2ArwAAQEcA7YAAQEcArwAAQEbAfgAAQIBAAAAAQHUAu8AAQEqAu8AAQEqAfgAAQFHAtAAAQEsAfgAAQGVAAsAAQEkAAAAAQC7AewAAQEUAwsAAQEXAfgAAQCiAtAAAQB\/AfgAAQC7AAAAAQDAAAEAAQEWAtAAAQB\/A8gAAQB\/AtAAAQCNAtAAAQFDAu8AAQFDAfgAAQEvAfgAAQGdAAMAAQDtAu8AAQDtAfgAAQEFAu8AAQEFAfgAAQEpAfgAAQIZAAAAAQGSAfgAAQGSAu8AAQEnAu8AAQEnAfgAAQDvAu8AAQDvAfgABgAQAAEACgABAAEADAAaAAEAIgBQAAEABQHDAcUBxgHNAc4AAQACAcUBxgAFAAAAFgAAABwAAAAcAAAAIgAAACgAAQCUAfgAAQByAfgAAQCrAfgAAQC5AfgAAgAGAAYAAQByAu8AAAABAAAACgEWAwwAAkRGTFQADmxhdG4AJAAEAAAAAP\/\/AAYAAAABAAIAAwAEAAUANAAIQVpFIABIQ0FUIABcQ1JUIABwS0FaIACETU9MIACYUk9NIACsVEFUIADAVFJLIADUAAD\/\/wAHAAYABwAIAAkACgALAAwAAP\/\/AAcADQAOAA8AEAARABIAEwAA\/\/8ABwAUABUAFgAXABgAGQAaAAD\/\/wAHABsAHAAdAB4AHwAgACEAAP\/\/AAcAIgAjACQAJQAmACcAKAAA\/\/8ABwApACoAKwAsAC0ALgAvAAD\/\/wAHADAAMQAyADMANAA1ADYAAP\/\/AAcANwA4ADkAOgA7ADwAPQAA\/\/8ABwA+AD8AQABBAEIAQwBEAEVjYWx0AcpjY21wAbhkbm9tAdhmcmFjAd5saWdhAeRudW1yAfBjYWx0AcpjY21wAaBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAaxudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAepudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAbJudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAepudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAepudW1yAfBjYWx0AcpjY21wAbhkbm9tAdhmcmFjAd5saWdhAeRsb2NsAcJudW1yAfBjYWx0AcpjY21wAbhkbm9tAdhmcmFjAd5saWdhAeRsb2NsAcJudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAepudW1yAfBjYWx0AcpjY21wAdBkbm9tAdhmcmFjAd5saWdhAeRsb2NsAepudW1yAfAAAAAEAAAAAgACAAwAAAABAA8AAAABAAQAAAADAAAAAgAMAAAAAgAPAA4AAAABAAsAAAACAAAAAgAAAAEACAAAAAEACQAAAAEACgAAAAEAAwAAAAEABwAQACIAcgCIAK4AwgEEASQBRAFSAWoBpgHOBT4FkAWsBcYABgAAAAEACAACAFYFLAAQACAAAgAAADYAAgACAFEAUQABAFgAWAABAAEA9QAIAAEAAAABAAEAAAAAAAEAAQABAAQAAAABAAEAAQABAAAAAQABAAAAAQAIAAEABgABAAEAAgBRAFgAAgAAAAEACAABAAoAAgASABgAAQACAHsAfAACAE4AUQACAE4AWwABAAAAAQAIAAEABgAFAAEAAQBRAAYAAAABAAgAAQAKAAIAEgAmAAEAAgAeAFsAAQAEAAAAAgClAAEAHgABAAAABgABAAQAAAACAKUAAQBbAAEAAAAFAAQAAAABAAgAAQASAAEACAABAAQAXAACAKUAAQABAFsABAAAAAEACAABABIAAQAIAAEABAAfAAIApQABAAEAHgABAAAAAQAIAAEAFAANAAEAAAABAAgAAQAGAAkAAgABAIAAgwAAAAQAAAABAAgAAQAsAAIACgAgAAIABgAOAJMAAwCpAIMAkgADAKkAgQABAAQAlAADAKkAgwABAAIAgACCAAQACAABAAgAAQAaAAEACAACAAYADAB7AAIAUQB8AAIAWwABAAEATgAEAAAAAQAIAAEDYAACAAoDDAAUACoAXACOAMAA8gEkAVABeAGeAcQB5gIIAioCTAJuApACrALEAtoC8ADzABgAawBrAGAAdQCuAFsASQBOAG4ArgBrAFEATwBQAG4ArgBrAGAAbwBeAEcASQBbAOwAGABrAGsAYAB1AK4AXgBgAGsAbgBQAK4ASQA8AGwAbgCuAGsAYABvAF4ARwBJAFsA8gAYAGsAawBgAHUArgBeAGAAawBuAFAArgB1AEkAbABuAK4AawBgAG8AXgBHAEkAWwDuABgAawBrAGAAdQCuAGwAYABvAG4AUACuAEkAPABsAG4ArgBrAGAAbwBeAEcASQBbAPAAGABrAGsAYAB1AK4AbABgAG8AbgBQAK4AdQBJAGwAbgCuAGsAYABvAF4ARwBJAFsA9AAVAGsAawBgAHUArgBvAGgArgBHAGAAdQBeAK4AawBgAG8AXgBHAEkAWwDtABMAawBrAGAAdQCuAGsAUQBPAFAAbgCuAGsAYABvAF4ARwBJAFsA7wASAGsAawBgAHUArgBHAGAAdQBeAK4AawBgAG8AXgBHAEkAWwDxABIAawBrAGAAdQCuAFsASQBOAG4ArgBrAGAAbwBeAEcASQBbAOkAEABrAGsAYAB1AK4AWwBJAE4AbgCuAGsAUQBPAFAAbgDiABAAawBrAGAAdQCuAF4AYABrAG4AUACuAEkAPABsAG4A6AAQAGsAawBgAHUArgBeAGAAawBuAFAArgB1AEkAbABuAOQAEABrAGsAYAB1AK4AbABgAG8AbgBQAK4ASQA8AGwAbgDmABAAawBrAGAAdQCuAGwAYABvAG4AUACuAHUASQBsAG4A6wAQAGsAawBgAHUArgBvAGgArgBrAGAAbwBeAEcASQBbAOoADQBrAGsAYAB1AK4AbwBoAK4ARwBgAHUAXgDjAAsAawBrAGAAdQCuAGsAUQBPAFAAbgDlAAoAawBrAGAAdQCuAEcAYAB1AF4A5wAKAGsAawBgAHUArgBbAEkATgBuAOEACABrAGsAYAB1AK4AbwBoAAIABgAuAMIAEwBvAGAAbgBJAK4ARQBbAGAAbABJAK4AawBgAG8AXgBHAEkAWwDBABIAbwBgAG4ASQCuAGAAaABJAF4ArgBrAGAAbwBeAEcASQBbAAEAAgA8AGoABgAAAAEACAACAFoAEAAUABwAAgAAADgAAgAAAAEBgQABAAEAAgAEAcMBwwABAcUBxgABAc0BzgABAdEB0QACAAEABAAAAAEAAQABAAEAAAANAAIAAAABAAgAAQAIAAEADgABAAEBgQACAX4B0QABAAAAAQAIAAEABgABAAEABAFIAU0BngGiAAEAAAABAAgAAgAcAAsBDQEOAQ8BuAG5AboBwwHFAcYBzQHOAAEACwABAAIAAwCZAJoAmwD1APcA+AD7APw=\";\nconst XLSX_TEMPLATE = \"UEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHO9lstugzAQRff5CuR9MZMHIRWQTVUp2zb9AAuGhxIwst1H\/r5uUzVEikZZoFlZM9h3jlgcTbr96o7BBxrb6j4TEEYiwL7QZdvXmXjbPz8kYpvP0hc8Kuev2KYdbODf9DYTjXPDo5S2aLBTNtQD9v5LpU2nnC9NLQdVHFSNch5FsTTjDJFfZQa7MhNmV4II9qcB78nWVdUW+KSL9w57d2OEdP4t+kBlanSZ+C3PTQh9mJC3GeZTMlh3OqK9QJxravxiyvGf2hxsg+guBP8tD\/dzkP9iyQwzp2BWzDALCiZmhllSMGtmmBUFkzDDxBTMhhlmTcFAxEyTkDSTyvYOmg1JM6l27\/FeROKwa5j0MHCLGEgTA7eKgXQxcMsYSBsDt46B9DFwCxlII8OkSraNMli+OuMX1vGaNW7\/0cxSebXG5t9QSwcIwXWPuUEBAAD9CgAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAPAAAAeGwvd29ya2Jvb2sueG1stVfdkps2FL7vU1BNJndekP\/WdhZntt51k0l\/MvEme5kRIIxqITGSWHvb6dv0MXqXF+sBjAPGw5SUXtggCX36zjmfjnRuXh9ibj1RpZkULsJXDrKo8GXAxNZFHx\/WgxmytCEiIFwK6qJnqtHr5Xc3e6l2npQ7C+YL7aLImGRh29qPaEz0lUyogJFQqpgYaKqtrRNFSaAjSk3M7aHjTO2YMIEKhIX6NxgyDJlP76SfxlSYAkRRTgyw1xFLNFrehIzTT4VBFkmSX0gMtFeE+8henmi\/V5ZH\/F2arOFrF4WEawqGRnL\/q\/cb9Q1YRDhHVkAMxXNnXH5Sg5AGvoRloDPr+MToXn8dz5o54hup2O9SGMI3vpKcu8io9LgaEDXMvzSyyRz1QDxddh4emQjk3kUQoufK+z5\/fWSBiSCA09FsXPa9oWwbGRfN8HyILEO8D5mjXDRxYFrIlDb5IjkKAUueKKwHGJmVdsWiPGbl0xK5Q28Fp8ykYpuxhe63QTYxk4qB0SemmceBtFowGFBvg1EGWgW4o\/7Og8iZCsCwBWB8DvAuc+nO0Mr8Ucv8SYOA3OUqqgKMWwCmlwhQYb0kcfLKekcUNCpQkxao63OoHykPiOBkW4OYtkDMziFyycPOURCTGsp1C8r8HOVRRqI2e9YyGzsXSBj15a8tPXrl1pO6AjZvA8ONALEtg01DqwiwZAvEsGEO8NEEvFI1CbfpFDeEuvGjlAd1hDah4oZS75UH2YPvpK5LBLfpFTcE+xHkpgSN4jpIm2ZxQ7SbzBm7c43gNrXihlwfv\/wtsixdRWgTK87Vapd5JKAhEzTIMnO9ZYWpyDPqKSNHLADXn5pcZrmyIqeCz+cDF\/HVe8WE+fzATC6ZJw8StE+DVJ3y+\/KkqO9fjBcvxjd2Ze3\/QmTUmUiZe3omkgmzG5OaNntmM+lKppIGe6bS2S\/l6dIzj3FXHi9JIvWrC0dNMdC3fjrzq+STvrngb+CSZ+q+iXTe3pVM3TOXaVcq9WtBz2xm36bmS7eE\/0fOTleCXy8MPVO57swkv4n17ZDOKbk86i8SsesnOazkQ2HFQPxwEVjJVJgsBhAERcOfZZCVDbCpj+Mnisf2HeWGQC1y5ThOfhekB\/OTNvnzWCNyCe+NOpEzT9GiMsyLRGSlirnoj+vpcLqaTYeD4S0eDTC+nwx+GI0ng\/X9eg0l0epuNV\/\/CQVjjrqA36rgrw14ZfuBhptnOAMOcH87+JTfFmURfFb859Tssthb\/gNQSwcIHhoOnLADAABJDwAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAATAAAAeGwvdGhlbWUvdGhlbWUxLnhtbM1XwXLbIBC99ysY7gmSLDmyJ3YOST09dKYzTfoBCCGJBiEN0KT++yKwJRQ5rtM6nfqAYXm8XR7sYl\/f\/Kw5eKJSsUasYHgZQEAFaXImyhX89rC5SCFQGosc80bQFdxSBW\/WH67xUle0psAsF2qJV7DSul0ipIgxY3XZtFSYuaKRNdZmKEuUS\/xsaGuOoiCYoxozAXfr5Snrm6JghN415EdNhXYkknKsTeiqYq2CQODaxPjFAsFDFyBc70P9yGm3TnUGwuU9sfH7Kyw2fwy7LyXL7JZL8IT5Cgb2A9H6GvUArqe4wn52uB0gf4wmuLCIF1d5zxc5vimOUkpo2PNZACbE7GLqOy7SMNtzeiDXnXKTIAniMd7jn03wiyzLksUIPxvw8QSfBvMYRyN8POCTafyZmZmP8MmAn0+1vlrM4zHegirOxOPBE+xPpocUDf90EJ4aeLo\/8AGFvJvj1gv92j2q8fdGbgzAHq65pALobUsLTAzuFteZZBiClmlSbXDN+NYECQGpsFRUmyvSOcdLir1VzkTUCxN64axm4phnzozr83kenCFfECtP7Q8Y5\/d6y+lnZQNTDWf5xhjtwMJ6+dvKdKFl7GfcyF9USjz01Y62VKBtVLejI7ymIjChnS3xUnvsrFQ+4awDnko6uzqNNHSF5UTWMDnGijwVzHUFuKvg4TxyLoAimNO8P17NOP1KiQbcnr62rbRt1rXOy0jiv5BbVTinO73D06RJf6+Mx7qYnU9wnzY+g+LBnymOpjnDxXgEnk2ISZSY7MWtKYkm2U23bo1TJUoIMC\/No06021crlb7DqnJbs6m0f1rEwBclcRf8+QhnaXgeQvRSAFoURs9XLMPQzDmSg7PnB6NDkWXl5j8tgPGJBTB+S6mK96VqnE6Ld8nS6OgO\/Cxtsa5A15g7xyTh7qnu0uyh2eemexC6\/LxwNahL0p3RJGqYet46qn9fTQeZ0xPP7o2Czt5J0OSAnskZ5ETT\/EKjnx9o8h9gb1n\/AlBLBwg7od8K9AIAAAINAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAAA0AAAB4bC9zdHlsZXMueG1s7VzbbqNGGL7vUyAi9aobjubQtb3CJFS9aLXqZqVKTS+wGdtogXEB78Z7VfUV+hp9qn2SzjA2x5nEJCYhCZYiw3+eb\/6fORDP+N1NGHCfQZz4MJrw0rnIcyBaQM+PVhP+45XzxuC5JHUjzw1gBCb8DiT8u+l34yTdBeDDGoCUQxaiZMKv03TzoyAkizUI3eQcbkCEOEsYh26KbuOVkGxi4HoJVgoDQRZFTQhdP+Kn42gbOmGacAu4jdIJP8pJHPn62UOxaSrPEXM29FAoP4EIxG7AC1ThUVXY867Pw\/D6fIc+DA2tjXm9Knz2w9mZeC6K3\/+1helb7ts\/\/5Grt9dv2Kxvf\/\/LsG7cZZ0TuF9g5Ka3eKmL7L0Je6yn4yWMCsglnSeU6Tj5yn12A0SSsPwCBjDmUtSpKJCMErkhIBK2G\/jz2MfEpRv6wY6Q5Uxv7cYJyg5iKvNMzNeciFWTVuwTzMsGxZ6pzwkjjbcA83JrRgFYvJpPeMeRZqplGMc6aYVZxY8m6rJhndqP1GyPLc\/Uo0G7ww8LRvmRYJROZNBntKMJn24ZI1PtvptOmg6sbmq6JZ8Tud0SRoJGouAux7Kt23bXaUmphi7S0nya3tS6bR2rRjp7lGVfeJTzg6AyscCE6XjjpimIIwfdcPvrq90GDXERmuYQM5ncHdKr2N1J8uh4hQQGvoejWNmVypEd3bnAZuY1huKoTtY3QsnmQ73lRuve8jBO6K3Io5o3UVQUjd227Av14BzGHpqglvuQkDjPd1doihN83Ez4pRskgM9JF\/BLdCBOxwFYpshN7K\/W+DuFGxwNTFMYoouDDg6EWL6fBy6bFKMkX2eT2kpWX2iXskNmElh0H8uRGplsFvaRCkjy0L4jNYjw6bCoon0IIgSevw3rYRQJ0tvAXwHejELYX6A6XIAg+IDt\/r7Mi1EWkfGbZXOZFmU3aDWJi3h\/SSztb9zNJtg5EBvJBgVCmGUiFZIV+KsoBDXB9zFMwSLNVq0ZeTp2D4LcGsb+V2Qajwmr\/TIOL3JTf4FJpL08l4Kb9DeYusQKiulL7G6uEDHH24+8zDHiJevYjz5dQcfP2QimTR4GF8DFJ+Adglz7HlItSQo3yxpSYoGTdF+c9nHWgSqTy0gdMub5BCMPwTCCuXdtDcEMwQzBDMEMwdwnGFXp00ipSr2KRu1VNHKfojGfOBihPH0nk\/nSPF4x7zuPv1k2Qy8H9MDYn9ukvgKb2g6243ucsRBqDRpa\/t2KGPHzeICNBsDaAaYNgLUDTB8AaweYUQAmlwGTjgas1V7Os8fLLPBSTonXMFB2MTV61qh19ix70ahJLSezjz8ELJAMiPuFWt+HgSMwe5SRYDRA9pDaLC2N1SfHDL9X6\/3TrFeIZa8gew8Z6zXOMEWro6ZRn2YnBe2F5Zk+INYSMWNA7PT7P\/LwKGu\/m80Ajbab\/VpQ07tPtddXnMpQnO2LkwHaUJydptrLLU5JGaqzfZ51htoLTrRhc\/tesHX2LvhFw\/Zw1F7X6zrp4W\/QXxlgvdpwrG\/R9nBPu6sXwifBq2\/Z1at3Jn0Hq1+l2JiM9aUW9Z7WYgOwXuQXfQP76Yuxn2gds6BUhwVl++0eBmjDdk+3ufbcl+HC\/v\/aS79Wzf\/HXeNLVA4fLjDhf8Wn7AQl0OZbP0j9iNwJTQUbhqF7kMdr1JKCwlTg\/hD\/zJW0ipJGVdrGMYgWu1xHr+iot+lUfBkVPZ2m9x7EeKTOVcyKCjnaoABz\/1Ni9I277gZ49v42Xs1rP+7HH6xd5xSnhDQ5LB1RxH90Duax\/LAiYOlgOp1jMNsjigaTg3l0aywdg6mD6XTOhWmNRhaNUxw4U+eYMx3pUTnm4ViGBm75uRENTn5wRJ2jaaJIt3YpGppKxbo4zqXR0vwX9Mdjze5tdobcngesPr0tQ1h9ys5E26ZzMJ3NsW1WS01qb6soEy6p\/XNhajOLyjEudfmSgbVtM\/xYukHPN9mZjfRLavZezEYKo+dQgtAjkC1TmdHzTRvR8604cqbRUss0LWpeF4eX1DmSYykmNQKsQ49aUVgcXI1sDiOC\/ICHBic\/v0uoPb+Fw3NdKI72m\/4PUEsHCEWziYAhBgAAH1AAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGQAAAHhsL3dvcmtzaGVldHMvc2hlZXQxMS54bWy9m1tyo0gWht9nFQQPHT0R05ZIdHXL6iiDgY5wXaJc1R3Rb1ikLMKIpBPk29PsYbYwa5gN9E5mJXMyAQn0C3fFhJuHcqGPo3NO\/plJ\/VWVLH562ibGA5d5LNIL0zobmgZPVyKK07sL8+sX74eZaeRFmEZhIlJ+YT7z3Pxp+bfFo5D3+YbzwqAEaX5hbooiOx8M8tWGb8P8TGQ8pTtrIbdhQR\/l3SDPJA8j\/aVtMmDD4WSwDePULDOcy2\/JIdbreMVdsdpteVqUSSRPwoLazzdxltfZnqJvyhfJ8JGGWvfTaNEt7+zzWSPIt41XUuRiXZytxLZqDUc5H8xb43yS7P\/LZI1pqA+xmilWJ9uuvmWU21De77IfKHdGSt3GSVw86wGby4XO\/0ka6zgpuHwvIprkdZjknO4V4a0jEiENeXd7YXqeO59cvpuYg+UiC+\/4DS++ZvqbxRfxicCFWcgdV7cHVdblIoppolTLhuTrC\/OddR7YOoOO+CXmj3nj2sg34tGjzndJmNd9aOjLOLqOU96mn8UjNRiQTLSCq\/L6xm+c9KyBjO821OI1Xxf7b9PQbnjCVwWPWhk\/7oqEytw8b29Fss8Q8XW4SwrVhBak5g\/U84WZKqkTyikyVcPhSaJGahorFfszFZiMTONFiO3NKkxIJms4bHz+oL9+TJWg1+Gz2Glhqrtq190Kca+Qyjs01VSk3Hi6yWhSKco0nqvL0VFDl2PTCFdF\/ECp1U6+FUUhtp+VNnqLF2ripXjhqZ4eLY6at0xHV6nqFIcxHj6XDRn579VMd6SpKjbzXL6S5\/JknrL5Ex2NX+lo3J3pRFN\/PrjBft02r+v17OkNSPujWjy0cH6No2JzYc7OJtP5ZDYd7xcWreOAqxZoBom+0OqtP1drU5Tr8po\/8ISidTNNRtnL5TBoFV8uaA3m+qdajUmY5Y0Fv9rlNPaqq3JFb+Io4unJsrrmNnzSq2wbp\/r3vHhWK1qtzTINGylp3rYeq+qxU\/Umb1\/PrurZp+qxt683quqNTtSz\/oLxjat64xP17OHb15tU9San6v0F62Va1Zv2NH+zqt6sU89BuQ1LZxEW4XIhxaMh9RYqq5Y7dl9IPwrmZ1PooIx+5emgi8PYaMiqnHqo0Z9qjPLSt3PCD0trNFkMHlSP9Iva2vfGXumNhvV6Z6V8394YKxubtRqb7hvTQZf7oEFFHCAukCsgHhAfSNAkLVnsPmWxyy7mLVlmR7Lsg\/ayAHGBXAHxgPhAgiZpyTLqU5aR7kKlbcgyP5LlVNB42A5yTgZZ7SC3CrIbQVO7HXN1MhFrB3kng44y+SeCpuN2THAiprFbWhMzfmVi2ORsNn7rZ8y47M1qDXJ0NDkng45G6ZwMmhxNThU00kGpDrKHw6N5vjqZ6uj54p0MOtpt\/omg2dGCCU7ENKa5NT2TPvfNpOyL7ffzJRAHiFuR8eHZATEeEB9I0CQtDaZ9ajAFDYA4QNwpaAAxHhAfSDDt0mDWpwYz0ACIA8SdgQYQ4wHxgQSzLg3mfWowBw2AOEDcOWgAMR4QH0gw79LAGvYpgqp2pAIiB5Fbo4YQGOUh8hEFLdQW4zV\/\/PZiWCgGIAeRW6OmGBDlIfIRBS3UFqNXQ24xFAOQg8itUVMMiPIQ+YiCFmqL0asNt2wUA5CDyK1RUwyI8hD5iIIWaovRq\/m2RigGIAeRW6OmGBDlIfIRBS3UFuM1w\/v2YoxRDEAOIrdGTTEgykPkIwpaqC1Gr\/bSQn+JyEHkWmgxMcpD5CMKrE6bafXqMy00mogcRK6FXhOjPEQ+osDq9JtWr4bTQseJyEHkWmg6McpD5CMKrE7jafXqPC20nogcRK6F7hOjPEQ+osDqdKCsVwfK0IEichC5DB0oRnmIfEQB63SgrFcHytCBInIQuQwdKEZ5iHxEAet0oKzffxJGB4rIQeQydKAY5SHyEQWs04GyXh0oQweKyEHkMnSgGOUh8hEFrNOBsl4dKEMHishB5DJ0oBjlIfIRBazTgbJeHShDB4rIQeQydKAY5SHyEQWs04GyXh0oQweKyEHkMnSgGOUh8hEFrNOBsl4dKEMHishB5DJ0oBjlIfIRBazTgbJeHShDB4rIQeQydKAY5SHyEQWs04GyXh0oQweKyEHkMnSgGOUh8hEFrNOB2r06UBsdKCIHkWujA8UoD5GPKLA7HajdqwO10YEichC5NjpQjPIQ+YgCu9OB2r06UBsdKCIHkWujA8UoD5GPKLA7Hajd71EEdKCIHESujQ4UozxEPqLA7nSgdq8O1EYHishB5NroQDHKQ+QjCuxOB2r36kBtdKCIHESujQ4UozxEPqLA7nSg9msO1Hrz4w925f4mjf\/8t+3jIztV0LShDyC3RrP92Ya1Ea7CfcWbr++\/dyfnpOPfF4O1KnR87AGTeoh8REELlXIOGsfXtlze6YOxOQmxS9VRErNBq9Pe7DzQ03HM7fPA1nkPaZaLiBL\/EiZxVJ7mr\/Na5vEtI0wS8XiZhOl9vVa5lELelGfvaPIymq+My7BQR7VvefHIeWoamRTbjDK+2+VGxKVxHecFNx7\/+Pcm4akhFFpLHhs8TgsZ3h2+8iUuVOLfdlQn4VGsb6nT4q4UmSseD0tHwSvVy3ue5\/pIfOPGz2m2K+BGeaLYn5zrRV08Z3Qvoc7UZJcn4a3ld7\/vRPHjA5f34W7N03+oFzZWG57eU98D9foGl7eEb\/kmTAq6oKjkj\/\/kPC2\/SGujzlTnZGql7K8Xg7bCAGh6MkmyfMzKudnwUL0iku+HcQfn8\/fkhu8fKRsh4xeRFmHi8LSgtg9nL2kQRbzCG4PyZYP3obyLqXCiD\/EPz9ThaVlu0PIDTbo+TVme59aXG\/1egAoYW9bMsobMnjA2HNFfSNZCFNWtugK1ucuMLKR1cxO\/8PJ0c+O8vn7NoTobalUf62cE3VYpPkpdL6IV8YVm5yONiRaijGlIWkWa2DCNKGlGA75NwtX9uzT6dRMXh+UQybDxlsKKdoYjtupdl1y9Z5C2NHSzWD3MhwfxDmQlslhNhj6oXgrh6TEbUbxek8Bp4cUyP5Ta449RdPVweBouFyKKyjcsaFU0rumyzLj8LtxmP15\/CFebJMxz6uWFx6tNGufGf\/\/5L0Pffad\/fr7hNNaSfDIeaCfryw86b5VsMWh2Sx\/3bxot\/wdQSwcI5rvTVk4JAACtNAAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDYueG1svZvNcttGFoX38xQoLFKZqkQkGvxVKKYsQA2kSv4py06qsoOIpogyiEYaoChplXeYV5hnmJV3epN5knQ3ABLgATSuKQUL2+SHy3tvn76Aj+zm4ueHbWzcM5FFPLkwrbOhabBkxcMoubswP3+iP85MI8uDJAxinrAL85Fl5s\/Lfyz2XHzJNozlhkyQZBfmJs\/T88EgW23YNsjOeMoSeWXNxTbI5VtxN8hSwYJQf2gbD8hwOBlsgygxiwzn4lty8PU6WjGXr3ZbluRFEsHiIJftZ5sozapsD+E35QtFsJdLrfqptegWVw75rBHk20YrwTO+zs9WfFu2hqucD+aNdT4I8v9lssZyqfeR2ilSJduuvmWV20B82aU\/ytypVOo2iqP8US\/YXC50\/g\/CWEdxzsRbHspNXgdxxuS1PLh1eMyFIe5uL0xKLfrGnl+ag+UiDe7YDcs\/p\/qT+Sf+QYILMxc7pi4PyqzLRRjJjVItG4KtL8w31rlvT1SIjvg1Yvus9trINnxPZee7OMiqPjT0RBReRwlr0o98Lxv0pUxygsvy+sLvTOpZARHdbWSL12ydHz4tl3bDYrbKWdjI+H6Xx7LMzeP2lseHDCFbB7s4V01oQSp+L3u+MBMldSxz8lTVcFgcq5WaxkrF\/iILTEam8cT59mYVxFImazisvX+nP35KlaDXwSPfaWHKq+quu+X8i0Iq79BUW5Ew4+EmlZsqo0zjsXw5OmnocmwawSqP7mVqdSff8jzn249KG32L52rjBX9iid4eLY7at1RHl6mqFMc1Ht8XDRnZH+VOd6QpK9bzXL6Q57I1T9F8S0fjFzoad2dqaep\/L25wmNv662qeqb4B5f1RDo8cnN+iMN9cmLOzyXQ+mU3Hh8GSc+wz1YLcQUmf5PRW78vZ5MVcXrN7Fsto3UydyezFOAwaxZcLOYOZ\/l1NYxykWW3gV7tMrr3sqpjoTRSGLGktq2tugwc9Zdso0X9m+aOaaDWbRRoyUtK8bj1S1iNt9SavX88u69lt9cjr1xuV9UYt9ay\/YX3jst64pZ49fP16k7LepK3e3zAv07LetKf9m5X1Zp16DorbsHAWQR4sF4LvDaFvoaJqccceCulHwfxsCh0U0S88HXRxWJtcsiqnHmrybzUi88pPZxLfL2dkMbhXLcpfsqtDa+SF1uSqXm6sUO\/b+yJFX7N6X\/ahLx1zeYgZlMQB4gK5AkKBeED8OmmoYvepil10Ma+rMjpR5RBzUAWIC+QKCAXiAfHrpKHKqE9VRroLlfagynR4okpLzGzcjHHaYibNGLeMseu1TubyqiUPmTZjaFutkxivbV0nPfstMaNp+\/07fmFPyORsNn7tZ8u46M2qr3F2si9tMfOTfWmJmZ\/sr1vGjHRMomMs+RPNSdhVWyrrZGvaYsjJ1rTFnIyB3xIzttu3ZtLn7TIp+iKH2\/gSiAPELcn4+MiAGArEA+LXSUODaZ8aTEEDIA4QdwoaQAwF4gHxp10azPrUYAYaAHGAuDPQAGIoEA+IP+vSYN6nBnPQAIgDxJ2DBhBDgXhA\/HmXBtawTxFUtRMVEDmI3ArVhMAoishD5DdQU4yXPPHri2GhGIAcRG6F6mJAFEXkIfIbqClGry7cIigGIAeRW6G6GBBFEXmI\/AZqitGr+bZsFAOQg8itUF0MiKKIPER+AzXF6NVzWyMUA5CDyK1QXQyIoog8RH4DNcV4yey+vhhjFAOQg8itUF0MiKKIPER+AzXF6NVeWugvETmIXAstJkZRRB4i3+q0mVavPtNCo4nIQeRa6DUxiiLyEPlWp9+0ejWcFjpORA4i10LTiVEUkYfItzqNp9Wr87TQeiJyELkWuk+Moog8RL7V6UBJrw6UoANF5CByCTpQjKKIPEQ+6XSgpFcHStCBInIQuQQdKEZRRB4in3Q6UNLvvwOjA0XkIHIJOlCMoog8RD7pdKCkVwdK0IEichC5BB0oRlFEHiKfdDpQ0qsDJehAETmIXIIOFKMoIg+RTzodKOnVgRJ0oIgcRC5BB4pRFJGHyCedDpT06kAJOlBEDiKXoAPFKIrIQ+STTgdKenWgBB0oIgeRS9CBYhRF5CHySacDJb06UIIOFJGDyCXoQDGKIvIQ+aTTgZJeHShBB4rIQeQSdKAYRRF5iHzS6UDtXh2ojQ4UkYPItdGBYhRF5CHy7U4HavfqQG10oIgcRK6NDhSjKCIPkW93OlC7VwdqowNF5CBybXSgGEUReYh8u9OB2v0eQEAHishB5NroQDGKIvIQ+XanA7V7daA2OlBEDiLXRgeKURSRh8i3Ox2o3asDtdGBInIQuTY6UIyiiDxEvt3pQO2XHKj16kcf7NL9TWr\/+W+fnl+qgqY1fQC5FZodjjasjWAVHCrefH77vTs5lzr+czFYq0Knhx4wKUXkIfIbqJBzUDuytmXiTh+GzaQQu0QdIzFrtDzhTc59vR2n3D73bZ33mGa5CGXiX4M4CosT\/FVeyzy9ZARxzPeXcZB8qWaVCcHFTXHeTm5eKvcrZSLI1fHsW5bvGUtMIxV8m8qMb3aZETJhXEdZzoz98783MUsMrtBasMhgUZKL4O74kU9RrhL\/vpN1YhZG+pI6Ie4Knrp8fxwdBa9UL29Zlulj8LULvyTpLocLxSlib3Kuhzp\/TOW1WHamNrs4\/W4tv\/tjx\/Ofgt06fv5PxpIf9izKmVg\/f90I+U5y40rcyjU8f71louj9h1Q8f11LFgeZ\/EiRQQ5JlbJKTtTIHF4vBk2pAch9SoXU531abNKGBer7IdlhPXdwOP9Abtjh2bLhInriSR7EDkvkUmoHL+\/lCqIVXhgU3zR4G4i7SBaO9Qn+4Zk6OS2KO7V4I3dfH6UsDnPrlxv9pQAVMLasmWUNiT0hZDiSP5msOc\/LS1UF2eYuNdJADtBN9MSKo821w\/r6Ow7lwVCrfFs9LORlleK90PVCORqfNix5L9ckJ1JEcklaRbnDQRLKpKlc8G0crL68ScLfNlF+nItQBLWvKKzkLeLwrfqiS6a+ZJA0NHTTSD3Vh0fxjmTF00hthj6lXghB9ZqNMFqvpcBJTiORHUsd8PswvLo\/PhaXCx6Gxdcr5FTUXsuXRcbld8E2\/en6XbDaqKGTvTyxaLVJosz475\/\/MvTVN\/r3jzdqgAvywbiXt7R++U7nLZMtBvVu5dvD14yWfwFQSwcIvMCAAlMJAACqNAAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAZAAAAeGwvd29ya3NoZWV0cy9zaGVldDE2LnhtbL2azXLbNhDH730KDg+9xRJBfbqSMjYAt51x4kyUNDO90SQkYUISLAjJH6e+Q9+wT1IApGhSS6qejstDEvJHaHf\/i6X9nwiL949J7ByYzLlIl653MXQdloYi4ul26X79cvNu5jq5CtIoiEXKlu4Ty933qx8WD0J+z3eMKUcHSPOlu1MquxwM8nDHkiC\/EBlL9ZONkEmg9K3cDvJMsiCyH0riARoOJ4Mk4KlbRLiUr4khNhseMiLCfcJSVQSRLA6ULj\/f8Sw\/RnuMXhUvksGDlnqsp1YiKZ5U8bwRiJfwUIpcbNRFKJKyNKhyPpg3dD5K9N8ieWMt9cDNTqFjsCR8jcokkN\/32TsdO9OduucxV09WsLta2PifpLPhsWLyg4j0Jm+COGf6mQrusYiFdOT2fune3Myu5vMr4g5WiyzYsjVTXzP7SfVFfNJg6Sq5Z+bxoIy6WkRcb5Qp2ZFss3SvvEvqj80Su+I3zh7y2rWT78TDja58Hwf5sQ4Lf5Y8uuUpa9LP4kEX+Ituk57gMr198DvT\/TwCybc7XeIt26jq01ramsUsVCxqRLzbq1inWT8l9yKuIkRsE+xjZYqwDTnyg6556aam1bGOKTKTA7M4NkpdJzRrf9UJJiPXeRYiWYdBrNvkDYe1+4\/246fUNPQ2eBJ725jyqXnr7oX4bpCJO3TNVqTMeVxnelP1Ktd5Ki9HJwVdj10nCBU\/6NDmTb4XSonks+mNfcWV2Xgpnllqt8c2x+xbZleXoY4hXjS+3BcFOfkf5U53hCkz1uNcn4lz3RqnKL6lovGZisbdkVqK+ndxg2pu69fHeb6xL6B+P8rh0YPzjUdqt3RnF5PpfDKbjqvB0nP8CzMl6B3U9FlP7\/G+nE1RzOUtO7BYr7bF1JmOXozDoJF8tdAzmNu\/zTTGQZbXBj7c51p7WVUx0TseRSxtTWtzJsGjnbKEp\/bfXD2ZiTazWYRBI9Oat82HynyoLd\/k7fP5ZT6\/JZ8\/fPt8ozLfqC3f\/9DPcZlv3KlvUIxN8ZswUMFqIcWDI+2WF1mLCasS2dGdX0xBBcXqM9NskwNtWrJJZ15C\/VMY6bj607nGhxXy\/MXgYGrUf3RZVW3oTG1a1vnKiva9vjBUFDZrFDaqCrOLrqtFg5JgQAggtE4aAv0+BfpFFfOGwPGJwGpRJRAQAgitk4bAUZ8CR7YKE7YmcHIisHXRtLkItyzy5n5zEWmNNGsuoi2LRtP2aR+f6RWaXMzGb\/0qjovavIaA+Um\/2hah4Um\/Whd5J\/1qXYRO+tWyaNzx02HS52xNirpQNfPXgGBACCC0Thpqpn2qmQI1gGBACCB02qVm1qeaGVADCAaEAEJnXWrmfaqZAzWAYEAIIHTepcYb9inHZDvRAxGGiEBEG6ip6ZyNeXtNHtQEEIaIQEQbqKmpV\/vjIagJIAwRgYg2UFNTr47H86EmgDBEBCLaQE1NvZocbwQ1AYQhIhDRBmpqOmdG3l7TGGoCCENEIKIN1NTUq2HwoGOACENEIKJep2vwerUNHvQNEGGICETU6\/QOXq\/mwYPuASIMEYGIep0OwuvVQnjQQ0CEISIQUa\/TR6BefQSCPgIiDBGBiKJOH4F69REI+giIMEQEIoo6fQTq979RoI+ACENEIKKo00egXn0Egj4CIgwRgYiiTh+BevURCPoIiDBEBCKKOn0E6tVHIOgjIMIQEYgo6vQRqFcfgaCPgAhDRCCiqNNHoF59BII+AiIMEYGIok4fgXr1EQj6CIgwRAQiijp9BOrVRyDoIyDCEBGIKOr0EX6vPsKHPgIiDBGBiPqdPsLv1Uf40EdAhCEiEFG\/00f4vfoIH\/oIiDBEBCLqd\/oIv99vYKCPgAhDRCCifqeP8Hv1ET70ERBhiAhE1O\/0EX6vPsKHPgIiDBGBiPrQRwxq38ImTG7teYRcl7NPzVc9bo2Wh2zQJbWfP+X+JfVt3Jcwq0UmearuMnuCytmxwBz9yqvObMG5m4qsWdWrnZD8WaQqiDFLFZO176gPTCoewgeD4hDRh0BuuU4c28M5wwtzKEIW21DcKJHZb52Lcxr2cmfP+5gFY8+bed4Q+ROEhiP9q30jhCofHTPoMveZkwUZk2v+zIpTC7VzOPb4UvkdulfeHidBPzYh7qTNF4mH9MuOpXdak54PybUke\/Js6cZBGumgmRZ8Hwfh96s0+rbjqjpL5UQyqJ0+CnXrsUjMGbbcnB9KGz0kGTdTOnxp3gsJRcbNZtgDKEUjbqxmJ+KbjW5wqm64zF9SVfguiujhZeZXCxFFxckpPRC1a31ZRFz9GCTZT7cfg3AXB3mua3lmPNylPHf+\/vMvxz69sn9\/XjOttSCfnINIi8uPNm4ZbDGoV6tvqxOEq38AUEsHCM5R1DH1BgAAhSgAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGQAAAHhsL3dvcmtzaGVldHMvc2hlZXQxMC54bWy9mk1u40YWx\/dzCoKLrCaWWNSXHVlBm2QlAdztRruTANnRYskiTLGYImXZXuUOc4U5Q1bZ9U1yknlVpChRf9LTGHi4aLf4q+L7qlf2H\/abf\/+0SaxHofJYppe2cza0LZEuZRSn95f2z5\/5tzPbyoswjcJEpuLSfha5\/f3iH\/OdVA\/5WojCIgNpfmmviyK7GAzy5VpswvxMZiKllZVUm7CgR3U\/yDMlwsi8tEkGbDicDDZhnNqlhQv1NTbkahUvhS+X241Ii9KIEklYUPj5Os7yvbWn6KvsRSrcUar7eI5C9MuV2p4zAnubeKlkLlfF2VJuqtAwy\/PBeSPPJ8X+N0vOmFJ9jPVJsb2xzfJrstyE6mGbfUu2M6rUXZzExbNJ2F7Mjf2PylrFSSHUexnRIa\/CJBe0VoR3nkykstT93aXNOfOmnje0B4t5Ft6LW1H8nJk3i8\/yI4FLu1BboZcHldXFPIrpoHTIlhKrS\/udc8Hdsd5idvwSi11+9NnK13LHKfJtEub7OAz8QcXRdZyKJv0kdxTgj1Qm6uDKvVn4TVA990DF92sK8VqsivptSu1WJGJZiKhh8WZbJOTm9nlzJ5PaQiRW4TYpdBCmIHv+SDFf2qkudUI2ZaZ9eCJJdKa2tdR7fyIHk5FtvUi5uV2GCZXJGQ6Pnj+Y10+pLuh1+Cy3pjDVqr51d1I+aKTtDm19FKmwnm4zOlTaZVvP1cfRSUBXY9sKl0X8SKb1Tb6TRSE3n3RtzBUv9MEr+SJSczymOPrcMrO7MrU3ccjx8FwGZOW\/VyfdYabyeGzn6hU7V612yuBbIhq\/EtG421JLUP89uUHdt8ef9\/3MzQWk+1E1DzXOr3FUrC\/t2dlkej6ZTcd1Y1Ef\/yh0CHSCRF+oe\/fPVW\/Ksi+vxaNIaLcJ5piR9bIdBg3nizn1YG6+6m5Mwiw\/avjlNqfcq6jKjl7HUSTSVrfG5yZ8Ml22iVPzf148647WvVmaYSNdmrf1xyp\/rM3f5O39uZU\/t80fe3t\/o8rfqMWf+3+o57jyN+4pv0nlb9KWn\/l5MijbtPzJGxbhYq7kzlKmxUqvZUfXjsxVOT+bQgTl7lduj3EOuVHK2p2+9PRdn5Fdejsn\/Lhw3NF88KhjpH8UVh0beyU2Suv1yMryfX1grAxs1ghsXAdmNl3VmwYV8YD4QAIg\/Jg0Unb7TNktozhvpDw5SbneVKcMxAcSAOHHpJHyqM+URyYKbfYo5elJyq2bZs1NXuum8+Ymv23TaNjcFLRsmp40Hm\/ZM5q235rxK\/Vkk7PZ+K2v9LiMzWkk6ZzUtHUTO6lp6yb3pKatm0YnNW3ddFrUlk1jt72okz6bdFLGxerLcwXEA+IDCYDwY9LIb9pnflPID4gHxAcSAOHTrvxmfeY3g\/yAeEB8IAEQPuvK77zP\/M4hPyAeEB9IAISfd+XnDPtMUHs7yRCRh8hHFCDiDdRM8zU59vZpOpgmIA+RjyhAxBuomWavys5hmCYgD5GPKEDEG6iZZq9qznExTUAeIh9RgIg3UDPNXhWcM8I0AXmIfEQBIt5AzTRfE1Zvn+YY0wTkIfIRBYh4AzXT7FXqOKh1EHmIfEQBIu50Ch6nV8XjoORB5CHyEQWIuNOpe5xehY+DygeRh8hHFCDiTqf8cXrVPw4KIEQeIh9RgIg7nSqI9aqCGKogRB4iH1GAiLNOFcR6VUEMVRAiD5GPKEDEWacKYv3+fgtVECIPkY8oQMRZpwpivaoghioIkYfIRxQg4qxTBbFeVRBDFYTIQ+QjChBx1qmCWK8qiKEKQuQh8hEFiDjrVEGsVxXEUAUh8hD5iAJEnHWqINarCmKoghB5iHxEASLOOlUQ61UFMVRBiDxEPqIAEWedKoj1qoIYqiBEHiIfUYCIs04V5PaqglxUQYg8RD6iABF3O1WQ26sKclEFIfIQ+YgCRNztVEFuryrIRRWEyEPkIwoQcbdTBbn9\/mUPVRAiD5GPKEDE3U4V5PaqglxUQYg8RD6iABF3O1WQ26sKclEFIfIQ+YgCRNxFFTQ4GhTYCHVvRnRyinCb6r8i2ke0mjtjF9y8f8rdC+4auwczi3lEhn8Jkzgq5wr3dh37dMkKk0TurpIwfdiXTSgl1W055UBFzaiQmVBhoYfG7kSxEyK1rUzJTUYW321zKxLKuo7zQli7L\/9eJyK1pEYrJWJLxGmhwvvDK5\/jQhv+bUt+EhHFZknPrflKZr7cHY5Uw0DH8l7kuRnOO1r4Kc22BSyUs03B5MKcQvGc0VpCkVHaq3Imz1l88\/tWFt8lX\/7U44bpP+PU+kFQJz28bM2UqBklFcULLdHpUC55TPtUam1prX5rJ+JCqNWXv9aKnh6+\/JWaTErb80HtbO+WLYY1ZXRWzUMAQCeYKarcTVYe31qEep41rzO9h2HCmtyK+gKspYpfZFqEiSdSivdoEIayLOIlLgzKycj3obqPyXFiJg6HZ3rSS5V3q3ygvjCjLeXwmfm4NkOMesPYcWaOM2TuhLHhiETjSsqiWtp7oDC3mZWF1Fq38YsoR7GOhgvNTGY1qONUj\/vrTcvaxI0y\/iJqms90KDeUE\/WqiiklU0U6ezpQMppRwndJuHx4l0a\/ruPi0DGRCo9GKpd0eTy50YO5uR6KTBs19LNYf+sZHop3IEuZxfowzFRdWQhucraieLWiAqcFj1V+cFXjmygKHg\/fyBZzGUXlOCh1xdFn+lhaXHwTbrLvrj+Ey3US5jnF8iKoRdM4t\/7+41+WWX1nvn661V1ako\/WI1128\/GDsVsZmw+Oo6XHeix68R9QSwcIhtY1QDEIAABaLQAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDUueG1svZvLbuNGFob38xQEF0EGmFhiUTc7soI26SIDuC9odydAdrRYsoimWEyRsmyv5h3mFeYZZpVdv8k8yVQVLyL1k05j4HCRjvTx6JxTfx0yf5Li8qfHXWw8MJFFPLk0rbOxabBkzcMoub80P3+iPyxMI8uDJAxinrBL84ll5k+rvy0PXHzJtozlhkyQZJfmNs\/Ti9EoW2\/ZLsjOeMoSeWXDxS7I5VdxP8pSwYJQ\/2gXj8h4PBvtgigxiwwX4lty8M0mWjOXr\/c7luRFEsHiIJftZ9sozapsj+E35QtFcJBLrfpptOgWV+p81gTy7aK14Bnf5Gdrvitbw1Wej85b63wU5P\/LZE3lUh8itVOkSrZbf8sqd4H4sk9\/kLlTqdRdFEf5k16wuVrq\/B+EsYninIm3PJSbvAnijMlreXDn8JgLQ9zfXZqUEno1nV+bo9UyDe7ZLcs\/p\/qX+Sf+QYJLMxd7pi6PyqyrZRjJjVItG4JtLs031oVvz1SIjvglYoes8dnItvxAZef7OMiqPjT0RBTeRAlr04\/8IBv0pUxygsvy+sJvTOpZARHdb2WLN2yT17+WS7tlMVvnLGxlfL\/PY1nm9ml3x+M6Q8g2wT7OVRNakIo\/yJ4vzURJHcucPFU1HBbHaqWmsVaxP8sCs4lpPHO+u10HsZTJGo8b39\/pn59SJehN8MT3Wpjyqrrr7jj\/opDKOzbVViTMeLxN5abKKNN4Kj9OThq6mppGsM6jB5la3cl3PM\/57qPSRt\/iudp4wZ9ZordHi6P2LdXRZaoqxXGNx+9FQ0b2e7nTPWnKis08Vy\/kuerMUzTf0dH0hY6m\/Zk6mvrzxY3quW1+ruaZ6htQ3h\/l8MjB+TUK8+2luTibzc9ni\/m0Hiw5xz5TLcgdlPRZTm\/1vZxNXszlDXtgsYzWzTSZzF6Mw6hVfLWUM5jpP9U0xkGaNQZ+vc\/k2suuioneRmHIks6yuuYueNRTtosS\/fcsf1ITrWazSEMmSprXrUfKeqSr3uz169llPburHnn9epOy3qSjnvUXrG9a1pt21LPHr19vVtabddX7C+ZlXtabD7R\/i7LeolfPUXEbFs4iyIPVUvCDIfQtVFQt7ti6kH4UnJ\/NoYMi+oWngy4Oa5NLVuXUQ03+U43IvPLXmcQPq9l8OXpQLcq\/ZFd1a+SF1uSqXm6sUO\/b+yJFX4tmX4u6Lx1zVceMSuIAcYFcA6FAPCB+k7RUsYdUxS66OG+qcn6iSh1TqwLEBXINhALxgPhN0lJlMqQqE92FSlurMh+fqNIVY7VjnK4Y0o5xyxi7GWO3Y6478pB5O4Z21Zq0Y7yumGk7xu+ImfTcv9OXHi3T136wTIvGrGbzs5NN6Yo5Ecrpijl5ELhlzETHJIXg0\/HJCFx3ZTq5eWhHzOIkj9cVczJKfkfM1O7eltmQt8qs6IvUt\/AVEAeIW5Lp8XEBMRSIB8RvkpYG8yE1mIMGQBwg7hw0gBgKxAPiz\/s0WAypwQI0AOIAcRegAcRQIB4Qf9GnwfmQGpyDBkAcIO45aAAxFIgHxD\/v08AaDymCqnaiAiIHkVuhhhAYRRF5iPwWaovxkh9+fTEsFAOQg8itUFMMiKKIPER+C7XFGNSBWwTFAOQgcivUFAOiKCIPkd9CbTEGNd6WjWIAchC5FWqKAVEUkYfIb6G2GIP6bWuCYgByELkVaooBURSRh8hvobYYLxnd1xdjimIAchC5FWqKAVEUkYfIb6G2GIPaSwv9JSIHkWuhxcQoishD5Fu9NtMa1GdaaDQROYhcC70mRlFEHiLf6vWb1qCG00LHichB5FpoOjGKIvIQ+Vav8bQGdZ4WWk9EDiLXQveJURSRh8i3eh0oGdSBEnSgiBxELkEHilEUkYfIJ70OlAzqQAk6UEQOIpegA8UoishD5JNeB0qG\/W\/A6EAROYhcgg4UoygiD5FPeh0oGdSBEnSgiBxELkEHilEUkYfIJ70OlAzqQAk6UEQOIpegA8UoishD5JNeB0oGdaAEHSgiB5FL0IFiFEXkIfJJrwMlgzpQgg4UkYPIJehAMYoi8hD5pNeBkkEdKEEHishB5BJ0oBhFEXmIfNLrQMmgDpSgA0XkIHIJOlCMoog8RD7pdaBkUAdK0IEichC5BB0oRlFEHiKf9DpQe1AHaqMDReQgcm10oBhFEXmIfLvXgdqDOlAbHSgiB5FrowPFKIrIQ+TbvQ7UHtSB2uhAETmIXBsdKEZRRB4i3+51oPawhw\/QgSJyELk2OlCMoog8RL7d60DtQR2ojQ4UkYPItdGBYhRF5CHy7V4Hag\/qQG10oIgcRK6NDhSjKCIPkW\/3OlD7JQf6+icf7NL9zRr\/89+2T0\/plEHzhj6A3Aot6pMNGyNYB3XF289vv3dnF1LHvy9HG1Xo9NADJqWIPER+CxVyjhrH1XZM3OuDsJkUYp\/k6nhYg5anu8mFr7fjlNsXvq3zHtOslqFM\/EsQR2Fxer\/Ka5mnl4wgjvnhKg6SL9WsMiG4uC3O2snNS+V+pUwEuTqafcfyA2OJaaSC71KZ8c0+M0ImjJsoy5lx+PrvbcwSgyu0ESwyWJTkIrg\/\/uRTlKvEv+1lnZiFkb6kToe7gqcuPxxHR8Fr1ctblmX6CHzjws9Jus\/hQnGC2Jtd6KHOn1J5LZadqc0uTr5bq+9+3\/P8x2C\/ib\/+J2PJPw4sypnYfP1jK+Q3yY1rcSfX8PWPOyaK3oufyKmoclTZiJqR+vNy1NYWgNyYVEhB3qfFrmxZoF4GyeoF3MNJ\/JrcsvphsuUieuZJHsQOS2TvjVOWD7LlaI0XRsVrBW8DcR\/JwrE+rj8+U8ekRXFrFl\/kdutzk8XJbf1xq98AUAFTy1pY1pjYM0LGE\/mvIhvO8\/JSVUG2uU+NNJATcxs9s+Icc+Nkvn6hoTwFapVfq6eDvKxSvBe6Xihn4dOWJe\/lmuQIikguSasotzRIQpk0lQu+i4P1lzdJ+Os2yo+DEIqg8T7CWt4TDt+pt1oy9UZB0tLQTSP1GB8fxTuSNU8jtRn6SHohBNVrNsJos5ECJzmNRHYsVeP3YXj9cHwOrpY8DIt3KeRUND7Lj0XG1XfBLv3x5l2w3sZBlslenlm03iZRZvz3n\/8y9NU3+s+Pt2piC\/LBeJD3sP74Tuctky1HzW7l1\/qdotX\/AFBLBwjuBSMCQwkAAJc0AABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABkAAAB4bC93b3Jrc2hlZXRzL3NoZWV0MTUueG1svZrbbuO4Hcbv+xSCLor2YmOL9DG1vZiIIXeBzGQwmekCvVMsOhZGFlVJdg5XfYe+4T7JUtQhkj8pHRRZXUxG\/unz\/yTS+RBz9fPTIbROMkkDFa1t52JsWzLaKj+IHtb2t6\/8p4VtpZkX+V6oIrm2n2Vq\/7z5y+pRJd\/TvZSZpQNE6dreZ1l8ORql2708eOmFimWk7+xUcvAy\/TJ5GKVxIj3fvOkQjsh4PBsdvCCyiwiXyY\/EULtdsJVMbY8HGWVFkESGXqbLT\/dBnFbRnvwfiucn3qNutaqnUSIr7tTxnAnEOwTbRKVql11s1aEsDbtcjpatPp8S8v9Fcqa61VOQPylSBTtsf6TLg5d8P8Y\/6dixntR9EAbZs2nY3qxM\/M+JtQvCTCYfla8f8s4LU6nvZd69q0KVWMnD\/drmfHk152xpjzar2HuQdzL7Fpt3Zl\/VZw3WdpYcZX57VEbdrPxAP6i8ZCuRu7X9wbkUdJZLjOKfgXxMG9dWulePXFd+DL20qsNAkQT+TRDJNv2iHnWBv+gx6RVcpjc3\/iX1PCuQBA97XeKN3GX1u3VrdzKU20z6rYi3xyzUae6eD\/cqrCP4cucdwywvwgyk4idd89qO8lGHOqaK8xyuDMO8U9va5tpfdYLZxLZelDrcbb1Qj8kZjxuvP5m3n9N8oDfeszqawZR38113r9T3HOVxx3b+KCJpPd3F+qFqlW09l5eTs4KuprblbbPgpEPnO\/leZZk6fMlnY7Z4lj\/4RL3IyDweM5z8ucVGXYaqQrz2+Pq6KMhK\/10+6Z4wZcZmnKs34lx1ximK76ho+kZF0\/5IHUX97+ZG9bptXlfrmZsNqPdHuXj0wvkt8LP92l5czObL2WI+rReWXse\/yLwE\/QQ1fdGrt3pdrk1VrMsbeZKhVptimkxHL5bDqJV8s9JrMDU\/89UYenHaWPDbY6p7L6sqVvQ+8H0ZdaY1OQ\/ek1llhyAy\/6fZc76i87VZhCGTfDTvm4+U+UhXvtn756NlPtqVj7x\/vkmZb9KRz\/kT+puW+aYd+ej4\/fPNynyzrnx\/wnqZl\/nmvf2Nim1R\/Kb3Mm+zStSjlZglXWQtdlCdyGzN5cUcKijUb+xWkxx60y3n6fIPGf1bhui4+t2pxqeN\/sW8Gp3yGvU\/XVZdG3mjNt3W25UV4\/vxwkhR2KJVmFMXZkRXtWhUEhcIA3INhAMRTdIaAh1yCLSoYtkaAjkbQi2qhwCEAbkGwoGIJmkNYTLkECamijxsYwj0bAidoklb5HaKpm0RK0W0IZqfZbvuDDRri3inaN4WiQ7RZN69\/aZvfTRM3\/uDYVoU5rSqX5xNvVO0PJt6l8gZn029FE2MKKo+h8ZnsuvOWGefCrxTdLZrRIdoSrsHPxtytc+Kuki9C6+AuEBYSaav+xs0HIhoklbH8yE7nkPHQFwgbA4dg4YDEfO+jhdDdryAjoG4QNgCOgYNByIWfR0vh+x4CR0DcYGwJXQMGg5ELPs6dsZDtpxnO+sZkYuIVajRNqo4ItFC7c7fspXv37mDnQNyEbEKNTsHFUckWqjd+aCm1SHYOSAXEatQs3NQcUSihdqdD+pUHYqdA3IRsQo1OwcVRyRaqN35oPbUmWDngFxErELNzkHFEYkWanf+lkd8\/86n2DkgFxGrULNzUHFEooXanQ9q0hx0aYhcRMxBo4Yqjkg4vV7NGdSsOejWELmImIOGDVUckXB6PZszqGlz0LUhchExB40bqjgi4fR6N2dQ8+age0PkImIOGjhUcUTC6fVwZFAPR9DDIXIRMYIeDlUckSC9Ho4M6uEIejhELiJG0MOhiiMSpNfDkWH\/8IgeDpGLiBH0cKjiiATp9XBkUA9H0MMhchExgh4OVRyRIL0ejgzq4Qh6OEQuIkbQw6GKIxKk18ORQT0cQQ+HyEXECHo4VHFEgvR6ODKohyPo4RC5iBhBD4cqjkiQXg9HBvVwBD0cIhcRI+jhUMURCdLr4cigHo6gh0PkImIEPRyqOCJBej0cGdTDEfRwiFxEjKCHQxVHJEivh6ODejiKHg6Ri4hR9HCo4ogE7fVwdFAPR9HDIXIRMYoeDlUckaC9Ho4O6uEoejhELiJG0cOhiiMStNfD0WG\/MUYPh8hFxCh6OFRxRIL2ejg6qIej6OEQuYgYRQ+HKo5I0F4PRwf1cBQ9HCIXEaPo4VDFEQna6+HoWx7u\/b+lpqWlmjW+xqXnZwMq0bwxDECsQov6K+id5W29OuPdt49\/Y7NLPbS\/r0a7PNH5l9MYlCMSLVTMbtQ4B3SQyYM58Zfqro9Rlh+7adDyGCu5FGb255xeCmrivobZrOIkiLLb2JxRtvbSyw9Xp\/WwH+Bka03uZL0a9yoJXlSUeaEro0wmjVNSJ5lkwRZvjIpjuh+95CHQiUNz\/HV8kR87TIrHXbzIVGzOPRUnIc3l3pyozQVTx1k4zpjQGSHjibaRO6Wy8laVQZd5jK3Yi2VyF7zI4lxg46SrOSBcnuJyypfVitO38xC3icnnq8fo615Gt7onvQyTQLdkznav7dCLfB001g3fh972+4fI\/20fZPVpZctPvMb53q0evasO+SnxND+hG7VmyOIg\/xwYvw7vlWxVHOQPwxzxLAbBTc+WH+x2esBRxoMkfU1V41vfvz697q3NSvl+cTZZL4jGtb4sIm7+6h3if9x88rb70EtTXcuLDLb7KEit3\/\/zX8vc\/WB+frmTuteCfLZOKiouP5m4ZbDVqFmtflmf0d\/8AVBLBwj2o7nGDggAAOcvAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0NC54bWy9mt9ynMgVxu\/zFBQXuVvN0MxfZWa2LLo7u1Vay2V5s1W5Q9CjoQw0AWb05yrvkDfMk6S7YRDMB4orpXBhG34czjlfc9r+yurNz89JbJ1EXkQy3drO1dS2RBrIMEoft\/bv3\/hPK9sqSj8N\/VimYmu\/iML+efenzZPMvxcHIUpLJUiLrX0oy+x6MimCg0j84kpmIlVP9jJP\/FLd5o+TIsuFH5qXknhCptPFJPGj1K4yXOc\/kkPu91EgqAyOiUjLKkkuYr9U7ReHKCvO2Z7DH8oX5v6Tknrup9UirZ40+ZwZ5EuiIJeF3JdXgUzq1lDlerLu6HzOyf+WyZkrqadIfylyTpYEP6Iy8fPvx+wnlTtTK\/UQxVH5YgTbu43J\/yW39lFcivw3GaqPvPfjQqhnpf\/gyVjmVv74sLU5X7ElYVN7sttk\/qO4F+XvmXmz\/Ca\/KLC1y\/wo9ONJnXW3CSP1oXTLVi72W\/uTc83duQ4xEX+LxFPRuraKg3ziqvNj7BfnPgz8ax6Ft1EquvSrfFIN\/qKWSU1wXd48+LtQ63kGefR4UC3ein3ZvK2k3YtYBKUIOxnvjmWsyty\/JA8ybjKEYu8f41I3YRbkzE+q562d6qWOVU6Z6RqeiGOt1LYCHfurKrCY2darlMl94MdqmZzptHX\/2bx+SfWC3vov8mgWpn6qd92DlN810nmntv4UqbCe7zP1UVWUbb3Ul7OLhm7mtuUHZXRSqfVOfpBlKZOvem3MFi\/1h8\/lq0jN5zGLo79bZqLrVOcUbxrf7quGrOIf9ZceSFNXbOe5eSfPTW+eqvmejubvdDQfztTT1H8XN2nmtn19nmduNqDaH\/XwqMH5IwrLw9ZeXS2W68VqOW8GS83xL0K3oL6goq9qes\/39WzKai5vxUnEKto002YqezUOk07x3UbNYGF+19MY+1nRGvjgWCjtdVfVRB+iMBRpb1lTM\/GfzZQlUWr+LMoXPdF6Nqs0ZKaX5mPrkboe6au3+Ph6bl3P7atHPr7erK4366nnTj++3ryuN++r93\/4fou63mJQ36Qa0+pfXr\/0d5tcPlm5GbGqajXRTSGzVdZXS+igin5n95jioE1J1uX0pld\/6xOVV71dKHzazWebyUm3qH6prprWyDutKVXvN1at3o\/3Raq+Vu2+5k1fJuamiZnUxANCgTAgvE06it0xFbtVF+u24sWF4iamUQyEAmFAeJt0FM\/GVDwzXei0b4qXF4r7YlbdGK8vZt2NoT0xi2k3hvXFON0Y3hMzW\/bvl\/l7W3n+0Rt5XjXmtJsnF4vZF+NeLGZfzOxiMftiLjYn64u5GGfeEzN3+xdzMeZgLqq+SLNhboB4QCgQBoS3SUffckx9S9AHxANCgTAgfDmkbzWmvhXoA+IBoUAYEL4a0rceU98a9AHxgFAgDAhfD+lzpmMK1NUuFCLyEFFEDBHvoK7M9\/zXx8t0UCYgDxFFxBDxDurKHNXLOQRlAvIQUUQMEe+grsxRDZzjokxAHiKKiCHiHdSVOaprc2YoE5CHiCJiiHgHdWW+Z6g+XuYcZQLyEFFEDBHvoK7MUa2Og14HkYeIImKIuDNoeJxRHY+DlgeRh4giYoi4M+h7nFGNj4POB5GHiCJiiLgzaH+cUf2PgwYIkYeIImKIuDPogsioLoigC0LkIaKIGCJOBl0QGdUFEXRBiDxEFBFDxMmgCyLj\/o8WuiBEHiKKiCHiZNAFkVFdEEEXhMhDRBExRJwMuiAyqgsi6IIQeYgoIoaIk0EXREZ1QQRdECIPEUXEEHEy6ILIqC6IoAtC5CGiiBgiTgZdEBnVBRF0QYg8RBQRQ8TJoAsio7oggi4IkYeIImKIOBl0QWRUF0TQBSHyEFFEDBEngy7IHdUFueiCEHmIKCKGiLuDLsgd1QW56IIQeYgoIoaIu4MuyB3VBbnoghB5iCgihoi7gy7IHfeHeeiCEHmIKCKGiLuDLsgd1QW56IIQeYgoIoaIu4MuyB3VBbnoghB5iCgihoi76IImrZMBicgfzZmcQnV4TEv9k\/gWrQ+akWtu3r\/k7jV3Td63NLtNlkdpeZeZU4TWQfj6+GPRLNYjnD1ryL1olu8g8+hVpqUfeyItRd46N3ESeRkF+GBSHaT7zc8fI1U4NgfUplf6YFBefZnqppSZOQlRnVUylwdz5k0HzB1n5ThT4i4Imc6U5dhLWdaPzhVUm8fMyvxM5PfRq6hO7rTOopkjfPW5Dqe+PQ+HeqxT3OWmXiif0m8Hkd4pTWpk8khJMqcvt3bsp6FKminBD7EffP+Uhn8corI5T2iFud86gReopfdkos9xFvoMXdpZQ5pFenCnb4v3RgKZRfpjmENY1UJwo9kKo\/1eLXBa8igv3ko1+C4M2eltG+w2Mgyr04NqIFrX6rLKuPuzn2R\/uf3sB4fYLwrVy6uIgkMaFda\/\/\/kvyzz9ZH7\/ei+U1op8sU4yrS4\/m7x1ss2k3a26bU7R7v4DUEsHCBaETv1CBwAAiSsAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbL2YUW\/iOBDH3+9TRHlfEhsIUBFWbfe4Pam7XR3dW+neTOIQq06csw20\/fQ3dkIIDUHVqc1DS2InM7\/5jxnjmX9+yrizo1IxkYcuGviuQ\/NIxCzfhO7Ph+WnqesoTfKYcJHT0H2myv28+G2+F\/JRpZRqBwzkKnRTrYsrz1NRSjOiBqKgOcwkQmZEw63ceKqQlMT2pYx72PcDLyMsd0sLV\/ItNkSSsIh+EdE2o7kujUjKiQZ8lbJCHaw9xW+yF0uyh1APPA3EL+VMbQ+NWvYyFkmhRKIHkcgqtHaUM292EueTxP\/PEhpDqDtmMoUPxrLoLVFmRD5ui09guwCl1owz\/WwDdhdza\/+HdBLGNZXfRAxJTghXFOY0Wd8KLqQjN+vQXS7Rzeh6OnW9xbwgG7qi+mdh39QP4gcMHF6Eea8yu5jHDDJlmB1Jk9C9QVc3eGgesU\/8zeheNa4dlYr9EtC3nKiDPTv4h2TxHcvp6ehfYg+EX0EnWMKhq+W2mviHgqCHAck2KTDe0UTXb0NsK8pppGl8YvF+qzm4WT1na8FrCzFNyJZrA2EVOYzvgDl0c6M1B5uiMD5uKeehe41cJzLP\/gkOgpHrvAiRrSLCQSfk+4377\/b116NG0TvyLLZWmGrWfO3WQjyaIWPXNxm0YRiFC2K+ohWF6xAY3dEjzfG+fNVR\/9qcwFydMmO4eX1IztIuJ8h2pQSo8IvFOg3d6SCYzILpZFyrBEn5So3kAA2jL5CKw30ltChFvqM7yuFpC9McA+tlbN6J88UcBFX2v5GWk0I1shdtlRZZRVWmJ2VxTPOzbq3PjDwBI3yy3H4q\/WzSY4QuzdiV+r7ucOUOn3FncmxSUYZZ1iGiyWIuxd6RFrF0WypSezLSYjzwxy2G8vEL8lv3reggaOPvxmhi3cLLCkZ3C3\/u7Qwh\/AFUTYYvkKF3x8IWCzew0HmsYa9YQ4tl18wJxahXipGlGDXEwefFGV9aTcFg+u5k40qfI9nwPFnQN1nQIhudJ5v0mspJx4Ka9koxbS2o8XlxZr1izVo5C85jIb\/v5WQ8vmKbdLBdKunvrxlCLbBpB1i\/FR3hFtisA6zfmo6GLTDUsQeifus8GrXJOrZBdKnUfwDZuKNuoUuF\/QM4glblQh17Ieq3sKNJO3cdeyHqt9ijaZusYy9E\/dZ71C74qGMjwpcq\/gf8HPU71jvut7pj1F7vHXsi7vkHe1nex02yjh0R91vfcVnfgybZ6y3Ra5zECslyfV\/YhpOTUmI6ZceexKbVpahHVlTX50Qh2YvINeG3NNdUNk6VOyo1i9oTVc\/lG5EbBo65bWX4A3PqlmXk5Q0c\/u15bS00qGIvU9sdMQ+MEZoi5ONhgLE\/ghKUCKHPTx17PNvCKUhB5Yq9UPsTTzV6GLb3U52BUXVbn\/1dx5i4l9Z7LPb5Q0rze4gQ8iMZBGjbdqFbCKklYRqoOYker\/P4V8p03U5yYkkajZuIcn4rMtP\/U6b1kp8I+qVg8EU0aAcljyORKBi1x1mIrlRlaQVwYpYkoHaul0yqo6t6+D6Of98d19xiLuK4bDrB4mhcw2VpsRyur5vO4LZuni7+A1BLBwjnr2RApwQAAIAVAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0Mi54bWy9Wtty20YSfd+vQJAqV7Zii7iQ4MUkUzJkxS7Lliu0rdp9GwJDAiUAgwyGlKWf2Zd8Rt70Y5kLAAKDG8Nl8CCb6Gl0n+4zg7n1\/JfvYaDsIU58FC1U\/UJTFRg5yPWj7UL9+uX61URVEgIiFwQoggv1ESbqL8t\/zR8Qvk88CIlCDUTJQvUIiWeDQeJ4MATJBYphRFs2CIeA0Ee8HSQxhsDlL4XBwNA0axACP1KFhRk+xgbabHwHXiFnF8KICCMYBoBQ+Innx0lm7bt7lD0XgwcaaoanAPFKtOT29GHFXug7GCVoQy4cFKbQqlFOB9NSnN+xcZolfURD3fuMKSMzFjrHRBkCfL+LX1HbMc3U2g988sgDVpdzbv8zVjZ+QCD+iFxK8gYECaRtBKxtFCCs4O16oV5fG\/bYtjV1sJzHYAtXkHyN+ZvkC\/pMBQuV4B1kzYPU6nLu+pQoBlnBcLNQL\/WZbVpMhWt88+FDUvitJB56uKbIdwFIMhxc+Cv23Rs\/gmXpb+iBAnxH00R7cOqeN\/wX0nxmAuxvPQrxBm5I\/jYNbQUD6BDoFt+73ZGAelk9hmsU5AZcuAG7gDAMPB+ZfE8hL9SIZTqgJlHMXNgwCFigquIw3ffUvjVUlSeEwpUDApolXdMKz5\/467KU5fMGPKIdz0vaygbdGqF7JmJ2NcYfj4IlOAZsgKYoVAVQ6R4e0ByexatK8ntKyYExZrj4O+PmmncmynWaCZqFO98l3kKdXFjjqTUZj\/IsUU7eQZZxCppKnygT2XOaeySSfAP3MKDaHExRRq2L2AYl58s5TWjC\/2WpDUCcMPJSo84uIShMUQl6PN91YVTrlvsMwXeKkf7vR\/z\/hDwyeliihZkh7+vn9Wek\/owaf4Zxfn9m6s+s8zfk1Iu0iq8eIGA5x+hBwTwlwqtgIHfEqDSMC21UgSDUW+jm3ivB0ZiZP9ZL6Zgb06G0UBMq3S\/16XywZxDpH0WVQzNaoOlnx2VwXJMCLkOrx2W24ZpedCETvB4PzOTApkVgeg6Mq7wRKrroyUxiFyUl8MN+wQ+r4A0JvFDR9QP4oqQEftQv+FEVvCmBH1XAj5rAWy3gTe3M0K0q9KEE3ap0Gqup04z7zfu4Cn4kgR9XwI+bwE\/6BT+pgrck8JMK+EkT+Gm\/4KdV8GMJ\/LQCftoEXtf6Rc\/8yfAnEvxUpzhiS6JyAG2z4z8RgF4NYCoHoFcD0BsDaJ2rzj+3m5VJ1GyYRPXWiej8yNI5xShCk6fRTMksKknTlV2rZDYE2TphnT\/IdO4ZCmgE05YN3ROAXPHdfz6\/\/e3m\/acPP734fYfI6x9fgBglrz+giIB7AsXTD5e6aH0p\/rvzHY\/4W6jkalz87\/lgw4KvNMtZTVGNOKqogsm+\/frpy+VP2ds\/XFqzS3OUWdfk9KfWrGpfb5tg\/4FkWycm+wrd84ONhmznzcoLEMavlW8Qb57\/3O6iLYzKiW\/TlDmwjuIgt9hFgtVIQutS4fwkjP+PHg+jNHEfAKYP9XTUKZZYqFGQkz8+KvmdwNopGWeU1Dvpsn5lWhXLZWZb11HnZ3ZyIrO\/wsAFUQC2TYwWFLKBg3CC8Fb6rjXryfxOjuK3YK+Ly0k7l0VL3by1LiHPz9v0RN6+sfNpx4NYfOlqqZN0SnSV22SKpkdRVLbRxdK06SNotK57z39yoZ2Y8jvkRU2pFm1px38fhoidKMs5b1CSkp\/h60i+MNaR9MxW09BIjXSOCqN1ZX9+ivTTRwXBz39sszn+co2SxrEhNF9ypVT\/o0+2lBI3cTywqcxdx70j06n\/jemsDX870amXcet81mK+uwv0fL5onLpe9Lc+AQFs4D1rxson4HgBSBJplVhpl\/k0jlsbZjC6iDMaP4v9bkYN89TPIu1UCc1V46cxb3+prGhKffj8v83zH2zeSLvhNfDwE9zJK4q\/8aLMkXncJzR30EWS2fEZPRjqHkf97uSN4Ym00ozvAreJ1Kz1sJeKNwHb2dYsNdp1ZeqGR1GX2ewibthOXG6mm7Z+zyaMU88m3uI1VQjuUdK4RyurlKgqNcnMHHcwUTLRRc+onZ6yrW6O+j3SME490vhKd5U4gl7YxFBBIR00byCBdLFYd67RoSyzeNzRRsFoF4dWO4dFS90M9nseYpx6HrJi3\/r7lq1XQUF52ik3cP0E\/cpwa9KSOTvuRKRgrYuzjtOPoqVuzvo96TBOPem4e\/4zYgVBDauUtDUdQisUJeyUVlodNmnJhB13xJFZ62Jr0rRENPvdOZvpbrJ0YSHfk2ZK08LtuhCxzWh9OvTxz7Y++ZluV+mfSf86upzZ73bUFJsrtsc6xC1fsWZKRiHuVGQ2xW0Maayjjlj73XeZYj9iDIuxyjeymVIx1lTU2OVN7ZXNrpBaY+13y2OaNbzKF7iZUjFWs4vXcUec\/e4BzGFNnPJNb6ZUjHPYFWcXn\/0uyEyxFDGsYpxytdSgUNQVQrzl5X8JNbqLCLtLLkhFfeYbc2abLCmyfDizh3Xy0cwe1cmtmW3Vyccze1wnn8zsSZ18OrOndXJdm9mirKDSos\/s9Lr7EPJyHmM\/IrcxLxRWPAhYhfOhmHRbKS\/NJSuY39Z7CPtP7C4ysNlNGC6U5+3prth3qg1prexHgLc+dRzwGlTtgtVLYsG8eCAo5gV3a0Ror+A\/PV7WyhRGuj7Rdc0wLcPQhnQ9s0GI1DcdanN3sRKDGOKV\/wRFeWOh+pTX7KbFhHr6mHVF2sxM3GLu3UUP0Re6QrqlEdL+iX0aIC+3XqgxwgQDn1DUAXDuLyP3zqMrujwnLgaFiluH8mCjkN0hJqxoNiol9Cr22RSvHTJ5kDgo9hkznFSRlWueAMX1Nxua7Yhc+zg5uMrFt677dn8Yc8s5cl1RLUx7R+E3\/SksCnH+u+iMPuZF78u\/AFBLBwhFKs9xiggAADgvAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0My54bWy9mt9yo8gVxu\/zFBQXuVtLNJJsOZK2xv0nu1Xe8dR4NluVOwwtixpEE0Dyn6u8Q94wT5LuBmHQB85UyuFiZuBHc875mtMzX43P6ufnfeIcZV7EKl273sXUdWQaqihOH9fu79\/ET1euU5RBGgWJSuXafZGF+\/PmT6snlX8vdlKWjg6QFmt3V5bZ9WRShDu5D4oLlclUP9mqfB+U+jZ\/nBRZLoPIvrRPJmQ6XUz2QZy6VYTr\/EdiqO02DiVT4WEv07IKksskKHX5xS7OilO05+iH4kV58KSlnupplciqJ008bwbx9nGYq0Jty4tQ7evSUOVysuzofM7J\/xbJm2upx9h8KXIKtg9\/ROU+yL8fsp907Ezv1EOcxOWLFexuVjb+l9zZxkkp899UpD\/yNkgKqZ+VwQNVicqd\/PFh7QoxE8sbvnAnm1UWPMp7Wf6e2TfLb+qLBmu3zA\/SPJ7UUTerKNYfypTs5HK7dj9518KfmyV2xd9i+VS0rp1ip56ErvyQBMWpDgv\/msfRbZzKLv2qnnSBv+ht0h1cp7cP\/i71fp5AHj\/udIm3cls2b2tp9zKRYSmjTsS7Q5noNPcv+weVNBEiuQ0OSWmKsBty4kdd89pNzVYnOqbKTA4qk8QodZ3QrP1VJ1jMXOdVqf19GCR6m7zptHX\/2b5+Ts2G3gYv6mA3pn5qTt2DUt8NMnGnrvkUqXSe7zP9UfUq13mpL2dnBd3MXScIy\/ioQ5uT\/KDKUu2\/mr2xR7w0Hz5XrzK1n8dujvlumV1dhzqFeNP4dl8V5BT\/qL\/0QJg6YzvOzTtxbnrjVMX3VDR\/p6L5cKSeov67uEnTt+3rUz8LewD1+aibRzfOH3FU7tbu1cXicrm4upw3jaX7+BdpStBfUNNX3b2n+7o3VdWXt\/IoE73aFtNmOnrVDpNO8s1K92BhfzfdmARZ0Wr48FBo7XVVVUfv4iiSaW9am3MfPNsu28ep\/bMoX0xHm96swpCZ2ZqPzUfqfKQv3+Lj8\/l1Pr8vH\/n4fLM636wnnz\/9+HzzOt+8L9\/\/4fst6nyLQX2Tqk2rf3mDMtiscvXk5LbFqqxVRzeJ7FFZXlxCBdXqd06PTQ7atGSTzhx6\/bc+0XH124XGx81supocTYn6l66qKY28U5pW9X5h1e79eF2kquuqXZfX1GXX3DRrJjWhQBgQDkS0SUexP6Ziv6pi2VZMzhQ3axrFQBgQDkS0SUfxbEzFM1uFCfum2D9T3Ldm1l1De9aQRXcN64sz767hfWvO4oi+NZf952X+3lGef\/RBnleFee3Crs42s2\/N8mwze9bMp2eb2bfm7HDyvjVn7Sz61vj9m7kYszEXVV2kOTA3QCgQBoQDEW3S0Xc5pr5L0AeEAmFAOBBxOaTvakx9V6APCAXCgHAg4mpI33JMfUvQB4QCYUA4ELEc0udNxxRosp0pREQRMUQckeigrsz3\/NfHy\/RQJiCKiCHiiEQHdWWO6uU8gjIBUUQMEUckOqgrc1QD5\/koExBFxBBxRKKDujJHdW3eDGUCoogYIo5IdFBX5nuG6uNlzlEmIIqIIeKIRAd1ZY5qdTz0OogoIoaIIxLeoOHxRnU8HloeRBQRQ8QRCW\/Q93ijGh8PnQ8iiogh4oiEN2h\/vFH9j4cGCBFFxBBxRMIbdEFkVBdE0AUhoogYIo5IkEEXREZ1QQRdECKKiCHiiAQZdEFk3P\/RQheEiCJiiDgiQQZdEBnVBRF0QYgoIoaIIxJk0AWRUV0QQReEiCJiiDgiQQZdEBnVBRF0QYgoIoaIIxJk0AWRUV0QQReEiCJiiDgiQQZdEBnVBRF0QYgoIoaIIxJk0AWRUV0QQReEiCJiiDgiQQZdEBnVBRF0QYgoIoaIIxJk0AX5o7ogH10QIoqIIeKIhD\/ogvxRXZCPLggRRcQQcUTCH3RB\/qguyEcXhIgiYog4IuEPuiB\/3B\/moQtCRBExRByR8AddkD+qC\/LRBSGiiBgijkj4gy7IH9UF+eiCEFFEDBFHJHx0QZPWZMBe5o92JqfQFR7S0vwkvkXrQTNyLez759y\/Fr6N+xZms8ryOC3vMjtF6OxkYMYfi2azHmH2rCH3stm+ncrjV5WWQUJlWsq8NTdxlHkZh\/hgUg3S\/Rbkj7FOnNgBtemFGQzKqy9T3ZQqs5MQ1aySvdzZmTezYO55V543Jf6CkOlMW46tUmX96JRBl3nInCzIZH4fv8pqcqc1i2ZH+Oq5Dq++PTWHfmxC3OU2X6Se0m87md5pTbpl8lhLstOXazcJ0kgHzbTghyQIv39Koz92cdnMEzpRHrQm8EK99VTtzRxnYWbo0s4esiw2jTt927w3EqosNh\/DDmFVGyGsZieKt1u9wWkp4rx4S9Xguyjix7djsFmpKKqmB3VDtK71ZRVx8+dgn\/3l9nMQ7pKgKHQtrzIOd2lcOP\/+578c+\/ST\/f3rvdRaK\/LFOaq0uvxs49bBVpN2tfq2maLd\/AdQSwcIMs4tXkEHAACJKwAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAAZAAAAeGwvd29ya3NoZWV0cy9zaGVldDEyLnhtbL2b33KbSBbG7\/cpKC6mZqt2LNHor0fWVAxumConTsXJTNXcYdGyKCOaaZBl+2rfYV9hn2Gv5i5vsk+y3Q1IoA88qS0PF3HQr4\/OOf11Q74kzeKnp21sPDKRRTy5MK2zoWmwZMXDKLm\/ML98pj\/MTCPLgyQMYp6wC\/OZZeZPy78t9lw8ZBvGckMmSLILc5Pn6flgkK02bBtkZzxliRxZc7ENcvlR3A+yVLAg1F\/axgMyHE4G2yBKzCLDufiWHHy9jlbM5avdliV5kUSwOMhl+9kmSrMq21P4TflCEezlVKt+ai26xcghnzWCfNtoJXjG1\/nZim\/L1nCW88G8Mc8nQf6\/TNZYTvUxUitFqmTb1bfMchuIh136g8ydSqXuojjKn\/WEzeVC5\/8ojHUU50y856Fc5HUQZ0yO5cGdw2MuDHF\/d2FSejWcjEfUHCwXaXDPbln+JdXfzD\/zjxJcmLnYMTU8KLMuF2EkF0q1bAi2vjDfWee+PVEhOuKXiO2z2rWRbfieys53cZBVfWjoiSi8jhLWpJ\/4XjboS5nkDi7L64HfmNSzAiK638gWr9k6P3xbTu2WxWyVs7CR8WaXx7LM7fP2jseHDCFbB7s4V01oQSr+KHu+MBMldSxz8lTVcFgcq5maxkrF\/iwLTEam8cL59nYVxFImazisff6gv35KlaDXwTPfaWHKUXXX3XH+oJDKOzTVUiTMeLpN5aLKKNN4Li9HJw1djk0jWOXRo0yt7uQ7nud8+0lpo2\/xXC284C8s0cujxVHrluroMlWV4jjH4+eiISP7vVzpjjRlxXqey1fyXLbmKZpv6Wj8Skfj7kwtTf355AaHfVu\/rvYz1TegvD\/KzSM3zq9RmG8uzNnZZDqfzKbjw8aS+9hnqgW5gpK+yN1bfS73Ji\/25TV7ZLGM1s3UmcxebIdBo\/hyIfdgpn+q3RgHaVbb8KtdJudedlXs6E0UhixpLatrboMnvcu2UaJ\/z\/JntaPV3izSkJGS5m3rkbIeaas3eft6dlnPbqtH3r7eqKw3aqln\/QXzG5f1xi317OHb15uU9SZt9f6C\/TIt6017Wr9ZWW\/WqeeguA0LZxHkwXIh+N4Q+hYqqhZ37KGQfhTMz6bQQRH9ytNBF4e5ySmrcuqhJv9UIzKv\/HYm8ePSGs8Xg0fVo\/wl2zr0Rl7pTU7r9c4K+b69MVI0Nqs3NhkeGtNBl4egQUkcIC6QKyAUiAfEr5OGLHafsthFF\/OGLNaJLIeggyxAXCBXQCgQD4hfJw1ZRn3KMtJdqLQ1WciJLK1BdjPIaQ0aNYPcMshuBI2bQVctmci0GUNbq02aQV5L0PSkmN8SM5q238bj1x4x47d+wIyLxqzGDE9kuGwJms1PFqY10exkYcqgkQ5KChnGw5PHxlVrqpN6tC1oepLJaw06uR39lqCx3b42kz5vmknRFznczJdAHCBuScbHBwfEUCAeEL9OGhpM+9RgChoAcYC4U9AAYigQD4g\/7dJg1qcGM9AAiAPEnYEGEEOBeED8WZcG8z41mIMGQBwg7hw0gBgKxAPiz7s0sIZ9iqCqnaiAyEHkVqgmBEZRRB4iv4GaYrxmjt9eDAvFAOQgcitUFwOiKCIPkd9ATTF6deMWQTEAOYjcCtXFgCiKyEPkN1BTjF49uGWjGIAcRG6F6mJAFEXkIfIbqClGr87bGqEYgBxEboXqYkAUReQh8huoKcZrbvftxRijGIAcRG6F6mJAFEXkIfIbqClGr\/bSQn+JyEHkWmgxMYoi8hD5VqfNtHr1mRYaTUQOItdCr4lRFJGHyLc6\/abVq+G00HEichC5FppOjKKIPES+1Wk8rV6dp4XWE5GDyLXQfWIUReQh8q1OB0p6daAEHSgiB5FL0IFiFEXkIfJJpwMlvTpQgg4UkYPIJehAMYoi8hD5pNOBkn7\/PRgdKCIHkUvQgWIUReQh8kmnAyW9OlCCDhSRg8gl6EAxiiLyEPmk04GSXh0oQQeKyEHkEnSgGEUReYh80ulASa8OlKADReQgcgk6UIyiiDxEPul0oKRXB0rQgSJyELkEHShGUUQeIp90OlDSqwMl6EAROYhcgg4UoygiD5FPOh0o6dWBEnSgiBxELkEHilEUkYfIJ50OlPTqQAk6UEQOIpegA8UoishD5JNOB2r36kBtdKCIHESujQ4UoygiD5FvdzpQu1cHaqMDReQgcm10oBhFEXmIfLvTgdq9OlAbHSgiB5FrowPFKIrIQ+TbnQ7U7vccAjpQRA4i10YHilEUkYfItzsdqN2rA7XRgSJyELk2OlCMoog8RL7d6UDtXh2ojQ4UkYPItdGBYhRF5CHy7U4Har\/mQN\/++INdur9J7T\/\/bfv0vE4ZNK3pA8it0OxwuGFtBKvgUPH2y\/vv3cm51PHvi8FaFTo994BJKSIPkd9AhZyD2tm1LRP3+lRsJoXYJbk6Klaj5VFvcu7r5Tjl9rlv67zHNMtFKBP\/EsRRWBzlr\/Ja5umQEcQx31\/GQfJQ7VUmBBe3xcE7uXipXK+UiSBX57TvWL5nLDGNVPBtKjO+22VGyIRxHWU5M\/Zf\/72JWWJwhdaCRQaLklwE98evfI5ylfi3nawTszDSQ+qouCt46vL9cesoeKV6ec+yTJ+Hrw38nKS7HAaK48Te5Fxv6vw5lWOx7EwtdnEM3lp+9\/uO5z8Gd\/HX\/2Qs+ceeRTkT669\/bIT8lIqvf6zlBOIgk4NFqNwN1XerLETtjcP1YtDUFIBckFRIIW7SYjU2LFBvhGSHxu\/hOP6B3LLDQ2TDRfTCkzyIHZbIpmtHLR+ZyKMVDgyKdwveB+I+koVjfWZ\/eKbOSoviliw+yGXWhyeL49v6cqNfA1ABY8uaWdaQ2BNChiP5V5A153k5VFWQbe5SIw3kTrmNXlhxmLl2PF+\/1VAeBbXKj9VTQQ6rFDdC1wvlHvi8YcmNnJPceiKSU9IqyqUMklAmTeWE7+Jg9fAuCX\/dRPlxA4QiqL2UsJL3gsO36tWWTL1WkDQ0dNNIPb6HR\/GOZMXTSC2GPpdeCEH1nI0wWq+lwElOI5EdSx3wTRhePR6ff8sFD8PihQq5K2rX8rLIuPwu2KY\/Xn8IVhu16WQvLyxabZIoM\/77z38ZevSd\/vnpVm3Vgnw0HuW9qy8\/6LxlssWg3q38eHixaPk\/UEsHCDlV4PRBCQAAnDQAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQ3LnhtbL2bz3KjxhbG93kKikVWiSUa\/XVkpcYwQKo8f2o8Saqyw6JlUUY0aZA19uq+w32F+xjZzZvcJ7mnGySBPvCdSjksxgM\/Duec\/rqb+Wqqvfj5yzYxHrnMY5FemdbF0DR4uhJRnN5fmb9+9n6cmUZehGkUJiLlV+YTz82fl98t9kI+5BvOC4MSpPmVuSmK7HIwyFcbvg3zC5HxlJ6shdyGBd3K+0GeSR5G+qVtMmDD4WSwDePULDNcym\/JIdbreMVdsdpteVqUSSRPwoLazzdxlh+yfYm+KV8kwz0N9dBPrUW3fHLMZ40g3zZeSZGLdXGxEtuqNRzlfDBvjPOLZH8vkzWmoT7GaqbYIdl29S2j3IbyYZf9SLkzUuouTuLiSQ\/YXC50\/o\/SWMdJweU7EdEkr8Mk5\/SsCO8ckQhpyPu7K9PzRm+mM3duDpaLLLznt7z4NdNvFp\/FRwJXZiF3XD0eVFmXiyimiVItG5Kvr8w31mVgj1WIjvgt5vu8dm3kG7H3qPNdEuaHPjT0ZRzdxClv0k9iTw0GJBOt4Kq8fvAHJz0PQMb3G2rxhq+L49s0tFue8FXBo0bGD7sioTK3T9s7kRwzRHwd7pJCNaEFOfBH6vnKTJXUCeUUmarh8CRRIzWNlYr9hQpMRqbxLMT2dhUmJJM1HNbu3+vXz6kS9CZ8EjstTPVU7bo7IR4UUnmHppqKlBtfbjOaVIoyjafqcnTW0PXYNMJVET9SarWT70RRiO0npY3e4oWaeCmeeaqnR4uj5i3T0VWqQ4rTGE\/3ZUNG\/mc10x1pqor1PNcv5LluzVM239LR+IWOxt2ZWpr6\/4MbHNdt\/fqwnj29AWl\/VIuHFs7vcVRsrszZxWQ6n8ym4+PConUccNUCzSDRZ1q9h\/tqbYpyXd7wR55QtG6mzih7uRwGjeLLBa3BXP9UqzEJs7y24Fe7nMZedVWu6E0cRTxtLatrbsMvepVt41T\/nRdPakWrtVmmYSMlzevWY1U91lZv8vr17Kqe3VaPvX69UVVv1FLP+gfGN67qjVvq2cPXrzep6k3a6v0D62Va1Zv2NH+zqt6sU89BuQ1LZxEW4XIhxd6QeguVVcsdeyykPwXziyl0UEa\/8HXQxWFsNGRVTn3U6F81Rnnp7Zzw43I+WgweVYv0h7o6tsZeaI1G9XJjpXrf3hcr+5rV+xof+9Ix18eYQUUcIC6Qt0A8ID6QoE4aqth9qmKXXczrqkzOVDnGHFUB4gJ5C8QD4gMJ6qShyqhPVUa6C5X2pMr0TJW2mFkzxmmLmTdj3CrGrsWQE2sGvW1JZA2tZpDXGsSaQX5L0PRsGwQtMaNp+xYev\/R1Gb\/2t2VcNmY1RmifTUxr0OhsZlqDznRwq6DRaVG3vna2X7zWoLPl47cGna2foCVobLdPxKTP\/TEp+2JHYa6BOEDcioxPckKMB8QHEtRJQ4NpnxpMQQMgDhB3ChpAjAfEBxJMuzSY9anBDDQA4gBxZ6ABxHhAfCDBrEuDeZ8azEEDIA4Qdw4aQIwHxAcSzLs0sIZ9iqCqnamAyEHkHlBNCIzyEPmIggZqivGSCX59MSwUA5CDyD2guhgQ5SHyEQUN1BSjV9ttMRQDkIPIPaC6GBDlIfIRBQ3UFKNXt23ZKAYgB5F7QHUxIMpD5CMKGqgpRq8m2xqhGIAcRO4B1cWAKA+RjyhooKYYL1nb1xdjjGIAchC5B1QXA6I8RD6ioIGaYvRqLy30l4gcRK6FFhOjPEQ+osDqtJlWrz7TQqOJyEHkWug1McpD5CMKrE6\/afVqOC10nIgcRK6FphOjPEQ+osDqNJ5Wr87TQuuJyEHkWug+McpD5CMKrE4Hynp1oAwdKCIHkcvQgWKUh8hHFLBOB8p6daAMHSgiB5HL0IFilIfIRxSwTgfK+v2PX3SgiBxELkMHilEeIh9RwDodKOvVgTJ0oIgcRC5DB4pRHiIfUcA6HSjr1YEydKCIHEQuQweKUR4iH1HAOh0o69WBMnSgiBxELkMHilEeIh9RwDodKOvVgTJ0oIgcRC5DB4pRHiIfUcA6HSjr1YEydKCIHEQuQweKUR4iH1HAOh0o69WBMnSgiBxELkMHilEeIh9RwDodKOvVgTJ0oIgcRC5DB4pRHiIfUcA6HajdqwO10YEichC5NjpQjPIQ+YgCu9OB2r06UBsdKCIHkWujA8UoD5GPKLA7HajdqwO10YEichC5NjpQjPIQ+YgCu9OB2v2eOEAHishB5NroQDHKQ+QjCuxOB2r36kBtdKCIHESujQ4UozxEPqLA7nSgdq8O1EYHishB5NroQDHKQ+QjCmx0oIPaoaotl\/f6uGZO49ilhTrEVKPVGWR2Gej3z7l9Gdg67ynNchFR4t\/CJI7KM+aHvJZ5\/sgIk0Tsr5MwfTiIy6UU8rY8EUbSZyR3xmVYqAPEd7zYc56aRibFNqOMb3a5EXFp3MR5wY391\/9sEp4aQqG15LHB47SQ4f3plc9xoRL\/saM6CY9i\/UidYXalyFyxP028gm9VL+94nuuD2rUHv6TZroAH5TlXf3KpZ6F4yuhZQp3RsNfl+Wxr+f2fO1H89PD1r1QX\/+GGU8AuvTfueFj1+sOexwWX669\/bSTd7bb5ii7iO56WLy8Gx2yHvGw5PFJGk9FUGQBNUSZJmg9ZOT8bHqpfXsiPQ7mHk+NHcsuP+2AjZPws0iJMHJ5Sx7VTgY9cFvEKHwzKY\/DvQnkfU+FEHy8fXqhjvbLcYuUNTbw+51eeNNaXG31iXQWMLWtmWUNmTxgbjshFr4UoqkeHCtTmLjOykNbObfzMy3O3tZPk+gB+dWrRqm4Pu5weqxQfpK4X0ar4vOHpBxoTLUYZ05C0ijS5YRpR0owGfJeEq4c3afT7Ji5OSyKSYe38\/Ip2hyO26rcwcnUCPm1o6Gax+gINT+KdyEpksZoMfYS6FMLTYzaieL0mgdPCi2V+KnXEH6Lo7ePpe7ZciCgqz\/7Tqqhd02WZcfl9uM1+unkfrjZJmOfUyzOPV5s0zo3\/\/uvfhn76Rv\/8dKvWaUk+Go+0m\/Xle523SrYY1Lul2+PvwCz\/B1BLBwgEDhau+ggAAEczAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABkAAAB4bC93b3Jrc2hlZXRzL3NoZWV0MTMueG1svZtbbttIFobfZxUEHxozQLclFnWzW1YjJl1kA84FcdINzBstliwiFItdLPn2NHuYLcxOZiezkqkqkhKpn\/QEAzcfkkgfj8459dch8zspLX952qXWAxNFwrNL2zkb2xbL1jxOsvtL++sX+tPCtgoZZXGU8oxd2s+ssH9Z\/WX5yMW3YsuYtFSCrLi0t1LmF6NRsd6yXVSc8Zxl6sqGi10k1VtxPypywaLYfGiXjsh4PBvtoiSzywwX4nty8M0mWTOfr\/c7lskyiWBpJFX7xTbJizrbU\/xd+WIRPaql1v00WvTLK4d8zgTy7ZK14AXfyLM131Wt4SrPR+etdT4J8v9lcqZqqQ+J3ilSJ9utv2eVu0h82+c\/qdy5UuouSRP5bBZsr5Ym\/ydhbZJUMvGex2qTN1FaMHVNRnceT7mwxP3dpU3p9Xgxm1B7tFrm0T27ZfJrbj4pv\/BPClzaUuyZvjyqsq6WcaI2SrdsCba5tN85F6E70yEm4reEPRaN11ax5Y9Udb5Po6Luw8BAJPFNkrE2\/cwfVYOhkklNcFXeXPg7U3rWQCT3W9XiDdvIw6fV0m5ZytaSxa2MH\/cyVWVun3d3PD1kiNkm2qdSN2EEqfmD6vnSzrTUqcrJc13DY2mqV2pbax37qyowm9jWC+e723WUKpmc8bjx\/oP5+CnVgt5Ez3xvhKmu6rvujvNvGum8Y1tvRcasp9tcbaqKsq3n6uXkpKGrqW1Fa5k8qNT6Tr7jUvLdZ62NucWl3njBX1hmtseIo\/ctN9FVqjrFcY3H92VDVvFHtdM9aaqKzTxXr+S56sxTNt\/R0fSVjqb9mTqa+t+LGx3mtvm6nmdqbkB1f1TDowbn9ySW20t7cTabn88W8+lhsNQch0y3oHZQ0Rc1vfX7ajZ5OZc37IGlKto002QqezkOo1bx1VLNYGF+19OYRnnRGPj1vlBrr7oqJ3qbxDHLOsuamrvoyUzZLsnMn4V81hOtZ7NMQyZamretR6p6pKve7O3ruVU9t6seeft6k6repKOe8yesb1rVm3bUc8dvX29W1Zt11fsT5mVe1ZsPtH+Lqt6iV89ReRuWziKS0Wop+KMlzC1UVi3v2EMh8yg4P5tDB2X0K08HUxzWppasy+mHmvpbjai86tOFwg8rZ06Wowfdo\/ql2jr0Rl7pTS3r9c5K+b6\/MVI2tmg15h4aM0FXh6BRRTwgPpBrIBRIACRskpYs7pCyuGUX5y1ZJieyHIIOsgDxgVwDoUACIGGTtGSZDCnLxHSh0zZkmZ7I0hk0awd5nUHzdpBfBbnNoNlJuevOTIt2EO0MOm8HBV1Bi3E7KOwImsy7b+Tpaw+Z6Vs\/YqZlY06re+dkbzqDyMnedAadPBP8KmhigjIT5KqfbU42pzPVyX1EO4NOtjnoDDqZqrAjaOp2b85syPtmVvZFDvfzFRAPiF+R6fHZATEUSAAkbJKWBvMhNZiDBkA8IP4cNIAYCiQAEs77NFgMqcECNADiAfEXoAHEUCABkHDRp8H5kBqcgwZAPCD+OWgAMRRIACQ879PAGQ8pgq52ogIiD5Ffo4YQGEURBYjCFmqL8Zo\/fnsxHBQDkIfIr1FTDIiiiAJEYQu1xRjUkDsExQDkIfJr1BQDoiiiAFHYQm0xBrXhjotiAPIQ+TVqigFRFFGAKGyhthiDmm9ngmIA8hD5NWqKAVEUUYAobKG2GK\/Z3bcXY4piAPIQ+TVqigFRFFGAKGyhthiD2ksH\/SUiD5HvoMXEKIooQBQ6vTbTGdRnOmg0EXmIfAe9JkZRRAGi0On1m86ghtNBx4nIQ+Q7aDoxiiIKEIVOr\/F0BnWeDlpPRB4i30H3iVEUUYAodHodKBnUgRJ0oIg8RD5BB4pRFFGAKCS9DpQM6kAJOlBEHiKfoAPFKIooQBSSXgdKhv0nYXSgiDxEPkEHilEUUYAoJL0OlAzqQAk6UEQeIp+gA8UoiihAFJJeB0oGdaAEHSgiD5FP0IFiFEUUIApJrwMlgzpQgg4UkYfIJ+hAMYoiChCFpNeBkkEdKEEHishD5BN0oBhFEQWIQtLrQMmgDpSgA0XkIfIJOlCMoogCRCHpdaBkUAdK0IEi8hD5BB0oRlFEAaKQ9DpQMqgDJehAEXmIfIIOFKMoogBRSHodqDuoA3XRgSLyEPkuOlCMoogCRKHb60DdQR2oiw4UkYfId9GBYhRFFCAK3V4H6g7qQF10oIg8RL6LDhSjKKIAUej2OlB32KMI6EAReYh8Fx0oRlFEAaLQ7XWg7qAO1EUHishD5LvoQDGKIgoQhW6vA3UHdaAuOlBEHiLfRQeKURRRgCh0ex2o+5oDffvzD27l\/maN\/\/x3T08y1UHzhj6A\/BotDocbNla0jg4Vb7++\/6s\/u1A6\/m052uhCp+ceMClFFCAKW6iUc9Q4vrZj4t4cjC2UEPtM6tNiDVqd9iYXodmOU+5ehK7Je0yzWsYq8W9RmsTlaf46r2OfXrKiNOWPV2mUfatnlQnBxW159k5tXq72K2cikvqo9h2Tj4xltpULvstVxnf7woqZsG6SQjLr8d\/\/2qYss7hGG8ESiyWZFNH98SNfEqkT38pI7gvbnBP3Bc99\/ngcGg2vdRfvWVGYw\/CNC79m+V7ChfIscTC7MOMsn3N1LVU96W0uz8A7qx\/+2HP5M99sWPbjHXuJtqn8MTL976wP0XqbRkWhVq\/Pb0smy2g1CvXH60RED8bh9XLUFhSA2o1cKBU+5uVWbFmkvxFSHHq\/h+P4B3LLDk+QLRfJC89klHosk0w0jlo+MCGTNV4Yld8teB+J+0QVTs2Z\/fGZPistyvuxfKP22ByeLI9vm5db8zUAHTB1nIXjjIk7I2Q8UT9\/bDiX1aW6gmpzn1t5pMbkNnlh5WHmxvF8862G6iioU72tHwnqsk7xUZh6sRqDL1uWfVRrUnMnErUko6LazSiLVdJcLfgujdbf3mXx79tEHmcgFlHjSwlrdSN4fKe\/2lLorxVkLQ39PNHP7vFRvCNZ8zzRm2HOpZdCULNmK07U7AiVkSZqSo6Fa\/wxjq8fjg+\/1ZLHcfmFCjUVjdfqZZlx9UO0y3++qYdP9fLCkvU2SwrrP\/\/4p2WuvjO\/f75laq0l+WQ9qBvXvPxg8lbJlqNmt+rt4YtFq\/8CUEsHCKmW3UM2CQAAnDQAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQ4LnhtbL2b33KbSBbG7\/cpKC6mdqt2LNHor0fWVAxumConTsXJTNXcYdGyKCOaaZBl+2reYV9hHyN3eZN9ku1uQAJ94E1tebiIAz8O55z+uiFfkmbx89M2Nh6ZyCKeXJjW2dA0WLLiYZTcX5hfPtMfZ6aR5UESBjFP2IX5zDLz5+XfFnsuHrINY7khEyTZhbnJ8\/R8MMhWG7YNsjOeskReWXOxDXJ5Ku4HWSpYEOqbtvGADIeTwTaIErPIcC6+Jwdfr6MVc\/lqt2VJXiQRLA5y2X62idKsyvYUfle+UAR7OdSqn1qLbnHlkM8aQb5ttBI84+v8bMW3ZWs4yvlg3hjnkyD\/XyZrLIf6GKmZIlWy7ep7RrkNxMMu\/VHmTqVSd1Ec5c96wOZyofN\/FMY6inMm3vNQTvI6iDMmr+XBncNjLgxxf3dhUkrJu7l9aQ6WizS4Z7cs\/5LqO\/PP\/KMEF2YudkxdHpRZl4swkhOlWjYEW1+Y76xz356oEB3xa8T2We3YyDZ8T2XnuzjIqj409EQUXkcJa9JPfC8b9KVMcgWX5fWF35nUswIiut\/IFq\/ZOj\/cLYd2y2K2ylnYyHizy2NZ5vZ5e8fjQ4aQrYNdnKsmtCAVf5Q9X5iJkjqWOXmqajgsjtVITWOlYn+RBSYj03jhfHu7CmIpkzUc1s4\/6NtPqRL0OnjmOy1MeVU9dXecPyik8g5NNRUJM55uUzmpMso0nsvD0UlDl2PTCFZ59ChTqyf5juc5335S2uhHPFcTL\/gLS\/T0aHHUvKU6ukxVpTiO8XheNGRkf5Qz3ZGmrFjPc\/lKnsvWPEXzLR2NX+lo3J2ppan\/PbjBYd3Wj6v1TPUDKJ+PcvHIhfNbFOabC3N2NpnOJ7Pp+LCw5Dr2mWpBzqCkL3L1Vufl2uTFurxmjyyW0bqZOpPZi+UwaBRfLuQazPRPtRrjIM1qC361y+TYy66KFb2JwpAlrWV1zW3wpFfZNkr071n+rFa0WptFGjJS0rxtPVLWI231Jm9fzy7r2W31yNvXG5X1Ri31rL9gfOOy3rilnj18+3qTst6krd5fsF6mZb1pT\/M3K+vNOvUcFI9h4SyCPFguBN8bQj9CRdXiiT0U0q+C+dkUOiiiX3k76OIwNjlkVU691OSfakTmlXdnEj8ureF8MXhUPcpfsq1Db+SV3uSwXu+skO\/7GyNFY7N6Y9bw0JgOujwEDUriAHGBXAGhQDwgfp00ZLH7lMUuupg3ZLFOZDkEHWQB4gK5AkKBeED8OmnIMupTlpHuQqWtyUJOZGkNsptBTmvQqBnklkF2LWh6kuiqJRGZNmNoa7FxM8hrCZqexPgtMaNp+1M8fmVeyORsNn7rV8y46M1qDHJyMjetQSdyOa1Bs5O5KYNGx4Xdetv8ZCragsjJ+8ZrCxqeNOC3BI3t9rmY9PmMTIq+yEGYSyAOELck46OcEEOBeED8OmloMO1TgyloAMQB4k5BA4ihQDwg\/rRLg1mfGsxAAyAOEHcGGkAMBeIB8WddGsz71GAOGgBxgLhz0ABiKBAPiD\/v0sAa9imCqnaiAiIHkVuhmhAYRRF5iPwGaorxmhd+ezEsFAOQg8itUF0MiKKIPER+AzXF6NV8WwTFAOQgcitUFwOiKCIPkd9ATTF6tdyWjWIAchC5FaqLAVEUkYfIb6CmGL0abWuEYgByELkVqosBURSRh8hvoKYYr7nbtxdjjGIAchC5FaqLAVEUkYfIb6CmGL3aSwv9JSIHkWuhxcQoishD5FudNtPq1WdaaDQROYhcC70mRlFEHiLf6vSbVq+G00LHichB5FpoOjGKIvIQ+Van8bR6dZ4WWk9EDiLXQveJURSRh8i3Oh0o6dWBEnSgiBxELkEHilEUkYfIJ50OlPTqQAk6UEQOIpegA8UoishD5JNOB0r6\/edfdKCIHEQuQQeKURSRh8gnnQ6U9OpACTpQRA4il6ADxSiKyEPkk04HSnp1oAQdKCIHkUvQgWIUReQh8kmnAyW9OlCCDhSRg8gl6EAxiiLyEPmk04GSXh0oQQeKyEHkEnSgGEUReYh80ulASa8OlKADReQgcgk6UIyiiDxEPul0oKRXB0rQgSJyELkEHShGUUQeIp90OlDSqwMl6EAROYhcgg4UoygiD5FPOh2o3asDtdGBInIQuTY6UIyiiDxEvt3pQO1eHaiNDhSRg8i10YFiFEXkIfLtTgdq9+pAbXSgiBxEro0OFKMoIg+Rb3c6ULvfbQfoQBE5iFwbHShGUUQeIt\/udKB2rw7URgeKyEHk2uhAMYoi8hD5dqcDtXt1oDY6UEQOItdGB4pRFJGHyLc7Haj9mgO13nyvg126v0ntP\/9t+3R7Thk0rekDyK1QsQMqkanWRrAKDhVvv7z\/uzs5lzr+YzFYq0InuxWuMClF5CHyG6iQc1DbqrZl4l5vgs2kELtE7Rsxa7Tc2U3OfT0dp9w+922d95hmuQhl4l+DOAqLnftVXss8vWQEccz3l3GQPFRrlQnBxW2xz05OXirnK2UiyNW27DuW7xlLTCMVfJvKjO92mREyYVxHWc6M\/bd\/b2KWGFyhtWCRwaIkF8H98ZbPUa4S\/76TdWIWRvqS2hnuCp66fH9cOgpeqV7esyzT299rF35J0l0OF4rdw97kXC\/q\/DmV12LZmZrsYte7tfzhjx3Pf3r49jXRxf+5Z1HOxPrb142QZ49MPAS7tTySP40rcSdH8+3rHRPFKIqb5fqoslV5iVoth+PFoKkyADlFqZDS3KTF\/GxYoD4JyQ5DuYf9+Adyyw6vlQ0X0QtP8iB2WCJHUdtrKQeSRyu8MCg+LngfiPtIFo71pv3hmdosLYqHtDiRE693Txb7t\/XhRn8HoALGljWzrCGxJ4QMR\/IvJWvO8\/JSVUG2uUuNNJBr5zZ6YcVu5tr+fP1ZQ7kX1CpPq\/eEvKxS3AhdL5Sr4vOGJTdyTHIxikgOSasoJzdIQpk0lQO+i4PVw7sk\/G0T5cclEYqg9lXCSj4dDt+qb1sy9V1B0tDQTSP1Qh8exTuSFU8jNRl6Y3ohBNVjNsJovZYCJzmNRHYsdcA3YXj1eHwjLhc8DIsvKuSqqB3LwyLj8odgm\/50\/SFYbeIgy2QvLyxabZIoM\/7z578MffWd\/vnpVq3dgnw0HuXTrA8\/6LxlssWg3q08PXxZtPwvUEsHCOa9LhRHCQAAnTQAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGQAAAHhsL3dvcmtzaGVldHMvc2hlZXQxNC54bWy9m99ym0gWxu\/3KSgupnarZizR6K9H1lQMbpgqJ07FyUzV3GHRsigjmmmQ\/Odq32FfYR8jd3mTfZLtbkACfeBNbXm4SAI\/Duec\/rohn5Nm8cvTNjb2TGQRTy5M62xoGixZ8TBK7i\/ML5\/pTzPTyPIgCYOYJ+zCfGaZ+cvyb4tHLh6yDWO5IRMk2YW5yfP0fDDIVhu2DbIznrJEXllzsQ1yeSruB1kqWBDqm7bxgAyHk8E2iBKzyHAuvicHX6+jFXP5ardlSV4kESwOctl+tonSrMr2FH5XvlAEj3KoVT+1Ft3iyiGfNYJ822gleMbX+dmKb8vWcJTzwbwxzidB\/r9M1lgOdR+pmSJVsu3qe0a5DcTDLv1J5k6lUndRHOXPesDmcqHzfxTGOopzJt7zUE7yOogzJq\/lwZ3DYy4McX93YVI6dS\/HNjUHy0Ua3LNbln9J9Z35Z\/5RggszFzumLg\/KrMtFGMmJUi0bgq0vzHfWuW9PVIiO+C1ij1nt2Mg2\/JHKzndxkFV9aOiJKLyOEtakn\/ijbNCXMskVXJbXF\/5gUs8KiOh+I1u8Zuv8cLcc2i2L2SpnYSPjzS6PZZnb5+0djw8ZQrYOdnGumtCCVHwve74wEyV1LHPyVNVwWByrkZrGSsX+KgtMRqbxwvn2dhXEUiZrOKydf9C3n1Il6HXwzHdamPKqeuruOH9QSOUdmmoqEmY83aZyUmWUaTyXh6OThi7HphGs8mgvU6sn+Y7nOd9+UtroRzxXEy\/4C0v09Ghx1LylOrpMVaU4jvF4XjRkZH+WM92RpqxYz3P5Sp7L1jxF8y0djV\/paNydqaWp\/z24wWHd1o+r9Uz1Ayifj3LxyIXzexTmmwtzdjaZziez6fiwsOQ69plqQc6gpC9y9Vbn5drkxbq8ZnsWy2jdTJ3J7MVyGDSKLxdyDWb6d7Ua4yDNagt+tcvk2MuuihW9icKQJa1ldc1t8KRX2TZK9J9Z\/qxWtFqbRRoyUtK8bT1S1iNt9SZvX88u69lt9cjb1xuV9UYt9ay\/YHzjst64pZ49fPt6k7LepK3eX7BepmW9aU\/zNyvrzTr1HBSPYeEsgjxYLgR\/NIR+hIqqxRN7KKRfBfOzKXRQRL\/ydtDFYWxyyKqceqnJv9WIzCvvziTeL63ZdDHYqx7lL9nWoTfySm9yWK93Vsj3\/Y2RorFZo7HZoTEddHkIGpTEAeICuQJCgXhA\/DppyGL3KYtddDFvyDI\/keUQdJAFiAvkCggF4gHx66Qhy6hPWUa6C5X2KMt8eCJLa5DVDHJag0gzyC2D7FrQ1G7GXLUmOgmirUGjZpDXEjQdN2P8lphRx2M8fu0VM37rF8y4aMxqjPCk+8vWoMnJzLQGTU9mpgwa6aBEB8kfbIYnS+GqNdfJ24W2Bp08a15b0PRkUfktQWO7fXYmfT42k6IvcnicL4E4QNySjI+vDoihQDwgfp00NJj2qcEUNADiAHGnoAHEUCAeEH\/apcGsTw1moAEQB4g7Aw0ghgLxgPizLg3mfWowBw2AOEDcOWgAMRSIB8Sfd2lgDfsUQVU7UQGRg8itUE0IjKKIPER+AzXFeM0ev70YFooByEHkVqguBkRRRB4iv4GaYvTqxy2CYgByELkVqosBURSRh8hvoKYYvbpwy0YxADmI3ArVxYAoishD5DdQU4xevbc1QjEAOYjcCtXFgCiKyEPkN1BTjNf87tuLMUYxADmI3ArVxYAoishD5DdQU4xe7aWF\/hKRg8i10GJiFEXkIfKtTptp9eozLTSaiBxEroVeE6MoIg+Rb3X6TatXw2mh40TkIHItNJ0YRRF5iHyr03havTpPC60nIgeRa6H7xCiKyEPkW50OlPTqQAk6UEQOIpegA8UoishD5JNOB0p6daAEHSgiB5FL0IFiFEXkIfJJpwMl\/f6LMDpQRA4il6ADxSiKyEPkk04HSnp1oAQdKCIHkUvQgWIUReQh8kmnAyW9OlCCDhSRg8gl6EAxiiLyEPmk04GSXh0oQQeKyEHkEnSgGEUReYh80ulASa8OlKADReQgcgk6UIyiiDxEPul0oKRXB0rQgSJyELkEHShGUUQeIp90OlDSqwMl6EAROYhcgg4UoygiD5FPOh0o6dWBEnSgiBxELkEHilEUkYfIJ50O1O7VgdroQBE5iFwbHShGUUQeIt\/udKB2rw7URgeKyEHk2uhAMYoi8hD5dqcDtXt1oDY6UEQOItdGB4pRFJGHyLc7Hajd704EdKCIHESujQ4UoygiD5FvdzpQu1cHaqMDReQgcm10oBhFEXmIfLvTgdq9OlAbHSgiB5FrowPFKIrIQ+TbnQ7Ufs2Bvv0GCLt0f5Paf\/7b9umOnTJoWtMHkFuh2WF3w9oIVsGh4u2X9393J+dSx38sBmtV6HTfAyaliDxEfgMVcg5qu9e2TNzrfbGZFGKX5GqzWI2Wm73Jua+n45Tb576t8x7TLBehTPxbEEdhsZm\/ymuZp5eMII7542UcJA\/VWmVCcHFbbL2Tk5fK+UqZCHK1U\/uO5Y+MJaaRCr5NZcZ3u8wImTCuoyxnxuO3f29ilhhcobVgkcGiJBfB\/fGWz1GuEv+xk3ViFkb6ktos7gqeuvzxuHQUvFK9vGdZpnfE1y78mqS7HC4UG4q9yble1PlzKq\/FsjM12cVGeGv5w587nv8sT\/P1t68bwZIf90w8BLu1PPr29Y6Jot8fU\/Htq2RGHGQZS4q75MKo0lQJiVomh+PFoCkvADk3qZCa3KTFxGxYoD4PyQ5juIe9+Qdyyw7vkw0X0QtP8iB2WJIzUdt3KUeTRyu8MCg+NHgfiPtIFo71Bv7hmdo4LYqnsziRM653UhZ7ufXhRn8ToALGljWzrCGxJ4QMR\/KnkTXneXmpqiDb3KVGGshFcxu9sGJnc22vvv7EodwXapWn1QtCXlYpboSuF8rl8HnDkhs5JrkKRSSHpFWUsxokoUyaygHfxcHq4V0S\/r6J8uNaCEVQ+0JhJR8Lh2\/Vdy6Z+sYgaWjoppF6kw+P4h3JiqeRmgy9Sb0QguoxG2G0XkuBk5xGIjuWOuCbMLzaH1+FywUPw+LrCrkqasfysMi4\/CHYpj9ffwhWG7XoZC8vLFptkigz\/vPPfxn66jv9+6dbJsdakI\/GXj7G+vCDzlsmWwzq3crTw1dGy\/8CUEsHCKPK8GlGCQAAqTQAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQ5LnhtbL2b33KjRhbG7\/cpKC5Su1UbSzT668hK2bSBVHn+1HgmqcodFi2LMqJJgyzbV3mHfYV9jLmbN9kn2e4GJNAH3qkth4tM4NdH55z+umG+pJrFz0\/b2HhkIot4cmFaZ0PTYMmKh1Fyf2F++ez+ODONLA+SMIh5wi7MZ5aZPy\/\/tthz8ZBtGMsNmSDJLsxNnqfng0G22rBtkJ3xlCVyZM3FNsjlrbgfZKlgQah\/tI0HZDicDLZBlJhFhnPxPTn4eh2tGOWr3ZYleZFEsDjIZfvZJkqzKttT+F35QhHs5VSrfmot0mLkkM8aQb5ttBI84+v8bMW3ZWs4y\/lg3pjnkyD\/XyZrLKf6GKmVIlWy7ep7ZrkNxMMu\/VHmTqVSd1Ec5c96wuZyofN\/FMY6inMm3vFQLvI6iDMmx\/LgzuExF4a4v7swXZfOL8fjS3OwXKTBPbtl+ZdU\/zL\/zD9KcGHmYsfU8KDMulyEkVwo1bIh2PrCvLTOfXuiQnTErxHbZ7VrI9vwvSs738VBVvWhoSei8CZKWJN+4nvZoC9lkju4LK8HfmdSzwqI6H4jW7xh6\/zwazm1WxazVc7CRsYPuzyWZW6ft3c8PmQI2TrYxblqQgtS8UfZ84WZKKljmZOnqobD4ljN1DRWKvYXWWAyMo0Xzre3qyCWMlnDYe3+vf75KVWC3gTPfKeFKUfVU3fH+YNCKu\/QVEuRMOPpNpWLKqNM47m8HJ00dDU2jWCVR48ytXqS73ie8+0npY1+xHO18IK\/sEQvjxZHrVuqo8tUVYrjHI\/3RUNG9ke50h1pyor1PFev5LlqzVM039LR+JWOxt2ZWpr635MbHPZt\/braz65+AOXzUW4euXF+i8J8c2HOzibT+WQ2HR82ltzHPlMtyBWU9EXu3uq+3Ju82Jc37JHFMlo3U2cye7EdBo3iy4Xcg5n+U+3GOEiz2oZf7TI597KrYkdvojBkSWtZXXMbPOldto0S\/e8sf1Y7Wu3NIg0ZKWneth4p65G2epO3r2eX9ey2euTt643KeqOWetZfML9xWW\/cUs8evn29SVlv0lbvL9gv07LetKf1m5X1Zp16DorHsHAWQR4sF4LvDaEfoaJq8cQeCulXwfxsCh0U0a+8HXRxmJucsiqnXmrybzUi88pfZxI\/Li1iLQaPqkf5j2zr0Bt5pTc5rdc7K+T7\/sZI0dis0Rg5NKaDrg5Bg5I4QCiQayAuEA+IXycNWew+ZbGLLuYNWewTWQ5BB1mAUCDXQFwgHhC\/ThqyjPqUZaS7UGlrsoxOZGkJmo2bMU5ropMgWgbZjaBJM+i6JROZNmPc1monQV5L0PSkI78lZjRtf4rHr71hxm\/9fhkXjVmNGc5OFqY1aH6yMm1B9vBkZcqgkQ5KCtFPtLpuTWSdrExr0Mnrx2sLGp5Mzm8JGtvtSzPp85GZFH2Rw6N8BcQBQksyPr42IMYF4gHx66ShwbRPDaagARAHCJ2CBhDjAvGA+NMuDWZ9ajADDYA4QOgMNIAYF4gHxJ91aTDvU4M5aADEAULnoAHEuEA8IP68SwNr2KcIqtqJCogcRLRCNSEwykXkIfIbqCnGa9b47cWwUAxADiJaoboYEOUi8hD5DdQUo1cvbhEUA5CDiFaoLgZEuYg8RH4DNcXo1YFbNooByEFEK1QXA6JcRB4iv4GaYvTqu60RigHIQUQrVBcDolxEHiK\/gZpivGZ2316MMYoByEFEK1QXA6JcRB4iv4GaYvRqLy30l4gcRNRCi4lRLiIPkW912kyrV59podFE5CCiFnpNjHIReYh8q9NvWr0aTgsdJyIHEbXQdGKUi8hD5FudxtPq1XlaaD0ROYiohe4To1xEHiLf6nSgpFcHStCBInIQUYIOFKNcRB4in3Q6UNKrAyXoQBE5iChBB4pRLiIPkU86HSjp9\/8GowNF5CCiBB0oRrmIPEQ+6XSgpFcHStCBInIQUYIOFKNcRB4in3Q6UNKrAyXoQBE5iChBB4pRLiIPkU86HSjp1YESdKCIHESUoAPFKBeRh8gnnQ6U9OpACTpQRA4iStCBYpSLyEPkk04HSnp1oAQdKCIHESXoQDHKReQh8kmnAyW9OlCCDhSRg4gSdKAY5SLyEPmk04GSXh0oQQeKyEFECTpQjHIReYh80ulA7V4dqI0OFJGDiNroQDHKReQh8u1OB2r36kBtdKCIHETURgeKUS4iD5FvdzpQu1cHaqMDReQgojY6UIxyEXmIfLvTgdr9nkJAB4rIQURtdKAY5SLyEPl2pwO1e3WgNjpQRA4iaqMDxSgXkYfItzsdqN2rA7XRgSJyEFEbHShGuYg8RL7d6UDt1xzo259+sEv3N2kcI4DjOmXUtCYQIFqh2eFsw9oIVsGh5O2Xd3+nk3Mp5D8Wg7WqdHI44hqTuog8RH4DFXoOakfXtkzc60OxmVRil+TqpFiNlie9ybmv1+OU2+e+rfMe0ywXoUz8axBHYXGSv8prmadDRhDHfH8VB8lDtVmZEFzcFufu5OqlcsFSJoJcHdO+Y\/mescQ0UsG3qcx4ucuMkAnjJspyZuy\/\/XsTs8TgCq0FiwwWJbkI7o8\/+RzlKvHvO1knZmGkh9RJcSp4Svn+uHcUvFa9vGNZpo\/D1wZ+SdJdDgPFaWJvcq53df6cyrFYdqYWuzgFby1\/+GPH858evn1NdPF\/7lmUM7H+9nUj5N23r3dMFB0XgXIvVL+schC1Mw7Xi0FTUQByOVIhZfiQFmuxYYH6HCQ7tH0PZ\/EP5JYd3iEbLqIXnuRB7LBEdlw7Z\/koW45WODAoPix4F4j7SBaO9YH94Zk6KC2KJ7K4kYusT04WZ7f15UZ\/A6ACxpY1s6whsSeEDEfyv0DWnOflUFVBtrlLjTSQ++Q2emHFSeba2Xz9SUN5DtQqb6uXghxWKT4IXS+UO+DzhiUf5JzkxhORnJJWUS5kkIQyaSonfBcHq4fLJPxtE+XH5Q9FUPsiYSWfBIdv1XctmfqmIGloSNNIvb2HR\/GOZMXTSC2GPpReCOHqORthtF5LgZPcjUR2LHXAH8Lw+vH4+lsueBgWX1PIXVG7lpdFxuUPwTb96eZ9sNrEQZbJXl5YtNokUWb8589\/GXr0Uv\/56Vbt04J8NB7lk6sv3+u8ZbLFoN6tvD18VbT8L1BLBwgxo+09NgkAAJk0AABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABQAAAB4bC9zaGFyZWRTdHJpbmdzLnhtbK1bS3PcuBG+51egVJUtb9XMyJIf6\/Xa3pUsW1Jk2SpJtlK+gTMYEhkSnACgZM\/Jlb+w163diyunnJ2LTpl\/4l+SrwGSQ\/mRalo5aUTi0ejn143mg5\/fFLk4V9bp0jxc2xjdXBPKjMuJNunDtZenT4f31oTz0kxkXhr1cO2tcms\/P\/rTA+e8wFTjHq5l3s\/vr6+7caYK6UblXBm8mZa2kB7\/2nTdza2SE5cp5Yt8ffPmzbvrhdRmTYzLyviHa5v37qyJyui\/V+px\/WTz1tqjB04\/ehC2ue\/mcozdsY5T9lytPXoux1kunQPpC6XHmdFOfHz3q3hV2lym6sG6f\/Rgneb\/jzUOSueVyUunxJM3Y5UP68nivDTica6LRPzn3yItx\/RzNC6LdfP5rqydzsrp8tL+zBr7urJ0CgfGqftiT+ZeialyfiAupBMTpY0SWyZV2fKD1akyQhfiiTXOT2WeiwvtHJ4Vy0v6OwhHOSgNzimWl4nC0sp6u3yPUyZg2aISE51qL3MMeF2ly\/dY2YxYhJIIBJFTiNNyohztfx+kTMEgJWTu8DvRRuCdpZ8KxBvRCE4U2outmdfnciCO8CD8wDBaZhYkA5WYiBOolZlVgSxx4sF0L1NB7MQWuRJnOI8SGupI2wRCMIB3gpNSTCsDGkqjscx3cl66n3gS3RiJbZVqA2GA\/9u59B769\/uOGs8S+ufju9\/CCenIc5jX8oPJNR2FZCcTLo83R2JXZWIijYGglDjFVJzaJPnyvfc4MB36WOlMCdJNMansOBuJM2iKIVZBwN7q6RTak+RKJ17kStkRkXqF1URuYmU1zoiRlTBQQvMF+fKovjUSpxZSolV0JDwD2WBMBQY8VTlRjZUh0KooakEvf0vIDRHRspriYIVouSmsgrFhIL0XTuWJ8zxSbo\/EDrZPcTYlXisNjQFFf1O0fJQaqQ5ogTi1m2uVgyhMWCzfZ7mvmUiCJBJnJAawi8QY2MkV452R2DdBVifzYNDg\/+tKKJurCdkwsf+Cdozcl5ULjLfiGahT0fKjNhXiKNrGnExGWeJJyZXL3ZF4plIy+siAeinais6f451MxA3yFyVoWFTpQOxWHnrgyZcckxBgid8HZpjS0\/4grsRBRK5VypTJjsRyCBeVX\/DGa\/wSNEvHbYJiRSUJ6vm4LOaVJ72OXhuMyWrZueABcdjafVZ02uAAuRoUNHkW3C65qQu4XWwFn7X\/3EXfdrr13EV1fh55QvQFvjjSpEpMtZkE5TUT5p56Pr9PKhPiEthNph4Z8F3qf8KbGF7huLBueLQFB6u9K+R8rgSYu7z0i+bdIVTnQBlzUVofgj1ccAgQOVN\/oTUKR2CN3astXTwUmY527sFCZVizd2GoYlbBEZxjgcYmF2S4g8+Mkh2mviVmH3W8duO0WRNfwR6dRyQl07YIeAWPcbsqqax3E+mrgqcldbATN77mrr9nrbNFxogo4cU6woNfeDpv\/Yi1wBMLP5JDMmRr6xFikKt3FPlKHtdO4X6mzLFnZfADKoaWl2QdhNsMD2C1IIJsN8AH5jSgYHFjh8TD4+sqorGGHwNPgI+Wx\/LaizFppzDL04WAyESqnCx4ZNfYrZ4ibgCwVfmkDupXQAaPay1ANMr7kne8FUYMQo1KbMTGTfEXmVneyZ8hoJCTEwd1gLWlOCyN5HGhSwId\/FWUvLJ45FxEOcF94W+DzAI4jAwfiS+hafA097WWR5wri54Q94z2gh8KSYCcMXUdmwVYcTW30CHqEFIWF8pOCBLQUfE7IiNgvCnXCHfALbCgaF28kOb+Z55jgPynctIuyDXRz+V7\/NZ4HsNdqhIKxSdeVQoPLGzTALMgDEuLGeFvGG0uALvwBD+W7\/OwwrY0s84UsD+Rlud\/jsEaHiPZzv\/J8FDqPOKJrQkeO6akSgsmzpaX0DDIJeDjScBLR4GDPGlsGcwm7eUFuG\/x7ycyIQh1WLFd3M2NHzbExuat23fu\/sCa4MIWv6g3spjnasTFK9IHA2ty7nMIt5Bcp92qLxUfvgmf7JSzCt4Bxv0d6P6JbADZbRpcyTdEwxcW+bxBPh884UVt\/gbYdU7Q9GeByCFOyYPQpqKo4GkzRLY63hPciVpogvEgrAPdW1pGQb0Cyt0jWJeRHa2SxbpCgVTA9UoFvugGWvIGn0uFigUA2VTROG85BWtW3qqKnG336QubStJSuHU4jwvsMajtQubtA6TPTlE6hWQnQrCKbGECwLmnNBzE6v\/jsG\/VAo7G9XSfvFZVajTXfhvp88y0coiyXaiV6bAz5UTwh9wIr0xAwopWeE6xiWeQtaJB5sikGj3jOZg9bYjZsW7TqV4xoWGtDrzzFR5cChpbexvMnvDm7r8ih7O+eZtr+4XobreSBrP+CI2nEPvCTijZr1O4hWZLpK7sRcdxIIEQmFmWtuUszB1QRcI2vw+smmg\/CwuF2L6tFjLL4VeAAdQISWRIg5H5DmLWGzxFJy1eZXux7rK\/vfU8DiLf1OCyc3IgJz5UsoSNqngdf9EcpwRV2BvyyCf1\/3S6pBpnZNsFiIObk1Pv6red85JfeXskc6bkYyrJjZiENQL6SLTihr8V60I9xvSwU0ICNz7+4188wP2qca2g8FADG2VIdXk7dWtYvRSPietJNUM1ua8hf3z3T0IOrLG19X189zuJ6eO73wbfaIllG6Sin+sPeZCC5MsPjstMqLk0Iew02KGOlkxbmpfeERCu8A6P6osBHD8nZp\/Xi5GZvJ37MjiEpyWAvw3gZEA1\/lIQFYMQEoAiqPjl6gTwOhZNKjwPiGVCVF4lUiKyP0VMSMPOkbjhGd0GYOCxpghphyFU418Iopo3\/xFK0CqpazqfnPLIIhEDDDtuwEWbwMF5lPkE5vFkovJCedpqIHYkVJ+CqDT10Rs4EDTVe6536OUWgtSGbZUldT0cw+sKcCilVCqGY7Y36YiCNSeqfAJz4p9JAObf4w+n+jRgXjd+riy4p9\/7dmsN91r11VqPKme3OsCccigNKe3VmYKic7wCXBUNwJlBa4s4I0XcVCFFpIJkk7pfxzifIes27qqBHGunZ2X+hTcnpAmKbPXq8wMLWX1qZ0dToCd19dkeAvZ8SjbrYz0AkHwgzsoMHEiW7ysC5gfTxfDVlVnb+Dt1lZkiJ9PpDO58IF4aYtAnhCu6JYi3EQDvMjOLyknmzUR3S6bLdkA9EYT03qGPqX9ef+qBCFZAH6DtqATrFQ\/mAxdVqYMtqJB2+p6upiPpHm7mik2IrV3eVq+Gt2\/fuXP3bk+IcNX+uK7m47tfWeNqI2Un\/uFONIb+\/aIoEw2x8eY+oV18VQwA+ZSvw2qI8BTcXLwtk7GcSvsQazPqDrhWYk97XcTVBqIhwbVP9oLr2gVvJ84vL8cz8h62BJG7Ei\/OCAragdinLMsoX5+coAD+W8T5OArV+rgG+SL5m5r5iLPriMqL2bFG1xfUh7NRPhKvtdfFARUWTA\/DPmnv7sLe1FozzoCMwALeAh0Z9DAyB84s\/1BiYxBLcr0R+WFg0vC5HYkfmHG+q5lXonxUfK7xPbHkz1d3nlQpCXpd13w1O2a3+DgpXa18SJhSGN0kunSm8bVXDZ01ydW6Emk2ArQmr0a4WsSLk+uY3B6QwNsWNsOclCw0GdtrbFMFNHgoU7mgkvhTDS1yzvlqopEdgzoVqueVL4NzGedVAtyrKk\/cxMJej2eK1HgbcfOxtIDjx1BoaqqhBCpuWU79hbRqCK5RPk4HN8MdCZwMNrANro9xRqP6RpD86fVPj7j5rEw11dQOohun0HuheCR3xdQn9h2SXIjfvLNNRsECf\/zx3j1eTT3eSwypU2QKc+Ht0h4\/mK3JgauHUSbz0npmjSXcWfa8hdupe9ls22bW45CkqmMtc3GoJloOxOO8rCZUN4KFIi2k2Fif5SQr567ucQo9Dp+1h3y5HYScTp2DrbpCNBXOr5gtmBaWAq9AmJHURUDdP1iO8OsirHAdn1AL9aAukRWIHvOsNPBCTScNlPiZRFo9H3xGSs2YISw5ACH4h\/k8V8P9HUzaLcsUv+uVzzLpHd5SyKYrSysRyp+CxKQsEdufaSQAk33yMIVc0G2f2pZvMU0lDi4Qy+2U1CfKL8DEOB4lxm0tAmVMbGuQIgB4yIJIizzkwummP7GW\/qpQzMPVXYHxcMbhX1njCvlmVARP8ktavOFemX2uEldUs5tP86RADWEi4upYd6YqGFWF2RUKJ2n4gNpFEY6XfyDto9UaiCgzu1AVszBG3ZOxJy5UUqHEUa\/gy1NFka8MPbaa20H2ZSOkUoVrqJVUoT7FjNLGeAtcXvrSWkllJyIfv8Lpiopg8csM4+BSyXecyKLIY84rLeXZzEw0JdVH2GFmQDHMMwNNvFWiUAhwW182Ma2MCgDkSZq+w\/6ouE\/K+akUuJWjmaPqVm8U\/JS6PDY2NtmHauj6Ig7uU+3qcEjXrajjzFJLsMb5qf6BlIRp\/22LT3tjXWft\/HJWvHlRhDmNNAvdFLTCpRPcR9oAapGGGivFv9DxCZjcqbldxwCPyevMAh2hvjztUAKUi5Fl87ZzTyRulFOA9+8RvpR0AUnXhWPXVoQH3SM0RWHqz6NyXbyYpjVU21HLRcDwqBNiNJWzeFaeL99XCfUh9gHZfeAyldSpBZENkreSVbGmn612BNZDxwLgvXXrNu8yKM65trUdK+fjPUi32ijOS0u9FkwbmdvlJdREEI7llnW6\/XY90p2Yf4avB0JX2qqarIwPUaLpXw7d8QVBV2uufNBBH0RcULdd\/C6jUW26H6mmcVosPUd4UBtyfR8bLCQYf\/tyK7H1EnX\/86EOlWTyCPFTheuFX9Xc0VDgpWx0qjRBmV0rE9AT8mGLzD4rp44KzZc4mmnGSgpqlLbHI4TRbZsC9l1+mE5jTYsgRLrqoa9raa6+6ePafpQS\/A9T+2rGnTObs5oJteET8mZ3Ia+KxZgYwje7ViyztpGljx84geAqZnhXvW7iVsNdRh9h9LgManm+eXPz7vDm7Y2eheXGjLge5pwuLZ2HjcwiD\/vfXyVRAqyxL2PNNSvaqA\/Hr3SuezSqhYKvQsS3haSeTB8+xwnQekpIhG5s4tXsKfK3eGlzrTQ37OdEh3aYd5HsDeu9KTRrclads5DVf4UWbjxsluIhQuIG85qYVg6NsPC+ubN9+sVXTfLMvfoXlruc7VPConms8Zt3xJ8HYu94O5age1+4uU5Yj7kWswzt084q4SvDoo+ddXvDFxVdny6oxMv9IGb5YfkHVZG+1uW+UJmJfe4xys6WH4xRMTgfRVweFEfZbPkhqzF2UwP\/NAQDZ9dt6tdqyEIWGlJlvB2srqaa1HbVUqDanBZ6HUJlTEvp6xk16Fqukz00q2UVU9mBTLh96xQXm\/Spxx7k3vn3oD2CYZfVrAkr5RU3ToBGeKh9487o5p0RYhsvrnU+IRSHUgv2xEVlxV6JTInrb8+Wl9TU13RPn9AVCvz+N3zj1awU7xFj5faTC9F4QWO0KuhboAvKp736\/6BQd1HR7p+A0ZaS2Lfc0krqZGNHRH2jEqfzNIA+1Gcnd\/T1MM9P0le0Z3wy2rPxNEr6BdCNLnhdzvvFfEo93U2x42B5SSbSr85Bu8XvYOC2v4Kv1qECj\/4LUEsHCAU1qu+IEAAAR0EAAFBLAwQUAAgICABJNDVdAAAAAAAAAAAAAAAACwAAAF9yZWxzLy5yZWxzrZLBTsMwDIbve4oq9zXdQAihprtMSLshNB7AJG4btYmjxIPy9kQTEgyNssOOcX5\/\/mKl3kxuLN4wJkteiVVZiQK9JmN9p8TL\/nF5LzbNon7GEThHUm9DKnKPT0r0zOFByqR7dJBKCujzTUvRAedj7GQAPUCHcl1VdzL+ZIjmhFnsjBJxZ1ai2H8EvIRNbWs1bkkfHHo+M+JXIpMhdshKTKN8pzi8Eg1lhgp53mV9ucvf75QOGQwwSE0RlyHm7sgW07eOIf2Uy+mYmBO6ueZycGL0Bs28EoQwZ3R7TSN9SEzunxUdM19Ki1qe\/MvmE1BLBwiFmjSa7gAAAM4CAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABEAAABkb2NQcm9wcy9jb3JlLnhtbJ1Sy26DMBC89yuQ72AgFWoROFJb5dRIlZKoVW+u2RC32Fi2E8Lf1yaBvnLqbXdmPPtyMT+KJjiANryVJUqiGAUgWVtxWZdos16ENygwlsqKNq2EEvVg0JxcFUzlrNXwpFsF2nIwgTOSJmeqRDtrVY6xYTsQ1EROIR25bbWg1qW6xoqyD1oDTuM4wwIsrail2BuGanJEZ8uKTZZqr5vBoGIYGhAgrcFJlOAvrQUtzMUHA\/NNKbjtFVyUjuSkPho+Cbuui7rZIHX9J\/hl+bgaRg259KtigEhxbiRnGqiFKnAG+ancyDzP7h\/WC0TSOM3C+DZMk3Wc5bPrPMleC\/zrvTc8xa0mfqGqPzZeNYFeUIFhmivrbkkG8gfg8obKeu8WT0CGm9UgmSB\/0oYau3TH33Ko7nrncQEbOxNn7N+jjQZDZQ0H7v8giYeiU+q7Nvu3d2D2NNKUuNhy28AJHsM\/\/5J8AlBLBwgEbfIZYgEAAOMCAABQSwMEFAAICAgASTQ1XQAAAAAAAAAAAAAAABAAAABkb2NQcm9wcy9hcHAueG1snZDBbsIwDIbve4oq4tomRB1DKA3aNO2EtB06tFuVJS5kapOocVF5+wXQgPN8sn9bn+1frKe+yw4wROtdReYFIxk47Y11u4p81m\/5kmQRlTOq8w4qcoRI1vJBfAw+wIAWYpYILlZkjxhWlEa9h17FIrVd6rR+6BWmcthR37ZWw6vXYw8OKWdsQWFCcAZMHq5AciGuDvhfqPH6dF\/c1seQeFLU0IdOIUhBb2ntUXW17UGyJF8L8RxCZ7XC5Ijc2O8B3s8rKC8LXjwVfLaxbpyar+WiWZTZ3USTfvgBjbTkbPYy2s7kXNB73Im9vZgt548FS3Ee+NMEvfkqfwFQSwcIXpYBj\/sAAACcAQAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAATAAAAZG9jUHJvcHMvY3VzdG9tLnhtbJ3OsQrCMBSF4d2nCNnbVAeR0rSLODtU95DetgFzb8hNi317I4LujocfPk7TPf1DrBDZEWq5LyspAC0NDictb\/2lOEnByeBgHoSg5QYsu3bXXCMFiMkBiywgazmnFGql2M7gDZc5Yy4jRW9SnnFSNI7Owpns4gGTOlTVUdmFE\/kifDn58eo1\/UsOZN\/v+N5vIXtto35n2xdQSwcI4dYAgJcAAADxAAAAUEsDBBQACAgIAEk0NV0AAAAAAAAAAAAAAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbM2XTVPCMBCG7\/6KTq8OTYOK6FA4+HFUZsSzE9ttG2mTTBIQ\/r3bVhlEPmRgNJdmms2777Ppx2x6g1lZeFPQhksR+TQIfQ9ELBMussh\/Ht23uv6gf9IbzRUYD9cKE\/m5teqaEBPnUDITSAUCI6nUJbN4qzOiWDxmGZB2GHZILIUFYVu2yuH3e7eQsklhvbsZTje+KPe9m2ZdZRX5TKmCx8ximFRRslanoTBbhFORrNC1PskCVNZrTM6VOd3soES2YsDLqrJqfr3iTcF6SR1AzSNut+YJeEOm7QMrcQGZFeSlKoa8Sz1+lXIcIFJw5PI2GC9b7ucm05THkMh4UqIkMEoDS0wOYBG+HoOScbHD3+JrBM2VHsxQp9lhaOy8AHPscuukv9jqWmBIPdDDC\/5OsTDYE6TjCAd1BiR0BOTCEQ7qCsi5IxyufLptRzjOHOGgrmzIpSMc1JUn03WEg7ryC7n6Jw6TMw3Jk9XY5R+9D1rOvY2j6Xf\/osdF0qGWyuBJRMP+5X75VeqWwkSgLd\/e6i0cMfXB+wvV2SKBZF\/veGKsLA+2b9L8ND\/pkfpU2P8AUEsHCK6tPiyvAQAARA4AAFBLAQIUABQACAgIAEk0NV3BdY+5QQEAAP0KAAAaAAAAAAAAAAAAAAAAAAAAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc1BLAQIUABQACAgIAEk0NV0eGg6csAMAAEkPAAAPAAAAAAAAAAAAAAAAAIkBAAB4bC93b3JrYm9vay54bWxQSwECFAAUAAgICABJNDVdO6HfCvQCAAACDQAAEwAAAAAAAAAAAAAAAAB2BQAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUABQACAgIAEk0NV1Fs4mAIQYAAB9QAAANAAAAAAAAAAAAAAAAAKsIAAB4bC9zdHlsZXMueG1sUEsBAhQAFAAICAgASTQ1Xea701ZOCQAArTQAABkAAAAAAAAAAAAAAAAABw8AAHhsL3dvcmtzaGVldHMvc2hlZXQxMS54bWxQSwECFAAUAAgICABJNDVdvMCAAlMJAACqNAAAGAAAAAAAAAAAAAAAAACcGAAAeGwvd29ya3NoZWV0cy9zaGVldDYueG1sUEsBAhQAFAAICAgASTQ1Xc5R1DH1BgAAhSgAABkAAAAAAAAAAAAAAAAANSIAAHhsL3dvcmtzaGVldHMvc2hlZXQxNi54bWxQSwECFAAUAAgICABJNDVdhtY1QDEIAABaLQAAGQAAAAAAAAAAAAAAAABxKQAAeGwvd29ya3NoZWV0cy9zaGVldDEwLnhtbFBLAQIUABQACAgIAEk0NV3uBSMCQwkAAJc0AAAYAAAAAAAAAAAAAAAAAOkxAAB4bC93b3Jrc2hlZXRzL3NoZWV0NS54bWxQSwECFAAUAAgICABJNDVd9qO5xg4IAADnLwAAGQAAAAAAAAAAAAAAAAByOwAAeGwvd29ya3NoZWV0cy9zaGVldDE1LnhtbFBLAQIUABQACAgIAEk0NV0WhE79QgcAAIkrAAAYAAAAAAAAAAAAAAAAAMdDAAB4bC93b3Jrc2hlZXRzL3NoZWV0NC54bWxQSwECFAAUAAgICABJNDVd569kQKcEAACAFQAAGAAAAAAAAAAAAAAAAABPSwAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sUEsBAhQAFAAICAgASTQ1XUUqz3GKCAAAOC8AABgAAAAAAAAAAAAAAAAAPFAAAHhsL3dvcmtzaGVldHMvc2hlZXQyLnhtbFBLAQIUABQACAgIAEk0NV0yzi1eQQcAAIkrAAAYAAAAAAAAAAAAAAAAAAxZAAB4bC93b3Jrc2hlZXRzL3NoZWV0My54bWxQSwECFAAUAAgICABJNDVdOVXg9EEJAACcNAAAGQAAAAAAAAAAAAAAAACTYAAAeGwvd29ya3NoZWV0cy9zaGVldDEyLnhtbFBLAQIUABQACAgIAEk0NV0EDhau+ggAAEczAAAYAAAAAAAAAAAAAAAAABtqAAB4bC93b3Jrc2hlZXRzL3NoZWV0Ny54bWxQSwECFAAUAAgICABJNDVdqZbdQzYJAACcNAAAGQAAAAAAAAAAAAAAAABbcwAAeGwvd29ya3NoZWV0cy9zaGVldDEzLnhtbFBLAQIUABQACAgIAEk0NV3mvS4URwkAAJ00AAAYAAAAAAAAAAAAAAAAANh8AAB4bC93b3Jrc2hlZXRzL3NoZWV0OC54bWxQSwECFAAUAAgICABJNDVdo8rwaUYJAACpNAAAGQAAAAAAAAAAAAAAAABlhgAAeGwvd29ya3NoZWV0cy9zaGVldDE0LnhtbFBLAQIUABQACAgIAEk0NV0xo+09NgkAAJk0AAAYAAAAAAAAAAAAAAAAAPKPAAB4bC93b3Jrc2hlZXRzL3NoZWV0OS54bWxQSwECFAAUAAgICABJNDVdBTWq74gQAABHQQAAFAAAAAAAAAAAAAAAAABumQAAeGwvc2hhcmVkU3RyaW5ncy54bWxQSwECFAAUAAgICABJNDVdhZo0mu4AAADOAgAACwAAAAAAAAAAAAAAAAA4qgAAX3JlbHMvLnJlbHNQSwECFAAUAAgICABJNDVdBG3yGWIBAADjAgAAEQAAAAAAAAAAAAAAAABfqwAAZG9jUHJvcHMvY29yZS54bWxQSwECFAAUAAgICABJNDVdXpYBj\/sAAACcAQAAEAAAAAAAAAAAAAAAAAAArQAAZG9jUHJvcHMvYXBwLnhtbFBLAQIUABQACAgIAEk0NV3h1gCAlwAAAPEAAAATAAAAAAAAAAAAAAAAADmuAABkb2NQcm9wcy9jdXN0b20ueG1sUEsBAhQAFAAICAgASTQ1Xa6tPiyvAQAARA4AABMAAAAAAAAAAAAAAAAAEa8AAFtDb250ZW50X1R5cGVzXS54bWxQSwUGAAAAABoAGgDiBgAAAbEAAAAA\";\nconst STATIC_FILES = true;\nconst AMP = String.fromCharCode(38);\nconst APP_URL = \"https:\/\/goclimb.com\/?utm_source=nachlassverzeichnis\" + AMP + \"utm_medium=tool\" + AMP + \"utm_campaign=nachlassverzeichnis\";\n<\/script>\n<script>\n(function(){var t=new TextDecoder().decode(Uint8Array.from(atob(\"CihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7Cgpjb25zdCBGID0gKGxhYmVsLCBzaG9ydCwgcGgpID0+ICh7bGFiZWwsIHNob3J0OiBzaG9ydCB8fCAiIiwgcGg6IHBoIHx8ICIifSk7Cgpjb25zdCBDQVRTID0gWwogIHsgaWQ6ImtvbnRha3RlIiwgc2hvcnQ6IktvbnRha3RlIiwgbmFtZToiV2ljaHRpZ2UgS29udGFrdGUiLCBjb2xvcjoiI0E5RDRGRiIsIHBkZjoiIzRGOUJFNiIsIGtpbmQ6Im5vbmUiLAogICAgaW50cm86IldlciBzb2xsIGltIEVybnN0ZmFsbCBpbmZvcm1pZXJ0IHdlcmRlbiwgdW5kIHdlciBrYW5uIGhlbGZlbj8iLAogICAgcXVpY2s6WyJWZXJ0cmF1ZW5zcGVyc29uIiwiSGF1c2FyenQgLyBIYXVzw6RyenRpbiIsIkFyYmVpdGdlYmVyIiwiU3RldWVyYmVyYXR1bmciLCJOb3RhciAvIE5vdGFyaW4iLCJBbndhbHQgLyBBbnfDpGx0aW4iLCJCYW5rYmVyYXR1bmciLCJOYWNoYmFybiJdLAogICAgZmllbGRzOnsgdGl0bGU6RigiUm9sbGUiLCIiLCJ6LiBCLiBWZXJ0cmF1ZW5zcGVyc29uIiksIHByb3ZpZGVyOkYoIk5hbWUiLCJOYW1lIiwiVm9yLSB1bmQgTmFjaG5hbWUiKSwKICAgICAgcmVmOkYoIlRlbGVmb24iLCJUZWwuIiwiIiksIGRvY3M6RigiRS1NYWlsIG9kZXIgQWRyZXNzZSIsIktvbnRha3QiLCIiKSwKICAgICAgYWNjZXNzOkYoIldvcnVtIGvDvG1tZXJ0IHNpY2ggZGllc2UgUGVyc29uPyIsIkF1ZmdhYmUiLCJ6LiBCLiBoYXQgZGllIFZvcnNvcmdldm9sbG1hY2h0LCBoYXQgZWluZW4gV29obnVuZ3NzY2hsw7xzc2VsIikgfSwKICAgIGFjdGlvbnM6bnVsbCB9LAogIHsgaWQ6ImRva3VtZW50ZSIsIHNob3J0OiJEb2t1bWVudGUiLCBuYW1lOiJEb2t1bWVudGUgJiBWZXJmw7xndW5nZW4iLCBjb2xvcjoiI0M5QjZGRiIsIHBkZjoiIzhFNzJFMCIsIGtpbmQ6Im5vbmUiLAogICAgaW50cm86IldvIGxpZWdlbiBkaWUgT3JpZ2luYWxlIGRlciB3aWNodGlnZW4gUGFwaWVyZT8iLAogICAgaGludDoiRWluIFRlc3RhbWVudCBtdXNzIGhhbmRzY2hyaWZ0bGljaCBvZGVyIG5vdGFyaWVsbCBlcnJpY2h0ZXQgc2Vpbi4gSGllciBow6RsdHN0IGR1IG51ciBmZXN0LCB3byBlcyBsaWVndC4iLAogICAgdGlwczpbCiAgICAgIFsiVGVzdGFtZW50IHNpY2hlciB2ZXJ3YWhyZW46IiwgIkJlaW0gQW10c2dlcmljaHQgaGludGVybGVndGUgVGVzdGFtZW50ZSB3ZXJkZW4gaW0gWmVudHJhbGVuIFRlc3RhbWVudHNyZWdpc3RlciBlcmZhc3N0IHVuZCBpbSBUb2Rlc2ZhbGwgZ2VmdW5kZW4uIl0sCiAgICAgIFsiVm9yc29yZ2V2b2xsbWFjaHQgcmVnaXN0cmllcmVuOiIsICJJbSBaZW50cmFsZW4gVm9yc29yZ2VyZWdpc3RlciBkZXIgQnVuZGVzbm90YXJrYW1tZXIgZWluZ2V0cmFnZW4sIGZpbmRlbiBHZXJpY2h0ZSBzaWUgaW0gRXJuc3RmYWxsIHNjaG5lbGwuIl0sCiAgICAgIFsiT3JpZ2luYWxlIHrDpGhsZW46IiwgIk5vdGllcmUsIHdvIGRhcyBPcmlnaW5hbCBsaWVndC4gRWluZSBLb3BpZSByZWljaHQgaW0gRXJuc3RmYWxsIG9mdCBuaWNodC4iXQogICAgXSwKICAgIHF1aWNrOlsiVGVzdGFtZW50IiwiVm9yc29yZ2V2b2xsbWFjaHQiLCJQYXRpZW50ZW52ZXJmw7xndW5nIiwiQmV0cmV1dW5nc3ZlcmbDvGd1bmciLCJPcmdhbnNwZW5kZWF1c3dlaXMiLCJQZXJzb25hbGF1c3dlaXMiLCJSZWlzZXBhc3MiLCJHZWJ1cnRzdXJrdW5kZSIsIkhlaXJhdHN1cmt1bmRlIiwiUmVudGVudW50ZXJsYWdlbiIsIlN0ZXVlcnVudGVybGFnZW4iLCJaZXVnbmlzc2UiXSwKICAgIGZpZWxkczp7IHRpdGxlOkYoIkRva3VtZW50IiwiIiwiei4gQi4gVGVzdGFtZW50IiksIHByb3ZpZGVyOkYoIkF1c2dlc3RlbGx0IHZvbiAvIGhpbnRlcmxlZ3QgYmVpIiwiU3RlbGxlIiwiei4gQi4gQW10c2dlcmljaHQsIE5vdGFyIiksCiAgICAgIHJlZjpGKCJBa3RlbnplaWNoZW4gLyBOdW1tZXIiLCJOci4iLCIiKSwgZG9jczpGKCJXbyBsaWVndCBkYXMgT3JpZ2luYWw\/IiwiT3J0Iiwiei4gQi4gT3JkbmVyIGltIEFyYmVpdHN6aW1tZXIsIG9iZXJzdGVzIEZhY2giKSwKICAgICAgYWNjZXNzOkYoIkhpbndlaXMgZsO8ciBBbmdlaMO2cmlnZSIsIkhpbndlaXMiLCIiKSB9LAogICAgYWN0aW9uczpudWxsIH0sCiAgeyBpZDoia29udGVuIiwgc2hvcnQ6IktvbnRlbiAmIEthcnRlbiIsIG5hbWU6IktvbnRlbiAmIEthcnRlbiIsIGNvbG9yOiIjN0ZFM0I0IiwgcGRmOiIjMkZCNTdFIiwga2luZDoiYXNzZXQiLAogICAgaW50cm86Ikdpcm9rb250ZW4sIFNwYXJrb250ZW4sIEtyZWRpdGthcnRlbiB1bmQgQmV6YWhsZGllbnN0ZS4iLAogICAgaGludDoiS2VpbmUgUElOcywgVEFOcyBvZGVyIFBhc3N3w7ZydGVyIGVpbnRyYWdlbi4gRGllIElCQU4gb2RlciBkaWUgbGV0enRlbiB2aWVyIFN0ZWxsZW4gcmVpY2hlbi4iLAogICAgdGlwczpbCiAgICAgIFsiVm9sbG1hY2h0IMO8YmVyIGRlbiBUb2QgaGluYXVzOiIsICJFaW5lIEtvbnRvdm9sbG1hY2h0LCBkaWUgYXVzZHLDvGNrbGljaCDDvGJlciBkZW4gVG9kIGhpbmF1cyBnaWx0LCBlcmxlaWNodGVydCBBbmdlaMO2cmlnZW4gZGVuIFp1Z3JpZmYuIFZpZWxlIEJhbmtlbiB2ZXJsYW5nZW4gZGFmw7xyIGlociBlaWdlbmVzIEZvcm11bGFyLiJdLAogICAgICBbIkdlbWVpbnNjaGFmdHNrb250bzoiLCAiS2zDpHJlIGJlaSBkZXIgQmFuaywgb2IgTWl0aW5oYWJlciBhbGxlaW4gdmVyZsO8Z2VuIGTDvHJmZW4uIl0KICAgIF0sCiAgICBxdWljazpbIkdpcm9rb250byIsIlRhZ2VzZ2VsZGtvbnRvIiwiU3BhcmJ1Y2giLCJHZW1laW5zY2hhZnRza29udG8iLCJLcmVkaXRrYXJ0ZSIsIlBheVBhbCJdLAogICAgZmllbGRzOnsgdGl0bGU6RigiQmV6ZWljaG51bmciLCIiLCJ6LiBCLiBHaXJva29udG8iKSwgcHJvdmlkZXI6RigiQmFuayAvIEFuYmlldGVyIiwiQmFuayIsInouIEIuIFNwYXJrYXNzZSBIZWlkZWxiZXJnIiksCiAgICAgIHJlZjpGKCJJQkFOIG9kZXIgS29udG9udW1tZXIiLCJJQkFOIiwib2RlciBudXIgZGllIGxldHp0ZW4gNCBTdGVsbGVuIiksIHZhbHVlOkYoIktvbnRvc3RhbmQgKGNhLikiLCIiLCIwLDAwIiksCiAgICAgIGRvY3M6RigiV28gbGllZ2VuIGRpZSBVbnRlcmxhZ2VuPyIsIlVudGVybGFnZW4iLCIiKSwgYWNjZXNzOkYoIlZvbGxtYWNodCAvIE1pdGluaGFiZXIiLCJWb2xsbWFjaHQiLCJ6LiBCLiBLb250b3ZvbGxtYWNodCBmw7xyIOKApiIpIH0sCiAgICBhY3Rpb25zOlsiYXVmbMO2c2VuIiwid2VpdGVyZsO8aHJlbiIsImF1ZiBFcmJlbiDDvGJlcnRyYWdlbiJdIH0sCiAgeyBpZDoiYW5sYWdlbiIsIHNob3J0OiJHZWxkYW5sYWdlbiIsIG5hbWU6IkdlbGRhbmxhZ2VuICYgVm9yc29yZ2UiLCBjb2xvcjoiIzVFRDZDQyIsIHBkZjoiIzFGQTM5QiIsIGtpbmQ6ImFzc2V0IiwKICAgIGludHJvOiJEZXBvdHMsIEJhdXNwYXJ2ZXJ0csOkZ2UsIEFsdGVyc3ZvcnNvcmdlLCBLcnlwdG8gdW5kIEZvcmRlcnVuZ2VuLCBhbHNvIEdlbGQsIGRhcyBhbmRlcmUgc2NodWxkZW4uIiwKICAgIHF1aWNrOlsiV2VydHBhcGllcmRlcG90IiwiQmF1c3BhcnZlcnRyYWciLCJGZXN0Z2VsZCIsIktyeXB0by1XYWxsZXQiLCJSaWVzdGVyLVJlbnRlIiwiUsO8cnVwLVJlbnRlIiwiQmV0cmllYmxpY2hlIEFsdGVyc3ZvcnNvcmdlIiwiUHJpdmF0ZSBSZW50ZW52ZXJzaWNoZXJ1bmciLCJHb2xkIC8gRWRlbG1ldGFsbGUiLCJEYXJsZWhlbiBhbiBhbmRlcmUiLCJTdGV1ZXJlcnN0YXR0dW5nIl0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJCZXplaWNobnVuZyIsIiIsInouIEIuIFdlcnRwYXBpZXJkZXBvdCIpLCBwcm92aWRlcjpGKCJBbmJpZXRlciIsIkFuYmlldGVyIiwiIiksCiAgICAgIHJlZjpGKCJEZXBvdC0gLyBWZXJ0cmFnc251bW1lciIsIk5yLiIsIiIpLCB2YWx1ZTpGKCJXZXJ0IChjYS4pIiwiIiwiMCwwMCIpLAogICAgICBkb2NzOkYoIldvIGxpZWdlbiBkaWUgVW50ZXJsYWdlbj8iLCJVbnRlcmxhZ2VuIiwiIiksIGFjY2VzczpGKCJadWdhbmcgLyBIaW53ZWlzIiwiWnVnYW5nIiwiei4gQi4gV2llZGVyaGVyc3RlbGx1bmdzc2NobMO8c3NlbCBsaWVndCBpbSBUcmVzb3IiKSB9LAogICAgYWN0aW9uczpbImF1ZmzDtnNlbiIsIndlaXRlcmbDvGhyZW4iLCJhdWYgRXJiZW4gw7xiZXJ0cmFnZW4iLCJwcsO8ZmVuIGxhc3NlbiJdIH0sCiAgeyBpZDoidmVyc2ljaGVydW5nZW4iLCBzaG9ydDoiVmVyc2ljaGVydW5nZW4iLCBuYW1lOiJWZXJzaWNoZXJ1bmdlbiIsIGNvbG9yOiIjOEZCOEZGIiwgcGRmOiIjNEE3OEQ5Iiwga2luZDoiaW5mbyIsCiAgICBpbnRybzoiTWFuY2hlIFZlcnNpY2hlcnVuZ2VuIHphaGxlbiBpbSBUb2Rlc2ZhbGwgYXVzLCBhbmRlcmUgc29sbHRlbiBnZWvDvG5kaWd0IHdlcmRlbi4iLAogICAgcXVpY2s6WyJMZWJlbnN2ZXJzaWNoZXJ1bmciLCJSaXNpa29sZWJlbnN2ZXJzaWNoZXJ1bmciLCJTdGVyYmVnZWxkdmVyc2ljaGVydW5nIiwiS3JhbmtlbnZlcnNpY2hlcnVuZyIsIlBmbGVnZXZlcnNpY2hlcnVuZyIsIkhhZnRwZmxpY2h0IiwiSGF1c3JhdCIsIldvaG5nZWLDpHVkZSIsIktmei1WZXJzaWNoZXJ1bmciLCJCZXJ1ZnN1bmbDpGhpZ2tlaXQiLCJVbmZhbGx2ZXJzaWNoZXJ1bmciLCJSZWNodHNzY2h1dHoiLCJaYWhuenVzYXR6Il0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJWZXJzaWNoZXJ1bmciLCIiLCJ6LiBCLiBIYWZ0cGZsaWNodCIpLCBwcm92aWRlcjpGKCJHZXNlbGxzY2hhZnQiLCJHZXNlbGxzY2hhZnQiLCIiKSwKICAgICAgcmVmOkYoIlZlcnNpY2hlcnVuZ3NudW1tZXIiLCJOci4iLCIiKSwgdmFsdWU6RigiVmVyc2ljaGVydW5nc3N1bW1lIiwiIiwib3B0aW9uYWwiKSwKICAgICAgZG9jczpGKCJXbyBsaWVndCBkaWUgUG9saWNlPyIsIlBvbGljZSIsIiIpLCBhY2Nlc3M6RigiQmV6dWdzYmVyZWNodGlndCAvIEhpbndlaXMiLCJCZXp1Z3NiZXJlY2h0aWd0Iiwiei4gQi4gRWhlcGFydG5lciwgS2luZGVyIikgfSwKICAgIGFjdGlvbnM6WyJrw7xuZGlnZW4iLCJMZWlzdHVuZyBiZWFudHJhZ2VuIiwid2VpdGVyZsO8aHJlbiIsInVtc2NocmVpYmVuIl0gfSwKICB7IGlkOiJ3b2huZW4iLCBzaG9ydDoiV29obmVuIiwgbmFtZToiV29obmVuICYgSW1tb2JpbGllbiIsIGNvbG9yOiIjRkZDNDZCIiwgcGRmOiIjRjJBOTNCIiwga2luZDoiYXNzZXQiLAogICAgaW50cm86IkVpZ2VudHVtLCBNaWV0dmVydHJhZyB1bmQgYWxsZXMsIHdhcyBhbiBkZXIgV29obnVuZyBow6RuZ3QuIiwKICAgIHF1aWNrOlsiTWlldHdvaG51bmciLCJFaWdlbnR1bXN3b2hudW5nIiwiSGF1cyIsIkdydW5kc3TDvGNrIiwiU3Ryb20iLCJHYXMiLCJXYXNzZXIiLCJJbnRlcm5ldCAmIEZlc3RuZXR6IiwiSGF1c3ZlcndhbHR1bmciXSwKICAgIGZpZWxkczp7IHRpdGxlOkYoIk9iamVrdCBvZGVyIFZlcnRyYWciLCIiLCJ6LiBCLiBNaWV0d29obnVuZyIpLCBwcm92aWRlcjpGKCJBZHJlc3NlIC8gQW5iaWV0ZXIiLCJBZHJlc3NlL0FuYmlldGVyIiwiIiksCiAgICAgIHJlZjpGKCJHcnVuZGJ1Y2hibGF0dCAvIEt1bmRlbm51bW1lciIsIk5yLiIsIiIpLCB2YWx1ZTpGKCJXZXJ0IChudXIgYmVpIEVpZ2VudHVtKSIsIiIsIjAsMDAiKSwKICAgICAgZG9jczpGKCJXbyBsaWVnZW4gZGllIFVudGVybGFnZW4\/IiwiVW50ZXJsYWdlbiIsIiIpLCBhY2Nlc3M6RigiU2NobMO8c3NlbCAvIEFuc3ByZWNocGFydG5lciIsIlNjaGzDvHNzZWwvS29udGFrdCIsInouIEIuIEVyc2F0enNjaGzDvHNzZWwgYmVpIGRlciBOYWNoYmFyaW4iKSB9LAogICAgYWN0aW9uczpbImvDvG5kaWdlbiIsIndlaXRlcmbDvGhyZW4iLCJ2ZXJrYXVmZW4iLCJhdWYgRXJiZW4gw7xiZXJ0cmFnZW4iXSB9LAogIHsgaWQ6InZlcnRyYWVnZSIsIHNob3J0OiJWZXJ0csOkZ2UgJiBBYm9zIiwgbmFtZToiVmVydHLDpGdlLCBBYm9zICYgTWl0Z2xpZWRzY2hhZnRlbiIsIGNvbG9yOiIjRkZEREE2IiwgcGRmOiIjRDlBNTVBIiwga2luZDoibW9udGhseSIsCiAgICBpbnRybzoiTGF1ZmVuZGUgVmVydHLDpGdlLCBkaWUgc29uc3Qgd2VpdGVyIEdlbGQga29zdGVuLiIsCiAgICBxdWljazpbIkhhbmR5dmVydHJhZyIsIlN0cmVhbWluZyIsIlplaXR1bmcgLyBNYWdhemluIiwiRml0bmVzc3N0dWRpbyIsIlZlcmVpbiIsIkF1dG9tb2JpbGNsdWIiLCJEZXV0c2NobGFuZHRpY2tldCAvIEJhaG5DYXJkIiwiUnVuZGZ1bmtiZWl0cmFnIiwiU29mdHdhcmUtQWJvIiwiU3BlbmRlbi1EYXVlcmF1ZnRyYWciXSwKICAgIGZpZWxkczp7IHRpdGxlOkYoIlZlcnRyYWciLCIiLCJ6LiBCLiBIYW5keXZlcnRyYWciKSwgcHJvdmlkZXI6RigiQW5iaWV0ZXIiLCJBbmJpZXRlciIsIiIpLAogICAgICByZWY6RigiS3VuZGVuLSAvIFZlcnRyYWdzbnVtbWVyIiwiTnIuIiwiIiksIHZhbHVlOkYoIktvc3RlbiBwcm8gTW9uYXQiLCIiLCIwLDAwIiksCiAgICAgIGRvY3M6RigiV28gbGllZ2VuIGRpZSBVbnRlcmxhZ2VuPyIsIlVudGVybGFnZW4iLCIiKSwgYWNjZXNzOkYoIkxvZ2luIC8gS8O8bmRpZ3VuZ3N3ZWciLCJadWdhbmciLCJ6LiBCLiBLw7xuZGlndW5nIG51ciBvbmxpbmUiKSB9LAogICAgYWN0aW9uczpbImvDvG5kaWdlbiIsIndlaXRlcmbDvGhyZW4iLCLDvGJlcnRyYWdlbiJdIH0sCiAgeyBpZDoiZGlnaXRhbCIsIHNob3J0OiJEaWdpdGFsZXMiLCBuYW1lOiJEaWdpdGFsZXIgTmFjaGxhc3MiLCBjb2xvcjoiIzZDQzJGRiIsIHBkZjoiIzJDN0NDMCIsIGtpbmQ6Im5vbmUiLAogICAgaW50cm86IkUtTWFpbCwgU29jaWFsIE1lZGlhLCBDbG91ZCwgR2Vyw6R0ZSB1bmQgT25saW5lLVNob3BzLiIsCiAgICBoaW50OiJUcmFnIGhpZXIga2VpbmUgUGFzc3fDtnJ0ZXIgZWluLiBOb3RpZXJlIG51ciwgd28gZGVyIFp1Z2FuZyB6dSBmaW5kZW4gaXN0LCB6dW0gQmVpc3BpZWwgaW0gUGFzc3dvcnQtTWFuYWdlciBtaXQgTm90ZmFsbHp1Z2FuZy4iLAogICAgdGlwczpbCiAgICAgIFsiRGlnaXRhbGUgS29udGVuIGdlaMO2cmVuIHp1bSBFcmJlLiIsICJEYXMgaGF0IGRlciBCdW5kZXNnZXJpY2h0c2hvZiAyMDE4IGVudHNjaGllZGVuLiBPaG5lIFp1Z2FuZ3NkYXRlbiBpc3QgZGVyIFdlZyBmw7xyIEFuZ2Vow7ZyaWdlIHRyb3R6ZGVtIGxhbmcuIl0sCiAgICAgIFsiQXBwbGU6IiwgIlVudGVyIEVpbnN0ZWxsdW5nZW4sIGRlaW4gTmFtZSwgQW5tZWxkZW4gJiBTaWNoZXJoZWl0LCBOYWNobGFzc2tvbnRha3Qga2FubnN0IGR1IGplbWFuZGVuIGZlc3RsZWdlbi4gRGVuIFp1Z3JpZmZzc2NobMO8c3NlbCBtdXNzdCBkdSBtaXQgZGVyIFBlcnNvbiB0ZWlsZW4uIl0sCiAgICAgIFsiR29vZ2xlOiIsICJNaXQgZGVtIEtvbnRvaW5ha3Rpdml0w6R0LU1hbmFnZXIgKG15YWNjb3VudC5nb29nbGUuY29tL2luYWN0aXZlKSBsZWdzdCBkdSBmZXN0LCB3ZXIgbmFjaCBlaW5lciBaZWl0IGRlciBJbmFrdGl2aXTDpHQgRGF0ZW4gYmVrb21tdCBvZGVyIG9iIGRhcyBLb250byBnZWzDtnNjaHQgd2lyZC4iXSwKICAgICAgWyJGYWNlYm9vazoiLCAiSW4gZGVuIEVpbnN0ZWxsdW5nZW4genVtIEdlZGVua3p1c3RhbmQga2FubnN0IGR1IGVpbmVuIE5hY2hsYXNza29udGFrdCBiZXN0aW1tZW4gb2RlciBkaWUgTMO2c2NodW5nIGZlc3RsZWdlbi4gQmVpIEluc3RhZ3JhbSBnZWh0IGRhcyBuaWNodCB2b3JhYiwgZG9ydCBzdGVsbGVuIEFuZ2Vow7ZyaWdlIGVpbmVuIEFudHJhZy4iXSwKICAgICAgWyJQYXNzd29ydC1NYW5hZ2VyOiIsICJWaWVsZSBiaWV0ZW4gZWluZW4gTm90ZmFsbHp1Z2FuZyBvZGVyIGVpbiBOb3RmYWxsLUtpdC4gRGFzIGlzdCBkZXIgc2ljaGVyc3RlIFdlZywgWnVnw6RuZ2Ugd2VpdGVyenVnZWJlbi4iXSwKICAgICAgWyJIYW5keToiLCAiT2huZSBFbnRzcGVycmNvZGUga29tbWVuIEFuZ2Vow7ZyaWdlIG9mdCBhbiBuaWNodHMgaGVyYW4sIGF1Y2ggbmljaHQgYW4gQ2hhdHMgdW5kIEZvdG9zLiBOb3RpZXJlLCB3byBkZXIgQ29kZSBoaW50ZXJsZWd0IGlzdCwgbmljaHQgZGVuIENvZGUgc2VsYnN0LiJdCiAgICBdLAogICAgcXVpY2s6WyJFLU1haWwtS29udG8iLCJTbWFydHBob25lIiwiQ29tcHV0ZXIgLyBMYXB0b3AiLCJQYXNzd29ydC1NYW5hZ2VyIiwiQ2xvdWQtU3BlaWNoZXIiLCJBcHBsZS1JRCAvIEdvb2dsZS1Lb250byIsIldoYXRzQXBwIiwiSW5zdGFncmFtIiwiRmFjZWJvb2siLCJMaW5rZWRJbiIsIkFtYXpvbiIsImVCYXkiLCJXZWJzaXRlIC8gRG9tYWluIl0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJLb250byBvZGVyIEdlcsOkdCIsIiIsInouIEIuIEUtTWFpbC1Lb250byIpLCBwcm92aWRlcjpGKCJEaWVuc3QiLCJEaWVuc3QiLCJ6LiBCLiBHTVgsIEluc3RhZ3JhbSIpLAogICAgICByZWY6RigiQmVudXR6ZXJuYW1lIC8gRS1NYWlsIiwiTG9naW4iLCIiKSwKICAgICAgYWNjZXNzOkYoIldvIGlzdCBkZXIgWnVnYW5nIGhpbnRlcmxlZ3Q\/IiwiWnVnYW5nIiwiei4gQi4gUGFzc3dvcnQtTWFuYWdlciwgTm90ZmFsbHp1Z2FuZyBmw7xyIOKApiIpIH0sCiAgICBhY3Rpb25zOlsibMO2c2NoZW4iLCJpbiBHZWRlbmt6dXN0YW5kIHZlcnNldHplbiIsIkRhdGVuIHNpY2hlcm4gdW5kIGzDtnNjaGVuIiwid2VpdGVyZsO8aHJlbiIsImvDvG5kaWdlbiJdIH0sCiAgeyBpZDoid2VydHNhY2hlbiIsIHNob3J0OiJXZXJ0c2FjaGVuIiwgbmFtZToiV2VydHNhY2hlbiwgU2NobGllw59mw6RjaGVyICYgRmFocnpldWdlIiwgY29sb3I6IiNGNUE4RDAiLCBwZGY6IiNEOTZCQTYiLCBraW5kOiJhc3NldCIsCiAgICBpbnRybzoiV2FzIGVpbmVuIFdlcnQgaGF0IG9kZXIgd2VnZ2VzY2hsb3NzZW4gaXN0LiIsCiAgICBxdWljazpbIkJhbmtzY2hsaWXDn2ZhY2giLCJUcmVzb3IiLCJBdXRvIiwiTW90b3JyYWQgLyBGYWhycmFkIiwiU2NobXVjayIsIlVociIsIkt1bnN0IiwiU2FtbWx1bmciLCJCYXJnZWxkIl0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJHZWdlbnN0YW5kIiwiIiwiei4gQi4gQmFua3NjaGxpZcOfZmFjaCIpLCBwcm92aWRlcjpGKCJPcnQgLyBCYW5rIiwiT3J0Iiwiei4gQi4gVm9sa3NiYW5rLCBGaWxpYWxlIEhhdXB0c3RyYcOfZSIpLAogICAgICByZWY6RigiTnVtbWVyIC8gS2VubnplaWNoZW4iLCJOci4iLCJTY2hsaWXDn2ZhY2gtIG9kZXIgRmFocnpldWdudW1tZXIiKSwgdmFsdWU6RigiR2VzY2jDpHR6dGVyIFdlcnQiLCIiLCIwLDAwIiksCiAgICAgIGRvY3M6RigiQmVsZWdlIC8gR3V0YWNodGVuIiwiQmVsZWdlIiwiIiksIGFjY2VzczpGKCJTY2hsw7xzc2VsIC8gSGlud2VpcyIsIlNjaGzDvHNzZWwiLCJ6LiBCLiBTY2hsaWXDn2ZhY2hzY2hsw7xzc2VsIGxpZWd0IOKApiIpIH0sCiAgICBhY3Rpb25zOlsidmVya2F1ZmVuIiwidmVyc2NoZW5rZW4gLyB2ZXJlcmJlbiIsImJlaGFsdGVuIiwiYXVmbMO2c2VuIl0gfSwKICB7IGlkOiJzY2h1bGRlbiIsIHNob3J0OiJTY2h1bGRlbiIsIG5hbWU6IlNjaHVsZGVuICYgVmVycGZsaWNodHVuZ2VuIiwgY29sb3I6IiNGRjlFOEEiLCBwZGY6IiNFMDY1NEYiLCBraW5kOiJsaWFiaWxpdHkiLAogICAgaW50cm86IktyZWRpdGUsIEZpbmFuemllcnVuZ2VuIHVuZCBCw7xyZ3NjaGFmdGVuIGdlaGVuIG1pdCBhdWYgZGllIEVyYmVuIMO8YmVyLiIsCiAgICBxdWljazpbIlJhdGVua3JlZGl0IiwiQmF1ZmluYW56aWVydW5nIiwiRGlzcG9rcmVkaXQiLCJLcmVkaXRrYXJ0ZSAob2ZmZW4pIiwiTGVhc2luZyIsIlByaXZhdGVzIERhcmxlaGVuIiwiQsO8cmdzY2hhZnQiLCJTdGV1ZXJuYWNoemFobHVuZyIsIk9mZmVuZSBSZWNobnVuZyJdLAogICAgZmllbGRzOnsgdGl0bGU6RigiVmVyYmluZGxpY2hrZWl0IiwiIiwiei4gQi4gUmF0ZW5rcmVkaXQiKSwgcHJvdmlkZXI6RigiR2zDpHViaWdlciIsIkdsw6R1YmlnZXIiLCJ6LiBCLiBCYW5rLCBQcml2YXRwZXJzb24iKSwKICAgICAgcmVmOkYoIlZlcnRyYWdzbnVtbWVyIiwiTnIuIiwiIiksIHZhbHVlOkYoIk9mZmVuZXIgQmV0cmFnIiwiIiwiMCwwMCIpLAogICAgICBkb2NzOkYoIldvIGxpZWdlbiBkaWUgVW50ZXJsYWdlbj8iLCJVbnRlcmxhZ2VuIiwiIiksIGFjY2VzczpGKCJBYnNpY2hlcnVuZyAvIEhpbndlaXMiLCJIaW53ZWlzIiwiei4gQi4gUmVzdHNjaHVsZHZlcnNpY2hlcnVuZyB2b3JoYW5kZW4iKSB9LAogICAgYWN0aW9uczpbImFibMO2c2VuIiwid2VpdGVyZsO8aHJlbiIsInByw7xmZW4gbGFzc2VuIl0gfSwKICB7IGlkOiJlcmJmYWxsa29zdGVuIiwgc2hvcnQ6IkVyYmZhbGxrb3N0ZW4iLCBuYW1lOiJFcmJmYWxsa29zdGVuIiwgY29sb3I6IiNGRkI0OEYiLCBwZGY6IiNFMDg2NEYiLCBraW5kOiJsaWFiaWxpdHkiLCBlcmJmYWxsT25seTp0cnVlLAogICAgaW50cm86Iktvc3RlbiwgZGllIGR1cmNoIGRlbiBUb2Rlc2ZhbGwgZW50c3RhbmRlbiBzaW5kLiBTaWUgbWluZGVybiBkZW4gTmFjaGxhc3MuIiwKICAgIGhpbnQ6IkJld2FocmUgYWxsZSBSZWNobnVuZ2VuIGF1Zi4gU2llIHdlcmRlbiBmw7xyIGRpZSBFcmJzY2hhZnRzdGV1ZXIgdW5kIGbDvHIgZGllIEFicmVjaG51bmcgdW50ZXIgTWl0ZXJiZW4gZ2VicmF1Y2h0LiIsCiAgICBxdWljazpbIkJlc3RhdHR1bmciLCJUcmF1ZXJmZWllciIsIkdyYWJzdGVpbiIsIkZyaWVkaG9mc2dlYsO8aHJlbiIsIlRyYXVlcmFuemVpZ2UiLCJFcmJzY2hlaW4iLCJUZXN0YW1lbnRzZXLDtmZmbnVuZyIsIldlcnRndXRhY2h0ZW4iLCJXb2hudW5nc2F1ZmzDtnN1bmciXSwKICAgIGZpZWxkczp7IHRpdGxlOkYoIktvc3RlbmFydCIsIiIsInouIEIuIEJlc3RhdHR1bmciKSwgcHJvdmlkZXI6RigiUmVjaG51bmcgdm9uIiwiVm9uIiwiei4gQi4gQmVzdGF0dHVuZ3NoYXVzIE11c3RlciIpLAogICAgICByZWY6RigiUmVjaG51bmdzbnVtbWVyIC8gRGF0dW0iLCJOci4iLCIiKSwgdmFsdWU6RigiQmV0cmFnIiwiIiwiMCwwMCIpLAogICAgICBkb2NzOkYoIldvIGxpZWd0IGRlciBCZWxlZz8iLCJCZWxlZyIsIiIpLCBhY2Nlc3M6RigiQmV6YWhsdCB2b24gLyBIaW53ZWlzIiwiSGlud2VpcyIsInouIEIuIHZvcmdlc3RyZWNrdCB2b24gVG9jaHRlciIpIH0sCiAgICBhY3Rpb25zOlsib2ZmZW4iLCJiZXphaGx0IiwiYXVzIGRlbSBOYWNobGFzcyBlcnN0YXR0ZXQiXSwgYWN0aW9uTGFiZWw6IlN0YXR1cyIsIGFjdGlvblNob3J0OiJTdGF0dXMiIH0sCiAgeyBpZDoidW50ZXJuZWhtZW4iLCBzaG9ydDoiVW50ZXJuZWhtZW4iLCBuYW1lOiJVbnRlcm5laG1lbiAmIEJldGVpbGlndW5nZW4iLCBjb2xvcjoiI0I4RTk4NiIsIHBkZjoiIzdEQjUzRiIsIGtpbmQ6ImFzc2V0IiwKICAgIGludHJvOiJFaWdlbmUgRmlybWEsIEFudGVpbGUgb2RlciBmcmVpYmVydWZsaWNoZSBUw6R0aWdrZWl0LiIsCiAgICBxdWljazpbIkVpZ2VuZXMgVW50ZXJuZWhtZW4iLCJHbWJILUFudGVpbGUiLCJTdGlsbGUgQmV0ZWlsaWd1bmciLCJGcmVpYmVydWZsaWNoZSBUw6R0aWdrZWl0Il0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJCZXRlaWxpZ3VuZyIsIiIsInouIEIuIEdtYkgtQW50ZWlsZSIpLCBwcm92aWRlcjpGKCJGaXJtYSIsIkZpcm1hIiwiIiksCiAgICAgIHJlZjpGKCJBbnRlaWwgLyBIYW5kZWxzcmVnaXN0ZXIiLCJBbnRlaWwvSFIiLCIiKSwgdmFsdWU6RigiR2VzY2jDpHR6dGVyIFdlcnQiLCIiLCIwLDAwIiksCiAgICAgIGRvY3M6RigiVW50ZXJsYWdlbiIsIlVudGVybGFnZW4iLCJ6LiBCLiBHZXNlbGxzY2hhZnRzdmVydHJhZywgQmlsYW56ZW4iKSwgYWNjZXNzOkYoIkFuc3ByZWNocGFydG5lciIsIktvbnRha3QiLCJ6LiBCLiBNaXRnZXNlbGxzY2hhZnRlciwgU3RldWVyYmVyYXR1bmciKSB9LAogICAgYWN0aW9uczpbImZvcnRmw7xocmVuIiwidmVya2F1ZmVuIiwiw7xiZXJ0cmFnZW4iLCJwcsO8ZmVuIGxhc3NlbiJdIH0sCiAgeyBpZDoic2NoZW5rdW5nZW4iLCBzaG9ydDoiU2NoZW5rdW5nZW4iLCBuYW1lOiJTY2hlbmt1bmdlbiB6dSBMZWJ6ZWl0ZW4iLCBjb2xvcjoiI0Q5QzhGRiIsIHBkZjoiIzlCN0ZEOSIsIGtpbmQ6ImdpZnQiLAogICAgaW50cm86Ikdyw7bDn2VyZSBTY2hlbmt1bmdlbiBkZXIgbGV0enRlbiB6ZWhuIEphaHJlLiBTaWUga8O2bm5lbiBkZW4gUGZsaWNodHRlaWwgZXJow7ZoZW4gdW5kIGJlaSBkZXIgRXJic2NoYWZ0c3RldWVyIG1pdHrDpGhsZW4uIiwKICAgIHF1aWNrOlsiR2VsZGdlc2NoZW5rIiwiSW1tb2JpbGllIiwiQXV0byIsIldlcnRwYXBpZXJlIiwiU2NobXVjayAvIFdlcnRnZWdlbnN0w6RuZGUiLCJVbnRlcm5laG1lbnNhbnRlaWxlIl0sCiAgICBmaWVsZHM6eyB0aXRsZTpGKCJTY2hlbmt1bmciLCIiLCJ6LiBCLiBHZWxkZ2VzY2hlbmsiKSwgcHJvdmlkZXI6RigiQW4gd2VuPyIsIkFuIiwiIiksCiAgICAgIHJlZjpGKCJEYXR1bSBkZXIgU2NoZW5rdW5nIiwiRGF0dW0iLCJUVC5NTS5KSkpKIiksIHZhbHVlOkYoIldlcnQiLCIiLCIwLDAwIiksCiAgICAgIGRvY3M6RigiTmFjaHdlaXMiLCJOYWNod2VpcyIsInouIEIuIMOcYmVyd2Vpc3VuZywgTm90YXJ2ZXJ0cmFnIiksIGFjY2VzczpGKCJIaW53ZWlzIiwiSGlud2VpcyIsInouIEIuIEFucmVjaG51bmcgYXVmIGRlbiBFcmJ0ZWlsIHZlcmVpbmJhcnQiKSB9LAogICAgYWN0aW9uczpudWxsIH0sCiAgeyBpZDoid3VlbnNjaGUiLCBzaG9ydDoiV8O8bnNjaGUiLCBuYW1lOiJXw7xuc2NoZSAmIFNvbnN0aWdlcyIsIGNvbG9yOiIjRTRFQ0Y3IiwgcGRmOiIjOEE5OUFEIiwga2luZDoibm9uZSIsCiAgICBpbnRybzoiUGVyc8O2bmxpY2hlIFfDvG5zY2hlLCBIYXVzdGllcmUgdW5kIGFsbGVzLCB3YXMgc29uc3QgbmllbWFuZCB3w7xzc3RlLiIsCiAgICBxdWljazpbIkJlc3RhdHR1bmdzd3Vuc2NoIiwiVHJhdWVyZmVpZXIiLCJIYXVzdGllcmUiLCJQZXJzw7ZubGljaGUgTmFjaHJpY2h0IiwiU3BlbmRlbnd1bnNjaCJdLAogICAgZmllbGRzOnsgdGl0bGU6RigiVGhlbWEiLCIiLCJ6LiBCLiBIYXVzdGllcmUiKSwgcHJvdmlkZXI6RigiQmV0cmlmZnQiLCJCZXRyaWZmdCIsInouIEIuIEthdHplIE1pbWksIGRpZSBLaW5kZXIiKSwKICAgICAgZG9jczpGKCJVbnRlcmxhZ2VuIiwiVW50ZXJsYWdlbiIsInouIEIuIEJlc3RhdHR1bmdzdm9yc29yZ2V2ZXJ0cmFnIiksIGFjY2VzczpGKCJNZWluIFd1bnNjaCIsIld1bnNjaCIsIiIpIH0sCiAgICBhY3Rpb25zOm51bGwgfQpdOwpjb25zdCBDQVQgPSBPYmplY3QuZnJvbUVudHJpZXMoQ0FUUy5tYXAoYyA9PiBbYy5pZCwgY10pKTsKY29uc3QgREVDSyA9IHtpZDoiZGVja2JsYXR0Iiwgc2hvcnQ6IkRlY2tibGF0dCIsIGNvbG9yOiIjRkZGRkZGIn07CmNvbnN0IFNUQVJURVIgPSBbImtvbnRha3RlIiwia29udGVuIiwidmVyc2ljaGVydW5nZW4iLCJ2ZXJ0cmFlZ2UiLCJkaWdpdGFsIl07CmNvbnN0IEFMTF9JRFMgPSBbImRlY2tibGF0dCJdLmNvbmNhdChDQVRTLm1hcChjID0+IGMuaWQpKTsKY29uc3QgRU5UUllfS0VZUyA9IFsidGl0bGUiLCJwcm92aWRlciIsInJlZiIsInZhbHVlIiwiZG9jcyIsImFjY2VzcyIsImFjdGlvbiIsIm5vdGUiXTsKY29uc3QgUEVSU09OX0tFWVMgPSBbIm5hbWUiLCJnZWJ1cnQiLCJ0b2QiLCJhbnNjaHJpZnQiLCJ2cF9uYW1lIiwidnBfdGVsIiwib3J0Il07CmNvbnN0IFNUT1JFX0tFWSA9ICJub3RmYWxsb3JkbmVyLnYxIjsKY29uc3QgVUlfS0VZID0gIm5vdGZhbGxvcmRuZXIudGFiIjsKCi8qIC0tLS0tLS0tLS0gWnVzdGFuZCAtLS0tLS0tLS0tICovCmNvbnN0IHVpZCA9ICgpID0+IERhdGUubm93KCkudG9TdHJpbmcoMzYpICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgNyk7CmNvbnN0IHN0ciA9IHYgPT4gKHYgPT0gbnVsbCA\/ICIiIDogU3RyaW5nKHYpKS5zbGljZSgwLCA0MDAwKTsKZnVuY3Rpb24gYmxhbmsoKXsgcmV0dXJuIHsgcHVycG9zZToidm9yc29yZ2UiLCBzY29wZToic3RhcnRlciIsIHBlcnNvbjpPYmplY3QuZnJvbUVudHJpZXMoUEVSU09OX0tFWVMubWFwKGsgPT4gW2ssICIiXSkpLCBlbnRyaWVzOnt9IH07IH0KZnVuY3Rpb24gbm9ybWFsaXplKHMpewogIGNvbnN0IGIgPSBibGFuaygpOwogIGlmICghcyB8fCB0eXBlb2YgcyAhPT0gIm9iamVjdCIpIHJldHVybiBiOwogIGIuc2NvcGUgPSBzLnNjb3BlID09PSAiZnVsbCIgPyAiZnVsbCIgOiAic3RhcnRlciI7CiAgYi5wdXJwb3NlID0gcy5wdXJwb3NlID09PSAiZXJiZmFsbCIgPyAiZXJiZmFsbCIgOiAidm9yc29yZ2UiOwogIGlmIChzLnBlcnNvbiAmJiB0eXBlb2Ygcy5wZXJzb24gPT09ICJvYmplY3QiKSBmb3IgKGNvbnN0IGsgb2YgUEVSU09OX0tFWVMpIGIucGVyc29uW2tdID0gc3RyKHMucGVyc29uW2tdKTsKICBpZiAocy5lbnRyaWVzICYmIHR5cGVvZiBzLmVudHJpZXMgPT09ICJvYmplY3QiKXsKICAgIGZvciAoY29uc3QgYyBvZiBDQVRTKXsKICAgICAgY29uc3QgYXJyID0gcy5lbnRyaWVzW2MuaWRdOwogICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkgY29udGludWU7CiAgICAgIGIuZW50cmllc1tjLmlkXSA9IGFyci5maWx0ZXIoZSA9PiBlICYmIHR5cGVvZiBlID09PSAib2JqZWN0IikubWFwKGUgPT4gewogICAgICAgIGNvbnN0IG8gPSB7IGlkOiBzdHIoZS5pZCkgfHwgdWlkKCkgfTsKICAgICAgICBmb3IgKGNvbnN0IGsgb2YgRU5UUllfS0VZUykgb1trXSA9IHN0cihlW2tdKTsKICAgICAgICByZXR1cm4gbzsKICAgICAgfSk7CiAgICB9CiAgfQogIHJldHVybiBiOwp9CmZ1bmN0aW9uIGxvYWQoKXsKICB0cnkgeyBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SRV9LRVkpOyBpZiAocmF3KSByZXR1cm4gbm9ybWFsaXplKEpTT04ucGFyc2UocmF3KSk7IH0gY2F0Y2goZSl7fQogIHJldHVybiBibGFuaygpOwp9CmxldCBzdGF0ZSA9IGxvYWQoKTsKbGV0IGN1cnJlbnQgPSAiZGVja2JsYXR0IjsKdHJ5IHsgY29uc3QgdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFVJX0tFWSk7IGlmICh0ICYmIEFMTF9JRFMuaW5jbHVkZXModCkpIGN1cnJlbnQgPSB0OyB9IGNhdGNoKGUpe30KY29uc3Qgb3BlblNldCA9IG5ldyBTZXQoKTsKbGV0IHNhdmVGYWlsZWQgPSBmYWxzZTsKbGV0IHNhdmVUaW1lciA9IG51bGw7CmZ1bmN0aW9uIGZsdXNoKCl7CiAgY2xlYXJUaW1lb3V0KHNhdmVUaW1lcik7IHNhdmVUaW1lciA9IG51bGw7CiAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkVfS0VZLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpOyBzYXZlRmFpbGVkID0gZmFsc2U7IH0KICBjYXRjaChlKXsgc2F2ZUZhaWxlZCA9IHRydWU7IH0KfQpmdW5jdGlvbiBzYXZlKCl7CiAgY2xlYXJUaW1lb3V0KHNhdmVUaW1lcik7CiAgc2F2ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7IGZsdXNoKCk7IHJlbmRlclN1bW1hcnkoKTsgfSwgMjUwKTsKfQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCAoKSA9PiB7IGlmIChzYXZlVGltZXIpIGZsdXNoKCk7IH0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwgKCkgPT4geyBpZiAoZG9jdW1lbnQuaGlkZGVuICYmIHNhdmVUaW1lcikgZmx1c2goKTsgfSk7CmNvbnN0IGxpc3QgPSBpZCA9PiBzdGF0ZS5lbnRyaWVzW2lkXSB8fCAoc3RhdGUuZW50cmllc1tpZF0gPSBbXSk7CmNvbnN0IGNvdW50QWxsID0gKCkgPT4gQ0FUUy5yZWR1Y2UoKG4sIGMpID0+IG4gKyBsaXN0KGMuaWQpLmxlbmd0aCwgMCk7CgovKiAtLS0tLS0tLS0tIEJldHLDpGdlIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gcGFyc2VNb25leShzKXsKICBpZiAoIXMpIHJldHVybiAwOwogIGxldCB0ID0gU3RyaW5nKHMpLnJlcGxhY2UoL1vigqxcc1x1MDBBMFx1MjAyRl0vZywgIiIpOwogIGlmICh0LmluY2x1ZGVzKCIsIikpIHQgPSB0LnJlcGxhY2UoL1wuL2csICIiKS5yZXBsYWNlKCIsIiwgIi4iKTsKICBlbHNlIGlmICgvXi0\/XGR7MSwzfShcLlxkezN9KSskLy50ZXN0KHQpKSB0ID0gdC5yZXBsYWNlKC9cLi9nLCAiIik7CiAgY29uc3QgbiA9IHBhcnNlRmxvYXQodCk7CiAgcmV0dXJuIGlzRmluaXRlKG4pID8gbiA6IDA7Cn0KY29uc3QgRVVSID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJkZS1ERSIsIHtzdHlsZToiY3VycmVuY3kiLCBjdXJyZW5jeToiRVVSIn0pOwpjb25zdCBFVVIwID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCJkZS1ERSIsIHtzdHlsZToiY3VycmVuY3kiLCBjdXJyZW5jeToiRVVSIiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOjB9KTsKY29uc3QgZm10ID0gbiA9PiBFVVIuZm9ybWF0KG4gfHwgMCkucmVwbGFjZSgvW1x1MjAyRlx1MDBBMF0vZywgIiAiKTsKY29uc3QgZm10MCA9IG4gPT4gRVVSMC5mb3JtYXQoTWF0aC5yb3VuZChuIHx8IDApKS5yZXBsYWNlKC9bXHUyMDJGXHUwMEEwXS9nLCAiICIpOwpjb25zdCBzdW1PZiA9IGMgPT4gbGlzdChjLmlkKS5yZWR1Y2UoKHMsIGUpID0+IHMgKyBwYXJzZU1vbmV5KGUudmFsdWUpLCAwKTsKZnVuY3Rpb24gdG90YWxzKCl7CiAgY29uc3QgdCA9IHthc3NldHM6MCwgZGVidHM6MCwgbW9udGhseTowLCBnaWZ0czowfTsKICBmb3IgKGNvbnN0IGMgb2YgQ0FUUyl7CiAgICBpZiAoYy5raW5kID09PSAiYXNzZXQiKSB0LmFzc2V0cyArPSBzdW1PZihjKTsKICAgIGVsc2UgaWYgKGMua2luZCA9PT0gImxpYWJpbGl0eSIpIHQuZGVidHMgKz0gc3VtT2YoYyk7CiAgICBlbHNlIGlmIChjLmtpbmQgPT09ICJtb250aGx5IikgdC5tb250aGx5ICs9IHN1bU9mKGMpOwogICAgZWxzZSBpZiAoYy5raW5kID09PSAiZ2lmdCIpIHQuZ2lmdHMgKz0gc3VtT2YoYyk7CiAgfQogIHJldHVybiB0Owp9CmNvbnN0IGlzRXJiZmFsbCA9ICgpID0+IHN0YXRlLnB1cnBvc2UgPT09ICJlcmJmYWxsIjsKY29uc3QgYWN0TGFiZWwgPSBjID0+IGMuYWN0aW9uTGFiZWwgfHwgKGlzRXJiZmFsbCgpID8gIldhcyBpc3QgenUgdHVuPyIgOiAiV2FzIHNvbGwgaW0gRXJuc3RmYWxsIHBhc3NpZXJlbj8iKTsKY29uc3QgYWN0U2hvcnQgPSBjID0+IGMuYWN0aW9uU2hvcnQgfHwgKGlzRXJiZmFsbCgpID8gIlp1IGVybGVkaWdlbiIgOiAiSW0gRXJuc3RmYWxsIik7CgovKiAtLS0tLS0tLS0tIEhpbGZlbiAtLS0tLS0tLS0tICovCmNvbnN0ICQgPSBzID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocyk7CmNvbnN0IG5hdkVsID0gJCgiI25hdiIpLCBwYW5lbCA9ICQoIiNwYW5lbCIpLCBtc2dFbCA9ICQoIiNtc2ciKTsKY29uc3QgZXNjID0gcyA9PiBTdHJpbmcocyA9PSBudWxsID8gIiIgOiBzKS5yZXBsYWNlKC9bJjw+IiddL2csIGNoID0+ICh7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In1bY2hdKSk7CmxldCBtc2dUaW1lciA9IG51bGw7CmZ1bmN0aW9uIHNheSh0ZXh0KXsKICBtc2dFbC50ZXh0Q29udGVudCA9IHRleHQ7CiAgbXNnRWwuY2xhc3NMaXN0LmFkZCgic2hvdyIpOwogIGNsZWFyVGltZW91dChtc2dUaW1lcik7CiAgbXNnVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IG1zZ0VsLmNsYXNzTGlzdC5yZW1vdmUoInNob3ciKSwgNDIwMCk7Cn0KZnVuY3Rpb24gZm10RGF0ZShpc28pewogIGNvbnN0IG0gPSAvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pJC8uZXhlYyhpc28gfHwgIiIpOwogIHJldHVybiBtID8gYCR7bVszXX0uJHttWzJdfS4ke21bMV19YCA6IChpc28gfHwgIiIpOwp9CmNvbnN0IHRvZGF5SXNvID0gKCkgPT4geyBjb25zdCBkID0gbmV3IERhdGUoKTsgcmV0dXJuIGAke2QuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcoZC5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKX0tJHtTdHJpbmcoZC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKX1gOyB9OwpmdW5jdGlvbiBhcm1CdXR0b24oYnRuLCBsYWJlbCwgbXMpewogIGlmIChidG4uZGF0YXNldC5hcm1lZCkgcmV0dXJuIHRydWU7CiAgYnRuLmRhdGFzZXQuYXJtZWQgPSAiMSI7CiAgY29uc3Qgb2xkID0gYnRuLnRleHRDb250ZW50OwogIGJ0bi50ZXh0Q29udGVudCA9IGxhYmVsOwogIHNldFRpbWVvdXQoKCkgPT4geyBpZiAoYnRuLmlzQ29ubmVjdGVkKXsgZGVsZXRlIGJ0bi5kYXRhc2V0LmFybWVkOyBidG4udGV4dENvbnRlbnQgPSBvbGQ7IH0gfSwgbXMgfHwgNDAwMCk7CiAgcmV0dXJuIGZhbHNlOwp9CmNvbnN0IGNhcmV0ID0gJzxzdmcgY2xhc3M9ImUtY2FyZXQiIHZpZXdCb3g9IjAgMCAyMCAyMCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik01IDcuNWw1IDUgNS01IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nOwoKLyogLS0tLS0tLS0tLSBEYXJzdGVsbHVuZyAtLS0tLS0tLS0tICovCmNvbnN0IHZpc2libGVDYXRzID0gKCkgPT4gQ0FUUy5maWx0ZXIoYyA9PiBsaXN0KGMuaWQpLmxlbmd0aCB8fCAoaXNFcmJmYWxsKCkgPyB0cnVlIDogKCFjLmVyYmZhbGxPbmx5ICYmIChzdGF0ZS5zY29wZSA9PT0gImZ1bGwiIHx8IFNUQVJURVIuaW5jbHVkZXMoYy5pZCkpKSkpOwpjb25zdCB0YWJzID0gKCkgPT4gW0RFQ0tdLmNvbmNhdCh2aXNpYmxlQ2F0cygpKTsKZnVuY3Rpb24gcmVuZGVyTmF2KCl7CiAgaWYgKGN1cnJlbnQgIT09ICJkZWNrYmxhdHQiICYmICF2aXNpYmxlQ2F0cygpLnNvbWUoYyA9PiBjLmlkID09PSBjdXJyZW50KSkgY3VycmVudCA9ICJkZWNrYmxhdHQiOwogIGNvbnN0IGhpZGRlbiA9IGlzRXJiZmFsbCgpID8gMCA6IENBVFMuZmlsdGVyKGMgPT4gIWMuZXJiZmFsbE9ubHkpLmxlbmd0aCAtIHZpc2libGVDYXRzKCkuZmlsdGVyKGMgPT4gIWMuZXJiZmFsbE9ubHkpLmxlbmd0aDsKICBuYXZFbC5pbm5lckhUTUwgPSB0YWJzKCkubWFwKHQgPT4gewogICAgY29uc3QgbiA9IHQuaWQgPT09ICJkZWNrYmxhdHQiID8gbnVsbCA6IGxpc3QodC5pZCkubGVuZ3RoOwogICAgY29uc3QgY250ID0gbiA9PSBudWxsID8gJzxzcGFuIGNsYXNzPSJjbnQiPjwvc3Bhbj4nIDogYDxzcGFuIGNsYXNzPSJjbnQke24gPyAiIGhhcyIgOiAiIn0iPjxzcGFuIGNsYXNzPSJzciI+RWludHLDpGdlOiA8L3NwYW4+JHtufTwvc3Bhbj5gOwogICAgcmV0dXJuIGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdi1pdGVtIiBkYXRhLXRhYj0iJHt0LmlkfSIgc3R5bGU9Ii0tYzoke3QuY29sb3J9IiR7dC5pZCA9PT0gY3VycmVudCA\/ICcgYXJpYS1jdXJyZW50PSJ0cnVlIicgOiAiIn0+PHNwYW4gY2xhc3M9ImRvdCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj48c3Bhbj4ke2VzYyh0LnNob3J0KX08L3NwYW4+JHtjbnR9PC9idXR0b24+YDsKICB9KS5qb2luKCIiKSArIChoaWRkZW4gPyBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXYtbW9yZSIgZGF0YS1zY29wZT0iZnVsbCI+KyAke2hpZGRlbn0gd2VpdGVyZSBSZWdpc3RlcjwvYnV0dG9uPmAgOiAiIik7Cn0KZnVuY3Rpb24gc2V0UHVycG9zZShwdSl7CiAgc3RhdGUucHVycG9zZSA9IHB1ID09PSAiZXJiZmFsbCIgPyAiZXJiZmFsbCIgOiAidm9yc29yZ2UiOwogIHNhdmUoKTsgcmVuZGVyTmF2KCk7IHJlbmRlclBhbmVsKCk7IHJlbmRlclN1bW1hcnkoKTsKICBzYXkoaXNFcmJmYWxsKCkgPyAiTW9kdXM6IE5hY2hsYXNzdmVyemVpY2huaXMgbmFjaCBlaW5lbSBUb2Rlc2ZhbGwiIDogIk1vZHVzOiBWb3Jzb3JnZSIpOwp9CmZ1bmN0aW9uIHNldFNjb3BlKHNjb3BlKXsKICBzdGF0ZS5zY29wZSA9IHNjb3BlID09PSAiZnVsbCIgPyAiZnVsbCIgOiAic3RhcnRlciI7CiAgc2F2ZSgpOyByZW5kZXJOYXYoKTsgcmVuZGVyUGFuZWwoKTsKICBzYXkoc3RhdGUuc2NvcGUgPT09ICJmdWxsIiA\/ICJBbGxlIFJlZ2lzdGVyIHdlcmRlbiBhbmdlemVpZ3QuIiA6ICJTdGFydGVyOiBkaWUgZsO8bmYgd2ljaHRpZ3N0ZW4gUmVnaXN0ZXIuIik7Cn0KCmZ1bmN0aW9uIHN0YXRzSHRtbCgpewogIGNvbnN0IHQgPSB0b3RhbHMoKSwgbmV0ID0gdC5hc3NldHMgLSB0LmRlYnRzLCBuID0gY291bnRBbGwoKSwgZSA9IGlzRXJiZmFsbCgpOwogIHJldHVybiBgCiAgICA8ZGl2IGNsYXNzPSJzdGF0IHdpZGUiPjxzcGFuPiR7ZSA\/ICJOYWNobGFzcyBuZXR0byIgOiAiTmV0dG92ZXJtw7ZnZW4ifTwvc3Bhbj48YiBjbGFzcz0iJHtuZXQgPCAwID8gIm5lZyIgOiAiIn0iPiR7ZXNjKGZtdDAobmV0KSl9PC9iPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhdCI+PHNwYW4+JHtlID8gIkFrdGl2YSIgOiAiVmVybcO2Z2VuIn08L3NwYW4+PGI+JHtlc2MoZm10MCh0LmFzc2V0cykpfTwvYj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXQiPjxzcGFuPiR7ZSA\/ICJQYXNzaXZhIiA6ICJTY2h1bGRlbiJ9PC9zcGFuPjxiPiR7ZXNjKGZtdDAodC5kZWJ0cykpfTwvYj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXQiPjxzcGFuPiR7ZSA\/ICJTY2hlbmt1bmdlbiIgOiAiS29zdGVuIC8gTW9uYXQifTwvc3Bhbj48Yj4ke2VzYyhmbXQwKGUgPyB0LmdpZnRzIDogdC5tb250aGx5KSl9PC9iPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhdCI+PHNwYW4+RWludHLDpGdlPC9zcGFuPjxiPiR7bn08L2I+PC9kaXY+YDsKfQoKZnVuY3Rpb24gcmVuZGVyU3VtbWFyeSgpewogIGNvbnN0IHNjID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNpZGUtY3RhIik7CiAgaWYgKHNjKSBzYy5zdHlsZS5kaXNwbGF5ID0gaXNFcmJmYWxsKCkgPyAibm9uZSIgOiAiIjsKICAkKCIjc2lkZVN0YXRzIikuaW5uZXJIVE1MID0gc3RhdHNIdG1sKCk7CiAgY29uc3QgbXQgPSBwYW5lbC5xdWVyeVNlbGVjdG9yKCIjbW9iaWxlU3RhdHMiKTsKICBpZiAobXQpIG10LmlubmVySFRNTCA9IHN0YXRzSHRtbCgpOwogICQoIiNzYXZlTm90ZSIpLnRleHRDb250ZW50ID0gc2F2ZUZhaWxlZAogICAgPyAiU3BlaWNoZXJuIGltIEJyb3dzZXIgaXN0IGhpZXIgbmljaHQgbcO2Z2xpY2guIE51dHplIOKAnlNpY2hlcnVuZyBzcGVpY2hlcm7igJwuIgogICAgOiAiV2lyZCBudXIgaW4gZGllc2VtIEJyb3dzZXIgZ2VzcGVpY2hlcnQuIEtlaW5lIFBhc3N3w7ZydGVyIG9kZXIgUElOcyBlaW50cmFnZW4uIjsKICBjb25zdCBuID0gY291bnRBbGwoKSwgdCA9IHRvdGFscygpOwogIGNvbnN0IG5ldCA9ICh0LmFzc2V0cyB8fCB0LmRlYnRzKSA\/IGAgJm5ic3A7TmV0dG8gPGI+JHtlc2MoZm10MCh0LmFzc2V0cyAtIHQuZGVidHMpKX08L2I+YCA6ICIiOwogICQoIiNiYXJTdGF0IikuaW5uZXJIVE1MID0gYDxiPiR7bn08L2I+ICR7biA9PT0gMSA\/ICJFaW50cmFnIiA6ICJFaW50csOkZ2UifSR7bmV0fTxicj4ke3NhdmVGYWlsZWQgPyAiU3BlaWNoZXJuIG5pY2h0IG3DtmdsaWNoIiA6ICJOdXIgaW0gQnJvd3NlciBnZXNwZWljaGVydCJ9YDsKfQoKZnVuY3Rpb24gbmV4dFRhYk9mKGlkKXsKICBjb25zdCBsaXN0ID0gdGFicygpOwogIGNvbnN0IGkgPSBsaXN0LmZpbmRJbmRleCh0ID0+IHQuaWQgPT09IGlkKTsKICByZXR1cm4gbGlzdFtpICsgMV0gfHwgbnVsbDsKfQoKZnVuY3Rpb24gcGVyc29uRmllbGQoaywgbGFiZWwsIHR5cGUsIHBoLCBmdWxsKXsKICBjb25zdCBpZCA9ICJwLSIgKyBrLCB2ID0gZXNjKHN0YXRlLnBlcnNvbltrXSk7CiAgY29uc3QgaW5wdXQgPSB0eXBlID09PSAidGV4dGFyZWEiCiAgICA\/IGA8dGV4dGFyZWEgaWQ9IiR7aWR9IiBkYXRhLXA9IiR7a30iIHJvd3M9IjIiIHBsYWNlaG9sZGVyPSIke2VzYyhwaCB8fCAiIil9Ij4ke3Z9PC90ZXh0YXJlYT5gCiAgICA6IGA8aW5wdXQgaWQ9IiR7aWR9IiBkYXRhLXA9IiR7a30iIHR5cGU9IiR7dHlwZX0iIHZhbHVlPSIke3Z9IiBwbGFjZWhvbGRlcj0iJHtlc2MocGggfHwgIiIpfSIgYXV0b2NvbXBsZXRlPSJvZmYiPmA7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSIke2Z1bGwgPyAiZnVsbCIgOiAiIn0iPjxsYWJlbCBjbGFzcz0iZmwiIGZvcj0iJHtpZH0iPiR7bGFiZWx9PC9sYWJlbD4ke2lucHV0fTwvZGl2PmA7Cn0KCmZ1bmN0aW9uIHJlbmRlckRlY2tibGF0dCgpewogIGNvbnN0IG54ID0gbmV4dFRhYk9mKCJkZWNrYmxhdHQiKTsKICBwYW5lbC5pbm5lckhUTUwgPSBgCiAgICA8ZGl2IGNsYXNzPSJzdGFnZS1oZWFkIj4KICAgICAgPHAgY2xhc3M9ImxhYmVsIj48c3BhbiBjbGFzcz0iZG90IiBzdHlsZT0iLS1jOiNmZmYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+U3RhcnQ8L3A+CiAgICAgIDxoMj5EZWNrYmxhdHQ8L2gyPgogICAgICA8cCBjbGFzcz0iaW50cm8iPlfDpGhsZSB6dWVyc3QsIHdvZsO8ciBkdSBkYXMgTmFjaGxhc3N2ZXJ6ZWljaG5pcyBlcnN0ZWxsc3QuIERpZSBBbmdhYmVuIHVudGVuIHN0ZWhlbiBhdWYgZGVyIGVyc3RlbiBTZWl0ZSwgZGFuYWNoIGdlaHN0IGR1IGRpZSBSZWdpc3RlciBkZXIgUmVpaGUgbmFjaCBkdXJjaC4gTGVlcmUgUmVnaXN0ZXIgdGF1Y2hlbiBpbSBQREYgbmljaHQgYXVmLjwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJyYWRpb2dyb3VwIiBhcmlhLWxhYmVsPSJad2VjayI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiByb2xlPSJyYWRpbyIgYXJpYS1jaGVja2VkPSIkeyFpc0VyYmZhbGwoKX0iIGRhdGEtcHVycG9zZT0idm9yc29yZ2UiPjxiPlp1ciBWb3Jzb3JnZTwvYj48c21hbGw+RsO8ciBkaWNoIHNlbGJzdCBvZGVyIGdlbWVpbnNhbSBtaXQgQW5nZWjDtnJpZ2VuPC9zbWFsbD48L2J1dHRvbj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIHJvbGU9InJhZGlvIiBhcmlhLWNoZWNrZWQ9IiR7aXNFcmJmYWxsKCl9IiBkYXRhLXB1cnBvc2U9ImVyYmZhbGwiPjxiPk5hY2ggZWluZW0gVG9kZXNmYWxsPC9iPjxzbWFsbD5BbHMgRXJiaW4gb2RlciBFcmJlIGRlbiBOYWNobGFzcyBlcmZhc3Nlbjwvc21hbGw+PC9idXR0b24+CiAgICA8L2Rpdj4KICAgICR7aXNFcmJmYWxsKCkgPyAiIiA6IGA8ZGl2IGNsYXNzPSJzZWciIHJvbGU9InJhZGlvZ3JvdXAiIGFyaWEtbGFiZWw9IlVtZmFuZyI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiByb2xlPSJyYWRpbyIgYXJpYS1jaGVja2VkPSIke3N0YXRlLnNjb3BlICE9PSAiZnVsbCJ9IiBkYXRhLXNjb3BlPSJzdGFydGVyIj48Yj5TdGFydGVyPC9iPjxzbWFsbD5EaWUgNSB3aWNodGlnc3RlbiBSZWdpc3RlcjogS29udGFrdGUsIEtvbnRlbiwgVmVyc2ljaGVydW5nZW4sIEFib3MsIERpZ2l0YWxlczwvc21hbGw+PC9idXR0b24+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiByb2xlPSJyYWRpbyIgYXJpYS1jaGVja2VkPSIke3N0YXRlLnNjb3BlID09PSAiZnVsbCJ9IiBkYXRhLXNjb3BlPSJmdWxsIj48Yj5Lb21wbGV0dDwvYj48c21hbGw+QWxsZSBSZWdpc3RlciwgYXVjaCBEb2t1bWVudGUsIFdvaG5lbiwgV2VydHNhY2hlbiwgU2NodWxkZW4gdW5kIFNjaGVua3VuZ2VuPC9zbWFsbD48L2J1dHRvbj4KICAgIDwvZGl2PmB9CiAgICA8ZGl2IGNsYXNzPSJncmlkIj4KICAgICAgJHtpc0VyYmZhbGwoKSA\/IGAKICAgICAgJHtwZXJzb25GaWVsZCgibmFtZSIsIlZlcnN0b3JiZW5lIFBlcnNvbiAodm9sbHN0w6RuZGlnZXIgTmFtZSkiLCJ0ZXh0Iiwiei4gQi4gTWFyaWEgTcO8bGxlciIpfQogICAgICAke3BlcnNvbkZpZWxkKCJ0b2QiLCJUb2Rlc3RhZyAoU3RpY2h0YWcgZsO8ciBhbGxlIFdlcnRlKSIsImRhdGUiLCIiKX0KICAgICAgJHtwZXJzb25GaWVsZCgiZ2VidXJ0IiwiR2VidXJ0c2RhdHVtIiwiZGF0ZSIsIiIpfQogICAgICAke3BlcnNvbkZpZWxkKCJhbnNjaHJpZnQiLCJMZXR6dGUgQW5zY2hyaWZ0IiwidGV4dCIsIlN0cmHDn2UsIFBMWiwgT3J0Iil9CiAgICAgICR7cGVyc29uRmllbGQoInZwX25hbWUiLCJFcnN0ZWxsdCB2b24iLCJ0ZXh0IiwiRGVpbiBOYW1lIil9CiAgICAgICR7cGVyc29uRmllbGQoInZwX3RlbCIsIlRlbGVmb24gb2RlciBFLU1haWwiLCJ0ZXh0IiwiIil9CiAgICAgICR7cGVyc29uRmllbGQoIm9ydCIsIldvIGxpZWdlbiBkaWUgT3JpZ2luYWx1bnRlcmxhZ2VuPyIsInRleHQiLCJ6LiBCLiBiZWkgZGVyIFRvY2h0ZXIsIE9yZG5lciDigJ5OYWNobGFzc+KAnCIsdHJ1ZSl9CiAgICAgIGAgOiBgCiAgICAgICR7cGVyc29uRmllbGQoIm5hbWUiLCJGw7xyIHdlbiBpc3QgZGFzIFZlcnplaWNobmlzPyAodm9sbHN0w6RuZGlnZXIgTmFtZSkiLCJ0ZXh0Iiwiei4gQi4gTWFyaWEgTcO8bGxlciIpfQogICAgICAke3BlcnNvbkZpZWxkKCJnZWJ1cnQiLCJHZWJ1cnRzZGF0dW0iLCJkYXRlIiwiIil9CiAgICAgICR7cGVyc29uRmllbGQoImFuc2NocmlmdCIsIkFuc2NocmlmdCIsInRleHRhcmVhIiwiU3RyYcOfZSwgUExaLCBPcnQiLHRydWUpfQogICAgICAke3BlcnNvbkZpZWxkKCJ2cF9uYW1lIiwiVmVydHJhdWVuc3BlcnNvbiIsInRleHQiLCJXZXIgc29sbCB6dWVyc3QgaW5mb3JtaWVydCB3ZXJkZW4\/Iil9CiAgICAgICR7cGVyc29uRmllbGQoInZwX3RlbCIsIlRlbGVmb24gZGVyIFZlcnRyYXVlbnNwZXJzb24iLCJ0ZWwiLCIiKX0KICAgICAgJHtwZXJzb25GaWVsZCgib3J0IiwiV28gbGllZ3QgZGVyIEF1c2RydWNrPyIsInRleHQiLCJ6LiBCLiBBcmJlaXRzemltbWVyLCBSZWdhbCBsaW5rcywgYmxhdWVyIE9yZG5lciIsdHJ1ZSl9CiAgICAgIGB9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im5leHQtcm93Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzb2xpZCIgZGF0YS1uZXh0PSIke254LmlkfSI+V2VpdGVyIHp1ICR7ZXNjKG54LnNob3J0KX08L2J1dHRvbj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJvbmx5LW1vYmlsZSIgc3R5bGU9Im1hcmdpbi10b3A6MzZweCI+CiAgICAgIDxwIGNsYXNzPSJsYWJlbCI+w5xiZXJzaWNodDwvcD4KICAgICAgPGRpdiBjbGFzcz0ic3RhdHMgbXN0YXRzIiBpZD0ibW9iaWxlU3RhdHMiPiR7c3RhdHNIdG1sKCl9PC9kaXY+CiAgICA8L2Rpdj4KCiAgICAke2lzRXJiZmFsbCgpID8gYDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICA8cCBjbGFzcz0ibGFiZWwiPjxzcGFuIGNsYXNzPSJkb3QiIHN0eWxlPSItLWM6dmFyKC0teWVsbG93KSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj5TbyBnZWhzdCBkdSB2b3I8L3A+CiAgICAgIDxoMz5OYWNobGFzc3ZlcnplaWNobmlzIG5hY2ggZWluZW0gVG9kZXNmYWxsPC9oMz4KICAgICAgPHAgY2xhc3M9ImludHJvIj5XaXIgd2lzc2VuLCBkYXNzIGRhcyBrZWluZSBsZWljaHRlIEF1ZmdhYmUgaXN0LiBEaWVzZSBSZWloZW5mb2xnZSBoYXQgc2ljaCBiZXfDpGhydDo8L3A+CiAgICAgIDxvbCBjbGFzcz0ic3RlcHMyIj4KICAgICAgICA8bGk+PGI+V2VydGUgenVtIFRvZGVzdGFnIGVyZnJhZ2VuLjwvYj4gQmFua2VuLCBCYXVzcGFya2Fzc2VuIHVuZCBEZXBvdGJhbmtlbiBuZW5uZW4gZGlyIGF1ZiBBbmZyYWdlIGRpZSBTdMOkbmRlIHp1bSBUb2Rlc3RhZy48L2xpPgogICAgICAgIDxsaT48Yj5Ba3RpdmEgdW5kIFBhc3NpdmEgZXJmYXNzZW4uPC9iPiBHZWggZGllIFJlZ2lzdGVyIGRlciBSZWloZSBuYWNoIGR1cmNoLCBhdWNoIFNjaHVsZGVuIHVuZCBsYXVmZW5kZSBWZXJ0csOkZ2UuPC9saT4KICAgICAgICA8bGk+PGI+RXJiZmFsbGtvc3RlbiBzYW1tZWxuLjwvYj4gQmVzdGF0dHVuZywgR3JhYnN0ZWluLCBHZWLDvGhyZW46IEFsbGUgUmVjaG51bmdlbiBnZWjDtnJlbiBpbnMgUmVnaXN0ZXIg4oCeRXJiZmFsbGtvc3RlbuKAnC48L2xpPgogICAgICAgIDxsaT48Yj5TY2hlbmt1bmdlbiBwcsO8ZmVuLjwvYj4gR3LDtsOfZXJlIFNjaGVua3VuZ2VuIGRlciBsZXR6dGVuIHplaG4gSmFocmUgc2luZCBmw7xyIFBmbGljaHR0ZWlsIHVuZCBFcmJzY2hhZnRzdGV1ZXIgd2ljaHRpZy48L2xpPgogICAgICAgIDxsaT48Yj5QREYgYWxzIEdydW5kbGFnZSBudXR6ZW4uPC9iPiBFdHdhIGbDvHIgTWl0ZXJiZW4sIFBmbGljaHR0ZWlsc2JlcmVjaHRpZ3RlLCBkYXMgTmFjaGxhc3NnZXJpY2h0IG9kZXIgZGFzIEZpbmFuemFtdC48L2xpPgogICAgICA8L29sPgogICAgPC9kaXY+YCA6IGA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPHAgY2xhc3M9ImxhYmVsIj48c3BhbiBjbGFzcz0iZG90IiBzdHlsZT0iLS1jOnZhcigtLXllbGxvdykiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+R2VtZWluc2FtIGF1c2bDvGxsZW48L3A+CiAgICAgIDxoMz5Gw7xyIEVsdGVybiwgUGFydG5lciBvZGVyIEFuZ2Vow7ZyaWdlPC9oMz4KICAgICAgPHAgY2xhc3M9ImludHJvIj5PZnQgc2luZCBlcyBQYXJ0bmVyIG9kZXIgS2luZGVyLCBkaWUgaW0gRXJuc3RmYWxsIGFsbGVzIHp1c2FtbWVuc3VjaGVuIG3DvHNzZW4uIEVpbiBnZW1laW5zYW0gZXJzdGVsbHRlcyBOYWNobGFzc3ZlcnplaWNobmlzIGVyc3BhcnQgaWhuZW4gZ2VuYXUgZGFzLjwvcD4KICAgICAgPHVsIGNsYXNzPSJwb2ludHMiPgogICAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjkiIGZpbGw9ImN1cnJlbnRDb2xvciIgb3BhY2l0eT0iLjE4Ii8+PHBhdGggZD0iTTYgMTAuM2wyLjYgMi41TDE0IDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+PHNwYW4+PGI+RWluZW4gQW5sYXNzIG51dHplbi48L2I+IEVpbiBydW5kZXIgR2VidXJ0c3RhZywgZGVyIFJ1aGVzdGFuZCBvZGVyIGVpbiBVbXp1ZyBtYWNoZW4gZGVuIEVpbnN0aWVnIGxlaWNodGVyLjwvc3Bhbj48L2xpPgogICAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjkiIGZpbGw9ImN1cnJlbnRDb2xvciIgb3BhY2l0eT0iLjE4Ii8+PHBhdGggZD0iTTYgMTAuM2wyLjYgMi41TDE0IDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+PHNwYW4+PGI+R2VtZWluc2FtIGhpbnNldHplbi48L2I+IEVpbmUgUGVyc29uIHRpcHB0LCBkaWUgYW5kZXJlIGVyesOkaGx0LiBNaXQgZGVtIFN0YXJ0ZXIgc2VpZCBpaHIgc2NobmVsbCBkdXJjaC48L3NwYW4+PC9saT4KICAgICAgICA8bGk+PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSI5IiBmaWxsPSJjdXJyZW50Q29sb3IiIG9wYWNpdHk9Ii4xOCIvPjxwYXRoIGQ9Ik02IDEwLjNsMi42IDIuNUwxNCA3LjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPjxzcGFuPjxiPkVpbiBWZXJ6ZWljaG5pcyBwcm8gUGVyc29uLjwvYj4gT2JlbiBkZW4gTmFtZW4gZWludHJhZ2VuLCBQREYgZXJzdGVsbGVuLCBTaWNoZXJ1bmcgc3BlaWNoZXJuLiBEYW5hY2ggbWl0IOKAnkFsbGUgQW5nYWJlbiBsw7ZzY2hlbuKAnCBkYXMgbsOkY2hzdGUgYmVnaW5uZW4uPC9zcGFuPjwvbGk+CiAgICAgICAgPGxpPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOSIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTgiLz48cGF0aCBkPSJNNiAxMC4zbDIuNiAyLjVMMTQgNy41IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz48c3Bhbj48Yj5MaWViZXIgYXVmIFBhcGllcj88L2I+IERpZSBQREYtVm9ybGFnZSB6dW0gQXVzZHJ1Y2tlbiBpc3QgZ2VuYXUgZGFmw7xyIGdlbWFjaHQuPC9zcGFuPjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2Rpdj5gfQoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iIGlkPSJwcml2YWN5U2VjdGlvbiI+CiAgICAgIDxwIGNsYXNzPSJsYWJlbCI+PHNwYW4gY2xhc3M9ImRvdCIgc3R5bGU9Ii0tYzp2YXIoLS1taW50KSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj5EYXRlbnNjaHV0ejwvcD4KICAgICAgPGgzPkRlaW5lIERhdGVuIGJsZWliZW4gYmVpIGRpcjwvaDM+CiAgICAgIDx1bCBjbGFzcz0icG9pbnRzIj4KICAgICAgICA8bGk+PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSI5IiBmaWxsPSJjdXJyZW50Q29sb3IiIG9wYWNpdHk9Ii4xOCIvPjxwYXRoIGQ9Ik02IDEwLjNsMi42IDIuNUwxNCA3LjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPjxzcGFuPjxiPktlaW4gS29udG8sIGtlaW4gVXBsb2FkLjwvYj4gV2FzIGR1IGhpZXIgZWludHLDpGdzdCwgd2lyZCBuaWNodCBhbiBDbGltYiBvZGVyIHNvbnN0IGplbWFuZGVuIGdlc2VuZGV0LiBXaXIga8O2bm5lbiBkZWluZSBBbmdhYmVuIG5pY2h0IHNlaGVuLjwvc3Bhbj48L2xpPgogICAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjkiIGZpbGw9ImN1cnJlbnRDb2xvciIgb3BhY2l0eT0iLjE4Ii8+PHBhdGggZD0iTTYgMTAuM2wyLjYgMi41TDE0IDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+PHNwYW4+PGI+TnVyIGF1ZiBkZWluZW0gR2Vyw6R0LjwvYj4gRGllIEVpbnRyw6RnZSBsaWVnZW4gaW0gU3BlaWNoZXIgZGllc2VzIEJyb3dzZXJzLCBkYW1pdCBzaWUgYmVpbSBuw6RjaHN0ZW4gQmVzdWNoIG5vY2ggZGEgc2luZC4gTWl0IOKAnkFsbGUgQW5nYWJlbiBsw7ZzY2hlbuKAnCB3ZWl0ZXIgdW50ZW4gZW50ZmVybnN0IGR1IHNpZS48L3NwYW4+PC9saT4KICAgICAgICA8bGk+PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSI5IiBmaWxsPSJjdXJyZW50Q29sb3IiIG9wYWNpdHk9Ii4xOCIvPjxwYXRoIGQ9Ik02IDEwLjNsMi42IDIuNUwxNCA3LjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPjxzcGFuPjxiPkRhcyBQREYgZW50c3RlaHQgYXVmIGRlaW5lbSBHZXLDpHQuPC9iPiBFcyB3aXJkIGRpcmVrdCBpbiBkZWluZW0gQnJvd3NlciBlcnpldWd0LCBuaWNodCBhdWYgZWluZW0gU2VydmVyLjwvc3Bhbj48L2xpPgogICAgICAgIDxsaT48c3ZnIHZpZXdCb3g9IjAgMCAyMCAyMCIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjkiIGZpbGw9ImN1cnJlbnRDb2xvciIgb3BhY2l0eT0iLjE4Ii8+PHBhdGggZD0iTTYgMTAuM2wyLjYgMi41TDE0IDcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+PHNwYW4+PGI+U2VsYnN0IHByw7xmZW46PC9iPiDDlmZmbmUgZGllIFNlaXRlIHVuZCB0cmVubmUgZGFuYWNoIGRpZSBJbnRlcm5ldHZlcmJpbmR1bmcuIEF1c2bDvGxsZW4sIFNwZWljaGVybiB1bmQgUERGLUV4cG9ydCBmdW5rdGlvbmllcmVuIHdlaXRlciwgd2VpbCBuaWNodHMgw7xiZXJ0cmFnZW4gd2VyZGVuIG11c3MuPC9zcGFuPjwvbGk+CiAgICAgICAgPGxpPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOSIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTgiLz48cGF0aCBkPSJNNiAxMC4zbDIuNiAyLjVMMTQgNy41IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz48c3Bhbj48Yj5LZWluZSBmcmVtZGVuIFNlcnZlci48L2I+IFNjaHJpZnQgdW5kIFBERi1GdW5rdGlvbiBzaW5kIGluIGRpZSBTZWl0ZSBlaW5nZWJhdXQuIEJlaW0gw5ZmZm5lbiB3ZXJkZW4ga2VpbmUgSW5oYWx0ZSB2b24gR29vZ2xlIG9kZXIgYW5kZXJlbiBBbmJpZXRlcm4gbmFjaGdlbGFkZW4uPC9zcGFuPjwvbGk+CiAgICAgICAgPGxpPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOSIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTgiLz48cGF0aCBkPSJNNiAxMC4zbDIuNiAyLjVMMTQgNy41IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz48c3Bhbj48Yj5HZW1laW5zYW0gZ2VudXR6dGVyIENvbXB1dGVyPzwvYj4gQXJiZWl0ZSBpbiBlaW5lbSBwcml2YXRlbiBCcm93c2VyZmVuc3RlciBvZGVyIGzDtnNjaGUgZGVpbmUgQW5nYWJlbiBuYWNoIGRlbSBFeHBvcnQuIFBERiB1bmQgU2ljaGVydW5nc2RhdGVpIGVudGhhbHRlbiBhbGxlcyBpbSBLbGFydGV4dCwgYmV3YWhyZSBzaWUgZ3V0IGF1Zi48L3NwYW4+PC9saT4KICAgICAgPC91bD4KICAgICAgPHAgY2xhc3M9ImludHJvIiBzdHlsZT0ibWFyZ2luLXRvcDoyMnB4Ij48YiBzdHlsZT0iY29sb3I6I2ZmZiI+TGllYmVyIG5pY2h0cyBvbmxpbmUgZWluZ2ViZW4\/PC9iPiBMYWRlIGVpbmUgbGVlcmUgVm9ybGFnZSBoZXJ1bnRlciB1bmQgZsO8bGxlIHNpZSBhbSBDb21wdXRlciBvZGVyIHZvbiBIYW5kIGF1cy48L3A+CiAgICAgIDxkaXYgY2xhc3M9InRwbC1saXN0Ij4KICAgICAgICA8YSBjbGFzcz0idHBsIiBkYXRhLXRwbD0ieGxzeCIgaHJlZj0iaHR0cHM6Ly9nb2NsaW1iLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOS9OYWNobGFzc3ZlcnplaWNobmlzLVZvcmxhZ2UueGxzeCIgZG93bmxvYWQ+PHNwYW4gY2xhc3M9ImljIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1taW50KSI+WExTPC9zcGFuPjxzcGFuPjxiPkV4Y2VsLVZvcmxhZ2U8L2I+PHNtYWxsPk1pdCBBdXN3YWhsbGlzdGVuIHVuZCBhdXRvbWF0aXNjaGVuIFN1bW1lbjwvc21hbGw+PC9zcGFuPjwvYT4KICAgICAgICA8YSBjbGFzcz0idHBsIiBkYXRhLXRwbD0icGRmIiBocmVmPSJodHRwczovL2dvY2xpbWIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA5L05hY2hsYXNzdmVyemVpY2huaXMtVm9ybGFnZS5wZGYiIGRvd25sb2FkPjxzcGFuIGNsYXNzPSJpYyIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0teWVsbG93KSI+UERGPC9zcGFuPjxzcGFuPjxiPlBERiB6dW0gQXVzZHJ1Y2tlbjwvYj48c21hbGw+RWluZSBTZWl0ZSBwcm8gUmVnaXN0ZXIsIHp1bSBBdXNmw7xsbGVuIHBlciBIYW5kPC9zbWFsbD48L3NwYW4+PC9hPgogICAgICAgIDxhIGNsYXNzPSJ0cGwgb25seS13ZWIiIGhyZWY9ImluZGV4Lmh0bWwiIGRvd25sb2FkPSJOYWNobGFzc3ZlcnplaWNobmlzLW9mZmxpbmUuaHRtbCI+PHNwYW4gY2xhc3M9ImljIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1za3kpIj5IVE1MPC9zcGFuPjxzcGFuPjxiPkRpZXNlcyBUb29sIGhlcnVudGVybGFkZW48L2I+PHNtYWxsPkltIEJyb3dzZXIgw7ZmZm5lbiwgZnVua3Rpb25pZXJ0IGdhbnogb2huZSBJbnRlcm5ldDwvc21hbGw+PC9zcGFuPjwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPHAgY2xhc3M9ImxhYmVsIj5TaWNoZXJ1bmc8L3A+CiAgICAgIDxoMz4ke2lzRXJiZmFsbCgpID8gIlNpY2hlcnVuZyIgOiAiU2ljaGVydW5nIHVuZCBFcmlubmVydW5nIn08L2gzPgogICAgICA8cCBjbGFzcz0iaW50cm8iPkRlaW5lIEFuZ2FiZW4gbGllZ2VuIG51ciBpbiBkaWVzZW0gQnJvd3Nlci4gV2VubiBkdSBCcm93c2VyZGF0ZW4gbMO2c2Noc3Qgb2RlciBkYXMgR2Vyw6R0IHdlY2hzZWxzdCwgc2luZCBzaWUgd2VnLiBTcGVpY2hlcmUgZGVzaGFsYiBhYiB1bmQgenUgZWluZSBTaWNoZXJ1bmdzZGF0ZWkuIE1pdCBQYXNzd29ydCB3aXJkIHNpZSBhdWYgZGVpbmVtIEdlcsOkdCB2ZXJzY2hsw7xzc2VsdCAoQUVTLTI1NiksIG9obmUgUGFzc3dvcnQga2FubiBzaWUgbmllbWFuZCDDtmZmbmVuLCBhdWNoIHdpciBuaWNodC48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSJtYXgtd2lkdGg6NTIwcHg7bWFyZ2luLXRvcDoxNnB4Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJmdWxsIj48bGFiZWwgY2xhc3M9ImZsIiBmb3I9ImJrUHciPlBhc3N3b3J0IGbDvHIgZGllIFNpY2hlcnVuZzwvbGFiZWw+CiAgICAgICAgPGlucHV0IGlkPSJia1B3IiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJuZXctcGFzc3dvcmQiIHBsYWNlaG9sZGVyPSJtaW5kZXN0ZW5zIDggWmVpY2hlbiI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzb2xpZCIgZGF0YS1iYWNrdXA+VmVyc2NobMO8c3NlbHQgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtcmVzdG9yZT5TaWNoZXJ1bmcgbGFkZW48L2J1dHRvbj4KICAgICAgICAke2lzRXJiZmFsbCgpID8gIiIgOiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIGRhdGEtaWNzPkrDpGhybGljaGUgRXJpbm5lcnVuZzwvYnV0dG9uPmB9CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iaGludCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjAiPlBhc3N3b3J0IHZlcmdlc3NlbiBoZWnDn3QgU2ljaGVydW5nIHZlcmxvcmVuLiA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxpbmtidG4gcXVpZXQiIGRhdGEtYmFja3VwLXBsYWluPk9obmUgUGFzc3dvcnQgc3BlaWNoZXJuPC9idXR0b24+PC9wPgogICAgICA8ZGl2IGNsYXNzPSJ1bmxvY2siIGlkPSJ1bmxvY2tCb3giIGhpZGRlbj4KICAgICAgICA8bGFiZWwgY2xhc3M9ImZsIiBmb3I9InVubG9ja1B3Ij5EaWVzZSBTaWNoZXJ1bmcgaXN0IHZlcnNjaGzDvHNzZWx0LiBQYXNzd29ydCBlaW5nZWJlbjo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9InJvdzIiPjxpbnB1dCBpZD0idW5sb2NrUHciIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNvbGlkIiBkYXRhLXVubG9jaz5FbnRzcGVycmVuPC9idXR0b24+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIiBzdHlsZT0ibWFyZ2luLXRvcDoyNnB4Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBkYW5nZXIiIGRhdGEtd2lwZT5BbGxlIEFuZ2FiZW4gbMO2c2NoZW48L2J1dHRvbj48L2Rpdj4KICAgIDwvZGl2PgogICAgPHAgY2xhc3M9ImZpbmUiPkRpZXNlcyBUb29sIGVyc2V0enQga2VpbmUgcmVjaHRsaWNoZSBCZXJhdHVuZy4gVGVzdGFtZW50LCBWb3Jzb3JnZXZvbGxtYWNodCB1bmQgUGF0aWVudGVudmVyZsO8Z3VuZyBoYWJlbiBlaWdlbmUgRm9ybXZvcnNjaHJpZnRlbi4gSGllciBow6RsdHN0IGR1IG51ciBmZXN0LCB3byBzaWUgbGllZ2VuLjwvcD5gOwp9CgpmdW5jdGlvbiBzdW1tYXJ5SW5uZXIoYywgZSl7CiAgY29uc3Qgc3ViID0gW2UucHJvdmlkZXIsIGUucmVmXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKSB8fCAoZS5hY3Rpb24gPyBhY3RTaG9ydChjKSArICI6ICIgKyBlLmFjdGlvbiA6ICJOb2NoIGtlaW5lIERldGFpbHMiKTsKICBjb25zdCB2ID0gKGMuZmllbGRzLnZhbHVlICYmIGUudmFsdWUpID8gZm10KHBhcnNlTW9uZXkoZS52YWx1ZSkpICsgKGMua2luZCA9PT0gIm1vbnRobHkiID8gIiAvIE1vbmF0IiA6ICIiKSA6ICIiOwogIHJldHVybiBgPHNwYW4gY2xhc3M9ImRvdCIgc3R5bGU9Ii0tYzoke2MuY29sb3J9IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJlLXRpdGxlIj4ke2VzYyhlLnRpdGxlIHx8ICJPaG5lIEJlemVpY2hudW5nIil9PC9zcGFuPjxzcGFuIGNsYXNzPSJlLXN1YiI+JHtlc2Moc3ViKX08L3NwYW4+PHNwYW4gY2xhc3M9ImUtdmFsIj4ke2VzYyh2KX08L3NwYW4+JHtjYXJldH1gOwp9CgpmdW5jdGlvbiBlbnRyeUh0bWwoYywgZSl7CiAgY29uc3Qgb3BlbiA9IG9wZW5TZXQuaGFzKGUuaWQpOwogIGNvbnN0IGZsZCA9IChrLCB0eXBlLCBmdWxsKSA9PiB7CiAgICBjb25zdCBmID0gYy5maWVsZHNba107CiAgICBpZiAoIWYpIHJldHVybiAiIjsKICAgIGNvbnN0IGlkID0gYGYtJHtlLmlkfS0ke2t9YCwgdmFsID0gZXNjKGVba10pLCBwaCA9IGYucGggPyBgIHBsYWNlaG9sZGVyPSIke2VzYyhmLnBoKX0iYCA6ICIiOwogICAgY29uc3QgaW5wdXQgPSB0eXBlID09PSAidGV4dGFyZWEiCiAgICAgID8gYDx0ZXh0YXJlYSBpZD0iJHtpZH0iIGRhdGEtZj0iJHtrfSIgcm93cz0iMiIke3BofT4ke3ZhbH08L3RleHRhcmVhPmAKICAgICAgOiBgPGlucHV0IGlkPSIke2lkfSIgZGF0YS1mPSIke2t9IiB0eXBlPSJ0ZXh0IiR7dHlwZSA9PT0gIm1vbmV5IiA\/ICcgaW5wdXRtb2RlPSJkZWNpbWFsIicgOiAiIn0ke3BofSB2YWx1ZT0iJHt2YWx9IiBhdXRvY29tcGxldGU9Im9mZiI+YDsKICAgIHJldHVybiBgPGRpdiBjbGFzcz0iJHtmdWxsID8gImZ1bGwiIDogIiJ9Ij48bGFiZWwgY2xhc3M9ImZsIiBmb3I9IiR7aWR9Ij4ke2VzYyhmLmxhYmVsKX08L2xhYmVsPiR7aW5wdXR9PC9kaXY+YDsKICB9OwogIGNvbnN0IGFjdGlvbiA9IGMuYWN0aW9ucyA\/IGA8ZGl2PjxsYWJlbCBjbGFzcz0iZmwiIGZvcj0iZi0ke2UuaWR9LWFjdGlvbiI+JHtlc2MoYWN0TGFiZWwoYykpfTwvbGFiZWw+CiAgICAgIDxzZWxlY3QgaWQ9ImYtJHtlLmlkfS1hY3Rpb24iIGRhdGEtZj0iYWN0aW9uIj48b3B0aW9uIHZhbHVlPSIiPk5vY2ggb2ZmZW48L29wdGlvbj4ke2MuYWN0aW9ucy5tYXAoYSA9PiBgPG9wdGlvbiR7ZS5hY3Rpb24gPT09IGEgPyAiIHNlbGVjdGVkIiA6ICIifT4ke2VzYyhhKX08L29wdGlvbj5gKS5qb2luKCIiKX08L3NlbGVjdD48L2Rpdj5gIDogIiI7CiAgcmV0dXJuIGA8bGkgY2xhc3M9ImVudHJ5JHtvcGVuID8gIiBvcGVuIiA6ICIifSIgZGF0YS1pZD0iJHtlc2MoZS5pZCl9Ij4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZW50cnktc3VtIiBhcmlhLWV4cGFuZGVkPSIke29wZW59IiBhcmlhLWNvbnRyb2xzPSJlZC0ke2VzYyhlLmlkKX0iPiR7c3VtbWFyeUlubmVyKGMsIGUpfTwvYnV0dG9uPgogICAgPGRpdiBjbGFzcz0iZW50cnktZWRpdCIgaWQ9ImVkLSR7ZXNjKGUuaWQpfSIke29wZW4gPyAiIiA6ICIgaGlkZGVuIn0+CiAgICAgIDxkaXYgY2xhc3M9ImdyaWQiPgogICAgICAgICR7ZmxkKCJ0aXRsZSIpfSR7ZmxkKCJwcm92aWRlciIpfSR7ZmxkKCJyZWYiKX0ke2ZsZCgidmFsdWUiLCJtb25leSIpfSR7ZmxkKCJkb2NzIil9JHthY3Rpb259CiAgICAgICAgJHtmbGQoImFjY2VzcyIsInRleHRhcmVhIix0cnVlKX0KICAgICAgICA8ZGl2IGNsYXNzPSJmdWxsIj48bGFiZWwgY2xhc3M9ImZsIiBmb3I9ImYtJHtlLmlkfS1ub3RlIj5Bbm1lcmt1bmc8L2xhYmVsPjx0ZXh0YXJlYSBpZD0iZi0ke2UuaWR9LW5vdGUiIGRhdGEtZj0ibm90ZSIgcm93cz0iMiI+JHtlc2MoZS5ub3RlKX08L3RleHRhcmVhPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYWN0aW9ucyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIGRhdGEtZG9uZT5GZXJ0aWc8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBkYW5nZXIiIGRhdGEtZGVsPkVpbnRyYWcgbMO2c2NoZW48L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2xpPmA7Cn0KCmZ1bmN0aW9uIHJlbmRlckNhdChjKXsKICBjb25zdCBpdGVtcyA9IGxpc3QoYy5pZCk7CiAgY29uc3QgbnggPSBuZXh0VGFiT2YoYy5pZCk7CiAgY29uc3QgdmlzID0gdmlzaWJsZUNhdHMoKTsKICBjb25zdCBpZHggPSB2aXMuaW5kZXhPZihjKSArIDE7CiAgY29uc3QgaGlkZGVuID0gaXNFcmJmYWxsKCkgPyAwIDogQ0FUUy5maWx0ZXIoeCA9PiAheC5lcmJmYWxsT25seSkubGVuZ3RoIC0gdmlzLmZpbHRlcih4ID0+ICF4LmVyYmZhbGxPbmx5KS5sZW5ndGg7CiAgcGFuZWwuaW5uZXJIVE1MID0gYAogICAgPGRpdiBjbGFzcz0ic3RhZ2UtaGVhZCI+CiAgICAgIDxwIGNsYXNzPSJsYWJlbCI+PHNwYW4gY2xhc3M9ImRvdCIgc3R5bGU9Ii0tYzoke2MuY29sb3J9IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPlJlZ2lzdGVyICR7aWR4fSB2b24gJHt2aXMubGVuZ3RofTwvcD4KICAgICAgPGgyPiR7ZXNjKGMubmFtZSl9PC9oMj4KICAgICAgPHAgY2xhc3M9ImludHJvIj4ke2VzYyhjLmludHJvKX08L3A+CiAgICA8L2Rpdj4KICAgICR7Yy5oaW50ID8gYDxwIGNsYXNzPSJ3YXJuIj4ke2VzYyhjLmhpbnQpfTwvcD5gIDogIiJ9CiAgICAke2MudGlwcyA\/IGA8ZGV0YWlscyBjbGFzcz0idGlwcyI+PHN1bW1hcnk+R3V0IHp1IHdpc3Nlbjwvc3VtbWFyeT48dWw+JHtjLnRpcHMubWFwKHQgPT4gYDxsaT48Yj4ke2VzYyh0WzBdKX08L2I+ICR7ZXNjKHRbMV0pfTwvbGk+YCkuam9pbigiIil9PC91bD48L2RldGFpbHM+YCA6ICIifQogICAgPGRpdiBjbGFzcz0iZ3JvdXAiPgogICAgICA8cCBjbGFzcz0ibGFiZWwiPkhpbnp1ZsO8Z2VuPC9wPgogICAgICA8ZGl2IGNsYXNzPSJxdWljayI+CiAgICAgICAgJHtjLnF1aWNrLm1hcChxID0+IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNoaXAiIGRhdGEtcXVpY2s9IiR7ZXNjKHEpfSI+PHNwYW4gY2xhc3M9InBsdXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj4rPC9zcGFuPiR7ZXNjKHEpfTwvYnV0dG9uPmApLmpvaW4oIiIpfQogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2hpcCBvd24iIGRhdGEtcXVpY2s9IiI+PHNwYW4gY2xhc3M9InBsdXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj4rPC9zcGFuPkVpZ2VuZXIgRWludHJhZzwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZ3JvdXAiPgogICAgICA8cCBjbGFzcz0ibGFiZWwiPkVpbnRyw6RnZTwvcD4KICAgICAgJHtpdGVtcy5sZW5ndGggPyBgPHVsIGNsYXNzPSJlbnRyaWVzIj4ke2l0ZW1zLm1hcChlID0+IGVudHJ5SHRtbChjLCBlKSkuam9pbigiIil9PC91bD5gCiAgICAgICAgOiBgPHAgY2xhc3M9ImVtcHR5Ij5Ob2NoIG5pY2h0cyBlaW5nZXRyYWdlbi4gV8OkaGxlIG9iZW4gZWluZW4gVm9yc2NobGFnIG9kZXIgbGVnZSBlaW5lbiBlaWdlbmVuIEVpbnRyYWcgYW4uIFRyaWZmdCBuaWNodHMgZGF2b24gYXVmIGRpY2ggenUsIGxhc3MgZGFzIFJlZ2lzdGVyIGVpbmZhY2ggbGVlci48L3A+YH0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibmV4dC1yb3ciPgogICAgICAke254ID8gYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNvbGlkIiBkYXRhLW5leHQ9IiR7bnguaWR9Ij5XZWl0ZXIgenUgJHtlc2Mobnguc2hvcnQpfTwvYnV0dG9uPmAKICAgICAgICA6IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzb2xpZCBqcy1wZGYiPlBERiBlcnN0ZWxsZW48L2J1dHRvbj4ke2hpZGRlbiA\/IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgZGF0YS1zY29wZT0iZnVsbCI+JHtoaWRkZW59IHdlaXRlcmUgUmVnaXN0ZXIgYW56ZWlnZW48L2J1dHRvbj5gIDogYDxzcGFuIGNsYXNzPSJpbnRybyI+RGFzIHdhciBkYXMgbGV0enRlIFJlZ2lzdGVyLjwvc3Bhbj5gfWB9CiAgICA8L2Rpdj5gOwp9Cgpjb25zdCBJU19XRUIgPSAvXmh0dHBzPzokLy50ZXN0KGxvY2F0aW9uLnByb3RvY29sKTsKZnVuY3Rpb24gcmVuZGVyUGFuZWwoKXsKICBpZiAoY3VycmVudCA9PT0gImRlY2tibGF0dCIpIHJlbmRlckRlY2tibGF0dCgpOwogIGVsc2UgcmVuZGVyQ2F0KENBVFtjdXJyZW50XSk7CiAgaWYgKCFJU19XRUIpIHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5vbmx5LXdlYiIpLmZvckVhY2goZWwgPT4gZWwucmVtb3ZlKCkpOwp9CmZ1bmN0aW9uIHJlbmRlckFsbCgpeyByZW5kZXJOYXYoKTsgcmVuZGVyUGFuZWwoKTsgcmVuZGVyU3VtbWFyeSgpOyB9CgpmdW5jdGlvbiBnbyhpZCl7CiAgY3VycmVudCA9IGlkOwogIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKFVJX0tFWSwgaWQpOyB9IGNhdGNoKGUpe30KICByZW5kZXJOYXYoKTsKICByZW5kZXJQYW5lbCgpOwogIGNvbnN0IGFjdGl2ZSA9IG5hdkVsLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWN1cnJlbnQ9InRydWUiXScpOwogIGlmIChhY3RpdmUgJiYgYWN0aXZlLnNjcm9sbEludG9WaWV3KSBhY3RpdmUuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0IiwgaW5saW5lOiJuZWFyZXN0In0pOwogIGNvbnN0IHRvcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5sYXlvdXQiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIDQ7CiAgaWYgKHdpbmRvdy5zY3JvbGxZID4gdG9wKSB3aW5kb3cuc2Nyb2xsVG8oe3RvcH0pOwogIHBhbmVsLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOnRydWV9KTsKfQoKLyogLS0tLS0tLS0tLSBFcmVpZ25pc3NlIC0tLS0tLS0tLS0gKi8KbmF2RWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBldiA9PiB7CiAgY29uc3QgbSA9IGV2LnRhcmdldC5jbG9zZXN0KCJbZGF0YS1zY29wZV0iKTsKICBpZiAobSl7IHNldFNjb3BlKG0uZGF0YXNldC5zY29wZSk7IHJldHVybjsgfQogIGNvbnN0IGIgPSBldi50YXJnZXQuY2xvc2VzdCgiW2RhdGEtdGFiXSIpOwogIGlmIChiKSBnbyhiLmRhdGFzZXQudGFiKTsKfSk7CgpwYW5lbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ID0+IHsKICBjb25zdCB0ID0gZXYudGFyZ2V0OwogIGNvbnN0IG5leHRCdG4gPSB0LmNsb3Nlc3QoIltkYXRhLW5leHRdIik7CiAgaWYgKG5leHRCdG4peyBnbyhuZXh0QnRuLmRhdGFzZXQubmV4dCk7IHJldHVybjsgfQoKICBjb25zdCBxID0gdC5jbG9zZXN0KCJbZGF0YS1xdWlja10iKTsKICBpZiAocSl7CiAgICBjb25zdCBjID0gQ0FUW2N1cnJlbnRdOwogICAgY29uc3QgZSA9IHtpZDogdWlkKCl9OwogICAgZm9yIChjb25zdCBrIG9mIEVOVFJZX0tFWVMpIGVba10gPSAiIjsKICAgIGUudGl0bGUgPSBxLmRhdGFzZXQucXVpY2s7CiAgICBsaXN0KGMuaWQpLnB1c2goZSk7CiAgICBvcGVuU2V0LmNsZWFyKCk7CiAgICBvcGVuU2V0LmFkZChlLmlkKTsKICAgIHJlbmRlclBhbmVsKCk7IHJlbmRlck5hdigpOyByZW5kZXJTdW1tYXJ5KCk7IHNhdmUoKTsKICAgIGNvbnN0IGxpID0gcGFuZWwucXVlcnlTZWxlY3RvcihgW2RhdGEtaWQ9IiR7ZS5pZH0iXWApOwogICAgaWYgKGxpKSBsaS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QifSk7CiAgICBjb25zdCBpbnAgPSBwYW5lbC5xdWVyeVNlbGVjdG9yKGAjZi0ke2UuaWR9LSR7ZS50aXRsZSA\/ICJwcm92aWRlciIgOiAidGl0bGUifWApIHx8IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoYCNmLSR7ZS5pZH0tdGl0bGVgKTsKICAgIGlmIChpbnApIGlucC5mb2N1cyh7cHJldmVudFNjcm9sbDp0cnVlfSk7CiAgICByZXR1cm47CiAgfQoKICBjb25zdCBsaSA9IHQuY2xvc2VzdCgiLmVudHJ5Iik7CiAgaWYgKGxpKXsKICAgIGNvbnN0IGlkID0gbGkuZGF0YXNldC5pZDsKICAgIGNvbnN0IHRvZ2dsZSA9IHQuY2xvc2VzdCgiLmVudHJ5LXN1bSIpOwogICAgY29uc3QgZG9uZSA9IHQuY2xvc2VzdCgiW2RhdGEtZG9uZV0iKTsKICAgIGNvbnN0IGRlbCA9IHQuY2xvc2VzdCgiW2RhdGEtZGVsXSIpOwogICAgaWYgKHRvZ2dsZSB8fCBkb25lKXsKICAgICAgY29uc3Qgb3BlbiA9IHRvZ2dsZSA\/ICFvcGVuU2V0LmhhcyhpZCkgOiBmYWxzZTsKICAgICAgaWYgKG9wZW4pIG9wZW5TZXQuYWRkKGlkKTsgZWxzZSBvcGVuU2V0LmRlbGV0ZShpZCk7CiAgICAgIGxpLmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iLCBvcGVuKTsKICAgICAgbGkucXVlcnlTZWxlY3RvcigiLmVudHJ5LXN1bSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsIFN0cmluZyhvcGVuKSk7CiAgICAgIGxpLnF1ZXJ5U2VsZWN0b3IoIi5lbnRyeS1lZGl0IikuaGlkZGVuID0gIW9wZW47CiAgICAgIGlmIChkb25lKSBsaS5xdWVyeVNlbGVjdG9yKCIuZW50cnktc3VtIikuZm9jdXMoKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGRlbCl7CiAgICAgIGlmICghYXJtQnV0dG9uKGRlbCwgIldpcmtsaWNoIGzDtnNjaGVuPyIpKSByZXR1cm47CiAgICAgIGNvbnN0IGFyciA9IGxpc3QoY3VycmVudCk7CiAgICAgIGNvbnN0IGkgPSBhcnIuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaWQpOwogICAgICBpZiAoaSA+IC0xKSBhcnIuc3BsaWNlKGksIDEpOwogICAgICBvcGVuU2V0LmRlbGV0ZShpZCk7CiAgICAgIHJlbmRlclBhbmVsKCk7IHJlbmRlck5hdigpOyByZW5kZXJTdW1tYXJ5KCk7IHNhdmUoKTsKICAgICAgc2F5KCJFaW50cmFnIGdlbMO2c2NodC4iKTsKICAgICAgcmV0dXJuOwogICAgfQogIH0KCiAgY29uc3QgcHUgPSB0LmNsb3Nlc3QoIltkYXRhLXB1cnBvc2VdIik7CiAgaWYgKHB1KXsgc2V0UHVycG9zZShwdS5kYXRhc2V0LnB1cnBvc2UpOyByZXR1cm47IH0KICBjb25zdCBzYyA9IHQuY2xvc2VzdCgiW2RhdGEtc2NvcGVdIik7CiAgaWYgKHNjKXsgc2V0U2NvcGUoc2MuZGF0YXNldC5zY29wZSk7IHJldHVybjsgfQogIGlmICh0LmNsb3Nlc3QoIltkYXRhLWJhY2t1cF0iKSl7IHNhdmVCYWNrdXAodHJ1ZSk7IHJldHVybjsgfQogIGlmICh0LmNsb3Nlc3QoIltkYXRhLWJhY2t1cC1wbGFpbl0iKSl7IHNhdmVCYWNrdXAoZmFsc2UpOyByZXR1cm47IH0KICBpZiAodC5jbG9zZXN0KCJbZGF0YS11bmxvY2tdIikpeyB1bmxvY2tCYWNrdXAoKTsgcmV0dXJuOyB9CiAgaWYgKHQuY2xvc2VzdCgiW2RhdGEtcmVzdG9yZV0iKSl7ICQoIiNpbXBvcnRGaWxlIikuY2xpY2soKTsgcmV0dXJuOyB9CiAgY29uc3Qgd2lwZSA9IHQuY2xvc2VzdCgiW2RhdGEtd2lwZV0iKTsKICBpZiAod2lwZSl7CiAgICBpZiAoIWFybUJ1dHRvbih3aXBlLCAiV2lya2xpY2ggYWxsZXMgbMO2c2NoZW4\/IikpIHJldHVybjsKICAgIHN0YXRlID0gYmxhbmsoKTsgb3BlblNldC5jbGVhcigpOwogICAgc2F2ZSgpOyByZW5kZXJBbGwoKTsKICAgIHNheSgiQWxsZSBBbmdhYmVuIGdlbMO2c2NodC4iKTsKICB9Cn0pOwoKcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGV2ID0+IHsKICBpZiAoZXYua2V5ID09PSAiRW50ZXIiICYmIGV2LnRhcmdldC5pZCA9PT0gInVubG9ja1B3Iil7IGV2LnByZXZlbnREZWZhdWx0KCk7IHVubG9ja0JhY2t1cCgpOyB9Cn0pOwpwYW5lbC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGV2ID0+IHsKICBjb25zdCBlbCA9IGV2LnRhcmdldDsKICBpZiAoIWVsLmRhdGFzZXQucCAmJiAhZWwuZGF0YXNldC5mKSByZXR1cm47CiAgaWYgKGVsLmRhdGFzZXQucCl7CiAgICBzdGF0ZS5wZXJzb25bZWwuZGF0YXNldC5wXSA9IGVsLnZhbHVlOwogICAgc2F2ZSgpOwogICAgcmV0dXJuOwogIH0KICBpZiAoZWwuZGF0YXNldC5mKXsKICAgIGNvbnN0IGxpID0gZWwuY2xvc2VzdCgiLmVudHJ5Iik7CiAgICBpZiAoIWxpKSByZXR1cm47CiAgICBjb25zdCBjID0gQ0FUW2N1cnJlbnRdOwogICAgY29uc3QgZSA9IGxpc3QoYy5pZCkuZmluZCh4ID0+IHguaWQgPT09IGxpLmRhdGFzZXQuaWQpOwogICAgaWYgKCFlKSByZXR1cm47CiAgICBlW2VsLmRhdGFzZXQuZl0gPSBlbC52YWx1ZTsKICAgIGxpLnF1ZXJ5U2VsZWN0b3IoIi5lbnRyeS1zdW0iKS5pbm5lckhUTUwgPSBzdW1tYXJ5SW5uZXIoYywgZSk7CiAgICBpZiAoZWwuZGF0YXNldC5mID09PSAidmFsdWUiKSByZW5kZXJTdW1tYXJ5KCk7CiAgICBzYXZlKCk7CiAgfQp9KTsKcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZXYgPT4gewogIGlmIChldi50YXJnZXQudGFnTmFtZSA9PT0gIlNFTEVDVCIpIGV2LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiaW5wdXQiLCB7YnViYmxlczp0cnVlfSkpOwp9KTsKCiQoIiNpbXBvcnRGaWxlIikuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZXYgPT4gewogIGNvbnN0IGZpbGUgPSBldi50YXJnZXQuZmlsZXMgJiYgZXYudGFyZ2V0LmZpbGVzWzBdOwogIGV2LnRhcmdldC52YWx1ZSA9ICIiOwogIGlmICghZmlsZSkgcmV0dXJuOwogIGNvbnN0IHIgPSBuZXcgRmlsZVJlYWRlcigpOwogIHIub25sb2FkID0gKCkgPT4gewogICAgdHJ5IHsKICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoU3RyaW5nKHIucmVzdWx0KSk7CiAgICAgIGlmIChkYXRhICYmIGRhdGEuZW5jcnlwdGVkICYmIGRhdGEuZGF0YSl7CiAgICAgICAgcGVuZGluZ0JhY2t1cCA9IGRhdGE7CiAgICAgICAgaWYgKGN1cnJlbnQgIT09ICJkZWNrYmxhdHQiKSBnbygiZGVja2JsYXR0Iik7CiAgICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVubG9ja0JveCIpOwogICAgICAgIGlmIChib3gpeyBib3guaGlkZGVuID0gZmFsc2U7IGJveC5zY3JvbGxJbnRvVmlldyh7YmxvY2s6ImNlbnRlciJ9KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVubG9ja1B3IikuZm9jdXMoKTsgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICJvYmplY3QiIHx8ICghZGF0YS5lbnRyaWVzICYmICFkYXRhLnBlcnNvbikpIHRocm93IG5ldyBFcnJvcigiZm9ybWF0Iik7CiAgICAgIGFwcGx5QmFja3VwKGRhdGEpOwogICAgfSBjYXRjaChlKXsKICAgICAgc2F5KCJEaWVzZSBEYXRlaSBpc3Qga2VpbmUgZ8O8bHRpZ2UgU2ljaGVydW5nIGRlcyBOYWNobGFzc3ZlcnplaWNobmlzc2VzLiIpOwogICAgfQogIH07CiAgci5vbmVycm9yID0gKCkgPT4gc2F5KCJEaWUgRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuLiIpOwogIHIucmVhZEFzVGV4dChmaWxlKTsKfSk7CgovKiAtLS0tLS0tLS0tIERvd25sb2FkcyAtLS0tLS0tLS0tICovCmNvbnN0IGRsUHJvbWlzZSA9ICh3aW5kb3cuY2xhdWRlICYmIHR5cGVvZiB3aW5kb3cuY2xhdWRlLnVzZSA9PT0gImZ1bmN0aW9uIikKICA\/IHdpbmRvdy5jbGF1ZGUudXNlKCJkb3dubG9hZHMiKS5jYXRjaCgoKSA9PiBudWxsKQogIDogUHJvbWlzZS5yZXNvbHZlKG51bGwpOwoKZnVuY3Rpb24gZmlsZVNsdWcoKXsKICBjb25zdCBuID0gKHN0YXRlLnBlcnNvbi5uYW1lIHx8ICIiKS50cmltKCkucmVwbGFjZSgvXHMrL2csICItIikucmVwbGFjZSgvW15ccHtMfVxwe059LV0vZ3UsICIiKTsKICByZXR1cm4gbiA\/ICJfIiArIG4gOiAiIjsKfQpmdW5jdGlvbiByZXBvcnRTYXZlRXJyb3IoZXJyKXsKICBjb25zdCBjb2RlID0gZXJyICYmIGVyci5jb2RlOwogIGlmIChjb2RlID09PSAiZGVjbGluZWQiKSBzYXkoIlNwZWljaGVybiBhYmdlYnJvY2hlbi4iKTsKICBlbHNlIGlmIChjb2RlID09PSAicmF0ZV9saW1pdGVkIikgc2F5KCJFcyBpc3Qgc2Nob24gZWluIFNwZWljaGVyLURpYWxvZyBvZmZlbi4iKTsKICBlbHNlIGlmIChjb2RlID09PSAidG9vX2xhcmdlIikgc2F5KCJEaWUgRGF0ZWkgaXN0IHp1IGdyb8OfIGbDvHIgZGllc2VuIFNwZWljaGVyb3J0LiIpOwogIGVsc2UgeyBjb25zb2xlLmVycm9yKGVycik7IHNheSgiRGllIERhdGVpIGtvbm50ZSBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW4uIik7IH0KfQphc3luYyBmdW5jdGlvbiBvZmZlckZpbGUoZmlsZW5hbWUsIGRhdGEsIGZhbGxiYWNrKXsKICBjb25zdCBkbCA9IGF3YWl0IGRsUHJvbWlzZTsKICBpZiAoZGwpewogICAgY29uc3QgcmVzID0gYXdhaXQgZGwuc2F2ZSh7ZmlsZW5hbWUsIGRhdGF9KTsKICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9PT0gInNhdmVkIikgc2F5KCJHZXNwZWljaGVydDogIiArIGZpbGVuYW1lKTsKICB9IGVsc2UgewogICAgZmFsbGJhY2soKTsKICAgIHNheSgiRGF0ZWkgZXJzdGVsbHQ6ICIgKyBmaWxlbmFtZSk7CiAgfQp9CgpmdW5jdGlvbiBibG9iRG93bmxvYWQoYmxvYiwgbmFtZSl7CiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOyBhLmhyZWYgPSB1cmw7IGEuZG93bmxvYWQgPSBuYW1lOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7IGEuY2xpY2soKTsgYS5yZW1vdmUoKTsKICBzZXRUaW1lb3V0KCgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKSwgMjAwMCk7Cn0KCi8qIFZlcnNjaGzDvHNzZWx1bmc6IFBCS0RGMi1TSEEyNTYgKyBBRVMtMjU2LUdDTSwgYWxsZXMgbG9rYWwgKi8KY29uc3QgSVRFUiA9IDMxMDAwMDsKY29uc3QgdGUgPSBuZXcgVGV4dEVuY29kZXIoKSwgdGQgPSBuZXcgVGV4dERlY29kZXIoKTsKY29uc3QgaGFzQ3J5cHRvID0gISEod2luZG93LmNyeXB0byAmJiBjcnlwdG8uc3VidGxlKTsKZnVuY3Rpb24gdG9CNjQoYnVmKXsKICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7IGxldCBiaW4gPSAiIjsKICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAweDgwMDApIGJpbiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzLnN1YmFycmF5KGksIGkgKyAweDgwMDApKTsKICByZXR1cm4gYnRvYShiaW4pOwp9CmZ1bmN0aW9uIGZyb21CNjQoc3RyKXsKICBjb25zdCBiaW4gPSBhdG9iKHN0cik7IGNvbnN0IG91dCA9IG5ldyBVaW50OEFycmF5KGJpbi5sZW5ndGgpOwogIGZvciAobGV0IGkgPSAwOyBpIDwgYmluLmxlbmd0aDsgaSsrKSBvdXRbaV0gPSBiaW4uY2hhckNvZGVBdChpKTsKICByZXR1cm4gb3V0Owp9CmFzeW5jIGZ1bmN0aW9uIGRlcml2ZUtleShwdywgc2FsdCwgaXRlcil7CiAgY29uc3QgYmFzZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCB0ZS5lbmNvZGUocHcpLCAiUEJLREYyIiwgZmFsc2UsIFsiZGVyaXZlS2V5Il0pOwogIHJldHVybiBjcnlwdG8uc3VidGxlLmRlcml2ZUtleSh7bmFtZToiUEJLREYyIiwgc2FsdCwgaXRlcmF0aW9uczppdGVyLCBoYXNoOiJTSEEtMjU2In0sIGJhc2UsIHtuYW1lOiJBRVMtR0NNIiwgbGVuZ3RoOjI1Nn0sIGZhbHNlLCBbImVuY3J5cHQiLCJkZWNyeXB0Il0pOwp9CmxldCBwZW5kaW5nQmFja3VwID0gbnVsbDsKCmZ1bmN0aW9uIGFwcGx5QmFja3VwKGRhdGEpewogIHN0YXRlID0gbm9ybWFsaXplKGRhdGEpOyBvcGVuU2V0LmNsZWFyKCk7CiAgZmx1c2goKTsgcmVuZGVyQWxsKCk7CiAgc2F5KCJTaWNoZXJ1bmcgZ2VsYWRlbi4iKTsKfQoKYXN5bmMgZnVuY3Rpb24gc2F2ZUJhY2t1cChlbmNyeXB0KXsKICBjb25zdCBwbGFpbiA9IEpTT04uc3RyaW5naWZ5KE9iamVjdC5hc3NpZ24oe2FwcDoibm90ZmFsbG9yZG5lciIsIHZlcnNpb246MSwgZXhwb3J0ZWQ6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSwgc3RhdGUpKTsKICBsZXQgb3V0ID0gcGxhaW47CiAgaWYgKGVuY3J5cHQpewogICAgY29uc3QgcHdFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJia1B3Iik7CiAgICBjb25zdCBwdyA9IHB3RWwgPyBwd0VsLnZhbHVlIDogIiI7CiAgICBpZiAocHcubGVuZ3RoIDwgOCl7IHNheSgiQml0dGUgZWluIFBhc3N3b3J0IG1pdCBtaW5kZXN0ZW5zIDggWmVpY2hlbiBlaW5nZWJlbi4iKTsgaWYgKHB3RWwpIHB3RWwuZm9jdXMoKTsgcmV0dXJuOyB9CiAgICBpZiAoIWhhc0NyeXB0byl7IHNheSgiVmVyc2NobMO8c3NlbHVuZyB3aXJkIGluIGRpZXNlbSBCcm93c2VyIG5pY2h0IHVudGVyc3TDvHR6dC4iKTsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWx0ID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxNikpOwogICAgY29uc3QgaXYgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEyKSk7CiAgICBjb25zdCBrZXkgPSBhd2FpdCBkZXJpdmVLZXkocHcsIHNhbHQsIElURVIpOwogICAgY29uc3QgY3QgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6IkFFUy1HQ00iLCBpdn0sIGtleSwgdGUuZW5jb2RlKHBsYWluKSk7CiAgICBvdXQgPSBKU09OLnN0cmluZ2lmeSh7YXBwOiJub3RmYWxsb3JkbmVyIiwgdmVyc2lvbjoyLCBlbmNyeXB0ZWQ6dHJ1ZSwga2RmOiJQQktERjItU0hBMjU2IiwgaXRlcmF0aW9uczpJVEVSLCBjaXBoZXI6IkFFUy0yNTYtR0NNIiwKICAgICAgc2FsdDp0b0I2NChzYWx0KSwgaXY6dG9CNjQoaXYpLCBkYXRhOnRvQjY0KGN0KX0pOwogIH0KICBjb25zdCBuYW1lID0gYE5hY2hsYXNzdmVyemVpY2huaXMtU2ljaGVydW5nJHtlbmNyeXB0ID8gIi12ZXJzY2hsdWVzc2VsdCIgOiAiIn0ke2ZpbGVTbHVnKCl9XyR7dG9kYXlJc28oKX0uanNvbmA7CiAgdHJ5IHsKICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbb3V0XSwge3R5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSk7CiAgICBhd2FpdCBvZmZlckZpbGUobmFtZSwgYmxvYiwgKCkgPT4gYmxvYkRvd25sb2FkKGJsb2IsIG5hbWUpKTsKICAgIGlmIChlbmNyeXB0KXsgY29uc3QgcHdFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJia1B3Iik7IGlmIChwd0VsKSBwd0VsLnZhbHVlID0gIiI7IH0KICB9IGNhdGNoKGVycil7IHJlcG9ydFNhdmVFcnJvcihlcnIpOyB9Cn0KCmFzeW5jIGZ1bmN0aW9uIHVubG9ja0JhY2t1cCgpewogIGNvbnN0IHB3RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidW5sb2NrUHciKTsKICBpZiAoIXBlbmRpbmdCYWNrdXAgfHwgIXB3RWwpIHJldHVybjsKICBpZiAoIWhhc0NyeXB0byl7IHNheSgiRW50c2NobMO8c3NlbG4gd2lyZCBpbiBkaWVzZW0gQnJvd3NlciBuaWNodCB1bnRlcnN0w7x0enQuIik7IHJldHVybjsgfQogIHRyeSB7CiAgICBjb25zdCBiID0gcGVuZGluZ0JhY2t1cDsKICAgIGNvbnN0IGtleSA9IGF3YWl0IGRlcml2ZUtleShwd0VsLnZhbHVlLCBmcm9tQjY0KGIuc2FsdCksIE51bWJlcihiLml0ZXJhdGlvbnMpIHx8IElURVIpOwogICAgY29uc3QgcHQgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlY3J5cHQoe25hbWU6IkFFUy1HQ00iLCBpdjpmcm9tQjY0KGIuaXYpfSwga2V5LCBmcm9tQjY0KGIuZGF0YSkpOwogICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodGQuZGVjb2RlKHB0KSk7CiAgICBwZW5kaW5nQmFja3VwID0gbnVsbDsKICAgIGFwcGx5QmFja3VwKGRhdGEpOwogIH0gY2F0Y2goZSl7CiAgICBzYXkoIkRhcyBQYXNzd29ydCBwYXNzdCBuaWNodCB6dSBkaWVzZXIgU2ljaGVydW5nLiIpOwogICAgcHdFbC5zZWxlY3QoKTsKICB9Cn0KCi8qIErDpGhybGljaGUgRXJpbm5lcnVuZyBhbHMgS2FsZW5kZXJkYXRlaSAqLwpmdW5jdGlvbiBpY3NGaWxlKCl7CiAgY29uc3QgZCA9IG5ldyBEYXRlKCk7IGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgMSk7CiAgY29uc3QgeW1kID0geCA9PiBgJHt4LmdldEZ1bGxZZWFyKCl9JHtTdHJpbmcoeC5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKX0ke1N0cmluZyh4LmdldERhdGUoKSkucGFkU3RhcnQoMiwiMCIpfWA7CiAgY29uc3QgZW5kID0gbmV3IERhdGUoZCk7IGVuZC5zZXREYXRlKGVuZC5nZXREYXRlKCkgKyAxKTsKICBjb25zdCBzdGFtcCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9bLTpdL2csICIiKS5yZXBsYWNlKC9cLlxkezN9LywgIiIpOwogIGNvbnN0IHdobyA9IHN0YXRlLnBlcnNvbi5uYW1lID8gIiAoIiArIHN0YXRlLnBlcnNvbi5uYW1lLnJlcGxhY2UoL1ssO1xcXS9nLCAiICIpICsgIikiIDogIiI7CiAgcmV0dXJuIFsKICAgICJCRUdJTjpWQ0FMRU5EQVIiLCAiVkVSU0lPTjoyLjAiLCAiUFJPRElEOi0vL0NsaW1iLy9OYWNobGFzc3ZlcnplaWNobmlzLy9ERSIsICJDQUxTQ0FMRTpHUkVHT1JJQU4iLCAiTUVUSE9EOlBVQkxJU0giLAogICAgIkJFR0lOOlZFVkVOVCIsCiAgICAiVUlEOiIgKyB1aWQoKSArICJAbmFjaGxhc3N2ZXJ6ZWljaG5pcy5nb2NsaW1iLmNvbSIsCiAgICAiRFRTVEFNUDoiICsgc3RhbXAsCiAgICAiRFRTVEFSVDtWQUxVRT1EQVRFOiIgKyB5bWQoZCksCiAgICAiRFRFTkQ7VkFMVUU9REFURToiICsgeW1kKGVuZCksCiAgICAiUlJVTEU6RlJFUT1ZRUFSTFkiLAogICAgIlNVTU1BUlk6TmFjaGxhc3N2ZXJ6ZWljaG5pcyBha3R1YWxpc2llcmVuIiArIHdobywKICAgICJERVNDUklQVElPTjpFaW5tYWwgaW0gSmFociBwcsO8ZmVuOiBTdGltbWVuIEtvbnRha3RlXFwsIEtvbnRlblxcLCBWZXJ0csOkZ2UgdW5kIFZlcnNpY2hlcnVuZ2VuIG5vY2g\/IERhbmFjaCBlaW4gbmV1ZXMgUERGIGVyc3RlbGxlbiB1bmQgZGllIGFsdGUgVmVyc2lvbiBlcnNldHplbi4iLAogICAgIlRSQU5TUDpUUkFOU1BBUkVOVCIsCiAgICAiQkVHSU46VkFMQVJNIiwgIkFDVElPTjpESVNQTEFZIiwgIkRFU0NSSVBUSU9OOk5hY2hsYXNzdmVyemVpY2huaXMgYWt0dWFsaXNpZXJlbiIsICJUUklHR0VSOlBUOUgiLCAiRU5EOlZBTEFSTSIsCiAgICAiRU5EOlZFVkVOVCIsICJFTkQ6VkNBTEVOREFSIgogIF0ubWFwKGZvbGRMaW5lKS5qb2luKCJcclxuIikgKyAiXHJcbiI7Cn0KZnVuY3Rpb24gZm9sZExpbmUobGluZSl7CiAgY29uc3Qgb3V0ID0gW107IGxldCBjdXIgPSAiIiwgYnl0ZXMgPSAwOwogIGZvciAoY29uc3QgY2ggb2YgbGluZSl7CiAgICBjb25zdCBuID0gdGUuZW5jb2RlKGNoKS5sZW5ndGg7CiAgICBpZiAoYnl0ZXMgKyBuID4gNzMpeyBvdXQucHVzaChjdXIpOyBjdXIgPSAiICI7IGJ5dGVzID0gMTsgfQogICAgY3VyICs9IGNoOyBieXRlcyArPSBuOwogIH0KICBvdXQucHVzaChjdXIpOwogIHJldHVybiBvdXQuam9pbigiXHJcbiIpOwp9CmFzeW5jIGZ1bmN0aW9uIHNhdmVSZW1pbmRlcigpewogIGNvbnN0IG5hbWUgPSAiTmFjaGxhc3N2ZXJ6ZWljaG5pcy1FcmlubmVydW5nLmljcyI7CiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtpY3NGaWxlKCldLCB7dHlwZToidGV4dC9jYWxlbmRhciJ9KTsKICB0cnkgeyBhd2FpdCBvZmZlckZpbGUobmFtZSwgYmxvYiwgKCkgPT4gYmxvYkRvd25sb2FkKGJsb2IsIG5hbWUpKTsgfQogIGNhdGNoKGVycil7IHJlcG9ydFNhdmVFcnJvcihlcnIpOyB9Cn0KCi8qIEFic2NobHVzcy1IaW53ZWlzIG5hY2ggZGVtIFBERiAqLwpjb25zdCBkb25lRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG9uZSIpOwpsZXQgbGFzdEZvY3VzID0gbnVsbDsKZnVuY3Rpb24gc2hvd0RvbmUoKXsKICBjb25zdCBlID0gaXNFcmJmYWxsKCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRvbmVCb2R5IikuaW5uZXJIVE1MID0gZSA\/IGAKICAgIDxwIGNsYXNzPSJsYWJlbCI+PHNwYW4gY2xhc3M9ImRvdCIgc3R5bGU9Ii0tYzp2YXIoLS1taW50KSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj5HZXNwZWljaGVydDwvcD4KICAgIDxoMiBpZD0iZG9uZVRpdGxlIj5EZWluIE5hY2hsYXNzdmVyemVpY2huaXMgaXN0IGZlcnRpZzwvaDI+CiAgICA8b2wgY2xhc3M9InN0ZXBzIj4KICAgICAgPGxpPjxiPkJlbGVnZSBkYXp1bGVnZW4uPC9iPiBLb250b2F1c3rDvGdlLCBHdXRhY2h0ZW4gdW5kIFJlY2hudW5nZW4gZ2Vow7ZyZW4genVtIFZlcnplaWNobmlzLjwvbGk+CiAgICAgIDxsaT48Yj5XZWl0ZXJnZWJlbiwgd28gZXMgZ2VicmF1Y2h0IHdpcmQuPC9iPiBBbiBNaXRlcmJlbiwgUGZsaWNodHRlaWxzYmVyZWNodGlndGUsIGRhcyBOYWNobGFzc2dlcmljaHQgb2RlciBkYXMgRmluYW56YW10LjwvbGk+CiAgICAgIDxsaT48Yj5PZmZlbmUgUHVua3RlIGFiYXJiZWl0ZW4uPC9iPiBJbiBkZXIgU3BhbHRlIOKAnlp1IGVybGVkaWdlbuKAnCBzaWVoc3QgZHUsIHdhcyBub2NoIGdla8O8bmRpZ3Qgb2RlciBnZWtsw6RydCB3ZXJkZW4gbXVzcy48L2xpPgogICAgPC9vbD4KICAgIDxwIGNsYXNzPSJmaW5lIiBzdHlsZT0ibWFyZ2luLXRvcDoxOHB4Ij5CZWkgRnJhZ2VuIHp1IFBmbGljaHR0ZWlsLCBFcmJzY2hlaW4gb2RlciBFcmJzY2hhZnRzdGV1ZXIgaGlsZnQgZWluZSBGYWNoYW53w6RsdGluIG9kZXIgZWluIEZhY2hhbndhbHQgZsO8ciBFcmJyZWNodC48L3A+YCA6IGAKICAgIDxwIGNsYXNzPSJsYWJlbCI+PHNwYW4gY2xhc3M9ImRvdCIgc3R5bGU9Ii0tYzp2YXIoLS1taW50KSIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj5HZXNjaGFmZnQ8L3A+CiAgICA8aDIgaWQ9ImRvbmVUaXRsZSI+RGVpbiBOYWNobGFzc3ZlcnplaWNobmlzIGlzdCBmZXJ0aWc8L2gyPgogICAgPG9sIGNsYXNzPSJzdGVwcyI+CiAgICAgIDxsaT48Yj5BdXNkcnVja2VuIHVuZCBhYmhlZnRlbi48L2I+IEFtIGJlc3RlbiB6dSBkZW4gT3JpZ2luYWxlbiwgYXVmIGRpZSBlcyB2ZXJ3ZWlzdC48L2xpPgogICAgICA8bGk+PGI+QWJsYWdlb3J0IHZlcnJhdGVuLjwvYj4gU2FnIGRlaW5lciBWZXJ0cmF1ZW5zcGVyc29uLCB3byBkYXMgVmVyemVpY2huaXMgbGllZ3QuPC9saT4KICAgICAgPGxpPjxiPkVpbm1hbCBpbSBKYWhyIHByw7xmZW4uPC9iPiA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImxpbmtidG4iIGRhdGEtaWNzPkVyaW5uZXJ1bmcgaW4gZGVuIEthbGVuZGVyIGxlZ2VuPC9idXR0b24+PC9saT4KICAgIDwvb2w+CiAgICA8ZGl2IGNsYXNzPSJjdGEiPgogICAgICA8cCBjbGFzcz0iayI+Vm9uIENsaW1iPC9wPgogICAgICA8aDM+w5xiZXJibGljayBoYXN0IGR1IGpldHp0LiBVbmQgaW0gQWxsdGFnPzwvaDM+CiAgICAgIDxwPkRpZSBDbGltYi1BcHAgaGlsZnQgZGlyIG1pdCBrdXJ6ZW4gdMOkZ2xpY2hlbiBJbXB1bHNlbiB1bmQgQ2hhbGxlbmdlcywgYmVzc2VyZSBHZWxkZ2V3b2huaGVpdGVuIGF1Znp1YmF1ZW4sIGdhbnogb2huZSBGYWNoY2hpbmVzaXNjaC48L3A+CiAgICAgIDxhIGNsYXNzPSJidG4gc29saWQiIGhyZWY9IiR7ZXNjKEFQUF9VUkwpfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkNsaW1iLUFwcCBlbnRkZWNrZW48L2E+CiAgICA8L2Rpdj5gOwogIGxhc3RGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgZG9uZUVsLmhpZGRlbiA9IGZhbHNlOwogIGRvbmVFbC5xdWVyeVNlbGVjdG9yKCIuZG9uZS14IikuZm9jdXMoKTsKfQpmdW5jdGlvbiBoaWRlRG9uZSgpewogIGRvbmVFbC5oaWRkZW4gPSB0cnVlOwogIGlmIChsYXN0Rm9jdXMgJiYgbGFzdEZvY3VzLmZvY3VzKSBsYXN0Rm9jdXMuZm9jdXMoKTsKfQpkb25lRWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBldiA9PiB7CiAgaWYgKGV2LnRhcmdldCA9PT0gZG9uZUVsIHx8IGV2LnRhcmdldC5jbG9zZXN0KCJbZGF0YS1jbG9zZV0iKSkgaGlkZURvbmUoKTsKfSk7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBldiA9PiB7CiAgaWYgKGV2LmtleSA9PT0gIkVzY2FwZSIgJiYgIWRvbmVFbC5oaWRkZW4pIGhpZGVEb25lKCk7Cn0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV2ID0+IHsKICBpZiAoZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWljc10iKSkgc2F2ZVJlbWluZGVyKCk7Cn0pOwoKLyogLS0tLS0tLS0tLSBQREYgLS0tLS0tLS0tLSAqLwpjb25zdCBQREZfQ0hBUlMgPSAi4oKs4oCaxpLigJ7igKbigKDLhsWg4oC5xZLFveKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk8W+xbjiiJIiOwpmdW5jdGlvbiBjbGVhbihzKXsKICByZXR1cm4gQXJyYXkuZnJvbShTdHJpbmcocyA9PSBudWxsID8gIiIgOiBzKSkubWFwKGNoID0+IHsKICAgIGNvbnN0IGMgPSBjaC5jb2RlUG9pbnRBdCgwKTsKICAgIGlmIChjID09PSAweDIwMkYgfHwgYyA9PT0gMHgyMDA5IHx8IGMgPT09IDB4MjAwNykgcmV0dXJuICIgIjsKICAgIGlmIChjIDwgMjU2IHx8IFBERl9DSEFSUy5pbmNsdWRlcyhjaCkpIHJldHVybiBjaDsKICAgIHJldHVybiAiIjsKICB9KS5qb2luKCIiKTsKfQpmdW5jdGlvbiByZ2IoaGV4KXsKICBjb25zdCBtID0gaGV4LnJlcGxhY2UoIiMiLCAiIik7CiAgcmV0dXJuIFtwYXJzZUludChtLnNsaWNlKDAsMiksMTYpLCBwYXJzZUludChtLnNsaWNlKDIsNCksMTYpLCBwYXJzZUludChtLnNsaWNlKDQsNiksMTYpXTsKfQpjb25zdCBtaXggPSAoYSwgYiwgdCkgPT4gYS5tYXAoKHYsIGkpID0+IE1hdGgucm91bmQodiArIChiW2ldIC0gdikgKiB0KSk7CmZ1bmN0aW9uIHZhbHVlSGVhZChjKXsKICByZXR1cm4ge2Fzc2V0OiJXZXJ0IiwgbGlhYmlsaXR5OiJCZXRyYWciLCBtb250aGx5OiLigqwgLyBNb25hdCIsIGluZm86IlN1bW1lIiwgZ2lmdDoiV2VydCJ9W2Mua2luZF0gfHwgIldlcnQiOwp9CmZ1bmN0aW9uIGRldGFpbFRleHQoYywgZSl7CiAgY29uc3QgcGFydHMgPSBbXTsKICBmb3IgKGNvbnN0IGsgb2YgWyJwcm92aWRlciIsInJlZiIsImRvY3MiLCJhY2Nlc3MiXSl7CiAgICBjb25zdCBmID0gYy5maWVsZHNba10sIHYgPSAoZVtrXSB8fCAiIikudHJpbSgpOwogICAgaWYgKGYgJiYgdikgcGFydHMucHVzaCgoZi5zaG9ydCA\/IGYuc2hvcnQgKyAiOiAiIDogIiIpICsgdik7CiAgfQogIHJldHVybiBwYXJ0cy5qb2luKCJcbiIpOwp9CgpmdW5jdGlvbiBidWlsZFBkZihvcHRzKXsKICBjb25zdCBibGFuayA9ICEhKG9wdHMgJiYgb3B0cy5ibGFuayk7CiAgY29uc3QgeyBqc1BERiB9ID0gd2luZG93LmpzcGRmOwogIGNvbnN0IGRvYyA9IG5ldyBqc1BERih7dW5pdDoibW0iLCBmb3JtYXQ6ImE0IiwgY29tcHJlc3M6dHJ1ZX0pOwogIGlmICh0eXBlb2YgZG9jLmF1dG9UYWJsZSAhPT0gImZ1bmN0aW9uIikgdGhyb3cgbmV3IEVycm9yKCJhdXRvdGFibGUgbWlzc2luZyIpOwogIGxldCBGT05UID0gImhlbHZldGljYSI7CiAgdHJ5IHsKICAgIGRvYy5hZGRGaWxlVG9WRlMoIkRNU2Fucy1SZWd1bGFyLnR0ZiIsIEZPTlRfUkVHKTsKICAgIGRvYy5hZGRGb250KCJETVNhbnMtUmVndWxhci50dGYiLCAiRE1TYW5zIiwgIm5vcm1hbCIpOwogICAgZG9jLmFkZEZpbGVUb1ZGUygiRE1TYW5zLVNlbWlCb2xkLnR0ZiIsIEZPTlRfQk9MRCk7CiAgICBkb2MuYWRkRm9udCgiRE1TYW5zLVNlbWlCb2xkLnR0ZiIsICJETVNhbnMiLCAiYm9sZCIpOwogICAgZG9jLnNldEZvbnQoIkRNU2FucyIsICJub3JtYWwiKTsKICAgIEZPTlQgPSAiRE1TYW5zIjsKICB9IGNhdGNoKGUpeyBjb25zb2xlLndhcm4oIlNjaHJpZnQgbmljaHQgZ2VsYWRlbiIsIGUpOyB9CgogIGNvbnN0IFcgPSBkb2MuaW50ZXJuYWwucGFnZVNpemUuZ2V0V2lkdGgoKSwgSCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRIZWlnaHQoKTsKICBjb25zdCBNID0gMTg7CiAgY29uc3QgVE9QID0gcmdiKCIjMkM3Q0MwIiksIEJPVFRPTSA9IHJnYigiIzFCNEE4OCIpOwogIGNvbnN0IE5BVlkgPSBbMjcsNzQsMTM2XSwgVEVYVCA9IFsyOCw0Myw2NF0sIFNPRlQgPSBbOTYsMTE0LDEzOF0sIExJTkUgPSBbMjE0LDIyNiwyNDBdLCBIRUFEID0gWzIzNCwyNDIsMjUxXSwgWkVCUkEgPSBbMjQ3LDI1MCwyNTRdLCBXSElURSA9IFsyNTUsMjU1LDI1NV0sIFlFTExPVyA9IHJnYigiI0ZGQzQ2QiIpLCBDT1JBTCA9IHJnYigiI0UwNjU0RiIpOwogIGNvbnN0IHAgPSBibGFuayA\/IHt9IDogc3RhdGUucGVyc29uOwogIGNvbnN0IGVyYiA9ICFibGFuayAmJiBpc0VyYmZhbGwoKTsKICBjb25zdCBzdGFuZCA9IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCJkZS1ERSIsIHtkYXk6IjItZGlnaXQiLCBtb250aDoiMi1kaWdpdCIsIHllYXI6Im51bWVyaWMifSk7CiAgZG9jLnNldFByb3BlcnRpZXMoe3RpdGxlOiBjbGVhbihibGFuayA\/ICJOYWNobGFzc3ZlcnplaWNobmlzIOKAkyBWb3JsYWdlIiA6ICJOYWNobGFzc3ZlcnplaWNobmlzIiArIChwLm5hbWUgPyAiIOKAkyAiICsgcC5uYW1lIDogIiIpKSwgc3ViamVjdDoiTmFjaGxhc3N2ZXJ6ZWljaG5pcyIsIGNyZWF0b3I6IkNsaW1iIOKAkyBnb2NsaW1iLmNvbSJ9KTsKCiAgY29uc3QgYmFzZSA9IHtmb250OkZPTlQsIGZvbnRTaXplOjguNiwgdGV4dENvbG9yOlRFWFQsIGxpbmVDb2xvcjpMSU5FLCBsaW5lV2lkdGg6MC4yLCBjZWxsUGFkZGluZzoyLjMsIHZhbGlnbjoidG9wIiwgb3ZlcmZsb3c6ImxpbmVicmVhayJ9OwogIGNvbnN0IGhlYWRpbmcgPSAodGV4dCwgY29sb3IsIHkpID0+IHsKICAgIGRvYy5zZXRGaWxsQ29sb3IoLi4uY29sb3IpOyBkb2MuY2lyY2xlKE0gKyAxLjYsIHkgLSAxLjUsIDEuNiwgIkYiKTsKICAgIGRvYy5zZXRGb250KEZPTlQsICJib2xkIik7IGRvYy5zZXRGb250U2l6ZSgxMi41KTsgZG9jLnNldFRleHRDb2xvciguLi5OQVZZKTsKICAgIGRvYy50ZXh0KGNsZWFuKHRleHQpLCBNICsgNS41LCB5KTsKICB9OwogIGNvbnN0IGxvZ28gPSAoeCwgeSwgc2l6ZSwgZmcsIGJnKSA9PiB7CiAgICBkb2Muc2V0Rm9udChGT05ULCAiYm9sZCIpOyBkb2Muc2V0Rm9udFNpemUoc2l6ZSk7IGRvYy5zZXRUZXh0Q29sb3IoLi4uZmcpOwogICAgZG9jLnRleHQoIkNsaW1iIiwgeCwgeSk7CiAgICBjb25zdCB3ID0gZG9jLmdldFRleHRXaWR0aCgiQ2xpbWIiKTsKICAgIGNvbnN0IGJ3ID0gc2l6ZSAqIDAuMiwgYmggPSBzaXplICogMC4xOwogICAgZG9jLnNldEZpbGxDb2xvciguLi5mZyk7IGRvYy5yb3VuZGVkUmVjdCh4ICsgdyArIDAuOCwgeSAtIHNpemUgKiAwLjM0LCBidywgYmgsIDAuNSwgMC41LCAiRiIpOwogICAgZG9jLnNldEZvbnRTaXplKHNpemUgKiAwLjI2KTsgZG9jLnNldFRleHRDb2xvciguLi5iZyk7CiAgICBkb2MudGV4dCgiQVBQIiwgeCArIHcgKyAwLjggKyBidyAvIDIsIHkgLSBzaXplICogMC4zNCArIGJoICogMC43NCwge2FsaWduOiJjZW50ZXIifSk7CiAgfTsKCiAgLy8gS29wZmJhbmQgbWl0IFZlcmxhdWYKICBjb25zdCBiYW5kSCA9IGJsYW5rID8gNTAgOiA2MjsKICBjb25zdCBzdGVwcyA9IDYyOwogIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcHM7IGkrKyl7CiAgICBkb2Muc2V0RmlsbENvbG9yKC4uLm1peChUT1AsIEJPVFRPTSwgaSAvIChzdGVwcyAtIDEpKSk7CiAgICBkb2MucmVjdCgwLCAoYmFuZEggLyBzdGVwcykgKiBpLCBXLCBiYW5kSCAvIHN0ZXBzICsgMC4yLCAiRiIpOwogIH0KICBsb2dvKE0sIDE4LCAxNywgV0hJVEUsIE5BVlkpOwogIGRvYy5zZXRGb250KEZPTlQsICJib2xkIik7IGRvYy5zZXRGb250U2l6ZSg5KTsgZG9jLnNldFRleHRDb2xvciguLi5XSElURSk7CiAgZG9jLnRleHQoImdvY2xpbWIuY29tIiwgVyAtIE0sIDE3LCB7YWxpZ246InJpZ2h0In0pOwogIGRvYy5zZXRGb250KEZPTlQsICJib2xkIik7IGRvYy5zZXRGb250U2l6ZSgyNyk7IGRvYy5zZXRUZXh0Q29sb3IoLi4uV0hJVEUpOwogIGRvYy50ZXh0KGJsYW5rIHx8IGVyYiA\/ICJOYWNobGFzc3ZlcnplaWNobmlzIiA6ICJNZWluIE5hY2hsYXNzdmVyemVpY2huaXMiLCBNLCBibGFuayA\/IDM0IDogNDApOwogIGRvYy5zZXRGb250KEZPTlQsICJub3JtYWwiKTsgZG9jLnNldEZvbnRTaXplKDExKTsgZG9jLnNldFRleHRDb2xvcigyMTQsMjMwLDI0Nik7CiAgY29uc3Qgc3ViID0gYmxhbmsgPyAiVm9ybGFnZSB6dW0gQXVzZsO8bGxlbiB2b24gSGFuZCIKICAgIDogZXJiID8gKCJkZXIvZGVzIiArIChwLnRvZCA\/ICIgYW0gIiArIGZtdERhdGUocC50b2QpIDogIiIpICsgIiB2ZXJzdG9yYmVuZW4gIiArIChwLm5hbWUgfHwgIuKApiIpKQogICAgOiAoKHAubmFtZSA\/IHAubmFtZSArICIg4oCTICIgOiAiIikgKyAiVm9yc29yZ2Utw5xiZXJzaWNodCwgU3RhbmQgIiArIHN0YW5kKTsKICBkb2MudGV4dChjbGVhbihzdWIpLCBNLCBibGFuayA\/IDQyIDogNDkpOwoKICBsZXQgeSA9IGJhbmRIICsgMTA7CiAgY29uc3QgdnAgPSBbcC52cF9uYW1lLCBwLnZwX3RlbF0ubWFwKHMgPT4gKHMgfHwgIiIpLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiwgIik7CiAgY29uc3QgaW5mbyA9IChibGFuayA\/IFsKICAgIFsiTmFtZSIsICIiXSwgWyJHZWJ1cnRzZGF0dW0iLCAiIl0sIFsiVG9kZXN0YWcgKGZhbGxzIHp1dHJlZmZlbmQpIiwgIiJdLCBbIkFuc2NocmlmdCIsICIiXSwKICAgIFsiRXJzdGVsbHQgdm9uIC8gVmVydHJhdWVuc3BlcnNvbiIsICIiXSwgWyJVbnRlcmxhZ2VuIGxpZWdlbiIsICIiXSwgWyJTdGljaHRhZyBkZXIgV2VydGUiLCAiIl0KICBdIDogZXJiID8gWwogICAgWyJWZXJzdG9yYmVuZSBQZXJzb24iLCBwLm5hbWVdLCBbIkdlYnVydHNkYXR1bSIsIGZtdERhdGUocC5nZWJ1cnQpXSwgWyJUb2Rlc3RhZyIsIGZtdERhdGUocC50b2QpXSwgWyJMZXR6dGUgQW5zY2hyaWZ0IiwgcC5hbnNjaHJpZnRdLAogICAgWyJFcnN0ZWxsdCB2b24iLCB2cF0sIFsiT3JpZ2luYWx1bnRlcmxhZ2VuIiwgcC5vcnRdLCBbIlN0aWNodGFnIGRlciBXZXJ0ZSIsIHAudG9kID8gZm10RGF0ZShwLnRvZCkgKyAiIChUb2Rlc3RhZykiIDogIiJdLCBbIkVyc3RlbGx0IGFtIiwgc3RhbmRdCiAgXSA6IFsKICAgIFsiTmFtZSIsIHAubmFtZV0sIFsiR2VidXJ0c2RhdHVtIiwgZm10RGF0ZShwLmdlYnVydCldLCBbIkFuc2NocmlmdCIsIHAuYW5zY2hyaWZ0XSwKICAgIFsiVmVydHJhdWVuc3BlcnNvbiIsIHZwXSwgWyJBdWZiZXdhaHJ1bmdzb3J0IiwgcC5vcnRdLCBbIlN0YW5kIiwgc3RhbmRdCiAgXSkuZmlsdGVyKHIgPT4gYmxhbmsgfHwgKHJbMV0gfHwgIiIpLnRyaW0oKSkubWFwKHIgPT4gW3JbMF0sIGJsYW5rID8gIiIgOiBjbGVhbihyWzFdKV0pOwogIGRvYy5hdXRvVGFibGUoewogICAgc3RhcnRZOnksIG1hcmdpbjp7bGVmdDpNLCByaWdodDpNfSwgdGhlbWU6InBsYWluIiwgYm9keTppbmZvLAogICAgc3R5bGVzOk9iamVjdC5hc3NpZ24oe30sIGJhc2UsIHtmb250U2l6ZTo5LjUsIGxpbmVXaWR0aDowLCBjZWxsUGFkZGluZzp7dG9wOjEuNiwgYm90dG9tOjEuNiwgbGVmdDowLCByaWdodDo0fSwgbWluQ2VsbEhlaWdodDogYmxhbmsgPyA3LjYgOiAwLCB2YWxpZ246IGJsYW5rID8gImJvdHRvbSIgOiAidG9wIn0pLAogICAgY29sdW1uU3R5bGVzOnswOntjZWxsV2lkdGg6IGJsYW5rID8gNTggOiA0NCwgdGV4dENvbG9yOlNPRlR9fSwKICAgIGRpZERyYXdDZWxsOiBibGFuayA\/IChkKSA9PiB7CiAgICAgIGlmIChkLnNlY3Rpb24gPT09ICJib2R5IiAmJiBkLmNvbHVtbi5pbmRleCA9PT0gMSl7CiAgICAgICAgZG9jLnNldERyYXdDb2xvciguLi5MSU5FKTsgZG9jLnNldExpbmVXaWR0aCgwLjMpOwogICAgICAgIGRvYy5saW5lKGQuY2VsbC54LCBkLmNlbGwueSArIGQuY2VsbC5oZWlnaHQgLSAxLCBkLmNlbGwueCArIGQuY2VsbC53aWR0aCwgZC5jZWxsLnkgKyBkLmNlbGwuaGVpZ2h0IC0gMSk7CiAgICAgIH0KICAgIH0gOiB1bmRlZmluZWQKICB9KTsKICB5ID0gZG9jLmxhc3RBdXRvVGFibGUuZmluYWxZICsgKGJsYW5rID8gNiA6IDEwKTsKCiAgLy8gS2VubnphaGxlbi1LYWNoZWxuCiAgY29uc3QgdCA9IHRvdGFscygpLCBuZXQgPSB0LmFzc2V0cyAtIHQuZGVidHM7CiAgY29uc3QgdGlsZXMgPSAoYmxhbmsgPyBbWyJBa3RpdmEiLCAiIl0sIFsiUGFzc2l2YSIsICIiXSwgWyJOYWNobGFzcyBuZXR0byIsICIiXSwgWyJTY2hlbmt1bmdlbiIsICIiXV0KICAgIDogZXJiID8gW1siQWt0aXZhIiwgZm10MCh0LmFzc2V0cyldLCBbIlBhc3NpdmEiLCBmbXQwKHQuZGVidHMpXSwgWyJOYWNobGFzcyBuZXR0byIsIGZtdDAobmV0KV0sIFsiU2NoZW5rdW5nZW4iLCBmbXQwKHQuZ2lmdHMpXV0KICAgIDogW1siVmVybcO2Z2VuIiwgZm10MCh0LmFzc2V0cyldLCBbIlNjaHVsZGVuIiwgZm10MCh0LmRlYnRzKV0sIFsiTmV0dG92ZXJtw7ZnZW4iLCBmbXQwKG5ldCldLCBbIktvc3RlbiAvIE1vbmF0IiwgZm10MCh0Lm1vbnRobHkpXV0pCiAgICAubWFwKHRsID0+IGJsYW5rID8gW3RsWzBdLCAiIl0gOiB0bCk7CiAgY29uc3QgZ2FwID0gNCwgdHcgPSAoVyAtIDIgKiBNIC0gZ2FwICogMykgLyA0LCB0aCA9IGJsYW5rID8gMTYgOiAxOTsKICB0aWxlcy5mb3JFYWNoKCh0bCwgaSkgPT4gewogICAgY29uc3QgeCA9IE0gKyBpICogKHR3ICsgZ2FwKTsKICAgIGNvbnN0IHN0cm9uZyA9IGkgPT09IDI7CiAgICBkb2Muc2V0RmlsbENvbG9yKC4uLihzdHJvbmcgPyBOQVZZIDogSEVBRCkpOwogICAgZG9jLnJvdW5kZWRSZWN0KHgsIHksIHR3LCB0aCwgMywgMywgIkYiKTsKICAgIGRvYy5zZXRGb250KEZPTlQsICJub3JtYWwiKTsgZG9jLnNldEZvbnRTaXplKDcuOCk7CiAgICBkb2Muc2V0VGV4dENvbG9yKC4uLihzdHJvbmcgPyBbMjE0LDIzMCwyNDZdIDogU09GVCkpOwogICAgZG9jLnRleHQodGxbMF0sIHggKyB0dyAvIDIsIHkgKyA2LjgsIHthbGlnbjoiY2VudGVyIn0pOwogICAgZG9jLnNldEZvbnQoRk9OVCwgImJvbGQiKTsgZG9jLnNldEZvbnRTaXplKDEzKTsKICAgIGRvYy5zZXRUZXh0Q29sb3IoLi4uKHN0cm9uZyA\/IChuZXQgPCAwID8gcmdiKCIjRkY5RThBIikgOiBZRUxMT1cpIDogTkFWWSkpOwogICAgaWYgKHRsWzFdKSBkb2MudGV4dChjbGVhbih0bFsxXSksIHggKyB0dyAvIDIsIHkgKyAxNC40LCB7YWxpZ246ImNlbnRlciJ9KTsKICAgIGVsc2UgeyBkb2Muc2V0RHJhd0NvbG9yKC4uLihzdHJvbmcgPyBbMTIwLDE2MCwyMTBdIDogTElORSkpOyBkb2Muc2V0TGluZVdpZHRoKDAuMyk7IGRvYy5saW5lKHggKyA2LCB5ICsgdGggLSA0LCB4ICsgdHcgLSA2LCB5ICsgdGggLSA0KTsgfQogIH0pOwogIHkgKz0gdGggKyAoYmxhbmsgPyA5IDogMTIpOwoKICBoZWFkaW5nKCLDnGJlcnNpY2h0IiwgTkFWWSwgeSk7CiAgeSArPSA0OwogIGNvbnN0IHJvd3MgPSBDQVRTLmZpbHRlcihjID0+IGJsYW5rIHx8IGxpc3QoYy5pZCkubGVuZ3RoKS5tYXAoYyA9PiB7CiAgICBpZiAoYmxhbmspIHJldHVybiBbY2xlYW4oYy5uYW1lKSwgIiIsICIiXTsKICAgIGNvbnN0IHMgPSBzdW1PZihjKTsKICAgIGNvbnN0IHNob3dTdW0gPSBjLmtpbmQgPT09ICJhc3NldCIgfHwgYy5raW5kID09PSAibGlhYmlsaXR5IiB8fCBjLmtpbmQgPT09ICJtb250aGx5IiB8fCBjLmtpbmQgPT09ICJnaWZ0IjsKICAgIHJldHVybiBbY2xlYW4oYy5uYW1lKSwgU3RyaW5nKGxpc3QoYy5pZCkubGVuZ3RoKSwgc2hvd1N1bSAmJiBzID8gZm10KHMpICsgKGMua2luZCA9PT0gIm1vbnRobHkiID8gIiAvIE1vbmF0IiA6ICIiKSA6ICIiXTsKICB9KTsKICBpZiAoIXJvd3MubGVuZ3RoKSByb3dzLnB1c2goWyJOb2NoIGtlaW5lIEVpbnRyw6RnZSIsICIiLCAiIl0pOwogIGNvbnN0IHJpZ2h0RnJvbSA9IChjb2wpID0+IChkKSA9PiB7IGlmIChkLmNvbHVtbi5pbmRleCA+PSBjb2wpIGQuY2VsbC5zdHlsZXMuaGFsaWduID0gInJpZ2h0IjsgfTsKICBkb2MuYXV0b1RhYmxlKHsKICAgIHN0YXJ0WTp5LCBtYXJnaW46e2xlZnQ6TSwgcmlnaHQ6TSwgdG9wOjIyLCBib3R0b206MjB9LCB0aGVtZToiZ3JpZCIsCiAgICBoZWFkOltbIlJlZ2lzdGVyIiwgIkVpbnRyw6RnZSIsICJTdW1tZSJdXSwgYm9keTpyb3dzLAogICAgc3R5bGVzOiBibGFuayA\/IE9iamVjdC5hc3NpZ24oe30sIGJhc2UsIHtjZWxsUGFkZGluZzoxLjM1LCBmb250U2l6ZTo4LjJ9KSA6IGJhc2UsCiAgICBoZWFkU3R5bGVzOntmaWxsQ29sb3I6SEVBRCwgdGV4dENvbG9yOk5BVlksIGZvbnRTdHlsZToiYm9sZCJ9LAogICAgYWx0ZXJuYXRlUm93U3R5bGVzOntmaWxsQ29sb3I6WkVCUkF9LAogICAgY29sdW1uU3R5bGVzOnsxOntjZWxsV2lkdGg6MjR9LCAyOntjZWxsV2lkdGg6NDh9fSwKICAgIGRpZFBhcnNlQ2VsbDooZCkgPT4gewogICAgICByaWdodEZyb20oMSkoZCk7CiAgICAgIGlmIChkLnNlY3Rpb24gPT09ICJib2R5IiAmJiBkLmNvbHVtbi5pbmRleCA9PT0gMCl7CiAgICAgICAgY29uc3QgYyA9IENBVFMuZmluZCh4ID0+IGNsZWFuKHgubmFtZSkgPT09IGQuY2VsbC5yYXcpOwogICAgICAgIGlmIChjKSBkLmNlbGwuc3R5bGVzLmNlbGxQYWRkaW5nID0ge3RvcDoyLjMsIGJvdHRvbToyLjMsIGxlZnQ6NiwgcmlnaHQ6Mi4zfTsKICAgICAgfQogICAgfSwKICAgIGRpZERyYXdDZWxsOihkKSA9PiB7CiAgICAgIGlmIChkLnNlY3Rpb24gPT09ICJib2R5IiAmJiBkLmNvbHVtbi5pbmRleCA9PT0gMCl7CiAgICAgICAgY29uc3QgYyA9IENBVFMuZmluZCh4ID0+IGNsZWFuKHgubmFtZSkgPT09IGQuY2VsbC5yYXcpOwogICAgICAgIGlmIChjKXsgZG9jLnNldEZpbGxDb2xvciguLi5yZ2IoYy5wZGYpKTsgZG9jLmNpcmNsZShkLmNlbGwueCArIDMsIGQuY2VsbC55ICsgZC5jZWxsLmhlaWdodCAvIDIsIDEuMSwgIkYiKTsgfQogICAgICB9CiAgICB9CiAgfSk7CiAgeSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIChibGFuayA\/IDUgOiA4KTsKCiAgY29uc3Qgbm90ZSA9ICJEaWVzZXMgVmVyemVpY2huaXMgZXJzZXR6dCB3ZWRlciBUZXN0YW1lbnQgbm9jaCBWb2xsbWFjaHQuIFBhc3N3w7ZydGVyLCBQSU5zIHVuZCBUQU5zIHNpbmQgYmV3dXNzdCBuaWNodCBlbnRoYWx0ZW4uIEJpdHRlIHNpY2hlciBhdWZiZXdhaHJlbiwgZGVyIFZlcnRyYXVlbnNwZXJzb24gZGVuIEFibGFnZW9ydCBuZW5uZW4gdW5kIGRpZSBBbmdhYmVuIHJlZ2VsbcOkw59pZyBha3R1YWxpc2llcmVuLiBEaWUgU3VtbWVuIGJlcnVoZW4gYXVmIGVpZ2VuZW4gU2Now6R0enVuZ2VuLiI7CiAgZG9jLnNldEZvbnQoRk9OVCwgIm5vcm1hbCIpOyBkb2Muc2V0Rm9udFNpemUoNy44KTsgZG9jLnNldFRleHRDb2xvciguLi5TT0ZUKTsKICBjb25zdCBsaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoY2xlYW4obm90ZSksIFcgLSAyICogTSk7CiAgaWYgKHkgKyBsaW5lcy5sZW5ndGggKiAzLjYgPiBIIC0gKGJsYW5rID8gMTUgOiAyMikpeyBkb2MuYWRkUGFnZSgpOyB5ID0gMjI7IH0KICBkb2MudGV4dChsaW5lcywgTSwgeSk7CiAgeSArPSBsaW5lcy5sZW5ndGggKiAzLjY7CgogIC8vIFJlZ2lzdGVyCiAgZm9yIChjb25zdCBjIG9mIENBVFMpewogICAgY29uc3QgaXRlbXMgPSBibGFuayA\/IFtdIDogbGlzdChjLmlkKTsKICAgIGlmICghYmxhbmsgJiYgIWl0ZW1zLmxlbmd0aCkgY29udGludWU7CiAgICBpZiAoYmxhbmspeyBkb2MuYWRkUGFnZSgpOyB5ID0gMjY7IH0KICAgIGVsc2UgaWYgKHkgPiBIIC0gNjIpeyBkb2MuYWRkUGFnZSgpOyB5ID0gMjY7IH0gZWxzZSB7IHkgKz0gMTI7IH0KICAgIGhlYWRpbmcoYy5uYW1lLCByZ2IoYy5wZGYpLCB5KTsKICAgIHkgKz0gNDsKICAgIGlmIChibGFuayl7CiAgICAgIGRvYy5zZXRGb250KEZPTlQsICJub3JtYWwiKTsgZG9jLnNldEZvbnRTaXplKDcuOCk7IGRvYy5zZXRUZXh0Q29sb3IoLi4uU09GVCk7CiAgICAgIGNvbnN0IGhsID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShjbGVhbigiRGVuayB6dW0gQmVpc3BpZWwgYW46ICIgKyBjLnF1aWNrLmpvaW4oIiwgIikpLCBXIC0gMiAqIE0pOwogICAgICBkb2MudGV4dChobCwgTSwgeSArIDEuNSk7CiAgICAgIHkgKz0gaGwubGVuZ3RoICogMy40ICsgMjsKICAgIH0KICAgIGNvbnN0IGhhc1ZhbCA9ICEhYy5maWVsZHMudmFsdWU7CiAgICBjb25zdCByZW1IZWFkID0gYy5hY3Rpb25zID8gKGJsYW5rID8gKGMuYWN0aW9uU2hvcnQgfHwgIlp1IGVybGVkaWdlbiIpIDogYWN0U2hvcnQoYykpICsgIiAvIEFubWVya3VuZyIgOiAiQW5tZXJrdW5nIjsKICAgIGNvbnN0IGhlYWQgPSBoYXNWYWwgPyBbWyJCZXplaWNobnVuZyIsICJEZXRhaWxzIiwgcmVtSGVhZCwgdmFsdWVIZWFkKGMpXV0gOiBbWyJCZXplaWNobnVuZyIsICJEZXRhaWxzIiwgcmVtSGVhZF1dOwogICAgY29uc3QgYmxhbmtMYWJlbHMgPSBbInByb3ZpZGVyIiwicmVmIiwiZG9jcyIsImFjY2VzcyJdLmZpbHRlcihrID0+IGMuZmllbGRzW2tdKS5tYXAoayA9PiAoYy5maWVsZHNba10uc2hvcnQgfHwgYy5maWVsZHNba10ubGFiZWwpICsgIjoiKS5qb2luKCJcblxuIik7CiAgICBjb25zdCBibGFua1JlbSA9IGMuYWN0aW9ucyA\/IChjLmFjdGlvblNob3J0IHx8ICJadSBlcmxlZGlnZW4iKSArICI6XG4iICsgYy5hY3Rpb25zLmpvaW4oIiAvICIpICsgIlxuXG5Bbm1lcmt1bmc6IiA6ICIiOwogICAgY29uc3QgYm9keSA9IGJsYW5rID8gQXJyYXkuZnJvbSh7bGVuZ3RoOiA4fSwgKCkgPT4gaGFzVmFsID8gWyIiLCBibGFua0xhYmVscywgYmxhbmtSZW0sICIiXSA6IFsiIiwgYmxhbmtMYWJlbHMsIGJsYW5rUmVtXSkgOiBpdGVtcy5tYXAoZSA9PiB7CiAgICAgIGNvbnN0IHJlbSA9IFtlLmFjdGlvbiA\/IGFjdFNob3J0KGMpICsgIjogIiArIGUuYWN0aW9uIDogIiIsIChlLm5vdGUgfHwgIiIpLnRyaW0oKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIlxuIik7CiAgICAgIGNvbnN0IHJvdyA9IFtjbGVhbihlLnRpdGxlIHx8ICJPaG5lIEJlemVpY2hudW5nIiksIGNsZWFuKGRldGFpbFRleHQoYywgZSkpLCBjbGVhbihyZW0pXTsKICAgICAgaWYgKGhhc1ZhbCkgcm93LnB1c2goZS52YWx1ZSA\/IGZtdChwYXJzZU1vbmV5KGUudmFsdWUpKSA6ICIiKTsKICAgICAgcmV0dXJuIHJvdzsKICAgIH0pOwogICAgY29uc3Qgb3B0cyA9IHsKICAgICAgc3RhcnRZOnksIG1hcmdpbjp7bGVmdDpNLCByaWdodDpNLCB0b3A6MjIsIGJvdHRvbToyMH0sIHRoZW1lOiJncmlkIiwgcm93UGFnZUJyZWFrOiJhdm9pZCIsCiAgICAgIGhlYWQsIGJvZHksIHN0eWxlczpiYXNlLAogICAgICBoZWFkU3R5bGVzOntmaWxsQ29sb3I6SEVBRCwgdGV4dENvbG9yOk5BVlksIGZvbnRTdHlsZToiYm9sZCJ9LAogICAgICBhbHRlcm5hdGVSb3dTdHlsZXM6e2ZpbGxDb2xvcjpaRUJSQX0sCiAgICAgIGNvbHVtblN0eWxlczogaGFzVmFsCiAgICAgICAgPyB7MDp7Y2VsbFdpZHRoOjM4LCBmb250U3R5bGU6ImJvbGQifSwgMTp7Y2VsbFdpZHRoOjY2fSwgMjp7Y2VsbFdpZHRoOjQ0fSwgMzp7Y2VsbFdpZHRoOjI2fX0KICAgICAgICA6IHswOntjZWxsV2lkdGg6NDIsIGZvbnRTdHlsZToiYm9sZCJ9LCAxOntjZWxsV2lkdGg6Nzh9LCAyOntjZWxsV2lkdGg6NTR9fSwKICAgICAgZGlkUGFyc2VDZWxsOiAoZCkgPT4gewogICAgICAgIGlmIChoYXNWYWwpIHJpZ2h0RnJvbSgzKShkKTsKICAgICAgICBpZiAoYmxhbmsgJiYgZC5zZWN0aW9uID09PSAiYm9keSIgJiYgKGQuY29sdW1uLmluZGV4ID09PSAxIHx8IGQuY29sdW1uLmluZGV4ID09PSAyKSl7CiAgICAgICAgICBkLmNlbGwuc3R5bGVzLnRleHRDb2xvciA9IFsxNTAsMTY0LDE4Ml07IGQuY2VsbC5zdHlsZXMuZm9udFNpemUgPSA3OwogICAgICAgIH0KICAgICAgfQogICAgfTsKICAgIGlmIChoYXNWYWwgJiYgYy5raW5kICE9PSAiaW5mbyIpewogICAgICBvcHRzLmZvb3QgPSBbW2Mua2luZCA9PT0gIm1vbnRobHkiID8gIlN1bW1lIHBybyBNb25hdCIgOiAiU3VtbWUiLCAiIiwgIiIsIGJsYW5rID8gIiIgOiBmbXQoc3VtT2YoYykpXV07CiAgICAgIG9wdHMuc2hvd0Zvb3QgPSAibGFzdFBhZ2UiOwogICAgICBvcHRzLmZvb3RTdHlsZXMgPSB7ZmlsbENvbG9yOldISVRFLCB0ZXh0Q29sb3I6TkFWWSwgZm9udFN0eWxlOiJib2xkIn07CiAgICB9CiAgICBkb2MuYXV0b1RhYmxlKG9wdHMpOwogICAgeSA9IGRvYy5sYXN0QXV0b1RhYmxlLmZpbmFsWTsKICB9CgogIC8vIEZ1w596ZWlsZQogIGNvbnN0IG4gPSBkb2MuZ2V0TnVtYmVyT2ZQYWdlcygpOwogIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICBkb2Muc2V0UGFnZShpKTsKICAgIGRvYy5zZXREcmF3Q29sb3IoLi4uTElORSk7IGRvYy5zZXRMaW5lV2lkdGgoMC4yKTsKICAgIGRvYy5saW5lKE0sIEggLSAxMywgVyAtIE0sIEggLSAxMyk7CiAgICBkb2Muc2V0Rm9udChGT05ULCAibm9ybWFsIik7IGRvYy5zZXRGb250U2l6ZSg3LjUpOyBkb2Muc2V0VGV4dENvbG9yKC4uLlNPRlQpOwogICAgZG9jLnRleHQoY2xlYW4oYmxhbmsgPyAiTmFjaGxhc3N2ZXJ6ZWljaG5pcyDigJMgVm9ybGFnZSDigJMgU2VpdGUgIiArIGkgKyAiIHZvbiAiICsgbiA6ICJOYWNobGFzc3ZlcnplaWNobmlzIiArIChwLm5hbWUgPyAiIOKAkyAiICsgcC5uYW1lIDogIiIpICsgIiDigJMgU3RhbmQgIiArIHN0YW5kICsgIiDigJMgU2VpdGUgIiArIGkgKyAiIHZvbiAiICsgbiksIE0sIEggLSA4LjUpOwogICAgZG9jLnNldEZvbnQoRk9OVCwgImJvbGQiKTsgZG9jLnNldEZvbnRTaXplKDgpOyBkb2Muc2V0VGV4dENvbG9yKC4uLk5BVlkpOwogICAgZG9jLnRleHQoImdvY2xpbWIuY29tIiwgVyAtIE0sIEggLSA4LjUsIHthbGlnbjoicmlnaHQifSk7CiAgfQogIHJldHVybiBkb2M7Cn0KCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGV2KSA9PiB7CiAgaWYgKCFldi50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcHJpdmFjeV0iKSkgcmV0dXJuOwogIGlmIChjdXJyZW50ICE9PSAiZGVja2JsYXR0IikgZ28oImRlY2tibGF0dCIpOwogIGNvbnN0IHNlYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcml2YWN5U2VjdGlvbiIpOwogIGlmIChzZWMpeyBzZWMuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLCBibG9jazoic3RhcnQifSk7IH0KfSk7Cgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFzeW5jIChldikgPT4gewogIGNvbnN0IHRiID0gZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXRwbF0iKTsKICBpZiAoIXRiKSByZXR1cm47CiAgaWYgKFNUQVRJQ19GSUxFUyAmJiAvXmh0dHBzPzokLy50ZXN0KGxvY2F0aW9uLnByb3RvY29sKSkgcmV0dXJuOyAvLyBXZWJzZWl0ZTogZ2FueiBub3JtYWxlciBEYXRlaS1Eb3dubG9hZAogIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgaWYgKHRiLmdldEF0dHJpYnV0ZSgiYXJpYS1idXN5IikgPT09ICJ0cnVlIikgcmV0dXJuOwogIHRiLnNldEF0dHJpYnV0ZSgiYXJpYS1idXN5IiwgInRydWUiKTsKICB0cnkgewogICAgaWYgKHRiLmRhdGFzZXQudHBsID09PSAieGxzeCIpewogICAgICBjb25zdCBiaW4gPSBhdG9iKFhMU1hfVEVNUExBVEUpOwogICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbi5sZW5ndGgpOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbi5sZW5ndGg7IGkrKykgYnl0ZXNbaV0gPSBiaW4uY2hhckNvZGVBdChpKTsKICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10sIHt0eXBlOiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCJ9KTsKICAgICAgY29uc3QgbmFtZSA9ICJOYWNobGFzc3ZlcnplaWNobmlzLVZvcmxhZ2UueGxzeCI7CiAgICAgIGF3YWl0IG9mZmVyRmlsZShuYW1lLCBibG9iLCAoKSA9PiB7CiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOyBhLmhyZWYgPSB1cmw7IGEuZG93bmxvYWQgPSBuYW1lOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7IGEuY2xpY2soKTsgYS5yZW1vdmUoKTsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKSwgMjAwMCk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgaWYgKCF3aW5kb3cuanNwZGYgfHwgIXdpbmRvdy5qc3BkZi5qc1BERil7IHNheSgiRGVyIFBERi1CYXVzdGVpbiB3dXJkZSBuaWNodCBnZWxhZGVuLiBMYWRlIGRpZSBTZWl0ZSBuZXUuIik7IHJldHVybjsgfQogICAgICBjb25zdCBkb2MgPSBidWlsZFBkZih7Ymxhbms6dHJ1ZX0pOwogICAgICBjb25zdCBuYW1lID0gIk5hY2hsYXNzdmVyemVpY2huaXMtVm9ybGFnZS5wZGYiOwogICAgICBhd2FpdCBvZmZlckZpbGUobmFtZSwgZG9jLm91dHB1dCgiYmxvYiIpLCAoKSA9PiBkb2Muc2F2ZShuYW1lKSk7CiAgICB9CiAgfSBjYXRjaChlcnIpewogICAgcmVwb3J0U2F2ZUVycm9yKGVycik7CiAgfSBmaW5hbGx5IHsKICAgIHRiLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1idXN5Iik7CiAgfQp9KTsKCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgKGV2KSA9PiB7CiAgY29uc3QgYnRuID0gZXYudGFyZ2V0LmNsb3Nlc3QoIi5qcy1wZGYiKTsKICBpZiAoIWJ0bikgcmV0dXJuOwogIGlmICghd2luZG93LmpzcGRmIHx8ICF3aW5kb3cuanNwZGYuanNQREYpewogICAgc2F5KCJEZXIgUERGLUJhdXN0ZWluIHd1cmRlIG5pY2h0IGdlbGFkZW4uIFByw7xmZSBkaWUgSW50ZXJuZXR2ZXJiaW5kdW5nIHVuZCBsYWRlIGRpZSBTZWl0ZSBuZXUuIik7CiAgICByZXR1cm47CiAgfQogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5qcy1wZGYiKS5mb3JFYWNoKGIgPT4geyBiLmRpc2FibGVkID0gdHJ1ZTsgYi5kYXRhc2V0LmxhYmVsID0gYi50ZXh0Q29udGVudDsgYi50ZXh0Q29udGVudCA9ICJXaXJkIGVyc3RlbGx0IOKApiI7IH0pOwogIHRyeSB7CiAgICBjb25zdCBkb2MgPSBidWlsZFBkZigpOwogICAgY29uc3QgbmFtZSA9IGBOYWNobGFzc3ZlcnplaWNobmlzJHtmaWxlU2x1ZygpfV8ke3RvZGF5SXNvKCl9LnBkZmA7CiAgICBhd2FpdCBvZmZlckZpbGUobmFtZSwgZG9jLm91dHB1dCgiYmxvYiIpLCAoKSA9PiBkb2Muc2F2ZShuYW1lKSk7CiAgICBzaG93RG9uZSgpOwogIH0gY2F0Y2goZXJyKXsKICAgIHJlcG9ydFNhdmVFcnJvcihlcnIpOwogIH0gZmluYWxseSB7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuanMtcGRmIikuZm9yRWFjaChiID0+IHsgYi5kaXNhYmxlZCA9IGZhbHNlOyBpZiAoYi5kYXRhc2V0LmxhYmVsKSBiLnRleHRDb250ZW50ID0gYi5kYXRhc2V0LmxhYmVsOyB9KTsKICB9Cn0pOwoKaWYgKCFJU19XRUIpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5vbmx5LXdlYiIpLmZvckVhY2goZWwgPT4gZWwucmVtb3ZlKCkpOwpyZW5kZXJBbGwoKTsKfSkoKTsK\"),function(c){return c.charCodeAt(0)}));var s=document.createElement(\"script\");s.textContent=t;document.head.appendChild(s);})();\n<\/script>\n\n<script>\n(function(){var t=new TextDecoder().decode(Uint8Array.from(atob(\"Ci8qIE9iZXJlciBBYnN0YW5kOiBBc3RyYS1IZWFkZXIgaXN0IHBvc2l0aW9uOmZpeGVkIHVuZCB3dWVyZGUgZGVuIEJsb2Nra29wZiB1ZWJlcmRlY2tlbi4gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xpbWItbmx2Iik7CiAgaWYgKCFyb290KSByZXR1cm47CiAgZnVuY3Rpb24gaGVhZGVySGVpZ2h0KCl7CiAgICB2YXIgaCA9IDA7CiAgICB2YXIgZWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaGVhZGVyLCAjbWFzdGhlYWQsIC5zaXRlLWhlYWRlciwgLmFzdC1tYWluLWhlYWRlci13cmFwIik7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVscy5sZW5ndGg7IGkrKyl7CiAgICAgIHZhciBlbCA9IGVsc1tpXTsKICAgICAgaWYgKGVsLmNsb3Nlc3QoIiNjbGltYi1ubHYiKSkgY29udGludWU7CiAgICAgIHZhciBjcyA9IGdldENvbXB1dGVkU3R5bGUoZWwpOwogICAgICBpZiAoY3MucG9zaXRpb24gIT09ICJmaXhlZCIpIHsgaWYgKGNzLnBvc2l0aW9uICE9PSAic3RpY2t5IikgY29udGludWU7IH0KICAgICAgdmFyIHIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgaWYgKHIudG9wID4gMikgY29udGludWU7CiAgICAgIGlmIChyLmhlaWdodCA8IDEwKSBjb250aW51ZTsKICAgICAgaWYgKHIuaGVpZ2h0ID4gaCkgaCA9IHIuaGVpZ2h0OwogICAgfQogICAgcmV0dXJuIE1hdGgucm91bmQoaCk7CiAgfQogIGZ1bmN0aW9uIGFwcGx5KCl7CiAgICB2YXIgaCA9IGhlYWRlckhlaWdodCgpOwogICAgdmFyIGJhc2UgPSB3aW5kb3cuaW5uZXJXaWR0aCA+IDk5OSA\/IDQwIDogMjY7CiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCItLW5sdi1wYWQtdG9wIiwgKGggKyBiYXNlKSArICJweCIpOwogICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1ubHYtdG9wIiwgKGggKyAxMikgKyAicHgiKTsKICB9CiAgYXBwbHkoKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgYXBwbHkpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXBwbHkpOwp9KSgpOwo=\"),function(c){return c.charCodeAt(0)}));var s=document.createElement(\"script\");s.textContent=t;document.head.appendChild(s);})();\n<\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachlassverzeichnis erstellen Kostenloses Tool mit Excel- und PDF-Vorlage: Erfasse Verm\u00f6gen, Schulden, Vertr\u00e4ge und digitale Zug\u00e4nge an einem Ort, zur Vorsorge [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"153","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-860","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/pages\/860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/comments?post=860"}],"version-history":[{"count":4,"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/pages\/860\/revisions"}],"predecessor-version":[{"id":873,"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/pages\/860\/revisions\/873"}],"wp:attachment":[{"href":"https:\/\/goclimb.com\/en\/wp-json\/wp\/v2\/media?parent=860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}