{"id":6142,"date":"2026-07-06T05:42:42","date_gmt":"2026-07-06T05:42:42","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-8-test-1-listening\/"},"modified":"2026-07-12T03:25:10","modified_gmt":"2026-07-12T03:25:10","slug":"celpip-set-8-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-8-test-1-listening\/","title":{"rendered":"CELPIP Set 8 \u00b7 Practice Test 1 \u2014 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 8 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMxLTIubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3AxczItMi5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDFzMy0yLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMi0yLm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMy0yLm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNC0yLm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNS0yLm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNi0yLm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEEgPSB7InRlc3RMYWJlbCI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEiLCJzZXRObyI6OCwidGVzdE5vIjoxLCJwYXJ0cyI6W3sibmFtZSI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImhlYWRlclRpdGxlIjoiU2V0IDggXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGF0IGEgZnVybml0dXJlIHN0b3JlLiIsImludHJvQnVsbGV0cyI6WyJBIHdvbWFuIGlzIGRlYWxpbmcgd2l0aCBhIHByb2JsZW0gYWJvdXQgYSB0YWJsZSBzaGUgYm91Z2h0LiIsIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbiBhdCBhIGZ1cm5pdHVyZSBzdG9yZS4gVGhlIG1hblxud29ya3MgYXQgdGhlIGZ1cm5pdHVyZSBzdG9yZSBhbmQgdGhlIHdvbWFuIGlzIGEgY3VzdG9tZXIuXG5cblNlY3Rpb24gMTpcbk1BTjogSGksIGhvdyBjYW4gSSBoZWxwIHlvdT9cbldPTUFOOiBIaS4gSSBib3VnaHQgYSB0YWJsZSBmcm9tIHlvdXIgb25saW5lIHN0b3JlIGxhc3Qgd2VlayBhbmQgaXQgc2VlbXMgbGlrZSBpdCBnb3RcbmEgYml0IGRhbWFnZWQgZHVyaW5nIHRoZSBkZWxpdmVyeS5cbk1BTjogT2suIElzIHRoYXQgdGhlIHRhYmxlIHRoZXJlP1xuV09NQU46IFllYWguIFdlIGdvdCBhIGdyZWF0IGRlYWwgYW5kIGl0XHUyMDE5cyBvZiBleGNlbGxlbnQgcXVhbGl0eS4gQnV0IHdoZW4gbXlcbmh1c2JhbmQgc3RhcnRlZCB0byBhc3NlbWJsZSBpdCwgaGUgbm90aWNlZCB0aGUgZGFtYWdlLiBJIHJlYWxseSBsaWtlIHRoZSB0YWJsZSwgc28gSVx1MjAxOWRcbmFjdHVhbGx5IGp1c3QgbGlrZSB0byBleGNoYW5nZSBpdC4gSGVyZVx1MjAxOXMgYSBjb3B5IG9mIHRoZSBpbnZvaWNlLlxuTUFOOiBBbGwgcmlnaHQsIGxldFx1MjAxOXMgaGF2ZSBhIGxvb2sgaGVyZSAuIC4gLiBIbW1tLCBJIGNhbiBzZWUgdGhlIHNjcmF0Y2ggb24gdGhlIHRvcC4gV2VyZVxueW91IGhvbWUgd2hlbiBpdCB3YXMgZGVsaXZlcmVkP1xuV09NQU46IE15IGh1c2JhbmQgd2FzIGhvbWUsIGJ1dCBoZSBvbmx5IG5vdGljZWQgdGhlIGRhbWFnZSBhZnRlciB0aGUgdHJ1Y2sgaGFkXG5sZWZ0LiBJIHRyaWVkIHRvIGRvIGFuIG9ubGluZSByZXR1cm4sIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIHdlcmUgY29uZnVzaW5nLlxuTUFOOiBJXHUyMDE5bSBzb3JyeSBhYm91dCB0aGF0LiBMZXQgbWUganVzdCBvcGVuIHlvdXIgZmlsZSBvbiB0aGUgY29tcHV0ZXIuIFRoZSBzeXN0ZW0gaXMgYVxubGl0dGxlIHNsb3csIHNvIHRoaXMgbWlnaHQgdGFrZSBhIG1vbWVudC5cbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtMy5cbldoeSBkb2VzIHRoZSB3b21hbiBnbyB0byB0aGUgc3RvcmU\/XG5XaGljaCBzdGF0ZW1lbnQgaXMgdHJ1ZSBhYm91dCB0aGUgdGFibGU\/XG5XaG8gaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0aGUgZGFtYWdlIHRvIHRoZSB0YWJsZT9cblNlY3Rpb24gMjpcbk1BTjogQWxyaWdodC4gSSBqdXN0IG5lZWQgYSBmZXcgbW9yZSBkZXRhaWxzIGZyb20geW91LiBEaWQgeW91IHBheSB3aXRoIG91ciBzdG9yZSBjcmVkaXRcbmNhcmQ\/XG5XT01BTjogICAgICAgIE5vLCBJIHBhaWQgd2l0aCBteSBkZWJpdCBjYXJkLlxuXGZNQU46IFRoYXRcdTIwMTlzIHRvbyBiYWQuIElmIHlvdVx1MjAxOWQgdXNlZCBvdXIgY3JlZGl0IGNhcmQsIHlvdSBjb3VsZFx1MjAxOXZlIHJlY2VpdmVkIGEgMTUlXG5kaXNjb3VudC4gV2UgYWxzbyBvZmZlciBhbiBleHRlbmRlZCB3YXJyYW50eSBvbiBhbGwgaXRlbXMgcHVyY2hhc2VkIHdpdGggdGhpcyBjYXJkLFxud2hpY2ggaW5jbHVkZXMgZnJlZSBkZWxpdmVyeSBvbiB5b3VyIHJlcGxhY2VtZW50IHRhYmxlLiBUaGUgc3RhbmRhcmQgd2FycmFudHkgZG9lc25cdTIwMTl0XG5jb3ZlciB0aGF0LlxuV09NQU46ICAgICAgICBUaGF0IHNvdW5kcyBncmVhdCEgQ2FuIEkgYXBwbHkgZm9yIGEgc3RvcmUgY3JlZGl0IGNhcmQgaGVyZT9cbk1BTjogSVx1MjAxOW0gYWZyYWlkIHlvdSBjYW4gb25seSBhcHBseSBvbmxpbmUuIFdoZW4geW91IGdvIHRvIG91ciBob21lIHBhZ2UsIHlvdVx1MjAxOWxsIHNlZVxuYW4gaW1hZ2Ugb2YgYSBjcmVkaXQgY2FyZCBhbmQgbmV4dCB0byBpdCB0aGVyZVx1MjAxOXMgYSBidXR0b24gdGhhdCBzYXlzIFx1MjAxOGFwcGx5XHUyMDE5LiBKdXN0IGNsaWNrIG9uIHRoYXRcbmFuZCBmaWxsIG91dCB0aGUgZGV0YWlscy5cbldPTUFOOiAgICAgICAgQWxsIHJpZ2h0LiBIb3cgbG9uZyBiZWZvcmUgdGhlIGNhcmQgYXJyaXZlcz9cbk1BTjogWW91XHUyMDE5bGwgZ2V0IGl0IGluIHRoZSBtYWlsIGluIGFib3V0IDEwIGJ1c2luZXNzIGRheXMuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA0LTYuXG5Ib3cgZG9lcyB0aGUgd29tYW4gZmVlbCBhYm91dCB0aGUgc3RvcmUgY3JlZGl0IGNhcmQ\/XG5XaGF0IGlzIHRydWUgYWJvdXQgdGhlIHN0b3JlIGNyZWRpdCBjYXJkP1xuV2hhdCB3aWxsIHRoZSB3b21hbiBsaWtlbHkgZG8gYWJvdXQgdGhlIGNyZWRpdCBjYXJkP1xuU2VjdGlvbiAzOlxuTUFOOiBPa2F5LiBJIGNoZWNrZWQgYW5kIGl0IHNlZW1zIGxpa2Ugd2UgZG9uXHUyMDE5dCBoYXZlIHRoZSBleGFjdCBzYW1lIHRhYmxlIGluIHN0b2NrLCBteVxuYXBvbG9naWVzLiBXZSBoYXZlIHRoaXMgY2lyY3VsYXIgb25lLCB3aGljaCBpcyBlYXN5IHRvIGFzc2VtYmxlLiBBbm90aGVyIG9wdGlvbiBpcyB0aGlzXG5icm93biBvbmUuIEl0XHUyMDE5cyBtb3JlIG9mIGFuIG9mZmljZSBkZXNrLCBidXQgaXRcdTIwMTlzIHNvbGlkIHdvb2QuXG5XT01BTjogICAgICAgIFRoZSBicm93biBvbmUgaXMgbmljZSwgYnV0IGl0XHUyMDE5cyBub3QgcmVhbGx5IHdoYXQgSSBuZWVkLiBIb3cgbXVjaCBpcyB0aGF0XG5nbGFzcyBvbmU\/XG5NQU46IEl0XHUyMDE5cyBhbG1vc3QgdGhlIHNhbWUgcHJpY2UgYXMgdGhlIG9uZSB5b3UgYm91Z2h0LiBJdFx1MjAxOXMgYSB2ZXJ5IHBvcHVsYXIgc3R5bGUuXG5XT01BTjogWWVhaCwgaXRcdTIwMTlzIHByZXR0eSBuaWNlLCBidXQgSSBzdGlsbCBwcmVmZXIgdGhlIHRhYmxlIEkgZ290OyBpdFx1MjAxOXMgYSBuaWNlIHJlY3Rhbmd1bGFyXG53b29kZW4gdGFibGUgd2l0aCBhIGRyYXdlci4gSVx1MjAxOW0gZ29pbmcgdG8gc2hvcCBhcm91bmQ7IGlmIEkgY2FuXHUyMDE5dCBmaW5kIHRoZSBvbmUgSSBvcmlnaW5hbGx5XG5ib3VnaHQgYW55d2hlcmUgZWxzZSwgSVx1MjAxOWxsIGNvbWUgYmFjayBmb3IgdGhpcyBnbGFzcyBvbmUuXG5NQU46IE5vIHByb2JsZW0sIEkgd2lsbCBob2xkIGl0IGZvciB5b3UgdW50aWwgdGhlIGVuZCBvZiB0b2RheS5cbldPTUFOOiAgICAgICAgU291bmRzIGdvb2QuIFRoYW5rIHlvdS5cbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDctOC5cbldoaWNoIG9uZSBkb2VzIHRoZSB3b21hbiBsaWtlIG1vc3Q\/XG5XaGF0IHdpbGwgdGhlIHdvbWFuIGxpa2VseSBkbyBuZXh0PyIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwiZHVyYXRpb24iOjc3LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gZ28gdG8gdGhlIHN0b3JlPyIsIm9wdGlvbnMiOlsidG8gdHJhZGUgaGVyIHRhYmxlIGZvciBhIG5ldyBvbmUiLCJ0byBidXkgYSBuZXcgc29mYSIsInRvIHJldHVybiBhIGJyb2tlbiBjaGFpciIsInRvIGNvbXBsYWluIGFib3V0IGEgbGF0ZSBkZWxpdmVyeSJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGljaCBzdGF0ZW1lbnQgaXMgdHJ1ZSBhYm91dCB0aGUgdGFibGU\/Iiwib3B0aW9ucyI6WyJJdCB3YXMgdmVyeSBleHBlbnNpdmUuIiwiSXQgd2FzIGEgZ29vZCBwcmljZS4iLCJJdCB3YXMgYm91Z2h0IG9ubGluZS4iLCJJdCB3YXMgYSBnaWZ0LiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaG8gaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0aGUgZGFtYWdlIHRvIHRoZSB0YWJsZT8iLCJvcHRpb25zIjpbInRoZSB3b21hbiBoZXJzZWxmIiwidGhlIGRlbGl2ZXJ5IHN0YWZmIiwidGhlIG1hbnVmYWN0dXJlciIsImEgZmFtaWx5IG1lbWJlciJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsImR1cmF0aW9uIjo2OCwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6NCwic3RlbSI6IkhvdyBkb2VzIHRoZSB3b21hbiBmZWVsIGFib3V0IHRoZSBzdG9yZSBjcmVkaXQgY2FyZD8iLCJvcHRpb25zIjpbInVuaW50ZXJlc3RlZCIsImludGVyZXN0ZWQiLCJhbm5veWVkIiwiY29uZnVzZWQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBpcyB0cnVlIGFib3V0IHRoZSBzdG9yZSBjcmVkaXQgY2FyZD8iLCJvcHRpb25zIjpbIkl0IGhhcyBhIGhpZ2ggaW50ZXJlc3QgcmF0ZS4iLCJJdCByZWR1Y2VzIHByaWNlcyBvbiBwdXJjaGFzZXMuIiwiSXQgY2Fubm90IGJlIHVzZWQgb25saW5lLiIsIkl0IHJlcXVpcmVzIGEgeWVhcmx5IGZlZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiV2hhdCB3aWxsIHRoZSB3b21hbiBsaWtlbHkgZG8gYWJvdXQgdGhlIGNyZWRpdCBjYXJkPyIsIm9wdGlvbnMiOlsiZGVjbGluZSB0aGUgb2ZmZXIiLCJmaWxsIG91dCBhbiBvbmxpbmUgYXBwbGljYXRpb24iLCJhcHBseSBhdCB0aGUgY291bnRlciIsInRoaW5rIGFib3V0IGl0IGxhdGVyIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwiZHVyYXRpb24iOjM2LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Nywic3RlbSI6IldoaWNoIG9uZSBkb2VzIHRoZSB3b21hbiBsaWtlIG1vc3Q\/Iiwib3B0aW9ucyI6WyJ0aGUgcm91bmQgZGluaW5nIHRhYmxlIiwidGhlIGdsYXNzLXRvcCB0YWJsZSIsInRoZSB3b29kZW4gY29mZmVlIHRhYmxlIiwidGhlIGZvbGRpbmcgc2lkZSB0YWJsZSJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IHdpbGwgdGhlIHdvbWFuIGxpa2VseSBkbyBuZXh0PyIsIm9wdGlvbnMiOlsiYnV5IHRoZSB0YWJsZSB0b2RheSIsImdvIHRvIGEgZGlmZmVyZW50IHN0b3JlIiwib3JkZXIgdGhlIHRhYmxlIG9ubGluZSIsIndhaXQgZm9yIGEgc2FsZSJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDggXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgaG90ZWwgY2xlcmsgYW5kIGEgZ3Vlc3QuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIiwiVGhlbiBhbnN3ZXIgdGhlIHF1ZXN0aW9ucy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgaG90ZWwuIFRoZSB3b21hbiB3b3Jrc1xuYXQgdGhlIGhvdGVsLCBhbmQgdGhlIG1hbiBpcyBhIGN1c3RvbWVyLlxuXG5XT01BTjogICAgICAgIFdlbGNvbWUgdG8gdGhlIE9jZWFuIEJyZWV6ZSBIb3RlbC4gSG93IG1heSBJIGhlbHAgeW91P1xuTUFOOiBIaS4gQ2FuIEkgcGxlYXNlIGdldCB0d28gcm9vbXMgdG9nZXRoZXIgZm9yIHRvbmlnaHQ\/IFNpZGUtYnktc2lkZSB0b2dldGhlciB3aXRoIGFcbmNvbm5lY3RpbmcgZG9vci4gTXkgbmFtZVx1MjAxOXMgSGFuayBHcnViZXIuXG5XT01BTjogTGV0IG1lIHNlZSB3aGF0IHdlIGhhdmUgYXZhaWxhYmxlLiBXZSBkb25cdTIwMTl0IGhhdmUgcm9vbXMgd2l0aCBjb25uZWN0aW5nXG5kb29ycywgYnV0IHdlIGRvIGhhdmUgYSBzdWl0ZSB0aGF0IGluY2x1ZGVzIHR3byBiZWRyb29tcy4gSXQgYWxzbyBoYXMgdHdvIGJhdGhyb29tcyBhbmRcbmEga2l0Y2hlbi4gVGhhdFx1MjAxOXMgcHJvYmFibHkgeW91ciBiZXN0IGJldC5cbk1BTjogVGhhdCBtaWdodCBiZSBjb252ZW5pZW50LCBidXQgd2UgZG9uXHUyMDE5dCBuZWVkIGEga2l0Y2hlbi4gSG93IG11Y2ggZG9lcyB0aGUgc3VpdGVcbmNvc3Q\/XG5XT01BTjogSXRcdTIwMTlzICQzNTAgZm9yIG9uZSBuaWdodCwgcGx1cyB0YXhlcy4gSSBkbyBoYXZlIHR3byBzZXBhcmF0ZSByb29tcyBvbiB0aGVcbnNpeHRoIGZsb29yLiBFYWNoIG9mIHRoZXNlIHJvb21zIHdvdWxkIGJlICQxNTAgcGx1cyB0YXhlcy4gV291bGQgeW91IHByZWZlciB0aGVzZT9cbk1BTjogV2VsbCwgdGhlIGtpZHMgYXJlIHlvdW5nIHRlZW5hZ2Vycywgc28gd2Ugd2FudCB0aGVtIHdoZXJlIHdlIGNhbiBzZWUgdGhlbS5cbldvdWxkIHRoZSBmb3VyIG9mIHVzIGZpdCBpbiBvbmUgb2YgdGhvc2Ugcm9vbXM\/XG5XT01BTjogVGhlcmUgYXJlIHR3byBxdWVlbi1zaXplIGJlZHMgaW4gZWFjaCByb29tLCBhbmQgdGhlIGJhdGhyb29tIGlzIHF1aXRlXG5sYXJnZS4gRm9yIHR3byBhZGRpdGlvbmFsIHBlb3BsZSBpdCB3b3VsZCBiZSAkMjUgZXh0cmEgcGVyIHBlcnNvbi5cbk1BTjogV2VsbCwgd2UgbWF5IGFzIHdlbGwgZ28gZm9yIHRoZSBzdWl0ZSwgdGhlbi4gSXRcdTIwMTlzIG5vdCBtdWNoIG1vcmUsIGFuZCB0aGVuIHdlIGNhblxua2VlcCBhbiBleWUgb24gb3VyIGtpZHMuIFdoYXQgYWJvdXQgcmVzdGF1cmFudHM\/IElzIHRoZXJlIHNvbWV0aGluZyBpbiB0aGUgaG90ZWw\/XG5XT01BTjogV2UgaGF2ZSBjb21wbGltZW50YXJ5IGJyZWFrZmFzdCBldmVyeSBtb3JuaW5nLiBGb3IgZGlubmVyIHRoaXMgZXZlbmluZyxcbnlvdSBzaG91bGQgdHJ5IHRoZSBCcmVlemUgQmFyIGFuZCBHcmlsbCB3aGljaCBzZXJ2ZXMgYSB2YXJpZXR5IG9mIGZvb2QsIGluY2x1ZGluZyBidXJnZXJzXG5hbmQgZnJpZXMuIElcdTIwMTltIHN1cmUgZXZlcnlvbmUgd2lsbCBmaW5kIHdoYXQgdGhleSBsaWtlIG9uIHRoZSBtZW51LlxuTUFOOiBPaCB5ZWFoLCB0aGF0IHNvdW5kcyBncmVhdC4gV2hhdCBhYm91dCBwYXJraW5nPyBPaCwgYW5kIEkgdGhpbmsgeW91IGhhdmUgYSBwb29sLFxucmlnaHQ\/IFRoZSBraWRzIHdvdWxkIGxvdmUgdG8gcGxheSBhcm91bmQgaW4gdGhlIHBvb2wgZm9yIGEgd2hpbGUuXG5XT01BTjogSGVyZVx1MjAxOXMgYSBwYXJraW5nIHBhc3MgdG8gcHV0IG9uIHlvdXIgdmVoaWNsZSBkYXNoYm9hcmQuIFRoZSBwYXJraW5nIGFyZWEgaXNcbmJlaGluZCB0aGUgaG90ZWwuIEFjdHVhbGx5LCBJXHUyMDE5bSBzb3JyeSBidXQgdGhlIHBvb2wgaXMgY2xvc2VkIHRoaXMgd2VlayBmb3IgcmVwYWlycy4gSW5zdGVhZCBJXG5jYW4gcHJvdmlkZSBmcmVlIG1vdmllcyBhbmQgaW50ZXJuZXQgZ2FtZXMgb24geW91ciBUViBpZiB5b3UgbGlrZS4gWW91ciBjaGlsZHJlbiBtaWdodFxubGlrZSB0aGF0LlxuXGZNQU46IFdlbGwsIHRoZSBwb29sIHdvdWxkIHRpcmUgdGhlbSBvdXQgbW9yZSwgYnV0IHdlXHUyMDE5bGwgYWNjZXB0IHlvdXIgb2ZmZXIgYW55d2F5LiBTaWduXG51cyBpbiBmb3Igb25lIG5pZ2h0IGluIHRoYXQgc3VpdGUhXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTUuXG5cbldoeSBpcyB0aGUgbWFuIHRhbGtpbmcgdG8gdGhlIHdvbWFuP1xuV2h5IGRvZXMgdGhlIG1hbiB3YW50IHR3byByb29tcyB0b2dldGhlcj9cbldoYXQga2luZCBvZiByb29tIGRvZXMgdGhlIHdvbWFuIHN1Z2dlc3Q\/XG5XaGF0IHdhcyB0aGUgbWFuIHdpc2hpbmcgaGlzIGNoaWxkcmVuIGNvdWxkIGRvP1xuSG93IGRvZXMgdGhlIG1hbiBmZWVsIGFib3V0IHRoZSBob3RlbD8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJkdXJhdGlvbiI6MTQ3LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgaXMgdGhlIG1hbiB0YWxraW5nIHRvIHRoZSB3b21hbj8iLCJvcHRpb25zIjpbInRvIGNoZWNrIGludG8gdGhlIGhvdGVsIiwidG8gY29tcGxhaW4gYWJvdXQgYSByb29tIiwidG8gYm9vayBhIGZ1dHVyZSBzdGF5IiwidG8gYXNrIGZvciBkaXJlY3Rpb25zIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBkb2VzIHRoZSBtYW4gd2FudCB0d28gcm9vbXMgdG9nZXRoZXI\/Iiwib3B0aW9ucyI6WyJ0byBzYXZlIG1vbmV5IiwidG8ga2VlcCB3YXRjaCBvbiBoaXMgY2hpbGRyZW4iLCJ0byBoYXZlIG1vcmUgc3BhY2UiLCJ0byBiZSBuZWFyIHRoZSBwb29sIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoYXQga2luZCBvZiByb29tIGRvZXMgdGhlIHdvbWFuIHN1Z2dlc3Q\/Iiwib3B0aW9ucyI6WyJhIHNpbmdsZSBsYXJnZSByb29tIiwiYSBzZXQgb2Ygcm9vbXMgd2l0aCBhIGtpdGNoZW4iLCJ0d28gcm9vbXMgb24gc2VwYXJhdGUgZmxvb3JzIiwiYSByb29tIHdpdGggYSBiYWxjb255Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoYXQgd2FzIHRoZSBtYW4gd2lzaGluZyBoaXMgY2hpbGRyZW4gY291bGQgZG8\/Iiwib3B0aW9ucyI6WyJ3YXRjaCB0ZWxldmlzaW9uIiwiZXhlcmNpc2UgaW4gdGhlIHBvb2wiLCJvcmRlciByb29tIHNlcnZpY2UiLCJwbGF5IGluIHRoZSBsb2JieSJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJIb3cgZG9lcyB0aGUgbWFuIGZlZWwgYWJvdXQgdGhlIGhvdGVsPyIsIm9wdGlvbnMiOlsiZGlzYXBwb2ludGVkIHdpdGggdGhlIHNlcnZpY2UiLCJzYXRpc2ZpZWQgd2l0aCB0aGUgYXJyYW5nZW1lbnRzIiwidW5zdXJlIGFib3V0IHRoZSBwcmljZSIsIndvcnJpZWQgYWJvdXQgdGhlIGxvY2F0aW9uIl0sImtleSI6MSwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBhYm91dCByZWdpc3RlcmluZyBmb3Igc3dpbW1pbmcgbGVzc29ucy4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgY29udmVyc2F0aW9uIG9ubHkgb25jZS4iLCJUaGVuIGFuc3dlciB0aGUgcXVlc3Rpb25zLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbi4gVGhlIG1hbiBpcyBhXG5saWZlZ3VhcmQsIGFuZCB0aGUgd29tYW4gaXMgYXNraW5nIGhpbSBhYm91dCBzd2ltbWluZyBsZXNzb25zLlxuXG5XT01BTjogSGkhIEkganVzdCBtb3ZlZCB0byB0aGlzIG5laWdoYm91cmhvb2QgYW5kIElcdTIwMTltIGV4Y2l0ZWQgdGhhdCB0aGVyZVx1MjAxOXMgYSBjaXR5XG5hcXVhdGljIGNlbnRyZSByaWdodCBoZXJlISBJXHUyMDE5dmUgbmV2ZXIgbGVhcm5lZCBob3cgdG8gc3dpbSBhbmQgSVx1MjAxOWQgbGlrZSB0byB0YWtlIGxlc3NvbnMuXG5NQU46IEdyZWF0ISBNeSBuYW1lXHUyMDE5cyBNYXR0LiBJXHUyMDE5bSBhIGxpZmVndWFyZCBoZXJlIGFuZCBJIHRlYWNoIHN3aW1taW5nIGxlc3NvbnMhXG5XaGF0XHUyMDE5cyB5b3VyIG5hbWU\/XG5XT01BTjogSVx1MjAxOW0gQW5kcmVhLiBOaWNlIHRvIG1lZXQgeW91ISBIb3cgZG8gSSBiZWdpbiBzd2ltbWluZyBsZXNzb25zPyBJXHUyMDE5bSBhXG5iaXQgbmVydm91cy5cbk1BTjogTmljZSB0byBtZWV0IHlvdSB0b28hIERvblx1MjAxOXQgd29ycnksIGV2ZXJ5b25lIGlzIG5lcnZvdXMgYXQgZmlyc3QuIFdoYXQgbGV2ZWwgb2ZcbmNsYXNzIHlvdSBzdGFydCBpbiB3aWxsIGRlcGVuZCBvbiB5b3VyIGNvbWZvcnQgbGV2ZWwuIExldCBtZSBhc2sgeW91IGEgZmV3IHF1ZXN0aW9ucy4gQXJlXG55b3UgY29tZm9ydGFibGUgcHV0dGluZyB5b3VyIGZhY2UgdW5kZXIgd2F0ZXIgYW5kIGhvbGRpbmcgeW91ciBicmVhdGg\/XG5XT01BTjogWWVzLCBJXHUyMDE5bSBwcmV0dHkgY29tZm9ydGFibGUgZG9pbmcgdGhhdC4gSSBjYW4gaG9sZCBteSBicmVhdGggdW5kZXIgd2F0ZXIgaW5cbnRoZSBiYXRodHViLlxuTUFOOiBHcmVhdCEgVGhhdFx1MjAxOXMgYSBnb29kIGZpcnN0IHN0ZXAuIENhbiB5b3UgYmxvdyBidWJibGVzIHdpdGggeW91ciBmYWNlIGluIHRoZSB3YXRlcixcbndpdGhvdXQgZ2V0dGluZyB3YXRlciB1cCB5b3VyIG5vc2U\/XG5XT01BTjogICAgICAgWWVzISAuIC4gLiBJIGNhbiBkbyB0aGF0LlxuTUFOOiBQZXJmZWN0LiBBcmUgeW91IGNvbWZvcnRhYmxlIGZsb2F0aW5nIGluIHdhdGVyP1xuXGZXT01BTjogTm8sIGRlZmluaXRlbHkgbm90LiBJIGZlbGwgb3V0IG9mIGEgYm9hdCB3aGVuIEkgd2FzIGEgY2hpbGQgYW5kIHdhcyBhIGJpdFxudHJhdW1hdGl6ZWQuIFRoYXRcdTIwMTlzIHdoeSBJIGhhdmUgYWx3YXlzIGJlZW4gc2NhcmVkIG9mIHdhdGVyLiBCdXQgSVx1MjAxOXZlIGFsd2F5cyB3YW50ZWQgdG9cbmxlYXJuIGhvdyB0byBzd2ltLCBhbmQgbm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBmYWNlIG15IGZlYXIhXG5NQU46IEkgYWdyZWUhIFN3aW1taW5nIGNhbiBiZSByZWFsbHkgZnVuIGlmIHlvdSBmZWVsIHNhZmUgaW4gdGhlIHdhdGVyLiBJXHUyMDE5bSBnb2luZyB0b1xucmVjb21tZW5kIHlvdSBzdGFydCBpbiBBZHVsdCBCZWdpbm5lciBMZXZlbCBPbmUgY2xhc3Nlcy4gVGhleSBydW4gb24gTW9uZGF5LFxuV2VkbmVzZGF5LCBhbmQgU2F0dXJkYXkgZXZlbmluZ3MuIFlvdSBjYW4gZG8gYW55d2hlcmUgZnJvbSBvbmUgdG8gdGhyZWUgY2xhc3NlcyBhXG53ZWVrLCBmb3IgZm9ydHktZml2ZSBtaW51dGVzIGVhY2guIEkgdGVhY2ggdGhlIFNhdHVyZGF5IGV2ZW5pbmcgY2xhc3Nlcy5cbldPTUFOOiBJIGNhbiBkbyBXZWRuZXNkYXlzIGFuZCBTYXR1cmRheXMsIHNvIHRoYXQgd29ya3MgcGVyZmVjdGx5LiBXaGF0IHdpbGwgSVxubmVlZCB0byBicmluZz9cbk1BTjogWW91XHUyMDE5bGwgbmVlZCBhIHN3aW1zdWl0IHRoYXQgeW91IGNhbiBtb3ZlIGNvbWZvcnRhYmx5IGluLCBhIHRvd2VsLCBhbmQgMjUgY2VudHNcbmZvciB0aGUgbG9ja2VycyBpbiB0aGUgY2hhbmdlcm9vbS4gSVx1MjAxOWQgYWxzbyByZWNvbW1lbmQgc3dpbSBnb2dnbGVzLCB3aGljaCB3ZSBzZWxsIGhlcmUuXG5JZiB5b3Ugd2FudCB0byBwcm90ZWN0IHlvdXIgaGFpciBmcm9tIHRoZSBjaGxvcmluZSwgd2UgYWxzbyBzZWxsIHN3aW0tY2Fwcy5cbldPTUFOOiAgICAgICAgR3JlYXQhIEkgZG9uXHUyMDE5dCBoYXZlIGEgc3dpbXN1aXQgeWV0LCBidXQgSVx1MjAxOWxsIGdvIGJ1eSBvbmUuXG5NQU46IEV4Y2VsbGVudCEgTGV0XHUyMDE5cyBnZXQgeW91IHNpZ25lZCB1cCBmb3IgY2xhc3NlcyFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtNi5cblxuV2hlcmUgZG8gdGhlIHN3aW1taW5nIGxlc3NvbnMgdGFrZSBwbGFjZT9cbldoeSBkb2VzIHRoZSB3b21hbiB3YW50IHRvIGxlYXJuIHRvIHN3aW0\/XG5XaHkgaXMgdGhlIHdvbWFuIG5lcnZvdXM\/XG5XaHkgZG9lcyB0aGUgbWFuIGFzayB0aGUgd29tYW4gc28gbWFueSBxdWVzdGlvbnM\/XG5XaHkgaXMgdGhlIHdvbWFuIGFmcmFpZCB0byBzd2ltP1xuV2hlbiB3aWxsIHRoZSB3b21hbiB0YWtlIGNsYXNzZXM\/Iiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjE1NiwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hlcmUgZG8gdGhlIHN3aW1taW5nIGxlc3NvbnMgdGFrZSBwbGFjZT8iLCJvcHRpb25zIjpbImEgcHJpdmF0ZSBjbHViIiwiYSBwdWJsaWMgcG9vbCIsImEgbGFrZSIsInRoZSBvY2VhbiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gd2FudCB0byBsZWFybiB0byBzd2ltPyIsIm9wdGlvbnMiOlsiSGVyIGRvY3RvciByZWNvbW1lbmRlZCBpdC4iLCJTaGUgc2F5cyBpdFx1MjAxOXMgYSBnb29kIHRpbWUgdG8gbGVhcm4uIiwiSGVyIGNoaWxkcmVuIGFyZSBsZWFybmluZyB0b28uIiwiU2hlIHdhbnRzIHRvIGNvbXBldGUuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gbmVydm91cz8iLCJvcHRpb25zIjpbIlNoZSBjYW5ub3QgYWZmb3JkIHRoZSBjbGFzc2VzLiIsIlNoZSBoYXMgbmV2ZXIgdGFrZW4gc3dpbW1pbmcgbGVzc29ucy4iLCJTaGUgaGFzIGEgYnVzeSBzY2hlZHVsZS4iLCJTaGUgZGlzbGlrZXMgdGhlIGluc3RydWN0b3IuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoeSBkb2VzIHRoZSBtYW4gYXNrIHRoZSB3b21hbiBzbyBtYW55IHF1ZXN0aW9ucz8iLCJvcHRpb25zIjpbInRvIGZpbGwgb3V0IGEgZm9ybSIsInRvIHBsYWNlIGhlciBpbiB0aGUgYXBwcm9wcmlhdGUgY2xhc3MiLCJ0byBzZWxsIGhlciBleHRyYSBsZXNzb25zIiwidG8gY2hlY2sgaGVyIGhlYWx0aCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgaXMgdGhlIHdvbWFuIGFmcmFpZCB0byBzd2ltPyIsIm9wdGlvbnMiOlsiU2hlIG5lYXJseSBkcm93bmVkIGFzIGEgY2hpbGQuIiwiU2hlIGhhZCBhIGZyaWdodGVuaW5nIGV4cGVyaWVuY2Ugb24gYSBib2F0LiIsIlNoZSBjYW5ub3QgZmxvYXQuIiwiU2hlIGlzIGFmcmFpZCBvZiBkZWVwIHdhdGVyLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGVuIHdpbGwgdGhlIHdvbWFuIHRha2UgY2xhc3Nlcz8iLCJvcHRpb25zIjpbImV2ZXJ5IG1vcm5pbmciLCJ0d28gZXZlbmluZ3MgYSB3ZWVrIiwib25seSBvbiB3ZWVrZW5kcyIsIm9uY2UgYSBtb250aCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBzdG9yeSBhYm91dCBzb21ldGhpbmcgc3VycHJpc2luZyBmb3VuZCBieSBhIGNvdXBsZSBpbiBLZWxvd25hLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBuZXdzIGl0ZW0gb25seSBvbmNlLiIsIkl0IGlzIGFib3V0IDEuNSBtaW51dGVzIGxvbmcuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBuZXdzIHN0b3J5IGFib3V0IHNvbWV0aGluZyBzdXJwcmlzaW5nIGZvdW5kIGJ5IGEgY291cGxlIGluIEtlbG93bmEuXG5cbkxhc3QgRnJpZGF5IG5pZ2h0LCBhIEtlbG93bmEgY291cGxlIGZvdW5kIGEgc3VycHJpc2Ugd2hpbGUgY2xlYXJpbmcgdGhlIGF0dGljIG9mIHRoZWlyXG5oZXJpdGFnZSBob3VzZS5cblxmQWxleCBhbmQgUmViZWNjYSBDYXN0aWxsbyBmb3VuZCBhIHBhcGVyIHdhc3AgbmVzdCBpbiB0aGUgYXR0aWMuIFRoZSBuZXN0IHdhcyBidWlsdCBieVxuc3RpbmdpbmcgaW5zZWN0cyB0aGF0IGNoZXcgb24gd29vZCBmaWJyZSwgbWl4IGl0IHdpdGggdGhlaXIgc2FsaXZhLCBhbmQgc3BldyBvdXQgYVxuc3Vic3RhbmNlIHRoZXkgdXNlIGFzIGEgYnVpbGRpbmcgbWF0ZXJpYWwuXG5cbkJ1dCB0aGlzIHdhcyBubyBvcmRpbmFyeSB3YXNwIG5lc3QuIEl0IHdhcyBicmlnaHQgcmVkLCBibHVlLCBhbmQgeWVsbG93LCBsb29raW5nIG1vcmUgbGlrZVxuYSBwaW5hdGEgb3IgcGFydHkgYmFsbG9vbiB0aGFuIGEgbmVzdC4gVG8gc29sdmUgdGhlIG15c3RlcnksIHRoZSBDYXN0aWxsb3MgZGlkblx1MjAxOXQgaGF2ZSB0b1xubG9vayBmYXIuIEluIGFub3RoZXIgcm9vbSBvZiB0aGUgYXR0aWMsIHRoZXkgZm91bmQgZm91ciBkdXN0eSBib3hlcyBvZiBvbGQgc3VwZXJoZXJvIGNvbWljXG5ib29rcywgd2hpY2ggdGhlIHdhc3BzIGhhZCB1c2VkIGFzIHJhdyBtYXRlcmlhbC4gTW9zdCBvZiB0aGUgY29taWNzIGhhZCBiZWVuIGNoZXdlZCB0b1xuc2hyZWRzLCBidXQgc2V2ZXJhbCB3ZXJlIHN0aWxsIHNlYWxlZCBpbiB0aGVpciBvcmlnaW5hbCBwbGFzdGljIHBhY2thZ2luZy5cblxuVGhlIENhc3RpbGxvcyBicm91Z2h0IHRoZSB1bmhhcm1lZCBpdGVtcyB0byBhIGNvbGxlY3RvcidzIHNob3AgYW5kIHdlcmUgdG9sZCB0aGF0IG9uZSwgYVxucmFyZSAxOTUyIFN1cGVybWFuIGNvbWljIGluIG1pbnQgY29uZGl0aW9uLCBpcyB3b3J0aCAkMSw2MDAgZG9sbGFycy4gUmVzb2x2ZWQgdG9cbmNvbnRpbnVlIHdvcmtpbmcgb24gdGhlaXIgaG91c2UsIHRoZSBDYXN0aWxsb3MgYXJlIG5vdyBkZWNpZGluZyB3aGV0aGVyIHRvIGtlZXAgdGhlIGl0ZW1cbm9yIHNlbGwgaXQgb24gZUJheS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJOZXdzIEl0ZW0iLCJkdXJhdGlvbiI6NjgsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRoZSBLZWxvd25hIGNvdXBsZSB3ZXJlIiwib3B0aW9ucyI6WyJjbGVhbmluZyBvdXQgdGhlaXIgYXR0aWMuIiwibW92aW5nIGJveGVzIGludG8gdGhlIGF0dGljLiIsInJlbW92aW5nIGEgd2FzcCBuZXN0LiIsIndhdGNoaW5nIHRoZSB3YXNwcy4iXSwia2V5IjowfSx7Im4iOjIsInN0ZW0iOiJUaGUgc3VycHJpc2UgdGhleSBmb3VuZCB3YXMiLCJvcHRpb25zIjpbImNvbnN0cnVjdGVkIGZyb20gb2xkIHBhcGVyLiIsImRpc2NhcmRlZCBuZWFyIHRoZSBuZXN0LiIsIm93bmVkIGJ5IGEgY29sbGVjdG9yLiIsInVzZWQgYXMgYSBwYXJ0eSBkZWNvcmF0aW9uLiJdLCJrZXkiOjB9LHsibiI6Mywic3RlbSI6IldoaWxlIHNvbHZpbmcgdGhlIG15c3RlcnksIHRoZXkgZGlzY292ZXJlZCIsIm9wdGlvbnMiOlsibW9yZSB3YXNwIG5lc3RzLiIsInNvbWUgb2xkIGJvb2tzLiIsImEgbGFyZ2UgcGluYXRhLiIsInBhcnR5IGJhbGxvb25zLiJdLCJrZXkiOjF9LHsibiI6NCwic3RlbSI6IlRoZSBjb2xsZWN0b3IiLCJvcHRpb25zIjpbIm9mZmVyZWQgdG8gc2VsbCB0aGUgaXRlbS4iLCJyZWZ1c2VkIHRvIGxvb2sgYXQgdGhlIGl0ZW0uIiwid2FudGVkIHRvIGJ1eSB0aGUgaXRlbS4iLCJnYXZlIGEgdmFsdWUgZm9yIHRoZSBpdGVtLiJdLCJrZXkiOjN9LHsibiI6NSwic3RlbSI6IlRoZSBjb3VwbGUgZGVjaWRlZCB0byIsIm9wdGlvbnMiOlsiZGVsYXkgcmVub3ZhdGlvbnMgdG8gdGhlaXIgaG91c2UuIiwic2VsbCB0aGUgaXRlbSB0byBwYXkgZm9yIHJlbm92YXRpb25zLiIsInRoaW5rIG1vcmUgYWJvdXQgdGhlaXIgb3B0aW9ucy4iLCJsb29rIGZvciBtb3JlIGl0ZW1zIGluIHRoZWlyIGF0dGljLiJdLCJrZXkiOjJ9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIGJ1c2luZXNzIGFzc29jaWF0ZXMsIHR3byB3b21lbiBhbmQgb25lIG1hbi4gVGhleSB3b3JrIGF0IGEgYm9va3N0b3JlLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCB0aGUgZGlzY3Vzc2lvbiBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBidXNpbmVzcyBhc3NvY2lhdGVzLCB0d28gd29tZW4gYW5kIG9uZSBtYW4uXG5UaGV5IHdvcmsgYXQgYSBib29rc3RvcmUuXG5cbk5hb21pOiAgICAgIFNvLCB0aGUgZmlyc3QgdGhpbmcgb24gb3VyIGFnZW5kYSBpcyB0aGUgc3RvcmVmcm9udCB3aW5kb3cuIFRoZSB0d28gb2YgeW91XG5oYXZlIHNvbWUgY29uY2VybnM\/XG5OYXRoYW46ICAgICAgIFllcywgd2VcdTIwMTl2ZSBiZWVuIGNvbmNlcm5lZCBhYm91dCB0aGUgbWVzc2FnZSB3ZVx1MjAxOXJlIHNlbmRpbmcuIEZvciBzaXggb2YgdGhlXG5sYXN0IGVpZ2h0IHdlZWtzLCB3ZVx1MjAxOXZlIGJlZW4gZmVhdHVyaW5nIGEgcm9tYW5jZSB0aXRsZS4gQnV0IHdlIGNhcnJ5IG1hbnkgb3RoZXIgZ2VucmVzIG9mXG5maWN0aW9uLiBXZSBhbHNvIGNhcnJ5IG5vbi1maWN0aW9uLlxuVGFzaGE6IE5vdCBvbmx5IHRoYXQsIGJ1dCB3ZSBoYWQgZmlmdHkgY29waWVzIG9mIHRoZSBzYW1lIHRpdGxlIGluIHRoZSB3aW5kb3cuIEkgbWVhbiwgaWZcbndlIHdhbnQgdG8gZmVhdHVyZSByb21hbmNlLCB3ZSBzaG91bGQgaGF2ZSBmaWZ0eSBkaWZmZXJlbnQgdGl0bGVzLCBvbmUgY29weSBvZiBlYWNoLlxuT3RoZXJ3aXNlLCBpdFx1MjAxOXMgcHN5Y2hvbG9naWNhbCBtYW5pcHVsYXRpb24uXG5OYW9taTogICAgICBZZXMsIGJ1dCB0aGUgcHVibGlzaGVyIG9mIExvdmUgV2lucyBwYWlkIHVzIGZvciBleGNsdXNpdmUgdXNlIG9mIHRoYXRcbndpbmRvdy4gVGhhdFx1MjAxOXMgd2h5IHdlIGRpc3BsYXllZCBvbmx5IHRoYXQgdGl0bGUuXG5OYXRoYW46ICAgICAgIFlvdVx1MjAxOXZlIGJlZW4gdXNpbmcgb3VyIHdpbmRvdyBmb3IgYWR2ZXJ0aXNpbmc\/IFNpbmNlIHdoZW4\/XG5cZlRhc2hhOiBPaCwgSSBkb25cdTIwMTl0IGxpa2UgdGhhdCBhdCBhbGwhIEkgYWdyZWUgd2l0aCBOYXRoYW4uIEkgbWVhbiwgd2hhdFx1MjAxOXMgaW4gb3VyIHdpbmRvd1xuc2hvdWxkIHJlcHJlc2VudCB3aGF0XHUyMDE5cyBvbiBvdXIgc2hlbHZlcy4gQWx0ZXJuYXRpdmVseSwgd2Ugc2hvdWxkIHB1dCBhbGwgb3VyIGJlc3QgYm9va3MgaW5cbm91ciB3aW5kb3cuXG5OYXRoYW46ICAgICAgSXNuXHUyMDE5dCBpdCBvdXIgdWx0aW1hdGUgZ29hbCB0byBzdGF5IGluIGJ1c2luZXNzPyBCeSBhdHRyYWN0aW5nIG5ldyBjdXN0b21lcnM\/IElcbm1lYW4sIHN1cmUsIGJ5IGluY3JlYXNpbmcgYWR2ZXJ0aXNpbmcgb24gb25lIHRpdGxlIHdlIHdpbGwgaW5jcmVhc2Ugc2FsZXMgb2YgdGhhdCB0aXRsZSwgYnV0IC4gLlxuLlxuTmFvbWk6ICAgICAgICBXZSBuZWVkIHRoZSBhZHZlcnRpc2luZyByZXZlbnVlLiBJdFx1MjAxOXMgYXMgc2ltcGxlIGFzIHRoYXQuXG5UYXNoYTogTm8sIEkgZG9uXHUyMDE5dCB0aGluayBpdCBpcy4gSSBtZWFuLCBpZiB5b3UgYXJlIHNlbGxpbmcgb3VyIHN0b3JlIGZyb250IGRpc3BsYXkgdG8gdGhlXG5oaWdoZXN0IGJpZGRlciwgSVx1MjAxOW0gYWZyYWlkIHRoYXQgd2VcdTIwMTlyZSBoZWFkaW5nIGluIGEgcmVhbGx5IGJhZCBkaXJlY3Rpb24hIFBlb3BsZSB3aWxsIHN0YXJ0XG50aGlua2luZyBvZiB1cyBhcyB0aGUgcm9tYW5jZSBib29rc3RvcmUhIEFuZCB0aGV5IHdvblx1MjAxOXQgdGhpbmsgb2YgdXMgd2hlbiB0aGV5IHdhbnQgdG9cbmJ1eSBsaXRlcmFyeSBmaWN0aW9uIG9yIG5vbmZpY3Rpb24hXG5OYXRoYW46ICAgICAgV2VcdTIwMTlsbCBzdGFydCBsb3NpbmcgY3VzdG9tZXJzLiBBbmQsIHRoZXJlZm9yZSwgd2UgYXJlIGdvaW5nIHRvIHN0YXJ0IGxvc2luZ1xucmV2ZW51ZS4gQ291bGRuXHUyMDE5dCB3ZSwgc2F5LCBoYXZlIHRocmVlIGRpZmZlcmVudCBib29rc2hlbGYgbGV2ZWxzIGluIHRoZSB3aW5kb3c\/IFdlXG5jb3VsZCBoYXZlIG9uZSBmb3IgbGl0ZXJhcnkgZmljdGlvbiwgb25lIGZvciBnZW5yZSBmaWN0aW9uLCBhbmQgb24gdGhlIGxhc3Qgb25lLCB3ZSBjb3VsZCBwdXRcbm5vbi1maWN0aW9uLlxuTmFvbWk6ICAgICAgIFdoeSBjYW4ndCB3ZSBkbyB0aGF0PyBCZWNhdXNlIG5vIG9uZSB3aWxsIHBheSB0byBoYXZlIG9uZSBjb3B5IG9mIGEgYm9va1xuaW4gYSB3aW5kb3chXG5UYXNoYTogWWVhaCwgYnV0IHRoYXRcdTIwMTlzIG15IHBvaW50LiBPdXIgc3RvcmVmcm9udCB3aW5kb3cgc2hvdWxkblx1MjAxOXQgYmUgZm9yIHNhbGUhIFRoZVxucGVvcGxlIHdobyBjb21lIHRvIHRoaXMgbWFsbCBkbyBhIGxvdCBvZiB3aW5kb3cgYnJvd3NpbmcuIFdlIHNob3VsZCBiZSB1c2luZyBpdCB0b1xuZHJhdyB0aGVtIGludG8gdGhlIHN0b3JlLCBieSBzaG93aW5nIHRoZW0gd2hhdFx1MjAxOXMgaW5zaWRlLlxuTmF0aGFuOiAgICAgIFdvdWxkIHlvdSBiZSB3aWxsaW5nIHRvIHRyeSBteSBpZGVhIGZvciB0d28gbW9udGhzPyBKdXN0IHRvIGNvbXBhcmVcbnN0YXRpc3RpY3NcdTIwMTR3ZSBjb3VsZCBsb29rIGF0IGhvdyBtYW55IHBlb3BsZSBjb21lIGluLCB3ZSBjb3VsZCBsb29rIGF0IHNhbGVzLCBhbmQgc28gb24sXG5hbmQgdGhlbiB3ZSBjb3VsZCBjb21lIGJhY2sgYW5kIHJldmlzaXQgdGhlIGlzc3VlLlxuVGFzaGE6IEtlZXAgaW4gbWluZCB0aGF0IHdlXHUyMDE5cmUgY29tcGV0aW5nIHdpdGggb3RoZXIgYm9va3N0b3Jlcy4gSSBtZWFuLCB0aGVyZSBhcmUgdHdvXG5vdGhlcnMgcmlnaHQgaGVyZSBpbiB0aGlzIG1hbGwuIEFuZCBwZW9wbGUgZXhwZWN0IHRoZSBzdG9jayBpbiB0aGUgd2luZG93IHRvIHJlcHJlc2VudCB0aGVcbnN0b2NrIGluIHRoZSBzdG9yZS5cbk5hb21pOiAgICAgIEJ1dCBwdWJsaXNoZXJzIHBheSBzbyBtdWNoIG1vbmV5IC4gLiAuIE9rYXksIGxldCdzIHRyeSBpdC4gRm9yIGEgY291cGxlIG9mXG5tb250aHMuIEFuZCB0aGVuIHdlXHUyMDE5bGwgc2VlLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkRpc2N1c3Npb24gKHZpZGVvKSIsImR1cmF0aW9uIjoxNzEsIm1lZGlhVHlwZSI6InZpZGVvIiwibWVkaWFJbnN0cnVjdGlvbiI6IldhdGNoIHRoZSBkaXNjdXNzaW9uLiBZb3Ugd2lsbCB3YXRjaCBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgZG9lcyB0aGUgc3RvcmVcdTIwMTlzIGNvbGxlY3Rpb24gY29uc2lzdCBvZj8iLCJvcHRpb25zIjpbImxhcmdlbHkgcm9tYW5jZSBub3ZlbHMiLCJ2YXJpb3VzIG5vbi1maWN0aW9uIGJvb2tzIiwicHJpbWFyaWx5IGJlc3RzZWxsaW5nIGJvb2tzIiwibnVtZXJvdXMgYm9vayBnZW5yZXMiXSwia2V5IjozfSx7Im4iOjIsInN0ZW0iOiJIb3cgd2FzIHRoZSBib29rIFwiTG92ZSBXaW5zXCIgZGlzcGxheWVkIGluIHRoZSB3aW5kb3c\/Iiwib3B0aW9ucyI6WyJGaWZ0eSBjb3BpZXMgb2YgdGhhdCBib29rIG9ubHkgd2VyZSBkaXNwbGF5ZWQuIiwiVGhlIGJvb2sgd2FzIGRpc3BsYXllZCBvbmx5IG9uIHRoZSB0b3Agc2hlbGYuIiwiVGhlIGJvb2sgd2FzIGRpc3BsYXllZCB3aXRoIG90aGVyIHJvbWFuY2UgdGl0bGVzLiIsIlRlbiBjb3BpZXMgd2VyZSBkaXNwbGF5ZWQgd2l0aCBvdGhlciBnZW5yZSB0aXRsZXMuIl0sImtleSI6MH0seyJuIjozLCJzdGVtIjoiV2hhdCBkbyBOYXRoYW4gYW5kIFRhc2hhIGFncmVlIGFib3V0PyIsIm9wdGlvbnMiOlsiVGhlIGJvb2tzdG9yZSBpcyBub3QgZG9pbmcgd2VsbCBmaW5hbmNpYWxseS4iLCJUaGUgc3RvcmVmcm9udCB3aW5kb3cgc2hvdWxkIGRpc3BsYXkgb25lIGdlbnJlIGF0IGEgdGltZS4iLCJUaGUgYm9va3N0b3JlIGlzIGtub3duIGZvciBpdHMgcmFuZ2Ugb2YgdGl0bGVzLiIsIlRoZSBzdG9yZWZyb250IHdpbmRvdyBzaG91bGQgbm90IGJlIGFkdmVydGlzaW5nIHNwYWNlLiJdLCJrZXkiOjN9LHsibiI6NCwic3RlbSI6IldoYXQgaXMgTmFvbWkgbW9zdCBjb25jZXJuZWQgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJwbGVhc2luZyBwdWJsaXNoZXJzIiwiYmVhdXRpZnlpbmcgdGhlIGRpc3BsYXkiLCJnZW5lcmF0aW5nIHJldmVudWUiLCJzYXRpc2Z5aW5nIGN1c3RvbWVycyJdLCJrZXkiOjJ9LHsibiI6NSwic3RlbSI6IldoYXQgaXMgVGFzaGEgbW9zdCBjb25jZXJuZWQgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJyZXByZXNlbnRpbmcgdGhlIHN0b3JlIGFjY3VyYXRlbHkiLCJyZW1haW5pbmcgbG95YWwgdG8gY3VzdG9tZXJzIiwic3RheWluZyB1cC10by1kYXRlIG9uIGJlc3RzZWxsZXJzIiwiZGVzaWduaW5nIGNyZWF0aXZlIHN0b3JlZnJvbnQgZGlzcGxheXMiXSwia2V5IjowfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGlzIGxpa2VseSB0cnVlIG9mIHRoZSBzdG9yZVx1MjAxOXMgc3RhZmY\/Iiwib3B0aW9ucyI6WyJUaGV5IHdvdWxkIHJhdGhlciB3b3JrIGF0IGFub3RoZXIgYm9va3N0b3JlLiIsIlRoZXkgcm91dGluZWx5IGNvbXBpbGUgY3VzdG9tZXIgc3RhdGlzdGljcy4iLCJUaGV5IHJlY2VpdmUgc2FsZXMgYm9udXNlcyBmcm9tIHB1Ymxpc2hlcnMuIiwiVGhleSBoYXZlIGEgZ29vZCByZWxhdGlvbnNoaXAgd2l0aCBhdXRob3JzLiJdLCJrZXkiOjF9LHsibiI6Nywic3RlbSI6IldoYXQgaGFwcGVucyBhdCB0aGUgZW5kIG9mIHRoZSBkaXNjdXNzaW9uPyIsIm9wdGlvbnMiOlsiVGhleSBjb2xsYWJvcmF0ZSBvbiBhIG5ldyBzb2x1dGlvbi4iLCJBbiBhZ3JlZW1lbnQgaXMgcmVsdWN0YW50bHkgbWFkZS4iLCJUaGV5IHBvc3Rwb25lIHRoZWlyIGRlY2lzaW9uLiIsIlN0YXRpc3RpY3MgYXJlIHVzZWQgdG8gbWFrZSBhIGRlY2lzaW9uLiJdLCJrZXkiOjF9LHsibiI6OCwic3RlbSI6IldoYXQgaXMgdGhlIGRpc2N1c3Npb24gbWFpbmx5IGFib3V0PyIsIm9wdGlvbnMiOlsiYWR2ZXJ0aXNpbmcgb3Bwb3J0dW5pdGllcyBpbiB0aGUgc3RvcmUiLCJjcmVhdGluZyBhbiBhdHRyYWN0aXZlIHdpbmRvdyBkaXNwbGF5IiwibWV0aG9kcyBmb3IgYXR0cmFjdGluZyBuZXcgY3VzdG9tZXJzIiwiYXBwcm9wcmlhdGUgdXNlcyBvZiB0aGUgc3RvcmVmcm9udCJdLCJrZXkiOjN9XX1dfSx7Im5hbWUiOiJQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImhlYWRlclRpdGxlIjoiU2V0IDggXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgdmlkZW8gZ2FtZXMuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIHJlcG9ydCBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMyBtaW51dGVzIGxvbmcuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgdmlkZW8gZ2FtZXMuXG5cZkFzIHZpZGVvIGdhbWluZyByaXNlcyBpbiBwb3B1bGFyaXR5LCB0aGUgZGViYXRlIGFib3V0IGl0cyBiZW5lZml0cyBhbmQgcmlza3MgcmFnZXMgb24uXG5SZXZpbGVkIGJ5IHNvbWUgYXMgYSBjYXVzZSBvZiBwb29yIGdyYWRlcyBhbmQgYWdncmVzc2l2ZSBiZWhhdmlvdXIgaW4gY2hpbGRyZW4sIHZpZGVvXG5nYW1pbmcgaXMgbm93IGp1c3QgYXMgbGlrZWx5IHRvIGJlIHRvdXRlZCBhcyBhIHdheSB0byBkZXZlbG9wIGltcG9ydGFudCBza2lsbHMgYW5kXG5mYWNpbGl0YXRlIGxlYXJuaW5nLlxuXG5Qc3ljaG9sb2dpc3QgVGhvbWFzIE1vcmVhdSBzZWVzIGEgbGluayBiZXR3ZWVuIGxvd2VyIGdyYWRlcyBhbmQgZnJlcXVlbnQsIHVucmVzdHJpY3RlZFxucmVjcmVhdGlvbmFsIHZpZGVvIGdhbWluZy4gSW4gaGlzIHN0dWR5IG9mIDEsNTAwIHN0dWRlbnRzIGFnZXMgOCB0byAxOCwgdGhvc2Ugd2hvIGRldm90ZWRcbmxlc3MgdGltZSB0byB2aWRlbyBnYW1pbmcgYm9hc3RlZCBjb25zaXN0ZW50bHkgaGlnaGVyIGFjYWRlbWljIGFjaGlldmVtZW50LiBNb3JlYXUgaXNcbnF1aWNrIHRvIGFkZCB0aGF0IHRoZXNlIGZpbmRpbmdzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBjYXV0aW91c2x5LCBzaW5jZSBhY2FkZW1pY1xudW5kZXJhY2hpZXZlbWVudCBhbmQgdGhlIGluY2xpbmF0aW9uIHRvIHBsYXkgdmlkZW8gZ2FtZXMgY291bGQgYm90aCBzdGVtIGZyb20gYW5cbnVua25vd24gY2F1c2UuIE1vcmVhdSBhcHBsaWVzIHNpbWlsYXIgcmVhc29uaW5nIHRvIGhpcyBwcmV2aW91cyByZXNlYXJjaCBjb3JyZWxhdGluZ1xudmlkZW8gZ2FtaW5nIGFuZCBhZ2dyZXNzaW9uLiBNb3JlYXUgY2FuXHUyMDE5dCBzYXkgdGhhdCBvbmUgY2F1c2VzIHRoZSBvdGhlcjsgYm90aCBtaWdodCBiZVxuYXR0cmlidXRhYmxlIHRvIGEgdGhpcmQgZmFjdG9yLiBUaHVzLCBmb3IgTW9yZWF1IGl0XHUyMDE5cyB0b28gc29vbiB0byBzYXkgdGhhdCB2aWRlbyBnYW1lcyBwb3NlXG5hIHJpc2sgdG8gY2hpbGRyZW4ncyB0aG91Z2h0cyBhbmQgZW1vdGlvbnMsIGJ1dCBoZSBkb2VzIG5vdGUgdGhhdCA4NSUgcGVyY2VudCBvZiB2aWRlb1xuZ2FtZXMgaW5jbHVkZSB2aW9sZW5jZSwgYW5kIGNoaWxkcmVuIHRlbmQgdG8gbWltaWMgd2hhdCB0aGV5IHNlZS5cblxuRm9ydHkteWVhci1vbGQgTWlrZSBIb3JudmVsdCBpcyBubyBjaGlsZCwgYnV0IGhlXHUyMDE5cyBhbiBhdmlkIGdhbWVyLiBBIFVuaXZlcnNpdHkgb2ZcblRvcm9udG8gcHJvZmVzc29yIHNwZWNpYWxpemluZyBpbiB0aGUgaGlzdG9yeSBvZiBDYW5hZGlhbiBlZHVjYXRpb24sIERyLiBIb3JudmVsdFxuYmVsaWV2ZXMgdmlkZW8gZ2FtZXMgdGVhY2ggcGVvcGxlIGhvdyB0byBsZWFybi4gSG9ybnZlbHQgc2F5cyB2aWRlbyBnYW1lcyBlbmdhZ2VcbnBsYXllcnMgaW4gYSBwcm9ibGVtLXNvbHZpbmcgY3ljbGUuIEh5cG90aGVzaXMsIGV4cGVyaW1lbnRhdGlvbiwgYW5kIGV2ZW50dWFsIGRlZHVjdGlvblxuYXJlIGludm9sdmVkIGFzIHBsYXllcnMgdHJ5IGRpZmZlcmVudCBvcHRpb25zIGluIGFuIGVmZm9ydCB0byBzb2x2ZSBhIGNoYWxsZW5naW5nIHByb2JsZW0uXG5Ib3JudmVsdCBzYXlzIGhlIGVuam95cyBjb2xsYWJvcmF0aXZlIG11bHRpLXBsYXllciBnYW1lcywgZXNwZWNpYWxseSBlbnRyZXByZW5ldXJpYWxcbmJ1c2luZXNzIHN0YXJ0dXAgYW5kIG1hbmFnZW1lbnQgc2ltdWxhdGlvbnMsIGFuZCBoZSBpbnNpc3RzIHRoYXQgdGhleVx1MjAxOXZlIGhlbHBlZCBoaW1cbmRldmVsb3Agc2tpbGxzIHN1Y2ggYXMgdGVhbXdvcmssIG1lZGlhdGlvbiwgYW5kIHNlbGYtYXNzZXNzbWVudC5cblxuV2hlcmUgTW9yZWF1IGFuZCBIb3JudmVsdCBzZWUgZXllIHRvIGV5ZSBpcyB0aGUgY2xhaW0gdGhhdCB2aWRlbyBnYW1pbmcgY2FuIGJlY29tZVxuaGFiaXQgZm9ybWluZy4gTW9yZWF1IHBvaW50cyBvdXQgdGhhdCB0aGUgYXZlcmFnZSBOb3J0aCBBbWVyaWNhbiBzdHVkZW50IHBsYXlzIG5lYXJseVxuMTAsMDAwIGhvdXJzIG9mIHZpZGVvIGdhbWVzIGJ5IHRoZSB0aW1lIHRoZXkgZ3JhZHVhdGUgY29sbGVnZS4gRXZlbiBIb3JudmVsdCBhZG1pdHNcbnRoYXQgaGUgaGltc2VsZiBoYXMgZmFsbGVuIHByZXkgdG8gdGhlIGx1cmUgb2YgaW50ZXJhY3RpdmUgdGVjaG5vbG9neS4gVGhlIGZvcm1lclxuY29tcHVsc2l2ZSAyNS1ob3VyLWEtd2VlayBnYW1lciBub3cgb2JzZXJ2ZXMgYSBzdHJpY3Qgd2Vla2x5IGxpbWl0OiBmb3VyIGhvdXJzLFxud2Vla2VuZHMgb25seS5cblxuQSBzaW1pbGFyIGFiaWxpdHkgdG8gc2VsZi1yZWd1bGF0ZSB3b3VsZCBiZSBoYXJkIHRvIGZpbmQgYW1vbmcgY2hpbGRyZW4sIE1vcmVhdSBub3RlcyxcbmFyZ3VpbmcgdGhhdCBpdCBpcyBtb3N0bHkgdXAgdG8gcGFyZW50cyB0byBjdXJiIG9yIGV2ZW4gc3RvcCB0aGVpciBjaGlsZFx1MjAxOXMgdmlkZW8gZ2FtZVxucGxheWluZyBiZWZvcmUgaXQgZ2V0cyBvdXQgb2YgaGFuZC4gQ2hpbGRyZW5cdTIwMTlzIGJyYWlucyBhcmUgaGlnaGx5IHBsYXN0aWMsIHNheXMgTW9yZWF1LCBhbmRcbmV4Y2Vzc2l2ZSBnYW1lIHBsYXlpbmcgYXQgYSB5b3VuZyBhZ2UgY291bGQgaGF2ZSBsaWZlbG9uZyBpbXBhY3RzLiBIZSByZWNvbW1lbmRzIHRoYXRcblxmcGFyZW50cyBub3QgbGV0IGNoaWxkcmVuIHVuZGVyIGZpdmUgcGxheSB2aWRlbyBnYW1lcyBhdCBhbGwgYW5kIHNheXMgYSBsaW1pdCBvZiB0d28gaG91cnMgYVxud2VlayBpcyBlbm91Z2ggZm9yIGV2ZXJ5b25lIGVsc2UuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiUmVwb3J0IiwiZHVyYXRpb24iOjE2NSwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hhdCBkaWQgTW9yZWF1IGNvbmNsdWRlIGFib3V0IHBvb3Igc2Nob29sIHBlcmZvcm1hbmNlPyIsIm9wdGlvbnMiOlsiSXQgaXMgd29yc2VuZWQgYnkgcGxheWluZyB2aW9sZW50IHZpZGVvIGdhbWVzLiIsIkl0IGlzIGNvcnJlbGF0ZWQgdG8gdGltZSBzcGVudCB2aWRlbyBnYW1lIHBsYXlpbmcuIiwiSXQgaXMgY2F1c2VkIGJ5IGZyZXF1ZW50IHVucmVzdHJpY3RlZCB2aWRlbyBnYW1pbmcuIiwiSXQgaXMgaW1wcm92ZWQgaWYgc3R1ZGVudHMgc3RvcCBwbGF5aW5nIHZpZGVvIGdhbWVzLiJdLCJrZXkiOjF9LHsibiI6Miwic3RlbSI6IldoYXQgY2FuIHdlIGNvbmNsdWRlIGZyb20gTW9yZWF1XHUyMDE5cyBzdHVkeSBvbiB2aWRlbyBnYW1pbmcgYW5kIGFnZ3Jlc3Npb24\/Iiwib3B0aW9ucyI6WyJBZ2dyZXNzaXZlIHRyYWl0cyBsZWFkIHN0dWRlbnRzIHRvIHBsYXkgdmlkZW8gZ2FtZXMuIiwiVmlkZW8gZ2FtaW5nIGFuZCBhZ2dyZXNzaXZlIGJlaGF2aW91ciBhcmUgbm90IGNvcnJlbGF0ZWQuIiwiV2hhdCBwcm9tcHRzIHZpZGVvIGdhbWluZyBtYXkgYWxzbyBjYXVzZSBhZ2dyZXNzaW9uLiIsIlBsYXlpbmcgdmlkZW8gZ2FtZXMgbWFrZXMgYWR1bHRzIG1vcmUgYWdncmVzc2l2ZS4iXSwia2V5IjoyfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGRvIGJvdGggZXhwZXJ0cyBhZ3JlZSBnYW1pbmcgZG9lcz8iLCJvcHRpb25zIjpbIkl0IGhhcyB1bmtub3dhYmxlIGVmZmVjdHMuIiwiSXQgYnVpbGRzIGludGVycGVyc29uYWwgc2tpbGxzLiIsIkl0IHRlbmRzIHRvIGJlY29tZSBhZGRpY3RpdmUuIiwiSXQgaW1wZWRlcyBsZWFybmluZyBvdXRjb21lcy4iXSwia2V5IjoyfSx7Im4iOjQsInN0ZW0iOiJXaGljaCBzdGF0ZW1lbnQgd291bGQgTW9yZWF1IGxpa2VseSBhZ3JlZSB3aXRoPyIsIm9wdGlvbnMiOlsiVGVlbmFnZXJzIGFyZSBiZWNvbWluZyBtb3JlIHNlbGYtZGlzY2lwbGluZWQgaW4gdmlkZW8gZ2FtaW5nLiIsIk1vcmUgcmVzZWFyY2ggaW50byBjaGlsZHJlbiBhbmQgdmlkZW8gZ2FtaW5nIGlzIG5lZWRlZC4iLCJUaG9zZSBvdmVyIGVpZ2h0ZWVuIGFyZSBsZXNzIGFmZmVjdGVkIGJ5IHZpZGVvIGdhbWVzLiIsIlBhcmVudHMgYXJlIHdlbGwgaW5mb3JtZWQgYWJvdXQgdGhlIGltcGFjdCBvZiB2aWRlbyBnYW1pbmcuIl0sImtleSI6MX0seyJuIjo1LCJzdGVtIjoiV2hhdCBkb2VzIEhvcm52ZWx0IGJlbGlldmUgYWJvdXQgdmlkZW8gZ2FtaW5nPyIsIm9wdGlvbnMiOlsiSXQgaGVscHMgcGVvcGxlIGJyZWFrIHRoZSBpY2UgYW5kIGJlY29tZSBmcmllbmRzLiIsIkl0IHN0cmVuZ3RoZW5zIG9uZVx1MjAxOXMgYWJpbGl0eSB0byBzZWxmLWRpc2NpcGxpbmUuIiwiSXQgcHJvbW90ZXMgeW91dGhzXHUyMDE5IGFjYWRlbWljIHBlcmZvcm1hbmNlcy4iLCJJdCBzdXBwbGllcyBwcmFjdGljZSBpbiByZWFzb25pbmcgc2tpbGxzLiJdLCJrZXkiOjN9LHsibiI6Niwic3RlbSI6IldoYXQgYWR2aWNlIHdvdWxkIE1vcmVhdSBoYXZlIGZvciB0aGUgZ2VuZXJhbCBwdWJsaWM\/Iiwib3B0aW9ucyI6WyJTcGVuZCBsZXNzIHRpbWUgcGxheWluZyB2aWRlbyBnYW1lcy4iLCJUcnkgdG8gc2VsZWN0IGxlc3MgdmlvbGVudCB2aWRlbyBnYW1lcy4iLCJQbGF5IG1vcmUgZWR1Y2F0aW9uYWwgdmlkZW8gZ2FtZXMuIiwiRG9uXHUyMDE5dCBsZXQgeW91ciBjaGlsZCBwbGF5IHZpZGVvIGdhbWVzLiJdLCJrZXkiOjB9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDggVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 8 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-6142","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6142","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=6142"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6142\/revisions"}],"predecessor-version":[{"id":6598,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6142\/revisions\/6598"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}