{"id":6238,"date":"2026-07-06T18:38:55","date_gmt":"2026-07-06T18:38:55","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-9-test-2-listening\/"},"modified":"2026-07-12T03:24:59","modified_gmt":"2026-07-12T03:24:59","slug":"celpip-set-9-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-9-test-2-listening\/","title":{"rendered":"CELPIP Set 9 \u00b7 Practice Test 2 \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 9 &#183; Practice Test 2<\/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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMxLTYubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3AxczItNi5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDFzMy02Lm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMi02Lm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMy01Lm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNC02Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNS01Lm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNi01Lm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEEgPSB7InRlc3RMYWJlbCI6IlNldCA5IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIiLCJzZXRObyI6OSwidGVzdE5vIjoyLCJwYXJ0cyI6W3sibmFtZSI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGNvbnZlcnNhdGlvbnMgYWJvdXQgYnV5aW5nIGJ1cyB0aWNrZXRzIGFuZCBzaG9wcGluZy4iLCJpbnRyb0J1bGxldHMiOlsiQSB3b21hbiBpcyBidXlpbmcgdHJhbnNpdCB0aWNrZXRzIGFuZCBsYXRlciByZXR1cm5zIHRvIGEgc3RvcmUuIiwiWW91IHdpbGwgaGVhciB0aGUgY29udmVyc2F0aW9uIG9ubHkgb25jZS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgY3VzdG9tZXIgYW5kIGEgY2FzaGllci4gVGhleSBhcmUgYXQgYVxuY29udmVuaWVuY2Ugc3RvcmUuXG5cblNlY3Rpb24gMTpcbk1BTjogV2lsbCB0aGF0IGJlIGFsbCB0b2RheT9cbldPTUFOOiAgICAgICAgICBZZXMsIHRoYXQncyBpdCwgdGhhbmtzLiBBY3R1YWxseSwgZG8geW91IHNlbGwgdHJhbnNpdCB0aWNrZXRzP1xuTUFOOiBTdXJlLiBEbyB5b3UgbmVlZCB0aGVtIGZvciBsb2NhbCB0cmFuc2l0IG9yIHRoZSBSYXBpZCBTeXN0ZW0\/XG5XT01BTjogICAgICAgICAgSVx1MjAxOW0gbm90IHN1cmUgLiAuIC4gSSBsaXZlIGhlcmUsIGJ1dCBJIGFsd2F5cyBkcml2ZS4gTXkgY2FyIGlzIGluIHRoZSBzaG9wIHRvZGF5LFxudGhvdWdoLlxuTUFOOiBXZWxsLCBSYXBpZCBTeXN0ZW0gdGlja2V0cyBhcmUgb25seSBnb29kIG9uIGNvbW11dGVyIHRyYWlucyBhbmQgYnVzZXMuIFRob3NlXG5hcmUgdGhlIG9uZXMgdGhhdCB0cmF2ZWwgdG8gbW9yZSBkaXN0YW50IGNvbW11bml0aWVzLCBsaWtlIFRlcnJ5dmlsbGUganVzdCBvdXRzaWRlIG9mIHRvd24uXG5XT01BTjogICAgICAgICAgV2VsbCwgSVx1MjAxOW0gdGFraW5nIHRoZSBidXMgdG8gdmlzaXQgYSBmcmllbmQgd2hvIGxpdmVzIGRvd250b3duLiBTbyBJIHN1cHBvc2VcbnRoYXQncyBsb2NhbC5cbk1BTjogVGhhdFx1MjAxOXMgcmlnaHQuIEhvdyBtYW55IHRpY2tldHMgd291bGQgeW91IGxpa2U\/IFdlIHNlbGwgdGhlbSBpbiBzdHJpcHMgb2YgMTAgb3IgMjAuXG5XT01BTjogICAgICAgICAgSSBjYW4ndCBidXkgc2luZ2xlIHRpY2tldHM\/IEkgb25seSBuZWVkIHR3byFcbk1BTjogU29ycnkuIFlvdSBjYW4gYnV5IHNpbmdsZSB0aWNrZXRzIGF0IHRoZSBzdGF0aW9uIGJ1dCBvbmx5IG11bHRpcGxlcyBoZXJlLiBUaGF0J2xsIGJlXG4kMjYuMDAgZm9yIDEwLCBwbHVzIHlvdXIgb3RoZXIgaXRlbXMuXG5XT01BTjogICAgICAgICAgV2VsbCwgb2theSB0aGVuIC4gLiAuIGlmIHRoYXRcdTIwMTlzIHRoZSBvbmx5IHdheSB5b3Ugc2VsbCB0aGVtIC4gLiAuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTMuXG5XaGF0IHR5cGUgb2YgdHJhbnNpdCBkb2VzIHRoZSB3b21hbiBwbGFuIHRvIHRha2U\/XG5XaGF0IGlzIHRydWUgYWJvdXQgdGhlIHdvbWFuP1xuV2hhdCB3aWxsIHRoZSB3b21hbiBwcm9iYWJseSBkbyBuZXh0P1xuU2VjdGlvbiAyOlxuV09NQU46IEhpLiBJIHdhcyBqdXN0IGhlcmUgYSBmZXcgbWludXRlcyBhZ28uIEkgdG9vayBhIGxvb2sgYXQgdGhvc2UgdHJhbnNpdCB0aWNrZXRzXG53aGVuIEkgbGVmdCB0aGUgc3RvcmUsIGFuZCB0aGV5IGhhdmUgYW4gXCJTXCIgb24gdGhlbS4gRG9lc24ndCB0aGF0IG1lYW4gdGhleSBhcmUgZm9yXG5zZW5pb3JzP1xuXGZNQU46IEFjdHVhbGx5LCB0aGUgdHJhbnNpdCBjb21wYW55IGlzc3VlcyB0aGUgc2FtZSB0aWNrZXRzIGZvciBib3RoIHNlbmlvcnMgYW5kIHN0dWRlbnRzXG50byB1c2UuIFRoZSBcIlNcIiBzdGFuZHMgZm9yIGJvdGguXG5XT01BTjogICAgICAgIE9oLiBUaGUgdGhpbmcgaXMsIEkgZG9uJ3QgYWN0dWFsbHkgZml0IGludG8gZWl0aGVyIG9mIHRob3NlIGNhdGVnb3JpZXMuXG5NQU46IEknbSBzbyBzb3JyeSEgWW91IGhhdmUgYSBiYWNrcGFjayBvbiwgYW5kIHlvdSBsb29rIGxpa2UgYSBsb3Qgb2YgdGhlIHVuaXZlcnNpdHlcbnN0dWRlbnRzIHdobyBzaG9wIGhlcmUuXG5XT01BTjogQSBsb3Qgb2YgcGVvcGxlIHRlbGwgbWUgdGhhdCEgSSBqdXN0IGhhdmUgdGhpcyBiZWNhdXNlIEknbSBicmluZ2luZyBhIGZld1xubm92ZWxzIG92ZXIgdG8gbGVuZCB0byBteSBmcmllbmQuIFdlIGNhbiBuZXZlciBhZ3JlZSBvbiB3aGF0IG11c2ljIGlzIGJlc3QsIGJ1dCB3ZSBib3RoXG5saWtlIHRoZSBzYW1lIGF1dGhvcnMuXG5NQU46IEkgc2VlLiBXZWxsLCBpdFx1MjAxOXMgZWFzeSBlbm91Z2ggdG8gZXhjaGFuZ2UgdGhlIHRpY2tldHMuIFVuZm9ydHVuYXRlbHksIElcdTIwMTlsbCBoYXZlIHRvXG5jaGFyZ2UgeW91IGFuIGV4dHJhICQ0LjAwLiBJXHUyMDE5bSB2ZXJ5IHNvcnJ5IVxuV09NQU46ICAgICAgICBJIHVuZGVyc3RhbmQuIEFuZCBkbyB5b3Uga25vdyB3aGVyZSBJIGNhbiBjYXRjaCB0aGUgIzUzIGJ1cz9cbk1BTjogU3VyZS4gV2hlbiB5b3UgbGVhdmUgdGhlIHN0b3JlLCBtYWtlIGEgcmlnaHQuIFRoZSBzdG9wIGlzIHJpZ2h0IHRoZXJlIG9uIERpdmlzaW9uXG5TdC4gWW91IGNhbid0IG1pc3MgaXQuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA0LTYuXG5XaGF0IGRvZXMgdGhlIG1hbiBiZWxpZXZlIGFib3V0IHRoZSB3b21hbj9cbldoYXQgZG9lcyB0aGUgd29tYW4gc2F5IHNoZSBpcyBicmluZ2luZyBmb3IgaGVyIGZyaWVuZD9cbldoYXQgZG9lcyB0aGUgbWFuIHN1Z2dlc3QgaGUgd2lsbCBkbz9cblNlY3Rpb24gMzpcbk1BTjogSGVsbG8hIEhleSwgeW91IGxvb2sgZmFtaWxpYXIhIFdvdWxkIHlvdSBsaWtlIGEgcGxhc3RpYyBiYWcgZm9yIHRoZSBsb2FmIG9mIGJyZWFkP1xuV09NQU46ICAgICAgICBObywgSSd2ZSBnb3QgYSByZXVzYWJsZSBjbG90aCBvbmUgd2l0aCBtZS4gWW91IHJlbWVtYmVyIG1lPyBJIHdhcyBoZXJlXG5sYXN0IHdlZWsuXG5NQU46IFllcywgdGhlIGN1c3RvbWVyIHdpdGggdGhlIHNjaG9vbCBiYWcgd2hvIEkgdGhvdWdodCB3YXMgYSBzdHVkZW50ISBEaWQgeW91IGZpbmRcbnRoZSBidXMgc3RvcD9cbldPTUFOOiBZZXMsIHRoYW5rIHlvdSEgWW91ciBkaXJlY3Rpb25zIHdlcmUgdmVyeSBoZWxwZnVsLCBhbmQgdGhlIGxvY2FsIHRpY2tldHNcbndvcmtlZCBvdXQgZmluZS4gVGhvdWdoLCB3aXRoIHRoZSB0cmFmZmljLCBpdCBzdXJlIHRvb2sgYSBsb25nIHRpbWUgdG8gZ2V0IHRoZXJlIGZyb20gaGVyZSFcbk1BTjogSSBrbm93IHdoYXQgeW91IG1lYW4uIEkgdGFrZSB0aGUgYnVzIGRvd250b3duIHNvbWV0aW1lcywgdG9vLCBhbmQgaXQgYWx3YXlzXG5mZWVscyBsaWtlIGl0XHUyMDE5cyBydXNoIGhvdXIhXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA3LTguXG5XaHkgZG9lcyB0aGUgd29tYW4gcmV0dXJuIHRvIHRoZSBzdG9yZT9cbldoYXQgZGlkIHRoZSB3b21hbiBicmluZyB3aXRoIGhlciBpbnRvIHRoZSBzdG9yZT8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsImR1cmF0aW9uIjo4MSwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hhdCB0eXBlIG9mIHRyYW5zaXQgZG9lcyB0aGUgd29tYW4gcGxhbiB0byB0YWtlPyIsIm9wdGlvbnMiOlsiYSBsb2NhbCBidXMiLCJhIHRheGkiLCJ0aGUgc3Vid2F5IiwiYSB0cmFpbiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGlzIHRydWUgYWJvdXQgdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiU2hlIHRyYXZlbHMgYnkgYnVzIGRhaWx5LiIsIlNoZSByYXJlbHkgdHJhdmVscyBvbiBwdWJsaWMgdHJhbnNpdC4iLCJTaGUgaXMgYSB0b3VyIGd1aWRlLiIsIlNoZSBsb3N0IGhlciBidXMgcGFzcy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCB3aWxsIHRoZSB3b21hbiBwcm9iYWJseSBkbyBuZXh0PyIsIm9wdGlvbnMiOlsiYXNrIGZvciBkaXJlY3Rpb25zIiwicHVyY2hhc2UgdGlja2V0cyIsIndhaXQgZm9yIHRoZSBuZXh0IGJ1cyIsImNhbGwgYSBmcmllbmQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDIiLCJkdXJhdGlvbiI6NjcsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjQsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBiZWxpZXZlIGFib3V0IHRoZSB3b21hbj8iLCJvcHRpb25zIjpbIlNoZSBpcyBhIHJlZ3VsYXIgY3VzdG9tZXIuIiwiU2hlIGxvb2tzIHlvdW5nLiIsIlNoZSBpcyBpbiBhIGh1cnJ5LiIsIlNoZSBpcyBuZXcgaW4gdG93bi4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiBzYXkgc2hlIGlzIGJyaW5naW5nIGZvciBoZXIgZnJpZW5kPyIsIm9wdGlvbnMiOlsic29tZSBib29rcyIsInNvbWUgZ3JvY2VyaWVzIiwiYSBiaXJ0aGRheSBnaWZ0IiwiYSBsb2FmIG9mIGJyZWFkIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoYXQgZG9lcyB0aGUgbWFuIHN1Z2dlc3QgaGUgd2lsbCBkbz8iLCJvcHRpb25zIjpbImNhbGwgaGVyIGEgdGF4aSIsImdpdmUgdGhlIHdvbWFuIHRoZSBjb3JyZWN0IHRpY2tldHMiLCJyZWZ1bmQgaGVyIG1vbmV5Iiwic2hvdyBoZXIgdGhlIHNjaGVkdWxlIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwiZHVyYXRpb24iOjM4LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Nywic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiByZXR1cm4gdG8gdGhlIHN0b3JlPyIsIm9wdGlvbnMiOlsiU2hlIGZvcmdvdCBoZXIgd2FsbGV0LiIsIlNoZSBpcyBidXlpbmcgc29tZXRoaW5nIGVsc2UuIiwiU2hlIHdhbnRzIGEgcmVmdW5kLiIsIlNoZSBsZWZ0IGFuIGl0ZW0gYmVoaW5kLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IGRpZCB0aGUgd29tYW4gYnJpbmcgd2l0aCBoZXIgaW50byB0aGUgc3RvcmU\/Iiwib3B0aW9ucyI6WyJhIHNob3BwaW5nIGxpc3QiLCJhIGZhYnJpYyBiYWciLCJhIGRpc2NvdW50IGNvdXBvbiIsImEgcmVjZWlwdCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBwYXJlbnRzIGFib3V0IGEgc3BlY2lhbCBob2xpZGF5LiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiIsIlRoZW4gYW5zd2VyIHRoZSBxdWVzdGlvbnMuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gcGFyZW50cyBhYm91dCBhIHNwZWNpYWwgaG9saWRheS5cblxuTUFOOiBIaSwgSmFuaWNlLiBBcmUgeW91IHdhaXRpbmcgZm9yIHlvdXIgZGF1Z2h0ZXI\/IEZvciBzb21lIHJlYXNvbiB0aGUgdGVhY2hlciBhbHdheXNcbmtlZXBzIHRoZSBjbGFzcyBsYXRlIG9uIFRodXJzZGF5cywgZG9lc24ndCBzaGU\/XG5XT01BTjogWWVhaCwgSSBkb24ndCBrbm93IHdoeS4gWW91ciBkYXVnaHRlciBNYXJpYSdzIGluIHRoZSBzYW1lIGNsYXNzLCByaWdodD9cbk1heWJlIHRoZSBjbGFzcyBpcyBwbGFubmluZyBhIHN1cnByaXNlIGNsb3NpbmcgZXZlbnQgZm9yIHRoZSBwYXJlbnRzIVxuTUFOOiBDb3VsZCBiZSEgSGV5LCB0YWxraW5nIGFib3V0IGV2ZW50cywgYXJlIHlvdSB0YWtpbmcgeW91ciBraWRzIHRvIHRoZSBDYW5hZGEgRGF5XG5jZWxlYnJhdGlvbnMgbmV4dCB3ZWVrP1xuV09NQU46IFdlIGFyZW4ndCBwbGFubmluZyBvbiBpdC4gSnVseSAxIGlzIHVzdWFsbHkgdG9vIGhvdCwgc28gd2UgcHJlZmVyIHRvIHNwZW5kIHRoZVxuZGF5IGF0IHRoZSBiZWFjaC4gV2Ugd2F0Y2ggdGhlIGZpcmV3b3JrcyBpbiB0aGUgZXZlbmluZywgdGhvdWdoLlxuTUFOOiBZb3UgY2FuIGdvIHRvIHRoZSBiZWFjaCBhbnkgZGF5ISBUaGUgQ2FuYWRhIERheSBldmVudHMgYXJlIHNwZWNpYWwsIGFuZCBqdXN0XG5vbmNlIGEgeWVhci4gT3VyIGtpZHMgbG92ZSBldmVyeXRoaW5nIGFib3V0IGl0LCBlc3BlY2lhbGx5IHRoZSBwYXJhZGUsIHNvIHdlIGdvIGV2ZXJ5IHllYXIuXG5XT01BTjogICAgICAgIFJlYWxseT8gRXZlcnkgeWVhcj8gRG9lc24ndCBpdCBnZXQgYm9yaW5nP1xuTUFOOiBJdCdzIGRpZmZlcmVudCBldmVyeSB5ZWFyLiBUaGVyZSBhcmUgYmVhdXRpZnVsIGZsb2F0czsgeW91IGtub3csIHRob3NlIGRlY29yYXRlZFxucGxhdGZvcm1zIHRoYXQgbWFrZSB1cCBtdWNoIG9mIHRoZSBwYXJhZGUuIExhc3QgeWVhciB0aGVyZSB3YXMgYSBjb29sIG9uZSB3aXRoIGtpZHMgZnJvbVxudGhlIGVsZW1lbnRhcnkgc2Nob29sIGRyZXNzZWQgdXAgYXMgbW92aWUgY2hhcmFjdGVycy5cbldPTUFOOiAgICAgICAgV2hhdCBkbyB0aGV5IGRvIHRvIG1ha2UgdGhlIGV2ZW50IGVzcGVjaWFsbHkgQ2FuYWRpYW4\/XG5NQU46IFdlbGwsIHRoZXJlIGFyZSBsb3RzIG9mIHJlZCBhbmQgd2hpdGUgY29zdHVtZXMgdG8gcmVwcmVzZW50IHRoZSBjb2xvdXJzIG9mIHRoZSBmbGFnLlxuVGhlcmUncyB1c3VhbGx5IGEgQ2FuYWRpYW4gbWlsaXRhcnkgYmFuZCwgYW5kIHRoZSBSb3lhbCBDYW5hZGlhbiBNb3VudGVkIFBvbGljZSBvblxudGhlaXIgaG9yc2VzLiBJdCdzIGF3ZXNvbWUhXG5XT01BTjogICAgICAgIElzbid0IGl0IGhvdCBhbmQgY3Jvd2RlZCwgdGhvdWdoPyBBbmQgcGFya2luZyBkb3dudG93biBtdXN0IGJlIGFcbm5pZ2h0bWFyZSFcbk1BTjogWWVhaCwgYnV0IGV2ZXJ5b25lJ3MgaGF2aW5nIGZ1biwgZXNwZWNpYWxseSB0aGUga2lkcy4gVGhlcmUncyBzb21lIGZyZWUgcGFya2luZyBpZlxueW91IGdvIGVhcmx5LiBPaCwgYW5kIGFub3RoZXIgZ3JlYXQgcGFydCBpcyB0aGUgZm9vZCBzdGFsbHMgYXQgdGhlIGZvb3RiYWxsIGZpZWxkIHdoZXJlIHlvdVxuY2FuIGdldCBkZWxpY2lvdXMgZm9vZCBhdCBncmVhdCBwcmljZXMuIFBsdXMsIHRoZXJlIGFyZSBsb3RzIG9mIGtpZHMnIGFjdGl2aXRpZXMgbGlrZSBib3VuY3lcbmNhc3RsZXMgYW5kIHJpbmcgdG9zcywgbm90IHRvIG1lbnRpb24gY2xvd25zIGFuZCBqdWdnbGVycyBldmVyeXdoZXJlLlxuXGZXT01BTjogWW91ciBlbnRodXNpYXNtIGlzIGNvbnRhZ2lvdXMhIEknbGwgdGFsayBhYm91dCBpdCB3aXRoIG15IGh1c2JhbmQgYW5kIHRoZVxua2lkcywgYW5kIGNoZWNrIG91dCB0aGUgZXZlbnQgc2NoZWR1bGUgb24gdGhlIGNpdHkncyB3ZWJzaXRlLlxuTm93IGFuc3dlciBxdWVzdGlvbnMgMS01LlxuXG5XaHkgZG9lcyB0aGUgbWFuIHRhbGsgYWJvdXQgQ2FuYWRhIERheSBjZWxlYnJhdGlvbnM\/XG5XaGF0IGlzIHRoZSB3b21hbidzIG9waW5pb24gb2YgQ2FuYWRhIERheSBjZWxlYnJhdGlvbnM\/XG5XaGF0IHBhcnQgb2YgdGhlIENhbmFkYSBEYXkgY2VsZWJyYXRpb25zIGRvZXMgdGhlIG1hbiBtb3N0IGVuam95P1xuV2h5IGRvZXMgdGhlIG1hbiBtZW50aW9uIHNvIG1hbnkga2lkcycgYWN0aXZpdGllcyB0byB0aGUgd29tYW4\/XG5Ib3cgZG9lcyB0aGUgd29tYW4gdXN1YWxseSBzcGVuZCBDYW5hZGEgRGF5PyIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxNTEsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBkb2VzIHRoZSBtYW4gdGFsayBhYm91dCBDYW5hZGEgRGF5IGNlbGVicmF0aW9ucz8iLCJvcHRpb25zIjpbIkhlIGFuZCBoaXMgZmFtaWx5IGVuam95IGF0dGVuZGluZyB0aGUgZXZlbnRzLiIsIkhlIGRpc2xpa2VzIGNyb3dkZWQgZXZlbnRzLiIsIkhlIGlzIG9yZ2FuaXppbmcgYW4gZXZlbnQuIiwiSGUgd2FudHMgYSBkYXkgb2ZmIHdvcmsuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgdGhlIHdvbWFuXHUyMDE5cyBvcGluaW9uIG9mIENhbmFkYSBEYXkgY2VsZWJyYXRpb25zPyIsIm9wdGlvbnMiOlsiVGhleSBhcmUgdG9vIGV4cGVuc2l2ZS4iLCJUaGV5IHRha2UgcGxhY2Ugd2hlbiBpdCBpcyB0b28gaG90LiIsIlRoZXkgYXJlIHRvbyBjcm93ZGVkLiIsIlRoZXkgYXJlIGJvcmluZyBmb3Iga2lkcy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBwYXJ0IG9mIHRoZSBDYW5hZGEgRGF5IGNlbGVicmF0aW9ucyBkb2VzIHRoZSBtYW4gbW9zdCBlbmpveT8iLCJvcHRpb25zIjpbIndhdGNoaW5nIHRoZSBmaXJld29ya3MiLCJ3YXRjaGluZyB0aGUgZW50ZXJ0YWlubWVudCIsImVhdGluZyB0aGUgZm9vZCIsIm1lZXRpbmcgZnJpZW5kcyJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIG1lbnRpb24gc28gbWFueSBraWRzXHUyMDE5IGFjdGl2aXRpZXMgdG8gdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiSGUgd29ya3Mgd2l0aCBjaGlsZHJlbi4iLCJIZSB0aGlua3Mgc2hlIHNob3VsZCB0YWtlIGhlciBraWRzIHRvIHRoZSBDYW5hZGEgRGF5IGV2ZW50cy4iLCJIZSBpcyBwbGFubmluZyB0aGUgYWN0aXZpdGllcy4iLCJIZSB3YW50cyBoZXIgdG8gdm9sdW50ZWVyLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJIb3cgZG9lcyB0aGUgd29tYW4gdXN1YWxseSBzcGVuZCBDYW5hZGEgRGF5PyIsIm9wdGlvbnMiOlsiU2hlIHN0YXlzIGF0IGhvbWUuIiwiU2hlIHNwZW5kcyB0aGUgZGF5IGJ5IHRoZSB3YXRlci4iLCJTaGUgdmlzaXRzIHJlbGF0aXZlcy4iLCJTaGUgd29ya3Mgb3ZlcnRpbWUuIl0sImtleSI6MSwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA5IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBhYm91dCBhIGNoaWxkXHUyMDE5cyBtYXRoIHR1dG9yaW5nLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiIsIlRoZW4gYW5zd2VyIHRoZSBxdWVzdGlvbnMuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gd2hlcmUgYSBtYW4gZ2V0cyBpbmZvcm1hdGlvbiBhYm91dCBoaXMgc29uLlxuXG5NQU46IEV4Y3VzZSBtZSwgUHJpeWE\/IElcdTIwMTlkIGxpa2UgdG8gc3BlYWsgd2l0aCB5b3UgYWJvdXQgRGV2b1x1MjAxOXMgcHJvZ3Jlc3MuIEkga25vd1xueW91XHUyMDE5dmUgYmVlbiB0dXRvcmluZyBoaW0gZm9yIGEgZmV3IHdlZWtzIG5vdywgYnV0IGhlXHUyMDE5cyBzdGlsbCBkb2luZyBwb29ybHkgaW4gbWF0aCBhdFxuc2Nob29sLiBIZSBmYWlsZWQgYW5vdGhlciB0ZXN0IHRoaXMgd2Vlay5cbldPTUFOOiBZZXMsIElcdTIwMTltIGFmcmFpZCBoZVx1MjAxOXMgbWlzc2VkIG1vcmUgdGhhbiB3ZSB0aG91Z2h0LiBJdCBtYXkgdGFrZSB1bnRpbCB0aGUgZW5kXG5vZiB0aGUgeWVhciBmb3IgaGltIHRvIGNhdGNoIHVwLlxuTUFOOiBPaC4gVGhhdFx1MjAxOXMgZGlzY291cmFnaW5nIG5ld3MuIERvIHlvdSBoYXZlIGFueSBpZGVhcyBhYm91dCBob3cgd2UgY2FuIG1vdmVcbnRoaW5ncyBhbG9uZyBtb3JlIHF1aWNrbHk\/XG5XT01BTjogU3VyZS4gSG93IGFib3V0IGluY3JlYXNpbmcgaGlzIG51bWJlciBvZiBzZXNzaW9ucz8gSSBjb3VsZCBzY2hlZHVsZSBoaW1cbmZvciB0d2ljZSBhIHdlZWssIGZvciBleGFtcGxlLiBPciBldmVuIHRocmVlIHRpbWVzLlxuTUFOOiBXZWxsLCB0aGF0IHdpbGwgYmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSwgd29uJ3QgaXQ\/XG5XT01BTjogV2UgdXN1YWxseSBnaXZlIGEgZGlzY291bnQgdG8gZmFtaWxpZXMgdGhhdCByZWdpc3RlciBmb3IgbXVsdGlwbGUgc2Vzc2lvbnMuIEknbGxcbnRhbGsgdG8gbXkgbWFuYWdlci5cbk1BTjogVGhhdCB3b3VsZCBiZSBncmVhdCwgdGhhbmtzLiBJIHdhcyBhbHNvIGNvbmNlcm5lZCBhYm91dCBEZXZvIG5vdCBkb2luZyBhbGwgb2YgdGhlXG5ob21ld29yayB5b3UgYXNzaWduLiBJXHUyMDE5bSBzdXJlIHlvdSBtdXN0IGhhdmUgbm90aWNlZC5cbldPTUFOOiBZZXMsIHRoYXQgd2FzIHRoZSBuZXh0IHBvaW50IEkgd2FzIGdvaW5nIHRvIG1lbnRpb24uIEkgaGF2ZSBhIG5ldyB0ZWNobmlxdWVcbkknZCBsaWtlIHRvIHRyeSB3aXRoIGhpbS4gSSd2ZSByZWFkIHRoYXQgaXQgaXMgdXNlZnVsIGZvciBkZXZlbG9waW5nIHN0cm9uZ2VyIHdvcmsgaGFiaXRzLlxuXGZNQU46IFN1cmUsIGFueXRoaW5nISBIb3cgd2lsbCBpdCB3b3JrP1xuV09NQU46IFdlbGwsIGZpcnN0LCBJXHUyMDE5bGwgZG8gcGFydCBvZiBoaXMgaG9tZXdvcmsgd2l0aCBoaW0gZHVyaW5nIG91ciBzZXNzaW9uLiBUaGVuXG5JXHUyMDE5ZCBsaWtlIHlvdSB0byBkbyB0aGUgbmV4dCBwYXJ0IG9mIGhpcyBob21ld29yayB3aXRoIGhpbSBhdCBob21lLiBGaW5hbGx5LCBoZSBjYW4gZG8gdGhlXG5sYXN0IHBhcnQgYnkgaGltc2VsZi4gRXZlbnR1YWxseSwgd2UgY2FuIGRlY3JlYXNlIHRoZSBhbW91bnQgeW91IGFuZCBJIGRvIHdpdGggaGltIHVudGlsXG5oZSBpcyBkb2luZyBhbGwgb2YgaXQgb24gaGlzIG93bi5cbk1BTjogVGhhbmtzLCBQcml5YS4gVGhhdCBzb3VuZHMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEl0XHUyMDE5cyBqdXN0IHRoYXQsIEkgaGF0ZSB0byBzYXlcbnRoaXMsIGJ1dCBoZSB0aGlua3MgdGhlIGV4ZXJjaXNlIHNoZWV0cyB5b3UgaGF2ZSBoaW0gd29ya2luZyBvbiBhcmUgYSBsaXR0bGUgLiAuIC4gYm9yaW5nLlxuV09NQU46IFdlbGwsIHdlIGNhbiB1c2UgZ2FtZXMgb3Igc29uZ3MgdG8gaGVscCBsZWFybiBzY2llbmNlIG9yIGxhbmd1YWdlLCBidXRcbm1hdGggaXMgc29tZXRoaW5nIHRoYXQganVzdCB0YWtlcyBzZWxmLWRpc2NpcGxpbmUuIE9uZSB0aGluZyB0aGF0IHNvbWV0aW1lcyBoZWxwcyBraWRzIGlzIGFcbnJld2FyZCBjaGFydC4gWW91IGtub3csIHdoZXJlIGhlIGdldHMgYSBzdGlja2VyIHRvIHB1dCBvbiB0aGUgY2hhcnQgZWFjaCB0aW1lIGhlIGRvZXMgaGlzXG5ob21ld29yaz9cbk1BTjogSSBsaWtlIHRoYXQgaWRlYS4gVGhhbmtzIGZvciB5b3VyIGhlbHAsIFByaXlhLlxuTm93IGFuc3dlciBxdWVzdGlvbnMgMS02LlxuXG5XaGF0IGlzIHRoZSBtYW4gbWFpbmx5IGNvbmNlcm5lZCBhYm91dD9cbkhvdyBvZnRlbiBkb2VzIERldm8gcmVjZWl2ZSB0dXRvcmluZyByaWdodCBub3c\/XG5XaHkgZG9lcyB0aGUgd29tYW4gc2F5IHNoZSB3aWxsIHRhbGsgdG8gaGVyIG1hbmFnZXI\/XG5XaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoZSBuZXcgaG9tZXdvcmsgc3RyYXRlZ3k\/XG5XaGljaCBvZiB0aGUgZm9sbG93aW5nIGlzIHBhcnQgb2YgdGhlIG5ldyBob21ld29yayBzdHJhdGVneT9cbldoYXQgd2lsbCB0aGUgd29tYW4gbW9zdCBsaWtlbHkgZG8gbmV4dD8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJkdXJhdGlvbiI6MTQ3LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4gbWFpbmx5IGNvbmNlcm5lZCBhYm91dD8iLCJvcHRpb25zIjpbIkRldm8gaXMgbm90IGxlYXJuaW5nIG1hdGggdmVyeSBxdWlja2x5LiIsIkRldm8gZGlzbGlrZXMgaGlzIHR1dG9yLiIsIlRoZSB0dXRvcmluZyBpcyB0b28gZXhwZW5zaXZlLiIsIkRldm8gc2tpcHMgaGlzIGxlc3NvbnMuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IkhvdyBvZnRlbiBkb2VzIERldm8gcmVjZWl2ZSB0dXRvcmluZyByaWdodCBub3c\/Iiwib3B0aW9ucyI6WyJ0d2ljZSBhIHdlZWsiLCJvbmNlIGEgd2VlayIsImV2ZXJ5IGRheSIsIm9uY2UgYSBtb250aCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gc2F5IHNoZSB3aWxsIHRhbGsgdG8gaGVyIG1hbmFnZXI\/Iiwib3B0aW9ucyI6WyJ0byBzY2hlZHVsZSBtb3JlIHNlc3Npb25zIiwidG8gcmVxdWVzdCBhIGxvd2VyIHByaWNlIGZvciB0aGVtIiwidG8gY2hhbmdlIHRoZSB0dXRvciIsInRvIGZpbGUgYSBjb21wbGFpbnQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBpcyB0aGUgcHVycG9zZSBvZiB0aGUgbmV3IGhvbWV3b3JrIHN0cmF0ZWd5PyIsIm9wdGlvbnMiOlsidG8gcmVkdWNlIGhpcyBob21ld29yayBsb2FkIiwidG8gaW1wcm92ZSBEZXZvXHUyMDE5cyBtYXRoIGhvbWV3b3JrIGhhYml0cyIsInRvIHByZXBhcmUgaGltIGZvciBhIHRlc3QiLCJ0byByZXBsYWNlIHRoZSB0dXRvcmluZyJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGljaCBvZiB0aGUgZm9sbG93aW5nIGlzIHBhcnQgb2YgdGhlIG5ldyBob21ld29yayBzdHJhdGVneT8iLCJvcHRpb25zIjpbImEgbmV3IHRleHRib29rIiwiRGV2b1x1MjAxOXMgZmF0aGVyIiwiYSBzdHVkeSBncm91cCIsImEgY29tcHV0ZXIgcHJvZ3JhbSJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGF0IHdpbGwgdGhlIHdvbWFuIG1vc3QgbGlrZWx5IGRvIG5leHQ\/Iiwib3B0aW9ucyI6WyJoaXJlIGEgbmV3IHR1dG9yIiwiZ2l2ZSBEZXZvIGEgcmV3YXJkIGNoYXJ0IiwiY2FsbCBEZXZvXHUyMDE5cyBzY2hvb2wiLCJjYW5jZWwgdGhlIHNlc3Npb25zIl0sImtleSI6MSwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImhlYWRlclRpdGxlIjoiU2V0IDkgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBuZXdzIHN0b3J5IGFib3V0IGEgaG91c2Vib2F0LiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBuZXdzIGl0ZW0gb25seSBvbmNlLiIsIkl0IGlzIGFib3V0IDEuNSBtaW51dGVzIGxvbmcuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgYSBob3VzZWJvYXQuXG5cbkEgbmV3IGhvdXNlYm9hdCBpbiBDbGVhcndhdGVyIEhhcmJvdXIgaGFzIGJlZW4gYXR0cmFjdGluZyB0aGUgYXR0ZW50aW9uIG9mIHRvdXJpc3RzIGFuZFxubG9jYWxzLiBUaGUgYXJjaGl0ZWN0IGFuZCBjcmVhdG9yIG9mIHRoZSB2ZXNzZWwsIEFudG9uaWEgTW9yZXR0aSwgYXBwcm9wcmlhdGVseSByZWZlcnMgdG8gaXRcbmFzIHRoZSBcdTIwMWNmbG9hdGluZyByZWN0YW5nbGUsXHUyMDFkIGFuZCBwZW9wbGUgd2hvIGhhdmUgc2VlbiBpdCBkZXNjcmliZSBpdCBhcyBhIHNoaXBwaW5nXG5jb250YWluZXIgb24gc2tpcy4gSXQgaGFzIHRha2VuIE1zLiBNb3JldHRpIHR3byB5ZWFycyB0byBwbGFuIGFuZCBidWlsZCB0aGUgaG91c2Vib2F0LFxud2hpY2ggaXMgbm93IG1vb3JlZCBpbiBvbmUgb2YgdGhlIG1vc3QgY292ZXRlZCBhcmVhcyBvZiB0aGUgY2l0eSwgc3Vycm91bmRlZCBieSBsdXh1cnlcbmFwYXJ0bWVudHMuXG5cZkJ1aWxkaW5nIGhlciBob3VzZWJvYXQgYWxsb3dlZCB0aGUgMjQteWVhci1vbGQgZ3JhZHVhdGUgdG8gYXBwbHkgaGVyIHNraWxscyBpbiBtYXJpbmVcbmFyY2hpdGVjdHVyZSwgYSBmaWVsZCBzaGUgaGFkIGJlZW4gc3R1ZHlpbmcgaW4gYm90aCBMb25kb24sIEVuZ2xhbmQgYW5kIFNoYW5naGFpLCBDaGluYS5cbkFsdGhvdWdoIGhlciBkZWdyZWUgY2FuIGxlYWQgdG8gam9icyBhcm91bmQgdGhlIHdvcmxkIHRoYXQgcmVxdWlyZSB0aGlzIHNwZWNpYWxpemVkXG5za2lsbHNldCwgc2hlIHNheXMgaGVyIGZ1dHVyZSBnb2FscyBhcmUgc3RpbGwgdmFndWUuIE1zLiBNb3JldHRpIGNhbiBvZnRlbiBiZSBzZWVuIGZpc2hpbmdcbmZyb20gdGhlIGRlY2sgb2YgaGVyIGhvdXNlYm9hdCBvciBjaGF0dGluZyB3aXRoIGVuY2hhbnRlZCBwYXNzZXJzYnkuXG5cbk5vdCBldmVyeW9uZSBpcyBlbmFtb3VyZWQgYnkgdGhlIGhhcmJvdXJcdTIwMTlzIG5ldyBhZGRpdGlvbiwgdGhvdWdoLiBNaWtlIE1hY0RvbmFsZCwgYVxucmVzaWRlbnQgb2YgYSBuZWFyYnkgYXBhcnRtZW50IGJ1aWxkaW5nLCByZWNlbnRseSBpbmZvcm1lZCBNcy4gTW9yZXR0aSB0aGF0IHNoZSB3YXNcbnJ1aW5pbmcgaGlzIHZpZXcuIFNoZSBzaW1wbHkgcmVwbGllZCB0aGF0IGl0IHdhcyBhIGdvb2QgdmlldyB0byBzaGFyZS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJOZXdzIEl0ZW0iLCJkdXJhdGlvbiI6NzUsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRoZSBob3VzZWJvYXQgc2VlbXMgdG8gYmUgYXR0cmFjdGluZyBhdHRlbnRpb24gYmVjYXVzZSBvZiBpdHMiLCJvcHRpb25zIjpbIm93bmVyLiIsImxvY2F0aW9uLiIsImRlc2lnbi4iLCJwdXJwb3NlLiJdLCJrZXkiOjJ9LHsibiI6Miwic3RlbSI6IkJlZm9yZSBzaGUgYnVpbHQgaGVyIGhvdXNlYm9hdCwgTXMuIE1vcmV0dGkgaGFkIHJlY2VudGx5Iiwib3B0aW9ucyI6WyJidWlsdCBhIGhvdXNlYm9hdCBpbiBMb25kb24uIiwic3R1ZGllZCBtYXJpbmUgYmlvbG9neSBhYnJvYWQuIiwib2J0YWluZWQgYSB1bml2ZXJzaXR5IGRlZ3JlZS4iLCJsaXZlZCBpbiBhIG5lYXJieSBhcGFydG1lbnQuIl0sImtleSI6Mn0seyJuIjozLCJzdGVtIjoiTXMuIE1vcmV0dGkgaXMiLCJvcHRpb25zIjpbInVuc3VyZSBvZiBoZXIgcGxhbnMgZm9yIHRoZSBmdXR1cmUuIiwidW5hYmxlIHRvIGZpbmQgd29yayBhdCB0aGUgbW9tZW50LiIsInBsYW5uaW5nIHRvIHRyYXZlbCB0aGUgd29ybGQgdXNpbmcgaGVyIGJvYXQuIiwidHJ5aW5nIHRvIGZpbmQgYSByb29tbWF0ZSB0byBtb3ZlIGluIHdpdGggaGVyLiJdLCJrZXkiOjB9LHsibiI6NCwic3RlbSI6Ik1pa2UgTWFjRG9uYWxkLCBhIG5laWdoYm91cmhvb2QgcmVzaWRlbnQsIGxpa2VseSIsIm9wdGlvbnMiOlsid2FudHMgdG8gb3duIGEgaG91c2Vib2F0LiIsInZpc2l0cyB0aGUgaG91c2Vib2F0IHJlZ3VsYXJseS4iLCJmaXNoZXMgaW4gQ2xlYXJ3YXRlciBIYXJib3VyLiIsIndhbnRzIE1zLiBNb3JldHRpIHRvIGxlYXZlLiJdLCJrZXkiOjN9LHsibiI6NSwic3RlbSI6IlRoZSBuZXdzIGl0ZW0gbWFpbmx5IGRlc2NyaWJlcyBhIiwib3B0aW9ucyI6WyJkaXNwdXRlIGluIGEgbmVpZ2hib3VyaG9vZC4iLCJwZXJzb24gd2hvIGJ1aWx0IGEgdW5pcXVlIHJlc2lkZW5jZS4iLCJob3VzZWJvYXQgdGhhdCBoYXMgdHJhdmVsZWQgdGhlIHdvcmxkLiIsImJlYXV0aWZ1bCBoYXJib3VyIGluIGEgY2l0eS4iXSwia2V5IjoxfV19XX0seyJuYW1lIjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgOSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBwZW9wbGUgYWJvdXQgY2hvb3NpbmcgYSBwcm9ncmFtLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCB0aGUgZGlzY3Vzc2lvbiBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIHdhdGNoIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdGhyZWUgZnJpZW5kcywgb25lIHdvbWFuIGFuZCB0d28gbWVuLiBUaGV5IGFyZVxuaW4gYSBjb2ZmZWUgc2hvcCBkaXNjdXNzaW5nIGRpZmZlcmVudCBlZHVjYXRpb25hbCBvcHRpb25zLlxuXG5MdWtlOiBTbywgR3JhY2UsIHdoYXQgZG8geW91IGludGVuZCB0byBzdHVkeT9cbkdyYWNlOiBNYXJrZXRpbmcuIEkgdGhpbmsgdGhhdCBJIG5lZWQgYSBmb3JtYWwgZWR1Y2F0aW9uIHRvIHN1cHBsZW1lbnQgbXkgaGFuZHMtb25cbmV4cGVyaWVuY2UuIE15IHdvcmsgZG9lc25cdTIwMTl0IGtub3cgeWV0LCBidXQgSSB0aGluayB0aGV5XHUyMDE5bGwgYmUgc3VwcG9ydGl2ZS4gSSBoYXZlIHRocmVlXG5wcm9ncmFtcyBvbiBteSBzaG9ydGxpc3QsIGJ1dCBJXHUyMDE5bSBzdGlsbCBoYXZpbmcgdHJvdWJsZSBkZWNpZGluZyB3aGljaCBvbmUuXG5Kb3NoOiBXZWxsLCB3ZVx1MjAxOXJlIGhlcmUgdG8gaGVscC4gV2hhdCBhcmUgeW91ciBvcHRpb25zP1xuR3JhY2U6IFdlbGwsIElcdTIwMTltIGRlY2lkaW5nIGJldHdlZW4gYW4gZXZlbmluZyBwcm9ncmFtIGF0IHRoZSBjb21tdW5pdHkgY29sbGVnZSwgYSBmdWxsLVxudGltZSBwcm9ncmFtIGF0IGEgcHJpdmF0ZSBtYXJrZXRpbmcgc2Nob29sLCBvciBhIHdlZWtlbmQgcHJvZ3JhbSBhdCB0aGUgdW5pdmVyc2l0eS5cbkFjY29yZGluZyB0byB0aGVpciB3ZWJzaXRlcywgYWxsIG9mIHRoZW0gb2ZmZXIgY2VydGlmaWNhdGVzIHVwb24gY29tcGxldGlvbiwgYnV0IHRoZXkgZGlmZmVyXG5pbiBjb3N0IGFuZCBzY2hlZHVsZS5cbkpvc2g6IFdoZXJlIHRvIHN0YXJ0P1xuR3JhY2U6IFdlbGwsIGFzIHlvdSBrbm93IC4gLiAuIElcdTIwMTltIG5vdCBhbiBvcmRpbmFyeSBzdHVkZW50LiBJXHUyMDE5dmUgYmVlbiBvdXQgb2Ygc2Nob29sIGZvclxubWFueSB5ZWFycywgSSBoYXZlIGEgZmFtaWx5LCBhbmQgSSB3b3JrIHBhcnQtdGltZSBhcyBhIE1hcmtldGluZyBBc3Npc3RhbnQuXG5MdWtlOiBXZWxsLCB0aG9zZSBhbGwgc291bmQgbGlrZSBhZHZhbnRhZ2VzIHRvIG1lOyBJIG1lYW4sIHlvdSBhbHJlYWR5IGhhdmUgdG9ucyBvZlxuZXhwZXJpZW5jZSBpbiB0aGUgZmllbGQsIGFuZCB5b3VcdTIwMTlsbCBiZSB3YXkgbW9yZSBtb3RpdmF0ZWQgYXMgYSBzdHVkZW50LlxuR3JhY2U6IFllcywgYnV0IEkgbmVlZCBhIHByb2dyYW0gdGhhdCB3aWxsIGZpdCBteSBidXN5IHNjaGVkdWxlIGFuZCBvZmZlciByZXN1bHRzLlxuXGZKb3NoOiBGcm9tIHdoYXQgSSBrbm93LCBldmVuaW5nIGNsYXNzIGFyZSB2ZXJ5IHBvcHVsYXIgd2l0aCBidXN5IGFkdWx0IGxlYXJuZXJzLlxuR3JhY2U6IFJpZ2h0OyBidXQgdGhlIG1vcmUgSSB0aGluayBhYm91dCBpdCwgdGhlIG1vcmUgSSByZWFsaXplIElcdTIwMTltIG5vdCB3aWxsaW5nIHRvIGdpdmUgdXBcbm15IGV2ZW5pbmcgZmFtaWx5IHRpbWUgZm9yIGFueXRoaW5nLlxuSm9zaDogV2VsbCwgdGhhdFx1MjAxOXMgb25lIHRoaW5nIG9mZiB0aGUgbGlzdC4gSG93IGNvbmNlcm5lZCBhcmUgeW91IGFib3V0IHR1aXRpb24sIEdyYWNlP1xuR3JhY2U6IEdvb2QgcXVlc3Rpb24uIEkgYW0gbm90IHBhcnRpY3VsYXJseSByaWNoLCBidXQgSSB0aGluayBJIHdvdWxkIHJhdGhlciBwYXkgbW9yZSBmb3JcbmFuIGV4Y2VsbGVudCBlZHVjYXRpb24gdGhhbiBzYXZlIGEgbGl0dGxlIG1vbmV5IGZvciBsaXR0bGUgaW4gcmV0dXJuLlxuTHVrZTogV2VsbCwgd2hhdCBkbyB5b3Uga25vdyBhYm91dCB0aGUgcHJpdmF0ZSBtYXJrZXRpbmcgc2Nob29sIHlvdSBtZW50aW9uZWQ\/IEl0XHUyMDE5cyBhXG5mdWxsLXRpbWUgcHJvZ3JhbSwgcmlnaHQ\/XG5HcmFjZTogWWVzLiBUaGUgY3VycmljdWx1bSBsb29rcyBncmVhdC4gSXQgaGFzIGFsbCB0aGUgbGF0ZXN0IHRyZW5kczogZGlnaXRhbCBtYXJrZXRpbmcsXG5vbmxpbmUgYWR2ZXJ0aXNpbmcgLiAuIC4gVGhlIG9ubHkgdGhpbmcgaXMsIGl0XHUyMDE5cyBiYXNpY2FsbHkgYnJhbmQgbmV3XHUyMDE0aXQgb25seSBvcGVuZWQgYWJvdXRcbnNpeCBtb250aHMgYWdvLlxuSm9zaDogSG1tLiBZZWFoLCB5b3UgbWF5IHdhbnQgdG8gd2FpdCBhbmQgc2VlIGhvdyB0aGVpciBmaXJzdCBncmFkdWF0ZXMgYXJlIGRvaW5nXG5hZnRlciB0aGV5IGZpbmlzaCBuZXh0IHllYXIuXG5MdWtlOiAuIC4gLiBvciB5b3UgY291bGQganVzdCB0YWtlIHdlZWtlbmQgY2xhc3NlcyBhdCB0aGUgdW5pdmVyc2l0eSBub3cuXG5HcmFjZTogWWVhaCwgSSB3aXNoIEkgY291bGQgc2l0IGluIG9uIGEgY2xhc3MuIEl0XHUyMDE5cyBhIHdlbGwtcmVzcGVjdGVkIHByb2dyYW0gdGhhdFx1MjAxOXMgYmVlblxub2ZmZXJlZCBmb3Igb3ZlciBhIGRlY2FkZSwgaXRcdTIwMTlzIHdpZGVseSByZWNvZ25pemVkIGluIHRoZSBpbmR1c3RyeSAuIC4gLiBPbiB0aGUgZmxpcCBzaWRlLCBpdFx1MjAxOXNcbmtpbmRhIHByaWNleS5cbkx1a2U6IEJ1dCBkaWRuXHUyMDE5dCB5b3Ugc2F5IHlvdSB3ZXJlIHJlYWR5IHRvIGludmVzdCBpbiB5b3VyIGZ1dHVyZT9cbkdyYWNlOiBJIGRpZC4gSSB0aGluayBJXHUyMDE5bSBsZWFuaW5nIHRvd2FyZHMgdGhlIHVuaXZlcnNpdHkuIEl0IHdvcmtzIHdlbGwgd2l0aCBTYXR1cmRheSBhbmRcblN1bmRheSBiZWluZyBnb29kIGZvciBteSBmYW1pbHkuIEFuZCBteSBodXNiYW5kIHNheXMgSSBjYW5cdTIwMTl0IGdvIHdyb25nIHdpdGggdGhhdCBvbmUuXG5JIHRoaW5rIElcdTIwMTl2ZSBtYWRlIG15IGRlY2lzaW9uIVxuSm9zaDogV2UgYXJlIHNvIHByb3VkIG9mIHlvdSBHcmFjZSFcbkx1a2U6IEdvb2QgbHVjayEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTgwLCJtZWRpYVR5cGUiOiJ2aWRlbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgZG9lcyBHcmFjZSB3YW50IHRvIGdvIHRvIHNjaG9vbD8iLCJvcHRpb25zIjpbInRvIGZpbmlzaCBhIHByb2dyYW0gc2hlIHF1aXQiLCJ0byBzdHVkeSBoZXIgY3VycmVudCBwcm9mZXNzaW9uIiwidG8gcHJlcGFyZSBmb3IgYSBuZXcgY2FyZWVyIiwidG8gcmVuZXcgaGVyIG91dGRhdGVkIGNyZWRlbnRpYWxzIl0sImtleSI6MX0seyJuIjoyLCJzdGVtIjoiV2hhdCBhcmUgR3JhY2VcdTIwMTlzIHRvcCBwcmlvcml0aWVzIGF0IHRoZSBtb21lbnQ\/Iiwib3B0aW9ucyI6WyJwYXJlbnRhbCByZXNwb25zaWJpbGl0aWVzIGFuZCBzb2xpZCBlZHVjYXRpb25hbCBjcmVkZW50aWFscyIsImluZHVzdHJ5LXJlY29nbml6ZWQgY2VydGlmaWNhdGlvbiBhbmQgaGlnaGVyIGluY29tZSIsIm1hcmtldGluZyBjYXJlZXIgc3VjY2VzcyBhbmQgcG9wdWxhcml0eSBhdCB3b3JrIiwiY29zdC1lZmZlY3RpdmUgcHJvZ3JhbXMgYW5kIGZpbmFuY2lhbCBzdGFiaWxpdHkiXSwia2V5IjowfSx7Im4iOjMsInN0ZW0iOiJIb3cgZGlkIEdyYWNlIGxpa2VseSBjcmVhdGUgaGVyIHNob3J0IGxpc3Q\/Iiwib3B0aW9ucyI6WyJieSBhdHRlbmRpbmcgYSBjbGFzcyBhdCBlYWNoIHNjaG9vbCIsImJ5IGRvaW5nIGEgbG90IG9mIG9ubGluZSByZXNlYXJjaCIsImJ5IHNwZWFraW5nIHRvIHJlY2VudCBncmFkdWF0ZXMiLCJieSBnZXR0aW5nIGFkdmljZSBmcm9tIGhlciBib3NzIl0sImtleSI6MX0seyJuIjo0LCJzdGVtIjoiV2h5IGlzIHRoZSBjb21tdW5pdHkgY29sbGVnZSB0YWtlbiBvZmYgdGhlIGxpc3Q\/Iiwib3B0aW9ucyI6WyJJdHMgdHVpdGlvbiBmZWVzIGFyZSB0b28gZXhwZW5zaXZlLiIsIkl0cyByZWxhdGl2ZSBzdGFuZGluZyBpcyBub3QgeWV0IGtub3duLiIsIkl0cyB0aW1ldGFibGUgaXMgdW5zdWl0YWJsZS4iLCJJdHMgY2VydGlmaWNhdGVzIGFyZSBvZiBsb3dlciB2YWx1ZS4iXSwia2V5IjoyfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIEdyYWNlIHdpbGxpbmcgdG8gcGF5IG1vcmUgZm9yPyIsIm9wdGlvbnMiOlsiYSBxdWFsaXR5IHRlYW0gb2YgaGlnaGx5IGV4cGVyaWVuY2VkIGVkdWNhdG9ycyIsImEgcHJvZ3JhbSB0aGF0IGd1YXJhbnRlZXMgZW1wbG95bWVudCB1cG9uIGNvbXBsZXRpb24iLCJhIGNvdXJzZSBzY2hlZHVsZSB0aGF0IGZpdHMgd2l0aCBoZXIgcGVyc29uYWwgbGlmZSIsImEgY3VycmljdWx1bSBiYXNlZCBvbiBtYXJrZXRpbmcgaW5kdXN0cnkgY29uc3VsdGF0aW9uIl0sImtleSI6MH0seyJuIjo2LCJzdGVtIjoiV2h5IG1pZ2h0IHRoZSBwcml2YXRlIG1hcmtldGluZyBzY2hvb2wgYmUgYSByaXNreSBjaG9pY2U\/Iiwib3B0aW9ucyI6WyJUaGUgY29zdCBvZiB0dWl0aW9uIGlzIHF1aXRlIGhpZ2guIiwiVGhlIHNjaG9vbCBoYXMgbm90IG9wZW5lZCB5ZXQuIiwiSXRzIGN1cnJpY3VsdW0gbWF5IGJlIHRvbyB0cmFkaXRpb25hbC4iLCJJdHMgcmVwdXRhdGlvbiBpcyBub3QgeWV0IGVzdGFibGlzaGVkLiJdLCJrZXkiOjN9LHsibiI6Nywic3RlbSI6IldoYXQgZG9lcyBHcmFjZVx1MjAxOXMgaHVzYmFuZCB0aGluayBhYm91dCB0aGUgdW5pdmVyc2l0eSBjb3Vyc2U\/Iiwib3B0aW9ucyI6WyJJdFx1MjAxOXMgdGhlIG1vc3Qgc3VpdGFibGUgb3B0aW9uLiIsIkl0XHUyMDE5cyB0aGUgd3JvbmcgcHJvZ3JhbSBmb3IgaGVyLiIsIkl0XHUyMDE5cyBhcyBnb29kIGFzIHRoZSBjb2xsZWdlIGNvdXJzZS4iLCJJdFx1MjAxOXMgc2NoZWR1bGVkIGF0IGluY29udmVuaWVudCB0aW1lcy4iXSwia2V5IjowfSx7Im4iOjgsInN0ZW0iOiJXaHkgaXMgR3JhY2UgZGlzY3Vzc2luZyBwcm9ncmFtIG9wdGlvbnMgd2l0aCBoZXIgZnJpZW5kcz8iLCJvcHRpb25zIjpbIkhlciBodXNiYW5kXHUyMDE5cyBhZHZpY2Ugd2FzIG5vdCB2ZXJ5IGhlbHBmdWwuIiwiVGhleSBhbHNvIHdvcmsgaW4gdGhlIG1hcmtldGluZyBpbmR1c3RyeS4iLCJTaGUgd2FudHMgb3RoZXIgb3V0bG9va3Mgb24gdGhlIHByb2dyYW1zLiIsIlRoZXkgaGF2ZSB0YWtlbiBhZHVsdCBlZHVjYXRpb24gcHJvZ3JhbXMuIl0sImtleSI6Mn1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgOSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIHJlcG9ydCBhYm91dCBwdWJsaWMgdHJhbnNpdC4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgcmVwb3J0IG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhbiBhbm5vdW5jZXIgcmVwb3J0IG9uIGRpZmZlcmVudCB2aWV3cG9pbnRzIGFib3V0IHB1YmxpYyB0cmFuc2l0LlxuXG5PbiB0aGUgYWdlbmRhIGZvciB5ZXN0ZXJkYXlcdTIwMTlzIGNpdHkgY291bmNpbCBtZWV0aW5nIHdhcyB5ZXQgYW5vdGhlciBkaXNjdXNzaW9uIG9mIHRoZVxucHVibGljIHRyYW5zaXQgZGlsZW1tYS4gT3ZlciB0aGUgcGFzdCAxNSB5ZWFycywgdGhpcyBjaXR5IGhhcyBleHBlcmllbmNlZCBhIHNpZ25pZmljYW50XG5ncm93dGggaW4gcG9wdWxhdGlvbiwgYSB0cmVuZCBleHBlY3RlZCB0byBjb250aW51ZSB3ZWxsIGludG8gdGhlIGZ1dHVyZS4gQXMgYSByZXN1bHQgb2YgdGhpc1xuXGZncm93dGgsIHRoZSBwdWJsaWMgdHJhbnNpdCBzeXN0ZW0sIGRlc2lnbmVkIHdpdGggYSBtdWNoIHNtYWxsZXIgcG9wdWxhdGlvbiBpbiBtaW5kLCBoYXNcbmJlZW4gb3BlcmF0aW5nIGJleW9uZCBpdHMgY2FwYWNpdHkuXG5cbkFzIGFuIGV4YW1wbGUsIFRob21hcyBGaW5kbGV5IGNvbW11dGVzIGZyb20gR2xlbmZpZWxkIHRvIGRvd250b3duIG9uIGEgZGFpbHkgYmFzaXMuXG5XaGlsZSBhIHllYXIgYWdvIGl0IHRvb2sgaGltIHRoaXJ0eS1maXZlIG1pbnV0ZXMgdG8gYXJyaXZlIGF0IHdvcmsgYnkgYnVzLCB0aGUgdGltZWZyYW1lXG50b2RheSBpcyBtb3JlIGluIHRoZSByZWFsbSBvZiBvbmUgaG91ciBhbmQgdGhpcnR5LWZpdmUgbWludXRlcy4gRm9yIEZpbmRsZXksIHRoaXMgaXNcbnVuYWNjZXB0YWJsZS4gSGUgY29udGVuZHMgdGhhdCB0aGUgZGVsYXlzIHN0ZW0gZnJvbSBhbiBpbmNyZWFzZSBpbiBwdWJsaWMgdHJhbnNpdCB1c2Vyc1xud2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZiBidXNlcy4gVGhlIHJlc3VsdDogYnVzZXMgYXJlIG9mdGVuIGZ1bGxcbnRvIGNhcGFjaXR5IGFuZCByaWRlcnMgbXVzdCB3YWl0IGxvbmcgcGVyaW9kcyBiZWZvcmUgb25lIHdpdGggc3BhY2Ugd2lsbCBzdG9wIGZvciBtb3JlXG5wYXNzZW5nZXJzLiBBcyBhIHNvbHV0aW9uLCBGaW5kbGV5IGhhcyBzdWdnZXN0ZWQgZG91YmxpbmcgdGhlIG51bWJlciBvZiBidXNlcyBpblxub3BlcmF0aW9uLlxuXG5Ib3dldmVyLCB0cmFuc2l0IHBsYW5uZXIgUml0YSBDdW1taW5ncyBhcmd1ZXMgdGhhdCB0aGlzIHdvdWxkIG9ubHkgYmUgYSB0ZW1wb3JhcnkgZml4LlxuU2hlIGluc2lzdHMgdGhhdCBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYnVzZXMgd291bGQgbGVhZCB0byBzaWduaWZpY2FudGx5IG1vcmUgdHJhZmZpYyxcbnNvbWV0aGluZyB3aGljaCwgaW4gdGhlIGxvbmcgcnVuLCBjb3VsZCBjYXVzZSBib3RoIGdyZWF0ZXIgZGVsYXlzIGFzIHdlbGwgYXMgYW4gaW5jcmVhc2VcbmluIGFpciBwb2xsdXRpb24uIEluc3RlYWQsIEN1bW1pbmdzIGhhcyBwcm9wb3NlZCB0aGUgY29uc3RydWN0aW9uIG9mIGEgc3Vid2F5IHN5c3RlbS5cblNpbmNlIHN1YndheXMgcnVuIHVuZGVyZ3JvdW5kLCBhIGxhcmdlIG51bWJlciBvZiBjb21tdXRlcnMgY2FuIGJlIG1vdmVkIHdpdGhvdXQgYVxuY29ycmVzcG9uZGluZyBpbmNyZWFzZSBpbiB0cmFmZmljLiBDb25zZXF1ZW50bHksIEN1bW1pbmdzIGZlZWxzIHRoYXQgZm9yIGdyb3dpbmcgY2l0aWVzLFxuYSBzdWJ3YXkgc3lzdGVtIGlzIGFsbW9zdCBhbHdheXMgdGhlIG1vc3QgZWZmaWNpZW50IGFuZCBlbnZpcm9ubWVudGFsbHkgc291bmQgY2hvaWNlLlxuU2hlIG5vdGVkIHRoYXQgc3Vid2F5cyBpbiBUb3JvbnRvIGFuZCBNb250cmVhbCBoYXZlIHN1Y2Nlc3NmdWxseSBmdWxmaWxsZWQgdGhlaXIgcm9sZXMgZm9yXG5kZWNhZGVzLCBlYWNoIG5vdyBjYXJyeWluZyBtb3JlIHRoYW4gYSBtaWxsaW9uIHBhc3NlbmdlcnMgZXZlcnkgZGF5LlxuXG5JbiBjb250cmFzdCwgd2hpbGUgY2l0eSBjb3VuY2lsbG9yIFNjb3R0IERyZXNkZW4gYWdyZWVzIGEgc3Vid2F5IGlzIGEgbmljZSBpZGVhLCBoZVxucXVlc3Rpb25zIHdoZXRoZXIgdGhlIG5lZWQgdHJ1bHkganVzdGlmaWVzIHRoZSBleHBlbnNlLiBBY2NvcmRpbmcgdG8gRHJlc2RlbiwgdGhlIGNvc3Qgb2ZcbmRldmVsb3BpbmcgYSBzdWJ3YXkgc3lzdGVtIGNvdWxkIGVhc2lseSBydW4gaW50byB0aGUgYmlsbGlvbnMuIEFsdGhvdWdoIHRoZSBjaXR5XHUyMDE5c1xucG9wdWxhdGlvbiBpcyBncm93aW5nLCBpdCBpcyB1bmxpa2VseSB0byBldmVyIHJlYWNoIHRoZSBudW1iZXJzIHRvIHdhcnJhbnQgc3VjaCBhblxuZXhwZW5zZS4gQXMgYW4gYWx0ZXJuYXRpdmUsIERyZXNkZW4gaGFzIHN1Z2dlc3RlZCB0aGUgcHVyY2hhc2Ugb2YgbW9kZXJuLCBlZmZpY2llbnRseVxuZGVzaWduZWQgYnVzZXMgd2hpY2ggaGF2ZSB0aGUgY2FwYWNpdHkgdG8gY2FycnkgZG91YmxlIHRoZSBudW1iZXIgb2YgcGFzc2VuZ2Vycy4gVGhpc1xub3B0aW9uLCBEcmVzZGVuIGFzc2VydHMsIHdvdWxkIGxlYWQgdG8gbmVpdGhlciBhbiBpbmNyZWFzZSBpbiB0cmFmZmljIG5vciBhIGJyZWFraW5nIG9mIHRoZVxuYmFuay4gSW4gdGhlIGRheXMgdG8gY29tZSwgY291bmNpbCB3aWxsIG5lZWQgdG8gZmluZCBhIHNvbHV0aW9uLCBiZSBpdCBzdWJ3YXksIGJpZ2dlclxuYnVzZXMsIG9yIG1haW50YWluaW5nIHRoZSBzdGF0dXMgcXVvLiBJdFx1MjAxOXMgZWxlY3Rpb24geWVhciwgc28gaXRcdTIwMTlzIGFueW9uZVx1MjAxOXMgZ3Vlc3Mgd2hhdFxuY291bmNpbCB3aWxsIGRvIHRvIGN1cnJ5IGZhdm91ci4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJSZXBvcnQiLCJkdXJhdGlvbiI6MTY5LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgcHVibGljIHRyYW5zaXQgcHJvYmxlbSBpcyBhIHJlc3VsdCBvZiIsIm9wdGlvbnMiOlsibWlzdGFrZXMgYnkgdGhlIHRyYW5zaXQgcGxhbm5lci4iLCJhIGRlY3JlYXNlIGluIGZ1bmN0aW9uaW5nIGJ1c2VzLiIsImEgYmlnIHJpc2UgaW4gdHJhbnNpdCByaWRlcnNoaXAuIiwidGhlIGNpdHlcdTIwMTlzIHNtYWxsIHRyYW5zaXQgYnVkZ2V0LiJdLCJrZXkiOjJ9LHsibiI6Miwic3RlbSI6IkNvbW11dGVyIFRob21hcyBGaW5kbGV5IGlzIHVwc2V0IGJlY2F1c2UgaGlzIGJ1cyIsIm9wdGlvbnMiOlsibm93IHRha2VzIGEgbG9uZ2VyIHJvdXRlLiIsImlzIG9mdGVuIHRvbyBmdWxsIHRvIGdldCBvbi4iLCJydW5zIGxlc3MgZnJlcXVlbnRseS4iLCJnZXRzIHN0dWNrIGluIHRyYWZmaWMgamFtcy4iXSwia2V5IjoxfSx7Im4iOjMsInN0ZW0iOiJUcmFuc2l0IHBsYW5uZXIgUml0YSBDdW1taW5ncyBiZWxpZXZlcyIsIm9wdGlvbnMiOlsiYW4gdW5kZXJncm91bmQgc3lzdGVtIGlzIGEgbG9uZy10ZXJtIHNvbHV0aW9uLiIsImluY3JlYXNpbmcgYnVzIHJvdXRlcyB3b3VsZCBpbXByb3ZlIGVmZmljaWVuY3kuIiwiYnVpbGRpbmcgYSBzdWJ3YXkgc3lzdGVtIGlzIG5vdCB3b3J0aCB0aGUgY29zdC4iLCJsYXJnZSBidXNlcyBhcmUgbW9yZSBwcmFjdGljYWwgdGhhbiBzdWJ3YXlzLiJdLCJrZXkiOjB9LHsibiI6NCwic3RlbSI6IkNpdHkgY291bmNpbGxvciBTY290dCBEcmVzZGVuIHdvdWxkIGFncmVlIHRoYXQiLCJvcHRpb25zIjpbInRoZSBzaXR1YXRpb24gY2FuIGJlIGZpeGVkIHdpdGggbGFyZ2VyIGJ1c2VzLiIsImFuIGVudmlyb25tZW50YWwgY2hvaWNlIG1pZ2h0IGJlIHRoZSBjaGVhcGVzdC4iLCJzdWJ3YXlzIGFyZSBhIGdvb2QgY2hvaWNlIGZvciBzbWFsbGVyIHVyYmFuIGFyZWFzLiIsInB1cmNoYXNpbmcgbW9kZXJuIGJ1c2VzIGlzIGEgc2hvcnQtdGVybSBzb2x1dGlvbi4iXSwia2V5IjowfSx7Im4iOjUsInN0ZW0iOiJBbGwgc29sdXRpb25zIHByb3Bvc2VkIGFyZSBjb25jZXJuZWQgd2l0aCIsIm9wdGlvbnMiOlsicmVkdWNpbmcgdGhlIG51bWJlciBvZiBidXNlcy4iLCJsaW1pdGluZyBlbnZpcm9ubWVudGFsIGltcGFjdC4iLCJrZWVwaW5nIGNvc3RzIHRvIGEgbWluaW11bS4iLCJjYXJyeWluZyBtb3JlIHBhc3NlbmdlcnMuIl0sImtleSI6M30seyJuIjo2LCJzdGVtIjoiVGhlIGNpdHkgY291bmNpbCB3aWxsIHByb2JhYmx5Iiwib3B0aW9ucyI6WyJpbXBsZW1lbnQgYSBjb21tdXRlciBidXMgc2VydmljZS4iLCJoaXJlIGEgc3Vid2F5IHN5c3RlbSBwbGFubmVyLiIsImluaXRpYXRlIGEgdHJhbnNwb3J0YXRpb24gc3R1ZHkuIiwicmFpc2UgdGF4ZXMgZm9yIHRyYW5zaXQgY2hhbmdlcy4iXSwia2V5IjoyfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCA5IFRlc3QgMiBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 9 Practice Test 2: 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-6238","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6238","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=6238"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6238\/revisions"}],"predecessor-version":[{"id":6586,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6238\/revisions\/6586"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}