{"id":15995,"date":"2026-07-09T17:07:46","date_gmt":"2026-07-09T15:07:46","guid":{"rendered":"https:\/\/migflug.com\/?page_id=15995"},"modified":"2026-07-23T17:14:43","modified_gmt":"2026-07-23T15:14:43","slug":"fighter-jet-combat-statistics","status":"publish","type":"page","link":"https:\/\/migflug.com\/ar\/fighter-jet-combat-statistics\/","title":{"rendered":"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service"},"content":{"rendered":"<div id=\"mfcs\">\n<style> #mfcs{ --ink:#0a0a0a; --txt:#141414; --muted:#6a7078; --faint:#9aa0a8; --line:#e3e3e6; --line2:#ededf0; --bg:#ffffff; --bg2:#fafafa; --card:#ffffff; --green:#127a3f;--blue:#2f6fdb; --greenbg:#e7f4ec; --grey:#eeeeef; --greytx:#5a6069; } #mfcs *{box-sizing:border-box;margin:0;padding:0} #mfcs{font-family:'Gilroy regular',system-ui,sans-serif;background:var(--bg);color:var(--txt);line-height:1.5;-webkit-font-smoothing:antialiased} #mfcs a{color:var(--ink);text-decoration:none} #mfcs .wrap{max-width:1180px;margin:0 auto;padding:0 20px} #mfcs .hero{background:#fff;border-bottom:2px solid var(--ink);padding:44px 0 28px;position:relative} #mfcs .kicker{color:var(--muted);font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:12px;margin-bottom:12px} #mfcs .hero h1{font-size:clamp(28px,5vw,46px);font-weight:900;line-height:1.03;letter-spacing:-.6px;max-width:820px;color:var(--ink)} #mfcs .hero p.sub{color:var(--greytx);max-width:660px;margin-top:16px;font-size:16px} #mfcs .hero .meta{margin-top:22px;display:flex;gap:26px;flex-wrap:wrap;font-size:13px;color:var(--muted)} #mfcs .hero .meta b{color:var(--ink);font-weight:800} #mfcs .conceptnav{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--ink)} #mfcs .conceptnav .wrap{display:flex;gap:0;overflow-x:auto;padding:0 20px} #mfcs .cbtn{flex:0 0 auto;background:none;border:none;color:var(--muted);font-family:inherit;font-weight:700;font-size:14px;padding:15px 18px 12px;border-bottom:3px solid transparent;cursor:pointer;white-space:nowrap;transition:.15s} #mfcs .cbtn:hover{color:var(--ink)} #mfcs .cbtn.active{color:var(--ink);border-bottom-color:var(--ink)} #mfcs .cbtn .n{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--grey);font-size:11px;margin-right:7px;color:var(--greytx)} #mfcs .cbtn.active .n{background:var(--ink);color:#fff} #mfcs section.concept{display:none;padding:34px 0 60px;animation:fade .3s ease} #mfcs section.concept.active{display:block} @keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}} #mfcs .chead{margin-bottom:22px} #mfcs .chead .tag{display:inline-block;background:var(--ink);color:#fff;font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:5px 11px;margin-bottom:12px} #mfcs .chead h2{font-size:26px;font-weight:800;letter-spacing:-.3px;color:var(--ink)} #mfcs .chead p{color:var(--greytx);max-width:730px;margin-top:8px;font-size:15px} #mfcs .controls{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:18px} #mfcs .controls input[type=text],#mfcs .controls select{background:#fff;border:1px solid var(--ink);color:var(--txt);font-family:inherit;font-size:14px;padding:9px 12px;outline:none} #mfcs .controls input[type=text]{min-width:210px} #mfcs .controls input:focus,#mfcs .controls select:focus{outline:2px solid var(--ink);outline-offset:-1px} #mfcs .chip{background:#fff;border:1px solid var(--line);color:var(--greytx);font-family:inherit;font-size:13px;font-weight:600;padding:8px 13px;cursor:pointer;transition:.12s} #mfcs .chip:hover{border-color:var(--ink);color:var(--ink)} #mfcs .chip.on{background:var(--ink);border-color:var(--ink);color:#fff} #mfcs .tablewrap{background:#fff;border:1px solid var(--ink);overflow:hidden} #mfcs .scroll{overflow-x:auto} #mfcs table{width:auto;border-collapse:collapse;font-size:14px;min-width:0} #mfcs thead th{background:var(--ink);color:#fff;text-align:left;font-weight:700;font-size:13.8px;letter-spacing:.03em;text-transform:uppercase;padding:8px 8px;cursor:pointer;user-select:none;white-space:nowrap} #mfcs thead th:hover{background:#222} #mfcs thead th.nosort{cursor:default}#mfcs thead th.nosort:hover{background:var(--ink)} #mfcs thead th .ar{opacity:.45;font-size:10px;margin-left:4px} #mfcs thead th.sorted .ar{opacity:1} #mfcs tbody td{padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle;font-size:16.8px} #mfcs tbody tr:last-child td{border-bottom:none} #mfcs tbody tr:hover{background:var(--bg2)} #mfcs .tthumb{width:188px;height:116px;object-fit:cover;object-position:center;display:block;max-width:none} #mfcs .jetname{font-weight:700;color:var(--ink);white-space:normal;line-height:1.2;margin-bottom:7px} #mfcs .jetsub{color:var(--muted);font-size:14.4px;font-weight:500;white-space:normal;line-height:1.25} #mfcs .num{font-variant-numeric:tabular-nums;font-weight:700} #mfcs .k{color:var(--ink);font-weight:800} #mfcs .l{color:var(--faint)} #mfcs .badge{display:inline-block;font-size:13.2px;font-weight:700;padding:3px 9px;border:1px solid} #mfcs .b-proven{background:#fff;color:var(--ink);border-color:var(--ink)} #mfcs .b-strike{background:#fff;color:var(--greytx);border-color:var(--line)} #mfcs .b-untested{background:var(--grey);color:var(--faint);border-color:var(--grey)}#mfcs .b-no{background:#fff;color:var(--faint);border-color:var(--line)}#mfcs .estar{color:var(--muted);font-weight:700;font-size:13.2px;margin-left:1px} #mfcs .gen{font-weight:800;font-size:16.8px;color:var(--ink)} #mfcs .flag{font-size:15px;margin-right:6px} #mfcs .av{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:13.2px;font-weight:800;padding:4px 9px;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;width:142px;box-sizing:border-box;text-align:center} #mfcs .av-go{background:var(--blue);color:#fff} #mfcs .av-go:hover{background:#1f56b8} #mfcs .av-soon{background:#fff;color:var(--blue);border:1px solid var(--blue)} #mfcs .av-past{background:var(--grey);color:var(--greytx)} #mfcs .av-na{color:var(--faint);font-weight:600} #mfcs .chartgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px} #mfcs .chartcard{background:#fff;border:1px solid var(--ink);padding:18px 18px 10px} #mfcs .chartcard h3{font-size:15px;font-weight:800;margin-bottom:4px;color:var(--ink)} #mfcs .chartcard p{color:var(--muted);font-size:12.5px;margin-bottom:14px} #mfcs .chartcard.full{grid-column:1\/-1} #mfcs .canvas-holder{position:relative;height:300px} #mfcs .canvas-holder.tall{height:440px} #mfcs .cardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px} #mfcs .jetcard{background:#fff;border:1px solid var(--ink);overflow:hidden;cursor:pointer;transition:.14s;position:relative;display:flex;flex-direction:column} #mfcs .jetcard:hover{transform:translateY(-3px);box-shadow:6px 6px 0 var(--ink)} #mfcs .photo{position:relative;aspect-ratio:16\/10;background:#f0f0f2;overflow:hidden;border-bottom:1px solid var(--ink)} #mfcs .photo img{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:2} #mfcs .photo .silbg{position:absolute;inset:0;margin:auto;width:60%;opacity:.16;z-index:1} #mfcs .photo .gtag{position:absolute;left:0;bottom:0;z-index:3;background:var(--ink);color:#fff;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px} #mfcs .cbody{padding:13px 15px 14px;display:flex;flex-direction:column;flex:1} #mfcs .cbody h3{font-size:18px;font-weight:800;margin:0 0 2px;color:var(--ink)} #mfcs .cbody .org{font-size:12px;color:var(--muted)} #mfcs .jetcard .stats{display:flex;margin:12px -15px 0;border-top:1px solid var(--line)} #mfcs .jetcard .stat{flex:1;text-align:center;border-right:1px solid var(--line);padding:9px 0 2px} #mfcs .jetcard .stat:last-child{border-right:none} #mfcs .jetcard .stat .v{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)} #mfcs .jetcard .stat .lb{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:1px} #mfcs .cavail{margin-top:12px;display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:700} #mfcs .modal{position:fixed;inset:0;background:rgba(10,10,10,.55);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto} #mfcs .modal.open{display:flex} #mfcs .mbox{background:#fff;border:2px solid var(--ink);max-width:640px;width:100%;overflow:hidden;animation:pop .22s ease} @keyframes pop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}} #mfcs .mphoto{position:relative;aspect-ratio:16\/8;background:#f0f0f2;overflow:hidden;border-bottom:2px solid var(--ink)} #mfcs .mphoto img{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:2} #mfcs .mphoto .silbg{position:absolute;inset:0;margin:auto;width:44%;opacity:.16;z-index:1} #mfcs .mhead{padding:18px 24px;border-bottom:1px solid var(--line);position:relative} #mfcs .mhead .gtag{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--muted);text-transform:uppercase} #mfcs .mhead h3{font-size:24px;font-weight:900;margin:4px 0 3px;color:var(--ink)} #mfcs .mhead .org{color:var(--muted);font-size:13px} #mfcs .mclose{position:absolute;top:14px;right:16px;z-index:5;background:#fff;border:1px solid var(--ink);color:var(--ink);width:34px;height:34px;font-size:18px;cursor:pointer;line-height:1} #mfcs .mclose:hover{background:var(--ink);color:#fff} #mfcs .mavail{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 24px;background:var(--bg2);border-bottom:1px solid var(--line)} #mfcs .mavail-l{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--greytx)} #mfcs .mstats{display:flex;padding:16px 24px;gap:8px;border-bottom:1px solid var(--line)} #mfcs .mstats .s{flex:1;background:var(--bg2);border:1px solid var(--line);padding:11px 8px;text-align:center} #mfcs .mstats .s .v{font-size:23px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)} #mfcs .mstats .s .lb{font-size:10px;color:var(--muted);text-transform:uppercase;margin-top:3px;letter-spacing:.04em} #mfcs .mbody{padding:20px 24px 26px} #mfcs .mbody .note{background:var(--bg2);border-left:3px solid var(--ink);padding:11px 14px;font-size:13.5px;color:var(--txt);margin-bottom:18px;font-weight:600} #mfcs .mbody h4{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px} #mfcs .conflict{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)} #mfcs .conflict:last-child{border-bottom:none} #mfcs .conflict .yr{flex:0 0 84px;font-size:12px;color:var(--greytx);font-weight:800} #mfcs .conflict .cw{flex:1} #mfcs .conflict .cn{font-weight:700;font-size:14px;color:var(--ink)} #mfcs .conflict .cd{font-size:12.5px;color:var(--muted);margin-top:2px} #mfcs .conflict .ck{flex:0 0 auto;text-align:right;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums} #mfcs .cmp-pick{display:grid;grid-template-columns:1fr 44px 1fr;gap:12px;align-items:center;margin-bottom:24px} #mfcs .cmp-pick select{width:100%;background:#fff;border:1px solid var(--ink);color:var(--ink);font-family:inherit;font-weight:700;font-size:15px;padding:13px}#mfcs .cmp-pick p{display:contents} #mfcs .cmp-vs{text-align:center;font-weight:900;color:var(--ink);font-size:15px} #mfcs .cmp-board{background:#fff;border:1px solid var(--ink);overflow:hidden} #mfcs .cmp-top{display:grid;grid-template-columns:1fr 1fr} #mfcs .cmp-side{padding:0 0 18px;text-align:center} #mfcs .cmp-side:first-child{border-right:1px solid var(--line)} #mfcs .cmp-photo{aspect-ratio:16\/9;background:#f0f0f2;overflow:hidden;border-bottom:1px solid var(--ink);position:relative;margin-bottom:14px} #mfcs .cmp-photo img{width:100%;height:100%;object-fit:cover;position:relative;z-index:2} #mfcs .cmp-photo .silbg{position:absolute;inset:0;margin:auto;width:46%;opacity:.16;z-index:1} #mfcs .cmp-side .gtag{font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.06em} #mfcs .cmp-side h3{font-size:20px;font-weight:800;margin:4px 0 2px;color:var(--ink)} #mfcs .cmp-side .org{font-size:12px;color:var(--muted)} #mfcs .cmp-side .cav{margin-top:9px} #mfcs .cmp-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;padding:13px 20px;border-top:1px solid var(--line)} #mfcs .cmp-bar{height:26px;display:flex;align-items:center;position:relative;background:var(--line2)} #mfcs .cmp-bar.left{justify-content:flex-end} #mfcs .cmp-bar .fill{height:100%;position:absolute;top:0;background:var(--ink)} #mfcs .cmp-bar.left .fill{right:0} #mfcs .cmp-bar.right .fill{left:0} #mfcs .cmp-bar .bv{position:relative;z-index:2;font-size:13px;font-weight:800;padding:0 10px;font-variant-numeric:tabular-nums;color:var(--ink)} #mfcs .cmp-bar .bv.inbar{color:#fff} #mfcs .cmp-lb{text-align:center;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700;min-width:80px} #mfcs .win{color:var(--green)!important} #mfcs .engage{border-top:2px solid var(--ink);background:var(--bg2);padding:20px 20px 22px} #mfcs .engage .eh{display:flex;align-items:center;gap:9px;justify-content:center;font-size:15.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-bottom:6px} #mfcs .engage .ec{text-align:center;font-size:17.5px;color:var(--muted);margin-bottom:16px} #mfcs .engage .disp{display:inline-block;background:var(--ink);color:#fff;font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;margin-left:6px;vertical-align:middle} #mfcs .score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;max-width:440px;margin:0 auto 14px} #mfcs .score .sv{font-size:30px;font-weight:900;font-variant-numeric:tabular-nums;text-align:center;color:var(--ink)} #mfcs .score .sv.sL{text-align:right}#mfcs .score .sv.sR{text-align:left} #mfcs .score .dash{color:var(--faint);font-weight:700;font-size:20px} #mfcs .score .win2{color:var(--green)} #mfcs .engage .esum{text-align:center;font-size:18.5px;color:var(--txt);max-width:600px;margin:0 auto;line-height:1.5} #mfcs .engage.none{background:var(--bg2);padding:22px 20px} #mfcs .engage.none .em{text-align:center;color:var(--muted);font-size:18.5px} #mfcs .disclaimer{background:var(--bg2);border:1px solid var(--line);padding:16px 18px;margin-top:26px;font-size:12.5px;color:var(--greytx)} #mfcs .disclaimer b{color:var(--ink)} #mfcs .legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:12.5px;color:var(--muted)} #mfcs .legend span{display:inline-flex;align-items:center;gap:6px} #mfcs .dot{width:11px;height:11px;display:inline-block;border:1px solid var(--ink)} #mfcs footer{border-top:1px solid var(--line);padding:30px 0 50px;color:var(--muted);font-size:13px;text-align:center} #mfcs .count{color:var(--muted);font-size:13px;margin-left:auto;font-weight:600} @media(max-width:720px){ #mfcs .chartgrid{grid-template-columns:1fr} #mfcs .cmp-pick{grid-template-columns:1fr;gap:8px} #mfcs .cmp-vs{padding:2px} #mfcs .controls .count{width:100%;margin:4px 0 0} } #mfcs h1,#mfcs h2,#mfcs h3,#mfcs h4,#mfcs th,#mfcs .jetname,#mfcs .num,#mfcs .cbtn,#mfcs .gen,#mfcs .badge,#mfcs .av,#mfcs .kicker,#mfcs .chead .tag,#mfcs .score .sv,#mfcs .bv,#mfcs .cmp-side h3,#mfcs .cbody h3,#mfcs .mhead h3,#mfcs strong,#mfcs b{font-family:'Gilroy semiBold',sans-serif} html{overflow-x:hidden} body.page-id-15995{overflow-x:hidden} body.page-id-15995 h1.entry-title.main_title{display:none} body.page-id-15995 #sidebar{display:none} body.page-id-15995 #left-area{width:100%!important;float:none;padding:0} body.page-id-15995 #main-content .container::before{display:none!important;background:none!important} body.page-id-15995 #main-content .container{padding-top:0} #mfcs{width:100vw;margin-left:calc(50% - 50vw);overflow:hidden} #mfcs .modal{z-index:999999} #mfcs .conceptnav{z-index:9999}#mfcs .namecell{white-space:normal}#mfcs .namecell{max-width:210px}#mfcs .jetname{white-space:normal;line-height:1.2;margin-bottom:7px}#mfcs .mfr{font-size:15.8px;color:var(--muted);font-weight:600;line-height:1.2;white-space:normal;max-width:190px;margin-bottom:7px}#mfcs .photocell{width:189px;padding:6px 0 6px 8px;vertical-align:middle}#mfcs .tthumb{cursor:zoom-in;transition:opacity .12s}#mfcs .tthumb:hover{opacity:.82}#mfcs #jtable th:nth-child(4),#mfcs #jtable td:nth-child(4),#mfcs #jtable th:nth-child(6),#mfcs #jtable td:nth-child(6),#mfcs #jtable th:nth-child(7),#mfcs #jtable td:nth-child(7),#mfcs #jtable th:nth-child(8),#mfcs #jtable td:nth-child(8){width:72px;white-space:normal} #mfcs .rng{font-size:.82em;white-space:nowrap} #mfcs .stats .v .rng,#mfcs .mstats .v .rng{font-size:.6em;line-height:1.15;display:inline-block;padding-top:.3em} #mfcs td.k,#mfcs td.l,#mfcs td.rt{cursor:help} #mfcs td .rng{border-bottom:1px dotted var(--faint)} #mfcs #jtable tbody td{font-size:13.8px;vertical-align:top} #mfcs #jtable tbody td.namecell .jetname{font-size:16.8px} #mfcs #jtable tbody td.namecell .jetsub{font-size:14.4px} #mfcs #jtable tbody td .rng{font-size:1em} #mfcs #jtable tbody .mfr{font-size:1em} #mfcs #jtable tbody .gen{font-size:1em} #mfcs #jtable tbody .badge{font-size:1em} #mfcs #jtable tbody td:last-child *{font-size:13.8px}#mfcs .swipehint{display:none;font-size:13px;color:#454e5e;margin:0 0 10px;font-family:'Gilroy semiBold',sans-serif}\/*mobfix1*\/@media(max-width:767px){#mfcs .conceptnav .wrap{flex-wrap:wrap;padding:0 12px}#mfcs .conceptnav .cbtn{flex:1 1 40%;padding:12px 8px 10px;font-size:13px}#mfcs .photocell{width:96px;padding:6px 0 6px 6px}#mfcs .photocell img{width:92px!important;height:auto!important}#mfcs .namecell{max-width:150px}#mfcs .jetname{font-size:15px}#mfcs .mfr{font-size:13px;max-width:150px}#mfcs .swipehint{display:block}#mfcs .scroll{background:linear-gradient(to left,rgba(13,17,23,.12),rgba(13,17,23,0) 28px) right\/28px 100% no-repeat local}}#mfcs .jetname a,#mfcs .cmp-side h3 a{color:inherit;text-decoration:none;border-bottom:1px dotted #5C91FF}#mfcs .jetname a:hover,#mfcs .cmp-side h3 a:hover{color:#5C91FF}#mfcs .mrec{display:inline-block;margin-top:16px;background:#5C91FF;color:#fff;padding:10px 16px;font-family:'Gilroy semiBold',Helvetica,Arial,sans-serif;font-size:13px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none}#mfcs .mrec:hover{background:#4a7de6;color:#fff}#mfcs .mfcs-faq{background:#fff;max-width:980px;margin:46px auto 8px;padding:0 20px}#mfcs .mfcs-faq>h2{font-size:30px;font-weight:700;color:#0d1117;margin:0 0 16px;text-align:left;line-height:1.2}#mfcs .mfcs-faq details{border:1px solid #e2e7ee;background:#fff;margin-bottom:10px}#mfcs .mfcs-faq details[open]{border-color:#5C91FF}#mfcs .mfcs-faq summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;font-size:17px;font-weight:600;color:#0d1117;cursor:pointer;line-height:1.45}#mfcs .mfcs-faq summary::-webkit-details-marker{display:none}#mfcs .mfcs-faq summary::after{content:\"+\";color:#3568e0;font-size:24px;line-height:1;flex:0 0 auto;font-weight:400}#mfcs .mfcs-faq details[open] summary::after{content:\"\u2212\"}#mfcs .mfcs-faq .a{padding:0 24px 22px;color:#454e5e;font-size:16px;line-height:1.7}#mfcs .mfcs-faq .a a{color:#3568e0}<\/style>\n<div class=\"hero\">\n<div class=\"wrap\">\n<div class=\"kicker\">MiGFlug \u00b7 Fighter Jet Combat Records<\/div>\n<h1>Combat Statistics for Every Fighter Jet in Service<\/h1>\n<p class=\"sub\">The air-to-air record of 42 fighter jets, from the MiG-15 to the F-35 and Su-57 \u2014 every confirmed kill and loss, cross-checked and sourced. Sort the full table, explore the charts, open a detail card for any aircraft, or put two jets head to head. And for each one: whether you can still fly it with MiGFlug. Want the whole story back to the Fokkers and Mustangs? See the <a href=\"https:\/\/migflug.com\/fighter-aircraft-combat-statistics\/\" style=\"color:var(--ink);font-weight:700\">combat statistics for every fighter aircraft in history<\/a>.<\/p>\n<div class=\"meta\">\n<div><b>42<\/b> aircraft<\/div>\n<div><b>Sort<\/b> \u00b7 chart \u00b7 compare<\/div>\n<div><b>Confirmed<\/b> air-to-air data only<\/div>\n<div>Updated <b>July 2026<\/b><\/div>\n<\/div>\n<\/div>\n<\/div>\n<nav class=\"conceptnav\">\n<div class=\"wrap\"><button class=\"cbtn active\" data-c=\"table\"><span class=\"n\">1<\/span>Sortable Table<\/button><button class=\"cbtn\" data-c=\"charts\"><span class=\"n\">2<\/span>Visual Charts<\/button><button class=\"cbtn\" data-c=\"cards\"><span class=\"n\">3<\/span>Jet Cards<\/button><button class=\"cbtn\" data-c=\"compare\"><span class=\"n\">4<\/span>Head-to-Head<\/button><\/div>\n<\/nav>\n<p><!-- CONCEPT 1: TABLE --><\/p>\n<section class=\"concept active\" id=\"c-table\">\n<div class=\"wrap\">\n<div class=\"chead\">\n<h2>Every fighter jet, sorted your way<\/h2>\n<p>All 42 aircraft in one place. Sort by air-to-air kills, losses, kill ratio or first-flight year, filter by country of origin and combat status, or search for any jet by name.<\/p>\n<\/div>\n<div class=\"controls\"><input type=\"text\" id=\"tsearch\" placeholder=\"Search a jet\"><select id=\"torigin\"><option value=\"\">All origins<\/option><\/select><button class=\"chip on\" data-status=\"all\">All<\/button><button class=\"chip\" data-status=\"proven\">Combat-proven<\/button><button class=\"chip\" data-status=\"strike\">Strike \/ no A2A kill<\/button><button class=\"chip\" data-status=\"untested\">A2A-untested<\/button><span class=\"count\" id=\"tcount\"><\/span><\/div>\n<div class=\"swipehint\">Swipe the table sideways for kills, losses and kill ratio<\/div>\n<div class=\"tablewrap\">\n<div class=\"scroll\">\n<table id=\"jtable\">\n<thead>\n<tr>\n<th class=\"nosort\"><\/th>\n<th data-k=\"name\">Aircraft \/<br \/>Role <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"origin\">Manufacturer \/<br \/>Origin <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"firstFlight\">First flight <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"gen\">Gen <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"kills\">A2A kills <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"losses\">A2A losses <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"ratio\">Kill ratio <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th data-k=\"status\">Combat-<br \/>proven <span class=\"ar\">\u25b2\u25bc<\/span><\/th>\n<th class=\"nosort\">Fly it with<br \/>MiGFlug<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"tbody\"><\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"legend\"><span><span class=\"dot\" style=\"background:var(--green)\"><\/span>Combat-proven (air-to-air kills)<\/span><span><span class=\"dot\" style=\"background:var(--amber)\"><\/span>Combat-proven strike \/ no confirmed A2A kill<\/span><span><span class=\"dot\" style=\"background:var(--grey)\"><\/span>Air-to-air untested<\/span><\/div>\n<\/div>\n<\/section>\n<p><!-- CONCEPT 2: CHARTS --><\/p>\n<section class=\"concept\" id=\"c-charts\">\n<div class=\"wrap\">\n<div class=\"chead\">\n<h2>The combat record in charts<\/h2>\n<p>Which fighters scored the most air-to-air kills, which stayed undefeated, and how the whole fleet stacks up on a single kills-versus-losses chart.<\/p>\n<\/div>\n<div class=\"chartgrid\">\n<div class=\"chartcard\">\n<h3>Most air-to-air kills<\/h3>\n<p>Confirmed manned-aircraft victories, all operators combined.<\/p>\n<div class=\"canvas-holder\"><canvas id=\"chKills\"><\/canvas><\/div>\n<\/div>\n<div class=\"chartcard\">\n<h3>Highest kill-to-loss ratio<\/h3>\n<p>Undefeated types shown at the top; only jets with 5+ kills.<\/p>\n<div class=\"canvas-holder\"><canvas id=\"chRatio\"><\/canvas><\/div>\n<\/div>\n<div class=\"chartcard full\">\n<h3>Kills vs. losses \u2014 the whole fleet at a glance<\/h3>\n<p>Up and to the left is elite (many kills, few losses). Bubble size = total combat engagements. Hover any dot.<\/p>\n<div class=\"canvas-holder tall\"><canvas id=\"chScatter\"><\/canvas><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<p><!-- CONCEPT 3: CARDS --><\/p>\n<section class=\"concept\" id=\"c-cards\">\n<div class=\"wrap\">\n<div class=\"chead\">\n<h2>Explore each jet in detail<\/h2>\n<p>Tap any aircraft for its full combat history \u2014 a conflict-by-conflict breakdown, its most famous engagement, the caveats behind the numbers, and whether you can fly it with MiGFlug.<\/p>\n<\/div>\n<div class=\"controls\"><input type=\"text\" id=\"csearch\" placeholder=\"Filter cards\u2026\"><select id=\"corigin\"><option value=\"\">All origins<\/option><\/select><span class=\"count\" id=\"ccount\"><\/span><\/div>\n<div class=\"cardgrid\" id=\"cardgrid\"><\/div>\n<\/div>\n<\/section>\n<p><!-- CONCEPT 4: COMPARE --><\/p>\n<section class=\"concept\" id=\"c-compare\">\n<div class=\"wrap\">\n<div class=\"chead\">\n<h2>Head-to-head<\/h2>\n<p>Pick any two fighters and put their combat records side by side \u2014 including what happened on the occasions they actually met in the air.<\/p>\n<\/div>\n<div class=\"cmp-pick\"><select id=\"cmpA\"><\/select><\/p>\n<div class=\"cmp-vs\">VS<\/div>\n<p><select id=\"cmpB\"><\/select><\/div>\n<div class=\"cmp-board\" id=\"cmpBoard\"><\/div>\n<\/div>\n<\/section>\n<div class=\"wrap\">\n<div class=\"disclaimer\" id=\"disclaimer\"><b>On the numbers.<\/b> Air-to-air figures count confirmed victories against manned aircraft, credited by the operating air force and cross-checked across sources. An asterisk (*) marks figures that are best-available estimates \u2014 older wartime tallies from Korea, Vietnam and the Arab\u2013Israeli and Indo-Pakistani wars that sources dispute by wide margins, plus recent 2022\u20132025 results from Ukraine and the India\u2013Pakistan clash that are credited but not independently confirmed. The higher contested claims are explained in each jet&#8217;s detail card. Drone and cruise-missile intercepts are noted but not counted as kills. Where serious sources genuinely disagree \u2014 Korea, Vietnam, the Middle East and Indo-Pakistani wars \u2014 the kills and losses columns show the credible range instead of a single number; each jet\u2019s detail card explains who counts what \u2014 or simply hover over a kills, losses or ratio figure to see the story behind the numbers. The combat-proven column distinguishes jets with a real air-to-air record from those blooded only in strike or reconnaissance operations. Ground\/SAM losses are tracked separately from air-to-air losses. <\/div>\n<\/div>\n<footer>\n<div class=\"wrap\">MiGFlug \u00b7 Combat statistics updated <span id=\"fdate\"><\/span> \u00b7 Air-to-air figures are confirmed victories against manned aircraft, cross-checked across sources. Spotted an error? Let us know in the comments.<\/div>\n<\/footer>\n<p><!-- MODAL --><\/p>\n<div class=\"modal\" id=\"modal\">\n<div class=\"mbox\" id=\"mbox\"><\/div>\n<\/div>\n<p><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script><div id=\"mfcs-data\" data-js=\"Ci8qIC0tLS0tLS0tLS0gREFUQVNFVCAoMzggYWlyY3JhZnQsIGNvbmZpcm1lZCBBMkEgZGF0YSkgLS0tLS0tLS0tLSAqLwpjb25zdCBGTEFHPXsiVW5pdGVkIFN0YXRlcyI6IvCfh7rwn4e4IiwiRnJhbmNlIjoi8J+Hq\/Cfh7ciLCJVbml0ZWQgS2luZ2RvbSI6IvCfh6zwn4enIiwiSXNyYWVsIjoi8J+HrvCfh7EiLCJTd2VkZW4iOiLwn4e48J+HqiIsIlVTU1IiOiLwn4e38J+HuiIsIlVTU1IgLyBSdXNzaWEiOiLwn4e38J+HuiIsIlJ1c3NpYSI6IvCfh7fwn4e6IiwiQ2hpbmEiOiLwn4eo8J+HsyIsIlBha2lzdGFuIC8gQ2hpbmEiOiLwn4e18J+HsCIsIk11bHRpbmF0aW9uYWwiOiLwn4eq8J+HuiJ9Owpjb25zdCBEPVsKe25hbWU6IkYtMTUgRWFnbGUiLGZ1bGw6Ik1jRG9ubmVsbCBEb3VnbGFzIC8gQm9laW5nIEYtMTUgKEEvQi9DL0QpIixvcmlnaW46IlVuaXRlZCBTdGF0ZXMiLGdlbjoiNHRoIixmaXJzdEZsaWdodDoxOTcyLHJvbGU6IkFpciBzdXBlcmlvcml0eSIsa2lsbHM6MTA0LGtyOiI5MOKAkzEwNiIsbG9zc2VzOjAsZ3JvdW5kOjAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IlRoZSBtb3N0LWNpdGVkIGFpci1jb21iYXQgcmVjb3JkIGluIHRoZSBqZXQgYWdlOiB+MTA0IGNyZWRpdGVkIHZpY3RvcmllcyBmb3IgemVybyBhaXItdG8tYWlyIGxvc3NlcyBhY3Jvc3MgYWxsIG9wZXJhdG9ycy4gU3RyaWN0IHBlci1vcGVyYXRvciBjb3VudHMgZ2l2ZSB+OTA7IGdlbmVyb3VzIElzcmFlbGkgMTk4MiB0YWxsaWVzIHJlYWNoIDEwNiDigJQgdGhlIGZhbW91cyAxMDQgZmlndXJlIG9yaWdpbmF0ZWQgd2l0aCB0aGUgbWFudWZhY3R1cmVyLiIsY29uZmxpY3RzOlt7eXI6IjE5NznigJM4MiIsbjoiSXNyYWVsaSBvcHMgKEJla2FhIFZhbGxleSkiLG5hdGlvbjoiSXNyYWVsIixrOjU2LGw6MCxkOiJPdmVyIGhhbGYgb2YgYWxsIEYtMTUga2lsbHMg4oCUIG1vc3RseSBTeXJpYW4gTWlHczsgcGVhayBkdXJpbmcgT3BlcmF0aW9uIE1vbGUgQ3JpY2tldCAxOSAoMTk4MikuIn0se3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJVU0FGIixrOjM0LGw6MCxkOiJUaGUgYnVsayBvZiBjb2FsaXRpb24gYWlyLXRvLWFpciB2aWN0b3JpZXMgaW4gRGVzZXJ0IFN0b3JtLiJ9LHt5cjoiMTk4NOKAkzk5IixuOiJPdGhlciBVU0FGIC8gU2F1ZGkiLG5hdGlvbjoiVVNBIC8gU2F1ZGkiLGs6MTQsbDowLGQ6IkluY2x1ZGVzIFNhdWRpIEYtMTVzIGRvd25pbmcgMiBJcmFuaWFuIEYtNEVzICgxOTg0KSBhbmQgQmFsa2Fucy9uby1mbHktem9uZSBraWxscy4ifV0sZmFtb3VzOiJEdXJpbmcgT3BlcmF0aW9uIE1vbGUgQ3JpY2tldCAxOSAoSnVuZSAxOTgyKSwgSXNyYWVsaSBGLTE1cyBhbmQgRi0xNnMgZGVzdHJveWVkIGRvemVucyBvZiBTeXJpYW4gYWlyY3JhZnQgb3ZlciB0aGUgQmVrYWEgVmFsbGV5IHdpdGhvdXQgbG9zcy4ifSwKe25hbWU6IkYtNCBQaGFudG9tIElJIixmdWxsOiJNY0Rvbm5lbGwgRG91Z2xhcyBGLTQgUGhhbnRvbSBJSSIsb3JpZ2luOiJVbml0ZWQgU3RhdGVzIixnZW46IjNyZCIsZmlyc3RGbGlnaHQ6MTk1OCxyb2xlOiJJbnRlcmNlcHRvciAvIGZpZ2h0ZXItYm9tYmVyIixraWxsczoxNTAsbG9zc2VzOjQyLGdyb3VuZDo3MTksc3RhdHVzOiJwcm92ZW4iLG5vdGU6Ik92ZXIgVmlldG5hbSwgVVMgTmF2eSwgQWlyIEZvcmNlIGFuZCBNYXJpbmUgRi00cyB3ZXJlIGNyZWRpdGVkIHdpdGggYWJvdXQgMTUwIE1pRyBraWxscyBmb3IgNDIgUGhhbnRvbXMgbG9zdCBpbiBhaXIgY29tYmF0IOKAlCByb3VnaGx5IDMuNiB0byAxIHBlciBVUyByZWNvcmRzOyBOb3J0aCBWaWV0bmFtZXNlIGNsYWltcyBkaWZmZXIgb24gYm90aCBjb3VudHMuIENvdW50aW5nIGV2ZXJ5IG9wZXJhdG9yIHdvcmxkd2lkZSAoSXNyYWVsLCBJcmFuIGFuZCBvdGhlcnMpIHRoZSBraWxsIHRvdGFsIGlzIGZhciBoaWdoZXIsIGJ1dCB0aGVpciBhaXItdG8tYWlyIGxvc3NlcyBhcmUgbm90IGNvbnNpc3RlbnRseSByZWNvcmRlZCwgc28gYSBsaWtlLWZvci1saWtlIGdsb2JhbCByYXRpbyBpcyB1bnJlbGlhYmxlLiIsY29uZmxpY3RzOlt7eXI6IjE5NjXigJM3MyIsbjoiVmlldG5hbSBXYXIiLG5hdGlvbjoiVVNBIixrOjE1MCxsOjQyLGQ6IjE1MC41IE1pRyBraWxscyBmb3IgNDIgUGhhbnRvbXMgbG9zdCBpbiBhaXIgY29tYmF0OyB+NzE5IGxvc3QgdG8gYWxsIGNhdXNlcywgbW9zdGx5IGdyb3VuZCBmaXJlLiJ9LHt5cjoiMTk2OeKAkzgyIixuOiJBcmFi4oCTSXNyYWVsaSB3YXJzIixuYXRpb246IklzcmFlbCIsazoxMTYsbDowLGQ6IklzcmFlbGkgRi00RSAnS3VybmFzcycgc2NvcmVkIDExNi41IGFlcmlhbCB2aWN0b3JpZXM7IG1vc3QgbG9zc2VzIHdlcmUgdG8gU0FNcywgbm90IGFpcmNyYWZ0LiJ9LHt5cjoiMTk4MOKAkzg4IixuOiJJcmFu4oCTSXJhcSBXYXIiLG5hdGlvbjoiSXJhbiIsazowLGw6MCxkOiJJcmFuaWFuIFBoYW50b21zIGNsYWltZWQgZG96ZW5zIG1vcmUga2lsbHM7IHRvdGFscyBkaXNwdXRlZCBhbmQgZXhjbHVkZWQgZnJvbSB0aGUgaGVhZGxpbmUuIn1dLGZhbW91czoiRi00IGNyZXdzIGRlc3Ryb3llZCAxNTAuNSBNaUdzIG92ZXIgVmlldG5hbSDigJQgdGhlIGhpZ2hlc3QgYWlyLXRvLWFpciB0YWxseSBvZiBhbnkgV2VzdGVybiBmaWdodGVyIG9mIGl0cyBnZW5lcmF0aW9uLiJ9LAp7bmFtZToiRi0xNiBGaWdodGluZyBGYWxjb24iLGZ1bGw6IkdlbmVyYWwgRHluYW1pY3MgLyBMb2NraGVlZCBNYXJ0aW4gRi0xNiIsb3JpZ2luOiJVbml0ZWQgU3RhdGVzIixnZW46IjR0aCIsZmlyc3RGbGlnaHQ6MTk3NCxyb2xlOiJNdWx0aXJvbGUiLGtpbGxzOjc3LGtyOiI3M+KAkzgxIixsb3NzZXM6MSxscjoiMeKAkzIiLGdyb3VuZDo1LHN0YXR1czoicHJvdmVuIixub3RlOiJ+NzcgaXMgdGhlIGNvbW1vbmx5IGNpdGVkIGNyb3NzLW9wZXJhdG9yIHRvdGFsOyBpbmRlcGVuZGVudCBjb3VudHMgcnVuIDcz4oCTODEgYW5kIG5vIHNpbmdsZSBhdXRob3JpdHkgdGFsbGllcyBldmVyeSB2aWN0b3J5IGlkZW50aWNhbGx5LiBJbiBKdWx5IDIwMjYgYSBVa3JhaW5pYW4gRi0xNiBzY29yZWQgdGhlIHR5cGXigJlzIGZpcnN0IGFpci10by1haXIga2lsbCBvZiBhIFJ1c3NpYW4gZmlnaHRlciDigJQgYSBTdS0zNVMgZG93bmVkIHdpdGggYW4gQUlNLTEyMCwgY29uZmlybWVkIGJ5IFVTIGFuZCBSdXNzaWFuIHNvdXJjZXMuIFRoZSBzaW5nbGUgYWlyLWNvbWJhdCBsb3NzIGlzIHRoZSAxOTk2IEFlZ2VhbiBzaG9vdGRvd24gYnkgYSBHcmVlayBNaXJhZ2UgMjAwMCDigJQgYWRkaW5nIHRoZSAxOTg3IFBha2lzdGFuaSBmcmllbmRseS1maXJlIGxvc3Mgd291bGQgbWFrZSBpdCAyLiBUaGUgMjAxOSBQYWtpc3RhbuKAk0luZGlhIEYtMTYgY2xhaW1zIGFyZSBjb250ZXN0ZWQgYW5kIGV4Y2x1ZGVkLiIsY29uZmxpY3RzOlt7eXI6IjE5ODIiLG46IkxlYmFub24gV2FyIixuYXRpb246IklzcmFlbCIsazo0NCxsOjAsZDoiQnVsayBvZiBGLTE2IHZpY3RvcmllcyDigJQgbW9zdGx5IFN5cmlhbiBNaUctMjFzIGFuZCBNaUctMjNzIOKAlCBmb3IgemVybyBhaXItdG8tYWlyIGxvc3Nlcy4ifSx7eXI6IjE5OTHigJM5OSIsbjoiR3VsZiBXYXIgLyBCYWxrYW5zIixuYXRpb246IlVTQSAvIE5MIixrOjYsbDowLGQ6IlVTQUYga2lsbHMgb3ZlciBJcmFxOyBhIER1dGNoIEYtMTYgZG93bmVkIGEgWXVnb3NsYXYgTWlHLTI5IGluIDE5OTkuIn0se3lyOiIxOTky4oCTMjAxOSIsbjoiT3RoZXIgZW5nYWdlbWVudHMiLG5hdGlvbjoiVmFyaW91cyIsazoyNixsOjEsZDoiT25lIGRvY3VtZW50ZWQgQTJBIGxvc3M6IGEgVHVya2lzaCBGLTE2RCBkb3duZWQgYnkgYSBHcmVlayBNaXJhZ2UgMjAwMCAoMTk5NikuIn0se3lyOiIyMDI2IixuOiJSdXNzby1Va3JhaW5pYW4gV2FyIixuYXRpb246IlVrcmFpbmUiLGs6MSxsOjAsZDoiQSBVa3JhaW5pYW4gRi0xNiBkb3duZWQgYSBSdXNzaWFuIFN1LTM1UyB3aXRoIGFuIEFJTS0xMjAgb24gOCBKdWx5IDIwMjYg4oCUIHRoZSB0eXBl4oCZcyBmaXJzdCBhaXItdG8tYWlyIGtpbGwgb2YgYSBtYW5uZWQgUnVzc2lhbiBqZXQuIn1dLGZhbW91czoiSXNyYWVsaSBGLTE2cyBkb3duZWQgcm91Z2hseSA0NCBTeXJpYW4gYWlyY3JhZnQgZHVyaW5nIHRoZSAxOTgyIExlYmFub24gV2FyIHdpdGhvdXQgYW4gYWlyLXRvLWFpciBsb3NzLiJ9LAp7bmFtZToiRi0xNCBUb21jYXQiLGZ1bGw6IkdydW1tYW4gRi0xNCBUb21jYXQiLG9yaWdpbjoiVW5pdGVkIFN0YXRlcyIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5NzAscm9sZToiRmxlZXQtZGVmZW5zZSBpbnRlcmNlcHRvciIsa2lsbHM6NSxsb3NzZXM6MCxncm91bmQ6MSxzdGF0dXM6InByb3ZlbiIsbm90ZToiT25seSB3ZWxsLWRvY3VtZW50ZWQgVVMgTmF2eSB2aWN0b3JpZXMgYXJlIGNvdW50ZWQ6IHR3byBMaWJ5YW4gU3UtMjJzICgxOTgxKSwgdHdvIExpYnlhbiBNaUctMjNzICgxOTg5KSBhbmQgYW4gSXJhcWkgTWktOCAoMTk5MSkuIElyYW4gY2xhaW1zIDM14oCTMTMwKyBUb21jYXQga2lsbHMgaW4gdGhlIElyYW7igJNJcmFxIFdhcjsgaW5kZXBlbmRlbnQgY29uZmlybWF0aW9uIGNvdmVycyBvbmx5IGEgZnJhY3Rpb24sIHNvIHRob3NlIGFyZSBleGNsdWRlZC4iLGNvbmZsaWN0czpbe3lyOiIxOTgxLzg5IixuOiJHdWxmIG9mIFNpZHJhIixuYXRpb246IlVTIE5hdnkiLGs6NCxsOjAsZDoiVHdvIExpYnlhbiBTdS0yMnMgKDE5ODEpIGFuZCB0d28gTWlHLTIzcyAoMTk4OSkuIn0se3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJVUyBOYXZ5IixrOjEsbDoxLGQ6IkRvd25lZCBhbiBJcmFxaSBNaS04OyBvbmUgRi0xNCBsb3N0IHRvIGFuIFNBLTIgU0FNIChhIGdyb3VuZCBsb3NzLCBub3QgQTJBKS4ifSx7eXI6IjE5ODDigJM4OCIsbjoiSXJhbuKAk0lyYXEgV2FyIixuYXRpb246IklyYW4iLGs6MCxsOjAsZDoiQWNlIEphbGlsIFphbmRpIGNyZWRpdGVkIHdpdGggOCB2aWN0b3JpZXM7IElyYW5pYW4gdG90YWxzIHVudmVyaWZpYWJsZSBhbmQgZXhjbHVkZWQuIn1dLGZhbW91czoiT24gMTkgQXVndXN0IDE5ODEgdHdvIFZGLTQxIFRvbWNhdHMgZG93bmVkIHR3byBMaWJ5YW4gU3UtMjJzIG92ZXIgdGhlIEd1bGYgb2YgU2lkcmEg4oCUIHRoZSB0eXBlJ3MgZmlyc3Qga2lsbHMuIn0sCntuYW1lOiJGLTE1RSBTdHJpa2UgRWFnbGUiLGZ1bGw6Ik1jRG9ubmVsbCBEb3VnbGFzIC8gQm9laW5nIEYtMTVFIixvcmlnaW46IlVuaXRlZCBTdGF0ZXMiLGdlbjoiNC41IixmaXJzdEZsaWdodDoxOTg2LHJvbGU6IlN0cmlrZSAvIG11bHRpcm9sZSIsa2lsbHM6MSxsb3NzZXM6MCxncm91bmQ6MixzdGF0dXM6InByb3ZlbiIsbm90ZToiSXRzIG9ubHkgYWlyLXRvLWFpciBraWxsIHdhcyBzY29yZWQgd2l0aCBhIGJvbWIg4oCUIG9uIGEgaGVsaWNvcHRlciB3aG9zZSBleGFjdCB0eXBlIChNaS0yNCBvciBIdWdoZXMgNTAwKSBzb3VyY2VzIHN0aWxsIGRpc3B1dGUuIEluIDIwMjQgRi0xNUVzIHNob3QgZG93biBkb3plbnMgb2YgSXJhbmlhbiBkcm9uZXMg4oCUIGNvdW50ZWQgYXMgZHJvbmUgaW50ZXJjZXB0cywgbm90IGFpcmNyYWZ0IGtpbGxzLiIsY29uZmxpY3RzOlt7eXI6IjE5OTEiLG46Ikd1bGYgV2FyIixuYXRpb246IlVTQUYiLGs6MSxsOjAsZDoiRGVzdHJveWVkIGEgaG92ZXJpbmcgSXJhcWkgTWktMjQgd2l0aCBhIGxhc2VyLWd1aWRlZCBib21iOyAyIEYtMTVFcyBsb3N0IHRvIGdyb3VuZCBmaXJlLiJ9LHt5cjoiMjAyNCIsbjoiRGVmZW5zZSBvZiBJc3JhZWwiLG5hdGlvbjoiVVNBRiIsazowLGw6MCxkOiJEb3duZWQgZG96ZW5zIG9mIElyYW5pYW4gU2hhaGVkIGRyb25lcyDigJQgbm90IGNvdW50ZWQgYXMgYWlyY3JhZnQga2lsbHMuIn1dLGZhbW91czoiQW4gRi0xNUUgc2NvcmVkIHRoZSB0eXBlJ3Mgb25seSBhaXItdG8tYWlyIGtpbGwgYnkgZHJvcHBpbmcgYSBsYXNlci1ndWlkZWQgYm9tYiBvbiBhIGhvdmVyaW5nIElyYXFpIE1pLTI0IGluIDE5OTEuIn0sCntuYW1lOiJGL0EtMTggSG9ybmV0IixmdWxsOiJNY0Rvbm5lbGwgRG91Z2xhcyAvIEJvZWluZyBGL0EtMTggKEHigJNEKSIsb3JpZ2luOiJVbml0ZWQgU3RhdGVzIixnZW46IjR0aCIsZmlyc3RGbGlnaHQ6MTk3OCxyb2xlOiJDYXJyaWVyIG11bHRpcm9sZSIsa2lsbHM6Mixsb3NzZXM6MSxncm91bmQ6MCxzdGF0dXM6InByb3ZlbiIsbm90ZToiQm90aCBraWxscyBjYW1lIG9uIHRoZSBzYW1lIG5pZ2h0IG9mIHRoZSBHdWxmIFdhcjsgdGhlIHR5cGUncyBzb2xlIGFpci10by1haXIgbG9zcyAoU3BlaWNoZXIpIGlzIHdpZGVseSBhdHRyaWJ1dGVkIHRvIGFuIElyYXFpIE1pRy0yNS4iLGNvbmZsaWN0czpbe3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJVUyBOYXZ5IixrOjIsbDoxLGQ6IlR3byBWRkEtODEgSG9ybmV0cyBlYWNoIGRvd25lZCBhIE1pRy0yMSBvbiAxNyBKYW4gMTk5MTsgb25lIEhvcm5ldCBsb3N0IHRoZSBzYW1lIG5pZ2h0LiJ9XSxmYW1vdXM6Ik9uIDE3IEphbnVhcnkgMTk5MSBhIFZGQS04MSBIb3JuZXQgc2hvdCBkb3duIGEgTWlHLTIxIGFuZCB0aGVuIGNvbnRpbnVlZCBpdHMgYm9tYmluZyBydW4gb24gdGhlIHNhbWUgbWlzc2lvbi4ifSwKe25hbWU6IkYvQS0xOEUvRiBTdXBlciBIb3JuZXQiLGZ1bGw6IkJvZWluZyBGL0EtMThFL0YgU3VwZXIgSG9ybmV0IixvcmlnaW46IlVuaXRlZCBTdGF0ZXMiLGdlbjoiNC41IixmaXJzdEZsaWdodDoxOTk1LHJvbGU6IkNhcnJpZXIgbXVsdGlyb2xlIixraWxsczoxLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoicHJvdmVuIixub3RlOiJJdHMgMjAxNyBTdS0yMiBraWxsIHdhcyB0aGUgZmlyc3QgVVMgYWlyLXRvLWFpciB2aWN0b3J5IGluIH4xOCB5ZWFycy4gQSAyMDI0IFN1cGVyIEhvcm5ldCBsb3NzIHdhcyBmcmllbmRseSBmaXJlLCBub3QgYW4gZW5lbXkga2lsbC4iLGNvbmZsaWN0czpbe3lyOiIyMDE3IixuOiJTeXJpYSAoYW50aS1JU0lTKSIsbmF0aW9uOiJVUyBOYXZ5IixrOjEsbDowLGQ6IkRvd25lZCBhIFN5cmlhbiBTdS0yMiBuZWFyIFJhcXFhIOKAlCBmaXJzdCBVUyBhaXItdG8tYWlyIGtpbGwgc2luY2UgMTk5OS4ifSx7eXI6IjIwMjPigJMyNCIsbjoiUmVkIFNlYSAvIEhvdXRoaSIsbmF0aW9uOiJVUyBOYXZ5IixrOjAsbDowLGQ6IlNob3QgZG93biBtYW55IGRyb25lcyBhbmQgbWlzc2lsZXMg4oCUIGNvdW50ZWQgYXMgbXVuaXRpb24gaW50ZXJjZXB0cywgbm90IGtpbGxzLiJ9XSxmYW1vdXM6Ik9uIDE4IEp1bmUgMjAxNyBhIFVTIE5hdnkgU3VwZXIgSG9ybmV0IHNob3QgZG93biBhIFN5cmlhbiBTdS0yMiwgdGhlIGZpcnN0IEFtZXJpY2FuIGFpci10by1haXIga2lsbCBzaW5jZSAxOTk5LiJ9LAp7bmFtZToiRi0yMiBSYXB0b3IiLGZ1bGw6IkxvY2toZWVkIE1hcnRpbiAvIEJvZWluZyBGLTIyIFJhcHRvciIsb3JpZ2luOiJVbml0ZWQgU3RhdGVzIixnZW46IjV0aCIsZmlyc3RGbGlnaHQ6MTk5Nyxyb2xlOiJTdGVhbHRoIGFpciBzdXBlcmlvcml0eSIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6MCxzdGF0dXM6InN0cmlrZSIsbm90ZToiTmV2ZXIgZW5nYWdlZCBhbiBlbmVteSBhaXJjcmFmdCwgdGhvdWdoIGl0IGhhcyBmbG93biBzdHJpa2UgbWlzc2lvbnMgb3ZlciBTeXJpYSBzaW5jZSAyMDE0LiBJdHMgb25seSBhaXItdG8tYWlyIHdlYXBvbiBlbXBsb3ltZW50cyB3ZXJlIGEgQ2hpbmVzZSBzcHkgYmFsbG9vbiBhbmQgdGhyZWUgdW5pZGVudGlmaWVkIG9iamVjdHMsIGFsbCBpbiAyMDIzLiIsY29uZmxpY3RzOlt7eXI6IjIwMjMiLG46Ik4uIEFtZXJpY2FuIGFpcnNwYWNlIixuYXRpb246IlVTQUYiLGs6MCxsOjAsZDoiRG93bmVkIGEgQ2hpbmVzZSBzdXJ2ZWlsbGFuY2UgYmFsbG9vbiBhbmQgdGhyZWUgdW5pZGVudGlmaWVkIG9iamVjdHMgd2l0aCBBSU0tOVgg4oCUIG5vIGFpcmNyYWZ0LiJ9XSxmYW1vdXM6Ik9uIDQgRmVicnVhcnkgMjAyMyBhbiBGLTIyIGRlc3Ryb3llZCBhIENoaW5lc2Ugc3B5IGJhbGxvb24gd2l0aCBhIHNpbmdsZSBBSU0tOVgg4oCUIHRoZSB0eXBlJ3MgZmlyc3QgYWlyLXRvLWFpciB3ZWFwb24gZW1wbG95bWVudC4ifSwKe25hbWU6IkYtMzUgTGlnaHRuaW5nIElJIixmdWxsOiJMb2NraGVlZCBNYXJ0aW4gRi0zNSBMaWdodG5pbmcgSUkiLG9yaWdpbjoiVW5pdGVkIFN0YXRlcyIsZ2VuOiI1dGgiLGZpcnN0RmxpZ2h0OjIwMDYscm9sZToiU3RlYWx0aCBtdWx0aXJvbGUiLGtpbGxzOjEsbG9zc2VzOjAsZ3JvdW5kOjAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IkZpcnN0IGtpbGwgb2YgYSBtYW5uZWQgYWlyY3JhZnQgY2FtZSBpbiAyMDI2LiBFYXJsaWVyIElzcmFlbGkgRi0zNSBraWxscyAoMjAyMSBkcm9uZXMsIDIwMjQgY3J1aXNlIG1pc3NpbGVzKSBhcmUgcmVhbCBidXQgbm90IG1hbm5lZC1haXJjcmFmdCBraWxscy4iLGNvbmZsaWN0czpbe3lyOiIyMDIx4oCTMjYiLG46IklzcmFlbGkgYWlyIGRlZmVuc2UiLG5hdGlvbjoiSXNyYWVsIixrOjEsbDowLGQ6IkRvd25lZCB0d28gSXJhbmlhbiBVQVZzICgyMDIxKSwgaW50ZXJjZXB0ZWQgbWlzc2lsZXMvZHJvbmVzICgyMDI0KSwgYW5kIHNob3QgZG93biBhbiBJcmFuaWFuIFlhay0xMzAgb24gNCBNYXIgMjAyNiDigJQgdGhlIGZpcnN0IEYtMzUga2lsbCBvZiBhIG1hbm5lZCBhaXJjcmFmdC4ifV0sZmFtb3VzOiJPbiA0IE1hcmNoIDIwMjYgYW4gSXNyYWVsaSBGLTM1SSBzaG90IGRvd24gYW4gSXJhbmlhbiBZYWstMTMwIOKAlCB0aGUgZmlyc3QgYWlyLXRvLWFpciBraWxsIG9mIGEgbWFubmVkIGFpcmNyYWZ0IGJ5IGFueSBGLTM1LiJ9LAp7bmFtZToiQS0xMCBUaHVuZGVyYm9sdCBJSSIsZnVsbDoiRmFpcmNoaWxkIFJlcHVibGljIEEtMTAgKFdhcnRob2cpIixvcmlnaW46IlVuaXRlZCBTdGF0ZXMiLGdlbjoiQ0FTIixmaXJzdEZsaWdodDoxOTcyLHJvbGU6IkNsb3NlIGFpciBzdXBwb3J0IixraWxsczoyLGxvc3NlczowLGdyb3VuZDo2LHN0YXR1czoicHJvdmVuIixub3RlOiJCb3RoIGtpbGxzIHdlcmUgaGVsaWNvcHRlcnMgZGVzdHJveWVkIHdpdGggdGhlIDMwIG1tIEdBVS04IGNhbm5vbi4gUm91Z2hseSBzaXggQS0xMHMgd2VyZSBsb3N0IHRvIElyYXFpIGdyb3VuZCBmaXJlIOKAlCBub25lIHRvIGVuZW15IGFpcmNyYWZ0LiIsY29uZmxpY3RzOlt7eXI6IjE5OTEiLG46Ikd1bGYgV2FyIixuYXRpb246IlVTQUYiLGs6MixsOjAsZDoiVHdvIElyYXFpIGhlbGljb3B0ZXJzIHNob3QgZG93biB3aXRoIHRoZSBndW47IH42IEEtMTBzIGxvc3QgdG8gU0FNcy9ncm91bmQgZmlyZS4ifV0sZmFtb3VzOiJPbiA2IEZlYnJ1YXJ5IDE5OTEgYW4gQS0xMCBiZWNhbWUgdGhlICdDaG9wcGVyIFBvcHBlcicsIGRvd25pbmcgYW4gSXJhcWkgaGVsaWNvcHRlciB3aXRoIGl0cyAzMCBtbSBndW4uIn0sCntuYW1lOiJGLTUgRnJlZWRvbSBGaWdodGVyIixmdWxsOiJOb3J0aHJvcCBGLTVBL0IgJiBGLTVFL0YgVGlnZXIgSUkiLG9yaWdpbjoiVW5pdGVkIFN0YXRlcyIsZ2VuOiIzcmQiLGZpcnN0RmxpZ2h0OjE5NTkscm9sZToiTGlnaHQgZmlnaHRlciIsa2lsbHM6MjUsa3I6IjE14oCTMzAiLGxvc3NlczoxNSxscjoiMTDigJMyNSIsZ3JvdW5kOjMsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IktpbGxzOiB+MjUgaXMgRXRoaW9waWHigJlzIE9nYWRlbi13YXIgY3JlZGl0OyBkb2N1bWVudGVkIHJlY29uc3RydWN0aW9ucyBnaXZlIDE14oCTMzAgaW5jbHVkaW5nIGEgaGFuZGZ1bCBvZiBJcmFuaWFuIHZpY3Rvcmllcy4gTG9zc2VzIHdlcmUgbG9uZyB1bmRlci1yZXBvcnRlZDogSXJhbmlhbiBGLTVzIGxvc3Qgcm91Z2hseSAxMOKAkzI1IGluIGFpciBjb21iYXQgdG8gSXJhcWkgTWlHLTIxcywgTWlHLTIzcyBhbmQgTWlyYWdlIEYxcy4gQSBkaXNwdXRlZCBJcmFuaWFuIE1pRy0yNSBjbGFpbSAoMTk4MykgaXMgZXhjbHVkZWQuIixjb25mbGljdHM6W3t5cjoiMTk3N+KAkzc4IixuOiJPZ2FkZW4gV2FyIixuYXRpb246IkV0aGlvcGlhIixrOjIwLGw6MCxkOiJFdGhpb3BpYW4gRi01cyBjcmVkaXRlZCB3aXRoIH4yNSBTb21hbGkgTWlHLTE3cyBhbmQgTWlHLTIxcyAoYWJvdXQgMTHigJMyMSB2ZXJpZmlhYmxlKTsgYXQgbGVhc3QgMyBGLTVzIGxvc3QgdG8gZ3JvdW5kIGZpcmUuIn0se3lyOiIxOTgw4oCTODgiLG46IklyYW7igJNJcmFxIFdhciIsbmF0aW9uOiJJcmFuIixrOjUsbDoxNSxkOiJJUklBRiBGLTVFcyBzY29yZWQgfjTigJM2IGtpbGxzIGJ1dCBsb3N0IHJvdWdobHkgMTDigJMyNSB0byBJcmFxaSBmaWdodGVycyDigJQgdGhlIHR5cGXigJlzIGhlYXZpZXN0IGFpci1jb21iYXQgbG9zc2VzLiBBIGRpc3B1dGVkIE1pRy0yNSBjbGFpbSBpcyBleGNsdWRlZC4ifV0sZmFtb3VzOiJFdGhpb3BpYW4gRi01RXMgc2hvdCBkb3duIHJvdWdobHkgMjUgU29tYWxpIE1pRy0xN3MgYW5kIE1pRy0yMXMgZHVyaW5nIHRoZSAxOTc34oCTNzggT2dhZGVuIFdhci4ifSwKe25hbWU6IkYtMTA0IFN0YXJmaWdodGVyIixmdWxsOiJMb2NraGVlZCBGLTEwNCBTdGFyZmlnaHRlciIsb3JpZ2luOiJVbml0ZWQgU3RhdGVzIixnZW46IjJuZCIsZmlyc3RGbGlnaHQ6MTk1NCxyb2xlOiJJbnRlcmNlcHRvciIsa2lsbHM6Nixsb3NzZXM6NCxscjoiNOKAkzgiLGdyb3VuZDowLHN0YXR1czoicHJvdmVuIixyZXRpcmVkOnRydWUsbm90ZToiS2lsbHMgc3ByZWFkIGFjcm9zcyBQYWtpc3RhbmkgYW5kIFRhaXdhbmVzZSBzZXJ2aWNlOyBzZXZlcmFsIDE5NjUtd2FyIGNsYWltcyBhcmUgZGVuaWVkIGJ5IHRoZSBvdGhlciBzaWRlLiBBaXItY29tYmF0IGxvc3NlcyBydW4gNOKAkzggZGVwZW5kaW5nIG9uIHdob3NlIGNsYWltcyB5b3UgYWNjZXB0IOKAlCBpbmNsdWRpbmcgYSBVU0FGIEYtMTA0QyBkb3duZWQgYnkgYSBDaGluZXNlIE1pRy0xOSBuZWFyIEhhaW5hbiBpbiAxOTY1LiIsY29uZmxpY3RzOlt7eXI6IjE5NjUiLG46IkluZG8tUGFraXN0YW5pIFdhciIsbmF0aW9uOiJQYWtpc3RhbiIsazoyLGw6MCxkOiJDbGFpbWVkIGEgTXlzdMOocmUgSVYgYW5kIENhbmJlcnJhczsgc29tZSBjbGFpbXMgZGVuaWVkIGJ5IEluZGlhLiJ9LHt5cjoiMTk2NSIsbjoiVmlldG5hbSBXYXIgKEhhaW5hbikiLG5hdGlvbjoiVVNBIixrOjAsbDoxLGQ6IkEgVVNBRiBGLTEwNEMgc3RyYXllZCBvdmVyIENoaW5lc2UgSGFpbmFuIGFuZCB3YXMgZG93bmVkIGJ5IGEgUExBQUYgTWlHLTE5OyBDYXB0LiBQaGlsaXAgU21pdGggc3BlbnQgb3ZlciBzZXZlbiB5ZWFycyBhcyBhIFBPVy4ifSx7eXI6IjE5NjciLG46IlRhaXdhbiBTdHJhaXQgY2xhc2giLG5hdGlvbjoiVGFpd2FuIixrOjIsbDoxLGQ6IlR3byBST0NBRiBGLTEwNEdzIGVhY2ggZG93bmVkIGEgUExBQUYgTWlHLTE5OyBvbmUgRi0xMDQgcGlsb3QgbG9zdC4ifSx7eXI6IjE5NzEiLG46IkluZG8tUGFraXN0YW5pIFdhciIsbmF0aW9uOiJQYWtpc3RhbiIsazoyLGw6MixkOiJNaXhlZCBjbGFpbXM7IDIgRi0xMDRzIGxvc3QgdG8gSW5kaWFuIE1pRy0yMXMuIn1dLGZhbW91czoiVGFpd2FuZXNlIEYtMTA0R3MgZG93bmVkIHR3byBDaGluZXNlIE1pRy0xOXMgaW4gdGhlIEphbnVhcnkgMTk2NyBjbGFzaCBvdmVyIHRoZSBUYWl3YW4gU3RyYWl0LiJ9LAp7bmFtZToiTWlyYWdlIElJSSAvIDUiLGZ1bGw6IkRhc3NhdWx0IE1pcmFnZSBJSUkgLyBNaXJhZ2UgNSIsb3JpZ2luOiJGcmFuY2UiLGdlbjoiMm5kLzNyZCIsZmlyc3RGbGlnaHQ6MTk1Nixyb2xlOiJJbnRlcmNlcHRvciAvIG11bHRpcm9sZSIsa2lsbHM6MTAwLGtyOiIxMDDigJMyMjAiLGxvc3NlczoxNSxscjoiOOKAkzM1Iixncm91bmQ6MCxzdGF0dXM6InByb3ZlbiIscmV0aXJlZDp0cnVlLG5vdGU6In4xMDAgaXMgdGhlIGNvbnNlcnZhdGl2ZSBjb25zZW5zdXMgZm9yIHRoZSBJc3JhZWxpIE1pcmFnZSBJSUlDSiBhbG9uZTsgY29tcGlsZWQgSXNyYWVsaSBjcmVkaXQgbGlzdHMgcnVuIHRvIH4yMjAsIGJ1dCBtYW55IGtpbGxzIGNhbm5vdCBiZSBzcGxpdCBmcm9tIHRoZSBJc3JhZWxpLWJ1aWx0IE5lc2hlciBkZXJpdmF0aXZlLCB3aGljaCBpcyBjb3VudGVkIHNlcGFyYXRlbHkuIExvc3NlcyByYW5nZSBmcm9tIElzcmFlbCdzIG9mZmljaWFsIGFjY291bnRpbmcgKH444oCTMTIpIHRvIH4zNSBpbiBvcHBvc2luZyBjbGFpbXMuIixjb25mbGljdHM6W3t5cjoiMTk2NyIsbjoiU2l4LURheSBXYXIiLG5hdGlvbjoiSXNyYWVsIixrOjQ4LGw6MCxkOiJJc3JhZWxpIE1pcmFnZSBJSUlDSiBjbGFpbWVkIH40OCBvZiA1OCBBcmFiIGFpcmNyYWZ0IGRvd25lZCBpbiBhaXIgY29tYmF0LiJ9LHt5cjoiMTk3MSIsbjoiSW5kby1QYWtpc3RhbmkgV2FyIixuYXRpb246IlBha2lzdGFuIixrOjMsbDowLGQ6IlBBRiBNaXJhZ2VzIGNsYWltZWQgQ2FuYmVycmFzLCBhIFN1LTcgYW5kIGEgSHVudGVyIHdpdGggbm8gbG9zc2VzIHJlcG9ydGVkLiJ9LHt5cjoiMTk4MiIsbjoiRmFsa2xhbmRzIFdhciIsbmF0aW9uOiJBcmdlbnRpbmEiLGs6MCxsOjEyLGQ6IkFyZ2VudGluZSBNaXJhZ2UgSUlJIC8gRGFnZ2VyIGxvc3NlcywgbW9zdGx5IHRvIFNlYSBIYXJyaWVyIFNpZGV3aW5kZXJzLiJ9XSxmYW1vdXM6IklzcmFlbGkgTWlyYWdlIElJSUNKcyBjbGFpbWVkIHRoZSBidWxrIG9mIEFyYWIgYWlyY3JhZnQgZGVzdHJveWVkIGluIHRoZSAxOTY3IFNpeC1EYXkgV2FyLiJ9LAp7bmFtZToiTWlyYWdlIEYxIixmdWxsOiJEYXNzYXVsdCBNaXJhZ2UgRjEiLG9yaWdpbjoiRnJhbmNlIixnZW46IjNyZCIsZmlyc3RGbGlnaHQ6MTk2Nixyb2xlOiJJbnRlcmNlcHRvciAvIG11bHRpcm9sZSIsa2lsbHM6Mzksa3I6IjM14oCTNTgiLGxvc3NlczozNSxscjoiMjXigJM0NCIsZ3JvdW5kOjAsc3RhdHVzOiJwcm92ZW4iLHJldGlyZWQ6dHJ1ZSxub3RlOiJJcmFxaSBGMXMgd2VyZSBib3RoIHByb2xpZmljIGtpbGxlcnMgYW5kIGhlYXZ5IGxvc2VycyBpbiB0aGUgSXJhbuKAk0lyYXEgV2FyIOKAlCB0aGUgY2xvc2VzdCB0aGluZyB0byBhICdicmVhay1ldmVuJyByZWNvcmQgYW1vbmcgbWFqb3IgdHlwZXMuIENsYWltZWQtdnMtY29uZmlybWVkIGdhcHMgYXJlIHdpZGUgb24gYm90aCBzaWRlczogMzXigJM1OCBraWxscyBjbGFpbWVkICh3ZWxsIHVuZGVyIDMwIGluZGVwZW5kZW50bHkgY29uZmlybWVkKSBhZ2FpbnN0IDI14oCTNDQgbG9zc2VzLiIsY29uZmxpY3RzOlt7eXI6IjE5ODDigJM4OCIsbjoiSXJhbuKAk0lyYXEgV2FyIixuYXRpb246IklyYXEiLGs6MzUsbDozNSxkOiJDbGFpbWVkIH4zNSBJcmFuaWFuIGFpcmNyYWZ0IGluY2wuIEYtMTRzOyAzMyBJcmFxaSBGMXMgZG93bmVkIGJ5IElyYW5pYW4gRi0xNHMgKyAyIGJ5IEYtNHMuIn0se3lyOiIxOTgx4oCTODgiLG46IlMuIEFmcmljYW4gQm9yZGVyIFdhciIsbmF0aW9uOiJTLiBBZnJpY2EiLGs6MixsOjAsZDoiU0FBRiBNaXJhZ2UgRjFDWiBkb3duZWQgdHdvIEFuZ29sYW4gTWlHLTIxcy4ifSx7eXI6IjE5OTEiLG46Ikd1bGYgV2FyIixuYXRpb246IklyYXEiLGs6MCxsOjksZDoifjkgSXJhcWkgRjFzIGRvd25lZCBpbiBhaXIgY29tYmF0LCBtb3N0bHkgYnkgVVNBRiBGLTE1cy4ifV0sZmFtb3VzOiJJcmFxaSBNaXJhZ2UgRjFzIGRvd25lZCBzZXZlcmFsIElyYW5pYW4gRi0xNCBUb21jYXRzIGR1cmluZyB0aGUgbG93LWFsdGl0dWRlICdHaXJhZmZlJyBtaXNzaW9ucyBvZiB0aGUgSXJhbuKAk0lyYXEgV2FyLiJ9LAp7bmFtZToiTWlyYWdlIDIwMDAiLGZ1bGw6IkRhc3NhdWx0IE1pcmFnZSAyMDAwIixvcmlnaW46IkZyYW5jZSIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5Nzgscm9sZToiTXVsdGlyb2xlIixraWxsczoxLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoicHJvdmVuIixub3RlOiJBIEdyZWVrIE1pcmFnZSAyMDAwIHNob3QgZG93biBhIFR1cmtpc2ggRi0xNiBvdmVyIHRoZSBBZWdlYW4gaW4gMTk5NiDigJQgdGhlIHR5cGUncyBmaXJzdCBhaXItdG8tYWlyIGtpbGwuIFR1cmtleSBjb25maXJtZWQgdGhlIGxvc3MgaW4gMjAxMjsgR3JlZWNlIGhhcyBuZXZlciBvZmZpY2lhbGx5IGFja25vd2xlZGdlZCBpdC4gSW5kaWFuIE1pcmFnZSAyMDAwcyBmbGV3IHN0cmlrZSBtaXNzaW9ucyBpbiB0aGUgTWF5IDIwMjUgY2xhc2ggd2l0aCBQYWtpc3RhbjsgYSBsb3NzIHdhcyBhbGxlZ2VkIGJ1dCBuZXZlciBjb25maXJtZWQuIixjb25mbGljdHM6W3t5cjoiMTk5OSIsbjoiS2FyZ2lsIFdhciIsbmF0aW9uOiJJbmRpYSIsazowLGw6MCxkOiJ+MjQwIHN0cmlrZSBzb3J0aWVzOyBubyBhaXItdG8tYWlyIGNvbWJhdC4ifSx7eXI6IjIwMjUiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiVWtyYWluZSIsazowLGw6MCxkOiJBIFVrcmFpbmlhbiBNaXJhZ2UgMjAwMCBkZXN0cm95ZWQgYSBLaC0xMDEgY3J1aXNlIG1pc3NpbGUgaW4gMjAyNSDigJQgbm90IGEgbWFubmVkIGFpcmNyYWZ0LiJ9XSxmYW1vdXM6Ik5vIGNvbmZpcm1lZCBhaXItdG8tYWlyIGtpbGwgYWdhaW5zdCBhIG1hbm5lZCBhaXJjcmFmdDsgYSAxOTk2IEdyZWVrIGNsYWltIG92ZXIgYSBUdXJraXNoIEYtMTYgcmVtYWlucyBkaXNwdXRlZC4ifSwKe25hbWU6IlJhZmFsZSIsZnVsbDoiRGFzc2F1bHQgUmFmYWxlIixvcmlnaW46IkZyYW5jZSIsZ2VuOiI0LjUiLGZpcnN0RmxpZ2h0OjE5ODYscm9sZToiT21uaXJvbGUiLGtpbGxzOjAsbG9zc2VzOjEsZ3JvdW5kOjAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IkluIE1heSAyMDI1IGF0IGxlYXN0IG9uZSBJbmRpYW4gUmFmYWxlIHdhcyBzaG90IGRvd24gZHVyaW5nIHRoZSBJbmRpYeKAk1Bha2lzdGFuIGFpciBiYXR0bGUsIGluZGVwZW5kZW50bHkgY29uZmlybWVkIGJ5IFVTIGFuZCBGcmVuY2ggb2ZmaWNpYWxzLiBQYWtpc3RhbiBjbGFpbWVkIHVwIHRvIHRocmVlOyBvbmx5IG9uZSBpcyB2ZXJpZmllZC4gVGhlIFJhZmFsZSBoYXMgeWV0IHRvIHNjb3JlIGFuIGFpci10by1haXIga2lsbC4iLGNvbmZsaWN0czpbe3lyOiIyMDEx4oCTMjUiLG46IkxpYnlhL01hbGkvSXJhcS9TeXJpYSIsbmF0aW9uOiJGcmFuY2UiLGs6MCxsOjAsZDoiRXh0ZW5zaXZlIGFpci10by1ncm91bmQgYW5kIHN0cmlrZSBvcGVyYXRpb25zOyBubyBjb25maXJtZWQgYWlyLXRvLWFpciB2aWN0b3J5LiJ9LHt5cjoiMjAyNSIsbjoiSW5kaWHigJNQYWtpc3RhbiAoU2luZG9vcikiLG5hdGlvbjoiSW5kaWEiLGs6MCxsOjAsZDoiUGFraXN0YW4gY2xhaW1lZCBSYWZhbGUgbG9zc2VzOyBjb250ZXN0ZWQsIG5vIG9mZmljaWFsIGNvbmZpcm1hdGlvbiDigJQgZXhjbHVkZWQuIn1dLGZhbW91czoiQ29tYmF0LXByb3ZlbiBpbiBzdHJpa2UgY2FtcGFpZ25zIHNpbmNlIExpYnlhIDIwMTE7IG5vIGFpci10by1haXIga2lsbCBjcmVkaXRlZCwgYW5kIHRoZSAyMDI1IGxvc3MgY2xhaW1zIHJlbWFpbiB1bnZlcmlmaWVkLiJ9LAp7bmFtZToiU2VhIEhhcnJpZXIiLGZ1bGw6IkJyaXRpc2ggQWVyb3NwYWNlIFNlYSBIYXJyaWVyIixvcmlnaW46IlVuaXRlZCBLaW5nZG9tIixnZW46IjNyZCIsZmlyc3RGbGlnaHQ6MTk3OCxyb2xlOiJWL1NUT0wgY2FycmllciBmaWdodGVyIixraWxsczoyMCxrcjoiMjDigJMyMyIsbG9zc2VzOjAsZ3JvdW5kOjIsc3RhdHVzOiJwcm92ZW4iLHJldGlyZWQ6dHJ1ZSxub3RlOiJBIDIwLXRvLTAgYWlyLWNvbWJhdCByZWNvcmQgaW4gdGhlIEZhbGtsYW5kcy4gMjAgY29uZmlybWVkIHBsdXMgMyBwcm9iYWJsZXMg4oCUIHdoaWNoIGlzIHdoZXJlIHRoZSAyM+KAkzI0IGluIHBvcHVsYXIgc291cmNlcyBjb21lcyBmcm9tOyAyMCBpcyB0aGUgY29uc2VydmF0aXZlLCBicm9hZGx5IGFncmVlZCBmaWd1cmUuIixjb25mbGljdHM6W3t5cjoiMTk4MiIsbjoiRmFsa2xhbmRzIFdhciIsbmF0aW9uOiJVSyIsazoyMCxsOjAsZDoiMjAgQXJnZW50aW5lIGFpcmNyYWZ0IGRvd25lZCB3aXRoIHplcm8gYWlyLXRvLWFpciBsb3NzZXM7IHRoZSBBSU0tOUwgU2lkZXdpbmRlciB3YXMgZGVjaXNpdmUuIDIgbG9zdCB0byBncm91bmQgZmlyZSwgNCB0byBhY2NpZGVudHMuIn1dLGZhbW91czoiSW4gdGhlIEZhbGtsYW5kcyB0aGUgU2VhIEhhcnJpZXIgYWNoaWV2ZWQgYSAyMC10by0wIGFpci1jb21iYXQgcmVjb3JkIGFnYWluc3QgdGhlIEFyZ2VudGluZSBBaXIgRm9yY2UgYW5kIE5hdnkuIn0sCntuYW1lOiJJQUkgS2ZpciIsZnVsbDoiSXNyYWVsIEFlcm9zcGFjZSBJbmR1c3RyaWVzIEtmaXIiLG9yaWdpbjoiSXNyYWVsIixnZW46IjNyZC80dGgiLGZpcnN0RmxpZ2h0OjE5NzMscm9sZToiTXVsdGlyb2xlIixraWxsczoyLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoicHJvdmVuIixub3RlOiJUd28ga2lsbHMgYXJlIGZpcm1seSBjb25maXJtYWJsZSDigJQgYSBTeXJpYW4gTWlHLTIxICgxOTc5KSBhbmQgYSBQZXJ1dmlhbiBBLTM3QiAoMTk5NSkg4oCUIGFuZCBubyBLZmlyIGhhcyBldmVyIGJlZW4gbG9zdCBpbiBhaXItdG8tYWlyIGNvbWJhdC4gVGhlIHR5cGUgc2hpZnRlZCBtb3N0bHkgdG8gZ3JvdW5kIGF0dGFjayBvbmNlIHRoZSBGLTE1IGFuZCBGLTE2IGFycml2ZWQuIixjb25mbGljdHM6W3t5cjoiMTk3OSIsbjoiRmlyc3QgS2ZpciBraWxsIixuYXRpb246IklzcmFlbCIsazoxLGw6MCxkOiJBIEtmaXIgQy4yIGRvd25lZCBhIFN5cmlhbiBNaUctMjEg4oCUIHRoZSB0eXBlJ3MgZmlyc3QgdmljdG9yeS4ifSx7eXI6IjE5OTUiLG46IkNlbmVwYSBXYXIiLG5hdGlvbjoiRWN1YWRvciIsazoxLGw6MCxkOiJBbiBFY3VhZG9yaWFuIEtmaXIgQy4yIGRvd25lZCBhIFBlcnV2aWFuIEEtMzdCIHdpdGggYSBTaGFmcmlyIDIgbWlzc2lsZSDigJQgdGhlIHR5cGXigJlzIG9ubHkga2lsbCBvdXRzaWRlIElzcmFlbGkgc2VydmljZS4gVGhlIG9mdGVuLWNpdGVkIDE5ODIgTGViYW5vbiBraWxsIGlzIHBvb3JseSBzb3VyY2VkIGFuZCBleGNsdWRlZC4ifV0sZmFtb3VzOiJBIEtmaXIgQy4yIHNjb3JlZCB0aGUgdHlwZSdzIGZpcnN0IGFpci10by1haXIga2lsbCBhZ2FpbnN0IGEgU3lyaWFuIE1pRy0yMSBvbiAyNyBKdW5lIDE5NzkuIn0sCntuYW1lOiJFdXJvZmlnaHRlciBUeXBob29uIixmdWxsOiJFdXJvZmlnaHRlciBUeXBob29uIixvcmlnaW46Ik11bHRpbmF0aW9uYWwiLGdlbjoiNC41IixmaXJzdEZsaWdodDoxOTk0LHJvbGU6Ik11bHRpcm9sZSAvIGFpciBzdXBlcmlvcml0eSIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6MCxzdGF0dXM6InN0cmlrZSIsbm90ZToiQ29tYmF0LXByb3ZlbiBhaXItdG8tZ3JvdW5kLCBidXQgaXRzIGFpci10by1haXIgcmVjb3JkIGlzIGxpbWl0ZWQgdG8gZHJvbmUvVUFWIGludGVyY2VwdHMgKGRlZmVuZGluZyBJc3JhZWwgMjAyNCwgTWlkZGxlIEVhc3QgMjAyNOKAkzI2KSDigJQgbm90IG1hbm5lZCBhaXJjcmFmdC4iLGNvbmZsaWN0czpbe3lyOiIyMDExIixuOiJMaWJ5YSIsbmF0aW9uOiJVSyAvIEl0YWx5IixrOjAsbDowLGQ6IkNvbWJhdCBkZWJ1dDsgYWlyLXRvLWdyb3VuZCBzdHJpa2UgYW5kIHJlY29ubmFpc3NhbmNlIG9ubHkuIn0se3lyOiIyMDE14oCTMTkiLG46IkFudGktSVNJUyAoU2hhZGVyKSIsbmF0aW9uOiJVSyIsazowLGw6MCxkOiJQcmVjaXNpb24gYWlyLXRvLWdyb3VuZCBzdHJpa2VzOyBubyBhaXItdG8tYWlyIGNvbWJhdC4ifSx7eXI6IjIwMjTigJMyNiIsbjoiRHJvbmUgZGVmZW5zZSIsbmF0aW9uOiJVSyIsazowLGw6MCxkOiJEZXN0cm95ZWQgc2V2ZXJhbCBJcmFuaWFuL0hvdXRoaSBkcm9uZXMg4oCUIGRyb25lIGtpbGxzLCBub3QgbWFubmVkLWFpcmNyYWZ0IGtpbGxzLiJ9XSxmYW1vdXM6Ik5vIGFpci10by1haXIgY29tYmF0IGFnYWluc3QgbWFubmVkIGFpcmNyYWZ0IHRvIGRhdGU7IGhhcyBzaG90IGRvd24gc2V2ZXJhbCBob3N0aWxlIGRyb25lcyAoMjAyNOKAkzI2KS4ifSwKe25hbWU6IlNhYWIgSkFTLTM5IEdyaXBlbiIsZnVsbDoiU2FhYiBKQVMgMzkgR3JpcGVuIixvcmlnaW46IlN3ZWRlbiIsZ2VuOiI0LjUiLGZpcnN0RmxpZ2h0OjE5ODgscm9sZToiTXVsdGlyb2xlIixraWxsczowLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoic3RyaWtlIixub3RlOiJGaXJzdCBsaXZlIGNvbWJhdDogUm95YWwgVGhhaSBBaXIgRm9yY2UgR3JpcGVucyBmbGV3IHByZWNpc2lvbiBzdHJpa2VzIGluIHRoZSBKdWx5IDIwMjUgYm9yZGVyIGNsYXNoIHdpdGggQ2FtYm9kaWEuIEVhcmxpZXIgdXNlIHdhcyByZWNvbm5haXNzYW5jZSAoU3dlZGVuIG92ZXIgTGlieWEsIDIwMTEpIGFuZCBOQVRPIEJhbHRpYyBhaXIgcG9saWNpbmcuIE5vIGFpci10by1haXIgY29tYmF0LiIsY29uZmxpY3RzOlt7eXI6IjIwMTEiLG46IkxpYnlhIixuYXRpb246IlN3ZWRlbiIsazowLGw6MCxkOiJ+NjUwIHJlY29ubmFpc3NhbmNlIGFuZCBhaXJzcGFjZS1tb25pdG9yaW5nIG1pc3Npb25zOyBubyB3ZWFwb25zIHJlbGVhc2VkLiJ9LHt5cjoiMjAyNSIsbjoiVGhhaeKAk0NhbWJvZGlhbiBjbGFzaGVzIixuYXRpb246IlRoYWlsYW5kIixrOjAsbDowLGQ6IlJlcG9ydGVkIGFpci10by1ncm91bmQgc3RyaWtlcyDigJQgcmVjZW50LCBsZXNzLXNldHRsZWQgcmVwb3J0aW5nLiJ9XSxmYW1vdXM6Ik5vIGFpci10by1haXIgY29tYmF0IHRvIGRhdGU7IGl0cyBjb21iYXQgdXNlIGlzIGxpbWl0ZWQgdG8gcmVjb25uYWlzc2FuY2UgYW5kIHJlcG9ydGVkIGFpci10by1ncm91bmQgc3RyaWtlcy4ifSwKe25hbWU6IlRvcm5hZG8gQURWIChGLjMpIixmdWxsOiJQYW5hdmlhIFRvcm5hZG8gQWlyIERlZmVuY2UgVmFyaWFudCIsb3JpZ2luOiJNdWx0aW5hdGlvbmFsIixnZW46IjR0aCIsZmlyc3RGbGlnaHQ6MTk3OSxyb2xlOiJMb25nLXJhbmdlIGludGVyY2VwdG9yIixraWxsczowLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoidW50ZXN0ZWQiLHJldGlyZWQ6dHJ1ZSxub3RlOiJEZXBsb3llZCByZXBlYXRlZGx5IChHdWxmIDE5OTEsIEJvc25pYSwgS29zb3ZvLCBJcmFxIDIwMDMpIGJ1dCBuZXZlciBlbmdhZ2VkIGFuIGVuZW15IGFpcmNyYWZ0LiBOb3cgcmV0aXJlZC4iLGNvbmZsaWN0czpbe3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJVSyAvIFNhdWRpIixrOjAsbDowLGQ6IjIsMDAwKyBjb21iYXQgYWlyIHBhdHJvbCBzb3J0aWVzIGJ1dCBoZWxkIGJhY2sgZnJvbSBJcmFxaSBhaXJzcGFjZS4ifSx7eXI6IjE5OTPigJMyMDAzIixuOiJCYWxrYW5zIC8gSXJhcSIsbmF0aW9uOiJVSyIsazowLGw6MCxkOiJFc2NvcnQgYW5kIENBUCBkdXR5OyBubyBhaXItdG8tYWlyIGtpbGxzLCBubyBsb3NzZXMuIn1dLGZhbW91czoiVGhlIGludGVyY2VwdG9yIHZhcmlhbnQgbmV2ZXIgZW5nYWdlZCBhbiBlbmVteSBhaXJjcmFmdCBkZXNwaXRlIG11bHRpcGxlIGRlcGxveW1lbnRzIGJlZm9yZSByZXRpcmVtZW50LiJ9LAp7bmFtZToiVG9ybmFkbyBJRFMiLGZ1bGw6IlBhbmF2aWEgVG9ybmFkbyBJbnRlcmRpY3Rvci9TdHJpa2UiLG9yaWdpbjoiTXVsdGluYXRpb25hbCIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5NzQscm9sZToiSW50ZXJkaWN0b3IgLyBzdHJpa2UiLGtpbGxzOjAsbG9zc2VzOjAsZ3JvdW5kOjgsc3RhdHVzOiJzdHJpa2UiLG5vdGU6IkhlYXZpbHkgY29tYmF0LXByb3ZlbiBpbiB0aGUgc3RyaWtlIHJvbGUuIEl0cyBtb3N0IHNpZ25pZmljYW50IGNvbWJhdCBsb3NzZXMg4oCUIH44IGFpcmZyYW1lcyDigJQgYWxsIGNhbWUgZnJvbSBJcmFxaSBncm91bmQgZmlyZSBpbiB0aGUgMTk5MSBHdWxmIFdhciwgbm9uZSB0byBhaXJjcmFmdC4iLGNvbmZsaWN0czpbe3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJVSyAvIEl0YWx5IC8gU2F1ZGkiLGs6MCxsOjgsZDoifjggY29hbGl0aW9uIFRvcm5hZG8gSURTIGxvc3QgdG8gSXJhcWkgU0FNcyBhbmQgQUFBIGR1cmluZyBsb3ctbGV2ZWwgc3RyaWtlcy4ifSx7eXI6IjIwMTEiLG46IkxpYnlhIixuYXRpb246IlVLIC8gSXRhbHkiLGs6MCxsOjAsZDoiTG9uZy1yYW5nZSBwcmVjaXNpb24gc3RyaWtlczsgbm8gbG9zc2VzIHRvIGVuZW15IGFjdGlvbi4ifSx7eXI6IjIwMTTigJMxOSIsbjoiQW50aS1JU0lTIixuYXRpb246IlVLIixrOjAsbDowLGQ6IlN1c3RhaW5lZCBwcmVjaXNpb24gc3RyaWtlIGNhbXBhaWduOyBSQUYgR1I0IHJldGlyZWQgMjAxOS4ifV0sZmFtb3VzOiJObyBhaXItdG8tYWlyIGNvbWJhdDsgbG9zdCBhYm91dCBlaWdodCBhaXJmcmFtZXMgdG8gSXJhcWkgZ3JvdW5kIGZpcmUgaW4gdGhlIDE5OTEgR3VsZiBXYXIg4oCUIGl0cyBtb3N0IHNpZ25pZmljYW50IGxvc3Nlcy4ifSwKe25hbWU6Ik1pRy0yMSBGaXNoYmVkIixmdWxsOiJNaWtveWFuLUd1cmV2aWNoIE1pRy0yMSIsb3JpZ2luOiJVU1NSIixnZW46IjJuZCIsZmlyc3RGbGlnaHQ6MTk1NSxyb2xlOiJGaWdodGVyIC8gaW50ZXJjZXB0b3IiLGtpbGxzOjE1MCxrcjoiMTAw4oCTMTgwIixsb3NzZXM6MjUwLGxyOiIyMDDigJM1MDAiLGdyb3VuZDoyMDAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IlRoZSBzb2Z0ZXN0IG51bWJlcnMgb24gdGhlIHBhZ2U6IH4xMSw1MDAgYnVpbHQgYW5kIGNvbWJhdCBhY3Jvc3MgZm91ciBjb250aW5lbnRzLCB3aXRoIG5vIHJlY29uY2lsZWQgZ2xvYmFsIGxlZGdlci4gVG90YWxzIGFyZSByb3VuZGVkIGFnZ3JlZ2F0ZSBlc3RpbWF0ZXMgc2hvd24gYXMgcmFuZ2VzIOKAlCBjb25maXJtZWQga2lsbHMgfjEwMOKAkzE4MCAoY2xhaW1zIHJ1biBmYXIgaGlnaGVyKSBhZ2FpbnN0IH4yMDDigJM1MDAgYWlyLWNvbWJhdCBsb3NzZXMgZGVwZW5kaW5nIG9uIHdob3NlIGNyZWRpdHMgeW91IGFjY2VwdDsgdGhlIFZpZXRuYW0ga2lsbC1yYXRpbyByZW1haW5zIGEgZGVjYWRlcy1sb25nIGRpc3B1dGUuIixjb25mbGljdHM6W3t5cjoiMTk2NeKAkzczIixuOiJWaWV0bmFtIFdhciIsbmF0aW9uOiJOLiBWaWV0bmFtIixrOjY3LGw6NjUsZDoiVlBBRi1jcmVkaXRlZCBmaWd1cmVzOyBVUyBhY2NvdW50aW5nIGRpZmZlcnMgc2hhcnBseSDigJQgYW4gdW5yZXNvbHZlZCBkaXNwdXRlLiJ9LHt5cjoiMTk3MSIsbjoiSW5kby1QYWtpc3RhbmkgV2FyIixuYXRpb246IkluZGlhIixrOjgsbDo0LGQ6IkRvd25lZCBGLTEwNHMsIEYtNnMsIGEgU2FicmUgYW5kIGEgQy0xMzAg4oCUIHdlbGwgZG9jdW1lbnRlZC4ifSx7eXI6IjE5ODDigJM4OCIsbjoiSXJhbuKAk0lyYXEgV2FyIixuYXRpb246IklyYXEiLGs6NDMsbDo1MixkOiJCb3RoIHNpZGVzJyBjbGFpbXMgaW5mbGF0ZWQ7IGhlYXZ5IGxvc3NlcyB0byBJcmFuaWFuIEYtMTRzIGFuZCBGLTRzLiJ9LHt5cjoiMTk4MiIsbjoiTGViYW5vbiBXYXIiLG5hdGlvbjoiU3lyaWEiLGs6MCxsOjQwLGQ6In4zN+KAkzQ1IFN5cmlhbiBNaUctMjFzIGRvd25lZCBieSBJc3JhZWw7IG5vIGNvbmZpcm1lZCBTeXJpYW4ga2lsbHMuIn1dLGZhbW91czoiT25lIG9mIHRoZSBtb3N0LXByb2R1Y2VkIGFuZCBjb21iYXQtYWN0aXZlIGpldHMgZXZlciBidWlsdCDigJQgZmFzdCwgY2hlYXAgYW5kIGZsb3duIGJ5IGRvemVucyBvZiBhaXIgZm9yY2VzIGFjcm9zcyBmb3VyIGNvbnRpbmVudHMuIn0sCntuYW1lOiJNaUctMjMgRmxvZ2dlciIsZnVsbDoiTWlrb3lhbi1HdXJldmljaCBNaUctMjMiLG9yaWdpbjoiVVNTUiIsZ2VuOiIzcmQiLGZpcnN0RmxpZ2h0OjE5Njcscm9sZToiU3dpbmctd2luZyBmaWdodGVyIixraWxsczoxMixrcjoiOOKAkzIwIixsb3NzZXM6MzUsbHI6IjI14oCTNjAiLGdyb3VuZDo0MCxzdGF0dXM6InByb3ZlbiIsbm90ZToiQWJvdXQgMjAga2lsbHMgd2VyZSBjbGFpbWVkOyB+MTIgYXJlIGNvbmZpcm1hYmxlLiBMb3NzIHRhbGxpZXMgZGl2ZXJnZSBqdXN0IGFzIHdpZGVseTogfjI1IGNvbmZpcm1lZCwgNjArIGlmIElyYW5pYW4gYW5kIElzcmFlbGkgY2xhaW1zIGFyZSBjcmVkaXRlZC4gTm90YWJseSwgYW4gSXJhcWkgTWlHLTIzTUwgdHdpY2UgYmVzdGVkIHRoZSBmYXIgbW9yZSBjYXBhYmxlIEYtMTQgVG9tY2F0LiIsY29uZmxpY3RzOlt7eXI6IjE5ODDigJM4OCIsbjoiSXJhbuKAk0lyYXEgV2FyIixuYXRpb246IklyYXEiLGs6NyxsOjUsZDoiTWlHLTIzTUwgZG93bmVkIElyYW5pYW4gRi0xNCBUb21jYXRzIGluIDE5ODQgYW5kIDE5ODYuIn0se3lyOiIxOTgx4oCTODUiLG46IkxlYmFub24gLyBTeXJpYSIsbmF0aW9uOiJTeXJpYSIsazowLGw6MTIsZDoiMTHigJMxMyBTeXJpYW4gTWlHLTIzcyBsb3N0IGluIGFpciBjb21iYXQgd2l0aCBJc3JhZWwuIn0se3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJJcmFxIixrOjAsbDo4LGQ6IlVTQUYgRi0xNXMgZG93bmVkIDggSXJhcWkgTWlHLTIzczsgbm8gTWlHLTIzIGtpbGxzLiJ9XSxmYW1vdXM6IkFuIElyYXFpIE1pRy0yM01MIHNob3QgZG93biBhbiBJcmFuaWFuIEYtMTQgVG9tY2F0IG9uIDExIEF1Z3VzdCAxOTg0IOKAlCBhIHJhcmUgb2NjYXNpb24gYSBGbG9nZ2VyIGJlc3RlZCB0aGUgVG9tY2F0LiJ9LAp7bmFtZToiTWlHLTI1IEZveGJhdCIsZnVsbDoiTWlrb3lhbi1HdXJldmljaCBNaUctMjUiLG9yaWdpbjoiVVNTUiIsZ2VuOiIzcmQiLGZpcnN0RmxpZ2h0OjE5NjQscm9sZToiSGlnaC1zcGVlZCBpbnRlcmNlcHRvciIsa2lsbHM6MTAsa3I6IjXigJMxNSIsbG9zc2VzOjcsbHI6IjbigJMxNiIsZ3JvdW5kOjEsc3RhdHVzOiJwcm92ZW4iLHJldGlyZWQ6dHJ1ZSxub3RlOiJDYXJlZXIgZmlndXJlcyBzcGFuIHRoZSBJcmFu4oCTSXJhcSBXYXIsIFN5cmlhbiBsb3NzZXMgb3ZlciBMZWJhbm9uLCBEZXNlcnQgU3Rvcm0gYW5kIHRoZSBuby1mbHkgem9uZXMg4oCUIHNvdXJjZXMgZGl2ZXJnZSB3aWRlbHksIHNvIHJhbmdlcyBhcmUgc2hvd24uIFNjb3JlZCB0aGUgb25seSBjb25maXJtZWQgSXJhcWkgYWlyLXRvLWFpciBraWxsIG9mIERlc2VydCBTdG9ybSwgYW5kIGxhdGVyIHRoZSBmaXJzdCBhaXJjcmFmdC12cy1kcm9uZSBraWxsIGluIGhpc3RvcnkgKDIwMDIsIG5vdCBjb3VudGVkIGluIHRoZSB0b3RhbCkuIixjb25mbGljdHM6W3t5cjoiMTk4MOKAkzg4IixuOiJJcmFu4oCTSXJhcSBXYXIiLG5hdGlvbjoiSXJhcSIsazo5LGw6MixkOiJJcmFxaSBGb3hiYXRzIOKAlCBDb2wuIE1vaGFtbWVkIFJheXlhbiBhbG9uZSB3YXMgY3JlZGl0ZWQgd2l0aCB+OCDigJQgZG93bmVkIElyYW5pYW4gRi00cywgRi01cywgYSBDLTEzMCwgYW4gRi0xNCBhbmQgdGhlIEZva2tlciBGLTI3IGFpcmxpbmVyIHNob290ZG93biBvZiAxOTg2LiBJcmFuIGNsYWltcyB1cCB0byAxMCBGb3hiYXRzIGluIHJldHVybjsgb25seSBhIGNvdXBsZSBhcmUgY29uZmlybWVkLiJ9LHt5cjoiMTk4MSIsbjoiTGViYW5vbiAvIFN5cmlhIixuYXRpb246IlN5cmlhIixrOjAsbDoyLGQ6IlR3byBTeXJpYW4gTWlHLTI1cyBmZWxsIHRvIElzcmFlbGkgRi0xNXMgaW4gMTk4MTsgYSByZWNvbm5haXNzYW5jZSBNaUctMjVSQiBsb3N0IGluIDE5ODIgaXMgc29tZXRpbWVzIGFkZGVkLiJ9LHt5cjoiMTk5MSIsbjoiR3VsZiBXYXIiLG5hdGlvbjoiSXJhcSIsazoxLGw6MixkOiJEb3duZWQgYSBVUyBOYXZ5IEYvQS0xOCAoU3BlaWNoZXIpIOKAlCBJcmFx4oCZcyBvbmx5IGNvbmZpcm1lZCBBMkEga2lsbCBvZiB0aGUgd2FyOyB0d28gTWlHLTI1cyBsb3N0IHRvIEYtMTVzLiJ9LHt5cjoiMTk5Mi8yMDAyIixuOiJOby1mbHkgem9uZXMiLG5hdGlvbjoiSXJhcSIsazowLGw6MSxkOiJPbmUgTWlHLTI1IGZlbGwgdG8gYSBVU0FGIEYtMTYgaW4gRGVjZW1iZXIgMTk5MiDigJQgdGhlIGZpcnN0IGNvbWJhdCBBTVJBQU0ga2lsbC4gSW4gMjAwMiBhIEZveGJhdCBkb3duZWQgYW4gTVEtMSBQcmVkYXRvcjogdGhlIGZpcnN0IGFpcmNyYWZ0LXZzLWRyb25lIGtpbGwsIG5vdGVkIGJ1dCBub3QgY291bnRlZC4ifV0sZmFtb3VzOiJPbiAxNyBKYW51YXJ5IDE5OTEgYW4gSXJhcWkgTWlHLTI1IGRvd25lZCBhIFVTIE5hdnkgRi9BLTE4IOKAlCB0aGUgc29sZSBjb25maXJtZWQgYWlyLXRvLWFpciBraWxsIHNjb3JlZCBieSBJcmFxIGR1cmluZyBEZXNlcnQgU3Rvcm0uIn0sCntuYW1lOiJNaUctMjkgRnVsY3J1bSIsZnVsbDoiTWlrb3lhbiBNaUctMjkiLG9yaWdpbjoiVVNTUiIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5Nzcscm9sZToiQWlyIHN1cGVyaW9yaXR5IixraWxsczowLGxvc3NlczoxNSxncm91bmQ6MzAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IkRlc3BpdGUgaGVhdnkgY29tYmF0IGV4cG9zdXJlIHRoZXJlIGlzIG5vIGJyb2FkbHkgYWNjZXB0ZWQgTWlHLTI5IGtpbGwgYWdhaW5zdCBhIGZpeGVkLXdpbmcgbWFubmVkIGFpcmNyYWZ0IOKAlCBhbmQgYSBsb25nIGxpc3Qgb2YgbG9zc2VzIHRvIEYtMTVzLCBGLTE2cyBhbmQgZXZlbiB0aGUgU3UtMjcuIEl0cyBvbmx5IGNvbmZpcm1lZCBzaG9vdGRvd25zIOKAlCB0d28gdW5hcm1lZCBjaXZpbGlhbiBDZXNzbmFzIGRlc3Ryb3llZCBieSBhIEN1YmFuIE1pRy0yOSBpbiAxOTk2IOKAlCBmYWxsIG91dHNpZGUgdGhlIG1pbGl0YXJ5LWFpcmNyYWZ0IGNvbnZlbnRpb24gYW5kIGFyZSBub3QgY291bnRlZC4iLGNvbmZsaWN0czpbe3lyOiIxOTkxIixuOiJHdWxmIFdhciIsbmF0aW9uOiJJcmFxIixrOjAsbDo1LGQ6IkZpdmUgSXJhcWkgTWlHLTI5cyBkb3duZWQgYnkgRi0xNXMgKG9uZSB2aWEgZnJhdHJpY2lkZSk7IG5vIGtpbGxzLiJ9LHt5cjoiMTk5OSIsbjoiS29zb3ZvIFdhciIsbmF0aW9uOiJZdWdvc2xhdmlhIixrOjAsbDo2LGQ6IlNpeCBZdWdvc2xhdiBNaUctMjlzIGRvd25lZCBieSBOQVRPIEYtMTVzL0YtMTZzLiJ9LHt5cjoiMTk5OeKAkzIwMDAiLG46IkVyaXRyZWHigJNFdGhpb3BpYSIsbmF0aW9uOiJFcml0cmVhIixrOjAsbDoyLGQ6IlRoZSBvbmx5IE1pRy0yOS12cy1TdS0yNyBkdWVscyBldmVyIOKAlCB0d28gRXJpdHJlYW4gRnVsY3J1bXMgZG93bmVkIGJ5IEV0aGlvcGlhbiBGbGFua2Vycy4ifSx7eXI6IjIwMjLigJMyNSIsbjoiUnVzc28tVWtyYWluaWFuIFdhciIsbmF0aW9uOiJVa3JhaW5lIixrOjAsbDoyOSxkOiJ+MjkgVWtyYWluaWFuIE1pRy0yOXMgdmlzdWFsbHkgY29uZmlybWVkIGxvc3QgdG8gbWl4ZWQgY2F1c2VzOyB1c2VkIGZvciBIQVJNL0pEQU0gc3RyaWtlcy4ifV0sZmFtb3VzOiJJbiBGZWJydWFyeSAxOTk5IHRoZSBNaUctMjkgbWV0IGl0cyBzdGFibGVtYXRlIHRoZSBTdS0yNyBpbiBjb21iYXQgZm9yIHRoZSBvbmx5IHRpbWUgaW4gaGlzdG9yeSDigJQgYW5kIGxvc3QgZGVjaXNpdmVseS4ifSwKe25hbWU6Ik1pRy0zMSBGb3hob3VuZCIsZnVsbDoiTWlrb3lhbiBNaUctMzEiLG9yaWdpbjoiVVNTUiAvIFJ1c3NpYSIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5NzUscm9sZToiTG9uZy1yYW5nZSBpbnRlcmNlcHRvciIsa2lsbHM6Mixsb3NzZXM6MCxncm91bmQ6MyxzdGF0dXM6InByb3ZlbiIsbm90ZToiUnVzc2lhJ3MgbG9uZy1yYW5nZSBpbnRlcmNlcHRvciBoYXMgYmVlbiBjcmVkaXRlZCB3aXRoIHNldmVyYWwga2lsbHMgb2YgVWtyYWluaWFuIGFpcmNyYWZ0IHVzaW5nIHRoZSBSLTM3TSBtaXNzaWxlIHNpbmNlIDIwMjIsIHRob3VnaCBjcmVkaXQgaXMgYmx1cnJlZCB3aXRoIHRoZSBTdS0zNSwgd2hpY2ggZmlyZXMgdGhlIHNhbWUgd2VhcG9uLiBObyBNaUctMzEgaGFzIGJlZW4gbG9zdCBpbiBhaXIgY29tYmF0LiIsY29uZmxpY3RzOlt7eXI6IjIwMjLigJMyNSIsbjoiUnVzc28tVWtyYWluaWFuIFdhciIsbmF0aW9uOiJSdXNzaWEiLGs6MCxsOjAsZDoiUmVwb3J0ZWQgUi0zN00ga2lsbHMgYXJlIHVudmVyaWZpZWQ7IE1pRy0zMUsgbGF1bmNoZXMgS2luemhhbCBtaXNzaWxlcy4gfjMgbG9zdCBvbiB0aGUgZ3JvdW5kIC8gdG8gYWNjaWRlbnRzLCBub25lIHRvIGVuZW15IGFpcmNyYWZ0LiJ9XSxmYW1vdXM6IlRoZSBNaUctMzEncyBjb21iYXQgY29udHJpYnV0aW9uIGhhcyBiZWVuIGFzIGEgc3RhbmQtb2ZmIG1pc3NpbGUgdHJ1Y2sg4oCUIGxhdW5jaGluZyBSLTM3TSBhbmQgS2luemhhbCBzaG90cyDigJQgcmF0aGVyIHRoYW4gYXMgYSBkb2dmaWdodGVyLiJ9LAp7bmFtZToiU3UtMjcgRmxhbmtlciIsZnVsbDoiU3VraG9pIFN1LTI3IixvcmlnaW46IlVTU1IgLyBSdXNzaWEiLGdlbjoiNHRoIixmaXJzdEZsaWdodDoxOTc3LHJvbGU6IkFpciBzdXBlcmlvcml0eSIsa2lsbHM6Myxsb3NzZXM6MSxncm91bmQ6MTksc3RhdHVzOiJwcm92ZW4iLG5vdGU6IlVuZGVmZWF0ZWQgaW4gYWlyLXRvLWFpciBjb21iYXQg4oCUIGl0cyBvbmx5IGFpci1jb21iYXQgYWN0aW9uIHdhcyBiZWF0aW5nIHRoZSBNaUctMjkgb3ZlciB0aGUgSG9ybiBvZiBBZnJpY2EuIEdyb3VuZCBsb3NzZXMgYXJlIGFsbW9zdCBhbGwgZnJvbSB0aGUgVWtyYWluZSB3YXIgKGJvdGggb3BlcmF0b3JzKS4iLGNvbmZsaWN0czpbe3lyOiIxOTk44oCTMjAwMCIsbjoiRXJpdHJlYeKAk0V0aGlvcGlhIixuYXRpb246IkV0aGlvcGlhIixrOjMsbDowLGQ6IkRvd25lZCAy4oCTMyBFcml0cmVhbiBNaUctMjlzICh1cCB0byA1IGNsYWltZWQpIGluIHRoZSBvbmx5IEZsYW5rZXItdnMtRnVsY3J1bSBjb21iYXQgaW4gaGlzdG9yeS4ifSx7eXI6IjIwMDAiLG46IkFuZ29sYW4gQ2l2aWwgV2FyIixuYXRpb246IkFuZ29sYSIsazowLGw6MCxkOiJPbmUgU3UtMjcgbG9zdCB0byBhIE1BTlBBRFMgb24gbGFuZGluZyDigJQgbm90IGFpci10by1haXIuIn0se3lyOiIyMDIy4oCTMjUiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiVWtyYWluZSAvIFJ1c3NpYSIsazowLGw6MCxkOiJ+MTkgVWtyYWluaWFuIFN1LTI3cyB2aXN1YWxseSBjb25maXJtZWQgbG9zdCB0byBTQU1zL2dyb3VuZCBzdHJpa2VzOyBubyBjb25maXJtZWQgQTJBIGtpbGxzIGVpdGhlciBzaWRlLiJ9XSxmYW1vdXM6Ik9uIDI14oCTMjYgRmVicnVhcnkgMTk5OSBhbiBFdGhpb3BpYW4gU3UtMjcgZG93bmVkIHR3byBFcml0cmVhbiBNaUctMjlzIGluIHRoZSBvbmx5IEZsYW5rZXItdnMtRnVsY3J1bSBkb2dmaWdodHMgZXZlciBmb3VnaHQuIn0sCntuYW1lOiJTdS0zMCIsZnVsbDoiU3VraG9pIFN1LTMwIChpbmNsLiBNS0kvU00pIixvcmlnaW46IlJ1c3NpYSIsZ2VuOiI0LjUiLGZpcnN0RmxpZ2h0OjE5ODkscm9sZToiU3VwZXJtYW5ldXZlcmFibGUgbXVsdGlyb2xlIixraWxsczoxLGxvc3NlczowLGdyb3VuZDoxNSxzdGF0dXM6InByb3ZlbiIsbm90ZToiQSBSdXNzaWFuIFN1LTMwIHNob3QgZG93biBhIFVrcmFpbmlhbiBNaUctMjkgaW4gQXVndXN0IDIwMjQuIFR3byBTdS0zMHMgd2VyZSBsYXRlciBkZXN0cm95ZWQgYnkgQUlNLTkgbWlzc2lsZXMgZmlyZWQgZnJvbSBVa3JhaW5pYW4gc2VhIGRyb25lcyDigJQgbmF2YWwtZHJvbmUga2lsbHMsIG5vdCBhaXItdG8tYWlyIGxvc3Nlcy4iLGNvbmZsaWN0czpbe3lyOiIyMDIy4oCTMjUiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiUnVzc2lhIixrOjAsbDowLGQ6In4xNSBTdS0zMHMgbG9zdCB0byBTQU1zLCBkcm9uZSByYWlkcyBhbmQgc2Fib3RhZ2Ug4oCUIG5vbmUgdG8gZW5lbXkgZmlnaHRlcnMuIFItMzdNIGtpbGwgY2xhaW1zIHVudmVyaWZpZWQuIn0se3lyOiIyMDE5LzIwMjUiLG46IkluZGlh4oCTUGFraXN0YW4iLG5hdGlvbjoiSW5kaWEiLGs6MCxsOjAsZDoiU3UtMzBNS0lzIGVuZ2FnZWQgaW4gMjAxOSBhbmQgcmVwb3J0ZWRseSBmaXJlZCBCcmFoTW9zIGluIDIwMjU7IFBha2lzdGFuaSBzaG9vdGRvd24gY2xhaW0gZXhjbHVkZWQuIn1dLGZhbW91czoiSW4gTWF5IDIwMjUncyBPcGVyYXRpb24gU2luZG9vciwgSUFGIFN1LTMwTUtJcyByZXBvcnRlZGx5IGZpcmVkIEJyYWhNb3MgY3J1aXNlIG1pc3NpbGVzIGF0IFBha2lzdGFuaSBhaXJiYXNlcy4ifSwKe25hbWU6IlN1LTMzIixmdWxsOiJTdWtob2kgU3UtMzMgKEZsYW5rZXItRCkiLG9yaWdpbjoiUnVzc2lhIixnZW46IjR0aCIsZmlyc3RGbGlnaHQ6MTk4Nyxyb2xlOiJDYXJyaWVyIGFpciBzdXBlcmlvcml0eSIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6MSxzdGF0dXM6InN0cmlrZSIsbm90ZToiSXRzIG9ubHkgY29tYmF0IGRlcGxveW1lbnQgKFN5cmlhIDIwMTbigJMxNykgd2FzIGdyb3VuZC1zdHJpa2Ugc29ydGllcyB3aXRoIG5vIGFpci10by1haXIgYWN0aW9uOyBsb3NzZXMgdG8gZGF0ZSBhcmUgY2Fycmllci1sYW5kaW5nIGFjY2lkZW50cy4iLGNvbmZsaWN0czpbe3lyOiIyMDE24oCTMTciLG46IlN5cmlhIChLdXpuZXRzb3YpIixuYXRpb246IlJ1c3NpYSIsazowLGw6MCxkOiJHcm91bmQtc3RyaWtlIHNvcnRpZXMgb25seTsgb25lIGFpcmNyYWZ0IGxvc3QgdG8gYW4gYXJyZXN0b3ItY2FibGUgZmFpbHVyZSwgbm90IGVuZW15IGFjdGlvbi4ifV0sZmFtb3VzOiJUaGUgU3UtMzMncyBzb2xlIGNvbWJhdCBkZXBsb3ltZW50IHByb2R1Y2VkIGdyb3VuZC1zdHJpa2Ugc29ydGllcyBhbmQgYSBjYXJyaWVyLWxhbmRpbmcgYWNjaWRlbnQsIGJ1dCBubyBhaXItdG8tYWlyIGVuZ2FnZW1lbnRzLiJ9LAp7bmFtZToiU3UtMzQgRnVsbGJhY2siLGZ1bGw6IlN1a2hvaSBTdS0zNCIsb3JpZ2luOiJSdXNzaWEiLGdlbjoiNC41IixmaXJzdEZsaWdodDoxOTkwLHJvbGU6IlRhY3RpY2FsIHN0cmlrZSIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6Mzcsc3RhdHVzOiJzdHJpa2UiLG5vdGU6IlJ1c3NpYSdzIHByaW1hcnkgdGFjdGljYWwgc3RyaWtlciBhbmQgaXRzIG1vc3QtbG9zdCBtb2Rlcm4gdHlwZTogfjM3IGRlc3Ryb3llZCBpbiBVa3JhaW5lLCBsYXJnZWx5IHRvIFNBTSBhbmQgUGF0cmlvdCBhbWJ1c2hlcyDigJQgbm9uZSB0byBlbmVteSBhaXJjcmFmdC4iLGNvbmZsaWN0czpbe3lyOiIyMDIy4oCTMjUiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiUnVzc2lhIixrOjAsbDowLGQ6In4zNyBkZXN0cm95ZWQgLyB+NSBkYW1hZ2VkICh2aXN1YWxseSBjb25maXJtZWQpIHRvIGdyb3VuZC1iYXNlZCBhaXIgZGVmZW5zZTsgaGVhdnkgZ2xpZGUtYm9tYiB1c2VyLiJ9LHt5cjoiMjAxNeKAkyIsbjoiU3lyaWFuIENpdmlsIFdhciIsbmF0aW9uOiJSdXNzaWEiLGs6MCxsOjAsZDoiUHJlY2lzaW9uIGFuZCBhcmVhIGJvbWJpbmc7IG5vIGxvc3NlcyB0byBlbmVteSBhY3Rpb24uIn1dLGZhbW91czoiVGhlIFN1LTM0IGhhcyBzdXN0YWluZWQgdGhlIGhpZ2hlc3QgY29uZmlybWVkIGNvbWJhdCBhdHRyaXRpb24gb2YgYW55IFJ1c3NpYW4gZml4ZWQtd2luZyB0eXBlIOKAlCBuZWFybHkgYWxsIHRvIGdyb3VuZC1iYXNlZCBhaXIgZGVmZW5zZS4ifSwKe25hbWU6IlN1LTM1IixmdWxsOiJTdWtob2kgU3UtMzVTIChGbGFua2VyLUUpIixvcmlnaW46IlJ1c3NpYSIsZ2VuOiI0LjUiLGZpcnN0RmxpZ2h0OjIwMDgscm9sZToiQWlyIHN1cGVyaW9yaXR5IixraWxsczo3LGxvc3NlczoxLGdyb3VuZDo4LHN0YXR1czoicHJvdmVuIixub3RlOiJSdXNzaWHigJlzIHByZW1pZXIgYWlyLXN1cGVyaW9yaXR5IGZpZ2h0ZXIgaGFzIGNsYWltZWQgcm91Z2hseSBzZXZlbiBhaXItdG8tYWlyIGtpbGxzIG92ZXIgVWtyYWluaWFuIGFpcmNyYWZ0IHNpbmNlIDIwMjIsIG1vc3RseSB3aXRoIGxvbmctcmFuZ2UgUi0zN00gbWlzc2lsZXMuIE9uIDggSnVseSAyMDI2IG9uZSB3YXMgc2hvdCBkb3duIGJ5IGEgVWtyYWluaWFuIEYtMTYgd2l0aCBhbiBBSU0tMTIwIOKAlCBpdHMgZmlyc3QgY29uZmlybWVkIGFpci10by1haXIgbG9zcywgd2l0aCB0aGUgcGlsb3QgZWplY3RpbmcgYW5kIGJlaW5nIHJlc2N1ZWQuIE90aGVyIFN1LTM1IGxvc3NlcyBoYXZlIGJlZW4gdG8gZ3JvdW5kLWJhc2VkIGFpciBkZWZlbmNlcy4iLGNvbmZsaWN0czpbe3lyOiIyMDIy4oCTMjYiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiUnVzc2lhIixrOjAsbDoxLGQ6IlJ1c3NpYSBjbGFpbWVkIDcrIHZpY3RvcmllcyAodW52ZXJpZmllZCkuIE9uIDggSnVseSAyMDI2IGEgU3UtMzVTIHdhcyBzaG90IGRvd24gYnkgYSBVa3JhaW5pYW4gRi0xNiB3aXRoIGFuIEFJTS0xMjAg4oCUIHRoZSB0eXBl4oCZcyBmaXJzdCBjb25maXJtZWQgYWlyLXRvLWFpciBsb3NzOyB0aGUgcGlsb3QgZWplY3RlZC4gQXJvdW5kIDggbG9zdCBvdmVyYWxsLCBtb3N0bHkgdG8gZnJpZW5kbHkgZmlyZSBvciBncm91bmQgZGVmZW5jZXMuIn1dLGZhbW91czoiTm8gY29uZmlybWVkIGFpci10by1haXIga2lsbHM7IG9uZSBTdS0zNSB3YXMgZG93bmVkIGJ5IGEgZnJpZW5kbHkgUnVzc2lhbiBTLTMwMCBuZWFyIEthZGlpdmthIGluIFNlcHRlbWJlciAyMDIzLiJ9LAp7bmFtZToiU3UtNTcgRmVsb24iLGZ1bGw6IlN1a2hvaSBTdS01NyAoUEFLIEZBKSIsb3JpZ2luOiJSdXNzaWEiLGdlbjoiNXRoIixmaXJzdEZsaWdodDoyMDEwLHJvbGU6IlN0ZWFsdGggbXVsdGlyb2xlIixraWxsczowLGxvc3NlczowLGdyb3VuZDoxLHN0YXR1czoic3RyaWtlIixub3RlOiJVc2VkIGNhdXRpb3VzbHkgYXMgYSBzdGFuZC1vZmYgY3J1aXNlLW1pc3NpbGUgc2hvb3RlciBmcm9tIFJ1c3NpYW4gYWlyc3BhY2UuIE9uZSBhaXJmcmFtZSB3YXMgZGFtYWdlZCBvbiB0aGUgZ3JvdW5kIOKAlCB0aGUgZmlyc3QgY29uZmlybWVkIGNvbWJhdCBkYW1hZ2UgdG8gYSBTdS01Ny4iLGNvbmZsaWN0czpbe3lyOiIyMDIy4oCTMjUiLG46IlJ1c3NvLVVrcmFpbmlhbiBXYXIiLG5hdGlvbjoiUnVzc2lhIixrOjAsbDowLGQ6IkxhdW5jaGVzIEtoLTU5L0toLTY5IGZyb20gc2FmZSBhaXJzcGFjZTsgbmV2ZXIgcGVuZXRyYXRlcyBVa3JhaW5pYW4gYWlyc3BhY2UuIE9uZSBkYW1hZ2VkIG9uIHRoZSBncm91bmQgYXQgQWtodHViaW5zayAoMjAyNCkuIn1dLGZhbW91czoiT24gOSBKdW5lIDIwMjQgVWtyYWluZSBzdHJ1Y2sgYSBTdS01NyBvbiB0aGUgZ3JvdW5kIGF0IEFraHR1Ymluc2sg4oCUIHRoZSBmaXJzdCBzYXRlbGxpdGUtY29uZmlybWVkIGRhbWFnZSB0byBSdXNzaWEncyBzdGVhbHRoIGZpZ2h0ZXIuIn0sCntuYW1lOiJDaGVuZ2R1IEotNyIsZnVsbDoiQ2hlbmdkdSBKLTcgLyBGLTcgKE1pRy0yMSBkZXJpdmF0aXZlKSIsb3JpZ2luOiJDaGluYSIsZ2VuOiIybmQiLGZpcnN0RmxpZ2h0OjE5NjYscm9sZToiTGlnaHR3ZWlnaHQgaW50ZXJjZXB0b3IiLGtpbGxzOjEsbG9zc2VzOjAsZ3JvdW5kOjAsc3RhdHVzOiJwcm92ZW4iLG5vdGU6IkEgc3RyaWtpbmdseSB0aGluIGFpci10by1haXIgcmVjb3JkIGZvciBzdWNoIGEgd2lkZWx5IGV4cG9ydGVkIHR5cGU6IG9uZSBjaXRlZCBraWxsLCBhbmQgdGhhdCBhZ2FpbnN0IGEgbGlnaHQgYWlyY3JhZnQuIixjb25mbGljdHM6W3t5cjoiMjAwOCIsbjoiU3JpIExhbmthbiBDaXZpbCBXYXIiLG5hdGlvbjoiU3JpIExhbmthIixrOjEsbDowLGQ6IkFuIFNMQUYgRi03RyBzaG90IGRvd24gYW4gTFRURSAnQWlyIFRpZ2VyJyBsaWdodCBhaXJjcmFmdCDigJQgdGhlIHR5cGUncyBzaW5nbGUgbW9zdC1jaXRlZCBraWxsLiJ9LHt5cjoiMjAyMeKAkyIsbjoiTXlhbm1hciBjaXZpbCB3YXIiLG5hdGlvbjoiTXlhbm1hciIsazowLGw6MCxkOiJHcm91bmQtYXR0YWNrIHVzZTsgb25lIEYtN00gcmVwb3J0ZWRseSBkb3duZWQgYnkgcmVzaXN0YW5jZSBncm91bmQgZmlyZSAoMjAyNSkuIn1dLGZhbW91czoiT24gOSBTZXB0ZW1iZXIgMjAwOCBhIFNyaSBMYW5rYW4gRi03RyBzaG90IGRvd24gYW4gTFRURSAnQWlyIFRpZ2VyJyBsaWdodCBhaXJjcmFmdCDigJQgdGhlIHR5cGUncyBzaW5nbGUgbW9zdC1jaXRlZCBraWxsLiJ9LAp7bmFtZToiQ2hlbmdkdSBKLTEwIixmdWxsOiJDaGVuZ2R1IEotMTAgKEZpcmViaXJkKSIsb3JpZ2luOiJDaGluYSIsZ2VuOiI0LjUiLGZpcnN0RmxpZ2h0OjE5OTgscm9sZToiTXVsdGlyb2xlIixraWxsczoxLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoicHJvdmVuIixub3RlOiJJbiBNYXkgMjAyNSBhIFBha2lzdGFuaSBKLTEwQyByZXBvcnRlZGx5IGRvd25lZCBhdCBsZWFzdCBvbmUgSW5kaWFuIFJhZmFsZSB3aXRoIGEgUEwtMTUgbWlzc2lsZSDigJQgdGhlIHR5cGUncyBjb21iYXQgZGVidXQgYW5kIGZpcnN0IGFpci10by1haXIga2lsbC4gVVMgb2ZmaWNpYWxzIGNvcnJvYm9yYXRlZCBhdCBsZWFzdCBvbmUga2lsbDsgUGFraXN0YW4ncyBoaWdoZXIgY2xhaW1zIGFyZSB1bmNvbmZpcm1lZC4iLGNvbmZsaWN0czpbe3lyOiIyMDI1IixuOiJJbmRpYeKAk1Bha2lzdGFuIChTaW5kb29yKSIsbmF0aW9uOiJQYWtpc3RhbiIsazowLGw6MCxkOiJDb21iYXQgZGVidXQ7IFBha2lzdGFuIGNsYWltZWQgbXVsdGlwbGUgSUFGIGtpbGxzIGluY2wuIFJhZmFsZXMgd2l0aCBQTC0xNSBCVlIgbWlzc2lsZXMg4oCUIGNvbnRlc3RlZCwgZXhjbHVkZWQuIn1dLGZhbW91czoiVGhlIE1heSAyMDI1IEluZGlh4oCTUGFraXN0YW4gYWlyIGJhdHRsZSB3YXMgdGhlIEotMTBDJ3MgY29tYmF0IGRlYnV0IGFuZCBwcm9kdWNlZCB3aWRlbHkgcHVibGljaXplZCBidXQgdW5jb25maXJtZWQga2lsbCBjbGFpbXMuIn0sCntuYW1lOiJTaGVueWFuZyBKLTExIixmdWxsOiJTaGVueWFuZyBKLTExIChTdS0yNyBkZXJpdmF0aXZlKSIsb3JpZ2luOiJDaGluYSIsZ2VuOiI0dGgiLGZpcnN0RmxpZ2h0OjE5OTgscm9sZToiQWlyIHN1cGVyaW9yaXR5IixraWxsczowLGxvc3NlczowLGdyb3VuZDowLHN0YXR1czoidW50ZXN0ZWQiLG5vdGU6Ik5vIGFpci10by1haXIgY29tYmF0IHJlY29yZDsga25vd24gbWFpbmx5IGZvciBhZ2dyZXNzaXZlIHBlYWNldGltZSBpbnRlcmNlcHRzIG9mIGZvcmVpZ24gYWlyY3JhZnQuIixjb25mbGljdHM6W3t5cjoiMjAxNCIsbjoiUy4gQ2hpbmEgU2VhIGludGVyY2VwdCIsbmF0aW9uOiJDaGluYSIsazowLGw6MCxkOiJBIFBMQU4gSi0xMUIgY29uZHVjdGVkIGEgZGFuZ2Vyb3VzbHkgY2xvc2UgYmFycmVsLXJvbGwgaW50ZXJjZXB0IG9mIGEgVVMgTmF2eSBQLTguIn1dLGZhbW91czoiQSBQTEFOIEotMTFCIGNvbmR1Y3RlZCBhIGRhbmdlcm91c2x5IGNsb3NlIGludGVyY2VwdCBvZiBhIFVTIE5hdnkgUC04IG92ZXIgdGhlIFNvdXRoIENoaW5hIFNlYSBpbiBBdWd1c3QgMjAxNC4ifSwKe25hbWU6IkNoZW5nZHUgSi0yMCIsZnVsbDoiQ2hlbmdkdSBKLTIwICdNaWdodHkgRHJhZ29uJyIsb3JpZ2luOiJDaGluYSIsZ2VuOiI1dGgiLGZpcnN0RmxpZ2h0OjIwMTEscm9sZToiU3RlYWx0aCBhaXIgc3VwZXJpb3JpdHkiLGtpbGxzOjAsbG9zc2VzOjAsZ3JvdW5kOjAsc3RhdHVzOiJ1bnRlc3RlZCIsbm90ZToiTm8gY29tYmF0IHJlY29yZDsgZGVwbG95ZWQgZm9yIGFpci1zdXBlcmlvcml0eSBwYXRyb2xzIGFuZCBkZXRlcnJlbmNlLCB3aXRoIDMwMCsgYWlyZnJhbWVzIG5vdyBpbiBzZXJ2aWNlLiIsY29uZmxpY3RzOlt7eXI6IuKAlCIsbjoiUGVhY2V0aW1lIGVuY291bnRlcnMiLG5hdGlvbjoiQ2hpbmEiLGs6MCxsOjAsZDoiTm9uLWNvbWJhdCBjbG9zZSBlbmNvdW50ZXJzIHdpdGggVVNBRi9VU01DIEYtMzVzIG92ZXIgdGhlIEVhc3QgQ2hpbmEgU2VhLiJ9XSxmYW1vdXM6IlBMQUFGIHBpbG90cyBkZXNjcmliZSBwcm9mZXNzaW9uYWwsIG5vbi1jb21iYXQgY2xvc2UgZW5jb3VudGVycyB3aXRoIFVTIEYtMzVzIG92ZXIgdGhlIEVhc3QgQ2hpbmEgU2VhLiJ9LAp7bmFtZToiSkYtMTcgVGh1bmRlciIsZnVsbDoiQ0FDL1BBQyBKRi0xNyBUaHVuZGVyIixvcmlnaW46IlBha2lzdGFuIC8gQ2hpbmEiLGdlbjoiNC41IixmaXJzdEZsaWdodDoyMDAzLHJvbGU6IkxpZ2h0d2VpZ2h0IG11bHRpcm9sZSIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6MCxzdGF0dXM6InByb3ZlbiIsbm90ZToiUGFraXN0YW4ncyBsaWdodHdlaWdodCBtdWx0aXJvbGUgZmlnaHRlciBmbGV3IGFpci10by1haXIgbWlzc2lvbnMgd2l0aCBQTC0xNSBtaXNzaWxlcyBpbiB0aGUgTWF5IDIwMjUgY2xhc2ggd2l0aCBJbmRpYS4gQm90aCBzaWRlcyBtYWRlIGNsYWltcywgYnV0IG5vIEpGLTE3IGtpbGwgb3IgbG9zcyBpcyBpbmRlcGVuZGVudGx5IGNvbmZpcm1lZC4iLGNvbmZsaWN0czpbe3lyOiIyMDE04oCTMTciLG46IkNvdW50ZXItdGVycm9yIG9wcyIsbmF0aW9uOiJQYWtpc3RhbiIsazowLGw6MCxkOiJHcm91bmQtYXR0YWNrIHN0cmlrZXMgb24gbWlsaXRhbnQgcG9zaXRpb25zIGluIE5vcnRoIFdhemlyaXN0YW4uIn0se3lyOiIyMDI1IixuOiJJbmRpYeKAk1Bha2lzdGFuIChTaW5kb29yKSIsbmF0aW9uOiJQYWtpc3RhbiIsazowLGw6MCxkOiJGbGV3IEEyQSBhbmQgc3RyaWtlIHNvcnRpZXM7IGNsYWltZWQgYW4gUy00MDAga2lsbCB3aXRoIGEgQ00tNDAwQUtHIG1pc3NpbGUg4oCUIGRpc3B1dGVkLCBleGNsdWRlZC4ifV0sZmFtb3VzOiJJbiBNYXkgMjAyNSBQYWtpc3RhbiBjbGFpbWVkIGEgSkYtMTcgZGVzdHJveWVkIGFuIEluZGlhbiBTLTQwMCBzeXN0ZW0gd2l0aCBhIHN0YW5kLW9mZiBtaXNzaWxlIOKAlCBhIGNsYWltIEluZGlhIGRpc3B1dGVzLiJ9LAp7bmFtZToiTWlHLTE1IEZhZ290IixmdWxsOiJNaWtveWFuLUd1cmV2aWNoIE1pRy0xNSIsb3JpZ2luOiJVU1NSIixnZW46IjFzdCIsZmlyc3RGbGlnaHQ6MTk0Nyxyb2xlOiJUcmFuc29uaWMgamV0IGZpZ2h0ZXIgLyBpbnRlcmNlcHRvciIsa2lsbHM6MTUwLGtyOiIxNTDigJMyNTAiLGxvc3Nlczo1NTAsbHI6IjIwMOKAkzc5MiIsZ3JvdW5kOjQwLHN0YXR1czoicHJvdmVuIixub3RlOiJLb3JlYW4gV2FyIHRhbGxpZXMgYXJlIHRoZSBzaW5nbGUgbW9zdCBkaXNwdXRlZCBmaWd1cmUgaW4gamV0LWFnZSBhaXIgY29tYmF0LiBTb3ZpZXQgZm9yY2VzIGNsYWltZWQgb3ZlciAxLDEwMCBraWxsczsgVU4tY29uZmlybWVkIGxvc3NlcyB0byBNaUdzIGFyZSB+MTUw4oCTMjUwLiBNaUcgbG9zc2VzIHNwYW4gUkFOROKAmXMgbWF0Y2hlZC1yZWNvcmRzIHJlYW5hbHlzaXMgKH4yMDAgYWN0dWFsbHkgc2hvdCBkb3duIGluIGFpciBjb21iYXQpIHRvIHRoZSBVU0FG4oCZcyA3OTIgY3JlZGl0ZWQsIHdpdGggfjY2MCBhZG1pdHRlZCBsb3N0IHRvIGFsbCBjYXVzZXMuIFRoYXQgc2FtZSBSQU5EIHdvcmsgcHV0cyB0aGUgcmVhbCBGLTg2IGV4Y2hhbmdlIHJhdGlvIG5lYXIgMS4z4oCTMS44OjEsIG5vdCB0aGUgcHJvcGFnYW5kYSAxMDoxLiBDaGluZXNlLSBhbmQgS29yZWFuLWZsb3duIE1pR3MgYXJlIGZvbGRlZCBpbi4iLGNvbmZsaWN0czpbe3lyOiIxOTUw4oCTNTMiLG46IktvcmVhbiBXYXIiLG5hdGlvbjoiVVNTUiAvIENoaW5hIC8gTi4gS29yZWEiLGs6MTQ4LGw6NTQ1LGQ6IkZvdWdodCBGLTg2IFNhYnJlcyBpbiAnTWlHIEFsbGV5JyBhbmQgbWF1bGVkIGRheWxpZ2h0IEItMjkgZm9ybWF0aW9ucywgZm9yY2luZyBVU0FGIGJvbWJlcnMgb250byBuaWdodCByYWlkcy4ifSx7eXI6IjE5NTYiLG46IlN1ZXogQ3Jpc2lzIixuYXRpb246IkVneXB0IixrOjIsbDo0LGQ6IkVneXB0aWFuIE1pRy0xNWJpcyBkb3duZWQgdHdvIElzcmFlbGkgYWlyY3JhZnQgYnV0IHdlcmUgbGFyZ2VseSBvdXRjbGFzc2VkIGFuZCBjYXVnaHQgb24gdGhlIGdyb3VuZC4ifV0sZmFtb3VzOiJPdmVyICdNaUcgQWxsZXknIHRoZSBzd2VwdC13aW5nIE1pRy0xNSBzaHJlZGRlZCBCLTI5IFN1cGVyZm9ydHJlc3MgZm9ybWF0aW9ucyBzbyBiYWRseSB0aGUgVVNBRiBhYmFuZG9uZWQgZGF5bGlnaHQgc3RyYXRlZ2ljIGJvbWJpbmcgb2YgTm9ydGggS29yZWEuIn0sCntuYW1lOiJNaUctMTcgRnJlc2NvIixmdWxsOiJNaWtveWFuLUd1cmV2aWNoIE1pRy0xNyIsb3JpZ2luOiJVU1NSIixnZW46IjFzdCIsZmlyc3RGbGlnaHQ6MTk1MCxyb2xlOiJUcmFuc29uaWMgZGF5IGZpZ2h0ZXIiLGtpbGxzOjcxLGxvc3Nlczo2MyxscjoiNjPigJMxMDAiLGdyb3VuZDo2MCxzdGF0dXM6InByb3ZlbiIsbm90ZToiVGhlIGJlc3QtZG9jdW1lbnRlZCBmaWd1cmVzIGNvbWUgZnJvbSBWaWV0bmFtOiBOb3J0aCBWaWV0bmFtZXNlIE1pRy0xN3MgYXJlIGNyZWRpdGVkIHdpdGggNzEgdmljdG9yaWVzIG92ZXIgVVMgYWlyY3JhZnQgKGFib3V0IDMyIEYtNHMsIDE2IEYtMTA1cywgMTEgRi04cykgZm9yIH42MyBjb21iYXQgbG9zc2VzIOKAlCB0aGUgVlBBRuKAmXMgb3duIGFkbWlzc2lvbjsgVVMgY3JlZGl0IGxpc3RzIGNvdW50IGNsb3NlciB0byAxMDAuIEVneXB0aWFuL1N5cmlhbiBNaUctMTdzIGFkZGVkIGEgZmV3IGtpbGxzIGJ1dCB3ZXJlIG1vc3RseSBkZXN0cm95ZWQgb24gdGhlIGdyb3VuZCBpbiAxOTY3IOKAlCB3aGljaCBkb21pbmF0ZXMgdGhlICdncm91bmQnIGZpZ3VyZS4iLGNvbmZsaWN0czpbe3lyOiIxOTY14oCTNzIiLG46IlZpZXRuYW0gV2FyIixuYXRpb246Ik5vcnRoIFZpZXRuYW0iLGs6NzEsbDo2MyxkOiJDYW5ub24tYXJtZWQgYW5kIGFnaWxlLCBNaUctMTdzIGRyYWdnZWQgc3VwZXJzb25pYyBGLTRzIGFuZCBGLTEwNXMgaW50byBsb3ctc3BlZWQgdHVybmluZyBmaWdodHMgYW5kIHNjb3JlZCBOb3J0aCBWaWV0bmFtJ3MgZmlyc3QgamV0IHZpY3Rvcmllcy4ifSx7eXI6IjE5NjciLG46IlNpeC1EYXkgV2FyIixuYXRpb246IkVneXB0IC8gU3lyaWEiLGs6MyxsOjgsZDoiRm9ybWVkIHRoZSBidWxrIG9mIEFyYWIgYWlyIHN0cmVuZ3RoIGJ1dCB3ZXJlIG92ZXJ3aGVsbWluZ2x5IGNhdWdodCBhbmQgZGVzdHJveWVkIG9uIHRoZSBncm91bmQgb24gdGhlIG9wZW5pbmcgbW9ybmluZy4ifV0sZmFtb3VzOiJJbiB0dXJuaW5nIGRvZ2ZpZ2h0cyBvdmVyIE5vcnRoIFZpZXRuYW0gdGhlIHN1YnNvbmljIE1pRy0xNyByZXBlYXRlZGx5IGh1bWJsZWQgdGhlIGZhciBtb3JlIGFkdmFuY2VkIEYtNCBQaGFudG9tLCBleHBvc2luZyB0aGUgZm9sbHkgb2YgYnVpbGRpbmcgZmlnaHRlcnMgd2l0aG91dCBhIGd1bi4ifSwKe25hbWU6Ikhhd2tlciBIdW50ZXIiLGZ1bGw6Ikhhd2tlciBBaXJjcmFmdCBIdW50ZXIiLG9yaWdpbjoiVW5pdGVkIEtpbmdkb20iLGdlbjoiMXN0IixmaXJzdEZsaWdodDoxOTUxLHJvbGU6IlRyYW5zb25pYyBmaWdodGVyIC8gZ3JvdW5kLWF0dGFjayIsa2lsbHM6NyxrcjoiN+KAkzIwIixsb3NzZXM6MTgsbHI6IjjigJMzMCIsZ3JvdW5kOjMwLHN0YXR1czoicHJvdmVuIixub3RlOiJUaGUgSHVudGVyIGhhcyBnZW51aW5lIGNvbmZpcm1lZCBraWxscyBhbmQgbG9zc2VzLCBidXQgcGVyLWNvbmZsaWN0IHRhbGxpZXMgYXJlIGNvbnRlc3RlZCBhbmQgbWl4ZWQgd2l0aCBncm91bmQgbG9zc2VzLCBzbyB0b3RhbHMgaGVyZSBhcmUgZGVsaWJlcmF0ZWx5IGNvbnNlcnZhdGl2ZS4gVGhlIGJlc3QtYXR0ZXN0ZWQga2lsbHMgYXJlIFBha2lzdGFuaSBhY2UgU2FpZnVsIEF6YW0ncyB0aHJlZSBJc3JhZWxpIGFpcmNyYWZ0IGluIEp1bmUgMTk2NyAoZmx5aW5nIEpvcmRhbmlhbiBhbmQgSXJhcWkgSHVudGVycyksIHBsdXMgSW5kaWFuIHZpY3RvcmllcyBpbiAxOTY1LzE5NzEg4oCUIEluZGlhbiBjcmVkaXRzIGFsb25lIHJlYWNoIH4xNiwgdGFraW5nIG9wZXJhdG9yIHRhbGxpZXMgdG8gfjIwLiBEb2N1bWVudGVkIGFpci1jb21iYXQgbG9zc2VzIHJ1biA44oCTMTA7IFBha2lzdGFuaSBjbGFpbXMgZ28gZmFyIGhpZ2hlci4gTS5NLiBBbGFtJ3MgZGlzcHV0ZWQgJ2ZpdmUgaW4gYSBtaW51dGUnICgxOTY1KSBpcyBleGNsdWRlZC4iLGNvbmZsaWN0czpbe3lyOiIxOTY1IixuOiJJbmRvLVBha2lzdGFuaSBXYXIiLG5hdGlvbjoiSW5kaWEiLGs6MixsOjcsZDoiSW5kaWEncyBmcm9udGxpbmUgZmlnaHRlciBkdWVsZWQgUEFGIFNhYnJlcyBhbmQgRi0xMDRzOyBib3RoIHNpZGVzJyBjbGFpbXMgYXJlIHdpbGRseSBpbmZsYXRlZC4ifSx7eXI6IjE5NzEiLG46IkluZG8tUGFraXN0YW5pIFdhciIsbmF0aW9uOiJJbmRpYSIsazoyLGw6OCxkOiJTaXggSUFGIEh1bnRlciBzcXVhZHJvbnMgZmxldyBncm91bmQtYXR0YWNrIGFuZCBpbnRlcmRpY3Rpb24sIHNjb3Jpbmcgc29tZSBhaXItdG8tYWlyIGtpbGxzIGFtaWQgY29udGVzdGVkIGxvc3MgY2xhaW1zLiJ9LHt5cjoiMTk2NyIsbjoiU2l4LURheSBXYXIiLG5hdGlvbjoiSXJhcSAvIEpvcmRhbiIsazozLGw6MyxkOiJJcmFxaSBhY2UgU2FpZnVsIEF6YW0gZG93bmVkIHRocmVlIElzcmFlbGkgamV0cyBpbiBhIEh1bnRlcjsgbW9zdCBKb3JkYW5pYW4gSHVudGVycyB3ZXJlIGRlc3Ryb3llZCBvbiB0aGUgZ3JvdW5kIG9uIGRheSBvbmUuIn1dLGZhbW91czoiRmx5aW5nIGFuIElyYXFpIEh1bnRlciBpbiB0aGUgMTk2NyBTaXgtRGF5IFdhciwgU2FpZnVsIEF6YW0gc2hvdCBkb3duIHRocmVlIElzcmFlbGkgYWlyY3JhZnQgaW4gdHdvIGRheXMg4oCUIG9uZSBvZiB0aGUgZmV3IHBpbG90cyB0byBtYWtlIGFjZSBhZ2FpbnN0IHRoZSBJc3JhZWxpIEFpciBGb3JjZS4ifSwKe25hbWU6IkVuZ2xpc2ggRWxlY3RyaWMgTGlnaHRuaW5nIixmdWxsOiJFbmdsaXNoIEVsZWN0cmljIChCQUMpIExpZ2h0bmluZyIsb3JpZ2luOiJVbml0ZWQgS2luZ2RvbSIsZ2VuOiIybmQiLGZpcnN0RmxpZ2h0OjE5NTcscm9sZToiU3VwZXJzb25pYyBpbnRlcmNlcHRvciIsa2lsbHM6MCxsb3NzZXM6MCxncm91bmQ6MSxzdGF0dXM6InN0cmlrZSIsbm90ZToiRGVzcGl0ZSBhIGxvbmcgUkFGLCBTYXVkaSBhbmQgS3V3YWl0aSBjYXJlZXIgdGhlIExpZ2h0bmluZyBpcyBjcmVkaXRlZCB3aXRoIE5PIGNvbmZpcm1lZCBhaXItdG8tYWlyIGtpbGxzIGJ5IGFueSBvcGVyYXRvci4gSXRzIG9ubHkgY29tYmF0IHVzZSB3YXMgUm95YWwgU2F1ZGkgZ3JvdW5kLWF0dGFjayBpbiB0aGUgMTk2OeKAkzcwIEFsLVdhZGlhaCBib3JkZXIgd2FyLCB3aGVyZSBvbmUgYWlyY3JhZnQgd2FzIGxvc3QgdG8gWWVtZW5pIGdyb3VuZCBmaXJlLiBCbGlzdGVyaW5nbHkgZmFzdCwgYnV0IGl0IG5ldmVyIGZpcmVkIGEgc2hvdCBpbiBhbmdlciBhaXItdG8tYWlyLiIsY29uZmxpY3RzOlt7eXI6IjE5NjnigJM3MCIsbjoiQWwtV2FkaWFoIFdhciIsbmF0aW9uOiJTYXVkaSBBcmFiaWEiLGs6MCxsOjEsZDoiUlNBRiBMaWdodG5pbmdzIGZsZXcgcm9ja2V0LWFuZC1ib21iIHN0cmlrZXMgb24gWWVtZW5pIGZvcmNlcywgbG9zaW5nIG9uZSBhaXJjcmFmdCB0byBncm91bmQgZmlyZSBhbmQgc2NvcmluZyBubyBhaXItdG8tYWlyIGtpbGxzLiJ9XSxmYW1vdXM6IlRoZSBMaWdodG5pbmcgbmV2ZXIgZG93bmVkIGFuIGVuZW15IGFpcmNyYWZ0IGluIGFuZ2VyIOKAlCBpdHMgbW9zdCBzdG9yaWVkIG1vbWVudCB3YXMgYW4gdW5hcm1lZCAxOTY2IGdyb3VuZC1ydW4gdGhhdCBhY2NpZGVudGFsbHkgYmVjYW1lIGEgZnVsbCBzdXBlcnNvbmljIGZsaWdodCBieSBhbiBlbmdpbmVlciB3aXRoIG5vIGZseWluZyB0cmFpbmluZy4ifQpdOwovKiBQaG90b3MgKFdpa2ltZWRpYSBDb21tb25zLCB+NTAwcHgsIFBEL0NDKSAqLwpjb25zdCBJTUc9ewoiRi0xNSBFYWdsZSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYS9hNi9GLTE1Q19FYWdsZV9mcm9tX3RoZV80NHRoX0ZpZ2h0ZXJfU3F1YWRyb25fZmxpZXNfZHVyaW5nX2Ffcm91dGluZV90cmFpbmluZ19leGVyY2lzZV9BcHJpbF8xNSUyQ18yMDE5LmpwZy81MDBweC1GLTE1Q19FYWdsZV9mcm9tX3RoZV80NHRoX0ZpZ2h0ZXJfU3F1YWRyb25fZmxpZXNfZHVyaW5nX2Ffcm91dGluZV90cmFpbmluZ19leGVyY2lzZV9BcHJpbF8xNSUyQ18yMDE5LmpwZyIsCiJGLTQgUGhhbnRvbSBJSSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvMi8yYi9RRi00X0hvbGxvbWFuX0FGQi5qcGcvNTAwcHgtUUYtNF9Ib2xsb21hbl9BRkIuanBnIiwKIkYtMTYgRmlnaHRpbmcgRmFsY29uIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9jL2M5L0YtMTZfSnVuZV8yMDA4LmpwZy81MDBweC1GLTE2X0p1bmVfMjAwOC5qcGciLAoiRi0xNCBUb21jYXQiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2YvZjcvVVNfTmF2eV8wNTExMDUtRi01NDgwVC0wMDVfQW5fRi0xNERfVG9tY2F0X2NvbmR1Y3RzX2FfbWlzc2lvbl9vdmVyX3RoZV9QZXJzaWFuX0d1bGYtcmVnaW9uLmpwZy81MDBweC1VU19OYXZ5XzA1MTEwNS1GLTU0ODBULTAwNV9Bbl9GLTE0RF9Ub21jYXRfY29uZHVjdHNfYV9taXNzaW9uX292ZXJfdGhlX1BlcnNpYW5fR3VsZi1yZWdpb24uanBnIiwKIkYtMTVFIFN0cmlrZSBFYWdsZSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvZS9lNi9GLTE1RV90YWtlc19vbl9mdWVsX2Zyb21fS0MtMTAuanBnLzUwMHB4LUYtMTVFX3Rha2VzX29uX2Z1ZWxfZnJvbV9LQy0xMC5qcGciLAoiRi9BLTE4IEhvcm5ldCI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNC80NC9GQS0xOENfZGVzZXJ0X3JlZnVlbGluZy5qcGcvNTAwcHgtRkEtMThDX2Rlc2VydF9yZWZ1ZWxpbmcuanBnIiwKIkYvQS0xOEUvRiBTdXBlciBIb3JuZXQiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2QvZGUvVVNfTmF2eV8wNzEyMDMtTi04OTIzTS0wNzRfQW5fRi1BLTE4Rl9TdXBlcl9Ib3JuZXQlMkNfZnJvbV90aGVfUmVkX1JpcHBlcnNfb2ZfU3RyaWtlX0ZpZ2h0ZXJfU3F1YWRyb25fJTI4VkZBJTI5XzExJTJDX21ha2VzX2Ffc2hhcnBfdHVybl9hYm92ZV90aGVfZmxpZ2h0X2RlY2tfYWJvYXJkX3RoZV9OaW1pdHotY2xhc3NfbnVjbGVhci1wb3dlcmVkX2FpcmNyYWZ0X2NhcnJpZXJfVVNTX0hhcnJ5X1MuX1RydW1hbi5qcGcvNTAwcHgtdGh1bWJuYWlsLmpwZyIsCiJGLTIyIFJhcHRvciI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvMS8xZS9GLTIyX1JhcHRvcl9lZGl0MV8lMjhjcm9wcGVkJTI5LmpwZy81MDBweC1GLTIyX1JhcHRvcl9lZGl0MV8lMjhjcm9wcGVkJTI5LmpwZyIsCiJGLTM1IExpZ2h0bmluZyBJSSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNi82MS9GLTM1QV9mbGlnaHRfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtRi0zNUFfZmxpZ2h0XyUyOGNyb3BwZWQlMjkuanBnIiwKIkEtMTAgVGh1bmRlcmJvbHQgSUkiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzgvODAvRmFpcmNoaWxkX1JlcHVibGljX0EtMTBfVGh1bmRlcmJvbHRfSUlfLV8zMjE1NjE1OTE1MS5qcGcvNTAwcHgtRmFpcmNoaWxkX1JlcHVibGljX0EtMTBfVGh1bmRlcmJvbHRfSUlfLV8zMjE1NjE1OTE1MS5qcGciLAoiRi01IEZyZWVkb20gRmlnaHRlciI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvOC84ZC9KLTMwMDUuanBnLzUwMHB4LUotMzAwNS5qcGciLAoiRi0xMDQgU3RhcmZpZ2h0ZXIiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzgvODYvTG9ja2hlZWRfRi0xMDRHX1N0YXJmaWdodGVyX0QtODExNF8lMjg5MTc5NTQyNTQyJTI5LmpwZy81MDBweC1Mb2NraGVlZF9GLTEwNEdfU3RhcmZpZ2h0ZXJfRC04MTE0XyUyODkxNzk1NDI1NDIlMjkuanBnIiwKIk1pcmFnZSBJSUkgLyA1IjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9lL2U2L1R3b19NaXJhZ2VfSUlJX29mX3RoZV9Sb3lhbF9BdXN0cmFsaWFuX0Fpcl9Gb3JjZV8xLkpQRUcvNTAwcHgtVHdvX01pcmFnZV9JSUlfb2ZfdGhlX1JveWFsX0F1c3RyYWxpYW5fQWlyX0ZvcmNlXzEuSlBFRyIsCiJNaXJhZ2UgRjEiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzcvNzkvRnJlbmNoX0Fpcl9Gb3JjZV9NaXJhZ2VfRjFfcmV0dXJuc190b19pdCUyN3NfbWlzc2lvbl9hZnRlcl9yZWNlaXZpbmdfZnVlbF9mcm9tX2FfS0MtMTBfRXh0ZW5kZXIuanBnLzUwMHB4LUZyZW5jaF9BaXJfRm9yY2VfTWlyYWdlX0YxX3JldHVybnNfdG9faXQlMjdzX21pc3Npb25fYWZ0ZXJfcmVjZWl2aW5nX2Z1ZWxfZnJvbV9hX0tDLTEwX0V4dGVuZGVyLmpwZyIsCiJNaXJhZ2UgMjAwMCI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYy9jNS9NaXJhZ2VfMjAwMENfaW4tZmxpZ2h0XzJfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtTWlyYWdlXzIwMDBDX2luLWZsaWdodF8yXyUyOGNyb3BwZWQlMjkuanBnIiwKIlJhZmFsZSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNi82NC9SYWZhbGVfLV9SSUFUXzIwMDlfJTI4Mzc1MTQxNjQyMSUyOS5qcGcvNTAwcHgtUmFmYWxlXy1fUklBVF8yMDA5XyUyODM3NTE0MTY0MjElMjkuanBnIiwKIlNlYSBIYXJyaWVyIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi85LzllL1NlYUhhcnJpZXJfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtU2VhSGFycmllcl8lMjhjcm9wcGVkJTI5LmpwZyIsCiJJQUkgS2ZpciI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvMy8zMC9Db2xvbWJpYW5fQWlyX0ZvcmNlX0tmaXJfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtQ29sb21iaWFuX0Fpcl9Gb3JjZV9LZmlyXyUyOGNyb3BwZWQlMjkuanBnIiwKIkV1cm9maWdodGVyIFR5cGhvb24iOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzMvM2MvUkFGX0V1cm9maWdodGVyX0VGLTIwMDBfVHlwaG9vbl9GMl9Mb2Z0aW5nLTEuanBnLzUwMHB4LVJBRl9FdXJvZmlnaHRlcl9FRi0yMDAwX1R5cGhvb25fRjJfTG9mdGluZy0xLmpwZyIsCiJTYWFiIEpBUy0zOSBHcmlwZW4iOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2UvZTMvU2FhYl9KQVNfMzlfR3JpcGVuX2F0X0thaXZvcHVpc3RvX0Fpcl9TaG93JTJDX0p1bmVfMjAxN18lMjhhbHRlcmVkJTI5X2NvcHkuanBnLzUwMHB4LVNhYWJfSkFTXzM5X0dyaXBlbl9hdF9LYWl2b3B1aXN0b19BaXJfU2hvdyUyQ19KdW5lXzIwMTdfJTI4YWx0ZXJlZCUyOV9jb3B5LmpwZyIsCiJUb3JuYWRvIEFEViAoRi4zKSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYi9iOS9Sb3lhbF9BaXJfRm9yY2VfUGFuYXZpYV9Ub3JuYWRvX0YzX0xvZnRpbmctMy5qcGcvNTAwcHgtUm95YWxfQWlyX0ZvcmNlX1BhbmF2aWFfVG9ybmFkb19GM19Mb2Z0aW5nLTMuanBnIiwKIlRvcm5hZG8gSURTIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi8yLzI1L1JBRl9Ub3JuYWRvX0dSNF9NT0RfNDUxNTUyMzMuanBnLzUwMHB4LVJBRl9Ub3JuYWRvX0dSNF9NT0RfNDUxNTUyMzMuanBnIiwKIk1pRy0yMSBGaXNoYmVkIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9mL2ZhL0Nyb2F0aWFuX01pRy0yMV8lMjhjcm9wcGVkJTI5LmpwZy81MDBweC1Dcm9hdGlhbl9NaUctMjFfJTI4Y3JvcHBlZCUyOS5qcGciLAoiTWlHLTIzIEZsb2dnZXIiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzYvNmYvTWlnLTIzLUROU1Q4OTA4NDMxX0pQRy5qcGcvNTAwcHgtTWlnLTIzLUROU1Q4OTA4NDMxX0pQRy5qcGciLAoiTWlHLTI1IEZveGJhdCI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYS9hNC9SdXNzaWFuX0Fpcl9Gb3JjZV9NaUctMjUuanBnLzUwMHB4LVJ1c3NpYW5fQWlyX0ZvcmNlX01pRy0yNS5qcGciLAoiTWlHLTI5IEZ1bGNydW0iOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2EvYWYvVlZTXzEwMHRoX0lNR18wNjkxXyUyODc3Mjc0NjQyOTAlMjlfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtVlZTXzEwMHRoX0lNR18wNjkxXyUyODc3Mjc0NjQyOTAlMjlfJTI4Y3JvcHBlZCUyOS5qcGciLAoiTWlHLTMxIEZveGhvdW5kIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi8zLzM4L1J1c3NpYW5fQWlyX0ZvcmNlX01pa295YW4tR3VyZXZpY2hfTWlHLTMxUC5qcGcvNTAwcHgtUnVzc2lhbl9BaXJfRm9yY2VfTWlrb3lhbi1HdXJldmljaF9NaUctMzFQLmpwZyIsCiJTdS0yNyBGbGFua2VyIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi8wLzA0L1N1a2hvaV9TdS0yN1NLTV9hdF9NQUtTLTIwMDVfYWlyc2hvdy5qcGcvNTAwcHgtU3VraG9pX1N1LTI3U0tNX2F0X01BS1MtMjAwNV9haXJzaG93LmpwZyIsCiJTdS0zMCI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNy83Ni9TdWtob2lfU3UtMzBTTV9pbl9mbGlnaHRfMjAxNC5qcGcvNTAwcHgtU3VraG9pX1N1LTMwU01faW5fZmxpZ2h0XzIwMTQuanBnIiwKIlN1LTMzIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9jL2NiL1N1a2hvaV9TdS0zM183N19SRURfJTI4MzAyNjgxMTc0NzYlMjkuanBnLzUwMHB4LVN1a2hvaV9TdS0zM183N19SRURfJTI4MzAyNjgxMTc0NzYlMjkuanBnIiwKIlN1LTM0IEZ1bGxiYWNrIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi83Lzc2L01BS1MyMDE1cGFydDEtMTBfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtTUFLUzIwMTVwYXJ0MS0xMF8lMjhjcm9wcGVkJTI5LmpwZyIsCiJTdS0zNSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvZS9lYy9SdXNzaWFuX0Fpcl9Gb3JjZSUyQ19SRi04MTcxOSUyQ19TdWtob2lfU3UtMzVTXyUyODQ5NTgxNzQwMTU3JTI5LmpwZy81MDBweC1SdXNzaWFuX0Fpcl9Gb3JjZSUyQ19SRi04MTcxOSUyQ19TdWtob2lfU3UtMzVTXyUyODQ5NTgxNzQwMTU3JTI5LmpwZyIsCiJTdS01NyBGZWxvbiI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvMC8wZS9TdWtob2lfRGVzaWduX0J1cmVhdSUyQ18wNTQlMkNfU3VraG9pX1QtNTBfJTI4U3UtNTdfcHJvdG90eXBlJTI5XyUyODQ5NTgxMzAzOTc3JTI5LmpwZy81MDBweC1TdWtob2lfRGVzaWduX0J1cmVhdSUyQ18wNTQlMkNfU3VraG9pX1QtNTBfJTI4U3UtNTdfcHJvdG90eXBlJTI5XyUyODQ5NTgxMzAzOTc3JTI5LmpwZyIsCiJDaGVuZ2R1IEotNyI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNS81OS9CYW5nbGFkZXNoX0Fpcl9Gb3JjZV9GLTdCR0lfaW5mbGlnaHQucG5nLzUwMHB4LUJhbmdsYWRlc2hfQWlyX0ZvcmNlX0YtN0JHSV9pbmZsaWdodC5wbmciLAoiQ2hlbmdkdSBKLTEwIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi83Lzc3L0otMTBCX3dpdGhfUEwtMTBfYW5kX1BMLTEyLmpwZy81MDBweC1KLTEwQl93aXRoX1BMLTEwX2FuZF9QTC0xMi5qcGciLAoiU2hlbnlhbmcgSi0xMSI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvMS8xMi9KLTExQkNoZWwuanBnLzUwMHB4LUotMTFCQ2hlbC5qcGciLAoiQ2hlbmdkdSBKLTIwIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi83LzczL0otMjBfYXRfQ0NBUzIwMjJfJTI4MjAyMjA4MjcxMDM0MjQlMjkuanBnLzUwMHB4LUotMjBfYXRfQ0NBUzIwMjJfJTI4MjAyMjA4MjcxMDM0MjQlMjkuanBnIiwKIkpGLTE3IFRodW5kZXIiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzEvMWIvUGFraXN0YW5fQWlyX0ZvcmNlX0NoZW5nZHVfSkYtMTdfR3UuanBnLzUwMHB4LVBha2lzdGFuX0Fpcl9Gb3JjZV9DaGVuZ2R1X0pGLTE3X0d1LmpwZyIsCiJNaUctMTUgRmFnb3QiOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2MvY2YvTWlHLTE1XyUyODUyNTQ0MDc0MzY2JTI5LmpwZy81MDBweC1NaUctMTVfJTI4NTI1NDQwNzQzNjYlMjkuanBnIiwKIk1pRy0xNyBGcmVzY28iOiJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2QvZGYvTWlHLTE3X1Rha2VzX3RvX3RoZV9Ta3lfJTI4Y3JvcHBlZCUyOS5qcGcvNTAwcHgtTWlHLTE3X1Rha2VzX3RvX3RoZV9Ta3lfJTI4Y3JvcHBlZCUyOS5qcGciLAoiSGF3a2VyIEh1bnRlciI6Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvOC84Ny9IdW50ZXJfLV9TaHV0dGxld29ydGhfTWlsaXRhcnlfUGFnZWFudF9KdW5lXzIwMTNfJTI4OTE4NzcxMzUxNiUyOS5qcGcvNTAwcHgtSHVudGVyXy1fU2h1dHRsZXdvcnRoX01pbGl0YXJ5X1BhZ2VhbnRfSnVuZV8yMDEzXyUyODkxODc3MTM1MTYlMjkuanBnIiwKIkVuZ2xpc2ggRWxlY3RyaWMgTGlnaHRuaW5nIjoiaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9iL2IxL0VuZ2xpc2hfRWxlY3RyaWNfTGlnaHRuaW5nX0Y2JTJDX1VLXy1fQWlyX0ZvcmNlX0FOMjI2MDE5Mi5qcGcvNTAwcHgtRW5nbGlzaF9FbGVjdHJpY19MaWdodG5pbmdfRjYlMkNfVUtfLV9BaXJfRm9yY2VfQU4yMjYwMTkyLmpwZyIKfTsKLyogTWlHRmx1ZyBhdmFpbGFiaWxpdHk6IHN0YXRlID0gYXZhaWxhYmxlIHwgY29taW5nIHwgdW50aWwgfCBuYSAqLwpjb25zdCBBVkFJTD17CiJGLTEwNCBTdGFyZmlnaHRlciI6e3N0YXRlOiJhdmFpbGFibGUiLHVybDoiaHR0cHM6Ly9taWdmbHVnLmNvbS9mbGlnaHRzLXByaWNlcy9mMTA0LXN0YXJmaWdodGVyLWZsaWdodC8ifSwKIk1pRy0xNSBGYWdvdCI6e3N0YXRlOiJhdmFpbGFibGUiLHVybDoiaHR0cHM6Ly9taWdmbHVnLmNvbS9mbGlnaHRzLXByaWNlcy9taWctMTUtZmFnb3QtY3plY2gtcmVwdWJsaWMvIn0sCiJNaUctMjEgRmlzaGJlZCI6e3N0YXRlOiJhdmFpbGFibGUiLHVybDoiaHR0cHM6Ly9taWdmbHVnLmNvbS9taWctMjEtbGF1bmNoLyJ9LAoiTWlHLTE3IEZyZXNjbyI6e3N0YXRlOiJjb21pbmcifSwKIk1pcmFnZSBJSUkgLyA1Ijp7c3RhdGU6InVudGlsIix5ZWFyOjIwMjN9LAoiTWlHLTIzIEZsb2dnZXIiOntzdGF0ZToidW50aWwiLHllYXI6MjAwNn0sCiJNaUctMjUgRm94YmF0Ijp7c3RhdGU6InVudGlsIix5ZWFyOjIwMDZ9LAoiTWlHLTI5IEZ1bGNydW0iOntzdGF0ZToidW50aWwiLHllYXI6MjAxN30sCiJNaUctMzEgRm94aG91bmQiOntzdGF0ZToidW50aWwiLHllYXI6MjAxMH0sCiJTdS0yNyBGbGFua2VyIjp7c3RhdGU6InVudGlsIix5ZWFyOjIwMDZ9LAoiU3UtMzAiOntzdGF0ZToidW50aWwiLHllYXI6MjAwNn0sCiJIYXdrZXIgSHVudGVyIjp7c3RhdGU6InVudGlsIix5ZWFyOjIwMjJ9LAoiRW5nbGlzaCBFbGVjdHJpYyBMaWdodG5pbmciOntzdGF0ZToidW50aWwiLHllYXI6MjAxMH0KfTsKY29uc3QgTUZSPXsiRi0xNSBFYWdsZSI6Ik1jRG9ubmVsbCBEb3VnbGFzIC8gQm9laW5nIiwiRi00IFBoYW50b20gSUkiOiJNY0Rvbm5lbGwgRG91Z2xhcyIsIkYtMTYgRmlnaHRpbmcgRmFsY29uIjoiR2VuZXJhbCBEeW5hbWljcyAvIExvY2toZWVkIE1hcnRpbiIsIkYtMTQgVG9tY2F0IjoiR3J1bW1hbiIsIkYtMTVFIFN0cmlrZSBFYWdsZSI6Ik1jRG9ubmVsbCBEb3VnbGFzIC8gQm9laW5nIiwiRi9BLTE4IEhvcm5ldCI6Ik1jRG9ubmVsbCBEb3VnbGFzIC8gQm9laW5nIiwiRi9BLTE4RS9GIFN1cGVyIEhvcm5ldCI6IkJvZWluZyIsIkYtMjIgUmFwdG9yIjoiTG9ja2hlZWQgTWFydGluIC8gQm9laW5nIiwiRi0zNSBMaWdodG5pbmcgSUkiOiJMb2NraGVlZCBNYXJ0aW4iLCJBLTEwIFRodW5kZXJib2x0IElJIjoiRmFpcmNoaWxkIFJlcHVibGljIiwiRi01IEZyZWVkb20gRmlnaHRlciI6Ik5vcnRocm9wIiwiRi0xMDQgU3RhcmZpZ2h0ZXIiOiJMb2NraGVlZCIsIk1pcmFnZSBJSUkgLyA1IjoiRGFzc2F1bHQiLCJNaXJhZ2UgRjEiOiJEYXNzYXVsdCIsIk1pcmFnZSAyMDAwIjoiRGFzc2F1bHQiLCJSYWZhbGUiOiJEYXNzYXVsdCIsIlNlYSBIYXJyaWVyIjoiQnJpdGlzaCBBZXJvc3BhY2UiLCJJQUkgS2ZpciI6IklzcmFlbCBBZXJvc3BhY2UgSW5kdXN0cmllcyIsIkV1cm9maWdodGVyIFR5cGhvb24iOiJFdXJvZmlnaHRlciIsIlNhYWIgSkFTLTM5IEdyaXBlbiI6IlNhYWIiLCJUb3JuYWRvIEFEViAoRi4zKSI6IlBhbmF2aWEiLCJUb3JuYWRvIElEUyI6IlBhbmF2aWEiLCJNaUctMjEgRmlzaGJlZCI6Ik1pa295YW4tR3VyZXZpY2giLCJNaUctMjMgRmxvZ2dlciI6Ik1pa295YW4tR3VyZXZpY2giLCJNaUctMjUgRm94YmF0IjoiTWlrb3lhbi1HdXJldmljaCIsIk1pRy0yOSBGdWxjcnVtIjoiTWlrb3lhbiIsIk1pRy0zMSBGb3hob3VuZCI6Ik1pa295YW4iLCJTdS0yNyBGbGFua2VyIjoiU3VraG9pIiwiU3UtMzAiOiJTdWtob2kiLCJTdS0zMyI6IlN1a2hvaSIsIlN1LTM0IEZ1bGxiYWNrIjoiU3VraG9pIiwiU3UtMzUiOiJTdWtob2kiLCJTdS01NyBGZWxvbiI6IlN1a2hvaSIsIkNoZW5nZHUgSi03IjoiQ2hlbmdkdSIsIkNoZW5nZHUgSi0xMCI6IkNoZW5nZHUiLCJTaGVueWFuZyBKLTExIjoiU2hlbnlhbmciLCJDaGVuZ2R1IEotMjAiOiJDaGVuZ2R1IiwiSkYtMTcgVGh1bmRlciI6IlBBQyAvIENBQyIsIk1pRy0xNSBGYWdvdCI6Ik1pa295YW4tR3VyZXZpY2giLCJNaUctMTcgRnJlc2NvIjoiTWlrb3lhbi1HdXJldmljaCIsIkhhd2tlciBIdW50ZXIiOiJIYXdrZXIiLCJFbmdsaXNoIEVsZWN0cmljIExpZ2h0bmluZyI6IkVuZ2xpc2ggRWxlY3RyaWMgLyBCQUMifTtjb25zdCBFU1Q9bmV3IFNldChbIk1pRy0xNSBGYWdvdCIsIk1pRy0xNyBGcmVzY28iLCJNaUctMjEgRmlzaGJlZCIsIk1pRy0yMyBGbG9nZ2VyIiwiTWlyYWdlIElJSSAvIDUiLCJNaXJhZ2UgRjEiLCJGLTUgRnJlZWRvbSBGaWdodGVyIiwiRi0xMDQgU3RhcmZpZ2h0ZXIiLCJGLTQgUGhhbnRvbSBJSSIsIkhhd2tlciBIdW50ZXIiLCJNaUctMjUgRm94YmF0IiwiU3UtMzUiLCJNaUctMzEgRm94aG91bmQiLCJTdS0yNyBGbGFua2VyIiwiU3UtMzAiLCJDaGVuZ2R1IEotMTAiLCJSYWZhbGUiLCJNaXJhZ2UgMjAwMCIsIkpGLTE3IFRodW5kZXIiXSk7CkQuZm9yRWFjaCgoaixpKT0+e2ouaWQ9aTtqLnRvdGFsPWoua2lsbHMrai5sb3NzZXMrai5ncm91bmQ7ai5yYXRpbz1qLmxvc3Nlcz4wP2oua2lsbHMvai5sb3NzZXM6KGoua2lsbHM+MD9JbmZpbml0eTowKTtqLmltZz1JTUdbai5uYW1lXXx8IiI7ai5hdmFpbD1BVkFJTFtqLm5hbWVdfHx7c3RhdGU6Im5hIn07ai5tZnI9TUZSW2oubmFtZV18fCIiO2ouZXN0PUVTVC5oYXMoai5uYW1lKTt9KTsKCi8qIC0tLS0tLS0tLS0gRElSRUNUIFRZUEUtdnMtVFlQRSBFTkdBR0VNRU5UUyAoZG9jdW1lbnRlZCkgLS0tLS0tLS0tLQogICB4IGRvd25lZCBgeFNjb3JlYCBvZiB0eXBlIHk7IHkgZG93bmVkIGB5U2NvcmVgIG9mIHR5cGUgeC4gU2NvcmVzIGtlcHQgYXMKICAgc3RyaW5ncyB0byBhdm9pZCBmYWxzZSBwcmVjaXNpb24uIGBkaXNwdXRlZDp0cnVlYCBmbGFncyBjb250ZXN0ZWQgdGFsbGllcy4gKi8KY29uc3QgTUFUQ0hVUFM9W3t4OiJGLTE2IEZpZ2h0aW5nIEZhbGNvbiIseToiU3UtMzUiLGNvbmZsaWN0OiJSdXNzby1Va3JhaW5pYW4gV2FyIix5ZWFyczoiMjAyNiIseFNjb3JlOiIxIix5U2NvcmU6IjAiLGRpc3B1dGVkOmZhbHNlLHN1bW1hcnk6Ik9uIDggSnVseSAyMDI2IGEgVWtyYWluaWFuIEYtMTYgc2hvdCBkb3duIGEgUnVzc2lhbiBTdS0zNVMgd2l0aCBhbiBBSU0tMTIwIOKAlCB0aGUgRi0xNuKAmXMgZmlyc3QgYWlyLXRvLWFpciBraWxsIG9mIGEgbWFubmVkIFJ1c3NpYW4gamV0LCBjb25maXJtZWQgYnkgVVMgYW5kIFJ1c3NpYW4gc291cmNlczsgdGhlIFN1LTM1IHBpbG90IGVqZWN0ZWQgYW5kIHdhcyByZXNjdWVkLiJ9LAp7eDoiRi0xNSBFYWdsZSIseToiTWlHLTI5IEZ1bGNydW0iLGNvbmZsaWN0OiJHdWxmIFdhciAmIEtvc292byIseWVhcnM6IjE5OTEgJiAxOTk5Iix4U2NvcmU6IjYrIix5U2NvcmU6IjAiLGRpc3B1dGVkOmZhbHNlLHN1bW1hcnk6IkYtMTVzIGRvd25lZCBhdCBsZWFzdCBzaXggTWlHLTI5cyBhY3Jvc3MgRGVzZXJ0IFN0b3JtIGFuZCBPcGVyYXRpb24gQWxsaWVkIEZvcmNlIHdpdGhvdXQgYSBzaW5nbGUgbG9zcyDigJQgdGhlIEZ1bGNydW0ncyB0b3VnaGVzdCBtYXRjaHVwLiJ9LAp7eDoiRi0xNiBGaWdodGluZyBGYWxjb24iLHk6Ik1pRy0yOSBGdWxjcnVtIixjb25mbGljdDoiS29zb3ZvIFdhciAoQWxsaWVkIEZvcmNlKSIseWVhcnM6IjE5OTkiLHhTY29yZToiMiIseVNjb3JlOiIwIixkaXNwdXRlZDpmYWxzZSxzdW1tYXJ5OiJBIFVTQUYgYW5kIGEgUm95YWwgTmV0aGVybGFuZHMgQWlyIEZvcmNlIEYtMTYgZWFjaCBkb3duZWQgYSBZdWdvc2xhdiBNaUctMjk7IG5vIEYtMTYgd2FzIGxvc3QuIn0sCnt4OiJTdS0yNyBGbGFua2VyIix5OiJNaUctMjkgRnVsY3J1bSIsY29uZmxpY3Q6IkVyaXRyZWFu4oCTRXRoaW9waWFuIFdhciIseWVhcnM6IjE5OTkiLHhTY29yZToiMuKAkzMiLHlTY29yZToiMCIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiVGhlIG9ubHkgRmxhbmtlci12cy1GdWxjcnVtIGNvbWJhdCBpbiBoaXN0b3J5LiBFdGhpb3BpYW4gU3UtMjdzIGRvd25lZCB0d28gdG8gdGhyZWUgRXJpdHJlYW4gTWlHLTI5cyBhbmQgbG9zdCBub25lIOKAlCB0aGUgc2libGluZyByaXZhbHJ5IHNldHRsZWQgZGVjaXNpdmVseS4ifSwKe3g6IkYtMTUgRWFnbGUiLHk6Ik1pRy0yNSBGb3hiYXQiLGNvbmZsaWN0OiJHdWxmIFdhciAmIElzcmFlbGkgb3BzIix5ZWFyczoiMTk4MeKAkzE5OTEiLHhTY29yZToiMysiLHlTY29yZToiMCIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiRi0xNXMgZG93bmVkIG11bHRpcGxlIEZveGJhdHMg4oCUIGluY2x1ZGluZyB0d28gaW4gYSBzaW5nbGUgRGVzZXJ0IFN0b3JtIGVuZ2FnZW1lbnQgb24gMTkgSmFuIDE5OTEg4oCUIGZvciBubyBsb3NzLiJ9LAp7eDoiRi0xNSBFYWdsZSIseToiTWlHLTIzIEZsb2dnZXIiLGNvbmZsaWN0OiJCZWthYSBWYWxsZXkgJiBHdWxmIFdhciIseWVhcnM6IjE5ODLigJMxOTkxIix4U2NvcmU6IjgrIix5U2NvcmU6IjAiLGRpc3B1dGVkOmZhbHNlLHN1bW1hcnk6IlVTQUYgRi0xNXMgYWxvbmUgZG93bmVkIGVpZ2h0IElyYXFpIE1pRy0yM3MgaW4gRGVzZXJ0IFN0b3JtLCBvbiB0b3Agb2YgSXNyYWVsaSBraWxscyBvdmVyIExlYmFub247IG5vIEYtMTUgd2FzIGxvc3QgdG8gYSBGbG9nZ2VyLiJ9LAp7eDoiRi0xNiBGaWdodGluZyBGYWxjb24iLHk6Ik1pRy0yMyBGbG9nZ2VyIixjb25mbGljdDoiTGViYW5vbiBXYXIgKEJla2FhIFZhbGxleSkiLHllYXJzOiIxOTgyIix4U2NvcmU6InNldmVyYWwiLHlTY29yZToiMCIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiSXNyYWVsaSBGLTE2cyBkb3duZWQgU3lyaWFuIE1pRy0yM3MgZHVyaW5nIHRoZSBvbmUtc2lkZWQgQmVrYWEgVmFsbGV5IGFpciBiYXR0bGVzLiJ9LAp7eDoiRi0xNSBFYWdsZSIseToiRi00IFBoYW50b20gSUkiLGNvbmZsaWN0OiJTYXVkaeKAk0lyYW4gYm9yZGVyIGNsYXNoIix5ZWFyczoiMTk4NCIseFNjb3JlOiIyIix5U2NvcmU6IjAiLGRpc3B1dGVkOmZhbHNlLHN1bW1hcnk6IlR3byBSb3lhbCBTYXVkaSBGLTE1cyBkb3duZWQgdHdvIElyYW5pYW4gRi00RSBQaGFudG9tcyBuZWFyIHRoZSBHdWxmIGluIEp1bmUgMTk4NCDigJQgYSByYXJlIEYtMTUgZW5nYWdlbWVudCBvdXRzaWRlIElzcmFlbGkgYW5kIFVTIHNlcnZpY2UuIn0sCnt4OiJGL0EtMTggSG9ybmV0Iix5OiJNaUctMjEgRmlzaGJlZCIsY29uZmxpY3Q6Ikd1bGYgV2FyIix5ZWFyczoiMTk5MSIseFNjb3JlOiIyIix5U2NvcmU6IjAiLGRpc3B1dGVkOmZhbHNlLHN1bW1hcnk6Ik9uIHRoZSB3YXIncyBvcGVuaW5nIG5pZ2h0IHR3byBWRkEtODEgSG9ybmV0cyBlYWNoIGRvd25lZCBhbiBJcmFxaSBNaUctMjEg4oCUIHRoZW4gY29tcGxldGVkIHRoZWlyIGJvbWJpbmcgcnVucy4ifSwKe3g6IkYvQS0xOCBIb3JuZXQiLHk6Ik1pRy0yNSBGb3hiYXQiLGNvbmZsaWN0OiJHdWxmIFdhciIseWVhcnM6IjE5OTEiLHhTY29yZToiMCIseVNjb3JlOiIxIixkaXNwdXRlZDpmYWxzZSxzdW1tYXJ5OiJUaGUgSG9ybmV0J3Mgb25seSBhaXItdG8tYWlyIGxvc3Mg4oCUIEx0IENkciBTY290dCBTcGVpY2hlcidzIGpldCBvbiAxNyBKYW4gMTk5MSDigJQgaXMgd2lkZWx5IGF0dHJpYnV0ZWQgdG8gYW4gSXJhcWkgTWlHLTI1LiJ9LAp7eDoiU2VhIEhhcnJpZXIiLHk6Ik1pcmFnZSBJSUkgLyA1Iixjb25mbGljdDoiRmFsa2xhbmRzIFdhciIseWVhcnM6IjE5ODIiLHhTY29yZToic2V2ZXJhbCIseVNjb3JlOiIwIixkaXNwdXRlZDpmYWxzZSxzdW1tYXJ5OiJTZWEgSGFycmllcnMgZG93bmVkIEFyZ2VudGluZSBNaXJhZ2VzIGFuZCBEYWdnZXJzIHdpdGggdGhlIEFJTS05TCBTaWRld2luZGVyOyBub25lIHdlcmUgbG9zdCBpbiBhaXIgY29tYmF0LiJ9LAp7eDoiTWlHLTIxIEZpc2hiZWQiLHk6IkYtMTA0IFN0YXJmaWdodGVyIixjb25mbGljdDoiSW5kby1QYWtpc3RhbmkgV2FyIix5ZWFyczoiMTk3MSIseFNjb3JlOiIyKyIseVNjb3JlOiIw4oCTMSIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiSW5kaWFuIE1pRy0yMXMgZG93bmVkIFBha2lzdGFuaSBGLTEwNHMgaW4gc29tZSBvZiB0aGUgZmlyc3Qgc3VwZXJzb25pYy12cy1zdXBlcnNvbmljIGtpbGxzIG92ZXIgdGhlIHN1YmNvbnRpbmVudC4ifSwKe3g6Ik1pcmFnZSBJSUkgLyA1Iix5OiJNaUctMjEgRmlzaGJlZCIsY29uZmxpY3Q6IlNpeC1EYXkgV2FyICYgV2FyIG9mIEF0dHJpdGlvbiIseWVhcnM6IjE5NjfigJMxOTcwIix4U2NvcmU6Im1hbnkiLHlTY29yZToic29tZSIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiVGhlIGRlZmluaW5nIGRvZ2ZpZ2h0IHJpdmFscnkgb2YgdGhlIGVhcmx5IEFyYWLigJNJc3JhZWxpIHdhcnMg4oCUIElzcmFlbGkgTWlyYWdlcyBhZ2FpbnN0IEVneXB0aWFuIGFuZCBTeXJpYW4gTWlHLTIxcywgd2l0aCB0aGUgTWlyYWdlIGdlbmVyYWxseSBvbiB0b3AuIn0sCnt4OiJGLTUgRnJlZWRvbSBGaWdodGVyIix5OiJNaUctMjEgRmlzaGJlZCIsY29uZmxpY3Q6Ik9nYWRlbiBXYXIiLHllYXJzOiIxOTc34oCTMTk3OCIseFNjb3JlOiJ+MTIiLHlTY29yZToiMCIsZGlzcHV0ZWQ6ZmFsc2Usc3VtbWFyeToiRXRoaW9waWFuIEYtNUVzIGRvd25lZCBhcm91bmQgYSBkb3plbiBTb21hbGkgTWlHLTIxcyBkdXJpbmcgdGhlIE9nYWRlbiBXYXIuIn0sCnt4OiJNaUctMjEgRmlzaGJlZCIseToiRi00IFBoYW50b20gSUkiLGNvbmZsaWN0OiJWaWV0bmFtIFdhciIseWVhcnM6IjE5NjXigJMxOTczIix4U2NvcmU6ImRvemVucyIseVNjb3JlOiJkb3plbnMiLGRpc3B1dGVkOnRydWUsc3VtbWFyeToiVGhlIGRlZmluaXRpdmUgQ29sZCBXYXIgZG9nZmlnaHQgcml2YWxyeS4gQm90aCBzaWRlcyBzY29yZWQgZG96ZW5zIG9mIGtpbGxzLCBhbmQgdGhlIGV4YWN0IGV4Y2hhbmdlIHJhdGlvIGlzIGRpc3B1dGVkIGJldHdlZW4gVVMgYW5kIFZpZXRuYW1lc2UgYWNjb3VudGluZyB0byB0aGlzIGRheS4ifSwKe3g6IkYtMTQgVG9tY2F0Iix5OiJNaXJhZ2UgRjEiLGNvbmZsaWN0OiJJcmFu4oCTSXJhcSBXYXIiLHllYXJzOiIxOTgw4oCTMTk4OCIseFNjb3JlOiJjbGFpbWVkIix5U2NvcmU6ImNsYWltZWQiLGRpc3B1dGVkOnRydWUsc3VtbWFyeToiSXJhbmlhbiBGLTE0cyBhbmQgSXJhcWkgTWlyYWdlIEYxcyBjbGFzaGVkIHJlcGVhdGVkbHkgaW4gdGhlIGxvdy1sZXZlbCAnR2lyYWZmZScgbWlzc2lvbnMuIEJvdGggc2lkZXMgY2xhaW1lZCBtdWx0aXBsZSBraWxscywgYnV0IElyYW5pYW4gYW5kIElyYXFpIHRhbGxpZXMgZGl2ZXJnZSBzaGFycGx5IGFuZCByZW1haW4gdW52ZXJpZmlhYmxlLiJ9LAp7eDoiRi0xNCBUb21jYXQiLHk6Ik1pRy0yMyBGbG9nZ2VyIixjb25mbGljdDoiSXJhbuKAk0lyYXEgV2FyIix5ZWFyczoiMTk4NCAmIDE5ODYiLHhTY29yZToiMCIseVNjb3JlOiIyIGNsYWltZWQiLGRpc3B1dGVkOnRydWUsc3VtbWFyeToiSXJhcWkgTWlHLTIzTUxzIGFyZSBjcmVkaXRlZCB3aXRoIGRvd25pbmcgSXJhbmlhbiBGLTE0cyBpbiAxOTg0IGFuZCAxOTg2IOKAlCByYXJlIFRvbWNhdCBsb3NzZXMsIHRob3VnaCB0aGUgZGV0YWlscyBhcmUgZGlzcHV0ZWQgYnkgSXJhbmlhbiBzb3VyY2VzLiJ9LAp7eDoiTWlHLTE3IEZyZXNjbyIseToiRi00IFBoYW50b20gSUkiLGNvbmZsaWN0OiJWaWV0bmFtIFdhciIseWVhcnM6IjE5NjXigJMxOTcyIix4U2NvcmU6In4zMiIseVNjb3JlOiJtYW55IixkaXNwdXRlZDp0cnVlLHN1bW1hcnk6IlRoZSBzdWJzb25pYyBNaUctMTcgaXMgY3JlZGl0ZWQgd2l0aCBkb3duaW5nIGFyb3VuZCAzMiBGLTQgUGhhbnRvbXMgaW4gbG93LXNwZWVkIGtuaWZlLWZpZ2h0cyBvdmVyIE5vcnRoIFZpZXRuYW0sIHdoaWxlIFBoYW50b21zIGRvd25lZCBNaUctMTdzIGluIHJldHVybiDigJQgYSBsb3BzaWRlZC10ZWNobm9sb2d5IG1hdGNodXAgdGhlIGxpdHRsZSBndW5maWdodGVyIHJlZnVzZWQgdG8gbG9zZSBjbGVhbmx5LiJ9Cix7IngiOiJIYXdrZXIgSHVudGVyIiwieSI6Ik1pRy0xNyBGcmVzY28iLCJjb25mbGljdCI6IlNpeC1EYXkgV2FyIC8gV2FyIG9mIEF0dHJpdGlvbiIsInllYXJzIjoiMTk2N+KAkzcwIiwieFNjb3JlIjoifjMiLCJ5U2NvcmUiOiJ+MyIsImRpc3B1dGVkIjp0cnVlLCJzdW1tYXJ5IjoiSm9yZGFuaWFuLCBJcmFxaSBhbmQgTGViYW5lc2UgSHVudGVycyBmb3VnaHQgRWd5cHRpYW4gYW5kIFN5cmlhbiBNaUctMTdzIGluIGEgZmFpcmx5IGV2ZW4gZ3VuLWZpZ2h0ZXIgbWF0Y2h1cCB3aGVyZSBib3RoIHR5cGVzIHNjb3JlZC4ifSx7IngiOiJDaGVuZ2R1IEotMTAiLCJ5IjoiUmFmYWxlIiwiY29uZmxpY3QiOiJJbmRpYeKAk1Bha2lzdGFuIChPcCBTaW5kb29yKSIsInllYXJzIjoiMjAyNSIsInhTY29yZSI6IjErIChjb25maXJtZWQpIiwieVNjb3JlIjoiMCIsImRpc3B1dGVkIjp0cnVlLCJzdW1tYXJ5IjoiSW4gdGhlIE1heSAyMDI1IGNsYXNoZXMgYSBQYWtpc3RhbmkgSi0xMEMgZmlyaW5nIGEgUEwtMTUgZG93bmVkIGF0IGxlYXN0IG9uZSBJbmRpYW4gUmFmYWxlOyB0aGUgbG9zcyB3YXMgYWNrbm93bGVkZ2VkIGJ5IHRoZSBGcmVuY2ggQWlyIEZvcmNlIGNoaWVmIGFuZCBjb25maXJtZWQgYnkgRnJlbmNoIGFuZCBVUyBvZmZpY2lhbHMsIHRob3VnaCBQYWtpc3RhbidzIGNsYWltIG9mIHVwIHRvIHRocmVlIGlzIHVudmVyaWZpZWQuIn0seyJ4IjoiSkYtMTcgVGh1bmRlciIsInkiOiJSYWZhbGUiLCJjb25mbGljdCI6IkluZGlh4oCTUGFraXN0YW4gKE9wIFNpbmRvb3IpIiwieWVhcnMiOiIyMDI1IiwieFNjb3JlIjoiY2xhaW1lZCIsInlTY29yZSI6IjAiLCJkaXNwdXRlZCI6dHJ1ZSwic3VtbWFyeSI6IlRoZSBQQUYgY3JlZGl0ZWQgSkYtMTdzIGFsb25nc2lkZSBKLTEwQ3MgaW4gdGhlIG5ldHdvcmsgdGhhdCBlbmdhZ2VkIEluZGlhbiBSYWZhbGVzIGluIE1heSAyMDI1LCBidXQgaW5kZXBlbmRlbnQgcmVwb3J0aW5nIGF0dHJpYnV0ZXMgdGhlIG9uZSBjb25maXJtZWQgUmFmYWxlIGxvc3Mgc3BlY2lmaWNhbGx5IHRvIGEgSi0xMEMvUEwtMTUgc2hvdC4ifSx7IngiOiJKRi0xNyBUaHVuZGVyIiwieSI6IlN1LTMwIiwiY29uZmxpY3QiOiJJbmRpYeKAk1Bha2lzdGFuIChPcCBTaW5kb29yKSIsInllYXJzIjoiMjAyNSIsInhTY29yZSI6ImNsYWltZWQiLCJ5U2NvcmUiOiIwIiwiZGlzcHV0ZWQiOnRydWUsInN1bW1hcnkiOiJQYWtpc3RhbiBjbGFpbWVkIGEgSkYtMTcgZG93bmVkIGFuIEluZGlhbiBTdS0zME1LSSBkdXJpbmcgdGhlIE1heSAyMDI1IGZpZ2h0aW5nOyBJbmRpYSBkZW5pZWQgYW55IFN1LTMwIGxvc3MgYW5kIG5vIHdyZWNrYWdlIG9yIGluZGVwZW5kZW50IHNvdXJjZSBoYXMgY29uZmlybWVkIGl0LiJ9LHsieCI6Ik1pRy0yMSBGaXNoYmVkIiwieSI6IkYtMTYgRmlnaHRpbmcgRmFsY29uIiwiY29uZmxpY3QiOiJJbmRpYeKAk1Bha2lzdGFuIChCYWxha290KSIsInllYXJzIjoiMjAxOSIsInhTY29yZSI6IjEgKGNsYWltZWQpIiwieVNjb3JlIjoiMSIsImRpc3B1dGVkIjp0cnVlLCJzdW1tYXJ5IjoiSW4gdGhlIDI3IEZlYiAyMDE5IGRvZ2ZpZ2h0IGEgUEFGIEYtMTYgZG93bmVkIGFuIElBRiBNaUctMjEgQmlzb24gKHBpbG90IEFiaGluYW5kYW4gY2FwdHVyZWQpOyBJbmRpYSBjbGFpbXMgQWJoaW5hbmRhbiBmaXJzdCBkb3duZWQgYSBQQUYgRi0xNiwgYnV0IGEgVVMgY291bnQgb2YgUGFraXN0YW4ncyBGLTE2cyByZXBvcnRlZCBub25lIG1pc3NpbmcsIGxlYXZpbmcgdGhhdCBraWxsIGNvbnRlc3RlZC4ifSx7IngiOiJJQUkgS2ZpciIsInkiOiJNaUctMjEgRmlzaGJlZCIsImNvbmZsaWN0IjoiTGViYW5vbiAoQXJhYuKAk0lzcmFlbGkpIiwieWVhcnMiOiIxOTc5IiwieFNjb3JlIjoiMSIsInlTY29yZSI6IjAiLCJkaXNwdXRlZCI6ZmFsc2UsInN1bW1hcnkiOiJPbiAyNyBKdW5lIDE5NzkgYW4gSXNyYWVsaSBBaXIgRm9yY2UgS2ZpciBDLjIgc2hvdCBkb3duIGEgU3lyaWFuIE1pRy0yMSBvdmVyIExlYmFub24g4oCUIHRoZSBLZmlyJ3MgZmlyc3QtZXZlciBhaXItdG8tYWlyIGtpbGwuIn0seyJ4IjoiRi0xNCBUb21jYXQiLCJ5IjoiTWlHLTIxIEZpc2hiZWQiLCJjb25mbGljdCI6IklyYW7igJNJcmFxIFdhciIsInllYXJzIjoiMTk4MOKAkzg4IiwieFNjb3JlIjoibXVsdGlwbGUiLCJ5U2NvcmUiOiJmZXciLCJkaXNwdXRlZCI6ZmFsc2UsInN1bW1hcnkiOiJJcmFuaWFuIEYtMTRBIGNyZXdzIGRvd25lZCBudW1lcm91cyBJcmFxaSBNaUctMjFzLCBvZnRlbiB3aXRoIEFJTS01NCBQaG9lbml4IGFuZCBBSU0tNzsgdGhlIFRvbWNhdCBoZWxkIGEgY2xlYXIgZWRnZSwgdGhvdWdoIGV4YWN0IHRvdGFscyBkaWZmZXIgYmV0d2VlbiBJcmFuaWFuIGFuZCBJcmFxaSByZWNvcmRzLiJ9LHsieCI6IkYtMTQgVG9tY2F0IiwieSI6Ik1pRy0yNSBGb3hiYXQiLCJjb25mbGljdCI6IklyYW7igJNJcmFxIFdhciIsInllYXJzIjoiMTk4MOKAkzg4IiwieFNjb3JlIjoic2V2ZXJhbCIsInlTY29yZSI6In4yIiwiZGlzcHV0ZWQiOnRydWUsInN1bW1hcnkiOiJJcmFuaWFuIEYtMTRzIGxlYXJuZWQgdG8gaW50ZXJjZXB0IElyYXEncyBoaWdoLWZseWluZyBNaUctMjVzIGFuZCBhcmUgY3JlZGl0ZWQgd2l0aCBzZXZlcmFsIEZveGJhdCBraWxscywgd2hpbGUgSXJhcWkgTWlHLTI1cyBjbGFpbWVkIGEgc21hbGwgbnVtYmVyIG9mIEYtMTRzOyBib3RoIHRhbGxpZXMgYXJlIGRpc3B1dGVkLiJ9LHsieCI6IkYtNCBQaGFudG9tIElJIiwieSI6Ik1pcmFnZSBGMSIsImNvbmZsaWN0IjoiSXJhbuKAk0lyYXEgV2FyIiwieWVhcnMiOiIxOTgw4oCTODgiLCJ4U2NvcmUiOiJzZXZlcmFsIiwieVNjb3JlIjoic2V2ZXJhbCIsImRpc3B1dGVkIjp0cnVlLCJzdW1tYXJ5IjoiSXJhcWkgTWlyYWdlIEYxRVFzIGFuZCBJcmFuaWFuIEYtNCBQaGFudG9tcyBjbGFzaGVkIHJlcGVhdGVkbHksIGJvdGggdHlwZXMgY2xhaW1pbmcgbXVsdGlwbGUga2lsbHMgb2YgdGhlIG90aGVyOyB0aGUgY29tcGV0aW5nIHRvdGFscyBkaXZlcmdlIHNoYXJwbHkgYmV0d2VlbiB0aGUgc2lkZXMuIn0seyJ4IjoiRi00IFBoYW50b20gSUkiLCJ5IjoiTWlHLTIzIEZsb2dnZXIiLCJjb25mbGljdCI6IklyYW7igJNJcmFxIFdhciIsInllYXJzIjoiMTk4MOKAkzg4IiwieFNjb3JlIjoic2V2ZXJhbCIsInlTY29yZSI6InNldmVyYWwiLCJkaXNwdXRlZCI6dHJ1ZSwic3VtbWFyeSI6IklyYXFpIE1pRy0yM3MgYW5kIElyYW5pYW4gRi00cyBzY29yZWQgYWdhaW5zdCBlYWNoIG90aGVyIHRocm91Z2hvdXQgdGhlIHdhcjsgYm90aCBmbGVldHMgY2xhaW1lZCBtdWx0aXBsZSB2aWN0b3JpZXMgYW5kIHRoZSBob25lc3QgcmVjb3JkIGlzIGNvbnRlc3RlZC4ifSx7IngiOiJNaXJhZ2UgRjEiLCJ5IjoiRi01IEZyZWVkb20gRmlnaHRlciIsImNvbmZsaWN0IjoiSXJhbuKAk0lyYXEgV2FyIiwieWVhcnMiOiIxOTgw4oCTODgiLCJ4U2NvcmUiOiJzZXZlcmFsIiwieVNjb3JlIjoiZmV3IiwiZGlzcHV0ZWQiOnRydWUsInN1bW1hcnkiOiJJcmFxaSBNaXJhZ2UgRjFFUXMgZW5nYWdlZCBJcmFuaWFuIEYtNUVzIG9uIG51bWVyb3VzIG9jY2FzaW9ucywgdGhlIE1pcmFnZSBGMSBjcmVkaXRlZCB3aXRoIHRoZSBtYWpvcml0eSBvZiBleGNoYW5nZXMgdGhvdWdoIHRoZSBGLTVzIHNjb3JlZCBpbiByZXR1cm47IHRvdGFscyBhcmUgZGlzcHV0ZWQuIn1dOwp2YXIgQ1NMVUc9eyJNZXNzZXJzY2htaXR0IEJmIDEwOSI6Im1lc3NlcnNjaG1pdHQtYmYtMTA5IiwiRm9ra2VyIEVpbmRlY2tlciI6ImZva2tlci1laW5kZWNrZXIiLCJBbGJhdHJvcyBELklJSSI6ImFsYmF0cm9zLWQtaWlpIiwiQWxiYXRyb3MgRC5WIjoiYWxiYXRyb3MtZC12IiwiRm9ra2VyIERyLkkiOiJmb2trZXItZHItaSIsIkZva2tlciBELlZJSSI6ImZva2tlci1kLXZpaSIsIlNvcHdpdGggQ2FtZWwiOiJzb3B3aXRoLWNhbWVsIiwiUy5FLjVhIjoicy1lLTVhIiwiU1BBRCBTLlhJSUkiOiJzcGFkLXMteGlpaSIsIk5pZXVwb3J0IDE3IjoibmlldXBvcnQtMTciLCJQb2xpa2FycG92IEktMTYiOiJwb2xpa2FycG92LWktMTYiLCJGaWF0IENSLjMyIjoiZmlhdC1jci0zMiIsIkdsb3N0ZXIgR2xhZGlhdG9yIjoiZ2xvc3Rlci1nbGFkaWF0b3IiLCJNZXNzZXJzY2htaXR0IEJmIDExMCI6Im1lc3NlcnNjaG1pdHQtYmYtMTEwIiwiRm9ja2UtV3VsZiBGdyAxOTAiOiJmb2NrZS13dWxmLWZ3LTE5MCIsIk1hY2NoaSBDLjIwMiI6Im1hY2NoaS1jLTIwMiIsIkRld29pdGluZSBELjUyMCI6ImRld29pdGluZS1kLTUyMCIsIk1lc3NlcnNjaG1pdHQgTWUgMjYyIjoibWVzc2Vyc2NobWl0dC1tZS0yNjIiLCJTdXBlcm1hcmluZSBTcGl0ZmlyZSI6InN1cGVybWFyaW5lLXNwaXRmaXJlIiwiSGF3a2VyIEh1cnJpY2FuZSI6Imhhd2tlci1odXJyaWNhbmUiLCJIYXdrZXIgVGVtcGVzdCI6Imhhd2tlci10ZW1wZXN0IiwiZGUgSGF2aWxsYW5kIE1vc3F1aXRvIjoiZGUtaGF2aWxsYW5kLW1vc3F1aXRvIiwiUC01MSBNdXN0YW5nIjoicC01MS1tdXN0YW5nIiwiUC00NyBUaHVuZGVyYm9sdCI6InAtNDctdGh1bmRlcmJvbHQiLCJQLTM4IExpZ2h0bmluZyI6InAtMzgtbGlnaHRuaW5nIiwiUC00MCBXYXJoYXdrIjoicC00MC13YXJoYXdrIiwiUC0zOSBBaXJhY29icmEiOiJwLTM5LWFpcmFjb2JyYSIsIkE2TSBaZXJvIjoiYTZtLXplcm8iLCJLaS00MyBIYXlhYnVzYSI6ImtpLTQzLWhheWFidXNhIiwiS2ktODQgSGF5YXRlIjoia2ktODQtaGF5YXRlIiwiTjFLIFNoaWRlbi1LYWkiOiJuMWstc2hpZGVuLWthaSIsIkY0RiBXaWxkY2F0IjoiZjRmLXdpbGRjYXQiLCJGNkYgSGVsbGNhdCI6ImY2Zi1oZWxsY2F0IiwiRjRVIENvcnNhaXIiOiJmNHUtY29yc2FpciIsIllha292bGV2IFlhay0zIjoieWFrb3ZsZXYteWFrLTMiLCJZYWtvdmxldiBZYWstOSI6Inlha292bGV2LXlhay05IiwiTGF2b2Noa2luIExhLTUvNyI6Imxhdm9jaGtpbi1sYS01LTciLCJNaUctMyI6Im1pZy0zIiwiRi04NiBTYWJyZSI6ImYtODYtc2FicmUiLCJNaUctMTkgRmFybWVyIjoibWlnLTE5LWZhcm1lciIsIkdsb3N0ZXIgTWV0ZW9yIjoiZ2xvc3Rlci1tZXRlb3IiLCJGOUYgUGFudGhlciI6ImY5Zi1wYW50aGVyIiwiRi04NCBUaHVuZGVyamV0IjoiZi04NC10aHVuZGVyamV0IiwiRi04IENydXNhZGVyIjoiZi04LWNydXNhZGVyIiwiRi0xMDUgVGh1bmRlcmNoaWVmIjoiZi0xMDUtdGh1bmRlcmNoaWVmIiwiTXlzdMOocmUgSVZBIjoibXlzdGVyZS1pdmEiLCJIYXdrZXIgU2VhIEZ1cnkiOiJoYXdrZXItc2VhLWZ1cnkiLCJGLTgyIFR3aW4gTXVzdGFuZyI6ImYtODItdHdpbi1tdXN0YW5nIiwiRi0xNSBFYWdsZSI6ImYtMTUtZWFnbGUiLCJGLTQgUGhhbnRvbSBJSSI6ImYtNC1waGFudG9tLWlpIiwiRi0xNiBGaWdodGluZyBGYWxjb24iOiJmLTE2LWZpZ2h0aW5nLWZhbGNvbiIsIkYtMTQgVG9tY2F0IjoiZi0xNC10b21jYXQiLCJGLTE1RSBTdHJpa2UgRWFnbGUiOiJmLTE1ZS1zdHJpa2UtZWFnbGUiLCJGL0EtMTggSG9ybmV0IjoiZi1hLTE4LWhvcm5ldCIsIkYvQS0xOEUvRiBTdXBlciBIb3JuZXQiOiJmLWEtMThlLWYtc3VwZXItaG9ybmV0IiwiRi0yMiBSYXB0b3IiOiJmLTIyLXJhcHRvciIsIkYtMzUgTGlnaHRuaW5nIElJIjoiZi0zNS1saWdodG5pbmctaWkiLCJBLTEwIFRodW5kZXJib2x0IElJIjoiYS0xMC10aHVuZGVyYm9sdC1paSIsIkYtNSBGcmVlZG9tIEZpZ2h0ZXIiOiJmLTUtZnJlZWRvbS1maWdodGVyIiwiRi0xMDQgU3RhcmZpZ2h0ZXIiOiJmLTEwNC1zdGFyZmlnaHRlciIsIk1pcmFnZSBJSUkgLyA1IjoibWlyYWdlLWlpaS01IiwiTWlyYWdlIEYxIjoibWlyYWdlLWYxIiwiTWlyYWdlIDIwMDAiOiJtaXJhZ2UtMjAwMCIsIlJhZmFsZSI6InJhZmFsZSIsIlNlYSBIYXJyaWVyIjoic2VhLWhhcnJpZXIiLCJJQUkgS2ZpciI6ImlhaS1rZmlyIiwiRXVyb2ZpZ2h0ZXIgVHlwaG9vbiI6ImV1cm9maWdodGVyLXR5cGhvb24iLCJTYWFiIEpBUy0zOSBHcmlwZW4iOiJzYWFiLWphcy0zOS1ncmlwZW4iLCJUb3JuYWRvIEFEViAoRi4zKSI6InRvcm5hZG8tYWR2LWYtMyIsIlRvcm5hZG8gSURTIjoidG9ybmFkby1pZHMiLCJNaUctMjEgRmlzaGJlZCI6Im1pZy0yMS1maXNoYmVkIiwiTWlHLTIzIEZsb2dnZXIiOiJtaWctMjMtZmxvZ2dlciIsIk1pRy0yNSBGb3hiYXQiOiJtaWctMjUtZm94YmF0IiwiTWlHLTI5IEZ1bGNydW0iOiJtaWctMjktZnVsY3J1bSIsIk1pRy0zMSBGb3hob3VuZCI6Im1pZy0zMS1mb3hob3VuZCIsIlN1LTI3IEZsYW5rZXIiOiJzdS0yNy1mbGFua2VyIiwiU3UtMzAiOiJzdS0zMCIsIlN1LTMzIjoic3UtMzMiLCJTdS0zNCBGdWxsYmFjayI6InN1LTM0LWZ1bGxiYWNrIiwiU3UtMzUiOiJzdS0zNSIsIlN1LTU3IEZlbG9uIjoic3UtNTctZmVsb24iLCJDaGVuZ2R1IEotNyI6ImNoZW5nZHUtai03IiwiQ2hlbmdkdSBKLTEwIjoiY2hlbmdkdS1qLTEwIiwiU2hlbnlhbmcgSi0xMSI6InNoZW55YW5nLWotMTEiLCJDaGVuZ2R1IEotMjAiOiJjaGVuZ2R1LWotMjAiLCJKRi0xNyBUaHVuZGVyIjoiamYtMTctdGh1bmRlciIsIk1pRy0xNSBGYWdvdCI6Im1pZy0xNS1mYWdvdCIsIk1pRy0xNyBGcmVzY28iOiJtaWctMTctZnJlc2NvIiwiSGF3a2VyIEh1bnRlciI6Imhhd2tlci1odW50ZXIiLCJFbmdsaXNoIEVsZWN0cmljIExpZ2h0bmluZyI6ImVuZ2xpc2gtZWxlY3RyaWMtbGlnaHRuaW5nIn07ZnVuY3Rpb24gQ1NVKG4pe3ZhciBzPUNTTFVHW25dO3JldHVybiBzPygiaHR0cHM6Ly9taWdmbHVnLmNvbS9maWdodGVyLWFpcmNyYWZ0LWNvbWJhdC1zdGF0aXN0aWNzLyIrcysiLyIpOm51bGx9ZnVuY3Rpb24gQ1NBKG4pe3ZhciB1PUNTVShuKTtyZXR1cm4gdT8oJzxhIGNsYXNzPSJjc2xuayIgaHJlZj0iJyt1KyciPicrbisnPC9hPicpOm59ZnVuY3Rpb24gQ1NSRUMobil7dmFyIHU9Q1NVKG4pO3JldHVybiB1PygnPGEgY2xhc3M9Im1yZWMiIGhyZWY9IicrdSsnIj5GdWxsIGNvbWJhdCByZWNvcmQ6IGNhbXBhaWducywgc291cmNlcyAmYW1wOyBzdG9yeTwvYT4nKTonJ30KZnVuY3Rpb24gbXNsdWcocyl7cmV0dXJuIHMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csJy0nKS5yZXBsYWNlKC9eLSt8LSskL2csJycpO31mdW5jdGlvbiBmaW5kTWF0Y2h1cChhLGIpewogIGZvcihjb25zdCBtIG9mIE1BVENIVVBTKXsKICAgIGlmKG0ueD09PWEubmFtZSYmbS55PT09Yi5uYW1lKXJldHVybntjb25mbGljdDptLmNvbmZsaWN0LHllYXJzOm0ueWVhcnMsYVNjb3JlOm0ueFNjb3JlLGJTY29yZTptLnlTY29yZSxkaXNwdXRlZDptLmRpc3B1dGVkLHN1bW1hcnk6bS5zdW1tYXJ5LG14Om0ueCxteTptLnl9OwogICAgaWYobS54PT09Yi5uYW1lJiZtLnk9PT1hLm5hbWUpcmV0dXJue2NvbmZsaWN0Om0uY29uZmxpY3QseWVhcnM6bS55ZWFycyxhU2NvcmU6bS55U2NvcmUsYlNjb3JlOm0ueFNjb3JlLGRpc3B1dGVkOm0uZGlzcHV0ZWQsc3VtbWFyeTptLnN1bW1hcnksbXg6bS54LG15Om0ueX07CiAgfQogIHJldHVybiBudWxsOwp9Cgo7CgovKiAtLS0tLS0tLS0tIFNIQVJFRCBIRUxQRVJTIC0tLS0tLS0tLS0gKi8KY29uc3QgJD1zPT5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpLCAkJD1zPT5bLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzKV07CmNvbnN0IGZsYWc9bz0+RkxBR1tvXXx8IvCfj7PvuI8iOwpjb25zdCBTVExBQkVMPXtwcm92ZW46JzxzcGFuIGNsYXNzPSJiYWRnZSBiLXByb3ZlbiI+YWlyLXRvLWFpcjwvc3Bhbj4nLHN0cmlrZTonPHNwYW4gY2xhc3M9ImJhZGdlIGItc3RyaWtlIj5zdHJpa2VzIG9ubHk8L3NwYW4+Jyx1bnRlc3RlZDonPHNwYW4gY2xhc3M9ImJhZGdlIGItdW50ZXN0ZWQiPm5vPC9zcGFuPid9Owpjb25zdCByYXRpb1R4dD1qPT5qLnJhdGlvPT09SW5maW5pdHk\/JzxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4zNWVtO3ZlcnRpY2FsLWFsaWduOi0xcHgiPuKInjwvc3Bhbj4nOihqLnJhdGlvPT09MD8n4oCUJzpqLnJhdGlvLnRvRml4ZWQoMSkrJyA6IDEnKTsKY29uc3QgU0lMUD1gPHN2ZyBjbGFzcz0ic2lsYmciIHZpZXdCb3g9IjAgMCAxMDAgNDAiPjxwYXRoIGZpbGw9IiM3YTgwOGEiIGQ9Ik0yIDIwIEw0MCAxNyBMNDUgNCBMNDkgNCBMNDggMTYgTDcwIDE0IEw3NCAzIEw3OCAzIEw3NyAxMyBMOTYgMTIgQzk5IDEyIDk5IDE0IDk2IDE1IEw3NyAyMCBMNzggMzQgTDc0IDM0IEw2OSAyMSBMNDggMjIgTDQ5IDM3IEw0NSAzNyBMNDAgMjIgTDIgMjIgWiIvPjwvc3ZnPmA7CmZ1bmN0aW9uIHBob3RvQmxvY2soaixjbHMsZXh0cmEpe3JldHVybiBgPGRpdiBjbGFzcz0iJHtjbHN9Ij4ke1NJTFB9JHtqLmltZz9gPGltZyBzcmM9IiR7ai5pbWd9IiBhbHQ9IiR7ai5uYW1lfSIgbG9hZGluZz0ibGF6eSIgb25lcnJvcj0idGhpcy5yZW1vdmUoKSI+YDonJ30ke2V4dHJhfHwnJ308L2Rpdj5gO30KZnVuY3Rpb24gYXZhaWxIVE1MKGopewogIGNvbnN0IGE9ai5hdmFpbHx8e3N0YXRlOiduYSd9OwogIGlmKGEuc3RhdGU9PT0nYXZhaWxhYmxlJylyZXR1cm4gYDxhIGNsYXNzPSJhdiBhdi1nbyIgaHJlZj0iJHthLnVybH0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5GbHkgJHsoL15GLS9pLnRlc3Qoai5uYW1lKXx8L15bQUVJT1VdL2kudGVzdChqLm5hbWUpKT8nYW4nOidhJ30gJHtqLm5hbWUuc3BsaXQoJyAnKVswXX08L2E+YDsKICBpZihhLnN0YXRlPT09J2NvbWluZycpcmV0dXJuIGEudXJsP2A8YSBjbGFzcz0iYXYgYXYtc29vbiIgaHJlZj0iJHthLnVybH0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5Db21pbmcgc29vbjwvYT5gOmA8c3BhbiBjbGFzcz0iYXYgYXYtc29vbiI+Q29taW5nIHNvb248L3NwYW4+YDsKICBpZihhLnN0YXRlPT09J3VudGlsJylyZXR1cm4gYDxzcGFuIGNsYXNzPSJhdiBhdi1wYXN0Ij5VbnRpbCAke2EueWVhcn08L3NwYW4+YDsKICByZXR1cm4gYDxzcGFuIGNsYXNzPSJhdiBhdi1uYSI+Tm90IG9mZmVyZWQ8L3NwYW4+YDsKfQpjb25zdCBvcmlnaW5zPVsuLi5uZXcgU2V0KEQubWFwKGo9Pmoub3JpZ2luKSldLnNvcnQoKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZkYXRlJykudGV4dENvbnRlbnQ9bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJyx7ZGF5OidudW1lcmljJyxtb250aDonbG9uZycseWVhcjonbnVtZXJpYyd9KTsKCi8qIGNvbmNlcHQgc3dpdGNoaW5nICovCiQkKCcuY2J0bicpLmZvckVhY2goYj0+Yi5vbmNsaWNrPSgpPT57CiAgJCQoJy5jYnRuJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtiLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICQkKCcuY29uY2VwdCcpLmZvckVhY2gocz0+cy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MtJytiLmRhdGFzZXQuYykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgaWYoYi5kYXRhc2V0LmM9PT0nY2hhcnRzJylzZXRUaW1lb3V0KGRyYXdDaGFydHMsNjApOwogIHdpbmRvdy5zY3JvbGxUbyh7dG9wOjAsYmVoYXZpb3I6J3Ntb290aCd9KTsKfSk7CgovKiAtLS0tLS0tLS0tIENPTkNFUFQgMTogVEFCTEUgLS0tLS0tLS0tLSAqLwpsZXQgdFNvcnQ9e2s6J2tpbGxzJyxkaXI6LTF9LCB0U3RhdHVzPSdhbGwnLCB0T3JpZ2luPScnLCB0UXVlcnk9Jyc7CmNvbnN0IG9TZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcmlnaW4nKTsKb3JpZ2lucy5mb3JFYWNoKG89Pm9TZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLGA8b3B0aW9uIHZhbHVlPSIke299Ij4ke299PC9vcHRpb24+YCkpOwpmdW5jdGlvbiB0Um93cygpewogIGxldCByPUQuZmlsdGVyKGo9Pih0U3RhdHVzPT09J2FsbCd8fGouc3RhdHVzPT09dFN0YXR1cykmJighdE9yaWdpbnx8ai5vcmlnaW49PT10T3JpZ2luKSYmKCF0UXVlcnl8fChqLm5hbWUrai5mdWxsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRRdWVyeSkpKTsKICByLnNvcnQoKGEsYik9PntsZXQgaz10U29ydC5rLHZhPWFba10sdmI9YltrXTtpZihrPT09J25hbWUnfHxrPT09J29yaWdpbid8fGs9PT0nc3RhdHVzJ3x8az09PSdnZW4nKXt2YT0oJycrdmEpO3ZiPSgnJyt2Yik7cmV0dXJuIHZhLmxvY2FsZUNvbXBhcmUodmIpKnRTb3J0LmRpcjt9aWYodmE9PT1JbmZpbml0eSl2YT05OTk5OTtpZih2Yj09PUluZmluaXR5KXZiPTk5OTk5O3JldHVybiAodmEtdmIpKnRTb3J0LmRpcjt9KTsKICByZXR1cm4gcjsKfQpmdW5jdGlvbiByZW5kZXJUYWJsZSgpewogIGNvbnN0IHI9dFJvd3MoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5pbm5lckhUTUw9ci5tYXAoaj0+YDx0ciBkYXRhLWppZD0iJHtqLmlkfSI+CiAgICA8dGQgY2xhc3M9InBob3RvY2VsbCI+JHtqLmltZz9gPGltZyBjbGFzcz0idHRodW1iIiBzcmM9IiR7ai5pbWd9IiBhbHQ9IiIgbG9hZGluZz0ibGF6eSIgb25lcnJvcj0idGhpcy5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nIj5gOic8c3BhbiBjbGFzcz0idHRodW1iIj48L3NwYW4+J308L3RkPjx0ZCBjbGFzcz0ibmFtZWNlbGwiPjxkaXYgY2xhc3M9ImpldG5hbWUiPiR7Q1NBKGoubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iamV0c3ViIj4ke2oucm9sZS5yZXBsYWNlKC8gXC8gL2csJyAvPGJyPicpfTwvZGl2PjwvdGQ+CiAgICA8dGQ+PGRpdiBjbGFzcz0ibWZyIj4ke2oubWZyLnJlcGxhY2UoLyBcLyAvZywnIC88YnI+Jyl9PC9kaXY+JHtqLm9yaWdpbn08L3RkPjx0ZCBjbGFzcz0ibnVtIj4ke2ouZmlyc3RGbGlnaHR9PC90ZD48dGQ+PHNwYW4gY2xhc3M9ImdlbiI+JHtqLmdlbn08L3NwYW4+PC90ZD4KICAgIDx0ZCBjbGFzcz0ibnVtIGsiPiR7ai5rcj9gPHNwYW4gY2xhc3M9InJuZyI+JHtqLmtyfTwvc3Bhbj5gOmoua2lsbHN9PC90ZD48dGQgY2xhc3M9Im51bSBsIj4ke2oubHI\/YDxzcGFuIGNsYXNzPSJybmciPiR7ai5scn08L3NwYW4+YDpqLmxvc3Nlc308L3RkPgogICAgPHRkIGNsYXNzPSJudW0gcnQiPiR7cmF0aW9UeHQoail9JHtqLmVzdD8nPHN1cCBjbGFzcz0iZXN0YXIiPio8L3N1cD4nOicnfTwvdGQ+PHRkPiR7U1RMQUJFTFtqLnN0YXR1c119PC90ZD4KICAgIDx0ZD4ke2F2YWlsSFRNTChqKX08L3RkPjwvdHI+YCkuam9pbignJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rjb3VudCcpLnRleHRDb250ZW50PXIubGVuZ3RoKycgb2YgJytELmxlbmd0aCsnIGFpcmNyYWZ0JzsKICAkJCgnI2p0YWJsZSB0aGVhZCB0aCcpLmZvckVhY2godGg9Pnt0aC5jbGFzc0xpc3QudG9nZ2xlKCdzb3J0ZWQnLHRoLmRhdGFzZXQuayYmdGguZGF0YXNldC5rPT09dFNvcnQuayk7fSk7Cn0KJCQoJyNqdGFibGUgdGhlYWQgdGgnKS5mb3JFYWNoKHRoPT50aC5vbmNsaWNrPSgpPT57Y29uc3Qgaz10aC5kYXRhc2V0Lms7aWYoIWspcmV0dXJuO2lmKHRTb3J0Lms9PT1rKXRTb3J0LmRpcio9LTE7ZWxzZXt0U29ydC5rPWs7dFNvcnQuZGlyPShrPT09J25hbWUnfHxrPT09J29yaWdpbicpPzE6LTE7fXJlbmRlclRhYmxlKCk7fSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0c2VhcmNoJykub25pbnB1dD1lPT57dFF1ZXJ5PWUudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7cmVuZGVyVGFibGUoKTt9OwpvU2VsLm9uY2hhbmdlPWU9Pnt0T3JpZ2luPWUudGFyZ2V0LnZhbHVlO3JlbmRlclRhYmxlKCk7fTsKJCQoJyNjLXRhYmxlIC5jaGlwJykuZm9yRWFjaChjPT5jLm9uY2xpY2s9KCk9PnskJCgnI2MtdGFibGUgLmNoaXAnKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnb24nKSk7Yy5jbGFzc0xpc3QuYWRkKCdvbicpO3RTdGF0dXM9Yy5kYXRhc2V0LnN0YXR1cztyZW5kZXJUYWJsZSgpO30pOwpyZW5kZXJUYWJsZSgpOwoKLyogLS0tLS0tLS0tLSBDT05DRVBUIDI6IENIQVJUUyAtLS0tLS0tLS0tICovCmxldCBjaGFydEZpbHRlcj0ncHJvdmVuJywgY2hhcnRzPXt9LCBjaGFydERlZmF1bHRzU2V0PWZhbHNlOwpmdW5jdGlvbiBjRGF0YSgpe3JldHVybiBjaGFydEZpbHRlcj09PSdwcm92ZW4nP0QuZmlsdGVyKGo9Pmoua2lsbHM+MHx8ai5sb3NzZXM+MCk6RC5zbGljZSgpO30KZnVuY3Rpb24gZHJhd0NoYXJ0cygpewogIGlmKHR5cGVvZiBDaGFydD09PSd1bmRlZmluZWQnKXsKICAgIGlmKChkcmF3Q2hhcnRzLl90PShkcmF3Q2hhcnRzLl90fHwwKSsxKTw2MCl7c2V0VGltZW91dChkcmF3Q2hhcnRzLDIwMCk7cmV0dXJuO30KICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjLWNoYXJ0cyAuY2FudmFzLWhvbGRlcicpLmZvckVhY2goaD0+e2lmKCFoLnF1ZXJ5U2VsZWN0b3IoJy5jZXJyJykpaC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImNlcnIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoyMHB4Ij5DaGFydCBsaWJyYXJ5IHN0aWxsIGxvYWRpbmcg4oCUIGNoZWNrIHlvdXIgY29ubmVjdGlvbiBhbmQgcmVvcGVuIHRoaXMgdGFiLjwvZGl2PicpO30pOwogICAgcmV0dXJuOwogIH0KICBkcmF3Q2hhcnRzLl90PTA7CiAgaWYoIWNoYXJ0RGVmYXVsdHNTZXQpe0NoYXJ0LmRlZmF1bHRzLmNvbG9yPScjNWE2MDY5JztDaGFydC5kZWZhdWx0cy5mb250LmZhbWlseT0iJ0dpbHJveSByZWd1bGFyJyxzYW5zLXNlcmlmIjtDaGFydC5kZWZhdWx0cy5ib3JkZXJDb2xvcj0nI2VkZWRmMCc7Y2hhcnREZWZhdWx0c1NldD10cnVlO30KICBPYmplY3QudmFsdWVzKGNoYXJ0cykuZm9yRWFjaChjPT5jJiZjLmRlc3Ryb3koKSk7CiAgY29uc3QgYmFzZT1jRGF0YSgpOwogIC8vIEtpbGxzCiAgY29uc3QgYnlLPVsuLi5iYXNlXS5zb3J0KChhLGIpPT5iLmtpbGxzLWEua2lsbHMpLnNsaWNlKDAsMTUpOwogIGNoYXJ0cy5rPW5ldyBDaGFydCgkKCcjY2hLaWxscycpLHt0eXBlOidiYXInLGRhdGE6e2xhYmVsczpieUsubWFwKGo9PmoubmFtZSksZGF0YXNldHM6W3tkYXRhOmJ5Sy5tYXAoaj0+ai5raWxscyksYmFja2dyb3VuZENvbG9yOicjMTQxNDE0Jyxib3JkZXJSYWRpdXM6MH1dfSxvcHRpb25zOntpbmRleEF4aXM6J3knLHBsdWdpbnM6e2xlZ2VuZDp7ZGlzcGxheTpmYWxzZX19LHNjYWxlczp7eDp7Z3JpZDp7Y29sb3I6JyNlZGVkZjAnfX0seTp7Z3JpZDp7ZGlzcGxheTpmYWxzZX19fSxtYWludGFpbkFzcGVjdFJhdGlvOmZhbHNlfX0pOwogIC8vIFJhdGlvIChraWxscz49NSwgbG9zc2VzIGNvbnNpZGVyZWQpCiAgY29uc3QgYnlSPUQuZmlsdGVyKGo9Pmoua2lsbHM+PTUpLm1hcChqPT4oe246ai5uYW1lLHI6ai5yYXRpbz09PUluZmluaXR5P2oua2lsbHM6ai5yYXRpbyxpbmY6ai5yYXRpbz09PUluZmluaXR5fSkpLnNvcnQoKGEsYik9PmIuci1hLnIpLnNsaWNlKDAsMTIpOwogIGNoYXJ0cy5yPW5ldyBDaGFydCgkKCcjY2hSYXRpbycpLHt0eXBlOidiYXInLGRhdGE6e2xhYmVsczpieVIubWFwKHg9PngubiksZGF0YXNldHM6W3tkYXRhOmJ5Ui5tYXAoeD0+eC5yKSxiYWNrZ3JvdW5kQ29sb3I6YnlSLm1hcCh4PT54LmluZj8nIzEyN2EzZic6JyMxNDE0MTQnKSxib3JkZXJSYWRpdXM6MH1dfSxvcHRpb25zOntpbmRleEF4aXM6J3knLHBsdWdpbnM6e2xlZ2VuZDp7ZGlzcGxheTpmYWxzZX0sdG9vbHRpcDp7Y2FsbGJhY2tzOntsYWJlbDpjPT57Y29uc3QgeD1ieVJbYy5kYXRhSW5kZXhdO3JldHVybiB4LmluZj8nVW5kZWZlYXRlZCAoJyt4LnIrJyBraWxscywgMCBsb3NzZXMpJzp4LnIudG9GaXhlZCgxKSsnOjEnO319fX0sc2NhbGVzOnt4OntncmlkOntjb2xvcjonI2VkZWRmMCd9fSx5OntncmlkOntkaXNwbGF5OmZhbHNlfX19LG1haW50YWluQXNwZWN0UmF0aW86ZmFsc2V9fSk7CiAgLy8gU2NhdHRlcgogIGNoYXJ0cy5zPW5ldyBDaGFydCgkKCcjY2hTY2F0dGVyJykse3R5cGU6J2J1YmJsZScsZGF0YTp7ZGF0YXNldHM6YmFzZS5tYXAoaj0+KHtsYWJlbDpqLm5hbWUsZGF0YTpbe3g6ai5raWxscyx5OmoubG9zc2VzLHI6TWF0aC5tYXgoNSxNYXRoLnNxcnQoai50b3RhbCkqMS42KX1dLGJhY2tncm91bmRDb2xvcjpqLnN0YXR1cz09PSdwcm92ZW4nPydyZ2JhKDIwLDIwLDIwLC43MiknOihqLnN0YXR1cz09PSdzdHJpa2UnPydyZ2JhKDEyMCwxMjYsMTM0LC42KSc6J3JnYmEoMTkwLDE5NCwyMDAsLjc1KScpLGJvcmRlckNvbG9yOicjZmZmJ30pKX0sb3B0aW9uczp7cGx1Z2luczp7bGVnZW5kOntkaXNwbGF5OmZhbHNlfSx0b29sdGlwOntjYWxsYmFja3M6e2xhYmVsOmM9Pntjb25zdCBqPWJhc2VbYy5kYXRhc2V0SW5kZXhdO3JldHVybiBgJHtqLm5hbWV9OiAke2oua2lsbHN9IGtpbGxzLCAke2oubG9zc2VzfSBsb3NzZXNgO319fX0sc2NhbGVzOnt4Ont0aXRsZTp7ZGlzcGxheTp0cnVlLHRleHQ6J0Fpci10by1haXIga2lsbHMnfSxncmlkOntjb2xvcjonI2VkZWRmMCd9fSx5Ont0aXRsZTp7ZGlzcGxheTp0cnVlLHRleHQ6J0Fpci10by1haXIgbG9zc2VzJ30sZ3JpZDp7Y29sb3I6JyNlZGVkZjAnfX19LG1haW50YWluQXNwZWN0UmF0aW86ZmFsc2V9fSk7Cn0KJCQoJyNjLWNoYXJ0cyAuY2hpcCcpLmZvckVhY2goYz0+Yy5vbmNsaWNrPSgpPT57JCQoJyNjLWNoYXJ0cyAuY2hpcCcpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpKTtjLmNsYXNzTGlzdC5hZGQoJ29uJyk7Y2hhcnRGaWx0ZXI9Yy5kYXRhc2V0LmNmO2RyYXdDaGFydHMoKTt9KTsKCi8qIC0tLS0tLS0tLS0gQ09OQ0VQVCAzOiBDQVJEUyAtLS0tLS0tLS0tICovCmNvbnN0IGNPU2VsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3JpZ2luJyk7Cm9yaWdpbnMuZm9yRWFjaChvPT5jT1NlbC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsYDxvcHRpb24gdmFsdWU9IiR7b30iPiR7b308L29wdGlvbj5gKSk7CmxldCBjUXVlcnk9JycsY09yaWdpbj0nJzsKZnVuY3Rpb24gcmVuZGVyQ2FyZHMoKXsKICBjb25zdCByPUQuZmlsdGVyKGo9PighY09yaWdpbnx8ai5vcmlnaW49PT1jT3JpZ2luKSYmKCFjUXVlcnl8fChqLm5hbWUrai5mdWxsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGNRdWVyeSkpKQogICAgLnNvcnQoKGEsYik9PmIua2lsbHMtYS5raWxscyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhcmRncmlkJykuaW5uZXJIVE1MPXIubWFwKGo9PmA8ZGl2IGNsYXNzPSJqZXRjYXJkIiBkYXRhLWlkPSIke2ouaWR9Ij4KICAgICR7cGhvdG9CbG9jayhqLCdwaG90bycsYDxzcGFuIGNsYXNzPSJndGFnIj4ke2ouZ2VufSBnZW4gwrcgJHtmbGFnKGoub3JpZ2luKX0gJHtqLm9yaWdpbn08L3NwYW4+YCl9CiAgICA8ZGl2IGNsYXNzPSJjYm9keSI+CiAgICAgIDxoMz4ke2oubmFtZX08L2gzPjxkaXYgY2xhc3M9Im9yZyI+JHtqLnJvbGV9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN0YXRzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0Ij48ZGl2IGNsYXNzPSJ2IGsiPiR7ai5rcj9gPHNwYW4gY2xhc3M9InJuZyI+JHtqLmtyfTwvc3Bhbj5gOmoua2lsbHN9PC9kaXY+PGRpdiBjbGFzcz0ibGIiPktpbGxzPC9kaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhdCI+PGRpdiBjbGFzcz0idiBsIj4ke2oubHI\/YDxzcGFuIGNsYXNzPSJybmciPiR7ai5scn08L3NwYW4+YDpqLmxvc3Nlc308L2Rpdj48ZGl2IGNsYXNzPSJsYiI+TG9zc2VzPC9kaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhdCI+PGRpdiBjbGFzcz0idiI+JHtyYXRpb1R4dChqKX08L2Rpdj48ZGl2IGNsYXNzPSJsYiI+UmF0aW88L2Rpdj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhdmFpbCI+PHNwYW4+TWlHRmx1Zzwvc3Bhbj4ke2F2YWlsSFRNTChqKX08L2Rpdj4KICAgIDwvZGl2PjwvZGl2PmApLmpvaW4oJycpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjY291bnQnKS50ZXh0Q29udGVudD1yLmxlbmd0aCsnIGFpcmNyYWZ0JzsKICAkJCgnLmpldGNhcmQnKS5mb3JFYWNoKGM9PmMub25jbGljaz1lPT57aWYoZS50YXJnZXQuY2xvc2VzdCgnLmF2JykpcmV0dXJuO29wZW5Nb2RhbCgrYy5kYXRhc2V0LmlkKTt9KTsKfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3NlYXJjaCcpLm9uaW5wdXQ9ZT0+e2NRdWVyeT1lLnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO3JlbmRlckNhcmRzKCk7fTsKY09TZWwub25jaGFuZ2U9ZT0+e2NPcmlnaW49ZS50YXJnZXQudmFsdWU7cmVuZGVyQ2FyZHMoKTt9OwpyZW5kZXJDYXJkcygpOwoKZnVuY3Rpb24gb3Blbk1vZGFsKGlkKXsKICBjb25zdCBqPURbaWRdOwogICQoJyNtYm94JykuaW5uZXJIVE1MPWAke3Bob3RvQmxvY2soaiwnbXBob3RvJyxgPGJ1dHRvbiBjbGFzcz0ibWNsb3NlIiBvbmNsaWNrPSJjbG9zZU1vZGFsKCkiPsOXPC9idXR0b24+YCl9CiAgICA8ZGl2IGNsYXNzPSJtaGVhZCI+CiAgICA8ZGl2IGNsYXNzPSJndGFnIj4ke2ouZ2VufSBnZW4gwrcgJHtmbGFnKGoub3JpZ2luKX0gJHtqLm9yaWdpbn0gwrcgZmlyc3QgZmxpZ2h0ICR7ai5maXJzdEZsaWdodH0ke2oucmV0aXJlZD8nIMK3IHJldGlyZWQnOicnfTwvZGl2PgogICAgPGgzPiR7ai5uYW1lfTwvaDM+PGRpdiBjbGFzcz0ib3JnIj4ke2ouZnVsbH0g4oCUICR7ai5yb2xlfTwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWF2YWlsIj48c3BhbiBjbGFzcz0ibWF2YWlsLWwiPkF2YWlsYWJsZSB3aXRoIE1pR0ZsdWc8L3NwYW4+JHthdmFpbEhUTUwoail9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtc3RhdHMiPgogICAgICA8ZGl2IGNsYXNzPSJzIj48ZGl2IGNsYXNzPSJ2IGsiPiR7ai5rcj9gPHNwYW4gY2xhc3M9InJuZyI+JHtqLmtyfTwvc3Bhbj5gOmoua2lsbHN9PC9kaXY+PGRpdiBjbGFzcz0ibGIiPkEyQSBraWxsczwvZGl2PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzIj48ZGl2IGNsYXNzPSJ2IGwiPiR7ai5scj9gPHNwYW4gY2xhc3M9InJuZyI+JHtqLmxyfTwvc3Bhbj5gOmoubG9zc2VzfTwvZGl2PjxkaXYgY2xhc3M9ImxiIj5BMkEgbG9zc2VzPC9kaXY+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InMiPjxkaXYgY2xhc3M9InYiPiR7cmF0aW9UeHQoail9PC9kaXY+PGRpdiBjbGFzcz0ibGIiPktpbGwgcmF0aW88L2Rpdj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icyI+PGRpdiBjbGFzcz0idiIgc3R5bGU9ImNvbG9yOnZhcigtLWdyZXl0eCkiPiR7ai5ncm91bmR9PC9kaXY+PGRpdiBjbGFzcz0ibGIiPkdyb3VuZCBsb3NzZXM8L2Rpdj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWJvZHkiPgogICAgICA8ZGl2IGNsYXNzPSJub3RlIj48Yj4ke2ouZmFtb3VzfTwvYj48L2Rpdj4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MThweCI+JHtqLm5vdGV9PC9wPgogICAgICA8aDQ+Q29tYmF0IGhpc3RvcnkgYnkgY29uZmxpY3Q8L2g0PgogICAgICAke2ouY29uZmxpY3RzLm1hcChjPT5gPGRpdiBjbGFzcz0iY29uZmxpY3QiPjxkaXYgY2xhc3M9InlyIj4ke2MueXJ9PC9kaXY+PGRpdiBjbGFzcz0iY3ciPjxkaXYgY2xhc3M9ImNuIj4ke2Mubn0gPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKTtmb250LXdlaWdodDo1MDAiPsK3ICR7Yy5uYXRpb259PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNkIj4ke2MuZH08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjayI+PHNwYW4gY2xhc3M9ImsiPiR7Yy5rfTwvc3Bhbj4gLyA8c3BhbiBjbGFzcz0ibCI+JHtjLmx9PC9zcGFuPjwvZGl2PjwvZGl2PmApLmpvaW4oJycpfQogICAgJHtDU1JFQyhqLm5hbWUpfTwvZGl2PmA7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwp9CmZ1bmN0aW9uIGNsb3NlTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7fQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwnKS5vbmNsaWNrPWU9PntpZihlLnRhcmdldC5pZD09PSdtb2RhbCcpY2xvc2VNb2RhbCgpO307CmZ1bmN0aW9uIG9wZW5JbWcoc3JjLG5hbWUpe3ZhciBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZmNzLWxiJyk7aWYoIW8pe289ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7by5pZD0nbWZjcy1sYic7by5zdHlsZS5jc3NUZXh0PSdwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOTIpO2Rpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDo5OTk5OTtjdXJzb3I6em9vbS1vdXQ7cGFkZGluZzoyNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveCc7by5vbmNsaWNrPWNsb3NlSW1nO3ZhciBpbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtpbS5pZD0nbWZjcy1sYi1pbWcnO2ltLnN0eWxlLmNzc1RleHQ9J21heC13aWR0aDo5MnZ3O21heC1oZWlnaHQ6ODR2aDtvYmplY3QtZml0OmNvbnRhaW47ZGlzcGxheTpibG9jayc7dmFyIGNwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2NwLmlkPSdtZmNzLWxiLWNhcCc7Y3Auc3R5bGUuY3NzVGV4dD0nY29sb3I6I2ZmZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjAyZW07bWFyZ2luLXRvcDoxNnB4O3RleHQtYWxpZ246Y2VudGVyJztvLmFwcGVuZENoaWxkKGltKTtvLmFwcGVuZENoaWxkKGNwKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pO31vLnF1ZXJ5U2VsZWN0b3IoJyNtZmNzLWxiLWltZycpLnNyYz1zcmM7by5xdWVyeVNlbGVjdG9yKCcjbWZjcy1sYi1jYXAnKS50ZXh0Q29udGVudD1uYW1lO28uc3R5bGUuZGlzcGxheT0nZmxleCc7fQpmdW5jdGlvbiBjbG9zZUltZygpe3ZhciBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZmNzLWxiJyk7aWYobylvLnN0eWxlLmRpc3BsYXk9J25vbmUnO30KZnVuY3Rpb24gYmlnU3JjKHUpe3ZhciBpPXUubGFzdEluZGV4T2YoJ3B4LScpO2lmKGk8MSlyZXR1cm4gdTt2YXIgcz11Lmxhc3RJbmRleE9mKCcvJyxpKTtpZihzPDApcmV0dXJuIHU7cmV0dXJuIHUuc2xpY2UoMCxzKzEpKycxMjgwJyt1LnNsaWNlKGkpO30KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rib2R5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmNsb3Nlc3QoJy50dGh1bWInKTtpZighdHx8IXQuZ2V0QXR0cmlidXRlKCdzcmMnKSlyZXR1cm47dmFyIHRyPXQuY2xvc2VzdCgndHInKTt2YXIgbm09dHImJnRyLnF1ZXJ5U2VsZWN0b3IoJy5qZXRuYW1lJyk7dmFyIHJsPXRyJiZ0ci5xdWVyeVNlbGVjdG9yKCcuamV0c3ViJyk7b3BlbkltZyhiaWdTcmModC5zcmMpLChubT9ubS50ZXh0Q29udGVudC50cmltKCk6JycpKyhybD8nIOKAlCAnK3JsLnRleHRDb250ZW50LnRyaW0oKTonJykpO30pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxlPT57aWYoZS5rZXk9PT0nRXNjYXBlJyl7Y2xvc2VNb2RhbCgpO2Nsb3NlSW1nKCk7fX0pOwoKLyogLS0tLS0tLS0tLSBDT05DRVBUIDQ6IENPTVBBUkUgLS0tLS0tLS0tLSAqLwpjb25zdCBzZWxBPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbXBBJyksc2VsQj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21wQicpOwpELnNsaWNlKCkuc29ydCgoYSxiKT0+YS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSkuZm9yRWFjaChqPT57CiAgc2VsQS5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsYDxvcHRpb24gdmFsdWU9IiR7ai5pZH0iPiR7ZmxhZyhqLm9yaWdpbil9ICR7ai5uYW1lfTwvb3B0aW9uPmApOwogIHNlbEIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLGA8b3B0aW9uIHZhbHVlPSIke2ouaWR9Ij4ke2ZsYWcoai5vcmlnaW4pfSAke2oubmFtZX08L29wdGlvbj5gKTsKfSk7CnNlbEEudmFsdWU9RC5maW5kSW5kZXgoaj0+ai5uYW1lPT09J0YtMTUgRWFnbGUnKTsKc2VsQi52YWx1ZT1ELmZpbmRJbmRleChqPT5qLm5hbWU9PT0nTWlHLTI5IEZ1bGNydW0nKTsKZnVuY3Rpb24gY21wUm93KGxhYmVsLGEsYixmbXQsbG93ZXJCZXR0ZXIpewogIGNvbnN0IG14PU1hdGgubWF4KGEsYiwxKTsKICBjb25zdCBmPWZtdHx8KHg9PngpOwogIGNvbnN0IGF3PWxvd2VyQmV0dGVyPyhhPGIpOihhPmIpLCBidz1sb3dlckJldHRlcj8oYjxhKTooYj5hKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImNtcC1yb3ciPgogICAgPGRpdiBjbGFzcz0iY21wLWJhciBsZWZ0Ij48ZGl2IGNsYXNzPSJmaWxsIiBzdHlsZT0id2lkdGg6JHsoYS9teCo4Nil9JSI+PC9kaXY+PHNwYW4gY2xhc3M9ImJ2ICR7YXc\/J3dpbic6Jyd9IiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4Ij4ke2YoYSl9PC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY21wLWxiIj4ke2xhYmVsfTwvZGl2PgogICAgPGRpdiBjbGFzcz0iY21wLWJhciByaWdodCI+PGRpdiBjbGFzcz0iZmlsbCIgc3R5bGU9IndpZHRoOiR7KGIvbXgqODYpfSUiPjwvZGl2PjxzcGFuIGNsYXNzPSJidiAke2J3Pyd3aW4nOicnfSIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHgiPiR7ZihiKX08L3NwYW4+PC9kaXY+CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiByZW5kZXJDb21wYXJlKCl7CiAgY29uc3QgYT1EWytzZWxBLnZhbHVlXSxiPURbK3NlbEIudmFsdWVdOwogIGNvbnN0IHJyPWo9PmoucmF0aW89PT1JbmZpbml0eT85OTpqLnJhdGlvOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbXBCb2FyZCcpLmlubmVySFRNTD1gCiAgICA8ZGl2IGNsYXNzPSJjbXAtdG9wIj4KICAgICAgPGRpdiBjbGFzcz0iY21wLXNpZGUiPiR7cGhvdG9CbG9jayhhLCdjbXAtcGhvdG8nKX08ZGl2IGNsYXNzPSJndGFnIj4ke2ZsYWcoYS5vcmlnaW4pfSAke2Eub3JpZ2lufSDCtyAke2EuZ2VufSBnZW48L2Rpdj48aDM+JHtDU0EoYS5uYW1lKX08L2gzPjxkaXYgY2xhc3M9Im9yZyI+JHthLnJvbGV9IMK3IGZpcnN0IGZsaWdodCAke2EuZmlyc3RGbGlnaHR9PC9kaXY+PGRpdiBjbGFzcz0iY2F2Ij4ke2F2YWlsSFRNTChhKX08L2Rpdj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY21wLXNpZGUiPiR7cGhvdG9CbG9jayhiLCdjbXAtcGhvdG8nKX08ZGl2IGNsYXNzPSJndGFnIj4ke2ZsYWcoYi5vcmlnaW4pfSAke2Iub3JpZ2lufSDCtyAke2IuZ2VufSBnZW48L2Rpdj48aDM+JHtDU0EoYi5uYW1lKX08L2gzPjxkaXYgY2xhc3M9Im9yZyI+JHtiLnJvbGV9IMK3IGZpcnN0IGZsaWdodCAke2IuZmlyc3RGbGlnaHR9PC9kaXY+PGRpdiBjbGFzcz0iY2F2Ij4ke2F2YWlsSFRNTChiKX08L2Rpdj48L2Rpdj4KICAgIDwvZGl2PgogICAgJHtjbXBSb3coJ0EyQSBLaWxscycsYS5raWxscyxiLmtpbGxzKX0KICAgICR7Y21wUm93KCdBMkEgTG9zc2VzJyxhLmxvc3NlcyxiLmxvc3NlcyxudWxsLHRydWUpfQogICAgJHtjbXBSb3coJ0tpbGwgcmF0aW8nLHJyKGEpLHJyKGIpLHg9Png9PT05OT8n4oieJzooeD09PTA\/J+KAlCc6eC50b0ZpeGVkKDEpKSl9CiAgICAke2NtcFJvdygnR3JvdW5kIGxvc3NlcycsYS5ncm91bmQsYi5ncm91bmQsbnVsbCx0cnVlKX0KICAgICR7Y21wUm93KCdUb3RhbCBlbmdhZ2VtZW50cycsYS50b3RhbCxiLnRvdGFsKX0KICAgICR7ZW5nYWdlSFRNTChhLGIpfQogICAgPGRpdiBjbGFzcz0iY21wLXJvdyIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZToxNy41cHg7bGluZS1oZWlnaHQ6MS41Ij4KICAgICAgPGRpdj4ke2EubmFtZX06ICR7YS5mYW1vdXN9PGJyPjxicj4ke2IubmFtZX06ICR7Yi5mYW1vdXN9PC9kaXY+CiAgICA8L2Rpdj5gOwp9CmZ1bmN0aW9uIGVuZ2FnZUhUTUwoYSxiKXsKICBpZihhLmlkPT09Yi5pZClyZXR1cm4nJzsKICBjb25zdCBtPWZpbmRNYXRjaHVwKGEsYik7CiAgaWYoIW0pcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbmdhZ2Ugbm9uZSI+PGRpdiBjbGFzcz0iZW0iPk5vIGRvY3VtZW50ZWQgYWlyLXRvLWFpciBlbmdhZ2VtZW50cyBiZXR3ZWVuIHRoZSA8Yj4ke2EubmFtZX08L2I+IGFuZCB0aGUgPGI+JHtiLm5hbWV9PC9iPi48L2Rpdj48L2Rpdj5gOwogIGNvbnN0IGF3PShtLmFTY29yZT09PScwJyYmbS5iU2NvcmUhPT0nMCcpLCBidz0obS5iU2NvcmU9PT0nMCcmJm0uYVNjb3JlIT09JzAnKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImVuZ2FnZSI+CiAgICA8ZGl2IGNsYXNzPSJlaCI+4pqUIFdoZW4gdGhleSBhY3R1YWxseSBtZXQgJHttLmRpc3B1dGVkPyc8c3BhbiBjbGFzcz0iZGlzcCI+Y29udGVzdGVkPC9zcGFuPic6Jyd9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJlYyI+JHttLmNvbmZsaWN0fSDCtyAke20ueWVhcnN9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzY29yZSI+CiAgICAgIDxkaXYgY2xhc3M9InN2IHNMICR7Ync\/J3dpbjInOicnfSI+JHttLmFTY29yZX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZGFzaCI+4oCTPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN2IHNSICR7YXc\/J3dpbjInOicnfSI+JHttLmJTY29yZX08L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZXN1bSI+JHttLnN1bW1hcnl9PC9kaXY+JHttLm14P2A8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE0cHgiPjxhIGhyZWY9Ii9maWdodGVyLWFpcmNyYWZ0LWNvbWJhdC1zdGF0aXN0aWNzLyR7bXNsdWcobS5teCl9LXZzLSR7bXNsdWcobS5teSl9LyIgc3R5bGU9ImNvbG9yOiM1QzkxRkY7Zm9udC13ZWlnaHQ6ODAwO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxM3B4O2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+T3BlbiB0aGUgZnVsbCAke20ubXh9IHZzICR7bS5teX0gcGFnZTwvYT48L2Rpdj5gOicnfQogIDwvZGl2PmA7Cn0Kc2VsQS5vbmNoYW5nZT1yZW5kZXJDb21wYXJlO3NlbEIub25jaGFuZ2U9cmVuZGVyQ29tcGFyZTsKcmVuZGVyQ29tcGFyZSgpOwoKLyogLS0tLS0tLS0tLSBTVEFUIFRPT0xUSVAgKGhvdmVyIHN0b3J5KSAtLS0tLS0tLS0tICovCihmdW5jdGlvbigpewogIHZhciB0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dGlwLmlkPSdtZmNzLXRpcCc7CiAgdGlwLnN0eWxlLmNzc1RleHQ9J3Bvc2l0aW9uOmZpeGVkO2Rpc3BsYXk6bm9uZTt6LWluZGV4Ojk5OTk4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMGQxMTE3O2JvcmRlcjoxcHggc29saWQgIzBkMTExNztwYWRkaW5nOjEwcHggMTJweDttYXgtd2lkdGg6MzQwcHg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjQ1O2JveC1zaGFkb3c6MCA0cHggMThweCByZ2JhKDEzLDE3LDIzLC4xNCk7cG9pbnRlci1ldmVudHM6bm9uZTtmb250LWZhbWlseTppbmhlcml0JzsKICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRpcCk7CiAgdmFyIHRiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ym9keScpOwogIGlmKCF0YilyZXR1cm47CiAgZnVuY3Rpb24gbW92ZShlKXt2YXIgeD1NYXRoLm1pbihlLmNsaWVudFgrMTYsd2luZG93LmlubmVyV2lkdGgtMzY0KTt2YXIgeT1lLmNsaWVudFkrMTg7aWYoeSt0aXAub2Zmc2V0SGVpZ2h0PndpbmRvdy5pbm5lckhlaWdodC0xMCl7eT1lLmNsaWVudFktdGlwLm9mZnNldEhlaWdodC0xNDt9dGlwLnN0eWxlLmxlZnQ9TWF0aC5tYXgoOCx4KSsncHgnO3RpcC5zdHlsZS50b3A9TWF0aC5tYXgoOCx5KSsncHgnO30KICB0Yi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLGZ1bmN0aW9uKGUpewogICAgdmFyIHRkPWUudGFyZ2V0LmNsb3Nlc3QoJ3RkLmssdGQubCx0ZC5ydCcpOwogICAgaWYoIXRkKXt0aXAuc3R5bGUuZGlzcGxheT0nbm9uZSc7cmV0dXJuO30KICAgIHZhciB0cj1lLnRhcmdldC5jbG9zZXN0KCd0cltkYXRhLWppZF0nKTtpZighdHIpcmV0dXJuOwogICAgdmFyIGo9RFsrdHIuZ2V0QXR0cmlidXRlKCdkYXRhLWppZCcpXTtpZighanx8IWoubm90ZSlyZXR1cm47CiAgICB0aXAuaW5uZXJIVE1MPSc8YiBzdHlsZT0iZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjRweCI+JytqLm5hbWUrJyDigJQgdGhlIHN0b3J5IGJlaGluZCB0aGUgbnVtYmVyczwvYj4nK2oubm90ZTsKICAgIHRpcC5zdHlsZS5kaXNwbGF5PSdibG9jayc7bW92ZShlKTsKICB9KTsKICB0Yi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLGZ1bmN0aW9uKGUpe2lmKHRpcC5zdHlsZS5kaXNwbGF5PT09J2Jsb2NrJyltb3ZlKGUpO30pOwogIHRiLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7dGlwLnN0eWxlLmRpc3BsYXk9J25vbmUnO30pOwp9KSgpOw==\"><\/div>\n<p><script>(function(){var el=document.getElementById(\"mfcs-data\");var js=decodeURIComponent(escape(atob(el.getAttribute(\"data-js\"))));var sc=document.createElement(\"script\");sc.text=\"(function(){\"+js+\";window.closeModal=closeModal;window.openModal=openModal;})();\";document.body.appendChild(sc);})();<\/script><section id=\"faq\" class=\"mfcs-faq\">\n<h2>Frequently asked questions<\/h2>\n<details open>\n<summary>How are air-to-air kills and losses counted in this database?<\/summary>\n<div class=\"a\">Every figure counts confirmed aerial victories against manned aircraft, credited by the operating air force and cross-checked across published sources. Where historians dispute a tally we show a visible range instead of a single number, and aircraft destroyed on the ground are tracked separately from air-to-air losses.<\/div>\n<\/details>\n<details>\n<summary>Which fighter jet has the best air-to-air kill ratio?<\/summary>\n<div class=\"a\">The F-15 Eagle is the most-cited undefeated jet \u2014 over 100 air-to-air victories for no confirmed air-to-air losses. Sort the kill-ratio column to compare every jet in the table yourself.<\/div>\n<\/details>\n<details>\n<summary>Which jet scored the most air-to-air victories?<\/summary>\n<div class=\"a\">In the jet age the Korean-War MiG-15 and F-86 Sabre amassed the largest tallies, while the F-15 Eagle later built the most famous undefeated record with more than 100 kills. Sort the kills column to see the full order.<\/div>\n<\/details>\n<details>\n<summary>Are these combat figures confirmed or estimated?<\/summary>\n<div class=\"a\">Most are confirmed and officially credited. Contested tallies are shown as ranges rather than a single number, a handful of estimated entries are marked with an asterisk, and recent 2022\u20132026 combat figures are credited but still firming up.<\/div>\n<\/details>\n<details>\n<summary>Can I compare two specific jets head-to-head?<\/summary>\n<div class=\"a\">Yes. Every documented jet-vs-jet engagement has its own comparison page \u2014 confirmed kills, losses, kill ratio and the story of when the two actually met in combat. Open any aircraft to follow its head-to-head links.<\/div>\n<\/details>\n<details>\n<summary>What is the difference between this page and the all-eras database?<\/summary>\n<div class=\"a\">This page covers the 42 jet-age fighters, from the MiG-15 to the Su-57. The companion <a href=\"\/fighter-aircraft-combat-statistics\/\">Fighter Aircraft Combat Statistics<\/a> database extends the same figures back through World War II, World War I and the biplane era \u2014 90 aircraft in all.<\/div>\n<\/details>\n<details>\n<summary>Can I fly a fighter jet myself?<\/summary>\n<div class=\"a\">Yes \u2014 MiGFlug flies civilians in real fighter jets. See the available aircraft, locations and prices at <a href=\"\/flights-prices\/\">migflug.com\/flights-prices<\/a>.<\/div>\n<\/details>\n<\/section>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How are air-to-air kills and losses counted in this database?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Every figure counts confirmed aerial victories against manned aircraft, credited by the operating air force and cross-checked across published sources. Where historians dispute a tally we show a visible range instead of a single number, and aircraft destroyed on the ground are tracked separately from air-to-air losses.\"}},{\"@type\":\"Question\",\"name\":\"Which fighter jet has the best air-to-air kill ratio?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The F-15 Eagle is the most-cited undefeated jet \u2014 over 100 air-to-air victories for no confirmed air-to-air losses. Sort the kill-ratio column to compare every jet in the table yourself.\"}},{\"@type\":\"Question\",\"name\":\"Which jet scored the most air-to-air victories?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In the jet age the Korean-War MiG-15 and F-86 Sabre amassed the largest tallies, while the F-15 Eagle later built the most famous undefeated record with more than 100 kills. Sort the kills column to see the full order.\"}},{\"@type\":\"Question\",\"name\":\"Are these combat figures confirmed or estimated?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Most are confirmed and officially credited. Contested tallies are shown as ranges rather than a single number, a handful of estimated entries are marked with an asterisk, and recent 2022\u20132026 combat figures are credited but still firming up.\"}},{\"@type\":\"Question\",\"name\":\"Can I compare two specific jets head-to-head?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Every documented jet-vs-jet engagement has its own comparison page \u2014 confirmed kills, losses, kill ratio and the story of when the two actually met in combat. Open any aircraft to follow its head-to-head links.\"}},{\"@type\":\"Question\",\"name\":\"What is the difference between this page and the all-eras database?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"This page covers the 42 jet-age fighters, from the MiG-15 to the Su-57. The companion Fighter Aircraft Combat Statistics database extends the same figures back through World War II, World War I and the biplane era \u2014 90 aircraft in all.\"}},{\"@type\":\"Question\",\"name\":\"Can I fly a fighter jet myself?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes \u2014 MiGFlug flies civilians in real fighter jets. See the available aircraft, locations and prices at migflug.com\/flights-prices.\"}}]}<\/script><\/div>\n","protected":false},"excerpt":{"rendered":"<p>MiGFlug \u00b7 Fighter Jet Combat Records Combat Statistics for Every Fighter Jet in Service The air-to-air record of 42 fighter jets, from the MiG-15 to the F-35 and Su-57 \u2014 every confirmed kill and loss, cross-checked and sourced. Sort the full table, explore the charts, open a detail card for any aircraft, or put two [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"editor_notices":[],"footnotes":""},"class_list":["post-15995","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug<\/title>\n<meta name=\"description\" content=\"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/migflug.com\/ar\/fighter-jet-combat-statistics\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug\" \/>\n<meta property=\"og:description\" content=\"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/migflug.com\/ar\/fighter-jet-combat-statistics\/\" \/>\n<meta property=\"og:site_name\" content=\"MiGFlug\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MiGFlug\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-23T15:14:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ml5psubhxdln.i.optimole.com\/cb:78--.b845\/w:auto\/h:auto\/q:96\/f:best\/https:\/\/migflug.com\/wp-content\/uploads\/2026\/06\/migflug-share-1200x630-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@migflug\" \/>\n<meta name=\"twitter:label1\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/migflug.com\\\/fighter-jet-combat-statistics\\\/\",\"url\":\"https:\\\/\\\/migflug.com\\\/fighter-jet-combat-statistics\\\/\",\"name\":\"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/migflug.com\\\/#website\"},\"datePublished\":\"2026-07-09T15:07:46+00:00\",\"dateModified\":\"2026-07-23T15:14:43+00:00\",\"description\":\"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/migflug.com\\\/fighter-jet-combat-statistics\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/migflug.com\\\/fighter-jet-combat-statistics\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/migflug.com\\\/fighter-jet-combat-statistics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/migflug.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/migflug.com\\\/#website\",\"url\":\"https:\\\/\\\/migflug.com\\\/\",\"name\":\"MiGFlug\",\"description\":\"Fly a Jet Fighter Yourself\",\"publisher\":{\"@id\":\"https:\\\/\\\/migflug.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/migflug.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/migflug.com\\\/#organization\",\"name\":\"MiGFlug GmbH\",\"url\":\"https:\\\/\\\/migflug.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/migflug.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\/\\/migflug.com\\/wp-content\\/uploads\\/2018\\/10\\/logo-migflug-blue.png\",\"contentUrl\":\"https:\\/\\/migflug.com\\/wp-content\\/uploads\\/2018\\/10\\/logo-migflug-blue.png\",\"width\":200,\"height\":100,\"caption\":\"MiGFlug GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/migflug.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/MiGFlug\\\/\",\"https:\\\/\\\/x.com\\\/migflug\",\"https:\\\/\\\/www.instagram.com\\\/migflug\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/MiGFlug\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/migflug.com\\\/\",\"https:\\\/\\\/www.pinterest.ch\\\/migflug\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug","description":"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/migflug.com\/ar\/fighter-jet-combat-statistics\/","og_locale":"ar_AR","og_type":"article","og_title":"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug","og_description":"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.","og_url":"https:\/\/migflug.com\/ar\/fighter-jet-combat-statistics\/","og_site_name":"MiGFlug","article_publisher":"https:\/\/www.facebook.com\/MiGFlug\/","article_modified_time":"2026-07-23T15:14:43+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/ml5psubhxdln.i.optimole.com\/cb:78--.b845\/w:auto\/h:auto\/q:96\/f:best\/https:\/\/migflug.com\/wp-content\/uploads\/2026\/06\/migflug-share-1200x630-1.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@migflug","twitter_misc":{"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"3 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/migflug.com\/fighter-jet-combat-statistics\/","url":"https:\/\/migflug.com\/fighter-jet-combat-statistics\/","name":"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service | MiGFlug","isPartOf":{"@id":"https:\/\/migflug.com\/#website"},"datePublished":"2026-07-09T15:07:46+00:00","dateModified":"2026-07-23T15:14:43+00:00","description":"Air-to-air kills, losses and kill ratios for 42 fighter jets from the MiG-15 to the F-35 and Su-57 \u2014 sortable, charted and cross-checked against official records.","breadcrumb":{"@id":"https:\/\/migflug.com\/fighter-jet-combat-statistics\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/migflug.com\/fighter-jet-combat-statistics\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/migflug.com\/fighter-jet-combat-statistics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/migflug.com\/"},{"@type":"ListItem","position":2,"name":"Fighter Jet Combat Statistics \u2013 Every Aircraft in Service"}]},{"@type":"WebSite","@id":"https:\/\/migflug.com\/#website","url":"https:\/\/migflug.com\/","name":"\u0645\u064a\u063a\u0641\u0644\u0648\u063a","description":"\u0642\u0645 \u0628\u0642\u064a\u0627\u062f\u0629 \u0637\u0627\u0626\u0631\u0629 \u0645\u0642\u0627\u062a\u0644\u0629 \u0646\u0641\u0627\u062b\u0629 \u0628\u0646\u0641\u0633\u0643","publisher":{"@id":"https:\/\/migflug.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/migflug.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/migflug.com\/#organization","name":"\u0634\u0631\u0643\u0629 MiGFlug GmbH","url":"https:\/\/migflug.com\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/migflug.com\/#\/schema\/logo\/image\/","url":"https:\/\/migflug.com\/wp-content\/uploads\/2018\/10\/logo-migflug-blue.png","contentUrl":"https:\/\/migflug.com\/wp-content\/uploads\/2018\/10\/logo-migflug-blue.png","width":200,"height":100,"caption":"MiGFlug GmbH"},"image":{"@id":"https:\/\/migflug.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/MiGFlug\/","https:\/\/x.com\/migflug","https:\/\/www.instagram.com\/migflug\/","https:\/\/www.youtube.com\/user\/MiGFlug","https:\/\/www.linkedin.com\/company\/migflug.com\/","https:\/\/www.pinterest.ch\/migflug\/"]}]}},"_links":{"self":[{"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/pages\/15995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/comments?post=15995"}],"version-history":[{"count":30,"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/pages\/15995\/revisions"}],"predecessor-version":[{"id":18820,"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/pages\/15995\/revisions\/18820"}],"wp:attachment":[{"href":"https:\/\/migflug.com\/ar\/wp-json\/wp\/v2\/media?parent=15995"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}