{"id":6189,"date":"2026-07-06T05:49:32","date_gmt":"2026-07-06T05:49:32","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-13-test-1-listening\/"},"modified":"2026-07-12T03:25:04","modified_gmt":"2026-07-12T03:25:04","slug":"celpip-set-13-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-13-test-1-listening\/","title":{"rendered":"CELPIP Set 13 \u2013 Practice Test 1 Listening"},"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 13 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEzdDEtcDFzMS5tcDMiLCIwLjEiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxM3QxLXAxczIubXAzIiwiMC4yIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTN0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEzdDEtcDIubXAzIiwiMi4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTN0MS1wMy5tcDMiLCIzLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxM3QxLXA0Lm1wMyIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEzdDEtcDYubXAzIiwiNC4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTN0MS1wNS5tcDQifTt2YXIgQ0xQX0FVRElPX1ZJREVPPXsiNC4wIjoxfTsKCihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT0gQ0VMUElQIExpc3RlbmluZyBQcmFjdGljZSBcdTIwMTQgc2NvcGVkLCBXb3JkUHJlc3Mtc2FmZSA9PT09PT09PT09PT0gKi9cbi5jbHAtd3JhcHtcbiAgLyogVkFSSUFOVF9DSFJPTUVfU1RBUlQgKi9cbiAgLS1iYXItYmc6I0U4RUJFRjtcbiAgLS1iYXItYm9yZGVyOiNEM0Q5RTA7XG4gIC0tYmFyLXRleHQ6IzFGMjkzNztcbiAgLS1wYW5lbC1tZWRpYS1iZzojRjRGNUY3O1xuICAtLXBhbmVsLW1lZGlhLWJvcmRlcjojRTNFNkVBO1xuICAtLW1lZGlhLWNhcmQtYmc6I0VDRUVGMTtcbiAgLS1tZWRpYS1jYXJkLWJvcmRlcjojRDhEREUzO1xuICAtLXBhbmVsLXEtYmc6I0U5RjRGNztcbiAgLS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEO1xuICAtLWRkLW9wZW4tYmc6I0NCRUJGNDtcbiAgLyogVkFSSUFOVF9DSFJPTUVfRU5EICovXG4gIC0tbmF2eTojMDUwRTIwOyAtLWRhcms6IzBBMTYyODsgLS1iOTAwOiMwRDIzNTI7IC0tYjcwMDojMTI0NUE4OyAtLWI1MDA6IzI1NjNFQjtcbiAgLS1iNDAwOiMzQjgyRjY7IC0tYjIwMDojOTNDNUZEOyAtLWIxMDA6I0RCRUFGRTsgLS1iNTA6I0VGRjZGRjtcbiAgLS10ZWFsOiMwRDk0ODg7IC0tY3lhbjojMDZCNkQ0OyAtLWdyZWVuOiMxMEI5ODE7IC0tZ3JlZW41MDojRUNGREY1O1xuICAtLXJvc2U6I0Y0M0Y1RTsgLS1vcmFuZ2U6I0Y5NzMxNjtcbiAgLS10ZXh0OiMwRjE3MkE7IC0tbXV0ZWQ6IzQ3NTU2OTsgLS1zdWJ0bGU6Izk0QTNCODsgLS1ib3JkZXI6I0UyRThGMDtcbiAgLS1jcmltc29uOiNCNDJCM0M7IC0td2hpdGU6I0ZGRkZGRjsgLS1wYWdlOiNGOEZBRkY7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtcbiAgY29sb3I6dmFyKC0tdGV4dCk7XG4gIG1heC13aWR0aDoxMTQwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTZweCAxNnB4IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OjEuNTsgZm9udC1zaXplOjE2cHg7XG59XG4uY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH1cbi5jbHAtd3JhcCBidXR0b257IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLXdyYXAgaDEsLmNscC13cmFwIGgyLC5jbHAtd3JhcCBoMywuY2xwLXdyYXAgcHsgbWFyZ2luOjA7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uY2xwLWhlcm97XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6MjJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1uYXZ5KTsgY29sb3I6I2ZmZjtcbiAgcGFkZGluZzozNnB4IDQwcHg7XG4gIGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDtcbiAgYm94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7XG59XG4uY2xwLWF1cm9yYXsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH1cbi5jbHAtYXVyb3JhIHNwYW57XG4gIHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjUwJTsgZmlsdGVyOmJsdXIoNjBweCk7IG9wYWNpdHk6LjU7XG4gIGFuaW1hdGlvbjpjbHBGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7IHdpZHRoOjQyMHB4OyBoZWlnaHQ6NDIwcHg7IGxlZnQ6LTEyMHB4OyB0b3A6LTIwMHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXsgd2lkdGg6MzgwcHg7IGhlaWdodDozODBweDsgcmlnaHQ6LTgwcHg7IHRvcDotMTYwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotNHM7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpeyB3aWR0aDozNDBweDsgaGVpZ2h0OjM0MHB4OyByaWdodDoyMiU7IGJvdHRvbTotMjQwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotOHM7IH1cbkBrZXlmcmFtZXMgY2xwRmxvYXR7XG4gIGZyb217IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7IH1cbiAgdG97IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7IH1cbn1cbi5jbHAtaGVyby1zaGltbWVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMTQ3LDE5NywyNTMsLjEwKSA0NSUsIHJnYmEoNiwxODIsMjEyLC4xMikgNTAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBiYWNrZ3JvdW5kLXNpemU6MjUwJSAxMDAlO1xuICBhbmltYXRpb246Y2xwU2hpbW1lciA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgY2xwU2hpbW1lcnsgMCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDA7fSA1NSV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSAxMDAle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gfVxuLmNscC1oZXJvLWJhZGdlc3sgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6Y2VudGVyOyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtYmFkZ2UtYnJhbmR7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjEycHg7XG4gIGxldHRlci1zcGFjaW5nOi4xMmVtOyBwYWRkaW5nOjVweCAxMnB4OyBib3JkZXItcmFkaXVzOjZweDtcbn1cbi5jbHAtYmFkZ2Utc2V0eyBjb2xvcjp2YXIoLS1iMjAwKTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuLmNscC1oZXJvIGgxeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgbGluZS1oZWlnaHQ6MS4xMjsgfVxuLmNscC1oZXJvLWNoaXBzeyBkaXNwbGF5OmZsZXg7IGdhcDo4cHg7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1jaGlwe1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7XG4gIGNvbG9yOiNEQkVBRkU7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IHBhZGRpbmc6NnB4IDE0cHg7IGJvcmRlci1yYWRpdXM6MzJweDtcbiAgYmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbn1cbi5jbHAtY2hpcDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpOyB9XG4uY2xwLWN0YXtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzNHB4OyBtYXJnaW4tdG9wOjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSwgYm94LXNoYWRvdyAuMjJzIGVhc2UsIGJhY2tncm91bmQgLjIycyBlYXNlO1xufVxuLmNscC1jdGE6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RJQ0tZIFRPT0xCQVIgPT09PT09PT09PT09ICovXG4uY2xwLXRvb2xiYXJbaGlkZGVuXXsgZGlzcGxheTpub25lOyB9XG4uY2xwLXRvb2xiYXJ7XG4gIHBvc2l0aW9uOnN0aWNreTsgdG9wOjhweDsgei1pbmRleDo2MDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Mik7IGJhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4O1xuICBwYWRkaW5nOjhweCAxMnB4OyBtYXJnaW46MThweCAwIDA7XG4gIGJveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTtcbiAgbWluLWhlaWdodDo1MnB4O1xufVxuLmNscC1zY29yZS1jaGlwe1xuICBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6N3B4IDE2cHg7XG59XG4uY2xwLXRidG57XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzo5cHggMTZweDtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDo0MHB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYm94LXNoYWRvdyAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtdGJ0bjpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXRidG4tY2hlY2t7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyB9XG4uY2xwLXRidG4tY2hlY2s6aG92ZXJ7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuLmNscC10YnRuW2Rpc2FibGVkXXsgb3BhY2l0eTouNTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06bm9uZTsgYm94LXNoYWRvdzpub25lOyB9XG4uY2xwLXRvb2xiYXItc3BhY2VyeyBmbGV4OjE7IH1cblxuLyogPT09PT09PT09PT09IENBVCBTSU1VTEFUT1IgPT09PT09PT09PT09ICovXG4uY2xwLXNpbXsgbWFyZ2luLXRvcDoxOHB4OyB9XG4uY2xwLWRvdHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjZweDsgbWFyZ2luOjAgMCAxMHB4IDJweDsgfVxuLmNscC1kb3R7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1zdWJ0bGUpO1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6NHB4IDEwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsIGNvbG9yIC4yNXMgZWFzZTtcbn1cbi5jbHAtZG90LmNscC1kb25leyBiYWNrZ3JvdW5kOnZhcigtLWIxMDApOyBib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLWRvdC5jbHAtY3VyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IH1cbi5jbHAtZG90LmNscC1jbGlja2FibGV7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLWRvdDpub3QoLmNscC1jbGlja2FibGUpeyBjdXJzb3I6ZGVmYXVsdDsgfVxuXG4uY2xwLWNhdHtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6dmlzaWJsZTtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwgMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7XG59XG4uY2xwLWJhcntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7XG4gIHBhZGRpbmc6OXB4IDEycHg7IG1pbi1oZWlnaHQ6NDRweDtcbn1cbi5jbHAtYmFyLXRpdGxleyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtYmFyLXRpbWVyeyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH1cbi5jbHAtYmFyLXRpbWVyIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1uZXh0e1xuICBiYWNrZ3JvdW5kOnZhcigtLWI3MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIHBhZGRpbmc6N3B4IDE2cHg7IG1pbi1oZWlnaHQ6MzBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG59XG4uY2xwLW5leHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjkwMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyB9XG4uY2xwLXNjcmVlbnsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4OyBvdmVyZmxvdzpoaWRkZW47IH1cblxuLmNscC1pbnN0cntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBnYXA6OXB4O1xuICBwYWRkaW5nOjE0cHggMTZweCAxMnB4OyBiYWNrZ3JvdW5kOiNmZmY7XG59XG4uY2xwLWluZm97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MThweDsgaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6MnB4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTFweDsgZm9udC1zdHlsZTppdGFsaWM7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtcbn1cbi5jbHAtaW5zdHIgcHsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tYjkwMCk7IH1cblxuLyogaW50cm8gc2NyZWVuICovXG4uY2xwLWludHJvLWJvZHl7IHBhZGRpbmc6NnB4IDIwcHggMjZweCA0NHB4OyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtaW50cm8tYm9keSBoM3sgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjgwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTJweDsgfVxuLmNscC1idWxsZXRzeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgbWF4LXdpZHRoOjY0MHB4OyB9XG4uY2xwLWJ1bGxldHMgbGl7XG4gIGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWI5MDApO1xuICBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5jbHAtYnVsbGV0cyBsaTo6YmVmb3JleyBjb250ZW50OlwiXCI7IGZsZXg6bm9uZTsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgbWFyZ2luLXRvcDo2cHg7IH1cblxuLyogbWVkaWEgc2NyZWVuICovXG4uY2xwLW1lZGlhLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLW1lZGlhLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtbWVkaWEtYm9yZGVyKTtcbiAgcGFkZGluZzozNHB4IDIwcHggMjZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7XG59XG4uY2xwLW1lZGlhLWNhcmR7XG4gIHdpZHRoOjEwMCU7IG1heC13aWR0aDo1MjBweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1tZWRpYS1jYXJkLWJnKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgcGFkZGluZzoyMnB4IDI2cHg7XG59XG4uY2xwLW1lZGlhLWNhcmQuY2xwLWlzLXZpZGVveyBtYXgtd2lkdGg6NjYwcHg7IHBhZGRpbmc6MTJweDsgfVxuLmNscC1tZWRpYS16b25leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE4cHg7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS16b25le1xuICBhc3BlY3QtcmF0aW86MTYvOTsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6dmFyKC0tZGFyayk7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEycHg7XG4gIGNvbG9yOiNmZmY7XG59XG4uY2xwLXNwZWFrZXJ7XG4gIGZsZXg6bm9uZTsgd2lkdGg6NTZweDsgaGVpZ2h0OjU2cHg7IGJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xufVxuLmNscC1pcy12aWRlbyAuY2xwLXNwZWFrZXJ7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpOyBib3JkZXI6bm9uZTsgY29sb3I6I2ZmZjsgd2lkdGg6NjRweDsgaGVpZ2h0OjY0cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB9XG4uY2xwLW1lZGlhLW1haW57IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS1tYWlueyBwYWRkaW5nOjAgMTBweCA0cHg7IH1cbi5jbHAtbWVkaWEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLXByb2dyZXNzeyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtcHJvZ3Jlc3N7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7IH1cbi5jbHAtcHJvZ3Jlc3MtZmlsbHsgaGVpZ2h0OjEwMCU7IHdpZHRoOjAlOyBiYWNrZ3JvdW5kOnZhcigtLWN5YW4pOyBib3JkZXItcmFkaXVzOjZweDsgdHJhbnNpdGlvbjp3aWR0aCAuM3MgbGluZWFyOyB9XG4uY2xwLW1lZGlhLW1ldGF7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwO1xufVxuLmNscC1tZWRpYS1tZXRhIHN2Z3sgZGlzcGxheTpibG9jazsgfVxuLmNscC1vbmNlLW5vdGV7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo2MDA7IH1cblxuLyogcXVlc3Rpb24gc2NyZWVuICovXG4uY2xwLXEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtcbiAgcGFkZGluZzoyMHB4IDIycHggMzBweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoyMHB4O1xufVxuLmNscC1xeyBmb250LXNpemU6MTUuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBsaW5lLWhlaWdodDoyOyB9XG4uY2xwLXFudW17IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1kZHtcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4O1xuICBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToycHggZG90dGVkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIGNvbG9yOnZhcigtLWI3MDApOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwO1xuICBwYWRkaW5nOjRweCA4cHggM3B4OyBtYXJnaW46MCAycHg7IG1pbi1oZWlnaHQ6MzJweDsgbWF4LXdpZHRoOjEwMCU7XG4gIGJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWRkOmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMzcsOTksMjM1LC4wOCk7IH1cbi5jbHAtZGQuY2xwLW9wZW57IGJhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7IH1cbi5jbHAtZGQgLmNscC1kZC10ZXh0e1xuICBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbWF4LXdpZHRoOjQyMHB4O1xufVxuLmNscC1kZCAuY2xwLWRkLWNhcmV0eyBmb250LXNpemU6OXB4OyBjb2xvcjp2YXIoLS1iNzAwKTsgZmxleDpub25lOyB9XG4uY2xwLWRkLmNscC11bmFuc3dlcmVkIC5jbHAtZGQtdGV4dHsgbGV0dGVyLXNwYWNpbmc6MnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyB9XG4uY2xwLWRkLmNscC1tYXJrLXJpZ2h0eyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiMwNDc4NTc7IH1cbi5jbHAtZGQuY2xwLW1hcmstd3Jvbmd7IGJhY2tncm91bmQ6I0ZGRjFGMjsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiNCRTEyM0M7IH1cbi5jbHAtZGRbZGlzYWJsZWRdeyBjdXJzb3I6ZGVmYXVsdDsgfVxuLmNscC1yZXZlYWx7XG4gIGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxMy41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzA0Nzg1NzsgbGluZS1oZWlnaHQ6MS41O1xuICBtYXJnaW46MnB4IDAgMCAyNnB4O1xufVxuLmNscC1yZXZlYWwgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLXRvZG8tdGFne1xuICBmb250LXNpemU6MTBweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgY29sb3I6dmFyKC0tb3JhbmdlKTtcbiAgYm9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjFweCA2cHg7IG1hcmdpbi1sZWZ0OjhweDsgdmVydGljYWwtYWxpZ246MnB4O1xufVxuXG4vKiBkcm9wZG93biBwb3B1cCAqL1xuLmNscC1wb3B7XG4gIHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjgwOyB3aWR0aDptaW4oMzQwcHgsIGNhbGMoMTAwdncgLSA0OHB4KSk7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGJveC1zaGFkb3c6MCAxOHB4IDQwcHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjgpLCAwIDRweCAxMnB4IC02cHggcmdiYSgxNSwyMyw0MiwuMTQpO1xuICBwYWRkaW5nOjZweDsgXG59XG4uY2xwLW9wdHtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMXB4OyB3aWR0aDoxMDAlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgcGFkZGluZzoxMHB4IDEycHg7IG1pbi1oZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG4gIGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlO1xufVxuLmNscC1vcHQ6bGFzdC1jaGlsZHsgYm9yZGVyLWJvdHRvbTpub25lOyB9XG4uY2xwLW9wdDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXJhZGlve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE3cHg7IGhlaWdodDoxN3B4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlveyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IH1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpbzo6YWZ0ZXJ7XG4gIGNvbnRlbnQ6XCJcIjsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjIuNXB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTtcbn1cblxuLyogcHJlLXN0YXJ0IC8gZmluaXNoICovXG4uY2xwLWlkbGV7XG4gIHBhZGRpbmc6NTZweCAyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7XG59XG4uY2xwLWlkbGUgcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXgtd2lkdGg6NDgwcHg7IG1hcmdpbjowIGF1dG87IH1cbi5jbHAtZmluaXNoeyBwYWRkaW5nOjQ4cHggMjRweCA1NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWZpbmlzaCBoM3sgZm9udC1zaXplOjIycHg7IGZvbnQtd2VpZ2h0OjgwMDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLWZpbmlzaCBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MjJweDsgfVxuLmNscC1maW5pc2gtY2hlY2t7XG4gIGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzJweDsgbWluLWhlaWdodDo0NHB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgxNiwxODUsMTI5LC41NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1maW5pc2gtY2hlY2s6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cblxuLyogPT09PT09PT09PT09IFJFU1VMVFMgPT09PT09PT09PT09ICovXG4uY2xwLXJlc3VsdHN7IG1hcmdpbi10b3A6MzBweDsgfVxuLmNscC1yZXN1bHRzIGgyeyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IG1hcmdpbi1ib3R0b206MTZweDsgfVxuLmNscC1yZXMtZ3JpZHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7IGdhcDoxNnB4OyBhbGlnbi1pdGVtczpzdHJldGNoOyB9XG4uY2xwLWNhcmR7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IHBhZGRpbmc6MjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDhweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjA4KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5jbHAtY2FyZDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxNnB4IDM2cHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtcmluZy1jYXJkeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtaW4td2lkdGg6MjIwcHg7IH1cbi5jbHAtcmluZy13cmFweyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTMycHg7IGhlaWdodDoxMzJweDsgfVxuLmNscC1yaW5nLXdyYXAgc3ZneyB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtcmluZy1udW17XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcbiAgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LXdlaWdodDo4MDA7XG59XG4uY2xwLXJpbmctbnVtIGJ7IGZvbnQtc2l6ZToyOHB4OyBsaW5lLWhlaWdodDoxOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1yaW5nLW51bSBzcGFueyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXJpbmctY2FyZCBoM3sgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXBhcnQtY2hpcHN7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH1cbi5jbHAtcGFydC1jaGlwe1xuICBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6OHB4IDE2cHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgY29sb3I6dmFyKC0tYjkwMCk7XG59XG4uY2xwLXBhcnQtY2hpcCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtY2xiLXJvd3tcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7XG59XG4uY2xwLWNsYi1iYWRnZXtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDtcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjhweCAxNnB4O1xufVxuLmNscC1jbGItcm93IHB7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDsgZmxleDoxOyBtaW4td2lkdGg6MjAwcHg7IH1cbi5jbHAtdHJhbnNjcmlwdHN7IG1hcmdpbi10b3A6MTZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyB9XG4uY2xwLXRyLWNhcmR7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC10ci1oZWFke1xuICB3aWR0aDoxMDAlOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxMHB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgcGFkZGluZzoxNXB4IDIwcHg7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1pbi1oZWlnaHQ6NDhweDtcbn1cbi5jbHAtdHItaGVhZDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXRyLWhlYWQgLmNscC10ci1jYXJldHsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC1zaXplOjExcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlOyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1jYXJldHsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9XG4uY2xwLXRyLWJvZHl7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzowIDIwcHggMThweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NTAwOyBsaW5lLWhlaWdodDoxLjc7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWJvZHl7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtdHItdG9kb3sgY29sb3I6dmFyKC0tb3JhbmdlKTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MTIuNXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjhweDsgfVxuXG4vKiBzY3JvbGwgcmV2ZWFsICovXG4uY2xwLXJldnsgb3BhY2l0eTowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KTsgdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlLCB0cmFuc2Zvcm0gLjVzIGVhc2U7IH1cbi5jbHAtcmV2LmNscC1pbnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOjcwMHB4KXtcbiAgLmNscC13cmFweyBwYWRkaW5nOjEwcHggMTBweCA0MHB4OyB9XG4gIC5jbHAtaGVyb3sgcGFkZGluZzoyOHB4IDIycHg7IGJvcmRlci1yYWRpdXM6MTZweDsgfVxuICAuY2xwLXF7IGZvbnQtc2l6ZToxNXB4OyB9XG4gIC5jbHAtZGR7IG1pbi1oZWlnaHQ6NDBweDsgfVxuICAuY2xwLWRkIC5jbHAtZGQtdGV4dHsgbWF4LXdpZHRoOjE4MHB4OyB9XG4gIC5jbHAtYmFyeyBmbGV4LXdyYXA6d3JhcDsgfVxuICAuY2xwLWJhci10aXRsZXsgZmxleC1iYXNpczoxMDAlOyB9XG4gIC5jbHAtcS1wYW5lbHsgcGFkZGluZzoxNnB4IDE0cHggMjZweDsgfVxuICAuY2xwLWludHJvLWJvZHl7IHBhZGRpbmctbGVmdDoyMHB4OyB9XG4gIC5jbHAtcmVzLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IH1cbiAgLmNscC1tZWRpYS1jYXJkeyBwYWRkaW5nOjE2cHg7IH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXtcbiAgLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcntcbiAgICBhbmltYXRpb246bm9uZSAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOm5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuY2xwLXJldnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxufVxuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKJ3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEVTVF9EQVRBIFx1MjAxNCBzd2FwIGluIG5ldyBzZXRzIGhlcmUgd2l0aG91dCB0b3VjaGluZyBtYXJrdXAuCiAgIFNoYXBlOiB7IHBhcnRzOlt7IG5hbWUsIGhlYWRlclRpdGxlLCBpbnRyb1RpdGxlLCBpbnRyb0J1bGxldHNbXSwKICAgICAgICAgICAgcUluc3RydWN0aW9uLCB0cmFuc2NyaXB0LCBzZWN0aW9uczpbeyBsYWJlbCwgbWVkaWFUeXBlLAogICAgICAgICAgICBkdXJhdGlvbihzZWMpLCB0aW1lTWludXRlcywgbWVkaWFJbnN0cnVjdGlvbiwKICAgICAgICAgICAgcXVlc3Rpb25zOlt7IG4sIHN0ZW0sIG9wdGlvbnNbNF0sIGtleSgxLTQpLCB0b2RvPyB9XSB9XSB9XSB9CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp2YXIgVEVTVF9EQVRBID0geyJ0ZXN0TGFiZWwiOiJTZXQgMTMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjoiMTMiLCJ0ZXN0Tm8iOiIxIiwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAxMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgc3R1ZGVudCBhbmQgYSBzdGFmZiBtZW1iZXIuIFRoZXkgYXJlIGluIGEgdW5pdmVyc2l0eSBjb21wdXRlciBsYWIuIEl0IHBsYXlzIGluIHRocmVlIHNlY3Rpb25zLCBhbmQgZWFjaCBzZWN0aW9uIHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciBlYWNoIHNlY3Rpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmdcbllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIHN0dWRlbnQgYW5kIGEgc3RhZmYgbWVtYmVyLiBUaGV5IGFyZSBpbiBhXG51bml2ZXJzaXR5IGNvbXB1dGVyIGxhYi5cblNlY3Rpb24gMTpcbldPTUFOOiBXZWxjb21lIHRvIHRoZSBjb21wdXRlciBsYWIuIFNpdCBhbnl3aGVyZSB5b3UgbGlrZS4gSWYgeW91IGhhdmUgYW55XG5xdWVzdGlvbnMsIHBsZWFzZSBsZXQgbWUga25vdy5cbk1BTjogVGhhbmtzISBJXHUyMDE5bSBkb2luZyBhIHByYWN0aWNlIGV4YW0gZm9yIG9uZSBvZiBteSBjbGFzc2VzIHRvZGF5LCBzbyBJIHdvdWxkIGxpa2UgYVxuY29tcHV0ZXIgaW4gYSBxdWlldCBjb3JuZXIgc29tZXdoZXJlLlxuV09NQU46IFRoZSBjb21wdXRlcnMgbmV4dCB0byB0aGUgYm9va3NoZWx2ZXMgaW4gdGhlIGJhY2sgYXJlIGEgbGl0dGxlIG91dC1vZi10aGUtXG53YXksIHNvIGl0IHNob3VsZCBiZSBwcmV0dHkgcXVpZXQuXG5NQU46IFRoYW5rcy4gSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBzdHVkeWluZy4gSVx1MjAxOW0gd29ycmllZCBhYm91dCB0aGlzIGV4YW0gYmVjYXVzZVxuSSd2ZSBtaXNzZWQgYSBsb3Qgb2YgY2xhc3NlcyB0aGlzIHBhc3QgdGVybS5cbldPTUFOOiBXZWxsLCB5b3UndmUgY29tZSB0byB0aGUgcmlnaHQgcGxhY2UuIFtwYXVzZV0gTXkgbmFtZVx1MjAxOXMgRGVib3JhaC4gSVx1MjAxOW0ganVzdFxuZmlsbGluZyBpbiBhdCB0aGUgbGFiIHRvZGF5LiBOb3JtYWxseSwgSSB3b3JrIGRvd24gdGhlIGhhbGwgaW4gdGVjaG5pY2FsIHN1cHBvcnQsIHNvIGlmIHlvdVxuaGF2ZSBhbnkgdGVjaG5pY2FsIHByb2JsZW1zLCBJIHdvdWxkIGJlIGhhcHB5IHRvIGhlbHAgeW91LiBHb29kIGx1Y2shXG5NQU46IFRoYXRcdTIwMTlzIGdvb2QgdG8ga25vdywgdGhhbmtzLiBIb3cgbG9uZyBpcyB0aGUgbGFiIG9wZW4gdG9uaWdodD9cbldPTUFOOiAgICAgICAgVW50aWwgMTEuIFRoYXQgc2hvdWxkIGdpdmUgeW91IHBsZW50eSBvZiB0aW1lLlxuU2VjdGlvbiAyOlxuTWFuOiBFeGN1c2UgbWUsIEknbSBoYXZpbmcgdGVjaG5pY2FsIHByb2JsZW1zLiBDb3VsZCB5b3UgaGVscCBtZT8gSSBjYW5cdTIwMTl0IGxvZyBpbiB3aXRoXG5teSB1c2VybmFtZS5cbldvbWFuOiAgICAgICBTdXJlLCBsZXQgbWUgdGFrZSBhIGxvb2suIChwYXVzZSkgT2ggeWVzLCB5b3UgbmVlZCB0byB1c2UgeW91ciBlbWFpbFxuYWRkcmVzcyBhcyB5b3VyIHVzZXJuYW1lIGFuZCB0aGVuIGVudGVyIHRoZSBleGFtIGNvZGUgYmVsb3cgaXQuXG5NYW46IEkgZGlkIHRoYXQsIGJ1dCB0aGUgc2NyZWVuIHN0aWxsIGlzblx1MjAxOXQgbG9hZGluZyEgSSBuZWVkIHRvIGZpbmlzaCB0aGlzIHRvZGF5ISBJIHRoaW5rXG5zb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGlzIGNvbXB1dGVyLlxuV29tYW46ICAgICAgIEhtbSwgbGV0XHUyMDE5cyBjbGVhciB0aGUgY2FjaGUgYW5kIGNoZWNrIHRoZSBzZXR0aW5ncy4gV2Ugc2hvdWxkIGFsc28gZG91YmxlXG5jaGVjayB5b3VyIGV4YW0gY29kZTsgbWF5YmUgeW91IG1hZGUgYSB0eXBvLlxuTWFuOiBVZ2hcdTIwMjYgSSBjYW5cdTIwMTl0IGJlbGlldmUgdGhpcyEgW3NvdW5kaW5nIGZydXN0cmF0ZWRdIE15IGNsYXNzbWF0ZXMgd2VyZSBhYmxlIHRvIGRvXG50aGUgZXhhbSB1c2luZyB0aGUgc2FtZSBjb2RlISBIb3cgbXVjaCBtb3JlIHRpbWUgYW0gSSBnb2luZyB0byB3YXN0ZSBiZWZvcmUgc3RhcnRpbmdcbnRoZSB0ZXN0P1xuV29tYW46ICAgICAgICBMZXRcdTIwMTlzIHRyeSB0byByZWxheC4gSVx1MjAxOW0gc3VyZSB3ZSBjYW4gZmlndXJlIHRoaXMgb3V0IGFuZCBnZXQgeW91IGdvaW5nIHNvb24uXG5NYW46IElcdTIwMTltIHNvcnJ5LCBidXQgSSBkb24ndCBoYXZlIHRpbWUgZm9yIHRoaXMuIElcdTIwMTlsbCBqdXN0IGJvcnJvdyBteSBmcmllbmRcdTIwMTlzIGNvbXB1dGVyLiBPbmVcbnRoYXQgYWN0dWFsbHkgd29ya3MhXG5TZWN0aW9uIDM6XG5Xb21hbjogICAgICAgICBHb29kIG1vcm5pbmchIFdlbGNvbWUgdG9cdTIwMjYgT2ghIEhlbGxvIGFnYWluLiBJIHRob3VnaHQgeW91IHdlcmUgZ29pbmdcbnRvIHVzZSB5b3VyIGZyaWVuZCdzIGNvbXB1dGVyISBXaGF0IGhhcHBlbmVkP1xuTWFuOiBXZWxsLCBpdCB0b29rIG1lIGEgd2hpbGUgdG8gZmluZCBoaW0uIEFuZCB3aGVuIEkgZmluYWxseSBmb3VuZCBoaW0sIGhpcyBsYXB0b3Bcbndhc24ndCB3b3JraW5nIGVpdGhlciEgSGUgYWNjaWRlbnRhbGx5IHNwaWxsZWQgY29mZmVlIG9uIHRoZSBrZXlib2FyZCBhbmQgaXQgc3RvcHBlZFxud29ya2luZy5cbldvbWFuOiAgICAgICAgT2ggbm8sIHRoYXRcdTIwMTlzIHRvbyBiYWQhIEkgaG9wZSB0aGUgc2NyZWVuIGlzIG9rYXkgYXQgbGVhc3QuXG5NYW46IEFueXdheSwgY2FuIHlvdSBoZWxwIG1lIHRvZGF5IGlmIEkgaGF2ZSB0cm91YmxlIGFnYWluPyBJIHJlYWxseSBuZWVkIHRvIGdldCBzb21lXG5wcmFjdGljZSBpbi4gTm93LCBJJ3ZlIG9ubHkgZ290IDI0IGhvdXJzLlxuV29tYW46ICAgICAgICAgWWVzLiBJbiBmYWN0Li4uIEkndmUgYWxyZWFkeSBmaXhlZCB0aGUgcHJvYmxlbS4gQSBzeXN0ZW0gdXBkYXRlIGhhZCBjaGFuZ2VkXG5vdXIgc2V0dGluZ3M7IHRoYXQncyB3aHkgeW91IGNvdWxkbid0IGxvZyBvbiBlYXJsaWVyLiBJJ3ZlIHJlc3RvcmVkIHRoZSBvcmlnaW5hbCBzZXR0aW5ncywgc29cbnRoZSBzeXN0ZW0gd29ya3Mgbm93LlxuTWFuOiBUaGFua3MgYWdhaW4uIFlvdVx1MjAxOXJlIGEgcmVhbCBsaWZlc2F2ZXIhIFtzb3VuZGluZyBncmF0ZWZ1bF0iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsImR1cmF0aW9uIjo0NiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2h5IGRpZCB0aGUgbWFuIGNvbWUgdG8gdGhlIGNvbXB1dGVyIGxhYj8iLCJvcHRpb25zIjpbInRvIHN0dWR5IGZvciBhbiBleGFtIiwidG8gcmV0dXJuIGEgYm9ycm93ZWQgbGFwdG9wIiwidG8gYXR0ZW5kIGEgc2NoZWR1bGVkIGNsYXNzIiwidG8gZml4IGEgYnJva2VuIGtleWJvYXJkIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgcHJvYmxlbSBkb2VzIHRoZSBtYW4gZXhwZWN0IHRvIGhhdmU\/Iiwib3B0aW9ucyI6WyJIZSBtYXkgZm9yZ2V0IGhpcyB1c2VybmFtZS4iLCJIZSBtYXkgaGF2ZSB0byBhc2sgYSBmcmllbmQgdG8gdHV0b3IgaGltLiIsIkhlIG1heSBydW4gb3V0IG9mIGV4YW0gcXVlc3Rpb25zLiIsIkhlIG1heSBsb3NlIGhpcyBzdHVkeSBub3Rlcy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDIiLCJkdXJhdGlvbiI6NDksIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIG5leHQgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjMsInN0ZW0iOiJXaGF0IGlzIHRydWUgYWJvdXQgdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiU2hlIHdyb3RlIHRoZSBleGFtIHF1ZXN0aW9ucy4iLCJTaGUgaXMgYSBmdWxsLXRpbWUgc3R1ZGVudC4iLCJTaGUgdXN1YWxseSB3b3JrcyBzb21ld2hlcmUgZWxzZS4iLCJTaGUgb3ducyB0aGUgY29tcHV0ZXIgbGFiLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIHdvbWFuIGJlbGlldmU\/Iiwib3B0aW9ucyI6WyJUaGUgZXhhbSBjb2RlIGhhcyBleHBpcmVkLiIsIlRoZSBtYW4gbWFkZSBhIG1pc3Rha2UgbG9nZ2luZyBvbi4iLCJUaGUgY29tcHV0ZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIiwiVGhlIGxhYiB3aWxsIGNsb3NlIGVhcmx5LiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBiZWxpZXZlPyIsIm9wdGlvbnMiOlsiSGUgd2lsbCBydW4gb3V0IG9mIHN0dWR5aW5nIHRpbWUuIiwiSGUgd2lsbCBmYWlsIHRoZSBwcmFjdGljZSBleGFtLiIsIkhlIHdpbGwgbmVlZCBhIG5ldyB1c2VybmFtZS4iLCJIZSB3aWxsIGdldCBoZWxwIGZyb20gdGhlIHdvbWFuLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsImR1cmF0aW9uIjo0MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJXaHkgaGFzIHRoZSBtYW4gcmV0dXJuZWQ\/Iiwib3B0aW9ucyI6WyJIZSBmb3Jnb3QgaGlzIGV4YW0gY29kZS4iLCJIZSB3YW50ZWQgdG8gdGhhbmsgdGhlIHdvbWFuLiIsIkhlIHdhcyB1bmFibGUgdG8gdXNlIGhpcyBmcmllbmQncyBkZXZpY2UuIiwiSGUgbmVlZGVkIHRvIHJlc2NoZWR1bGUgaGlzIGV4YW0uIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Nywic3RlbSI6IldoYXQgd2FzIHRoZSBwcm9ibGVtIHdpdGggdGhlIGxhcHRvcD8iLCJvcHRpb25zIjpbIkl0cyBzY3JlZW4gd2FzIGNyYWNrZWQuIiwiQ29mZmVlIHdhcyBzcGlsbGVkIG9uIHRoZSBrZXlib2FyZC4iLCJJdHMgYmF0dGVyeSB3b3VsZCBub3QgY2hhcmdlLiIsIkl0IHdhcyBtaXNzaW5nIHRoZSBleGFtIHNvZnR3YXJlLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IHdpbGwgbGlrZWx5IGhhcHBlbiBuZXh0PyIsIm9wdGlvbnMiOlsiVGhlIG1hbiB3aWxsIGJ1eSBhIG5ldyBsYXB0b3AuIiwiVGhlIG1hbiB3aWxsIGxlYXZlIHRoZSBsYWIuIiwiVGhlIG1hbiB3aWxsIGNhbGwgaGlzIGZyaWVuZC4iLCJUaGUgbWFuIHdpbGwgbG9nIG9uIHRvIHRoZSBjb21wdXRlci4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIG5laWdoYm91cnMuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvblxuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBuZWlnaGJvdXJzLlxuV09NQU46IEhpIFJvYmVydCEgWW91IHNob3VsZCBjbGVhbiB1cCB0aGUgbGVhdmVzIG9uIHlvdXIgbGF3biwgbGlrZSBJIGFtLiBNeVxuaHVzYmFuZCBzYXlzIHRvIGxldCB0aGUgbGVhdmVzIGJsb3cgZG93biB0aGUgc3RyZWV0LCBidXQgSSBsaWtlIHRvIGdldCByaWQgb2YgdGhlbSByaWdodFxuYXdheS5cbk1BTjogVGhhdCdzIGEgZ29vZCBpZGVhLiBJJ2xsIHRha2UgY2FyZSBvZiB0aGVtIGEgbGl0dGxlIGxhdGVyIHRvZGF5LiBIZXksIGFyZSB5b3UgZ29pbmcgdG9cbnRha2UgeW91ciBraWRzIHRvIHRoZSBQYXJhZGUgb2YgTGlnaHRzIHRoaXMgd2Vla2VuZD8gVGhlIHdlYXRoZXIncyBzdXBwb3NlZCB0byBiZSByZWFsbHlcbm5pY2Ugb24gU2F0dXJkYXksIHNvIHdlIHdvbid0IGZyZWV6ZSBsaWtlIGxhc3QgeWVhci5cbldPTUFOOiBXZSBzYXcgdGhlIFNhbnRhIENsYXVzIFBhcmFkZSBpbiBUb3JvbnRvLCBidXQgSSBoYXZlbid0IGhlYXJkIGFib3V0IHRoaXNcbm9uZS4gSXMgaXQgdGhlIHNhbWUgdGhpbmc\/IFNvcnQgb2YgYW4gb3JnYW5pemVkIHdhbGsgb24gbWFpbiBzdHJlZXRzIHRvIGNlbGVicmF0ZSBhIHNwZWNpYWxcbmV2ZW50P1xuTUFOOiBZZXMsIGJ1dCBoZXJlIGl0J3MgbXVjaCBzbWFsbGVyLlxuV09NQU46IFNvIHdobydzIGluIHRoaXMgcGFyYWRlPyBXaWxsIGFsbCB0aG9zZSBkZWNvcmF0ZWQgcGxhdGZvcm0gdGhpbmdzIGluIHRoZVxucGFyYWRlIGJlIHJlbGF0ZWQgdG8gQ2hyaXN0bWFzP1xuTUFOOiBZZWFoLCBmb3IgdGhlIG1vc3QgcGFydCB0aGVzZSBmbG9hdHMgaGF2ZSBhIENocmlzdG1hcyB0aGVtZS4gU29tZSBmbG9hdHMgYXJlXG5vcmdhbml6ZWQgYnkgdGhlIENoaWxkcmVuJ3MgSG9zcGl0YWwsIG9yIGxvY2FsIGN1bHR1cmFsIG9yZ2FuaXphdGlvbnMsIG9yIGNoYXJpdHkgZ3JvdXBzLlxuVGhlIGxhc3QgZmxvYXQgaXMgU2FudGEgQ2xhdXMgc2l0dGluZyBpbiBoaXMgc2xlaWdoIHdpdGggbG90cyBvZiBoaXMgaGVscGVycyBnaXZpbmcgY2FuZHkgdG9cbmtpZHMuXG5XT01BTjogV2VsbCwgd2UgY2VydGFpbmx5IGVuam95ZWQgdGhlIG9uZSBpbiBUb3JvbnRvLCBzbyB3ZSBzaG91bGQgc2VlIHdoYXQgdGhpc1xub25lIGlzIGxpa2UuIFdoYXQgdGltZSBkb2VzIHRoZSBwYXJhZGUgc3RhcnQ\/IE91ciBraWRzIGFyZSB0b28geW91bmcgdG8gc3RheSB1cCB2ZXJ5IGxhdGUuXG5NQU46IEl0IHN0YXJ0cyBhcm91bmQgNjowMHBtIGRvd250b3duLCBhbmQgaXQgdGFrZXMgYWJvdXQgdHdvIGhvdXJzIGZvciBpdCB0byB0cmF2ZWwgdGhlXG5mdWxsIGRpc3RhbmNlLiBTcHJpbmcgR2FyZGVuIFJvYWQgaXMgdGhlIGJlc3QgcGxhY2UgdG8gd2F0Y2ggYmVjYXVzZSB0aGF0J3MgaGFsZndheSBvbiB0aGVcbnJvdXRlLCBhbmQgeW91J3JlIGNsb3NlIHRvIHNob3BzIGFuZCByZXN0YXVyYW50cy5cbldPTUFOOiBUaGF0IHNvdW5kcyBnb29kLCBhbmQgdGhlIHBhcmFkZSBwcm9iYWJseSBmaW5pc2hlcyB0aGVyZSBpbiBhbiBob3VyLiBJXG5ndWVzcyB3ZSBuZWVkIGxvdHMgb2YgdGltZSBiZWZvcmVoYW5kIHRvIGZpbmQgcGFya2luZywgdGhvdWdoLiBJdCdzIGdvaW5nIHRvIGJlIGJ1c3ksXG5yaWdodD9cbk1BTjogT2ggeWVhaCwgaXQnbGwgYmUgYnVzeS4gV2UgdXN1YWxseSB0YWtlIHRoZSBraWRzIGRvd250b3duIGFyb3VuZCA0OjAwIGFuZCBoYXZlXG5kaW5uZXIgc29tZXdoZXJlLiBBZnRlciB0aGF0IHdlIGRvIGEgbGl0dGxlIHNob3BwaW5nLCB0aGVuIGZpbmQgYSBwbGFjZSB0byB3YXRjaCB0aGVcbnBhcmFkZSwgYW5kIHRoZW4gd2UganVzdCB3YWl0LlxuV09NQU46IFdlIHNob3VsZCBoYXZlIGRpbm5lciB0b2dldGhlciBhbmQgd2F0Y2ggdGhlIHBhcmFkZSB0b2dldGhlci4gVGhlIGtpZHNcbndvdWxkIHJlYWxseSBsaWtlIHRoYXQuIFdoYXQgZG8geW91IHRoaW5rP1xuTUFOOiBUaGF0J3MgYSBncmVhdCBpZGVhISBJJ2xsIGdldCBBbGlzb24gdG8gY2FsbCB5b3UgYW5kIGFycmFuZ2UgYWxsIHRoZSBkZXRhaWxzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxMTAsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGFyZSB0aGUgbWFuIGFuZCB3b21hbiBwbGFubmluZyB0byBkbz8iLCJvcHRpb25zIjpbImNsZWFuIHVwIHRoZSBsZWF2ZXMgdG9nZXRoZXIiLCJ0YWtlIHRoZWlyIGZhbWlsaWVzIHRvIGFuIGV2ZW50IiwiZ28gc2hvcHBpbmcgZG93bnRvd24iLCJvcmdhbml6ZSBhIHBhcmFkZSBmbG9hdCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaHkgZG8gdGhlIG1hbiBhbmQgd29tYW4gd2FudCB0byBiZSBlYXJseT8iLCJvcHRpb25zIjpbInRvIGZpbmQgYSBwYXJraW5nIHNwYWNlIiwidG8gaGVscCBzZXQgdXAgdGhlIHBhcmFkZSIsInRvIGdldCBmcm9udC1yb3cgc2VhdHMiLCJ0byBhdm9pZCB0aGUgY29sZCB3ZWF0aGVyIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2YgZXZlbnQ\/Iiwib3B0aW9ucyI6WyJTaGUgb3JnYW5pemVkIG9uZSBiZWZvcmUuIiwiU2hlIHJlYWQgYWJvdXQgaXQgb25saW5lLiIsIlNoZSB3YXRjaGVkIG9uZSBpbiBhbm90aGVyIGNpdHkuIiwiU2hlIGxpdmVzIG5lYXIgdGhlIHBhcmFkZSByb3V0ZS4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIHN1Z2dlc3QgZ29pbmcgdG8gdGhlIGV2ZW50IHRvZ2V0aGVyPyIsIm9wdGlvbnMiOlsiU2hlIHdhbnRzIHRvIHNoYXJlIGEgcmlkZS4iLCJTaGUgYmVsaWV2ZXMgdGhlaXIgY2hpbGRyZW4gd291bGQgaGF2ZSBmdW4gdG9nZXRoZXIuIiwiU2hlIGlzIGFmcmFpZCBvZiBnZXR0aW5nIGxvc3QuIiwiU2hlIG5lZWRzIGhlbHAgZmluZGluZyBwYXJraW5nLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgaXMgdGhlIHdvbWFuIHdvcnJpZWQgYWJvdXQgdGhlIGV2ZW50IHN0YXJ0IHRpbWU\/Iiwib3B0aW9ucyI6WyJUaGUgcGFyYWRlIG1pZ2h0IGJlIGNhbmNlbGxlZC4iLCJUaGUgd2VhdGhlciBjb3VsZCB0dXJuIGJhZC4iLCJIZXIga2lkcyBuZWVkIHRvIGJlIGluIGJlZCBlYXJseS4iLCJUaGUgcm91dGUgaXMgdG9vIGxvbmcgdG8gd2Fsay4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDEzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4uIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uXG5Zb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4uXG5NQU46IEhleSBBbmlrYSwgeW91XHUyMDE5cmUgaG9tZSBlYXJseSB0b2RheSEgRG8geW91IGhhdmUgYSBtaW51dGU\/IEkgd2FzIGhvcGluZyB5b3VcbmNvdWxkIGxvb2sgYXQgbXkgcmVzdW1cdTAwZTkuIElcdTIwMTl2ZSB1c2VkIGl0IHRvIGFwcGx5IGZvciB0b25zIG9mIGpvYnMsIGJ1dCBJIGhhdmVuXHUyMDE5dCBnb3R0ZW4gYVxuc2luZ2xlIHJlc3BvbnNlISBJIGNvdWxkIHJlYWxseSB1c2UgeW91ciBleHBlcnQgb3Bpbmlvbi5cbldPTUFOOiAobGF1Z2hpbmcpIFdlbGwsIFx1MjAxY2V4cGVydCBvcGluaW9uXHUyMDFkIG1pZ2h0IGJlIGFuIGV4YWdnZXJhdGlvblx1MjAxNElcdTIwMTltIG5vXG5wcm9mZXNzaW9uYWwuIEJ1dCwgSSBoYXZlIGhlbHBlZCBxdWl0ZSBhIGZldyBwZW9wbGUgaW4gdGhlIHBhc3QuLi4gW3BhdXNlXSBPa2F5LCBzbywgdGFraW5nXG5hIHF1aWNrIGxvb2ssIHlvdSBkb25cdTIwMTl0IHNlZW0gdG8gYmUgc2hvd2luZyB5b3VyIHN0cmVuZ3RocyB3aXRoIHRoaXMgcmVzdW1cdTAwZTkuXG5NQU46IFRoYXQgbWFrZXMgc2Vuc2UuIEkga25vdyBJIGhhdmUgdGhlIHF1YWxpZmljYXRpb25zLCBidXQgaXRcdTIwMTlzIGJlZW4gYSBsb25nIHRpbWUgc2luY2VcbklcdTIwMTl2ZSBoYWQgdG8gZG8gYSByZXN1bVx1MDBlOS5cbldPTUFOOiBXZWxsLCBteSBmaXJzdCBzdWdnZXN0aW9uIGlzIHRvIG1ha2UgeW91ciByZXN1bVx1MDBlOSBzdGFuZCBvdXQgaW4gc29tZSB3YXkuIEl0XG5tYXkgc2VlbSBzaW1wbGUsIGJ1dCBzb21lIGNvbG91ciBhbmQgYW4gaW50ZXJlc3RpbmcgZm9udCBjYW4gYmUgZXllLWNhdGNoaW5nIGFuZCBlbnRpY2VcbnNvbWVvbmUgdG8gYWN0dWFsbHkgdGFrZSBhIGxvb2sgYXQgeW91ciByZXN1bVx1MDBlOS4gWW91XHUyMDE5bGwgYWxzbyBuZWVkIHRvIGRvIG1vcmUgdGhhbiBqdXN0IGxpc3RcbnlvdXIgcGFzdCBqb2JzLlxuTUFOOiBUaGF0XHUyMDE5cyBhIGdyZWF0IGlkZWEhIEkgZGlkblx1MjAxOXQgZXZlbiB0aGluayBvZiBjb2xvdXIgYW5kIGFwcGVhcmFuY2VcdTIwMjYgRm9yIGNvbnRlbnQgSVxudGhvdWdodCB0aGUgd2hvbGUgcG9pbnQgd2FzIHRvIGxpc3QgdGhlIGpvYnMgSVx1MjAxOXZlIGhlbGQgb3ZlciB0aGUgbGFzdCAxMCB5ZWFycywgd2l0aCBhIGZld1xuZGV0YWlscyBhYm91dCBteSByb2xlcyBhbmQgcmVzcG9uc2liaWxpdGllcy5cbldPTUFOOiBXZWxsLCB0aGVzZSBkYXlzIGVtcGxveWVycyBvZnRlbiBoaXJlIHBlb3BsZSB3aG8gY2FuIHNob3cgdGhlIGltcGFjdFxudGhleVx1MjAxOXZlIG1hZGUgaW4gdGhlaXIgY29tcGFuaWVzLiBTaW5jZSB5b3Ugd2FudCB0byBoaWdobGlnaHQgeW91ciBsZWFkZXJzaGlwIGV4cGVyaWVuY2UsXG55b3Ugc2hvdWxkIGRlZmluaXRlbHkgbWVudGlvbiB0aGUgc2FsZXMgYW5kIG1hcmtldGluZyBzZW1pbmFycyB5b3UgY29uZHVjdGVkLiBUaG9zZVxuYm9vc3RlZCBwcm9maXRzIGZvciB5b3VyIHByZXZpb3VzIGNvbXBhbnkgMyB5ZWFycyBpbiBhIHJvdywgcmlnaHQ\/IFRoYXRcdTIwMTlzIGEgYmlnIGRlYWwhXG5NQU46IFllcywgZ29vZCBwb2ludCEgSSBoYWRuXHUyMDE5dCB0aG91Z2h0IG9mIHRoYXQuIEFueSBvdGhlciBhZHZpY2U\/XG5XT01BTjogV2VsbCwgeW91IG1heSB3YW50IHRvIHJlYXJyYW5nZSB5b3VyIHJlc3VtXHUwMGU5IGEgYml0IGJlY2F1c2UgaXRcdTIwMTlzIHZlcnlcbmNocm9ub2xvZ2ljYWwuIEFsdGhvdWdoIGl0XHUyMDE5cyBnb29kIHRvIGhhdmUgYW4gb3ZlcnZpZXcgb2Ygd2hhdCB5b3VcdTIwMTl2ZSBkb25lIG92ZXIgdGhlXG55ZWFycywgeW91IHNob3VsZCBicmllZmx5IG1lbnRpb24geW91ciBwcm9mZXNzaW9uYWwgc2tpbGxzIGZpcnN0LlxuTUFOOiBEbyB5b3UgbWVhbiB0aGluZ3MgbGlrZSBwcm9qZWN0IG1hbmFnZW1lbnQsIGJ1ZGdldGluZywgYW5kIGJ1c2luZXNzXG5uZWdvdGlhdGlvbj9cbldPTUFOOiBZZXMsIGV4YWN0bHkhIE5vdCBldmVyeW9uZSBwb3NzZXNzZXMgdGhvc2Ugc2tpbGxzLCBzbyB5b3UgcmVhbGx5IHNob3VsZCBwdXRcbnRoZW0gYXQgdGhlIHRvcCBvZiB5b3VyIHJlc3VtXHUwMGU5LlxuTUFOOiBUaGVzZSBhcmUgcmVhbGx5IHVzZWZ1bCBzdWdnZXN0aW9ucyEgVGhhbmtzIHNvIG11Y2ghIElcdTIwMTltIHNvIGdsYWQgSSBhc2tlZCB5b3UuXG5XT01BTjogR3JlYXQhIEp1c3QgYSBmZXcgbWlub3IgZml4ZXMgYW5kIHlvdVx1MjAxOWxsIGJlIGdldHRpbmcgdGhvc2UgcGhvbmUgY2FsbHMgeW91XHUyMDE5dmVcbmJlZW4gaG9waW5nIGZvciEgT2gsIGJlZm9yZSB5b3UgZ29cdTIwMTRqdXN0IGxldCBtZSBydW4gaW5zaWRlIHRoZSBob3VzZSBhbmQgZ3JhYiB0aGUgYm9va1xueW91IGxlbnQgbWUuIEl0IHdhcyBhIGdyZWF0IHJlYWQhIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjEzNywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgcHJvYmFibHkgdHJ1ZSBhYm91dCB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJTaGUgd29ya3MgaW4gaHVtYW4gcmVzb3VyY2VzLiIsIlNoZSBoYXMgYXNzaXN0ZWQgb3RoZXIgam9iLXNlZWtlcnMuIiwiU2hlIHJlY2VudGx5IGNoYW5nZWQgY2FyZWVycy4iLCJTaGUgd3JvdGUgYSBib29rIGFib3V0IHJlc3VtZXMuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgbGlrZWx5IGNhdXNpbmcgdGhlIG1hbidzIHByb2JsZW0\/Iiwib3B0aW9ucyI6WyJFbXBsb3llcnMgYXJlIHVuYXdhcmUgb2YgaGlzIHNraWxscy4iLCJIZSBsYWNrcyB0aGUgbmVjZXNzYXJ5IHF1YWxpZmljYXRpb25zLiIsIkhlIGFwcGxpZWQgdG8gdGhlIHdyb25nIGpvYnMuIiwiSGlzIHJlZmVyZW5jZXMgYXJlIG91dCBvZiBkYXRlLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGlzIHRydWUgYWJvdXQgdGhlIG1hbj8iLCJvcHRpb25zIjpbIkhlIGhhcyBuZXZlciBoYWQgYSByZXN1bWUgYmVmb3JlLiIsIkhlIHJlY2VudGx5IGdyYWR1YXRlZCBmcm9tIHNjaG9vbC4iLCJIZSBoZWxwZWQgaGlzIGNvbXBhbnkgbWFrZSBtb25leS4iLCJIZSB3b3JrcyBpbiB0aGUgc2FtZSBmaWVsZCBhcyB0aGUgd29tYW4uIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoYXQgd2lsbCB0aGUgbWFuJ3MgbmV4dCBzdGVwIG1vc3QgbGlrZWx5IGJlPyIsIm9wdGlvbnMiOlsiYXBwbHkgZm9yIG1vcmUgam9icyIsInJldmlzZSBhIGRvY3VtZW50IiwiY2FsbCBhIGZvcm1lciBlbXBsb3llciIsInRha2UgYSB0cmFpbmluZyBjb3Vyc2UiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2h5IGRpZCB0aGUgd29tYW4gZ28gaW50byBoZXIgaG91c2U\/Iiwib3B0aW9ucyI6WyJ0byBhbnN3ZXIgdGhlIHBob25lIiwidG8gcHJpbnQgaGlzIHJlc3VtZSIsInRvIGdldCBhbiBpdGVtIHNoZSBib3Jyb3dlZCIsInRvIGZpbmQgYSBqb2IgcG9zdGluZyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGF0IHdhcyB0aGUgd29tYW4ncyBtYWluIHN1Z2dlc3Rpb24\/Iiwib3B0aW9ucyI6WyJMaXN0IGFsbCBvZiB5b3VyIHBhc3Qgam9icy4iLCJGb2N1cyBtb3JlIG9uIHlvdXIgYWJpbGl0aWVzLiIsIlVzZSBhIHByb2Zlc3Npb25hbCByZXN1bWUgc2VydmljZS4iLCJBZGQgcmVmZXJlbmNlcyB0byB5b3VyIHJlc3VtZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgMTMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgbWFuIGF0IGEgaG91c2VwbGFudCBzaG93LiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtXG5Zb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgbWFuIGF0IGEgaG91c2VwbGFudCBzaG93LlxuQSBsb2NhbCBtYW4gd2VudCBob21lIGhhcHB5IGFmdGVyIGNvbGxlY3RpbmcgYW4gYXdhcmQgYXQgdGhlIGNpdHlcdTIwMTlzIGFubnVhbCBIb3VzZXBsYW50XG5TaG93LCBoZWxkIGF0IHRoZSBkb3dudG93biBSaG9kZXMgQXJlbmEgdGhpcyBwYXN0IHdlZWtlbmQuIEp1c3RpbiBXaWxzb24sIDUzLCBzZXQgYVxubmV3IHJlY29yZCBmb3IgdGhlIHRhbGxlc3QgY2FjdHVzIGV2ZXIgZ3Jvd24gaW5kb29ycy5cbldoZW4gYXNrZWQgaG93IGhlIG1hbmFnZWQgdG8gZ3JvdyB0aGUgMy41LW1ldHJlIGJlYXN0LCBoZSBjbGFpbWVkIGl0IHdhcyBub3RoaW5nIGJ1dFxuZ29vZCBmb3J0dW5lLiBXaWxzb24gZXhwbGFpbnMgaG93LCBuZWFybHkgYSBkZWNhZGUgYWdvLCBoZSBib3VnaHQgdGhlIGNhY3R1cyBhdCBhIGxvY2FsXG5nYXJkZW4gY2VudHJlIGZvciBhIGZldyBkb2xsYXJzLiBBZnRlciBicmluZ2luZyBpdCBob21lLCBoZSBzaW1wbHkgcGxhY2VkIGl0IGJ5IGhpcyBsYXJnZVxubGl2aW5nIHJvb20gd2luZG93IGFuZCB3YXRlcmVkIGl0IHdlZWtseS5cblVuZGVyc3RhbmRhYmx5LCBXaWxzb24gd2FzIG5vdCByZXF1aXJlZCB0byB0cmFuc3BvcnQgdGhlIGNhY3R1cyB0byB0aGUgSG91c2VwbGFudCBTaG93LFxuYSBwb3B1bGFyIGluZG9vciBjb252ZW50aW9uIGZvciBob3VzZXBsYW50IGVudGh1c2lhc3RzLiBJbnN0ZWFkLCB2b2x1bnRlZXJzIGZyb20gdGhlXG5ldmVudCBtZXQgV2lsc29uIGF0IGhpcyBob21lLCB3aGVyZSB0aGV5IG1lYXN1cmVkIHRoZSB0b3dlcmluZyBjYWN0dXMgYW5kXG5waG90b2dyYXBoZWQgaXQgZm9yIHRoZWlyIHJlY29yZHMuXG5XaWxzb24gYWNjZXB0ZWQgdGhlIGF3YXJkIGZvciBoaXMgb2RkaXR5IGZyb20gTWljaGFlbCBDb2xlLCBoZWFkIG9yZ2FuaXplciBvZiB0aGUgZXZlbnRcbmFuZCBhbiBlY29sb2dpc3QgYXQgTWFwbGV3b29kIFVuaXZlcnNpdHkuIENvbGUgc2F5cyB0aGF0IGhlIHNlZXMgY2FjdGkgYXMgdGFsbCBhcyBXaWxzb25cdTIwMTlzXG5hbGwgdGhlIHRpbWUgaW4gdGhlIGRlc2VydCwgYnV0IG5ldmVyIGluIHNvbWVvbmVcdTIwMTlzIGhvbWUuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwiZHVyYXRpb24iOjc0LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgSG91c2VwbGFudCBTaG93IHRha2VzIHBsYWNlIiwib3B0aW9ucyI6WyJpbiBhIHByaXZhdGUgaG9tZS4iLCJpbiBhIHB1YmxpYyB2ZW51ZS4iLCJhdCB0aGUgdW5pdmVyc2l0eS4iLCJhdCB0aGUgbG9jYWwgZGVzZXJ0LiJdLCJrZXkiOjF9LHsibiI6Miwic3RlbSI6IkpvZSBXaWxzb24gc2F5cyBoZSB3b24gYmVjYXVzZSBoZSBpcyIsIm9wdGlvbnMiOlsiZWZmaWNpZW50LiIsInBvcHVsYXIuIiwic2tpbGxlZC4iLCJsdWNreS4iXSwia2V5IjozfSx7Im4iOjMsInN0ZW0iOiJQZW9wbGUgZnJvbSB0aGUgSG91c2VwbGFudCBTaG93IHZpc2l0ZWQgSm9lIHRvIiwib3B0aW9ucyI6WyJjb25maXJtIGhpcyBjYWN0dXMncyBzaXplLiIsImludGVydmlldyBoaW0uIiwiZ2l2ZSBoaW0gYW4gYXdhcmQuIiwiZGV0ZXJtaW5lIGhvdyBoZSBncmV3IGhpcyBjYWN0dXMuIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiSW4gdGhlIHdpbGQsIGEgY2FjdHVzIGJlY29taW5nIHRoaXMgdGFsbCBpcyBjb25zaWRlcmVkIiwib3B0aW9ucyI6WyJjb21tb24uIiwicmFyZS4iLCJ1bnVzdWFsLiIsImltcG9zc2libGUuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IlRoZSBzdG9yeSBpcyBtYWlubHkgYWJvdXQiLCJvcHRpb25zIjpbImFuIHVudXN1YWwgZ2FyZGVuaW5nIHN0eWxlLiIsImEgc3VycHJpc2luZyB2aXNpdG9yLiIsImEgc3BlY2lhbCBzcGVjaWVzIG9mIHBsYW50LiIsImFuIHVuZXhwZWN0ZWQgcmVzdWx0LiJdLCJrZXkiOjN9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIGNvLXdvcmtlcnMsIHR3byBtZW4gYW5kIG9uZSB3b21hbi4gVGhlIGRpc2N1c3Npb24gdGFrZXMgcGxhY2UgYXQgYSBjb21tdW5pdHkgc29jY2VyIGNsdWJob3VzZS4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb25cbllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBjby13b3JrZXJzLCB0d28gbWVuIGFuZCBvbmUgd29tYW4uIFRoZVxuZGlzY3Vzc2lvbiB0YWtlcyBwbGFjZSBhdCBhIGNvbW11bml0eSBzb2NjZXIgY2x1YmhvdXNlLlxuRXJpYzogVGhhbmtzIGZvciBjb21pbmcgdG9kYXkuIFNvLCBGYWxsIFNvY2NlciBpcyBqdXN0IGFyb3VuZCB0aGUgY29ybmVyIGFuZCB3ZSB3YW50IHRvXG5tYWtlIHN1cmUgb25saW5lIHJlZ2lzdHJhdGlvbiBnb2VzIHNtb290aGx5LiBXZSBoYWQgYSBsb3Qgb2YgZ2xpdGNoZXMgbGFzdCB5ZWFyXHUyMDE0YW5kXG5jb21wbGFpbnRzLlxuSWFuOiBPaCwgSSByZW1lbWJlciB0aGF0LiBbZ3JvYW5pbmddIEkgc3BlbnQgaG91cnMgZml4aW5nIHRob3NlIGlzc3VlcyBhbmQgY2FsbWluZ1xuZnJlbnppZWQgcGFyZW50cy4gSSBqdXN0IG92ZXJoYXVsZWQgdGhlIHJlZ2lzdHJhdGlvbiBzZWN0aW9uIG9uIG91ciB3ZWJzaXRlLCBzbyBJIGRvblx1MjAxOXRcbmFudGljaXBhdGUgdGhlIHNhbWUgcHJvYmxlbXMgdGhpcyB5ZWFyLlxuQWx5c3NhOiAgICAgIElcdTIwMTltIGdsYWQgeW91IHdlcmUgdGhlIG9uZSBkZWFsaW5nIHdpdGggdGhhdC4gWW91XHUyMDE5cmUgdGhlIHRlY2hpZSEgW3NsaWdodFxucGF1c2VdIE9uIGFub3RoZXIgbm90ZSwgd2VcdTIwMTl2ZSBoYWQgYSBsb3Qgb2YgaW5xdWlyaWVzIGFib3V0IG91ciBmZWVzLiBDYW4gd2UgbWFuYWdlIHRvXG5rZWVwIHRoZW0gdGhlIHNhbWUgYXMgbGFzdCB5ZWFyP1xuRXJpYzogR29vZCBxdWVzdGlvbi4gV2VcdTIwMTlyZSBsb29raW5nIGF0IGEgNSUgaW5jcmVhc2UuIEJ1dCB3ZSBuZWVkIHRvIHN0aWNrIHRvIG91clxubWFuZGF0ZSBcdTIwMTMgZGV2ZWxvcGluZyBwbGF5ZXJzIGluIHRoZSBsb2NhbCBjb21tdW5pdHkuIEkgZG9uXHUyMDE5dCB3YW50IGNvc3QgdG8gYmVjb21lIGFuXG5vYnN0YWNsZS4gRmFtaWxpZXMgYXJlIGFscmVhZHkgcGF5aW5nIGZvciByZWdpc3RyYXRpb24sIHBob3RvZ3JhcGh5LCB1bmlmb3Jtcywgc2hvZXMsXG5zbmFja3MgLiAuIC5cbklhbjogWWVhaCwgSVx1MjAxOW0gd29ycmllZCB0aGF0IHNvbWUga2lkcyB3b25cdTIwMTl0IGJlIGFibGUgdG8gcGFydGljaXBhdGUgaWYgaXQgc3RyYWlucyB0aGVpclxuZmFtaWx5IGJ1ZGdldC5cbkFseXNzYTogICAgICAgWWVhaCwgd2l0aCB0aHJlZSBwbGF5ZXJzIGluIG15IGhvdXNlLCBzb2NjZXIgY29zdHMgYWRkIHVwIHRvIGEgc21hbGxcbmZvcnR1bmUhXG5FcmljOiBXZWxsLCBzb21lIG90aGVyIGNsdWJzIG9mZmVyIGRpc2NvdW50cyB0byBwYXJlbnRzIHdobyB2b2x1bnRlZXIgdGhyb3VnaG91dCB0aGVcbnNlYXNvbi4gRXNwZWNpYWxseSB0aGUgcGFyZW50cyB3aG8gaGVscCBvdXQgYXMgYXNzaXN0YW50IGNvYWNoZXMsIHRoZXkgcmVhbGx5IG9mZnNldCBzb21lXG5vZiB0aGUgY29zdHMuIFdoYXQgZG8geW91IHRoaW5rP1xuSWFuOiBJIGRvblx1MjAxOXQga25vdyBhYm91dCB0aGF0LiBXZVx1MjAxOXJlIGZvcnR1bmF0ZSB0byBoYXZlIGVub3VnaCB0aW1lIHRvIHZvbHVudGVlciBmb3IgdGhpc1xuY2x1YiwgYnV0IG5vdCBhbGwgcGFyZW50cyBkby4gV2hhdCBhYm91dCBhIGZhbWlseSBkaXNjb3VudCBwbGFuPyBGb3IgZXhhbXBsZSwgZnVsbCBwcmljZVxuZm9yIHRoZSBmaXJzdCBjaGlsZCwgdGhlbiB0ZW4gcGVyY2VudCBvZmYgZm9yIHRoZSBzZWNvbmQuIEFuZCAxNSBwZXJjZW50IG9mZiBmb3IgdGhlIHRoaXJkLCBpblxuZmFtaWxpZXMgbGlrZSBBbHlzc2FcdTIwMTlzLlxuQWx5c3NhOiAgICAgICBGb3IgbWUgcGVyc29uYWxseSwgdGhhdCB3b3VsZCBiZSBncmVhdCBcdTIwMTMgYnV0IGl0IHdvdWxkblx1MjAxOXQgaGVscCBtb3N0IG9mIG91clxuc29jY2VyIGZhbWlsaWVzIGF0IGFsbC4gW3BhdXNlXSBIb3cgYWJvdXQgYSBcdTIwMTh1c2VkIGdlYXIgZXhjaGFuZ2VcdTIwMTk\/IEtpZHMgb3V0Z3JvdyB0aGVpclxuc3R1ZmYgc28gcXVpY2tseS4gSWYgd2Ugc2V0IHNvbWV0aGluZyB1cCBvbiBvdXIgd2Vic2l0ZSwgdGhlbiBwYXJlbnRzIGNvdWxkIGJyb3dzZVxudGhyb3VnaCB1c2VkIGl0ZW1zIHdoZW4gZG9pbmcgdGhlaXIgcmVnaXN0cmF0aW9uLlxuRXJpYzogVGhhdCBzb3VuZHMgZ29vZC4gV2UgY291bGQgYWRkIGEgZGlzY3Vzc2lvbiBmb3J1bSB0byBvdXIgd2Vic2l0ZSB3aGVyZSBwYXJlbnRzXG5hbmQgcGxheWVycyBjYW4gYXJyYW5nZSB0byBidXksIHNlbGwgYW5kIHRyYWRlIHRoZWlyIGdlYXIuXG5JYW46IElcdTIwMTltIG5vdCBzbyBzdXJlIGFib3V0IHRoYXQgaWRlYS4gW25vdCBhZ3JlZWFibGVdIEZyb20gYSB0ZWNobmljYWwgcGVyc3BlY3RpdmUsIGl0XHUyMDE5c1xuYWN0dWFsbHkgbW9yZSBjb21wbGljYXRlZCB0aGFuIGl0IHNvdW5kcy5cbkFseXNzYTogICAgICBXZWxsLCB3ZSBjb3VsZCBhbHNvIGNvbnNpZGVyIGEgcGFydG5lcnNoaXAgd2l0aCBhIGxvY2FsIHNwb3J0cyBzdG9yZSBpbiB0aGVcbmFyZWEuIEZvciBleGFtcGxlLCBwbGF5ZXJzIGNvdWxkIHNob3cgdGhlaXIgY2x1YiBJRCBjYXJkcyB0byBnZXQgYSBtYXJrZG93biBvbiBzaG9lc1xuYW5kIG90aGVyIGdlYXIuXG5FcmljOiBJIGNhbiBsb29rIGludG8gc29tZXRoaW5nIGxpa2UgdGhhdCwgYnV0IGluIHRoZSBtZWFudGltZSwgSWFuLCBpdCB3b3VsZCBiZSBncmVhdCBpZlxueW91IGNvdWxkIHJlc2VhcmNoIHdheXMgdG8gZ2V0IHRoZSBvbmxpbmUgZm9ydW0gZ29pbmcuXG5MaXN0ZW5pbmciLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTUxLCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6InZpZGVvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhlIG1haW4gcHVycG9zZSBvZiB0aGUgbWVldGluZz8iLCJvcHRpb25zIjpbInRvIGRlY2lkZSBob3cgdG8gbG93ZXIgZmVlcyIsInRvIGNoYW5nZSB0aGUgcmVnaXN0cmF0aW9uIGZvcm0iLCJ0byBkaXNjdXNzIGEgd2Vic2l0ZSBpc3N1ZSIsInRvIHBsYW4gZm9yIHRoZSB1cGNvbWluZyBzaWduLXVwIl0sImtleSI6M30seyJuIjoyLCJzdGVtIjoiV2hhdCBzZWVtcyB0cnVlIGFib3V0IElhbj8iLCJvcHRpb25zIjpbIkhlIGlzIGluIGNoYXJnZSBvZiBmaW5hbmNlcy4iLCJIZSBoZWxwZWQgd2l0aCByZWdpc3RyYXRpb24gbGFzdCB5ZWFyLiIsIkhlIGhhcyB2ZXJ5IGxpdHRsZSB0aW1lIGZvciB2b2x1bnRlZXJpbmcuIiwiSGUgbGFja3MgY29tcHV0ZXIgc2tpbGxzLiJdLCJrZXkiOjF9LHsibiI6Mywic3RlbSI6IldoYXQgZG9lcyBFcmljIHNheSB0aGUgY2x1YiBuZWVkcyB0byBmb2N1cyBvbj8iLCJvcHRpb25zIjpbImtlZXBpbmcgc29jY2VyIGFjY2Vzc2libGUgdG8gbG9jYWwgcGxheWVycyIsImNoYXJnaW5nIG1vcmUgdG8gY292ZXIgZXF1aXBtZW50IGNvc3RzIiwiZW5jb3VyYWdpbmcgcGFyZW50cyB0byB0cnkgcGxheWluZyBzb2NjZXIiLCJ1c2luZyBhIGRpZmZlcmVudCByZWdpc3RyYXRpb24gc3lzdGVtIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIEVyaWMgc3VnZ2VzdCB0aGF0IHBhcmVudHMgZG8\/Iiwib3B0aW9ucyI6WyJwYXkgYWxsIHNvY2NlciBmZWVzIHJpZ2h0IGF3YXkiLCJjcmVhdGUgdGhlaXIgb3duIG9ubGluZSBmb3J1bSIsImFzc2lzdCB3aXRoIGNvYWNoaW5nIHRoZSB0ZWFtcyIsImZ1bmRyYWlzZSBmb3IgdGhlIGNvbW11bml0eSJdLCJrZXkiOjJ9LHsibiI6NSwic3RlbSI6IldoYXQgZG9lcyBBbHlzc2EgaW1wbHkgYWJvdXQgbW9zdCBzb2NjZXIgY2x1YiBwYXJlbnRzPyIsIm9wdGlvbnMiOlsiVGhleSBsaWtlIHRoZSBvbmxpbmUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIiwiVGhleSBmaW5kIHBhcnRpY2lwYXRpb24gZmVlcyBhZmZvcmRhYmxlLiIsIlRoZXkga25vdyB3aGVyZSB0byBidXkgY2hlYXAgc29jY2VyIGdlYXIuIiwiVGhleSBoYXZlIG9ubHkgb25lIGNoaWxkIGVucm9sbGVkIGluIHNvY2Nlci4iXSwia2V5IjozfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGRvIEFseXNzYSdzIHN1Z2dlc3Rpb25zIGZvY3VzIG9uPyIsIm9wdGlvbnMiOlsicmVkdWNpbmcgdGhlIGNsdWIncyByZWdpc3RyYXRpb24gZmVlcyIsImhlbHBpbmcgcGFyZW50cyBzYXZlIG9uIGVxdWlwbWVudCIsImRvbmF0aW5nIGdlYXIgdG8gbG9jYWwgc3BvcnQgc3RvcmVzIiwiZ2V0dGluZyBwYXJlbnRzIHRvIGNvbm5lY3Qgb25saW5lIl0sImtleSI6MX0seyJuIjo3LCJzdGVtIjoiV2hhdCBkb2VzIElhbiBzYXkgYWJvdXQgc3RhcnRpbmcgYW4gb25saW5lIGZvcnVtPyIsIm9wdGlvbnMiOlsiSXQgd2lsbCBub3QgYmUgZWFzeS4iLCJJdCB3aWxsIG5vdCBiZSBwcmFjdGljYWwuIiwiSXQgaXMgbm90IG5lY2Vzc2FyeS4iLCJJdCBpcyBub3QgcG9zc2libGUuIl0sImtleSI6MH0seyJuIjo4LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBncm91cCBkZWNpZGUgdG8gZm9jdXMgb24\/Iiwib3B0aW9ucyI6WyJzZWxsaW5nIHRoZSBjbHViJ3MgdXNlZCBzcG9ydHMgZ2VhciIsImluY3JlYXNpbmcgdGhlIGFtb3VudCBvZiB2b2x1bnRlZXJzIiwicmVkdWNpbmcgZXF1aXBtZW50IGNvc3RzIGZvciBwYXJlbnRzIiwib2ZmZXJpbmcgZGlzY291bnRzIHRvIGZhbWlsaWVzIGluIG5lZWQiXSwia2V5IjoyfV19XX0seyJuYW1lIjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJoZWFkZXJUaXRsZSI6IlNldCAxMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBzcGVlY2ggYWJvdXQgYW4gZWR1Y2F0aW9uYWwgaXNzdWUuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMuXG5Zb3Ugd2lsbCBoZWFyIGEgc3BlZWNoIGFib3V0IGFuIGVkdWNhdGlvbmFsIGlzc3VlLlxuV2VsY29tZSBwYXJlbnRzIGFuZCBzdGFmZiBvZiBDZWRlcmJyb29rIEVsZW1lbnRhcnkuIEkgYXBwcmVjaWF0ZSBhbGwgb2YgeW91IGJlaW5nIGhlcmVcbnRvbmlnaHQuIEl0IGlzIHN0YW5kYXJkIHByYWN0aWNlIGF0IG91ciBzY2hvb2wsIGluZGVlZCwgYXQgbW9zdCBzY2hvb2xzIGV2ZXJ5d2hlcmUsIHRvIGlzc3VlXG5kYWlseSBob21ld29yayBhc3NpZ25tZW50cy4gQmVnaW5uaW5nIGluIGtpbmRlcmdhcnRlbiwgc3R1ZGVudHMgYXJlIGFzc2lnbmVkIHRhc2tzIHRoYXRcbnR5cGljYWxseSB0YWtlIGFib3V0IDE1IG1pbnV0ZXMgdG8gY29tcGxldGUuIFdpdGggZWFjaCBncmFkZSBsZXZlbCwgdGhlIGNvbXBsZXhpdHkgYW5kXG5xdWFudGl0eSBvZiB0aGUgYXNzaWdubWVudHMgaW5jcmVhc2VzLCB0byBhIG1heGltdW0gb2YgYWJvdXQgMiBob3VycyBwZXIgbmlnaHQgZm9yIG91clxuZ3JhZGUgZWlnaHQgc3R1ZGVudHMuIFJlY2VudGx5LCB0aGlzIHByYWN0aWNlIGhhcyBiZWVuIGNhbGxlZCBpbnRvIHF1ZXN0aW9uLlxuU3BlYXJoZWFkaW5nIHRoaXMgZGViYXRlIGlzIHBhcmVudCBhbmQgY2hpbGQgcHN5Y2hvbG9naXN0IEphaW1lIExlZS4gQWNjb3JkaW5nIHRvIExlZSxcbm51bWVyb3VzIHN0dWRpZXMgaGF2ZSBwb2ludGVkIHRvIHRoZSBkZXRyaW1lbnRhbCBpbXBhY3RzIG9mIGRhaWx5IGhvbWV3b3JrLiBJbmRlZWQsXG5pbmNyZWFzaW5nbHkgaW4gaGVyIHByYWN0aWNlLCBzaGUgaXMgc2VlaW5nIHRoZXNlIGltcGFjdHMuIE1hbnkgb2YgaGVyIHlvdW5nZXIgY2xpZW50cyBhcmVcbmV4cGVyaWVuY2luZyBoaWdoIGxldmVscyBvZiBzdHJlc3MsIHBvb3IgcGh5c2ljYWwgaGVhbHRoLCBhbmQgZmVlbGluZ3Mgb2YgaXNvbGF0aW9uLCB3aXRoIHRoZVxubG9uZyBob3VycyBvZiBob21ld29yayBhZnRlciBsb25nIGRheXMgYXQgc2Nob29sIGJlaW5nIHRoZSBwcmltYXJ5IGNhdXNlLiBBY2NvcmRpbmcgdG9cbkxlZSwgdGhlc2UgcmVzdWx0cyBhcmUgbm90IHN1cnByaXNpbmcgd2hlbiB5b3UgY29uc2lkZXIgd2hhdCBjaGlsZHJlbiBhcmUgZ2l2aW5nIHVwIGluXG5vcmRlciB0byBtYW5hZ2UgdGhlaXIgZGFpbHkgd29ya2xvYWRzOyB0aW1lIHdpdGggZmFtaWx5LCB0aW1lIHdpdGggZnJpZW5kcywgdGltZSBmb3JcbnRoZW1zZWx2ZXMuIEZvciBMZWUsIGEgY2hpbGRcdTIwMTlzIHRpbWUgYWZ0ZXIgc2Nob29sIHNob3VsZCBiZSB1bnN0cnVjdHVyZWQuIFNoZSBjb250ZW5kc1xuZGFpbHkgaG9tZXdvcmsgbGVhZHMgdG8gYW4gb3ZlcmVtcGhhc2lzIG9uIGFjYWRlbWljcyB0aGF0IGZhaWxzIHRvIGFkZHJlc3MgYWxsIG9mIHRoZVxuZGV2ZWxvcG1lbnRhbCBuZWVkcyBvZiBjaGlsZHJlbi5cbkFybm9sZCBCbGFrZSwgcHJlc2lkZW50IG9mIENlZGVyYnJvb2sgRWxlbWVudGFyeVx1MjAxOXMgcGFyZW50IGNvdW5jaWwsIGRpc2FncmVlcy4gRm9yXG5CbGFrZSwgaG9tZXdvcmsgdGltZSBpcyBxdWFsaXR5IHRpbWUgd2l0aCBoaXMgY2hpbGQuIEluIGZhY3QsIHNpdHRpbmcgd2l0aCBoaXMgZGF1Z2h0ZXJcbndoaWxlIHNoZSBkb2VzIGhlciBob21ld29yayBpcyBvbmUgb2YgdGhlaXIgZmF2b3VyaXRlIHRpbWVzIG9mIGRheS4gSGUgYXBwcmVjaWF0ZXNcbmtub3dpbmcgd2hhdCBoaXMgZGF1Z2h0ZXIgaXMgbGVhcm5pbmcgYXQgc2Nob29sLCB3aGF0IGludGVyZXN0cyBoZXIsIGFuZCB3aGF0IHNoZSBmaW5kc1xuY2hhbGxlbmdpbmcuIEFkZGl0aW9uYWxseSwgQmxha2UgYmVsaWV2ZXMgdGhpcyBvbmUtb24tb25lIGF0dGVudGlvbiwgaW4gdGhlIGNvbWZvcnQgb2YgaGVyXG5vd24gaG9tZSwgaXMgY3J1Y2lhbCB0byBoaXMgZGF1Z2h0ZXJcdTIwMTlzIGxlYXJuaW5nLiBXaGlsZSwgaW5pdGlhbGx5LCBoaXMgZGF1Z2h0ZXIgc3RydWdnbGVkIGF0XG5zY2hvb2wsIGhlciBhY2FkZW1pYyBwZXJmb3JtYW5jZSBoYXMgZ290dGVuIG11Y2ggYmV0dGVyIHNpbmNlIEJsYWtlIGJlY2FtZSBtb3JlXG5pbnZvbHZlZC4gSGUgYmVsaWV2ZXMgdGhhdCBoZXIgZGFpbHkgYXNzaWdubWVudHMgaGF2ZSBwbGF5ZWQgYSBsYXJnZSByb2xlIGluIHRoaXMgY2hhbmdlLlxuV2hpbGUgQmxha2UgYWNrbm93bGVkZ2VzIGEgYmFsYW5jZSBtdXN0IGJlIG1haW50YWluZWQsIGhlIGRvZXMgbm90IGZlZWwgaGlzIGRhdWdodGVyXHUyMDE5c1xuZGV2ZWxvcG1lbnQgaGFzIGJlZW4gYWR2ZXJzZWx5IGltcGFjdGVkLiBJbiBjb250cmFzdCwgaGUgaGFzIHNlZW4gYW4gaW5jcmVhc2UgaW4gaGVyXG5jb25maWRlbmNlLCBhIGZhY3Qgd2hpY2ggaGFzIGJlbmVmaXRlZCBhbGwgYXNwZWN0cyBvZiBoZXIgbGlmZS4gSW4gY29uc2lkZXJhdGlvbiBvZiBib3RoXG5wZXJzcGVjdGl2ZXMsIHBlcmhhcHMgc29tZXRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgaXMgdGhlIGZyYW1lIG9mIG1pbmQgb2YgcGFyZW50cyBhbmRcbmNoaWxkcmVuLiBJZiBib3RoIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGZlZWwgcG9zaXRpdmUgYWJvdXQgdGhlIHRhc2ssIEkgYmVsaWV2ZSBob21ld29yayBjYW5cbmJlIGEgZ3JlYXQgd2F5IHRvIGltcHJvdmUgZ3JhZGVzIGFuZCBpbnZvbHZlIHBhcmVudHMgaW4gdGhlaXIgY2hpbGRcdTIwMTlzIGxlYXJuaW5nLiBIb3dldmVyLFxuaWYgZWl0aGVyIHBhcnR5IGZlZWxzIG5lZ2F0aXZlLCBhIGZpZnRlZW4tbWludXRlIGFzc2lnbm1lbnQgY2FuIGVhc2lseSB0dXJuIGludG8gYSB0d28taG91clxuZGlzY2lwbGluYXJ5IG5pZ2h0bWFyZS4gVGhpcyB3b3VsZCBjbGVhcmx5IGJlIGNvdW50ZXJwcm9kdWN0aXZlLiBJXHUyMDE5bGwgbm93IG9wZW4gdGhlIGZsb29yXG5mb3IgZGlzY3Vzc2lvbi4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJSZXBvcnQiLCJkdXJhdGlvbiI6MTk2LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMyBtaW51dGVzIGxvbmcuIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJ0aW1lTWludXRlcyI6NCwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiVGhlIGhvbWV3b3JrIHRoYXQgQ2VkZXJicm9vayBFbGVtZW50YXJ5IGFzc2lnbnMgaXMiLCJvcHRpb25zIjpbImRlcGVuZGVudCBvbiB0aGUgZ3JhZGUgbGV2ZWwuIiwiZGV0ZXJtaW5lZCBieSBzY2hvb2wgcGVyZm9ybWFuY2UuIiwibWVhbnQgZm9yIGFkdmFuY2VkIGNsYXNzZXMuIiwicmVzZXJ2ZWQgZm9yIHN0cnVnZ2xpbmcgc3R1ZGVudHMuIl0sImtleSI6MH0seyJuIjoyLCJzdGVtIjoiVGhlIHJlc2VhcmNoIGNpdGVkIGJ5IEphbWllIExlZSBkaXNjdXNzZXMiLCJvcHRpb25zIjpbImEgaGFybWZ1bCBvdXRjb21lLiIsImFuIGFkYXB0YWJsZSBzb2x1dGlvbi4iLCJhbiBvcHRpbWlzdGljIHRoZW9yeS4iLCJhIGNvbmZsaWN0IG9mIGZpbmRpbmdzLiJdLCJrZXkiOjB9LHsibiI6Mywic3RlbSI6IkphaW1lIExlZSBmZWVscyBpdCdzIG1vcmUgYmVuZWZpY2lhbCBmb3IgY2hpbGRyZW4gdG8iLCJvcHRpb25zIjpbImhhdmUgbW9yZSBmcmVlZG9tLiIsImJlIGJldHRlciBkaXNjaXBsaW5lZC4iLCJyZWNlaXZlIHBlcnNvbmFsIHR1dG9yaW5nLiIsInNldCBhIGhvbWV3b3JrIHNjaGVkdWxlLiJdLCJrZXkiOjB9LHsibiI6NCwic3RlbSI6IkFybm9sZCBCbGFrZSdzIGRhdWdodGVyIiwib3B0aW9ucyI6WyJwcmVmZXJzIHRvIGxlYXJuIGF0IHNjaG9vbC4iLCJpbXByb3ZlZCBoZXIgZ3JhZGVzLiIsInN0cnVnZ2xlcyB3aXRoIGFzc2lnbm1lbnRzLiIsImluY3JlYXNlZCBoZXIgY2xhc3MgcGFydGljaXBhdGlvbi4iXSwia2V5IjoxfSx7Im4iOjUsInN0ZW0iOiJCbGFrZSBhbmQgTGVlIGJvdGggZW1waGFzaXplIHRoZSBpbXBvcnRhbmNlIG9mIiwib3B0aW9ucyI6WyJnb29kIHJlc2VhcmNoLiIsInBoeXNpY2FsIGhlYWx0aC4iLCJmYW1pbHkgY29ubmVjdGlvbi4iLCJhY2FkZW1pYyBzdWNjZXNzLiJdLCJrZXkiOjJ9LHsibiI6Niwic3RlbSI6IlRoZSBzcGVha2VyIGxpa2VseSBiZWxpZXZlcyB0aGF0Iiwib3B0aW9ucyI6WyJob21ld29yayBuZWVkcyByZWZvcm0uIiwiZGlzY2lwbGluZSBjYW4gYmUgdGF1Z2h0LiIsInNjaG9vbHMgYXJlIHRvbyBmb3JnaXZpbmcuIiwiYXR0aXR1ZGUgaXMgbW9zdCBpbXBvcnRhbnQuIl0sImtleSI6M31dfV19XX07Cgp2YXIgQ0VMUElQX1lUID0geyB2aWRlb0lkOiAnJyB9OyAgLyogZS5nLiAnZFF3NHc5V2dYY1EnIFx1MjAxNCBTZXQgMTMgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 13 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-6189","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6189","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=6189"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6189\/revisions"}],"predecessor-version":[{"id":6592,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6189\/revisions\/6592"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}