{"id":5611,"date":"2026-07-02T17:54:40","date_gmt":"2026-07-02T17:54:40","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-1-test-1-listening\/"},"modified":"2026-07-12T03:25:23","modified_gmt":"2026-07-12T03:25:23","slug":"celpip-set-1-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-1-test-1-listening\/","title":{"rendered":"CELPIP Set 1 Test 1 \u2013 Listening Practice Test"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 1 &#183; Practice Test 1<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczF0MS1wMXMxLTEubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMXQxLXAxczIubXAzIiwiMC4yIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMXQxLXAxczMubXAzIiwiMS4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMXQxLXAyLm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczF0MS1wNC5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxdDEtcDMubXAzIiwiNS4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMXQxLXA2Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczF0MS1wNS5tcDQifTt2YXIgQ0xQX0FVRElPX1ZJREVPPXsiNC4wIjoxfTsKCihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT0gQ0VMUElQIExpc3RlbmluZyBQcmFjdGljZSBcdTIwMTQgc2NvcGVkLCBXb3JkUHJlc3Mtc2FmZSA9PT09PT09PT09PT0gKi9cbi5jbHAtd3JhcHtcbiAgLyogVkFSSUFOVF9DSFJPTUVfU1RBUlQgKi9cbiAgLS1iYXItYmc6I0U4RUJFRjtcbiAgLS1iYXItYm9yZGVyOiNEM0Q5RTA7XG4gIC0tYmFyLXRleHQ6IzFGMjkzNztcbiAgLS1wYW5lbC1tZWRpYS1iZzojRjRGNUY3O1xuICAtLXBhbmVsLW1lZGlhLWJvcmRlcjojRTNFNkVBO1xuICAtLW1lZGlhLWNhcmQtYmc6I0VDRUVGMTtcbiAgLS1tZWRpYS1jYXJkLWJvcmRlcjojRDhEREUzO1xuICAtLXBhbmVsLXEtYmc6I0U5RjRGNztcbiAgLS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEO1xuICAtLWRkLW9wZW4tYmc6I0NCRUJGNDtcbiAgLyogVkFSSUFOVF9DSFJPTUVfRU5EICovXG4gIC0tbmF2eTojMDUwRTIwOyAtLWRhcms6IzBBMTYyODsgLS1iOTAwOiMwRDIzNTI7IC0tYjcwMDojMTI0NUE4OyAtLWI1MDA6IzI1NjNFQjtcbiAgLS1iNDAwOiMzQjgyRjY7IC0tYjIwMDojOTNDNUZEOyAtLWIxMDA6I0RCRUFGRTsgLS1iNTA6I0VGRjZGRjtcbiAgLS10ZWFsOiMwRDk0ODg7IC0tY3lhbjojMDZCNkQ0OyAtLWdyZWVuOiMxMEI5ODE7IC0tZ3JlZW41MDojRUNGREY1O1xuICAtLXJvc2U6I0Y0M0Y1RTsgLS1vcmFuZ2U6I0Y5NzMxNjtcbiAgLS10ZXh0OiMwRjE3MkE7IC0tbXV0ZWQ6IzQ3NTU2OTsgLS1zdWJ0bGU6Izk0QTNCODsgLS1ib3JkZXI6I0UyRThGMDtcbiAgLS1jcmltc29uOiNCNDJCM0M7IC0td2hpdGU6I0ZGRkZGRjsgLS1wYWdlOiNGOEZBRkY7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtcbiAgY29sb3I6dmFyKC0tdGV4dCk7XG4gIG1heC13aWR0aDoxMTQwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTZweCAxNnB4IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OjEuNTsgZm9udC1zaXplOjE2cHg7XG59XG4uY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH1cbi5jbHAtd3JhcCBidXR0b257IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLXdyYXAgaDEsLmNscC13cmFwIGgyLC5jbHAtd3JhcCBoMywuY2xwLXdyYXAgcHsgbWFyZ2luOjA7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uY2xwLWhlcm97XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6MjJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1uYXZ5KTsgY29sb3I6I2ZmZjtcbiAgcGFkZGluZzozNnB4IDQwcHg7XG4gIGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDtcbiAgYm94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7XG59XG4uY2xwLWF1cm9yYXsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH1cbi5jbHAtYXVyb3JhIHNwYW57XG4gIHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjUwJTsgZmlsdGVyOmJsdXIoNjBweCk7IG9wYWNpdHk6LjU7XG4gIGFuaW1hdGlvbjpjbHBGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7IHdpZHRoOjQyMHB4OyBoZWlnaHQ6NDIwcHg7IGxlZnQ6LTEyMHB4OyB0b3A6LTIwMHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXsgd2lkdGg6MzgwcHg7IGhlaWdodDozODBweDsgcmlnaHQ6LTgwcHg7IHRvcDotMTYwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotNHM7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpeyB3aWR0aDozNDBweDsgaGVpZ2h0OjM0MHB4OyByaWdodDoyMiU7IGJvdHRvbTotMjQwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotOHM7IH1cbkBrZXlmcmFtZXMgY2xwRmxvYXR7XG4gIGZyb217IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7IH1cbiAgdG97IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7IH1cbn1cbi5jbHAtaGVyby1zaGltbWVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMTQ3LDE5NywyNTMsLjEwKSA0NSUsIHJnYmEoNiwxODIsMjEyLC4xMikgNTAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBiYWNrZ3JvdW5kLXNpemU6MjUwJSAxMDAlO1xuICBhbmltYXRpb246Y2xwU2hpbW1lciA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgY2xwU2hpbW1lcnsgMCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDA7fSA1NSV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSAxMDAle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gfVxuLmNscC1oZXJvLWJhZGdlc3sgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6Y2VudGVyOyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtYmFkZ2UtYnJhbmR7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjEycHg7XG4gIGxldHRlci1zcGFjaW5nOi4xMmVtOyBwYWRkaW5nOjVweCAxMnB4OyBib3JkZXItcmFkaXVzOjZweDtcbn1cbi5jbHAtYmFkZ2Utc2V0eyBjb2xvcjp2YXIoLS1iMjAwKTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuLmNscC1oZXJvIGgxeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgbGluZS1oZWlnaHQ6MS4xMjsgfVxuLmNscC1oZXJvLWNoaXBzeyBkaXNwbGF5OmZsZXg7IGdhcDo4cHg7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1jaGlwe1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7XG4gIGNvbG9yOiNEQkVBRkU7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IHBhZGRpbmc6NnB4IDE0cHg7IGJvcmRlci1yYWRpdXM6MzJweDtcbiAgYmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbn1cbi5jbHAtY2hpcDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpOyB9XG4uY2xwLWN0YXtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzNHB4OyBtYXJnaW4tdG9wOjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSwgYm94LXNoYWRvdyAuMjJzIGVhc2UsIGJhY2tncm91bmQgLjIycyBlYXNlO1xufVxuLmNscC1jdGE6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RJQ0tZIFRPT0xCQVIgPT09PT09PT09PT09ICovXG4uY2xwLXRvb2xiYXJbaGlkZGVuXXsgZGlzcGxheTpub25lOyB9XG4uY2xwLXRvb2xiYXJ7XG4gIHBvc2l0aW9uOnN0aWNreTsgdG9wOjhweDsgei1pbmRleDo2MDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Mik7IGJhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4O1xuICBwYWRkaW5nOjhweCAxMnB4OyBtYXJnaW46MThweCAwIDA7XG4gIGJveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTtcbiAgbWluLWhlaWdodDo1MnB4O1xufVxuLmNscC1zY29yZS1jaGlwe1xuICBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6N3B4IDE2cHg7XG59XG4uY2xwLXRidG57XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzo5cHggMTZweDtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDo0MHB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYm94LXNoYWRvdyAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtdGJ0bjpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXRidG4tY2hlY2t7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyB9XG4uY2xwLXRidG4tY2hlY2s6aG92ZXJ7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuLmNscC10YnRuW2Rpc2FibGVkXXsgb3BhY2l0eTouNTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06bm9uZTsgYm94LXNoYWRvdzpub25lOyB9XG4uY2xwLXRvb2xiYXItc3BhY2VyeyBmbGV4OjE7IH1cblxuLyogPT09PT09PT09PT09IENBVCBTSU1VTEFUT1IgPT09PT09PT09PT09ICovXG4uY2xwLXNpbXsgbWFyZ2luLXRvcDoxOHB4OyB9XG4uY2xwLWRvdHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjZweDsgbWFyZ2luOjAgMCAxMHB4IDJweDsgfVxuLmNscC1kb3R7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1zdWJ0bGUpO1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6NHB4IDEwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsIGNvbG9yIC4yNXMgZWFzZTtcbn1cbi5jbHAtZG90LmNscC1kb25leyBiYWNrZ3JvdW5kOnZhcigtLWIxMDApOyBib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLWRvdC5jbHAtY3VyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IH1cbi5jbHAtZG90LmNscC1jbGlja2FibGV7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLWRvdDpub3QoLmNscC1jbGlja2FibGUpeyBjdXJzb3I6ZGVmYXVsdDsgfVxuXG4uY2xwLWNhdHtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6dmlzaWJsZTtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwgMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7XG59XG4uY2xwLWJhcntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7XG4gIHBhZGRpbmc6OXB4IDEycHg7IG1pbi1oZWlnaHQ6NDRweDtcbn1cbi5jbHAtYmFyLXRpdGxleyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtYmFyLXRpbWVyeyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH1cbi5jbHAtYmFyLXRpbWVyIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1uZXh0e1xuICBiYWNrZ3JvdW5kOnZhcigtLWI3MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIHBhZGRpbmc6N3B4IDE2cHg7IG1pbi1oZWlnaHQ6MzBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG59XG4uY2xwLW5leHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjkwMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyB9XG4uY2xwLXNjcmVlbnsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4OyBvdmVyZmxvdzpoaWRkZW47IH1cblxuLmNscC1pbnN0cntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBnYXA6OXB4O1xuICBwYWRkaW5nOjE0cHggMTZweCAxMnB4OyBiYWNrZ3JvdW5kOiNmZmY7XG59XG4uY2xwLWluZm97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MThweDsgaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6MnB4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTFweDsgZm9udC1zdHlsZTppdGFsaWM7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtcbn1cbi5jbHAtaW5zdHIgcHsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tYjkwMCk7IH1cblxuLyogaW50cm8gc2NyZWVuICovXG4uY2xwLWludHJvLWJvZHl7IHBhZGRpbmc6NnB4IDIwcHggMjZweCA0NHB4OyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtaW50cm8tYm9keSBoM3sgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjgwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTJweDsgfVxuLmNscC1idWxsZXRzeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgbWF4LXdpZHRoOjY0MHB4OyB9XG4uY2xwLWJ1bGxldHMgbGl7XG4gIGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWI5MDApO1xuICBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5jbHAtYnVsbGV0cyBsaTo6YmVmb3JleyBjb250ZW50OlwiXCI7IGZsZXg6bm9uZTsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgbWFyZ2luLXRvcDo2cHg7IH1cblxuLyogbWVkaWEgc2NyZWVuICovXG4uY2xwLW1lZGlhLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLW1lZGlhLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtbWVkaWEtYm9yZGVyKTtcbiAgcGFkZGluZzozNHB4IDIwcHggMjZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7XG59XG4uY2xwLW1lZGlhLWNhcmR7XG4gIHdpZHRoOjEwMCU7IG1heC13aWR0aDo1MjBweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1tZWRpYS1jYXJkLWJnKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgcGFkZGluZzoyMnB4IDI2cHg7XG59XG4uY2xwLW1lZGlhLWNhcmQuY2xwLWlzLXZpZGVveyBtYXgtd2lkdGg6NjYwcHg7IHBhZGRpbmc6MTJweDsgfVxuLmNscC1tZWRpYS16b25leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE4cHg7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS16b25le1xuICBhc3BlY3QtcmF0aW86MTYvOTsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6dmFyKC0tZGFyayk7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEycHg7XG4gIGNvbG9yOiNmZmY7XG59XG4uY2xwLXNwZWFrZXJ7XG4gIGZsZXg6bm9uZTsgd2lkdGg6NTZweDsgaGVpZ2h0OjU2cHg7IGJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xufVxuLmNscC1pcy12aWRlbyAuY2xwLXNwZWFrZXJ7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpOyBib3JkZXI6bm9uZTsgY29sb3I6I2ZmZjsgd2lkdGg6NjRweDsgaGVpZ2h0OjY0cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB9XG4uY2xwLW1lZGlhLW1haW57IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS1tYWlueyBwYWRkaW5nOjAgMTBweCA0cHg7IH1cbi5jbHAtbWVkaWEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLXByb2dyZXNzeyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtcHJvZ3Jlc3N7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7IH1cbi5jbHAtcHJvZ3Jlc3MtZmlsbHsgaGVpZ2h0OjEwMCU7IHdpZHRoOjAlOyBiYWNrZ3JvdW5kOnZhcigtLWN5YW4pOyBib3JkZXItcmFkaXVzOjZweDsgdHJhbnNpdGlvbjp3aWR0aCAuM3MgbGluZWFyOyB9XG4uY2xwLW1lZGlhLW1ldGF7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwO1xufVxuLmNscC1tZWRpYS1tZXRhIHN2Z3sgZGlzcGxheTpibG9jazsgfVxuLmNscC1vbmNlLW5vdGV7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo2MDA7IH1cblxuLyogcXVlc3Rpb24gc2NyZWVuICovXG4uY2xwLXEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtcbiAgcGFkZGluZzoyMHB4IDIycHggMzBweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoyMHB4O1xufVxuLmNscC1xeyBmb250LXNpemU6MTUuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBsaW5lLWhlaWdodDoyOyB9XG4uY2xwLXFudW17IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1kZHtcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4O1xuICBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToycHggZG90dGVkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIGNvbG9yOnZhcigtLWI3MDApOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwO1xuICBwYWRkaW5nOjRweCA4cHggM3B4OyBtYXJnaW46MCAycHg7IG1pbi1oZWlnaHQ6MzJweDsgbWF4LXdpZHRoOjEwMCU7XG4gIGJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWRkOmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMzcsOTksMjM1LC4wOCk7IH1cbi5jbHAtZGQuY2xwLW9wZW57IGJhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7IH1cbi5jbHAtZGQgLmNscC1kZC10ZXh0e1xuICBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbWF4LXdpZHRoOjQyMHB4O1xufVxuLmNscC1kZCAuY2xwLWRkLWNhcmV0eyBmb250LXNpemU6OXB4OyBjb2xvcjp2YXIoLS1iNzAwKTsgZmxleDpub25lOyB9XG4uY2xwLWRkLmNscC11bmFuc3dlcmVkIC5jbHAtZGQtdGV4dHsgbGV0dGVyLXNwYWNpbmc6MnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyB9XG4uY2xwLWRkLmNscC1tYXJrLXJpZ2h0eyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiMwNDc4NTc7IH1cbi5jbHAtZGQuY2xwLW1hcmstd3Jvbmd7IGJhY2tncm91bmQ6I0ZGRjFGMjsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiNCRTEyM0M7IH1cbi5jbHAtZGRbZGlzYWJsZWRdeyBjdXJzb3I6ZGVmYXVsdDsgfVxuLmNscC1yZXZlYWx7XG4gIGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxMy41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzA0Nzg1NzsgbGluZS1oZWlnaHQ6MS41O1xuICBtYXJnaW46MnB4IDAgMCAyNnB4O1xufVxuLmNscC1yZXZlYWwgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLXRvZG8tdGFne1xuICBmb250LXNpemU6MTBweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgY29sb3I6dmFyKC0tb3JhbmdlKTtcbiAgYm9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjFweCA2cHg7IG1hcmdpbi1sZWZ0OjhweDsgdmVydGljYWwtYWxpZ246MnB4O1xufVxuXG4vKiBkcm9wZG93biBwb3B1cCAqL1xuLmNscC1wb3B7XG4gIHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjgwOyB3aWR0aDptaW4oMzQwcHgsIGNhbGMoMTAwdncgLSA0OHB4KSk7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGJveC1zaGFkb3c6MCAxOHB4IDQwcHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjgpLCAwIDRweCAxMnB4IC02cHggcmdiYSgxNSwyMyw0MiwuMTQpO1xuICBwYWRkaW5nOjZweDsgXG59XG4uY2xwLW9wdHtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMXB4OyB3aWR0aDoxMDAlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgcGFkZGluZzoxMHB4IDEycHg7IG1pbi1oZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG4gIGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlO1xufVxuLmNscC1vcHQ6bGFzdC1jaGlsZHsgYm9yZGVyLWJvdHRvbTpub25lOyB9XG4uY2xwLW9wdDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXJhZGlve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE3cHg7IGhlaWdodDoxN3B4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlveyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IH1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpbzo6YWZ0ZXJ7XG4gIGNvbnRlbnQ6XCJcIjsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjIuNXB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTtcbn1cblxuLyogcHJlLXN0YXJ0IC8gZmluaXNoICovXG4uY2xwLWlkbGV7XG4gIHBhZGRpbmc6NTZweCAyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7XG59XG4uY2xwLWlkbGUgcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXgtd2lkdGg6NDgwcHg7IG1hcmdpbjowIGF1dG87IH1cbi5jbHAtZmluaXNoeyBwYWRkaW5nOjQ4cHggMjRweCA1NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWZpbmlzaCBoM3sgZm9udC1zaXplOjIycHg7IGZvbnQtd2VpZ2h0OjgwMDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLWZpbmlzaCBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MjJweDsgfVxuLmNscC1maW5pc2gtY2hlY2t7XG4gIGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzJweDsgbWluLWhlaWdodDo0NHB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgxNiwxODUsMTI5LC41NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1maW5pc2gtY2hlY2s6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cblxuLyogPT09PT09PT09PT09IFJFU1VMVFMgPT09PT09PT09PT09ICovXG4uY2xwLXJlc3VsdHN7IG1hcmdpbi10b3A6MzBweDsgfVxuLmNscC1yZXN1bHRzIGgyeyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IG1hcmdpbi1ib3R0b206MTZweDsgfVxuLmNscC1yZXMtZ3JpZHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7IGdhcDoxNnB4OyBhbGlnbi1pdGVtczpzdHJldGNoOyB9XG4uY2xwLWNhcmR7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IHBhZGRpbmc6MjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDhweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjA4KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5jbHAtY2FyZDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxNnB4IDM2cHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtcmluZy1jYXJkeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtaW4td2lkdGg6MjIwcHg7IH1cbi5jbHAtcmluZy13cmFweyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTMycHg7IGhlaWdodDoxMzJweDsgfVxuLmNscC1yaW5nLXdyYXAgc3ZneyB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtcmluZy1udW17XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcbiAgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LXdlaWdodDo4MDA7XG59XG4uY2xwLXJpbmctbnVtIGJ7IGZvbnQtc2l6ZToyOHB4OyBsaW5lLWhlaWdodDoxOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1yaW5nLW51bSBzcGFueyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXJpbmctY2FyZCBoM3sgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXBhcnQtY2hpcHN7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH1cbi5jbHAtcGFydC1jaGlwe1xuICBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6OHB4IDE2cHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgY29sb3I6dmFyKC0tYjkwMCk7XG59XG4uY2xwLXBhcnQtY2hpcCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtY2xiLXJvd3tcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7XG59XG4uY2xwLWNsYi1iYWRnZXtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDtcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjhweCAxNnB4O1xufVxuLmNscC1jbGItcm93IHB7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDsgZmxleDoxOyBtaW4td2lkdGg6MjAwcHg7IH1cbi5jbHAtdHJhbnNjcmlwdHN7IG1hcmdpbi10b3A6MTZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyB9XG4uY2xwLXRyLWNhcmR7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC10ci1oZWFke1xuICB3aWR0aDoxMDAlOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxMHB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgcGFkZGluZzoxNXB4IDIwcHg7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1pbi1oZWlnaHQ6NDhweDtcbn1cbi5jbHAtdHItaGVhZDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXRyLWhlYWQgLmNscC10ci1jYXJldHsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC1zaXplOjExcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlOyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1jYXJldHsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9XG4uY2xwLXRyLWJvZHl7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzowIDIwcHggMThweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NTAwOyBsaW5lLWhlaWdodDoxLjc7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWJvZHl7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtdHItdG9kb3sgY29sb3I6dmFyKC0tb3JhbmdlKTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MTIuNXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjhweDsgfVxuXG4vKiBzY3JvbGwgcmV2ZWFsICovXG4uY2xwLXJldnsgb3BhY2l0eTowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KTsgdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlLCB0cmFuc2Zvcm0gLjVzIGVhc2U7IH1cbi5jbHAtcmV2LmNscC1pbnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOjcwMHB4KXtcbiAgLmNscC13cmFweyBwYWRkaW5nOjEwcHggMTBweCA0MHB4OyB9XG4gIC5jbHAtaGVyb3sgcGFkZGluZzoyOHB4IDIycHg7IGJvcmRlci1yYWRpdXM6MTZweDsgfVxuICAuY2xwLXF7IGZvbnQtc2l6ZToxNXB4OyB9XG4gIC5jbHAtZGR7IG1pbi1oZWlnaHQ6NDBweDsgfVxuICAuY2xwLWRkIC5jbHAtZGQtdGV4dHsgbWF4LXdpZHRoOjE4MHB4OyB9XG4gIC5jbHAtYmFyeyBmbGV4LXdyYXA6d3JhcDsgfVxuICAuY2xwLWJhci10aXRsZXsgZmxleC1iYXNpczoxMDAlOyB9XG4gIC5jbHAtcS1wYW5lbHsgcGFkZGluZzoxNnB4IDE0cHggMjZweDsgfVxuICAuY2xwLWludHJvLWJvZHl7IHBhZGRpbmctbGVmdDoyMHB4OyB9XG4gIC5jbHAtcmVzLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IH1cbiAgLmNscC1tZWRpYS1jYXJkeyBwYWRkaW5nOjE2cHg7IH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXtcbiAgLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcntcbiAgICBhbmltYXRpb246bm9uZSAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOm5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuY2xwLXJldnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxufVxuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKJ3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEVTVF9EQVRBIFx1MjAxNCBzd2FwIGluIG5ldyBzZXRzIGhlcmUgd2l0aG91dCB0b3VjaGluZyBtYXJrdXAuCiAgIFNoYXBlOiB7IHBhcnRzOlt7IG5hbWUsIGhlYWRlclRpdGxlLCBpbnRyb1RpdGxlLCBpbnRyb0J1bGxldHNbXSwKICAgICAgICAgICAgcUluc3RydWN0aW9uLCB0cmFuc2NyaXB0LCBzZWN0aW9uczpbeyBsYWJlbCwgbWVkaWFUeXBlLAogICAgICAgICAgICBkdXJhdGlvbihzZWMpLCB0aW1lTWludXRlcywgbWVkaWFJbnN0cnVjdGlvbiwKICAgICAgICAgICAgcXVlc3Rpb25zOlt7IG4sIHN0ZW0sIG9wdGlvbnNbNF0sIGtleSgxLTQpLCB0b2RvPyB9XSB9XSB9XSB9CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp2YXIgVEVTVF9EQVRBID0gewogInRlc3RMYWJlbCI6ICJQcmFjdGljZSBUZXN0IDEiLAogInBhcnRzIjogWwogIHsKICAgIm5hbWUiOiAiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwKICAgImhlYWRlclRpdGxlIjogIlByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsCiAgICJpbnRyb1RpdGxlIjogIkxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLAogICAiaW50cm9CdWxsZXRzIjogWwogICAgIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbiBhdCBhIGhlYWx0aCBjbHViLiBJdCBwbGF5cyBpbiB0aHJlZSBwYXJ0cywgYW5kIGVhY2ggcGFydCBwbGF5cyBvbmx5IG9uY2UuIiwKICAgICJBZnRlciBlYWNoIHBhcnQsIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iCiAgIF0sCiAgICJxSW5zdHJ1Y3Rpb24iOiAiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsCiAgICJ0cmFuc2NyaXB0IjogIlNlY3Rpb24gMTpcbk1BTjogRXhjdXNlIG1lLCBiZWZvcmUgSSBsZWF2ZSwgY291bGQgeW91IHRha2UgYSBsb29rIGF0IG15IGFjY291bnQgYW5kIHNlZSBob3cgbWFueVxuY2FyZGlvIGNsYXNzZXMgSSBoYXZlIGxlZnQ\/XG5XT01BTjpcblxuU3VyZS4gRG8geW91IGhhdmUgeW91ciBtZW1iZXJzaGlwIGNhcmQ\/XG5cbk1BTjogSGVyZSBpdCBpcy4gSSBqb2luZWQgdGhpcyBoZWFsdGggY2x1YiBhIGNvdXBsZSBvZiBtb250aHMgYWdvLCBidXQgaGF2ZW5cdTIwMTl0IGJlZW5cbmtlZXBpbmcgdHJhY2sgb2YgaG93IG9mdGVuIEkgY29tZS5cbldPTUFOOiBObyB3b3JyaWVzLCBJIGNhbiBsb29rIGl0IHVwLiBMZXRcdTIwMTlzIHNlZSAuIC4gLiBZb3UgaGF2ZSA1IGNsYXNzZXMgbGVmdC4gRGlkIHlvdVxua25vdyB3ZSBoYXZlIGEgc3BlY2lhbCBwcm9tb3Rpb24gdGhpcyBtb250aD8gSWYgeW91IGJ1eSBhIDIwLWNsYXNzIHBhY2thZ2UsIHlvdSBnZXQgYVxuMTAlIGRpc2NvdW50LlxuTUFOOiBIbW0uIEkgYWxyZWFkeSBnZXQgYSAxNSUgc3R1ZGVudCBkaXNjb3VudC4gQ2FuIEkgYWRkIGl0IG9uIHRvIHRoYXQ\/XG5XT01BTjpcbmRpc2NvdW50cy5cblxuT2gsIG5vLCBzb3JyeSwgdGhlIGN1cnJlbnQgcHJvbW90aW9uIGNhblx1MjAxOXQgYmUgY29tYmluZWQgd2l0aCBhbnkgb3RoZXJcblxuTUFOOiBPaCwgd2VsbC4gVGhhbmtzIGFuZCBoYXZlIGEgZ3JlYXQgZGF5IVxuXG5cblNlY3Rpb24gMjpcbk1BTjogSGkgYWdhaW4uIEhleSwgSSBtdXN0IGJlIGhhdmluZyBiYWQgbHVjay4gSSB3YXMgb24gbXkgd2F5IGhvbWUgYW5kIG9uY2UgaXRcbnN0YXJ0ZWQgcmFpbmluZyBJIGRpc2NvdmVyZWQgdGhhdCBJXHUyMDE5ZCBmb3Jnb3R0ZW4gbXkgdW1icmVsbGEuIERvIHlvdSBoYXZlIGEgbG9zdCBhbmQgZm91bmRcbmJpbj8gSSB0aGluayBJIG1pZ2h0IGhhdmUgbGVmdCBteSB1bWJyZWxsYSBpbiB0aGUgbG9ja2VyIHJvb20uXG5XT01BTjpcblxuU3VyZSwgd2UgaGF2ZSBhIGxvc3QgYW5kIGZvdW5kLiBXaGF0IGRvZXMgeW91ciB1bWJyZWxsYSBsb29rIGxpa2U\/XG5cblxmTUFOOiBJdFx1MjAxOXMgYmxhY2ssIHRoZSBraW5kIHdoZXJlIHRoZSBzdGVtIGNvbGxhcHNlcyBhbmQgaXQgYmVjb21lcyByZWFsbHkgc21hbGwuIFRoZVxuaGFuZGxlIGlzIHdvb2Rlbi4gSXRcdTIwMTlzIHRoZSBCYXkgYnJhbmQuIEl0IG1pZ2h0IGhhdmUgdGhlIGJyYW5kIGxvZ28gb24gdGhlIGhhbmRsZSwgSSBkb25cdTIwMTl0XG5yZW1lbWJlci5cbldPTUFOOiBMZXQgbWUgY2hlY2sgLiAuIC4gV293LCB1bWJyZWxsYXMgc2VlbSB0byBiZSBhIGNvbW1vbmx5IGZvcmdvdHRlbiBpdGVtIVxuQnV0IEkgdGhpbmsgSSBmb3VuZCB5b3VycyFcbk1BTjogT2ggdGhhdFx1MjAxOXMgZ3JlYXQhIFRoYW5rIHlvdSFcbldPTUFOOlxuXG5Zb3VcdTIwMTlyZSB3ZWxjb21lISBTZWUgeW91IG5leHQgdGltZSFcblxuXG5TZWN0aW9uIDM6XG5NQU46IEhleSwgaXRcdTIwMTlzIG1lIGFnYWluLiBTb3JyeSwgSSBzZWUgeW91XHUyMDE5cmUgY2xvc2luZyBpbiBhIGZldyBtaW51dGVzIVxuV09NQU46IE5vIHdvcnJpZXMuIEl0IGFsd2F5cyB0YWtlcyBhIHdoaWxlIGZvciB0aGUgbGFzdCBjbGFzcyB0byBsZWF2ZSwgYW5kIGl0IHRha2VzIGFuXG5ob3VyIHRvIGNsZWFuLXVwIGFmdGVyIHRoYXQuIFdoYXQgY2FuIEkgZG8gZm9yIHlvdT9cbk1BTjogU29ycnksIGJ1dCBJIHRoaW5rIEkgdG9vayB0aGUgd3JvbmcgdW1icmVsbGEhXG5XT01BTjpcblxuV2hhdD8gUmVhbGx5P1xuXG5NQU46IFllYWghIEFyZSB5b3Ugc3VyZSB0aGVyZSB3ZXJlblx1MjAxOXQgdHdvIGJsYWNrIEJheSB1bWJyZWxsYXMgaW4gdGhlIGxvc3QgYW5kIGZvdW5kP1xuTWluZSBoYXMgYSByaXAgaW4gdGhlIGZhYnJpYywgbmVhciB0aGUgdG9wLiBCdXQgdGhlIG9uZSB5b3UgZ2F2ZSBtZSBkb2Vzblx1MjAxOXQgaGF2ZSBhIHJpcC5cbkhlcmUsIHNlZT8gSSBkb25cdTIwMTl0IGZlZWwgcmlnaHQgdGFraW5nIGl0LlxuV09NQU46IFdvdywgd2hhdCBhcmUgdGhlIGNoYW5jZXMgb2YgdGhhdCBoYXBwZW5pbmc\/IE9rYXksIGxldCBtZSBnbyBjaGVjayB0aGVcbmxvc3QgYW5kIGZvdW5kIGFnYWluLiBJIGRpZG5cdTIwMTl0IHJlYWxseSBsb29rIHRoYXQgY2FyZWZ1bGx5IGJlY2F1c2UgSSB0aG91Z2h0IGZvciBzdXJlIHRoYXQgb25lXG53YXMgeW91cnMuXG5NQU46IFllYWgsIGlmIHlvdSBjb3VsZCBjaGVjayB0aGF0IHdvdWxkIGJlIGZhbnRhc3RpYy5cbldPTUFOOiBPbmUgc2Vjb25kIC4gLiAuIFtQYXVzZV0gV293LCB5b3VcdTIwMTlyZSByaWdodCEgSSBjYW5cdTIwMTl0IGJlbGlldmUgdGhlcmUgd2VyZSB0d29cbnVtYnJlbGxhcyBleGFjdGx5IHRoZSBzYW1lLiBMZXRcdTIwMTlzIG9wZW4gdGhpcyBvbmUuIFllcCwgaXRcdTIwMTlzIGdvdCBhIHJpcCBhdCB0aGUgdG9wIVxuTUFOOiBUaGF0XHUyMDE5cyB0aGUgb25lISBIZXJlLCBJXHUyMDE5bGwgdHJhZGUgeW91LlxuXG5cZldPTUFOOiBJdFx1MjAxOXMgYSBkZWFsLiBTZWUgeW91IG5leHQgdGltZSEgSnVzdCBwcmVzcyB0aGUgYnV6emVyIHRvIHVubG9jayB0aGUgZG9vciBvblxueW91ciB3YXkgb3V0LlxuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA2LTguXG5XaHkgZG9lcyB0aGUgbWFuIGFwb2xvZ2l6ZSB0byB0aGUgd29tYW4\/XG5XaHkgZG9lcyB0aGUgbWFuIHJldHVybiB0aGUgaXRlbT9cbldoYXQgd2lsbCBtb3N0IGxpa2VseSBoYXBwZW4gbmV4dD8iLAogICAic2VjdGlvbnMiOiBbCiAgICB7CiAgICAgImxhYmVsIjogIkNvbnZlcnNhdGlvbiBcdTIwMTQgUGFydCAxIiwKICAgICAibWVkaWFUeXBlIjogImF1ZGlvIiwKICAgICAiZHVyYXRpb24iOiAxNzAsCiAgICAgInRpbWVNaW51dGVzIjogMiwKICAgICAibWVkaWFJbnN0cnVjdGlvbiI6ICJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxIG1pbnV0ZSBsb25nLiIsCiAgICAgInF1ZXN0aW9ucyI6IFsKICAgICAgewogICAgICAgIm4iOiAxLAogICAgICAgInN0ZW0iOiAiV2hhdCBkb2VzIHRoZSBtYW4gd2FudD8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRvIHJlbmV3IGhpcyB5ZWFybHkgbWVtYmVyc2hpcC4iLAogICAgICAgICJUbyBjaGVjayBoaXMgYWNjb3VudC4iLAogICAgICAgICJUbyBzaWduIHVwIGZvciBhIHN3aW1taW5nIGNsYXNzLiIsCiAgICAgICAgIlRvIHNwZWFrIHdpdGggdGhlIGNsdWIgbWFuYWdlci4iCiAgICAgICBdLAogICAgICAgImtleSI6IDIsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogMiwKICAgICAgICJzdGVtIjogIldoYXQgZGlzY291bnQgZG9lcyB0aGUgd29tYW4gb2ZmZXIgdGhlIG1hbj8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIkEgNSUgZGlzY291bnQuIiwKICAgICAgICAiQSAxMCUgZGlzY291bnQuIiwKICAgICAgICAiQSAxNSUgZGlzY291bnQuIiwKICAgICAgICAiQSAyMCUgZGlzY291bnQuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9CiAgICAgXQogICAgfSwKICAgIHsKICAgICAibGFiZWwiOiAiQ29udmVyc2F0aW9uIFx1MjAxNCBQYXJ0IDIiLAogICAgICJtZWRpYVR5cGUiOiAiYXVkaW8iLAogICAgICJkdXJhdGlvbiI6IDE3MCwKICAgICAidGltZU1pbnV0ZXMiOiAyLAogICAgICJtZWRpYUluc3RydWN0aW9uIjogIkxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxIG1pbnV0ZSBsb25nLiIsCiAgICAgInF1ZXN0aW9ucyI6IFsKICAgICAgewogICAgICAgIm4iOiAzLAogICAgICAgInN0ZW0iOiAiV2h5IGRvZXMgdGhlIG1hbiByZXR1cm4gdG8gdGhlIGhlYWx0aCBjbHViPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiVG8gc2lnbiB1cCBmb3IgYW5vdGhlciBjbGFzcy4iLAogICAgICAgICJUbyBhc2sgYWJvdXQgdGhlIHByb21vdGlvbi4iLAogICAgICAgICJUbyBnZXQgYmFjayBhIG1pc3NpbmcgcGVyc29uYWwgaXRlbS4iLAogICAgICAgICJUbyBwYXkgZm9yIGhpcyBtZW1iZXJzaGlwLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMywKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiA0LAogICAgICAgInN0ZW0iOiAiV2hhdCBkb2VzIHRoZSB1bWJyZWxsYSBsb29rIGxpa2U\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJMYXJnZSBhbmQgYmx1ZSwgd2l0aCBhIHBsYXN0aWMgaGFuZGxlLiIsCiAgICAgICAgIkJsYWNrIGFuZCBjb2xsYXBzaWJsZSwgd2l0aCBhIHdvb2RlbiBoYW5kbGUuIiwKICAgICAgICAiR3JleSwgd2l0aCB0aGUgaGVhbHRoIGNsdWJcdTIwMTlzIGxvZ28uIiwKICAgICAgICAiQmxhY2ssIHdpdGggYSBsb25nIG1ldGFsIHN0ZW0uIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDUsCiAgICAgICAic3RlbSI6ICJXaGljaCBzdGF0ZW1lbnQgaXMgbW9zdCBsaWtlbHkgdHJ1ZT8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRoZSBtYW4gd2FzIHdhbGtpbmcgaG9tZSBmcm9tIHRoZSBneW0uIiwKICAgICAgICAiVGhlIG1hbiBkcm92ZSBoaXMgY2FyIHRvIHRoZSBoZWFsdGggY2x1Yi4iLAogICAgICAgICJUaGUgcmFpbiBoYWQgc3RvcHBlZCBiZWZvcmUgaGUgbGVmdC4iLAogICAgICAgICJUaGUgbWFuIHdvcmtzIGF0IHRoZSBoZWFsdGggY2x1Yi4iCiAgICAgICBdLAogICAgICAgImtleSI6IDEsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0KICAgICBdCiAgICB9LAogICAgewogICAgICJsYWJlbCI6ICJDb252ZXJzYXRpb24gXHUyMDE0IFBhcnQgMyIsCiAgICAgIm1lZGlhVHlwZSI6ICJhdWRpbyIsCiAgICAgImR1cmF0aW9uIjogMTcwLAogICAgICJ0aW1lTWludXRlcyI6IDIsCiAgICAgIm1lZGlhSW5zdHJ1Y3Rpb24iOiAiTGlzdGVuIHRvIHRoZSBsYXN0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDEgbWludXRlIGxvbmcuIiwKICAgICAicXVlc3Rpb25zIjogWwogICAgICB7CiAgICAgICAibiI6IDYsCiAgICAgICAic3RlbSI6ICJXaHkgZG9lcyB0aGUgbWFuIGFwb2xvZ2l6ZSB0byB0aGUgd29tYW4\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJIZSBsb3N0IGhpcyBtZW1iZXJzaGlwIGNhcmQuIiwKICAgICAgICAiSGUgZm9yZ290IHRvIHJldHVybiBhbiB1bWJyZWxsYS4iLAogICAgICAgICJIZSB0aGlua3MgaGUgaXMgYm90aGVyaW5nIHRoZSB3b21hbi4iLAogICAgICAgICJIZSBhcnJpdmVkIGFmdGVyIGNsb3NpbmcgdGltZS4iCiAgICAgICBdLAogICAgICAgImtleSI6IDMsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNywKICAgICAgICJzdGVtIjogIldoeSBkb2VzIHRoZSBtYW4gcmV0dXJuIHRoZSBpdGVtPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiSXQgd2FzIGRhbWFnZWQgd2hlbiBoZSByZWNlaXZlZCBpdC4iLAogICAgICAgICJJdCBiZWxvbmdlZCB0byBzb21lb25lIGVsc2UuIiwKICAgICAgICAiSXQgd2FzIHRoZSB3cm9uZyBjb2xvdXIuIiwKICAgICAgICAiSGUgbm8gbG9uZ2VyIG5lZWRlZCBpdC4iCiAgICAgICBdLAogICAgICAgImtleSI6IDIsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogOCwKICAgICAgICJzdGVtIjogIldoYXQgd2lsbCBtb3N0IGxpa2VseSBoYXBwZW4gbmV4dD8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRoZSBtYW4gd2lsbCB0YWtlIG9uZSBtb3JlIGNsYXNzLiIsCiAgICAgICAgIlRoZSB3b21hbiB3aWxsIGNhbGwgdGhlIG1hbmFnZXIuIiwKICAgICAgICAiVGhlIG1hbiB3aWxsIGJ1eSBhIG5ldyB1bWJyZWxsYS4iLAogICAgICAgICJUaGUgd29tYW4gd2lsbCBiZWdpbiBoZXIgY2hvcmVzLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogNCwKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfQogICAgIF0KICAgIH0KICAgXQogIH0sCiAgewogICAibmFtZSI6ICJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwKICAgImhlYWRlclRpdGxlIjogIlByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLAogICAiaW50cm9UaXRsZSI6ICJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsCiAgICJpbnRyb0J1bGxldHMiOiBbCiAgICAiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBzZXJ2ZXJzIGF0IGEgcmVzdGF1cmFudC4gWW91IHdpbGwgaGVhciB0aGUgY29udmVyc2F0aW9uIG9ubHkgb25jZS4iLAogICAgIlRoZW4gNSBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIgogICBdLAogICAicUluc3RydWN0aW9uIjogIkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLAogICAidHJhbnNjcmlwdCI6ICJNQU46IEhleSwgSSBoYXZlbid0IHNlZW4geW91IGJlZm9yZSEgWW91IG11c3QgYmUgbmV3IGhlcmUuIE15IG5hbWUncyBKb25hdGhhbi4gSG93XG5kbyB5b3UgbGlrZSBpdCBoZXJlIHNvIGZhcj9cbldPTUFOOiBJJ20gQW5uYSwgbmljZSB0byBtZWV0IHlvdS4gWWVzLCBJIGp1c3Qgc3RhcnRlZCB0aGlzIGFmdGVybm9vbi4gSXRcdTIwMTlzIC4gLiAuIGl0XHUyMDE5c1xub2theS4uIEhhdmUgeW91IHdvcmtlZCBhdCB0aGlzIHJlc3RhdXJhbnQgbG9uZz9cbk1BTjogVHdvIHllYXJzIG5vdywgYnV0IEkgb25seSB3b3JrIDQgZGF5cyBhIHdlZWsuIEkgcmVhbGx5IGVuam95IGl0LiBCdXQgeW91IC4gLiAuIHlvdVxuZG9uXHUyMDE5dCBzb3VuZCBsaWtlIHlvdVx1MjAxOXJlIGhhdmluZyBtdWNoIGZ1bi5cbldPTUFOOiBUaGlzIGlzIG15IGZpcnN0IHRpbWUgd2FpdHJlc3NpbmcgYW5kIEknbSBhZnJhaWQgSSdtIG5vdCB2ZXJ5IGdvb2QuIEkganVzdFxuc3BpbGxlZCB3aW5lIG9uIGEgY3VzdG9tZXIgYSBjb3VwbGUgb2YgbWludXRlcyBhZ28hIFRoZSBndXkgd2FzIHJlYWxseSB1cHNldCwgYW5kIElcbmRpZG4ndCBrbm93IHdoYXQgdG8gZG8sIHNvIEkganVzdCByYW4gb2ZmISBXaGF0IGRvIEkgZG8gbm93P1xuTUFOOiBBd3csIHRoYXQncyBva2F5LCBldmVyeW9uZSBtYWtlcyBtaXN0YWtlcywgZXZlbiBleHBlcmllbmNlZCBzZXJ2ZXJzISBEb24ndCBiZVxuc28gaGFyZCBvbiB5b3Vyc2VsZi4gRG9uJ3Qgd29ycnkhIEp1c3QgZ28gYmFjayBhbmQgYXBvbG9naXplIGFuZCBicmluZyBoaW0gYW5vdGhlciBnbGFzc1xub2Ygd2luZSwgYW5kIHRlbGwgaGltIGRlc3NlcnQgd2lsbCBiZSBmcmVlLlxuV09NQU46IFdoYXQgYWJvdXQgaGlzIHNoaXJ0PyBJdCdzIGdvdCBhIGh1Z2UgcmVkIHdpbmUgc3RhaW4gb24gdGhlIGFybS4gSSBoZWFyZCBoaW1cbnRlbGwgaGlzIGRhdGUgdGhhdCBoZSBjYW4ndCBnbyB0byB0aGUgb3BlcmEgd2l0aCBhIHJ1aW5lZCBzaGlydC5cbk1BTjogSG1tLiBJJ2xsIHRlbGwgeW91IHdoYXQsIEknbGwgZ28gdGFsayB0byBoaW0gd2l0aCB5b3UuIFdlXHUyMDE5bGwgdGVsbCBoaW0gdGhlIHJlc3RhdXJhbnRcbndpbGwgcmVpbWJ1cnNlIGhpbSBmb3IgaGlzIHNoaXJ0LiBCdXQgZmlyc3QsIHdlIHNob3VsZCB0ZWxsIExhdXJhLCB0aGUgbWFuYWdlciwgd2hhdFxuaGFwcGVuZWQuXG5XT01BTjpcblxuT2ggbm8gLiAuIC4gSVx1MjAxOWxsIGdldCBmaXJlZCEgU2hlJ3MgZ29pbmcgdG8gdGhpbmsgSSdtIHRoZSB3b3JzdCB3YWl0cmVzcyBldmVyLlxuXG5cZk1BTjogTGF1cmEncyB2ZXJ5IHVuZGVyc3RhbmRpbmcuIFRydXN0IG1lLCB5b3Ugd29uJ3QgZ2V0IGZpcmVkISBTaGUgd2lsbCBtYWtlIHlvdVxucHJhY3RpY2UgY2Fycnlpbmcgd2luZSBnbGFzc2VzLCB0aG91Z2guIEFjdHVhbGx5LCBpZiB0aGlzIGlzIHlvdXIgZmlyc3QgdGltZSB3YWl0cmVzc2luZywgSSdtXG5zdXJwcmlzZWQgc2hlIGxldCB5b3UgY2Fycnkgd2luZSBnbGFzc2VzIGF0IGFsbCEgVXN1YWxseSB0aGV5IHRyYWluIHlvdSBmb3IgYXQgbGVhc3QgYSB3ZWVrXG5maXJzdC5cbldPTUFOOiBBbm90aGVyIHdhaXRyZXNzIGp1c3QgcGFzc2VkIG1lIGEgdHJheSB3aXRoIHdpbmUgZ2xhc3NlcyBvbiBpdCBhbmQgYXNrZWQgbWVcbnRvIHRha2UgaXQgdG8gdGFibGUgZml2ZS4gU2hlIHNhaWQgc2hlIHdhcyB0b28gYnVzeS5cbk1BTjogT2gsIEkgc2VlLiBTaGUgbXVzdCBub3QgaGF2ZSBrbm93biBpdCB3YXMgeW91ciBmaXJzdCBkYXkhIEFueXdheXMsIGxldCdzIGdvIHNvbHZlXG50aGlzIHNpdHVhdGlvbi4gWW91XHUyMDE5bGwgZmVlbCBtdWNoIGJldHRlci4gSXRcdTIwMTlsbCBiZSBmaW5lLCB5b3UnbGwgc2VlIVxuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTUuXG4xLiBIb3cgbG9uZyBoYXMgdGhlIHdvbWFuIGJlZW4gYSB3YWl0cmVzcz9cbjIuIFdoeSBpcyB0aGUgd2FpdHJlc3MgYXBwcmVoZW5zaXZlP1xuMy4gV2h5IHdhcyB0aGUgY3VzdG9tZXIgdXBzZXQ\/XG40LiBIb3cgZG9lcyB0aGUgbWFuIHN1Z2dlc3QgdGhleSBmaXggdGhlIHByb2JsZW0\/XG41LiBXaGF0IGRvZXMgdGhlIG1hbiB0aGluayB0aGUgbWFuYWdlciB3aWxsIGRvPyIsCiAgICJzZWN0aW9ucyI6IFsKICAgIHsKICAgICAibGFiZWwiOiAiQ29udmVyc2F0aW9uIiwKICAgICAibWVkaWFUeXBlIjogImF1ZGlvIiwKICAgICAiZHVyYXRpb24iOiAzMzMsCiAgICAgInRpbWVNaW51dGVzIjogMywKICAgICAibWVkaWFJbnN0cnVjdGlvbiI6ICJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDUuNSBtaW51dGVzIGxvbmcuIiwKICAgICAicXVlc3Rpb25zIjogWwogICAgICB7CiAgICAgICAibiI6IDEsCiAgICAgICAic3RlbSI6ICJIb3cgbG9uZyBoYXMgdGhlIHdvbWFuIGJlZW4gYSB3YWl0cmVzcz8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIkEgZGF5LiIsCiAgICAgICAgIkEgd2Vlay4iLAogICAgICAgICJBIG1vbnRoLiIsCiAgICAgICAgIlR3byB5ZWFycy4iCiAgICAgICBdLAogICAgICAgImtleSI6IDEsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogMiwKICAgICAgICJzdGVtIjogIldoeSBpcyB0aGUgd2FpdHJlc3MgYXBwcmVoZW5zaXZlPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiU2hlIGFycml2ZWQgbGF0ZSBmb3IgaGVyIHNoaWZ0LiIsCiAgICAgICAgIlNoZSBnb3QgZW1iYXJyYXNzZWQgYW5kIHJhbiBvZmYuIiwKICAgICAgICAiU2hlIGJyb2tlIHNldmVyYWwgd2luZSBnbGFzc2VzLiIsCiAgICAgICAgIlNoZSBhcmd1ZWQgd2l0aCBhbm90aGVyIHNlcnZlci4iCiAgICAgICBdLAogICAgICAgImtleSI6IDIsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogMywKICAgICAgICJzdGVtIjogIldoeSB3YXMgdGhlIGN1c3RvbWVyIHVwc2V0PyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiQmVjYXVzZSBoaXMgZm9vZCBhcnJpdmVkIGNvbGQuIiwKICAgICAgICAiQmVjYXVzZSBoZSB3YWl0ZWQgdG9vIGxvbmcgZm9yIHRoZSBiaWxsLiIsCiAgICAgICAgIkJlY2F1c2UgaGUgbWF5IG5vdCBiZSBhYmxlIHRvIGF0dGVuZCB0aGUgb3BlcmEuIiwKICAgICAgICAiQmVjYXVzZSB0aGUgd2luZSB0YXN0ZWQgYmFkLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMywKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiA0LAogICAgICAgInN0ZW0iOiAiSG93IGRvZXMgdGhlIG1hbiBzdWdnZXN0IHRoZXkgZml4IHRoZSBwcm9ibGVtPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiQnkgcGF5aW5nIHRvIHJlcGxhY2UgdGhlIGN1c3RvbWVyXHUyMDE5cyBydWluZWQgc2hpcnQuIiwKICAgICAgICAiQnkgb2ZmZXJpbmcgdGhlIGN1c3RvbWVyIGZyZWUgb3BlcmEgdGlja2V0cy4iLAogICAgICAgICJCeSBhc2tpbmcgYW5vdGhlciB3YWl0cmVzcyB0byBzZXJ2ZSB0aGUgdGFibGUuIiwKICAgICAgICAiQnkgbGV0dGluZyB0aGUgbWFuYWdlciBzcGVhayB0byB0aGUgY3VzdG9tZXIgYWxvbmUuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAxLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDUsCiAgICAgICAic3RlbSI6ICJXaGF0IGRvZXMgdGhlIG1hbiB0aGluayB0aGUgbWFuYWdlciB3aWxsIGRvPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiRmlyZSB0aGUgd2FpdHJlc3MgaW1tZWRpYXRlbHkuIiwKICAgICAgICAiTW92ZSB0aGUgd2FpdHJlc3MgdG8gdGhlIGtpdGNoZW4uIiwKICAgICAgICAiQ3V0IHRoZSB3YWl0cmVzc1x1MjAxOXMgcGF5LiIsCiAgICAgICAgIlJlcXVpcmUgdGhlIHdhaXRyZXNzIHRvIHByYWN0aWNlLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogNCwKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfQogICAgIF0KICAgIH0KICAgXQogIH0sCiAgewogICAibmFtZSI6ICJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLAogICAiaGVhZGVyVGl0bGUiOiAiUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwKICAgImludHJvVGl0bGUiOiAiTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsCiAgICJpbnRyb0J1bGxldHMiOiBbCiAgICAiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgY3VzdG9tZXIgYW5kIGEgY2xlcmsgYXQgYW4gYXJ0IHN1cHBseSBzdG9yZS4gWW91IHdpbGwgaGVhciB0aGUgY29udmVyc2F0aW9uIG9ubHkgb25jZS4iLAogICAgIlRoZW4gNiBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIgogICBdLAogICAicUluc3RydWN0aW9uIjogIkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLAogICAidHJhbnNjcmlwdCI6ICJXT01BTjpcblxuSGkgdGhlcmUhIFdoYXQgYnJpbmdzIHlvdSBpbnRvIEFydCBMYW5kIHRvZGF5P1xuXG5NQU46IEhpISBJJ20gbG9va2luZyB0byB0YWtlIHVwIHBhaW50aW5nIGFzIGEgaG9iYnkgYW5kIG15IGdyYW5kc29uIGp1c3QgZ2F2ZSBtZSBhIGdpZnRcbmNlcnRpZmljYXRlIHRvIHRoaXMgc3RvcmUuIFRoZSBwcm9ibGVtIGlzLCBJIHJlYWxseSBoYXZlIG5vIGlkZWEgd2hlcmUgdG8gc3RhcnQuIEknbVxud29uZGVyaW5nIGlmIHlvdSBjb3VsZCBnaXZlIG1lIHNvbWUgYWR2aWNlLlxuV09NQU46IE9mIGNvdXJzZSEgVGhhdCdzIHdoYXQgSSdtIGhlcmUgZm9yLiBXZWxsLCBsZXQgbWUgc3RhcnQgYnkgYXNraW5nIHlvdSBhIGZld1xucXVlc3Rpb25zLiBXZXJlIHlvdSBsb29raW5nIHRvIGVucm9sbCBpbiBvdXIgY2xhc3Nlcz9cbk1BTjogSSBoYXZlIGEgbG90IG9mIGZyZWUgdGltZSwgc28gSSBmaWd1cmVkIEkgd291bGQgdHJ5IGl0IG9uIG15IG93bi5cbldPTUFOOlxuXG5DZXJ0YWlubHkuIERvIHlvdSBoYXZlIGlkZWFzIGFib3V0IHdoYXQgc3ViamVjdHMgeW91IHdhbnQgdG8gcGFpbnQ\/XG5cbk1BTjogSSB0aGluayBsYW5kc2NhcGVzLiBXZSB3ZXJlIGxvb2tpbmcgYXQgc29tZSBvbGQgcGhvdG9ncmFwaHMgb24gbXkgYmlydGhkYXksIGFuZFxuSSB0aG91Z2h0IGl0IHdvdWxkIGJlIG5pY2UgdG8gcmVjcmVhdGUgdGhlIHJvbGxpbmcgaGlsbHMgb2YgdGhlIGJlYXV0aWZ1bCBmYXJtIEkgZ3JldyB1cCBvbiBpblxuXG5cZk1hbml0b2JhLiBJXHUyMDE5dmUgYmVlbiBsaXZpbmcgaW4gVG9yb250byBmb3IgNSBkZWNhZGVzIG5vdywgYW5kIHRob3VnaCBJIGxvdmUgY2l0eSBsaWZlIGFuZFxudGhlIGRvd250b3duIHNreWxpbmUsIHRoZSBtZW1vcmllcyBvZiBzdW5zZXRzIG9uIHRoZSBmYXJtIGFyZSBzdGlsbCB3aXRoIG1lLlxuV09NQU46IFdvbmRlcmZ1bCEgV2VsbCwgdGhlIHRocmVlIGJhc2ljIHR5cGVzIG9mIHBhaW50cyBhcmUgd2F0ZXJjb2xvdXIsIGFjcnlsaWMsXG5hbmQgb2lsLiBUaGV5IGFyZSBhbGwgc3VpdGFibGUgZm9yIGxhbmRzY2FwZXMuIEkgd291bGQgc2F5IHdhdGVyY29sb3VyIGlzIHRoZSBoYXJkZXN0IGZvciBhXG5iZWdpbm5lciB0byBzdGFydCB3aXRoLCBldmVuIHRob3VnaCBpdCBpcyB0aGUgbW9zdCBhZmZvcmRhYmxlIG9mIHRoZW0gYWxsLlxuTUFOOiBJIGRvblx1MjAxOXQgdGhpbmsgd2F0ZXJjb2xvdXIgd2lsbCBiZSB0aGUgb25lIGZvciBtZSB0aGVuLiBXaGF0XHUyMDE5cyB0aGUgbWFpbiBkaWZmZXJlbmNlXG5iZXR3ZWVuIGFjcnlsaWNzIGFuZCBvaWxzP1xuV09NQU46IFRoZSBhbW91bnQgb2YgdGltZSBpdCB0YWtlcyBmb3IgdGhlIHBhaW50IHRvIGRyeS4gQWNyeWxpYyBwYWludHMgZHJ5IHZlcnlcbnF1aWNrbHksIHdpdGhpbiBhIG1hdHRlciBvZiBob3Vycywgd2hlcmVhcyBvaWwgcGFpbnRzIGNhbiB0YWtlIHVwIHRvIHNldmVyYWwgZGF5cywgZXZlblxud2Vla3MgdG8gZHJ5LiBBIGxvdCBvZiBvdXIgYmVnaW5uZXIgc3R1ZGVudHMgbGlrZSBhY3J5bGljcyBiZWNhdXNlIGlmIHRoZXkgbWFrZSBhIG1pc3Rha2VcbnRoZXkgZG9uJ3QgaGF2ZSB0byB3YWl0IGxvbmcgdG8gcGFpbnQgb3ZlciBpdC4gSG93ZXZlciwgdGhhdCBjYW4gYWxzbyBiZSBmcnVzdHJhdGluZyxcbmJlY2F1c2UgaXQncyBoYXJkIHRvIG1peCB0aGUgY29sb3VycyB5b3Ugd2FudCB3aGVuIHRoZXkgZHJ5IHNvIGZhc3QuXG5NQU46IEkgc2VlLiBXZWxsLCBJIGRvbid0IHRoaW5rIEknbGwgbWluZCBmYXN0LWRyeWluZyBwYWludHMuIEknbGwgZ28gZm9yIGFjcnlsaWNzLCB0aGVuLiBXaGF0XG5vdGhlciBraW5kIG9mIHN1cHBsaWVzIHdpbGwgSSBuZWVkP1xuV09NQU46XG5cbkRvIHlvdSB0aGluayB5b3VcdTIwMTlsbCBiZSBwYWludGluZyBpbmRvb3JzIG9yIG91dGRvb3JzP1xuXG5NQU46IERlZmluaXRlbHkgb3V0ZG9vcnMuIElcdTIwMTlkIGxpa2UgdG8gcGFpbnQgbGFuZHNjYXBlcyB3aGlsZSBpbW1lcnNlZCBmdWxseSBpbiBuYXR1cmVcbm15c2VsZi4gSSdtIGEgYmlnIHdpbGRlcm5lc3MgZXhwbG9yZXIuXG5XT01BTjogU291bmRzIGxvdmVseSEgQW5kIGlmIHlvdSBldmVyIGZlZWwgeW91IG5lZWQgc29tZSBleHRyYSBoZWxwLCB3ZSBoYXZlXG5wYWludGluZyB3b3Jrc2hvcHMgYXQgYSBsb2NhbCBmYXJtIG5vdCB0b28gZmFyIGZyb20gdGhlIGNpdHksIGV2ZXJ5IGxhc3QgU2F0dXJkYXkgb2YgdGhlXG5tb250aC4gVGhlIHdvcmtzaG9wIGdvZXMgZnJvbSA5OjAwIGEubS4gdG8gNTowMCBwLm0uLCBhbmQgcGFydGljaXBhbnRzIGVuam95IGEgbmljZVxuZmFybS1zdHlsZSBsdW5jaCBtZWFsLlxuTUFOOiBUaGFuayB5b3UuIElcdTIwMTlsbCBnbyBhdCBteSBvd24gcGFjZSwgYnV0IElcdTIwMTlsbCBkZWZpbml0ZWx5IGNvbnNpZGVyIGl0LiBJdCBtaWdodCBiZSBhIG5pY2VcbndheSB0byBsZWFybiwgc29jaWFsaXplLCBtYWtlIG5ldyBmcmllbmRzLCBhbmQgcmVtaW5pc2NlIGFib3V0IG15IG1vdGhlclx1MjAxOXMgY29va2luZy5cblxuTm93IGFuc3dlciBxdWVzdGlvbnMgMS02LlxuMS4gV2h5IGlzIHRoZSBtYW4gYXQgdGhlIGFydCBzdG9yZT9cbjIuIFdoYXQgaXMgdGhlIG1hbiBpbnRlcmVzdGVkIGluIGRvaW5nP1xuMy4gV2h5IGRvZXMgdGhlIHdvbWFuIGFkdmlzZSBhZ2FpbnN0IHdhdGVyY29sb3VyP1xuNC4gQWNjb3JkaW5nIHRvIHRoZSB3b21hbiwgd2h5IGlzIGFjcnlsaWMgYmV0dGVyIHRoYW4gb2lsIHBhaW50P1xuNS4gV2h5IGRvZXMgdGhlIHdvbWFuIHN1Z2dlc3QgdGhlIHdvcmtzaG9wP1xuNi4gV2hhdCBpcyB0aGUgbWFuIHBsYW5uaW5nIHRvIGRvPyIsCiAgICJzZWN0aW9ucyI6IFsKICAgIHsKICAgICAibGFiZWwiOiAiQ29udmVyc2F0aW9uIiwKICAgICAibWVkaWFUeXBlIjogImF1ZGlvIiwKICAgICAiZHVyYXRpb24iOiA0MTksCiAgICAgInRpbWVNaW51dGVzIjogMywKICAgICAibWVkaWFJbnN0cnVjdGlvbiI6ICJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDcgbWludXRlcyBsb25nLiIsCiAgICAgInF1ZXN0aW9ucyI6IFsKICAgICAgewogICAgICAgIm4iOiAxLAogICAgICAgInN0ZW0iOiAiV2h5IGlzIHRoZSBtYW4gYXQgdGhlIGFydCBzdG9yZT8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRvIGJ1eSBhIHByZXNlbnQgZm9yIGhpcyBncmFuZHNvbi4iLAogICAgICAgICJUbyBjbGFpbSBhIGdpZnQgZnJvbSBoaXMgZ3JhbmRzb24uIiwKICAgICAgICAiVG8gc2lnbiB1cCBmb3IgcGFpbnRpbmcgY2xhc3Nlcy4iLAogICAgICAgICJUbyByZXR1cm4gc29tZSBhcnQgc3VwcGxpZXMuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDIsCiAgICAgICAic3RlbSI6ICJXaGF0IGlzIHRoZSBtYW4gaW50ZXJlc3RlZCBpbiBkb2luZz8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlBhaW50aW5nIHRoZSBkb3dudG93biBUb3JvbnRvIHNreWxpbmUuIiwKICAgICAgICAiVGFraW5nIHBob3RvZ3JhcGhzIG9mIHdpbGRsaWZlLiIsCiAgICAgICAgIlBhaW50aW5nIHJ1cmFsIGxhbmRzY2FwZXMgZnJvbSBoaXMgY2hpbGRob29kLiIsCiAgICAgICAgIkxlYXJuaW5nIHRvIHBhaW50IHBvcnRyYWl0cyBvZiBoaXMgZmFtaWx5LiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMywKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiAzLAogICAgICAgInN0ZW0iOiAiV2h5IGRvZXMgdGhlIHdvbWFuIGFkdmlzZSBhZ2FpbnN0IHdhdGVyY29sb3VyPyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiQmVjYXVzZSBpdCBpcyB0aGUgbW9zdCBleHBlbnNpdmUga2luZCBvZiBwYWludC4iLAogICAgICAgICJCZWNhdXNlIGl0IGlzIHRvbyBkaWZmaWN1bHQgZm9yIGZpcnN0LXRpbWUgcGFpbnRlcnMuIiwKICAgICAgICAiQmVjYXVzZSBpdCB0YWtlcyB0b28gbG9uZyB0byBkcnkuIiwKICAgICAgICAiQmVjYXVzZSBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGxhbmRzY2FwZXMuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDQsCiAgICAgICAic3RlbSI6ICJBY2NvcmRpbmcgdG8gdGhlIHdvbWFuLCB3aHkgaXMgYWNyeWxpYyBiZXR0ZXIgdGhhbiBvaWwgcGFpbnQ\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJJdCBoYXMgYSBtdWNoIHF1aWNrZXIgZHJ5aW5nIHRpbWUuIiwKICAgICAgICAiSXQgaXMgbXVjaCBlYXNpZXIgdG8gbWl4IGNvbG91cnMuIiwKICAgICAgICAiSXQgY29zdHMgbGVzcyB0aGFuIG9pbCBwYWludC4iLAogICAgICAgICJJdCB3b3JrcyBiZXR0ZXIgb3V0ZG9vcnMuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAxLAogICAgICAgInJlY29uIjogdHJ1ZQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDUsCiAgICAgICAic3RlbSI6ICJXaHkgZG9lcyB0aGUgd29tYW4gc3VnZ2VzdCB0aGUgd29ya3Nob3A\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJCZWNhdXNlIGl0IGlzIGZyZWUgZm9yIHN0b3JlIGN1c3RvbWVycy4iLAogICAgICAgICJCZWNhdXNlIHRoZSBtYW4gbmVlZHMgdG8gYnV5IG1vcmUgc3VwcGxpZXMuIiwKICAgICAgICAiQmVjYXVzZSB0aGUgbWFuIGNvdWxkIGdldCBhc3Npc3RhbmNlLiIsCiAgICAgICAgIkJlY2F1c2UgaXQgdGFrZXMgcGxhY2UgaW5zaWRlIHRoZSBzdG9yZS4iCiAgICAgICBdLAogICAgICAgImtleSI6IDMsCiAgICAgICAicmVjb24iOiB0cnVlCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNiwKICAgICAgICJzdGVtIjogIldoYXQgaXMgdGhlIG1hbiBwbGFubmluZyB0byBkbz8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIkVucm9sbCBpbiB0aGUgbW9udGhseSB3b3Jrc2hvcC4iLAogICAgICAgICJIaXJlIGEgcHJpdmF0ZSBwYWludGluZyB0ZWFjaGVyLiIsCiAgICAgICAgIlRha2UgYSBicmVhayBmcm9tIHBhaW50aW5nLiIsCiAgICAgICAgIlRyeSB0byBsZWFybiBwYWludGluZyBieSBoaW1zZWxmLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogNCwKICAgICAgICJyZWNvbiI6IHRydWUKICAgICAgfQogICAgIF0KICAgIH0KICAgXQogIH0sCiAgewogICAibmFtZSI6ICJQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsCiAgICJoZWFkZXJUaXRsZSI6ICJQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsCiAgICJpbnRyb1RpdGxlIjogIkxpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsCiAgICJpbnRyb0J1bGxldHMiOiBbCiAgICAiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBhbiB1bmV4cGVjdGVkIGV2ZW50IGR1cmluZyBhIGZhbWlseSB0cmlwLiBZb3Ugd2lsbCBoZWFyIHRoZSBuZXdzIGl0ZW0gb25seSBvbmNlLiIsCiAgICAiVGhlbiA1IHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudC4iCiAgIF0sCiAgICJxSW5zdHJ1Y3Rpb24iOiAiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsCiAgICJ0cmFuc2NyaXB0IjogIkEgZmFtaWx5IGRyaXZpbmcgbmVhciBCYW5mZiwgQnJpdGlzaCBDb2x1bWJpYSwgb24gYSBjYW1waW5nIHRyaXAgbGFzdCB3ZWVrZW5kIG5hcnJvd2x5XG5hdm9pZGVkIGNyYXNoaW5nIGludG8gYSBkZWVyLCBvbmx5IHRvIGhpdCBhIGxhcmdlIHBoZWFzYW50IGluc3RlYWQuIEJhbmZmIGlzIGEgbmF0dXJlXG5yZXNlcnZlLCBob21lIHRvIHRob3VzYW5kcyBvZiB3aWxkIGFuaW1hbHMgaW5jbHVkaW5nIGJlYXJzLCBkZWVyLCBhbmQgY291bnRsZXNzIGdhbWVcbmJpcmRzIHN1Y2ggYXMgcGhlYXNhbnQuIE1pY2hhZWwgSmFuc2VuLCB3aG8gd2FzIGRyaXZpbmcgYXQgdGhlIHRpbWUsIHNhaWQgdGhleSB3ZXJlXG5oZWFkaW5nIGJhY2sgdG8gdGhlaXIgY2FtcHNpdGUgYXJvdW5kIGR1c2sgd2hlbiB0aGV5IGNhbWUgYXJvdW5kIGEgYmVuZCBvZiB0aGVcbmhpZ2h3YXkgYW5kIHNhdyBhIGRlZXIgdHJvdHRpbmcgYWNyb3NzIHRoZSByb2FkLiBKYW5zZW4gc3dlcnZlZCBzdWNjZXNzZnVsbHkgYXJvdW5kIHRoZVxuYW5pbWFsLCBidXQgb25seSBhIGZldyBzZWNvbmRzIGxhdGVyIGEgcGhlYXNhbnQgZmxldyBhY3Jvc3MgdGhlIHJvYWQgaW4gdGhlIG9wcG9zaXRlXG5kaXJlY3Rpb24gYW5kIGhpdCB0aGUgd2luZHNoaWVsZC4gSGUgcHVsbGVkIG92ZXIgdG8gdGhlIHNpZGUgb2YgdGhlIHJvYWQgYXMgdGhlIGRlZXIgcmFuIGludG9cbnRoZSBmb3Jlc3QgdW5oYXJtZWQuIFVuZm9ydHVuYXRlbHkgZm9yIHRoZSBwaGVhc2FudCwgdGhlIGltcGFjdCBvZiB0aGUgd2luZHNoaWVsZCBraWxsZWQgaXRcbmltbWVkaWF0ZWx5LiBIb3dldmVyLCBKYW5zZW4ncyBkYXVnaHRlciwgRW1pbHksIHdobyB0b29rIGEgd2lsZGVybmVzcyBzdXJ2aXZhbCBjb3Vyc2Vcbmxhc3QgeWVhciwgZGVjaWRlZCB0byBtYWtlIHRoZSBiZXN0IG9mIHRoZSBzaXR1YXRpb24uIFNoZSB0b29rIHRoZSBiaXJkIGJhY2sgdG8gdGhlIGNhbXBzaXRlXG5hbmQgcm9hc3RlZCBpdCB3aXRoIGdhcmxpYyBhbmQgb25pb25zLiBcIkl0J3MgY29tcGxldGVseSBsZWdhbCB0byBlYXQgcm9hZGtpbGwgaW4gQnJpdGlzaFxuQ29sdW1iaWEsXCIgc2hlIGV4cGxhaW5lZC4gXCJXaHkgd2FzdGUgcGVyZmVjdGx5IGdvb2QgZm9vZD8gSXQncyBzYWQgdGhhdCB3ZSBoaXQgaXQsIGJ1dCBhdFxubGVhc3QgaXQgZGlkbid0IGdvIHRvIHdhc3RlLlwiIiwKICAgInNlY3Rpb25zIjogWwogICAgewogICAgICJsYWJlbCI6ICJOZXdzIEl0ZW0iLAogICAgICJtZWRpYVR5cGUiOiAiYXVkaW8iLAogICAgICJkdXJhdGlvbiI6IDkyLAogICAgICJ0aW1lTWludXRlcyI6IDMsCiAgICAgIm1lZGlhSW5zdHJ1Y3Rpb24iOiAiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIHRoZSBuZXdzIGl0ZW0gb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgbWludXRlcyBsb25nLiIsCiAgICAgInF1ZXN0aW9ucyI6IFsKICAgICAgewogICAgICAgIm4iOiAxLAogICAgICAgInN0ZW0iOiAiTWljaGFlbCBKYW5zZW4gd2FzIGRyaXZpbmcgYmFjayB0byB0aGUgY2FtcHNpdGUgd2hlbiIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiaGUgbmVhcmx5IGhpdCBhIHBlcnNvbiBjcm9zc2luZyB0aGUgcm9hZC4iLAogICAgICAgICJoZSBoaXQgYSBkZWVyIHRoYXQgY3Jvc3NlZCB0aGUgcm9hZC4iLAogICAgICAgICJoZSBzYXcgYW4gYWNjaWRlbnQgb24gdGhlIGhpZ2h3YXkuIiwKICAgICAgICAiYSBsYXJnZSBiaXJkIGZsZXcgaW50byBoaXMgd2luZHNoaWVsZC4iCiAgICAgICBdLAogICAgICAgImtleSI6IDQKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiAyLAogICAgICAgInN0ZW0iOiAiVGhlIGFyZWEgd2hlcmUgdGhlIGFjY2lkZW50IHRvb2sgcGxhY2UgaXMiLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgImF0IGEgYnVzeSBpbnRlcnNlY3Rpb24uIiwKICAgICAgICAibmVhciBhIGNpdHkgem9vLiIsCiAgICAgICAgImluIGEgcHJvdGVjdGVkIGFyZWEuIiwKICAgICAgICAibmVhciB0aGVpciBob21lLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMwogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDMsCiAgICAgICAic3RlbSI6ICJUaGUgYWNjaWRlbnQgY2F1c2VkIiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJ0aGUgZW5naW5lIHRvIGJyZWFrIGRvd24uIiwKICAgICAgICAidGhlIGNoaWxkcmVuIHRvIGdldCBodXJ0LiIsCiAgICAgICAgInRoZSBkZWVyIHRvIGRpZS4iLAogICAgICAgICJ0aGUgYmlyZCB0byBkaWUuIgogICAgICAgXSwKICAgICAgICJrZXkiOiA0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNCwKICAgICAgICJzdGVtIjogIlRoYXQgbmlnaHQgSmFuc2VuXHUyMDE5cyBkYXVnaHRlciwgRW1pbHksIiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJoYWQgYSBwaWNuaWMgb24gdGhlIHNpZGUgb2YgdGhlIHJvYWQuIiwKICAgICAgICAiY29va2VkIHRoZSBhbmltYWwgdGhleSBoYWQgaGl0LiIsCiAgICAgICAgInJlZnVzZWQgdG8gZWF0IGRpbm5lci4iLAogICAgICAgICJ1c2VkIGhlciBzdXJ2aXZhbCBza2lsbHMgdG8gZ2V0IGhlbHAuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNSwKICAgICAgICJzdGVtIjogIkVtaWx5XHUyMDE5cyBhY3Rpb25zIHRoYXQgbmlnaHQgd2VyZSBwcm9tcHRlZCBieSIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiYSBzdXJ2aXZhbCBjb3Vyc2Ugc2hlIGhhZCB0YWtlbi4iLAogICAgICAgICJkaXN0cmVzcyBvdmVyIHRoZSBhY2NpZGVudC4iLAogICAgICAgICJiZWluZyBzdHJhbmRlZCBpbiB0aGUgd29vZHMuIiwKICAgICAgICAidGhlIGZhbWlseSBydW5uaW5nIG91dCBvZiBmb29kLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMQogICAgICB9CiAgICAgXQogICAgfQogICBdCiAgfSwKICB7CiAgICJuYW1lIjogIlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsCiAgICJoZWFkZXJUaXRsZSI6ICJQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLAogICAiaW50cm9UaXRsZSI6ICJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwKICAgImludHJvQnVsbGV0cyI6IFsKICAgICJZb3Ugd2lsbCB3YXRjaCBhIDItbWludXRlIHZpZGVvLiBUaGVuIDggcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiIsCiAgICAiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iCiAgIF0sCiAgICJxSW5zdHJ1Y3Rpb24iOiAiQ2hvb3NlIHRoZSBiZXN0IGFuc3dlciB0byBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwKICAgInRyYW5zY3JpcHQiOiAiTUFOIDE6XG5XZWxsLCB0aGFua3MgZm9yIGJlaW5nIG9uIHRpbWUsIGZvbGtzLiBPdXIgYWdlbmRhIHRvZGF5IGlzIHByZXR0eSBzaG9ydDpcbldlXHUyMDE5cmUganVzdCB0cnlpbmcgdG8gZGVjaWRlIG9uIHRoZSB2ZW51ZSBmb3Igb3VyIGNvbXBhbnlcdTIwMTlzIDIwdGggYW5uaXZlcnNhcnkgY2VsZWJyYXRpb24uXG5BbnkgaWRlYXM\/XG5XT01BTjogSVx1MjAxOXZlIGdvdCBhIGNvdXBsZSBvZiBwbGFjZXMgaW4gbWluZC4gT25lXHUyMDE5cyBzbWFsbGVyIGFuZCBvbmVcdTIwMTlzIGxhcmdlci4gSXRcbmRlcGVuZHMgaG93IG1hbnkgcGVvcGxlIHdlXHUyMDE5cmUgdGFsa2luZyBhYm91dC4gSG93IG1hbnkgYXJlIGNvbWluZz9cbk1BTiAxOlxuV2VsbCwgd2VcdTIwMTlyZSB1cCB0byBhIGh1bmRyZWQgbWF4aW11bS4gRXZlcnlvbmVcdTIwMTlzIGFsbG93ZWQgdG8gaW52aXRlIHRoZWlyXG5zcG91c2Ugb3IgcGFydG5lci4gSGVyZVx1MjAxOXMgdGhlIHByb2dyYW0gYXMgd2Uga25vdyBpdDogU3RhcnRpbmcgYXQgNzowMCBwLm0uIHdpbmUsXG5zcGVlY2hlcywgYW5kIG1heWJlIGF3YXJkIHByZXNlbnRhdGlvbnMsIGZvbGxvd2VkIGF0IDg6MDAgcC5tLiBieSBhIGJ1ZmZldCBkaW5uZXIuXG5TdGFydGluZyBhdCA5OjMwLCB0aGVyZVx1MjAxOWxsIGJlIGVudGVydGFpbm1lbnQgLiAuIC4gaWRlYWxseSwgYSBsaXZlIGJhbmQsIGlmIHdlIGNhbiBhZmZvcmQgb25lLlxuXG5cZk1BTiAyOlxuVXAgdG8gYSBodW5kcmVkIHBlb3BsZSAuIC4gLiBUaGF0XHUyMDE5cyBxdWl0ZSBhIGNyb3dkLiBPYnZpb3VzbHksIHdlIG5lZWQgc3BhY2VcbmZvciBldmVyeW9uZSwgYnV0IHdlIGRvblx1MjAxOXQgd2FudCB0byBnbyBvdmVyIGJ1ZGdldC5cbldPTUFOOiBXZWxsLCBJIGhhdmUgZ290IGEgZmV3IHBlbm55LXBpbmNoaW5nIHRyaWNrcyB1cCBteSBzbGVldmUuIFdlIGNvdWxkIGZpbmQgYVxudmVudWUgb24gYSB3ZWVrZGF5IC4gLiAuIE1vbmRheSB0aHJvdWdoIFRodXJzZGF5IGlzIGNoZWFwZXIuIFdlIGNhbiBhbHNvIGZpbmQgYSBwbGFjZVxudGhhdFx1MjAxOXMgb3V0IG9mIHRvd24uIE1heWJlIGV2ZW4gb3V0IGluIHRoZSBzdWJ1cmJzLiBBbmQsIGlmIHdvcnNlIGNvbWVzIHRvIHdvcnN0LCB3ZVxuY291bGQgYWx3YXlzIGhpcmUgYSBESiBpbnN0ZWFkIG9mIGEgbGl2ZSBiYW5kLlxuTUFOIDI6XG5BbHNvLCB3ZSBkb25cdTIwMTl0IG5lZWQgdG8gZ28gb3ZlcmJvYXJkIG9uIHRoZSBtZW51LiBXZSBjb3VsZCBqdXN0IG9yZGVyXG5yZWFzb25hYmx5IHByaWNlZCBmb29kIHRoYXQgZXZlcnlvbmUgd2lsbCBlbmpveS5cbk1BTiAxOlxuXG5BbmQgd2UgY2FuIGFsd2F5cyB0d2VhayB0aGUgbWVudSBhIGJpdCwgYXNzdW1pbmcgdGhlIGNhdGVyZXIgd2lsbCBsZXQgdXMuXG5cbldPTUFOOiBZZWFoLCBJIGtub3cgYSBwbGFjZSBjYWxsZWQgR3JpZmZpbidzIHRoYXQgbWlnaHQgYmUgcGVyZmVjdC4gSXRcdTIwMTlzIGluXG5XaW1iZXJ0b24uXG5NQU4gMjpcblxuV2hlcmVcdTIwMTlzIFdpbWJlcnRvbj9cblxuV09NQU46IEFib3V0IDMwIG1pbnV0ZXMgZWFzdCBieSBjYXIgb24gSGlnaHdheSAxOC4gQW55d2F5LCBHcmlmZmluJ3MgaXMgZmFtaWx5XG5vd25lZCwgaGFzIGdyZWF0IGFtYmllbmNlLCBhbmQgZmFpcmx5IHJlYXNvbmFibGUgcHJpY2VzLiBUaGV5IGRvIGdyb3VwIGJvb2tpbmdzIGFzIHdlbGwuXG5JIGtub3cgdGhlIG1hbmFnZXIuIEkgbWlnaHQgYmUgYWJsZSB0byB0YWxrIGhpbSBpbnRvIGdpdmluZyB1cyBhIGRpc2NvdW50LlxuTUFOIDE6XG5ZZWFoLCBteSBjb25jZXJuIHdvdWxkIGJlIHRoZSBsb2NhdGlvbi4gTXkgYnJvdGhlciByZXRpcmVkIGFuZCBtb3ZlZCB0b1xuV2ltYmVydG9uLCBhbmQgaXRcdTIwMTlzIGltcG9zc2libGUgdG8gZ2V0IHRoZXJlIGJ5IHB1YmxpYyB0cmFuc2l0LiBZb3Uga25vdywgd2UgZG9uXHUyMDE5dCB3YW50XG50byBzYXkgZmFyZXdlbGwgdG8gcGVvcGxlIGFzIHRoZXlcdTIwMTlyZSBnZXR0aW5nIGJlaGluZCB0aGUgd2hlZWwgYWZ0ZXIgYSBmZXcgZHJpbmtzLiBZb3Vcbmtub3csIHdlXHUyMDE5ZCB3YW50IHRvIGdldCB0aGVtIGFsbCB0byB0YWtlIHRheGlzIGhvbWUsIGFuZCB0aGVuIHdlXHUyMDE5ZCBoYXZlIHRvIHJlaW1idXJzZVxudGhlbSBmb3IgdGhlIHJpZGUuXG5NQU4gMjpcblxuV2UgZG9uXHUyMDE5dCB3YW50IHRvIGluY3VyIHRoYXQgZXhwZW5zZSFcblxuV09NQU4gJiBNQU4gMTpcblxuRGl0dG8gaGVyZS4gSmlueCFcblxuTUFOIDI6XG5IZXksIGhvdyBhYm91dCBUaGUgUmVkIERvb3I\/IEl0XHUyMDE5cyBqdXN0IHR3byBibG9ja3Mgbm9ydGggb2YgaGVyZS4gSXRcdTIwMTlzIHJpZ2h0XG5vbiB0aGUgc3Vid2F5IGxpbmUuIEkga25vdyB0aGVpciBkaW5pbmcgYXJlYSBzZWF0cyBvdmVyIGEgaHVuZHJlZCBwZW9wbGUuIElcdTIwMTltIHByZXR0eSBzdXJlXG50aGUgb3duZXIgY2FuIGFjY29tbW9kYXRlIHVzIHByaWNlLXdpc2UgLiAuIC4gYW5kIGhlIGp1c3QgaGlyZWQgdGhlIHRvcCBjaGVmIGluIHRoZSBjaXR5LlxuTUFOIDE6XG5Tb3VuZHMgd2VsbCB3b3J0aCBjaGVja2luZyBvdXQhIEJyaWFuLCBjb3VsZCB5b3UgY29udGFjdCB0aGUgbWFuYWdlciBhbmRcbmdldCBhbiBlc3RpbWF0ZT8gT2gsIGJldHRlciB5ZXQsIGdldCB0d286IG9uZSBmb3IgYSBUaHVyc2RheSBhbmQgb25lIGZvciBhIFNhdHVyZGF5LiBTbyxcbndlXHUyMDE5bGwgbWVldCBhZ2FpbiBuZXh0IHdlZWsgYW5kIHdlXHUyMDE5bGwgdGFrZSBpdCBmcm9tIHRoZXJlLiIsCiAgICJzZWN0aW9ucyI6IFsKICAgIHsKICAgICAibGFiZWwiOiAiRGlzY3Vzc2lvbiAoVmlkZW8pIiwKICAgICAibWVkaWFUeXBlIjogInZpZGVvIiwKICAgICAiZHVyYXRpb24iOiAxMzksCiAgICAgInRpbWVNaW51dGVzIjogMywKICAgICAibWVkaWFJbnN0cnVjdGlvbiI6ICJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggdGhlIGRpc2N1c3Npb24gb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgdG8gMiBtaW51dGVzIGxvbmcuIiwKICAgICAicXVlc3Rpb25zIjogWwogICAgICB7CiAgICAgICAibiI6IDEsCiAgICAgICAic3RlbSI6ICJXaHkgaXMgdGhlIHBhcnR5IGJlaW5nIG9yZ2FuaXplZD8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRvIGFja25vd2xlZGdlIGFuIGltcG9ydGFudCBkYXRlLiIsCiAgICAgICAgIlRvIGNlbGVicmF0ZSB0aGUgY29tcGFueVx1MjAxOXMgc3VjY2Vzcy4iLAogICAgICAgICJUbyBtYXJrIHRoZSBib3NzXHUyMDE5cyAyMHRoIGFubml2ZXJzYXJ5LiIsCiAgICAgICAgIlRvIHNheSBmYXJld2VsbCB0byByZXRpcmluZyBlbXBsb3llZXMuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAxCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogMiwKICAgICAgICJzdGVtIjogIldoYXQgaXMgdGhlIG1haW4gbGltaXRhdGlvbiBmb3IgdGhlIG9yZ2FuaXplcnM\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJCb29raW5nIGRhdGVzLiIsCiAgICAgICAgIk1lbnUgb3B0aW9ucy4iLAogICAgICAgICJGaW5hbmNpYWwgbWVhbnMuIiwKICAgICAgICAiU2VhdGluZyBjYXBhY2l0eS4iCiAgICAgICBdLAogICAgICAgImtleSI6IDMKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiAzLAogICAgICAgInN0ZW0iOiAiV2hhdCBkb2VzIHRoZSBtYW4gc2F5IGFib3V0IEdyaWZmaW5cdTIwMTlzIFJlc3RhdXJhbnQ\/IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJIZSBhY2NlcHRzIGl0cyBkaXNhZHZhbnRhZ2VzLiIsCiAgICAgICAgIkhlIGNyaXRpY2l6ZXMgaXQgYXMgaW1wcmFjdGljYWwuIiwKICAgICAgICAiSGUgZGlzbWlzc2VzIGl0IGZvciBubyByZWFzb24uIiwKICAgICAgICAiSGUgZmVlbHMgaXQgaXMgd29ydGggY29uc2lkZXJpbmcuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAyCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNCwKICAgICAgICJzdGVtIjogIldoYXQgd291bGQgdGhlIHNwZWFrZXJzIHByb2JhYmx5IGNvbnNpZGVyIG1vc3QgaW1wb3J0YW50PyIsCiAgICAgICAib3B0aW9ucyI6IFsKICAgICAgICAiQXZvaWRpbmcgY29tcGxhaW50cyBhYm91dCB0aGUgb3JnYW5pemVycy4iLAogICAgICAgICJFbnN1cmluZyB0b3Agc3RhZmYgbWVtYmVycyByZWNlaXZlIGF3YXJkcy4iLAogICAgICAgICJBdm9pZGluZyBpbmRpcmVjdCByZXNwb25zaWJpbGl0eSBmb3IgYWNjaWRlbnRzLiIsCiAgICAgICAgIkVuc3VyaW5nIHRoYXQgdGhlIGV2ZW50cyB1bmZvbGQgb24gc2NoZWR1bGUuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNSwKICAgICAgICJzdGVtIjogIldoeSBkaWQgdGhlIHdvbWFuIGFuZCB0aGUgbWFuIHdlYXJpbmcgZ2xhc3NlcyBsYXVnaD8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRoZXkgc2FpZCBzb21ldGhpbmcgdGhhdCBzb3VuZGVkIHdyb25nLiIsCiAgICAgICAgIlRoZXkgd2VyZSBtYWtpbmcgZnVuIG9mIHRoZSBtYW5cdTIwMTlzIG9waW5pb24uIiwKICAgICAgICAiVGhleSB3ZXJlIHByZXRlbmRpbmcgdG8gYWdyZWUgd2l0aCB0aGUgbWFuLiIsCiAgICAgICAgIlRoZXkgc2FpZCB0aGUgc2FtZSB0aGluZyBhdCB0aGUgc2FtZSB0aW1lLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogNAogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDYsCiAgICAgICAic3RlbSI6ICJXaGljaCBvcHRpb24gZGlkIHRoZSBjb21taXR0ZWUgY29uc2lkZXIgYnV0IHJlamVjdD8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIkFuIG91dC1vZi10b3duIHJlc3RhdXJhbnQgbG9jYXRpb24uIiwKICAgICAgICAiQW4gYWx0ZXJuYXRlIGVudGVydGFpbm1lbnQgcHJvdmlkZXIuIiwKICAgICAgICAiQSBwYXJ0eSB0aGF0IHdlbGNvbWVkIHN0YWZmIG9ubHkuIiwKICAgICAgICAiQSBzbWFsbGVyIHJhbmdlIG9mIG1lbnUgaXRlbXMuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAxCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNywKICAgICAgICJzdGVtIjogIldoYXQgaW5mb3JtYXRpb24gaXMgbmVlZGVkIGFib3V0IFRoZSBSZWQgRG9vcj8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIklzIGl0IGNoZWFwZXIgdG8gYm9vayBvbiB3ZWVrZGF5cz8iLAogICAgICAgICJJcyBpdCBsb2NhdGVkIG9uIHRoZSBzdWJ3YXkgbGluZT8iLAogICAgICAgICJEbyB0aGV5IGhhdmUgc3BhY2UgZm9yIGEgaHVuZHJlZD8iLAogICAgICAgICJEbyB0aGV5IGhhdmUgdGhlIGNpdHlcdTIwMTlzIHRvcCBjaGVmPyIKICAgICAgIF0sCiAgICAgICAia2V5IjogMQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDgsCiAgICAgICAic3RlbSI6ICJXaGljaCBzdGF0ZW1lbnQgaXMgbW9zdCBsaWtlbHkgdHJ1ZT8iLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgIlRoZSBvcmdhbml6ZXJzIHdpbGwgcmVqZWN0IFRoZSBSZWQgRG9vci4iLAogICAgICAgICJUaGUgZXZlbnQgd2lsbCBiZSBvbiBhIFNhdHVyZGF5IG5pZ2h0LiIsCiAgICAgICAgIlRoZSBmb29kIHF1YWxpdHkgd2lsbCBwbGVhc2UgdGhlIGd1ZXN0cy4iLAogICAgICAgICJUaGUgc3RhZmYgd2lsbCBoYXZlIHRvIHdhbGsgdG8gdGhlIGV2ZW50LiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMwogICAgICB9CiAgICAgXQogICAgfQogICBdCiAgfSwKICB7CiAgICJuYW1lIjogIlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwKICAgImhlYWRlclRpdGxlIjogIlByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwKICAgImludHJvVGl0bGUiOiAiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwKICAgImludHJvQnVsbGV0cyI6IFsKICAgICJZb3Ugd2lsbCBoZWFyIGEgcmVwb3J0IG9uY2UuIEl0IGlzIGFib3V0IDMgbWludXRlcyBsb25nLiIsCiAgICAiVGhlbiA2IHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudC4iCiAgIF0sCiAgICJxSW5zdHJ1Y3Rpb24iOiAiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsCiAgICJ0cmFuc2NyaXB0IjogIkFzaGEgTWlsbGVyIGlzIGEgZ3JhZGUgMTEgc3R1ZGVudCBhdCBHaWxlcyBTZWNvbmRhcnksIGEgcHJpdmF0ZSBzY2hvb2wuIFNoZSBpcyBwdXNoaW5nIGZvclxuaGVyIHNjaG9vbCB0byBjaGFuZ2UgdGhlaXIgc2Nob29sIHVuaWZvcm0gcG9saWN5LiBBc2hhIGhhcyByZWNlbnRseSBzdGFydGVkIGEgcGV0aXRpb25cbnByb3Rlc3RpbmcgdGhlIHNjaG9vbCdzIG1hbmRhdG9yeSBhdHRpcmUuIEhlciBjYXVzZSBoYXMgYXR0cmFjdGVkIGEgbGFyZ2UgbnVtYmVyIG9mXG5zdXBwb3J0ZXJzIHdpdGhpbiB0aGUgc3R1ZGVudCBib2R5LCBhbmQgYWxzbyBmcm9tIHNvbWUgcGFyZW50cyBhbmQgc2Nob29sIHN0YWZmLiBBdCB0aGVcbnNhbWUgdGltZSwgbWFueSBhbW9uZyB0aGUgc3R1ZGVudCBib2R5LCBmYWN1bHR5LCBhbmQgcGFyZW50cyBhcmUgaW4gZmF2b3VyIG9mIGNvbnRpbnVpbmdcbnRoZSBzY2hvb2wgdHJhZGl0aW9uLlxuXG5UaGUgZGViYXRlIGFib3V0IHdoZXRoZXIgb3Igbm90IHN0dWRlbnRzIHNob3VsZCB3ZWFyIGEgdW5pZm9ybSB0byBzY2hvb2wgb3Igbm90IGlzIHF1aXRlXG5jb21tb24gaW4gQ2FuYWRpYW4gcHJpdmF0ZSBzY2hvb2xzLiBBbHRob3VnaCBhIGZldyBwdWJsaWMgc2Nob29scyBhbHNvIHJlcXVpcmVcbnN0dWRlbnRzIHRvIHdlYXIgYSBzY2hvb2wgdW5pZm9ybSwgbW9zdCBwdWJsaWMgc2Nob29scyBkb25cdTIwMTl0IHJlcXVpcmUgdGhpcy5cblxuT25lIG9mIHRoZSBtb3N0IGNvbW1vbiBhcmd1bWVudHMgZm9yIHVuaWZvcm1zIGlzIHRoYXQgc3R1ZGVudHMgd2lsbCBub3QgYmUgYXMgZGlzdHJhY3RlZFxuZnJvbSB0aGVpciBzdHVkaWVzIGJ5IGZhc2hpb24gY2hvaWNlcyBvciBwZWVyIHByZXNzdXJlLiBDb25zZXF1ZW50bHksIHN0dWRlbnRzIGZvY3VzIG9uXG5iZXR0ZXIgZ3JhZGVzIGFuZCB0aGV5IGFyZSBhbHNvIGVhc2llciB0byBkaXNjaXBsaW5lLiBVbmlmb3JtcyBhcmUgYWxzbyB0aG91Z2h0IHRvIHBsYXkgYVxucm9sZSBpbiBjcmVhdGluZyBhIHNlbnNlIG9mIGJlbG9uZ2luZyBhbmQgc2Nob29sIGN1bHR1cmUgdGhhdCBpcyBpbXBvcnRhbnQgZm9yIGNvb3BlcmF0aW9uXG5hbmQgdW5pdHkuXG5cbkNyaXRpY3MsIHN1Y2ggYXMgY2hpbGQgcHN5Y2hvbG9naXN0IERyLiBKYXNvbiBGZXJndXNvbiwgc2F5IHRoZXJlIGlzIG5vIGNvbmNyZXRlIGV2aWRlbmNlXG50aGF0IGxpbmtzIHNjaG9vbCB1bmlmb3JtcyB0byBpbXByb3ZlZCBlZHVjYXRpb25hbCByZXN1bHRzLiBJbiBmYWN0LCBhY2FkZW1pYyBwZXJmb3JtYW5jZVxuc2NvcmVzIGluIHNjaG9vbHMgdGhhdCBhZG9wdCB1bmlmb3JtcyBhbmQgdGhvc2UgdGhhdCBkbyBub3Qgb2Z0ZW4gYXZlcmFnZSB0aGUgc2FtZS5cbk1vcmVvdmVyLCBkaXNzZW50ZXJzIHBvaW50IG91dCB0aGF0IHN0dWRlbnRzIHJlcXVpcmVkIHRvIHdlYXIgdW5pZm9ybXMgdHlwaWNhbGx5IG1hbmFnZVxudG8gZmlnaHQgdGhlIHJ1bGVzLCBhbmQgXCJpbmRpdmlkdWFsaXplXCIgdGhlaXIgdW5pZm9ybXMgYnkgd2VhcmluZyB1bmlxdWUgc2hvZXMgb3JcbmFjY2Vzc29yaWVzLiBCdXQgcGVyaGFwcyB0aGUgbW9zdCBkYW1hZ2luZyBhcmd1bWVudCBhZ2FpbnN0IHVuaWZvcm1zIGlzIHRoYXQgdGhleSBjYW5cbmRpc2NyaW1pbmF0ZSBhZ2FpbnN0IGNlcnRhaW4gcmVsaWdpb25zIG9yIGN1bHR1cmVzLlxuXG5UaGUgc2Nob29sXHUyMDE5cyBhZG1pbmlzdHJhdGlvbiBhZHZvY2F0ZXMgdGhhdCB0aGVyZSBpcyBhIG1pZGRsZSBncm91bmQuIFVuaWZvcm1zIGNhbiB3b3JrXG53aXRoIHN0dWRlbnRzJyBkaXZlcnNlIGN1bHR1cmFsIG5lZWRzLCBpZiB0aGUgc2Nob29sIGF1dGhvcml0aWVzIGNvbnN1bHQgcGFyZW50cyBhYm91dCB3aGF0XG5pcyBhY2NlcHRhYmxlLiBFeGNlcHRpb25zIGNvdWxkIGJlIG1hZGUsIHN1Y2ggYXMsIGZvciBleGFtcGxlLCBhbGxvd2luZyBNdXNsaW0gZ2lybHMgdG9cbndlYXIgbG9uZyBsb29zZSB0cm91c2VycyBpbnN0ZWFkIG9mIHNraXJ0cyB0aGF0IG1pZ2h0IG5vdCBwcm92aWRlIGFkZXF1YXRlIGNvdmVyYWdlLlxuXG5Bc2hhIE1pbGxlciB0aGlua3Mgc3VjaCBhY2NvbW1vZGF0aW9ucyBkb25cdTIwMTl0IHF1aXRlIHN1ZmZpY2UsIGFuZCBzaGUgYWR2YW5jZXMgYVxuZGlmZmVyZW50IGFsdGVybmF0aXZlLiBTaGUgaXMgc3VnZ2VzdGluZyB0aGF0IHVuaWZvcm1zIGJlIGFib2xpc2hlZCBpbiBmYXZvdXIgb2YgYSBkcmVzc1xuY29kZSB0aGF0IHNwZWNpZmllcyB0aGUga2luZHMgb2YgY2xvdGhlcyB0aGF0IGNhbiBiZSB3b3JuLCBpbmNsdWRpbmcgdGhlIGxlbmd0aCBvZiBkcmVzc2VzLFxuXG5cZmFtb3VudCBvZiBleHBvc2VkIHNraW4sIGNsZWFubGluZXNzLCBhbmQgc28gb24uIFNoZSBhcmd1ZXMgdGhpcyBzb2x1dGlvbiB3b3VsZCBhZGRyZXNzXG50aGUgY29uY2VybnMgb2YgYWxsIHBhcnRpZXMuIFN0dWRlbnRzIHdvdWxkblx1MjAxOXQgZmVlbCBjb25zdHJhaW5lZCBpbiBob3cgdGhleSBleHByZXNzIHRoZWlyXG5pZGVudGl0eSBhbmQgY3VsdHVyYWwgYmVsaWVmczsgbWVhbndoaWxlLCBhcHByb3ByaWF0ZSBzY2hvb2wgYXR0aXJlIGFuZCBkaXNjaXBsaW5lIHdvdWxkIGJlXG5tYWludGFpbmVkLiBTaGUgYWRkcyB0aGF0IGFkb2xlc2NlbmNlIGlzIGEgcGFydGljdWxhcmx5IGNyaXRpY2FsIHBoYXNlIGluIGEgcGVyc29uXHUyMDE5cyBsaWZlIGluXG53aGljaCB0aGV5IGFyZSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aG8gdGhleSBhcmUgYW5kIHdoZXJlIHRoZXkgZml0LCBhbmQgY2xvdGhpbmcgY2hvaWNlIGlzXG5hIHdheSB0byB0cnVseSBleHByZXNzIG9uZVx1MjAxOXMgaW50ZXJlc3RzIGFuZCBwZXJzb25hbGl0eS4iLAogICAic2VjdGlvbnMiOiBbCiAgICB7CiAgICAgImxhYmVsIjogIlJlcG9ydCIsCiAgICAgIm1lZGlhVHlwZSI6ICJhdWRpbyIsCiAgICAgImR1cmF0aW9uIjogMjE0LAogICAgICJ0aW1lTWludXRlcyI6IDQsCiAgICAgIm1lZGlhSW5zdHJ1Y3Rpb24iOiAiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIHRoZSByZXBvcnQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLAogICAgICJxdWVzdGlvbnMiOiBbCiAgICAgIHsKICAgICAgICJuIjogMSwKICAgICAgICJzdGVtIjogIkFzaGEgTWlsbGVyXHUyMDE5cyBjYW1wYWlnbiBoYXMgcmVjZWl2ZWQiLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgInVuYW5pbW91cyBzdXBwb3J0IGZyb20gc3R1ZGVudHMgYW5kIHRlYWNoZXJzLiIsCiAgICAgICAgIm9wcG9zaXRpb24gZnJvbSBhbGwgb2YgdGhlIHNjaG9vbFx1MjAxOXMgZmFjdWx0eS4iLAogICAgICAgICJyZXNpc3RhbmNlIGZyb20gdHJhZGl0aW9uYWxpc3RzIGluIHRoZSBzY2hvb2wuIiwKICAgICAgICAiZ3Jvd2luZyBtZWRpYSBzdXBwb3J0IGZvbGxvd2luZyB0aGUgc2Nob29sIGRlYmF0ZS4iCiAgICAgICBdLAogICAgICAgImtleSI6IDMKICAgICAgfSwKICAgICAgewogICAgICAgIm4iOiAyLAogICAgICAgInN0ZW0iOiAiU2Nob29sIHVuaWZvcm0gcG9saWN5IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJoYXMgYmVlbiBuZXdseSBpbXBsZW1lbnRlZCBpbiB0aGUgcHVibGljIHNjaG9vbCBzeXN0ZW0uIiwKICAgICAgICAiYWZmZWN0cyBtb3N0bHkgc3R1ZGVudHMgYXR0ZW5kaW5nIHByaXZhdGUgc2Nob29scy4iLAogICAgICAgICJpcyBiZWluZyBjb25zaWRlcmVkIGFzIGEgY291bnRyeS13aWRlIHBvbGljeSBpbiBDYW5hZGEuIiwKICAgICAgICAid2FzIGVsaW1pbmF0ZWQgYnkgYSBzdHVkZW50IGluaXRpYXRpdmUgYXQgR2lsZXMgU2Vjb25kYXJ5LiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMgogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDMsCiAgICAgICAic3RlbSI6ICJVbmlmb3JtcyBhcmUgZ2VuZXJhbGx5IGFkb3B0ZWQgYmVjYXVzZSB0aGV5IiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJlbGltaW5hdGUgaXNzdWVzIG9mIHJlbGlnaW91cyBhZmZpbGlhdGlvbnMuIiwKICAgICAgICAicHJvbW90ZSBlcXVhbCByaWdodHMgZm9yIGFsbCBzdHVkZW50cy4iLAogICAgICAgICJoZWxwIHN0dWRlbnRzIGZvY3VzIG9uIGFjYWRlbWljcywgbm90IGZhc2hpb24uIiwKICAgICAgICAicmVkdWNlIGF3YXJlbmVzcyBvZiBpbmRpdmlkdWFsIGlkZW50aXR5LiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMwogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDQsCiAgICAgICAic3RlbSI6ICJBY2NvcmRpbmcgdG8gdGhlIHJlcG9ydCwgb3Bwb25lbnRzIG9mIHVuaWZvcm1zIHN0YXRlIHRoYXQgdGhlaXIgdXNlIiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJpcyBub3QgYWx3YXlzIGN1bHR1cmFsbHkgc2Vuc2l0aXZlLiIsCiAgICAgICAgImltcGFjdHMgYWNhZGVtaWMgYWNoaWV2ZW1lbnQgbmVnYXRpdmVseS4iLAogICAgICAgICJkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBvYmVkaWVuY2UgaW4gY2xhc3MuIiwKICAgICAgICAibWF5IGdlbmVyYXRlIGZpZ2h0cyBhbW9uZ3N0IHN0dWRlbnRzLiIKICAgICAgIF0sCiAgICAgICAia2V5IjogMQogICAgICB9LAogICAgICB7CiAgICAgICAibiI6IDUsCiAgICAgICAic3RlbSI6ICJUaGUgc2Nob29sIGFkbWluaXN0cmF0aW9uIHNob3dzIiwKICAgICAgICJvcHRpb25zIjogWwogICAgICAgICJzb21lIGZsZXhpYmlsaXR5IHRvIHRoZSBlbmZvcmNlbWVudCBvZiB1bmlmb3JtIHJ1bGVzLiIsCiAgICAgICAgInVud2lsbGluZ25lc3MgdG8gYnJpbmcgdGhlIG1hdHRlciBmb3IgZGlzY3Vzc2lvbi4iLAogICAgICAgICJkaXNhcHByb3ZhbCBmb3IgdGVhY2hlcnMgd2hvIHN1cHBvcnQgdGhlIHBldGl0aW9uLiIsCiAgICAgICAgImludGVudGlvbiB0byBiYW4gdGhlIHVzZSBvZiB1bmlmb3JtIHJ1bGVzIGluIHRoZSBmdXR1cmUuIgogICAgICAgXSwKICAgICAgICJrZXkiOiAxCiAgICAgIH0sCiAgICAgIHsKICAgICAgICJuIjogNiwKICAgICAgICJzdGVtIjogIkFuIGFsdGVybmF0aXZlIHRvIHRoZSBwcmV2YWlsaW5nIHVuaWZvcm0gcG9saWN5LCBBc2hhIHN1Z2dlc3RzIHRoYXQgdGhlIHNjaG9vbCBzaG91bGQiLAogICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgImFsbG93IE11c2xpbSBnaXJscyB0byB3ZWFyIHBhbnRzLiIsCiAgICAgICAgImFsbG93IHN0dWRlbnRzIHRvIHBlcnNvbmFsaXplIHRoZWlyIHVuaWZvcm1zIHdpdGggYWNjZXNzb3JpZXMuIiwKICAgICAgICAiYWxsb3cgc3R1ZGVudHMgdG8gdm90ZSBvbiB3aGV0aGVyIHVuaWZvcm1zIHNob3VsZCBiZSBiYW5uZWQuIiwKICAgICAgICAicHJvdmlkZSBzdHVkZW50cyB3aXRoIGEgY2xlYXIgZHJlc3MgY29kZSB0byBiZSBhcHBsaWVkIHRvIHJlZ3VsYXIgY2xvdGhlcy4iCiAgICAgICBdLAogICAgICAgImtleSI6IDQKICAgICAgfQogICAgIF0KICAgIH0KICAgXQogIH0KIF0KfTsKCi8qIC0tLS0gWW91VHViZSB3aXJpbmc6IHBhc3RlIHRoZSB2aWRlbyBJRCBoZXJlIHdoZW4gdXBsb2FkZWQgKENFTFBJUF9WSURFT19MSVNULm1kKSAtLS0tICovCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAxIFRlc3QgMSBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 1 Practice Test 1: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-5611","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=5611"}],"version-history":[{"count":4,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5611\/revisions"}],"predecessor-version":[{"id":6614,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5611\/revisions\/6614"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=5611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}